{"id":76,"date":"2026-05-15T15:12:30","date_gmt":"2026-05-15T15:12:30","guid":{"rendered":"http:\/\/nordbalance.dk\/?page_id=76"},"modified":"2026-06-04T16:37:41","modified_gmt":"2026-06-04T16:37:41","slug":"min-profil","status":"publish","type":"page","link":"https:\/\/nordbalance.dk\/?page_id=76","title":{"rendered":"min-profil-nordbalance"},"content":{"rendered":"\n<style>\n.mp-wrap{\nmax-width:1250px;\nmargin:auto;\npadding:25px 15px;\nfont-family:Inter,Arial,sans-serif;\nbackground:#f5f7fb;\ncolor:#0f172a\n}\n\n.mp-top{\ndisplay:flex;\njustify-content:space-between;\nalign-items:center;\ngap:20px;\nmargin-bottom:20px;\nflex-wrap:wrap\n}\n\n.mp-top h1{\nfont-size:38px;\nmargin:0;\nfont-weight:900\n}\n\n.mp-top p{\ncolor:#64748b;\nfont-size:17px;\nmargin-top:6px\n}\n\n.mp-logout{\nbackground:#0f172a;\ncolor:white;\ntext-decoration:none;\npadding:14px 22px;\nborder-radius:14px;\nfont-weight:800;\ndisplay:inline-block\n}\n\n.mp-menu{\ndisplay:flex;\nflex-wrap:wrap;\ngap:12px;\nbackground:#fff;\npadding:18px;\nborder-radius:24px;\nmargin-bottom:25px;\nbox-shadow:0 10px 30px rgba(0,0,0,.05)\n}\n\n.mp-btn{\npadding:14px 18px;\nborder-radius:14px;\nbackground:#eef2ff;\nfont-size:16px;\nfont-weight:800;\ntext-decoration:none;\ncolor:#0f172a;\ntransition:.2s;\ndisplay:inline-block;\ntext-align:center\n}\n\n.mp-btn:hover{\nbackground:#dbeafe;\ntransform:translateY(-2px)\n}\n\n.mp-active{\nbackground:#2563eb!important;\ncolor:white!important\n}\n\n.mp-hero{\nbackground:linear-gradient(135deg,#0f172a,#2563eb);\npadding:40px;\nborder-radius:30px;\ncolor:white;\nmargin-bottom:25px\n}\n\n.mp-title{\nfont-size:50px;\nfont-weight:900;\nmargin-bottom:16px;\nline-height:1.1\n}\n\n.mp-text{\nfont-size:20px;\nline-height:1.7;\nmax-width:850px;\nopacity:.95\n}\n\n.mp-warning{\nbackground:#fff7ed;\nborder:2px solid #fdba74;\npadding:24px;\nborder-radius:24px;\nmargin:22px 0\n}\n\n.mp-warning-title{\nfont-size:26px;\nfont-weight:900;\nmargin-bottom:10px;\ncolor:#9a3412\n}\n\n.mp-warning-text{\nfont-size:18px;\nline-height:1.7;\ncolor:#7c2d12\n}\n\n.mp-grid{\ndisplay:grid;\ngrid-template-columns:repeat(auto-fit,minmax(220px,1fr));\ngap:18px;\nmargin-bottom:25px\n}\n\n.mp-card,\n.mp-section{\nbackground:white;\npadding:26px;\nborder-radius:24px;\nbox-shadow:0 10px 30px rgba(0,0,0,.05)\n}\n\n.mp-card span,\n.mp-box span{\ndisplay:block;\ncolor:#64748b;\nfont-weight:800;\nmargin-bottom:8px\n}\n\n.mp-card strong,\n.mp-box strong{\nfont-size:28px;\nfont-weight:900\n}\n\n.mp-card p{\ncolor:#64748b;\nline-height:1.5;\nmargin-bottom:0\n}\n\n.mp-section{\nmargin-bottom:25px\n}\n\n.mp-section h2{\nfont-size:28px;\nmargin-top:0\n}\n\n.mp-overview{\ndisplay:grid;\ngrid-template-columns:repeat(auto-fit,minmax(200px,1fr));\ngap:15px\n}\n\n.mp-box{\nbackground:#f8fafc;\npadding:18px;\nborder-radius:16px\n}\n\n.mp-status{\npadding:25px;\nborder-radius:22px;\nbackground:#e5e7eb;\nmargin-bottom:25px\n}\n\n.mp-status h2{\nmargin:0 0 10px;\nfont-size:28px\n}\n\n.mp-status p{\nfont-size:18px;\nline-height:1.6;\nmargin:0\n}\n\n.mp-actions{\nmargin-top:25px;\ndisplay:flex;\ngap:12px;\nflex-wrap:wrap;\njustify-content:center\n}\n\n.mp-action{\ndisplay:inline-block;\nbackground:#22c55e;\ncolor:white;\npadding:16px 24px;\nborder-radius:14px;\nfont-size:17px;\nfont-weight:900;\ntext-decoration:none\n}\n\n.mp-blue{background:#2563eb}\n.mp-green{background:#16a34a}\n.mp-dark{background:#0f172a}\n.mp-purple{background:#7c3aed}\n\n@media(max-width:900px){\n.mp-title{font-size:38px}\n.mp-btn{width:100%}\n.mp-menu{flex-direction:column}\n.mp-logout{width:100%;text-align:center}\n}\n\n@media(max-width:600px){\n.mp-top h1{font-size:30px}\n.mp-title{font-size:30px}\n}\n<\/style>\n\n<div class=\"mp-wrap\">\n\n  <div class=\"mp-top\">\n    <div>\n      <h1>Min Profil<\/h1>\n      <p>Dit personlige NordBalance overblik samlet \u00e9t sted.<\/p>\n    <\/div>\n    <a href=\"https:\/\/nordbalance.dk\/?page_id=43\" class=\"mp-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 href=\"https:\/\/nordbalance.dk\/?page_id=126\">\ud83d\udcb0 Opsparing<\/a>\n<a href=\"https:\/\/nordbalance.dk\/?page_id=130\">\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 class=\"active\" 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=\"mp-hero\">\n    <div class=\"mp-title\">Dit \u00f8konomiske overblik<\/div>\n    <div class=\"mp-text\">\n      Her kan du se dine vigtigste tal fra Mit Budget: indkomst, udgifter,\n      opsparing, r\u00e5dighedsbel\u00f8b og \u00f8konomi-score.\n    <\/div>\n  <\/div>\n\n  <div id=\"profileStatus\" class=\"mp-warning\">\n    <div class=\"mp-warning-title\">Henter data&#8230;<\/div>\n    <div class=\"mp-warning-text\">Vi henter dit seneste budget fra Supabase.<\/div>\n  <\/div>\n\n  <div class=\"mp-grid\">\n    <div class=\"mp-card\">\n      <span>Samlet indkomst<\/span>\n      <strong id=\"incomeBox\">0 kr.<\/strong>\n      <p>Din samlede indkomst fra Mit Budget.<\/p>\n    <\/div>\n\n    <div class=\"mp-card\">\n      <span>Samlede udgifter<\/span>\n      <strong id=\"expenseBox\">0 kr.<\/strong>\n      <p>Dine samlede faste og variable udgifter.<\/p>\n    <\/div>\n\n    <div class=\"mp-card\">\n      <span>Opsparing<\/span>\n      <strong id=\"savingBox\">0 kr.<\/strong>\n      <p>Det bel\u00f8b du har sat af til opsparing.<\/p>\n    <\/div>\n\n    <div class=\"mp-card\">\n      <span>R\u00e5dighedsbel\u00f8b<\/span>\n      <strong id=\"disposableBox\">0 kr.<\/strong>\n      <p>Tilbage efter udgifter og opsparing.<\/p>\n    <\/div>\n\n    <div class=\"mp-card\">\n      <span>\u00d8konomi-score<\/span>\n      <strong id=\"scoreBox\">0 \/ 100<\/strong>\n      <p>Din \u00f8konomiske sundhed.<\/p>\n    <\/div>\n  <\/div>\n\n  <div id=\"statusBox\" class=\"mp-status\">\n    <h2 id=\"statusTitle\">Din status<\/h2>\n    <p id=\"statusText\">N\u00e5r data er hentet, vises din status her.<\/p>\n  <\/div>  <div class=\"mp-section\">\n    <h2>Husstand fra Mit Budget<\/h2>\n\n    <div class=\"mp-overview\">\n      <div class=\"mp-box\">\n        <span>Budgettype<\/span>\n        <strong id=\"householdType\">&#8211;<\/strong>\n      <\/div>\n\n      <div class=\"mp-box\">\n        <span>Voksne<\/span>\n        <strong id=\"householdAdults\">0<\/strong>\n      <\/div>\n\n      <div class=\"mp-box\">\n        <span>B\u00f8rn<\/span>\n        <strong id=\"householdChildren\">0<\/strong>\n      <\/div>\n\n      <div class=\"mp-box\">\n        <span>Indkomst 2<\/span>\n        <strong id=\"income2Box\">0 kr.<\/strong>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"mp-section\">\n    <h2>Genveje<\/h2>\n    <p class=\"mp-note\">\n      G\u00e5 hurtigt videre til de vigtigste sider i NordBalance.\n    <\/p>\n\n    <div class=\"mp-actions\">\n      <a href=\"https:\/\/nordbalance.dk\/?page_id=63\" class=\"mp-action\">Mit Budget<\/a>\n      <a href=\"https:\/\/nordbalance.dk\/?page_id=126\" class=\"mp-action mp-blue\">Opsparing<\/a>\n      <a href=\"https:\/\/nordbalance.dk\/?page_id=130\" class=\"mp-action mp-green\">\u00d8konomi-score<\/a>\n      <a href=\"https:\/\/nordbalance.dk\/?page_id=195\" class=\"mp-action mp-blue\">Smart Budget Planner<\/a>\n      <a href=\"https:\/\/nordbalance.dk\/?page_id=14\" class=\"mp-action mp-dark\">AI Hj\u00e6lp<\/a>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@supabase\/supabase-js@2\"><\/script>\n\n<script>\n(async function(){\n\nconst supabaseUrl=\"https:\/\/vmcpmdcbzatavfkwdcuz.supabase.co\";\nconst supabaseKey=\"sb_publishable_ODGTPniESClcPb8E2alCQQ_3tadLNmM\";\n\nconst supabase=window.supabase.createClient(\n  supabaseUrl,\n  supabaseKey\n);\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 setText(id,text){\n  const el=document.getElementById(id);\n  if(el) el.textContent=text;\n}\n\nfunction num(row,key){\n  return Number(row?.[key]) || 0;\n}\n\nfunction setStatus(title,text){\n  const box=document.getElementById(\"profileStatus\");\n  if(!box) return;\n\n  box.innerHTML=`\n    <div class=\"mp-warning-title\">${title}<\/div>\n    <div class=\"mp-warning-text\">${text}<\/div>\n  `;\n}\n\nsetStatus(\n  \"Starter...\",\n  \"Tjekker login og henter budgetdata.\"\n);\n\nlet user=null;\n\nconst sessionRes=await supabase.auth.getSession();\n\nif(sessionRes?.data?.session?.user){\n  user=sessionRes.data.session.user;\n}else{\n  const userRes=await supabase.auth.getUser();\n\n  if(userRes?.data?.user){\n    user=userRes.data.user;\n  }\n}\n\nif(!user){\n  setStatus(\n    \"Ikke logget ind\",\n    \"Log ind f\u00f8rst for at se Min Profil.\"\n  );\n  return;\n}\n\nconst { data,error } = await supabase\n.from(\"budgets\")\n.select(\"*\")\n.eq(\"user_id\",user.id)\n.order(\"created_at\",{ascending:false})\n.limit(1)\n.maybeSingle();\n\nif(error){\n  console.error(error);\n\n  setStatus(\n    \"Fejl\",\n    \"Budgetdata kunne ikke hentes: \" + error.message\n  );\n\n  return;\n}\n\nif(!data){\n  setStatus(\n    \"Intet budget fundet\",\n    \"G\u00e5 til Mit Budget og gem dit budget f\u00f8rst.\"\n  );\n\n  return;\n}\n\nconst income =\n  num(data,\"samlet_indkomst\") ||\n  num(data,\"income\") + num(data,\"indkomst2\");\n\nconst expenses =\n  num(data,\"housing\") +\n  num(data,\"food\") +\n  num(data,\"transport\") +\n  num(data,\"subs\") +\n  num(data,\"insurance\") +\n  num(data,\"utilities\") +\n  num(data,\"phone\") +\n  num(data,\"debt\") +\n  num(data,\"leisure\") +\n  num(data,\"other\");\n\nconst savings = num(data,\"savings\");\n\nconst disposable =\n  num(data,\"r\u00e5dighedsbel\u00f8b\") ||\n  income - expenses - savings;\n\nlet score=50;\n\nif(income>0){\n  const expenseRate=expenses\/income;\n  const savingRate=savings\/income;\n  const disposableRate=disposable\/income;\n\n  if(expenseRate<0.75) score+=15;\n  if(expenseRate<0.60) score+=10;\n  if(savingRate>=0.05) score+=10;\n  if(savingRate>=0.10) score+=10;\n  if(disposableRate>=0.10) score+=10;\n  if(num(data,\"debt\")>income*0.25) score-=15;\n  if(disposable<0) score-=25;\n}\n\nscore=Math.max(0,Math.min(100,Math.round(score)));\n\nsetText(\"incomeBox\",kr(income));\nsetText(\"expenseBox\",kr(expenses));\nsetText(\"savingBox\",kr(savings));\nsetText(\"disposableBox\",kr(disposable));\nsetText(\"scoreBox\",score+\" \/ 100\");\n\nsetText(\"householdType\",data.budgettype || \"-\");\nsetText(\"householdAdults\",data.voksne || 1);\nsetText(\"householdChildren\",data.born || 0);\nsetText(\"income2Box\",kr(data.indkomst2 || 0));\n\nconst statusBox=document.getElementById(\"statusBox\");\n\nif(score>=75){\n  if(statusBox) statusBox.style.background=\"#dcfce7\";\n  setText(\"statusTitle\",\"St\u00e6rk \u00f8konomi\");\n  setText(\"statusText\",\"Din \u00f8konomi ser sund ud. Forts\u00e6t med at holde styr p\u00e5 budget og opsparing.\");\n}else if(score>=50){\n  if(statusBox) statusBox.style.background=\"#fef9c3\";\n  setText(\"statusTitle\",\"Middel \u00f8konomi\");\n  setText(\"statusText\",\"Din \u00f8konomi er okay, men der er stadig plads til forbedringer.\");\n}else{\n  if(statusBox) statusBox.style.background=\"#fee2e2\";\n  setText(\"statusTitle\",\"Presset \u00f8konomi\");\n  setText(\"statusText\",\"Dine udgifter fylder meget i forhold til din indkomst.\");\n}\n\nsetStatus(\n  \"Profil indl\u00e6st\",\n  \"Data er hentet direkte fra Mit Budget.\"\n);\n\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Min Profil Dit personlige NordBalance overblik samlet \u00e9t sted. 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 Dit \u00f8konomiske overblik Her kan du se dine vigtigste tal fra Mit Budget: indkomst, udgifter, opsparing, r\u00e5dighedsbel\u00f8b og \u00f8konomi-score. Henter data&#8230; Vi henter dit seneste [&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-76","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/76","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=76"}],"version-history":[{"count":20,"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/76\/revisions"}],"predecessor-version":[{"id":499,"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/76\/revisions\/499"}],"wp:attachment":[{"href":"https:\/\/nordbalance.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}