{"id":1043,"date":"2025-05-22T13:00:20","date_gmt":"2025-05-22T13:00:20","guid":{"rendered":"https:\/\/crehistor.com\/?page_id=1043"},"modified":"2025-07-09T15:36:35","modified_gmt":"2025-07-09T15:36:35","slug":"enfants","status":"publish","type":"page","link":"https:\/\/crehistor.com\/de\/enfants\/","title":{"rendered":"Kinder"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"1043\" class=\"elementor elementor-1043\">\n\t\t\t\t<div class=\"elementor-element elementor-element-69d9241 e-flex e-con-boxed e-con e-parent\" data-id=\"69d9241\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f6dc342 e-con-full e-flex e-con e-child\" data-id=\"f6dc342\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7a19f57 e-con-full e-flex e-con e-child\" data-id=\"7a19f57\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a3be974 e-con-full e-flex e-con e-child\" data-id=\"a3be974\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2d265ac elementor-widget elementor-widget-shortcode\" data-id=\"2d265ac\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cinzel:wght@400;600;700&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&display=swap\" rel=\"stylesheet\">\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<style>\n:root {\n    --forge-obsidian: #0d0d0f;\n    --forge-anthracite: #1a1a1e;\n    --forge-graphite: #252529;\n    --forge-steel: #3a3a42;\n    --forge-silver: #b0b0b8;\n    --forge-gold: #c9a54e;\n    --forge-gold-light: #e8c86d;\n    --forge-gold-pale: #f5e6c3;\n    --forge-ember: #d4873f;\n    --forge-white: #ffffff;\n    --font-display: 'Cinzel', Georgia, serif;\n    --font-body: 'Cormorant Garamond', Georgia, serif;\n    --shadow-subtle: 0 2px 8px rgba(0,0,0,0.3);\n    --shadow-elevated: 0 8px 32px rgba(0,0,0,0.4), 0 2px 8px rgba(201,165,78,0.08);\n    --shadow-glow: 0 0 20px rgba(201,165,78,0.15), 0 0 40px rgba(201,165,78,0.08);\n    --text-shadow: 0 1px 2px rgba(0,0,0,0.3);\n    --transition-smooth: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n#enf-root {\n    max-width: 540px;\n    margin: 48px auto;\n    background: var(--forge-anthracite);\n    border-radius: 3px;\n    padding: 40px 36px;\n    box-shadow: var(--shadow-elevated);\n    font-family: var(--font-body);\n    color: var(--forge-white);\n    position: relative;\n}\n\n#enf-root::before {\n    content: '';\n    position: absolute;\n    top: 0; left: 0; right: 0;\n    height: 2px;\n    background: linear-gradient(90deg, transparent 0%, var(--forge-gold) 20%, var(--forge-gold-light) 50%, var(--forge-gold) 80%, transparent 100%);\n}\n\n.enf-box {\n    text-align: center;\n    animation: enfFadeIn 0.5s var(--transition-smooth);\n}\n\n@keyframes enfFadeIn {\n    from { opacity: 0; transform: translateY(12px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n\n.enf-title {\n    font-family: var(--font-display);\n    font-size: 1.5em;\n    font-weight: 700;\n    color: var(--forge-gold);\n    margin-bottom: 8px;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    text-shadow: var(--text-shadow);\n}\n\n.enf-subtitle {\n    font-size: 1.1em;\n    font-weight: 500;\n    color: var(--forge-silver);\n    margin-bottom: 24px;\n    font-style: italic;\n    text-shadow: var(--text-shadow);\n}\n\n\/* Language bar *\/\n.enf-langbar {\n    display: flex;\n    justify-content: center;\n    gap: 8px;\n    flex-wrap: wrap;\n    margin-bottom: 24px;\n}\n\n.enf-lang-btn {\n    background: transparent;\n    color: var(--forge-silver);\n    border: 1px solid var(--forge-steel);\n    padding: 6px 14px;\n    font-family: var(--font-body);\n    font-size: 0.95em;\n    font-weight: 500;\n    border-radius: 2px;\n    cursor: pointer;\n    transition: all 0.25s var(--transition-smooth);\n}\n\n.enf-lang-btn:hover {\n    border-color: var(--forge-gold);\n    color: var(--forge-gold);\n}\n\n.enf-lang-btn.active {\n    background: var(--forge-gold);\n    color: var(--forge-obsidian);\n    border-color: var(--forge-gold);\n    font-weight: 600;\n}\n\n\/* Slider *\/\n.enf-slider {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 16px;\n    margin-bottom: 24px;\n}\n\n.enf-slider-arrow {\n    background: transparent;\n    border: 1px solid var(--forge-steel);\n    color: var(--forge-gold);\n    width: 40px;\n    height: 40px;\n    border-radius: 2px;\n    font-size: 1.2em;\n    cursor: pointer;\n    transition: all 0.25s var(--transition-smooth);\n}\n\n.enf-slider-arrow:hover {\n    background: var(--forge-gold);\n    color: var(--forge-obsidian);\n    border-color: var(--forge-gold);\n}\n\n.enf-slider-img {\n    width: 200px;\n    height: 130px;\n    border-radius: 2px;\n    overflow: hidden;\n    border: 1px solid var(--forge-steel);\n}\n\n.enf-slider-img img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    filter: sepia(15%) saturate(0.85);\n    transition: opacity 0.3s;\n}\n\n\/* Question step *\/\n.enf-step-info {\n    font-family: var(--font-display);\n    font-size: 0.9em;\n    color: var(--forge-gold);\n    letter-spacing: 0.1em;\n    margin-bottom: 16px;\n    text-shadow: var(--text-shadow);\n}\n\n.enf-question {\n    font-family: var(--font-display);\n    font-size: 1.15em;\n    font-weight: 600;\n    color: var(--forge-white);\n    margin-bottom: 20px;\n    text-shadow: var(--text-shadow);\n}\n\n.enf-input {\n    width: 100%;\n    max-width: 350px;\n    padding: 14px 18px;\n    font-family: var(--font-body);\n    font-size: 1.1em;\n    font-weight: 500;\n    border: 1px solid var(--forge-steel);\n    border-radius: 2px;\n    background: var(--forge-graphite);\n    color: var(--forge-white);\n    text-align: center;\n    margin-bottom: 16px;\n    box-sizing: border-box;\n    transition: all 0.25s var(--transition-smooth);\n}\n\n.enf-input::placeholder {\n    color: var(--forge-silver);\n    font-style: italic;\n}\n\n.enf-input:focus {\n    outline: none;\n    border-color: var(--forge-gold);\n    box-shadow: 0 0 0 3px rgba(201,165,78,0.15);\n}\n\n\/* Suggestions *\/\n.enf-suggestions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    justify-content: center;\n    margin-bottom: 24px;\n}\n\n.enf-sug {\n    padding: 10px 18px;\n    border: 1px solid var(--forge-steel);\n    background: transparent;\n    border-radius: 2px;\n    color: var(--forge-white);\n    font-family: var(--font-body);\n    font-size: 1.05em;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.25s var(--transition-smooth);\n    text-shadow: var(--text-shadow);\n}\n\n.enf-sug:hover {\n    background: var(--forge-gold);\n    border-color: var(--forge-gold);\n    color: var(--forge-obsidian);\n    transform: translateY(-1px);\n}\n\n\/* Buttons *\/\n.enf-btn {\n    background: linear-gradient(135deg, var(--forge-gold) 0%, var(--forge-gold-light) 50%, var(--forge-gold) 100%);\n    color: var(--forge-obsidian);\n    border: none;\n    padding: 14px 32px;\n    border-radius: 2px;\n    font-family: var(--font-display);\n    font-size: 0.95em;\n    font-weight: 700;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n    cursor: pointer;\n    transition: all 0.3s var(--transition-smooth);\n    box-shadow: var(--shadow-subtle);\n    text-decoration: none;\n    display: inline-block;\n    margin: 6px;\n}\n\n.enf-btn:hover {\n    transform: translateY(-2px);\n    box-shadow: var(--shadow-glow);\n    filter: brightness(1.1);\n}\n\n.enf-btn-secondary {\n    background: transparent;\n    color: var(--forge-gold);\n    border: 1px solid var(--forge-gold);\n    padding: 12px 24px;\n    font-weight: 600;\n}\n\n.enf-btn-secondary:hover {\n    background: var(--forge-gold);\n    color: var(--forge-obsidian);\n}\n\n.enf-btn-link {\n    background: none;\n    border: none;\n    color: var(--forge-gold);\n    font-family: var(--font-body);\n    font-size: 1em;\n    font-weight: 600;\n    cursor: pointer;\n    padding: 8px 16px;\n    transition: all 0.2s;\n    text-shadow: var(--text-shadow);\n}\n\n.enf-btn-link:hover {\n    color: var(--forge-gold-light);\n}\n\n\/* Loading *\/\n.enf-loading {\n    padding: 40px 0;\n}\n\n.enf-loading-text {\n    font-style: italic;\n    font-size: 1.2em;\n    font-weight: 600;\n    color: var(--forge-gold-pale);\n    margin-bottom: 24px;\n    text-shadow: var(--text-shadow);\n}\n\n.enf-spinner {\n    width: 40px;\n    height: 40px;\n    margin: 0 auto;\n    border: 2px solid var(--forge-steel);\n    border-top-color: var(--forge-gold);\n    border-radius: 50%;\n    animation: enfSpin 1s linear infinite;\n}\n\n@keyframes enfSpin {\n    to { transform: rotate(360deg); }\n}\n\n\/* Result *\/\n.enf-result-title {\n    font-family: var(--font-display);\n    font-size: 1.4em;\n    font-weight: 700;\n    color: var(--forge-gold);\n    margin-bottom: 20px;\n    text-shadow: var(--text-shadow);\n}\n\n.enf-story {\n    background: var(--forge-graphite);\n    border-left: 3px solid var(--forge-gold);\n    padding: 24px;\n    border-radius: 0 2px 2px 0;\n    text-align: left;\n    font-size: 1.1em;\n    font-weight: 500;\n    line-height: 1.8;\n    color: var(--forge-white);\n    white-space: pre-wrap;\n    margin-bottom: 24px;\n    text-shadow: var(--text-shadow);\n}\n\n.enf-actions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 12px;\n    justify-content: center;\n    margin-top: 20px;\n}\n\n\/* Login\/Credits *\/\n.enf-btn-login,\n.enf-btn-credits {\n    background: linear-gradient(135deg, var(--forge-gold) 0%, var(--forge-gold-light) 50%, var(--forge-gold) 100%) !important;\n    color: var(--forge-obsidian) !important;\n    border: none !important;\n    padding: 18px 48px !important;\n    border-radius: 3px !important;\n    font-family: var(--font-display) !important;\n    font-size: 1.05em !important;\n    font-weight: 700 !important;\n    letter-spacing: 0.12em !important;\n    text-transform: uppercase !important;\n    cursor: pointer !important;\n    text-decoration: none !important;\n    display: inline-block !important;\n    box-shadow: 0 4px 20px rgba(201,165,78,0.4) !important;\n    margin-top: 10px !important;\n    transition: all 0.3s var(--transition-smooth) !important;\n}\n\n.enf-btn-login:hover,\n.enf-btn-credits:hover {\n    transform: translateY(-3px) !important;\n    box-shadow: 0 6px 30px rgba(201,165,78,0.6) !important;\n    filter: brightness(1.1) !important;\n}\n\n.enf-error {\n    color: var(--forge-ember);\n    font-size: 0.95em;\n    margin-top: 8px;\n    text-shadow: var(--text-shadow);\n}\n\n\/* Responsive *\/\n@media (max-width: 600px) {\n    #enf-root {\n        margin: 24px 16px;\n        padding: 28px 20px;\n    }\n    .enf-slider-img {\n        width: 150px;\n        height: 100px;\n    }\n    .enf-actions {\n        flex-direction: column;\n    }\n    .enf-btn {\n        width: 100%;\n    }\n}\n<\/style>\n\n<div id=\"enf-root\">\n    <div class=\"enf-box\" id=\"enf-content\"><\/div>\n<\/div>\n\n<script>\n(function() {\n    const config = {\n        types: {\"enfant\":{\"label\":{\"fr\":\"Enfant\",\"en\":\"Child\",\"es\":\"Infantil\",\"it\":\"Bambino\",\"de\":\"Kind\"},\"questions\":{\"fr\":[\"Un personnage mignon\",\"Un animal rigolo\",\"Un lieu magique\",\"Un objet enchant\u00e9\",\"Une mission amusante\",\"Un obstacle rigolo\",\"Un ami fid\u00e8le\",\"Un m\u00e9chant pas trop m\u00e9chant\",\"Une chanson ou comptine\",\"Une m\u00e9t\u00e9o magique\",\"Un souhait secret\",\"Une surprise de fin\",\"Un beau souvenir\"],\"en\":[\"A cute character\",\"A funny animal\",\"A magical place\",\"An enchanted object\",\"A fun mission\",\"A silly obstacle\",\"A loyal friend\",\"A not-so-evil villain\",\"A song or nursery rhyme\",\"A magical weather\",\"A secret wish\",\"A surprise ending\",\"A nice memory\"],\"es\":[\"Un personaje tierno\",\"Un animal gracioso\",\"Un lugar m\u00e1gico\",\"Un objeto encantado\",\"Una misi\u00f3n divertida\",\"Un obst\u00e1culo chistoso\",\"Un amigo fiel\",\"Un villano no tan malo\",\"Una canci\u00f3n o rima infantil\",\"Un clima m\u00e1gico\",\"Un deseo secreto\",\"Una sorpresa final\",\"Un buen recuerdo\"],\"it\":[\"Un personaggio carino\",\"Un animale buffo\",\"Un luogo magico\",\"Un oggetto incantato\",\"Una missione divertente\",\"Un ostacolo divertente\",\"Un amico fedele\",\"Un cattivo non troppo cattivo\",\"Una canzone o filastrocca\",\"Un tempo magico\",\"Un desiderio segreto\",\"Una sorpresa finale\",\"Un bel ricordo\"],\"de\":[\"Eine s\u00fc\u00dfe Figur\",\"Ein lustiges Tier\",\"Ein magischer Ort\",\"Ein verzauberter Gegenstand\",\"Eine lustige Mission\",\"Ein witziges Hindernis\",\"Ein treuer Freund\",\"Ein nicht so b\u00f6ser B\u00f6sewicht\",\"Ein Lied oder Reim\",\"Magisches Wetter\",\"Ein geheimer Wunsch\",\"Ein \u00fcberraschendes Ende\",\"Eine sch\u00f6ne Erinnerung\"]}}},\n        ui: {\"main_title\":{\"fr\":\"Histoires pour Enfants\",\"en\":\"Children's Stories\",\"es\":\"Cuentos Infantiles\",\"de\":\"Kindergeschichten\",\"it\":\"Storie per Bambini\"},\"subtitle\":{\"fr\":\"Cr\u00e9e une histoire magique et personnalis\u00e9e\",\"en\":\"Create a magical personalized story\",\"es\":\"Crea una historia m\u00e1gica y personalizada\",\"de\":\"Erstelle eine magische Geschichte\",\"it\":\"Crea una storia magica e personalizzata\"},\"intro\":{\"fr\":\"R\u00e9ponds aux questions ou choisis tout au hasard pour g\u00e9n\u00e9rer ton histoire.\",\"en\":\"Answer the questions or fill randomly to generate your story.\",\"es\":\"Responde o elige al azar para crear tu historia.\",\"de\":\"Beantworte die Fragen oder w\u00e4hle zuf\u00e4llig f\u00fcr deine Geschichte.\",\"it\":\"Rispondi o scegli a caso per creare la tua storia.\"},\"author_label\":{\"fr\":\"Nom de l'auteur ou autrice\",\"en\":\"Author name\",\"es\":\"Nombre del autor\\\/a\",\"de\":\"Name des Autors\",\"it\":\"Nome dell'autore\"},\"placeholder_author\":{\"fr\":\"Pr\u00e9nom ou pseudo\",\"en\":\"Name or nickname\",\"es\":\"Nombre o seud\u00f3nimo\",\"de\":\"Name oder Spitzname\",\"it\":\"Nome o soprannome\"},\"random_word\":{\"fr\":\"Mot al\u00e9atoire\",\"en\":\"Random word\",\"es\":\"Palabra aleatoria\",\"de\":\"Zufallswort\",\"it\":\"Parola casuale\"},\"all_random\":{\"fr\":\"Tout au hasard\",\"en\":\"Fill randomly\",\"es\":\"Todo al azar\",\"de\":\"Alles zuf\u00e4llig\",\"it\":\"Tutto casuale\"},\"next\":{\"fr\":\"Suivant\",\"en\":\"Next\",\"es\":\"Siguiente\",\"de\":\"Weiter\",\"it\":\"Avanti\"},\"generate\":{\"fr\":\"G\u00e9n\u00e9rer\",\"en\":\"Generate\",\"es\":\"Generar\",\"de\":\"Generieren\",\"it\":\"Genera\"},\"pdf\":{\"fr\":\"T\u00e9l\u00e9charger PDF\",\"en\":\"Download PDF\",\"es\":\"Descargar PDF\",\"de\":\"PDF herunterladen\",\"it\":\"Scarica PDF\"},\"whatsapp\":{\"fr\":\"Partager\",\"en\":\"Share\",\"es\":\"Compartir\",\"de\":\"Teilen\",\"it\":\"Condividi\"},\"new\":{\"fr\":\"Nouvelle histoire\",\"en\":\"New story\",\"es\":\"Nueva historia\",\"de\":\"Neue Geschichte\",\"it\":\"Nuova storia\"},\"generating\":{\"fr\":\"Cr\u00e9ation de ton histoire\u2026\",\"en\":\"Creating your story\u2026\",\"es\":\"Creando tu historia\u2026\",\"de\":\"Geschichte wird erstellt\u2026\",\"it\":\"Creazione della storia\u2026\"},\"question\":{\"fr\":\"Question\",\"en\":\"Question\",\"es\":\"Pregunta\",\"de\":\"Frage\",\"it\":\"Domanda\"},\"login_welcome\":{\"fr\":\"Bienvenue\",\"en\":\"Welcome\",\"es\":\"Bienvenido\",\"de\":\"Willkommen\",\"it\":\"Benvenuto\"},\"login_text\":{\"fr\":\"Connecte-toi pour cr\u00e9er tes histoires.\",\"en\":\"Log in to create your stories.\",\"es\":\"Inicia sesi\u00f3n para crear tus historias.\",\"de\":\"Melde dich an f\u00fcr deine Geschichten.\",\"it\":\"Accedi per creare le tue storie.\"},\"login_btn\":{\"fr\":\"Connexion \\\/ Inscription\",\"en\":\"Login \\\/ Sign up\",\"es\":\"Iniciar sesi\u00f3n\",\"de\":\"Anmelden\",\"it\":\"Accedi\"},\"credits_text\":{\"fr\":\"Tu n'as plus de cr\u00e9dits.\",\"en\":\"You're out of credits.\",\"es\":\"No tienes cr\u00e9ditos.\",\"de\":\"Keine Credits mehr.\",\"it\":\"Crediti esauriti.\"},\"credits_btn\":{\"fr\":\"Acheter des cr\u00e9dits\",\"en\":\"Buy credits\",\"es\":\"Comprar cr\u00e9ditos\",\"de\":\"Credits kaufen\",\"it\":\"Acquista crediti\"},\"author_required\":{\"fr\":\"Merci d'indiquer un auteur.\",\"en\":\"Please enter an author.\",\"es\":\"Por favor indica un autor.\",\"de\":\"Bitte gib einen Autor an.\",\"it\":\"Per favore indica un autore.\"}},\n        languages: [{\"key\":\"fr\",\"label\":\"Fran\u00e7ais\",\"flag\":\"\ud83c\uddeb\ud83c\uddf7\"},{\"key\":\"en\",\"label\":\"English\",\"flag\":\"\ud83c\uddec\ud83c\udde7\"},{\"key\":\"es\",\"label\":\"Espa\u00f1ol\",\"flag\":\"\ud83c\uddea\ud83c\uddf8\"},{\"key\":\"de\",\"label\":\"Deutsch\",\"flag\":\"\ud83c\udde9\ud83c\uddea\"},{\"key\":\"it\",\"label\":\"Italiano\",\"flag\":\"\ud83c\uddee\ud83c\uddf9\"}],\n        suggestions: {\"fr\":[[\"Lili\",\"Oscar\",\"Toto\"],[\"Chaton\",\"Chiot\",\"Lapin\"],[\"Ch\u00e2teau\",\"For\u00eat\",\"\u00cele\"],[\"Baguette\",\"Montre\",\"Miroir\"],[\"Tr\u00e9sor\",\"Sauvetage\",\"Exploration\"],[\"Pont\",\"Nuage\",\"Champignon\"],[\"Licorne\",\"Dragon\",\"F\u00e9e\"],[\"Gobelin\",\"Fant\u00f4me\",\"Bandit\"],[\"Chanson\",\"Escargot\",\"Souris\"],[\"Pluie\",\"Neige\",\"Aurore\"],[\"Voler\",\"Parler\",\"Changer\"],[\"Ballon\",\"Carte\",\"Anneau\"],[\"Souvenir\",\"Rires\",\"D\u00e9couverte\"]],\"en\":[[\"Lily\",\"Oscar\",\"Sammy\"],[\"Bunny\",\"Dragon\",\"Kitten\"],[\"Wonderland\",\"Forest\",\"Cave\"],[\"Wand\",\"Book\",\"Key\"],[\"Treasure\",\"Rescue\",\"Riddle\"],[\"Bridge\",\"Mud\",\"Tree\"],[\"Wizard\",\"Robot\",\"Fairy\"],[\"Goblin\",\"Troll\",\"Witch\"],[\"Song\",\"Rhyme\",\"Spider\"],[\"Sun\",\"Snow\",\"Rainbow\"],[\"Fly\",\"Talk\",\"Run\"],[\"Balloon\",\"Box\",\"Map\"],[\"Memory\",\"Hug\",\"Celebration\"]],\"es\":[[\"Lili\",\"Oscar\",\"Sammy\"],[\"Conejo\",\"Drag\u00f3n\",\"Gatito\"],[\"Pa\u00eds\",\"Bosque\",\"Cueva\"],[\"Varita\",\"Libro\",\"Llave\"],[\"Tesoro\",\"Rescate\",\"Acertijo\"],[\"Puente\",\"Barro\",\"\u00c1rbol\"],[\"Mago\",\"Robot\",\"Hada\"],[\"Duende\",\"Troll\",\"Bruja\"],[\"Canci\u00f3n\",\"Rima\",\"Ara\u00f1a\"],[\"Sol\",\"Nieve\",\"Arco\u00edris\"],[\"Volar\",\"Hablar\",\"Correr\"],[\"Globo\",\"Caja\",\"Mapa\"],[\"Recuerdo\",\"Abrazo\",\"Fiesta\"]],\"de\":[[\"Lilli\",\"Oskar\",\"Toto\"],[\"H\u00e4schen\",\"Drache\",\"K\u00e4tzchen\"],[\"Wunderland\",\"Wald\",\"H\u00f6hle\"],[\"Zauberstab\",\"Buch\",\"Schl\u00fcssel\"],[\"Schatz\",\"Rettung\",\"R\u00e4tsel\"],[\"Br\u00fccke\",\"Schlamm\",\"Baum\"],[\"Zauberer\",\"Roboter\",\"Fee\"],[\"Kobold\",\"Troll\",\"Hexe\"],[\"Lied\",\"Reim\",\"Spinne\"],[\"Sonne\",\"Schnee\",\"Regenbogen\"],[\"Fliegen\",\"Sprechen\",\"Laufen\"],[\"Ballon\",\"Kiste\",\"Karte\"],[\"Erinnerung\",\"Umarmung\",\"Feier\"]],\"it\":[[\"Lili\",\"Oscar\",\"Sammy\"],[\"Coniglio\",\"Drago\",\"Gattino\"],[\"Paese\",\"Foresta\",\"Grotta\"],[\"Bacchetta\",\"Libro\",\"Chiave\"],[\"Tesoro\",\"Salvataggio\",\"Indovinello\"],[\"Ponte\",\"Fango\",\"Albero\"],[\"Mago\",\"Robot\",\"Fata\"],[\"Folletto\",\"Troll\",\"Strega\"],[\"Canzone\",\"Filastrocca\",\"Ragno\"],[\"Sole\",\"Neve\",\"Arcobaleno\"],[\"Volare\",\"Parlare\",\"Correre\"],[\"Palloncino\",\"Scatola\",\"Mappa\"],[\"Ricordo\",\"Abbraccio\",\"Festa\"]]},\n        authors: {\"fr\":[\"Lili\",\"Oscar\",\"Sam\",\"Camille\",\"Robin\"],\"en\":[\"Lily\",\"Oscar\",\"Sammy\",\"Robin\",\"Charlie\"],\"es\":[\"Lili\",\"Oscar\",\"Sammy\",\"Valen\",\"Mar\"],\"de\":[\"Lilli\",\"Oskar\",\"Sammy\",\"Alex\",\"Max\"],\"it\":[\"Lili\",\"Oscar\",\"Sammy\",\"Gio\",\"Vale\"]},\n        covers: [\n            '\/wp-content\/uploads\/2025\/cover\/enfant1.jpg',\n            '\/wp-content\/uploads\/2025\/cover\/enfant2.jpg',\n            '\/wp-content\/uploads\/2025\/cover\/enfant3.jpg',\n            '\/wp-content\/uploads\/2025\/cover\/enfant4.jpg'\n        ],\n        ajaxUrl: 'https:\/\/crehistor.com\/wp-admin\/admin-ajax.php'\n    };\n\n    const userState = {\n        loggedIn: false,\n        credits: 0    };\n\n    let state = {\n        lang: localStorage.getItem('enf_lang') || 'fr',\n        step: 0,\n        answers: [],\n        author: '',\n        coverIndex: 0,\n        generated: null\n    };\n\n    let sliderTimer;\n\n    function tr(key) {\n        return config.ui[key] && config.ui[key][state.lang] ? config.ui[key][state.lang] : (config.ui[key] ? config.ui[key]['fr'] : key);\n    }\n\n    function setLang(lang) {\n        state.lang = lang;\n        localStorage.setItem('enf_lang', lang);\n    }\n\n    function renderLangBar() {\n        return `<div class=\"enf-langbar\">\n            ${config.languages.map(l => `<button class=\"enf-lang-btn${state.lang === l.key ? ' active' : ''}\" data-lang=\"${l.key}\">${l.flag} ${l.label}<\/button>`).join('')}\n        <\/div>`;\n    }\n\n    function renderSlider() {\n        const img = config.covers[state.coverIndex % config.covers.length];\n        return `<div class=\"enf-slider\">\n            <button class=\"enf-slider-arrow\" id=\"enf-prev\">\u25c0<\/button>\n            <div class=\"enf-slider-img\"><img decoding=\"async\" src=\"${img}\" alt=\"Illustration\"><\/div>\n            <button class=\"enf-slider-arrow\" id=\"enf-next\">\u25b6<\/button>\n        <\/div>`;\n    }\n\n    function startSlider() {\n        if (sliderTimer) clearTimeout(sliderTimer);\n        sliderTimer = setTimeout(() => {\n            state.coverIndex = (state.coverIndex + 1) % config.covers.length;\n            const img = document.querySelector('.enf-slider-img img');\n            if (img) {\n                img.style.opacity = '0';\n                setTimeout(() => {\n                    img.src = config.covers[state.coverIndex];\n                    img.style.opacity = '1';\n                }, 300);\n            }\n            startSlider();\n        }, 3500);\n    }\n\n    function stopSlider() {\n        if (sliderTimer) clearTimeout(sliderTimer);\n    }\n\n    function bindLangButtons() {\n        document.querySelectorAll('.enf-lang-btn').forEach(btn => {\n            btn.onclick = () => {\n                setLang(btn.dataset.lang);\n                state.step = 0;\n                state.answers = [];\n                state.author = '';\n                state.generated = null;\n                render();\n            };\n        });\n    }\n\n    function bindSliderButtons() {\n        const prev = document.getElementById('enf-prev');\n        const next = document.getElementById('enf-next');\n        if (prev) prev.onclick = () => {\n            state.coverIndex = (state.coverIndex + config.covers.length - 1) % config.covers.length;\n            render();\n        };\n        if (next) next.onclick = () => {\n            state.coverIndex = (state.coverIndex + 1) % config.covers.length;\n            render();\n        };\n    }\n\n    function fillAllRandom() {\n        const pool = config.authors[state.lang] || config.authors.fr;\n        state.author = pool[Math.floor(Math.random() * pool.length)];\n        const qs = config.types.enfant.questions[state.lang];\n        state.answers = qs.map((_, i) => {\n            const arr = config.suggestions[state.lang][i] || [];\n            return arr[Math.floor(Math.random() * arr.length)] || '';\n        });\n        state.step = qs.length + 1;\n        render();\n        setTimeout(generate, 300);\n    }\n\n    function render() {\n        const root = document.getElementById('enf-content');\n        const qs = config.types.enfant.questions[state.lang] || config.types.enfant.questions.fr;\n\n        \/\/ Not logged in\n        if (!userState.loggedIn) {\n            root.innerHTML = `\n                ${renderLangBar()}\n                ${renderSlider()}\n                <h1 class=\"enf-title\">${tr('login_welcome')}<\/h1>\n                <p class=\"enf-subtitle\">${tr('login_text')}<\/p>\n                <button class=\"enf-btn-login xoo-el-login-tgr\">${tr('login_btn')}<\/button>\n            `;\n            bindLangButtons();\n            startSlider();\n            bindSliderButtons();\n            return;\n        }\n\n        \/\/ No credits\n        if (userState.credits < 1) {\n            root.innerHTML = `\n                ${renderLangBar()}\n                ${renderSlider()}\n                <h1 class=\"enf-title\">${tr('login_welcome')}<\/h1>\n                <p class=\"enf-subtitle\">${tr('credits_text')}<\/p>\n                <a href=\"\/boutique\" class=\"enf-btn-credits\">${tr('credits_btn')}<\/a>\n            `;\n            bindLangButtons();\n            startSlider();\n            bindSliderButtons();\n            return;\n        }\n\n        \/\/ Step 0: Author\n        if (state.step === 0) {\n            root.innerHTML = `\n                ${renderLangBar()}\n                ${renderSlider()}\n                <h1 class=\"enf-title\">${tr('main_title')}<\/h1>\n                <p class=\"enf-subtitle\">${tr('subtitle')}<\/p>\n                <div class=\"enf-question\">${tr('author_label')}<\/div>\n                <input type=\"text\" class=\"enf-input\" id=\"enf-author\" value=\"${state.author}\" placeholder=\"${tr('placeholder_author')}\" autocomplete=\"off\">\n                <div id=\"enf-author-error\" class=\"enf-error\" style=\"display:none;\"><\/div>\n                <div class=\"enf-actions\">\n                    <button class=\"enf-btn\" id=\"enf-author-next\">${tr('next')}<\/button>\n                    <button class=\"enf-btn enf-btn-secondary\" id=\"enf-all-random\">${tr('all_random')}<\/button>\n                <\/div>\n            `;\n            bindLangButtons();\n            startSlider();\n            bindSliderButtons();\n\n            document.getElementById('enf-author').focus();\n            document.getElementById('enf-author').oninput = e => state.author = e.target.value;\n            document.getElementById('enf-author').onkeydown = e => { if (e.key === 'Enter') document.getElementById('enf-author-next').click(); };\n\n            document.getElementById('enf-author-next').onclick = () => {\n                if (!state.author.trim()) {\n                    document.getElementById('enf-author-error').textContent = tr('author_required');\n                    document.getElementById('enf-author-error').style.display = 'block';\n                    return;\n                }\n                state.step = 1;\n                render();\n            };\n\n            document.getElementById('enf-all-random').onclick = fillAllRandom;\n            return;\n        }\n\n        \/\/ Questions\n        if (state.step >= 1 && state.step <= qs.length) {\n            stopSlider();\n            const qIndex = state.step - 1;\n            const q = qs[qIndex];\n            const suggestions = config.suggestions[state.lang][qIndex] || [];\n\n            root.innerHTML = `\n                ${renderLangBar()}\n                <div class=\"enf-step-info\">${tr('question')} ${state.step} \/ ${qs.length}<\/div>\n                <div class=\"enf-question\">${q}<\/div>\n                <input type=\"text\" class=\"enf-input\" id=\"enf-answer\" value=\"${state.answers[qIndex] || ''}\" autocomplete=\"off\">\n                <div class=\"enf-suggestions\">\n                    ${suggestions.map(s => `<button class=\"enf-sug\">${s}<\/button>`).join('')}\n                <\/div>\n                <div class=\"enf-actions\">\n                    <button class=\"enf-btn-link\" id=\"enf-random\">${tr('random_word')}<\/button>\n                    <button class=\"enf-btn-link\" id=\"enf-all-random\">${tr('all_random')}<\/button>\n                <\/div>\n                <div class=\"enf-actions\">\n                    <button class=\"enf-btn\" id=\"enf-next\">${state.step < qs.length ? tr('next') : tr('generate')}<\/button>\n                <\/div>\n            `;\n\n            bindLangButtons();\n\n            document.getElementById('enf-answer').focus();\n            document.getElementById('enf-answer').onkeydown = e => { if (e.key === 'Enter') document.getElementById('enf-next').click(); };\n\n            document.querySelectorAll('.enf-sug').forEach(btn => {\n                btn.onclick = () => document.getElementById('enf-answer').value = btn.textContent;\n            });\n\n            document.getElementById('enf-random').onclick = () => {\n                const w = suggestions[Math.floor(Math.random() * suggestions.length)] || '';\n                document.getElementById('enf-answer').value = w;\n            };\n\n            document.getElementById('enf-all-random').onclick = fillAllRandom;\n\n            document.getElementById('enf-next').onclick = () => {\n                const val = document.getElementById('enf-answer').value.trim();\n                if (!val) return;\n                state.answers[qIndex] = val;\n                state.step++;\n                if (state.step > qs.length) {\n                    generate();\n                } else {\n                    render();\n                }\n            };\n            return;\n        }\n\n        \/\/ Generated result\n        if (state.generated) {\n            renderResult();\n        }\n    }\n\n    function generate() {\n        const root = document.getElementById('enf-content');\n        root.innerHTML = `\n            ${renderLangBar()}\n            <div class=\"enf-loading\">\n                <div class=\"enf-loading-text\">${tr('generating')}<\/div>\n                <div class=\"enf-spinner\"><\/div>\n            <\/div>\n        `;\n        bindLangButtons();\n\n        fetch(config.ajaxUrl + '?action=enf_generate', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/json' },\n            body: JSON.stringify({\n                type: 'enfant',\n                lang: state.lang,\n                answers: state.answers,\n                author: state.author\n            })\n        })\n        .then(r => r.json())\n        .then(data => {\n            state.generated = data;\n            if (userState.credits > 0) userState.credits--;\n            renderResult();\n        })\n        .catch(() => {\n            state.generated = { title: 'Erreur', story: '\u00c9chec de la g\u00e9n\u00e9ration.' };\n            renderResult();\n        });\n    }\n\n    function renderResult() {\n        const root = document.getElementById('enf-content');\n        const data = state.generated;\n\n        root.innerHTML = `\n            ${renderLangBar()}\n            <div class=\"enf-result-title\">${data.title}<\/div>\n            <div class=\"enf-story\">${(data.story || '').replace(\/\\n\/g, '<br>')}<\/div>\n            <div class=\"enf-actions\">\n                <button class=\"enf-btn\" id=\"enf-pdf\">\ud83d\udcc4 ${tr('pdf')}<\/button>\n                <a href=\"https:\/\/wa.me\/?text=${encodeURIComponent(data.title + '\\n\\n' + data.story)}\" target=\"_blank\" class=\"enf-btn enf-btn-secondary\">\ud83d\udcf1 ${tr('whatsapp')}<\/a>\n            <\/div>\n            <div class=\"enf-actions\" style=\"margin-top:12px;\">\n                ${userState.credits > 0\n                    ? `<button class=\"enf-btn enf-btn-secondary\" id=\"enf-new\">\ud83d\udd04 ${tr('new')}<\/button>`\n                    : `<a href=\"\/boutique\" class=\"enf-btn-credits\">${tr('credits_btn')}<\/a>`\n                }\n            <\/div>\n        `;\n\n        bindLangButtons();\n\n        document.getElementById('enf-pdf').onclick = () => generatePDF(data.title, data.story);\n\n        const newBtn = document.getElementById('enf-new');\n        if (newBtn) {\n            newBtn.onclick = () => {\n                state.step = 0;\n                state.answers = [];\n                state.author = '';\n                state.generated = null;\n                render();\n            };\n        }\n    }\n\n    function generatePDF(title, story) {\n        const { jsPDF } = window.jspdf;\n        const doc = new jsPDF();\n        const pageWidth = doc.internal.pageSize.getWidth();\n        const pageHeight = doc.internal.pageSize.getHeight();\n        const margin = 20;\n        const maxWidth = pageWidth - margin * 2;\n        let y = margin;\n\n        doc.setFillColor(250, 250, 248);\n        doc.rect(0, 0, pageWidth, pageHeight, 'F');\n\n        doc.setDrawColor(201, 165, 78);\n        doc.setLineWidth(1.5);\n        doc.line(margin, 15, pageWidth - margin, 15);\n\n        y = 30;\n        doc.setFont('helvetica', 'bold');\n        doc.setFontSize(18);\n        doc.setTextColor(201, 165, 78);\n        doc.text('ENFANT PARFAIT', pageWidth \/ 2, y, { align: 'center' });\n\n        y += 12;\n        doc.setFontSize(14);\n        doc.setTextColor(60, 60, 60);\n        const titleLines = doc.splitTextToSize(title, maxWidth);\n        titleLines.forEach(line => {\n            doc.text(line, pageWidth \/ 2, y, { align: 'center' });\n            y += 7;\n        });\n\n        y += 8;\n        doc.setDrawColor(201, 165, 78);\n        doc.setLineWidth(0.5);\n        doc.line(margin + 40, y, pageWidth - margin - 40, y);\n\n        y += 12;\n        doc.setFont('helvetica', 'normal');\n        doc.setFontSize(11);\n        doc.setTextColor(40, 40, 40);\n\n        const lines = doc.splitTextToSize(story, maxWidth);\n        lines.forEach(line => {\n            if (y > pageHeight - 25) {\n                doc.addPage();\n                doc.setFillColor(250, 250, 248);\n                doc.rect(0, 0, pageWidth, pageHeight, 'F');\n                y = margin;\n            }\n            doc.text(line, margin, y);\n            y += 6;\n        });\n\n        const footerY = pageHeight - 12;\n        doc.setDrawColor(201, 165, 78);\n        doc.setLineWidth(0.3);\n        doc.line(margin, footerY - 5, pageWidth - margin, footerY - 5);\n        doc.setFontSize(9);\n        doc.setTextColor(150, 150, 150);\n        doc.text('G\u00e9n\u00e9r\u00e9 par Enfant Parfait \u2014 crehistor.com', pageWidth \/ 2, footerY, { align: 'center' });\n        doc.text(new Date().toLocaleDateString('fr-FR'), pageWidth - margin, footerY, { align: 'right' });\n\n        doc.save('Histoire_' + title.replace(\/[^a-zA-Z0-9]\/g, '_').substring(0, 30) + '.pdf');\n    }\n\n    \/\/ Init\n    render();\n})();\n<\/script>\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7f3c094 e-con-full e-flex e-con e-child\" data-id=\"7f3c094\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1043","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/crehistor.com\/de\/wp-json\/wp\/v2\/pages\/1043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crehistor.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/crehistor.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/crehistor.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crehistor.com\/de\/wp-json\/wp\/v2\/comments?post=1043"}],"version-history":[{"count":21,"href":"https:\/\/crehistor.com\/de\/wp-json\/wp\/v2\/pages\/1043\/revisions"}],"predecessor-version":[{"id":2800,"href":"https:\/\/crehistor.com\/de\/wp-json\/wp\/v2\/pages\/1043\/revisions\/2800"}],"wp:attachment":[{"href":"https:\/\/crehistor.com\/de\/wp-json\/wp\/v2\/media?parent=1043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}