{"id":40,"date":"2026-05-15T11:39:27","date_gmt":"2026-05-15T11:39:27","guid":{"rendered":"http:\/\/nordbalance.dk\/?page_id=40"},"modified":"2026-06-02T17:21:31","modified_gmt":"2026-06-02T17:21:31","slug":"login-2","status":"publish","type":"page","link":"https:\/\/nordbalance.dk\/?page_id=40","title":{"rendered":"Log ind"},"content":{"rendered":"\n<style>\n.login-wrap{\nfont-family:Inter,Arial,sans-serif;\nbackground:#f4f7fb;\nmin-height:100vh;\npadding:50px 20px;\ndisplay:flex;\nalign-items:center;\njustify-content:center;\nbox-sizing:border-box;\n}\n\n.login-box{\nwidth:100%;\nmax-width:520px;\nbackground:white;\npadding:35px;\nborder-radius:28px;\nbox-shadow:0 15px 45px rgba(0,0,0,0.08);\ntext-align:center;\nbox-sizing:border-box;\n}\n\n.login-box h1{\nfont-size:38px;\nmargin-bottom:10px;\ncolor:#0f172a;\n}\n\n.login-box p{\nfont-size:17px;\ncolor:#64748b;\nmargin-bottom:30px;\nline-height:1.6;\n}\n\n.login-card{\nbackground:white;\npadding:25px;\nborder-radius:22px;\n}\n\n.login-card input{\nwidth:100%;\npadding:16px;\nborder-radius:14px;\nborder:1px solid #dbe3ef;\nmargin-bottom:15px;\nfont-size:16px;\nbox-sizing:border-box;\n}\n\n.login-card input:focus{\noutline:none;\nborder-color:#1677ff;\nbox-shadow:0 0 0 4px rgba(22,119,255,.12);\n}\n\n.login-btn{\nwidth:100%;\npadding:16px;\nborder:none;\nborder-radius:14px;\nbackground:#1677ff;\ncolor:white;\nfont-size:18px;\nfont-weight:800;\ncursor:pointer;\ntransition:.2s;\n}\n\n.login-btn:hover{\nopacity:.9;\n}\n\n.login-btn:disabled{\nopacity:.6;\ncursor:not-allowed;\n}\n\n.login-message{\nmargin-top:15px;\nfont-weight:800;\nline-height:1.5;\n}\n\n.login-link{\nmargin-top:25px;\ndisplay:block;\ncolor:#0b5ed7;\nfont-weight:800;\ntext-decoration:none;\n}\n\n.login-link:hover{\ntext-decoration:underline;\n}\n\n@media(max-width:600px){\n.login-wrap{\npadding:25px 12px;\n}\n\n.login-box{\npadding:25px 18px;\nborder-radius:22px;\n}\n\n.login-box h1{\nfont-size:30px;\n}\n\n.login-card{\npadding:18px 0 0;\n}\n}\n<\/style>\n\n<div class=\"login-wrap\">\n\n<div class=\"login-box\">\n\n<h1>Log ind p\u00e5 NordBalance<\/h1>\n\n<p>\nF\u00e5 adgang til dit budget, dine m\u00e5l og personlig AI \u00f8konomihj\u00e6lp.\n<\/p>\n\n<div class=\"login-card\">\n\n<input type=\"email\" id=\"email\" placeholder=\"Din email\" autocomplete=\"email\">\n\n<input type=\"password\" id=\"password\" placeholder=\"Din adgangskode\" autocomplete=\"current-password\">\n\n<button class=\"login-btn\" id=\"loginBtn\" type=\"button\" onclick=\"loginUser()\">\nLog ind\n<\/button>\n\n<div class=\"login-message\" id=\"loginMessage\"><\/div>\n\n<\/div>\n\n<a href=\"https:\/\/nordbalance.dk\/?page_id=18\" class=\"login-link\">\nHar du ikke en konto? Opret dig her\n<\/a>\n\n<\/div>\n\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@supabase\/supabase-js@2\"><\/script>\n\n<script>\nconst supabaseUrl = \"https:\/\/vmcpmdcbzatavfkwdcuz.supabase.co\";\nconst supabaseKey = \"sb_publishable_ODGTPniESClcPb8E2alCQQ_3tadLNmM\";\n\nconst supabaseClient = supabase.createClient(\n  supabaseUrl,\n  supabaseKey,\n  {\n    auth:{\n      persistSession:true,\n      autoRefreshToken:true,\n      detectSessionInUrl:true\n    }\n  }\n);\n\nasync function loginUser(){\n\n  const email = document.getElementById(\"email\").value.trim();\n  const password = document.getElementById(\"password\").value.trim();\n  const message = document.getElementById(\"loginMessage\");\n  const button = document.getElementById(\"loginBtn\");\n\n  if(!email || !password){\n    message.style.color = \"#dc2626\";\n    message.innerHTML = \"Udfyld b\u00e5de email og adgangskode.\";\n    return;\n  }\n\n  button.disabled = true;\n  button.innerText = \"Logger ind...\";\n\n  message.innerHTML = \"Logger ind...\";\n  message.style.color = \"#0f172a\";\n\n  const { data, error } = await supabaseClient.auth.signInWithPassword({\n    email: email,\n    password: password\n  });\n\n  if(error){\n    message.style.color = \"#dc2626\";\n\n    if(error.message.includes(\"Invalid login credentials\")){\n      message.innerHTML = \"Email eller adgangskode er forkert.\";\n    }else{\n      message.innerHTML = \"Login-fejl: \" + error.message;\n    }\n\n    button.disabled = false;\n    button.innerText = \"Log ind\";\n    return;\n  }\n\n  message.style.color = \"#16a34a\";\n  message.innerHTML = \"Login lykkedes \u2705 Du sendes videre...\";\n\n  setTimeout(function(){\n    window.location.href = \"https:\/\/nordbalance.dk\/?page_id=63\";\n  }, 800);\n}\n\ndocument.addEventListener(\"keydown\", function(e){\n  if(e.key === \"Enter\"){\n    loginUser();\n  }\n});\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Log ind p\u00e5 NordBalance F\u00e5 adgang til dit budget, dine m\u00e5l og personlig AI \u00f8konomihj\u00e6lp. Log ind Har du ikke en konto? Opret dig her<\/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-40","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/40","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=40"}],"version-history":[{"count":7,"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/40\/revisions"}],"predecessor-version":[{"id":453,"href":"https:\/\/nordbalance.dk\/index.php?rest_route=\/wp\/v2\/pages\/40\/revisions\/453"}],"wp:attachment":[{"href":"https:\/\/nordbalance.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}