{"id":126,"date":"2026-05-17T14:52:22","date_gmt":"2026-05-17T14:52:22","guid":{"rendered":"https:\/\/nordbalance.dk\/?page_id=126"},"modified":"2026-06-04T18:44:48","modified_gmt":"2026-06-04T18:44:48","slug":"opsparing","status":"publish","type":"page","link":"https:\/\/nordbalance.dk\/?page_id=126","title":{"rendered":"Opsparing"},"content":{"rendered":"\n<style>\nhtml,body{max-width:100%;overflow-x:hidden}\nbody .entry-content,\nbody .wp-block-post-content,\nbody .wp-site-blocks,\nbody .is-layout-constrained,\nbody .wp-block-group,\nbody .wp-block-html{\n  max-width:100%!important;\n  width:100%!important;\n}\n\n.os-wrap{\n  max-width:1250px;\n  margin:auto;\n  padding:25px 15px;\n  font-family:Inter,Arial,sans-serif;\n  background:#f5f7fb;\n  color:#0f172a;\n}\n\n.os-top{\n  display:flex;\n  justify-content:space-between;\n  align-items:center;\n  gap:20px;\n  margin-bottom:20px;\n  flex-wrap:wrap;\n}\n\n.os-top h1{\n  font-size:38px;\n  margin:0;\n  font-weight:900;\n}\n\n.os-top p{\n  color:#64748b;\n  font-size:17px;\n  margin-top:6px;\n}\n\n.os-logout{\n  background:#0f172a;\n  color:white;\n  text-decoration:none;\n  padding:14px 22px;\n  border-radius:14px;\n  font-weight:800;\n  display:inline-block;\n}\n\n.nb-menu{\n  display:flex;\n  flex-wrap:wrap;\n  gap:12px;\n  background:#fff;\n  padding:18px;\n  border-radius:24px;\n  margin-bottom:25px;\n  box-shadow:0 10px 30px rgba(0,0,0,.05);\n}\n\n.nb-menu a{\n  padding:14px 18px;\n  border-radius:14px;\n  background:#eef2ff;\n  font-size:16px;\n  font-weight:800;\n  text-decoration:none;\n  color:#0f172a;\n  display:inline-block;\n  text-align:center;\n}\n\n.nb-menu a:hover{\n  background:#dbeafe;\n}\n\n.nb-menu a.active{\n  background:#2563eb!important;\n  color:white!important;\n}\n\n.os-hero{\n  background:linear-gradient(135deg,#0f172a,#2563eb);\n  padding:40px;\n  border-radius:30px;\n  color:white;\n  margin-bottom:25px;\n}\n\n.os-title{\n  font-size:50px;\n  font-weight:900;\n  margin-bottom:16px;\n  line-height:1.1;\n}\n\n.os-text{\n  font-size:20px;\n  line-height:1.7;\n  max-width:850px;\n  opacity:.95;\n}\n\n.os-status{\n  background:#fff7ed;\n  border:2px solid #fdba74;\n  padding:24px;\n  border-radius:24px;\n  margin-bottom:25px;\n}\n\n.os-status.success{\n  background:#ecfdf5;\n  border-color:#86efac;\n}\n\n.os-status.error{\n  background:#fef2f2;\n  border-color:#fca5a5;\n}\n\n.os-status-title{\n  font-size:24px;\n  font-weight:900;\n  margin-bottom:8px;\n  color:#9a3412;\n}\n\n.os-status.success .os-status-title{color:#166534}\n.os-status.error .os-status-title{color:#991b1b}\n\n.os-status-text{\n  font-size:17px;\n  line-height:1.6;\n  color:#7c2d12;\n}\n\n.os-status.success .os-status-text{color:#166534}\n.os-status.error .os-status-text{color:#991b1b}\n\n.os-grid{\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:22px;\n  margin-bottom:25px;\n}\n\n.os-card{\n  background:white;\n  padding:28px;\n  border-radius:28px;\n  box-shadow:0 10px 30px rgba(0,0,0,.05);\n}\n\n.os-card h2{\n  font-size:32px;\n  margin:0 0 10px;\n  font-weight:900;\n}\n\n.os-card p{\n  font-size:17px;\n  line-height:1.7;\n  color:#64748b;\n}\n\n.os-form{\n  display:grid;\n  gap:14px;\n  margin-top:18px;\n}\n\n.os-form label{\n  font-weight:900;\n  font-size:17px;\n}\n\n.os-form input{\n  width:100%;\n  padding:15px;\n  border:1px solid #cbd5e1;\n  border-radius:14px;\n  font-size:17px;\n  box-sizing:border-box;\n}\n\n.os-btn{\n  border:none;\n  border-radius:14px;\n  padding:16px 18px;\n  font-size:18px;\n  font-weight:900;\n  cursor:pointer;\n  color:white;\n  background:#22c55e;\n}\n\n.os-btn.save{\n  background:#2563eb;\n}\n\n.os-message{\n  font-size:17px;\n  font-weight:900;\n  color:#16a34a;\n  margin-top:8px;\n}\n\n.os-stats{\n  display:grid;\n  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));\n  gap:18px;\n  margin-top:22px;\n}\n\n.os-stat{\n  background:#f8fafc;\n  padding:22px;\n  border-radius:22px;\n  min-height:110px;\n  display:flex;\n  flex-direction:column;\n  justify-content:space-between;\n}\n\n.os-stat span{\n  color:#64748b;\n  font-size:16px;\n  font-weight:800;\n}\n\n.os-stat strong{\n  font-size:24px;\n  font-weight:900;\n}\n\n.os-progress-text{\n  background:#f8fafc;\n  border-radius:20px;\n  padding:20px;\n  margin-top:18px;\n  font-size:18px;\n  line-height:1.6;\n  font-weight:800;\n  color:#0f172a;\n}\n\n.os-list-card{\n  background:white;\n  padding:28px;\n  border-radius:28px;\n  box-shadow:0 10px 30px rgba(0,0,0,.05);\n  margin-bottom:25px;\n}\n\n.os-list-card h2{\n  font-size:30px;\n  margin:0 0 10px;\n  font-weight:900;\n}\n\n.os-month-list{\n  display:grid;\n  gap:12px;\n  margin-top:18px;\n}\n\n.os-month-row{\n  display:grid;\n  grid-template-columns:1fr auto auto;\n  gap:16px;\n  align-items:center;\n  background:#f8fafc;\n  border-radius:16px;\n  padding:16px;\n  font-weight:900;\n}\n\n.os-month-row span{\n  color:#64748b;\n}\n\n.os-delete-btn{\n  background:#dc2626;\n  color:white;\n  border:none;\n  border-radius:10px;\n  padding:9px 12px;\n  font-weight:900;\n  cursor:pointer;\n  font-size:14px;\n}\n\n.os-ai{\n  background:linear-gradient(135deg,#2563eb,#1d4ed8);\n  padding:30px;\n  border-radius:28px;\n  color:white;\n  margin-top:25px;\n}\n\n.os-ai h2{\n  font-size:32px;\n  font-weight:900;\n  margin:0 0 12px;\n}\n\n.os-ai p{\n  font-size:19px;\n  line-height:1.7;\n  margin:0;\n}\n\n@media(max-width:900px){\n  .os-grid{grid-template-columns:1fr}\n  .os-title{font-size:38px}\n  .nb-menu{flex-direction:column}\n  .nb-menu a{width:100%}\n}\n\n@media(max-width:600px){\n  .os-top h1{font-size:30px}\n  .os-title{font-size:30px}\n  .os-card{padding:22px}\n  .os-month-row{grid-template-columns:1fr}\n}\n<\/style>\n\n<div class=\"os-wrap\">\n\n  <div class=\"os-top\">\n    <div>\n      <h1>Opsparing<\/h1>\n      <p>Se din opsparing automatisk fra Mit Budget.<\/p>\n    <\/div>\n    <a href=\"https:\/\/nordbalance.dk\/?page_id=43\" class=\"os-logout\">Log ud<\/a>\n  <\/div>\n\n  <div class=\"nb-menu\">\n    <a href=\"https:\/\/nordbalance.dk\/?page_id=63\">\ud83d\udcca Mit Budget<\/a>\n    <a class=\"active\" href=\"https:\/\/nordbalance.dk\/?page_id=126\">\ud83d\udcb0 Opsparing<\/a>\n    <a href=\"https:\/\/nordbalance.dk\/?page_id=134\">\ud83d\udcc8 \u00d8konomi-score<\/a>\n    <a href=\"https:\/\/nordbalance.dk\/?page_id=493\">\ud83d\udcc5 M\u00e5nedsoverblik<\/a>\n    <a href=\"https:\/\/nordbalance.dk\/?page_id=195\">\ud83e\udde0 Smart Budget Planner<\/a>\n    <a href=\"https:\/\/nordbalance.dk\/?page_id=14\">\ud83e\udd16 AI Hj\u00e6lp<\/a>\n    <a href=\"https:\/\/nordbalance.dk\/?page_id=76\">\u2699\ufe0f Min Profil<\/a>\n  <\/div>\n\n  <div class=\"os-hero\">\n    <div class=\"os-title\">Din opsparing<\/div>\n    <div class=\"os-text\">\n      Denne side handler kun om opsparing. NordBalance henter automatisk det bel\u00f8b, du har skrevet i feltet \u201copsparing\u201d p\u00e5 Mit Budget.\n    <\/div>\n  <\/div>\n\n  <div id=\"savingStatus\" class=\"os-status\">\n    <div class=\"os-status-title\">Henter data&#8230;<\/div>\n    <div class=\"os-status-text\">Vi henter dine budgetter fra Supabase.<\/div>\n  <\/div>\n\n  <div class=\"os-grid\">\n    <div class=\"os-card\">\n      <h2>Opsparingsm\u00e5l<\/h2>\n      <p>Skriv dit startbel\u00f8b og dit m\u00e5l. Din m\u00e5nedlige opsparing hentes fra Mit Budget.<\/p>\n\n      <div class=\"os-form\">\n        <label>Startbel\u00f8b p\u00e5 opsparing<\/label>\n        <input type=\"number\" id=\"startSavingAmount\" placeholder=\"Fx 10000\">\n\n        <label>Opsparingsm\u00e5l<\/label>\n        <input type=\"number\" id=\"savingGoalAmount\" placeholder=\"Fx 30000\">\n\n        <button type=\"button\" id=\"calculateSavingBtn\" class=\"os-btn\">Beregn m\u00e5l<\/button>\n        <button type=\"button\" id=\"saveSavingBtn\" class=\"os-btn save\">Gem m\u00e5l<\/button>\n\n        <p id=\"saveMessage\" class=\"os-message\"><\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"os-card\">\n      <h2>Opsparingsstatus<\/h2>\n\n      <div id=\"progressText\" class=\"os-progress-text\">\n        Henter opsparing fra Mit Budget.\n      <\/div>\n\n      <div class=\"os-stats\">\n        <div class=\"os-stat\"><span>Seneste m\u00e5nedlige opsparing<\/span><strong id=\"latestSavingBox\">0 kr.<\/strong><\/div>\n        <div class=\"os-stat\"><span>Opsparing fra budgetter<\/span><strong id=\"totalBudgetSavingsBox\">0 kr.<\/strong><\/div>\n        <div class=\"os-stat\"><span>Startbel\u00f8b<\/span><strong id=\"startSavingBox\">0 kr.<\/strong><\/div>\n        <div class=\"os-stat\"><span>Samlet opsparing<\/span><strong id=\"registeredSavingBox\">0 kr.<\/strong><\/div>\n        <div class=\"os-stat\"><span>Mangler til m\u00e5l<\/span><strong id=\"missingBox\">0 kr.<\/strong><\/div>\n        <div class=\"os-stat\"><span>Tid til m\u00e5l<\/span><strong id=\"monthsBox\">&#8211;<\/strong><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"os-list-card\">\n    <h2>Opsparing m\u00e5ned for m\u00e5ned<\/h2>\n    <p>Her ser du de bel\u00f8b, der er gemt som opsparing i Mit Budget.<\/p>\n    <div id=\"savingsMonthList\" class=\"os-month-list\">\n      <div class=\"os-month-row\"><span>Henter data&#8230;<\/span><strong>&#8211;<\/strong><\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"os-ai\">\n    <h2>Opsparingsr\u00e5d<\/h2>\n    <p id=\"adviceBox\">Dit personlige r\u00e5d vises her, n\u00e5r budgettet er hentet.<\/p>\n  <\/div>\n\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@supabase\/supabase-js@2\"><\/script>\n\n<script>\n(function(){\n\nconst supabaseUrl = \"https:\/\/vmcpmdcbzatavfkwdcuz.supabase.co\";\nconst supabaseKey = \"sb_publishable_ODGTPniESClcPb8E2alCQQ_3tadLNmM\";\n\nlet supabaseClient = null;\nlet rows = [];\nlet latestSaving = 0;\nlet totalBudgetSavings = 0;\n\nfunction kr(value){\n  return new Intl.NumberFormat(\"da-DK\",{\n    style:\"currency\",\n    currency:\"DKK\",\n    maximumFractionDigits:0\n  }).format(Number(value)||0);\n}\n\nfunction cleanNumber(value){\n  return Number(String(value || \"0\").replace(\",\", \".\").replace(\/[^\\d.-]\/g, \"\")) || 0;\n}\n\nfunction setText(id,text){\n  const el=document.getElementById(id);\n  if(el) el.textContent=text;\n}\n\nfunction setStatus(title,text,type){\n  const box=document.getElementById(\"savingStatus\");\n  if(!box) return;\n  box.className = \"os-status\" + (type ? \" \" + type : \"\");\n  box.innerHTML = '<div class=\"os-status-title\">'+title+'<\/div><div class=\"os-status-text\">'+text+'<\/div>';\n}\n\nfunction monthName(row){\n  if(row.month) return row.month;\n  if(row.m\u00e5ned) return row.m\u00e5ned;\n  if(row.created_at){\n    return new Date(row.created_at).toLocaleDateString(\"da-DK\",{month:\"long\",year:\"numeric\"});\n  }\n  return \"Ukendt m\u00e5ned\";\n}\n\nfunction parseRow(row){\n  return {\n    id: row.id,\n    month: monthName(row),\n    savings: Number(row.savings || 0)\n  };\n}\n\nfunction renderRows(){\n  const box=document.getElementById(\"savingsMonthList\");\n  if(!box) return;\n\n  if(!rows.length){\n    box.innerHTML = '<div class=\"os-month-row\"><span>Ingen opsparing fundet<\/span><strong>0 kr.<\/strong><\/div>';\n    return;\n  }\n\n  let html=\"\";\n  rows.slice().reverse().forEach(function(row){\n    html += '<div class=\"os-month-row\">'+\n      '<span>'+row.month+'<\/span>'+\n      '<strong>'+kr(row.savings)+'<\/strong>'+\n      '<button type=\"button\" class=\"os-delete-btn\" onclick=\"deleteSavingBudget(\\''+row.id+'\\')\">Slet<\/button>'+\n    '<\/div>';\n  });\n  box.innerHTML = html;\n}\n\nfunction goalDate(months){\n  const d = new Date();\n  d.setMonth(d.getMonth() + months);\n  return d.toLocaleDateString(\"da-DK\",{month:\"long\",year:\"numeric\"});\n}\n\nfunction calculateSaving(){\n  const startAmount = cleanNumber(document.getElementById(\"startSavingAmount\").value);\n  const goal = cleanNumber(document.getElementById(\"savingGoalAmount\").value);\n  const total = startAmount + totalBudgetSavings;\n\n  setText(\"startSavingBox\", kr(startAmount));\n  setText(\"registeredSavingBox\", kr(total));\n\n  if(goal <= 0){\n    setText(\"missingBox\",\"0 kr.\");\n    setText(\"monthsBox\",\"-\");\n    setText(\"progressText\",\"S\u00e6t et opsparingsm\u00e5l for at beregne tid til m\u00e5l.\");\n    if(latestSaving > 0){\n      setText(\"adviceBox\",\"Du sparer senest \"+kr(latestSaving)+\" op om m\u00e5neden if\u00f8lge Mit Budget.\");\n    }\n    return;\n  }\n\n  const missing = Math.max(goal - total, 0);\n  setText(\"missingBox\", kr(missing));\n\n  if(missing <= 0){\n    setText(\"monthsBox\",\"M\u00e5l n\u00e5et\");\n    setText(\"progressText\",\"\ud83c\udf89 Du har n\u00e5et dit opsparingsm\u00e5l.\");\n    setText(\"adviceBox\",\"Flot! Du har n\u00e5et dit m\u00e5l. Du kan nu s\u00e6tte et nyt m\u00e5l.\");\n    return;\n  }\n\n  if(latestSaving > 0){\n    const months = Math.ceil(missing \/ latestSaving);\n    const dateText = goalDate(months);\n    setText(\"monthsBox\", months + \" mdr.\");\n    setText(\"progressText\",\"Du mangler \"+kr(missing)+\". Med \"+kr(latestSaving)+\" pr. m\u00e5ned n\u00e5r du m\u00e5let omkring \"+dateText+\".\");\n    setText(\"adviceBox\",\"Hvis du forts\u00e6tter med at spare \"+kr(latestSaving)+\" op hver m\u00e5ned, n\u00e5r du m\u00e5let omkring \"+dateText+\".\");\n  }else{\n    setText(\"monthsBox\",\"Ukendt\");\n    setText(\"progressText\",\"Der er ingen opsparing angivet i dit seneste budget.\");\n    setText(\"adviceBox\",\"G\u00e5 til Mit Budget og skriv et bel\u00f8b i opsparing.\");\n  }\n}\n\nfunction saveGoal(){\n  localStorage.setItem(\"saving_start_amount\", document.getElementById(\"startSavingAmount\").value || \"0\");\n  localStorage.setItem(\"saving_goal\", document.getElementById(\"savingGoalAmount\").value || \"0\");\n  setText(\"saveMessage\",\"\u2705 Opsparingsm\u00e5l gemt\");\n  calculateSaving();\n}\n\n\nwindow.deleteSavingBudget = async function(id){\n  if(!id){\n    alert(\"Mangler budget-id.\");\n    return;\n  }\n\n  if(!confirm(\"Er du sikker p\u00e5, at du vil slette denne gemte opsparing\/m\u00e5ned?\")){\n    return;\n  }\n\n  try{\n    if(!supabaseClient){\n      supabaseClient =\n        window.nordbalanceSupabase ||\n        (window.nordbalanceSupabase = window.supabase.createClient(supabaseUrl, supabaseKey));\n    }\n\n    const userRes = await supabaseClient.auth.getUser();\n    const user = userRes && userRes.data && userRes.data.user ? userRes.data.user : null;\n\n    if(!user){\n      alert(\"Du er ikke logget ind.\");\n      return;\n    }\n\n    let query = supabaseClient\n      .from(\"budgets\")\n      .delete()\n      .eq(\"id\",id)\n      .eq(\"user_id\",user.id);\n\n    let {error} = await query;\n\n    if(error && user.email){\n      const fallback = await supabaseClient\n        .from(\"budgets\")\n        .delete()\n        .eq(\"id\",id)\n        .eq(\"user_email\",user.email);\n\n      error = fallback.error;\n    }\n\n    if(error){\n      console.error(\"Slet fejl:\",error);\n      alert(\"Kunne ikke slette. Tjek RLS delete policy i Supabase.\");\n      return;\n    }\n\n    rows = rows.filter(function(row){ return String(row.id) !== String(id); });\n    latestSaving = rows.length ? (rows[rows.length - 1].savings || 0) : 0;\n    totalBudgetSavings = rows.reduce(function(sum,row){return sum + (Number(row.savings)||0);},0);\n\n    setText(\"latestSavingBox\", kr(latestSaving));\n    setText(\"totalBudgetSavingsBox\", kr(totalBudgetSavings));\n\n    renderRows();\n    calculateSaving();\n\n    setStatus(\"Slettet\",\"Den gemte opsparing\/m\u00e5ned er slettet.\",\"success\");\n\n  }catch(err){\n    console.error(\"Slet exception:\",err);\n    alert(\"Der opstod en fejl ved sletning.\");\n  }\n};\n\n\nasync function loadData(){\n  try{\n    if(!window.supabase){\n      setStatus(\"Fejl\",\"Supabase script blev ikke indl\u00e6st.\",\"error\");\n      return;\n    }\n\n    supabaseClient =\n      window.nordbalanceSupabase ||\n      (window.nordbalanceSupabase = window.supabase.createClient(supabaseUrl, supabaseKey));\n\n    const userRes = await supabaseClient.auth.getUser();\n    const user = userRes && userRes.data && userRes.data.user ? userRes.data.user : null;\n\n    if(!user){\n      setStatus(\"Ikke logget ind\",\"Log ind for at se din opsparing.\",\"error\");\n      return;\n    }\n\n    let res = await supabaseClient\n      .from(\"budgets\")\n      .select(\"*\")\n      .eq(\"user_id\",user.id)\n      .order(\"created_at\",{ascending:true});\n\n    let data = res.data || [];\n\n    if((!data || data.length === 0) && user.email){\n      const fallback = await supabaseClient\n        .from(\"budgets\")\n        .select(\"*\")\n        .eq(\"user_email\",user.email)\n        .order(\"created_at\",{ascending:true});\n\n      data = fallback.data || [];\n    }\n\n    rows = (data || []).map(parseRow);\n\n    if(!rows.length){\n      setStatus(\"Intet budget fundet\",\"Gem f\u00f8rst et budget p\u00e5 Mit Budget.\",\"error\");\n      renderRows();\n      calculateSaving();\n      return;\n    }\n\n    latestSaving = rows[rows.length - 1].savings || 0;\n    totalBudgetSavings = rows.reduce(function(sum,row){return sum + (Number(row.savings)||0);},0);\n\n    setText(\"latestSavingBox\", kr(latestSaving));\n    setText(\"totalBudgetSavingsBox\", kr(totalBudgetSavings));\n\n    renderRows();\n\n    setStatus(\"Budget hentet\",\"Opsparing henter nu automatisk data fra Mit Budget.\",\"success\");\n    calculateSaving();\n\n  }catch(err){\n    console.error(\"Opsparing fejl:\",err);\n    setStatus(\"Fejl\",\"Der opstod en fejl ved hentning af opsparing. Se Console for detaljer.\",\"error\");\n  }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\",function(){\n  document.getElementById(\"startSavingAmount\").value = localStorage.getItem(\"saving_start_amount\") || \"\";\n  document.getElementById(\"savingGoalAmount\").value = localStorage.getItem(\"saving_goal\") || \"\";\n\n  document.getElementById(\"calculateSavingBtn\").addEventListener(\"click\",calculateSaving);\n  document.getElementById(\"saveSavingBtn\").addEventListener(\"click\",saveGoal);\n\n  calculateSaving();\n  loadData();\n});\n\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Opsparing Se din opsparing automatisk fra Mit Budget. Log ud \ud83d\udcca Mit Budget \ud83d\udcb0 Opsparing \ud83d\udcc8 \u00d8konomi-score \ud83d\udcc5 M\u00e5nedsoverblik \ud83e\udde0 Smart Budget Planner \ud83e\udd16 AI Hj\u00e6lp \u2699\ufe0f Min Profil Din opsparing Denne side handler kun om opsparing. NordBalance henter automatisk det bel\u00f8b, du har skrevet i feltet \u201copsparing\u201d p\u00e5 Mit Budget. Henter data&#8230; Vi henter [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-126","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nordbalance.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=126"}],"version-history":[{"count":40,"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/126\/revisions"}],"predecessor-version":[{"id":520,"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/126\/revisions\/520"}],"wp:attachment":[{"href":"https:\/\/nordbalance.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}