{"id":3859,"date":"2025-09-11T13:47:11","date_gmt":"2025-09-11T13:47:11","guid":{"rendered":"https:\/\/asta-hsh.de\/?page_id=3859"},"modified":"2025-10-21T18:25:56","modified_gmt":"2025-10-21T18:25:56","slug":"tour-test","status":"publish","type":"page","link":"https:\/\/asta-hsh.de\/en\/tour-test\/","title":{"rendered":"Tour Test"},"content":{"rendered":"<div>\n<p><head><br \/>\n  <meta charset=\"utf-8\" \/><br \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/><br \/>\n  <title>AStA Entdeckertour \u00b7 Themen-Finder<\/title><br \/>\n  <meta name=\"description\" content=\"Finde deine AStA-Themen mit ein paar indirekten, sinnvollen Fragen. Lokal &#038; ohne Tracking.\" \/>\n  <link rel=\"icon\" href=\"data:image\/svg+xml,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>\u2301<\/text><\/svg>&#8222;>\n  <link rel=\"stylesheet\" href=\"\/styles.css\" \/>\n<style>\/* AStA Entdeckertour v3 \u2013 clean AStA-like look, white navbar *\/\n:root{\n  --AStA:#14315b;\n  --accent:#64a4ff;\n  --brand:#6f7d93;\n  --ink:#242b33;\n  --muted:#6b7280;\n  --bg:#f6f7f9;\n  --card:#ffffff;\n  --chip:#eff2f6;\n  --ok:#0ea5e9;\n  --radius-lg:20px;\n  --radius-sm:12px;\n  --shadow:0 10px 25px rgba(20,49,91,.08), 0 2px 8px rgba(20,49,91,.06);\n  --shadow-soft:0 2px 10px rgba(20,49,91,.06);\n}\n*{box-sizing:border-box}\nhtml,body{margin:0;height:300%}\nbody{\n  font:16px\/1.45 system-ui, -apple-system, Segoe UI, Roboto, \"Source Sans Pro\", \"Helvetica Neue\", Arial, \"Noto Color Emoji\", \"Segoe UI Emoji\", sans-serif;\n  color:var(--ink);\n  background:var(--bg);\n  -webkit-font-smoothing:antialiased;\n  text-rendering:optimizeLegibility;\n}<\/p>\n<p>.container{max-width:1100px;margin:0 auto;padding:0 20px}<\/p>\n<p>.site-header{\n  position:sticky; top:0; z-index:50;\n  background:#fff; \/* white navbar like requested *\/\n  border-bottom:1px solid #e5e7eb;\n}\n.header-inner{\n  display:flex; align-items:center; justify-content:space-between;\n  height:64px;\n}\n.brand{display:inline-flex; gap:.6rem; align-items:baseline; text-decoration:none; color:var(--AStA)}\n.brand-mark{font-size:22px; line-height:1; margin-right:.1rem}\n.brand-name{font-weight:700; letter-spacing:.2px}\n.brand-sub{font-size:.9rem; color:var(--muted)}<\/p>\n<p>.header-actions .btn{margin-left:.4rem}<\/p>\n<p>.hero{\n  background:radial-gradient(1200px 300px at 50% -50%, rgba(100,164,255,.25), transparent),\n             radial-gradient(800px 200px at 80% 0%, rgba(20,49,91,.07), transparent);\n  border-bottom:1px solid #e5e7eb;\n}\n.hero-inner{padding:40px 0 28px}\n.hero h1{\n  font-size:clamp(28px,4.2vw,44px);\n  line-height:1.1;\n  margin:0 0 .4rem;\n  letter-spacing:.2px;\n  color: #759cd2 !important;\n}\n.hero .highlight{color:var(--AStA); position:relative}\n.hero .highlight::after{\n  content:\"\"; position:absolute; inset:auto 0 -2px 0; height:10px; background:rgba(100,164,255,.35);\n  border-radius:10px; z-index:-1;\n}\n.lead{color:var(--muted); margin:0; max-width:70ch}<\/p>\n<p>.card{\n  background:var(--card);\n  border-radius:var(--radius-lg);\n  box-shadow:var(--shadow);\n  padding:22px;\n  margin:22px 0;\n}<\/p>\n<p>.section-title{font-size:1.25rem; margin:.25rem 0 .5rem}\n.subtle{color:var(--muted); margin:.25rem 0 1rem}<\/p>\n<p>.progress{height:8px; background:#eef2f7; border-radius:99px; overflow:hidden}\n.progress-bar{height:100%; background:linear-gradient(90deg, var(--AStA), var(--accent)); border-radius:inherit; width:0%}<\/p>\n<p>.wizard-head{display:grid; grid-template-columns: 1fr; gap:12px; margin-bottom:8px}\n.wizard-progress-label{color:var(--muted); font-size:.9rem}<\/p>\n<p>.question-root{display:grid; gap:16px}\n.q-title{font-size:1.25rem; margin:.2rem 0;\ncolor: #323267}\n.q-sub{color:var(--muted); margin:0 0 .5rem}<\/p>\n<p>.grid{\n  display:grid;\n  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));\n  gap:14px;\n}\n.option{\n  border-radius:var(--radius-sm);\n  border:1px solid #e5e7eb;\n  background:#fff;\n  box-shadow:var(--shadow-soft);\n  padding:14px;\n  display:grid;\n  grid-template-rows: auto 1fr auto;\n  gap:10px;\n  cursor:pointer;\n  transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;\n}\n.option:hover{transform:translateY(-1px); box-shadow:0 8px 18px rgba(20,49,91,.08)}\n.option[aria-checked=\"true\"]{border-color:var(--AStA); box-shadow:0 0 0 3px rgba(100,164,255,.25), var(--shadow-soft)}\n.option .icon{\n  display:grid; place-items:center;\n  width:56px; height:56px; border-radius:14px;\n  background:linear-gradient(160deg, rgba(20,49,91,.06), rgba(100,164,255,.10));\n  color:var(--AStA);\n}\n.option .label{font-weight:600}\n.option .hint{color:var(--muted); font-size:.9rem}<\/p>\n<p>.badge{font-size:.75rem; color:var(--AStA); background:rgba(100,164,255,.18); padding:.15rem .5rem; border-radius:10px}<\/p>\n<p>.wizard-actions{display:flex; gap:10px; align-items:center; margin-top:6px}\n.wizard-actions .spacer{flex:1}<\/p>\n<p>.btn{\n  appearance:none; border:1px solid #e5e7eb; background:#fff; color:var(--ink);\n  padding:.6rem .9rem; border-radius:12px; font-weight:600; cursor:pointer;\n  transition:transform .06s ease, box-shadow .15s ease, border-color .15s ease, background .15s ease;\n  box-shadow:var(--shadow-soft);\n}\n.btn:hover{transform:translateY(-1px)}\n.btn:active{transform:translateY(0)}\n.btn.primary{background:var(--AStA); color:#fff; border-color:var(--AStA)}\n.btn.primary:disabled{background:#a4b4cf; border-color:#a4b4cf; cursor:not-allowed}\n.btn.ghost{background:#fff; color:var(--AStA); border-color:#cfd6e2}<\/p>\n<p>.chip{\n  display:inline-flex; align-items:center; gap:.35rem;\n  padding:.35rem .65rem; border-radius:999px; border:1px solid #d8dee7; background:var(--chip);\n  font-weight:600; color:#0a1220; box-shadow:var(--shadow-soft);\n}\n.chip .x{cursor:pointer; opacity:.7; font-weight:900}\n.chip + .chip{margin-left:.35rem}<\/p>\n<p>.chip-grid{display:flex; flex-wrap:wrap; gap:.5rem}<\/p>\n<p>.empty-state .hint{color:var(--muted)}<\/p>\n<p>.actions-row{display:flex; gap:10px; align-items:center; margin-top:10px}<\/p>\n<p>.site-footer{margin:36px 0 50px; color:var(--muted)}\n.foot-grid{display:flex; justify-content:space-between; align-items:center}\n.link{color:var(--AStA); text-decoration:underline; text-underline-offset:3px}<\/p>\n<p>.hidden{display:none !important}<\/p>\n<p>@media (min-width: 900px){\n  .wizard-head{grid-template-columns: 170px 1fr; align-items:center}\n}\n<\/style>\n<p><\/head><\/p>\n<div style=\"height: 150vh;\">\n  <!-- Header: white navbar --><\/p>\n<header class=\"site-header\" role=\"banner\">\n<div class=\"container header-inner\">\n      <a class=\"brand\" href=\"#\" aria-label=\"AStA start\"><br \/>\n        <span class=\"brand-mark\" aria-hidden=\"true\">\u2301<\/span><br \/>\n        <span class=\"brand-name\">AStA<\/span><br \/>\n        <span class=\"brand-sub\">entdeckertour<\/span><br \/>\n      <\/a><\/p>\n<nav class=\"header-actions\" aria-label=\"Seitenaktionen\">\n        <button id=\"resetWizard\" class=\"btn ghost\" title=\"Zur\u00fccksetzen\">Zur\u00fccksetzen<\/button><br \/>\n      <\/nav>\n<\/p><\/div>\n<\/header>\n<p>  <!-- Hero --><\/p>\n<section class=\"hero\">\n<div class=\"container hero-inner\">\n<h1>AStA <span class=\"highlight\">Entdeckertour:<\/span> Finde deine Themen<\/h1>\n<p class=\"lead\">\n        Kurze, indirekte Fragen. Am Ende bekommst du <strong> deine pers\u00f6nlichen Empfehlungen<\/strong>\n      <\/p>\n<\/p><\/div>\n<\/section>\n<p>  <main class=\"container\"><br \/>\n    <!-- Wizard card --><\/p>\n<section id=\"wizard\" class=\"card\">\n<div class=\"wizard-head\">\n<div id=\"progressLabel\" class=\"wizard-progress-label\" aria-live=\"polite\">Frage 1<\/div>\n<div class=\"progress\" aria-hidden=\"true\">\n<div id=\"progressBar\" class=\"progress-bar\" style=\"width: 0%\"><\/div>\n<\/div><\/div>\n<div id=\"questionRoot\" class=\"question-root\" aria-live=\"polite\"><\/div>\n<div class=\"wizard-actions\">\n        <button id=\"backBtn\" class=\"btn ghost\" disabled>Zur\u00fcck<\/button><\/p>\n<div class=\"spacer\"><\/div>\n<p>        <button id=\"skipBtn\" class=\"btn ghost\">\u00dcberspringen<\/button><br \/>\n        <button id=\"nextBtn\" class=\"btn primary\" disabled>Weiter<\/button>\n      <\/div>\n<\/section>\n<p>    <!-- Recommendations --><\/p>\n<section id=\"results\" class=\"card hidden\" aria-live=\"polite\">\n<h2 class=\"section-title\">Empfohlene Themen<\/h2>\n<p class=\"subtle\">Basierend auf deinen Antworten. Du kannst jederzeit nachjustieren.<\/p>\n<div id=\"recommendations\" class=\"chip-grid\"><\/div>\n<div class=\"stack actions-row\">\n        <button id=\"addAllBtn\" class=\"btn primary\">Alle hinzuf\u00fcgen<\/button><br \/>\n        <button id=\"replayBtn\" class=\"btn\">Nochmal durchgehen<\/button>\n      <\/div>\n<\/section>\n<p>    <!-- My topics --><\/p>\n<section id=\"mine\" class=\"card\">\n<h2 class=\"section-title\">Meine Themen<\/h2>\n<p class=\"subtle\">Diese Liste wird <strong>nur lokal<\/strong> in deinem Browser gespeichert.<\/p>\n<div id=\"myTopics\" class=\"chip-grid empty-state\">\n        <span class=\"hint\">Noch nichts ausgew\u00e4hlt. Beantworte die Fragen oder tippe auf Chips.<\/span>\n      <\/div>\n<\/section>\n<p>  <\/main><\/p>\n<footer class=\"site-footer\">\n<div class=\"container foot-grid\">\n<div>\n        <strong>AStA Entdeckertour<\/strong><br \/>\n        Demo \u2013 lokal, ohne Tracking\n      <\/div>\n<div class=\"foot-links\">\n        <a href=\"#\" id=\"exportBtn\" class=\"link\">Exportieren<\/a><br \/>\n        <a href=\"#\" id=\"importBtn\" class=\"link\">Importieren<\/a>\n      <\/div>\n<\/p><\/div>\n<\/footer>\n<p>  <script>\/* AStA Entdeckertour v3 \u2013 improved questions, white navbar, local storage *\/\n(() => {\n  const topics = [\n    'KI\/ML','Security','Developer','Mobile','Netzpolitik','Wirtschaft',\n    'Audio\/Video','Wissenschaft','Auto\/Tech','Gaming','Linux & Open Source',\n    'Apple','Microsoft','Gadgets','Smart Home','Cloud','Data\/Analytics',\n    'Startups','eGovernment','Green Tech'\n  ];<\/p>\n<p>  const icons = {\n    laptop: `<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M5 5h14a1 1 0 0 1 1 1v9H4V6a1 1 0 0 1 1-1zm-3 12h20v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1z\"\/><\/svg>`,\n    shield: `<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M12 2l7 3v6c0 5-3.5 9.74-7 11-3.5-1.26-7-6-7-11V5l7-3z\"\/><\/svg>`,\n    code: `<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M9.4 16.6L5.8 13l3.6-3.6L8 8l-5 5 5 5 1.4-1.4zm5.2 0L18.2 13l-3.6-3.6L16 8l5 5-5 5-1.4-1.4z\"\/><\/svg>`,\n    phone: `<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M7 2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zm5 18a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\"\/><\/svg>`,\n    cloud: `<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M6 19h11a4 4 0 1 0-.9-7.9A5.5 5.5 0 0 0 6 9a4 4 0 0 0 0 10z\"\/><\/svg>`,\n    chip: `<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M9 3V1h2v2h2V1h2v2h2a2 2 0 0 1 2 2v2h2v2h-2v2h2v2h-2v2a2 2 0 0 1-2 2h-2v2h-2v-2h-2v2H9v-2H7a2 2 0 0 1-2-2v-2H3v-2h2V9H3V7h2V5a2 2 0 0 1 2-2h2zm-2 6v6h10V9H7z\"\/><\/svg>`,\n    lock: `<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M17 8h-1V6a4 4 0 0 0-8 0v2H7a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2zm-6 6.73V17h2v-2.27a2 2 0 1 0-2 0zM9 8V6a3 3 0 0 1 6 0v2H9z\"\/><\/svg>`,\n    bulb: `<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M9 21h6v-1H9v1zm9-10a6 6 0 1 0-10.24 4.24c.35.35.69.82.88 1.33L9 18h6l.36-1.43c.19-.5.53-.98.88-1.33A6 6 0 0 0 18 11z\"\/><\/svg>`,\n    gamepad:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M6 14l3-2h6l3 2 2 4-3 1-3-2H9l-3 2-3-1 2-4zm1-4h2V8h2V6h-2V4H7v2H5v2h2v2z\"\/><\/svg>`,\n    car:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M5 11l1.5-4.5A2 2 0 0 1 8.4 5h7.2a2 2 0 0 1 1.9 1.5L19 11v6h-2a2 2 0 1 1-4 0H11a2 2 0 1 1-4 0H5v-6h0zm2 .5h10l-.9-2.7a1 1 0 0 0-.95-.8H8.85a1 1 0 0 0-.95.8L7 11.5z\"\/><\/svg>`,\n    home:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M12 3l9 8h-3v8h-5v-5H11v5H6v-8H3l9-8z\"\/><\/svg>`,\n    apple:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M16.5 13.5a4.5 4.5 0 0 1 2 3.8c0 3-2.6 5.7-4.8 5.7-1 .02-1.8-.3-2.7-.3s-1.8.3-2.8.3C5.7 23 3 20.3 3 17.1c0-1.8.9-3.6 2.3-4.7 1.2-1 2.2-1.4 3.5-1.4 1 0 1.9.3 2.7.3.8 0 1.7-.4 2.8-.4 1 0 2 .3 3.2 1.6zM14.7 1c.2 1.5-.7 3-1.9 4-1 .8-2.3 1.3-3.6 1.2-.2-1.4.7-2.8 1.8-3.7C11.9 1.6 13.3 1 14.7 1z\"\/><\/svg>`,\n    windows:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M3 4l8-1v9H3V4zm18 0v9h-9V4l9-1zM3 12h8v9l-8-1v-8zm10 0h8v8l-8 1v-9z\"\/><\/svg>`,\n    penguin:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M12 2c2.5 0 4 2 4 5 1.7.2 3 1.8 3 3.5S18.7 14 17 14v6H7v-6c-1.7 0-3-1.5-3-3.5S5.3 7.2 7 7c0-3 1.5-5 5-5z\"\/><\/svg>`,\n    android:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M7 7h10v10H7V7zm-2 2h2v6H5V9zm14 0v6h-2V9h2zM9 19h6v2H9v-2zM9 3l1.5 2m3-2L15 5\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\"\/><\/svg>`,\n    db:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><ellipse cx=\"12\" cy=\"5\" rx=\"7\" ry=\"3\" fill=\"currentColor\"\/><path d=\"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5\" fill=\"currentColor\" opacity=\".5\"\/><path d=\"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6\" fill=\"currentColor\" opacity=\".35\"\/><\/svg>`,\n    globe:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1 2c-3.8.5-7 3.8-7.5 7.6L7 12l2 2v2l3 3 2-1 2-3v-2l2-2-2-2-3 1-2-2-1-3z\"\/><\/svg>`,\n    science:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M8 2h8v2l-3 5v4l5 7H6l5-7V9L8 4V2z\"\/><\/svg>`,\n    camera:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M4 7h4l2-2h4l2 2h4v12H4V7zm8 3a4 4 0 1 0 0 8 4 4 0 0 0 0-8z\"\/><\/svg>`,\n    spark:`<svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\"><path fill=\"currentColor\" d=\"M12 2l2 6 6 2-6 2-2 6-2-6-6-2 6-2 2-6z\"\/><\/svg>`\n  };<\/p>\n<p>  \/\/ Question set (indirect, sensible, with images)\n  const questions = [\n    {\n      id: 'role',\n      title: 'Wie nutzt du Tech im Alltag?',\n      sub: 'W\u00e4hle, was dich am besten beschreibt.',\n      type: 'single',\n      options: [\n        { id: 'builder', label: 'Ich baue\/entwickle', hint: 'Code, Admin, Data', icon: 'code',\n          weights: { 'Developer': 3, 'Cloud': 2, 'Linux & Open Source': 2, 'Data\/Analytics': 2 } },\n        { id: 'security', label: 'Ich sichere Systeme', hint: 'SecOps, Risiko', icon: 'shield',\n          weights: { 'Security': 4, 'Netzpolitik': 1 } },\n        { id: 'leader', label: 'Ich entscheide', hint: 'Strategie & Budget', icon: 'bulb',\n          weights: { 'Wirtschaft': 2, 'Cloud': 2, 'KI\/ML': 1, 'Green Tech': 1 } },\n        { id: 'enthusiast', label: 'Ich entdecke privat', hint: 'Gadgets, Tests', icon: 'chip',\n          weights: { 'Gadgets': 3, 'Apple': 1, 'Microsoft': 1, 'Mobile': 2, 'Gaming': 1, 'Smart Home': 2 } }\n      ]\n    },\n    {\n      id: 'stack',\n      title: 'Welches Setup pr\u00e4gt dich aktuell?',\n      sub: 'Mehrfachauswahl m\u00f6glich.',\n      type: 'multi',\n      options: [\n        { id: 'apple', label: 'Apple \/ iOS \/ macOS', hint: 'Mac, iPhone, iPad', icon: 'apple',\n          weights: { 'Apple': 3, 'Mobile': 1, 'Audio\/Video': 1 } },\n        { id: 'windows', label: 'Windows \/ Surface \/ Xbox', hint: 'PC, Gaming', icon: 'windows',\n          weights: { 'Microsoft': 3, 'Gaming': 1, 'Developer': 1 } },\n        { id: 'linux', label: 'Linux \/ Open Source', hint: 'Desktop & Server', icon: 'penguin',\n          weights: { 'Linux & Open Source': 3, 'Developer': 1, 'Security': 1 } },\n        { id: 'android', label: 'Android \/ WearOS', hint: 'Phones & Wearables', icon: 'android',\n          weights: { 'Mobile': 2, 'Gadgets': 1 } },\n        { id: 'cloud', label: 'Cloud \/ Kubernetes', hint: 'Ops & Scale', icon: 'cloud',\n          weights: { 'Cloud': 3, 'Security': 1, 'Data\/Analytics': 1 } }\n      ]\n    },\n    {\n      id: 'formats',\n      title: 'Welche Formate magst du?',\n      sub: 'Das hilft bei Tiefe & Tonalit\u00e4t.',\n      type: 'multi',\n      options: [\n        { id: 'news', label: 'Kurz-News & Ticker', hint: 'Schnell informiert', icon: 'globe',\n          weights: { 'Netzpolitik': 1, 'Wirtschaft': 1 } },\n        { id: 'analysis', label: 'Analysen & Hintergr\u00fcnde', hint: 'Kontext & Einordnung', icon: 'science',\n          weights: { 'Wirtschaft': 1, 'Netzpolitik': 1, 'KI\/ML': 1 } },\n        { id: 'howto', label: 'How-tos & Praxis', hint: 'Schritt f\u00fcr Schritt', icon: 'laptop',\n          weights: { 'Developer': 1, 'Smart Home': 1, 'Linux & Open Source': 1 } },\n        { id: 'reviews', label: 'Tests & Reviews', hint: 'Kaufberatung', icon: 'camera',\n          weights: { 'Gadgets': 2, 'Mobile': 1, 'Audio\/Video': 1 } }\n      ]\n    },\n    {\n      id: 'interests',\n      title: 'Welche Felder triggern dich spontan?',\n      sub: 'So spontan wie m\u00f6glich \u2013 Bauchgef\u00fchl z\u00e4hlt.',\n      type: 'multi',\n      options: [\n        { id: 'ai', label: 'KI & Machine Learning', hint: 'Modelle, Tools, Auswirkungen', icon: 'spark',\n          weights: { 'KI\/ML': 4, 'Data\/Analytics': 2 } },\n        { id: 'privacy', label: 'Datenschutz & Sicherheit', hint: 'DSGVO, Angriffe, Abwehr', icon: 'lock',\n          weights: { 'Security': 3, 'Netzpolitik': 1 } },\n        { id: 'cars', label: 'Auto & Mobilit\u00e4t', hint: 'E-Autos, Infotainment', icon: 'car',\n          weights: { 'Auto\/Tech': 3, 'Green Tech': 1 } },\n        { id: 'home', label: 'Smart Home', hint: 'Automation, Matter, Energie', icon: 'home',\n          weights: { 'Smart Home': 3, 'Green Tech': 1 } },\n        { id: 'games', label: 'Spiele & Hardware', hint: 'PC, Konsole, Indie', icon: 'gamepad',\n          weights: { 'Gaming': 3, 'Audio\/Video': 1 } },\n        { id: 'research', label: 'Wissenschaft & Raumfahrt', hint: 'Breakthroughs, Missionen', icon: 'science',\n          weights: { 'Wissenschaft': 3 } }\n      ]\n    },\n    {\n      id: 'avoid',\n      title: 'Gibt es etwas, das dich wenig interessiert?',\n      sub: 'Damit wir es herunterregeln.',\n      type: 'multi',\n      options: [\n        { id: 'no_gadgets', label: 'Weniger Gadgets', hint: 'Weniger Kaufkram', icon: 'chip', weights: { 'Gadgets': -3 } },\n        { id: 'no_politics', label: 'Weniger Netzpolitik', hint: 'Regulierung eher selten', icon: 'globe', weights: { 'Netzpolitik': -3 } },\n        { id: 'no_gaming', label: 'Weniger Gaming', hint: 'Spiele sind mir egal', icon: 'gamepad', weights: { 'Gaming': -3 } },\n        { id: 'no_auto', label: 'Weniger Auto\/Tech', hint: 'Kaum E-Auto-Themen', icon: 'car', weights: { 'Auto\/Tech': -3 } }\n      ]\n    }\n  ];<\/p>\n<p>  \/\/ --- State\n  const state = {\n    index: 0,\n    answers: {}, \/\/ id -> Set of selected option ids\n    scores: {},  \/\/ topic -> number\n    recs: []\n  };<\/p>\n<p>  const els = {\n    root: document.getElementById('questionRoot'),\n    progressBar: document.getElementById('progressBar'),\n    progressLabel: document.getElementById('progressLabel'),\n    next: document.getElementById('nextBtn'),\n    back: document.getElementById('backBtn'),\n    skip: document.getElementById('skipBtn'),\n    reset: document.getElementById('resetWizard'),\n    resultsCard: document.getElementById('results'),\n    recs: document.getElementById('recommendations'),\n    addAll: document.getElementById('addAllBtn'),\n    replay: document.getElementById('replayBtn'),\n    my: document.getElementById('myTopics'),\n    exportBtn: document.getElementById('exportBtn'),\n    importBtn: document.getElementById('importBtn')\n  };<\/p>\n<p>  \/\/ Utilities\n  const qs = () => questions[state.index];\n  const pct = () => ((state.index) \/ questions.length) * 100;\n  const clamp = (x, a, b) => Math.max(a, Math.min(b, x));<\/p>\n<p>  function loadMine(){\n    const stored = JSON.parse(localStorage.getItem('AStA.mine') || '[]');\n    renderMine(stored);\n  }\n  function saveMine(list){\n    const unique = Array.from(new Set(list));\n    localStorage.setItem('AStA.mine', JSON.stringify(unique));\n    renderMine(unique);\n  }<\/p>\n<p>  function renderMine(list){\n    els.my.innerHTML = '';\n    if(!list.length){\n      els.my.classList.add('empty-state');\n      els.my.innerHTML = `<span class=\"hint\">Noch nichts ausgew\u00e4hlt. Beantworte die Fragen oder tippe auf Chips.<\/span>`;\n      return;\n    }\n    els.my.classList.remove('empty-state');\n    list.forEach(t => {\n      const chip = document.createElement('span');\n      chip.className = 'chip';\n      chip.innerHTML = `${t} <span class=\"x\" role=\"button\" aria-label=\"${t} entfernen\">\u00d7<\/span>`;\n      chip.querySelector('.x').addEventListener('click', () => {\n        saveMine(list.filter(x => x !== t));\n      });\n      els.my.appendChild(chip);\n    });\n  }<\/p>\n<p>  function icon(name){\n    const wrap = document.createElement('div');\n    wrap.className = 'icon';\n    wrap.innerHTML = icons[name] || icons['chip'];\n    return wrap;\n  }<\/p>\n<p>  function renderQuestion(){\n    const q = qs();\n    if(!q){ return; }<\/p>\n<p>    \/\/ progress\n    const shown = clamp(state.index, 0, questions.length-1) + 1;\n    els.progressLabel.textContent = `Frage ${shown} von ${questions.length}`;\n    els.progressBar.style.width = `${clamp(pct(),0,100)}%`;<\/p>\n<p>    \/\/ content\n    els.root.innerHTML = '';\n    const h = document.createElement('h2'); h.className='q-title'; h.textContent = q.title;\n    const sub = document.createElement('p'); sub.className='q-sub'; sub.textContent = q.sub || '';\n    els.root.append(h, sub);<\/p>\n<p>    const grid = document.createElement('div'); grid.className = 'grid';\n    els.root.appendChild(grid);<\/p>\n<p>    const selected = new Set(state.answers[q.id] || []);<\/p>\n<p>    q.options.forEach(opt => {\n      const card = document.createElement('button');\n      card.type = 'button';\n      card.className = 'option';\n      card.setAttribute('role', q.type === 'multi' ? 'checkbox' : 'radio');\n      card.setAttribute('aria-checked', selected.has(opt.id) ? 'true' : 'false');\n      card.addEventListener('click', () => {\n        if(q.type === 'single'){\n          selected.clear();\n          selected.add(opt.id);\n        } else {\n          if(selected.has(opt.id)) selected.delete(opt.id);\n          else selected.add(opt.id);\n        }\n        state.answers[q.id] = Array.from(selected);\n        \/\/ Update aria\n        grid.querySelectorAll('.option').forEach(el => el.setAttribute('aria-checked','false'));\n        Array.from(grid.children).forEach((el, idx) => {\n          const o = q.options[idx];\n          if(selected.has(o.id)) el.setAttribute('aria-checked','true');\n        });\n        els.next.disabled = selected.size === 0;\n      });<\/p>\n<p>      \/\/ build content\n      const ic = icon(opt.icon);\n      const label = document.createElement('div'); label.className='label'; label.textContent = opt.label;\n      const hint = document.createElement('div'); hint.className='hint'; hint.textContent = opt.hint || '';<\/p>\n<p>      card.append(ic, label, hint);<\/p>\n<p>      grid.appendChild(card);\n    });<\/p>\n<p>    \/\/ nav buttons\n    els.back.disabled = state.index === 0;\n    els.next.textContent = state.index === questions.length - 1 ? 'Fertig' : 'Weiter';\n    els.next.disabled = selected.size === 0;\n  }<\/p>\n<p>  function next(){\n    if(state.index < questions.length - 1){\n      state.index++; renderQuestion();\n    } else {\n      \/\/ compute\n      compute();\n      showResults();\n    }\n  }\n  function back(){\n    if(state.index > 0){ state.index--; renderQuestion(); }\n  }\n  function skip(){\n    if(!state.answers[qs().id]) state.answers[qs().id] = [];\n    next();\n  }<\/p>\n<p>  function compute(){\n    \/\/ init\n    state.scores = {}; topics.forEach(t => state.scores[t] = 0);\n    for(const q of questions){\n      const picked = state.answers[q.id] || [];\n      for(const pid of picked){\n        const opt = q.options.find(o => o.id === pid);\n        if(!opt) continue;\n        for(const [topic, w] of Object.entries(opt.weights || {})){\n          state.scores[topic] = (state.scores[topic] || 0) + w;\n        }\n      }\n    }\n    \/\/ normalize positive topics and sort\n    const entries = Object.entries(state.scores)\n      .filter(([,s]) => s !== 0)\n      .sort((a,b) => b[1] - a[1]);\n    state.recs = entries.slice(0, 12).map(([t]) => t);\n  }<\/p>\n<p>  function showResults(){\n    \/\/ chips\n    els.recs.innerHTML = '';\n    if(state.recs.length === 0){\n      els.recs.innerHTML = `<span class=\"hint\">Keine klare Tendenz \u2013 probier es nochmal oder f\u00fcge manuell Themen hinzu.<\/span>`;\n    } else {\n      state.recs.forEach(t => {\n        const chip = document.createElement('span');\n        chip.className = 'chip';\n        chip.innerHTML = `${t} <span class=\"x\" role=\"button\" aria-label=\"${t} hinzuf\u00fcgen\">+<\/span>`;\n        chip.addEventListener('click', () => {\n          const mine = JSON.parse(localStorage.getItem('AStA.mine') || '[]');\n          mine.push(t); saveMine(mine);\n        });\n        els.recs.appendChild(chip);\n      });\n    }\n    \/\/ toggle\n    els.resultsCard.classList.remove('hidden');\n    \/\/ scroll into view\n    els.resultsCard.scrollIntoView({behavior:'smooth', block:'center'});\n  }<\/p>\n<p>  \/\/ Export\/Import\n  function exportMine(e){\n    e.preventDefault();\n    const data = {\n      topics: JSON.parse(localStorage.getItem('AStA.mine') || '[]'),\n      answers: state.answers\n    };\n    const blob = new Blob([JSON.stringify(data, null, 2)], {type:'application\/json'});\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url; a.download = 'AStA-entdeckertour-export.json';\n    a.click();\n    URL.revokeObjectURL(url);\n  }\n  function importMine(e){\n    e.preventDefault();\n    const input = document.createElement('input');\n    input.type='file'; input.accept='application\/json';\n    input.addEventListener('change', () => {\n      const file = input.files?.[0]; if(!file) return;\n      const reader = new FileReader();\n      reader.onload = () => {\n        try{\n          const data = JSON.parse(reader.result);\n          if(Array.isArray(data.topics)) saveMine(data.topics);\n          if(data.answers && typeof data.answers === 'object') state.answers = data.answers;\n          \/\/ Re-render current screen to reflect restored answers\n          renderQuestion();\n        }catch(err){ alert('Konnte die Datei nicht lesen.'); }\n      };\n      reader.readAsText(file);\n    });\n    input.click();\n  }<\/p>\n<p>  \/\/ Actions\n  els.next.addEventListener('click', next);\n  els.back.addEventListener('click', back);\n  els.skip.addEventListener('click', skip);\n  els.reset.addEventListener('click', () => {\n    if(confirm('Alles zur\u00fccksetzen?')){\n      state.index = 0; state.answers = {}; state.scores = {}; state.recs = [];\n      els.resultsCard.classList.add('hidden');\n      renderQuestion();\n    }\n  });\n  els.addAll.addEventListener('click', () => {\n    const mine = JSON.parse(localStorage.getItem('AStA.mine') || '[]');\n    saveMine(mine.concat(state.recs));\n  });\n  els.replay.addEventListener('click', () => {\n    state.index = 0; renderQuestion(); document.getElementById('wizard').scrollIntoView({behavior:'smooth'});\n  });\n  els.exportBtn.addEventListener('click', exportMine);\n  els.importBtn.addEventListener('click', importMine);<\/p>\n<p>  \/\/ Startup\n  loadMine();\n  renderQuestion();\n})();\n<\/script>\n<\/div>\n<\/div>\n<p><!--more--><br \/>\n<!-- {\"type\":\"layout\",\"children\":[{\"type\":\"section\",\"props\":{\"css\":\".el-section {\\n  background-color: #fff;\\n   height: 2000px;\\n}\",\"height\":\"viewport\",\"height_viewport\":5010,\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"\\n<head>\\n  <meta charset=\\\"utf-8\\\" \\\/>\\n  <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\" \\\/>\\n  <title>AStA Entdeckertour \\u00b7 Themen-Finder<\\\/title>\\n  <meta name=\\\"description\\\" content=\\\"Finde deine AStA-Themen mit ein paar indirekten, sinnvollen Fragen. Lokal & ohne Tracking.\\\" \\\/>\\n  <link rel=\\\"icon\\\" href=\\\"data:image\\\/svg+xml,<svg xmlns='http:\\\/\\\/www.w3.org\\\/2000\\\/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>\\u2301<\\\/text><\\\/svg>\\\">\\n  <link rel=\\\"stylesheet\\\" href=\\\"styles.css\\\" \\\/>\\n\\n\\n\\n  \n\n<style>\\\/* AStA Entdeckertour v3 \\u2013 clean AStA-like look, white navbar *\\\/\\n:root{\\n  --AStA:#14315b;\\n  --accent:#64a4ff;\\n  --brand:#6f7d93;\\n  --ink:#242b33;\\n  --muted:#6b7280;\\n  --bg:#f6f7f9;\\n  --card:#ffffff;\\n  --chip:#eff2f6;\\n  --ok:#0ea5e9;\\n  --radius-lg:20px;\\n  --radius-sm:12px;\\n  --shadow:0 10px 25px rgba(20,49,91,.08), 0 2px 8px rgba(20,49,91,.06);\\n  --shadow-soft:0 2px 10px rgba(20,49,91,.06);\\n}\\n*{box-sizing:border-box}\\nhtml,body{margin:0;height:300%}\\nbody{\\n  font:16px\\\/1.45 system-ui, -apple-system, Segoe UI, Roboto, \\\"Source Sans Pro\\\", \\\"Helvetica Neue\\\", Arial, \\\"Noto Color Emoji\\\", \\\"Segoe UI Emoji\\\", sans-serif;\\n  color:var(--ink);\\n  background:var(--bg);\\n  -webkit-font-smoothing:antialiased;\\n  text-rendering:optimizeLegibility;\\n}\\n\\n.container{max-width:1100px;margin:0 auto;padding:0 20px}\\n\\n.site-header{\\n  position:sticky; top:0; z-index:50;\\n  background:#fff; \\\/* white navbar like requested *\\\/\\n  border-bottom:1px solid #e5e7eb;\\n}\\n.header-inner{\\n  display:flex; align-items:center; justify-content:space-between;\\n  height:64px;\\n}\\n.brand{display:inline-flex; gap:.6rem; align-items:baseline; text-decoration:none; color:var(--AStA)}\\n.brand-mark{font-size:22px; line-height:1; margin-right:.1rem}\\n.brand-name{font-weight:700; letter-spacing:.2px}\\n.brand-sub{font-size:.9rem; color:var(--muted)}\\n\\n.header-actions .btn{margin-left:.4rem}\\n\\n.hero{\\n  background:radial-gradient(1200px 300px at 50% -50%, rgba(100,164,255,.25), transparent),\\n             radial-gradient(800px 200px at 80% 0%, rgba(20,49,91,.07), transparent);\\n  border-bottom:1px solid #e5e7eb;\\n}\\n.hero-inner{padding:40px 0 28px}\\n.hero h1{\\n  font-size:clamp(28px,4.2vw,44px);\\n  line-height:1.1;\\n  margin:0 0 .4rem;\\n  letter-spacing:.2px;\\n  color: #759cd2 !important;\\n}\\n.hero .highlight{color:var(--AStA); position:relative}\\n.hero .highlight::after{\\n  content:\\\"\\\"; position:absolute; inset:auto 0 -2px 0; height:10px; background:rgba(100,164,255,.35);\\n  border-radius:10px; z-index:-1;\\n}\\n.lead{color:var(--muted); margin:0; max-width:70ch}\\n\\n.card{\\n  background:var(--card);\\n  border-radius:var(--radius-lg);\\n  box-shadow:var(--shadow);\\n  padding:22px;\\n  margin:22px 0;\\n}\\n\\n.section-title{font-size:1.25rem; margin:.25rem 0 .5rem}\\n.subtle{color:var(--muted); margin:.25rem 0 1rem}\\n\\n.progress{height:8px; background:#eef2f7; border-radius:99px; overflow:hidden}\\n.progress-bar{height:100%; background:linear-gradient(90deg, var(--AStA), var(--accent)); border-radius:inherit; width:0%}\\n\\n.wizard-head{display:grid; grid-template-columns: 1fr; gap:12px; margin-bottom:8px}\\n.wizard-progress-label{color:var(--muted); font-size:.9rem}\\n\\n.question-root{display:grid; gap:16px}\\n.q-title{font-size:1.25rem; margin:.2rem 0;\\ncolor: #323267}\\n.q-sub{color:var(--muted); margin:0 0 .5rem}\\n\\n.grid{\\n  display:grid;\\n  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));\\n  gap:14px;\\n}\\n.option{\\n  border-radius:var(--radius-sm);\\n  border:1px solid #e5e7eb;\\n  background:#fff;\\n  box-shadow:var(--shadow-soft);\\n  padding:14px;\\n  display:grid;\\n  grid-template-rows: auto 1fr auto;\\n  gap:10px;\\n  cursor:pointer;\\n  transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;\\n}\\n.option:hover{transform:translateY(-1px); box-shadow:0 8px 18px rgba(20,49,91,.08)}\\n.option[aria-checked=\\\"true\\\"]{border-color:var(--AStA); box-shadow:0 0 0 3px rgba(100,164,255,.25), var(--shadow-soft)}\\n.option .icon{\\n  display:grid; place-items:center;\\n  width:56px; height:56px; border-radius:14px;\\n  background:linear-gradient(160deg, rgba(20,49,91,.06), rgba(100,164,255,.10));\\n  color:var(--AStA);\\n}\\n.option .label{font-weight:600}\\n.option .hint{color:var(--muted); font-size:.9rem}\\n\\n.badge{font-size:.75rem; color:var(--AStA); background:rgba(100,164,255,.18); padding:.15rem .5rem; border-radius:10px}\\n\\n.wizard-actions{display:flex; gap:10px; align-items:center; margin-top:6px}\\n.wizard-actions .spacer{flex:1}\\n\\n.btn{\\n  appearance:none; border:1px solid #e5e7eb; background:#fff; color:var(--ink);\\n  padding:.6rem .9rem; border-radius:12px; font-weight:600; cursor:pointer;\\n  transition:transform .06s ease, box-shadow .15s ease, border-color .15s ease, background .15s ease;\\n  box-shadow:var(--shadow-soft);\\n}\\n.btn:hover{transform:translateY(-1px)}\\n.btn:active{transform:translateY(0)}\\n.btn.primary{background:var(--AStA); color:#fff; border-color:var(--AStA)}\\n.btn.primary:disabled{background:#a4b4cf; border-color:#a4b4cf; cursor:not-allowed}\\n.btn.ghost{background:#fff; color:var(--AStA); border-color:#cfd6e2}\\n\\n.chip{\\n  display:inline-flex; align-items:center; gap:.35rem;\\n  padding:.35rem .65rem; border-radius:999px; border:1px solid #d8dee7; background:var(--chip);\\n  font-weight:600; color:#0a1220; box-shadow:var(--shadow-soft);\\n}\\n.chip .x{cursor:pointer; opacity:.7; font-weight:900}\\n.chip + .chip{margin-left:.35rem}\\n\\n.chip-grid{display:flex; flex-wrap:wrap; gap:.5rem}\\n\\n.empty-state .hint{color:var(--muted)}\\n\\n.actions-row{display:flex; gap:10px; align-items:center; margin-top:10px}\\n\\n.site-footer{margin:36px 0 50px; color:var(--muted)}\\n.foot-grid{display:flex; justify-content:space-between; align-items:center}\\n.link{color:var(--AStA); text-decoration:underline; text-underline-offset:3px}\\n\\n.hidden{display:none !important}\\n\\n@media (min-width: 900px){\\n  .wizard-head{grid-template-columns: 170px 1fr; align-items:center}\\n}\\n<\\\/style>\\n\\n<\\\/head>\\n\n\n<div style=\\\"height: 150vh;\\\">\\n  <!-- Header: white navbar -->\\n  <\/p>\n<header class=\\\"site-header\\\" role=\\\"banner\\\">\\n    <\/p>\n<div class=\\\"container header-inner\\\">\\n      <a class=\\\"brand\\\" href=\\\"#\\\" aria-label=\\\"AStA start\\\">\\n        <span class=\\\"brand-mark\\\" aria-hidden=\\\"true\\\">\\u2301<\\\/span>\\n        <span class=\\\"brand-name\\\">AStA<\\\/span>\\n        <span class=\\\"brand-sub\\\">entdeckertour<\\\/span>\\n      <\\\/a>\\n      <\/p>\n<nav class=\\\"header-actions\\\" aria-label=\\\"Seitenaktionen\\\">\\n        <button id=\\\"resetWizard\\\" class=\\\"btn ghost\\\" title=\\\"Zur\\u00fccksetzen\\\">Zur\\u00fccksetzen<\\\/button>\\n      <\\\/nav>\\n    <\\\/div>\\n  <\\\/header>\\n\\n  <!-- Hero -->\\n  <\/p>\n<section class=\\\"hero\\\">\\n    <\/p>\n<div class=\\\"container hero-inner\\\">\\n      <\/p>\n<h1>AStA <span class=\\\"highlight\\\">Entdeckertour:<\\\/span> Finde deine Themen<\\\/h1>\\n      <\/p>\n<p class=\\\"lead\\\">\\n        Kurze, indirekte Fragen. Am Ende bekommst du <strong> deine pers\\u00f6nlichen Empfehlungen<\\\/strong>\\n      <\\\/p>\\n    <\\\/div>\\n  <\\\/section>\\n\\n  <main class=\\\"container\\\">\\n    <!-- Wizard card -->\\n    <\/p>\n<section id=\\\"wizard\\\" class=\\\"card\\\">\\n      <\/p>\n<div class=\\\"wizard-head\\\">\\n        <\/p>\n<div id=\\\"progressLabel\\\" class=\\\"wizard-progress-label\\\" aria-live=\\\"polite\\\">Frage 1<\\\/div>\\n        <\/p>\n<div class=\\\"progress\\\" aria-hidden=\\\"true\\\">\n<div id=\\\"progressBar\\\" class=\\\"progress-bar\\\" style=\\\"width: 0%\\\"><\\\/div><\\\/div>\\n      <\\\/div>\\n\\n      <\/p>\n<div id=\\\"questionRoot\\\" class=\\\"question-root\\\" aria-live=\\\"polite\\\"><\\\/div>\\n\\n      <\/p>\n<div class=\\\"wizard-actions\\\">\\n        <button id=\\\"backBtn\\\" class=\\\"btn ghost\\\" disabled>Zur\\u00fcck<\\\/button>\\n        <\/p>\n<div class=\\\"spacer\\\"><\\\/div>\\n        <button id=\\\"skipBtn\\\" class=\\\"btn ghost\\\">\\u00dcberspringen<\\\/button>\\n        <button id=\\\"nextBtn\\\" class=\\\"btn primary\\\" disabled>Weiter<\\\/button>\\n      <\\\/div>\\n    <\\\/section>\\n\\n    <!-- Recommendations -->\\n    <\/p>\n<section id=\\\"results\\\" class=\\\"card hidden\\\" aria-live=\\\"polite\\\">\\n      <\/p>\n<h2 class=\\\"section-title\\\">Empfohlene Themen<\\\/h2>\\n      <\/p>\n<p class=\\\"subtle\\\">Basierend auf deinen Antworten. Du kannst jederzeit nachjustieren.<\\\/p>\\n      <\/p>\n<div id=\\\"recommendations\\\" class=\\\"chip-grid\\\"><\\\/div>\\n      <\/p>\n<div class=\\\"stack actions-row\\\">\\n        <button id=\\\"addAllBtn\\\" class=\\\"btn primary\\\">Alle hinzuf\\u00fcgen<\\\/button>\\n        <button id=\\\"replayBtn\\\" class=\\\"btn\\\">Nochmal durchgehen<\\\/button>\\n      <\\\/div>\\n    <\\\/section>\\n\\n    <!-- My topics -->\\n    <\/p>\n<section id=\\\"mine\\\" class=\\\"card\\\">\\n      <\/p>\n<h2 class=\\\"section-title\\\">Meine Themen<\\\/h2>\\n      <\/p>\n<p class=\\\"subtle\\\">Diese Liste wird <strong>nur lokal<\\\/strong> in deinem Browser gespeichert.<\\\/p>\\n      <\/p>\n<div id=\\\"myTopics\\\" class=\\\"chip-grid empty-state\\\">\\n        <span class=\\\"hint\\\">Noch nichts ausgew\\u00e4hlt. Beantworte die Fragen oder tippe auf Chips.<\\\/span>\\n      <\\\/div>\\n    <\\\/section>\\n  <\\\/main>\\n\\n  <\/p>\n<footer class=\\\"site-footer\\\">\\n    <\/p>\n<div class=\\\"container foot-grid\\\">\\n      <\/p>\n<div>\\n        <strong>AStA Entdeckertour<\\\/strong><br\\\/>\\n        Demo \\u2013 lokal, ohne Tracking\\n      <\\\/div>\\n      <\/p>\n<div class=\\\"foot-links\\\">\\n        <a href=\\\"#\\\" id=\\\"exportBtn\\\" class=\\\"link\\\">Exportieren<\\\/a>\\n        <a href=\\\"#\\\" id=\\\"importBtn\\\" class=\\\"link\\\">Importieren<\\\/a>\\n      <\\\/div>\\n    <\\\/div>\\n  <\\\/footer>\\n\\n  <script>\\\/* AStA Entdeckertour v3 \\u2013 improved questions, white navbar, local storage *\\\/\\n(() => {\\n  const topics = [\\n    'KI\\\/ML','Security','Developer','Mobile','Netzpolitik','Wirtschaft',\\n    'Audio\\\/Video','Wissenschaft','Auto\\\/Tech','Gaming','Linux & Open Source',\\n    'Apple','Microsoft','Gadgets','Smart Home','Cloud','Data\\\/Analytics',\\n    'Startups','eGovernment','Green Tech'\\n  ];\\n\\n  const icons = {\\n    laptop: `<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\" aria-hidden=\\\"true\\\"><path fill=\\\"currentColor\\\" d=\\\"M5 5h14a1 1 0 0 1 1 1v9H4V6a1 1 0 0 1 1-1zm-3 12h20v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1z\\\"\\\/><\\\/svg>`,\\n    shield: `<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M12 2l7 3v6c0 5-3.5 9.74-7 11-3.5-1.26-7-6-7-11V5l7-3z\\\"\\\/><\\\/svg>`,\\n    code: `<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M9.4 16.6L5.8 13l3.6-3.6L8 8l-5 5 5 5 1.4-1.4zm5.2 0L18.2 13l-3.6-3.6L16 8l5 5-5 5-1.4-1.4z\\\"\\\/><\\\/svg>`,\\n    phone: `<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M7 2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zm5 18a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z\\\"\\\/><\\\/svg>`,\\n    cloud: `<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M6 19h11a4 4 0 1 0-.9-7.9A5.5 5.5 0 0 0 6 9a4 4 0 0 0 0 10z\\\"\\\/><\\\/svg>`,\\n    chip: `<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M9 3V1h2v2h2V1h2v2h2a2 2 0 0 1 2 2v2h2v2h-2v2h2v2h-2v2a2 2 0 0 1-2 2h-2v2h-2v-2h-2v2H9v-2H7a2 2 0 0 1-2-2v-2H3v-2h2V9H3V7h2V5a2 2 0 0 1 2-2h2zm-2 6v6h10V9H7z\\\"\\\/><\\\/svg>`,\\n    lock: `<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M17 8h-1V6a4 4 0 0 0-8 0v2H7a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2zm-6 6.73V17h2v-2.27a2 2 0 1 0-2 0zM9 8V6a3 3 0 0 1 6 0v2H9z\\\"\\\/><\\\/svg>`,\\n    bulb: `<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M9 21h6v-1H9v1zm9-10a6 6 0 1 0-10.24 4.24c.35.35.69.82.88 1.33L9 18h6l.36-1.43c.19-.5.53-.98.88-1.33A6 6 0 0 0 18 11z\\\"\\\/><\\\/svg>`,\\n    gamepad:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M6 14l3-2h6l3 2 2 4-3 1-3-2H9l-3 2-3-1 2-4zm1-4h2V8h2V6h-2V4H7v2H5v2h2v2z\\\"\\\/><\\\/svg>`,\\n    car:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M5 11l1.5-4.5A2 2 0 0 1 8.4 5h7.2a2 2 0 0 1 1.9 1.5L19 11v6h-2a2 2 0 1 1-4 0H11a2 2 0 1 1-4 0H5v-6h0zm2 .5h10l-.9-2.7a1 1 0 0 0-.95-.8H8.85a1 1 0 0 0-.95.8L7 11.5z\\\"\\\/><\\\/svg>`,\\n    home:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M12 3l9 8h-3v8h-5v-5H11v5H6v-8H3l9-8z\\\"\\\/><\\\/svg>`,\\n    apple:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M16.5 13.5a4.5 4.5 0 0 1 2 3.8c0 3-2.6 5.7-4.8 5.7-1 .02-1.8-.3-2.7-.3s-1.8.3-2.8.3C5.7 23 3 20.3 3 17.1c0-1.8.9-3.6 2.3-4.7 1.2-1 2.2-1.4 3.5-1.4 1 0 1.9.3 2.7.3.8 0 1.7-.4 2.8-.4 1 0 2 .3 3.2 1.6zM14.7 1c.2 1.5-.7 3-1.9 4-1 .8-2.3 1.3-3.6 1.2-.2-1.4.7-2.8 1.8-3.7C11.9 1.6 13.3 1 14.7 1z\\\"\\\/><\\\/svg>`,\\n    windows:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M3 4l8-1v9H3V4zm18 0v9h-9V4l9-1zM3 12h8v9l-8-1v-8zm10 0h8v8l-8 1v-9z\\\"\\\/><\\\/svg>`,\\n    penguin:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M12 2c2.5 0 4 2 4 5 1.7.2 3 1.8 3 3.5S18.7 14 17 14v6H7v-6c-1.7 0-3-1.5-3-3.5S5.3 7.2 7 7c0-3 1.5-5 5-5z\\\"\\\/><\\\/svg>`,\\n    android:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M7 7h10v10H7V7zm-2 2h2v6H5V9zm14 0v6h-2V9h2zM9 19h6v2H9v-2zM9 3l1.5 2m3-2L15 5\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"1.5\\\" fill=\\\"none\\\"\\\/><\\\/svg>`,\\n    db:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"7\\\" ry=\\\"3\\\" fill=\\\"currentColor\\\"\\\/><path d=\\\"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5\\\" fill=\\\"currentColor\\\" opacity=\\\".5\\\"\\\/><path d=\\\"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6\\\" fill=\\\"currentColor\\\" opacity=\\\".35\\\"\\\/><\\\/svg>`,\\n    globe:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1 2c-3.8.5-7 3.8-7.5 7.6L7 12l2 2v2l3 3 2-1 2-3v-2l2-2-2-2-3 1-2-2-1-3z\\\"\\\/><\\\/svg>`,\\n    science:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M8 2h8v2l-3 5v4l5 7H6l5-7V9L8 4V2z\\\"\\\/><\\\/svg>`,\\n    camera:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M4 7h4l2-2h4l2 2h4v12H4V7zm8 3a4 4 0 1 0 0 8 4 4 0 0 0 0-8z\\\"\\\/><\\\/svg>`,\\n    spark:`<svg viewBox=\\\"0 0 24 24\\\" width=\\\"28\\\" height=\\\"28\\\"><path fill=\\\"currentColor\\\" d=\\\"M12 2l2 6 6 2-6 2-2 6-2-6-6-2 6-2 2-6z\\\"\\\/><\\\/svg>`\\n  };\\n\\n  \\\/\\\/ Question set (indirect, sensible, with images)\\n  const questions = [\\n    {\\n      id: 'role',\\n      title: 'Wie nutzt du Tech im Alltag?',\\n      sub: 'W\\u00e4hle, was dich am besten beschreibt.',\\n      type: 'single',\\n      options: [\\n        { id: 'builder', label: 'Ich baue\\\/entwickle', hint: 'Code, Admin, Data', icon: 'code',\\n          weights: { 'Developer': 3, 'Cloud': 2, 'Linux & Open Source': 2, 'Data\\\/Analytics': 2 } },\\n        { id: 'security', label: 'Ich sichere Systeme', hint: 'SecOps, Risiko', icon: 'shield',\\n          weights: { 'Security': 4, 'Netzpolitik': 1 } },\\n        { id: 'leader', label: 'Ich entscheide', hint: 'Strategie & Budget', icon: 'bulb',\\n          weights: { 'Wirtschaft': 2, 'Cloud': 2, 'KI\\\/ML': 1, 'Green Tech': 1 } },\\n        { id: 'enthusiast', label: 'Ich entdecke privat', hint: 'Gadgets, Tests', icon: 'chip',\\n          weights: { 'Gadgets': 3, 'Apple': 1, 'Microsoft': 1, 'Mobile': 2, 'Gaming': 1, 'Smart Home': 2 } }\\n      ]\\n    },\\n    {\\n      id: 'stack',\\n      title: 'Welches Setup pr\\u00e4gt dich aktuell?',\\n      sub: 'Mehrfachauswahl m\\u00f6glich.',\\n      type: 'multi',\\n      options: [\\n        { id: 'apple', label: 'Apple \\\/ iOS \\\/ macOS', hint: 'Mac, iPhone, iPad', icon: 'apple',\\n          weights: { 'Apple': 3, 'Mobile': 1, 'Audio\\\/Video': 1 } },\\n        { id: 'windows', label: 'Windows \\\/ Surface \\\/ Xbox', hint: 'PC, Gaming', icon: 'windows',\\n          weights: { 'Microsoft': 3, 'Gaming': 1, 'Developer': 1 } },\\n        { id: 'linux', label: 'Linux \\\/ Open Source', hint: 'Desktop & Server', icon: 'penguin',\\n          weights: { 'Linux & Open Source': 3, 'Developer': 1, 'Security': 1 } },\\n        { id: 'android', label: 'Android \\\/ WearOS', hint: 'Phones & Wearables', icon: 'android',\\n          weights: { 'Mobile': 2, 'Gadgets': 1 } },\\n        { id: 'cloud', label: 'Cloud \\\/ Kubernetes', hint: 'Ops & Scale', icon: 'cloud',\\n          weights: { 'Cloud': 3, 'Security': 1, 'Data\\\/Analytics': 1 } }\\n      ]\\n    },\\n    {\\n      id: 'formats',\\n      title: 'Welche Formate magst du?',\\n      sub: 'Das hilft bei Tiefe & Tonalit\\u00e4t.',\\n      type: 'multi',\\n      options: [\\n        { id: 'news', label: 'Kurz-News & Ticker', hint: 'Schnell informiert', icon: 'globe',\\n          weights: { 'Netzpolitik': 1, 'Wirtschaft': 1 } },\\n        { id: 'analysis', label: 'Analysen & Hintergr\\u00fcnde', hint: 'Kontext & Einordnung', icon: 'science',\\n          weights: { 'Wirtschaft': 1, 'Netzpolitik': 1, 'KI\\\/ML': 1 } },\\n        { id: 'howto', label: 'How-tos & Praxis', hint: 'Schritt f\\u00fcr Schritt', icon: 'laptop',\\n          weights: { 'Developer': 1, 'Smart Home': 1, 'Linux & Open Source': 1 } },\\n        { id: 'reviews', label: 'Tests & Reviews', hint: 'Kaufberatung', icon: 'camera',\\n          weights: { 'Gadgets': 2, 'Mobile': 1, 'Audio\\\/Video': 1 } }\\n      ]\\n    },\\n    {\\n      id: 'interests',\\n      title: 'Welche Felder triggern dich spontan?',\\n      sub: 'So spontan wie m\\u00f6glich \\u2013 Bauchgef\\u00fchl z\\u00e4hlt.',\\n      type: 'multi',\\n      options: [\\n        { id: 'ai', label: 'KI & Machine Learning', hint: 'Modelle, Tools, Auswirkungen', icon: 'spark',\\n          weights: { 'KI\\\/ML': 4, 'Data\\\/Analytics': 2 } },\\n        { id: 'privacy', label: 'Datenschutz & Sicherheit', hint: 'DSGVO, Angriffe, Abwehr', icon: 'lock',\\n          weights: { 'Security': 3, 'Netzpolitik': 1 } },\\n        { id: 'cars', label: 'Auto & Mobilit\\u00e4t', hint: 'E-Autos, Infotainment', icon: 'car',\\n          weights: { 'Auto\\\/Tech': 3, 'Green Tech': 1 } },\\n        { id: 'home', label: 'Smart Home', hint: 'Automation, Matter, Energie', icon: 'home',\\n          weights: { 'Smart Home': 3, 'Green Tech': 1 } },\\n        { id: 'games', label: 'Spiele & Hardware', hint: 'PC, Konsole, Indie', icon: 'gamepad',\\n          weights: { 'Gaming': 3, 'Audio\\\/Video': 1 } },\\n        { id: 'research', label: 'Wissenschaft & Raumfahrt', hint: 'Breakthroughs, Missionen', icon: 'science',\\n          weights: { 'Wissenschaft': 3 } }\\n      ]\\n    },\\n    {\\n      id: 'avoid',\\n      title: 'Gibt es etwas, das dich wenig interessiert?',\\n      sub: 'Damit wir es herunterregeln.',\\n      type: 'multi',\\n      options: [\\n        { id: 'no_gadgets', label: 'Weniger Gadgets', hint: 'Weniger Kaufkram', icon: 'chip', weights: { 'Gadgets': -3 } },\\n        { id: 'no_politics', label: 'Weniger Netzpolitik', hint: 'Regulierung eher selten', icon: 'globe', weights: { 'Netzpolitik': -3 } },\\n        { id: 'no_gaming', label: 'Weniger Gaming', hint: 'Spiele sind mir egal', icon: 'gamepad', weights: { 'Gaming': -3 } },\\n        { id: 'no_auto', label: 'Weniger Auto\\\/Tech', hint: 'Kaum E-Auto-Themen', icon: 'car', weights: { 'Auto\\\/Tech': -3 } }\\n      ]\\n    }\\n  ];\\n\\n  \\\/\\\/ --- State\\n  const state = {\\n    index: 0,\\n    answers: {}, \\\/\\\/ id -> Set of selected option ids\\n    scores: {},  \\\/\\\/ topic -> number\\n    recs: []\\n  };\\n\\n  const els = {\\n    root: document.getElementById('questionRoot'),\\n    progressBar: document.getElementById('progressBar'),\\n    progressLabel: document.getElementById('progressLabel'),\\n    next: document.getElementById('nextBtn'),\\n    back: document.getElementById('backBtn'),\\n    skip: document.getElementById('skipBtn'),\\n    reset: document.getElementById('resetWizard'),\\n    resultsCard: document.getElementById('results'),\\n    recs: document.getElementById('recommendations'),\\n    addAll: document.getElementById('addAllBtn'),\\n    replay: document.getElementById('replayBtn'),\\n    my: document.getElementById('myTopics'),\\n    exportBtn: document.getElementById('exportBtn'),\\n    importBtn: document.getElementById('importBtn')\\n  };\\n\\n  \\\/\\\/ Utilities\\n  const qs = () => questions[state.index];\\n  const pct = () => ((state.index) \\\/ questions.length) * 100;\\n  const clamp = (x, a, b) => Math.max(a, Math.min(b, x));\\n\\n  function loadMine(){\\n    const stored = JSON.parse(localStorage.getItem('AStA.mine') || '[]');\\n    renderMine(stored);\\n  }\\n  function saveMine(list){\\n    const unique = Array.from(new Set(list));\\n    localStorage.setItem('AStA.mine', JSON.stringify(unique));\\n    renderMine(unique);\\n  }\\n\\n  function renderMine(list){\\n    els.my.innerHTML = '';\\n    if(!list.length){\\n      els.my.classList.add('empty-state');\\n      els.my.innerHTML = `<span class=\\\"hint\\\">Noch nichts ausgew\\u00e4hlt. Beantworte die Fragen oder tippe auf Chips.<\\\/span>`;\\n      return;\\n    }\\n    els.my.classList.remove('empty-state');\\n    list.forEach(t => {\\n      const chip = document.createElement('span');\\n      chip.className = 'chip';\\n      chip.innerHTML = `${t} <span class=\\\"x\\\" role=\\\"button\\\" aria-label=\\\"${t} entfernen\\\">\\u00d7<\\\/span>`;\\n      chip.querySelector('.x').addEventListener('click', () => {\\n        saveMine(list.filter(x => x !== t));\\n      });\\n      els.my.appendChild(chip);\\n    });\\n  }\\n\\n  function icon(name){\\n    const wrap = document.createElement('div');\\n    wrap.className = 'icon';\\n    wrap.innerHTML = icons[name] || icons['chip'];\\n    return wrap;\\n  }\\n\\n  function renderQuestion(){\\n    const q = qs();\\n    if(!q){ return; }\\n\\n    \\\/\\\/ progress\\n    const shown = clamp(state.index, 0, questions.length-1) + 1;\\n    els.progressLabel.textContent = `Frage ${shown} von ${questions.length}`;\\n    els.progressBar.style.width = `${clamp(pct(),0,100)}%`;\\n\\n    \\\/\\\/ content\\n    els.root.innerHTML = '';\\n    const h = document.createElement('h2'); h.className='q-title'; h.textContent = q.title;\\n    const sub = document.createElement('p'); sub.className='q-sub'; sub.textContent = q.sub || '';\\n    els.root.append(h, sub);\\n\\n    const grid = document.createElement('div'); grid.className = 'grid';\\n    els.root.appendChild(grid);\\n\\n    const selected = new Set(state.answers[q.id] || []);\\n\\n    q.options.forEach(opt => {\\n      const card = document.createElement('button');\\n      card.type = 'button';\\n      card.className = 'option';\\n      card.setAttribute('role', q.type === 'multi' ? 'checkbox' : 'radio');\\n      card.setAttribute('aria-checked', selected.has(opt.id) ? 'true' : 'false');\\n      card.addEventListener('click', () => {\\n        if(q.type === 'single'){\\n          selected.clear();\\n          selected.add(opt.id);\\n        } else {\\n          if(selected.has(opt.id)) selected.delete(opt.id);\\n          else selected.add(opt.id);\\n        }\\n        state.answers[q.id] = Array.from(selected);\\n        \\\/\\\/ Update aria\\n        grid.querySelectorAll('.option').forEach(el => el.setAttribute('aria-checked','false'));\\n        Array.from(grid.children).forEach((el, idx) => {\\n          const o = q.options[idx];\\n          if(selected.has(o.id)) el.setAttribute('aria-checked','true');\\n        });\\n        els.next.disabled = selected.size === 0;\\n      });\\n\\n      \\\/\\\/ build content\\n      const ic = icon(opt.icon);\\n      const label = document.createElement('div'); label.className='label'; label.textContent = opt.label;\\n      const hint = document.createElement('div'); hint.className='hint'; hint.textContent = opt.hint || '';\\n\\n      card.append(ic, label, hint);\\n\\n      grid.appendChild(card);\\n    });\\n\\n    \\\/\\\/ nav buttons\\n    els.back.disabled = state.index === 0;\\n    els.next.textContent = state.index === questions.length - 1 ? 'Fertig' : 'Weiter';\\n    els.next.disabled = selected.size === 0;\\n  }\\n\\n  function next(){\\n    if(state.index < questions.length - 1){\\n      state.index++; renderQuestion();\\n    } else {\\n      \\\/\\\/ compute\\n      compute();\\n      showResults();\\n    }\\n  }\\n  function back(){\\n    if(state.index > 0){ state.index--; renderQuestion(); }\\n  }\\n  function skip(){\\n    if(!state.answers[qs().id]) state.answers[qs().id] = [];\\n    next();\\n  }\\n\\n  function compute(){\\n    \\\/\\\/ init\\n    state.scores = {}; topics.forEach(t => state.scores[t] = 0);\\n    for(const q of questions){\\n      const picked = state.answers[q.id] || [];\\n      for(const pid of picked){\\n        const opt = q.options.find(o => o.id === pid);\\n        if(!opt) continue;\\n        for(const [topic, w] of Object.entries(opt.weights || {})){\\n          state.scores[topic] = (state.scores[topic] || 0) + w;\\n        }\\n      }\\n    }\\n    \\\/\\\/ normalize positive topics and sort\\n    const entries = Object.entries(state.scores)\\n      .filter(([,s]) => s !== 0)\\n      .sort((a,b) => b[1] - a[1]);\\n    state.recs = entries.slice(0, 12).map(([t]) => t);\\n  }\\n\\n  function showResults(){\\n    \\\/\\\/ chips\\n    els.recs.innerHTML = '';\\n    if(state.recs.length === 0){\\n      els.recs.innerHTML = `<span class=\\\"hint\\\">Keine klare Tendenz \\u2013 probier es nochmal oder f\\u00fcge manuell Themen hinzu.<\\\/span>`;\\n    } else {\\n      state.recs.forEach(t => {\\n        const chip = document.createElement('span');\\n        chip.className = 'chip';\\n        chip.innerHTML = `${t} <span class=\\\"x\\\" role=\\\"button\\\" aria-label=\\\"${t} hinzuf\\u00fcgen\\\">+<\\\/span>`;\\n        chip.addEventListener('click', () => {\\n          const mine = JSON.parse(localStorage.getItem('AStA.mine') || '[]');\\n          mine.push(t); saveMine(mine);\\n        });\\n        els.recs.appendChild(chip);\\n      });\\n    }\\n    \\\/\\\/ toggle\\n    els.resultsCard.classList.remove('hidden');\\n    \\\/\\\/ scroll into view\\n    els.resultsCard.scrollIntoView({behavior:'smooth', block:'center'});\\n  }\\n\\n  \\\/\\\/ Export\\\/Import\\n  function exportMine(e){\\n    e.preventDefault();\\n    const data = {\\n      topics: JSON.parse(localStorage.getItem('AStA.mine') || '[]'),\\n      answers: state.answers\\n    };\\n    const blob = new Blob([JSON.stringify(data, null, 2)], {type:'application\\\/json'});\\n    const url = URL.createObjectURL(blob);\\n    const a = document.createElement('a');\\n    a.href = url; a.download = 'AStA-entdeckertour-export.json';\\n    a.click();\\n    URL.revokeObjectURL(url);\\n  }\\n  function importMine(e){\\n    e.preventDefault();\\n    const input = document.createElement('input');\\n    input.type='file'; input.accept='application\\\/json';\\n    input.addEventListener('change', () => {\\n      const file = input.files?.[0]; if(!file) return;\\n      const reader = new FileReader();\\n      reader.onload = () => {\\n        try{\\n          const data = JSON.parse(reader.result);\\n          if(Array.isArray(data.topics)) saveMine(data.topics);\\n          if(data.answers && typeof data.answers === 'object') state.answers = data.answers;\\n          \\\/\\\/ Re-render current screen to reflect restored answers\\n          renderQuestion();\\n        }catch(err){ alert('Konnte die Datei nicht lesen.'); }\\n      };\\n      reader.readAsText(file);\\n    });\\n    input.click();\\n  }\\n\\n  \\\/\\\/ Actions\\n  els.next.addEventListener('click', next);\\n  els.back.addEventListener('click', back);\\n  els.skip.addEventListener('click', skip);\\n  els.reset.addEventListener('click', () => {\\n    if(confirm('Alles zur\\u00fccksetzen?')){\\n      state.index = 0; state.answers = {}; state.scores = {}; state.recs = [];\\n      els.resultsCard.classList.add('hidden');\\n      renderQuestion();\\n    }\\n  });\\n  els.addAll.addEventListener('click', () => {\\n    const mine = JSON.parse(localStorage.getItem('AStA.mine') || '[]');\\n    saveMine(mine.concat(state.recs));\\n  });\\n  els.replay.addEventListener('click', () => {\\n    state.index = 0; renderQuestion(); document.getElementById('wizard').scrollIntoView({behavior:'smooth'});\\n  });\\n  els.exportBtn.addEventListener('click', exportMine);\\n  els.importBtn.addEventListener('click', importMine);\\n\\n  \\\/\\\/ Startup\\n  loadMine();\\n  renderQuestion();\\n})();\\n<\\\/script>\\n<\\\/div>\\n\"}}]}]}]},{\"type\":\"section\",\"props\":{\"css\":\".el-section {\\n  background-color: #fff;\\n   height: 2000px;\\n}\",\"height\":\"viewport\",\"height_viewport\":5010,\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"<!-- AStA Entdeckertour \\u00b7 Entscheidungsbaum + Swipe + Unsplash (inline, WP-ready) -->\\n<head>\\n<meta charset=\\\"utf-8\\\">\\n<meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n<title>AStA Entdeckertour \\u00b7 Themen-Finder (Baum)<\\\/title>\\n<\/p>\n<style>\\n:root{\\n  --AStA:#14315b;--accent:#64a4ff;--ink:#242b33;--muted:#6b7280;--bg:#f6f7f9;--card:#fff;\\n  --ok:#10b981;--no:#ef4444;--shadow:0 10px 25px rgba(20,49,91,.08),0 2px 8px rgba(20,49,91,.06);\\n  --r-lg:20px;--r-sm:14px\\n}\\n*{box-sizing:border-box}html,body{margin:0;height:200%}\\nbody{font:16px\\\/1.45 system-ui,-apple-system,Segoe UI,Roboto,\\\"Source Sans Pro\\\",Arial,sans-serif;color:var(--ink);background:var(--bg)}\\n.container{max-width:1100px;margin:0 auto;padding:0 18px}\\n.site-header{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid #e5e7eb}\\n.header-inner{display:flex;align-items:center;justify-content:space-between;height:64px}\\n.brand{display:inline-flex;gap:.6rem;align-items:baseline;text-decoration:none;color:var(--AStA)}\\n.brand-mark{font-size:22px}.brand-name{font-weight:700}.brand-sub{font-size:.9rem;color:var(--muted)}\\n.btn{appearance:none;border:1px solid #e5e7eb;background:#fff;color:var(--ink);\\n  padding:.55rem .85rem;border-radius:12px;font-weight:600;cursor:pointer;box-shadow:0 2px 10px rgba(20,49,91,.06)}\\n.btn.primary{background:var(--AStA);color:#fff;border-color:var(--AStA)}\\n.btn.ghost{color:var(--AStA)}\\n.hero{background:radial-gradient(1200px 280px at 50% -60%, rgba(100,164,255,.22), transparent)}\\n.hero-inner{padding:34px 0 22px}\\n.hero h1{margin:0 0 .35rem;font-size:clamp(28px,4vw,44px);line-height:1.1}\\n.lead{color:var(--muted);margin:0}\\n.card{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:20px;margin:22px 0}\\n.progress{height:8px;background:#eef2f7;border-radius:99px;overflow:hidden}\\n.progress-bar{height:100%;background:linear-gradient(90deg,var(--AStA),var(--accent));border-radius:inherit;width:0%}\\n.stack{display:grid;gap:12px}\\n.wizard-actions{display:flex;gap:10px;align-items:center;margin-top:8px}\\n.wizard-actions .spacer{flex:1}\\n.section-title{font-size:1.25rem;margin:.25rem 0 .5rem}\\n.subtle{color:var(--muted);margin:.25rem 0 1rem}\\n.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .65rem;border-radius:999px;\\n  border:1px solid #d8dee7;background:#eff2f6;font-weight:600}\\n.chip-grid{display:flex;flex-wrap:wrap;gap:.5rem}\\n.hidden{display:none !important}\\n\\n\\\/* Swipe card *\\\/\\n.stage{position:relative;overflow:hidden;border-radius:var(--r-lg)}\\n.card-hero{position:relative;height:min(58vh,520px);background:#e9eef6;border-radius:var(--r-lg);overflow:hidden}\\n.card-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}\\n.overlay{position:absolute;inset:0;\\n  background:linear-gradient(to top, rgba(0,0,0,.45) 0%, rgba(0,0,0,.15) 45%, rgba(0,0,0,0) 70%)}\\n.qtext{position:absolute;left:16px;right:16px;bottom:16px;color:#fff}\\n.qtext h2{margin:0 0 6px;font-size:1.35rem;letter-spacing:.2px}\\n.qtext p{margin:0;color:#e5e7eb}\\n.side{position:absolute;top:0;bottom:0;width:56px;pointer-events:none}\\n.side.left{left:0;background:linear-gradient(to right, rgba(239,68,68,.55), transparent)}\\n.side.right{right:0;background:linear-gradient(to left, rgba(16,185,129,.55), transparent)}\\n.badgeVote{position:absolute;top:14px;padding:.35rem .55rem;border-radius:10px;font-weight:800;letter-spacing:.4px;border:2px solid;transform:rotate(-6deg);opacity:0}\\n.badgeVote.yes{right:14px;color:#10b981;border-color:#10b981;background:rgba(16,185,129,.12)}\\n.badgeVote.no{left:14px;color:#ef4444;border-color:#ef4444;background:rgba(239,68,68,.12);transform:rotate(6deg)}\\n.credit{position:absolute;right:10px;top:10px;background:rgba(0,0,0,.35);color:#fff;padding:.25rem .5rem;border-radius:8px;font-size:.8rem}\\n.credit a{color:#fff;text-decoration:underline;text-underline-offset:3px}\\n\\n\\\/* Drag effect *\\\/\\n.draggable{touch-action:pan-y;will-change:transform}\\n.dragging{cursor:grabbing}\\n<\\\/style>\\n<\\\/head>\\n\\n<\/p>\n<div>\\n  <!-- Header -->\\n  <\/p>\n<header class=\\\"site-header\\\">\\n    <\/p>\n<div class=\\\"container header-inner\\\">\\n      <a class=\\\"brand\\\" href=\\\"#\\\"><span class=\\\"brand-mark\\\">\\u2301<\\\/span><span class=\\\"brand-name\\\">AStA<\\\/span> <span class=\\\"brand-sub\\\">entdeckertour<\\\/span><\\\/a>\\n      <\/p>\n<nav class=\\\"header-actions\\\"><button id=\\\"resetWizard\\\" class=\\\"btn ghost\\\">Zur\\u00fccksetzen<\\\/button><\\\/nav>\\n    <\\\/div>\\n  <\\\/header>\\n\\n  <!-- Hero -->\\n  <\/p>\n<section class=\\\"hero\\\">\\n    <\/p>\n<div class=\\\"container hero-inner\\\">\\n      <\/p>\n<h1>Entdeckertour mit Wisch-Gesten<\\\/h1>\\n      <\/p>\n<p class=\\\"lead\\\">Beantworte die Fragen per Wischen (links = nein, rechts = ja). Am Ende bekommst du <strong>deine Themen<\\\/strong>.<\\\/p>\\n    <\\\/div>\\n  <\\\/section>\\n\\n  <main class=\\\"container\\\">\\n    <!-- Wizard -->\\n    <\/p>\n<section id=\\\"wizard\\\" class=\\\"card\\\">\\n      <\/p>\n<div class=\\\"stack\\\">\\n        <\/p>\n<div class=\\\"progress\\\">\n<div id=\\\"progressBar\\\" class=\\\"progress-bar\\\"><\\\/div><\\\/div>\\n\\n        <\/p>\n<div class=\\\"stage\\\">\\n          <\/p>\n<div id=\\\"hero\\\" class=\\\"card-hero draggable\\\">\\n            <img id=\\\"heroImg\\\" alt=\\\"\\\" referrerpolicy=\\\"no-referrer\\\">\\n            <\/p>\n<div class=\\\"overlay\\\"><\\\/div>\\n            <\/p>\n<div class=\\\"side left\\\"><\\\/div><\/p>\n<div class=\\\"side right\\\"><\\\/div>\\n            <\/p>\n<div id=\\\"badgeYes\\\" class=\\\"badgeVote yes\\\">JA<\\\/div>\\n            <\/p>\n<div id=\\\"badgeNo\\\" class=\\\"badgeVote no\\\">NEIN<\\\/div>\\n            <\/p>\n<div id=\\\"credit\\\" class=\\\"credit\\\"><\\\/div>\\n            <\/p>\n<div class=\\\"qtext\\\">\\n              <\/p>\n<h2 id=\\\"qTitle\\\">Frage\\u2026<\\\/h2>\\n              <\/p>\n<p id=\\\"qSub\\\">Wische rechts f\\u00fcr \\u201einteressiert mich\\u201c, links f\\u00fcr \\u201einteressiert mich nicht\\u201c.<\\\/p>\\n            <\\\/div>\\n          <\\\/div>\\n        <\\\/div>\\n\\n        <\/p>\n<div class=\\\"wizard-actions\\\">\\n          <button id=\\\"noBtn\\\" class=\\\"btn\\\">Nein<\\\/button>\\n          <\/p>\n<div class=\\\"spacer\\\"><\\\/div>\\n          <button id=\\\"yesBtn\\\" class=\\\"btn primary\\\">Ja<\\\/button>\\n        <\\\/div>\\n      <\\\/div>\\n    <\\\/section>\\n\\n    <!-- Ergebnisse -->\\n    <\/p>\n<section id=\\\"results\\\" class=\\\"card hidden\\\">\\n      <\/p>\n<h2 class=\\\"section-title\\\">Empfohlene Themen<\\\/h2>\\n      <\/p>\n<p class=\\\"subtle\\\">Basierend auf deinen Antworten. Tippe auf Chips, um sie zu speichern.<\\\/p>\\n      <\/p>\n<div id=\\\"recommendations\\\" class=\\\"chip-grid\\\"><\\\/div>\\n    <\\\/section>\\n  <\\\/main>\\n\\n  <script>\\n  \\\/* ===== Config ===== *\\\/\\n  const UNSPLASH_ACCESS_KEY = \\\"\\\"; \\\/\\\/ <--- HIER optional deinen Unsplash Access Key eintragen\\n  \\\/\\\/ Thema -> Unsplash-Suchbegriffe (f\\u00fcr API)\\n  const unsplashQuery = q => ({\\n    ai: \\\"artificial intelligence illustration, neural network, tech art\\\",\\n    future: \\\"future technology balance, scales, innovation\\\",\\n    climate: \\\"climate change drought, dry land, environment\\\",\\n    food: \\\"future food lab, food tech, sustainable nutrition\\\",\\n    climateDeep: \\\"climate change industry, decarbonization, carbon capture\\\",\\n    metaverse: \\\"generative 3d art, virtual worlds, metaverse\\\",\\n    robotics: \\\"robotics robot industry, humanoid robot, automation\\\",\\n    security: \\\"cyber security padlock, data protection\\\"\\n  }[q] || q);\\n\\n  \\\/* ===== Entscheidungsbaum =====\\n     Jeder Knoten hat: id, title, sub, imgKey, yes->id, no->id, scoreYes:[\\u2026], scoreNo:[\\u2026]  *\\\/\\n  const NODES = {\\n    Q1:{id:'Q1', title:'Interessieren Sie sich f\\u00fcr KI?', sub:'', imgKey:'ai', yes:'Q3', no:'Q2', scoreYes:['KI\\\/ML','Data\\\/Analytics']},\\n    Q2:{id:'Q2', title:'Ist Klimawandel ein Thema f\\u00fcr Sie?', sub:'', imgKey:'climate', yes:'Q5', no:'Q4', scoreYes:['Green Tech']},\\n    Q3:{id:'Q3', title:'Sind Sie an Zukunftsthemen interessiert?', sub:'', imgKey:'future', yes:'Q7', no:'Q6', scoreYes:['Wissenschaft']},\\n    Q4:{id:'Q4', title:'Interessieren Sie sich f\\u00fcr die Zukunft der Ern\\u00e4hrung?', sub:'', imgKey:'food', yes:null, no:'Q8', scoreYes:['Wissenschaft','Green Tech']},\\n    Q5:{id:'Q5', title:'Interessieren Sie sich f\\u00fcr den Klimawandel (Technik)?', sub:'', imgKey:'climateDeep', yes:null, no:'Q8', scoreYes:['Green Tech','Wirtschaft']},\\n    Q6:{id:'Q6', title:'Faszinieren Sie KI-generierte 3D-Welten?', sub:'', imgKey:'metaverse', yes:null, no:'Q8', scoreYes:['Audio\\\/Video','KI\\\/ML']},\\n    Q7:{id:'Q7', title:'Interessieren Sie sich f\\u00fcr Roboter?', sub:'', imgKey:'robotics', yes:null, no:'Q8', scoreYes:['KI\\\/ML','Auto\\\/Tech']},\\n    Q8:{id:'Q8', title:'Datenschutz & Sicherheit wichtig?', sub:'', imgKey:'security', yes:null, no:null, scoreYes:['Security','Netzpolitik']}\\n  };\\n  const START_NODE = 'Q1';\\n\\n  \\\/* ===== State ===== *\\\/\\n  const state = { cur: START_NODE, seen:new Set(), scores:{}, order:[] };\\n\\n  \\\/* ===== DOM ===== *\\\/\\n  const el = {\\n    bar: document.getElementById('progressBar'),\\n    title: document.getElementById('qTitle'),\\n    sub: document.getElementById('qSub'),\\n    hero: document.getElementById('hero'),\\n    img: document.getElementById('heroImg'),\\n    credit: document.getElementById('credit'),\\n    yes: document.getElementById('yesBtn'),\\n    no: document.getElementById('noBtn'),\\n    badgeYes: document.getElementById('badgeYes'),\\n    badgeNo: document.getElementById('badgeNo'),\\n    results: document.getElementById('results'),\\n    recs: document.getElementById('recommendations'),\\n    reset: document.getElementById('resetWizard'),\\n  };\\n\\n  \\\/* ===== Helpers ===== *\\\/\\n  const topicsAll = ['KI\\\/ML','Security','Developer','Mobile','Netzpolitik','Wirtschaft','Audio\\\/Video','Wissenschaft','Auto\\\/Tech','Gaming','Linux & Open Source','Apple','Microsoft','Gadgets','Smart Home','Cloud','Data\\\/Analytics','Startups','eGovernment','Green Tech'];\\n\\n  function addScore(arr, mult=1){\\n    (arr||[]).forEach(t => { state.scores[t]=(state.scores[t]||0)+mult; });\\n  }\\n\\n  function progress(){\\n    const total = Object.keys(NODES).length;\\n    el.bar.style.width = `${(state.seen.size\\\/total)*100}%`;\\n  }\\n\\n  function placeholderFor(key){\\n    \\\/\\\/ h\\u00fcbscher SVG-Platzhalter, falls kein Unsplash-Key\\n    const label = {\\n      ai:'\\ud83e\\udd16', future:'\\ud83d\\udd2e', climate:'\\ud83c\\udf0d', food:'\\ud83e\\udd57', climateDeep:'\\ud83c\\udfed', metaverse:'\\ud83d\\udd73\\ufe0f', robotics:'\\ud83e\\udd1d', security:'\\ud83d\\udd10'\\n    }[key] || '\\u2728';\\n    const svg = encodeURIComponent(`<svg xmlns='http:\\\/\\\/www.w3.org\\\/2000\\\/svg' viewBox='0 0 1200 675'>\\n      <defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop stop-color='#dbeafe'\\\/><stop offset='1' stop-color='#eff6ff'\\\/><\\\/linearGradient><\\\/defs>\\n      <rect width='1200' height='675' fill='url(#g)'\\\/>\\n      <text x='50%' y='50%' dominant-baseline='middle' text-anchor='middle' font-size='120'>${label}<\\\/text>\\n    <\\\/svg>`);\\n    return {src:`data:image\\\/svg+xml,${svg}`, alt:'Platzhalter', credit:''};\\n  }\\n\\n  async function loadImage(key){\\n    if(!UNSPLASH_ACCESS_KEY){ return placeholderFor(key); }\\n    try{\\n      const q = unsplashQuery(key);\\n      const r = await fetch(`https:\\\/\\\/api.unsplash.com\\\/photos\\\/random?orientation=landscape&content_filter=high&query=${encodeURIComponent(q)}`, {\\n        headers:{ Authorization:`Client-ID ${UNSPLASH_ACCESS_KEY}` }\\n      });\\n      const j = await r.json();\\n      if(j && j.urls && j.urls.regular){\\n        return {\\n          src: j.urls.regular + '&w=1600&q=80',\\n          alt: j.alt_description || key,\\n          credit: `Foto: <a href=\\\"${j.user.links.html}\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">`+ (j.user.name || 'Unsplash') + '<\\\/a>'\\n        };\\n      }\\n    }catch(e){ \\\/* fall back *\\\/ }\\n    return placeholderFor(key);\\n  }\\n\\n  async function showNode(id){\\n    state.cur = id; state.seen.add(id); progress();\\n    const node = NODES[id];\\n    el.title.textContent = node.title;\\n    el.sub.textContent = node.sub || 'Wische rechts (Ja) oder links (Nein).';\\n    \\\/\\\/ Bild\\n    el.credit.innerHTML = '';\\n    const data = await loadImage(node.imgKey);\\n    el.img.src = data.src; el.img.alt = data.alt || '';\\n    if(data.credit) el.credit.innerHTML = data.credit;\\n    \\\/\\\/ reset badges\\\/transform\\n    el.hero.style.transform = 'translateX(0px) rotate(0deg)';\\n    el.hero.classList.remove('dragging');\\n    el.badgeYes.style.opacity = 0; el.badgeNo.style.opacity = 0;\\n  }\\n\\n  function nextNode(answerYes){\\n    const node = NODES[state.cur];\\n    if(answerYes) addScore(node.scoreYes, +1); else addScore(node.scoreNo, +1);\\n    const nxt = answerYes ? node.yes : node.no;\\n    if(nxt){ showNode(nxt); }\\n    else { finish(); }\\n  }\\n\\n  function finish(){\\n    \\\/\\\/ sortierte Empfehlungen\\n    const entries = Object.entries(state.scores).filter(([,v]) => v>0).sort((a,b)=>b[1]-a[1]).slice(0,12);\\n    el.recs.innerHTML = entries.length ? '' : '<span class=\\\"subtle\\\">Keine klare Tendenz \\u2013 probier es nochmal.<\\\/span>';\\n    entries.forEach(([t,_])=>{\\n      const chip=document.createElement('span'); chip.className='chip'; chip.textContent=t;\\n      el.recs.appendChild(chip);\\n    });\\n    el.results.classList.remove('hidden');\\n    el.results.scrollIntoView({behavior:'smooth', block:'start'});\\n  }\\n\\n  \\\/* Buttons *\\\/\\n  el.yes.addEventListener('click', ()=>nextNode(true));\\n  el.no.addEventListener('click', ()=>nextNode(false));\\n  el.reset.addEventListener('click', ()=>{ state.cur=START_NODE; state.seen.clear(); state.scores={}; el.results.classList.add('hidden'); progress(); showNode(START_NODE); });\\n\\n  \\\/* Swipe *\\\/\\n  (function(){\\n    const THRESH = 80; let startX=0, curX=0, dragging=false;\\n    const onDown = (e)=>{ dragging=true; startX = (e.touches?e.touches[0].clientX:e.clientX); el.hero.classList.add('dragging'); };\\n    const onMove = (e)=>{\\n      if(!dragging) return;\\n      curX = (e.touches?e.touches[0].clientX:e.clientX)-startX;\\n      const rot = curX\\\/20;\\n      el.hero.style.transform = `translateX(${curX}px) rotate(${rot}deg)`;\\n      const t = Math.min(Math.abs(curX)\\\/120,1);\\n      if(curX>0){ el.badgeYes.style.opacity=t; el.badgeNo.style.opacity=0; }\\n      else { el.badgeNo.style.opacity=t; el.badgeYes.style.opacity=0; }\\n    };\\n    const onUp = ()=>{\\n      if(!dragging) return; dragging=false; el.hero.classList.remove('dragging');\\n      if(curX > THRESH){ el.hero.style.transform='translateX(160%) rotate(15deg)'; setTimeout(()=>nextNode(true),150); }\\n      else if(curX < -THRESH){ el.hero.style.transform='translateX(-160%) rotate(-15deg)'; setTimeout(()=>nextNode(false),150); }\\n      else { el.hero.style.transform='translateX(0) rotate(0)'; el.badgeYes.style.opacity=0; el.badgeNo.style.opacity=0; }\\n      startX=curX=0;\\n    };\\n    el.hero.addEventListener('mousedown', onDown);\\n    el.hero.addEventListener('touchstart', onDown, {passive:true});\\n    window.addEventListener('mousemove', onMove, {passive:false});\\n    window.addEventListener('touchmove', onMove, {passive:true});\\n    window.addEventListener('mouseup', onUp);\\n    window.addEventListener('touchend', onUp);\\n  })();\\n\\n  \\\/\\\/ Start\\n  showNode(START_NODE);\\n  <\\\/script>\\n<\\\/div>\\n\",\"status\":\"disabled\"}}]}]}]},{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"countdown\",\"props\":{\"grid_column_gap\":\"small\",\"grid_row_gap\":\"small\",\"label_margin\":\"small\",\"margin\":\"default\",\"show_label\":true,\"show_separator\":true}}]}]}]}],\"version\":\"4.3.8\"} --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AStA Entdeckertour \u00b7 Themen-Finder<\/p>","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-3859","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tour Test - AStA Hochschule Hannover<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/asta-hsh.de\/en\/tour-test\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tour Test - AStA Hochschule Hannover\" \/>\n<meta property=\"og:description\" content=\"AStA Entdeckertour \u00b7 Themen-Finder\" \/>\n<meta property=\"og:url\" content=\"https:\/\/asta-hsh.de\/en\/tour-test\/\" \/>\n<meta property=\"og:site_name\" content=\"AStA Hochschule Hannover\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-21T18:25:56+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/tour-test\\\/\",\"url\":\"https:\\\/\\\/asta-hsh.de\\\/tour-test\\\/\",\"name\":\"Tour Test - AStA Hochschule Hannover\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/#website\"},\"datePublished\":\"2025-09-11T13:47:11+00:00\",\"dateModified\":\"2025-10-21T18:25:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/tour-test\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/asta-hsh.de\\\/tour-test\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/tour-test\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/asta-hsh.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tour Test\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/#website\",\"url\":\"https:\\\/\\\/asta-hsh.de\\\/\",\"name\":\"AStA HSH\",\"description\":\"Der Allgemeine Studierendenausschuss der Hochschule Hannover\",\"publisher\":{\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/asta-hsh.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/#organization\",\"name\":\"AStA Hochschule Hannover\",\"url\":\"https:\\\/\\\/asta-hsh.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/test.asta-hsh.de\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/AStA-Logo.svg\",\"contentUrl\":\"http:\\\/\\\/test.asta-hsh.de\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/AStA-Logo.svg\",\"width\":130,\"height\":89,\"caption\":\"AStA Hochschule Hannover\"},\"image\":{\"@id\":\"https:\\\/\\\/asta-hsh.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tour Test - AStA Hochschule Hannover","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/asta-hsh.de\/en\/tour-test\/","og_locale":"en_GB","og_type":"article","og_title":"Tour Test - AStA Hochschule Hannover","og_description":"AStA Entdeckertour \u00b7 Themen-Finder","og_url":"https:\/\/asta-hsh.de\/en\/tour-test\/","og_site_name":"AStA Hochschule Hannover","article_modified_time":"2025-10-21T18:25:56+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/asta-hsh.de\/tour-test\/","url":"https:\/\/asta-hsh.de\/tour-test\/","name":"Tour Test - AStA Hochschule Hannover","isPartOf":{"@id":"https:\/\/asta-hsh.de\/#website"},"datePublished":"2025-09-11T13:47:11+00:00","dateModified":"2025-10-21T18:25:56+00:00","breadcrumb":{"@id":"https:\/\/asta-hsh.de\/tour-test\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/asta-hsh.de\/tour-test\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/asta-hsh.de\/tour-test\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/asta-hsh.de\/"},{"@type":"ListItem","position":2,"name":"Tour Test"}]},{"@type":"WebSite","@id":"https:\/\/asta-hsh.de\/#website","url":"https:\/\/asta-hsh.de\/","name":"AStA HSH","description":"Der Allgemeine Studierendenausschuss der Hochschule Hannover","publisher":{"@id":"https:\/\/asta-hsh.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/asta-hsh.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/asta-hsh.de\/#organization","name":"AStA Hochschule Hannover","url":"https:\/\/asta-hsh.de\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/asta-hsh.de\/#\/schema\/logo\/image\/","url":"http:\/\/test.asta-hsh.de\/wp-content\/uploads\/2023\/06\/AStA-Logo.svg","contentUrl":"http:\/\/test.asta-hsh.de\/wp-content\/uploads\/2023\/06\/AStA-Logo.svg","width":130,"height":89,"caption":"AStA Hochschule Hannover"},"image":{"@id":"https:\/\/asta-hsh.de\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/asta-hsh.de\/en\/wp-json\/wp\/v2\/pages\/3859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asta-hsh.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/asta-hsh.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/asta-hsh.de\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/asta-hsh.de\/en\/wp-json\/wp\/v2\/comments?post=3859"}],"version-history":[{"count":38,"href":"https:\/\/asta-hsh.de\/en\/wp-json\/wp\/v2\/pages\/3859\/revisions"}],"predecessor-version":[{"id":3923,"href":"https:\/\/asta-hsh.de\/en\/wp-json\/wp\/v2\/pages\/3859\/revisions\/3923"}],"wp:attachment":[{"href":"https:\/\/asta-hsh.de\/en\/wp-json\/wp\/v2\/media?parent=3859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}