{"id":951,"date":"2025-09-18T00:16:43","date_gmt":"2025-09-18T00:16:43","guid":{"rendered":"https:\/\/sukiwessling.com\/kidblog\/?page_id=951"},"modified":"2025-09-18T00:45:18","modified_gmt":"2025-09-18T00:45:18","slug":"word-roots-game","status":"publish","type":"page","link":"https:\/\/sukiwessling.com\/kidblog\/word-roots-game\/","title":{"rendered":"Word Roots Game"},"content":{"rendered":"<p>The English language has many words that are built from Greek and Latin roots. Use this fun game to learn the roots and test your knowledge!<\/p>\n\n\n\n\n\n\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Word Roots Adventure Game<\/title>\n    <style>\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n        \n        body {\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n            line-height: 1.6;\n            color: #333;\n            background: #f8fafc;\n        }\n        \n        .game-container {\n            max-width: 1000px;\n            margin: 0 auto;\n            padding: 24px;\n            background: linear-gradient(135deg, #e0f2fe 0%, #e8eaf6 100%);\n            border-radius: 12px;\n            box-shadow: 0 10px 25px rgba(0,0,0,0.1);\n        }\n        \n        .header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 24px;\n        }\n        \n        .title {\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            font-size: 24px;\n            font-weight: bold;\n            color: #3f51b5;\n        }\n        \n        .score-section {\n            display: flex;\n            align-items: center;\n            gap: 16px;\n        }\n        \n        .score {\n            display: flex;\n            align-items: center;\n            gap: 4px;\n            font-weight: 600;\n        }\n        \n        .progress-bar {\n            width: 100%;\n            height: 8px;\n            background: #e0e0e0;\n            border-radius: 4px;\n            margin-bottom: 24px;\n            overflow: hidden;\n        }\n        \n        .progress-fill {\n            height: 100%;\n            background: #3f51b5;\n            transition: width 0.3s ease;\n        }\n        \n        .question-card {\n            background: white;\n            padding: 24px;\n            border-radius: 8px;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n            margin-bottom: 24px;\n        }\n        \n        .origin-badge {\n            background: #e8eaf6;\n            color: #3f51b5;\n            padding: 4px 12px;\n            border-radius: 16px;\n            font-size: 14px;\n            font-weight: 500;\n            display: inline-block;\n            margin-bottom: 8px;\n        }\n        \n        .question-text {\n            font-size: 20px;\n            font-weight: bold;\n            margin-bottom: 16px;\n            color: #424242;\n        }\n        \n        .root-display {\n            background: #fffde7;\n            padding: 12px;\n            border-radius: 8px;\n            text-align: center;\n            margin-bottom: 16px;\n        }\n        \n        .root-text {\n            font-size: 18px;\n            font-weight: 600;\n        }\n        \n        .root-highlight {\n            color: #1976d2;\n            font-size: 24px;\n        }\n        \n        .example-words {\n            margin-bottom: 16px;\n        }\n        \n        .example-label {\n            font-size: 14px;\n            color: #666;\n            margin-bottom: 8px;\n        }\n        \n        .word-tags {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 8px;\n        }\n        \n        .word-tag {\n            background: #e3f2fd;\n            color: #1976d2;\n            padding: 4px 8px;\n            border-radius: 4px;\n            font-size: 14px;\n        }\n        \n        .hint-button {\n            background: none;\n            border: none;\n            color: #f57c00;\n            cursor: pointer;\n            font-size: 14px;\n            display: flex;\n            align-items: center;\n            gap: 4px;\n            margin-bottom: 16px;\n            padding: 4px 0;\n        }\n        \n        .hint-button:hover {\n            color: #ef6c00;\n        }\n        \n        .hint-box {\n            background: #fff3e0;\n            border-left: 4px solid #ff9800;\n            padding: 12px;\n            margin-bottom: 16px;\n            border-radius: 0 4px 4px 0;\n        }\n        \n        .hint-text {\n            color: #e65100;\n            font-size: 14px;\n        }\n        \n        .options-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 12px;\n            margin-bottom: 24px;\n        }\n        \n        .option-button {\n            padding: 16px;\n            border: 2px solid #e0e0e0;\n            border-radius: 8px;\n            background: orange;\n            cursor: pointer;\n            font-size: 16px;\n            font-weight: 500;\n            transition: all 0.2s ease;\n        }\n        \n        .option-button:hover:not(.option-disabled) {\n            border-color: #3f51b5;\n            background: #e8eaf6;\n        }\n        \n        .option-correct {\n            background: #e8f5e8 !important;\n            border-color: #4caf50 !important;\n            color: #2e7d32;\n        }\n        \n        .option-incorrect {\n            background: #ffebee !important;\n            border-color: #f44336 !important;\n            color: #c62828;\n        }\n        \n        .option-disabled {\n            background: #f5f5f5 !important;\n            border-color: #e0e0e0 !important;\n            color: #9e9e9e;\n            cursor: not-allowed !important;\n        }\n        \n        .result-section {\n            text-align: center;\n        }\n        \n        .result-text {\n            font-size: 18px;\n            font-weight: 600;\n            margin-bottom: 16px;\n        }\n        \n        .result-correct {\n            color: #2e7d32;\n        }\n        \n        .result-incorrect {\n            color: #c62828;\n        }\n        \n        .next-button {\n            background: #3f51b5;\n            color: white;\n            border: none;\n            padding: 12px 24px;\n            border-radius: 8px;\n            font-size: 16px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: background 0.2s ease;\n        }\n        \n        .next-button:hover {\n            background: #303f9f;\n        }\n        \n        .setup-screen {\n            text-align: center;\n        }\n        \n        .setup-title {\n            font-size: 32px;\n            font-weight: bold;\n            color: #3f51b5;\n            margin-bottom: 16px;\n        }\n        \n        .setup-subtitle {\n            font-size: 18px;\n            color: #666;\n            margin-bottom: 24px;\n        }\n        \n        .settings-card {\n            background: white;\n            padding: 24px;\n            border-radius: 8px;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n            margin-bottom: 24px;\n        }\n        \n        .settings-title {\n            font-size: 20px;\n            font-weight: 600;\n            margin-bottom: 16px;\n            color: #424242;\n        }\n        \n        .settings-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 24px;\n        }\n        \n        .setting-group {\n            text-align: left;\n        }\n        \n        .setting-label {\n            display: block;\n            font-size: 14px;\n            font-weight: 500;\n            color: #424242;\n            margin-bottom: 8px;\n        }\n        \n        .setting-select {\n            width: 100%;\n            padding: 8px 12px;\n            border: 2px solid #e0e0e0;\n            border-radius: 8px;\n            font-size: 16px;\n            background: white;\n        }\n        \n        .setting-select:focus {\n            outline: none;\n            border-color: #3f51b5;\n        }\n        \n        .start-button {\n            background: #3f51b5;\n            color: white;\n            border: none;\n            padding: 16px 32px;\n            border-radius: 8px;\n            font-size: 18px;\n            font-weight: 600;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            margin: 0 auto;\n            transition: background 0.2s ease;\n        }\n        \n        .start-button:hover {\n            background: #303f9f;\n        }\n        \n        .stats-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n            gap: 16px;\n            margin-top: 32px;\n        }\n        \n        .stat-card {\n            background: white;\n            padding: 16px;\n            border-radius: 8px;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n            text-align: center;\n        }\n        \n        .stat-title {\n            font-size: 18px;\n            font-weight: 600;\n            color: #424242;\n            margin-bottom: 8px;\n        }\n        \n        .stat-number {\n            font-size: 32px;\n            font-weight: bold;\n        }\n        \n        .stat-latin { color: #d32f2f; }\n        .stat-greek { color: #1976d2; }\n        .stat-total { color: #7b1fa2; }\n        \n        .complete-screen {\n            text-align: center;\n        }\n        \n        .trophy {\n            font-size: 64px;\n            margin-bottom: 16px;\n        }\n        \n        .complete-title {\n            font-size: 32px;\n            font-weight: bold;\n            color: #7b1fa2;\n            margin-bottom: 16px;\n        }\n        \n        .score-display {\n            font-size: 20px;\n            margin-bottom: 16px;\n        }\n        \n        .score-message {\n            font-size: 18px;\n            color: #666;\n            margin-bottom: 24px;\n        }\n        \n        .roots-review {\n            background: white;\n            padding: 16px;\n            border-radius: 8px;\n            margin-bottom: 24px;\n        }\n        \n        .review-title {\n            font-size: 18px;\n            font-weight: 600;\n            margin-bottom: 12px;\n            color: #424242;\n        }\n        \n        .roots-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n            gap: 8px;\n            font-size: 14px;\n        }\n        \n        .root-item {\n            background: #f5f5f5;\n            padding: 8px;\n            border-radius: 4px;\n        }\n        \n        .root-name {\n            font-weight: 500;\n            color: #1976d2;\n        }\n        \n        .root-info {\n            color: #666;\n        }\n        \n        .play-again-button {\n            background: #4caf50;\n            color: white;\n            border: none;\n            padding: 12px 24px;\n            border-radius: 8px;\n            font-size: 16px;\n            font-weight: 600;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            margin: 0 auto;\n            transition: background 0.2s ease;\n        }\n        \n        .play-again-button:hover {\n            background: #388e3c;\n        }\n        \n        .hidden {\n            display: none !important;\n        }\n        \n        @media (max-width: 768px) {\n            .game-container {\n                padding: 16px;\n            }\n            \n            .header {\n                flex-direction: column;\n                gap: 12px;\n                text-align: center;\n            }\n            \n            .settings-grid {\n                grid-template-columns: 1fr;\n            }\n            \n            .options-grid {\n                grid-template-columns: 1fr;\n            }\n            \n            .stats-grid {\n                grid-template-columns: 1fr;\n            }\n            \n            .roots-grid {\n                grid-template-columns: 1fr;\n            }\n        }\n    <\/style>\n\n\n    <div class=\"game-container\">\n        <!-- Setup Screen -->\n        <div id=\"setupScreen\" class=\"setup-screen\">\n            <h1 class=\"setup-title\">&#128218; Word Roots Adventure<\/h1>\n            <p class=\"setup-subtitle\">Learn Latin and Greek word roots through interactive gameplay!<\/p>\n            \n            <div class=\"settings-card\">\n                <h3 class=\"settings-title\">Game Settings<\/h3>\n                <div class=\"settings-grid\">\n                    <div class=\"setting-group\">\n                        <label class=\"setting-label\">Origin Language<\/label>\n                        <select id=\"originSelect\" class=\"setting-select\">\n                            <option value=\"all\">Both Latin &amp; Greek<\/option>\n                            <option value=\"latin\">Latin Only<\/option>\n                            <option value=\"greek\">Greek Only<\/option>\n                        <\/select>\n                    <\/div>\n                    <div class=\"setting-group\">\n                        <label class=\"setting-label\">Questions per Game<\/label>\n                        <select id=\"questionsSelect\" class=\"setting-select\">\n                            <option value=\"5\">5 Questions<\/option>\n                            <option value=\"10\" selected>10 Questions<\/option>\n                            <option value=\"15\">15 Questions<\/option>\n                            <option value=\"20\">20 Questions<\/option>\n                        <\/select>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <button id=\"startButton\" class=\"start-button\">\n                &#127922; Start Game\n            <\/button>\n            \n            \n        <\/div>\n        \n        <!-- Game Screen -->\n        <div id=\"gameScreen\" class=\"hidden\">\n            <div class=\"header\">\n                <div class=\"title\">\n                    &#128218; Word Roots Adventure\n                <\/div>\n                <div class=\"score-section\">\n                    <div class=\"score\">\n                        &#11088; <span id=\"scoreDisplay\">0\/10<\/span>\n                    <\/div>\n                    <div id=\"questionCounter\" class=\"score\">\n                        Question 1\/10\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <div class=\"progress-bar\">\n                <div id=\"progressFill\" class=\"progress-fill\" style=\"width: 0%\"><\/div>\n            <\/div>\n            \n            <div class=\"question-card\">\n                <div id=\"originBadge\" class=\"origin-badge\">Latin Root<\/div>\n                <h2 id=\"questionText\" class=\"question-text\">What does the root &lsquo;aqua&rsquo; mean?<\/h2>\n                <div class=\"root-display\">\n                    <p class=\"root-text\">Root: <span id=\"rootDisplay\" class=\"root-highlight\">&ldquo;aqua&rdquo;<\/span><\/p>\n                <\/div>\n                \n                <div class=\"example-words\">\n                    <p class=\"example-label\">Example words with this root:<\/p>\n                    <div id=\"wordTags\" class=\"word-tags\">\n                        <span class=\"word-tag\">aquarium<\/span>\n                        <span class=\"word-tag\">aquatic<\/span>\n                        <span class=\"word-tag\">aqueduct<\/span>\n                    <\/div>\n                <\/div>\n                \n                <button id=\"hintButton\" class=\"hint-button\">\n                    &#128161; Need a hint?\n                <\/button>\n                \n                <div id=\"hintBox\" class=\"hint-box hidden\">\n                    <p id=\"hintText\" class=\"hint-text\">An aquarium is full of&hellip; what?<\/p>\n                <\/div>\n            <\/div>\n            \n            <div id=\"optionsGrid\" class=\"options-grid\">\n                <button class=\"option-button\" data-option=\"0\">air<\/button>\n                <button class=\"option-button\" data-option=\"1\">fire<\/button>\n                <button class=\"option-button\" data-option=\"2\">water<\/button>\n                <button class=\"option-button\" data-option=\"3\">stone<\/button>\n            <\/div>\n            \n            <div id=\"resultSection\" class=\"result-section hidden\">\n                <div id=\"resultText\" class=\"result-text result-correct\">\n                    Correct! The root &ldquo;aqua&rdquo; means &ldquo;water&rdquo;\n                <\/div>\n                <button id=\"nextButton\" class=\"next-button\">Next Question<\/button>\n            <\/div>\n        <\/div>\n        \n        <!-- Complete Screen -->\n        <div id=\"completeScreen\" class=\"complete-screen hidden\">\n            <div class=\"trophy\">&#127942;<\/div>\n            <h2 class=\"complete-title\">Game Complete!<\/h2>\n            <p id=\"finalScore\" class=\"score-display\">Your Score: 8\/10<\/p>\n            <p id=\"scoreMessage\" class=\"score-message\">Excellent work! You really know your roots! &#11088;<\/p>\n            \n            <div class=\"roots-review\">\n                <h3 class=\"review-title\">Roots you practiced:<\/h3>\n                <div id=\"rootsGrid\" class=\"roots-grid\">\n                    <!-- Roots will be populated here -->\n                <\/div>\n            <\/div>\n            \n            <button id=\"playAgainButton\" class=\"play-again-button\">\n                Play Again\n            <\/button>\n        <\/div>\n    <\/div>\n    <script>\n        \/\/ Expanded game data - More comprehensive word roots database\nconst latinRoots = [\n    { root: 'aqua', origin: 'Latin', meaning: 'water', words: ['aquarium', 'aquatic', 'aqueduct'], question: \"What does the root 'aqua' mean?\", options: ['air', 'fire', 'water', 'stone'], correct: 'water', hint: \"An aquarium is full of... what?\" },\n    { root: 'port', origin: 'Latin', meaning: 'carry', words: ['transport', 'portable', 'export'], question: \"What does the root 'port' mean?\", options: ['carry', 'break', 'hide', 'see'], correct: 'carry', hint: \"Something portable is easy to... what?\" },\n    { root: 'spect', origin: 'Latin', meaning: 'see, look', words: ['spectacle', 'inspect', 'respect'], question: \"What does the root 'spect' mean?\", options: ['hear', 'see, look', 'touch', 'smell'], correct: 'see, look', hint: \"Spectacles help you... what better?\" },\n    { root: 'dict', origin: 'Latin', meaning: 'say, speak', words: ['dictionary', 'predict', 'dictate'], question: \"What does the root 'dict' mean?\", options: ['write', 'say, speak', 'read', 'think'], correct: 'say, speak', hint: \"When you dictate, you... what words?\" },\n    { root: 'fact', origin: 'Latin', meaning: 'make, do', words: ['factory', 'manufacture', 'artifact'], question: \"What does the root 'fact' mean?\", options: ['break', 'make, do', 'find', 'lose'], correct: 'make, do', hint: \"A factory is where things are... what?\" },\n    { root: 'ject', origin: 'Latin', meaning: 'throw', words: ['project', 'reject', 'inject'], question: \"What does the root 'ject' mean?\", options: ['catch', 'throw', 'hold', 'pull'], correct: 'throw', hint: \"To project something means to... what it forward?\" },\n    { root: 'struct', origin: 'Latin', meaning: 'build', words: ['construct', 'structure', 'instruct'], question: \"What does the root 'struct' mean?\", options: ['destroy', 'build', 'paint', 'move'], correct: 'build', hint: \"Construction workers... what buildings?\" },\n    { root: 'aud', origin: 'Latin', meaning: 'hear', words: ['audio', 'audible', 'audience'], question: \"What does the root 'aud' mean?\", options: ['see', 'hear', 'touch', 'taste'], correct: 'hear', hint: \"Audio equipment helps you... what sounds?\" },\n    { root: 'vid', origin: 'Latin', meaning: 'see', words: ['video', 'vision', 'visible'], question: \"What does the root 'vid' mean?\", options: ['hear', 'see', 'feel', 'smell'], correct: 'see', hint: \"A video lets you... what something?\" },\n    { root: 'scrib', origin: 'Latin', meaning: 'write', words: ['describe', 'script', 'prescription'], question: \"What does the root 'scrib' mean?\", options: ['read', 'write', 'speak', 'listen'], correct: 'write', hint: \"A script is something that is... what down?\" },\n    { root: 'rupt', origin: 'Latin', meaning: 'break', words: ['rupture', 'interrupt', 'corrupt'], question: \"What does the root 'rupt' mean?\", options: ['fix', 'break', 'bend', 'stretch'], correct: 'break', hint: \"When something ruptures, it... what?\" },\n    { root: 'temp', origin: 'Latin', meaning: 'time', words: ['temporary', 'contemporary', 'tempo'], question: \"What does the root 'temp' mean?\", options: ['space', 'time', 'heat', 'cold'], correct: 'time', hint: \"Something temporary lasts for a short... what?\" },\n    { root: 'cap', origin: 'Latin', meaning: 'take, seize', words: ['capture', 'captain', 'capacity'], question: \"What does the root 'cap' mean?\", options: ['give', 'take, seize', 'lose', 'find'], correct: 'take, seize', hint: \"To capture means to... what something?\" },\n    { root: 'cent', origin: 'Latin', meaning: 'hundred', words: ['century', 'percent', 'centipede'], question: \"What does the root 'cent' mean?\", options: ['ten', 'hundred', 'thousand', 'million'], correct: 'hundred', hint: \"A century is... how many years?\" },\n    { root: 'miss', origin: 'Latin', meaning: 'send', words: ['mission', 'dismiss', 'transmit'], question: \"What does the root 'miss' mean?\", options: ['receive', 'send', 'keep', 'hide'], correct: 'send', hint: \"A mission is when you are... what somewhere?\" },\n    { root: 'mot', origin: 'Latin', meaning: 'move', words: ['motion', 'motor', 'emotion'], question: \"What does the root 'mot' mean?\", options: ['stop', 'move', 'stay', 'rest'], correct: 'move', hint: \"A motor makes things... what?\" },\n    { root: 'form', origin: 'Latin', meaning: 'shape', words: ['transform', 'formation', 'inform'], question: \"What does the root 'form' mean?\", options: ['color', 'shape', 'size', 'weight'], correct: 'shape', hint: \"To transform is to change... what?\" },\n    { root: 'loc', origin: 'Latin', meaning: 'place', words: ['location', 'local', 'allocate'], question: \"What does the root 'loc' mean?\", options: ['time', 'place', 'person', 'thing'], correct: 'place', hint: \"A location is a... what?\" },\n    { root: 'tract', origin: 'Latin', meaning: 'pull, draw', words: ['attract', 'contract', 'extract'], question: \"What does the root 'tract' mean?\", options: ['push', 'pull, draw', 'lift', 'drop'], correct: 'pull, draw', hint: \"To attract means to... what something toward you?\" },\n    { root: 'vert', origin: 'Latin', meaning: 'turn', words: ['convert', 'invert', 'divert'], question: \"What does the root 'vert' mean?\", options: ['stop', 'turn', 'go', 'come'], correct: 'turn', hint: \"To invert means to... what upside down?\" },\n    { root: 'duc', origin: 'Latin', meaning: 'lead', words: ['conduct', 'educate', 'produce'], question: \"What does the root 'duc' mean?\", options: ['follow', 'lead', 'stop', 'hide'], correct: 'lead', hint: \"A conductor... what an orchestra?\" },\n    { root: 'terr', origin: 'Latin', meaning: 'earth, land', words: ['territory', 'terrain', 'terrestrial'], question: \"What does the root 'terr' mean?\", options: ['sky', 'earth, land', 'sea', 'fire'], correct: 'earth, land', hint: \"Territory is an area of... what?\" },\n    { root: 'sol', origin: 'Latin', meaning: 'sun', words: ['solar', 'solstice', 'parasol'], question: \"What does the root 'sol' mean?\", options: ['moon', 'sun', 'stars', 'clouds'], correct: 'sun', hint: \"Solar panels collect energy from the... what?\" },\n    { root: 'corp', origin: 'Latin', meaning: 'body', words: ['corpse', 'corporation', 'corporal'], question: \"What does the root 'corp' mean?\", options: ['mind', 'body', 'spirit', 'soul'], correct: 'body', hint: \"A corpse is a dead... what?\" },\n    { root: 'hab', origin: 'Latin', meaning: 'live, dwell', words: ['habitat', 'inhabit', 'habitable'], question: \"What does the root 'hab' mean?\", options: ['leave', 'live, dwell', 'visit', 'work'], correct: 'live, dwell', hint: \"A habitat is where animals... what?\" },\n    { root: 'magn', origin: 'Latin', meaning: 'great, large', words: ['magnificent', 'magnify', 'magnitude'], question: \"What does the root 'magn' mean?\", options: ['small', 'great, large', 'medium', 'tiny'], correct: 'great, large', hint: \"To magnify means to make something appear... what?\" },\n    { root: 'nov', origin: 'Latin', meaning: 'new', words: ['novel', 'innovate', 'renovate'], question: \"What does the root 'nov' mean?\", options: ['old', 'new', 'broken', 'fixed'], correct: 'new', hint: \"A novel is a... what kind of book?\" },\n    { root: 'liber', origin: 'Latin', meaning: 'free', words: ['liberty', 'liberal', 'liberate'], question: \"What does the root 'liber' mean?\", options: ['trapped', 'free', 'bound', 'locked'], correct: 'free', hint: \"Liberty means... what?\" },\n    { root: 'val', origin: 'Latin', meaning: 'strong, worth', words: ['value', 'valid', 'valiant'], question: \"What does the root 'val' mean?\", options: ['weak', 'strong, worth', 'cheap', 'broken'], correct: 'strong, worth', hint: \"Something valuable has great... what?\" },\n    { root: 'gen', origin: 'Latin', meaning: 'birth, race', words: ['generate', 'generation', 'genetic'], question: \"What does the root 'gen' mean?\", options: ['death', 'birth, race', 'age', 'time'], correct: 'birth, race', hint: \"A generation refers to people born around the same... what?\" }\n];\n\nconst greekRoots = [\n    { root: 'bio', origin: 'Greek', meaning: 'life', words: ['biology', 'biography', 'antibiotic'], question: \"What does the root 'bio' mean?\", options: ['death', 'life', 'time', 'place'], correct: 'life', hint: \"Biology is the study of... what?\" },\n    { root: 'geo', origin: 'Greek', meaning: 'earth', words: ['geography', 'geology', 'geometry'], question: \"What does the root 'geo' mean?\", options: ['sky', 'earth', 'water', 'fire'], correct: 'earth', hint: \"Geography studies the... what?\" },\n    { root: 'photo', origin: 'Greek', meaning: 'light', words: ['photograph', 'photon', 'photosynthesis'], question: \"What does the root 'photo' mean?\", options: ['dark', 'light', 'sound', 'color'], correct: 'light', hint: \"A photograph captures... what?\" },\n    { root: 'tele', origin: 'Greek', meaning: 'far, distant', words: ['telephone', 'telescope', 'television'], question: \"What does the root 'tele' mean?\", options: ['near', 'far, distant', 'big', 'small'], correct: 'far, distant', hint: \"A telescope helps you see... what objects?\" },\n    { root: 'therm', origin: 'Greek', meaning: 'heat', words: ['thermometer', 'thermal', 'thermostat'], question: \"What does the root 'therm' mean?\", options: ['cold', 'heat', 'wet', 'dry'], correct: 'heat', hint: \"A thermometer measures... what?\" },\n    { root: 'graph', origin: 'Greek', meaning: 'write', words: ['autograph', 'paragraph', 'telegraph'], question: \"What does the root 'graph' mean?\", options: ['read', 'write', 'speak', 'listen'], correct: 'write', hint: \"An autograph is something someone... what?\" },\n    { root: 'phone', origin: 'Greek', meaning: 'sound', words: ['telephone', 'microphone', 'symphony'], question: \"What does the root 'phone' mean?\", options: ['sight', 'sound', 'smell', 'taste'], correct: 'sound', hint: \"A microphone picks up... what?\" },\n    { root: 'scope', origin: 'Greek', meaning: 'see, look', words: ['telescope', 'microscope', 'stethoscope'], question: \"What does the root 'scope' mean?\", options: ['hear', 'see, look', 'touch', 'smell'], correct: 'see, look', hint: \"A telescope helps you... what at stars?\" },\n    { root: 'auto', origin: 'Greek', meaning: 'self', words: ['automatic', 'automobile', 'autobiography'], question: \"What does the root 'auto' mean?\", options: ['other', 'self', 'many', 'none'], correct: 'self', hint: \"An autobiography is written by... who?\" },\n    { root: 'micro', origin: 'Greek', meaning: 'small', words: ['microscope', 'microphone', 'microwave'], question: \"What does the root 'micro' mean?\", options: ['large', 'small', 'medium', 'huge'], correct: 'small', hint: \"A microscope helps you see... what things?\" },\n    { root: 'chron', origin: 'Greek', meaning: 'time', words: ['chronology', 'chronic', 'synchronize'], question: \"What does the root 'chron' mean?\", options: ['space', 'time', 'speed', 'distance'], correct: 'time', hint: \"Chronology is the study of events in... what order?\" },\n    { root: 'psych', origin: 'Greek', meaning: 'mind, soul', words: ['psychology', 'psychic', 'psychiatrist'], question: \"What does the root 'psych' mean?\", options: ['body', 'mind, soul', 'heart', 'spirit'], correct: 'mind, soul', hint: \"Psychology studies the... what?\" },\n    { root: 'phil', origin: 'Greek', meaning: 'love', words: ['philosophy', 'philanthropist', 'Philadelphia'], question: \"What does the root 'phil' mean?\", options: ['hate', 'love', 'fear', 'anger'], correct: 'love', hint: \"A philanthropist... what helping others?\" },\n    { root: 'morph', origin: 'Greek', meaning: 'shape, form', words: ['metamorphosis', 'morphology', 'amorphous'], question: \"What does the root 'morph' mean?\", options: ['color', 'shape, form', 'size', 'texture'], correct: 'shape, form', hint: \"Metamorphosis is a change in... what?\" },\n    { root: 'path', origin: 'Greek', meaning: 'feeling, disease', words: ['pathology', 'sympathy', 'empathy'], question: \"What does the root 'path' mean?\", options: ['health', 'feeling, disease', 'strength', 'weakness'], correct: 'feeling, disease', hint: \"Sympathy means sharing someone's... what?\" },\n    { root: 'logy', origin: 'Greek', meaning: 'study of', words: ['biology', 'geology', 'psychology'], question: \"What does the root 'logy' mean?\", options: ['fear of', 'study of', 'love of', 'hatred of'], correct: 'study of', hint: \"Biology is the... what of life?\" },\n    { root: 'meter', origin: 'Greek', meaning: 'measure', words: ['thermometer', 'diameter', 'perimeter'], question: \"What does the root 'meter' mean?\", options: ['count', 'measure', 'weigh', 'time'], correct: 'measure', hint: \"A thermometer... what temperature?\" },\n    { root: 'phobia', origin: 'Greek', meaning: 'fear', words: ['claustrophobia', 'arachnophobia', 'hydrophobia'], question: \"What does the root 'phobia' mean?\", options: ['love', 'fear', 'anger', 'joy'], correct: 'fear', hint: \"Claustrophobia is a... what of enclosed spaces?\" },\n    { root: 'demo', origin: 'Greek', meaning: 'people', words: ['democracy', 'demographic', 'epidemic'], question: \"What does the root 'demo' mean?\", options: ['government', 'people', 'country', 'city'], correct: 'people', hint: \"Democracy is rule by the... what?\" },\n    { root: 'hydr', origin: 'Greek', meaning: 'water', words: ['hydraulic', 'dehydrate', 'hydrant'], question: \"What does the root 'hydr' mean?\", options: ['air', 'water', 'fire', 'earth'], correct: 'water', hint: \"To dehydrate means to lose... what?\" },\n    { root: 'anthrop', origin: 'Greek', meaning: 'human', words: ['anthropology', 'philanthropist', 'misanthrope'], question: \"What does the root 'anthrop' mean?\", options: ['animal', 'human', 'plant', 'machine'], correct: 'human', hint: \"Anthropology is the study of... what?\" },\n    { root: 'derm', origin: 'Greek', meaning: 'skin', words: ['dermatology', 'epidermis', 'hypodermic'], question: \"What does the root 'derm' mean?\", options: ['bone', 'skin', 'muscle', 'blood'], correct: 'skin', hint: \"Dermatology is the study of... what?\" },\n    { root: 'astro', origin: 'Greek', meaning: 'star', words: ['astronomy', 'astronaut', 'astrology'], question: \"What does the root 'astro' mean?\", options: ['planet', 'star', 'moon', 'comet'], correct: 'star', hint: \"Astronomy is the study of... what and other celestial objects?\" },\n    { root: 'arch', origin: 'Greek', meaning: 'rule, chief', words: ['monarchy', 'architect', 'anarchy'], question: \"What does the root 'arch' mean?\", options: ['follow', 'rule, chief', 'serve', 'obey'], correct: 'rule, chief', hint: \"A monarchy has one person who... what?\" },\n    { root: 'dynam', origin: 'Greek', meaning: 'power', words: ['dynamic', 'dynamite', 'dynamo'], question: \"What does the root 'dynam' mean?\", options: ['weakness', 'power', 'speed', 'size'], correct: 'power', hint: \"Dynamite has explosive... what?\" },\n    { root: 'neo', origin: 'Greek', meaning: 'new', words: ['neon', 'neoclassical', 'neologism'], question: \"What does the root 'neo' mean?\", options: ['old', 'new', 'bright', 'dark'], correct: 'new', hint: \"Neon lights were a... what invention?\" },\n    { root: 'poli', origin: 'Greek', meaning: 'city', words: ['politics', 'police', 'metropolis'], question: \"What does the root 'poli' mean?\", options: ['country', 'city', 'state', 'nation'], correct: 'city', hint: \"A metropolis is a large... what?\" },\n    { root: 'soma', origin: 'Greek', meaning: 'body', words: ['somatic', 'chromosome', 'psychosomatic'], question: \"What does the root 'soma' mean?\", options: ['mind', 'body', 'spirit', 'emotion'], correct: 'body', hint: \"Somatic symptoms affect the... what?\" },\n    { root: 'biblio', origin: 'Greek', meaning: 'book', words: ['bibliography', 'bibliophile', 'library'], question: \"What does the root 'biblio' mean?\", options: ['paper', 'book', 'word', 'story'], correct: 'book', hint: \"A bibliophile loves... what?\" },\n    { root: 'gymn', origin: 'Greek', meaning: 'naked, exercise', words: ['gymnasium', 'gymnastics', 'gymnast'], question: \"What does the root 'gymn' mean?\", options: ['clothed', 'naked, exercise', 'running', 'jumping'], correct: 'naked, exercise', hint: \"A gymnasium is a place for... what?\" }\n];\n\n\n        \/\/ Game state with enhanced randomization\n        let gameState = {\n            currentQuestions: [],\n            currentQuestionIndex: 0,\n            score: 0,\n            totalQuestions: 10,\n            selectedOrigin: 'all',\n            answered: false,\n            usedRoots: [],\n            allTimeUsedRoots: new Set() \/\/ Track roots used across all games in session\n        };\n\n        \/\/ Enhanced shuffle function with better randomization\n        function shuffleArray(array) {\n            const shuffled = [...array];\n            \/\/ Use Fisher-Yates shuffle for better randomization\n            for (let i = shuffled.length - 1; i > 0; i--) {\n                const j = Math.floor(Math.random() * (i + 1));\n                [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];\n            }\n            return shuffled;\n        }\n\n        \/\/ Create wrong answers for multiple choice options\n        function generateWrongAnswers(correctAnswer, allMeanings) {\n            const wrongAnswers = allMeanings.filter(meaning => meaning !== correctAnswer);\n            const shuffledWrong = shuffleArray(wrongAnswers);\n            return shuffledWrong.slice(0, 3); \/\/ Take 3 random wrong answers\n        }\n\n        \/\/ Get all possible meanings for generating wrong answers\n        function getAllMeanings(rootsArray) {\n            return [...new Set(rootsArray.map(root => root.meaning))];\n        }\n\n        \/\/ Enhanced question generation with better randomization and variety\n        function generateQuestions() {\n            let availableRoots = [];\n            \n            if (gameState.selectedOrigin === 'all') {\n                availableRoots = [...latinRoots, ...greekRoots];\n            } else if (gameState.selectedOrigin === 'latin') {\n                availableRoots = [...latinRoots];\n            } else if (gameState.selectedOrigin === 'greek') {\n                availableRoots = [...greekRoots];\n            }\n            \n            \/\/ Filter out recently used roots to ensure variety across games\n            const freshRoots = availableRoots.filter(root => !gameState.allTimeUsedRoots.has(root.root));\n            \n            \/\/ If we've used too many roots, reset the tracking but prioritize unused ones\n            if (freshRoots.length < gameState.totalQuestions) {\n                gameState.allTimeUsedRoots.clear();\n            }\n            \n            \/\/ Use fresh roots preferentially, fall back to all roots if needed\n            const rootsToUse = freshRoots.length >= gameState.totalQuestions ? freshRoots : availableRoots;\n            \n            \/\/ Shuffle and take required number of questions\n            const shuffledRoots = shuffleArray(rootsToUse);\n            gameState.currentQuestions = shuffledRoots.slice(0, gameState.totalQuestions);\n            \n            \/\/ Track used roots\n            gameState.currentQuestions.forEach(root => {\n                gameState.allTimeUsedRoots.add(root.root);\n            });\n            \n            \/\/ Generate dynamic options for each question\n            const allMeanings = getAllMeanings(availableRoots);\n            gameState.currentQuestions = gameState.currentQuestions.map(question => {\n                const wrongAnswers = generateWrongAnswers(question.correct, allMeanings);\n                const allOptions = [question.correct, ...wrongAnswers];\n                return {\n                    ...question,\n                    options: shuffleArray(allOptions)\n                };\n            });\n            \n            gameState.usedRoots = [...gameState.currentQuestions];\n        }\n\n        \/\/ Show current question\n        function showQuestion() {\n            if (gameState.currentQuestionIndex >= gameState.totalQuestions) {\n                showCompletionScreen();\n                return;\n            }\n\n            const question = gameState.currentQuestions[gameState.currentQuestionIndex];\n            gameState.answered = false;\n\n            \/\/ Update progress\n            const progress = ((gameState.currentQuestionIndex) \/ gameState.totalQuestions) * 100;\n            document.getElementById('progressFill').style.width = progress + '%';\n\n            \/\/ Update counters\n            document.getElementById('scoreDisplay').textContent = `${gameState.score}\/${gameState.totalQuestions}`;\n            document.getElementById('questionCounter').textContent = `Question ${gameState.currentQuestionIndex + 1}\/${gameState.totalQuestions}`;\n\n            \/\/ Update question content\n            document.getElementById('originBadge').textContent = `${question.origin} Root`;\n            document.getElementById('originBadge').style.background = question.origin === 'Latin' ? '#ffebee' : '#e3f2fd';\n            document.getElementById('originBadge').style.color = question.origin === 'Latin' ? '#d32f2f' : '#1976d2';\n            \n            document.getElementById('questionText').textContent = question.question;\n            document.getElementById('rootDisplay').textContent = `\"${question.root}\"`;\n            document.getElementById('hintText').textContent = `${question.hint}`;\n\n            \/\/ Update word tags\n            const wordTags = document.getElementById('wordTags');\n            wordTags.innerHTML = '';\n            question.words.forEach(word => {\n                const tag = document.createElement('span');\n                tag.className = 'word-tag';\n                tag.textContent = word;\n                wordTags.appendChild(tag);\n            });\n\n            \/\/ Update options (now dynamically generated)\n            const optionButtons = document.querySelectorAll('.option-button');\n            optionButtons.forEach((button, index) => {\n                if (question.options[index]) {\n                    button.textContent = question.options[index];\n                    button.className = 'option-button';\n                    button.disabled = false;\n                    button.style.display = 'block';\n                } else {\n                    button.style.display = 'none';\n                }\n            });\n\n            \/\/ Hide hint and result sections\n            document.getElementById('hintBox').classList.add('hidden');\n            document.getElementById('resultSection').classList.add('hidden');\n        }\n\n        \/\/ Handle answer selection\n        function selectAnswer(button) {\n            if (gameState.answered) return;\n\n            gameState.answered = true;\n            const selectedAnswer = button.textContent;\n            const question = gameState.currentQuestions[gameState.currentQuestionIndex];\n            const isCorrect = selectedAnswer === question.correct;\n\n            \/\/ Update score\n            if (isCorrect) {\n                gameState.score++;\n                document.getElementById('scoreDisplay').textContent = `${gameState.score}\/${gameState.totalQuestions}`;\n            }\n\n            \/\/ Style buttons\n            const optionButtons = document.querySelectorAll('.option-button');\n            optionButtons.forEach(btn => {\n                if (btn.style.display !== 'none') {\n                    btn.disabled = true;\n                    if (btn.textContent === question.correct) {\n                        btn.classList.add('option-correct');\n                    } else if (btn === button && !isCorrect) {\n                        btn.classList.add('option-incorrect');\n                    } else {\n                        btn.classList.add('option-disabled');\n                    }\n                }\n            });\n\n            \/\/ Show result\n            const resultText = document.getElementById('resultText');\n            if (isCorrect) {\n                resultText.textContent = `Correct! The root \"${question.root}\" means \"${question.meaning}\"`;\n                resultText.className = 'result-text result-correct';\n            } else {\n                resultText.textContent = `Incorrect. The root \"${question.root}\" means \"${question.meaning}\"`;\n                resultText.className = 'result-text result-incorrect';\n            }\n\n            document.getElementById('resultSection').classList.remove('hidden');\n        }\n\n        \/\/ Show hint\n        function showHint() {\n            document.getElementById('hintBox').classList.remove('hidden');\n        }\n\n        \/\/ Next question\n        function nextQuestion() {\n            gameState.currentQuestionIndex++;\n            showQuestion();\n        }\n\n        \/\/ Show completion screen\n        function showCompletionScreen() {\n            \/\/ Update final score\n            document.getElementById('finalScore').textContent = `Your Score: ${gameState.score}\/${gameState.totalQuestions}`;\n            \n            \/\/ Update score message\n            const percentage = (gameState.score \/ gameState.totalQuestions) * 100;\n            let message = '';\n            if (percentage >= 90) {\n                message = \"Outstanding! You're a word root master!\";\n            } else if (percentage >= 80) {\n                message = \"Excellent work! You really know your roots!\";\n            } else if (percentage >= 70) {\n                message = \"Good job! You're getting the hang of it!\";\n            } else if (percentage >= 60) {\n                message = \"Not bad! Keep practicing to improve!\";\n            } else {\n                message = \"Keep going! The more you work with these, the easier they get!\";\n            }\n            document.getElementById('scoreMessage').textContent = message;\n\n            \/\/ Show used roots\n            const rootsGrid = document.getElementById('rootsGrid');\n            rootsGrid.innerHTML = '';\n            gameState.usedRoots.forEach(root => {\n                const rootItem = document.createElement('div');\n                rootItem.className = 'root-item';\n                rootItem.innerHTML = `\n                    <div class=\"root-name\">${root.root}<\/div>\n                    <div class=\"root-info\">${root.origin} - ${root.meaning}<\/div>\n                `;\n                rootsGrid.appendChild(rootItem);\n            });\n\n            \/\/ Show completion screen\n            document.getElementById('gameScreen').classList.add('hidden');\n            document.getElementById('completeScreen').classList.remove('hidden');\n        }\n\n        \/\/ Reset game (but keep session tracking for variety)\n        function resetGame() {\n            gameState.currentQuestions = [];\n            gameState.currentQuestionIndex = 0;\n            gameState.score = 0;\n            gameState.totalQuestions = 10;\n            gameState.selectedOrigin = 'all';\n            gameState.answered = false;\n            gameState.usedRoots = [];\n            \/\/ Keep gameState.allTimeUsedRoots to ensure variety across games\n\n            document.getElementById('completeScreen').classList.add('hidden');\n            document.getElementById('setupScreen').classList.remove('hidden');\n        }\n\n        \/\/ Start game\n        function startGame() {\n            const originSelect = document.getElementById('originSelect');\n            const questionsSelect = document.getElementById('questionsSelect');\n            \n            gameState.selectedOrigin = originSelect.value;\n            gameState.totalQuestions = parseInt(questionsSelect.value);\n            \n            generateQuestions();\n            showQuestion();\n            \n            document.getElementById('setupScreen').classList.add('hidden');\n            document.getElementById('gameScreen').classList.remove('hidden');\n        }\n\n        \/\/ Initialize game when page loads\n        document.addEventListener('DOMContentLoaded', function() {\n            \/\/ Add event listeners\n            document.getElementById('startButton').addEventListener('click', startGame);\n            document.getElementById('hintButton').addEventListener('click', showHint);\n            document.getElementById('nextButton').addEventListener('click', nextQuestion);\n            document.getElementById('playAgainButton').addEventListener('click', resetGame);\n\n            \/\/ Add option button listeners\n            document.querySelectorAll('.option-button').forEach(button => {\n                button.addEventListener('click', function() {\n                    selectAnswer(this);\n                });\n            });\n        });\n    <\/script>\n\n\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The English language has many words that are built from Greek and Latin roots. Use this fun game to learn the roots and test your knowledge! Word Roots Adventure Game &#128218; Word Roots Adventure Learn Latin and Greek word roots through interactive gameplay! Game Settings Origin Language Both Latin &amp; GreekLatin OnlyGreek Only Questions per &hellip; <a href=\"https:\/\/sukiwessling.com\/kidblog\/word-roots-game\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Word Roots Game<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":967,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"episode_type":"","audio_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","footnotes":""},"class_list":["post-951","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/pages\/951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/comments?post=951"}],"version-history":[{"count":17,"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/pages\/951\/revisions"}],"predecessor-version":[{"id":970,"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/pages\/951\/revisions\/970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/media\/967"}],"wp:attachment":[{"href":"https:\/\/sukiwessling.com\/kidblog\/wp-json\/wp\/v2\/media?parent=951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}