<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Partner &#8211; checkdich</title>
	<atom:link href="https://checkdich.at/category/category-dein-partner-im-check/feed/" rel="self" type="application/rss+xml" />
	<link>https://checkdich.at</link>
	<description></description>
	<lastBuildDate>Fri, 01 May 2026 20:59:26 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://checkdich.at/wp-content/uploads/2026/04/favicon-150x150.png</url>
	<title>Partner &#8211; checkdich</title>
	<link>https://checkdich.at</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ist mein Partner toxisch?</title>
		<link>https://checkdich.at/category-dein-partner-im-check/ist-mein-partner-toxisch-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 20:58:18 +0000</pubDate>
				<category><![CDATA[Partner]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1876</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1876">.elementor-1876 .elementor-element.elementor-element-a3f50eb{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1876" class="elementor elementor-1876" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-a3f50eb e-flex e-con-boxed e-con e-parent" data-id="a3f50eb" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-387056e elementor-widget elementor-widget-html" data-id="387056e" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.dep-test-wrap{
  max-width: 860px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7ecf3;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  font-family: Arial, sans-serif;
  color: #1f2937;
}

.dep-test-header{
  margin-bottom: 24px;
}

.dep-test-title{
  margin: 0 0 10px 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
  color: #111827;
}

.dep-test-intro{
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: #4b5563;
}

.dep-test-error{
  display: none;
  margin: 0 0 22px 0;
  padding: 14px 16px;
  border: 1px solid #f3c2c2;
  background: #fff4f4;
  color: #9f1d1d;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}

.dep-question{
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fbfcfe;
}

.dep-question-title{
  margin: 0 0 14px 0;
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  color: #111827;
}

.dep-answer{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid #dde5ef;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.dep-answer:hover{
  border-color: #bfd0e6;
  background: #f8fbff;
}

.dep-answer input{
  margin: 0;
  flex: 0 0 auto;
}

.dep-answer-text{
  font-size: 15px;
  line-height: 1.45;
  color: #1f2937;
}

.dep-actions{
  margin-top: 24px;
}

.dep-btn{
  display: inline-block;
  width: 100%;
  border: 0;
  border-radius: 14px;
  padding: 15px 18px;
  background: #2563eb;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.18);
}

.dep-btn:hover{
  background: #1d4ed8;
}

.dep-btn:focus{
  outline: 3px solid rgba(37, 99, 235, 0.2);
  outline-offset: 2px;
}

.dep-btn:active{
  transform: translateY(1px);
}

.dep-btn-secondary{
  margin-top: 12px;
  background: #e5e7eb;
  color: #1f2937;
  box-shadow: none;
}

.dep-btn-secondary:hover{
  background: #dbe1e8;
}

.dep-result{
  display: none;
  margin-top: 30px;
  padding-top: 10px;
}

.dep-result-hero{
  padding: 24px 20px;
  border-radius: 18px;
  margin-bottom: 18px;
  text-align: center;
  border: 1px solid transparent;
}

.dep-result-hero--low{
  background: #eef6ff;
  border-color: #cfe3ff;
}

.dep-result-hero--mild{
  background: #f4f8ff;
  border-color: #d9e7ff;
}

.dep-result-hero--mid{
  background: #fff7e8;
  border-color: #f4ddb0;
}

.dep-result-hero--high{
  background: #fff0f0;
  border-color: #f1c6c6;
}

.dep-result-title{
  margin: 0;
  font-size: 31px;
  line-height: 1.15;
  font-weight: 800;
  color: #111827;
}

.dep-result-subtitle{
  margin: 12px auto 0 auto;
  max-width: 680px;
  font-size: 17px;
  line-height: 1.6;
  color: #374151;
}

.dep-card{
  margin-bottom: 14px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fff;
}

.dep-card-heading{
  margin: 0 0 10px 0;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #475569;
}

.dep-card-text{
  font-size: 15px;
  line-height: 1.7;
  color: #1f2937;
}

.dep-card-text p{
  margin: 0 0 12px 0;
}

.dep-card-text p:last-child{
  margin-bottom: 0;
}

.dep-advice-list{
  margin: 0;
  padding-left: 18px;
}

.dep-advice-list li{
  margin: 0 0 8px 0;
  line-height: 1.6;
}

.dep-links-grid{
  display: grid;
  gap: 10px;
}

.dep-link-card{
  display: block;
  padding: 14px 16px;
  border: 1px solid #dbe5f0;
  border-radius: 14px;
  text-decoration: none;
  background: #f8fbff;
  color: #0f172a;
  font-weight: 700;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.dep-link-card:hover{
  border-color: #bfd0e6;
  background: #f1f7ff;
  transform: translateY(-1px);
}

.dep-score-meta{
  margin-top: 16px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 700;
  color: #334155;
  text-align: center;
}

.dep-result-note{
  display: none;
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: #475569;
  text-align: center;
}

@media (max-width: 640px){
  .dep-test-wrap{
    padding: 18px;
    border-radius: 14px;
  }

  .dep-test-title{
    font-size: 25px;
  }

  .dep-result-title{
    font-size: 26px;
  }

  .dep-result-subtitle{
    font-size: 16px;
  }

  .dep-question{
    padding: 14px;
  }

  .dep-answer{
    padding: 11px 12px;
  }

  .dep-score-meta{
    font-size: 17px;
  }
}
</style>

<div class="dep-test-wrap" id="depTestWrap">
  <div class="dep-test-header">
    <h1 class="dep-test-title" id="depTestTitle"></h1>
    <p class="dep-test-intro" id="depTestIntro"></p>
  </div>

  <div class="dep-test-error" id="depTestError"></div>

  <div id="depTestQuestions"></div>

  <div class="dep-actions">
    <button class="dep-btn" id="depTestSubmit" type="button">Ergebnis anzeigen</button>
    <button class="dep-btn dep-btn-secondary" id="depTestReset" type="button">Zurücksetzen</button>
  </div>

  <div class="dep-result" id="depTestResult">
    <div class="dep-result-hero" id="depResultHero">
      <h3 class="dep-result-title" id="depResultTitle"></h3>
      <div class="dep-result-subtitle" id="depResultSubtitle"></div>
      <div class="dep-score-meta" id="depScoreMeta"></div>
      <div class="dep-result-note" id="depResultNote"></div>
    </div>

```
<div class="dep-card">
  <div class="dep-card-heading">Einordnung</div>
  <div class="dep-card-text" id="depResultTextCombined"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Worauf du jetzt achten kannst</div>
  <div class="dep-card-text" id="depHelpText"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Passende nächste Tests</div>
  <div class="dep-links-grid" id="depLinks"></div>
</div>
```

  </div>
</div>

<script>
const TEST_DATA = {
  title: "Ist mein Partner toxisch?",
  intro: "Gibt es in eurer Beziehung Momente, in denen du dich klein, verunsichert oder emotional ausgelaugt fühlst – ohne genau benennen zu können, warum? Finde heraus, ob hinter diesen Erfahrungen toxische Muster in der Dynamik mit deinem Partner stecken könnten..",
  testType: "risk",
questions: [
{
text: "Wenn ihr nach einem Streit wieder miteinander sprecht, vermeidet dein Partner das Thema oder tut so, als wäre nichts gewesen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Dein Partner reagiert gereizt oder genervt, wenn du ihn um Unterstützung im Alltag bittest (z. B. bei Organisation, Terminen oder Problemen).",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner schlechte Laune hat, bekommst du das deutlich zu spüren, auch wenn du nichts damit zu tun hast.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Dein Partner entscheidet in Alltagssituationen (z. B. Planung, Aktivitäten, Tagesablauf) oft einfach, ohne dich wirklich einzubeziehen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Dein Partner reagiert abwertend oder genervt, wenn du emotional wirst oder über deine Gefühle sprechen möchtest.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du dich auf etwas freust (z. B. Treffen, Pläne), macht dein Partner die Situation durch Kommentare oder Verhalten spürbar schlechter.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Dein Partner verhält sich dir gegenüber in bestimmten Momenten (z. B. unter Stress oder Ärger) deutlich respektloser als gegenüber anderen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nach gemeinsamen Unternehmungen (z. B. Treffen, Ausflüge oder Abende zusammen) gehst du mit einem unguten Gefühl nach Hause, ohne dass ihr darüber gesprochen habt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du ein Thema ansprichst, das dir wichtig ist, wirkt dein Partner schnell genervt oder abweisend, sodass das Gespräch kaum Raum bekommt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "In Konflikten wird dein Partner schnell laut, abwertend oder verletzend, statt ruhig im Gespräch zu bleiben.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "In Gesprächen oder beim Schreiben mit deinem Partner beendest du Themen schneller, sagst weniger oder gehst nicht weiter darauf ein, obwohl dich etwas beschäftigt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nachdem ihr Zeit miteinander verbracht habt (z. B. Gespräch, Treffen oder Telefonat), fühlst du dich erschöpft oder ausgelaugt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
}
],
  results: {
    low: {
      badge: "Geringe Hinweise",
      title: "Kaum toxische Muster erkennbar",
      subtitle: "Deine Antworten sprechen eher nicht für eine deutlich toxische Dynamik bei deinem Partner.",
      text1: "Im Moment zeigen sich kaum Hinweise darauf, dass dein Partner wiederkehrend abwertend, kontrollierend oder psychisch belastend auf dich einwirkt. Einzelne schwierige Situationen kommen in fast jeder Beziehung vor und bedeuten für sich allein noch keine toxische Struktur.",
      text2: "Wichtig ist trotzdem, wie du dich in der Beziehung insgesamt fühlst. Auch bei einem niedrigen Ergebnis kann es sinnvoll sein, auf Respekt, Verlässlichkeit und dein eigenes Sicherheitsgefühl zu achten. Entscheidend ist nicht nur, was dein Partner sagt, sondern was wiederholt zwischen euch passiert.",
      advice: [
        "Achte weiter darauf, ob Konflikte bei euch grundsätzlich respektvoll lösbar bleiben.",
        "Nimm dein eigenes Gefühl nach Gesprächen ernst, auch wenn das Gesamtergebnis unauffällig ist.",
        "Beobachte, ob Grenzen beidseitig akzeptiert werden oder sich erste Schieflagen entwickeln."
      ],
      links: [
        {
          slug: "ist-mein-partner-egoistisch-test",
          title: "Ist mein Partner egoistisch?",
          url: "/dein-partner-im-check/ist-mein-partner-egoistisch-test"
        },
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        }
      ]
    },
    mid: {
      badge: "Erste Warnzeichen",
      title: "Erste problematische Muster",
      subtitle: "Deine Antworten zeigen erste Hinweise auf belastende Verhaltensweisen bei deinem Partner.",
      text1: "Das Ergebnis deutet darauf hin, dass bestimmte Situationen in eurer Beziehung nicht einfach nur anstrengend, sondern wiederkehrend irritierend oder kräftezehrend sein könnten. Vor allem dann, wenn du dich nach Gesprächen klein, verunsichert oder verantwortlich für alles fühlst, lohnt sich ein genauerer Blick.",
      text2: "Noch spricht das Ergebnis nicht zwingend für eine stark toxische Gesamtdynamik. Aber es zeigt, dass etwas bei euch nicht ganz stabil oder gesund wirkt. Gerade frühe Muster werden oft verharmlost, obwohl sie mit der Zeit stärker werden können, wenn sie nie klar benannt werden.",
      advice: [
        "Beobachte konkrete Situationen statt nur auf Entschuldigungen oder gute Phasen zu schauen.",
        "Notiere dir, nach welchen Gesprächen oder Konflikten du dich besonders verunsichert fühlst.",
        "Prüfe, ob du in der Beziehung deine Grenzen noch klar vertreten kannst."
      ],
      links: [
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Deutliche Hinweise",
      title: "Mehrere toxische Muster erkennbar",
      subtitle: "Deine Antworten sprechen für eine spürbar belastende Dynamik mit mehreren Warnsignalen.",
      text1: "Hier geht es wahrscheinlich nicht mehr nur um einzelne schlechte Momente. Mehrere deiner Antworten deuten darauf hin, dass dein Partner wiederkehrend Grenzen verschiebt, Verantwortung verdreht, Druck aufbaut oder dich emotional verunsichert. Solche Muster können auf Dauer sehr zermürbend sein.",
      text2: "Ein toxisches Verhalten muss nicht ständig extrem sein, um schädlich zu wirken. Schon eine Mischung aus Abwertung, Kontrolle, Rückzug, Schuldumkehr und Unsicherheit kann dazu führen, dass du dich selbst immer weniger ernst nimmst. Genau das macht solche Dynamiken oft so schwer greifbar.",
      advice: [
        "Nimm wiederkehrende Muster ernst, auch wenn dazwischen gute Phasen liegen.",
        "Sprich mit einer außenstehenden Vertrauensperson über konkrete Situationen statt nur über dein Gesamtgefühl.",
        "Achte darauf, ob du dich zunehmend anpasst, kleiner machst oder innerlich unter Druck stehst.",
        "Prüfe, welche Grenzen du brauchst und was passiert, wenn du sie klar setzt."
      ],
      links: [
        {
          slug: "ist-mein-partner-manipulativ-test",
          title: "Ist mein Partner manipulativ?",
          url: "/dein-partner-im-check/ist-mein-partner-manipulativ-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-bindungsangst-test",
          title: "Hat mein Partner Bindungsangst?",
          url: "/dein-partner-im-check/hat-mein-partner-bindungsangst-test"
        }
      ]
    },
    veryHigh: {
      badge: "Starke Warnsignale",
      title: "Es zeigen sich starke toxische Muster",
      subtitle: "Deine Antworten sprechen für eine ernsthaft belastende Dynamik, die du nicht kleinreden solltest.",
      text1: "Das Ergebnis deutet auf viele klare Warnsignale hin. Wenn dein Partner dich wiederholt verunsichert, klein macht, emotional unter Druck setzt oder Gespräche so verdreht, dass du dich selbst infrage stellst, kann das eine deutlich toxische Struktur sein. Solche Muster greifen oft schleichend das Selbstwertgefühl und das Sicherheitsgefühl an.",
      text2: "Wichtig ist: Du musst nicht warten, bis etwas völlig eskaliert, um deine Wahrnehmung ernst zu nehmen. Wenn du dich regelmäßig angespannt, unsicher, schuldig oder innerlich vorsichtig fühlst, ist das bereits ein relevantes Signal. Nicht jede toxische Dynamik ist laut oder offensichtlich. Manche wirken gerade deshalb so stark, weil sie dauerhaft und subtil sind.",
      advice: [
        "Vertraue deiner Wahrnehmung und spiele belastende Muster nicht als Einzelfälle herunter.",
        "Hole dir Rückmeldung von Menschen, die dir wohlwollend und klar begegnen.",
        "Überlege dir, welche Situationen für dich klare Grenzen überschreiten und was du dann konkret tust.",
        "Wenn du dich emotional stark unter Druck gesetzt oder dauerhaft entwertet fühlst, kann professionelle Unterstützung hilfreich sein."
      ],
      links: [
        {
          slug: "ist-mein-partner-narzisstisch-test",
          title: "Ist mein Partner narzisstisch?",
          url: "/dein-partner-im-check/ist-mein-partner-narzisstisch-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-psychopathische-zuege-test",
          title: "Hat mein Partner psychopathische Züge?",
          url: "/dein-partner-im-check/hat-mein-partner-psychopathische-zuege-test"
        }
      ]
    }
  }
};

(function () {
  "use strict";

  if (typeof TEST_DATA === "undefined") {
    const errorBox = document.getElementById("depTestError");
    errorBox.style.display = "block";
    errorBox.textContent = "Fehler: TEST_DATA wurde nicht gefunden. Die Engine braucht gültige Testdaten.";
    return;
  }

  const REQUIRED_TOP_LEVEL_FIELDS = ["title", "intro", "questions", "results", "testType"];
  const REQUIRED_RESULT_KEYS = ["low", "mid", "high", "veryHigh"];
  const REQUIRED_RESULT_FIELDS = ["badge", "title", "subtitle", "text1", "text2", "advice", "links"];
  const ALLOWED_TEST_TYPES = ["risk", "standard", "fun"];

  const RED_FLAG_CONFIG = {
    risk: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: true,
      maxThreshold: 3
    },
    standard: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: false,
      maxThreshold: 3
    },
    fun: {
      useHighThreshold: false,
      highThreshold: Infinity,
      useMaxOverride: false,
      maxThreshold: Infinity
    }
  };

  const el = {
    wrap: document.getElementById("depTestWrap"),
    title: document.getElementById("depTestTitle"),
    intro: document.getElementById("depTestIntro"),
    error: document.getElementById("depTestError"),
    questions: document.getElementById("depTestQuestions"),
    submit: document.getElementById("depTestSubmit"),
    reset: document.getElementById("depTestReset"),
    result: document.getElementById("depTestResult"),
    resultHero: document.getElementById("depResultHero"),
    resultTitle: document.getElementById("depResultTitle"),
    resultSubtitle: document.getElementById("depResultSubtitle"),
    scoreMeta: document.getElementById("depScoreMeta"),
    resultNote: document.getElementById("depResultNote"),
    resultTextCombined: document.getElementById("depResultTextCombined"),
    helpText: document.getElementById("depHelpText"),
    links: document.getElementById("depLinks")
  };

  function showError(message) {
    el.error.style.display = "block";
    el.error.textContent = message;
  }

  function clearError() {
    el.error.style.display = "none";
    el.error.textContent = "";
  }

  function escapeHtml(str) {
    return String(str)
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function isNonEmptyString(value) {
    return typeof value === "string" && value.trim() !== "";
  }

  function nl2p(text) {
    return String(text)
      .split(/\n{2,}/)
      .map(part => "<p>" + escapeHtml(part).replace(/\n/g, "<br>") + "</p>")
      .join("");
  }

  function endsWithSlug(url, slug) {
    const cleanUrl = String(url).replace(/\/+$/, "");
    const cleanSlug = String(slug).replace(/^\/+|\/+$/g, "");
    return cleanUrl.endsWith("/" + cleanSlug);
  }

  function validateTestData(data) {
    for (const key of REQUIRED_TOP_LEVEL_FIELDS) {
      if (!(key in data)) {
        return "Fehler: In TEST_DATA fehlt das Pflichtfeld '" + key + "'.";
      }
    }

    if (!isNonEmptyString(data.title)) {
      return "Fehler: TEST_DATA.title ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.intro)) {
      return "Fehler: TEST_DATA.intro ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.testType) || !ALLOWED_TEST_TYPES.includes(data.testType)) {
      return "Fehler: TEST_DATA.testType ist ungültig. Erlaubt sind: risk, standard, fun.";
    }

    if (!Array.isArray(data.questions) || data.questions.length !== 12) {
      return "Fehler: TEST_DATA.questions muss genau 12 Fragen enthalten.";
    }

    for (let i = 0; i < data.questions.length; i++) {
      const q = data.questions[i];

      if (!q || !isNonEmptyString(q.text)) {
        return "Fehler: Frage " + (i + 1) + " hat keinen gültigen Text.";
      }

      if (!Array.isArray(q.answers) || q.answers.length !== 5) {
        return "Fehler: Frage " + (i + 1) + " muss genau 5 Antworten haben.";
      }

      const values = q.answers.map(a => a.value);
      const expected = [0, 1, 2, 3, 4];

      if (JSON.stringify(values) !== JSON.stringify(expected)) {
        return "Fehler: Frage " + (i + 1) + " hat keine gültigen Antwortwerte von 0 bis 4.";
      }

      for (let j = 0; j < q.answers.length; j++) {
        if (!isNonEmptyString(q.answers[j].text)) {
          return "Fehler: Frage " + (i + 1) + ", Antwort " + (j + 1) + " hat keinen gültigen Text.";
        }
      }
    }

    if (typeof data.results !== "object" || data.results === null) {
      return "Fehler: TEST_DATA.results ist ungültig.";
    }

    for (const key of REQUIRED_RESULT_KEYS) {
      if (!(key in data.results)) {
        return "Fehler: In TEST_DATA.results fehlt der Bereich '" + key + "'. Erwartet werden: low, mid, high, veryHigh.";
      }

      const result = data.results[key];

      if (typeof result !== "object" || result === null) {
        return "Fehler: Der Ergebnisbereich '" + key + "' ist ungültig.";
      }

      for (const field of REQUIRED_RESULT_FIELDS) {
        if (!(field in result)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' fehlt das Feld '" + field + "'.";
        }
      }

      if (!isNonEmptyString(result.badge)) {
        return "Fehler: '" + key + ".badge' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.title)) {
        return "Fehler: '" + key + ".title' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.subtitle)) {
        return "Fehler: '" + key + ".subtitle' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text1)) {
        return "Fehler: '" + key + ".text1' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text2)) {
        return "Fehler: '" + key + ".text2' ist leer oder ungültig.";
      }

      if (!Array.isArray(result.advice) || result.advice.length < 2 || result.advice.length > 4) {
        return "Fehler: '" + key + ".advice' muss 2 bis 4 Punkte enthalten.";
      }

      for (let i = 0; i < result.advice.length; i++) {
        if (!isNonEmptyString(result.advice[i])) {
          return "Fehler: '" + key + ".advice[" + i + "]' ist leer oder ungültig.";
        }
      }

      if (!Array.isArray(result.links) || result.links.length < 2 || result.links.length > 3) {
        return "Fehler: '" + key + ".links' muss 2 bis 3 weiterführende Tests enthalten.";
      }

      const seenSlugs = new Set();

      for (const link of result.links) {
        if (!link || typeof link !== "object") {
          return "Fehler: Ein Link in '" + key + ".links' ist ungültig.";
        }
        if (!isNonEmptyString(link.slug)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Slug.";
        }
        if (!isNonEmptyString(link.title)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Titel.";
        }
        if (!isNonEmptyString(link.url)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keine gültige URL.";
        }
        if (seenSlugs.has(link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' gibt es doppelte Links mit dem Slug '" + link.slug + "'.";
        }
        if (!endsWithSlug(link.url, link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' passt die URL nicht zum Slug '" + link.slug + "'.";
        }

        seenSlugs.add(link.slug);
      }
    }

    return null;
  }

  function renderQuestions(data, userAnswers) {
    let html = "";

    data.questions.forEach((question, qIndex) => {
      const answers = question.answers;

      html += `
        <div class="dep-question">
          <div class="dep-question-title">${qIndex + 1}. ${escapeHtml(question.text)}</div>
      `;

      answers.forEach((answer, aIndex) => {
        const inputId = `depQ${qIndex}A${aIndex}`;
        html += `
          <label class="dep-answer" for="${inputId}">
            <input
              type="radio"
              id="${inputId}"
              name="depQ${qIndex}"
              value="${answer.value}"
              ${userAnswers[qIndex] === answer.value ? "checked" : ""}
            >
            <span class="dep-answer-text">${escapeHtml(answer.text)}</span>
          </label>
        `;
      });

      html += `</div>`;
    });

    el.questions.innerHTML = html;
  }

  function bindAnswerEvents(userAnswers) {
    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');

    radioInputs.forEach(input => {
      input.addEventListener("change", function () {
        const qIndex = Number(this.name.replace("depQ", ""));
        userAnswers[qIndex] = Number(this.value);
        clearError();
      });
    });
  }

  function getStageByScore(score) {
    if (score <= 10) return 0;
    if (score <= 21) return 1;
    if (score <= 33) return 2;
    return 3;
  }

  function applyRedFlagAdjustment(stage, answers, testType) {
    const config = RED_FLAG_CONFIG[testType];
    const highCount = answers.filter(v => v >= 3).length;
    const maxCount = answers.filter(v => v === 4).length;

    let adjustedStage = stage;
    let redFlagTriggered = false;

    if (config.useHighThreshold && highCount >= config.highThreshold) {
      adjustedStage += 1;
      redFlagTriggered = true;
    }

    if (config.useMaxOverride && maxCount >= config.maxThreshold) {
      adjustedStage = 3;
      redFlagTriggered = true;
    }

    if (adjustedStage > 3) {
      adjustedStage = 3;
    }

    return {
      adjustedStage,
      highCount,
      maxCount,
      redFlagTriggered
    };
  }

  function getResultKeyByStage(stage) {
    if (stage === 0) return "low";
    if (stage === 1) return "mid";
    if (stage === 2) return "high";
    return "veryHigh";
  }

  function getHeroClassByStage(stage) {
    if (stage === 0) return "dep-result-hero dep-result-hero--low";
    if (stage === 1) return "dep-result-hero dep-result-hero--mild";
    if (stage === 2) return "dep-result-hero dep-result-hero--mid";
    return "dep-result-hero dep-result-hero--high";
  }

  function renderAdviceList(items) {
    const lis = items.map(item => "<li>" + escapeHtml(item) + "</li>").join("");
    return '<ul class="dep-advice-list">' + lis + "</ul>";
  }

  function renderLinks(links) {
    return links.map(link => {
      return `
        <a class="dep-link-card" href="${escapeHtml(link.url)}" data-slug="${escapeHtml(link.slug)}">
          ${escapeHtml(link.title)}
        </a>
      `;
    }).join("");
  }

  function resetTest(userAnswers) {
    for (let i = 0; i < userAnswers.length; i++) {
      userAnswers[i] = undefined;
    }

    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');
    radioInputs.forEach(input => {
      input.checked = false;
    });

    clearError();
    el.result.style.display = "none";
    el.scoreMeta.textContent = "";
    el.resultNote.textContent = "";
    el.resultNote.style.display = "none";
    el.resultTitle.textContent = "";
    el.resultSubtitle.textContent = "";
    el.resultTextCombined.innerHTML = "";
    el.helpText.innerHTML = "";
    el.links.innerHTML = "";
    el.wrap.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function renderResult(data, score, baseStage, adjustedStage, redFlagTriggered) {
    const key = getResultKeyByStage(adjustedStage);
    const resultData = data.results[key];

    el.resultHero.className = getHeroClassByStage(adjustedStage);
    el.resultTitle.textContent = resultData.title;
    el.resultSubtitle.textContent = resultData.subtitle;
    el.resultTextCombined.innerHTML = nl2p(resultData.text1 + "\n\n" + resultData.text2);
    el.helpText.innerHTML = renderAdviceList(resultData.advice);
    el.links.innerHTML = renderLinks(resultData.links);
    el.scoreMeta.textContent = score + " von 48 Punkten";

    if (redFlagTriggered && adjustedStage > baseStage) {
      el.resultNote.textContent = "Hinweis: Einzelne hohe Antworten wirken sich stärker auf dein Ergebnis aus als der Gesamtwert.";
      el.resultNote.style.display = "block";
    } else {
      el.resultNote.textContent = "";
      el.resultNote.style.display = "none";
    }

    el.result.style.display = "block";
    el.result.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function init() {
    const validationError = validateTestData(TEST_DATA);

    if (validationError) {
      showError(validationError);
      return;
    }

    clearError();

    el.title.textContent = TEST_DATA.title;
    el.intro.textContent = TEST_DATA.intro;

    const userAnswers = new Array(TEST_DATA.questions.length).fill(undefined);

    renderQuestions(TEST_DATA, userAnswers);
    bindAnswerEvents(userAnswers);

    el.submit.addEventListener("click", function () {
      const unanswered = userAnswers
        .map((value, index) => value === undefined ? index + 1 : null)
        .filter(Boolean);

      if (unanswered.length > 0) {
        el.result.style.display = "none";
        showError("Bitte beantworte alle Fragen. Offen: " + unanswered.join(", "));
        el.error.scrollIntoView({ behavior: "smooth", block: "center" });
        return;
      }

      clearError();

      const score = userAnswers.reduce((sum, value) => sum + value, 0);
      const baseStage = getStageByScore(score);
      const redFlagData = applyRedFlagAdjustment(baseStage, userAnswers, TEST_DATA.testType);

      renderResult(
        TEST_DATA,
        score,
        baseStage,
        redFlagData.adjustedStage,
        redFlagData.redFlagTriggered
      );
    });

    el.reset.addEventListener("click", function () {
      resetTest(userAnswers);
    });
  }

  init();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ist mein Partner narzisstisch?</title>
		<link>https://checkdich.at/category-dein-partner-im-check/ist-mein-partner-narzisstisch-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 20:56:35 +0000</pubDate>
				<category><![CDATA[Partner]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1871</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1871">.elementor-1871 .elementor-element.elementor-element-27012ae{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1871" class="elementor elementor-1871" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-27012ae e-flex e-con-boxed e-con e-parent" data-id="27012ae" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-ae8223a elementor-widget elementor-widget-html" data-id="ae8223a" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.dep-test-wrap{
  max-width: 860px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7ecf3;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  font-family: Arial, sans-serif;
  color: #1f2937;
}

.dep-test-header{
  margin-bottom: 24px;
}

.dep-test-title{
  margin: 0 0 10px 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
  color: #111827;
}

.dep-test-intro{
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: #4b5563;
}

.dep-test-error{
  display: none;
  margin: 0 0 22px 0;
  padding: 14px 16px;
  border: 1px solid #f3c2c2;
  background: #fff4f4;
  color: #9f1d1d;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}

.dep-question{
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fbfcfe;
}

.dep-question-title{
  margin: 0 0 14px 0;
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  color: #111827;
}

.dep-answer{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid #dde5ef;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.dep-answer:hover{
  border-color: #bfd0e6;
  background: #f8fbff;
}

.dep-answer input{
  margin: 0;
  flex: 0 0 auto;
}

.dep-answer-text{
  font-size: 15px;
  line-height: 1.45;
  color: #1f2937;
}

.dep-actions{
  margin-top: 24px;
}

.dep-btn{
  display: inline-block;
  width: 100%;
  border: 0;
  border-radius: 14px;
  padding: 15px 18px;
  background: #2563eb;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.18);
}

.dep-btn:hover{
  background: #1d4ed8;
}

.dep-btn:focus{
  outline: 3px solid rgba(37, 99, 235, 0.2);
  outline-offset: 2px;
}

.dep-btn:active{
  transform: translateY(1px);
}

.dep-btn-secondary{
  margin-top: 12px;
  background: #e5e7eb;
  color: #1f2937;
  box-shadow: none;
}

.dep-btn-secondary:hover{
  background: #dbe1e8;
}

.dep-result{
  display: none;
  margin-top: 30px;
  padding-top: 10px;
}

.dep-result-hero{
  padding: 24px 20px;
  border-radius: 18px;
  margin-bottom: 18px;
  text-align: center;
  border: 1px solid transparent;
}

.dep-result-hero--low{
  background: #eef6ff;
  border-color: #cfe3ff;
}

.dep-result-hero--mild{
  background: #f4f8ff;
  border-color: #d9e7ff;
}

.dep-result-hero--mid{
  background: #fff7e8;
  border-color: #f4ddb0;
}

.dep-result-hero--high{
  background: #fff0f0;
  border-color: #f1c6c6;
}

.dep-result-title{
  margin: 0;
  font-size: 31px;
  line-height: 1.15;
  font-weight: 800;
  color: #111827;
}

.dep-result-subtitle{
  margin: 12px auto 0 auto;
  max-width: 680px;
  font-size: 17px;
  line-height: 1.6;
  color: #374151;
}

.dep-card{
  margin-bottom: 14px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fff;
}

.dep-card-heading{
  margin: 0 0 10px 0;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #475569;
}

.dep-card-text{
  font-size: 15px;
  line-height: 1.7;
  color: #1f2937;
}

.dep-card-text p{
  margin: 0 0 12px 0;
}

.dep-card-text p:last-child{
  margin-bottom: 0;
}

.dep-advice-list{
  margin: 0;
  padding-left: 18px;
}

.dep-advice-list li{
  margin: 0 0 8px 0;
  line-height: 1.6;
}

.dep-links-grid{
  display: grid;
  gap: 10px;
}

.dep-link-card{
  display: block;
  padding: 14px 16px;
  border: 1px solid #dbe5f0;
  border-radius: 14px;
  text-decoration: none;
  background: #f8fbff;
  color: #0f172a;
  font-weight: 700;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.dep-link-card:hover{
  border-color: #bfd0e6;
  background: #f1f7ff;
  transform: translateY(-1px);
}

.dep-score-meta{
  margin-top: 16px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 700;
  color: #334155;
  text-align: center;
}

.dep-result-note{
  display: none;
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: #475569;
  text-align: center;
}

@media (max-width: 640px){
  .dep-test-wrap{
    padding: 18px;
    border-radius: 14px;
  }

  .dep-test-title{
    font-size: 25px;
  }

  .dep-result-title{
    font-size: 26px;
  }

  .dep-result-subtitle{
    font-size: 16px;
  }

  .dep-question{
    padding: 14px;
  }

  .dep-answer{
    padding: 11px 12px;
  }

  .dep-score-meta{
    font-size: 17px;
  }
}
</style>

<div class="dep-test-wrap" id="depTestWrap">
  <div class="dep-test-header">
    <h1 class="dep-test-title" id="depTestTitle"></h1>
    <p class="dep-test-intro" id="depTestIntro"></p>
  </div>

  <div class="dep-test-error" id="depTestError"></div>

  <div id="depTestQuestions"></div>

  <div class="dep-actions">
    <button class="dep-btn" id="depTestSubmit" type="button">Ergebnis anzeigen</button>
    <button class="dep-btn dep-btn-secondary" id="depTestReset" type="button">Zurücksetzen</button>
  </div>

  <div class="dep-result" id="depTestResult">
    <div class="dep-result-hero" id="depResultHero">
      <h3 class="dep-result-title" id="depResultTitle"></h3>
      <div class="dep-result-subtitle" id="depResultSubtitle"></div>
      <div class="dep-score-meta" id="depScoreMeta"></div>
      <div class="dep-result-note" id="depResultNote"></div>
    </div>

```
<div class="dep-card">
  <div class="dep-card-heading">Einordnung</div>
  <div class="dep-card-text" id="depResultTextCombined"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Worauf du jetzt achten kannst</div>
  <div class="dep-card-text" id="depHelpText"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Passende nächste Tests</div>
  <div class="dep-links-grid" id="depLinks"></div>
</div>
```

  </div>
</div>

<script>
const TEST_DATA = {
  title: "Ist mein Partner narzisstisch?",
  intro: "Wirkt dein Partner oft übermäßig selbstbezogen, empfindlich auf Kritik oder wenig empathisch? Finde heraus, ob sich dahinter narzisstische Verhaltensmuster verbergen.",
  testType: "risk",
  questions: [
{
text: "Wenn du Kritik äußerst, reagiert dein Partner so, als wäre er persönlich angegriffen worden, und geht kaum auf den Inhalt ein.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du ihm von etwas erzählst, das dich belastet, lenkt dein Partner das Gespräch schnell auf sich oder relativiert dein Thema.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nach Konflikten entsteht bei dir das Gefühl, dass du dich erklären oder rechtfertigen musst, obwohl du ein Problem angesprochen hast.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner etwas gut macht oder Anerkennung bekommt, erwartet er spürbar besondere Aufmerksamkeit oder Bewunderung von dir.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du deinem Partner von einem Erfolg erzählst (z. B. Lob im Job), endet das Gespräch schnell damit, dass er über sich und seine Leistungen spricht.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner dich verletzt hat, stellt er später dar, dass du übertrieben reagierst oder die Situation falsch verstanden hast.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn andere Menschen deinem Partner widersprechen, reagiert er mit Abwertung, Spott oder wirkt deutlich gekränkt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "In Gesprächen entsteht bei dir das Gefühl, dass dein Partner sich selbst als überlegen oder besonders darstellt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner einen Fehler macht, erklärt er ausführlich, warum andere Menschen oder Umstände dafür verantwortlich sind.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner betont, wie wichtig ihm z. B. Respekt oder Fairness sind, passt sein Verhalten dir gegenüber oft nicht dazu.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nach Gesprächen mit deinem Partner bleibst du innerlich damit beschäftigt, ob du etwas falsch gemacht oder überreagiert hast.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner sich angegriffen fühlt, kippt die Stimmung schnell und das Gespräch dreht sich nur noch um seine Perspektive.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
}
],
  results: {
    low: {
      badge: "Stage 0",
      title: "kaum narzisstische Muster erkennbar",
      subtitle: "Im Moment zeigen sich nur wenige Hinweise auf ein stark narzisstisch geprägtes Beziehungsmuster.",
      text1: "Dein Ergebnis spricht eher dafür, dass die auffälligen Punkte sich bislang nicht klar verdichten. Einzelne schwierige Verhaltensweisen können auch in grundsätzlich normalen Konflikten oder belastenden Phasen vorkommen.",
      text2: "Wichtig ist trotzdem, wie du dich in der Beziehung fühlst. Auch wenn kein starkes narzisstisches Muster erkennbar ist, verdienen deine Grenzen, dein Erleben und wiederkehrende Irritationen Aufmerksamkeit.",
      advice: [
        "Achte darauf, ob Kritik, Verantwortung und Rücksicht grundsätzlich auf beiden Seiten möglich sind.",
        "Beobachte nicht nur einzelne Szenen, sondern wiederkehrende Muster über mehrere Wochen.",
        "Nimm dein Gefühl ernst, wenn du dich nach Gesprächen regelmäßig klein, unsicher oder schuldig fühlst."
      ],
      links: [
        {
          slug: "ist-mein-partner-egoistisch-test",
          title: "Ist mein Partner egoistisch?",
          url: "/dein-partner-im-check/ist-mein-partner-egoistisch-test"
        },
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Einzelne auffällige Muster sind vorhanden",
      subtitle: "Es zeigen sich mehrere Verhaltensweisen, die auf problematische Selbstbezogenheit oder fehlende Gegenseitigkeit hinweisen können.",
      text1: "Dein Ergebnis liegt im mittleren Bereich. Das bedeutet nicht automatisch, dass dein Partner narzisstisch ist. Es deutet aber darauf hin, dass es in eurer Dynamik wiederkehrende Muster gibt, bei denen deine Sicht, deine Bedürfnisse oder deine Grenzen zu wenig Raum bekommen.",
      text2: "Gerade in Beziehungen mit solchen Tendenzen entsteht oft schleichend Verunsicherung: Man fragt sich immer häufiger, ob man selbst das Problem ist. Relevant ist deshalb weniger das Etikett, sondern ob die Beziehung auf Dauer fair, sicher und emotional tragfähig bleibt.",
      advice: [
        "Achte gezielt darauf, wie dein Partner reagiert, wenn du ruhig und konkret Grenzen setzt.",
        "Schreibe dir typische Konflikte stichwortartig auf, damit Muster klarer sichtbar werden.",
        "Sprich mit einer vertrauten Person darüber, wie du dich in der Beziehung erlebst."
      ],
      links: [
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Deutlich problematische narzisstische Muster",
      subtitle: "Mehrere Antworten sprechen dafür, dass dein Partner wiederholt überhöht, abwertend oder wenig verantwortungsvoll auftritt.",
      text1: "Dieses Ergebnis deutet auf eine deutlich belastende Dynamik hin. Besonders auffällig ist meist nicht nur Selbstbezogenheit allein, sondern die Kombination aus Kränkbarkeit, Abwertung, Schuldumkehr und mangelnder Bereitschaft, den eigenen Anteil zu sehen.",
      text2: "Für dich kann das bedeuten, dass du immer mehr Energie in Anpassung, Erklärung und Selbstzweifel steckst. Auch ohne Diagnose ist das ernst zu nehmen. Entscheidend ist, ob du in der Beziehung noch mit Respekt, Klarheit und emotionaler Sicherheit behandelt wirst.",
      advice: [
        "Prüfe nüchtern, ob Gespräche wirklich zu Veränderung führen oder nur kurzfristig beruhigen.",
        "Setze kleine, klare Grenzen und beobachte die Reaktion darauf sehr genau.",
        "Hole dir Außenperspektive, wenn du dich nach Konflikten regelmäßig verwirrt oder entwertet fühlst.",
        "Achte darauf, ob sich problematische Muster mit der Zeit verstärken statt abschwächen."
      ],
      links: [
        {
          slug: "ist-mein-partner-manipulativ-test",
          title: "Ist mein Partner manipulativ?",
          url: "/dein-partner-im-check/ist-mein-partner-manipulativ-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-bindungsangst-test",
          title: "Hat mein Partner Bindungsangst?",
          url: "/dein-partner-im-check/hat-mein-partner-bindungsangst-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Sehr starkes narzisstisches Muster",
      subtitle: "Deine Antworten zeigen eine deutliche Dynamik, die emotional stark belastend und auf Dauer schädlich sein kann.",
      text1: "Dieses Ergebnis spricht dafür, dass sich problematische Verhaltensweisen nicht nur punktuell zeigen, sondern in eurer Beziehung bereits ein klares Muster bilden. Dazu gehören häufig Abwertung, fehlende echte Empathie, starke Kränkbarkeit, Schuldverschiebung und ein Umgang, bei dem sich vieles um die Perspektive deines Partners drehen muss.",
      text2: "Das heißt noch immer nicht automatisch, dass eine klinische Diagnose vorliegt. Für deine Realität ist aber entscheidend, dass du offenbar wiederholt mit Dynamiken konfrontiert bist, die dein Selbstgefühl, deine Sicherheit und deine Klarheit unter Druck setzen können. Gerade dann ist es wichtig, nicht nur auf Erklärungen zu schauen, sondern auf tatsächliches Verhalten und dessen Wirkung auf dich.",
      advice: [
        "Nimm deine Belastung ernst und relativiere wiederkehrende Abwertung nicht als bloße schlechte Phase.",
        "Prüfe, welche Kontakte dir helfen, emotional klarer und stabiler zu bleiben.",
        "Halte für dich fest, welche Grenzen bereits verletzt wurden und was für dich nicht mehr tragbar ist.",
        "Wenn du dich stark verunsichert oder psychisch erschöpft fühlst, suche dir Unterstützung außerhalb der Beziehung."
      ],
      links: [
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-psychopathische-zuege-test",
          title: "Hat mein Partner psychopathische Züge?",
          url: "/dein-partner-im-check/hat-mein-partner-psychopathische-zuege-test"
        },
        {
          slug: "ist-mein-partner-manipulativ-test",
          title: "Ist mein Partner manipulativ?",
          url: "/dein-partner-im-check/ist-mein-partner-manipulativ-test"
        }
      ]
    }
  }
};

(function () {
  "use strict";

  if (typeof TEST_DATA === "undefined") {
    const errorBox = document.getElementById("depTestError");
    errorBox.style.display = "block";
    errorBox.textContent = "Fehler: TEST_DATA wurde nicht gefunden. Die Engine braucht gültige Testdaten.";
    return;
  }

  const REQUIRED_TOP_LEVEL_FIELDS = ["title", "intro", "questions", "results", "testType"];
  const REQUIRED_RESULT_KEYS = ["low", "mid", "high", "veryHigh"];
  const REQUIRED_RESULT_FIELDS = ["badge", "title", "subtitle", "text1", "text2", "advice", "links"];
  const ALLOWED_TEST_TYPES = ["risk", "standard", "fun"];

  const RED_FLAG_CONFIG = {
    risk: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: true,
      maxThreshold: 3
    },
    standard: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: false,
      maxThreshold: 3
    },
    fun: {
      useHighThreshold: false,
      highThreshold: Infinity,
      useMaxOverride: false,
      maxThreshold: Infinity
    }
  };

  const el = {
    wrap: document.getElementById("depTestWrap"),
    title: document.getElementById("depTestTitle"),
    intro: document.getElementById("depTestIntro"),
    error: document.getElementById("depTestError"),
    questions: document.getElementById("depTestQuestions"),
    submit: document.getElementById("depTestSubmit"),
    reset: document.getElementById("depTestReset"),
    result: document.getElementById("depTestResult"),
    resultHero: document.getElementById("depResultHero"),
    resultTitle: document.getElementById("depResultTitle"),
    resultSubtitle: document.getElementById("depResultSubtitle"),
    scoreMeta: document.getElementById("depScoreMeta"),
    resultNote: document.getElementById("depResultNote"),
    resultTextCombined: document.getElementById("depResultTextCombined"),
    helpText: document.getElementById("depHelpText"),
    links: document.getElementById("depLinks")
  };

  function showError(message) {
    el.error.style.display = "block";
    el.error.textContent = message;
  }

  function clearError() {
    el.error.style.display = "none";
    el.error.textContent = "";
  }

  function escapeHtml(str) {
    return String(str)
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function isNonEmptyString(value) {
    return typeof value === "string" && value.trim() !== "";
  }

  function nl2p(text) {
    return String(text)
      .split(/\n{2,}/)
      .map(part => "<p>" + escapeHtml(part).replace(/\n/g, "<br>") + "</p>")
      .join("");
  }

  function endsWithSlug(url, slug) {
    const cleanUrl = String(url).replace(/\/+$/, "");
    const cleanSlug = String(slug).replace(/^\/+|\/+$/g, "");
    return cleanUrl.endsWith("/" + cleanSlug);
  }

  function validateTestData(data) {
    for (const key of REQUIRED_TOP_LEVEL_FIELDS) {
      if (!(key in data)) {
        return "Fehler: In TEST_DATA fehlt das Pflichtfeld '" + key + "'.";
      }
    }

    if (!isNonEmptyString(data.title)) {
      return "Fehler: TEST_DATA.title ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.intro)) {
      return "Fehler: TEST_DATA.intro ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.testType) || !ALLOWED_TEST_TYPES.includes(data.testType)) {
      return "Fehler: TEST_DATA.testType ist ungültig. Erlaubt sind: risk, standard, fun.";
    }

    if (!Array.isArray(data.questions) || data.questions.length !== 12) {
      return "Fehler: TEST_DATA.questions muss genau 12 Fragen enthalten.";
    }

    for (let i = 0; i < data.questions.length; i++) {
      const q = data.questions[i];

      if (!q || !isNonEmptyString(q.text)) {
        return "Fehler: Frage " + (i + 1) + " hat keinen gültigen Text.";
      }

      if (!Array.isArray(q.answers) || q.answers.length !== 5) {
        return "Fehler: Frage " + (i + 1) + " muss genau 5 Antworten haben.";
      }

      const values = q.answers.map(a => a.value);
      const expected = [0, 1, 2, 3, 4];

      if (JSON.stringify(values) !== JSON.stringify(expected)) {
        return "Fehler: Frage " + (i + 1) + " hat keine gültigen Antwortwerte von 0 bis 4.";
      }

      for (let j = 0; j < q.answers.length; j++) {
        if (!isNonEmptyString(q.answers[j].text)) {
          return "Fehler: Frage " + (i + 1) + ", Antwort " + (j + 1) + " hat keinen gültigen Text.";
        }
      }
    }

    if (typeof data.results !== "object" || data.results === null) {
      return "Fehler: TEST_DATA.results ist ungültig.";
    }

    for (const key of REQUIRED_RESULT_KEYS) {
      if (!(key in data.results)) {
        return "Fehler: In TEST_DATA.results fehlt der Bereich '" + key + "'. Erwartet werden: low, mid, high, veryHigh.";
      }

      const result = data.results[key];

      if (typeof result !== "object" || result === null) {
        return "Fehler: Der Ergebnisbereich '" + key + "' ist ungültig.";
      }

      for (const field of REQUIRED_RESULT_FIELDS) {
        if (!(field in result)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' fehlt das Feld '" + field + "'.";
        }
      }

      if (!isNonEmptyString(result.badge)) {
        return "Fehler: '" + key + ".badge' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.title)) {
        return "Fehler: '" + key + ".title' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.subtitle)) {
        return "Fehler: '" + key + ".subtitle' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text1)) {
        return "Fehler: '" + key + ".text1' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text2)) {
        return "Fehler: '" + key + ".text2' ist leer oder ungültig.";
      }

      if (!Array.isArray(result.advice) || result.advice.length < 2 || result.advice.length > 4) {
        return "Fehler: '" + key + ".advice' muss 2 bis 4 Punkte enthalten.";
      }

      for (let i = 0; i < result.advice.length; i++) {
        if (!isNonEmptyString(result.advice[i])) {
          return "Fehler: '" + key + ".advice[" + i + "]' ist leer oder ungültig.";
        }
      }

      if (!Array.isArray(result.links) || result.links.length < 2 || result.links.length > 3) {
        return "Fehler: '" + key + ".links' muss 2 bis 3 weiterführende Tests enthalten.";
      }

      const seenSlugs = new Set();

      for (const link of result.links) {
        if (!link || typeof link !== "object") {
          return "Fehler: Ein Link in '" + key + ".links' ist ungültig.";
        }
        if (!isNonEmptyString(link.slug)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Slug.";
        }
        if (!isNonEmptyString(link.title)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Titel.";
        }
        if (!isNonEmptyString(link.url)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keine gültige URL.";
        }
        if (seenSlugs.has(link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' gibt es doppelte Links mit dem Slug '" + link.slug + "'.";
        }
        if (!endsWithSlug(link.url, link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' passt die URL nicht zum Slug '" + link.slug + "'.";
        }

        seenSlugs.add(link.slug);
      }
    }

    return null;
  }

  function renderQuestions(data, userAnswers) {
    let html = "";

    data.questions.forEach((question, qIndex) => {
      const answers = question.answers;

      html += `
        <div class="dep-question">
          <div class="dep-question-title">${qIndex + 1}. ${escapeHtml(question.text)}</div>
      `;

      answers.forEach((answer, aIndex) => {
        const inputId = `depQ${qIndex}A${aIndex}`;
        html += `
          <label class="dep-answer" for="${inputId}">
            <input
              type="radio"
              id="${inputId}"
              name="depQ${qIndex}"
              value="${answer.value}"
              ${userAnswers[qIndex] === answer.value ? "checked" : ""}
            >
            <span class="dep-answer-text">${escapeHtml(answer.text)}</span>
          </label>
        `;
      });

      html += `</div>`;
    });

    el.questions.innerHTML = html;
  }

  function bindAnswerEvents(userAnswers) {
    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');

    radioInputs.forEach(input => {
      input.addEventListener("change", function () {
        const qIndex = Number(this.name.replace("depQ", ""));
        userAnswers[qIndex] = Number(this.value);
        clearError();
      });
    });
  }

  function getStageByScore(score) {
    if (score <= 10) return 0;
    if (score <= 21) return 1;
    if (score <= 33) return 2;
    return 3;
  }

  function applyRedFlagAdjustment(stage, answers, testType) {
    const config = RED_FLAG_CONFIG[testType];
    const highCount = answers.filter(v => v >= 3).length;
    const maxCount = answers.filter(v => v === 4).length;

    let adjustedStage = stage;
    let redFlagTriggered = false;

    if (config.useHighThreshold && highCount >= config.highThreshold) {
      adjustedStage += 1;
      redFlagTriggered = true;
    }

    if (config.useMaxOverride && maxCount >= config.maxThreshold) {
      adjustedStage = 3;
      redFlagTriggered = true;
    }

    if (adjustedStage > 3) {
      adjustedStage = 3;
    }

    return {
      adjustedStage,
      highCount,
      maxCount,
      redFlagTriggered
    };
  }

  function getResultKeyByStage(stage) {
    if (stage === 0) return "low";
    if (stage === 1) return "mid";
    if (stage === 2) return "high";
    return "veryHigh";
  }

  function getHeroClassByStage(stage) {
    if (stage === 0) return "dep-result-hero dep-result-hero--low";
    if (stage === 1) return "dep-result-hero dep-result-hero--mild";
    if (stage === 2) return "dep-result-hero dep-result-hero--mid";
    return "dep-result-hero dep-result-hero--high";
  }

  function renderAdviceList(items) {
    const lis = items.map(item => "<li>" + escapeHtml(item) + "</li>").join("");
    return '<ul class="dep-advice-list">' + lis + "</ul>";
  }

  function renderLinks(links) {
    return links.map(link => {
      return `
        <a class="dep-link-card" href="${escapeHtml(link.url)}" data-slug="${escapeHtml(link.slug)}">
          ${escapeHtml(link.title)}
        </a>
      `;
    }).join("");
  }

  function resetTest(userAnswers) {
    for (let i = 0; i < userAnswers.length; i++) {
      userAnswers[i] = undefined;
    }

    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');
    radioInputs.forEach(input => {
      input.checked = false;
    });

    clearError();
    el.result.style.display = "none";
    el.scoreMeta.textContent = "";
    el.resultNote.textContent = "";
    el.resultNote.style.display = "none";
    el.resultTitle.textContent = "";
    el.resultSubtitle.textContent = "";
    el.resultTextCombined.innerHTML = "";
    el.helpText.innerHTML = "";
    el.links.innerHTML = "";
    el.wrap.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function renderResult(data, score, baseStage, adjustedStage, redFlagTriggered) {
    const key = getResultKeyByStage(adjustedStage);
    const resultData = data.results[key];

    el.resultHero.className = getHeroClassByStage(adjustedStage);
    el.resultTitle.textContent = resultData.title;
    el.resultSubtitle.textContent = resultData.subtitle;
    el.resultTextCombined.innerHTML = nl2p(resultData.text1 + "\n\n" + resultData.text2);
    el.helpText.innerHTML = renderAdviceList(resultData.advice);
    el.links.innerHTML = renderLinks(resultData.links);
    el.scoreMeta.textContent = score + " von 48 Punkten";

    if (redFlagTriggered && adjustedStage > baseStage) {
      el.resultNote.textContent = "Hinweis: Einzelne hohe Antworten wirken sich stärker auf dein Ergebnis aus als der Gesamtwert.";
      el.resultNote.style.display = "block";
    } else {
      el.resultNote.textContent = "";
      el.resultNote.style.display = "none";
    }

    el.result.style.display = "block";
    el.result.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function init() {
    const validationError = validateTestData(TEST_DATA);

    if (validationError) {
      showError(validationError);
      return;
    }

    clearError();

    el.title.textContent = TEST_DATA.title;
    el.intro.textContent = TEST_DATA.intro;

    const userAnswers = new Array(TEST_DATA.questions.length).fill(undefined);

    renderQuestions(TEST_DATA, userAnswers);
    bindAnswerEvents(userAnswers);

    el.submit.addEventListener("click", function () {
      const unanswered = userAnswers
        .map((value, index) => value === undefined ? index + 1 : null)
        .filter(Boolean);

      if (unanswered.length > 0) {
        el.result.style.display = "none";
        showError("Bitte beantworte alle Fragen. Offen: " + unanswered.join(", "));
        el.error.scrollIntoView({ behavior: "smooth", block: "center" });
        return;
      }

      clearError();

      const score = userAnswers.reduce((sum, value) => sum + value, 0);
      const baseStage = getStageByScore(score);
      const redFlagData = applyRedFlagAdjustment(baseStage, userAnswers, TEST_DATA.testType);

      renderResult(
        TEST_DATA,
        score,
        baseStage,
        redFlagData.adjustedStage,
        redFlagData.redFlagTriggered
      );
    });

    el.reset.addEventListener("click", function () {
      resetTest(userAnswers);
    });
  }

  init();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ist mein Partner manipulativ?</title>
		<link>https://checkdich.at/category-dein-partner-im-check/ist-mein-partner-manipulativ-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 20:54:13 +0000</pubDate>
				<category><![CDATA[Partner]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1866</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1866">.elementor-1866 .elementor-element.elementor-element-9527faf{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1866" class="elementor elementor-1866" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-9527faf e-flex e-con-boxed e-con e-parent" data-id="9527faf" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-fe5286d elementor-widget elementor-widget-html" data-id="fe5286d" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.dep-test-wrap{
  max-width: 860px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7ecf3;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  font-family: Arial, sans-serif;
  color: #1f2937;
}

.dep-test-header{
  margin-bottom: 24px;
}

.dep-test-title{
  margin: 0 0 10px 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
  color: #111827;
}

.dep-test-intro{
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: #4b5563;
}

.dep-test-error{
  display: none;
  margin: 0 0 22px 0;
  padding: 14px 16px;
  border: 1px solid #f3c2c2;
  background: #fff4f4;
  color: #9f1d1d;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}

.dep-question{
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fbfcfe;
}

.dep-question-title{
  margin: 0 0 14px 0;
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  color: #111827;
}

.dep-answer{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid #dde5ef;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.dep-answer:hover{
  border-color: #bfd0e6;
  background: #f8fbff;
}

.dep-answer input{
  margin: 0;
  flex: 0 0 auto;
}

.dep-answer-text{
  font-size: 15px;
  line-height: 1.45;
  color: #1f2937;
}

.dep-actions{
  margin-top: 24px;
}

.dep-btn{
  display: inline-block;
  width: 100%;
  border: 0;
  border-radius: 14px;
  padding: 15px 18px;
  background: #2563eb;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.18);
}

.dep-btn:hover{
  background: #1d4ed8;
}

.dep-btn:focus{
  outline: 3px solid rgba(37, 99, 235, 0.2);
  outline-offset: 2px;
}

.dep-btn:active{
  transform: translateY(1px);
}

.dep-btn-secondary{
  margin-top: 12px;
  background: #e5e7eb;
  color: #1f2937;
  box-shadow: none;
}

.dep-btn-secondary:hover{
  background: #dbe1e8;
}

.dep-result{
  display: none;
  margin-top: 30px;
  padding-top: 10px;
}

.dep-result-hero{
  padding: 24px 20px;
  border-radius: 18px;
  margin-bottom: 18px;
  text-align: center;
  border: 1px solid transparent;
}

.dep-result-hero--low{
  background: #eef6ff;
  border-color: #cfe3ff;
}

.dep-result-hero--mild{
  background: #f4f8ff;
  border-color: #d9e7ff;
}

.dep-result-hero--mid{
  background: #fff7e8;
  border-color: #f4ddb0;
}

.dep-result-hero--high{
  background: #fff0f0;
  border-color: #f1c6c6;
}

.dep-result-title{
  margin: 0;
  font-size: 31px;
  line-height: 1.15;
  font-weight: 800;
  color: #111827;
}

.dep-result-subtitle{
  margin: 12px auto 0 auto;
  max-width: 680px;
  font-size: 17px;
  line-height: 1.6;
  color: #374151;
}

.dep-card{
  margin-bottom: 14px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fff;
}

.dep-card-heading{
  margin: 0 0 10px 0;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #475569;
}

.dep-card-text{
  font-size: 15px;
  line-height: 1.7;
  color: #1f2937;
}

.dep-card-text p{
  margin: 0 0 12px 0;
}

.dep-card-text p:last-child{
  margin-bottom: 0;
}

.dep-advice-list{
  margin: 0;
  padding-left: 18px;
}

.dep-advice-list li{
  margin: 0 0 8px 0;
  line-height: 1.6;
}

.dep-links-grid{
  display: grid;
  gap: 10px;
}

.dep-link-card{
  display: block;
  padding: 14px 16px;
  border: 1px solid #dbe5f0;
  border-radius: 14px;
  text-decoration: none;
  background: #f8fbff;
  color: #0f172a;
  font-weight: 700;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.dep-link-card:hover{
  border-color: #bfd0e6;
  background: #f1f7ff;
  transform: translateY(-1px);
}

.dep-score-meta{
  margin-top: 16px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 700;
  color: #334155;
  text-align: center;
}

.dep-result-note{
  display: none;
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: #475569;
  text-align: center;
}

@media (max-width: 640px){
  .dep-test-wrap{
    padding: 18px;
    border-radius: 14px;
  }

  .dep-test-title{
    font-size: 25px;
  }

  .dep-result-title{
    font-size: 26px;
  }

  .dep-result-subtitle{
    font-size: 16px;
  }

  .dep-question{
    padding: 14px;
  }

  .dep-answer{
    padding: 11px 12px;
  }

  .dep-score-meta{
    font-size: 17px;
  }
}
</style>

<div class="dep-test-wrap" id="depTestWrap">
  <div class="dep-test-header">
    <h1 class="dep-test-title" id="depTestTitle"></h1>
    <p class="dep-test-intro" id="depTestIntro"></p>
  </div>

  <div class="dep-test-error" id="depTestError"></div>

  <div id="depTestQuestions"></div>

  <div class="dep-actions">
    <button class="dep-btn" id="depTestSubmit" type="button">Ergebnis anzeigen</button>
    <button class="dep-btn dep-btn-secondary" id="depTestReset" type="button">Zurücksetzen</button>
  </div>

  <div class="dep-result" id="depTestResult">
    <div class="dep-result-hero" id="depResultHero">
      <h3 class="dep-result-title" id="depResultTitle"></h3>
      <div class="dep-result-subtitle" id="depResultSubtitle"></div>
      <div class="dep-score-meta" id="depScoreMeta"></div>
      <div class="dep-result-note" id="depResultNote"></div>
    </div>

```
<div class="dep-card">
  <div class="dep-card-heading">Einordnung</div>
  <div class="dep-card-text" id="depResultTextCombined"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Worauf du jetzt achten kannst</div>
  <div class="dep-card-text" id="depHelpText"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Passende nächste Tests</div>
  <div class="dep-links-grid" id="depLinks"></div>
</div>
```

  </div>
</div>

<script>
const TEST_DATA = {
  title: "Ist mein Partner manipulativ?",
  intro: "Manipulatives Verhalten zeigt sich im Alltag oft nicht als einzelner großer Vorfall, sondern als wiederkehrendes Muster aus Druck, Verdrehung oder Schuldumkehr. Dieser Test hilft dir, typische Muster in deinem Alltag mit deinem Partner zu erkennen. ",
  testType: "risk",
 questions: [
{
text: "Wenn du etwas ansprichst, das dich gestört hat (z. B. Zuspätkommen oder eine Bemerkung), endet das Gespräch so, dass du dich erklärst oder entschuldigst.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nach einem Streit über eine konkrete Situation (z. B. eine Nachricht oder Verabredung) bist du unsicher, ob du dich richtig erinnerst, weil dein Partner es anders darstellt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner dich kritisiert oder abwertet, sagt er später, du hättest das falsch verstanden oder übertrieben reagiert.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du Nein sagst (z. B. zu einem Treffen oder Wunsch), reagiert dein Partner so, dass du dich danach schuldig fühlst.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner etwas von dir will (z. B. Zeit, Hilfe oder Nähe), ist er besonders zugewandt, und kurz danach wirkt er wieder distanziert oder kühl.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Bei Gesprächen über konkrete Situationen (z. B. was gesagt oder vereinbart wurde) stellt dein Partner den Ablauf später anders dar, als du ihn erlebt hast.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du ansprichst, dass dich etwas verletzt hat, bringt dein Partner sofort Beispiele, was du falsch gemacht hast.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "In Gesprächen über wichtige Themen (z. B. Beziehung, Zukunft oder Konflikte) zieht sich dein Partner zurück oder schweigt so lange, bis du nachgibst.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du allein etwas unternimmst oder eine eigene Entscheidung triffst, reagiert dein Partner so, dass du dich dafür schlecht fühlst.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Bevor du deinem Partner schreibst oder ihn triffst, überlegst du genau, wie du etwas formulierst, um keine negative Reaktion auszulösen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Dinge, die du deinem Partner im Vertrauen erzählt hast, tauchen später in Streitgesprächen als Vorwurf oder Druckmittel gegen dich auf.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nach einem Streit bist du oft die Person, die wieder Kontakt aufnimmt, obwohl du dich zuvor verletzt oder unter Druck gesetzt gefühlt hast.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
}
],
  results: {
    low: {
      badge: "Kaum Auffälligkeiten",
      title: "Wenig Hinweise auf manipulative Muster",
      subtitle: "In deinen Antworten zeigen sich aktuell eher wenige Anzeichen dafür, dass dein Partner wiederholt manipulativ auf dich einwirkt.",
      text1: "Dein Ergebnis spricht eher dafür, dass schwierige Momente in eurer Beziehung nicht automatisch Teil eines manipulativen Musters sind. Einzelne Spannungen, Missverständnisse oder ungute Gespräche können auch in grundsätzlich gesunden Beziehungen vorkommen.",
      text2: "Trotzdem lohnt es sich, auf dein Gefühl nach Konflikten zu achten: Fühlst du dich ernst genommen, klarer und sicherer oder eher verwirrter, kleiner und schuldig? Genau diese Entwicklung über die Zeit ist oft aussagekräftiger als ein einzelner Vorfall.",
      advice: [
        "Beobachte weiter, wie Gespräche bei euch enden: mit mehr Klarheit oder mit mehr Verunsicherung.",
        "Nimm kleine Irritationsmomente ernst, auch wenn sie noch kein deutliches Muster bilden.",
        "Achte darauf, ob deine Grenzen in ruhigen wie in konflikthaften Situationen respektiert werden."
      ],
      links: [
        {
          slug: "ist-mein-partner-egoistisch-test",
          title: "Ist mein Partner egoistisch?",
          url: "/dein-partner-im-check/ist-mein-partner-egoistisch-test"
        },
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        }
      ]
    },
    mid: {
      badge: "Leichte Auffälligkeit",
      title: "Erste manipulative Tendenzen sind möglich",
      subtitle: "Deine Antworten deuten darauf hin, dass es einzelne wiederkehrende Situationen geben könnte, in denen dein Partner Druck, Verdrehung oder Schuldverschiebung einsetzt.",
      text1: "Das muss noch nicht bedeuten, dass eure gesamte Beziehung manipulativ geprägt ist. Aber es gibt Hinweise darauf, dass bestimmte Gespräche oder Konflikte für dich nicht einfach nur anstrengend, sondern innerlich verunsichernd werden.",
      text2: "Wichtig ist jetzt vor allem, ob diese Muster punktuell bleiben oder sich zunehmend verfestigen. Manipulation zeigt sich oft darin, dass du dich immer öfter erklärst, an dir selbst zweifelst oder Grenzen nicht mehr frei setzen kannst, ohne emotional unter Druck zu geraten.",
      advice: [
        "Achte gezielt darauf, in welchen Situationen du dich nach Gesprächen kleiner, schuldig oder verwirrter fühlst.",
        "Notiere dir konkrete Vorfälle, damit du Muster besser erkennst und nicht alles nur im Gefühl hängen bleibt.",
        "Sprich mit einer vertrauten Person darüber, wie die Dynamik von außen wirkt."
      ],
      links: [
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Deutliche Auffälligkeit",
      title: "Mehrere Signale sprechen für manipulative Muster",
      subtitle: "Deine Antworten zeigen mehrere Hinweise darauf, dass dein Partner in Konflikten oder Alltagssituationen wiederholt Druck, Verdrehung oder emotionale Steuerung einsetzen könnte.",
      text1: "Hier geht es nicht mehr nur um einzelne ungünstige Kommunikationsmomente. Wenn du regelmäßig an deiner Wahrnehmung zweifelst, Grenzen nur unter Schuldgefühl setzen kannst oder dein Partner Gespräche systematisch gegen dich dreht, ist das ernst zu nehmen.",
      text2: "Manipulatives Verhalten wirkt oft gerade deshalb so stark, weil es nicht immer offen aggressiv ist. Es kann wechselhaft, subtil und im Alltag schwer greifbar sein. Entscheidend ist, ob du dich durch diese Dynamik zunehmend verunsichert, angespannt oder innerlich eingeschränkt fühlst.",
      advice: [
        "Nimm dein Unwohlsein nicht automatisch als Überreaktion, sondern als mögliches Warnsignal ernst.",
        "Prüfe bewusst, welche Themen du aus Angst vor Schuld, Streit oder Rückzug schon vermeidest.",
        "Hole dir Außenperspektive, wenn du merkst, dass du allein in der Dynamik immer unsicherer wirst.",
        "Überlege, welche Grenzen du konkret schützen willst und was passiert, wenn du sie klar aussprichst."
      ],
      links: [
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-bindungsangst-test",
          title: "Hat mein Partner Bindungsangst?",
          url: "/dein-partner-im-check/hat-mein-partner-bindungsangst-test"
        }
      ]
    },
    veryHigh: {
      badge: "Starke Auffälligkeit",
      title: "Viele Anzeichen sprechen für eine belastende manipulative Dynamik",
      subtitle: "Deine Antworten deuten stark darauf hin, dass du in deiner Beziehung wiederholt mit stark verunsichernden oder steuernden Verhaltensmustern konfrontiert sein könntest.",
      text1: "Wenn mehrere dieser Punkte klar auf eure Beziehung zutreffen, ist das nicht etwas, das du kleinreden solltest. Vor allem dann nicht, wenn du dich nach Gesprächen regelmäßig schuldig, verwirrt, angespannt oder innerlich abhängig von der Reaktion deines Partners fühlst.",
      text2: "Eine manipulative Dynamik kann schleichend dazu führen, dass du deiner Wahrnehmung weniger vertraust, Konflikte vermeidest und dich zunehmend anpasst. Genau das macht solche Muster so belastend. Es geht nicht nur darum, was dein Partner sagt oder tut, sondern darum, wie stark dein innerer Spielraum dadurch kleiner wird.",
      advice: [
        "Nimm wiederkehrende Verunsicherung, Schuldumkehr und Druck nicht als normalen Beziehungsalltag hin.",
        "Suche dir eine klare Außenperspektive, wenn du merkst, dass du deiner eigenen Einschätzung kaum noch vertraust.",
        "Achte darauf, ob du dich in der Beziehung freier oder immer kleiner und vorsichtiger bewegst.",
        "Prüfe ernsthaft, welche Form von Schutz, Abstand oder Unterstützung du jetzt brauchst."
      ],
      links: [
        {
          slug: "ist-mein-partner-narzisstisch-test",
          title: "Ist mein Partner narzisstisch?",
          url: "/dein-partner-im-check/ist-mein-partner-narzisstisch-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-psychopathische-zuege-test",
          title: "Hat mein Partner psychopathische Züge?",
          url: "/dein-partner-im-check/hat-mein-partner-psychopathische-zuege-test"
        }
      ]
    }
  }
};

(function () {
  "use strict";

  if (typeof TEST_DATA === "undefined") {
    const errorBox = document.getElementById("depTestError");
    errorBox.style.display = "block";
    errorBox.textContent = "Fehler: TEST_DATA wurde nicht gefunden. Die Engine braucht gültige Testdaten.";
    return;
  }

  const REQUIRED_TOP_LEVEL_FIELDS = ["title", "intro", "questions", "results", "testType"];
  const REQUIRED_RESULT_KEYS = ["low", "mid", "high", "veryHigh"];
  const REQUIRED_RESULT_FIELDS = ["badge", "title", "subtitle", "text1", "text2", "advice", "links"];
  const ALLOWED_TEST_TYPES = ["risk", "standard", "fun"];

  const RED_FLAG_CONFIG = {
    risk: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: true,
      maxThreshold: 3
    },
    standard: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: false,
      maxThreshold: 3
    },
    fun: {
      useHighThreshold: false,
      highThreshold: Infinity,
      useMaxOverride: false,
      maxThreshold: Infinity
    }
  };

  const el = {
    wrap: document.getElementById("depTestWrap"),
    title: document.getElementById("depTestTitle"),
    intro: document.getElementById("depTestIntro"),
    error: document.getElementById("depTestError"),
    questions: document.getElementById("depTestQuestions"),
    submit: document.getElementById("depTestSubmit"),
    reset: document.getElementById("depTestReset"),
    result: document.getElementById("depTestResult"),
    resultHero: document.getElementById("depResultHero"),
    resultTitle: document.getElementById("depResultTitle"),
    resultSubtitle: document.getElementById("depResultSubtitle"),
    scoreMeta: document.getElementById("depScoreMeta"),
    resultNote: document.getElementById("depResultNote"),
    resultTextCombined: document.getElementById("depResultTextCombined"),
    helpText: document.getElementById("depHelpText"),
    links: document.getElementById("depLinks")
  };

  function showError(message) {
    el.error.style.display = "block";
    el.error.textContent = message;
  }

  function clearError() {
    el.error.style.display = "none";
    el.error.textContent = "";
  }

  function escapeHtml(str) {
    return String(str)
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function isNonEmptyString(value) {
    return typeof value === "string" && value.trim() !== "";
  }

  function nl2p(text) {
    return String(text)
      .split(/\n{2,}/)
      .map(part => "<p>" + escapeHtml(part).replace(/\n/g, "<br>") + "</p>")
      .join("");
  }

  function endsWithSlug(url, slug) {
    const cleanUrl = String(url).replace(/\/+$/, "");
    const cleanSlug = String(slug).replace(/^\/+|\/+$/g, "");
    return cleanUrl.endsWith("/" + cleanSlug);
  }

  function validateTestData(data) {
    for (const key of REQUIRED_TOP_LEVEL_FIELDS) {
      if (!(key in data)) {
        return "Fehler: In TEST_DATA fehlt das Pflichtfeld '" + key + "'.";
      }
    }

    if (!isNonEmptyString(data.title)) {
      return "Fehler: TEST_DATA.title ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.intro)) {
      return "Fehler: TEST_DATA.intro ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.testType) || !ALLOWED_TEST_TYPES.includes(data.testType)) {
      return "Fehler: TEST_DATA.testType ist ungültig. Erlaubt sind: risk, standard, fun.";
    }

    if (!Array.isArray(data.questions) || data.questions.length !== 12) {
      return "Fehler: TEST_DATA.questions muss genau 12 Fragen enthalten.";
    }

    for (let i = 0; i < data.questions.length; i++) {
      const q = data.questions[i];

      if (!q || !isNonEmptyString(q.text)) {
        return "Fehler: Frage " + (i + 1) + " hat keinen gültigen Text.";
      }

      if (!Array.isArray(q.answers) || q.answers.length !== 5) {
        return "Fehler: Frage " + (i + 1) + " muss genau 5 Antworten haben.";
      }

      const values = q.answers.map(a => a.value);
      const expected = [0, 1, 2, 3, 4];

      if (JSON.stringify(values) !== JSON.stringify(expected)) {
        return "Fehler: Frage " + (i + 1) + " hat keine gültigen Antwortwerte von 0 bis 4.";
      }

      for (let j = 0; j < q.answers.length; j++) {
        if (!isNonEmptyString(q.answers[j].text)) {
          return "Fehler: Frage " + (i + 1) + ", Antwort " + (j + 1) + " hat keinen gültigen Text.";
        }
      }
    }

    if (typeof data.results !== "object" || data.results === null) {
      return "Fehler: TEST_DATA.results ist ungültig.";
    }

    for (const key of REQUIRED_RESULT_KEYS) {
      if (!(key in data.results)) {
        return "Fehler: In TEST_DATA.results fehlt der Bereich '" + key + "'. Erwartet werden: low, mid, high, veryHigh.";
      }

      const result = data.results[key];

      if (typeof result !== "object" || result === null) {
        return "Fehler: Der Ergebnisbereich '" + key + "' ist ungültig.";
      }

      for (const field of REQUIRED_RESULT_FIELDS) {
        if (!(field in result)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' fehlt das Feld '" + field + "'.";
        }
      }

      if (!isNonEmptyString(result.badge)) {
        return "Fehler: '" + key + ".badge' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.title)) {
        return "Fehler: '" + key + ".title' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.subtitle)) {
        return "Fehler: '" + key + ".subtitle' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text1)) {
        return "Fehler: '" + key + ".text1' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text2)) {
        return "Fehler: '" + key + ".text2' ist leer oder ungültig.";
      }

      if (!Array.isArray(result.advice) || result.advice.length < 2 || result.advice.length > 4) {
        return "Fehler: '" + key + ".advice' muss 2 bis 4 Punkte enthalten.";
      }

      for (let i = 0; i < result.advice.length; i++) {
        if (!isNonEmptyString(result.advice[i])) {
          return "Fehler: '" + key + ".advice[" + i + "]' ist leer oder ungültig.";
        }
      }

      if (!Array.isArray(result.links) || result.links.length < 2 || result.links.length > 3) {
        return "Fehler: '" + key + ".links' muss 2 bis 3 weiterführende Tests enthalten.";
      }

      const seenSlugs = new Set();

      for (const link of result.links) {
        if (!link || typeof link !== "object") {
          return "Fehler: Ein Link in '" + key + ".links' ist ungültig.";
        }
        if (!isNonEmptyString(link.slug)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Slug.";
        }
        if (!isNonEmptyString(link.title)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Titel.";
        }
        if (!isNonEmptyString(link.url)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keine gültige URL.";
        }
        if (seenSlugs.has(link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' gibt es doppelte Links mit dem Slug '" + link.slug + "'.";
        }
        if (!endsWithSlug(link.url, link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' passt die URL nicht zum Slug '" + link.slug + "'.";
        }

        seenSlugs.add(link.slug);
      }
    }

    return null;
  }

  function renderQuestions(data, userAnswers) {
    let html = "";

    data.questions.forEach((question, qIndex) => {
      const answers = question.answers;

      html += `
        <div class="dep-question">
          <div class="dep-question-title">${qIndex + 1}. ${escapeHtml(question.text)}</div>
      `;

      answers.forEach((answer, aIndex) => {
        const inputId = `depQ${qIndex}A${aIndex}`;
        html += `
          <label class="dep-answer" for="${inputId}">
            <input
              type="radio"
              id="${inputId}"
              name="depQ${qIndex}"
              value="${answer.value}"
              ${userAnswers[qIndex] === answer.value ? "checked" : ""}
            >
            <span class="dep-answer-text">${escapeHtml(answer.text)}</span>
          </label>
        `;
      });

      html += `</div>`;
    });

    el.questions.innerHTML = html;
  }

  function bindAnswerEvents(userAnswers) {
    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');

    radioInputs.forEach(input => {
      input.addEventListener("change", function () {
        const qIndex = Number(this.name.replace("depQ", ""));
        userAnswers[qIndex] = Number(this.value);
        clearError();
      });
    });
  }

  function getStageByScore(score) {
    if (score <= 10) return 0;
    if (score <= 21) return 1;
    if (score <= 33) return 2;
    return 3;
  }

  function applyRedFlagAdjustment(stage, answers, testType) {
    const config = RED_FLAG_CONFIG[testType];
    const highCount = answers.filter(v => v >= 3).length;
    const maxCount = answers.filter(v => v === 4).length;

    let adjustedStage = stage;
    let redFlagTriggered = false;

    if (config.useHighThreshold && highCount >= config.highThreshold) {
      adjustedStage += 1;
      redFlagTriggered = true;
    }

    if (config.useMaxOverride && maxCount >= config.maxThreshold) {
      adjustedStage = 3;
      redFlagTriggered = true;
    }

    if (adjustedStage > 3) {
      adjustedStage = 3;
    }

    return {
      adjustedStage,
      highCount,
      maxCount,
      redFlagTriggered
    };
  }

  function getResultKeyByStage(stage) {
    if (stage === 0) return "low";
    if (stage === 1) return "mid";
    if (stage === 2) return "high";
    return "veryHigh";
  }

  function getHeroClassByStage(stage) {
    if (stage === 0) return "dep-result-hero dep-result-hero--low";
    if (stage === 1) return "dep-result-hero dep-result-hero--mild";
    if (stage === 2) return "dep-result-hero dep-result-hero--mid";
    return "dep-result-hero dep-result-hero--high";
  }

  function renderAdviceList(items) {
    const lis = items.map(item => "<li>" + escapeHtml(item) + "</li>").join("");
    return '<ul class="dep-advice-list">' + lis + "</ul>";
  }

  function renderLinks(links) {
    return links.map(link => {
      return `
        <a class="dep-link-card" href="${escapeHtml(link.url)}" data-slug="${escapeHtml(link.slug)}">
          ${escapeHtml(link.title)}
        </a>
      `;
    }).join("");
  }

  function resetTest(userAnswers) {
    for (let i = 0; i < userAnswers.length; i++) {
      userAnswers[i] = undefined;
    }

    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');
    radioInputs.forEach(input => {
      input.checked = false;
    });

    clearError();
    el.result.style.display = "none";
    el.scoreMeta.textContent = "";
    el.resultNote.textContent = "";
    el.resultNote.style.display = "none";
    el.resultTitle.textContent = "";
    el.resultSubtitle.textContent = "";
    el.resultTextCombined.innerHTML = "";
    el.helpText.innerHTML = "";
    el.links.innerHTML = "";
    el.wrap.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function renderResult(data, score, baseStage, adjustedStage, redFlagTriggered) {
    const key = getResultKeyByStage(adjustedStage);
    const resultData = data.results[key];

    el.resultHero.className = getHeroClassByStage(adjustedStage);
    el.resultTitle.textContent = resultData.title;
    el.resultSubtitle.textContent = resultData.subtitle;
    el.resultTextCombined.innerHTML = nl2p(resultData.text1 + "\n\n" + resultData.text2);
    el.helpText.innerHTML = renderAdviceList(resultData.advice);
    el.links.innerHTML = renderLinks(resultData.links);
    el.scoreMeta.textContent = score + " von 48 Punkten";

    if (redFlagTriggered && adjustedStage > baseStage) {
      el.resultNote.textContent = "Hinweis: Einzelne hohe Antworten wirken sich stärker auf dein Ergebnis aus als der Gesamtwert.";
      el.resultNote.style.display = "block";
    } else {
      el.resultNote.textContent = "";
      el.resultNote.style.display = "none";
    }

    el.result.style.display = "block";
    el.result.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function init() {
    const validationError = validateTestData(TEST_DATA);

    if (validationError) {
      showError(validationError);
      return;
    }

    clearError();

    el.title.textContent = TEST_DATA.title;
    el.intro.textContent = TEST_DATA.intro;

    const userAnswers = new Array(TEST_DATA.questions.length).fill(undefined);

    renderQuestions(TEST_DATA, userAnswers);
    bindAnswerEvents(userAnswers);

    el.submit.addEventListener("click", function () {
      const unanswered = userAnswers
        .map((value, index) => value === undefined ? index + 1 : null)
        .filter(Boolean);

      if (unanswered.length > 0) {
        el.result.style.display = "none";
        showError("Bitte beantworte alle Fragen. Offen: " + unanswered.join(", "));
        el.error.scrollIntoView({ behavior: "smooth", block: "center" });
        return;
      }

      clearError();

      const score = userAnswers.reduce((sum, value) => sum + value, 0);
      const baseStage = getStageByScore(score);
      const redFlagData = applyRedFlagAdjustment(baseStage, userAnswers, TEST_DATA.testType);

      renderResult(
        TEST_DATA,
        score,
        baseStage,
        redFlagData.adjustedStage,
        redFlagData.redFlagTriggered
      );
    });

    el.reset.addEventListener("click", function () {
      resetTest(userAnswers);
    });
  }

  init();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ist mein Partner emotional unreif?</title>
		<link>https://checkdich.at/category-dein-partner-im-check/ist-mein-partner-emotional-unreif-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 20:51:57 +0000</pubDate>
				<category><![CDATA[Partner]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1861</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1861">.elementor-1861 .elementor-element.elementor-element-e05a6fb{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1861" class="elementor elementor-1861" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-e05a6fb e-flex e-con-boxed e-con e-parent" data-id="e05a6fb" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2368984 elementor-widget elementor-widget-html" data-id="2368984" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.dep-test-wrap{
  max-width: 860px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7ecf3;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  font-family: Arial, sans-serif;
  color: #1f2937;
}

.dep-test-header{
  margin-bottom: 24px;
}

.dep-test-title{
  margin: 0 0 10px 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
  color: #111827;
}

.dep-test-intro{
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: #4b5563;
}

.dep-test-error{
  display: none;
  margin: 0 0 22px 0;
  padding: 14px 16px;
  border: 1px solid #f3c2c2;
  background: #fff4f4;
  color: #9f1d1d;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}

.dep-question{
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fbfcfe;
}

.dep-question-title{
  margin: 0 0 14px 0;
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  color: #111827;
}

.dep-answer{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid #dde5ef;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.dep-answer:hover{
  border-color: #bfd0e6;
  background: #f8fbff;
}

.dep-answer input{
  margin: 0;
  flex: 0 0 auto;
}

.dep-answer-text{
  font-size: 15px;
  line-height: 1.45;
  color: #1f2937;
}

.dep-actions{
  margin-top: 24px;
}

.dep-btn{
  display: inline-block;
  width: 100%;
  border: 0;
  border-radius: 14px;
  padding: 15px 18px;
  background: #2563eb;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.18);
}

.dep-btn:hover{
  background: #1d4ed8;
}

.dep-btn:focus{
  outline: 3px solid rgba(37, 99, 235, 0.2);
  outline-offset: 2px;
}

.dep-btn:active{
  transform: translateY(1px);
}

.dep-btn-secondary{
  margin-top: 12px;
  background: #e5e7eb;
  color: #1f2937;
  box-shadow: none;
}

.dep-btn-secondary:hover{
  background: #dbe1e8;
}

.dep-result{
  display: none;
  margin-top: 30px;
  padding-top: 10px;
}

.dep-result-hero{
  padding: 24px 20px;
  border-radius: 18px;
  margin-bottom: 18px;
  text-align: center;
  border: 1px solid transparent;
}

.dep-result-hero--low{
  background: #eef6ff;
  border-color: #cfe3ff;
}

.dep-result-hero--mild{
  background: #f4f8ff;
  border-color: #d9e7ff;
}

.dep-result-hero--mid{
  background: #fff7e8;
  border-color: #f4ddb0;
}

.dep-result-hero--high{
  background: #fff0f0;
  border-color: #f1c6c6;
}

.dep-result-title{
  margin: 0;
  font-size: 31px;
  line-height: 1.15;
  font-weight: 800;
  color: #111827;
}

.dep-result-subtitle{
  margin: 12px auto 0 auto;
  max-width: 680px;
  font-size: 17px;
  line-height: 1.6;
  color: #374151;
}

.dep-card{
  margin-bottom: 14px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fff;
}

.dep-card-heading{
  margin: 0 0 10px 0;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #475569;
}

.dep-card-text{
  font-size: 15px;
  line-height: 1.7;
  color: #1f2937;
}

.dep-card-text p{
  margin: 0 0 12px 0;
}

.dep-card-text p:last-child{
  margin-bottom: 0;
}

.dep-advice-list{
  margin: 0;
  padding-left: 18px;
}

.dep-advice-list li{
  margin: 0 0 8px 0;
  line-height: 1.6;
}

.dep-links-grid{
  display: grid;
  gap: 10px;
}

.dep-link-card{
  display: block;
  padding: 14px 16px;
  border: 1px solid #dbe5f0;
  border-radius: 14px;
  text-decoration: none;
  background: #f8fbff;
  color: #0f172a;
  font-weight: 700;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.dep-link-card:hover{
  border-color: #bfd0e6;
  background: #f1f7ff;
  transform: translateY(-1px);
}

.dep-score-meta{
  margin-top: 16px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 700;
  color: #334155;
  text-align: center;
}

.dep-result-note{
  display: none;
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: #475569;
  text-align: center;
}

@media (max-width: 640px){
  .dep-test-wrap{
    padding: 18px;
    border-radius: 14px;
  }

  .dep-test-title{
    font-size: 25px;
  }

  .dep-result-title{
    font-size: 26px;
  }

  .dep-result-subtitle{
    font-size: 16px;
  }

  .dep-question{
    padding: 14px;
  }

  .dep-answer{
    padding: 11px 12px;
  }

  .dep-score-meta{
    font-size: 17px;
  }
}
</style>

<div class="dep-test-wrap" id="depTestWrap">
  <div class="dep-test-header">
    <h1 class="dep-test-title" id="depTestTitle"></h1>
    <p class="dep-test-intro" id="depTestIntro"></p>
  </div>

  <div class="dep-test-error" id="depTestError"></div>

  <div id="depTestQuestions"></div>

  <div class="dep-actions">
    <button class="dep-btn" id="depTestSubmit" type="button">Ergebnis anzeigen</button>
    <button class="dep-btn dep-btn-secondary" id="depTestReset" type="button">Zurücksetzen</button>
  </div>

  <div class="dep-result" id="depTestResult">
    <div class="dep-result-hero" id="depResultHero">
      <h3 class="dep-result-title" id="depResultTitle"></h3>
      <div class="dep-result-subtitle" id="depResultSubtitle"></div>
      <div class="dep-score-meta" id="depScoreMeta"></div>
      <div class="dep-result-note" id="depResultNote"></div>
    </div>

```
<div class="dep-card">
  <div class="dep-card-heading">Einordnung</div>
  <div class="dep-card-text" id="depResultTextCombined"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Worauf du jetzt achten kannst</div>
  <div class="dep-card-text" id="depHelpText"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Passende nächste Tests</div>
  <div class="dep-links-grid" id="depLinks"></div>
</div>
```

  </div>
</div>

<script>
const TEST_DATA = {
  title: "Ist mein Partner emotional unreif?",
  intro: "Manche Verhaltensmuster wirken auf den ersten Blick nur anstrengend oder kindisch, können in einer Beziehung aber dauerhaft belasten. Dieser Test hilft dir dabei, typische Anzeichen emotionaler Unreife im Alltag einzuordnen.",
  testType: "risk",
questions: [
{
text: "Wenn du ein Problem ansprichst, reagiert dein Partner mit Rückzug, Schweigen oder wirkt schnell eingeschnappt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nach einem Streit bleibt oft ungeklärt, was eigentlich das Problem war, und ihr macht einfach weiter.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn etwas nicht nach Plan läuft (z. B. Terminänderung), reagiert dein Partner gereizt oder lässt die Stimmung kippen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Bei gemeinsamen Absprachen (z. B. Termine oder Aufgaben) hält sich dein Partner nicht daran und spricht das danach nicht mehr von sich aus an.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner dich verletzt, fällt es ihm schwer, das klar zuzugeben oder Verantwortung dafür zu übernehmen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner gestresst ist, zieht er sich zurück oder vermeidet Gespräche darüber.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du Kritik äußerst, reagiert dein Partner defensiv und zeigt wenig Bereitschaft, sich damit auseinanderzusetzen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du etwas Emotionales ansprichst, wirkt dein Partner schnell überfordert oder geht kaum darauf ein.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nach Konflikten fehlt oft ein klärendes Gespräch, das wirklich zu einer Lösung führt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn etwas schiefläuft, reagiert dein Partner sehr stark emotional und hat Mühe, sich wieder zu beruhigen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn Entscheidungen anstehen, vermeidet dein Partner klare Positionen oder verschiebt sie immer wieder.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "In Gesprächen über Probleme kippt die Stimmung schnell, sodass ein ruhiger Austausch schwer möglich ist.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
}
],
  results: {
    low: {
      badge: "Kaum Auffälligkeiten ",
      title: "Kaum Hinweise auf emotionale Unreife",
      subtitle: "In deinem Ergebnis zeigen sich nur vereinzelte Anzeichen dafür, dass dein Partner in schwierigen Momenten unreif reagiert.",
      text1: "Ein niedriger Wert bedeutet nicht, dass es nie anstrengende Situationen gibt. Auch reife Menschen reagieren manchmal defensiv, ungeduldig oder ausweichend.",
      text2: "Entscheidend ist hier: Die beschriebenen Muster scheinen sich nicht stark zu häufen oder die Beziehung dauerhaft zu prägen. Wenn dich einzelne Situationen trotzdem beschäftigen, lohnt sich eher ein genauer Blick auf konkrete Dynamiken als ein vorschnelles Etikett.",
      advice: [
        "Achte weiter darauf, wie dein Partner in Stress, Kritik und Verantwortungssituationen reagiert.",
        "Unterscheide zwischen einzelnen Ausrutschern und einem stabilen Muster.",
        "Sprich konkrete Situationen direkt an, statt nur das Gesamtgefühl im Raum stehen zu lassen."
      ],
      links: [
        {
          slug: "ist-mein-partner-egoistisch-test",
          title: "Ist mein Partner egoistisch?",
          url: "/dein-partner-im-check/ist-mein-partner-egoistisch-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    mid: {
      badge: "Erste Auffälligkeiten",
      title: "Es gibt erkennbare unreife Muster",
      subtitle: "Dein Ergebnis spricht dafür, dass dein Partner in bestimmten Situationen emotional noch nicht sehr stabil oder reflektiert reagiert.",
      text1: "Das muss nicht automatisch bedeuten, dass die Beziehung grundsätzlich schlecht ist. Es kann aber sein, dass Konflikte dadurch unnötig anstrengend werden und du öfter mehr emotionale Arbeit übernimmst als dein Partner.",
      text2: "Wichtig ist jetzt, ob diese Muster ansprechbar sind und ob dein Partner Verantwortung übernehmen kann, wenn du etwas benennst. Genau daran trennt sich meist vorübergehende Unreife von einem belastenden Beziehungsproblem.",
      advice: [
        "Beobachte, ob Gespräche über Konflikte zu echter Klärung führen oder nur im Kreis laufen.",
        "Achte darauf, ob Verantwortung geteilt wird oder immer wieder bei dir landet.",
        "Formuliere klar, welches Verhalten dich konkret belastet und was du stattdessen brauchst."
      ],
      links: [
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "ist-mein-partner-egoistisch-test",
          title: "Ist mein Partner egoistisch?",
          url: "/dein-partner-im-check/ist-mein-partner-egoistisch-test"
        }
      ]
    },
    high: {
      badge: "Deutliche Hinweise",
      title: "Deutliche Anzeichen für emotionale Unreife",
      subtitle: "Dein Ergebnis zeigt, dass unreife Reaktionen deines Partners bei euch nicht nur punktuell, sondern spürbar wiederkehrend vorkommen.",
      text1: "Das ist meist mehr als nur ein Charakterzug, der gelegentlich nervt. Wenn jemand Verantwortung meidet, Gefühle schlecht reguliert und Konflikte nicht erwachsen bearbeiten kann, entsteht schnell ein Ungleichgewicht in der Beziehung.",
      text2: "Für dich kann das bedeuten, dass du dich ständig anpassen, Rücksicht auf Stimmungen nehmen oder Gespräche vorsichtig dosieren musst. Genau das kostet auf Dauer Kraft und kann dein eigenes Sicherheitsgefühl in der Beziehung schwächen.",
      advice: [
        "Prüfe ehrlich, wie viel emotionale Stabilisierung in eurer Beziehung von dir getragen wird.",
        "Achte darauf, ob klare Grenzen respektiert oder kindisch abgewehrt werden.",
        "Nimm nicht nur die guten Phasen ernst, sondern auch das Muster nach Konflikten.",
        "Wenn dich die Dynamik dauerhaft erschöpft, ist eine nüchterne Standortbestimmung sinnvoll."
      ],
      links: [
        {
          slug: "ist-mein-partner-manipulativ-test",
          title: "Ist mein Partner manipulativ?",
          url: "/dein-partner-im-check/ist-mein-partner-manipulativ-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-bindungsangst-test",
          title: "Hat mein Partner Bindungsangst?",
          url: "/dein-partner-im-check/hat-mein-partner-bindungsangst-test"
        }
      ]
    },
    veryHigh: {
      badge: "Starke Belastung",
      title: "Sehr starke Hinweise auf emotionale Unreife",
      subtitle: "Dein Ergebnis spricht dafür, dass das Verhalten deines Partners eure Beziehung deutlich belasten kann.",
      text1: "In diesem Bereich geht es meist nicht mehr nur um vereinzelte unreife Momente. Wahrscheinlicher ist, dass Konflikte, Verantwortung, Frustration und Nähe immer wieder auf eine Weise verarbeitet werden, die für dich anstrengend, instabil oder zermürbend wirkt.",
      text2: "Wenn du dich oft wie die erwachsenere, regulierendere oder vernünftigere Person in der Beziehung fühlst, ist das ein ernstes Signal. Vor allem dann, wenn Gespräche nichts verändern und du dich zunehmend zurücknimmst, um Reaktionen deines Partners zu vermeiden.",
      advice: [
        "Nimm ernst, wie stark dich diese Dynamik im Alltag bereits belastet.",
        "Schau nicht nur darauf, was dein Partner verspricht, sondern was sich tatsächlich verändert.",
        "Achte auf Muster von Schuldverschiebung, Abwertung oder dauerhaftem Verantwortungsentzug.",
        "Wenn du dich emotional unsicher oder leer fühlst, hol dir eine Außenperspektive durch vertraute Personen oder professionelle Beratung."
      ],
      links: [
        {
          slug: "ist-mein-partner-narzisstisch-test",
          title: "Ist mein Partner narzisstisch?",
          url: "/dein-partner-im-check/ist-mein-partner-narzisstisch-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-psychopathische-zuege-test",
          title: "Hat mein Partner psychopathische Züge?",
          url: "/dein-partner-im-check/hat-mein-partner-psychopathische-zuege-test"
        }
      ]
    }
  }
};

(function () {
  "use strict";

  if (typeof TEST_DATA === "undefined") {
    const errorBox = document.getElementById("depTestError");
    errorBox.style.display = "block";
    errorBox.textContent = "Fehler: TEST_DATA wurde nicht gefunden. Die Engine braucht gültige Testdaten.";
    return;
  }

  const REQUIRED_TOP_LEVEL_FIELDS = ["title", "intro", "questions", "results", "testType"];
  const REQUIRED_RESULT_KEYS = ["low", "mid", "high", "veryHigh"];
  const REQUIRED_RESULT_FIELDS = ["badge", "title", "subtitle", "text1", "text2", "advice", "links"];
  const ALLOWED_TEST_TYPES = ["risk", "standard", "fun"];

  const RED_FLAG_CONFIG = {
    risk: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: true,
      maxThreshold: 3
    },
    standard: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: false,
      maxThreshold: 3
    },
    fun: {
      useHighThreshold: false,
      highThreshold: Infinity,
      useMaxOverride: false,
      maxThreshold: Infinity
    }
  };

  const el = {
    wrap: document.getElementById("depTestWrap"),
    title: document.getElementById("depTestTitle"),
    intro: document.getElementById("depTestIntro"),
    error: document.getElementById("depTestError"),
    questions: document.getElementById("depTestQuestions"),
    submit: document.getElementById("depTestSubmit"),
    reset: document.getElementById("depTestReset"),
    result: document.getElementById("depTestResult"),
    resultHero: document.getElementById("depResultHero"),
    resultTitle: document.getElementById("depResultTitle"),
    resultSubtitle: document.getElementById("depResultSubtitle"),
    scoreMeta: document.getElementById("depScoreMeta"),
    resultNote: document.getElementById("depResultNote"),
    resultTextCombined: document.getElementById("depResultTextCombined"),
    helpText: document.getElementById("depHelpText"),
    links: document.getElementById("depLinks")
  };

  function showError(message) {
    el.error.style.display = "block";
    el.error.textContent = message;
  }

  function clearError() {
    el.error.style.display = "none";
    el.error.textContent = "";
  }

  function escapeHtml(str) {
    return String(str)
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function isNonEmptyString(value) {
    return typeof value === "string" && value.trim() !== "";
  }

  function nl2p(text) {
    return String(text)
      .split(/\n{2,}/)
      .map(part => "<p>" + escapeHtml(part).replace(/\n/g, "<br>") + "</p>")
      .join("");
  }

  function endsWithSlug(url, slug) {
    const cleanUrl = String(url).replace(/\/+$/, "");
    const cleanSlug = String(slug).replace(/^\/+|\/+$/g, "");
    return cleanUrl.endsWith("/" + cleanSlug);
  }

  function validateTestData(data) {
    for (const key of REQUIRED_TOP_LEVEL_FIELDS) {
      if (!(key in data)) {
        return "Fehler: In TEST_DATA fehlt das Pflichtfeld '" + key + "'.";
      }
    }

    if (!isNonEmptyString(data.title)) {
      return "Fehler: TEST_DATA.title ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.intro)) {
      return "Fehler: TEST_DATA.intro ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.testType) || !ALLOWED_TEST_TYPES.includes(data.testType)) {
      return "Fehler: TEST_DATA.testType ist ungültig. Erlaubt sind: risk, standard, fun.";
    }

    if (!Array.isArray(data.questions) || data.questions.length !== 12) {
      return "Fehler: TEST_DATA.questions muss genau 12 Fragen enthalten.";
    }

    for (let i = 0; i < data.questions.length; i++) {
      const q = data.questions[i];

      if (!q || !isNonEmptyString(q.text)) {
        return "Fehler: Frage " + (i + 1) + " hat keinen gültigen Text.";
      }

      if (!Array.isArray(q.answers) || q.answers.length !== 5) {
        return "Fehler: Frage " + (i + 1) + " muss genau 5 Antworten haben.";
      }

      const values = q.answers.map(a => a.value);
      const expected = [0, 1, 2, 3, 4];

      if (JSON.stringify(values) !== JSON.stringify(expected)) {
        return "Fehler: Frage " + (i + 1) + " hat keine gültigen Antwortwerte von 0 bis 4.";
      }

      for (let j = 0; j < q.answers.length; j++) {
        if (!isNonEmptyString(q.answers[j].text)) {
          return "Fehler: Frage " + (i + 1) + ", Antwort " + (j + 1) + " hat keinen gültigen Text.";
        }
      }
    }

    if (typeof data.results !== "object" || data.results === null) {
      return "Fehler: TEST_DATA.results ist ungültig.";
    }

    for (const key of REQUIRED_RESULT_KEYS) {
      if (!(key in data.results)) {
        return "Fehler: In TEST_DATA.results fehlt der Bereich '" + key + "'. Erwartet werden: low, mid, high, veryHigh.";
      }

      const result = data.results[key];

      if (typeof result !== "object" || result === null) {
        return "Fehler: Der Ergebnisbereich '" + key + "' ist ungültig.";
      }

      for (const field of REQUIRED_RESULT_FIELDS) {
        if (!(field in result)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' fehlt das Feld '" + field + "'.";
        }
      }

      if (!isNonEmptyString(result.badge)) {
        return "Fehler: '" + key + ".badge' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.title)) {
        return "Fehler: '" + key + ".title' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.subtitle)) {
        return "Fehler: '" + key + ".subtitle' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text1)) {
        return "Fehler: '" + key + ".text1' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text2)) {
        return "Fehler: '" + key + ".text2' ist leer oder ungültig.";
      }

      if (!Array.isArray(result.advice) || result.advice.length < 2 || result.advice.length > 4) {
        return "Fehler: '" + key + ".advice' muss 2 bis 4 Punkte enthalten.";
      }

      for (let i = 0; i < result.advice.length; i++) {
        if (!isNonEmptyString(result.advice[i])) {
          return "Fehler: '" + key + ".advice[" + i + "]' ist leer oder ungültig.";
        }
      }

      if (!Array.isArray(result.links) || result.links.length < 2 || result.links.length > 3) {
        return "Fehler: '" + key + ".links' muss 2 bis 3 weiterführende Tests enthalten.";
      }

      const seenSlugs = new Set();

      for (const link of result.links) {
        if (!link || typeof link !== "object") {
          return "Fehler: Ein Link in '" + key + ".links' ist ungültig.";
        }
        if (!isNonEmptyString(link.slug)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Slug.";
        }
        if (!isNonEmptyString(link.title)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Titel.";
        }
        if (!isNonEmptyString(link.url)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keine gültige URL.";
        }
        if (seenSlugs.has(link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' gibt es doppelte Links mit dem Slug '" + link.slug + "'.";
        }
        if (!endsWithSlug(link.url, link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' passt die URL nicht zum Slug '" + link.slug + "'.";
        }

        seenSlugs.add(link.slug);
      }
    }

    return null;
  }

  function renderQuestions(data, userAnswers) {
    let html = "";

    data.questions.forEach((question, qIndex) => {
      const answers = question.answers;

      html += `
        <div class="dep-question">
          <div class="dep-question-title">${qIndex + 1}. ${escapeHtml(question.text)}</div>
      `;

      answers.forEach((answer, aIndex) => {
        const inputId = `depQ${qIndex}A${aIndex}`;
        html += `
          <label class="dep-answer" for="${inputId}">
            <input
              type="radio"
              id="${inputId}"
              name="depQ${qIndex}"
              value="${answer.value}"
              ${userAnswers[qIndex] === answer.value ? "checked" : ""}
            >
            <span class="dep-answer-text">${escapeHtml(answer.text)}</span>
          </label>
        `;
      });

      html += `</div>`;
    });

    el.questions.innerHTML = html;
  }

  function bindAnswerEvents(userAnswers) {
    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');

    radioInputs.forEach(input => {
      input.addEventListener("change", function () {
        const qIndex = Number(this.name.replace("depQ", ""));
        userAnswers[qIndex] = Number(this.value);
        clearError();
      });
    });
  }

  function getStageByScore(score) {
    if (score <= 10) return 0;
    if (score <= 21) return 1;
    if (score <= 33) return 2;
    return 3;
  }

  function applyRedFlagAdjustment(stage, answers, testType) {
    const config = RED_FLAG_CONFIG[testType];
    const highCount = answers.filter(v => v >= 3).length;
    const maxCount = answers.filter(v => v === 4).length;

    let adjustedStage = stage;
    let redFlagTriggered = false;

    if (config.useHighThreshold && highCount >= config.highThreshold) {
      adjustedStage += 1;
      redFlagTriggered = true;
    }

    if (config.useMaxOverride && maxCount >= config.maxThreshold) {
      adjustedStage = 3;
      redFlagTriggered = true;
    }

    if (adjustedStage > 3) {
      adjustedStage = 3;
    }

    return {
      adjustedStage,
      highCount,
      maxCount,
      redFlagTriggered
    };
  }

  function getResultKeyByStage(stage) {
    if (stage === 0) return "low";
    if (stage === 1) return "mid";
    if (stage === 2) return "high";
    return "veryHigh";
  }

  function getHeroClassByStage(stage) {
    if (stage === 0) return "dep-result-hero dep-result-hero--low";
    if (stage === 1) return "dep-result-hero dep-result-hero--mild";
    if (stage === 2) return "dep-result-hero dep-result-hero--mid";
    return "dep-result-hero dep-result-hero--high";
  }

  function renderAdviceList(items) {
    const lis = items.map(item => "<li>" + escapeHtml(item) + "</li>").join("");
    return '<ul class="dep-advice-list">' + lis + "</ul>";
  }

  function renderLinks(links) {
    return links.map(link => {
      return `
        <a class="dep-link-card" href="${escapeHtml(link.url)}" data-slug="${escapeHtml(link.slug)}">
          ${escapeHtml(link.title)}
        </a>
      `;
    }).join("");
  }

  function resetTest(userAnswers) {
    for (let i = 0; i < userAnswers.length; i++) {
      userAnswers[i] = undefined;
    }

    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');
    radioInputs.forEach(input => {
      input.checked = false;
    });

    clearError();
    el.result.style.display = "none";
    el.scoreMeta.textContent = "";
    el.resultNote.textContent = "";
    el.resultNote.style.display = "none";
    el.resultTitle.textContent = "";
    el.resultSubtitle.textContent = "";
    el.resultTextCombined.innerHTML = "";
    el.helpText.innerHTML = "";
    el.links.innerHTML = "";
    el.wrap.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function renderResult(data, score, baseStage, adjustedStage, redFlagTriggered) {
    const key = getResultKeyByStage(adjustedStage);
    const resultData = data.results[key];

    el.resultHero.className = getHeroClassByStage(adjustedStage);
    el.resultTitle.textContent = resultData.title;
    el.resultSubtitle.textContent = resultData.subtitle;
    el.resultTextCombined.innerHTML = nl2p(resultData.text1 + "\n\n" + resultData.text2);
    el.helpText.innerHTML = renderAdviceList(resultData.advice);
    el.links.innerHTML = renderLinks(resultData.links);
    el.scoreMeta.textContent = score + " von 48 Punkten";

    if (redFlagTriggered && adjustedStage > baseStage) {
      el.resultNote.textContent = "Hinweis: Einzelne hohe Antworten wirken sich stärker auf dein Ergebnis aus als der Gesamtwert.";
      el.resultNote.style.display = "block";
    } else {
      el.resultNote.textContent = "";
      el.resultNote.style.display = "none";
    }

    el.result.style.display = "block";
    el.result.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function init() {
    const validationError = validateTestData(TEST_DATA);

    if (validationError) {
      showError(validationError);
      return;
    }

    clearError();

    el.title.textContent = TEST_DATA.title;
    el.intro.textContent = TEST_DATA.intro;

    const userAnswers = new Array(TEST_DATA.questions.length).fill(undefined);

    renderQuestions(TEST_DATA, userAnswers);
    bindAnswerEvents(userAnswers);

    el.submit.addEventListener("click", function () {
      const unanswered = userAnswers
        .map((value, index) => value === undefined ? index + 1 : null)
        .filter(Boolean);

      if (unanswered.length > 0) {
        el.result.style.display = "none";
        showError("Bitte beantworte alle Fragen. Offen: " + unanswered.join(", "));
        el.error.scrollIntoView({ behavior: "smooth", block: "center" });
        return;
      }

      clearError();

      const score = userAnswers.reduce((sum, value) => sum + value, 0);
      const baseStage = getStageByScore(score);
      const redFlagData = applyRedFlagAdjustment(baseStage, userAnswers, TEST_DATA.testType);

      renderResult(
        TEST_DATA,
        score,
        baseStage,
        redFlagData.adjustedStage,
        redFlagData.redFlagTriggered
      );
    });

    el.reset.addEventListener("click", function () {
      resetTest(userAnswers);
    });
  }

  init();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ist mein Partner emotional intelligent?</title>
		<link>https://checkdich.at/category-dein-partner-im-check/ist-mein-partner-emotional-intelligent-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:48:09 +0000</pubDate>
				<category><![CDATA[Partner]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1831</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1831">.elementor-1831 .elementor-element.elementor-element-da6e99d{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1831" class="elementor elementor-1831" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-da6e99d e-flex e-con-boxed e-con e-parent" data-id="da6e99d" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-d53bd0e elementor-widget elementor-widget-html" data-id="d53bd0e" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.dep-test-wrap{
  max-width: 860px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7ecf3;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  font-family: Arial, sans-serif;
  color: #1f2937;
}

.dep-test-header{
  margin-bottom: 24px;
}

.dep-test-title{
  margin: 0 0 10px 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
  color: #111827;
}

.dep-test-intro{
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: #4b5563;
}

.dep-test-error{
  display: none;
  margin: 0 0 22px 0;
  padding: 14px 16px;
  border: 1px solid #f3c2c2;
  background: #fff4f4;
  color: #9f1d1d;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}

.dep-question{
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fbfcfe;
}

.dep-question-title{
  margin: 0 0 14px 0;
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  color: #111827;
}

.dep-answer{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid #dde5ef;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.dep-answer:hover{
  border-color: #bfd0e6;
  background: #f8fbff;
}

.dep-answer input{
  margin: 0;
  flex: 0 0 auto;
}

.dep-answer-text{
  font-size: 15px;
  line-height: 1.45;
  color: #1f2937;
}

.dep-actions{
  margin-top: 24px;
}

.dep-btn{
  display: inline-block;
  width: 100%;
  border: 0;
  border-radius: 14px;
  padding: 15px 18px;
  background: #2563eb;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.18);
}

.dep-btn:hover{
  background: #1d4ed8;
}

.dep-btn:focus{
  outline: 3px solid rgba(37, 99, 235, 0.2);
  outline-offset: 2px;
}

.dep-btn:active{
  transform: translateY(1px);
}

.dep-btn-secondary{
  margin-top: 12px;
  background: #e5e7eb;
  color: #1f2937;
  box-shadow: none;
}

.dep-btn-secondary:hover{
  background: #dbe1e8;
}

.dep-result{
  display: none;
  margin-top: 30px;
  padding-top: 10px;
}

.dep-result-hero{
  padding: 24px 20px;
  border-radius: 18px;
  margin-bottom: 18px;
  text-align: center;
  border: 1px solid transparent;
}

.dep-result-hero--low{
  background: #eef6ff;
  border-color: #cfe3ff;
}

.dep-result-hero--mild{
  background: #f4f8ff;
  border-color: #d9e7ff;
}

.dep-result-hero--mid{
  background: #fff7e8;
  border-color: #f4ddb0;
}

.dep-result-hero--high{
  background: #fff0f0;
  border-color: #f1c6c6;
}

.dep-result-title{
  margin: 0;
  font-size: 31px;
  line-height: 1.15;
  font-weight: 800;
  color: #111827;
}

.dep-result-subtitle{
  margin: 12px auto 0 auto;
  max-width: 680px;
  font-size: 17px;
  line-height: 1.6;
  color: #374151;
}

.dep-card{
  margin-bottom: 14px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fff;
}

.dep-card-heading{
  margin: 0 0 10px 0;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #475569;
}

.dep-card-text{
  font-size: 15px;
  line-height: 1.7;
  color: #1f2937;
}

.dep-card-text p{
  margin: 0 0 12px 0;
}

.dep-card-text p:last-child{
  margin-bottom: 0;
}

.dep-advice-list{
  margin: 0;
  padding-left: 18px;
}

.dep-advice-list li{
  margin: 0 0 8px 0;
  line-height: 1.6;
}

.dep-links-grid{
  display: grid;
  gap: 10px;
}

.dep-link-card{
  display: block;
  padding: 14px 16px;
  border: 1px solid #dbe5f0;
  border-radius: 14px;
  text-decoration: none;
  background: #f8fbff;
  color: #0f172a;
  font-weight: 700;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.dep-link-card:hover{
  border-color: #bfd0e6;
  background: #f1f7ff;
  transform: translateY(-1px);
}

.dep-score-meta{
  margin-top: 16px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 700;
  color: #334155;
  text-align: center;
}

.dep-result-note{
  display: none;
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: #475569;
  text-align: center;
}

@media (max-width: 640px){
  .dep-test-wrap{
    padding: 18px;
    border-radius: 14px;
  }

  .dep-test-title{
    font-size: 25px;
  }

  .dep-result-title{
    font-size: 26px;
  }

  .dep-result-subtitle{
    font-size: 16px;
  }

  .dep-question{
    padding: 14px;
  }

  .dep-answer{
    padding: 11px 12px;
  }

  .dep-score-meta{
    font-size: 17px;
  }
}
</style>

<div class="dep-test-wrap" id="depTestWrap">
  <div class="dep-test-header">
    <h1 class="dep-test-title" id="depTestTitle"></h1>
    <p class="dep-test-intro" id="depTestIntro"></p>
  </div>

  <div class="dep-test-error" id="depTestError"></div>

  <div id="depTestQuestions"></div>

  <div class="dep-actions">
    <button class="dep-btn" id="depTestSubmit" type="button">Ergebnis anzeigen</button>
    <button class="dep-btn dep-btn-secondary" id="depTestReset" type="button">Zurücksetzen</button>
  </div>

  <div class="dep-result" id="depTestResult">
    <div class="dep-result-hero" id="depResultHero">
      <h3 class="dep-result-title" id="depResultTitle"></h3>
      <div class="dep-result-subtitle" id="depResultSubtitle"></div>
      <div class="dep-score-meta" id="depScoreMeta"></div>
      <div class="dep-result-note" id="depResultNote"></div>
    </div>

```
<div class="dep-card">
  <div class="dep-card-heading">Einordnung</div>
  <div class="dep-card-text" id="depResultTextCombined"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Worauf du jetzt achten kannst</div>
  <div class="dep-card-text" id="depHelpText"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Passende nächste Tests</div>
  <div class="dep-links-grid" id="depLinks"></div>
</div>
```

  </div>
</div>

<script>
const TEST_DATA = {
  title: "Ist mein Partner emotional intelligent?",
  intro: "Es geht nicht darum, was dein Partner sagt – sondern wie er in echten Situationen reagiert. Dieser Test zeigt dir, wie er mit Gefühlen umgeht, wenn es darauf ankommt.",
  testType: "standard",
  questions: [
{
text: "Wenn du deinem Partner nach der Arbeit von einem konkreten Problem erzählst (z. B. Streit im Job), stellt er Rückfragen zu deiner Situation, statt direkt von sich zu erzählen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn ihr euch über etwas Alltägliches uneinig seid (z. B. Planung am Wochenende), spricht dein Partner aus, was die Situation bei ihm auslöst.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn ihr euch nach einem Streit wiederseht (z. B. abends zuhause), spricht dein Partner von sich aus an, dass noch etwas zwischen euch steht.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn sich dein Partner über etwas ärgert (z. B. weil etwas nicht funktioniert hat), spricht er darüber, ohne laut zu werden oder dich abzuwerten.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du eine Bitte deines Partners ablehnst (z. B. Plan ändern, etwas nicht machen wollen), bleibt er ruhig und geht weiter ins Gespräch.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du sichtbar gestresst nach Hause kommst, reduziert dein Partner Anforderungen an dich (z. B. erwartet weniger, gibt dir Raum).",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn ihr euch bei einer Nachricht missversteht (z. B. Chat oder WhatsApp), fragt er nach, was du gemeint hast, bevor er reagiert.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn deinen Partner etwas an dir stört (z. B. eine wiederkehrende Gewohnheit), spricht er es direkt an, ohne dich dabei abzuwerten.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du nach einem Termin oder Treffen stiller oder zurückgezogener bist, spricht er dich darauf an und versucht zu verstehen, was los ist.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn ein Gespräch eskaliert (z. B. Stimme wird lauter), unterbricht dein Partner das Gespräch bewusst und kehrt später ruhiger zurück.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du deinem Partner sagst, dass dich etwas verletzt hat, geht dieser darauf ein, statt sich nur zu rechtfertigen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Nach einem Streit sucht dein Partner aktiv wieder Kontakt (z. B. Gespräch beginnen, Nähe herstellen), statt einfach abzuwarten.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
}
],
  results: {
    low: {
      badge: "Niedrige emotionale Kompetenz",
      title: "Dein Partner zeigt wenig emotionale Reife im Alltag",
      subtitle: "Im Moment spricht vieles dafür, dass dein Partner Gefühle eher übersieht, abwehrt oder nur begrenzt einordnen kann.",
      text1: "Ein niedriger Wert bedeutet nicht automatisch, dass dein Partner kalt oder bewusst verletzend ist. Er deutet aber darauf hin, dass emotionale Signale in eurer Beziehung oft nicht gut aufgenommen, verstanden oder reguliert werden.",
      text2: "Das zeigt sich häufig daran, dass Gespräche schnell kippen, Verletzungen nicht richtig aufgefangen werden oder du dich mit deinen Gefühlen eher allein gelassen fühlst. Auf Dauer kann dadurch Nähe schwieriger werden, weil nicht nur Inhalte, sondern auch emotionale Reaktionen zwischen euch immer wieder aneinander vorbeigehen.",
      advice: [
        "Achte weniger auf einzelne gute Gespräche und mehr auf das wiederkehrende Muster im Alltag.",
        "Beobachte, ob dein Partner nach Konflikten Verantwortung übernimmt oder eher abwehrt und ausweicht.",
        "Prüfe ehrlich, wie oft du dich nach Gesprächen verstanden statt verunsichert fühlst."
      ],
      links: [
        {
          slug: "ist-mein-partner-egoistisch-test",
          title: "Ist mein Partner egoistisch?",
          url: "/dein-partner-im-check/ist-mein-partner-egoistisch-test"
        },
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        }
      ]
    },
    mid: {
      badge: "Ansätze emotionaler Intelligenz vorhanden",
      title: "Dein Partner ist teilweise emotional zugänglich",
      subtitle: "Es gibt erkennbare Ansätze von emotionaler Kompetenz, aber sie tragen offenbar nicht durch alle wichtigen Situationen.",
      text1: "Ein mittlerer Wert spricht dafür, dass dein Partner Gefühle nicht grundsätzlich ignoriert. Gleichzeitig scheint seine emotionale Reaktion stark davon abzuhängen, wie ruhig, belastet oder herausgefordert die jeweilige Situation gerade ist.",
      text2: "Das kann sich so anfühlen, als wäre er in manchen Momenten verständnisvoll und offen, in anderen aber schnell überfordert, defensiv oder unklar. Für eine stabile Beziehung ist entscheidend, ob emotionale Präsenz auch dann möglich bleibt, wenn es unangenehm wird.",
      advice: [
        "Achte darauf, ob Verständnis auch in Konflikten vorhanden ist oder vor allem in ruhigen Momenten.",
        "Beobachte, welche Situationen seine emotionale Offenheit kippen lassen.",
        "Sprich konkrete Alltagsszenen an statt nur allgemein über eure Kommunikation zu reden."
      ],
      links: [
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Deutliche emotionale Fähigkeiten",
      title: "Dein Partner wirkt emotional recht kompetent",
      subtitle: "Vieles spricht dafür, dass dein Partner Gefühle wahrnimmt, einordnet und in wichtigen Momenten brauchbar damit umgeht.",
      text1: "Ein hoher Wert deutet darauf hin, dass dein Partner emotionale Signale nicht nur bemerkt, sondern auch angemessen darauf reagieren kann. Das ist ein wichtiger Faktor für Nähe, Vertrauen und faire Konfliktklärung.",
      text2: "Emotional intelligente Partner müssen nicht perfekt sein. Entscheidend ist eher, ob sie auch unter Druck ansprechbar bleiben, Unterschiede aushalten und nach schwierigen Situationen wieder in Verbindung gehen. Genau das scheint bei euch in vielen Bereichen vorhanden zu sein.",
      advice: [
        "Achte darauf, welche konkreten Verhaltensweisen zwischen euch gut funktionieren, damit ihr sie bewusst stärkt.",
        "Nutze Konflikte nicht nur zur Klärung, sondern auch dazu, gute Muster weiter auszubauen.",
        "Beobachte, ob emotionale Offenheit auch in belastenden Phasen stabil bleibt."
      ],
      links: [
        {
          slug: "ist-mein-partner-manipulativ-test",
          title: "Ist mein Partner manipulativ?",
          url: "/dein-partner-im-check/ist-mein-partner-manipulativ-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-bindungsangst-test",
          title: "Hat mein Partner Bindungsangst?",
          url: "/dein-partner-im-check/hat-mein-partner-bindungsangst-test"
        }
      ]
    },
    veryHigh: {
      badge: "Sehr starke emotionale Kompetenz",
      title: "Dein Partner wirkt emotional sehr intelligent",
      subtitle: "Dein Ergebnis spricht klar dafür, dass dein Partner Gefühle differenziert wahrnimmt und in eurer Beziehung reif damit umgeht.",
      text1: "Ein sehr hoher Wert spricht für eine ausgeprägte emotionale Kompetenz. Dein Partner scheint nicht nur eigene Gefühle benennen und regulieren zu können, sondern auch auf deine emotionalen Signale aufmerksam und tragfähig zu reagieren.",
      text2: "Das ist besonders relevant, weil emotionale Intelligenz nicht an schönen Worten erkennbar wird, sondern daran, wie sich jemand in belastenden, verletzlichen oder konfliktgeladenen Momenten verhält. Genau dort scheint dein Partner bei euch häufig Stabilität, Verständnis und Verbindung möglich zu machen.",
      advice: [
        "Nimm wahr, welche konkreten Verhaltensweisen eure Beziehung emotional sicher machen.",
        "Achte darauf, dass diese Qualität nicht selbstverständlich wird, sondern bewusst gepflegt bleibt.",
        "Auch gute Muster sollten unter Stress im Blick bleiben, damit sie langfristig stabil bleiben."
      ],
      links: [
        {
          slug: "ist-mein-partner-narzisstisch-test",
          title: "Ist mein Partner narzisstisch?",
          url: "/dein-partner-im-check/ist-mein-partner-narzisstisch-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-psychopathische-zuege-test",
          title: "Hat mein Partner psychopathische Züge?",
          url: "/dein-partner-im-check/hat-mein-partner-psychopathische-zuege-test"
        }
      ]
    }
  }
};

(function () {
  "use strict";

  if (typeof TEST_DATA === "undefined") {
    const errorBox = document.getElementById("depTestError");
    errorBox.style.display = "block";
    errorBox.textContent = "Fehler: TEST_DATA wurde nicht gefunden. Die Engine braucht gültige Testdaten.";
    return;
  }

  const REQUIRED_TOP_LEVEL_FIELDS = ["title", "intro", "questions", "results", "testType"];
  const REQUIRED_RESULT_KEYS = ["low", "mid", "high", "veryHigh"];
  const REQUIRED_RESULT_FIELDS = ["badge", "title", "subtitle", "text1", "text2", "advice", "links"];
  const ALLOWED_TEST_TYPES = ["risk", "standard", "fun"];

  const RED_FLAG_CONFIG = {
    risk: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: true,
      maxThreshold: 3
    },
    standard: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: false,
      maxThreshold: 3
    },
    fun: {
      useHighThreshold: false,
      highThreshold: Infinity,
      useMaxOverride: false,
      maxThreshold: Infinity
    }
  };

  const el = {
    wrap: document.getElementById("depTestWrap"),
    title: document.getElementById("depTestTitle"),
    intro: document.getElementById("depTestIntro"),
    error: document.getElementById("depTestError"),
    questions: document.getElementById("depTestQuestions"),
    submit: document.getElementById("depTestSubmit"),
    reset: document.getElementById("depTestReset"),
    result: document.getElementById("depTestResult"),
    resultHero: document.getElementById("depResultHero"),
    resultTitle: document.getElementById("depResultTitle"),
    resultSubtitle: document.getElementById("depResultSubtitle"),
    scoreMeta: document.getElementById("depScoreMeta"),
    resultNote: document.getElementById("depResultNote"),
    resultTextCombined: document.getElementById("depResultTextCombined"),
    helpText: document.getElementById("depHelpText"),
    links: document.getElementById("depLinks")
  };

  function showError(message) {
    el.error.style.display = "block";
    el.error.textContent = message;
  }

  function clearError() {
    el.error.style.display = "none";
    el.error.textContent = "";
  }

  function escapeHtml(str) {
    return String(str)
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function isNonEmptyString(value) {
    return typeof value === "string" && value.trim() !== "";
  }

  function nl2p(text) {
    return String(text)
      .split(/\n{2,}/)
      .map(part => "<p>" + escapeHtml(part).replace(/\n/g, "<br>") + "</p>")
      .join("");
  }

  function endsWithSlug(url, slug) {
    const cleanUrl = String(url).replace(/\/+$/, "");
    const cleanSlug = String(slug).replace(/^\/+|\/+$/g, "");
    return cleanUrl.endsWith("/" + cleanSlug);
  }

  function validateTestData(data) {
    for (const key of REQUIRED_TOP_LEVEL_FIELDS) {
      if (!(key in data)) {
        return "Fehler: In TEST_DATA fehlt das Pflichtfeld '" + key + "'.";
      }
    }

    if (!isNonEmptyString(data.title)) {
      return "Fehler: TEST_DATA.title ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.intro)) {
      return "Fehler: TEST_DATA.intro ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.testType) || !ALLOWED_TEST_TYPES.includes(data.testType)) {
      return "Fehler: TEST_DATA.testType ist ungültig. Erlaubt sind: risk, standard, fun.";
    }

    if (!Array.isArray(data.questions) || data.questions.length !== 12) {
      return "Fehler: TEST_DATA.questions muss genau 12 Fragen enthalten.";
    }

    for (let i = 0; i < data.questions.length; i++) {
      const q = data.questions[i];

      if (!q || !isNonEmptyString(q.text)) {
        return "Fehler: Frage " + (i + 1) + " hat keinen gültigen Text.";
      }

      if (!Array.isArray(q.answers) || q.answers.length !== 5) {
        return "Fehler: Frage " + (i + 1) + " muss genau 5 Antworten haben.";
      }

      const values = q.answers.map(a => a.value);
      const expected = [0, 1, 2, 3, 4];

      if (JSON.stringify(values) !== JSON.stringify(expected)) {
        return "Fehler: Frage " + (i + 1) + " hat keine gültigen Antwortwerte von 0 bis 4.";
      }

      for (let j = 0; j < q.answers.length; j++) {
        if (!isNonEmptyString(q.answers[j].text)) {
          return "Fehler: Frage " + (i + 1) + ", Antwort " + (j + 1) + " hat keinen gültigen Text.";
        }
      }
    }

    if (typeof data.results !== "object" || data.results === null) {
      return "Fehler: TEST_DATA.results ist ungültig.";
    }

    for (const key of REQUIRED_RESULT_KEYS) {
      if (!(key in data.results)) {
        return "Fehler: In TEST_DATA.results fehlt der Bereich '" + key + "'. Erwartet werden: low, mid, high, veryHigh.";
      }

      const result = data.results[key];

      if (typeof result !== "object" || result === null) {
        return "Fehler: Der Ergebnisbereich '" + key + "' ist ungültig.";
      }

      for (const field of REQUIRED_RESULT_FIELDS) {
        if (!(field in result)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' fehlt das Feld '" + field + "'.";
        }
      }

      if (!isNonEmptyString(result.badge)) {
        return "Fehler: '" + key + ".badge' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.title)) {
        return "Fehler: '" + key + ".title' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.subtitle)) {
        return "Fehler: '" + key + ".subtitle' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text1)) {
        return "Fehler: '" + key + ".text1' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text2)) {
        return "Fehler: '" + key + ".text2' ist leer oder ungültig.";
      }

      if (!Array.isArray(result.advice) || result.advice.length < 2 || result.advice.length > 4) {
        return "Fehler: '" + key + ".advice' muss 2 bis 4 Punkte enthalten.";
      }

      for (let i = 0; i < result.advice.length; i++) {
        if (!isNonEmptyString(result.advice[i])) {
          return "Fehler: '" + key + ".advice[" + i + "]' ist leer oder ungültig.";
        }
      }

      if (!Array.isArray(result.links) || result.links.length < 2 || result.links.length > 3) {
        return "Fehler: '" + key + ".links' muss 2 bis 3 weiterführende Tests enthalten.";
      }

      const seenSlugs = new Set();

      for (const link of result.links) {
        if (!link || typeof link !== "object") {
          return "Fehler: Ein Link in '" + key + ".links' ist ungültig.";
        }
        if (!isNonEmptyString(link.slug)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Slug.";
        }
        if (!isNonEmptyString(link.title)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Titel.";
        }
        if (!isNonEmptyString(link.url)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keine gültige URL.";
        }
        if (seenSlugs.has(link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' gibt es doppelte Links mit dem Slug '" + link.slug + "'.";
        }
        if (!endsWithSlug(link.url, link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' passt die URL nicht zum Slug '" + link.slug + "'.";
        }

        seenSlugs.add(link.slug);
      }
    }

    return null;
  }

  function renderQuestions(data, userAnswers) {
    let html = "";

    data.questions.forEach((question, qIndex) => {
      const answers = question.answers;

      html += `
        <div class="dep-question">
          <div class="dep-question-title">${qIndex + 1}. ${escapeHtml(question.text)}</div>
      `;

      answers.forEach((answer, aIndex) => {
        const inputId = `depQ${qIndex}A${aIndex}`;
        html += `
          <label class="dep-answer" for="${inputId}">
            <input
              type="radio"
              id="${inputId}"
              name="depQ${qIndex}"
              value="${answer.value}"
              ${userAnswers[qIndex] === answer.value ? "checked" : ""}
            >
            <span class="dep-answer-text">${escapeHtml(answer.text)}</span>
          </label>
        `;
      });

      html += `</div>`;
    });

    el.questions.innerHTML = html;
  }

  function bindAnswerEvents(userAnswers) {
    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');

    radioInputs.forEach(input => {
      input.addEventListener("change", function () {
        const qIndex = Number(this.name.replace("depQ", ""));
        userAnswers[qIndex] = Number(this.value);
        clearError();
      });
    });
  }

  function getStageByScore(score) {
    if (score <= 10) return 0;
    if (score <= 21) return 1;
    if (score <= 33) return 2;
    return 3;
  }

  function applyRedFlagAdjustment(stage, answers, testType) {
    const config = RED_FLAG_CONFIG[testType];
    const highCount = answers.filter(v => v >= 3).length;
    const maxCount = answers.filter(v => v === 4).length;

    let adjustedStage = stage;
    let redFlagTriggered = false;

    if (config.useHighThreshold && highCount >= config.highThreshold) {
      adjustedStage += 1;
      redFlagTriggered = true;
    }

    if (config.useMaxOverride && maxCount >= config.maxThreshold) {
      adjustedStage = 3;
      redFlagTriggered = true;
    }

    if (adjustedStage > 3) {
      adjustedStage = 3;
    }

    return {
      adjustedStage,
      highCount,
      maxCount,
      redFlagTriggered
    };
  }

  function getResultKeyByStage(stage) {
    if (stage === 0) return "low";
    if (stage === 1) return "mid";
    if (stage === 2) return "high";
    return "veryHigh";
  }

  function getHeroClassByStage(stage) {
    if (stage === 0) return "dep-result-hero dep-result-hero--low";
    if (stage === 1) return "dep-result-hero dep-result-hero--mild";
    if (stage === 2) return "dep-result-hero dep-result-hero--mid";
    return "dep-result-hero dep-result-hero--high";
  }

  function renderAdviceList(items) {
    const lis = items.map(item => "<li>" + escapeHtml(item) + "</li>").join("");
    return '<ul class="dep-advice-list">' + lis + "</ul>";
  }

  function renderLinks(links) {
    return links.map(link => {
      return `
        <a class="dep-link-card" href="${escapeHtml(link.url)}" data-slug="${escapeHtml(link.slug)}">
          ${escapeHtml(link.title)}
        </a>
      `;
    }).join("");
  }

  function resetTest(userAnswers) {
    for (let i = 0; i < userAnswers.length; i++) {
      userAnswers[i] = undefined;
    }

    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');
    radioInputs.forEach(input => {
      input.checked = false;
    });

    clearError();
    el.result.style.display = "none";
    el.scoreMeta.textContent = "";
    el.resultNote.textContent = "";
    el.resultNote.style.display = "none";
    el.resultTitle.textContent = "";
    el.resultSubtitle.textContent = "";
    el.resultTextCombined.innerHTML = "";
    el.helpText.innerHTML = "";
    el.links.innerHTML = "";
    el.wrap.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function renderResult(data, score, baseStage, adjustedStage, redFlagTriggered) {
    const key = getResultKeyByStage(adjustedStage);
    const resultData = data.results[key];

    el.resultHero.className = getHeroClassByStage(adjustedStage);
    el.resultTitle.textContent = resultData.title;
    el.resultSubtitle.textContent = resultData.subtitle;
    el.resultTextCombined.innerHTML = nl2p(resultData.text1 + "\n\n" + resultData.text2);
    el.helpText.innerHTML = renderAdviceList(resultData.advice);
    el.links.innerHTML = renderLinks(resultData.links);
    el.scoreMeta.textContent = score + " von 48 Punkten";

    if (redFlagTriggered && adjustedStage > baseStage) {
      el.resultNote.textContent = "Hinweis: Einzelne hohe Antworten wirken sich stärker auf dein Ergebnis aus als der Gesamtwert.";
      el.resultNote.style.display = "block";
    } else {
      el.resultNote.textContent = "";
      el.resultNote.style.display = "none";
    }

    el.result.style.display = "block";
    el.result.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function init() {
    const validationError = validateTestData(TEST_DATA);

    if (validationError) {
      showError(validationError);
      return;
    }

    clearError();

    el.title.textContent = TEST_DATA.title;
    el.intro.textContent = TEST_DATA.intro;

    const userAnswers = new Array(TEST_DATA.questions.length).fill(undefined);

    renderQuestions(TEST_DATA, userAnswers);
    bindAnswerEvents(userAnswers);

    el.submit.addEventListener("click", function () {
      const unanswered = userAnswers
        .map((value, index) => value === undefined ? index + 1 : null)
        .filter(Boolean);

      if (unanswered.length > 0) {
        el.result.style.display = "none";
        showError("Bitte beantworte alle Fragen. Offen: " + unanswered.join(", "));
        el.error.scrollIntoView({ behavior: "smooth", block: "center" });
        return;
      }

      clearError();

      const score = userAnswers.reduce((sum, value) => sum + value, 0);
      const baseStage = getStageByScore(score);
      const redFlagData = applyRedFlagAdjustment(baseStage, userAnswers, TEST_DATA.testType);

      renderResult(
        TEST_DATA,
        score,
        baseStage,
        redFlagData.adjustedStage,
        redFlagData.redFlagTriggered
      );
    });

    el.reset.addEventListener("click", function () {
      resetTest(userAnswers);
    });
  }

  init();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ist mein Partner egoistisch?</title>
		<link>https://checkdich.at/category-dein-partner-im-check/ist-mein-partner-egoistisch-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:46:16 +0000</pubDate>
				<category><![CDATA[Partner]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1826</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1826">.elementor-1826 .elementor-element.elementor-element-15025b0{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1826" class="elementor elementor-1826" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-15025b0 e-flex e-con-boxed e-con e-parent" data-id="15025b0" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-b72ac0c elementor-widget elementor-widget-html" data-id="b72ac0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.dep-test-wrap{
  max-width: 860px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7ecf3;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  font-family: Arial, sans-serif;
  color: #1f2937;
}

.dep-test-header{
  margin-bottom: 24px;
}

.dep-test-title{
  margin: 0 0 10px 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
  color: #111827;
}

.dep-test-intro{
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: #4b5563;
}

.dep-test-error{
  display: none;
  margin: 0 0 22px 0;
  padding: 14px 16px;
  border: 1px solid #f3c2c2;
  background: #fff4f4;
  color: #9f1d1d;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}

.dep-question{
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fbfcfe;
}

.dep-question-title{
  margin: 0 0 14px 0;
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  color: #111827;
}

.dep-answer{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid #dde5ef;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.dep-answer:hover{
  border-color: #bfd0e6;
  background: #f8fbff;
}

.dep-answer input{
  margin: 0;
  flex: 0 0 auto;
}

.dep-answer-text{
  font-size: 15px;
  line-height: 1.45;
  color: #1f2937;
}

.dep-actions{
  margin-top: 24px;
}

.dep-btn{
  display: inline-block;
  width: 100%;
  border: 0;
  border-radius: 14px;
  padding: 15px 18px;
  background: #2563eb;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.18);
}

.dep-btn:hover{
  background: #1d4ed8;
}

.dep-btn:focus{
  outline: 3px solid rgba(37, 99, 235, 0.2);
  outline-offset: 2px;
}

.dep-btn:active{
  transform: translateY(1px);
}

.dep-btn-secondary{
  margin-top: 12px;
  background: #e5e7eb;
  color: #1f2937;
  box-shadow: none;
}

.dep-btn-secondary:hover{
  background: #dbe1e8;
}

.dep-result{
  display: none;
  margin-top: 30px;
  padding-top: 10px;
}

.dep-result-hero{
  padding: 24px 20px;
  border-radius: 18px;
  margin-bottom: 18px;
  text-align: center;
  border: 1px solid transparent;
}

.dep-result-hero--low{
  background: #eef6ff;
  border-color: #cfe3ff;
}

.dep-result-hero--mild{
  background: #f4f8ff;
  border-color: #d9e7ff;
}

.dep-result-hero--mid{
  background: #fff7e8;
  border-color: #f4ddb0;
}

.dep-result-hero--high{
  background: #fff0f0;
  border-color: #f1c6c6;
}

.dep-result-title{
  margin: 0;
  font-size: 31px;
  line-height: 1.15;
  font-weight: 800;
  color: #111827;
}

.dep-result-subtitle{
  margin: 12px auto 0 auto;
  max-width: 680px;
  font-size: 17px;
  line-height: 1.6;
  color: #374151;
}

.dep-card{
  margin-bottom: 14px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fff;
}

.dep-card-heading{
  margin: 0 0 10px 0;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #475569;
}

.dep-card-text{
  font-size: 15px;
  line-height: 1.7;
  color: #1f2937;
}

.dep-card-text p{
  margin: 0 0 12px 0;
}

.dep-card-text p:last-child{
  margin-bottom: 0;
}

.dep-advice-list{
  margin: 0;
  padding-left: 18px;
}

.dep-advice-list li{
  margin: 0 0 8px 0;
  line-height: 1.6;
}

.dep-links-grid{
  display: grid;
  gap: 10px;
}

.dep-link-card{
  display: block;
  padding: 14px 16px;
  border: 1px solid #dbe5f0;
  border-radius: 14px;
  text-decoration: none;
  background: #f8fbff;
  color: #0f172a;
  font-weight: 700;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.dep-link-card:hover{
  border-color: #bfd0e6;
  background: #f1f7ff;
  transform: translateY(-1px);
}

.dep-score-meta{
  margin-top: 16px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 700;
  color: #334155;
  text-align: center;
}

.dep-result-note{
  display: none;
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: #475569;
  text-align: center;
}

@media (max-width: 640px){
  .dep-test-wrap{
    padding: 18px;
    border-radius: 14px;
  }

  .dep-test-title{
    font-size: 25px;
  }

  .dep-result-title{
    font-size: 26px;
  }

  .dep-result-subtitle{
    font-size: 16px;
  }

  .dep-question{
    padding: 14px;
  }

  .dep-answer{
    padding: 11px 12px;
  }

  .dep-score-meta{
    font-size: 17px;
  }
}
</style>

<div class="dep-test-wrap" id="depTestWrap">
  <div class="dep-test-header">
    <h1 class="dep-test-title" id="depTestTitle"></h1>
    <p class="dep-test-intro" id="depTestIntro"></p>
  </div>

  <div class="dep-test-error" id="depTestError"></div>

  <div id="depTestQuestions"></div>

  <div class="dep-actions">
    <button class="dep-btn" id="depTestSubmit" type="button">Ergebnis anzeigen</button>
    <button class="dep-btn dep-btn-secondary" id="depTestReset" type="button">Zurücksetzen</button>
  </div>

  <div class="dep-result" id="depTestResult">
    <div class="dep-result-hero" id="depResultHero">
      <h3 class="dep-result-title" id="depResultTitle"></h3>
      <div class="dep-result-subtitle" id="depResultSubtitle"></div>
      <div class="dep-score-meta" id="depScoreMeta"></div>
      <div class="dep-result-note" id="depResultNote"></div>
    </div>

```
<div class="dep-card">
  <div class="dep-card-heading">Einordnung</div>
  <div class="dep-card-text" id="depResultTextCombined"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Worauf du jetzt achten kannst</div>
  <div class="dep-card-text" id="depHelpText"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Passende nächste Tests</div>
  <div class="dep-links-grid" id="depLinks"></div>
</div>
```

  </div>
</div>

<script>
const TEST_DATA = {
  title: "Ist mein Partner egoistisch?",
  intro: "Hast du das Gefühl, zu kurz zu kommen? Teste, ob dein Partner in eurer Beziehung zu egoistisch ist.",
  testType: "risk",
questions: [
  {
    text: "Wenn ihr euch nach einem langen Tag seht, spricht dein Partner hauptsächlich über seinen eigenen Tag, ohne auf deine Erlebnisse einzugehen.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn ihr gemeinsam das Wochenende plant, legt dein Partner den Ablauf fest, obwohl du einen anderen Vorschlag gemacht hast.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du nach einem konkreten Vorfall ansprichst, dass dich etwas gestört hat, zeigt dein Partner wenig Interesse daran, darauf einzugehen.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn im Alltag Aufgaben wie Einkaufen oder Termine anstehen, überlässt dein Partner dir diese, damit er sich nicht darum kümmern muss.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du deinen Partner bittest, dich bei einer konkreten Sache zu unterstützen, lehnt er ab, weil er seine eigenen Pläne nicht ändern will.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn ihr nach einem Streit noch einmal darüber sprecht, spricht dein Partner hauptsächlich darüber, was ihn selbst gestört hat.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du deinen Partner um eine konkrete Hilfe bittest, erledigt er zuerst andere Dinge und hilft dir erst danach.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn ihr plant, was ihr gemeinsam unternehmt, setzt sich am Ende der Vorschlag deines Partners durch.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du deinem Partner klar sagst, dass du etwas nicht willst, setzt er seine Vorstellung trotzdem um",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn ihr gemeinsam über Ausgaben sprecht, entscheidet dein Partner, wofür Geld ausgegeben wird.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn ihr euch unterhaltet, beendet dein Partner das Gespräch, sobald er alles gesagt hat, was ihm wichtig ist.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du ein Verhalten ansprichst, das dich gestört hat, bleibt dein Partner bei seiner Sichtweise, ohne auf dich einzugehen.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  }
],
  results: {
    low: {
      badge: "Niedrige Auffälligkeit",
      title: "kaum egoistische Tendenzen erkennbar",
      subtitle: "Im Gesamtbild zeigt sich kein starkes Muster von Egoismus.",
      text1: "Dein Ergebnis spricht nicht dafür, dass dein Partner durchgehend nur an sich denkt. Einzelne Situationen können trotzdem frustrierend sein, vor allem wenn Stress, Ungeduld oder unterschiedliche Bedürfnisse dazukommen.",
      text2: "Wichtig ist, ob Rücksicht und Gegenseitigkeit im Grundsatz vorhanden sind. Auch in guten Beziehungen gibt es Phasen, in denen einer mehr Raum einnimmt. Entscheidend ist, ob dein Partner ansprechbar bleibt, Verantwortung übernimmt und dich nicht dauerhaft hintenanstellt.",
      advice: [
        "Achte darauf, ob schwierige Situationen bei euch grundsätzlich beidseitig lösbar sind.",
        "Sprich konkrete Momente anstatt allgemeiner Vorwürfe an.",
        "Beobachte, ob auf Worte auch tatsächliche Veränderungen folgen."
      ],
      links: [
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    mid: {
      badge: "erste Anzeichen",
      title: "Es gibt erkennbare egoistische Muster",
      subtitle: "Mehrere Antworten deuten darauf hin, dass dein Partner seine eigenen Bedürfnisse spürbar voranstellt.",
      text1: "Dein Ergebnis zeigt keine zufälligen Einzelfälle mehr. Wahrscheinlicher ist, dass du in eurer Beziehung wiederholt erlebst, dass deine Perspektive, deine Grenzen oder deine Bedürfnisse weniger Gewicht bekommen.",
      text2: "Das muss nicht automatisch bedeuten, dass dein Partner absichtlich rücksichtslos handelt. Es kann aber bedeuten, dass sich eine unausgeglichene Dynamik eingespielt hat, in der du häufiger ausgleichst, nachgibst oder emotional mitträgst. Auf Dauer kann genau das zermürbend werden.",
      advice: [
        "Benenn nicht nur dein Gefühl, sondern das konkrete Muster dahinter.",
        "Prüfe, ob dein Partner auf Rückmeldung offen reagiert oder nur abwehrt.",
        "Achte darauf, ob Gegenseitigkeit im Alltag wirklich gelebt wird."
      ],
      links: [
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Deutlich auffällig",
      title: "Dein Partner wirkt in wichtigen Bereichen deutlich egoistisch",
      subtitle: "Das Ergebnis spricht für eine Beziehungsdynamik, in der deine Bedürfnisse wiederholt zu kurz kommen.",
      text1: "Hier geht es nicht mehr nur um kleine Rücksichtslosigkeiten. Vielmehr zeigt sich ein Muster, bei dem dein Partner eigene Wünsche, Vorteile oder Entlastung regelmäßig höher gewichtet als Fairness, Gegenseitigkeit oder Verantwortung in der Beziehung.",
      text2: "Wenn du dich häufig anpassen musst, Gespräche sich um seine Sicht drehen oder du nach Konflikten bei dir selbst landest, ist das ein ernstes Signal. Egoismus in Beziehungen zeigt sich oft nicht als offener Satz, sondern als wiederkehrende Einseitigkeit. Genau diese scheint bei dir stärker vorhanden zu sein.",
      advice: [
        "Nimm wiederkehrende Einseitigkeit ernst und rede sie nicht klein.",
        "Beobachte, ob dein Partner nach klaren Gesprächen tatsächlich Verantwortung übernimmt.",
        "Prüfe, wie oft du dich verbiegst, damit es zwischen euch ruhig bleibt.",
        "Hol dir bei Bedarf eine Außenperspektive, wenn du dein Erleben schon infrage stellst."
      ],
      links: [
        {
          slug: "ist-mein-partner-manipulativ-test",
          title: "Ist mein Partner manipulativ?",
          url: "/dein-partner-im-check/ist-mein-partner-manipulativ-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-bindungsangst-test",
          title: "Hat mein Partner Bindungsangst?",
          url: "/dein-partner-im-check/hat-mein-partner-bindungsangst-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stark auffällig",
      title: "Es zeigt sich ein starkes Muster von Egoismus",
      subtitle: "Dein Ergebnis spricht für eine deutlich unausgeglichene und belastende Dynamik.",
      text1: "Viele deiner Antworten deuten darauf hin, dass dein Partner eigene Bedürfnisse, Vorteile und Entlastung sehr konsequent voranstellt. In so einer Dynamik gerät die andere Person leicht in eine Rolle, in der sie erklärt, trägt, nachgibt und trotzdem nicht wirklich gesehen wird.",
      text2: "Das ist mehr als nur schwieriges Verhalten im Alltag. Wenn Rücksicht, Verantwortungsübernahme und echte Gegenseitigkeit dauerhaft fehlen, kann das dein Selbstwertgefühl, deine Grenzen und dein Sicherheitsgefühl in der Beziehung angreifen. Gerade dann ist es wichtig, dein Erleben ernst zu nehmen und nicht nur auf die nächste Besserungsphase zu hoffen.",
      advice: [
        "Nimm dein Gefühl von Einseitigkeit und Erschöpfung als relevantes Signal ernst.",
        "Achte darauf, ob dein Partner Verantwortung übernimmt oder nur reagiert, wenn er Druck spürt.",
        "Mach dir klar, welche Grenzen für dich nicht weiter verhandelbar sind.",
        "Suche dir Unterstützung von außen, wenn du merkst, dass du dich selbst in der Beziehung verlierst."
      ],
      links: [
        {
          slug: "ist-mein-partner-narzisstisch-test",
          title: "Ist mein Partner narzisstisch?",
          url: "/dein-partner-im-check/ist-mein-partner-narzisstisch-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-psychopathische-zuege-test",
          title: "Hat mein Partner psychopathische Züge?",
          url: "/dein-partner-im-check/hat-mein-partner-psychopathische-zuege-test"
        }
      ]
    }
  }
};

(function () {
  "use strict";

  if (typeof TEST_DATA === "undefined") {
    const errorBox = document.getElementById("depTestError");
    errorBox.style.display = "block";
    errorBox.textContent = "Fehler: TEST_DATA wurde nicht gefunden. Die Engine braucht gültige Testdaten.";
    return;
  }

  const REQUIRED_TOP_LEVEL_FIELDS = ["title", "intro", "questions", "results", "testType"];
  const REQUIRED_RESULT_KEYS = ["low", "mid", "high", "veryHigh"];
  const REQUIRED_RESULT_FIELDS = ["badge", "title", "subtitle", "text1", "text2", "advice", "links"];
  const ALLOWED_TEST_TYPES = ["risk", "standard", "fun"];

  const RED_FLAG_CONFIG = {
    risk: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: true,
      maxThreshold: 3
    },
    standard: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: false,
      maxThreshold: 3
    },
    fun: {
      useHighThreshold: false,
      highThreshold: Infinity,
      useMaxOverride: false,
      maxThreshold: Infinity
    }
  };

  const el = {
    wrap: document.getElementById("depTestWrap"),
    title: document.getElementById("depTestTitle"),
    intro: document.getElementById("depTestIntro"),
    error: document.getElementById("depTestError"),
    questions: document.getElementById("depTestQuestions"),
    submit: document.getElementById("depTestSubmit"),
    reset: document.getElementById("depTestReset"),
    result: document.getElementById("depTestResult"),
    resultHero: document.getElementById("depResultHero"),
    resultTitle: document.getElementById("depResultTitle"),
    resultSubtitle: document.getElementById("depResultSubtitle"),
    scoreMeta: document.getElementById("depScoreMeta"),
    resultNote: document.getElementById("depResultNote"),
    resultTextCombined: document.getElementById("depResultTextCombined"),
    helpText: document.getElementById("depHelpText"),
    links: document.getElementById("depLinks")
  };

  function showError(message) {
    el.error.style.display = "block";
    el.error.textContent = message;
  }

  function clearError() {
    el.error.style.display = "none";
    el.error.textContent = "";
  }

  function escapeHtml(str) {
    return String(str)
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function isNonEmptyString(value) {
    return typeof value === "string" && value.trim() !== "";
  }

  function nl2p(text) {
    return String(text)
      .split(/\n{2,}/)
      .map(part => "<p>" + escapeHtml(part).replace(/\n/g, "<br>") + "</p>")
      .join("");
  }

  function endsWithSlug(url, slug) {
    const cleanUrl = String(url).replace(/\/+$/, "");
    const cleanSlug = String(slug).replace(/^\/+|\/+$/g, "");
    return cleanUrl.endsWith("/" + cleanSlug);
  }

  function validateTestData(data) {
    for (const key of REQUIRED_TOP_LEVEL_FIELDS) {
      if (!(key in data)) {
        return "Fehler: In TEST_DATA fehlt das Pflichtfeld '" + key + "'.";
      }
    }

    if (!isNonEmptyString(data.title)) {
      return "Fehler: TEST_DATA.title ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.intro)) {
      return "Fehler: TEST_DATA.intro ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.testType) || !ALLOWED_TEST_TYPES.includes(data.testType)) {
      return "Fehler: TEST_DATA.testType ist ungültig. Erlaubt sind: risk, standard, fun.";
    }

    if (!Array.isArray(data.questions) || data.questions.length !== 12) {
      return "Fehler: TEST_DATA.questions muss genau 12 Fragen enthalten.";
    }

    for (let i = 0; i < data.questions.length; i++) {
      const q = data.questions[i];

      if (!q || !isNonEmptyString(q.text)) {
        return "Fehler: Frage " + (i + 1) + " hat keinen gültigen Text.";
      }

      if (!Array.isArray(q.answers) || q.answers.length !== 5) {
        return "Fehler: Frage " + (i + 1) + " muss genau 5 Antworten haben.";
      }

      const values = q.answers.map(a => a.value);
      const expected = [0, 1, 2, 3, 4];

      if (JSON.stringify(values) !== JSON.stringify(expected)) {
        return "Fehler: Frage " + (i + 1) + " hat keine gültigen Antwortwerte von 0 bis 4.";
      }

      for (let j = 0; j < q.answers.length; j++) {
        if (!isNonEmptyString(q.answers[j].text)) {
          return "Fehler: Frage " + (i + 1) + ", Antwort " + (j + 1) + " hat keinen gültigen Text.";
        }
      }
    }

    if (typeof data.results !== "object" || data.results === null) {
      return "Fehler: TEST_DATA.results ist ungültig.";
    }

    for (const key of REQUIRED_RESULT_KEYS) {
      if (!(key in data.results)) {
        return "Fehler: In TEST_DATA.results fehlt der Bereich '" + key + "'. Erwartet werden: low, mid, high, veryHigh.";
      }

      const result = data.results[key];

      if (typeof result !== "object" || result === null) {
        return "Fehler: Der Ergebnisbereich '" + key + "' ist ungültig.";
      }

      for (const field of REQUIRED_RESULT_FIELDS) {
        if (!(field in result)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' fehlt das Feld '" + field + "'.";
        }
      }

      if (!isNonEmptyString(result.badge)) {
        return "Fehler: '" + key + ".badge' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.title)) {
        return "Fehler: '" + key + ".title' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.subtitle)) {
        return "Fehler: '" + key + ".subtitle' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text1)) {
        return "Fehler: '" + key + ".text1' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text2)) {
        return "Fehler: '" + key + ".text2' ist leer oder ungültig.";
      }

      if (!Array.isArray(result.advice) || result.advice.length < 2 || result.advice.length > 4) {
        return "Fehler: '" + key + ".advice' muss 2 bis 4 Punkte enthalten.";
      }

      for (let i = 0; i < result.advice.length; i++) {
        if (!isNonEmptyString(result.advice[i])) {
          return "Fehler: '" + key + ".advice[" + i + "]' ist leer oder ungültig.";
        }
      }

      if (!Array.isArray(result.links) || result.links.length < 2 || result.links.length > 3) {
        return "Fehler: '" + key + ".links' muss 2 bis 3 weiterführende Tests enthalten.";
      }

      const seenSlugs = new Set();

      for (const link of result.links) {
        if (!link || typeof link !== "object") {
          return "Fehler: Ein Link in '" + key + ".links' ist ungültig.";
        }
        if (!isNonEmptyString(link.slug)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Slug.";
        }
        if (!isNonEmptyString(link.title)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Titel.";
        }
        if (!isNonEmptyString(link.url)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keine gültige URL.";
        }
        if (seenSlugs.has(link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' gibt es doppelte Links mit dem Slug '" + link.slug + "'.";
        }
        if (!endsWithSlug(link.url, link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' passt die URL nicht zum Slug '" + link.slug + "'.";
        }

        seenSlugs.add(link.slug);
      }
    }

    return null;
  }

  function renderQuestions(data, userAnswers) {
    let html = "";

    data.questions.forEach((question, qIndex) => {
      const answers = question.answers;

      html += `
        <div class="dep-question">
          <div class="dep-question-title">${qIndex + 1}. ${escapeHtml(question.text)}</div>
      `;

      answers.forEach((answer, aIndex) => {
        const inputId = `depQ${qIndex}A${aIndex}`;
        html += `
          <label class="dep-answer" for="${inputId}">
            <input
              type="radio"
              id="${inputId}"
              name="depQ${qIndex}"
              value="${answer.value}"
              ${userAnswers[qIndex] === answer.value ? "checked" : ""}
            >
            <span class="dep-answer-text">${escapeHtml(answer.text)}</span>
          </label>
        `;
      });

      html += `</div>`;
    });

    el.questions.innerHTML = html;
  }

  function bindAnswerEvents(userAnswers) {
    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');

    radioInputs.forEach(input => {
      input.addEventListener("change", function () {
        const qIndex = Number(this.name.replace("depQ", ""));
        userAnswers[qIndex] = Number(this.value);
        clearError();
      });
    });
  }

  function getStageByScore(score) {
    if (score <= 10) return 0;
    if (score <= 21) return 1;
    if (score <= 33) return 2;
    return 3;
  }

  function applyRedFlagAdjustment(stage, answers, testType) {
    const config = RED_FLAG_CONFIG[testType];
    const highCount = answers.filter(v => v >= 3).length;
    const maxCount = answers.filter(v => v === 4).length;

    let adjustedStage = stage;
    let redFlagTriggered = false;

    if (config.useHighThreshold && highCount >= config.highThreshold) {
      adjustedStage += 1;
      redFlagTriggered = true;
    }

    if (config.useMaxOverride && maxCount >= config.maxThreshold) {
      adjustedStage = 3;
      redFlagTriggered = true;
    }

    if (adjustedStage > 3) {
      adjustedStage = 3;
    }

    return {
      adjustedStage,
      highCount,
      maxCount,
      redFlagTriggered
    };
  }

  function getResultKeyByStage(stage) {
    if (stage === 0) return "low";
    if (stage === 1) return "mid";
    if (stage === 2) return "high";
    return "veryHigh";
  }

  function getHeroClassByStage(stage) {
    if (stage === 0) return "dep-result-hero dep-result-hero--low";
    if (stage === 1) return "dep-result-hero dep-result-hero--mild";
    if (stage === 2) return "dep-result-hero dep-result-hero--mid";
    return "dep-result-hero dep-result-hero--high";
  }

  function renderAdviceList(items) {
    const lis = items.map(item => "<li>" + escapeHtml(item) + "</li>").join("");
    return '<ul class="dep-advice-list">' + lis + "</ul>";
  }

  function renderLinks(links) {
    return links.map(link => {
      return `
        <a class="dep-link-card" href="${escapeHtml(link.url)}" data-slug="${escapeHtml(link.slug)}">
          ${escapeHtml(link.title)}
        </a>
      `;
    }).join("");
  }

  function resetTest(userAnswers) {
    for (let i = 0; i < userAnswers.length; i++) {
      userAnswers[i] = undefined;
    }

    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');
    radioInputs.forEach(input => {
      input.checked = false;
    });

    clearError();
    el.result.style.display = "none";
    el.scoreMeta.textContent = "";
    el.resultNote.textContent = "";
    el.resultNote.style.display = "none";
    el.resultTitle.textContent = "";
    el.resultSubtitle.textContent = "";
    el.resultTextCombined.innerHTML = "";
    el.helpText.innerHTML = "";
    el.links.innerHTML = "";
    el.wrap.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function renderResult(data, score, baseStage, adjustedStage, redFlagTriggered) {
    const key = getResultKeyByStage(adjustedStage);
    const resultData = data.results[key];

    el.resultHero.className = getHeroClassByStage(adjustedStage);
    el.resultTitle.textContent = resultData.title;
    el.resultSubtitle.textContent = resultData.subtitle;
    el.resultTextCombined.innerHTML = nl2p(resultData.text1 + "\n\n" + resultData.text2);
    el.helpText.innerHTML = renderAdviceList(resultData.advice);
    el.links.innerHTML = renderLinks(resultData.links);
    el.scoreMeta.textContent = score + " von 48 Punkten";

    if (redFlagTriggered && adjustedStage > baseStage) {
      el.resultNote.textContent = "Hinweis: Einzelne hohe Antworten wirken sich stärker auf dein Ergebnis aus als der Gesamtwert.";
      el.resultNote.style.display = "block";
    } else {
      el.resultNote.textContent = "";
      el.resultNote.style.display = "none";
    }

    el.result.style.display = "block";
    el.result.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function init() {
    const validationError = validateTestData(TEST_DATA);

    if (validationError) {
      showError(validationError);
      return;
    }

    clearError();

    el.title.textContent = TEST_DATA.title;
    el.intro.textContent = TEST_DATA.intro;

    const userAnswers = new Array(TEST_DATA.questions.length).fill(undefined);

    renderQuestions(TEST_DATA, userAnswers);
    bindAnswerEvents(userAnswers);

    el.submit.addEventListener("click", function () {
      const unanswered = userAnswers
        .map((value, index) => value === undefined ? index + 1 : null)
        .filter(Boolean);

      if (unanswered.length > 0) {
        el.result.style.display = "none";
        showError("Bitte beantworte alle Fragen. Offen: " + unanswered.join(", "));
        el.error.scrollIntoView({ behavior: "smooth", block: "center" });
        return;
      }

      clearError();

      const score = userAnswers.reduce((sum, value) => sum + value, 0);
      const baseStage = getStageByScore(score);
      const redFlagData = applyRedFlagAdjustment(baseStage, userAnswers, TEST_DATA.testType);

      renderResult(
        TEST_DATA,
        score,
        baseStage,
        redFlagData.adjustedStage,
        redFlagData.redFlagTriggered
      );
    });

    el.reset.addEventListener("click", function () {
      resetTest(userAnswers);
    });
  }

  init();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hat mein Partner psychopathische Züge?</title>
		<link>https://checkdich.at/category-dein-partner-im-check/hat-mein-partner-psychopathische-zuege-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:44:27 +0000</pubDate>
				<category><![CDATA[Partner]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1821</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1821">.elementor-1821 .elementor-element.elementor-element-cbb5bff{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1821" class="elementor elementor-1821" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-cbb5bff e-flex e-con-boxed e-con e-parent" data-id="cbb5bff" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-adf97a8 elementor-widget elementor-widget-html" data-id="adf97a8" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.dep-test-wrap{
  max-width: 860px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7ecf3;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  font-family: Arial, sans-serif;
  color: #1f2937;
}

.dep-test-header{
  margin-bottom: 24px;
}

.dep-test-title{
  margin: 0 0 10px 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
  color: #111827;
}

.dep-test-intro{
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: #4b5563;
}

.dep-test-error{
  display: none;
  margin: 0 0 22px 0;
  padding: 14px 16px;
  border: 1px solid #f3c2c2;
  background: #fff4f4;
  color: #9f1d1d;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}

.dep-question{
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fbfcfe;
}

.dep-question-title{
  margin: 0 0 14px 0;
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  color: #111827;
}

.dep-answer{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid #dde5ef;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.dep-answer:hover{
  border-color: #bfd0e6;
  background: #f8fbff;
}

.dep-answer input{
  margin: 0;
  flex: 0 0 auto;
}

.dep-answer-text{
  font-size: 15px;
  line-height: 1.45;
  color: #1f2937;
}

.dep-actions{
  margin-top: 24px;
}

.dep-btn{
  display: inline-block;
  width: 100%;
  border: 0;
  border-radius: 14px;
  padding: 15px 18px;
  background: #2563eb;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.18);
}

.dep-btn:hover{
  background: #1d4ed8;
}

.dep-btn:focus{
  outline: 3px solid rgba(37, 99, 235, 0.2);
  outline-offset: 2px;
}

.dep-btn:active{
  transform: translateY(1px);
}

.dep-btn-secondary{
  margin-top: 12px;
  background: #e5e7eb;
  color: #1f2937;
  box-shadow: none;
}

.dep-btn-secondary:hover{
  background: #dbe1e8;
}

.dep-result{
  display: none;
  margin-top: 30px;
  padding-top: 10px;
}

.dep-result-hero{
  padding: 24px 20px;
  border-radius: 18px;
  margin-bottom: 18px;
  text-align: center;
  border: 1px solid transparent;
}

.dep-result-hero--low{
  background: #eef6ff;
  border-color: #cfe3ff;
}

.dep-result-hero--mild{
  background: #f4f8ff;
  border-color: #d9e7ff;
}

.dep-result-hero--mid{
  background: #fff7e8;
  border-color: #f4ddb0;
}

.dep-result-hero--high{
  background: #fff0f0;
  border-color: #f1c6c6;
}

.dep-result-title{
  margin: 0;
  font-size: 31px;
  line-height: 1.15;
  font-weight: 800;
  color: #111827;
}

.dep-result-subtitle{
  margin: 12px auto 0 auto;
  max-width: 680px;
  font-size: 17px;
  line-height: 1.6;
  color: #374151;
}

.dep-card{
  margin-bottom: 14px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fff;
}

.dep-card-heading{
  margin: 0 0 10px 0;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #475569;
}

.dep-card-text{
  font-size: 15px;
  line-height: 1.7;
  color: #1f2937;
}

.dep-card-text p{
  margin: 0 0 12px 0;
}

.dep-card-text p:last-child{
  margin-bottom: 0;
}

.dep-advice-list{
  margin: 0;
  padding-left: 18px;
}

.dep-advice-list li{
  margin: 0 0 8px 0;
  line-height: 1.6;
}

.dep-links-grid{
  display: grid;
  gap: 10px;
}

.dep-link-card{
  display: block;
  padding: 14px 16px;
  border: 1px solid #dbe5f0;
  border-radius: 14px;
  text-decoration: none;
  background: #f8fbff;
  color: #0f172a;
  font-weight: 700;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.dep-link-card:hover{
  border-color: #bfd0e6;
  background: #f1f7ff;
  transform: translateY(-1px);
}

.dep-score-meta{
  margin-top: 16px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 700;
  color: #334155;
  text-align: center;
}

.dep-result-note{
  display: none;
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: #475569;
  text-align: center;
}

@media (max-width: 640px){
  .dep-test-wrap{
    padding: 18px;
    border-radius: 14px;
  }

  .dep-test-title{
    font-size: 25px;
  }

  .dep-result-title{
    font-size: 26px;
  }

  .dep-result-subtitle{
    font-size: 16px;
  }

  .dep-question{
    padding: 14px;
  }

  .dep-answer{
    padding: 11px 12px;
  }

  .dep-score-meta{
    font-size: 17px;
  }
}
</style>

<div class="dep-test-wrap" id="depTestWrap">
  <div class="dep-test-header">
    <h1 class="dep-test-title" id="depTestTitle"></h1>
    <p class="dep-test-intro" id="depTestIntro"></p>
  </div>

  <div class="dep-test-error" id="depTestError"></div>

  <div id="depTestQuestions"></div>

  <div class="dep-actions">
    <button class="dep-btn" id="depTestSubmit" type="button">Ergebnis anzeigen</button>
    <button class="dep-btn dep-btn-secondary" id="depTestReset" type="button">Zurücksetzen</button>
  </div>

  <div class="dep-result" id="depTestResult">
    <div class="dep-result-hero" id="depResultHero">
      <h3 class="dep-result-title" id="depResultTitle"></h3>
      <div class="dep-result-subtitle" id="depResultSubtitle"></div>
      <div class="dep-score-meta" id="depScoreMeta"></div>
      <div class="dep-result-note" id="depResultNote"></div>
    </div>

```
<div class="dep-card">
  <div class="dep-card-heading">Einordnung</div>
  <div class="dep-card-text" id="depResultTextCombined"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Worauf du jetzt achten kannst</div>
  <div class="dep-card-text" id="depHelpText"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Passende nächste Tests</div>
  <div class="dep-links-grid" id="depLinks"></div>
</div>
```

  </div>
</div>

<script>
const TEST_DATA = {
  title: "Hat mein Partner psychopathische Züge",
  intro: "Manche Menschen wirken nach außen ruhig und überzeugend – zeigen aber kaum Mitgefühl oder echte Reue. Dieser Test hilft dir einzuschätzen, ob dein Partner solche Muster im Alltag zeigt.",
  testType: "risk",
questions: [
{
text: "Wenn dein Partner sieht, dass dich etwas verletzt oder verunsichert (z. B. nach einem Streit oder einer persönlichen Situation), bleibt er emotional auffallend unberührt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner sich im Alltag einen Vorteil verschafft (z. B. sich vordrängelt), zeigt er danach kein echtes schlechtes Gewissen.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner lügt, wirkt er dabei ruhig und überzeugend, ohne dass Unsicherheit oder Nervosität erkennbar ist.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn jemand aus eurem Umfeld von einem persönlichen Problem erzählt, zeigt dein Partner wenig Mitgefühl.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Obwohl dein Partner weiß, dass dich bestimmte Verhaltensweisen oder Aussagen verletzen, kommen sie wiederholt vor.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner jemanden schlecht behandelt, wirkt es so, als würde ihn die Wirkung auf die andere Person kaum interessieren.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner etwas tut, das dich klar verletzt, spricht er danach darüber, als wäre es nichts Besonderes.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du mit deinem Partner über deine Gefühle sprichst, reagiert er eher distanziert statt mitfühlend.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner bewusst eine Absprache bricht, wirkt es so, als wäre das für ihn selbstverständlich und kein Problem.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du deinem Partner von einem konkreten Problem erzählst (z. B. etwas, das dich belastet hat), wirkt seine Reaktion emotional unbeteiligt.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn dein Partner in Gesellschaft (z. B. bei Freunden oder Familie) freundlich und aufmerksam wirkt, verhält er sich dir gegenüber kurz danach deutlich kälter oder distanzierter.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
},
{
text: "Wenn du ein Verhalten ansprichst, das dich belastet, geht dein Partner kaum auf deine Gefühle ein.",
answers: [
{ text: "So gut wie nie", value: 0 },
{ text: "Selten", value: 1 },
{ text: "Manchmal", value: 2 },
{ text: "Oft", value: 3 },
{ text: "Sehr oft", value: 4 }
]
}
],
  results: {
    low: {
      badge: "Stage 0",
      title: "kaum Hinweise auf  problematische Muster",
      subtitle: "Im Moment zeigen sich nur vereinzelt Verhaltensweisen, die in diese Richtung deuten könnten.",
      text1: "Dein Ergebnis spricht nicht dafür, dass sich aktuell ein Muster von kalter Rücksichtslosigkeit, gezielter Manipulation oder deutlicher Gewissenlosigkeit zeigt. Einzelne unangenehme Situationen können trotzdem belastend sein, ohne dass dahinter gleich ein schweres Persönlichkeitsmuster stehen muss.",
      text2: "Wichtig ist trotzdem, nicht nur auf den Gesamtwert zu schauen. Wenn dich bestimmte Situationen verunsichern, verletzen oder unter Druck setzen, lohnt sich ein genauer Blick auf diese Dynamik – auch dann, wenn das Gesamtergebnis noch niedrig ausfällt.",
      advice: [
        "Achte weniger auf einzelne starke Momente und mehr darauf, ob sich ein wiederkehrendes Muster zeigt.",
        "Nimm dein Bauchgefühl ernst, wenn du dich nach Kontakt mit deinem Partner regelmäßig irritiert oder klein gemacht fühlst.",
        "Beobachte, wie dein Partner mit Verantwortung, Grenzen und den Gefühlen anderer umgeht."
      ],
      links: [
        {
          slug: "ist-mein-partner-egoistisch-test",
          title: "Ist mein Partner egoistisch?",
          url: "/dein-partner-im-check/ist-mein-partner-egoistisch-test"
        },
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Erste auffällige Muster",
      subtitle: "Einige Verhaltensweisen wirken nicht mehr zufällig, sondern beginnen sich zu wiederholen.",
      text1: "Dein Ergebnis zeigt, dass es bei deinem Partner mehrere Muster gibt, die auf Kälte, fehlende Empathie oder manipulative Tendenzen hindeuten können. Das bedeutet noch keine sichere Einordnung, aber es ist auch nicht mehr sinnvoll, alles nur als Missverständnis oder schlechte Phase abzutun.",
      text2: "Gerade in diesem Bereich lohnt sich Genauigkeit. Entscheidend ist, ob dein Partner nur schwierig, egoistisch oder konflikthaft ist – oder ob du zunehmend das Gefühl bekommst, dass er Menschen gezielt benutzt, wenig echte Reue zeigt und emotional auffallend unberührt bleibt.",
      advice: [
        "Schau dir konkrete Situationen an und notiere, was passiert ist, statt nur über dein Gefühl im Nachhinein zu urteilen.",
        "Beobachte, ob dein Partner nach Grenzüberschreitungen echte Verantwortung übernimmt oder nur die Situation entschärfen will.",
        "Sprich mit einer außenstehenden Person darüber, wenn du merkst, dass du deine Wahrnehmung immer wieder relativierst."
      ],
      links: [
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Deutlich erkennbare Muster",
      subtitle: "Mehrere Verhaltensweisen wirken klar belastend und gehen über normale Konflikte hinaus.",
      text1: "Dein Ergebnis deutet auf ein auffälliges Muster hin. Es geht hier nicht nur um schwierige Kommunikation oder gelegentliche Rücksichtslosigkeit, sondern um Verhaltensweisen, die kalt, kalkulierend oder einschüchternd wirken können. Das kann für dich emotional sehr zermürbend sein.",
      text2: "Dieser Test kann keine eindeutige Diagnose liefern. Wenn du aber wiederholt erlebst, dass dein Partner manipuliert, wenig Mitgefühl zeigt, Verantwortung vermeidet und Grenzen testet, sind das ernst zu nehmende Warnsignale.",
      advice: [
        "Prüfe nüchtern, wie sicher und frei du dich in dieser Beziehung noch fühlst.",
        "Relativiere Muster nicht vorschnell, nur weil zwischendurch wieder charmante oder ruhige Phasen auftreten.",
        "Hole dir Unterstützung, wenn du merkst, dass Gespräche mit deinem Partner dich eher verwirren, einschüchtern oder destabilisieren.",
        "Achte darauf, ob deine eigenen Grenzen mit der Zeit immer weiter nachgeben."
      ],
      links: [
        {
          slug: "ist-mein-partner-manipulativ-test",
          title: "Ist mein Partner manipulativ?",
          url: "/dein-partner-im-check/ist-mein-partner-manipulativ-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-bindungsangst-test",
          title: "Hat mein Partner Bindungsangst?",
          url: "/dein-partner-im-check/hat-mein-partner-bindungsangst-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Deutlich kritische Muster",
      subtitle: "Die Signale sind eindeutig und sollten ernst genommen werden.",
      text1: "Dein Ergebnis zeigt eine hohe Verdichtung problematischer Signale. Wenn viele dieser Aussagen auf deinen Partner zutreffen, erlebst du möglicherweise eine Beziehung, in der Kälte, Kontrolle, emotionale Rücksichtslosigkeit oder gezielte Verunsicherung eine größere Rolle spielen.",
      text2: "Das heißt nicht automatisch, dass dein Partner klinisch ein Psychopath ist. Diese Schlussfolgerung wäre unseriös. Aber es heißt sehr wohl, dass die Dynamik für dich belastend oder sogar gefährlich sein kann. In so einer Lage ist es wichtiger, auf konkrete Muster und deren Wirkung auf dich zu schauen als auf die perfekte Bezeichnung.",
      advice: [
        "Nimm belastende Situationen ernst und bewerte nicht nur, was dein Partner sagt, sondern vor allem, was wiederholt passiert.",
        "Suche dir eine verlässliche Außenperspektive, wenn du merkst, dass du dich zunehmend verunsichert oder eingeschüchtert fühlst.",
        "Achte auf deine Sicherheit und darauf, ob du in Gesprächen, Konflikten oder nach Grenzsetzungen Druck oder Angst erlebst.",
        "Prüfe ehrlich, ob dir diese Beziehung noch guttut oder ob sie dich Schritt für Schritt destabilisiert."
      ],
      links: [
        {
          slug: "ist-mein-partner-narzisstisch-test",
          title: "Ist mein Partner narzisstisch?",
          url: "/dein-partner-im-check/ist-mein-partner-narzisstisch-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    }
  }
};

(function () {
  "use strict";

  if (typeof TEST_DATA === "undefined") {
    const errorBox = document.getElementById("depTestError");
    errorBox.style.display = "block";
    errorBox.textContent = "Fehler: TEST_DATA wurde nicht gefunden. Die Engine braucht gültige Testdaten.";
    return;
  }

  const REQUIRED_TOP_LEVEL_FIELDS = ["title", "intro", "questions", "results", "testType"];
  const REQUIRED_RESULT_KEYS = ["low", "mid", "high", "veryHigh"];
  const REQUIRED_RESULT_FIELDS = ["badge", "title", "subtitle", "text1", "text2", "advice", "links"];
  const ALLOWED_TEST_TYPES = ["risk", "standard", "fun"];

  const RED_FLAG_CONFIG = {
    risk: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: true,
      maxThreshold: 3
    },
    standard: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: false,
      maxThreshold: 3
    },
    fun: {
      useHighThreshold: false,
      highThreshold: Infinity,
      useMaxOverride: false,
      maxThreshold: Infinity
    }
  };

  const el = {
    wrap: document.getElementById("depTestWrap"),
    title: document.getElementById("depTestTitle"),
    intro: document.getElementById("depTestIntro"),
    error: document.getElementById("depTestError"),
    questions: document.getElementById("depTestQuestions"),
    submit: document.getElementById("depTestSubmit"),
    reset: document.getElementById("depTestReset"),
    result: document.getElementById("depTestResult"),
    resultHero: document.getElementById("depResultHero"),
    resultTitle: document.getElementById("depResultTitle"),
    resultSubtitle: document.getElementById("depResultSubtitle"),
    scoreMeta: document.getElementById("depScoreMeta"),
    resultNote: document.getElementById("depResultNote"),
    resultTextCombined: document.getElementById("depResultTextCombined"),
    helpText: document.getElementById("depHelpText"),
    links: document.getElementById("depLinks")
  };

  function showError(message) {
    el.error.style.display = "block";
    el.error.textContent = message;
  }

  function clearError() {
    el.error.style.display = "none";
    el.error.textContent = "";
  }

  function escapeHtml(str) {
    return String(str)
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function isNonEmptyString(value) {
    return typeof value === "string" && value.trim() !== "";
  }

  function nl2p(text) {
    return String(text)
      .split(/\n{2,}/)
      .map(part => "<p>" + escapeHtml(part).replace(/\n/g, "<br>") + "</p>")
      .join("");
  }

  function endsWithSlug(url, slug) {
    const cleanUrl = String(url).replace(/\/+$/, "");
    const cleanSlug = String(slug).replace(/^\/+|\/+$/g, "");
    return cleanUrl.endsWith("/" + cleanSlug);
  }

  function validateTestData(data) {
    for (const key of REQUIRED_TOP_LEVEL_FIELDS) {
      if (!(key in data)) {
        return "Fehler: In TEST_DATA fehlt das Pflichtfeld '" + key + "'.";
      }
    }

    if (!isNonEmptyString(data.title)) {
      return "Fehler: TEST_DATA.title ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.intro)) {
      return "Fehler: TEST_DATA.intro ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.testType) || !ALLOWED_TEST_TYPES.includes(data.testType)) {
      return "Fehler: TEST_DATA.testType ist ungültig. Erlaubt sind: risk, standard, fun.";
    }

    if (!Array.isArray(data.questions) || data.questions.length !== 12) {
      return "Fehler: TEST_DATA.questions muss genau 12 Fragen enthalten.";
    }

    for (let i = 0; i < data.questions.length; i++) {
      const q = data.questions[i];

      if (!q || !isNonEmptyString(q.text)) {
        return "Fehler: Frage " + (i + 1) + " hat keinen gültigen Text.";
      }

      if (!Array.isArray(q.answers) || q.answers.length !== 5) {
        return "Fehler: Frage " + (i + 1) + " muss genau 5 Antworten haben.";
      }

      const values = q.answers.map(a => a.value);
      const expected = [0, 1, 2, 3, 4];

      if (JSON.stringify(values) !== JSON.stringify(expected)) {
        return "Fehler: Frage " + (i + 1) + " hat keine gültigen Antwortwerte von 0 bis 4.";
      }

      for (let j = 0; j < q.answers.length; j++) {
        if (!isNonEmptyString(q.answers[j].text)) {
          return "Fehler: Frage " + (i + 1) + ", Antwort " + (j + 1) + " hat keinen gültigen Text.";
        }
      }
    }

    if (typeof data.results !== "object" || data.results === null) {
      return "Fehler: TEST_DATA.results ist ungültig.";
    }

    for (const key of REQUIRED_RESULT_KEYS) {
      if (!(key in data.results)) {
        return "Fehler: In TEST_DATA.results fehlt der Bereich '" + key + "'. Erwartet werden: low, mid, high, veryHigh.";
      }

      const result = data.results[key];

      if (typeof result !== "object" || result === null) {
        return "Fehler: Der Ergebnisbereich '" + key + "' ist ungültig.";
      }

      for (const field of REQUIRED_RESULT_FIELDS) {
        if (!(field in result)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' fehlt das Feld '" + field + "'.";
        }
      }

      if (!isNonEmptyString(result.badge)) {
        return "Fehler: '" + key + ".badge' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.title)) {
        return "Fehler: '" + key + ".title' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.subtitle)) {
        return "Fehler: '" + key + ".subtitle' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text1)) {
        return "Fehler: '" + key + ".text1' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text2)) {
        return "Fehler: '" + key + ".text2' ist leer oder ungültig.";
      }

      if (!Array.isArray(result.advice) || result.advice.length < 2 || result.advice.length > 4) {
        return "Fehler: '" + key + ".advice' muss 2 bis 4 Punkte enthalten.";
      }

      for (let i = 0; i < result.advice.length; i++) {
        if (!isNonEmptyString(result.advice[i])) {
          return "Fehler: '" + key + ".advice[" + i + "]' ist leer oder ungültig.";
        }
      }

      if (!Array.isArray(result.links) || result.links.length < 2 || result.links.length > 3) {
        return "Fehler: '" + key + ".links' muss 2 bis 3 weiterführende Tests enthalten.";
      }

      const seenSlugs = new Set();

      for (const link of result.links) {
        if (!link || typeof link !== "object") {
          return "Fehler: Ein Link in '" + key + ".links' ist ungültig.";
        }
        if (!isNonEmptyString(link.slug)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Slug.";
        }
        if (!isNonEmptyString(link.title)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Titel.";
        }
        if (!isNonEmptyString(link.url)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keine gültige URL.";
        }
        if (seenSlugs.has(link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' gibt es doppelte Links mit dem Slug '" + link.slug + "'.";
        }
        if (!endsWithSlug(link.url, link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' passt die URL nicht zum Slug '" + link.slug + "'.";
        }

        seenSlugs.add(link.slug);
      }
    }

    return null;
  }

  function renderQuestions(data, userAnswers) {
    let html = "";

    data.questions.forEach((question, qIndex) => {
      const answers = question.answers;

      html += `
        <div class="dep-question">
          <div class="dep-question-title">${qIndex + 1}. ${escapeHtml(question.text)}</div>
      `;

      answers.forEach((answer, aIndex) => {
        const inputId = `depQ${qIndex}A${aIndex}`;
        html += `
          <label class="dep-answer" for="${inputId}">
            <input
              type="radio"
              id="${inputId}"
              name="depQ${qIndex}"
              value="${answer.value}"
              ${userAnswers[qIndex] === answer.value ? "checked" : ""}
            >
            <span class="dep-answer-text">${escapeHtml(answer.text)}</span>
          </label>
        `;
      });

      html += `</div>`;
    });

    el.questions.innerHTML = html;
  }

  function bindAnswerEvents(userAnswers) {
    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');

    radioInputs.forEach(input => {
      input.addEventListener("change", function () {
        const qIndex = Number(this.name.replace("depQ", ""));
        userAnswers[qIndex] = Number(this.value);
        clearError();
      });
    });
  }

  function getStageByScore(score) {
    if (score <= 10) return 0;
    if (score <= 21) return 1;
    if (score <= 33) return 2;
    return 3;
  }

  function applyRedFlagAdjustment(stage, answers, testType) {
    const config = RED_FLAG_CONFIG[testType];
    const highCount = answers.filter(v => v >= 3).length;
    const maxCount = answers.filter(v => v === 4).length;

    let adjustedStage = stage;
    let redFlagTriggered = false;

    if (config.useHighThreshold && highCount >= config.highThreshold) {
      adjustedStage += 1;
      redFlagTriggered = true;
    }

    if (config.useMaxOverride && maxCount >= config.maxThreshold) {
      adjustedStage = 3;
      redFlagTriggered = true;
    }

    if (adjustedStage > 3) {
      adjustedStage = 3;
    }

    return {
      adjustedStage,
      highCount,
      maxCount,
      redFlagTriggered
    };
  }

  function getResultKeyByStage(stage) {
    if (stage === 0) return "low";
    if (stage === 1) return "mid";
    if (stage === 2) return "high";
    return "veryHigh";
  }

  function getHeroClassByStage(stage) {
    if (stage === 0) return "dep-result-hero dep-result-hero--low";
    if (stage === 1) return "dep-result-hero dep-result-hero--mild";
    if (stage === 2) return "dep-result-hero dep-result-hero--mid";
    return "dep-result-hero dep-result-hero--high";
  }

  function renderAdviceList(items) {
    const lis = items.map(item => "<li>" + escapeHtml(item) + "</li>").join("");
    return '<ul class="dep-advice-list">' + lis + "</ul>";
  }

  function renderLinks(links) {
    return links.map(link => {
      return `
        <a class="dep-link-card" href="${escapeHtml(link.url)}" data-slug="${escapeHtml(link.slug)}">
          ${escapeHtml(link.title)}
        </a>
      `;
    }).join("");
  }

  function resetTest(userAnswers) {
    for (let i = 0; i < userAnswers.length; i++) {
      userAnswers[i] = undefined;
    }

    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');
    radioInputs.forEach(input => {
      input.checked = false;
    });

    clearError();
    el.result.style.display = "none";
    el.scoreMeta.textContent = "";
    el.resultNote.textContent = "";
    el.resultNote.style.display = "none";
    el.resultTitle.textContent = "";
    el.resultSubtitle.textContent = "";
    el.resultTextCombined.innerHTML = "";
    el.helpText.innerHTML = "";
    el.links.innerHTML = "";
    el.wrap.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function renderResult(data, score, baseStage, adjustedStage, redFlagTriggered) {
    const key = getResultKeyByStage(adjustedStage);
    const resultData = data.results[key];

    el.resultHero.className = getHeroClassByStage(adjustedStage);
    el.resultTitle.textContent = resultData.title;
    el.resultSubtitle.textContent = resultData.subtitle;
    el.resultTextCombined.innerHTML = nl2p(resultData.text1 + "\n\n" + resultData.text2);
    el.helpText.innerHTML = renderAdviceList(resultData.advice);
    el.links.innerHTML = renderLinks(resultData.links);
    el.scoreMeta.textContent = score + " von 48 Punkten";

    if (redFlagTriggered && adjustedStage > baseStage) {
      el.resultNote.textContent = "Hinweis: Einzelne hohe Antworten wirken sich stärker auf dein Ergebnis aus als der Gesamtwert.";
      el.resultNote.style.display = "block";
    } else {
      el.resultNote.textContent = "";
      el.resultNote.style.display = "none";
    }

    el.result.style.display = "block";
    el.result.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function init() {
    const validationError = validateTestData(TEST_DATA);

    if (validationError) {
      showError(validationError);
      return;
    }

    clearError();

    el.title.textContent = TEST_DATA.title;
    el.intro.textContent = TEST_DATA.intro;

    const userAnswers = new Array(TEST_DATA.questions.length).fill(undefined);

    renderQuestions(TEST_DATA, userAnswers);
    bindAnswerEvents(userAnswers);

    el.submit.addEventListener("click", function () {
      const unanswered = userAnswers
        .map((value, index) => value === undefined ? index + 1 : null)
        .filter(Boolean);

      if (unanswered.length > 0) {
        el.result.style.display = "none";
        showError("Bitte beantworte alle Fragen. Offen: " + unanswered.join(", "));
        el.error.scrollIntoView({ behavior: "smooth", block: "center" });
        return;
      }

      clearError();

      const score = userAnswers.reduce((sum, value) => sum + value, 0);
      const baseStage = getStageByScore(score);
      const redFlagData = applyRedFlagAdjustment(baseStage, userAnswers, TEST_DATA.testType);

      renderResult(
        TEST_DATA,
        score,
        baseStage,
        redFlagData.adjustedStage,
        redFlagData.redFlagTriggered
      );
    });

    el.reset.addEventListener("click", function () {
      resetTest(userAnswers);
    });
  }

  init();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hat mein Partner Bindungsangst?</title>
		<link>https://checkdich.at/category-dein-partner-im-check/hat-mein-partner-bindungsangst-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:42:33 +0000</pubDate>
				<category><![CDATA[Partner]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1816</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1816">.elementor-1816 .elementor-element.elementor-element-1cc6e62{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}</style>							<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1816" class="elementor elementor-1816" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-1cc6e62 e-flex e-con-boxed e-con e-parent" data-id="1cc6e62" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-c1c0b91 elementor-widget elementor-widget-html" data-id="c1c0b91" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.dep-test-wrap{
  max-width: 860px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e7ecf3;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  font-family: Arial, sans-serif;
  color: #1f2937;
}

.dep-test-header{
  margin-bottom: 24px;
}

.dep-test-title{
  margin: 0 0 10px 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
  color: #111827;
}

.dep-test-intro{
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: #4b5563;
}

.dep-test-error{
  display: none;
  margin: 0 0 22px 0;
  padding: 14px 16px;
  border: 1px solid #f3c2c2;
  background: #fff4f4;
  color: #9f1d1d;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1.5;
}

.dep-question{
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fbfcfe;
}

.dep-question-title{
  margin: 0 0 14px 0;
  font-size: 17px;
  line-height: 1.5;
  font-weight: 700;
  color: #111827;
}

.dep-answer{
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid #dde5ef;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.dep-answer:hover{
  border-color: #bfd0e6;
  background: #f8fbff;
}

.dep-answer input{
  margin: 0;
  flex: 0 0 auto;
}

.dep-answer-text{
  font-size: 15px;
  line-height: 1.45;
  color: #1f2937;
}

.dep-actions{
  margin-top: 24px;
}

.dep-btn{
  display: inline-block;
  width: 100%;
  border: 0;
  border-radius: 14px;
  padding: 15px 18px;
  background: #2563eb;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.18);
}

.dep-btn:hover{
  background: #1d4ed8;
}

.dep-btn:focus{
  outline: 3px solid rgba(37, 99, 235, 0.2);
  outline-offset: 2px;
}

.dep-btn:active{
  transform: translateY(1px);
}

.dep-btn-secondary{
  margin-top: 12px;
  background: #e5e7eb;
  color: #1f2937;
  box-shadow: none;
}

.dep-btn-secondary:hover{
  background: #dbe1e8;
}

.dep-result{
  display: none;
  margin-top: 30px;
  padding-top: 10px;
}

.dep-result-hero{
  padding: 24px 20px;
  border-radius: 18px;
  margin-bottom: 18px;
  text-align: center;
  border: 1px solid transparent;
}

.dep-result-hero--low{
  background: #eef6ff;
  border-color: #cfe3ff;
}

.dep-result-hero--mild{
  background: #f4f8ff;
  border-color: #d9e7ff;
}

.dep-result-hero--mid{
  background: #fff7e8;
  border-color: #f4ddb0;
}

.dep-result-hero--high{
  background: #fff0f0;
  border-color: #f1c6c6;
}

.dep-result-title{
  margin: 0;
  font-size: 31px;
  line-height: 1.15;
  font-weight: 800;
  color: #111827;
}

.dep-result-subtitle{
  margin: 12px auto 0 auto;
  max-width: 680px;
  font-size: 17px;
  line-height: 1.6;
  color: #374151;
}

.dep-card{
  margin-bottom: 14px;
  padding: 18px;
  border: 1px solid #e7ecf3;
  border-radius: 16px;
  background: #fff;
}

.dep-card-heading{
  margin: 0 0 10px 0;
  font-size: 15px;
  line-height: 1.3;
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: #475569;
}

.dep-card-text{
  font-size: 15px;
  line-height: 1.7;
  color: #1f2937;
}

.dep-card-text p{
  margin: 0 0 12px 0;
}

.dep-card-text p:last-child{
  margin-bottom: 0;
}

.dep-advice-list{
  margin: 0;
  padding-left: 18px;
}

.dep-advice-list li{
  margin: 0 0 8px 0;
  line-height: 1.6;
}

.dep-links-grid{
  display: grid;
  gap: 10px;
}

.dep-link-card{
  display: block;
  padding: 14px 16px;
  border: 1px solid #dbe5f0;
  border-radius: 14px;
  text-decoration: none;
  background: #f8fbff;
  color: #0f172a;
  font-weight: 700;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.dep-link-card:hover{
  border-color: #bfd0e6;
  background: #f1f7ff;
  transform: translateY(-1px);
}

.dep-score-meta{
  margin-top: 16px;
  font-size: 18px;
  line-height: 1.4;
  font-weight: 700;
  color: #334155;
  text-align: center;
}

.dep-result-note{
  display: none;
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: #475569;
  text-align: center;
}

@media (max-width: 640px){
  .dep-test-wrap{
    padding: 18px;
    border-radius: 14px;
  }

  .dep-test-title{
    font-size: 25px;
  }

  .dep-result-title{
    font-size: 26px;
  }

  .dep-result-subtitle{
    font-size: 16px;
  }

  .dep-question{
    padding: 14px;
  }

  .dep-answer{
    padding: 11px 12px;
  }

  .dep-score-meta{
    font-size: 17px;
  }
}
</style>

<div class="dep-test-wrap" id="depTestWrap">
  <div class="dep-test-header">
    <h1 class="dep-test-title" id="depTestTitle"></h1>
    <p class="dep-test-intro" id="depTestIntro"></p>
  </div>

  <div class="dep-test-error" id="depTestError"></div>

  <div id="depTestQuestions"></div>

  <div class="dep-actions">
    <button class="dep-btn" id="depTestSubmit" type="button">Ergebnis anzeigen</button>
    <button class="dep-btn dep-btn-secondary" id="depTestReset" type="button">Zurücksetzen</button>
  </div>

  <div class="dep-result" id="depTestResult">
    <div class="dep-result-hero" id="depResultHero">
      <h3 class="dep-result-title" id="depResultTitle"></h3>
      <div class="dep-result-subtitle" id="depResultSubtitle"></div>
      <div class="dep-score-meta" id="depScoreMeta"></div>
      <div class="dep-result-note" id="depResultNote"></div>
    </div>

```
<div class="dep-card">
  <div class="dep-card-heading">Einordnung</div>
  <div class="dep-card-text" id="depResultTextCombined"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Worauf du jetzt achten kannst</div>
  <div class="dep-card-text" id="depHelpText"></div>
</div>

<div class="dep-card">
  <div class="dep-card-heading">Passende nächste Tests</div>
  <div class="dep-links-grid" id="depLinks"></div>
</div>
```

  </div>
</div>

<script>
const TEST_DATA = {
  title: "Hat mein Partner Bindungsangst?",
  intro: "Nähe und Rückzug wechseln sich ab – und du weißt nicht, woran du bist. Dieser Test zeigt dir, ob hinter diesem Muster Bindungsangst stecken könnte.",
  testType: "risk",
  questions: [
  {
    text: "Wenn ihr ein schönes Treffen hattet, meldet sich dein Partner danach deutlich weniger als davor.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du ansprichst, wie es mit euch weitergeht, beantwortet dein Partner die Frage nicht klar oder lenkt ab.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn ihr etwas weiter in die Zukunft plant (z. B. Urlaub oder Event), hält dein Partner sich bewusst unverbindlich.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du ihn nach einem konkreten Treffen fragst, weicht dein Partner aus oder legt sich nicht fest.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du körperliche Nähe suchst (z. B. Umarmung, Nähe auf der Couch), reagiert dein Partner zurückhaltend oder distanziert.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Nach einem Streit meldet sich dein Partner von sich aus kaum oder erst nach längerer Zeit wieder.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn es darum geht, dich in seinen Freundeskreis einzubinden, bleibt dein Partner zurückhaltend oder zögerlich.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Dein Partner sagt Treffen kurzfristig ab oder verändert Pläne, obwohl sie zuvor fix gewirkt haben.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du persönliche oder tiefere Themen ansprichst, bleibt dein Partner oberflächlich oder wechselt das Thema.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Nach Phasen mit viel Kontakt (z. B. tägliches Schreiben oder Treffen) meldet sich dein Partner danach deutlich weniger.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du eure Beziehung konkret benennst (z. B. „Wir sind zusammen“), relativiert oder korrigiert dein Partner diese Aussage.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  },
  {
    text: "Wenn du deinen Partner etwas Persönliches über seine Gedanken, Gefühle oder Vergangenheit fragst, bleibt er oberflächlich oder weicht aus.",
    answers: [
      { text: "So gut wie nie", value: 0 },
      { text: "Selten", value: 1 },
      { text: "Manchmal", value: 2 },
      { text: "Oft", value: 3 },
      { text: "Sehr oft", value: 4 }
    ]
  }
],
  results: {
    low: {
      badge: "Stage 0",
      title: "Kaum Hinweise auf Bindungsangst",
      subtitle: "In deinen Antworten zeigen sich nur wenige Anzeichen für ein problematisches Nähe-Distanz-Muster.",
      text1: "Aktuell spricht dein Ergebnis eher nicht dafür, dass Bindungsangst das zentrale Problem in eurer Beziehung ist. Einzelne Rückzugsphasen oder vorsichtige Reaktionen können auch mit Stress, Gewohnheiten oder persönlichem Kommunikationstempo zusammenhängen.",
      text2: "Wichtig ist trotzdem, nicht nur auf den Punktestand zu schauen, sondern auf das Gesamtgefühl in der Beziehung. Wenn Verbindlichkeit grundsätzlich möglich ist, Gespräche nicht systematisch vermieden werden und Nähe über die Zeit stabil bleibt, spricht das eher gegen eine bindungsängstliche Dynamik.",
      advice: [
        "Beobachte, ob Rückzug eher situativ auftritt oder ob sich ein klares Muster rund um Nähe und Verbindlichkeit zeigt.",
        "Sprich konkrete Situationen an statt allgemeine Vorwürfe zu machen.",
        "Achte darauf, ob Worte und Verhalten deines Partners im Alltag zusammenpassen."
      ],
      links: [
        {
          slug: "ist-mein-partner-egoistisch-test",
          title: "Ist mein Partner egoistisch?",
          url: "/dein-partner-im-check/ist-mein-partner-egoistisch-test"
        },
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Erste Rückzugsmuster",
      subtitle: "Es zeigen sich erste Muster, die auf Schwierigkeiten mit emotionaler Nähe oder klarer Festlegung hindeuten können.",
      text1: "Dein Ergebnis spricht dafür, dass dein Partner in bestimmten Situationen auf Nähe eher vorsichtig, ausweichend oder wechselhaft reagiert. Das muss noch keine ausgeprägte Bindungsangst bedeuten, ist aber mehr als nur eine einmalige Unsicherheit.",
      text2: "Relevant wird es dann, wenn dieses Verhalten wiederholt genau dann auftaucht, wenn es verbindlicher wird: nach intensiven Momenten, bei Zukunftsgesprächen oder wenn du Klarheit möchtest. Dann lohnt es sich, nicht nur die einzelnen Situationen, sondern das Muster dahinter ernst zu nehmen.",
      advice: [
        "Achte darauf, ob Rückzug vor allem dann kommt, wenn es emotional enger wird.",
        "Sprich wiederkehrende Situationen konkret an und beobachte die Reaktion auf dieses Gespräch.",
        "Prüfe, ob du dauerhaft mit Unklarheit beschäftigt bist oder ob echte Entwicklung sichtbar wird."
      ],
      links: [
        {
          slug: "ist-mein-partner-emotional-unreif-test",
          title: "Ist mein Partner emotional unreif?",
          url: "/dein-partner-im-check/ist-mein-partner-emotional-unreif-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Keine verlässliche Nähe",
      subtitle: "In deinen Antworten zeigen sich mehrere wiederkehrende Hinweise darauf, dass Verbindlichkeit und Nähe für deinen Partner schwierig sein könnten.",
      text1: "Dein Ergebnis deutet darauf hin, dass Rückzug, Ausweichen oder wechselhafte Nähe in eurer Beziehung nicht nur vereinzelt vorkommen. Solche Muster können auf Bindungsangst hindeuten, besonders wenn dein Partner Nähe zunächst zulässt, sie kurz danach aber wieder abbremst oder relativiert.",
      text2: "Für dich kann das sehr verunsichernd sein, weil du immer wieder Kontakt erlebst, der nicht stabil bleibt. Entscheidend ist dann nicht nur, ob dein Partner sich unsicher fühlt, sondern wie stark dieses Muster eure Beziehung tatsächlich belastet und ob Verantwortung dafür übernommen wird.",
      advice: [
        "Unterscheide zwischen echter Vorsicht und dauerhaftem Ausweichen vor Verbindlichkeit.",
        "Beobachte, ob Gespräche zu mehr Klarheit führen oder nur kurzfristig beruhigen.",
        "Achte darauf, ob du dich immer häufiger anpasst, um Rückzug oder Distanz zu vermeiden."
      ],
      links: [
        {
          slug: "ist-mein-partner-manipulativ-test",
          title: "Ist mein Partner manipulativ?",
          url: "/dein-partner-im-check/ist-mein-partner-manipulativ-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Keine stabile Nähe möglich",
      subtitle: "Deine Antworten sprechen für ein ausgeprägtes und belastendes Muster aus Nähe, Rückzug und fehlender Stabilität.",
      text1: "Das Ergebnis zeigt deutliche Signale dafür, dass dein Partner mit Nähe, Verbindlichkeit oder emotionaler Festlegung große Schwierigkeiten haben könnte. Wenn sich dieses Muster regelmäßig zeigt, kann es für dich sehr zermürbend werden, weil du immer wieder Hoffnung aufbaust und dann erneut Distanz erlebst.",
      text2: "Wichtig ist hier: Bindungsangst erklärt Verhalten, entschuldigt aber nicht automatisch alles. Wenn du dauerhaft in Unsicherheit gehalten wirst, Gespräche ins Leere laufen und Verbindlichkeit immer wieder vermieden wird, solltest du die Belastung für dich selbst ernst nehmen und nicht nur auf spätere Veränderung hoffen.",
      advice: [
        "Prüfe nüchtern, wie viel Stabilität, Klarheit und Sicherheit diese Beziehung dir tatsächlich gibt.",
        "Achte darauf, ob dein Partner Verantwortung für sein Muster übernimmt oder es nur relativiert.",
        "Beobachte, ob du dich emotional immer stärker im Kreis drehst und klare Grenzen brauchst."
      ],
      links: [
        {
          slug: "ist-mein-partner-narzisstisch-test",
          title: "Ist mein Partner narzisstisch?",
          url: "/dein-partner-im-check/ist-mein-partner-narzisstisch-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "hat-mein-partner-psychopathische-zuege-test",
          title: "Hat mein Partner psychopathische Züge?",
          url: "/dein-partner-im-check/hat-mein-partner-psychopathische-zuege-test"
        }
      ]
    }
  }
};

(function () {
  "use strict";

  if (typeof TEST_DATA === "undefined") {
    const errorBox = document.getElementById("depTestError");
    errorBox.style.display = "block";
    errorBox.textContent = "Fehler: TEST_DATA wurde nicht gefunden. Die Engine braucht gültige Testdaten.";
    return;
  }

  const REQUIRED_TOP_LEVEL_FIELDS = ["title", "intro", "questions", "results", "testType"];
  const REQUIRED_RESULT_KEYS = ["low", "mid", "high", "veryHigh"];
  const REQUIRED_RESULT_FIELDS = ["badge", "title", "subtitle", "text1", "text2", "advice", "links"];
  const ALLOWED_TEST_TYPES = ["risk", "standard", "fun"];

  const RED_FLAG_CONFIG = {
    risk: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: true,
      maxThreshold: 3
    },
    standard: {
      useHighThreshold: true,
      highThreshold: 3,
      useMaxOverride: false,
      maxThreshold: 3
    },
    fun: {
      useHighThreshold: false,
      highThreshold: Infinity,
      useMaxOverride: false,
      maxThreshold: Infinity
    }
  };

  const el = {
    wrap: document.getElementById("depTestWrap"),
    title: document.getElementById("depTestTitle"),
    intro: document.getElementById("depTestIntro"),
    error: document.getElementById("depTestError"),
    questions: document.getElementById("depTestQuestions"),
    submit: document.getElementById("depTestSubmit"),
    reset: document.getElementById("depTestReset"),
    result: document.getElementById("depTestResult"),
    resultHero: document.getElementById("depResultHero"),
    resultTitle: document.getElementById("depResultTitle"),
    resultSubtitle: document.getElementById("depResultSubtitle"),
    scoreMeta: document.getElementById("depScoreMeta"),
    resultNote: document.getElementById("depResultNote"),
    resultTextCombined: document.getElementById("depResultTextCombined"),
    helpText: document.getElementById("depHelpText"),
    links: document.getElementById("depLinks")
  };

  function showError(message) {
    el.error.style.display = "block";
    el.error.textContent = message;
  }

  function clearError() {
    el.error.style.display = "none";
    el.error.textContent = "";
  }

  function escapeHtml(str) {
    return String(str)
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
  }

  function isNonEmptyString(value) {
    return typeof value === "string" && value.trim() !== "";
  }

  function nl2p(text) {
    return String(text)
      .split(/\n{2,}/)
      .map(part => "<p>" + escapeHtml(part).replace(/\n/g, "<br>") + "</p>")
      .join("");
  }

  function endsWithSlug(url, slug) {
    const cleanUrl = String(url).replace(/\/+$/, "");
    const cleanSlug = String(slug).replace(/^\/+|\/+$/g, "");
    return cleanUrl.endsWith("/" + cleanSlug);
  }

  function validateTestData(data) {
    for (const key of REQUIRED_TOP_LEVEL_FIELDS) {
      if (!(key in data)) {
        return "Fehler: In TEST_DATA fehlt das Pflichtfeld '" + key + "'.";
      }
    }

    if (!isNonEmptyString(data.title)) {
      return "Fehler: TEST_DATA.title ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.intro)) {
      return "Fehler: TEST_DATA.intro ist leer oder ungültig.";
    }

    if (!isNonEmptyString(data.testType) || !ALLOWED_TEST_TYPES.includes(data.testType)) {
      return "Fehler: TEST_DATA.testType ist ungültig. Erlaubt sind: risk, standard, fun.";
    }

    if (!Array.isArray(data.questions) || data.questions.length !== 12) {
      return "Fehler: TEST_DATA.questions muss genau 12 Fragen enthalten.";
    }

    for (let i = 0; i < data.questions.length; i++) {
      const q = data.questions[i];

      if (!q || !isNonEmptyString(q.text)) {
        return "Fehler: Frage " + (i + 1) + " hat keinen gültigen Text.";
      }

      if (!Array.isArray(q.answers) || q.answers.length !== 5) {
        return "Fehler: Frage " + (i + 1) + " muss genau 5 Antworten haben.";
      }

      const values = q.answers.map(a => a.value);
      const expected = [0, 1, 2, 3, 4];

      if (JSON.stringify(values) !== JSON.stringify(expected)) {
        return "Fehler: Frage " + (i + 1) + " hat keine gültigen Antwortwerte von 0 bis 4.";
      }

      for (let j = 0; j < q.answers.length; j++) {
        if (!isNonEmptyString(q.answers[j].text)) {
          return "Fehler: Frage " + (i + 1) + ", Antwort " + (j + 1) + " hat keinen gültigen Text.";
        }
      }
    }

    if (typeof data.results !== "object" || data.results === null) {
      return "Fehler: TEST_DATA.results ist ungültig.";
    }

    for (const key of REQUIRED_RESULT_KEYS) {
      if (!(key in data.results)) {
        return "Fehler: In TEST_DATA.results fehlt der Bereich '" + key + "'. Erwartet werden: low, mid, high, veryHigh.";
      }

      const result = data.results[key];

      if (typeof result !== "object" || result === null) {
        return "Fehler: Der Ergebnisbereich '" + key + "' ist ungültig.";
      }

      for (const field of REQUIRED_RESULT_FIELDS) {
        if (!(field in result)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' fehlt das Feld '" + field + "'.";
        }
      }

      if (!isNonEmptyString(result.badge)) {
        return "Fehler: '" + key + ".badge' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.title)) {
        return "Fehler: '" + key + ".title' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.subtitle)) {
        return "Fehler: '" + key + ".subtitle' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text1)) {
        return "Fehler: '" + key + ".text1' ist leer oder ungültig.";
      }

      if (!isNonEmptyString(result.text2)) {
        return "Fehler: '" + key + ".text2' ist leer oder ungültig.";
      }

      if (!Array.isArray(result.advice) || result.advice.length < 2 || result.advice.length > 4) {
        return "Fehler: '" + key + ".advice' muss 2 bis 4 Punkte enthalten.";
      }

      for (let i = 0; i < result.advice.length; i++) {
        if (!isNonEmptyString(result.advice[i])) {
          return "Fehler: '" + key + ".advice[" + i + "]' ist leer oder ungültig.";
        }
      }

      if (!Array.isArray(result.links) || result.links.length < 2 || result.links.length > 3) {
        return "Fehler: '" + key + ".links' muss 2 bis 3 weiterführende Tests enthalten.";
      }

      const seenSlugs = new Set();

      for (const link of result.links) {
        if (!link || typeof link !== "object") {
          return "Fehler: Ein Link in '" + key + ".links' ist ungültig.";
        }
        if (!isNonEmptyString(link.slug)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Slug.";
        }
        if (!isNonEmptyString(link.title)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keinen gültigen Titel.";
        }
        if (!isNonEmptyString(link.url)) {
          return "Fehler: Ein Link in '" + key + ".links' hat keine gültige URL.";
        }
        if (seenSlugs.has(link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' gibt es doppelte Links mit dem Slug '" + link.slug + "'.";
        }
        if (!endsWithSlug(link.url, link.slug)) {
          return "Fehler: Im Ergebnisbereich '" + key + "' passt die URL nicht zum Slug '" + link.slug + "'.";
        }

        seenSlugs.add(link.slug);
      }
    }

    return null;
  }

  function renderQuestions(data, userAnswers) {
    let html = "";

    data.questions.forEach((question, qIndex) => {
      const answers = question.answers;

      html += `
        <div class="dep-question">
          <div class="dep-question-title">${qIndex + 1}. ${escapeHtml(question.text)}</div>
      `;

      answers.forEach((answer, aIndex) => {
        const inputId = `depQ${qIndex}A${aIndex}`;
        html += `
          <label class="dep-answer" for="${inputId}">
            <input
              type="radio"
              id="${inputId}"
              name="depQ${qIndex}"
              value="${answer.value}"
              ${userAnswers[qIndex] === answer.value ? "checked" : ""}
            >
            <span class="dep-answer-text">${escapeHtml(answer.text)}</span>
          </label>
        `;
      });

      html += `</div>`;
    });

    el.questions.innerHTML = html;
  }

  function bindAnswerEvents(userAnswers) {
    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');

    radioInputs.forEach(input => {
      input.addEventListener("change", function () {
        const qIndex = Number(this.name.replace("depQ", ""));
        userAnswers[qIndex] = Number(this.value);
        clearError();
      });
    });
  }

  function getStageByScore(score) {
    if (score <= 10) return 0;
    if (score <= 21) return 1;
    if (score <= 33) return 2;
    return 3;
  }

  function applyRedFlagAdjustment(stage, answers, testType) {
    const config = RED_FLAG_CONFIG[testType];
    const highCount = answers.filter(v => v >= 3).length;
    const maxCount = answers.filter(v => v === 4).length;

    let adjustedStage = stage;
    let redFlagTriggered = false;

    if (config.useHighThreshold && highCount >= config.highThreshold) {
      adjustedStage += 1;
      redFlagTriggered = true;
    }

    if (config.useMaxOverride && maxCount >= config.maxThreshold) {
      adjustedStage = 3;
      redFlagTriggered = true;
    }

    if (adjustedStage > 3) {
      adjustedStage = 3;
    }

    return {
      adjustedStage,
      highCount,
      maxCount,
      redFlagTriggered
    };
  }

  function getResultKeyByStage(stage) {
    if (stage === 0) return "low";
    if (stage === 1) return "mid";
    if (stage === 2) return "high";
    return "veryHigh";
  }

  function getHeroClassByStage(stage) {
    if (stage === 0) return "dep-result-hero dep-result-hero--low";
    if (stage === 1) return "dep-result-hero dep-result-hero--mild";
    if (stage === 2) return "dep-result-hero dep-result-hero--mid";
    return "dep-result-hero dep-result-hero--high";
  }

  function renderAdviceList(items) {
    const lis = items.map(item => "<li>" + escapeHtml(item) + "</li>").join("");
    return '<ul class="dep-advice-list">' + lis + "</ul>";
  }

  function renderLinks(links) {
    return links.map(link => {
      return `
        <a class="dep-link-card" href="${escapeHtml(link.url)}" data-slug="${escapeHtml(link.slug)}">
          ${escapeHtml(link.title)}
        </a>
      `;
    }).join("");
  }

  function resetTest(userAnswers) {
    for (let i = 0; i < userAnswers.length; i++) {
      userAnswers[i] = undefined;
    }

    const radioInputs = el.questions.querySelectorAll('input[type="radio"]');
    radioInputs.forEach(input => {
      input.checked = false;
    });

    clearError();
    el.result.style.display = "none";
    el.scoreMeta.textContent = "";
    el.resultNote.textContent = "";
    el.resultNote.style.display = "none";
    el.resultTitle.textContent = "";
    el.resultSubtitle.textContent = "";
    el.resultTextCombined.innerHTML = "";
    el.helpText.innerHTML = "";
    el.links.innerHTML = "";
    el.wrap.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function renderResult(data, score, baseStage, adjustedStage, redFlagTriggered) {
    const key = getResultKeyByStage(adjustedStage);
    const resultData = data.results[key];

    el.resultHero.className = getHeroClassByStage(adjustedStage);
    el.resultTitle.textContent = resultData.title;
    el.resultSubtitle.textContent = resultData.subtitle;
    el.resultTextCombined.innerHTML = nl2p(resultData.text1 + "\n\n" + resultData.text2);
    el.helpText.innerHTML = renderAdviceList(resultData.advice);
    el.links.innerHTML = renderLinks(resultData.links);
    el.scoreMeta.textContent = score + " von 48 Punkten";

    if (redFlagTriggered && adjustedStage > baseStage) {
      el.resultNote.textContent = "Hinweis: Einzelne hohe Antworten wirken sich stärker auf dein Ergebnis aus als der Gesamtwert.";
      el.resultNote.style.display = "block";
    } else {
      el.resultNote.textContent = "";
      el.resultNote.style.display = "none";
    }

    el.result.style.display = "block";
    el.result.scrollIntoView({ behavior: "smooth", block: "start" });
  }

  function init() {
    const validationError = validateTestData(TEST_DATA);

    if (validationError) {
      showError(validationError);
      return;
    }

    clearError();

    el.title.textContent = TEST_DATA.title;
    el.intro.textContent = TEST_DATA.intro;

    const userAnswers = new Array(TEST_DATA.questions.length).fill(undefined);

    renderQuestions(TEST_DATA, userAnswers);
    bindAnswerEvents(userAnswers);

    el.submit.addEventListener("click", function () {
      const unanswered = userAnswers
        .map((value, index) => value === undefined ? index + 1 : null)
        .filter(Boolean);

      if (unanswered.length > 0) {
        el.result.style.display = "none";
        showError("Bitte beantworte alle Fragen. Offen: " + unanswered.join(", "));
        el.error.scrollIntoView({ behavior: "smooth", block: "center" });
        return;
      }

      clearError();

      const score = userAnswers.reduce((sum, value) => sum + value, 0);
      const baseStage = getStageByScore(score);
      const redFlagData = applyRedFlagAdjustment(baseStage, userAnswers, TEST_DATA.testType);

      renderResult(
        TEST_DATA,
        score,
        baseStage,
        redFlagData.adjustedStage,
        redFlagData.redFlagTriggered
      );
    });

    el.reset.addEventListener("click", function () {
      resetTest(userAnswers);
    });
  }

  init();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
