{"id":4713,"date":"2026-03-01T06:30:26","date_gmt":"2026-03-01T09:30:26","guid":{"rendered":"https:\/\/siminova.com.br\/blog\/?p=4713"},"modified":"2026-03-13T09:49:07","modified_gmt":"2026-03-13T12:49:07","slug":"palavras-cruzadas","status":"publish","type":"post","link":"https:\/\/siminova.com.br\/blog\/2026\/03\/palavras-cruzadas\/","title":{"rendered":"Palavras Cruzadas"},"content":{"rendered":"    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fredoka:wght@400;500;600;700&family=Comic+Neue:wght@400;700&display=swap\" rel=\"stylesheet\">\n\n    <style>\n    .srcw-container {\n        font-family: 'Fredoka', sans-serif !important;\n        max-width: 900px !important;\n        margin: 0 auto !important;\n        padding: 5px !important;\n        background: transparent !important;\n        box-sizing: border-box !important;\n    }\n    .srcw-container * {\n        box-sizing: border-box !important;\n    }\n    @media (min-width: 480px) {\n        .srcw-container {\n            padding: 15px !important;\n        }\n    }\n    .srcw-controls {\n        display: flex !important;\n        justify-content: space-between !important;\n        align-items: center !important;\n        margin-bottom: 8px !important;\n        flex-wrap: nowrap !important;\n        gap: 10px !important;\n    }\n    .srcw-score {\n        background: white !important;\n        padding: 6px 12px !important;\n        border-radius: 50px !important;\n        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1) !important;\n        display: flex !important;\n        align-items: center !important;\n        gap: 6px !important;\n        font-weight: 600 !important;\n        color: #1a1a2e !important;\n        font-size: 0.85rem !important;\n        white-space: nowrap !important;\n    }\n    @media (min-width: 480px) {\n        .srcw-score {\n            padding: 8px 15px !important;\n            font-size: 0.95rem !important;\n        }\n    }\n    .srcw-score-icon {\n        font-size: 1.3rem !important;\n    }\n    .srcw-btn {\n        padding: 6px 12px !important;\n        border: none !important;\n        border-radius: 50px !important;\n        font-family: 'Fredoka', sans-serif !important;\n        font-size: 0.85rem !important;\n        font-weight: 600 !important;\n        cursor: pointer !important;\n        transition: all 0.3s ease !important;\n        display: flex !important;\n        align-items: center !important;\n        gap: 4px !important;\n        background: linear-gradient(135deg, #00A651 0%, #0066CC 100%) !important;\n        color: white !important;\n        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15) !important;\n        text-decoration: none !important;\n        white-space: nowrap !important;\n    }\n    @media (min-width: 480px) {\n        .srcw-btn {\n            padding: 8px 16px !important;\n            font-size: 0.95rem !important;\n            gap: 6px !important;\n        }\n    }\n    .srcw-btn:hover {\n        transform: translateY(-2px) !important;\n        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25) !important;\n    }\n    .srcw-game-area {\n        display: grid !important;\n        grid-template-columns: 1fr !important;\n        gap: 10px !important;\n    }\n    @media (min-width: 768px) {\n        .srcw-game-area {\n            grid-template-columns: auto 280px !important;\n            gap: 20px !important;\n        }\n    }\n    .srcw-grid-wrapper {\n        background: white !important;\n        border-radius: 12px !important;\n        padding: 5px !important;\n        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1) !important;\n        overflow-x: auto !important;\n        -webkit-overflow-scrolling: touch !important;\n    }\n    @media (min-width: 480px) {\n        .srcw-grid-wrapper {\n            padding: 10px !important;\n            border-radius: 20px !important;\n        }\n    }\n    .srcw-grid {\n        display: grid !important;\n        gap: 2px !important;\n        margin: 0 auto !important;\n        width: fit-content !important;\n        min-width: min-content !important;\n    }\n    .srcw-cell {\n        width: 28px !important;\n        height: 28px !important;\n        min-width: 28px !important;\n        min-height: 28px !important;\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        font-family: 'Fredoka', sans-serif !important;\n        font-size: 0.9rem !important;\n        font-weight: 600 !important;\n        text-transform: uppercase !important;\n        border-radius: 4px !important;\n        position: relative !important;\n        transition: all 0.2s ease !important;\n        margin: 0 !important;\n        padding: 0 !important;\n    }\n    @media (min-width: 480px) {\n        .srcw-grid {\n            gap: 3px !important;\n        }\n        .srcw-cell {\n            width: 36px !important;\n            height: 36px !important;\n            min-width: 36px !important;\n            min-height: 36px !important;\n            font-size: 1.1rem !important;\n            border-radius: 6px !important;\n        }\n    }\n    .srcw-cell-empty {\n        background: transparent !important;\n        pointer-events: none !important;\n    }\n    .srcw-cell-active {\n        background: #f0f4f8 !important;\n        border: 2px solid #cbd5e1 !important;\n        cursor: pointer !important;\n    }\n    .srcw-cell-active:hover {\n        border-color: #0066CC !important;\n        background: #e8f4fc !important;\n    }\n    .srcw-cell-active.srcw-selected {\n        border-color: #fbbf24 !important;\n        background: #fef3c7 !important;\n        box-shadow: 0 0 0 3px rgba(251, 191, 36, 0.3) !important;\n    }\n    .srcw-cell-active.srcw-highlighted {\n        background: #dbeafe !important;\n        border-color: #0066CC !important;\n    }\n    .srcw-cell-active.srcw-correct {\n        background: #dcfce7 !important;\n        border-color: #4ade80 !important;\n        color: #166534 !important;\n        animation: srcwPulse 0.5s ease !important;\n    }\n    .srcw-cell-active.srcw-revealed {\n        background: #e0f2fe !important;\n        border-color: #38bdf8 !important;\n        color: #0369a1 !important;\n    }\n    .srcw-cell-active.srcw-revealed input {\n        color: #0369a1 !important;\n    }\n    @keyframes srcwPulse {\n        0%, 100% { transform: scale(1); }\n        50% { transform: scale(1.1); }\n    }\n    .srcw-cell-number {\n        position: absolute !important;\n        top: 2px !important;\n        left: 3px !important;\n        font-size: 0.55rem !important;\n        font-weight: 700 !important;\n        color: #0066CC !important;\n        line-height: 1 !important;\n    }\n    .srcw-cell-direction {\n        position: absolute !important;\n        bottom: 1px !important;\n        right: 2px !important;\n        font-size: 0.5rem !important;\n        color: #00A651 !important;\n        line-height: 1 !important;\n        opacity: 0.8 !important;\n    }\n    .srcw-cell input {\n        width: 100% !important;\n        height: 100% !important;\n        border: none !important;\n        background: transparent !important;\n        text-align: center !important;\n        font-family: 'Fredoka', sans-serif !important;\n        font-size: inherit !important;\n        font-weight: inherit !important;\n        text-transform: uppercase !important;\n        color: #1a1a2e !important;\n        caret-color: #0066CC !important;\n        outline: none !important;\n        padding: 0 !important;\n        margin: 0 !important;\n    }\n    .srcw-clues {\n        background: white !important;\n        border-radius: 12px !important;\n        padding: 10px !important;\n        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1) !important;\n        max-height: 300px !important;\n        overflow-y: auto !important;\n    }\n    @media (min-width: 480px) {\n        .srcw-clues {\n            padding: 15px !important;\n            border-radius: 20px !important;\n        }\n    }\n    @media (min-width: 768px) {\n        .srcw-clues {\n            max-height: 500px !important;\n        }\n    }\n    .srcw-clues-section {\n        margin-bottom: 20px !important;\n    }\n    .srcw-clues-section:last-child {\n        margin-bottom: 0 !important;\n    }\n    .srcw-clues-title {\n        font-size: 1rem !important;\n        font-weight: 700 !important;\n        color: white !important;\n        padding: 8px 16px !important;\n        border-radius: 50px !important;\n        margin-bottom: 12px !important;\n        display: inline-flex !important;\n        align-items: center !important;\n        gap: 6px !important;\n        background: linear-gradient(135deg, #00A651 0%, #0066CC 100%) !important;\n    }\n    .srcw-clue-item {\n        padding: 8px 12px !important;\n        margin-bottom: 6px !important;\n        border-radius: 10px !important;\n        cursor: pointer !important;\n        transition: all 0.2s ease !important;\n        font-family: 'Comic Neue', cursive !important;\n        font-size: 0.95rem !important;\n        line-height: 1.4 !important;\n        background: #f8fafc !important;\n        border-left: 3px solid transparent !important;\n        color: #1a1a2e !important;\n    }\n    .srcw-clue-item:hover {\n        background: #e8f4fc !important;\n    }\n    .srcw-clue-item.srcw-active {\n        background: #0066CC !important;\n        border-left-color: #004499 !important;\n        color: white !important;\n        text-decoration: none !important;\n        opacity: 1 !important;\n    }\n    .srcw-clue-item.srcw-active .srcw-clue-number {\n        color: white !important;\n    }\n    .srcw-clue-item.srcw-active.srcw-completed {\n        background: #004499 !important;\n        text-decoration: line-through !important;\n    }\n    .srcw-clue-item.srcw-completed {\n        background: #dcfce7 !important;\n        border-left-color: #4ade80 !important;\n        text-decoration: line-through !important;\n        opacity: 0.7 !important;\n    }\n    .srcw-clue-number {\n        font-weight: 700 !important;\n        color: #0066CC !important;\n        margin-right: 6px !important;\n    }\n    .srcw-victory {\n        position: fixed !important;\n        top: 0 !important;\n        left: 0 !important;\n        width: 100% !important;\n        height: 100% !important;\n        background: rgba(0, 0, 0, 0.7) !important;\n        display: none !important;\n        align-items: center !important;\n        justify-content: center !important;\n        z-index: 99999 !important;\n        padding: 20px !important;\n    }\n    .srcw-victory.srcw-show {\n        display: flex !important;\n        animation: srcwFadeIn 0.5s ease !important;\n    }\n    @keyframes srcwFadeIn {\n        from { opacity: 0; }\n        to { opacity: 1; }\n    }\n    .srcw-victory-card {\n        background: white !important;\n        border-radius: 30px !important;\n        padding: 40px !important;\n        text-align: center !important;\n        max-width: 400px !important;\n        width: 100% !important;\n        animation: srcwBounceIn 0.6s ease !important;\n    }\n    @keyframes srcwBounceIn {\n        0% { transform: scale(0.5); opacity: 0; }\n        70% { transform: scale(1.05); }\n        100% { transform: scale(1); opacity: 1; }\n    }\n    .srcw-victory-icon {\n        font-size: 4rem !important;\n        margin-bottom: 15px !important;\n        animation: srcwBounce 1s ease infinite !important;\n        display: block !important;\n    }\n    @keyframes srcwBounce {\n        0%, 100% { transform: translateY(0); }\n        50% { transform: translateY(-10px); }\n    }\n    .srcw-victory-title {\n        font-size: 2rem !important;\n        font-weight: 700 !important;\n        background: linear-gradient(135deg, #00A651 0%, #0066CC 100%) !important;\n        -webkit-background-clip: text !important;\n        -webkit-text-fill-color: transparent !important;\n        background-clip: text !important;\n        margin: 0 0 10px 0 !important;\n    }\n    .srcw-victory-message {\n        font-family: 'Comic Neue', cursive !important;\n        font-size: 1.1rem !important;\n        color: #666 !important;\n        margin: 0 0 25px 0 !important;\n    }\n    .srcw-reveal-btn {\n        padding: 6px 12px !important;\n        border: none !important;\n        border-radius: 50px !important;\n        font-family: 'Fredoka', sans-serif !important;\n        font-size: 0.85rem !important;\n        font-weight: 600 !important;\n        cursor: pointer !important;\n        background: #f0f4f8 !important;\n        color: #1a1a2e !important;\n        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1) !important;\n        white-space: nowrap !important;\n        transition: all 0.3s ease !important;\n        display: flex !important;\n        align-items: center !important;\n        gap: 4px !important;\n    }\n    .srcw-reveal-btn:hover {\n        background: #e2e8f0 !important;\n    }\n    .srcw-reveal-btn:disabled {\n        opacity: 0.5 !important;\n        cursor: not-allowed !important;\n    }\n    .srcw-math-popup {\n        position: fixed !important;\n        top: 0 !important;\n        left: 0 !important;\n        right: 0 !important;\n        bottom: 0 !important;\n        width: 100vw !important;\n        height: 100vh !important;\n        background: rgba(0, 0, 0, 0.9) !important;\n        display: none !important;\n        align-items: center !important;\n        justify-content: center !important;\n        z-index: 2147483647 !important;\n        padding: 15px !important;\n        box-sizing: border-box !important;\n    }\n    body.srcw-popup-open header,\n    body.srcw-popup-open footer,\n    body.srcw-popup-open .site-header,\n    body.srcw-popup-open .site-footer,\n    body.srcw-popup-open #header,\n    body.srcw-popup-open #footer,\n    body.srcw-popup-open .elementor-location-header,\n    body.srcw-popup-open .elementor-location-footer,\n    body.srcw-popup-open [class*=\"header\"],\n    body.srcw-popup-open [class*=\"footer\"],\n    body.srcw-popup-open [id*=\"header\"],\n    body.srcw-popup-open [id*=\"footer\"] {\n        display: none !important;\n    }\n    body.srcw-popup-open {\n        overflow: hidden !important;\n    }\n    .srcw-math-popup.srcw-show {\n        display: flex !important;\n    }\n    .srcw-math-card {\n        background: white !important;\n        border-radius: 20px !important;\n        padding: 20px !important;\n        text-align: center !important;\n        max-width: 320px !important;\n        width: 100% !important;\n        animation: srcwBounceIn 0.4s ease !important;\n        max-height: 90vh !important;\n        overflow-y: auto !important;\n        box-sizing: border-box !important;\n    }\n    .srcw-math-title {\n        font-size: 1.1rem !important;\n        font-weight: 700 !important;\n        color: #1a1a2e !important;\n        margin: 0 0 8px 0 !important;\n    }\n    .srcw-math-subtitle {\n        font-family: 'Comic Neue', cursive !important;\n        font-size: 0.9rem !important;\n        color: #666 !important;\n        margin: 0 0 15px 0 !important;\n    }\n    .srcw-math-question {\n        font-size: 1.8rem !important;\n        font-weight: 700 !important;\n        background: linear-gradient(135deg, #00A651 0%, #0066CC 100%) !important;\n        -webkit-background-clip: text !important;\n        -webkit-text-fill-color: transparent !important;\n        background-clip: text !important;\n        margin: 0 0 15px 0 !important;\n    }\n    .srcw-math-input {\n        width: 100% !important;\n        padding: 12px 15px !important;\n        font-family: 'Fredoka', sans-serif !important;\n        font-size: 1.2rem !important;\n        font-weight: 600 !important;\n        text-align: center !important;\n        border: 2px solid #e2e8f0 !important;\n        border-radius: 10px !important;\n        outline: none !important;\n        margin-bottom: 10px !important;\n        transition: border-color 0.3s ease !important;\n        box-sizing: border-box !important;\n    }\n    .srcw-math-input:focus {\n        border-color: #0066CC !important;\n    }\n    .srcw-math-input.srcw-error {\n        border-color: #ef4444 !important;\n        animation: srcwShake 0.5s ease !important;\n    }\n    @keyframes srcwShake {\n        0%, 100% { transform: translateX(0); }\n        20%, 60% { transform: translateX(-5px); }\n        40%, 80% { transform: translateX(5px); }\n    }\n    .srcw-math-feedback {\n        font-family: 'Comic Neue', cursive !important;\n        font-size: 0.85rem !important;\n        color: #ef4444 !important;\n        margin: 0 0 10px 0 !important;\n        min-height: 18px !important;\n    }\n    .srcw-math-buttons {\n        display: flex !important;\n        gap: 10px !important;\n        justify-content: center !important;\n    }\n    .srcw-math-btn {\n        padding: 10px 18px !important;\n        border: none !important;\n        border-radius: 50px !important;\n        font-family: 'Fredoka', sans-serif !important;\n        font-size: 0.9rem !important;\n        font-weight: 600 !important;\n        cursor: pointer !important;\n        transition: all 0.3s ease !important;\n        flex: 1 !important;\n        max-width: 140px !important;\n    }\n    .srcw-math-btn-confirm {\n        background: linear-gradient(135deg, #00A651 0%, #0066CC 100%) !important;\n        color: white !important;\n    }\n    .srcw-math-btn-cancel {\n        background: #f0f4f8 !important;\n        color: #1a1a2e !important;\n    }\n    .srcw-mobile-tip {\n        display: none !important;\n        background: linear-gradient(135deg, #fff3cd 0%, #ffeeba 100%) !important;\n        color: #856404 !important;\n        padding: 8px 12px !important;\n        border-radius: 8px !important;\n        font-size: 0.8rem !important;\n        text-align: center !important;\n        margin-bottom: 10px !important;\n        border: 1px solid #ffc107 !important;\n    }\n    .srcw-mobile-tip-icon {\n        margin-right: 5px !important;\n    }\n    @media (max-width: 767px) {\n        .srcw-mobile-tip {\n            display: block !important;\n        }\n    }\n    .srcw-floating-clue {\n        display: none !important;\n        background: #0066CC !important;\n        color: white !important;\n        padding: 10px 15px !important;\n        border-radius: 10px !important;\n        font-family: 'Comic Neue', cursive !important;\n        font-size: 0.9rem !important;\n        line-height: 1.4 !important;\n        margin-bottom: 10px !important;\n        box-shadow: 0 4px 15px rgba(0, 102, 204, 0.3) !important;\n        position: relative !important;\n    }\n    .srcw-floating-clue.srcw-show {\n        display: block !important;\n    }\n    .srcw-floating-clue::after {\n        content: '' !important;\n        position: absolute !important;\n        bottom: -8px !important;\n        left: 20px !important;\n        border-left: 8px solid transparent !important;\n        border-right: 8px solid transparent !important;\n        border-top: 8px solid #0066CC !important;\n    }\n    .srcw-floating-clue-number {\n        font-family: 'Fredoka', sans-serif !important;\n        font-weight: 700 !important;\n        margin-right: 8px !important;\n    }\n    @media (max-width: 767px) {\n        .srcw-clues {\n            display: none !important;\n        }\n    }\n    .srcw-loading {\n        display: flex !important;\n        flex-direction: column !important;\n        align-items: center !important;\n        justify-content: center !important;\n        padding: 60px 20px !important;\n        gap: 20px !important;\n    }\n    .srcw-spinner {\n        width: 50px !important;\n        height: 50px !important;\n        border: 4px solid #e2e8f0 !important;\n        border-top-color: #00A651 !important;\n        border-radius: 50% !important;\n        animation: srcwSpin 1s linear infinite !important;\n    }\n    @keyframes srcwSpin {\n        from { transform: rotate(0deg); }\n        to { transform: rotate(360deg); }\n    }\n    .srcw-loading-text {\n        font-family: 'Comic Neue', cursive !important;\n        color: #666 !important;\n    }\n    <\/style>\n\n    <div class=\"srcw-container\" id=\"srcw-container\">\n        <div class=\"srcw-controls\">\n            <div class=\"srcw-score\">\n                <span class=\"srcw-score-icon\">\u2b50<\/span>\n                <span>Palavras: <strong id=\"srcw-score\">0<\/strong>\/<strong id=\"srcw-total\">0<\/strong><\/span>\n            <\/div>\n            <button class=\"srcw-reveal-btn\" onclick=\"srcwOpenMathPopup()\">\n                \ud83d\udca1 Revelar letra\n            <\/button>\n            <button class=\"srcw-btn\" onclick=\"srcwNewGame()\">\n                \ud83d\udd04 Novo Jogo\n            <\/button>\n        <\/div>\n\n        <div class=\"srcw-mobile-tip\">\n            <span class=\"srcw-mobile-tip-icon\">\ud83d\udcbb<\/span>\n            Dica: a experi\u00eancia \u00e9 melhor no computador!\n        <\/div>\n\n        <div class=\"srcw-game-area\">\n            <div class=\"srcw-grid-wrapper\">\n                <div class=\"srcw-floating-clue\" id=\"srcw-floating-clue\">\n                    <span class=\"srcw-floating-clue-number\" id=\"srcw-floating-number\"><\/span>\n                    <span id=\"srcw-floating-text\"><\/span>\n                <\/div>\n                <div id=\"srcw-grid\" class=\"srcw-grid\">\n                    <div class=\"srcw-loading\">\n                        <div class=\"srcw-spinner\"><\/div>\n                        <span class=\"srcw-loading-text\">Montando o jogo...<\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"srcw-clues\">\n                <div class=\"srcw-clues-section\">\n                    <div class=\"srcw-clues-title\">\ud83d\udcdd Dicas<\/div>\n                    <div id=\"srcw-clues-list\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"srcw-victory\" id=\"srcw-victory\">\n        <div class=\"srcw-victory-card\">\n            <span class=\"srcw-victory-icon\">\ud83c\udfc6<\/span>\n            <h2 class=\"srcw-victory-title\">Parab\u00e9ns!<\/h2>\n            <p class=\"srcw-victory-message\">Voc\u00ea completou todas as palavras cruzadas!<br>Voc\u00ea \u00e9 um verdadeiro cientista da rob\u00f3tica! \ud83e\udd16<\/p>\n            <button class=\"srcw-btn\" onclick=\"srcwNewGame(); srcwCloseVictory();\">\n                \ud83c\udfae Jogar Novamente\n            <\/button>\n        <\/div>\n    <\/div>\n\n    <div class=\"srcw-math-popup\" id=\"srcw-math-popup\">\n        <div class=\"srcw-math-card\">\n            <h3 class=\"srcw-math-title\">\ud83e\uddee Desafio Matem\u00e1tico!<\/h3>\n            <p class=\"srcw-math-subtitle\">Resolva para revelar a letra:<\/p>\n            <p class=\"srcw-math-question\" id=\"srcw-math-question\">5 + 3 = ?<\/p>\n            <input type=\"number\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"srcw-math-input\" id=\"srcw-math-input\" placeholder=\"Sua resposta\" autocomplete=\"off\">\n            <p class=\"srcw-math-feedback\" id=\"srcw-math-feedback\"><\/p>\n            <div class=\"srcw-math-buttons\">\n                <button class=\"srcw-math-btn srcw-math-btn-cancel\" onclick=\"srcwCloseMathPopup()\">Cancelar<\/button>\n                <button class=\"srcw-math-btn srcw-math-btn-confirm\" onclick=\"srcwCheckMathAnswer()\">Confirmar<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function() {\n        const ROBOTICA = [\n            { word: \"ROB\u00d4\", clue: \"M\u00e1quina programada para fazer tarefas\" },\n            { word: \"MOTOR\", clue: \"Pe\u00e7a que faz as coisas girarem e se moverem\" },\n            { word: \"SENSOR\", clue: \"Detecta luz, som, toque ou movimento\" },\n            { word: \"PROGRAMA\", clue: \"Conjunto de comandos para o rob\u00f4 seguir\" },\n            { word: \"ENGRENAGEM\", clue: \"Roda dentada que transmite movimento\" },\n            { word: \"RODA\", clue: \"Pe\u00e7a circular que permite movimento\" },\n            { word: \"CABO\", clue: \"Fio que conecta pe\u00e7as eletr\u00f4nicas\" },\n            { word: \"ENERGIA\", clue: \"For\u00e7a que faz o rob\u00f4 funcionar\" },\n            { word: \"BATERIA\", clue: \"Guarda energia para o rob\u00f4\" },\n            { word: \"COMANDO\", clue: \"Ordem dada ao rob\u00f4 para ele executar\" },\n            { word: \"STEAM\", clue: \"Ci\u00eancia, Tecnologia, Engenharia, Arte e Matem\u00e1tica\" },\n            { word: \"CI\u00caNCIA\", clue: \"Estudo da natureza e do mundo\" },\n            { word: \"ARTE\", clue: \"Express\u00e3o criativa com cores e formas\" },\n            { word: \"CRIAR\", clue: \"Inventar algo novo com imagina\u00e7\u00e3o\" },\n            { word: \"MONTAR\", clue: \"Juntar pe\u00e7as para construir algo\" },\n            { word: \"TESTAR\", clue: \"Verificar se algo funciona bem\" },\n            { word: \"IDEIA\", clue: \"Pensamento criativo para resolver problemas\" },\n            { word: \"PROJETO\", clue: \"Plano para construir algo\" },\n            { word: \"EQUIPE\", clue: \"Grupo que trabalha junto\" },\n            { word: \"DESCOBRIR\", clue: \"Encontrar algo novo ou aprender\" },\n            { word: \"L\u00cdDER\", clue: \"Fun\u00e7\u00e3o de quem organiza a equipe\" },\n            { word: \"CONSTRUTOR\", clue: \"Fun\u00e7\u00e3o de quem monta as pe\u00e7as\" },\n            { word: \"PROGRAMADOR\", clue: \"Fun\u00e7\u00e3o de quem cria os comandos do rob\u00f4\" },\n            { word: \"MISS\u00c3O\", clue: \"Desafio a ser cumprido pela equipe\" },\n            { word: \"DESAFIO\", clue: \"Problema que precisamos resolver\" },\n            { word: \"SOLU\u00c7\u00c3O\", clue: \"Resposta para um problema\" },\n            { word: \"PE\u00c7A\", clue: \"Parte que usamos para montar\" },\n            { word: \"BLOCO\", clue: \"Pe\u00e7a b\u00e1sica de constru\u00e7\u00e3o LEGO\" },\n            { word: \"CONECTOR\", clue: \"Une duas ou mais pe\u00e7as\" },\n            { word: \"BASE\", clue: \"Parte de baixo que sustenta tudo\" },\n            { word: \"GARRA\", clue: \"M\u00e3o mec\u00e2nica do rob\u00f4\" },\n            { word: \"LOOP\", clue: \"Repete uma a\u00e7\u00e3o v\u00e1rias vezes\" },\n            { word: \"IN\u00cdCIO\", clue: \"Onde o programa come\u00e7a\" },\n            { word: \"FIM\", clue: \"Onde o programa termina\" },\n            { word: \"ESPERAR\", clue: \"Pausar antes de continuar\" },\n            { word: \"GIRAR\", clue: \"Movimento de rota\u00e7\u00e3o\" },\n            { word: \"ANDAR\", clue: \"Movimento para frente ou tr\u00e1s\" },\n            { word: \"PARAR\", clue: \"Comando para n\u00e3o se mover mais\" },\n            { word: \"PROFESSOR\", clue: \"Quem ensina e orienta os alunos\" },\n            { word: \"PADR\u00c3O\", clue: \"Modelo a ser seguido\" },\n            { word: \"TECNOLOGIA\", clue: \"Frequentemente associada \u00e0 inova\u00e7\u00e3o\" }\n        ];\n\n        const MATEMATICA = [\n            { word: \"TR\u00caS\", clue: \"\u2795 Adi\u00e7\u00e3o: 1 + 2 = ?\" },\n            { word: \"CINCO\", clue: \"\u2795 Adi\u00e7\u00e3o: 2 + 3 = ?\" },\n            { word: \"SEIS\", clue: \"\u2795 Adi\u00e7\u00e3o: 4 + 2 = ?\" },\n            { word: \"SETE\", clue: \"\u2795 Adi\u00e7\u00e3o: 3 + 4 = ?\" },\n            { word: \"OITO\", clue: \"\u2795 Adi\u00e7\u00e3o: 5 + 3 = ?\" },\n            { word: \"NOVE\", clue: \"\u2795 Adi\u00e7\u00e3o: 6 + 3 = ?\" },\n            { word: \"DEZ\", clue: \"\u2795 Adi\u00e7\u00e3o: 7 + 3 = ?\" },\n            { word: \"ONZE\", clue: \"\u2795 Adi\u00e7\u00e3o: 5 + 6 = ?\" },\n            { word: \"DOZE\", clue: \"\u2795 Adi\u00e7\u00e3o: 7 + 5 = ?\" },\n            { word: \"TREZE\", clue: \"\u2795 Adi\u00e7\u00e3o: 6 + 7 = ?\" },\n            { word: \"QUATORZE\", clue: \"\u2795 Adi\u00e7\u00e3o: 8 + 6 = ?\" },\n            { word: \"QUINZE\", clue: \"\u2795 Adi\u00e7\u00e3o: 9 + 6 = ?\" },\n            { word: \"VINTE\", clue: \"\u2795 Adi\u00e7\u00e3o: 10 + 10 = ?\" },\n            { word: \"UM\", clue: \"\u2796 Subtra\u00e7\u00e3o: 5 - 4 = ?\" },\n            { word: \"DOIS\", clue: \"\u2796 Subtra\u00e7\u00e3o: 7 - 5 = ?\" },\n            { word: \"QUATRO\", clue: \"\u2796 Subtra\u00e7\u00e3o: 9 - 5 = ?\" },\n            { word: \"CINCO\", clue: \"\u2796 Subtra\u00e7\u00e3o: 12 - 7 = ?\" },\n            { word: \"SEIS\", clue: \"\u2796 Subtra\u00e7\u00e3o: 15 - 9 = ?\" },\n            { word: \"OITO\", clue: \"\u2796 Subtra\u00e7\u00e3o: 20 - 12 = ?\" },\n            { word: \"NOVE\", clue: \"\u2796 Subtra\u00e7\u00e3o: 18 - 9 = ?\" },\n            { word: \"DEZ\", clue: \"\u2796 Subtra\u00e7\u00e3o: 16 - 6 = ?\" },\n            { word: \"DOIS\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 1 \u00d7 2 = ?\" },\n            { word: \"QUATRO\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 2 \u00d7 2 = ?\" },\n            { word: \"SEIS\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 2 \u00d7 3 = ?\" },\n            { word: \"OITO\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 2 \u00d7 4 = ?\" },\n            { word: \"NOVE\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 3 \u00d7 3 = ?\" },\n            { word: \"DEZ\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 2 \u00d7 5 = ?\" },\n            { word: \"DOZE\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 6 \u00d7 2 = ?\" },\n            { word: \"QUINZE\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 3 \u00d7 5 = ?\" },\n            { word: \"DEZESSEIS\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 4 \u00d7 4 = ?\" },\n            { word: \"DEZOITO\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 3 \u00d7 6 = ?\" },\n            { word: \"VINTE\", clue: \"\u2716\ufe0f Multiplica\u00e7\u00e3o: 4 \u00d7 5 = ?\" },\n            { word: \"UM\", clue: \"\u2797 Divis\u00e3o: 5 \u00f7 5 = ?\" },\n            { word: \"DOIS\", clue: \"\u2797 Divis\u00e3o: 10 \u00f7 5 = ?\" },\n            { word: \"TR\u00caS\", clue: \"\u2797 Divis\u00e3o: 9 \u00f7 3 = ?\" },\n            { word: \"QUATRO\", clue: \"\u2797 Divis\u00e3o: 12 \u00f7 3 = ?\" },\n            { word: \"CINCO\", clue: \"\u2797 Divis\u00e3o: 15 \u00f7 3 = ?\" },\n            { word: \"SEIS\", clue: \"\u2797 Divis\u00e3o: 18 \u00f7 3 = ?\" },\n            { word: \"SETE\", clue: \"\u2797 Divis\u00e3o: 14 \u00f7 2 = ?\" },\n            { word: \"OITO\", clue: \"\u2797 Divis\u00e3o: 16 \u00f7 2 = ?\" },\n            { word: \"NOVE\", clue: \"\u2797 Divis\u00e3o: 27 \u00f7 3 = ?\" },\n            { word: \"DEZ\", clue: \"\u2797 Divis\u00e3o: 20 \u00f7 2 = ?\" },\n            { word: \"ADI\u00c7\u00c3O\", clue: \"Opera\u00e7\u00e3o matem\u00e1tica que soma valores\" },\n            { word: \"SUBTRA\u00c7\u00c3O\", clue: \"Opera\u00e7\u00e3o matem\u00e1tica que diminui valores\" },\n            { word: \"MULTIPLICA\u00c7\u00c3O\", clue: \"Opera\u00e7\u00e3o matem\u00e1tica que multiplica valores\" },\n            { word: \"DIVIS\u00c3O\", clue: \"Opera\u00e7\u00e3o matem\u00e1tica que divide valores\" }\n        ];\n\n        let grid = [];\n        const gridSize = 12;\n        let placedWords = [];\n        let selectedCell = null;\n        let currentDirection = 'horizontal';\n        let completedWords = new Set();\n        let WORD_BANK = [];\n\n        function normalize(text) {\n            return text.normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '').toUpperCase();\n        }\n\n        function initGrid() {\n            grid = [];\n            for (let i = 0; i < gridSize; i++) {\n                grid.push(new Array(gridSize).fill(null));\n            }\n        }\n\n        function canPlace(word, row, col, dir) {\n            const norm = normalize(word);\n            const len = word.length;\n            \n            if (dir === 'horizontal') {\n                if (col + len > gridSize) return false;\n            } else {\n                if (row + len > gridSize) return false;\n            }\n            \n            let hasIntersect = placedWords.length === 0;\n            \n            for (let i = 0; i < len; i++) {\n                const r = dir === 'horizontal' ? row : row + i;\n                const c = dir === 'horizontal' ? col + i : col;\n                \n                if (grid[r][c] !== null) {\n                    if (grid[r][c] !== norm[i]) return false;\n                    hasIntersect = true;\n                }\n                \n                if (dir === 'horizontal') {\n                    if (i === 0 && col > 0 && grid[r][col-1] !== null) return false;\n                    if (i === len-1 && col + len < gridSize && grid[r][col+len] !== null) return false;\n                } else {\n                    if (i === 0 && row > 0 && grid[row-1][c] !== null) return false;\n                    if (i === len-1 && row + len < gridSize && grid[row+len] && grid[row+len][c] !== null) return false;\n                }\n            }\n            \n            return hasIntersect;\n        }\n\n        function place(wordObj, row, col, dir) {\n            const norm = normalize(wordObj.word);\n            \n            for (let i = 0; i < wordObj.word.length; i++) {\n                const r = dir === 'horizontal' ? row : row + i;\n                const c = dir === 'horizontal' ? col + i : col;\n                grid[r][c] = norm[i];\n            }\n            \n            placedWords.push({ ...wordObj, row, col, direction: dir, number: placedWords.length + 1 });\n        }\n\n        function tryPlace(wordObj) {\n            const word = wordObj.word;\n            \n            \/\/ Palavras com mais de 8 letras: for\u00e7ar vertical primeiro\n            let dirs;\n            if (word.length > 8) {\n                dirs = ['vertical', 'horizontal'];\n            } else {\n                dirs = Math.random() > 0.5 ? ['horizontal', 'vertical'] : ['vertical', 'horizontal'];\n            }\n            \n            if (placedWords.length === 0) {\n                \/\/ Primeira palavra grande: sempre vertical\n                const dir = word.length > 8 ? 'vertical' : dirs[0];\n                const row = Math.floor(Math.random() * 3) + 1;\n                const col = Math.floor(Math.random() * 3) + 1;\n                if (canPlace(word, row, col, dir)) {\n                    place(wordObj, row, col, dir);\n                    return true;\n                }\n            }\n            \n            for (const dir of dirs) {\n                \/\/ Palavras grandes: s\u00f3 tenta vertical\n                if (word.length > 8 && dir === 'horizontal') continue;\n                \n                for (const placed of [...placedWords].sort(() => Math.random() - 0.5)) {\n                    const normWord = normalize(word);\n                    const normPlaced = normalize(placed.word);\n                    \n                    for (let i = 0; i < normWord.length; i++) {\n                        for (let j = 0; j < normPlaced.length; j++) {\n                            if (normWord[i] === normPlaced[j]) {\n                                let row, col;\n                                \n                                if (dir === 'horizontal' && placed.direction === 'vertical') {\n                                    row = placed.row + j;\n                                    col = placed.col - i;\n                                } else if (dir === 'vertical' && placed.direction === 'horizontal') {\n                                    row = placed.row - i;\n                                    col = placed.col + j;\n                                } else {\n                                    continue;\n                                }\n                                \n                                if (row >= 0 && col >= 0 && canPlace(word, row, col, dir)) {\n                                    place(wordObj, row, col, dir);\n                                    return true;\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            \n            return false;\n        }\n\n        function generate() {\n            let bestPlacedWords = [];\n            let bestGrid = null;\n            \n            \/\/ Tenta v\u00e1rias vezes e pega o melhor resultado\n            for (let attempt = 0; attempt < 10; attempt++) {\n                initGrid();\n                placedWords = [];\n                completedWords = new Set();\n                \n                const shuffledR = [...ROBOTICA].sort(() => Math.random() - 0.5);\n                const shuffledM = [...MATEMATICA].sort(() => Math.random() - 0.5);\n                \n                const target = 8 + Math.floor(Math.random() * 4);\n                const mathCount = Math.ceil(target * 0.3);\n                \n                const selectedMath = [];\n                const usedMath = new Set();\n                for (const w of shuffledM) {\n                    if (!usedMath.has(w.word) && selectedMath.length < mathCount + 3) {\n                        selectedMath.push(w);\n                        usedMath.add(w.word);\n                    }\n                }\n                \n                WORD_BANK = [...shuffledR.slice(0, target - mathCount + 5), ...selectedMath].sort(() => Math.random() - 0.5);\n                \n                let tries = 0, idx = 0;\n                \n                while (placedWords.length < target && idx < WORD_BANK.length && tries < 500) {\n                    const w = WORD_BANK[idx];\n                    if (w.word.length <= gridSize - 2) {\n                        if (tryPlace(w)) idx++;\n                        else {\n                            tries++;\n                            if (tries % 50 === 0) idx++;\n                        }\n                    } else {\n                        idx++;\n                    }\n                }\n                \n                \/\/ Guarda se for o melhor resultado\n                if (placedWords.length > bestPlacedWords.length) {\n                    bestPlacedWords = [...placedWords];\n                    bestGrid = grid.map(row => [...row]);\n                }\n                \n                \/\/ Se conseguiu 8+ palavras, est\u00e1 bom\n                if (placedWords.length >= 8) break;\n            }\n            \n            \/\/ Usa o melhor resultado\n            placedWords = bestPlacedWords;\n            grid = bestGrid;\n            \n            placedWords.sort((a, b) => a.row !== b.row ? a.row - b.row : a.col - b.col);\n            \n            const numMap = new Map();\n            let num = 1;\n            placedWords.forEach(w => {\n                const key = w.row + ',' + w.col;\n                if (!numMap.has(key)) numMap.set(key, num++);\n                w.number = numMap.get(key);\n            });\n        }\n\n        function renderGrid() {\n            const container = document.getElementById('srcw-grid');\n            \n            let minR = gridSize, maxR = 0, minC = gridSize, maxC = 0;\n            \n            for (let r = 0; r < gridSize; r++) {\n                for (let c = 0; c < gridSize; c++) {\n                    if (grid[r][c] !== null) {\n                        minR = Math.min(minR, r);\n                        maxR = Math.max(maxR, r);\n                        minC = Math.min(minC, c);\n                        maxC = Math.max(maxC, c);\n                    }\n                }\n            }\n            \n            minR = Math.max(0, minR - 1);\n            maxR = Math.min(gridSize - 1, maxR + 1);\n            minC = Math.max(0, minC - 1);\n            maxC = Math.min(gridSize - 1, maxC + 1);\n            \n            const cols = maxC - minC + 1;\n            \n            container.style.gridTemplateColumns = 'repeat(' + cols + ', 1fr)';\n            container.innerHTML = '';\n            \n            const numLookup = new Map();\n            placedWords.forEach(w => {\n                const key = w.row + ',' + w.col;\n                if (!numLookup.has(key)) {\n                    numLookup.set(key, { number: w.number, directions: [] });\n                }\n                numLookup.get(key).directions.push(w.direction);\n            });\n            \n            for (let r = minR; r <= maxR; r++) {\n                for (let c = minC; c <= maxC; c++) {\n                    const cell = document.createElement('div');\n                    cell.className = 'srcw-cell';\n                    cell.dataset.row = r;\n                    cell.dataset.col = c;\n                    \n                    if (grid[r][c] !== null) {\n                        cell.classList.add('srcw-cell-active');\n                        \n                        const key = r + ',' + c;\n                        if (numLookup.has(key)) {\n                            const info = numLookup.get(key);\n                            const numSpan = document.createElement('span');\n                            numSpan.className = 'srcw-cell-number';\n                            numSpan.textContent = info.number;\n                            cell.appendChild(numSpan);\n                            \n                            const dirSpan = document.createElement('span');\n                            dirSpan.className = 'srcw-cell-direction';\n                            const arrows = info.directions.map(function(d) {\n                                return d === 'horizontal' ? '\u2192' : '\u2193';\n                            }).join('');\n                            dirSpan.textContent = arrows;\n                            cell.appendChild(dirSpan);\n                        }\n                        \n                        const input = document.createElement('input');\n                        input.type = 'text';\n                        input.maxLength = 1;\n                        input.dataset.answer = grid[r][c];\n                        \n                        input.addEventListener('focus', function() { \n                            \/\/ S\u00f3 seleciona se n\u00e3o for a c\u00e9lula atual (evita resetar dire\u00e7\u00e3o)\n                            if (selectedCell !== cell) {\n                                selectCell(cell); \n                            }\n                        });\n                        input.addEventListener('keydown', function(e) {\n                            \/\/ Se est\u00e1 travada (readOnly), s\u00f3 permite navega\u00e7\u00e3o\n                            if (e.target.readOnly) {\n                                if (e.key === 'ArrowRight') {\n                                    currentDirection = 'horizontal';\n                                    moveNext();\n                                    e.preventDefault();\n                                } else if (e.key === 'ArrowLeft') {\n                                    currentDirection = 'horizontal';\n                                    movePrev();\n                                    e.preventDefault();\n                                } else if (e.key === 'ArrowDown') {\n                                    currentDirection = 'vertical';\n                                    moveNext();\n                                    e.preventDefault();\n                                } else if (e.key === 'ArrowUp') {\n                                    currentDirection = 'vertical';\n                                    movePrev();\n                                    e.preventDefault();\n                                } else if (e.key === 'Tab') {\n                                    e.preventDefault();\n                                    moveNextWord();\n                                } else {\n                                    e.preventDefault();\n                                }\n                                return;\n                            }\n                            \n                            \/\/ Letras A-Z\n                            if (e.key.length === 1 && e.key.match(\/[a-zA-Z]\/)) {\n                                e.preventDefault();\n                                e.target.value = e.key.toUpperCase();\n                                checkWords();\n                                moveNext();\n                            }\n                            \/\/ Backspace\n                            else if (e.key === 'Backspace') {\n                                if (e.target.value) {\n                                    e.target.value = '';\n                                } else {\n                                    movePrev();\n                                }\n                                e.preventDefault();\n                            }\n                            \/\/ Setas\n                            else if (e.key === 'ArrowRight') {\n                                currentDirection = 'horizontal';\n                                moveNext();\n                                e.preventDefault();\n                            } else if (e.key === 'ArrowLeft') {\n                                currentDirection = 'horizontal';\n                                movePrev();\n                                e.preventDefault();\n                            } else if (e.key === 'ArrowDown') {\n                                currentDirection = 'vertical';\n                                moveNext();\n                                e.preventDefault();\n                            } else if (e.key === 'ArrowUp') {\n                                currentDirection = 'vertical';\n                                movePrev();\n                                e.preventDefault();\n                            } else if (e.key === 'Tab') {\n                                e.preventDefault();\n                                moveNextWord();\n                            }\n                        });\n                        \n                        cell.appendChild(input);\n                        cell.addEventListener('click', function() { selectCell(cell); });\n                    } else {\n                        cell.classList.add('srcw-cell-empty');\n                    }\n                    \n                    container.appendChild(cell);\n                }\n            }\n            \n            document.getElementById('srcw-total').textContent = placedWords.length;\n            document.getElementById('srcw-score').textContent = '0';\n        }\n\n        function renderClues() {\n            const allClues = [...placedWords].sort(function(a, b) { return a.number - b.number; });\n            \n            const listC = document.getElementById('srcw-clues-list');\n            listC.innerHTML = '';\n            \n            allClues.forEach(function(w) {\n                const div = document.createElement('div');\n                div.className = 'srcw-clue-item';\n                div.dataset.word = w.word;\n                div.dataset.direction = w.direction;\n                const arrow = w.direction === 'horizontal' ? '\u2192' : '\u2193';\n                div.innerHTML = '<span class=\"srcw-clue-number\">' + w.number + arrow + '<\/span> ' + w.clue;\n                div.onclick = function() { selectFromClue(w); };\n                listC.appendChild(div);\n            });\n        }\n\n        function selectCell(cell, forceDirection) {\n            document.querySelectorAll('.srcw-cell.srcw-selected, .srcw-cell.srcw-highlighted').forEach(function(c) {\n                c.classList.remove('srcw-selected', 'srcw-highlighted');\n            });\n            document.querySelectorAll('.srcw-clue-item.srcw-active').forEach(function(c) {\n                c.classList.remove('srcw-active');\n            });\n            \n            const row = parseInt(cell.dataset.row);\n            const col = parseInt(cell.dataset.col);\n            \n            \/\/ Se clicou na mesma c\u00e9lula, alterna dire\u00e7\u00e3o\n            if (selectedCell === cell && !forceDirection) {\n                currentDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n            }\n            \n            \/\/ Se \u00e9 uma c\u00e9lula nova, detecta a melhor dire\u00e7\u00e3o\n            if (selectedCell !== cell && !forceDirection) {\n                \/\/ Procura palavras que passam por esta c\u00e9lula\n                const wordsHere = placedWords.filter(function(w) {\n                    if (w.direction === 'horizontal') {\n                        return w.row === row && col >= w.col && col < w.col + w.word.length;\n                    } else {\n                        return w.col === col && row >= w.row && row < w.row + w.word.length;\n                    }\n                });\n                \n                \/\/ Se s\u00f3 tem uma palavra, usa a dire\u00e7\u00e3o dela\n                if (wordsHere.length === 1) {\n                    currentDirection = wordsHere[0].direction;\n                } else if (wordsHere.length > 1) {\n                    \/\/ Se tem duas palavras (cruzamento), prefere horizontal\n                    const hasHorizontal = wordsHere.find(function(w) { return w.direction === 'horizontal'; });\n                    if (hasHorizontal) {\n                        currentDirection = 'horizontal';\n                    }\n                }\n            }\n            \n            selectedCell = cell;\n            cell.classList.add('srcw-selected');\n            \n            \/\/ Encontra a palavra na dire\u00e7\u00e3o atual\n            const word = placedWords.find(function(w) {\n                if (w.direction !== currentDirection) return false;\n                if (w.direction === 'horizontal') {\n                    return w.row === row && col >= w.col && col < w.col + w.word.length;\n                } else {\n                    return w.col === col && row >= w.row && row < w.row + w.word.length;\n                }\n            });\n            \n            if (word) {\n                highlightWord(word);\n                const clue = document.querySelector('.srcw-clue-item[data-word=\"' + word.word + '\"][data-direction=\"' + word.direction + '\"]');\n                if (clue) {\n                    clue.classList.add('srcw-active');\n                    \/\/ Rola a lista para mostrar a dica ativa\n                    clue.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n                }\n                \n                \/\/ Atualiza bal\u00e3o flutuante no mobile\n                const floatingClue = document.getElementById('srcw-floating-clue');\n                const floatingNumber = document.getElementById('srcw-floating-number');\n                const floatingText = document.getElementById('srcw-floating-text');\n                const arrow = word.direction === 'horizontal' ? '\u2192' : '\u2193';\n                floatingNumber.textContent = word.number + arrow;\n                floatingText.textContent = word.clue;\n                floatingClue.classList.add('srcw-show');\n            } else {\n                \/\/ Esconde bal\u00e3o se n\u00e3o tem palavra\n                document.getElementById('srcw-floating-clue').classList.remove('srcw-show');\n            }\n            \n            const input = cell.querySelector('input');\n            if (input) input.focus();\n        }\n\n        function highlightWord(word) {\n            for (let i = 0; i < word.word.length; i++) {\n                const r = word.direction === 'horizontal' ? word.row : word.row + i;\n                const c = word.direction === 'horizontal' ? word.col + i : word.col;\n                \n                const cell = document.querySelector('.srcw-cell[data-row=\"' + r + '\"][data-col=\"' + c + '\"]');\n                if (cell && !cell.classList.contains('srcw-selected')) {\n                    cell.classList.add('srcw-highlighted');\n                }\n            }\n        }\n\n        function selectFromClue(word) {\n            currentDirection = word.direction;\n            const cell = document.querySelector('.srcw-cell[data-row=\"' + word.row + '\"][data-col=\"' + word.col + '\"]');\n            if (cell) selectCell(cell, true);\n        }\n\n        function moveNext() {\n            if (!selectedCell) return;\n            const row = parseInt(selectedCell.dataset.row);\n            const col = parseInt(selectedCell.dataset.col);\n            const nextR = currentDirection === 'vertical' ? row + 1 : row;\n            const nextC = currentDirection === 'horizontal' ? col + 1 : col;\n            const next = document.querySelector('.srcw-cell-active[data-row=\"' + nextR + '\"][data-col=\"' + nextC + '\"]');\n            \n            if (next) {\n                \/\/ Remove sele\u00e7\u00e3o da c\u00e9lula atual\n                selectedCell.classList.remove('srcw-selected');\n                \n                \/\/ Atualiza para pr\u00f3xima c\u00e9lula\n                selectedCell = next;\n                next.classList.add('srcw-selected');\n                \n                \/\/ Foca no input da pr\u00f3xima c\u00e9lula\n                const input = next.querySelector('input');\n                if (input) input.focus();\n            }\n        }\n\n        function movePrev() {\n            if (!selectedCell) return;\n            const row = parseInt(selectedCell.dataset.row);\n            const col = parseInt(selectedCell.dataset.col);\n            const prevR = currentDirection === 'vertical' ? row - 1 : row;\n            const prevC = currentDirection === 'horizontal' ? col - 1 : col;\n            const prev = document.querySelector('.srcw-cell-active[data-row=\"' + prevR + '\"][data-col=\"' + prevC + '\"]');\n            \n            if (prev) {\n                selectedCell.classList.remove('srcw-selected');\n                selectedCell = prev;\n                prev.classList.add('srcw-selected');\n                const input = prev.querySelector('input');\n                if (input) input.focus();\n            }\n        }\n\n        function moveNextWord() {\n            const incomplete = placedWords.filter(function(w) { return !completedWords.has(w.word); });\n            if (incomplete.length > 0) {\n                const next = incomplete[0];\n                currentDirection = next.direction;\n                const cell = document.querySelector('.srcw-cell[data-row=\"' + next.row + '\"][data-col=\"' + next.col + '\"]');\n                if (cell) selectCell(cell);\n            }\n        }\n\n        function checkWords() {\n            placedWords.forEach(function(word) {\n                if (completedWords.has(word.word)) return;\n                \n                let complete = true;\n                \n                for (let i = 0; i < word.word.length; i++) {\n                    const r = word.direction === 'horizontal' ? word.row : word.row + i;\n                    const c = word.direction === 'horizontal' ? word.col + i : word.col;\n                    \n                    const cell = document.querySelector('.srcw-cell[data-row=\"' + r + '\"][data-col=\"' + c + '\"]');\n                    const input = cell ? cell.querySelector('input') : null;\n                    \n                    const expected = normalize(word.word[i]);\n                    const actual = normalize(input ? input.value : '');\n                    \n                    if (!input || actual !== expected) {\n                        complete = false;\n                        break;\n                    }\n                }\n                \n                if (complete) {\n                    completedWords.add(word.word);\n                    \n                    for (let i = 0; i < word.word.length; i++) {\n                        const r = word.direction === 'horizontal' ? word.row : word.row + i;\n                        const c = word.direction === 'horizontal' ? word.col + i : word.col;\n                        const cell = document.querySelector('.srcw-cell[data-row=\"' + r + '\"][data-col=\"' + c + '\"]');\n                        if (cell) {\n                            cell.classList.add('srcw-correct');\n                            const input = cell.querySelector('input');\n                            if (input) input.readOnly = true;\n                        }\n                    }\n                    \n                    const clue = document.querySelector('.srcw-clue-item[data-word=\"' + word.word + '\"][data-direction=\"' + word.direction + '\"]');\n                    if (clue) clue.classList.add('srcw-completed');\n                }\n            });\n            \n            document.getElementById('srcw-score').textContent = completedWords.size;\n            \n            if (completedWords.size === placedWords.length) {\n                setTimeout(showVictory, 500);\n            }\n        }\n\n        function showVictory() {\n            document.getElementById('srcw-victory').classList.add('srcw-show');\n        }\n\n        window.srcwCloseVictory = function() {\n            document.getElementById('srcw-victory').classList.remove('srcw-show');\n        };\n\n        \/\/ Vari\u00e1veis para o desafio matem\u00e1tico\n        let currentMathAnswer = 0;\n\n        function generateMathQuestion() {\n            const operations = ['+', '-', '\u00d7', '\u00f7'];\n            const op = operations[Math.floor(Math.random() * operations.length)];\n            let a, b, answer;\n            \n            switch(op) {\n                case '+':\n                    a = Math.floor(Math.random() * 50) + 1;\n                    b = Math.floor(Math.random() * 50) + 1;\n                    answer = a + b;\n                    break;\n                case '-':\n                    a = Math.floor(Math.random() * 50) + 10;\n                    b = Math.floor(Math.random() * a) + 1;\n                    answer = a - b;\n                    break;\n                case '\u00d7':\n                    a = Math.floor(Math.random() * 10) + 1;\n                    b = Math.floor(Math.random() * 10) + 1;\n                    answer = a * b;\n                    break;\n                case '\u00f7':\n                    b = Math.floor(Math.random() * 9) + 2;\n                    answer = Math.floor(Math.random() * 10) + 1;\n                    a = b * answer;\n                    break;\n            }\n            \n            return { question: a + ' ' + op + ' ' + b + ' = ?', answer: answer };\n        }\n\n        window.srcwOpenMathPopup = function() {\n            if (!selectedCell) {\n                alert('Selecione uma c\u00e9lula primeiro!');\n                return;\n            }\n            \n            const input = selectedCell.querySelector('input');\n            if (input && input.value) {\n                alert('Esta c\u00e9lula j\u00e1 est\u00e1 preenchida!');\n                return;\n            }\n            \n            const math = generateMathQuestion();\n            currentMathAnswer = math.answer;\n            \n            document.getElementById('srcw-math-question').textContent = math.question;\n            document.getElementById('srcw-math-input').value = '';\n            document.getElementById('srcw-math-feedback').textContent = '';\n            document.getElementById('srcw-math-input').classList.remove('srcw-error');\n            document.getElementById('srcw-math-popup').classList.add('srcw-show');\n            document.body.classList.add('srcw-popup-open');\n            \n            setTimeout(function() {\n                document.getElementById('srcw-math-input').focus();\n            }, 100);\n        };\n\n        window.srcwCloseMathPopup = function() {\n            document.getElementById('srcw-math-popup').classList.remove('srcw-show');\n            document.body.classList.remove('srcw-popup-open');\n        };\n\n        window.srcwCheckMathAnswer = function() {\n            const userAnswer = parseInt(document.getElementById('srcw-math-input').value);\n            \n            if (isNaN(userAnswer)) {\n                document.getElementById('srcw-math-feedback').textContent = 'Digite um n\u00famero!';\n                document.getElementById('srcw-math-input').classList.add('srcw-error');\n                return;\n            }\n            \n            if (userAnswer === currentMathAnswer) {\n                \/\/ Acertou! Revela a letra\n                srcwCloseMathPopup();\n                revealCurrentLetter();\n            } else {\n                \/\/ Errou\n                document.getElementById('srcw-math-feedback').textContent = 'Ops! Tente novamente.';\n                document.getElementById('srcw-math-input').classList.add('srcw-error');\n                document.getElementById('srcw-math-input').value = '';\n                \n                setTimeout(function() {\n                    document.getElementById('srcw-math-input').classList.remove('srcw-error');\n                }, 500);\n            }\n        };\n\n        function revealCurrentLetter() {\n            if (!selectedCell) return;\n            \n            const input = selectedCell.querySelector('input');\n            if (input && input.dataset.answer) {\n                input.value = input.dataset.answer;\n                input.readOnly = true;\n                selectedCell.classList.add('srcw-revealed');\n                checkWords();\n                moveNext();\n            }\n        }\n\n        \/\/ Permitir Enter no input do popup\n        document.addEventListener('keydown', function(e) {\n            if (e.key === 'Enter' && document.getElementById('srcw-math-popup').classList.contains('srcw-show')) {\n                srcwCheckMathAnswer();\n            }\n        });\n\n        window.srcwNewGame = function() {\n            srcwCloseVictory();\n            selectedCell = null;\n            currentDirection = 'horizontal';\n            generate();\n            renderGrid();\n            renderClues();\n        };\n\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', function() {\n                srcwNewGame();\n            });\n        } else {\n            srcwNewGame();\n        }\n    })();\n    <\/script>\n    \n\n\n\n<p>\u2713 Atividade alinhada \u00e0 Base Nacional Comum Curricular (BNCC), BNCC da Computa\u00e7\u00e3o e aos Objetivos de Desenvolvimento Sustent\u00e1vel (ODS) da ONU. <a style=\"background-color: #e6c15a; color: #2f2f2f; padding: 4px 10px; border-radius: 3px; text-decoration: none; font-weight: 500; display: inline-block;\" href=\"https:\/\/siminova.com.br\/blog\/amigos\/alinhamento\/palavras-cruzadas\/\"> \u203a Saiba mais <\/a><\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Vis\u00e3o Geral do Alinhamento<\/summary>\n<p class=\"has-small-font-size\">EF12LP01, EF12LP02, EF12LP03, EF02MA05, EF05CI01, EF67LP32, EF06MA03, EF08CI02, EM13LP02, EM13CNT301, EI03CO01, EI03CO02, EI03CO06, EI03CO09, EF01CO01, EF01CO02, EF01CO03, EF02CO01, EF03CO01, EF03CO03, EF03CO04, EF03CO07, EF04CO01, EF05CO03, EF06CO01, EF06CO05, EF06CO06, EF06CO09, EF07CO04, EM13CO05, EM13CO21, ODS 4, ODS 7, ODS 8 e ODS 9.<\/p>\n<\/details>\n","protected":false},"excerpt":{"rendered":"<p>Leia a dica e complete as palavras!<br \/>\n<\/br><\/br><br \/>\n<b>N\u00cdVEL INTERMEDI\u00c1RIO<\/b><\/p>\n","protected":false},"author":8,"featured_media":4900,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[77],"tags":[79],"class_list":["post-4713","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jogos","tag-notts"],"_links":{"self":[{"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/posts\/4713","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/comments?post=4713"}],"version-history":[{"count":6,"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/posts\/4713\/revisions"}],"predecessor-version":[{"id":5169,"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/posts\/4713\/revisions\/5169"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/media\/4900"}],"wp:attachment":[{"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/media?parent=4713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/categories?post=4713"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/siminova.com.br\/blog\/wp-json\/wp\/v2\/tags?post=4713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}