{"id":2166,"date":"2026-04-19T06:25:51","date_gmt":"2026-04-19T04:25:51","guid":{"rendered":"https:\/\/zulumaps.com\/star-map\/"},"modified":"2026-08-05T20:56:02","modified_gmt":"2026-08-05T18:56:02","slug":"star-map","status":"publish","type":"page","link":"https:\/\/zulumaps.com\/de\/star-map\/","title":{"rendered":"Star Map"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2166\" class=\"elementor elementor-2166 elementor-734\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b91733c e-con-full e-flex e-con e-parent\" data-id=\"b91733c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b5a4a2e elementor-widget elementor-widget-shortcode\" data-id=\"b5a4a2e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><link href=\"https:\/\/unpkg.com\/maplibre-gl@4.5.0\/dist\/maplibre-gl.css\" rel=\"stylesheet\"\/>\n<script src=\"https:\/\/unpkg.com\/maplibre-gl@4.5.0\/dist\/maplibre-gl.js\"><\/script>\n\n<div class=\"pme\" id=\"pme-root\">\n  <nav class=\"pme-nav\">\n    <button class=\"pme-nav-btn active\" data-panel=\"moment\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M12 2v2M12 20v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M2 12h2M20 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\"\/><\/svg>Moment\n    <\/button>\n    <button class=\"pme-nav-btn\" data-panel=\"labels\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7\"\/><path d=\"M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z\"\/><\/svg>Texte\n    <\/button>\n    <button class=\"pme-nav-btn\" data-panel=\"style\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"\/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"\/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"\/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"\/><\/svg>Stil\n    <\/button>\n    <button class=\"pme-nav-btn\" data-panel=\"size\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7\"\/><\/svg>Gr\u00f6\u00dfe\n    <\/button>\n  <\/nav>\n\n  <div class=\"pme-mobnav\">\n    <button class=\"pme-mobbtn active\" data-panel=\"moment\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M12 2v2M12 20v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M2 12h2M20 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\"\/><\/svg>Moment<\/button>\n    <button class=\"pme-mobbtn\" data-panel=\"labels\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7\"\/><path d=\"M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z\"\/><\/svg>Texte<\/button>\n    <button class=\"pme-mobbtn\" data-panel=\"style\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"\/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"\/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"\/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"\/><\/svg>Stil<\/button>\n    <button class=\"pme-mobbtn\" data-panel=\"size\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7\"\/><\/svg>Gr\u00f6\u00dfe<\/button>\n  <\/div>\n\n  <div class=\"pme-panel\">\n    <!-- MOMENT -->\n    <div class=\"pme-section active\" id=\"sec-moment\">\n      <div class=\"pme-title\">Dein Moment<\/div>\n      <div class=\"pme-desc\">W\u00e4hle Datum, Uhrzeit und Ort, um den exakten Sternenhimmel deines besonderen Moments zu zeigen.<\/div>\n      <span class=\"pme-lbl\">Datum<\/span>\n      <div class=\"pme-field\"><input type=\"date\" id=\"inp-date\" value=\"2024-06-15\"\/><\/div>\n      <span class=\"pme-lbl\">Uhrzeit<\/span>\n      <div class=\"pme-field\"><input type=\"time\" id=\"inp-time\" value=\"22:00\"\/><\/div>\n      <span class=\"pme-lbl\">Ort<\/span>\n      <div class=\"pme-search\">\n        <svg class=\"pme-sic\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><path d=\"m21 21-4.35-4.35\"\/><\/svg>\n        <input type=\"text\" id=\"pme-sinput\" value=\"Paris, Frankreich\" placeholder=\"Suche nach einer Stadt oder einem Ort...\"\/>\n      <\/div>\n      <div class=\"pme-results\" id=\"pme-results\"><\/div>\n      <input type=\"hidden\" id=\"inp-lat\" value=\"48.8566\"\/>\n      <input type=\"hidden\" id=\"inp-lng\" value=\"2.3522\"\/>\n    <\/div>\n\n    <!-- LABELS -->\n    <div class=\"pme-section\" id=\"sec-labels\">\n      <div class=\"pme-title\">Texte<\/div>\n      <div class=\"pme-desc\">Passe den Text auf deinem Sternenkarten-Poster an.<\/div>\n      <span class=\"pme-lbl\">\u00dcberschrift<\/span>\n      <div class=\"pme-field\"><input type=\"text\" id=\"inp-h\" value=\"IN DIESER NACHT BEGANN ALLES\"\/><\/div>\n      <span class=\"pme-lbl\">Unterzeile<\/span>\n      <div class=\"pme-field\"><input type=\"text\" id=\"inp-d\" value=\"Paris, Frankreich\"\/><\/div>\n      <span class=\"pme-lbl\">Zusatztext<\/span>\n      <div class=\"pme-field\"><input type=\"text\" id=\"inp-t\" value=\"15.06.2024 \u00b7 22:00\"\/><\/div>\n    <\/div>\n\n    <!-- STYLE -->\n    <div class=\"pme-section\" id=\"sec-style\">\n      <div class=\"pme-title\">Stil<\/div>\n      <div class=\"pme-desc\">W\u00e4hle ein Farbdesign f\u00fcr deine Sternenkarte.<\/div>\n      <span class=\"pme-lbl\">Design<\/span>\n      <div class=\"pme-pins\" id=\"theme-pins\"><\/div>\n      <span class=\"pme-lbl\">Sternbildlinien<\/span>\n      <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px;\">\n        <button class=\"pme-or active\" id=\"lines-on\">Anzeigen<\/button>\n        <button class=\"pme-or\" id=\"lines-off\">Verbergen<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- SIZE -->\n    <div class=\"pme-section\" id=\"sec-size\">\n      <div class=\"pme-title\">Gr\u00f6\u00dfe<\/div>\n      <div class=\"pme-desc\">W\u00e4hle Material und Gr\u00f6\u00dfe.<\/div>\n      <span class=\"pme-lbl\">Material<\/span>\n      <div id=\"mat-dropdown\">\n        <div class=\"dd-selected\" id=\"mat-selected\"><span id=\"mat-selected-text\">Poster<\/span><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"><path d=\"M2 4l4 4 4-4\" stroke=\"#888\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg><\/div>\n        <div class=\"dd-options\" id=\"mat-options\"><\/div>\n      <\/div>\n      \n      <div id=\"frame-opt-wrap\" style=\"display:none;margin-bottom:14px;\">\n        <span class=\"pme-lbl\">Rahmenfarbe<\/span>\n        <div style=\"display:grid;grid-template-columns:repeat(3,1fr);gap:6px;\">\n          <button class=\"pme-frame active\" data-frame=\"black\">Schwarz<\/button>\n          <button class=\"pme-frame\" data-frame=\"white\">Wei\u00df<\/button>\n          <button class=\"pme-frame\" data-frame=\"wood\">Holz<\/button>\n        <\/div>\n      <\/div>\n\n      <span class=\"pme-lbl\">Gr\u00f6\u00dfe<\/span>\n      <div id=\"size-dropdown\">\n        <div class=\"dd-selected\" id=\"size-selected\"><span id=\"size-selected-text\">30x40cm<\/span><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"><path d=\"M2 4l4 4 4-4\" stroke=\"#888\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg><\/div>\n        <div class=\"dd-options\" id=\"size-options\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"pme-bar\">\n      <div class=\"pme-prices\">\n        <span class=\"pme-old\" id=\"p-old\"><\/span>\n        <span class=\"pme-new\" id=\"p-new\"><\/span>\n      <\/div>\n      <button class=\"pme-cart\" id=\"btn-cart\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"9\" cy=\"21\" r=\"1\"\/><circle cx=\"20\" cy=\"21\" r=\"1\"\/><path d=\"M1 1h4l2.68 13.39a2 2 0 001.99 1.61h9.72a2 2 0 001.99-1.61L23 6H6\"\/><\/svg>\n        In den Warenkorb\n      <\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"pme-canvas\" id=\"pme-canvas\">\n    <div class=\"pme-outer\" id=\"pme-outer\">\n      <div class=\"pme-poster starmap-poster\" id=\"pme-poster\" style=\"width:360px;height:504px;\">\n        <div class=\"pme-poster-inner\" id=\"pme-poster-inner\">\n          <div class=\"star-wrap\" id=\"star-wrap\">\n            <canvas id=\"star-canvas\"><\/canvas>\n          <\/div>\n          <div class=\"pme-footer\" id=\"pme-footer\">\n            <div class=\"pme-h\" id=\"out-h\">IN DIESER NACHT BEGANN ALLES<\/div>\n            <div class=\"pme-dt\" id=\"out-d\">PARIS, FRANKREICH<\/div>\n            <div class=\"pme-tg\" id=\"out-t\">15.06.2024 \u00b7 22:00<\/div>\n            <div class=\"pme-coords\" id=\"out-c\">48.8566\u00b0N \/ 2.3522\u00b0E<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"pme-dimr\"><span id=\"dim-h\">40 cm<\/span><\/div>\n      <div class=\"pme-dimb\"><span id=\"dim-w\">30 cm<\/span><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n\n\/\/ \u2500\u2500 THEMES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar THEMES = [\n  { id:'bw',     name:'S\/W',     posterBg:'#ffffff', circleBg:'#ffffff', starCol:'#1a1a1a', lineCol:'#b0b0b0', textCol:'#1a1a1a' },\n  { id:'black',  name:'Schwarz', posterBg:'#ffffff', circleBg:'#000000', starCol:'#ffffff', lineCol:'#ffffff', textCol:'#1a1a1a' },\n  { id:'red',    name:'Rot',     posterBg:'#ffffff', circleBg:'#BE0029', starCol:'#ffffff', lineCol:'#ffffff', textCol:'#1a1a1a' },\n  { id:'dark',   name:'Dunkel',  posterBg:'#1a1a1a', circleBg:'#1a1a1a', starCol:'#ffffff', lineCol:'#aaaaaa', textCol:'#ffffff' },\n  { id:'nautica',name:'Nautica', posterBg:'#fdf7efff', circleBg:'#c8e2d5ff', starCol:'#cf8a7c', lineCol:'#cf8a7c', textCol:'#000000', circleBorder:'#c8e2d5ff' },\n  { id:'gray',   name:'Grau',    posterBg:'#3a3a3a', circleBg:'#3a3a3a', starCol:'#ffffff', lineCol:'#aaaaaa', textCol:'#ffffff' },\n  { id:'navy',   name:'Navy',    posterBg:'#306692', circleBg:'#306692', starCol:'#ffffff', lineCol:'#ffffff', textCol:'#ffffff' },\n  { id:'blush',  name:'Blush',   posterBg:'#f5e8e0', circleBg:'#f5e8e0', starCol:'#2a1a0a', lineCol:'#9a7060', textCol:'#1a1a1a' },\n];\n\nvar SIZES = window.UWA_GLOBAL_SIZES;\nvar MATS = ['poster','framed','canvas'];\nvar MAT_LABELS = {poster:'Poster',framed:'Gerahmtes Poster',canvas:'Leinwand'};\n\nvar S = {\n  mat:'poster', sizeIdx:1,\n  themeId:'navy', showLines:true,\n  lat:48.8566, lng:2.3522,\n  date:'2024-06-15', time:'22:00', frame:'black'\n};\n\nfunction getTheme(){ return THEMES.find(function(t){ return t.id===S.themeId; })||THEMES[0]; }\n\n\/\/ \u2500\u2500 URL STATE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n(function(){\n  var p = new URLSearchParams(window.location.search);\n  if(p.get('mat')) S.mat = p.get('mat');\n  if(p.get('size')) S.sizeIdx = parseInt(p.get('size'));\n  if(p.get('theme')) S.themeId = p.get('theme');\n  if(p.get('lat')) S.lat = parseFloat(p.get('lat'));\n  if(p.get('lng')) S.lng = parseFloat(p.get('lng'));\n  if(p.get('date')){ S.date=p.get('date'); document.getElementById('inp-date').value=S.date; }\n  if(p.get('time')){ S.time=p.get('time'); document.getElementById('inp-time').value=S.time; }\n  if(p.get('lines')) S.showLines = p.get('lines')!=='0';\n  if(p.get('frame')) S.frame = p.get('frame');\n  if(p.get('h')) document.getElementById('inp-h').value=decodeURIComponent(p.get('h'));\n  if(p.get('d')) document.getElementById('inp-d').value=decodeURIComponent(p.get('d'));\n  if(p.get('t')) document.getElementById('inp-t').value=decodeURIComponent(p.get('t'));\n})();\n\nfunction updateURL(){\n  var p = new URLSearchParams();\n  p.set('mat',S.mat); p.set('size',S.sizeIdx); p.set('theme',S.themeId);\n  p.set('lat',S.lat); p.set('lng',S.lng);\n  p.set('date',S.date); p.set('time',S.time);\n  p.set('lines',S.showLines?'1':'0');\n  if(S.mat === 'framed') p.set('frame', S.frame);\n  p.set('h',encodeURIComponent(document.getElementById('inp-h').value));\n  p.set('d',encodeURIComponent(document.getElementById('inp-d').value));\n  p.set('t',encodeURIComponent(document.getElementById('inp-t').value));\n  history.replaceState(null,'','?'+p.toString());\n}\n\n\/\/ \u2500\u2500 ASTRONOMY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nvar A_STARS = [];\nvar C_LINES = [];\nvar dataLoaded = false;\nvar dataFailed = false;\n\nPromise.all([\n  fetch('\/wp-content\/uploads\/starmap-data\/stars.6.json').then(r=>r.json()),\n  fetch('\/wp-content\/uploads\/starmap-data\/constellations.lines.json').then(r=>r.json())\n]).then(function(results){\n   \n  var starsData = results[0];\n  var linesData = results[1];\n \n  starsData.features.forEach(function(f){\n      A_STARS.push({\n        ra: f.geometry.coordinates[0]\/15,\n        dec: f.geometry.coordinates[1],\n        mag: f.properties.mag\n      });\n  });\n \n  linesData.features.forEach(function(f){\n      if(f.geometry.type === 'MultiLineString'){\n          f.geometry.coordinates.forEach(function(line){\n              C_LINES.push(line.map(function(pt){\n                  return {ra: pt[0]\/15, dec: pt[1]};\n              }));\n          });\n      }\n  });\n  dataLoaded = true;\n  drawStarMap();\n}).catch(function(e){\n  console.error(\"Star Data Failed to Load\", e);\n  dataFailed = true;\n  drawStarMap();\n});\n\nfunction julianDate(dateStr, timeStr){\n  var d = new Date(dateStr+'T'+timeStr+':00Z');\n  return d.getTime()\/86400000 + 2440587.5;\n}\n\nfunction starAltAz(ra_h, dec_deg, lat, lng, jd){\n  var ra = ra_h*15*Math.PI\/180;\n  var dec = dec_deg*Math.PI\/180;\n  var latR = lat*Math.PI\/180;\n  var T = (jd-2451545.0)\/36525;\n  var GST = (280.46061837 + 360.98564736629*(jd-2451545) + 0.000387933*T*T) % 360;\n  if(GST<0) GST+=360;\n  var LST = ((GST+lng)%360);\n  if(LST<0) LST+=360;\n  var HA = (LST*Math.PI\/180)-ra;\n  var sinAlt = Math.sin(dec)*Math.sin(latR)+Math.cos(dec)*Math.cos(latR)*Math.cos(HA);\n  var alt = Math.asin(Math.max(-1,Math.min(1,sinAlt)));\n  var cosAz = (Math.sin(dec)-Math.sin(alt)*Math.sin(latR))\/(Math.cos(alt)*Math.cos(latR));\n  var az = Math.acos(Math.max(-1,Math.min(1,cosAz)));\n  if(Math.sin(HA)>0) az=2*Math.PI-az;\n  return {alt:alt*180\/Math.PI, az:az*180\/Math.PI};\n}\n\nfunction projectStar(alt, az, cx, cy, R){\n  var azR = az*Math.PI\/180;\n  var r = R * (1 - alt\/90); \n  return {\n      x: cx - r * Math.sin(azR),\n      y: cy - r * Math.cos(azR)\n  };\n}\n\n\/\/ \u2500\u2500 DRAW \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction drawStarMap(){\n  var canvas = document.getElementById('star-canvas');\n  var poster = document.getElementById('pme-poster');\n  var footer = document.getElementById('pme-footer');\n \n  var avW = poster.clientWidth - 68; \n  var avH = poster.clientHeight - footer.offsetHeight - 58; \n  var D = Math.min(avW, avH);\n  if(D < 10) return;\n\n  canvas.width = D;\n  canvas.height = D;\n  canvas.style.width = D+'px';\n  canvas.style.height = D+'px';\n\n  var ctx = canvas.getContext('2d');\n  var t = getTheme();\n  var cx = D\/2, cy = D\/2, R = D\/2 - 2;\n\n  ctx.fillStyle = t.circleBg;\n  ctx.beginPath();\n  ctx.arc(cx,cy,R,0,Math.PI*2);\n  ctx.fill();\n\n  ctx.save();\n  ctx.beginPath();\n  ctx.arc(cx,cy,R,0,Math.PI*2);\n  ctx.clip();\n\n  if(t.id==='dark'||t.id==='gray'||t.id==='navy'){\n    var g = ctx.createRadialGradient(cx-R*0.2,cy-R*0.3,0,cx,cy,R);\n    g.addColorStop(0,'rgba(255,255,255,0.03)');\n    g.addColorStop(1,'rgba(0,0,0,0.2)');\n    ctx.fillStyle = g;\n    ctx.fillRect(0,0,D,D);\n  }\n\n  ctx.strokeStyle = t.id==='bw' ? 'rgba(0,0,0,0.1)' : 'rgba(255,255,255,0.12)'; \n  ctx.lineWidth = 0.5;\n  for(var i=1; i<=6; i++){\n    ctx.beginPath(); ctx.arc(cx, cy, R * (i\/6), 0, Math.PI*2); ctx.stroke();\n  }\n  for(var i=0; i<24; i++){\n    var ang = i * Math.PI\/12;\n    ctx.beginPath(); ctx.moveTo(cx, cy); ctx.lineTo(cx + R * Math.cos(ang), cy + R * Math.sin(ang)); ctx.stroke();\n  }\n\n  if(!dataLoaded && !dataFailed){\n      ctx.fillStyle = t.textCol;\n      ctx.font = '500 12px \"Poppins\"';\n      ctx.textAlign = 'center';\n      ctx.globalAlpha = 0.5;\n      ctx.fillText('Universum wird geladen...', cx, cy);\n      ctx.globalAlpha = 1.0;\n      ctx.restore();\n      return;\n  }\n\n  var jd = julianDate(S.date, S.time);\n\n  if(S.showLines){\n    ctx.strokeStyle = t.id==='bw' ? 'rgba(0,0,0,0.25)' : 'rgba(255,255,255,0.25)';\n    ctx.lineWidth = 0.4;\n    ctx.lineJoin = 'round';\n   \n    C_LINES.forEach(function(line){\n      ctx.beginPath();\n      var pts = line.map(function(pt){\n        var pos = starAltAz(pt.ra, pt.dec, S.lat, S.lng, jd);\n        return projectStar(pos.alt, pos.az, cx, cy, R);\n      });\n      \n      for(var i=0; i<pts.length; i++){\n        if(i===0) { ctx.moveTo(pts[i].x, pts[i].y); }\n        else {\n          var dist = Math.hypot(pts[i].x - pts[i-1].x, pts[i].y - pts[i-1].y);\n          if(dist < R * 1.5) ctx.lineTo(pts[i].x, pts[i].y);\n          else ctx.moveTo(pts[i].x, pts[i].y);\n        }\n      }\n      ctx.stroke();\n    });\n  }\n\n  A_STARS.forEach(function(s){\n    var pos = starAltAz(s.ra, s.dec, S.lat, S.lng, jd);\n    if(pos.alt < -2) return; \n   \n    var p = projectStar(pos.alt, pos.az, cx, cy, R);\n    var mag = s.mag;\n    var size, alpha;\n   \n    if(mag < 1.5) { size = 1.8; alpha = 1.0; }\n    else if(mag < 3.0) { size = 1.2; alpha = 0.85; }\n    else if(mag < 4.5) { size = 0.7; alpha = 0.6; }\n    else { size = 0.4; alpha = 0.35; }\n   \n    if(mag < 2 && t.id !== 'bw') {\n      var g = ctx.createRadialGradient(p.x, p.y, 0, p.x, p.y, size*3.5);\n      g.addColorStop(0, hexAlpha(t.starCol, 0.4));\n      g.addColorStop(1, 'rgba(0,0,0,0)');\n      ctx.fillStyle = g;\n      ctx.beginPath(); ctx.arc(p.x, p.y, size*3.5, 0, Math.PI*2); ctx.fill();\n    }\n   \n    ctx.fillStyle = t.starCol;\n    ctx.globalAlpha = alpha;\n    ctx.beginPath(); ctx.arc(p.x, p.y, size, 0, Math.PI*2); ctx.fill();\n  });\n  ctx.globalAlpha = 1.0;\n\n  ctx.restore();\n\n  ctx.strokeStyle = t.circleBorder ? t.circleBorder : (t.id==='bw' ? 'rgba(0,0,0,0.8)' : hexAlpha(t.lineCol, 0.6));\n  ctx.lineWidth = 1.0;\n  ctx.beginPath();\n  ctx.arc(cx,cy,R,0,Math.PI*2);\n  ctx.stroke();\n}\n\nfunction hexAlpha(hex, a){\n  var r=parseInt(hex.slice(1,3),16);\n  var g=parseInt(hex.slice(3,5),16);\n  var b=parseInt(hex.slice(5,7),16);\n  return 'rgba('+r+','+g+','+b+','+a+')';\n}\n\nfunction updatePosterBg(){\n  var t = getTheme();\n  document.getElementById('pme-poster-inner').style.background = t.posterBg;\n  ['out-h','out-d','out-t','out-c'].forEach(function(id){\n    var el = document.getElementById(id);\n    if(el) el.style.color = t.textCol;\n  });\n}\n\nfunction updateText(){\n  document.getElementById('out-h').textContent = document.getElementById('inp-h').value.toUpperCase();\n  document.getElementById('out-d').textContent = document.getElementById('inp-d').value.toUpperCase();\n  document.getElementById('out-t').textContent = document.getElementById('inp-t').value.toUpperCase();\n \n  var latStr = Math.abs(S.lat).toFixed(4) + \"\u00b0\" + (S.lat >= 0 ? \"N\" : \"S\");\n  var lngStr = Math.abs(S.lng).toFixed(4) + \"\u00b0\" + (S.lng >= 0 ? \"E\" : \"W\");\n  document.getElementById('out-c').textContent = latStr + \" \/ \" + lngStr;\n \n  updateURL();\n}\n\nfunction renderThemePins(){\n  var c = document.getElementById('theme-pins');\n  c.innerHTML = THEMES.map(function(t){\n    var active = t.id===S.themeId?' active':'';\n    var split = '';\n   \n    if (t.id === 'bw') split = '<div style=\"width:50%;height:100%;background:#1a1a1a;\"><\/div>';\n    else if (t.id === 'black') split = '<div style=\"width:50%;height:100%;background:#000000;\"><\/div>';\n    else if (t.id === 'red') split = '<div style=\"width:50%;height:100%;background:#BE0029;\"><\/div>';\n\n    var previewBg = t.id === 'nautica' ? '#c8e2d5ff' : t.posterBg;\n    var preview = '<div style=\"width:34px; height:34px; border-radius:50%; background:'+previewBg+'; overflow:hidden; display:flex; margin-top:2px; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.15);\">' + split + '<\/div>';\n   \n    return '<div class=\"pme-pin'+active+'\" data-id=\"'+t.id+'\">'\n      +preview+'<span>'+t.name+'<\/span>'\n      +'<\/div>';\n  }).join('');\n \n  c.querySelectorAll('.pme-pin').forEach(function(pin){\n    pin.addEventListener('click', function(){\n      c.querySelectorAll('.pme-pin').forEach(function(p){ p.classList.remove('active'); });\n      this.classList.add('active');\n      S.themeId = this.getAttribute('data-id');\n      updatePosterBg(); drawStarMap(); updateURL();\n    });\n  });\n}\n\ndocument.querySelectorAll('.pme-nav-btn, .pme-mobbtn').forEach(function(btn){\n  btn.addEventListener('click', function(){\n    var panel = this.getAttribute('data-panel');\n    document.querySelectorAll('.pme-section').forEach(function(s){ s.classList.remove('active'); });\n    document.querySelectorAll('.pme-nav-btn,.pme-mobbtn').forEach(function(b){ b.classList.remove('active'); });\n    document.getElementById('sec-'+panel).classList.add('active');\n    document.querySelectorAll('[data-panel=\"'+panel+'\"]').forEach(function(b){ b.classList.add('active'); });\n  });\n});\n\nfunction autoTagline(){\n  var dVal = document.getElementById('inp-date').value;\n  if(!dVal) return;\n  var p = dVal.split('-');\n  if(p.length === 3){\n    document.getElementById('inp-t').value = p[2]+'.'+p[1]+'.'+p[0]+' \u00b7 '+document.getElementById('inp-time').value;\n    updateText();\n  }\n}\ndocument.getElementById('inp-date').addEventListener('change', function(){ S.date=this.value; autoTagline(); drawStarMap(); });\ndocument.getElementById('inp-time').addEventListener('change', function(){ S.time=this.value; autoTagline(); drawStarMap(); });\n\nvar stimer;\ndocument.getElementById('pme-sinput').addEventListener('input', function(){\n  clearTimeout(stimer);\n  if(this.value.length<2){ document.getElementById('pme-results').classList.remove('show'); return; }\n  stimer = setTimeout(doSearch,500);\n});\nfunction doSearch(){\n  var q = document.getElementById('pme-sinput').value.trim();\n  if(!q) return;\n  var box = document.getElementById('pme-results');\n  fetch('https:\/\/photon.komoot.io\/api\/?q='+encodeURIComponent(q)+'&limit=5&lang=de')\n    .then(function(r){ return r.json(); })\n    .then(function(d){\n      if(!d.features||!d.features.length){ box.innerHTML='<div class=\"pme-ri\">Keine Ergebnisse<\/div>'; box.classList.add('show'); return; }\n      box.innerHTML = d.features.map(function(f){\n        var p=f.properties;\n        var name=(p.name||p.city||q).replace(\/\"\/g,'');\n        var sub=[p.city,p.state,p.country].filter(Boolean).join(', ');\n        var lng=f.geometry.coordinates[0], lat=f.geometry.coordinates[1];\n        return '<div class=\"pme-ri\" data-lng=\"'+lng+'\" data-lat=\"'+lat+'\" data-name=\"'+name+'\" data-sub=\"'+sub+'\"><strong>'+name+'<\/strong><span>'+sub+'<\/span><\/div>';\n      }).join('');\n      box.classList.add('show');\n      box.querySelectorAll('.pme-ri').forEach(function(item){\n        item.addEventListener('click', function(){\n          S.lat=parseFloat(this.getAttribute('data-lat'));\n          S.lng=parseFloat(this.getAttribute('data-lng'));\n          var name=this.getAttribute('data-name'), sub=this.getAttribute('data-sub');\n          var full = sub?name+', '+sub:name;\n         \n          document.getElementById('pme-sinput').value=full;\n          document.getElementById('inp-d').value=full;\n         \n          box.classList.remove('show');\n          autoTagline(); drawStarMap(); updateURL();\n        });\n      });\n    }).catch(function(){});\n}\ndocument.addEventListener('click', function(e){\n  if(!e.target.closest('#pme-sinput')&&!e.target.closest('#pme-results'))\n    document.getElementById('pme-results').classList.remove('show');\n});\n\n['inp-h','inp-d','inp-t'].forEach(function(id){\n  document.getElementById(id).addEventListener('input', updateText);\n});\n\ndocument.getElementById('lines-on').addEventListener('click', function(){\n  S.showLines=true; this.classList.add('active'); document.getElementById('lines-off').classList.remove('active');\n  drawStarMap(); updateURL();\n});\ndocument.getElementById('lines-off').addEventListener('click', function(){\n  S.showLines=false; this.classList.add('active'); document.getElementById('lines-on').classList.remove('active');\n  drawStarMap(); updateURL();\n});\n\ndocument.querySelectorAll('.pme-frame').forEach(function(btn) {\n  btn.addEventListener('click', function() {\n    document.querySelectorAll('.pme-frame').forEach(function(b) { b.classList.remove('active'); });\n    this.classList.add('active');\n    S.frame = this.getAttribute('data-frame');\n    updateDims();\n    updateURL();\n  });\n});\n\nfunction renderMaterials(){\n  var optsDiv = document.getElementById('mat-options');\n  var selText = document.getElementById('mat-selected-text');\n  var selDiv  = document.getElementById('mat-selected');\n  function selectMat(mat){\n    S.mat=mat;\n   \n    var sizes = SIZES[S.mat] || [];\n    S.sizeIdx = 0;\n    for (var i = 0; i < sizes.length; i++) {\n      if (sizes[i].l.includes('30x40cm')) {\n        S.sizeIdx = i;\n        break;\n      }\n    }\n   \n    selText.textContent = MAT_LABELS[mat];\n    optsDiv.style.display='none';\n    renderSizes(); updateURL();\n  }\n  optsDiv.innerHTML = MATS.map(function(m){\n    return '<div class=\"size-opt\" data-mat=\"'+m+'\" style=\"padding:10px 12px;font-size:14px;font-family:\\'Poppins\\',sans-serif;cursor:pointer;border-bottom:1px solid #f0f0f0;\">'+MAT_LABELS[m]+'<\/div>';\n  }).join('');\n  optsDiv.querySelectorAll('.size-opt').forEach(function(el){\n    el.addEventListener('mouseenter',function(){ this.style.background='#f5f5f5'; });\n    el.addEventListener('mouseleave',function(){ this.style.background=''; });\n    el.addEventListener('click',function(){ selectMat(this.getAttribute('data-mat')); });\n  });\n  selDiv.onclick = function(e){ e.stopPropagation(); optsDiv.style.display=optsDiv.style.display==='none'?'block':'none'; };\n  document.addEventListener('click',function(){ optsDiv.style.display='none'; });\n  selText.textContent = MAT_LABELS[S.mat];\n}\n\nfunction buildLabel(s){\n  return s.l+'\\u00a0\\u00a0<s style=\"color:#999\">'+s.orig.toFixed(2)+'\\u00a0\\u20ac<\/s>\\u00a0\\u00a0<span style=\"color:#e00\">'+s.p.toFixed(2)+'\\u00a0\\u20ac<\/span>';\n}\nfunction renderSizes(){\n  var sizes=SIZES[S.mat]||[];\n  var optsDiv=document.getElementById('size-options');\n  var selText=document.getElementById('size-selected-text');\n  var selDiv=document.getElementById('size-selected');\n \n  var frameWrap = document.getElementById('frame-opt-wrap');\n  if (frameWrap) {\n    frameWrap.style.display = (S.mat === 'framed') ? 'block' : 'none';\n  }\n \n  function selectIdx(i){\n    S.sizeIdx=i; selText.innerHTML=buildLabel(sizes[i]);\n    optsDiv.style.display='none';\n    updatePrice(); updateDims(); updateURL();\n  }\n  optsDiv.innerHTML=sizes.map(function(s,i){\n    return '<div class=\"size-opt\" data-idx=\"'+i+'\" style=\"padding:10px 12px;font-size:14px;font-family:\\'Poppins\\',sans-serif;cursor:pointer;border-bottom:1px solid #f0f0f0;\">'+buildLabel(s)+'<\/div>';\n  }).join('');\n  optsDiv.querySelectorAll('.size-opt').forEach(function(el){\n    el.addEventListener('mouseenter',function(){ this.style.background='#f5f5f5'; });\n    el.addEventListener('mouseleave',function(){ this.style.background=''; });\n    el.addEventListener('click',function(){ selectIdx(parseInt(this.getAttribute('data-idx'))); });\n  });\n  selDiv.onclick=function(e){ e.stopPropagation(); optsDiv.style.display=optsDiv.style.display==='none'?'block':'none'; };\n  document.addEventListener('click',function(){ optsDiv.style.display='none'; });\n  selectIdx(S.sizeIdx<sizes.length?S.sizeIdx:0);\n}\n\nfunction updatePrice(){\n  var s=(SIZES[S.mat]||[])[S.sizeIdx];\n  if(!s) return;\n  document.getElementById('p-old').textContent=s.orig.toFixed(2).replace('.',',')+' EUR';\n  document.getElementById('p-new').textContent=s.p.toFixed(2).replace('.',',')+' EUR';\n}\n\nfunction updateDims(){\n  var s=(SIZES[S.mat]||[])[S.sizeIdx];\n  if(!s) return;\n  document.getElementById('dim-w').textContent=s.w+' cm';\n  document.getElementById('dim-h').textContent=s.h+' cm';\n  var BASE=504;\n  var pw=s.w, ph=s.h;\n  var longer=Math.max(pw,ph), shorter=Math.min(pw,ph);\n  var baseW = Math.round(BASE*shorter\/longer);\n  var baseH = BASE;\n  var poster=document.getElementById('pme-poster');\n\n  if (S.mat === 'framed') {\n    var thicknessMm = s.l.includes('13x18cm') ? 10 : 14;\n    var framePx = thicknessMm * (BASE \/ (longer * 10));\n\n    poster.style.borderWidth = framePx + 'px';\n    poster.style.borderStyle = 'solid';\n\n    if (S.frame === 'wood') {\n      poster.style.borderColor = '#d7c5b3';\n      poster.style.borderImage = \"url(\\\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.01 0.4' numOctaves='2' result='noise'\/%3E%3CfeColorMatrix type='matrix' values='1 0 0 0 0 0 0.8 0 0 0 0 0.5 0 0 0 0 0 0 0.15 0' in='noise'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' fill='%23d7c5b3'\/%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'\/%3E%3C\/svg%3E\\\") 10 stretch\";\n    } else if (S.frame === 'white') {\n      poster.style.borderImage = \"\";\n      poster.style.borderColor = '#ffffff';\n    } else { \/\/ black\n      poster.style.borderImage = \"\";\n      poster.style.borderColor = '#1a1a1a';\n    }\n   \n    poster.style.width = (baseW - 2 + framePx * 2) + 'px';\n    poster.style.height = (baseH - 2 + framePx * 2) + 'px';\n    poster.classList.add('is-framed');\n  } else {\n    poster.style.border = '';\n    poster.style.borderImage = '';\n    poster.style.width = baseW + 'px';\n    poster.style.height = baseH + 'px';\n    poster.classList.remove('is-framed');\n  }\n\n  setTimeout(function(){ fitPoster(); drawStarMap(); },60);\n}\n\nfunction fitPoster(){\n  var canvas=document.getElementById('pme-canvas');\n  var outer=document.getElementById('pme-outer');\n  var poster=document.getElementById('pme-poster');\n  if(!canvas||!poster.offsetWidth) return;\n \n  var isMob = window.innerWidth <= 768;\n \n  var aH = canvas.clientHeight - (isMob ? 50 : 60);\n  var aW = canvas.clientWidth - (isMob ? 50 : 80);\n \n  var scale = Math.min(aH \/ poster.offsetHeight, aW \/ poster.offsetWidth, isMob ? 2.5 : 1.4);\n  outer.style.transform='scale('+scale+')';\n  outer.style.transformOrigin='center center';\n}\n\nfunction setHeight(){\n  var el=document.getElementById('pme-root');\n  if(!el) return;\n \n  var isMob = window.innerWidth <= 768;\n\n  if (isMob) {\n    el.style.height = 'auto'; \n    var panel = document.querySelector('.pme-panel');\n    var nav = document.querySelector('.pme-nav');\n    var canvas = document.getElementById('pme-canvas');\n    if (panel) panel.style.height = '';\n    if (nav) nav.style.height = '';\n    if (canvas) canvas.style.height = '';\n  } else {\n    var r=el.getBoundingClientRect();\n    var h=Math.max(window.innerHeight-r.top,500);\n    el.style.height=h+'px';\n    var panel = document.querySelector('.pme-panel');\n    var nav = document.querySelector('.pme-nav');\n    var canvas = document.getElementById('pme-canvas');\n    if(panel) panel.style.height=h+'px';\n    if(nav) nav.style.height=h+'px';\n    if(canvas) canvas.style.height=h+'px';\n  }\n \n  setTimeout(function(){ fitPoster(); drawStarMap(); },100);\n}\n\nwindow.addEventListener('load',setHeight);\nwindow.addEventListener('resize',function(){ setHeight(); });\nsetTimeout(setHeight,300);\n\ndocument.getElementById('btn-cart').addEventListener('click', function(){\n  var btn = this;\n  var origHTML = btn.innerHTML; \n  btn.innerHTML = 'L\u00e4dt...';\n  btn.style.pointerEvents = 'none';\n\n  updateURL();\n\n  var s=(SIZES[S.mat]||[])[S.sizeIdx]||{};\n  var t=getTheme();\n  var cartData={\n    action:'uwa_add_to_cart',\n    product_id:'733',\n    poster_title:document.getElementById('inp-h').value,\n    poster_subtitle:document.getElementById('inp-d').value,\n    poster_coordinates:document.getElementById('inp-t').value,\n    poster_lat:S.lat.toFixed(6),\n    poster_lng:S.lng.toFixed(6),\n    poster_date:S.date,\n    poster_time:S.time,\n    poster_style:S.themeId,\n    poster_material:S.mat,\n    poster_frame:(S.mat === 'framed') ? S.frame : '',\n    poster_size:s.l||'',\n    poster_orientation:S.orient || 'portrait',\n    poster_price:s.p||'',\n    poster_original_price:s.orig||'',\n    poster_url: window.location.href \n  };\n \n  var starCanvas=document.getElementById('star-canvas');\n  var poster=document.getElementById('pme-poster');\n  var footer=document.getElementById('pme-footer');\n  var W=poster.offsetWidth, H=poster.offsetHeight;\n \n  var out=document.createElement('canvas');\n  out.width=W; out.height=H;\n  var ctx2=out.getContext('2d');\n \n  ctx2.fillStyle='#ffffff';\n  ctx2.fillRect(0,0,W,H);\n \n  var pad=14; \n  ctx2.fillStyle=t.posterBg;\n  ctx2.fillRect(pad,pad,W-2*pad,H-2*pad);\n \n  var sw=starCanvas.width, sh=starCanvas.height;\n  var footerH = footer.offsetHeight;\n  var availableH = H - 2*pad - footerH;\n  var sx = (W - sw)\/2;\n  var sy = pad + (availableH - sh)\/2; \n  ctx2.drawImage(starCanvas,sx,sy);\n \n  ctx2.fillStyle=t.textCol;\n  ctx2.textAlign='center';\n \n  var bY = H - pad - 24; \n  ctx2.font='400 7px Rubik,sans-serif'; \n  ctx2.letterSpacing='2px';\n  ctx2.globalAlpha=0.85;\n  ctx2.fillText(document.getElementById('out-c').textContent,W\/2,bY);\n \n  ctx2.fillText(document.getElementById('out-t').textContent,W\/2,bY-12);\n \n  ctx2.font='600 9px Rubik,sans-serif'; \n  ctx2.globalAlpha=1.0;\n  ctx2.fillText(document.getElementById('out-d').textContent,W\/2,bY-28);\n \n  ctx2.font='700 17px Rubik,sans-serif';\n  ctx2.fillText(document.getElementById('out-h').textContent,W\/2,bY-43);\n\n  cartData.poster_thumbnail=out.toDataURL('image\/jpeg',0.92);\n\n  function sendToCart(data){\n    var body=Object.keys(data).map(function(k){ return encodeURIComponent(k)+'='+encodeURIComponent(data[k]); }).join('&');\n    fetch('https:\/\/zulumaps.com\/wp-admin\/admin-ajax.php',{\n      method:'POST',headers:{'Content-Type':'application\/x-www-form-urlencoded'},body:body\n    }).then(function(r){ return r.json(); })\n    .then(function(res){\n      if(res.success){\n        window.location.href='https:\/\/zulumaps.com\/cart\/';\n      } else {\n        console.error(\"Cart error:\", res);\n        alert(\"Fehler beim Hinzuf\u00fcgen zum Warenkorb.\");\n        btn.innerHTML = origHTML;\n        btn.style.pointerEvents = 'auto';\n      }\n    })\n    .catch(function(err){\n      console.error(\"AJAX Error:\", err);\n      alert(\"Es gab einen Verbindungsfehler.\");\n      btn.innerHTML = origHTML;\n      btn.style.pointerEvents = 'auto';\n    });\n  }\n  sendToCart(cartData);\n});\n\nrenderThemePins();\nrenderMaterials();\nrenderSizes();\nupdateText();\nupdatePosterBg();\n\nif (S.frame) {\n  document.querySelectorAll('.pme-frame').forEach(function(btn) {\n    btn.classList.toggle('active', btn.getAttribute('data-frame') === S.frame);\n  });\n}\nif (S.mat === 'framed') {\n  document.getElementById('pme-poster').classList.add('is-framed');\n}\n\n})();\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2166","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zulumaps.com\/de\/wp-json\/wp\/v2\/pages\/2166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zulumaps.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zulumaps.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zulumaps.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zulumaps.com\/de\/wp-json\/wp\/v2\/comments?post=2166"}],"version-history":[{"count":10,"href":"https:\/\/zulumaps.com\/de\/wp-json\/wp\/v2\/pages\/2166\/revisions"}],"predecessor-version":[{"id":3065,"href":"https:\/\/zulumaps.com\/de\/wp-json\/wp\/v2\/pages\/2166\/revisions\/3065"}],"wp:attachment":[{"href":"https:\/\/zulumaps.com\/de\/wp-json\/wp\/v2\/media?parent=2166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}