<?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>Beziehungstests &#8211; checkdich</title>
	<atom:link href="https://checkdich.at/category/category-beziehungstests/feed/" rel="self" type="application/rss+xml" />
	<link>https://checkdich.at</link>
	<description></description>
	<lastBuildDate>Fri, 01 May 2026 18:41:45 +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>Beziehungstests &#8211; checkdich</title>
	<link>https://checkdich.at</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wie gesund ist meine Beziehung wirklich?</title>
		<link>https://checkdich.at/category-beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:40:32 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1811</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1811">.elementor-1811 .elementor-element.elementor-element-ed16f98{--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="1811" class="elementor elementor-1811" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-ed16f98 e-flex e-con-boxed e-con e-parent" data-id="ed16f98" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-7e796cf elementor-widget elementor-widget-html" data-id="7e796cf" 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: "Wie gesund ist meine Beziehung wirklich?",
  intro: "Dieser Test hilft dir zu prüfen, wie eure Beziehung im Umgang miteinander wirklich funktioniert – bei Konflikten, im Alltag und in eurer Verbindung zueinander.",
  testType: "standard",
questions: [
  {
    text: "Ihr könnt schwierige Themen ansprechen, ohne dass das Gespräch schnell in Streit oder Rückzug endet.",
    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 Konflikt findet ihr wieder in einen ruhigen und respektvollen Umgang miteinander.",
    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 Persönliches ansprichst, reagiert dein Partner so, dass du dich ernst genommen 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: "Es gibt zwischen euch Momente, in denen ihr euch ehrlich unterstützt und füreinander freut.",
    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: "Vereinbarungen, die ihr trefft, werden im Alltag auch tatsächlich eingehalten.",
    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: "Auch wenn einer von euch gestresst ist, bleibt der Umgang miteinander respektvoll.",
    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 einer von euch mehr Nähe braucht, findet ihr gemeinsam einen Umgang, der für beide passt.",
    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 wichtige Entscheidungen anstehen, fühlt es sich eher nach Zusammenarbeit als nach Gegeneinander 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: "Du kannst in der Beziehung deine Meinung offen sagen, ohne negative Konsequenzen befürchten zu müssen.",
    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 gemeinsamer Zeit fühlst du dich eher entspannt und stabil als gestresst 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 }
    ]
  },
  {
    text: "Ihr nehmt euch im Alltag aktiv Zeit füreinander, ohne dass es nur aus Pflicht oder Gewohnheit passiert.",
    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 zwischen euch unausgesprochen bleibt, wird es später aktiv angesprochen und geklärt.",
    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: "Da ist bereits viel Stabilität spürbar",
      subtitle: "Deine Antworten sprechen für eine Beziehung mit tragfähigen Grundlagen.",
      text1: "Wenn viele deiner Antworten im oberen Bereich liegen, deutet das auf eine Beziehung hin, in der Respekt, Verlässlichkeit und emotionale Sicherheit nicht nur punktuell, sondern wiederkehrend erlebbar sind. Das heißt nicht, dass alles perfekt sein muss. Aber die Basis scheint insgesamt gesund zu sein.",
      text2: "Gerade stabile Beziehungen wirken nach außen manchmal unspektakulär. Genau das ist oft ein gutes Zeichen. Nicht Drama, sondern Sicherheit, Klärbarkeit und gegenseitige Unterstützung machen eine Beziehung auf Dauer gesund.",
      advice: [
        "Achte darauf, was bei euch bereits gut funktioniert, und nimm es nicht als selbstverständlich.",
        "Pflegt bewusst kleine Rituale, die Nähe und Verbindung im Alltag stärken.",
        "Sprich auch über gute Entwicklungen, nicht nur über Probleme.",
        "Bleib aufmerksam für Veränderungen, ohne sofort alles zu problematisieren."
      ],
      links: [
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        },
        {
          slug: "passt-diese-person-wirklich-zu-mir-test",
          title: "Passt mein Partner wirklich zu mir?",
          url: "/beziehungstests/passt-diese-person-wirklich-zu-mir-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Die Beziehung wirkt gemischt",
      subtitle: "Es gibt gesunde Anteile, aber auch Bereiche, die im Alltag spürbar Energie kosten.",
      text1: "Dein Ergebnis spricht eher für eine Beziehung, in der nicht alles grundsätzlich instabil ist, aber manche Muster wiederholt Reibung erzeugen. Vielleicht gibt es Nähe und schöne Phasen, gleichzeitig bleiben bestimmte Themen ungeklärt oder der Umgang kippt unter Druck leichter als dir lieb ist.",
      text2: "So ein Zwischenbereich ist oft schwer einzuordnen, weil die Beziehung weder klar gut noch klar belastend wirkt. Genau deshalb lohnt sich der Blick auf wiederkehrende Muster: Fühlt sich Verbindung langfristig tragend an oder lebt ihr zu oft von Hoffnung auf die nächste bessere Phase?",
      advice: [
        "Beobachte, welche Situationen zwischen euch regelmäßig Spannung auslösen.",
        "Unterscheide zwischen normalen Reibungen und Mustern, die sich immer wieder festfahren.",
        "Sprich ein Thema nach dem anderen konkret an, statt alles gleichzeitig klären zu wollen.",
        "Achte darauf, ob Gespräche zu mehr Klarheit führen oder nur kurzfristig beruhigen."
      ],
      links: [
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Die Beziehung wirkt deutlich belastet",
      subtitle: "Mehrere deiner Antworten deuten darauf hin, dass wichtige Grundlagen im Alltag brüchig geworden sind.",
      text1: "Wenn gesunde Beziehungsmuster nur noch unregelmäßig spürbar sind, ist das mehr als eine bloße schwierige Phase. Es kann bedeuten, dass Vertrauen, Sicherheit, Respekt oder echte Klärbarkeit zwischen euch bereits erkennbar gelitten haben.",
      text2: "Eine Beziehung muss nicht komplett eskalieren, um ungesund zu sein. Schon anhaltende Anspannung, ständige Unsicherheit oder fehlende Verlässlichkeit können auf Dauer stark belasten. Entscheidend ist nicht, ob es auch gute Momente gibt, sondern ob die Grunddynamik dir eher Stabilität oder eher Kraftverlust bringt.",
      advice: [
        "Nimm wiederkehrende Belastungen ernst, auch wenn zwischendurch bessere Phasen auftauchen.",
        "Frag dich ehrlich, was sich real verändert hat und was du nur noch hoffst.",
        "Suche das Gespräch nur dann, wenn es wirklich zu mehr Klarheit führt und nicht erneut im Kreis läuft.",
        "Hol dir bei Bedarf eine Außenperspektive, wenn du deine Lage allein nicht mehr gut sortieren kannst."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Die Beziehung wirkt klar ungesund",
      subtitle: "Deine Antworten sprechen dafür, dass dir diese Beziehung aktuell eher Stabilität nimmt als gibt.",
      text1: "Wenn viele gesunde Grundlagen kaum noch erlebbar sind, ist das ein ernstes Signal. Dann geht es nicht mehr nur um einzelne Schwächen in der Kommunikation, sondern um eine Dynamik, die dauerhaft verunsichern, erschöpfen oder innerlich klein machen kann.",
      text2: "In so einer Lage geht es nicht mehr nur darum, die Beziehung „zu verbessern“. Entscheidend ist, ob sich etwas Grundlegendes verändert. Wenn sich trotz Gesprächen und Bemühungen immer wieder dieselben Muster zeigen, spricht das dafür, dass die Beziehung dir langfristig nicht guttut. Dann ist es wichtig, die Möglichkeit einer Trennung nicht nur theoretisch zu sehen, sondern ernsthaft in Betracht zu ziehen.",
      advice: [
        "Nimm dein Belastungsgefühl ernst und rede es nicht klein.",
        "Prüfe nüchtern, welche Muster sich trotz Gesprächen nicht verbessert haben.",
        "Hol dir Unterstützung, wenn du merkst, dass du allein kaum noch klar denken kannst.",
        "Richte den Blick nicht nur auf die Beziehung, sondern auch auf deine eigene Sicherheit und Stabilität."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-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>Werde ich emotional manipuliert?</title>
		<link>https://checkdich.at/category-beziehungstests/werde-ich-emotional-manipuliert-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:38:47 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1805</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1805">.elementor-1805 .elementor-element.elementor-element-ca6a835{--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="1805" class="elementor elementor-1805" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-ca6a835 e-flex e-con-boxed e-con e-parent" data-id="ca6a835" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-26e1305 elementor-widget elementor-widget-html" data-id="26e1305" 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: "Werde ich emotional manipuliert?",
  intro: "Entscheidend ist nicht nur, was gesagt wird, sondern wie du dich danach fühlst. Dieser Test hilft dir einzuschätzen, ob dein Alltag von Verunsicherung, Druck oder subtiler Einflussnahme geprägt ist.",
  testType: "risk",
questions: [
  {
    text: "Nach Gesprächen bestreitet dein Partner Aussagen, die er zuvor so gemacht 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 ein Problem ansprichst, lenkt dein Partner das Gespräch auf Dinge, die du angeblich 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 Konflikten reagiert dein Partner auf deine Kritik, indem er sie relativiert oder herunterspielt.",
    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 zeigt dir Zuneigung oder Nähe besonders dann, wenn du dich zuvor zurückgezogen oder klar abgegrenzt 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: "Bei wichtigen Themen bringt dein Partner frühere Fehler oder Schwächen von dir 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: "Du passt deine Worte oder dein Verhalten an, um bestimmte Reaktionen deines Partners zu vermeiden.",
    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 Grenzen setzt, reagiert dein Partner mit Rückzug oder bricht den Kontakt für eine Zeit 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 du eine konkrete Frage stellst, bekommst du keine eindeutige Antwort darauf.",
    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 Auseinandersetzungen gehst du das Gespräch wiederholt gedanklich durch, um herauszufinden, wo du „falsch“ gelegen 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 nutzt Informationen, die du ihm anvertraut hast, später gegen dich.",
    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 über ein Problem bist du unsicherer als davor, obwohl du dir vorher klar warst.",
    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 bestimmten Situationen nimmst du deine eigene Meinung zurück, damit sich die Situation schneller beruhigt.",
    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: "Aktuell nur wenige Anzeichen",
      subtitle: "Dein Ergebnis zeigt derzeit kaum Hinweise auf eine deutlich manipulative Beziehungsdynamik.",
      text1: "Ein niedriger Wert bedeutet nicht automatisch, dass alles ideal läuft. Er spricht aber eher dafür, dass du dich in typischen Beziehungssituationen nicht dauerhaft verdreht, unter Druck gesetzt oder verunsichert fühlst.",
      text2: "Trotzdem lohnt es sich, auf wiederkehrende Irritationen zu achten. Emotionale Manipulation zeigt sich oft nicht in einem einzelnen Vorfall, sondern in Mustern, nach denen du dich schuldig, klein oder innerlich unsicher fühlst.",
      advice: [
        "Beobachte weiter, wie du dich nach Konflikten oder wichtigen Gesprächen fühlst.",
        "Nimm Irritationen ernst, auch wenn sie nur vereinzelt auftreten.",
        "Achte darauf, ob deine Grenzen in Ruhe respektiert werden."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Einige auffällige Muster sind erkennbar",
      subtitle: "Dein Ergebnis deutet darauf hin, dass es in eurer Dynamik wiederholt Situationen gibt, die dich verunsichern oder unter Druck setzen.",
      text1: "Das muss noch keine klar verfestigte emotionale Manipulation bedeuten. Es zeigt aber, dass bestimmte Muster nicht nur punktuell auftreten, sondern bereits Einfluss darauf haben können, wie frei, sicher und klar du dich in der Beziehung fühlst.",
      text2: "Besonders wichtig ist hier die Richtung: Wenn du nach Gesprächen häufiger schuldig, kleiner oder verwirrter bist als vorher, ist das ein ernstzunehmendes Signal. Nicht jede problematische Dynamik ist Absicht, aber ihre Wirkung kann trotzdem belastend sein.",
      advice: [
        "Achte bewusst darauf, welche Situationen dich besonders verunsichern.",
        "Schreibe dir nach Konflikten kurz auf, was passiert ist und wie du dich danach gefühlt hast.",
        "Prüfe, ob deine Grenzen eher respektiert oder regelmäßig umgangen werden."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Deutliche Warnsignale",
      subtitle: "Dein Ergebnis zeigt mehrere Muster, die gut zu emotionaler Manipulation oder starker psychischer Einflussnahme passen.",
      text1: "Wenn solche Muster häufiger auftreten, kann das schleichend an deinem Selbstvertrauen, deiner Klarheit und deiner inneren Sicherheit arbeiten. Gerade das wiederholte Verdrehen von Gesprächen oder das Gefühl, dich dauernd anpassen zu müssen, sind dabei wichtige Hinweise.",
      text2: "Entscheidend ist nicht nur, was dein Partner sagt, sondern welche Wirkung die Dynamik auf dich hat. Wenn du dich wiederholt schuldig, klein, verwirrt oder innerlich unter Druck gesetzt fühlst, solltest du das nicht einfach wegdrücken.",
      advice: [
        "Nimm deine Wahrnehmung ernst, auch wenn sie im Gespräch immer wieder infrage gestellt wird.",
        "Suche dir eine vertraute Außenperspektive bei jemandem, der sachlich auf die Situation schauen kann.",
        "Achte darauf, ob du dich zunehmend selbst zurücknimmst, um Konflikte zu vermeiden.",
        "Prüfe, welche Grenzen du klarer schützen musst."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Deutlich belastende Beziehung",
      subtitle: "Die Antworten sprechen klar dafür, dass du in einer stark belastenden und möglicherweise emotional manipulativen Dynamik steckst.",
      text1: "Bei einem so hohen Wert geht es nicht mehr nur um einzelne irritierende Situationen. Es geht eher darum, dass sich problematische Muster durch viele Bereiche eurer Beziehung ziehen und deine Selbstsicherheit, deine Grenzen oder dein Vertrauen in die eigene Wahrnehmung bereits spürbar beeinflussen.",
      text2: "Gerade wenn du dich regelmäßig verdreht, schuldig oder psychisch unter Druck gesetzt fühlst, ist das ernst zu nehmen. Auch ohne offene Eskalation kann eine solche Dynamik tief belastend sein. Du musst das nicht dauerhaft aushalten oder alleine einordnen.",
      advice: [
        "Hole dir möglichst eine klare Außenperspektive durch eine vertraute Person oder Beratungsstelle.",
        "Dokumentiere Situationen, nach denen du dich besonders verunsichert oder unter Druck gesetzt fühlst.",
        "Prüfe nüchtern, ob deine Grenzen in dieser Beziehung überhaupt sicher bestehen können.",
        "Wenn du dich psychisch stark belastet fühlst, suche dir zeitnah Unterstützung."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-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>Warum ziehe ich immer den falschen Partner an?</title>
		<link>https://checkdich.at/category-beziehungstests/warum-ziehe-ich-immer-den-falschen-partner-an-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:36:59 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1800</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1800">.elementor-1800 .elementor-element.elementor-element-6a55fc5{--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="1800" class="elementor elementor-1800" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-6a55fc5 e-flex e-con-boxed e-con e-parent" data-id="6a55fc5" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5f9a29c elementor-widget elementor-widget-html" data-id="5f9a29c" 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: "Warum ziehe ich immer den falschen Partner an?",
  intro: "Manchmal wiederholen sich in Beziehungen auffällig ähnliche Muster. Dieser Selbsttest hilft dir dabei, typische Dynamiken in deiner Partnerwahl besser einzuordnen und mögliche blinde Flecken zu erkennen.",
  testType: "standard",
 questions: [
  {
    text: "Du fühlst dich besonders zu Menschen hingezogen, die sich dir gegenüber mal sehr interessiert zeigen und dann wieder distanziert wirken.",
    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 der Kennenlernphase fällt dir auf, dass du dich zu ähnlichen Typen hingezogen fühlst wie in früheren Beziehungen, die dir nicht gutgetan 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: "Du bleibst länger interessiert, wenn jemand emotional schwer erreichbar oder unklar wirkt.",
    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 Treffen oder Gesprächen redest du dir Dinge schön, die dich eigentlich stören.",
    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 neuen Kontakten passt du dein Verhalten spürbar an, um die Verbindung aufrechtzuerhalten.",
    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 dir wenig Verbindlichkeit zeigt, investierst du innerlich stärker in diese Person.",
    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: "Du nimmst das Verhalten der anderen Person in Schutz, auch wenn es dich verletzt 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: "Nach einem Streit lenkst du schnell ein, damit die Situation wieder ruhig 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: "Du fühlst dich stärker angezogen von intensiven, unklaren Beziehungen als von ruhigen, stabilen.",
    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: "Du lässt Kontakte weiterlaufen, obwohl dich bestimmte Verhaltensweisen bereits verunsichern.",
    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 jemand zurückzieht oder weniger präsent ist, beschäftigen dich Gedanken an diese Person stärker.",
    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 auf vergangene Beziehungen zurückblickst, erkennst du, dass sich bestimmte Muster oder Dynamiken wiederholen.",
    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: "Du erkennst bei der Partnerwahl schon vieles recht klar",
      subtitle: "Bei dir zeigen sich  wenige Hinweise darauf, dass du wiederholt in ungünstige Beziehungsmuster hineingerätst.",
      text1: "Dein Ergebnis spricht dafür, dass du in der Kennenlernphase bereits einiges wahrnimmst und nicht jede Anziehung automatisch mit echter Passung verwechselst. Das bedeutet nicht, dass du nie an die falsche Person gerätst – aber du scheinst eher die Fähigkeit zu haben, früh zu spüren, was dir guttut und was nicht.",
      text2: "Wahrscheinlich prüfst du nicht nur, ob es funkt, sondern auch, wie sich jemand langfristig verhält. Gerade das ist bei der Partnerwahl oft wichtiger als Intensität, Spannung oder starke Anfangsgefühle. Trotzdem kann es hilfreich sein, die eigenen Muster bewusst im Blick zu behalten – vor allem dann, wenn eine Verbindung sehr schnell sehr intensiv wird.",
      advice: [
        "Achte weiterhin darauf, ob Worte und Verhalten einer Person zusammenpassen.",
        "Nimm ruhige, verlässliche Dynamiken genauso ernst wie starke Anziehung.",
        "Beobachte in der Kennenlernphase, ob du dich frei oder eher angespannt fühlst."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Du hast gewisse Muster in deiner Partnerwahl",
      subtitle: "Einige deiner Antworten deuten darauf hin, dass dich bestimmte Dynamiken wiederholt in unpassende Beziehungen führen können.",
      text1: "Dein Ergebnis zeigt erste Hinweise auf typische Wiederholungen: Vielleicht springst du besonders stark auf Unklarheit, Rückzug oder intensive Anfangsphasen an. Solche Muster sind nicht ungewöhnlich. Sie entstehen oft nicht bewusst, sondern aus Gewohnheiten, Hoffnungen oder alten Beziehungserfahrungen.",
      text2: "Wichtig ist: Das bedeutet nicht, dass mit dir etwas nicht stimmt. Es kann aber sein, dass du bestimmte Signale zu spät ernst nimmst oder Verlässlichkeit weniger anziehend findest als emotionale Spannung. Genau dort liegt oft der Schlüssel – nicht nur auf andere zu schauen, sondern auch auf die innere Logik, die dich immer wieder in ähnliche Konstellationen zieht.",
      advice: [
        "Notiere dir nach neuen Kontakten früh, was dir konkret guttut und was dich irritiert.",
        "Prüfe, ob Anziehung bei dir manchmal stärker wird, wenn jemand unklar oder distanziert ist.",
        "Setze dir persönliche Mindeststandards für Verbindlichkeit, Respekt und Offenheit."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Deine Partnerwahl scheint deutlich von alten Mustern beeinflusst zu sein",
      subtitle: "Mehrere Antworten sprechen dafür, dass du wiederkehrend auf Dynamiken anspringst, die dir langfristig nicht guttun.",
      text1: "Dein Ergebnis deutet darauf hin, dass sich bei dir bestimmte Beziehungsmuster recht klar wiederholen. Vielleicht gerätst du häufiger an Menschen, die wenig Verbindlichkeit zeigen, dich verunsichern oder emotionale Intensität mit echter Nähe verwechseln lassen. Solche Konstellationen können sehr anziehend wirken – besonders dann, wenn Ruhe sich ungewohnt oder fast langweilig anfühlt.",
      text2: "Oft ist nicht nur die andere Person der entscheidende Punkt, sondern das Zusammenspiel zwischen ihrer Art und deinen inneren Reaktionen. Wer Warnsignale regelmäßig relativiert, sich stark anpasst oder Unklarheit mit Hoffnung beantwortet, bleibt leichter in ungesunden Mustern hängen. Der wichtige Schritt ist hier, nicht nur den falschen Partner zu erkennen, sondern auch den eigenen Anteil an der Dynamik nüchtern anzuschauen.",
      advice: [
        "Beobachte bewusst, ob du Unsicherheit mit besonderer Anziehung verwechselst.",
        "Sprich Warnsignale früher aus, statt sie innerlich zu erklären oder zu entschuldigen.",
        "Frage dich in neuen Kontakten nicht nur: Will ich diese Person? Sondern auch: Tut mir diese Dynamik gut?",
        "Nimm dir Zeit, bevor du emotionale Intensität als Bindung deutest."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Du gerätst wahrscheinlich sehr häufig in ungesunde Beziehungsmuster",
      subtitle: "Deine Antworten sprechen deutlich dafür, dass sich problematische Dynamiken bei deiner Partnerwahl stark wiederholen.",
      text1: "Dieses Ergebnis legt nahe, dass du nicht zufällig an die falschen Personen gerätst, sondern dass sich ein Muster etabliert hat. Möglicherweise ziehen dich Menschen an, die unklar, distanziert, wechselhaft oder emotional schwer erreichbar sind – und genau dadurch besonders bedeutsam wirken. Solche Beziehungen können sehr intensiv starten, aber gleichzeitig viel Unsicherheit, Selbstzweifel und innere Unruhe auslösen.",
      text2: "Gerade wenn sich dieses Muster oft wiederholt, lohnt sich ein ehrlicher Blick auf die eigene innere Dynamik. Nicht im Sinn von Schuld, sondern im Sinn von Verständnis: Was fühlt sich für dich vertraut an? Wo überschreitest du eigene Grenzen zu spät? Und woran erkennst du überhaupt, dass sich Verlässlichkeit zunächst fremd anfühlen kann? Wer das versteht, hat deutlich bessere Chancen, künftig anders zu wählen.",
      advice: [
        "Unterbrich Kennenlernprozesse früher, wenn du bereits deutliche Warnsignale wahrnimmst.",
        "Achte darauf, ob du dich zu Personen hingezogen fühlst, bei denen du innerlich kämpfen musst.",
        "Reflektiere, welche Dynamiken dir vertraut vorkommen, auch wenn sie dir nicht guttun.",
        "Hole dir bei wiederkehrend belastenden Mustern bewusst Außenperspektive von vertrauenswürdigen Menschen."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-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>Soll ich mich trennen?</title>
		<link>https://checkdich.at/category-beziehungstests/soll-ich-mich-trennen-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:35:06 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1795</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1795">.elementor-1795 .elementor-element.elementor-element-5c7dc23{--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="1795" class="elementor elementor-1795" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-5c7dc23 e-flex e-con-boxed e-con e-parent" data-id="5c7dc23" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-b987098 elementor-widget elementor-widget-html" data-id="b987098" 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: "Soll ich mich trennen?",
  intro: "Dieser Selbsttest hilft dir dabei, deine Zweifel einzuordnen und klarer zu sehen, ob sie eher für ein Bleiben oder eine Trennung sprechen.",
  testType: "risk",
  questions: [
  {
    text: "Nach Gesprächen mit deinem Partner bleibt bei dir das Gefühl zurück, dass eure Probleme im Kern ungelöst 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: "Gemeinsame Zeit fühlt sich für dich innerlich anstrengender an, als sie dir Nähe oder Ruhe gibt.",
    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 hast du das Gefühl, dass deine Bedürfnisse keinen echten Platz bekommen.",
    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: "Du ertappst dich dabei, dass du dir ein Leben ohne die Beziehung langfristig leichter oder stimmiger vorstellst.",
    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: "Du hast den Eindruck, dass sich trotz Gesprächen und Versuchen kaum wirklich etwas im Verhalten deines Partners verändert.",
    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 an eure gemeinsame Zukunft denkst, tauchen bei dir eher Zweifel als Vorfreude 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: "Du hältst dich in Gesprächen zurück, um Streit, Rückzug oder negative Reaktionen zu vermeiden.",
    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: "Du fühlst dich nach Konflikten mit deinem Partner häufig emotional 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 }
    ]
  },
  {
    text: "Zwischen euch fehlt dir in wichtigen Momenten das Gefühl von Verbundenheit, Sicherheit oder echter Nähe.",
    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: "Du hast das Gefühl, mehr in die Beziehung zu investieren als dein Partner.",
    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: "Du hast das Gefühl, in dieser Beziehung weniger du selbst zu sein als früher.",
    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: "Du zweifelst daran, ob dein Partner dich wirklich respektiert oder ernst nimmt.",
    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: "Deine Zweifel wirken aktuell eher punktuell",
      subtitle: "Im Moment zeigen sich zwar einzelne Irritationen, aber noch kein klar verfestigtes Trennungsmuster.",
      text1: "Dein Ergebnis spricht eher dafür, dass deine Beziehung nicht durchgehend als belastend erlebt wird. Zweifel können auch in grundsätzlich tragfähigen Beziehungen auftauchen, besonders nach Konflikten, stressigen Phasen oder wenn wichtige Themen noch nicht wirklich geklärt wurden.",
      text2: "Entscheidend ist jetzt weniger ein vorschnelles Ja oder Nein zur Trennung, sondern die Frage, ob sich über Gespräche, Grenzen und konkrete Veränderungen wieder mehr Klarheit herstellen lässt. Wenn sich Anspannung und Zweifel wieder beruhigen, kann das ein Hinweis sein, dass eher einzelne Themen als die ganze Beziehung das Problem sind.",
      advice: [
        "Beobachte, bei welchen Situationen deine Zweifel besonders stark werden.",
        "Sprich einen konkreten Belastungspunkt offen an, statt alles gleichzeitig lösen zu wollen.",
        "Achte darauf, ob nach Gesprächen tatsächlich Veränderung entsteht oder nur Beruhigung für den Moment."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Deine Zweifel sind spürbar und verdienen Aufmerksamkeit",
      subtitle: "Es gibt mehrere Hinweise darauf, dass dich die Beziehung bereits merklich belastet.",
      text1: "Dein Ergebnis deutet darauf hin, dass deine Unsicherheit nicht nur aus einem einzelnen Streit oder einer kurzen Phase kommt. Mehrere deiner Antworten sprechen dafür, dass sich Unzufriedenheit, Rückzug oder innere Distanz in eurer Dynamik wiederholen.",
      text2: "Das bedeutet noch nicht automatisch, dass Trennung die einzige Lösung ist. Aber es wäre unklug, diese Signale kleinzureden. Wichtig ist jetzt, genauer hinzusehen: Werden Probleme gemeinsam bearbeitet, oder trägst du den größten Teil der Klärungsarbeit allein? Genau diese Frage macht oft den Unterschied.",
      advice: [
        "Schreibe für dich auf, welche Themen immer wiederkehren und was sich daran konkret belastend anfühlt.",
        "Prüfe ehrlich, ob deine Bedürfnisse benannt werden können, ohne dass sofort Ausweichmanöver oder Abwertung folgen.",
        "Achte darauf, ob die Beziehung dir langfristig eher Kraft gibt oder Kraft entzieht."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Viele Anzeichen sprechen für eine belastende Beziehung",
      subtitle: "Deine Zweifel wirken nicht mehr zufällig, sondern hängen wahrscheinlich mit wiederkehrenden problematischen Mustern zusammen.",
      text1: "Dein Ergebnis zeigt, dass die Beziehung in wichtigen Bereichen bereits an Substanz verlieren kann: Vertrauen, Sicherheit, Entlastung, Zukunftsgefühl oder das Gefühl, du selbst sein zu können. Wenn mehrere dieser Ebenen gleichzeitig wackeln, geht es meist nicht mehr nur um ein Kommunikationsproblem.",
      text2: "Gerade in solchen Situationen bleiben viele Menschen zu lange in einer Schwebe aus Hoffnung, Gewohnheit und Angst vor den Folgen einer Trennung. Diese Schwebe kann selbst stark zermürbend sein. Es kann jetzt hilfreich sein, nicht nur zu fragen, ob du gehen sollst, sondern auch, was dich bisher am Gehen hindert und ob diese Gründe wirklich tragen.",
      advice: [
        "Nimm deine Zweifel ernst und prüfe sie nicht nur danach, wie stark du an deinem Partner hängst.",
        "Beobachte, ob echte Veränderung sichtbar wird oder ob sich dieselben Muster nur in neuer Verpackung wiederholen.",
        "Sprich mit einer neutralen Person darüber, wie du die Beziehung außerhalb des Alltags erlebst."
      ],
      links: [
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Deine Antworten sprechen für eine stark belastende Beziehung",
      subtitle: "Viele deiner Angaben deuten darauf hin, dass die Beziehung dich deutlich bindet, verunsichert oder erschöpft.",
      text1: "Dein Ergebnis zeigt, dass deine Zweifel nicht nur aus einzelnen Situationen entstehen. Mehrere deiner Antworten deuten darauf hin, dass sich belastende Muster in der Beziehung verfestigt haben und dich zunehmend beeinflussen.",
      text2: "In so einer Situation geht es weniger darum, ob die Beziehung theoretisch noch funktionieren könnte, sondern wie sie sich konkret auf dich auswirkt. Wenn du dich wiederholt belastet, unsicher oder eingeengt erlebst, ist das ein relevantes Signal. Dann ist es sinnvoll, deine Situation nüchtern zu betrachten und eine klare Entscheidung vorzubereiten.",
      advice: [
        "Stell dir konkret die Frage, wie dein Alltag in sechs Monaten aussieht, wenn alles so bleibt wie jetzt.",
        "Achte auf deine innere und körperliche Reaktion nach Kontakt, Streit oder Versöhnung.",
        "Hole dir Unterstützung, wenn du merkst, dass du aus Angst, Schuldgefühl oder emotionalem Druck in der Beziehung festhängst."
      ],
      links: [
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-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>Passt diese Person wirklich zu mir?</title>
		<link>https://checkdich.at/category-beziehungstests/passt-diese-person-wirklich-zu-mir-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:33:19 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1790</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1790">.elementor-1790 .elementor-element.elementor-element-afdfa44{--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="1790" class="elementor elementor-1790" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-afdfa44 e-flex e-con-boxed e-con e-parent" data-id="afdfa44" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-d791fa1 elementor-widget elementor-widget-html" data-id="d791fa1" 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: "Passt diese Person wirklich zu mir?",
  intro: "Dieser Test hilft dir einzuschätzen, wie stimmig sich Kontakt, Werte, Kommunikation und Zukunftsvorstellungen mit deinem (potentiellen) Partner für dich anfühlen.",
  testType: "standard",
questions: [
{
text: "In Gesprächen über wichtige Themen (z. B. Nähe, Zukunft oder Lebensstil) merkst du, dass ihr unterschiedlich denkt oder wollt.",
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 Treffen mit dieser Person fühlst du dich eher erschöpft oder innerlich leer statt gut und gestärkt.",
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 gemeinsame Pläne besprecht, bleibt oft unklar, was ihr beide wirklich wollt oder erwartet.",
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: "Du merkst im Kontakt mit dieser Person, dass du dich verstellst oder zurücknimmst, damit es zwischen euch passt.",
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 persönlicher wird, zieht sich einer von euch zurück oder wechselt schnell 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: "Bei kleinen Konflikten wird deutlich, dass ihr sehr unterschiedlich mit Kritik oder Spannung umgeht.",
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 Gespräche über Zukunft oder Verbindlichkeit aufkommen, bleiben bei dir danach Zweifel oder ein ungutes Gefühl 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: "Im Umgang miteinander hast du oft das Gefühl, nicht wirklich verstanden oder gesehen zu werden.",
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: "Im Alltag merkt man, dass eure Bedürfnisse nach Nähe, Freiraum oder Tempo nicht gut zusammenpassen.",
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 mit dieser Person merkst du, dass du Dinge zurückhältst, die dir eigentlich wichtig 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: "Nach Treffen oder Gesprächen mit dieser Person merkst du, dass dich Gedanken darüber beschäftigen, ob es wirklich zwischen euch passt.",
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: "Im Kontakt mit dieser Person entstehen bei dir immer wieder Momente, in denen du dich nicht ganz wohl oder stimmig 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 }
]
}
],
  results: {
    low: {
      badge: "Stage 0",
      title: "Vieles zwischen euch wirkt stimmig",
      subtitle: "Aktuell gibt es wenige Hinweise darauf, dass diese Verbindung grundlegend nicht zu dir passt.",
      text1: "Dein Ergebnis spricht dafür, dass sich diese Person in wichtigen Bereichen passend für dich anfühlt. Das heißt nicht, dass alles perfekt ist, aber im Moment scheinen Kommunikation, Gefühl und Richtung zwischen euch grundsätzlich zusammenzupassen.",
      text2: "Gerade bei neuen oder noch offenen Verbindungen ist das ein gutes Zeichen. Entscheidend bleibt trotzdem, ob sich dieses Gefühl auch im Alltag trägt: in Gesprächen, in Unsicherheit, in kleinen Konflikten und in der Frage, ob du bei dir bleiben kannst.",
      advice: [
        "Achte weiter darauf, ob sich Nähe zwischen euch leicht und echt anfühlt.",
        "Beobachte, ob eure Vorstellungen von Beziehung und Zukunft auch längerfristig zusammenpassen.",
        "Nimm ernst, wenn kleine Zweifel wiederholt in denselben Situationen auftauchen."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Es gibt erste Reibungspunkte",
      subtitle: "Zwischen euch scheint nicht alles unpassend zu sein, aber einige Bereiche fühlen sich bereits unklar oder unstimmig an.",
      text1: "Dein Ergebnis deutet darauf hin, dass du bei dieser Person wiederholt Irritationen oder Zweifel erlebst. Solche Signale müssen nicht automatisch bedeuten, dass es nicht passt. Sie können aber darauf hinweisen, dass ihr in bestimmten Punkten unterschiedlich tickt oder dass etwas zwischen Wunschbild und Realität nicht ganz zusammengeht.",
      text2: "Wichtig ist jetzt, genauer hinzuschauen: Geht es um normale Unsicherheit in einer entstehenden Verbindung oder zeigen sich Muster, bei denen du dich auf Dauer verbiegen, erklären oder selbst beruhigen musst? Kompatibilität zeigt sich meist nicht in großen Worten, sondern in wiederkehrenden Alltagssituationen.",
      advice: [
        "Schau dir an, in welchen konkreten Situationen deine Zweifel auftauchen.",
        "Prüfe, ob du dich mit dieser Person eher sicher oder eher verunsichert fühlst.",
        "Sprich wichtige Erwartungen früh an, statt sie nur innerlich zu vergleichen.",
        "Beobachte, ob Unterschiede zwischen euch konstruktiv tragbar sind oder dauerhaft Kraft kosten."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Die Verbindung wirkt deutlich unstimmig",
      subtitle: "Mehrere Anzeichen sprechen dafür, dass diese Person wahrscheinlich nicht so gut zu dir passt, wie du es dir wünschst.",
      text1: "Dein Ergebnis zeigt, dass sich zwischen euch nicht nur einzelne Unterschiede, sondern wiederkehrende Spannungen zeigen. Das kann bedeuten, dass eure Bedürfnisse, eure Art von Nähe oder eure Zukunftsvorstellungen spürbar auseinandergehen.",
      text2: "Gerade wenn du dich häufiger unklar, erschöpft oder innerlich nicht aufrichtig fühlst, ist das relevant. Eine passende Verbindung muss nicht leicht sein, aber sie sollte dich nicht dauerhaft in Zweifel, Anpassung oder innere Unruhe bringen. Kompatibilität heißt nicht Gleichheit, sondern Tragfähigkeit.",
      advice: [
        "Frag dich ehrlich, ob du diese Verbindung so magst, wie sie real ist, oder eher wegen ihrer Möglichkeit festhältst.",
        "Beobachte, ob du dich im Kontakt mit dieser Person kleiner, unsicherer oder angespannter fühlst.",
        "Nimm wiederkehrende Unstimmigkeiten ernster als einzelne schöne Momente.",
        "Mach dir klar, welche Punkte für dich in einer Beziehung nicht verhandelbar sind."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Wahrscheinlich passt diese Person nicht zu dir",
      subtitle: "Dein Ergebnis zeigt viele deutliche Hinweise auf eine Verbindung, die dich eher belastet als trägt.",
      text1: "Dieses Ergebnis spricht dafür, dass du in dieser Dynamik sehr häufig Dinge erlebst, die sich nicht nach echter Passung anfühlen. Dabei geht es nicht nur um kleine Unterschiede, sondern um wiederkehrende Unruhe, Anpassungsdruck, Zweifel oder das Gefühl, dass ihr auf Dauer nicht zueinander findet.",
      text2: "Wenn eine Verbindung dauerhaft mehr Verwirrung als Sicherheit erzeugt, ist das ein ernstes Signal. Auch starke Anziehung oder Hoffnung ersetzen nicht das, was langfristig zählt: gegenseitiges Verstehen, Stabilität, Respekt und ein gemeinsames Grundgefühl von Stimmigkeit.",
      advice: [
        "Nimm dein wiederkehrendes Unwohlsein nicht als Nebensache, sondern als wichtige Information.",
        "Trenne Anziehung klar von echter Passung im Alltag.",
        "Überlege, was dich konkret in dieser Verbindung hält und was sie dich kostet.",
        "Hole dir eine Außenperspektive, wenn du merkst, dass du dich in der Dynamik verlierst."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-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 meine Beziehung toxisch?</title>
		<link>https://checkdich.at/category-beziehungstests/ist-meine-beziehung-toxisch-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:31:19 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1785</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1785">.elementor-1785 .elementor-element.elementor-element-5ac9ab1{--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="1785" class="elementor elementor-1785" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-5ac9ab1 e-flex e-con-boxed e-con e-parent" data-id="5ac9ab1" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-d76b4e3 elementor-widget elementor-widget-html" data-id="d76b4e3" 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 meine Beziehung toxisch?",
intro: "Manchmal fühlt sich eine Beziehung nicht mehr unterstützend, sondern belastend an. Dieser Test hilft dir einzuschätzen, ob sich bei euch Muster zeigen, die auf eine toxische Dynamik hindeuten könnten.",
testType: "risk",

questions: [
{
text: "Dein Partner reagiert abwertend oder herablassend, wenn du deine Meinung äußerst.",
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 werden Aussagen von dir später bestritten oder anders dargestellt, als du sie erinnerst.",
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 zieht sich nach Konflikten zurück, ohne das Gespräch wieder aufzugreifen.",
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: "Gemeinsame Absprachen oder Pläne werden einseitig verändert, ohne dich 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 nutzt Dinge, die du anvertraut hast, später in Diskussionen gegen dich.",
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 das Thema gewechselt oder auf andere Fehler von dir gelenkt.",
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 stark negativ, wenn du eigene Grenzen setzt.",
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 wird spürbar distanziert oder kühl, wenn es Spannungen zwischen euch gibt.",
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 kontrolliert oder kommentiert, mit wem du Zeit verbringst oder was du tust.",
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 Auseinandersetzungen wird nicht konkret besprochen, was sich künftig ändern soll.",
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 stellt deine Gefühle oder Reaktionen als übertrieben oder unangemessen dar.",
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: "Du überlegst dir im Vorfeld genau, was du sagst oder tust, um Konflikte zu vermeiden.",
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:"OK",title:"Eher unauffällige Dynamik",subtitle:"Keine klaren Hinweise auf toxische Muster.",text1:"In deiner Beziehung zeigen sich aktuell keine deutlichen Anzeichen für toxische Dynamiken. Konflikte und Unsicherheiten können zwar vorkommen, wirken aber nicht prägend für das Gesamtbild.",text2:"Das bedeutet nicht, dass alles perfekt sein muss – aber die Beziehung scheint grundsätzlich stabil und nicht belastend für dich zu sein.",advice:["Achte weiterhin darauf, offen zu kommunizieren.","Nimm kleine Spannungen früh wahr und sprich sie an.","Behalte dein eigenes Wohlbefinden im Blick."],links:[{slug:"wie-gesund-ist-meine-beziehung-wirklich-test",title:"Wie gesund ist meine Beziehung? (Selbsttest)",url:"/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"},{slug:"ist-das-liebe-oder-nur-verliebtheit-test",title:"Ist das Liebe oder nur Verliebtheit?",url:"/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"}]},
mid:{badge:"Achtung",title:"Einzelne kritische Muster",subtitle:"Es zeigen sich erste Warnsignale.",text1:"Einige deiner Antworten deuten darauf hin, dass sich in deiner Beziehung Muster entwickeln, die belastend sein können. Diese sind noch nicht durchgehend dominant, sollten aber ernst genommen werden.",text2:"Gerade in frühen Phasen können sich solche Dynamiken verstärken, wenn sie nicht bewusst reflektiert werden.",advice:["Beobachte wiederkehrende Situationen genauer.","Sprich offen an, was dich belastet.","Setze klare persönliche Grenzen."],links:[{slug:"wie-gesund-ist-meine-beziehung-wirklich-test",title:"Wie gesund ist meine Beziehung? (Selbsttest)",url:"/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"},{slug:"werde-ich-emotional-manipuliert-test",title:"Werde ich emotional manipuliert?",url:"/beziehungstests/werde-ich-emotional-manipuliert-test"}]},
high:{badge:"Warnung",title:"Deutliche Warnzeichen",subtitle:"Mehrere toxische Muster sind erkennbar.",text1:"Deine Antworten zeigen, dass sich in deiner Beziehung mehrere problematische Dynamiken wiederholen. Diese können langfristig dein Wohlbefinden stark beeinträchtigen.",text2:"Solche Muster verändern oft schleichend dein Verhalten und deine Selbstwahrnehmung.",advice:["Nimm deine Wahrnehmung ernst.","Hol dir ggf. Unterstützung von außen.","Überlege, was du langfristig brauchst."],links:[{slug:"soll-ich-mich-trennen-test",title:"Soll ich mich trennen?",url:"/beziehungstests/soll-ich-mich-trennen-test"},{slug:"werde-ich-emotional-manipuliert-test",title:"Werde ich emotional manipuliert?",url:"/beziehungstests/werde-ich-emotional-manipuliert-test"}]},
veryHigh:{badge:"Kritisch",title:"Stark toxische Dynamik",subtitle:"Die Beziehung wirkt deutlich belastend.",text1:"Dein Ergebnis weist klar auf eine stark belastende Beziehung hin. Mehrere Verhaltensmuster sprechen dafür, dass deine Grenzen regelmäßig überschritten werden.",text2:"In solchen Situationen kann es wichtig sein, die eigene Situation realistisch einzuordnen und nicht zu relativieren.",advice:["Nimm Warnsignale ernst.","Sprich mit einer Vertrauensperson.","Ziehe professionelle Unterstützung in Betracht."],links:[{slug:"soll-ich-mich-trennen-test",title:"Soll ich mich trennen?",url:"/beziehungstests/soll-ich-mich-trennen-test"},{slug:"werde-ich-emotional-manipuliert-test",title:"Werde ich emotional manipuliert?",url:"/beziehungstests/werde-ich-emotional-manipuliert-test"}]}
}
};

(function () {
"use strict";
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 render(){el.title.textContent=TEST_DATA.title;el.intro.textContent=TEST_DATA.intro;let html="";TEST_DATA.questions.forEach((q,i)=>{html+=`<div class="dep-question"><div class="dep-question-title">${i+1}. ${q.text}</div>`;q.answers.forEach((a,j)=>{html+=`<label class="dep-answer"><input type="radio" name="q${i}" value="${a.value}"><span>${a.text}</span></label>`});html+="</div>"});el.questions.innerHTML=html}
function calc(){let score=0;let answers=[];TEST_DATA.questions.forEach((_,i)=>{let checked=document.querySelector(`input[name="q${i}"]:checked`);if(!checked)throw i+1;let val=Number(checked.value);score+=val;answers.push(val)});return{score,answers}}
function stage(score){if(score<=10)return 0;if(score<=21)return 1;if(score<=33)return 2;return 3}
function renderResult(score,answers){let base=stage(score);let highCount=answers.filter(v=>v>=3).length;let maxCount=answers.filter(v=>v===4).length;if(highCount>=3)base++;if(maxCount>=3)base=3;if(base>3)base=3;let keys=["low","mid","high","veryHigh"];let res=TEST_DATA.results[keys[base]];el.resultTitle.textContent=res.title;el.resultSubtitle.textContent=res.subtitle;el.resultTextCombined.innerHTML=`<p>${res.text1}</p><p>${res.text2}</p>`;el.helpText.innerHTML="<ul>"+res.advice.map(a=>"<li>"+a+"</li>").join("")+"</ul>";el.links.innerHTML=res.links.map(l=>`<a class="dep-link-card" href="${l.url}">${l.title}</a>`).join("");el.scoreMeta.textContent=score+" von 48 Punkten";el.result.style.display="block"}
el.submit.onclick=()=>{try{let {score,answers}=calc();renderResult(score,answers)}catch(e){el.error.style.display="block";el.error.textContent="Bitte beantworte alle Fragen."}};
el.reset.onclick=()=>{location.reload()};
render();
})();
</script>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ist das Liebe oder nur Verliebtheit?</title>
		<link>https://checkdich.at/category-beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:29:29 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1780</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1780">.elementor-1780 .elementor-element.elementor-element-7b6200f{--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="1780" class="elementor elementor-1780" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-7b6200f e-flex e-con-boxed e-con e-parent" data-id="7b6200f" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-18a8f51 elementor-widget elementor-widget-html" data-id="18a8f51" 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 das Liebe oder nur Verliebtheit?",
  intro: "Manchmal fühlt sich etwas intensiv an, ohne schon wirklich tragfähig zu sein. Dieser Test hilft dir dabei, besser einzuordnen, ob zwischen euch eher tiefe Verbundenheit wächst oder ob gerade vor allem Aufregung und Projektion im Vordergrund stehen.",
  testType: "standard",
  questions: [
{
text: "Nach gemeinsamen Momenten bleibt bei dir eher Ruhe und Zufriedenheit zurück als Grübeln oder Unsicherheit.",
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: "Eure Gespräche gehen über das Kribbeln hinaus und drehen sich auch um echtes Kennenlernen, Werte oder wie ihr im Alltag funktioniert.",
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 an diese Person denkst, interessiert dich auch, wie sie im Alltag wirklich ist – nicht nur, wie es sich zwischen euch anfühlt.",
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: "Auch ohne besondere Momente oder Spannung fühlt sich der Kontakt mit dieser Person für dich stimmig 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: "Du bemerkst auch Seiten an der Person, die dir nicht ganz gefallen – und fühlst dich trotzdem weiterhin zu ihr hingezogen.",
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: "Du hast nicht das Gefühl, dich verstellen zu müssen, um interessant oder attraktiv zu wirken.",
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: "Du wünschst dir nicht nur besondere Treffen, sondern auch gemeinsames Leben im Alltag.",
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 Dinge zwischen euch langsamer entwickeln als gehofft, bleibst du interessiert, ohne dass dich das stark verunsichert.",
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 der Person schlecht geht, geht es dir nicht nur um Nähe, sondern darum, sie wirklich zu verstehen und zu unterstützen.",
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: "Auch wenn du starke Gefühle hast, dreht sich dein Alltag nicht überwiegend nur um diese Person.",
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 Missverständnissen suchst du aktiv das Gespräch, statt dich zurückzuziehen oder dich in Gedanken zu verlieren.",
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 an eine gemeinsame Zukunft denkst, wirkt das Bild realistisch und greifbar – nicht nur wie eine perfekte Vorstellung.",
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: "Im Moment wirkt es eher wie Verliebtheit oder Anziehung",
      subtitle: "Vieles fühlt sich noch stark, neu oder aufregend an, aber die Anzeichen für tragfähige Tiefe sind bisher eher schwach ausgeprägt.",
      text1: "Dein Ergebnis spricht eher dafür, dass bei euch gerade die Anfangsdynamik im Vordergrund steht. Das ist nicht automatisch etwas Negatives. Verliebtheit kann intensiv, schön und lebendig sein. Sie bedeutet nur noch nicht zwingend, dass daraus bereits eine stabile Form von Liebe gewachsen ist.",
      text2: "Oft zeigt sich der Unterschied erst mit der Zeit: Wie fühlt es sich im Alltag an, bei Unsicherheit, nach Missverständnissen oder wenn die perfekte Stimmung einmal wegfällt? Genau dort trennt sich häufig die kurzfristige Faszination von echter Verbundenheit.",
      advice: [
        "Beobachte euch nicht nur in Höhepunkten, sondern auch in normalen, unspektakulären Situationen.",
        "Achte darauf, ob dein Bild von der Person realer wird oder weiter stark idealisiert bleibt.",
        "Gib dem Ganzen etwas Zeit, bevor du große Erwartungen oder Entscheidungen daran knüpfst."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "passt-diese-person-wirklich-zu-mir-test",
          title: "Passt mein Partner wirklich zu mir?",
          url: "/beziehungstests/passt-diese-person-wirklich-zu-mir-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Da ist mehr als ein kurzer Hype, aber noch nicht alles ist klar",
      subtitle: "Zwischen euch zeigen sich bereits Anzeichen von echter Nähe, gleichzeitig scheint noch offen zu sein, wie tragfähig das Ganze wirklich ist.",
      text1: "Dein Ergebnis liegt im Zwischenbereich. Das spricht dafür, dass ihr nicht nur von Spannung, Chemie oder Projektion lebt. Es gibt offenbar schon Momente von echter Verbindung, Verständnis oder Ruhe. Gleichzeitig ist das Bild noch nicht überall gleich stabil.",
      text2: "Das ist ein typischer Übergangsbereich. Aus Verliebtheit kann hier echte Liebe wachsen, wenn aus intensiven Gefühlen nach und nach Verlässlichkeit, Realitätssinn und emotionale Sicherheit werden. Genau darauf lohnt sich jetzt der Blick.",
      advice: [
        "Schau darauf, wie ihr mit Tempo, Erwartungen und Unsicherheit umgeht.",
        "Prüfe, ob du die Person auch außerhalb der romantischen Stimmung gern an deiner Seite hast.",
        "Achte darauf, ob Nähe und Klarheit mit der Zeit zunehmen oder eher schwanken."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "passt-diese-person-wirklich-zu-mir-test",
          title: "Passt mein Partner wirklich zu mir?",
          url: "/beziehungstests/passt-diese-person-wirklich-zu-mir-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Es spricht einiges für echte Liebe in Entwicklung",
      subtitle: "Bei euch scheint nicht nur das Kribbeln stark zu sein, sondern auch die Basis für Nähe, Realität und gegenseitige Verbundenheit.",
      text1: "Dein Ergebnis spricht eher dafür, dass sich bei euch bereits etwas Tieferes zeigt. Liebe erkennt man meist nicht nur an Intensität, sondern daran, dass neben Anziehung auch Ruhe, Annahme, Interesse am echten Leben des anderen und eine gewisse emotionale Standfestigkeit entstehen.",
      text2: "Natürlich ersetzt so ein Test keine Beziehungserfahrung. Aber die Muster, die du hier beschrieben hast, passen eher zu wachsender Liebe als zu bloßer Anfangseuphorie. Entscheidend bleibt trotzdem, ob sich dieses Gefühl auch unter realen Bedingungen trägt.",
      advice: [
        "Pflege weiter die Seiten eurer Verbindung, die im Alltag Bestand haben.",
        "Bleib aufmerksam dafür, ob Zuneigung und Realitätssinn gemeinsam wachsen.",
        "Sprich offen darüber, was ihr euch für die nächste Zeit wirklich wünscht."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "passt-diese-person-wirklich-zu-mir-test",
          title: "Passt mein Partner wirklich zu mir?",
          url: "/beziehungstests/passt-diese-person-wirklich-zu-mir-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Das wirkt deutlich mehr nach Liebe als nach bloßer Verliebtheit",
      subtitle: "Deine Antworten sprechen stark für eine Verbindung, die nicht nur intensiv, sondern auch emotional tragfähig und realitätsnah erlebt wird.",
      text1: "Dein Ergebnis liegt im oberen Bereich. Das spricht dafür, dass deine Gefühle nicht nur aus Spannung, Sehnsucht oder Idealisierung bestehen. Offenbar erlebst du die Beziehung eher als etwas, das auch in verletzlichen, alltäglichen oder weniger perfekten Momenten Bestand hat.",
      text2: "Genau das ist ein wichtiger Unterschied: Verliebtheit lebt stark vom Ausnahmezustand, Liebe zeigt sich häufiger darin, dass Nähe auch unter echten Bedingungen trägt. Das heißt nicht, dass alles perfekt ist. Aber es deutet auf mehr Tiefe, Echtheit und innere Verbundenheit hin.",
      advice: [
        "Achte darauf, dass aus Tiefe auch konkrete gemeinsame Gestaltung entsteht.",
        "Behalte deine eigene Stabilität und dein eigenes Leben trotzdem bewusst im Blick.",
        "Nutzt die gute Basis für ehrliche Gespräche über Werte, Erwartungen und Zukunft."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "passt-diese-person-wirklich-zu-mir-test",
          title: "Passt mein Partner wirklich zu mir?",
          url: "/beziehungstests/passt-diese-person-wirklich-zu-mir-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>Geht mein Partner fremd?</title>
		<link>https://checkdich.at/category-beziehungstests/geht-mein-partner-fremd-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:27:40 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1775</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1775">.elementor-1775 .elementor-element.elementor-element-2da96c7{--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="1775" class="elementor elementor-1775" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-2da96c7 e-flex e-con-boxed e-con e-parent" data-id="2da96c7" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-7a79042 elementor-widget elementor-widget-html" data-id="7a79042" 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: "Geht mein Partner fremd?",
  intro: "Dieser Selbsttest hilft dir dabei, typische Warnsignale für mögliche Heimlichkeit, Distanz oder Unstimmigkeiten in deiner Beziehung zu erkennen. Er kann kein Fremdgehen beweisen, zeigt dir aber, ob sich konkrete Auffälligkeiten in deinem Alltag häufen.",
  testType: "risk",
  questions: [
    {
      text: "Dein Partner reagiert auffällig schützend, wenn sein Handy, Laptop oder bestimmte Nachrichten in deiner Nähe auftauchen.",
      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 Zeiten, in denen dein Partner unterwegs ist, entstehen längere Phasen, in denen du ihn kaum erreichst und die er im Nachhinein nicht konkret erklären kann.",
      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 über bestimmte Termine, Orte oder Kontakte sprecht, passen einzelne Erklärungen deines Partners später nicht mehr richtig zusammen.",
      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: "Gemeinsame Pläne werden von deinem Partner kurzfristig abgesagt, verschoben oder nur vage gehalten, ohne dass du ein klares Bild bekommst.",
      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 dein Partner eine Zeit lang nicht erreichbar war, wirkt er dir gegenüber ungewöhnlich distanziert, abgelenkt oder innerlich woanders.",
      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 auf Dinge ansprichst, die dir unklar oder widersprüchlich vorkommen, reagiert er schnell gereizt, lenkt das Gespräch um oder stellt deine Wahrnehmung infrage.",
      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: "Im Alltag erzählt dein Partner dir spürbar weniger von seinem Tagesablauf, seinen Kontakten oder dem, was ihn gerade 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: "Bestimmte Kontakte oder Chats führen bei deinem Partner zu Ausweichverhalten oder einem auffälligen Themawechsel.",
      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: "Nähe, Zärtlichkeit oder sexuelles Interesse verändern sich plötzlich, ohne dass ihr darüber offen ins Gespräch kommt.",
      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 bestimmten Situationen hast du wiederholt das Gefühl, dass dir Informationen fehlen oder etwas bewusst zurückgehalten 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: "Dein Partner verbringt zunehmend Zeit in Bereichen seines Alltags, zu denen du wenig Einblick hast, zum Beispiel bei neuen Routinen, Kontakten oder Aktivitäten.",
      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: "Es gibt wiederkehrende Situationen, in denen dein Partner dir nicht schlüssig erklären kann, wo er war oder was er gemacht 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 }
      ]
    }
  ],
  results: {
    low: {
      badge: "Unauffällig",
      title: "Wenig konkrete Hinweise",
      subtitle: "Dein Ergebnis spricht eher für vereinzelte Irritationen als für ein klares Muster.",
      text1: "Dein Ergebnis liegt im unteren Bereich. Das heißt nicht automatisch, dass alles perfekt ist, aber es zeigt, dass sich aktuell kein alarmierendes Muster abzeichnet.",
      text2: "Unsicherheit in Beziehungen kann auch durch schlechte Kommunikation, Stress, Distanzphasen oder frühere Erfahrungen entstehen. Entscheidend ist, ob sich einzelne irritierende Momente beruhigen lassen, wenn offen darüber gesprochen wird.",
      advice: [
        "Achte darauf, ob deine Unsicherheit nach einem ehrlichen Gespräch kleiner wird oder bestehen bleibt.",
        "Beobachte eher Muster über Zeit als einzelne Momente.",
        "Sprich konkrete Situationen an statt Vermutungen oder Vorwürfe."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        }
      ]
    },
    mid: {
      badge: "Leicht auffällig",
      title: "Mehrere Dinge wirken auf dich unstimmig",
      subtitle: "Es gibt erste Hinweise auf ein Muster, aber noch keine klare Zuspitzung.",
      text1: "Dein Ergebnis liegt im mittleren Bereich. Das spricht dafür, dass dich nicht nur einzelne Situationen verunsichern, sondern mehrere wiederkehrende Signale zusammenkommen.",
      text2: "Das muss noch kein Hinweis auf Fremdgehen sein. Es zeigt aber, dass zwischen euch offenbar etwas nicht sauber geklärt ist. Gerade dann ist wichtig, nicht in stilles Grübeln zu rutschen, sondern die Beziehungsebene insgesamt anzuschauen.",
      advice: [
        "Halte für dich fest, welche Situationen dich konkret verunsichern.",
        "Achte darauf, wie dein Partner reagiert, wenn du sachlich und ruhig nachfragst.",
        "Prüfe, ob neben Unsicherheit auch Abwertung, Ausweichen oder emotionale Verwirrung eine Rolle spielen."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-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: "Deine Unsicherheit hat mehrere konkrete Anlässe",
      subtitle: "Hier geht es wahrscheinlich nicht mehr nur um ein diffuses Bauchgefühl.",
      text1: "Dein Ergebnis liegt im oberen Bereich. Mehrere Antworten deuten darauf hin, dass du wiederholt Situationen erlebst, die Vertrauen erschweren und bei dir starke Fragezeichen auslösen.",
      text2: "Auch dieses Ergebnis beweist kein Fremdgehen. Es zeigt aber, dass etwas in eurer Dynamik deutlich belastet ist. Das kann mit Heimlichkeit, emotionalem Rückzug, Verwirrung oder anderen Beziehungsproblemen zusammenhängen. Wichtig ist jetzt vor allem, dass du deine Wahrnehmung nicht reflexhaft kleinredest.",
      advice: [
        "Sprich nur über beobachtbare Situationen, nicht über Vorwürfe ohne Basis.",
        "Achte darauf, ob dein Partner Verantwortung übernimmt oder dich systematisch verunsichert.",
        "Überlege, welche Grenze für dich überschritten wäre, auch unabhängig von einem eindeutigen Beweis.",
        "Hole dir bei starkem innerem Druck eine neutrale Sicht von außen."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stark auffällig",
      title: "Es verdichten sich mehrere Warnsignale",
      subtitle: "Dein Ergebnis zeigt eine stark belastende Beziehungssituation mit vielen irritierenden Mustern.",
      text1: "Dein Ergebnis liegt im höchsten Bereich. Das bedeutet nicht automatisch, dass dein Partner definitiv fremdgeht. Aber es zeigt, dass sich bei dir viele konkrete Signale sammeln, die Vertrauen, Sicherheit und Klarheit massiv beeinträchtigen.",
      text2: "In so einer Lage ist die eigentliche Kernfrage oft nicht nur, ob Fremdgehen vorliegt, sondern ob du dich in dieser Beziehung überhaupt noch ernst genommen, sicher und klar fühlst. Wenn Gespräche regelmäßig in Abwehr, Verwirrung oder Abwertung enden, ist das bereits für sich genommen relevant.",
      advice: [
        "Nimm deine Wahrnehmung ernst, auch wenn du noch keine völlige Gewissheit hast.",
        "Prüfe nüchtern, ob Gespräche noch zu Klarheit führen oder nur mehr Chaos erzeugen.",
        "Setze dir klare Grenzen dafür, was du in einer Beziehung akzeptierst und was nicht.",
        "Wenn du dich emotional stark belastet fühlst, such dir Unterstützung außerhalb der Beziehung."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-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>Bin ich emotional abhängig von meinem Partner?</title>
		<link>https://checkdich.at/category-beziehungstests/bin-ich-emotional-abhaengig-von-meinem-partner-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:25:39 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1770</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1770">.elementor-1770 .elementor-element.elementor-element-d8ca9af{--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="1770" class="elementor elementor-1770" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-d8ca9af e-flex e-con-boxed e-con e-parent" data-id="d8ca9af" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e3aa22f elementor-widget elementor-widget-html" data-id="e3aa22f" 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: "Bin ich emotional abhängig von meinem Partner?",
  intro: "Dieser Test zeigt dir, wie stark dein Wohlbefinden in der Beziehung von deinem Partner beeinflusst wird und ob sich Anzeichen emotionaler Abhängigkeit zeigen.",
  testType: "risk",

questions: [
  {
    text: "Wenn dein Partner auf Nachrichten länger nicht reagiert, schreibst du nochmal nach oder kontrollierst, ob alles in Ordnung 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: "Deine Stimmung verändert sich spürbar, wenn dein Partner sich im Alltag 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: "Bei gemeinsamen Planungen sagst du zu Dingen ja, die du alleine eigentlich anders entscheiden würdest.",
    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 Spannungen übernimmst du schnell die Initiative, um die Situation 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 du Zeit ohne deinen Partner verbringst, fällt es dir schwer, dich wirklich auf andere Dinge zu konzentrieren.",
    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 gehst du Gespräche innerlich wieder und wieder durch und suchst nach Punkten, an denen du dich anders verhalten hättest können.",
    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 hältst du bestimmte Themen oder Bedürfnisse zurück, 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: "Wenn dein Partner sich anders verhält als sonst, denkst du schnell darüber nach, ob etwas zwischen euch nicht stimmt.",
    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 eigene Pläne machst, passt du sie nachträglich an, damit sie besser zu deinem Partner oder eurer Beziehung passen.",
    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 Meinungsverschiedenheiten suchst du aktiv nach Rückmeldungen oder Signalen, dass zwischen euch wieder alles in Ordnung 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: "Wie du dich selbst siehst, verändert sich spürbar je nachdem, wie dein Partner sich dir gegenüber verhält.",
    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: "Auch wenn dich etwas verletzt, sprichst du es nicht klar an, weil du vermeiden willst, dass die Situation eskaliert oder Distanz entsteht.",
    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: "Wenig Hinweise auf emotionale Abhängigkeit",
      subtitle: "Deine Beziehung wirkt im Moment eher stabil und nicht von Abhängigkeit geprägt.",
      text1: "Dein Ergebnis spricht eher dafür, dass Nähe in deiner Beziehung nicht automatisch mit innerer Unsicherheit gekoppelt ist. Du scheinst Verbindung und Eigenständigkeit einigermaßen auseinanderhalten zu können.",
      text2: "Das heißt nicht, dass dich Konflikte oder Distanz kaltlassen. Aber dein inneres Gleichgewicht scheint nicht bei jeder Reaktion deines Partners sofort ins Wanken zu geraten. Genau das ist oft ein wichtiger Unterschied zwischen normalem Bindungsbedürfnis und emotionaler Abhängigkeit.",
      advice: [
        "Achte weiter darauf, dass deine eigenen Bedürfnisse in der Beziehung sichtbar bleiben.",
        "Pflege bewusst auch Bereiche, die nur dir gehören: Kontakte, Routinen, Interessen.",
        "Beobachte in stressigen Phasen, ob du Nähe suchst, ohne dich selbst dabei zu verlieren."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Erste Muster von emotionaler Abhängigkeit",
      subtitle: "Deine Beziehung scheint stellenweise stärker auf innere Absicherung als auf echte Ruhe aufgebaut zu sein.",
      text1: "Dein Ergebnis zeigt erste Hinweise darauf, dass dein emotionales Gleichgewicht in der Beziehung spürbar von Nähe, Rückmeldung oder Bestätigung abhängen kann. Das muss noch keine massive Abhängigkeit sein, ist aber ein Muster, das man ernst nehmen sollte.",
      text2: "Oft beginnt emotionale Abhängigkeit nicht dramatisch, sondern leise: Man passt sich etwas mehr an, hält etwas mehr zurück und wird empfindlicher für Distanz. Wenn das über längere Zeit zunimmt, kann es dazu führen, dass du dich selbst in der Beziehung immer weniger klar spürst.",
      advice: [
        "Frag dich in konkreten Situationen, ob du gerade aus Nähe handelst oder aus Verlustangst.",
        "Nimm kleine eigene Bedürfnisse bewusst ernst, auch wenn sie nicht sofort zur Harmonie beitragen.",
        "Beobachte, ob du nach Spannungen schnell in Selbstzweifel oder Schuldgefühle rutschst."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Deutliche Anzeichen emotionaler Abhängigkeit",
      subtitle: "Deine Beziehung scheint dich emotional stark zu binden und gleichzeitig einzuengen.",
      text1: "Dein Ergebnis deutet darauf hin, dass dein Wohlbefinden in der Beziehung spürbar davon abhängt, wie dein Partner sich verhält. Distanz, Unsicherheit oder Kritik scheinen dich nicht nur zu belasten, sondern schnell an deinem inneren Halt zu rütteln.",
      text2: "Solche Muster können dazu führen, dass du eigene Grenzen, Bedürfnisse oder Einschätzungen immer weiter zurückstellst. Gerade dann wird es schwierig, noch klar zu unterscheiden, was echte Verbundenheit ist und was schon ein Festhalten aus Angst, Unsicherheit oder Verlustdruck.",
      advice: [
        "Schau dir konkrete Situationen an, in denen du dich kleinmachst, um Nähe nicht zu verlieren.",
        "Halte fest, welche Bedürfnisse du regelmäßig zurückstellst und was das mit dir macht.",
        "Prüfe ehrlich, ob du dich in der Beziehung freier oder enger fühlst.",
        "Sprich mit einer vertrauten Person darüber, wie stark dein Selbstwert an der Beziehung hängt."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Sehr starke Hinweise auf emotionale Abhängigkeit",
      subtitle: "Deine Beziehung wirkt im Moment eher wie ein emotionales Zentrum, von dem fast alles andere abhängt.",
      text1: "Dein Ergebnis zeigt sehr deutliche Hinweise darauf, dass dein innerer Zustand stark an die Beziehung und an die Reaktionen deines Partners gekoppelt ist. Das kann bedeuten, dass du Distanz, Kritik oder Unsicherheit nicht mehr nur als belastend erlebst, sondern als unmittelbare Bedrohung für dein Selbstgefühl.",
      text2: "In solchen Dynamiken verschwimmen eigene Grenzen oft Schritt für Schritt. Man bleibt, obwohl etwas wehtut, passt sich an, obwohl es nicht mehr stimmig ist, und verliert dabei den Kontakt zu den eigenen Bedürfnissen. Gerade dann lohnt sich ein ehrlicher Blick darauf, was dich in dieser Beziehung hält und was du dafür bezahlst.",
      advice: [
        "Nimm ernst, wenn du dich ohne die Beziehung innerlich kaum stabil fühlst.",
        "Schreib für dich auf, was du regelmäßig hinnimmst, obwohl es dir nicht guttut.",
        "Hol dir eine Außenperspektive von einer Person, die klar und ehrlich mit dir sprechen kann.",
        "Wenn du dich dauerhaft unter Druck, klein oder ausgeliefert fühlst, such dir gezielt Unterstützung."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-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>Bin ich bereit für eine neue Beziehung?</title>
		<link>https://checkdich.at/category-beziehungstests/bin-ich-bereit-fuer-eine-beziehung-test/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 01 May 2026 18:10:00 +0000</pubDate>
				<category><![CDATA[Beziehungstests]]></category>
		<guid isPermaLink="false">https://checkdich.at/?p=1758</guid>

					<description><![CDATA[Ergebnis anzeigen Zurücksetzen &#8222;` Einordnung Worauf du jetzt achten kannst Passende nächste Tests &#8222;`]]></description>
			<style id="elementor-post-1758">.elementor-1758 .elementor-element.elementor-element-ba48439{--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="1758" class="elementor elementor-1758" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-ba48439 e-flex e-con-boxed e-con e-parent" data-id="ba48439" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-b6573eb elementor-widget elementor-widget-html" data-id="b6573eb" 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: "Bin ich bereit für eine Beziehung?",
  intro: "Dieser Test zeigt dir, wie bereit du gerade für eine Beziehung bist. Er hilft dir zu erkennen, ob du eher klar in Kontakt gehst – oder ob dich noch Unsicherheiten beeinflussen.",
  testType: "standard",
 questions: [
  {
    text: "Wenn jemand dir emotional näherkommt (z. B. durch persönlichere Gespräche oder häufigeren Kontakt), merkst du, dass du innerlich etwas auf Abstand gehst.",
    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 Treffen oder intensiven Chat mit jemandem, der dich interessiert, bist du gedanklich noch lange mit früheren Beziehungserfahrungen 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: "Wenn jemand Interesse an dir zeigt, hast du das Gefühl, dich besonders von deiner besten Seite zeigen zu müssen, damit die Person bleibt.",
    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 mehrere Tage oder Wochen viel alleine bist, entsteht in dir ein starker Wunsch, möglichst schnell jemanden kennenzulernen.",
    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 dich etwas an einer Person irritiert oder stört, sprichst du es nicht direkt an, sondern behältst es erstmal für dich.",
    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 der Kennenlernphase sagst du manchmal Dinge, die gut ankommen, obwohl sie sich für dich nicht ganz ehrlich anfü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 jemand nicht so reagiert, wie du es dir erhoffst (z. B. später antwortet oder distanzierter wirkt), gerätst du innerlich schnell ins Grübeln.",
    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 Gespräche persönlicher werden (z. B. über Gefühle oder Zukunft), merkst du, dass du innerlich ausweichen oder das Thema wechseln willst.",
    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 eine neue Person in dein Leben tritt, verschiebst du schnell andere Dinge (Freunde, Hobbys, Routinen), um mehr Zeit mit ihr zu verbringen.",
    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 jemanden kennenlernst, fällt es dir schwer klar zu spüren, was du selbst wirklich willst und brauchst.",
    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 der Kontakt zu jemandem plötzlich verlangsamt, interpretierst du das schnell als Zeichen von Ablehnung.",
    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 an eine mögliche Beziehung denkst, konzentrierst du dich stärker auf das Gefühl von Nähe als darauf, ob ihr wirklich gut zusammenpasst.",
    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: "Du wirkst ziemlich bereit für eine Beziehung",
      subtitle: "Bei dir sprechen viele Antworten dafür, dass du Nähe zulassen kannst, ohne dich dabei zu verlieren.",
      text1: "Dein Ergebnis deutet darauf hin, dass du eine Beziehung nicht nur aus Sehnsucht heraus suchst, sondern mit einer gewissen inneren Stabilität. Du scheinst eher in der Lage zu sein, dich auf jemanden einzulassen und dabei trotzdem mit dir selbst in Kontakt zu bleiben.",
      text2: "Bereit für eine Beziehung heißt nicht, perfekt zu sein. Es heißt eher, dass du Nähe, Unsicherheit und echtes Kennenlernen aushalten kannst, ohne dich sofort anzupassen, zu flüchten oder dich selbst zu übergehen. Das ist eine gute Grundlage für etwas, das langsam und gesund wachsen kann.",
      advice: [
        "Bleib auch in einer neuen Kennenlernphase bei deinem eigenen Tempo.",
        "Achte darauf, ob eine Verbindung nicht nur spannend, sondern auch stimmig ist.",
        "Nimm ernst, was dir guttut, statt nur auf starke Gefühle zu reagieren."
      ],
      links: [
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        },
        {
          slug: "passt-diese-person-wirklich-zu-mir-test",
          title: "Passt mein Partner wirklich zu mir?",
          url: "/beziehungstests/passt-diese-person-wirklich-zu-mir-test"
        }
      ]
    },
    mid: {
      badge: "Stage 1",
      title: "Du bist teilweise bereit – aber nicht ganz frei",
      subtitle: "Es gibt bei dir bereits gute Voraussetzungen, gleichzeitig zeigen sich noch Unsicherheiten oder alte Muster.",
      text1: "Dein Ergebnis spricht dafür, dass du dir grundsätzlich eine Beziehung vorstellen kannst, dabei aber an bestimmten Punkten noch ins Schwanken gerätst. Vielleicht bist du offen für Nähe, merkst aber in konkreten Situationen, dass alte Erfahrungen, Selbstzweifel oder Schutzmechanismen schnell wieder aktiv werden.",
      text2: "Das heißt nicht, dass du keine Beziehung eingehen solltest. Es heißt eher, dass es sinnvoll sein kann, deine eigenen Muster bewusster wahrzunehmen. Je klarer du erkennst, wann du aus echtem Interesse handelst und wann aus Angst, Leere oder Anpassung, desto stabiler kann eine neue Verbindung werden.",
      advice: [
        "Beobachte in Kennenlernphasen, was dich innerlich aus dem Gleichgewicht bringt.",
        "Sprich Bedürfnisse früher aus, statt sie lange in dir zu behalten.",
        "Prüfe, ob du jemanden wirklich willst oder nur das Gefühl, nicht allein zu sein."
      ],
      links: [
        {
          slug: "wie-gesund-ist-meine-beziehung-wirklich-test",
          title: "Wie gesund ist meine Beziehung? (Selbsttest)",
          url: "/beziehungstests/wie-gesund-ist-meine-beziehung-wirklich-test"
        },
        {
          slug: "ist-das-liebe-oder-nur-verliebtheit-test",
          title: "Ist das Liebe oder nur Verliebtheit?",
          url: "/beziehungstests/ist-das-liebe-oder-nur-verliebtheit-test"
        },
        {
          slug: "habe-ich-ein-gesundes-selbstwertgefuehl-test",
          title: "Habe ich ein gesundes Selbstwertgefühl?",
          url: "/persoenlichkeit-psyche/habe-ich-ein-gesundes-selbstwertgefuehl-test"
        }
      ]
    },
    high: {
      badge: "Stage 2",
      title: "Im Moment bringst du noch einige innere Hürden mit",
      subtitle: "Dein Ergebnis zeigt mehrere Muster, die eine Beziehung schnell schwer oder unklar machen können.",
      text1: "Aktuell scheint bei dir noch einiges mitzuspielen, das eine stabile Beziehung erschweren kann. Das können ungeklärte Erfahrungen aus der Vergangenheit sein, ein starkes Bedürfnis nach Bestätigung, Unsicherheit in der Abgrenzung oder die Tendenz, Nähe und Passung zu verwechseln.",
      text2: "Das ist kein Urteil gegen dich. Es ist eher ein Hinweis darauf, dass eine Beziehung gerade leicht zur Bühne für alte Themen werden kann. Wer sich selbst noch stark schützen muss oder sich in Kontakt schnell verliert, erlebt Nähe oft nicht als ruhige Verbindung, sondern als innere Anspannung. Genau dort lohnt es sich, zuerst genauer hinzuschauen.",
      advice: [
        "Nimm dir Zeit, bevor du dich auf etwas Verbindliches festlegst.",
        "Achte darauf, in welchen Situationen du dich verbiegst oder innerlich dichtmachst.",
        "Schau ehrlich hin, ob du gerade Beziehung suchst oder eher Regulierung für innere Unruhe."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "werde-ich-emotional-manipuliert-test",
          title: "Werde ich emotional manipuliert?",
          url: "/beziehungstests/werde-ich-emotional-manipuliert-test"
        },
        {
          slug: "habe-ich-ein-gesundes-selbstwertgefuehl-test",
          title: "Habe ich ein gesundes Selbstwertgefühl?",
          url: "/persoenlichkeit-psyche/habe-ich-ein-gesundes-selbstwertgefuehl-test"
        }
      ]
    },
    veryHigh: {
      badge: "Stage 3",
      title: "Du bist gerade nicht wirklich bereit für eine Beziehung",
      subtitle: "Dein Ergebnis zeigt deutliche Anzeichen dafür, dass eine Beziehung im Moment schnell zu Überforderung, Abhängigkeit oder Verstrickung führen könnte.",
      text1: "Viele deiner Antworten deuten darauf hin, dass Nähe für dich aktuell stark mit innerem Stress, Unsicherheit oder alten Verletzungen verbunden ist. In so einer Phase wird eine Beziehung leicht zu etwas, das beruhigen, retten oder bestätigen soll – und genau das macht sie oft instabil.",
      text2: "Nicht bereit zu sein ist kein Scheitern. Es kann auch bedeuten, dass gerade etwas Wichtigeres dran ist: dich selbst wieder klarer zu spüren, Grenzen zu entwickeln, vergangene Erfahrungen zu sortieren und deine eigenen Bedürfnisse ernster zu nehmen. Eine Beziehung wird meist nicht dadurch gesünder, dass man schneller in sie hineingeht, sondern dadurch, dass man innerlich tragfähiger in sie hineingeht.",
      advice: [
        "Gib dir selbst Vorrang, bevor du dich in eine neue Bindung stürzt.",
        "Nimm wiederkehrende Muster nicht als Zufall, sondern als Hinweis auf ein Thema in dir.",
        "Hol dir Unterstützung, wenn alte Beziehungserfahrungen heute noch stark nachwirken.",
        "Prüfe neue Kontakte besonders langsam und ohne Druck auf schnelle Nähe."
      ],
      links: [
        {
          slug: "soll-ich-mich-trennen-test",
          title: "Soll ich mich trennen?",
          url: "/beziehungstests/soll-ich-mich-trennen-test"
        },
        {
          slug: "ist-meine-beziehung-toxisch-test",
          title: "Ist meine Beziehung toxisch?",
          url: "/beziehungstests/ist-meine-beziehung-toxisch-test"
        },
        {
          slug: "habe-ich-ein-gesundes-selbstwertgefuehl-test",
          title: "Habe ich ein gesundes Selbstwertgefühl?",
          url: "/persoenlichkeit-psyche/habe-ich-ein-gesundes-selbstwertgefuehl-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>
