{"id":9356,"date":"2026-01-07T15:08:02","date_gmt":"2026-01-07T14:08:02","guid":{"rendered":"https:\/\/paulinagreen.com\/?page_id=9356"},"modified":"2026-05-13T12:38:31","modified_gmt":"2026-05-13T10:38:31","slug":"home-and-trial-chat-page-paulina","status":"publish","type":"page","link":"https:\/\/paulinagreen.com\/en\/","title":{"rendered":"Home and Trial Chat Page Paulina"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9356\" class=\"elementor elementor-9356\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-90c4399 e-flex e-con-boxed e-con e-parent\" data-id=\"90c4399\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9edc00f elementor-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"9edc00f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\"><span>Sag Paulina dein Thema. <\/span><\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8a9f48 elementor-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"a8a9f48\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\"><span>Sie plant und erstellt f\u00fcr deinen Schulalltag. <br>Von Jahresplan bis Test.<\/span><\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cf7833f elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"cf7833f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Paulina Chat - unregistered Version - STABIL Stand 12. Mai morgens -->\n<div id=\"paulina-chat\" class=\"pg-shell\" aria-label=\"Paulina Chat\">\n  <div class=\"pg-frame\">\n    <div id=\"pg-tagline\" class=\"pg-tagline\"><\/div>\n    <div id=\"pg-log\" class=\"pg-log\" role=\"log\" aria-live=\"polite\" aria-relevant=\"additions text\"><\/div>\n    <form id=\"pg-form\" class=\"pg-composer\" autocomplete=\"off\">\n      <input id=\"pg-file\" type=\"file\" hidden accept=\".pdf,.docx,.pptx,.xlsx,.txt\" \/>\n      <button id=\"pg-clip\" type=\"button\" class=\"pg-pill pg-circle\" title=\"Add file\" aria-label=\"Add file\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 5v14M5 12h14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>\n      <\/button>\n      <textarea id=\"pg-input\" rows=\"1\" class=\"pg-input\" placeholder=\"Ask in your language!\" aria-label=\"Message to Paulina\"><\/textarea>\n      <button id=\"pg-send\" type=\"submit\" class=\"pg-pill pg-circle\" aria-label=\"Send\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h12M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n      <\/button>\n    <\/form>\n    <div class=\"pg-whisper\"> <\/div>\n<div class=\"pg-hints-label\">\ud83d\udc47 oder w\u00e4hle einen Button<\/div>\n    <div class=\"pg-hints\">\n      <button type=\"button\" class=\"pg-hint\" data-pg-utter=\"I need to plan a lesson\" data-pg-intent=\"planning\">\n        <svg class=\"pg-hint-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M3 10h18M8 2v4M16 2v4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\n        <span>Jahres- & Themenplan<\/span>\n      <\/button>\n      <button type=\"button\" class=\"pg-hint\" data-pg-utter=\"I need to create teaching material\" data-pg-intent=\"material\">\n        <svg class=\"pg-hint-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 19l7-7 3 3-7 7-3-3z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><path d=\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><path d=\"M2 2l7.586 7.586\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><circle cx=\"11\" cy=\"11\" r=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg>\n        <span>Stundeninhalte<\/span>\n      <\/button>\n      <button type=\"button\" class=\"pg-hint\" data-pg-utter=\"I need quick help for tomorrow\" data-pg-intent=\"emergency\">\n        <svg class=\"pg-hint-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M12 6v6l4 2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg>\n        <span>Stunde retten<\/span>\n      <\/button>\n    <\/div>\n    <button id=\"pg-reset\" type=\"button\" class=\"pg-reset\" aria-label=\"Start over\">\n      <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"\/><path d=\"M21 3v5h-5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"\/><\/svg>\n      <span>Reset<\/span>\n    <\/button>\n    <div class=\"pg-status-bar\"><span id=\"pg-status\" class=\"pg-status\" aria-live=\"polite\"><\/span><\/div>\n  <\/div>\n<\/div>\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400&display=swap');\n#paulina-chat.pg-shell {\n  position: relative; z-index: 9; max-width: 100%; margin: 0 auto; padding: 25px; padding-top: 20px; width: 100%;\n  --ink: #012345; --text: #012345; --muted: #9ca3af; --border: #e4e8ee; --bg: #ffffff;\n  --bot: #f0f5f1; --bot-border: #c8ddd0; --user: #eef6ee; --user-border: #d8e8d8;\n  --accent: #2D5A3D; --accent-light: #EAF0E8;\n  font-family: 'Poppins', -apple-system, sans-serif;\n  box-sizing: border-box;\n}\n#paulina-chat *, #paulina-chat *::before, #paulina-chat *::after { box-sizing: border-box; }\n#paulina-chat .pg-frame {\n  position: relative; width: 100%; max-width: 100%; background: var(--bg);\n  border: 1px solid var(--border); border-radius: 20px; box-shadow: 0 4px 16px rgba(0,0,0,.08);\n  padding: 24px; padding-bottom: 60px; margin: 0; display: flex; flex-direction: column;\n  justify-content: flex-end; min-height: 450px; overflow: hidden;\n}\n#paulina-chat .pg-tagline {\n  font-family: 'Poppins', sans-serif; font-size: 33px; font-weight: 300; color: #9ca3af;\n  text-align: center; line-height: 1.4; padding: 20px 40px; margin: 0 auto; max-width: 600px;\n  position: absolute; top: 25%; left: 50%; transform: translate(-50%, -50%);\n  transition: opacity 0.3s ease;\n}\n#paulina-chat .pg-tagline.pg-hidden { display: none; }\n#paulina-chat .pg-log:not(:empty) + .pg-tagline, #paulina-chat .pg-tagline.pg-hidden { display: none; }\n#paulina-chat .pg-log {\n  flex: 1; min-height: 80px; max-height: 55vh; overflow-y: auto; overflow-x: hidden;\n  padding: 8px 0 16px; display: flex; flex-direction: column; gap: 16px; scroll-behavior: smooth;\n}\n#paulina-chat .pg-log:empty { min-height: 100px; }\n#paulina-chat .pg-bubble {\n  max-width: 85%; min-width: 120px; white-space: pre-wrap; word-break: break-word; border-radius: 20px;\n  padding: 16px 20px; line-height: 1.6; font-size: 16px; box-shadow: 0 2px 6px rgba(0,0,0,.06);\n  animation: pg-fadein 0.15s ease forwards;\n}\n#paulina-chat .pg-bubble:empty, #paulina-chat .pg-bubble[data-empty=\"true\"] {\n  display: none !important; padding: 0 !important; border: none !important;\n  box-shadow: none !important; margin: 0 !important;\n}\n#paulina-chat .pg-row:has(.pg-bubble:empty) { display: none !important; }\n#paulina-chat .pg-bot { background: var(--bot); border: 1px solid var(--bot-border); border-top-left-radius: 6px; }\n#paulina-chat .pg-user { background: var(--user); border: 1px solid var(--user-border); border-top-right-radius: 6px; margin-left: auto; }\n#paulina-chat .pg-bubble.pg-flat {\n  background: transparent !important; border: 0 !important; box-shadow: none !important;\n  padding: 0 !important; margin: 8px 0 0 !important;\n}\n#paulina-chat .pg-bubble.pg-flat a { color: var(--accent) !important; text-decoration: underline; text-underline-offset: 2px; font-weight: 600 !important; font-size: 15px; }\n#paulina-chat .pg-bubble.pg-flat a:hover { color: #5a3cb8 !important; }\n#paulina-chat .pg-row { display: flex; }\n#paulina-chat .pg-row.pg-left { justify-content: flex-start; }\n#paulina-chat .pg-row.pg-right { justify-content: flex-end; }\n#paulina-chat .pg-followup-buttons { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; max-width: 85%; }\n#paulina-chat .pg-followup-btn {\n  -webkit-appearance: none; appearance: none; background: #fff; border: 1.5px solid var(--border);\n  color: var(--ink); border-radius: 12px; padding: 14px 18px; font-size: 14px; font-weight: 500;\n  cursor: pointer; transition: all 0.15s ease; text-align: left; line-height: 1.4;\n  white-space: normal; word-wrap: break-word;\n}\n#paulina-chat .pg-followup-btn:hover { background: var(--accent-light); border-color: var(--accent); color: var(--accent); }\n#paulina-chat .pg-followup-btn:active { transform: translateY(1px); }\n#paulina-chat .pg-followup-btn.pg-primary { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600; }\n#paulina-chat .pg-followup-btn.pg-primary:hover { background: #5a3cb8; border-color: #5a3cb8; color: #fff; }\n#paulina-chat .pg-followup-btn.pg-tertiary { background: transparent; border: none; color: var(--muted); font-size: 13px; padding: 8px 0; text-decoration: underline; text-underline-offset: 2px; }\n#paulina-chat .pg-followup-btn.pg-tertiary:hover { color: var(--ink); background: transparent; }\n#paulina-chat, #paulina-chat *, #paulina-chat input, #paulina-chat textarea, #paulina-chat button, #paulina-chat select { font-family: 'Poppins', -apple-system, sans-serif !important; }\n#paulina-chat .pg-composer {\n  display: flex; align-items: center; gap: 12px; padding: 10px; border: 1px solid var(--border);\n  border-radius: 999px; background: #fff; box-shadow: 0 2px 12px rgba(0,0,0,.06); margin-top: 16px;\n}\n#paulina-chat .pg-input {\n  flex: 1; border: 0; outline: 0; resize: none; height: 44px; padding: 12px 14px; font-size: 16px;\n  font-family: 'Poppins', -apple-system, sans-serif;\n  color: var(--text); background: transparent; line-height: 1.5;\n}\n#paulina-chat .pg-input::placeholder { color: var(--muted); font-weight: 400; }\n#paulina-chat .pg-pill { background: transparent; color: var(--ink); border: 1px solid var(--border); box-shadow: none; cursor: pointer; transition: all 0.15s ease; flex-shrink: 0; }\n#paulina-chat .pg-pill:hover { background: var(--accent-light); border-color: var(--accent); }\n#paulina-chat .pg-pill:active { transform: scale(0.96); }\n#paulina-chat .pg-circle { width: 50px; height: 50px; border-radius: 50%; display: flex; align-items: center; justify-content: center; padding: 0; }\n#paulina-chat .pg-circle svg { width: 22px; height: 22px; stroke-width: 2; }\n#paulina-chat .pg-whisper { text-align: center; font-size: 13px; color: #a8b0bc; margin-top: 14px; font-style: italic; }\n#paulina-chat .pg-hints-label { text-align: center; font-size: 14px; color: var(--muted); margin-top: 16px; margin-bottom: 4px; }\n#paulina-chat .pg-hints { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin-top: 4px; }\n#paulina-chat .pg-hint {\n  -webkit-appearance: none; appearance: none; background: #fff; border: 1px solid var(--border);\n  box-shadow: 0 3px 12px rgba(239, 159, 39, 0.3); color: var(--ink); border-radius: 999px;\n  padding: 12px 20px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.15s ease;\n  display: flex; align-items: center; gap: 8px;\n}\n#paulina-chat .pg-hint-icon { width: 20px; height: 20px; flex-shrink: 0; opacity: 0.7; }\n#paulina-chat .pg-hint:hover { background: var(--accent-light); border-color: var(--accent); color: var(--accent); }\n#paulina-chat .pg-hint:hover .pg-hint-icon { opacity: 1; }\n#paulina-chat .pg-hint:active { transform: translateY(1px); }\n#paulina-chat .pg-log:not(:empty) ~ .pg-hints { opacity: 0.35; }\n#paulina-chat .pg-reset {\n  position: absolute; bottom: 93px; left: 24px; -webkit-appearance: none; appearance: none;\n  background: transparent; border: none; box-shadow: none;\n  color: var(--muted); border-radius: 999px; padding: 6px 10px; font-size: 15px; font-weight: 600;\n  cursor: pointer; transition: all 0.15s ease; display: inline-flex; align-items: center; gap: 5px;\n  font-family: 'Poppins', -apple-system, sans-serif !important;\n}\n#paulina-chat .pg-reset svg { width: 14px; height: 14px; flex-shrink: 0; }\n#paulina-chat .pg-reset:hover { background: #EF9F27; border-color: #2D5A3D; color: var(--ink); box-shadow: 0 4px 14px rgba(239, 159, 39, 0.33); }\n#paulina-chat .pg-reset:active { transform: translateY(1px); }\n#paulina-chat .pg-status-bar { text-align: center; margin-top: 10px; min-height: 20px; }\n#paulina-chat .pg-status { font-size: 14px; color: var(--muted); }\n#paulina-chat .pg-typing {\n  background: var(--bot); border: 1px solid var(--bot-border); border-radius: 20px;\n  padding: 12px 16px; color: var(--muted); display: inline-flex; gap: 8px; align-items: center;\n}\n#paulina-chat .pg-dots { display: inline-flex; gap: 5px; }\n#paulina-chat .pg-dots i { width: 7px; height: 7px; border-radius: 50%; background: currentColor; opacity: 0.4; display: block; animation: pg-pulse 1.2s infinite ease-in-out; }\n#paulina-chat .pg-dots i:nth-child(2) { animation-delay: .15s; }\n#paulina-chat .pg-dots i:nth-child(3) { animation-delay: .3s; }\n@keyframes pg-fadein { from { opacity: 0; } to { opacity: 1; } }\n@keyframes pg-pulse { 0%, 80%, 100% { opacity: 0.3; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-2px); } }\n@media (max-width: 768px) {\n  #paulina-chat .pg-frame { padding: 20px; padding-bottom: 60px; border-radius: 16px; max-height: 250vh;}\n  #paulina-chat .pg-tagline { font-size: 20px; padding: 16px 20px; }\n  #paulina-chat .pg-log { min-height: 0px; max-height: none; overflow-y: visible; }\n  #paulina-chat .pg-bubble { font-size: 14px; padding: 14px 18px; }\n  #paulina-chat .pg-followup-buttons { max-width: 95%; }\n  #paulina-chat .pg-followup-btn { padding: 12px 16px; font-size: 13px; }\n  #paulina-chat .pg-circle { width: 46px; height: 46px; }\n  #paulina-chat .pg-input { height: 60px; font-size: 16px; }\n  #paulina-chat .pg-hints { flex-wrap: nowrap; gap: 6px; }\n  #paulina-chat .pg-hint { padding: 8px 8px; font-size: 11px; flex: 1 1 0; min-width: 0; }\n  #paulina-chat .pg-hint-icon { width: 18px; height: 18px; }\n  #paulina-chat .pg-reset { bottom: 14px; left: 50%; transform: translateX(-50%); padding: 7px 14px; font-size: 11px; }\n  #paulina-chat .pg-reset svg { width: 13px; height: 13px; }\n}\n@media (max-width: 480px) {\n  #paulina-chat .pg-frame { padding: 14px; padding-bottom: 5px; border-radius: 14px; min-height: 0; }\n  #paulina-chat .pg-tagline { font-size: 16px; line-height: 1.4; max-width: 90%; padding: 6px 10px; top: 15%; }\n  #paulina-chat .pg-bubble { max-width: 92%; padding: 12px 16px; font-size: 14px; }\n  #paulina-chat .pg-followup-buttons { max-width: 100%; }\n  #paulina-chat .pg-followup-btn { padding: 12px 14px; font-size: 13px; }\n  #paulina-chat .pg-composer { gap: 8px; padding: 8px; margin-top: 20px; }\n  #paulina-chat .pg-circle { width: 40px; height: 40px; }\n  #paulina-chat .pg-circle svg { width: 20px; height: 20px; }\n  #paulina-chat .pg-input { height: 38px; padding: 8px 12px; font-size: 16px; }\n  #paulina-chat .pg-whisper { font-size: 12px; margin-top: 12px; }\n  #paulina-chat .pg-hints { flex-direction: column; align-items: center; gap: 10px; margin-top: 16px; }\n  #paulina-chat .pg-hint { width: 80%; justify-content: center; padding: 12px 16px; font-size: 13px; }\n  #paulina-chat .pg-hint-icon { width: 18px; height: 18px; }\n  #paulina-chat .pg-reset { bottom: -3px; left: 50%; transform: translateX(-50%); padding: 8px 14px; font-size: 11px; }\n  #paulina-chat .pg-reset svg { width: 12px; height: 12px; }\n}\n<\/style>\n<script>\n(() => {\n  const log      = document.getElementById('pg-log');\n  const form     = document.getElementById('pg-form');\n  const input    = document.getElementById('pg-input');\n  const send     = document.getElementById('pg-send');\n  const clip     = document.getElementById('pg-clip');\n  const file     = document.getElementById('pg-file');\n  const reset    = document.getElementById('pg-reset');\n  const statusEl = document.getElementById('pg-status');\n  const taglineEl = document.getElementById('pg-tagline');\n  const API_ROOT   = (window.wpApiSettings?.root || (location.origin + '\/wp-json\/')).replace(\/\\\/$\/, '');\n  const CHAT_URL   = API_ROOT + '\/paulina\/v1\/chat';\n  const UPLOAD_URL = API_ROOT + '\/paulina\/v1\/upload';\n  const TRIAL_MODE = true;\n  const TRIAL_MINUTES = 30;\n  const REGISTER_URL = '\/register';\n  const TAGLINES = {\n    de: [\"\u00dcbungen in drei Klicks.\", \"Fallstudien mit L\u00f6sungen. Sofort!\", \"Kompetenzen \u00fcben? W\u00e4hle Stundeninhalte.\"],\n    en: [\"Exercises in three clicks.\", \"Case studies for your class!\", \"Exercises with solutions. Now.\", \"Practice skills? Click Lesson Material.\"],\n    fr: [\"Exercices en trois clics.\", \"Ton plan en 3 minutes.\", \"\u00c9tudes de cas pour ta classe!\", \"Exercices avec solutions. Pr\u00eats.\", \"Comp\u00e9tences? Clique Mat\u00e9riel.\"],\n    es: [\"Ejercicios en tres clics.\", \"Plan anual en 3 minutos.\", \"Casos de estudio para tu clase!\", \"Ejercicios con soluciones. Ya.\", \"Competencias? Clic en Material.\"],\n    pt: [\"Exerc\u00edcios em tr\u00eas cliques.\", \"Plano anual em 3 minutos.\", \"Casos de estudo para o teu tema!\", \"Exerc\u00edcios com solu\u00e7\u00f5es. J\u00e1.\", \"Compet\u00eancias? Clica Material.\"],\n    fi: [\"Harjoitukset kolmella klikill\u00e4.\", \"Vuosisuunnitelma 3 minuutissa.\", \"Tapaustutkimukset aiheestasi!\", \"Harjoitukset ratkaisuineen. Heti.\", \"Osaaminen? Klikkaa Materiaali.\"],\n    pl: [\"\u0106wiczenia w trzech klikni\u0119ciach.\", \"Plan roczny w 3 minuty.\", \"Studia przypadk\u00f3w do tematu!\", \"\u0106wiczenia z rozwi\u0105zaniami. Teraz.\", \"Kompetencje? Kliknij Materia\u0142.\"],\n    uk: [\"\u0412\u043f\u0440\u0430\u0432\u0438 \u0432 \u0442\u0440\u0438 \u043a\u043b\u0456\u043a\u0438.\", \"\u0420\u0456\u0447\u043d\u0438\u0439 \u043f\u043b\u0430\u043d \u0437\u0430 3 \u0445\u0432\u0438\u043b\u0438\u043d\u0438.\", \"\u041a\u0435\u0439\u0441\u0438 \u0434\u043e \u0442\u0432\u043e\u0454\u0457 \u0442\u0435\u043c\u0438!\", \"\u0412\u043f\u0440\u0430\u0432\u0438 \u0437 \u0440\u0456\u0448\u0435\u043d\u043d\u044f\u043c\u0438. \u0417\u0430\u0440\u0430\u0437.\", \"\u041a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0456\u0457? \u041d\u0430\u0442\u0438\u0441\u043d\u0438 \u041c\u0430\u0442\u0435\u0440\u0456\u0430\u043b.\"],\n    hu: [\"Feladatok h\u00e1rom kattint\u00e1ssal.\", \"\u00c9ves terv 3 perc alatt.\", \"Esettanulm\u00e1nyok a t\u00e9m\u00e1dhoz!\", \"Feladatok megold\u00e1sokkal. Most.\", \"Kompetenci\u00e1k? Kattints Anyag.\"],\n    it: [\"Esercizi in tre clic.\", \"Piano annuale in 3 minuti.\", \"Casi studio per il tuo tema!\", \"Esercizi con soluzioni. Subito.\", \"Competenze? Clicca Materiale.\"],\n    ru: [\"\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f \u0432 \u0442\u0440\u0438 \u043a\u043b\u0438\u043a\u0430.\", \"\u0413\u043e\u0434\u043e\u0432\u043e\u0439 \u043f\u043b\u0430\u043d \u0437\u0430 3 \u043c\u0438\u043d\u0443\u0442\u044b.\", \"\u041a\u0435\u0439\u0441\u044b \u043f\u043e \u0442\u0432\u043e\u0435\u0439 \u0442\u0435\u043c\u0435!\", \"\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f \u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438. \u0421\u0435\u0439\u0447\u0430\u0441.\", \"\u041a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u0438? \u041d\u0430\u0436\u043c\u0438 \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b.\"],\n    zh: [\"\u4e09\u6b21\u70b9\u51fb\u83b7\u53d6\u7ec3\u4e60\u3002\", \"3\u5206\u949f\u5b8c\u6210\u5e74\u5ea6\u8ba1\u5212\u3002\", \"\u4f60\u4e3b\u9898\u7684\u6848\u4f8b\u7814\u7a76\uff01\", \"\u5e26\u7b54\u6848\u7684\u7ec3\u4e60\u3002\u5373\u523b\u3002\", \"\u7ec3\u4e60\u80fd\u529b\uff1f\u70b9\u51fb\u6750\u6599\u3002\"],\n    tr: [\"\u00dc\u00e7 t\u0131kla al\u0131\u015ft\u0131rmalar.\", \"3 dakikada y\u0131ll\u0131k plan.\", \"Konuna \u00f6zel vaka \u00e7al\u0131\u015fmalar\u0131!\", \"\u00c7\u00f6z\u00fcml\u00fc al\u0131\u015ft\u0131rmalar. Hemen.\", \"Yetkinlikler? Materyal'e t\u0131kla.\"],\n    ar: [\"\u062a\u0645\u0627\u0631\u064a\u0646 \u0628\u062b\u0644\u0627\u062b \u0646\u0642\u0631\u0627\u062a.\", \"\u062e\u0637\u0629 \u0633\u0646\u0648\u064a\u0629 \u0641\u064a 3 \u062f\u0642\u0627\u0626\u0642.\", \"\u062f\u0631\u0627\u0633\u0627\u062a \u062d\u0627\u0644\u0629 \u0644\u0645\u0648\u0636\u0648\u0639\u0643!\", \"\u062a\u0645\u0627\u0631\u064a\u0646 \u0645\u0639 \u062d\u0644\u0648\u0644. \u0627\u0644\u0622\u0646.\", \"\u0643\u0641\u0627\u0621\u0627\u062a\u061f \u0627\u0646\u0642\u0631 \u0627\u0644\u0645\u0648\u0627\u062f.\"]\n  };\n function getLanguage() {\n    if (window.pgInitialLang) return window.pgInitialLang;\n    const urlLang = location.pathname.match(\/^\\\/(en|de|fr|es|it|pt|pl|uk|hu|tr|ru|fi|nl|sv|no|da|cs|sk|ro|hr|sl|bg|sr|mk|el|ar|he|hi|zh|ja|ko|vi|id|ms|th|lo|km|my|bn|ta|te|mr|gu|kn|ml|pa|ur|ne|si|fa|ps|sw|am|ha|yo|ig|zu|xh|sn|rw|lg|cy|ga|gd|mt|eu|ca|gl|lv|lt|et|kk|ky|mn|tl|sm|to|fj|mi)\\\/\/)?.[1] || document.documentElement.lang?.slice(0,2).toLowerCase() || null;\n    if (urlLang && (TAGLINES[urlLang] || urlLang === 'en')) return urlLang;\n    const lang = (navigator.language || navigator.userLanguage || 'de').slice(0, 2).toLowerCase();\n    return TAGLINES[lang] ? lang : 'de';\n  }\n  function showTagline() {\n    const lang = getLanguage();\n    const lines = TAGLINES[lang];\n    const randomLine = lines[Math.floor(Math.random() * lines.length)];\n    if (taglineEl) { taglineEl.textContent = randomLine; taglineEl.classList.remove('pg-hidden'); taglineEl.style.opacity = '1'; }\n  }\n  function hideTagline() {\n    if (taglineEl && !taglineEl.classList.contains('pg-hidden')) {\n      taglineEl.style.opacity = '0';\n      setTimeout(() => taglineEl.classList.add('pg-hidden'), 300);\n    }\n  }\n  showTagline();\n  function translateHints() {\n  const lang = getLanguage();\n  const hints = {\n    de: ['Jahres- und Themenplan', 'Stundeninhalte', 'Stunde retten'],\n    en: ['Annual Plan & Topics', 'Lesson Materials', 'Quick Help'],\n    fr: ['Plan annuel & Sujets', 'Mat\u00e9riel de cours', 'Aide rapide'],\n    es: ['Plan anual & Clases', 'Material did\u00e1ctico', 'Ayuda r\u00e1pida'],\n    it: ['Piano annuale & Lezioni', 'Materiale didattico', 'Aiuto rapido'],\n    pt: ['Plano anual & Aulas', 'Material did\u00e1tico', 'Ajuda r\u00e1pida'],\n    pl: ['Plan roczny & Lekcje', 'Materia\u0142y dydaktyczne', 'Szybka pomoc'],\n    uk: ['\u0420\u0456\u0447\u043d\u0438\u0439 \u043f\u043b\u0430\u043d & \u0423\u0440\u043e\u043a\u0438', '\u041d\u0430\u0432\u0447\u0430\u043b\u044c\u043d\u0456 \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0438', '\u0428\u0432\u0438\u0434\u043a\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0430'],\n    hu: ['\u00c9ves terv & \u00d3r\u00e1k', 'Tananyag', 'Gyors seg\u00edts\u00e9g'],\n    tr: ['Y\u0131ll\u0131k Plan & Dersler', 'Ders Materyali', 'H\u0131zl\u0131 Yard\u0131m'],\n    ru: ['\u0413\u043e\u0434\u043e\u0432\u043e\u0439 \u043f\u043b\u0430\u043d & \u0423\u0440\u043e\u043a\u0438', '\u0423\u0447\u0435\u0431\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b', '\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0449\u044c'],\n  };\n  const labels = hints[lang] || hints['en'];\n  document.querySelectorAll('.pg-hint span').forEach((span, i) => {\n    if (labels[i]) span.textContent = labels[i];\n  });\n}\nfunction translateHintsLabel() {\n  const lang = getLanguage();\n  const labels = {\n    de: '\ud83d\udc47 oder w\u00e4hle einen Button',\n    en: '\ud83d\udc47 or choose a button',\n    fr: '\ud83d\udc47 ou choisis un bouton',\n    es: '\ud83d\udc47 o elige un bot\u00f3n',\n    it: '\ud83d\udc47 o scegli un pulsante',\n    pt: '\ud83d\udc47 ou escolhe um bot\u00e3o',\n    pl: '\ud83d\udc47 lub wybierz przycisk',\n    uk: '\ud83d\udc47 \u0430\u0431\u043e \u043e\u0431\u0435\u0440\u0438 \u043a\u043d\u043e\u043f\u043a\u0443',\n    hu: '\ud83d\udc47 vagy v\u00e1lassz egy gombot',\n    tr: '\ud83d\udc47 veya bir d\u00fc\u011fme se\u00e7',\n    ru: '\ud83d\udc47 \u0438\u043b\u0438 \u0432\u044b\u0431\u0435\u0440\u0438 \u043a\u043d\u043e\u043f\u043a\u0443',\n    zh: '\ud83d\udc47 \u6216\u9009\u62e9\u4e00\u4e2a\u6309\u94ae',\n    ar: '\ud83d\udc47 \u0623\u0648 \u0627\u062e\u062a\u0631 \u0632\u0631\u0627\u064b',\n  };\n  const el = document.querySelector('.pg-hints-label');\n  if (el) el.textContent = labels[lang] || labels['en'];\n}\ntranslateHintsLabel();\ntranslateHints();\n  function setPlaceholder() {\n    const lang = getLanguage();\n    const p = { \n      de: \"Schreib hier...\", \n  en: \"Write here...\", \n  fr: \"\u00c9cris ici...\", \n  es: \"Escr\u00edbe aqu\u00ed...\", \n  pt: \"Escreve-me...\", \n  fi: \"Kirjoita...\", \n  pl: \"Napisz...\", \n  uk: \"\u041d\u0430\u043f\u0438\u0448\u0438...\", \n  hu: \"\u00cdrj...\", \n  it: \"Scrivimi...\", \n  ru: \"\u041d\u0430\u043f\u0438\u0448\u0438...\", \n  zh: \"\u5199\u7ed9\u6211...\", \n  tr: \"Yaz bana...\", \n  ar: \"\u0627\u0643\u062a\u0628 \u0644\u064a...\"  \n    };\n    if (input) input.placeholder = p[lang] || p['de'];\n  }\n  setPlaceholder();\n  const NONCE = (window.paulinaApi?.nonce) || (window.wpApiSettings?.nonce) || null;\n  function restHeaders(extra = {}) { const h = { ...extra }; if (NONCE) h['X-WP-Nonce'] = NONCE; return h; }\n  function row(html, who = 'bot') {\n    const stripped = (html || '').replace(\/<br\\s*\\\/?>\/gi, '').replace(\/&nbsp;\/gi, '').trim();\n    if (!stripped) return null;\n    const r = document.createElement('div');\n    r.className = 'pg-row ' + (who === 'user' ? 'pg-right' : 'pg-left');\n    const b = document.createElement('div');\n    b.className = 'pg-bubble ' + (who === 'user' ? 'pg-user' : 'pg-bot');\n    b.innerHTML = html;\n    r.appendChild(b);\n    log.appendChild(r);\n    b.style.opacity = '0';\n    setTimeout(() => { b.style.opacity = '1'; b.style.transition = 'opacity 0.1s'; scrollToBottom(); }, 50);\n    return r;\n  }\n  function scrollToBottom() {\n    if (window.innerWidth <= 768) {\n      setTimeout(() => {\n        const last = log.lastElementChild;\n        if (last) last.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n      }, 50);\n    } else {\n      log.scrollTop = log.scrollHeight;\n    }\n  }\n  function textBubble(text, who = 'bot') {\n    const t = (typeof text === 'string') ? text : String(text || '');\n    if (!t.trim()) return null;\n    return row(linkify(t), who);\n  }\n  function typing() {\n    const r = document.createElement('div');\n    r.className = 'pg-row pg-left';\n    const b = document.createElement('div');\n    b.className = 'pg-bubble pg-bot pg-typing';\n    const _tMsgs = {\n      de: ['Einen Moment bitte, Paulina checkt aktuelle Inhalte \u2026','Kurze Pause. Paulina holt dir geeignete Unterlagen \u2026','Paulina schreibt jetzt nur f\u00fcr dich \ud83c\udf3b \u2026', 'Warte kurz. Paulina holt dir aktuelle Inhalte \u2026','Kleinen Moment. Gleich geht es los \u2026'],\n      en: ['One moment please, Paulina fetches necessary data \u2026','Being written just for you \u2026','Paulina is gathering the facts and data \u2026','Just a moment, we are scribbling \u2026'],\n      fr: ['En cours de pr\u00e9paration \u2026','En train d\\'\u00eatre r\u00e9dig\u00e9 pour vous \u2026','Paulina rassemble les faits et donn\u00e9es \u2026','Juste un instant \u2026'],\n      es: ['Tus materiales se est\u00e1n preparando \u2026','Siendo escrito justo para ti \u2026','Paulina est\u00e1 recopilando los datos \u2026','Un momento por favor \u2026'],\n      pt: ['Os teus materiais est\u00e3o a ser preparados \u2026','A ser escrito para ti \u2026','Paulina est\u00e1 a recolher os dados \u2026','O teu download ficar\u00e1 pronto em breve \u2026'],\n      it: ['I tuoi materiali sono in preparazione \u2026','Viene scritto apposta per te \u2026','Paulina raccoglie i fatti e i dati \u2026','Un momento per favore \u2026'],\n      pl: ['Twoje materia\u0142y s\u0105 przygotowywane \u2026','W\u0142a\u015bnie pisane dla ciebie \u2026','Paulina zbiera fakty i dane \u2026','Za chwil\u0119 b\u0119dzie gotowy download \u2026'],\n      uk: ['\u0422\u0432\u043e\u0457 \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0438 \u0433\u043e\u0442\u0443\u044e\u0442\u044c\u0441\u044f \u2026','\u041f\u0438\u0448\u0435\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u0435 \u0434\u043b\u044f \u0442\u0435\u0431\u0435 \u2026','Paulina \u0437\u0431\u0438\u0440\u0430\u0454 \u0444\u0430\u043a\u0442\u0438 \u0442\u0430 \u0434\u0430\u043d\u0456 \u2026','\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0431\u0443\u0434\u0435 \u0433\u043e\u0442\u043e\u0432\u0435 \u0437\u0430 \u043c\u0438\u0442\u044c \u2026'],\n      hu: ['Az anyagaid k\u00e9sz\u00fclnek \u2026','\u00c9ppen neked \u00edrjuk \u2026','Paulina \u00f6sszegy\u0171jti a t\u00e9nyeket \u00e9s adatokat \u2026','A let\u00f6lt\u00e9s r\u00f6videsen elk\u00e9sz\u00fcl \u2026'],\n      fi: ['Materiaalisi valmistellaan \u2026','Kirjoitetaan juuri sinulle \u2026','Paulina ker\u00e4\u00e4 tiedot ja faktat \u2026','Latauksesi on pian valmis \u2026'],\n      ru: ['\u0422\u0432\u043e\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0433\u043e\u0442\u043e\u0432\u044f\u0442\u0441\u044f \u2026','\u041f\u0438\u0448\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0431\u044f \u2026','Paulina \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0444\u0430\u043a\u0442\u044b \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u2026','\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u0430 \u0441 \u043c\u0438\u043d\u0443\u0442\u044b \u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0443 \u2026'],\n      zh: ['\u60a8\u7684\u6750\u6599\u6b63\u5728\u51c6\u5907\u4e2d \u2026','\u6b63\u5728\u4e3a\u60a8\u4e13\u95e8\u7f16\u5199 \u2026','Paulina \u6b63\u5728\u6536\u96c6\u76f8\u5173\u6570\u636e \u2026','\u60a8\u7684\u4e0b\u8f7d\u5373\u5c06\u5b8c\u6210 \u2026'],\n      tr: ['Materyalleriniz haz\u0131rlan\u0131yor \u2026','Tam size \u00f6zel yaz\u0131l\u0131yor \u2026','Paulina gerekli verileri topluyor \u2026','\u0130ndirmeniz birazdan haz\u0131r olacak \u2026'],\n      ar: ['\u062c\u0627\u0631\u064d \u062a\u062d\u0636\u064a\u0631 \u0645\u0648\u0627\u062f\u0643 \u2026','\u064a\u064f\u0643\u062a\u0628 \u062e\u0635\u064a\u0635\u0627\u064b \u0644\u0643 \u2026','\u0628\u0648\u0644\u064a\u0646\u0627 \u062a\u062c\u0645\u0639 \u0627\u0644\u062d\u0642\u0627\u0626\u0642 \u0648\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u2026','\u0633\u064a\u0643\u0648\u0646 \u062a\u0646\u0632\u064a\u0644\u0643 \u062c\u0627\u0647\u0632\u0627\u064b \u062e\u0644\u0627\u0644 \u0644\u062d\u0638\u0627\u062a \u2026']\n    };\n    const lang = getLanguage();\n    const msgs = _tMsgs[lang] || _tMsgs['en'];\n    const msg = msgs[Math.floor(Math.random() * msgs.length)];\n    b.innerHTML = '<span>' + msg + ' <\/span><span class=\"pg-dots\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><\/span>';\n    r.appendChild(b);\n    log.appendChild(r);\n    scrollToBottom();\n    return r;\n  }\n  function lock(on) { send.disabled = clip.disabled = input.disabled = on; statusEl.textContent = on ? 'working ...' : ''; if (reset) reset.style.opacity = on ? '0' : '1'; }\n  function linkify(text) {\n    const e = (String(text)||'').replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;');\n    return e.replace(\/https?:\\\/\\\/[^\\s)]+\/g, u => '<a href=\"' + u + '\" target=\"_blank\" rel=\"noopener\">' + u + '<\/a>').replace(\/\\n\/g,'<br>');\n  }\n  function parseFollowupOptions(text) {\n    const regex = \/^([1234ABCD])\\s*[:.\\)]\\s*(.+)$\/gm;\n    const options = []; let match;\n    while ((match = regex.exec(text)) !== null) options.push({ number: match[1], label: match[2].trim() });\n    return options;\n  }\n  function cleanTextFromOptions(text) {\n    let c = text.replace(\/^[1234ABCD][:.\\)]\\s*.+$\/gm, '');\n    c = c.replace(\/^\\(.*(?:Chat|chat|Dateien|files|gel\u00f6scht|deleted).*\\)$\/gm, '');\n    c = c.replace(\/^(?:Was m\u00f6chtest du als N\u00e4chstes\\??|What would you like next\\??|Was m\u00f6chtest du planen\\??)$\/gm, '');\n    return c.replace(\/\\n{3,}\/g, '\\n\\n').trim();\n  }\n  function renderFollowupButtons(options) {\n    if (!options || options.length === 0) return null;\n    const container = document.createElement('div');\n    container.className = 'pg-row pg-left';\n    const wrap = document.createElement('div');\n    wrap.className = 'pg-followup-buttons';\n    options.forEach((opt, i) => {\n      const btn = document.createElement('button');\n      btn.type = 'button';\n      btn.className = 'pg-followup-btn' + (i === 0 ? ' pg-primary' : '');\n      btn.textContent = opt.label;\n      btn.dataset.pgOption = opt.number;\n      btn.addEventListener('click', () => { textBubble(opt.label, 'user'); ask(opt.number); container.remove(); });\n      wrap.appendChild(btn);\n    });\n    container.appendChild(wrap);\n    log.appendChild(container);\n    scrollToBottom();\n    return container;\n  }\n  const PLAN_OPTIONS_URL = () => API_ROOT + '\/paulina\/v1\/plan-options';\n  function detectPlanQuestion(text) {\n    if (!text) return false;\n    return (\n      text.includes('What is your subject, your specific school type, and grade') ||\n      (text.includes('Fach') && text.includes('Schultyp') && text.includes('Klasse') && text.includes('Komma')) ||\n      (text.includes('subject') && text.includes('school type') && text.includes('grade') && text.includes('comma'))\n    );\n  }\n  async function fetchPlanOptions(step, country, region, schooltype, subject) {\n    const params = new URLSearchParams({ step, country: country || '', region: region || '' });\n    if (schooltype) params.set('schooltype', schooltype);\n    if (subject)    params.set('subject', subject);\n    try {\n      const res = await fetch(PLAN_OPTIONS_URL() + '?' + params.toString(), {\n        credentials: 'include', headers: restHeaders()\n      });\n      const data = await res.json();\n      return (data?.options || []);\n    } catch (e) {\n      console.error('plan-options fetch failed', e);\n      return [];\n    }\n  }\nasync function renderPlanDropdowns() {\n    let country = '', region = '';\n    try {\n      const geoRes = await fetch('https:\/\/ipapi.co\/json\/', { signal: AbortSignal.timeout(3000) });\n      const geoData = await geoRes.json();\n      country = (geoData.country_code || 'AT').toUpperCase();\n      region  = geoData.region || '';\n    } catch (_) {\n      country = 'AT'; region = '';\n    }\n\n    const container = document.createElement('div');\n    container.className = 'pg-row pg-left';\n    container.id = 'pg-plan-dropdowns';\n    \n    const wrap = document.createElement('div');\n    wrap.className = 'pg-plan-dropdown-wrap';\n    wrap.style.cssText = 'display:flex;flex-direction:column;gap:12px;margin-top:12px;max-width:85%;';\n    const lang = getLanguage();\n    const labels = {\n      schooltype: lang === 'de' ? 'Schultyp' : 'School type',\n      subject:    lang === 'de' ? 'Fach'     : 'Subject',\n      year:       lang === 'de' ? 'Klasse'   : 'Grade \/ Year',\n      loading:    lang === 'de' ? 'L\u00e4dt \u2026'   : 'Loading \u2026',\n      select:     lang === 'de' ? 'Bitte w\u00e4hlen \u2026' : 'Please select \u2026',\n      confirm:    lang === 'de' ? 'Best\u00e4tigen \u2713'   : 'Confirm \u2713',\n    };\n    function makeSelect(labelText, id) {\n      const group = document.createElement('div');\n      group.style.cssText = 'display:flex;flex-direction:column;gap:4px;';\n      const lbl = document.createElement('label');\n      lbl.textContent = labelText;\n      lbl.style.cssText = 'font-size:13px;font-weight:600;color:var(--ink);';\n      const sel = document.createElement('select');\n      sel.id = id;\n      sel.disabled = true;\n      sel.style.cssText = [\n        'appearance:none;-webkit-appearance:none;',\n        'border:1.5px solid var(--border);border-radius:12px;',\n        'padding:12px 40px 12px 16px;font-size:15px;color:var(--ink);',\n        'background:white url(\"data:image\/svg+xml,%3Csvg xmlns=\\'http:\/\/www.w3.org\/2000\/svg\\' width=\\'16\\' height=\\'16\\' viewBox=\\'0 0 24 24\\'%3E%3Cpath d=\\'M6 9l6 6 6-6\\' fill=\\'none\\' stroke=\\'%239ca3af\\' stroke-width=\\'2\\' stroke-linecap=\\'round\\'\/%3E%3C\/svg%3E\") no-repeat right 14px center;',\n        'background-size:16px 16px;',\n        'cursor:pointer;transition:border-color .15s;width:100%;',\n      ].join('');\n      sel.addEventListener('focus',  () => { sel.style.borderColor = 'var(--accent)'; });\n      sel.addEventListener('blur',   () => { sel.style.borderColor = 'var(--border)'; });\n      const placeholder = document.createElement('option');\n      placeholder.value = '';\n      placeholder.textContent = labels.loading;\n      placeholder.disabled = true;\n      placeholder.selected = true;\n      sel.appendChild(placeholder);\n      group.appendChild(lbl);\n      group.appendChild(sel);\n      return { group, sel };\n    }\n    const { group: g1, sel: selSchooltype } = makeSelect(labels.schooltype, 'pg-sel-schooltype');\n    const { group: g2, sel: selSubject    } = makeSelect(labels.subject,    'pg-sel-subject');\n    const { group: g3, sel: selYear       } = makeSelect(labels.year,       'pg-sel-year');\n    function populateSelect(sel, options, placeholderText) {\n      sel.innerHTML = '';\n      const ph = document.createElement('option');\n      ph.value = ''; ph.textContent = placeholderText; ph.disabled = true; ph.selected = true;\n      sel.appendChild(ph);\n      options.forEach(opt => {\n        const o = document.createElement('option');\n        o.value = opt; o.textContent = opt;\n        sel.appendChild(o);\n      });\n      sel.disabled = options.length === 0;\n    }\n    const confirmBtn = document.createElement('button');\n    confirmBtn.type = 'button';\n    confirmBtn.className = 'pg-followup-btn pg-primary';\n    confirmBtn.textContent = labels.confirm;\n    confirmBtn.disabled = true;\n    confirmBtn.style.marginTop = '4px';\n    function checkConfirmReady() {\n      confirmBtn.disabled = !(selSchooltype.value && selSubject.value && selYear.value);\n    }\n    fetchPlanOptions('schooltype', country, region, '', '').then(opts => {\n      populateSelect(selSchooltype, opts, labels.select);\n      selSchooltype.disabled = false;\n    });\n    selSchooltype.addEventListener('change', async () => {\n      populateSelect(selSubject, [], labels.loading);\n      populateSelect(selYear,    [], labels.loading);\n      selSubject.disabled = true;\n      selYear.disabled    = true;\n      confirmBtn.disabled = true;\n      const opts = await fetchPlanOptions('subject', country, region, selSchooltype.value, '');\n      populateSelect(selSubject, opts, labels.select);\n      selSubject.disabled = opts.length === 0;\n    });\n    selSubject.addEventListener('change', async () => {\n      populateSelect(selYear, [], labels.loading);\n      selYear.disabled    = true;\n      confirmBtn.disabled = true;\n      const opts = await fetchPlanOptions('year', country, region, selSchooltype.value, selSubject.value);\n      populateSelect(selYear, opts, labels.select);\n      selYear.disabled = opts.length === 0;\n    });\n    selYear.addEventListener('change', checkConfirmReady);\n    \n    confirmBtn.addEventListener('click', () => {\n      const schooltype = selSchooltype.value;\n      const subject    = selSubject.value;\n      const year       = selYear.value;\n      if (!schooltype || !subject || !year) return;\n      document.getElementById('pg-form')?.style.setProperty('display', 'flex');\n      container.remove();\n      const combined = `${subject}, ${schooltype}, ${year}`;\n      textBubble(combined, 'user');\n      ask(combined);\n    });\n    \n    wrap.appendChild(g1);\n    wrap.appendChild(g2);\n    wrap.appendChild(g3);\n    wrap.appendChild(confirmBtn);\n    container.appendChild(wrap);\n    log.appendChild(container);\n    scrollToBottom();\n    document.getElementById('pg-form')?.style.setProperty('display', 'none');\n  }\n  \n  const MATERIAL_OPTIONS_URL = () => API_ROOT + '\/paulina\/v1\/material-options';\n  function detectMaterialQuestion(text) {\n    if (!text) return false;\n    return (\n      text.includes('What purpose do you follow') ||\n      text.includes('Welchem Zweck folgst du') ||\n      text.includes('purpose do you follow') ||\n      text.includes('Zweck folgst')\n    );\n  }\n  async function fetchMaterialOptions() {\n    const lang = getLanguage();\n    try {\n      const res = await fetch(MATERIAL_OPTIONS_URL() + '?lang=' + lang, {\n        credentials: 'include', headers: restHeaders()\n      });\n      const data = await res.json();\n      return data?.groups || {};\n    } catch (e) {\n      console.error('material-options fetch failed', e);\n      return {};\n    }\n  }\n  async function renderMaterialForm(prefillTopic = '') {\n    document.getElementById('pg-material-form')?.remove();\n    const lang = getLanguage();\n    const labels = {\n      topic:      lang === 'de' ? 'Thema' : 'Topic',\n   topicHint:  lang === 'de' ? 'z.B. Klimazonen in Europa, Zahlenreihe von 1-100, Goethes \u201eDie Leiden des jungen Werther\"...' : 'e.g. Climate zones in..., number sequence 1-100, Goethes \u201eThe Sorrows of Young Werther\"...',\n      activation: lang === 'de' ? 'Aktivieren' : 'Activate',\n      practice:   lang === 'de' ? '\u00dcben' : 'Practice',\n      transfer:   lang === 'de' ? 'Anwenden' : 'Transfer',\n      check:      lang === 'de' ? 'Pr\u00fcfen' : 'Check',\n      select:     lang === 'de' ? 'Bitte w\u00e4hlen \u2026' : 'Please select \u2026',\n      loading:    lang === 'de' ? 'L\u00e4dt \u2026' : 'Loading \u2026',\n      confirm:    lang === 'de' ? 'Erstellen \u2713' : 'Create \u2713',\n      skip:       lang === 'de' ? 'ohne Template' : 'without template',\n    };\n    const container = document.createElement('div');\n    container.className = 'pg-row pg-left';\n    container.id = 'pg-material-form';\n    const wrap = document.createElement('div');\n    wrap.style.cssText = 'display:flex;flex-direction:column;gap:16px;margin-top:8px;max-width:95%;width:100%;';\n    const topicGroup = document.createElement('div');\n    topicGroup.style.cssText = 'display:flex;flex-direction:column;gap:4px;';\n    const topicLabel = document.createElement('label');\n    topicLabel.textContent = labels.topic;\n    topicLabel.style.cssText = 'font-size:13px;font-weight:600;color:var(--ink);';\n    const topicInput = document.createElement('input');\n    topicInput.type = 'text';\n    topicInput.placeholder = labels.topicHint;\n    topicInput.style.cssText = [\n      'border:1.5px solid var(--border);border-radius:12px;',\n      'padding:12px 16px;font-size:15px;color:var(--ink);',\n      'background:white;width:100%;outline:none;',\n      'font-family:inherit;transition:border-color .15s;',\n    ].join('');\n    if (prefillTopic && !topicInput.value) {\n      topicInput.value = prefillTopic;\n    } else if (window._pgUploadedTopic && !topicInput.value) {\n      topicInput.value = window._pgUploadedTopic;\n    }\n    topicInput.addEventListener('focus', () => { topicInput.style.borderColor = 'var(--accent)'; });\n    topicInput.addEventListener('blur',  () => { topicInput.style.borderColor = 'var(--border)'; });\n    const topicRow = document.createElement('div');\n    topicRow.style.cssText = 'display:flex;gap:8px;align-items:center;';\n    topicRow.appendChild(topicInput);\n    const uploadBtn = document.createElement('button');\n    uploadBtn.type = 'button';\n    uploadBtn.textContent = '+';\n    uploadBtn.title = lang === 'de' ? 'Datei hochladen' : 'Upload file';\n    uploadBtn.style.cssText = [\n      'width:44px;height:44px;border-radius:50%;border:1.5px solid var(--border);',\n      'background:white;font-size:22px;cursor:pointer;flex-shrink:0;',\n      'display:flex;align-items:center;justify-content:center;',\n      'transition:all .15s;color:var(--ink);',\n    ].join('');\n    uploadBtn.addEventListener('click', () => file?.click());\n    topicRow.appendChild(uploadBtn);\n    topicGroup.appendChild(topicLabel);\n    topicGroup.appendChild(topicRow);\n    wrap.appendChild(topicGroup);\n    const dropdownRow = document.createElement('div');\n    dropdownRow.style.cssText = 'display:grid;grid-template-columns:repeat(4,1fr);gap:10px;';\n    const goalKeys   = ['activation', 'practice', 'transfer', 'check'];\n    const goalLabels = [labels.activation, labels.practice, labels.transfer, labels.check];\n    const selects    = {};\n    function makeGoalSelect(key, labelText) {\n      const group = document.createElement('div');\n      group.style.cssText = 'display:flex;flex-direction:column;gap:4px;';\n      const lbl = document.createElement('label');\n      lbl.textContent = labelText;\n      lbl.style.cssText = 'font-size:12px;font-weight:600;color:var(--ink);text-align:center;';\n      const sel = document.createElement('select');\n      sel.style.cssText = [\n        'appearance:none;-webkit-appearance:none;',\n        'border:1.5px solid var(--border);border-radius:12px;',\n        'padding:10px 30px 10px 12px;font-size:13px;color:var(--ink);',\n        'background:white url(\"data:image\/svg+xml,%3Csvg xmlns=\\'http:\/\/www.w3.org\/2000\/svg\\' width=\\'14\\' height=\\'14\\' viewBox=\\'0 0 24 24\\'%3E%3Cpath d=\\'M6 9l6 6 6-6\\' fill=\\'none\\' stroke=\\'%239ca3af\\' stroke-width=\\'2\\' stroke-linecap=\\'round\\'\/%3E%3C\/svg%3E\") no-repeat right 10px center;',\n        'background-size:14px;cursor:pointer;width:100%;',\n        'transition:border-color .15s;',\n      ].join('');\n      const ph = document.createElement('option');\n      ph.value = ''; ph.textContent = labels.loading; ph.disabled = true; ph.selected = true;\n      sel.appendChild(ph);\n      sel.addEventListener('focus', () => { sel.style.borderColor = 'var(--accent)'; });\n      sel.addEventListener('blur',  () => { sel.style.borderColor = 'var(--border)'; });\n      sel.addEventListener('change', () => {\n        goalKeys.forEach(k => {\n          if (k !== key) {\n            selects[k].selectedIndex = -1;\n          }\n        });\n        checkReady();\n      });\n      group.appendChild(lbl);\n      group.appendChild(sel);\n      selects[key] = sel;\n      return group;\n    }\n    goalKeys.forEach((key, i) => {\n      dropdownRow.appendChild(makeGoalSelect(key, goalLabels[i]));\n    });\n    wrap.appendChild(dropdownRow);\n    fetchMaterialOptions().then(groups => {\n      goalKeys.forEach(key => {\n        const sel = selects[key];\n        const items = groups[key] || [];\n        sel.innerHTML = '';\n        items.forEach(item => {\n          const o = document.createElement('option');\n          o.value = item.name; o.textContent = item.label;\n          sel.appendChild(o);\n        });\n        const phOpt = document.createElement('option');\n        phOpt.value = '';\n        phOpt.textContent = lang === 'de' ? '\u2013 w\u00e4hlen \u2013' : '\u2013 select \u2013';\n        phOpt.disabled = true;\n        phOpt.selected = true;\n        sel.insertBefore(phOpt, sel.firstChild);\n        sel.disabled = false;\n      });\n      checkReady();\n    });\n    const confirmBtn = document.createElement('button');\n    confirmBtn.type = 'button';\n    confirmBtn.className = 'pg-followup-btn pg-primary';\n    confirmBtn.textContent = labels.confirm;\n    confirmBtn.disabled = true;\n    confirmBtn.style.cssText = 'margin-top:4px;width:100%;';\n    function checkReady() {\n      confirmBtn.disabled = !topicInput.value.trim();\n    }\n    topicInput.addEventListener('input', checkReady);\n    confirmBtn.addEventListener('click', () => {\n      document.getElementById('pg-form')?.style.setProperty('display', 'flex');\n      const topic = topicInput.value.trim();\n      if (!topic) {\n        topicInput.style.borderColor = 'red';\n        topicInput.placeholder = lang === 'de' ? 'Bitte Thema eingeben!' : 'Please enter a topic!';\n        topicInput.focus();\n        return;\n      }\n      topicInput.style.borderColor = 'var(--border)';\n      let selectedGoal = '';\n      let selectedTemplate = '';\n      goalKeys.forEach(key => {\n        const val = selects[key].value;\n        if (val && val !== '__skip__' && val !== '') {\n          selectedGoal     = key;\n          selectedTemplate = val;\n        }\n      });\n      container.remove();\n      let combined = topic;\n      if (selectedGoal)     combined += ' | goal:' + selectedGoal;\n      if (selectedTemplate) combined += ' | template:' + selectedTemplate;\n      textBubble(topic, 'user');\n      ask(combined);\n    });\n    wrap.appendChild(confirmBtn);\n    \n    container.appendChild(wrap);\n    log.appendChild(container);\n    scrollToBottom();\n    topicInput.focus();\n    document.querySelector('.pg-hints')?.style.setProperty('opacity', '0.25');\n    \/\/ Hide normal chat input while pipe-form is active\n    document.getElementById('pg-form')?.style.setProperty('display', 'none');\n  }\n  \n  function renderAnswer(text, downloadUrl = null) {\n    if (detectPlanQuestion(text)) { renderPlanDropdowns(); return; }\n   if (detectMaterialQuestion(text)) {\n      const topicMatch = (text || '').match(\/<!--PG_TOPIC:(.+?)-->\/);\n      const prefillTopic = topicMatch ? topicMatch[1].trim() : '';\n      renderMaterialForm(prefillTopic);\n      return;\n    }\n    \/\/ Strip PG_TOPIC marker if it didn't trigger material form\n    if (typeof text === 'string') {\n      text = text.replace(\/<!--PG_TOPIC:.+?-->\/g, '').trim();\n    }\n    const options = parseFollowupOptions(text || '');\n    \n    const hasOptions = options.length >= 2;\n    const displayText = hasOptions ? cleanTextFromOptions(text) : text;\n    if (displayText && displayText.trim()) row(linkify(displayText), 'bot');\n    if (downloadUrl) {\n      const safe = downloadUrl.replace(\/\"\/g, '&quot;');\n      const dlRow = row('<div class=\"pg-download\"><a href=\"' + safe + '\" target=\"_blank\" rel=\"noopener noreferrer\">\ud83d\udcc4 Download your file<\/a><\/div>', 'bot');\n      if (dlRow) dlRow.querySelector('.pg-bubble')?.classList.add('pg-flat');\n    }\n    if (hasOptions) renderFollowupButtons(options);\n    if (!downloadUrl && typeof text === 'string') {\n      const m = text.match(\/(?:^|\\n)\\s*Download(?:\\s+your\\s+file)?\\s*:\\s*(https?:\\\/\\\/\\S+)\/i);\n      if (m) {\n        const dlRow = row('<div class=\"pg-download\"><a href=\"' + m[1].replace(\/\"\/g,'&quot;') + '\" target=\"_blank\" rel=\"noopener noreferrer\">\ud83d\udcc4 Download your file<\/a><\/div>', 'bot');\n        if (dlRow) dlRow.querySelector('.pg-bubble')?.classList.add('pg-flat');\n      }\n    }\n  }\n  let started = false;\n  document.addEventListener('click', function(ev) {\n    const el = ev.target.closest('[data-pg-utter]');\n    if (!el) return;\n    ev.preventDefault();\n    hideTagline();\n    if (send?.disabled || input?.disabled) return;\n    const utter = (el.getAttribute('data-pg-utter') || '').trim();\n    if (!utter) return;\n    document.getElementById('paulina-chat')?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n    if (input) input.value = '';\n    ask(utter, {\n      starter: true,\n      intent: (el.getAttribute('data-pg-intent') || '').trim(),\n      goal: (el.getAttribute('data-pg-goal') || '').trim(),\n      topic: (el.getAttribute('data-pg-topic') || '').trim(),\n      plantype: (el.getAttribute('data-pg-plantype') || '').trim()\n    });\n  });\n  clip?.addEventListener('click', () => { hideTagline(); file?.click(); });\n  file?.addEventListener('change', async () => {\n    if (!file.files || !file.files[0]) return;\n    hideTagline();\n    const f = file.files[0];\n    lock(true);\n    statusEl.textContent = 'uploading ...';\n    const info = textBubble('\ud83d\udcce ' + f.name + ' uploading ...', 'bot');\n    try {\n      const fd = new FormData(); fd.append('file', f);\n      const res = await fetch(UPLOAD_URL, { method: 'POST', body: fd, credentials: 'include', headers: restHeaders() });\n      let data = {}; try { data = await res.json(); } catch (_) {}\n      if (!res.ok || data?.ok === false) {\n        info.querySelector('.pg-bubble').innerHTML = '\u274c ' + (data?.error || data?.data?.error || data?.message || 'Upload failed.');\n      } else {\n        info.querySelector('.pg-bubble').innerHTML = '\ud83d\udcce ' + (data.title || f.name) + ' ready!';\n        window._pgUploadedTopic = (data.title || f.name).replace(\/\\.[^.]+$\/, '').replace(\/[-_]\/g, ' ').trim();\n      }\n    } catch (e) {\n        console.error(e); info.querySelector('.pg-bubble').innerHTML = '\u274c Upload failed'; }\n    finally { lock(false); file.value = ''; }\n  });\n  input?.addEventListener('keydown', (ev) => {\n    if (ev.key === 'Enter' && !ev.shiftKey) {\n      ev.preventDefault(); hideTagline();\n      if (form?.requestSubmit) form.requestSubmit(); else form?.dispatchEvent(new Event('submit', { cancelable: true }));\n    }\n  });\n  input?.addEventListener('focus', () => hideTagline());\n  form?.addEventListener('submit', async (ev) => {\n    ev.preventDefault(); hideTagline();\n    const q = (input.value || '').trim(); if (!q) return;\n    textBubble(q, 'user'); input.value = ''; await ask(q);\n  });\n  reset?.addEventListener('click', async () => {\n    log.innerHTML = '';\n    input.value = '';\n    document.getElementById('pg-material-form')?.remove();\n    document.getElementById('pg-plan-dropdowns')?.remove();\n    document.getElementById('pg-form')?.style.setProperty('display', 'flex');\n    document.querySelector('.pg-hints')?.style.setProperty('opacity', '1');\n    input.focus(); started = false;\n    try { await fetch(API_ROOT + '\/paulina\/v1\/reset', { method: 'POST', credentials: 'include', headers: restHeaders() }); } catch (_) {}\n  });\n  document.addEventListener('pg-marketing-trigger', (ev) => {\n    hideTagline();\n    const { utter, intent, goal, topic, plantype } = ev.detail || {};\n    if (utter) ask(utter, { starter: true, intent, goal, topic, plantype });\n  });\n  async function ask(prompt, meta = {}) {\n    lock(true);\n    console.log('ASK called with:', prompt);\n    const wait = typing();\n    try {\n    const urlLang = location.pathname.match(\/^\\\/(en|de|fr|es|it|pt|pl|uk|hu|tr|ru|fi|nl|sv|no|da|cs|sk|ro|hr|sl|bg|sr|mk|el|ar|he|hi|zh|ja|ko|vi|id|ms|th|lo|km|my|bn|ta|te|mr|gu|kn|ml|pa|ur|ne|si|fa|ps|sw|am|ha|yo|ig|zu|xh|sn|rw|lg|cy|ga|gd|mt|eu|ca|gl|lv|lt|et|kk|ky|mn|tl|sm|to|fj|mi)\\\/\/)?.[1] || document.documentElement.lang?.slice(0,2).toLowerCase() || null;\n      const req = { utter: prompt, prompt, live: true, starter: !!meta.starter, intent: meta.intent||undefined, goal: meta.goal||undefined, topic: meta.topic||undefined, plantype: meta.plantype||undefined, trial_mode: TRIAL_MODE, trial_minutes: TRIAL_MINUTES, lang_override: urlLang || undefined };\n      if (!started || meta.forceReset) { req.reset = true; started = true; }\n      const controller = new AbortController();\n      const t = setTimeout(() => controller.abort(), 180000);\n      let res;\n      try { res = await fetch(CHAT_URL, { method: 'POST', credentials: 'include', headers: restHeaders({ 'Content-Type': 'application\/json' }), body: JSON.stringify(req), signal: controller.signal }); }\n      finally { clearTimeout(t); }\n      let json = {}; try { json = await res.json(); } catch (_) {}\n      const env = (json && typeof json === 'object') ? json : {};\n      const payload = (env.data && typeof env.data === 'object') ? env.data : env;\n      if (payload.mode === 'trial_expired') {\n        const msg = payload.trial_reason === 'download'\n          ? \"Your trial has ended.\\n\\nChoose how you would like to continue with Paulina.\"\n          : \"Deine Testzeit ist beendet.\\n\\nW\u00e4hle jetzt, wie du mit Paulina weiterarbeiten m\u00f6chtest.\";\n        textBubble(msg, 'bot');\n        const regRow = document.createElement('div');\n        regRow.className = 'pg-row pg-left';\n        regRow.innerHTML = '<a href=\"' + REGISTER_URL + '\" class=\"pg-hint\" style=\"text-decoration:none;\">Register<\/a>';\n        log.appendChild(regRow);\n        input.disabled = send.disabled = clip.disabled = true;\n        setTimeout(() => { window.location.href = REGISTER_URL; }, 10000);\n        return;\n      }\n      if (payload.mode === 'reset') {\n        log.innerHTML = ''; started = false;\n        if (wait?.remove) wait.remove(); lock(false); input.focus(); showTagline(); return;\n      }\n      if (payload.mode === 'wait') return;\n      renderAnswer(\n        (typeof payload.answer === 'string') ? payload.answer : (env.message || ''),\n        (typeof payload.download_url === 'string' && payload.download_url.length > 0) ? payload.download_url : null\n      );\n    } catch (e) {\n      console.error('Chat API call failed:', e);\n      textBubble('Something went wrong. Please try again.', 'bot');\n    } finally {\n      if (wait?.remove) wait.remove(); lock(false); input.focus();\n    }\n  }\n  window.paulinaStarterPack = function() {\n    hideTagline();\n    document.getElementById('paulina-chat')?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    setTimeout(() => { document.dispatchEvent(new CustomEvent('pg-marketing-trigger', { detail: { utter: 'I need a year plan for the new school year', intent: 'planning' } })); }, 500);\n  };\n\n  window.addEventListener('load', function() {\n  const params = new URLSearchParams(window.location.search);\n  const start = params.get('start');\n  if (!start) return;\n  \n  const topic = params.get('topic') || '';\n  const goal = params.get('goal') || '';\n  const utter = params.get('utter') || '';\n  const intent = params.get('intent') || 'material';\n  \n  setTimeout(() => {\n    \n    if (start === 'explicit' && utter) {\n  document.dispatchEvent(new CustomEvent('pg-marketing-trigger', { \n    detail: { utter: utter, intent: intent, l2: params.get('l2') || 'no', age: params.get('age') || '' }\n  }));\n  return;\n}\n    \n    const map = {\n      'jahresplan': { utter: 'I need to plan a lesson', intent: 'planning', plantype: 'time' },\n      'themenplan': { utter: 'I need to plan a topic', intent: 'planning', plantype: 'topic' },\n      'stunde':     { utter: 'I need to plan a lesson', intent: 'planning', plantype: 'lesson' },\n      'material':   { utter: 'I need to create teaching material', intent: 'material' },\n      'emergency':  { utter: 'I need quick help for tomorrow', intent: 'emergency' },\n      'activate':   { utter: 'I need to create teaching material', intent: 'material', goal: 'activation' },\n      'practice':   { utter: 'I need to create teaching material', intent: 'material', goal: 'practice' },\n      'apply':      { utter: 'I need to create teaching material', intent: 'material', goal: 'transfer' },\n      'check':      { utter: 'I need to create teaching material', intent: 'material', goal: 'check' }\n    };\n    \n    const detail = map[start];\n    if (detail) {\n      if (topic) detail.topic = topic;\n      if (goal) detail.goal = goal;\n      document.dispatchEvent(new CustomEvent('pg-marketing-trigger', { detail }));\n    }\n    \n  }, 3000);\n});\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-31fa04e e-con-full e-flex e-con e-child\" data-id=\"31fa04e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ce0b5df elementor-widget elementor-widget-video\" data-id=\"ce0b5df\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/youtu.be\\\/f3J1ojrbeNY&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fc00975 elementor-widget elementor-widget-eael-content-ticker\" data-id=\"fc00975\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-content-ticker.default\">\n\t\t\t\t\t<div class=\"eael-ticker-wrap\" id=\"eael-ticker-wrap-fc00975\"><div class=\"ticker-badge\">\n                    <span>Aktuell<\/span>\n                <\/div><div class=\"eael-ticker\">\n                <div class=\"swiper swiper-8 eael-content-ticker swiper-container-fc00975\" data-pagination=\".swiper-pagination-fc00975\" data-arrow-next=\".swiper-button-next-fc00975\" data-arrow-prev=\".swiper-button-prev-fc00975\" data-effect=\"slide\" data-speed=\"3000\" data-autoplay=\"714\" data-loop=\"1\" data-arrows=\"1\">\n                    <div class=\"swiper-wrapper\"><div class=\"swiper-slide\">\n        <div class=\"ticker-content\">\n            <a href=\"https:\/\/paulinagreen.com\/en\/schweden-investiert-104-millionen-euro-fuer-buecher-zurueck-in-die-schulen-was-die-ki-welt-daraus-lernen-muss-und-was-teacher-first-bedeutet\/\" class=\"ticker-content-link\">Schweden investiert 104 Millionen Euro f\u00fcr B\u00fccher zur\u00fcck in die Schulen. Was die KI-Welt daraus lernen muss \u2014 und was &#8218;Teacher First&#8216; bedeutet<\/a>\n        <\/div>\n    <\/div><div class=\"swiper-slide\">\n        <div class=\"ticker-content\">\n            <a href=\"https:\/\/paulinagreen.com\/en\/der-digital-skills-gap-im-klassenzimmer-warum-herkoemmliche-ki-tools-lehrkraefte-im-stich-lassen\/\" class=\"ticker-content-link\">Der Digital Skills Gap im Klassenzimmer: Warum herk\u00f6mmliche KI-Tools Lehrkr\u00e4fte im Stich lassen<\/a>\n        <\/div>\n    <\/div><div class=\"swiper-slide\">\n        <div class=\"ticker-content\">\n            <a href=\"https:\/\/paulinagreen.com\/en\/schueler-sind-mit-ki-weiter-was-die-forschung-wirklich-sagt-2\/\" class=\"ticker-content-link\">Sch\u00fcler sind mit KI weiter \u2013 was die Forschung wirklich sagt<\/a>\n        <\/div>\n    <\/div><div class=\"swiper-slide\">\n        <div class=\"ticker-content\">\n            <a href=\"https:\/\/paulinagreen.com\/en\/ki-fur-den-unterricht\/\" class=\"ticker-content-link\">KI f\u00fcr den Unterricht \u2013 Differenzieren und Zeit sparen.<\/a>\n        <\/div>\n    <\/div><\/div>\n\t\t\t\t<\/div> <div class=\"content-ticker-pagination\"><div class=\"swiper-button-next swiper-button-next-fc00975\"><svg class=\"e-font-icon-svg e-fas-angle-right\" viewBox=\"0 0 256 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"><\/path><\/svg><\/div><div class=\"swiper-button-prev swiper-button-prev-fc00975\"><svg class=\"e-font-icon-svg e-fas-angle-left\" viewBox=\"0 0 256 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"><\/path><\/svg><\/div><\/div><\/div>\n\t\t<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7724341 e-flex e-con-boxed e-con e-parent\" data-id=\"7724341\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6d6d20d e-con-full e-flex e-con e-child\" data-id=\"6d6d20d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-3b4ac39 e-con-full e-flex e-con e-child\" data-id=\"3b4ac39\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8f87a49 elementor-widget elementor-widget-text-editor\" data-id=\"8f87a49\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Keine Speicherung der Chat-Inhalte durch Paulina Gr\u00fcn<\/p><p>DSGVO-orientiert &amp; in der EU gehostet<\/p><p>Einfach und leicht zu handhaben<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e274212 e-con-full e-flex e-con e-child\" data-id=\"e274212\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-01c5d95 elementor-widget elementor-widget-text-editor\" data-id=\"01c5d95\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Sofort p\u00e4dagogisch durchdachte Inhalte<\/p><p>Flexibel f\u00fcr Niveau, Sprache und Situation<\/p><p>Unterst\u00fctzt bei Durchf\u00fchrung und Differenzierung<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Sag Paulina dein Thema. Sie plant und erstellt f\u00fcr deinen Schulalltag. Von Jahresplan bis Test. \ud83d\udc47 oder w\u00e4hle einen Button Jahres- &#038; Themenplan Stundeninhalte Stunde retten Reset Aktuell Schweden investiert 104 Millionen Euro f\u00fcr B\u00fccher zur\u00fcck in die Schulen. Was die KI-Welt daraus lernen muss \u2014 und was &#8218;Teacher First&#8216; bedeutet Der Digital Skills Gap [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_surecart_dashboard_logo_width":"180px","_surecart_dashboard_show_logo":true,"_surecart_dashboard_navigation_orders":true,"_surecart_dashboard_navigation_invoices":true,"_surecart_dashboard_navigation_subscriptions":true,"_surecart_dashboard_navigation_downloads":true,"_surecart_dashboard_navigation_billing":true,"_surecart_dashboard_navigation_account":true,"footnotes":""},"class_list":["post-9356","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/paulinagreen.com\/en\/wp-json\/wp\/v2\/pages\/9356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paulinagreen.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/paulinagreen.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/paulinagreen.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paulinagreen.com\/en\/wp-json\/wp\/v2\/comments?post=9356"}],"version-history":[{"count":1765,"href":"https:\/\/paulinagreen.com\/en\/wp-json\/wp\/v2\/pages\/9356\/revisions"}],"predecessor-version":[{"id":27393,"href":"https:\/\/paulinagreen.com\/en\/wp-json\/wp\/v2\/pages\/9356\/revisions\/27393"}],"wp:attachment":[{"href":"https:\/\/paulinagreen.com\/en\/wp-json\/wp\/v2\/media?parent=9356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}