<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Totalentreprise &#8211; MitBoligProjekt.dk</title>
	<atom:link href="https://mitboligprojekt.dk/kategori/totalentreprise/feed/" rel="self" type="application/rss+xml" />
	<link>https://mitboligprojekt.dk</link>
	<description>Find de rette fagfolk til dit boligprojekt</description>
	<lastBuildDate>Sun, 15 Feb 2026 15:34:00 +0000</lastBuildDate>
	<language>da-DK</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mitboligprojekt.dk/wp-content/uploads/2026/01/cropped-noun-minimal-house-3697721-CCFA74-32x32.png</url>
	<title>Totalentreprise &#8211; MitBoligProjekt.dk</title>
	<link>https://mitboligprojekt.dk</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Totalrenovering af lejlighed: Når beliggenheden gør det rationelt at gå hele vejen</title>
		<link>https://mitboligprojekt.dk/totalrenovering-af-lejlighed/</link>
					<comments>https://mitboligprojekt.dk/totalrenovering-af-lejlighed/#respond</comments>
		
		<dc:creator><![CDATA[Tobias]]></dc:creator>
		<pubDate>Sun, 15 Feb 2026 12:58:39 +0000</pubDate>
				<category><![CDATA[Totalentreprise]]></category>
		<guid isPermaLink="false">https://mitboligprojekt.dk/?p=1425</guid>

					<description><![CDATA[I de store byer kan en totalrenovering se ud som ren luksus. I praksis er det ofte den mest jordnære måde at få en lejlighed til at fungere og stå stærkt i et marked, der belønner det færdige.]]></description>
										<content:encoded><![CDATA[<section class="bde-section-1425-137 bde-section">
  
  
	



<div class="section-container"><div class="bde-columns-1425-138 bde-columns"><div class="bde-column-1425-139 bde-column">
  
  
	



<div class="bde-div-1425-140 bde-div">
  
  
	



<div class="bde-breadcrumbs-1425-141 bde-breadcrumbs"><nav aria-label="breadcrumbs" class="rank-math-breadcrumb"><p><a href="https://mitboligprojekt.dk">Forside</a><span class="separator"> &raquo; </span><span class="last">Totalentreprise</span></p></nav></div><ul class="bde-post-meta-1425-142 bde-post-meta">            <li class="ee-postmeta-date-wrap">
                                                        <span class="ee-postmeta-date"><span
                            class="ee-postmeta-before">Senest opdateret: </span>15. februar 2026</span>
                                </li>
            </ul>
</div><div class="bde-fancy-divider-1425-143 bde-fancy-divider">


<div class="bde-fancy-divider__wrapper">
  <div class="bde-fancy-divider__separator   ">
  	  </div>
</div>

</div><div class="bde-rich-text-1425-144 bde-rich-text breakdance-rich-text-styles">
<h1><span style="font-weight: bold;">Totalrenovering af lejlighed:</span> <span style="font-weight: 500;">Når beliggenheden gør det rationelt at gå hele vejen</span></h1>
</div><div class="bde-text-1425-145 bde-text">
<p>I de store byer kan en totalrenovering se ud som ren luksus. I praksis er det ofte den mest jordnære måde at få en lejlighed til at fungere og stå stærkt i et marked, der belønner det færdige.</p>

</div><img decoding="async" class="bde-image2-1425-146 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.55.57.webp" alt="Totalrenovering af lejlighed med sildebensparket og minimalistisk køkken." loading="lazy" srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.55.57.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.55.57-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.55.57-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.55.57-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-1425-147 bde-rich-text breakdance-rich-text-styles">
Totalrenovering af lejlighed med sildebensparket og minimalistisk køkken.
</div><div class="bde-fancy-divider-1425-148 bde-fancy-divider">


<div class="bde-fancy-divider__wrapper">
  <div class="bde-fancy-divider__separator   ">
  	  </div>
</div>

</div><div class="bde-rich-text-1425-149 bde-rich-text breakdance-rich-text-styles">
<p data-pm-slice="1 1 []">Der er et øjeblik, når en lejlighed er tømt, hvor man fortryder alt. Væggene ser tyndere ud. Gulvet føles skævere. Og pludselig lyder naboens trin i opgangen som et trommesæt.</p>
<p>Det er dér, man opdager, hvor meget “stand” egentlig betyder, når man bor tæt. Ikke på billeder. I hverdagen.</p>
<p>Alligevel vælger flere og flere at totalrenovere, især i København, Aarhus, Odense og de dyre lommer af Frederiksberg og Vesterbro. Ikke fordi alle vil have messing og marmor, men fordi beliggenhed og kvadratmeterpriser gør det oplagt at opgradere det, man allerede har fået fingrene i.</p>
<p>Hvis du står på kanten af projektet, er det en fordel at få konkrete bud tidligt, mens du stadig kan styre forventningerne. Du kan for eksempel indhente tilbud via <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="noopener">3byggetilbud.dk til totalentreprise</a>, så du får et realistisk billede af pris og proces, før du låser dig fast på løsninger og materialer.</p>
</div><div class="bde-globalblock-1425-150 bde-globalblock"><div class="bde-rich-text-1432-100-1432-1 bde-rich-text bde-rich-text-1432-100 breakdance-rich-text-styles">
<p><style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style></p>
<aside class="ad-690">
<div class="ad-690-content">
<div class="ad-690-label">Annonce</div>
<div class="ad-690-headline">Overvejer du totalrenovering af lejlighed?</div>
<div class="ad-690-text">Få tre uforpligtende tilbud på totalentreprise.</div>
</div>
<a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener"> Få 3 gratis tilbud </a></aside>
</div></div><div class="bde-rich-text-1425-151 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Beliggenhedens matematik i storbyen</h2>
<p>Beliggenhed er det mest klichéfyldte ord i boligstof, men det er også det mest præcise. I de stærkeste områder opfører en lejlighed sig ikke som et “hjem”, men som et aktiv. Den har sin egen motor, fordi efterspørgslen er stabil og udbuddet begrænset.</p>
<p>I København er det tydeligt i kvarterer, hvor folk jagter de samme få kvadratmeter igen og igen. På Frederiksberg, på Vesterbro, omkring Nørrebro og Østerbro er der en købergruppe, der ofte tænker i en enkel prioritering: adgang til byen først, alt andet bagefter.</p>
<p>Aarhus har sine egne versioner. Aarhus C, Trøjborg og de områder, hvor man kan cykle til det hele, har samme træk. Odense midtby har et mere blandet marked, men også her findes de lommer, hvor folk gerne betaler for at slippe for et stort byggeprojekt.</p>
<p>Det er her, totalrenovering af lejlighed begynder at give mening som andet end en drøm. Du køber beliggenheden, og når du først har den, kan det være klogere at løfte resten i én samlet omgang frem for at lappe sig gennem årene.</p>
</div><div class="bde-rich-text-1425-152 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Når “lidt nyt” bliver den dyreste løsning</h2>
<p>De fleste totalrenoveringer starter ikke med en stor plan. De starter med en lille irritation. Et badeværelse, der føles træt. Et køkken, der er for småt. Stikkontakterne, der aldrig sidder, hvor man har brug for dem.</p>
<p>Så tager man den “fornuftige” løsning. Nyt køkken nu. Badeværelse senere. El, når det bliver nødvendigt.</p>
<p>Problemet er, at en bylejlighed sjældent tilgiver etaper. Du betaler flere gange for nedrivning, afdækning og oprydning. Du lever flere gange med støv og håndværkere. Og i værste fald står du med et nyt køkken, der skal af igen, fordi væggen bagved skal åbnes til el og rør.</p>
<p>I et parcelhus kan man ofte tage det i bidder, fordi man kan flytte rundt på livet. I en lejlighed, hvor pladsen i forvejen er presset, bliver hver byggeperiode et indgreb i hverdagen.</p>
<p>Totalrenovering kan derfor være den “dyrere” løsning, der ender med at være den billigere. Ikke på materialer, men på gentagelser, pauser og dobbeltarbejde.</p>
</div><div class="bde-rich-text-1425-153 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Totalrenovering og totalentreprise: Sådan hænger det sammen</h2>
<p>Her er det værd at skille begreberne ad.</p>
<p>Totalrenovering beskriver omfanget. Du tager hele lejligheden, ofte ned til installationer, gulvopbygning, vægge, bad, køkken og planløsning.</p>
<p>Totalentreprise beskriver måden, projektet styres på. Én aktør har ansvaret for helheden, koordinerer fagene og sørger for, at mureren ikke står og venter på elektrikeren, mens ugerne løber.</p>
<p>De to passer ofte godt sammen, fordi totalrenovering kræver timing. Når VVS, el, tømrer og murer arbejder på skift, kan én forsinkelse få hele kæden til at skride. Og i en by, hvor genhusning koster, er tid ikke bare irriterende. Tid er penge.</p>
<p>Det betyder ikke, at du skal vælge totalentreprise. Nogle kan og vil gerne styre selv. Men så er det også dig, der holder styr på rækkefølge, leverancer, aftaler, og hvem der har ansvaret, når to fag peger på hinanden.</p>
</div><div class="bde-globalblock-1425-154 bde-globalblock"><div class="bde-rich-text-1432-100-1432-2 bde-rich-text bde-rich-text-1432-100 breakdance-rich-text-styles">
<p><style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style></p>
<aside class="ad-690">
<div class="ad-690-content">
<div class="ad-690-label">Annonce</div>
<div class="ad-690-headline">Overvejer du totalrenovering af lejlighed?</div>
<div class="ad-690-text">Få tre uforpligtende tilbud på totalentreprise.</div>
</div>
<a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener"> Få 3 gratis tilbud </a></aside>
</div></div><div class="bde-rich-text-1425-155 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Pris på totalrenovering af lejlighed: Det folk typisk glemmer</h2>
<p>Spørgsmålet kommer altid tidligt: Hvad koster det?</p>
<p>Det ærlige svar er, at pris på totalrenovering af lejlighed starter som et spænd. Ikke et tal. Og spændet kan være stort.</p>
<p>Det handler om tre ting. Hvor meget du åbner op. Hvor gammelt det tekniske er. Og hvilken standard du går efter.</p>
<p>El og VVS er klassiske overraskelser. Ikke fordi håndværkere prøver at “sælge ekstra”, men fordi gamle installationer i mange lejligheder er lavet til en anden tid. Nutidens hjem bruger mere strøm. Flere apparater. Flere opladere. Flere skærme. Og det bliver hurtigt tydeligt, når man vil have flere udtag, spots, ventilation og en køkkenpakke, der ikke vælter det hele.</p>
<p>Vådrum er den anden store. Et badeværelse er ikke bare fliser og inventar. Det er membran, fald, afløb, ventilation og dokumentation. Det er også et af de steder, hvor fejl bliver dyre, fordi de kan påvirke naboer og forening.</p>
<p>Og så er der alt det udenom, som ikke står i showroomet. Genhusning. Opbevaring. Flytning. Ekstra rengøring. Små reparationer i opgangen, hvis noget går galt undervejs. I København kan en spærretilladelse eller en container på gaden også blive en post i sig selv.</p>
</div><div class="bde-rich-text-1425-160 bde-rich-text breakdance-rich-text-styles">
<!-- TOTALRENOVERING AF LEJLIGHED – PRISBEREGNER v1.2 (Breakdance HTML-element) -->
<style>
  .gpb-wrap{
    background:#F5F5F2;
    border:1px solid #E1E1E1;
    border-radius:10px;
    padding:1.25rem;
    max-width:780px;
    margin:0 auto;
    color:#10110C;
    line-height:1.55;
    font-weight:300;
    width:100%;
    overflow-x:hidden;
  }
  .gpb-wrap *{ box-sizing:border-box; }
  .gpb-wrap, .gpb-top, .gpb-card, .gpb-grid, .gpb-field, .gpb-control, .gpb-results,
  .gpb-kpi, .gpb-kpi-top, .gpb-breakdown, .gpb-line, .gpb-actions, .gpb-cta { min-width:0; }
  .gpb-control > *{ min-width:0; }

  .gpb-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; margin-bottom:0.85rem; }
  .gpb-title{ margin:0; font-size:1.15rem; color:#203723; font-weight:500; }
  .gpb-sub{ margin:0.25rem 0 0 0; font-size:0.95rem; color:#333; font-weight:300; max-width:78ch; }
  .gpb-pill{ background:#fff; border:1px solid #E1E1E1; border-radius:999px; padding:0.4rem 0.7rem; font-size:0.9rem; color:#203723; font-weight:400; white-space:nowrap; flex:0 0 auto; }

  .gpb-card{ background:#fff; border:1px solid #E1E1E1; border-radius:10px; padding:1rem; }
  .gpb-section-title{ margin:0 0 0.75rem 0; color:#203723; font-size:1.02rem; font-weight:500; }

  .gpb-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0.85rem; align-items:start; }
  .gpb-field{ display:grid; gap:0.35rem; align-content:start; }

  .gpb-label{ font-size:0.92rem; color:#333; font-weight:500; line-height:1.2; }
  .gpb-control{ display:flex; gap:0.5rem; align-items:stretch; }

  .gpb-input, .gpb-select{
    width:100%; max-width:100%;
    border:1px solid #E1E1E1; border-radius:10px;
    padding:0.62rem 0.75rem;
    background:#fff; color:#10110C;
    font-size:0.98rem; font-weight:300;
    outline:none; min-height:44px;
  }
  .gpb-input:focus, .gpb-select:focus{ border-color:#203723; }
  .gpb-input.gpb-invalid{ border-color:#B00020; }

  .gpb-select{
    appearance:none; -webkit-appearance:none; -moz-appearance:none;
    padding-right:2.6rem;
    background-color:#fff;
    background-clip:padding-box;
    background-repeat:no-repeat;
    background-position:right 0.9rem center;
    background-size:16px 16px;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24'%3E%3Cpath fill='%23203723' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  }
  .gpb-select::-ms-expand{ display:none; }

  .gpb-unit{
    border:1px solid #E1E1E1; border-radius:10px;
    padding:0.62rem 0.5rem;
    background:#F5F5F2;
    font-size:0.9rem; color:#333; font-weight:400;
    min-height:44px;
    width:74px;
    display:flex; align-items:center; justify-content:center;
    white-space:nowrap; flex:0 0 auto;
  }

  .gpb-help{ margin:0.05rem 0 0 0; font-size:0.86rem; color:#555; font-weight:300; min-height:2.2em; }

  .gpb-divider{ height:1px; background:#E1E1E1; border:0; margin:0.95rem 0; }

  .gpb-results{ display:grid; gap:0.65rem; margin-top:0.75rem; }
  .gpb-kpi{ border:1px solid #E1E1E1; border-radius:10px; padding:0.85rem; background:#fff; }
  .gpb-kpi-top{ display:flex; align-items:baseline; justify-content:space-between; gap:0.75rem; margin-bottom:0.15rem; }
  .gpb-kpi-label{ font-size:0.92rem; color:#333; font-weight:500; }
  .gpb-kpi-value{ font-size:1.08rem; color:#10110C; font-weight:500; text-align:right; }
  .gpb-kpi-sub{ margin:0.15rem 0 0 0; font-size:0.86rem; color:#555; font-weight:300; }

  .gpb-breakdown{ display:grid; gap:0.4rem; padding-top:0.25rem; }
  .gpb-line{ display:flex; justify-content:space-between; gap:0.75rem; font-size:0.92rem; color:#333; font-weight:300; }
  .gpb-line span:last-child{ font-weight:500; color:#10110C; white-space:nowrap; }

  .gpb-line--total{ margin-top:0.2rem; padding-top:0.45rem; border-top:1px solid #E1E1E1; }
  .gpb-line--total span:first-child{ font-weight:500; }
  .gpb-line--total span:last-child{ font-size:1rem; }

  .gpb-actions{ display:flex; gap:0.55rem; flex-wrap:wrap; margin-top:0.9rem; }
  .gpb-btn{
    appearance:none; border:1px solid #E1E1E1; background:#fff; color:#10110C;
    padding:0.6rem 0.85rem; border-radius:10px;
    font-size:0.95rem; cursor:pointer; font-weight:500;
    transition:transform 0.08s ease, border-color 0.12s ease, filter 0.12s ease;
  }
  .gpb-btn:hover{ border-color:#203723; }
  .gpb-btn:active{ transform:scale(0.99); }

  .gpb-toast{ display:none; margin-top:0.65rem; padding:0.65rem 0.75rem; border-radius:10px; border:1px solid #E1E1E1; background:#F5F5F2; color:#333; font-size:0.9rem; font-weight:300; }

  .gpb-cta{ margin-top:0.9rem; border:1px solid #E1E1E1; border-radius:10px; background:#fff; padding:1rem; }
  .gpb-cta p{ margin:0 0 0.75rem 0; font-size:0.95rem; color:#333; font-weight:300; }
  .gpb-cta a{ display:inline-block; background:#203723; border:1px solid #203723; color:#fff !important; text-decoration:none; padding:0.75rem 1.05rem; border-radius:10px; font-size:1rem; font-weight:500; }
  .gpb-cta a:hover{ filter:brightness(0.95); }

  .gpb-hidden{ display:none !important; }

  @media (max-width:640px){
    .gpb-wrap{ padding:1.05rem; }
    .gpb-top{ flex-direction:column; }
    .gpb-grid{ grid-template-columns:1fr; }
    .gpb-actions .gpb-btn, .gpb-cta a{ width:100%; text-align:center; }

    /* Mobil-fix: undgå at værdier løber ud over boksen */
    .gpb-line{ align-items:flex-start; }
    .gpb-line span:last-child{
      white-space:normal;
      overflow-wrap:anywhere;
      text-align:right;
      max-width:52%;
    }
    .gpb-kpi-value{
      white-space:normal;
      overflow-wrap:anywhere;
    }
  }
</style>

<div class="gpb-wrap" role="region" data-lrb="v1_2" aria-label="Prisberegner til totalrenovering af lejlighed">
  <div class="gpb-top">
    <div>
      <p class="gpb-title">Prisberegner: totalrenovering af lejlighed (m², køkken, bad og ændringer)</p>
      <p class="gpb-sub">
        Indtast areal og vælg omfang. Du får et vejledende overslag baseret på typiske poster: overflader, køkken, bad, el/VVS,
        nedrivning samt ændringer i planløsning. Brug resultatet som startbudget – ikke som endelig pris.
      </p>
    </div>
    <div class="gpb-pill" data-pill aria-hidden="true">Vejledende overslag</div>
  </div>

  <div class="gpb-card">
    <p class="gpb-section-title">Din lejlighed</p>

    <div class="gpb-grid">
      <div class="gpb-field">
        <label class="gpb-label">Areal</label>
        <div class="gpb-control">
          <input class="gpb-input" min="20" max="250" step="1" type="number" value="80" inputmode="numeric" data-area />
          <div class="gpb-unit" aria-hidden="true">m²</div>
        </div>
        <p class="gpb-help" data-areahelp>Typisk 20–250 m². Små lejligheder har ofte højere pris pr. m².</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Omfang</label>
        <select class="gpb-select" data-scope>
          <option value="surface">Let renovering (overflader)</option>
          <option value="mid">Mellemrenovering (typisk køkken/bad)</option>
          <option value="total" selected>Totalrenovering (gennemgribende)</option>
        </select>
        <p class="gpb-help" data-scopehelp>Styrer, hvilke poster der “forventes” i beregningen.</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Standard / materialevalg</label>
        <select class="gpb-select" data-standard>
          <option value="budget">Budget (fornuftigt, men enkelt)</option>
          <option value="standard" selected>Standard (typisk byniveau)</option>
          <option value="high">Høj (mere inventar og finish)</option>
        </select>
        <p class="gpb-help">Standard påvirker især køkken, bad og finish.</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Prisniveau i området</label>
        <select class="gpb-select" data-arealevel>
          <option value="low">Lavt</option>
          <option value="normal" selected>Normalt</option>
          <option value="high">Højt (fx København/Frederiksberg)</option>
        </select>
        <p class="gpb-help">Grov justering for lokale forskelle.</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Køkken</label>
        <select class="gpb-select" data-kitchen>
          <option value="none">Ingen ændring</option>
          <option value="new" selected>Nyt køkken (samme placering)</option>
          <option value="move">Nyt køkken + flytning af VVS</option>
        </select>
        <p class="gpb-help">Flytning af køkken trækker op pga. rør/el og ekstra arbejde.</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Badeværelse</label>
        <select class="gpb-select" data-bath>
          <option value="none">Ingen ændring</option>
          <option value="new" selected>Nyt badeværelse</option>
          <option value="move">Nyt bad + flytning/ændring af afløb</option>
        </select>
        <p class="gpb-help">Bad er ofte den tungeste enkeltpost i en lejlighed.</p>
      </div>

      <div class="gpb-field" data-bathfield>
        <label class="gpb-label">Badeværelse: ca. areal</label>
        <div class="gpb-control">
          <input class="gpb-input" min="3" max="12" step="1" type="number" value="6" inputmode="numeric" data-bathm2 />
          <div class="gpb-unit" aria-hidden="true">m²</div>
        </div>
        <p class="gpb-help">Bruges kun hvis du vælger “nyt bad”. Typisk 4–8 m².</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">El/VVS</label>
        <select class="gpb-select" data-tech>
          <option value="minor">Små tilpasninger</option>
          <option value="partial" selected>Delvis opgradering</option>
          <option value="full">Fuld udskiftning/opgradering</option>
        </select>
        <p class="gpb-help">Gammel tavle, rør, flere udtag og nye føringer kan flytte meget.</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Planløsning</label>
        <select class="gpb-select" data-layout>
          <option value="none" selected>Ingen ændringer</option>
          <option value="nonbearing">Flytning af ikke-bærende vægge/døre</option>
          <option value="bearing">Indgreb i bærende konstruktion</option>
        </select>
        <p class="gpb-help">Bærende vægge kræver ofte ekstra dokumentation og arbejde.</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Adgang/logistik</label>
        <select class="gpb-select" data-access>
          <option value="easy" selected>Let (fx elevator/let adgang)</option>
          <option value="normal">Normal</option>
          <option value="hard">Svær (smal opgang, mange etager)</option>
        </select>
        <p class="gpb-help">Opgang, bæring og affaldshåndtering kan give ekstra timer.</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Rådgivning/projektering</label>
        <select class="gpb-select" data-advice>
          <option value="0">0% (ingen / allerede afklaret)</option>
          <option value="5" selected>Ca. 5% (typisk)</option>
          <option value="10">Ca. 10% (mange ydelser/tilsyn)</option>
        </select>
        <p class="gpb-help">Skøn som procent af byggesum (tegninger, styring, tilsyn).</p>
      </div>

      <div class="gpb-field">
        <label class="gpb-label">Momsvisning</label>
        <select class="gpb-select" data-vat>
          <option value="inc" selected>Inkl. moms</option>
          <option value="ex">Ekskl. moms</option>
        </select>
        <p class="gpb-help">De fleste private vil bruge “inkl. moms”.</p>
      </div>
    </div>

    <hr class="gpb-divider" />

    <div class="gpb-results">
      <div class="gpb-kpi" aria-live="polite" aria-atomic="true">
        <div class="gpb-kpi-top">
          <div class="gpb-kpi-label">Prisoverslag</div>
          <div class="gpb-kpi-value" data-total>—</div>
        </div>
        <p class="gpb-kpi-sub" data-range>—</p>
        <p class="gpb-kpi-sub" data-rate>—</p>
      </div>

      <div class="gpb-kpi" aria-live="polite" aria-atomic="true">
        <div class="gpb-kpi-top">
          <div class="gpb-kpi-label">Detaljer</div>
          <div class="gpb-kpi-value" style="font-weight:500;color:#203723;" data-badge></div>
        </div>

        <div class="gpb-breakdown">
          <div class="gpb-line">Areal<span data-out-area>—</span></div>
          <div class="gpb-line">Omfang<span data-out-scope>—</span></div>
          <div class="gpb-line">Standard<span data-out-standard>—</span></div>
          <div class="gpb-line">Effektiv pris pr. m² (alt inkl.)<span data-out-m2>—</span></div>

          <div class="gpb-line">Overflader/gulve/maling<span data-out-surface>—</span></div>
          <div class="gpb-line">Køkken<span data-out-kitchen>—</span></div>
          <div class="gpb-line">Badeværelse<span data-out-bath>—</span></div>
          <div class="gpb-line">El/VVS<span data-out-tech>—</span></div>
          <div class="gpb-line">Planløsning<span data-out-layout>—</span></div>
          <div class="gpb-line">Nedrivning/affald/logistik<span data-out-demo>—</span></div>
          <div class="gpb-line">Rådgivning/projektering<span data-out-advice>—</span></div>

          <div class="gpb-line gpb-line--total">I alt<span data-out-total>—</span></div>
        </div>
      </div>
    </div>

    <div class="gpb-actions">
      <button class="gpb-btn" type="button" data-copy>Kopiér projektbeskrivelse</button>
      <button class="gpb-btn" type="button" data-reset>Nulstil</button>
    </div>
    <div class="gpb-toast" role="status" data-toast aria-live="polite">Kopieret.</div>

    <div class="gpb-cta">
      <p>Vil du have en mere præcis pris på din totalrenovering? Indhent 3 uforpligtende tilbud og sammenlign på samme forudsætninger.</p>
      <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" rel="nofollow sponsored noopener" target="_blank">Indhent 3 tilbud</a>
    </div>
  </div>
</div>

<script>
(function(){
  const instances = Array.from(document.querySelectorAll('[data-lrb="v1_2"]'));
  if(!instances.length) return;

  function linkLabels(root, idx){
    const prefix = "lrb_" + idx + "_";
    let n = 0;

    root.querySelectorAll(".gpb-field").forEach((field) => {
      const label = field.querySelector(".gpb-label");
      const control = field.querySelector(".gpb-input, .gpb-select");
      if(!label || !control) return;

      if(!control.id){
        const key =
          control.hasAttribute("data-area") ? "area" :
          control.hasAttribute("data-scope") ? "scope" :
          control.hasAttribute("data-standard") ? "standard" :
          control.hasAttribute("data-arealevel") ? "arealevel" :
          control.hasAttribute("data-kitchen") ? "kitchen" :
          control.hasAttribute("data-bath") ? "bath" :
          control.hasAttribute("data-bathm2") ? "bathm2" :
          control.hasAttribute("data-tech") ? "tech" :
          control.hasAttribute("data-layout") ? "layout" :
          control.hasAttribute("data-access") ? "access" :
          control.hasAttribute("data-advice") ? "advice" :
          control.hasAttribute("data-vat") ? "vat" :
          ("field" + (n++));
        control.id = prefix + key;
      }
      label.setAttribute("for", control.id);

      const help = field.querySelector(".gpb-help");
      if(help){
        if(!help.id) help.id = control.id + "__help";
        const existing = (control.getAttribute("aria-describedby") || "").trim();
        const want = help.id;
        if(!existing){
          control.setAttribute("aria-describedby", want);
        }else if(!existing.split(/\s+/).includes(want)){
          control.setAttribute("aria-describedby", existing + " " + want);
        }
      }
    });
  }

  instances.forEach((root, idx) => {
    linkLabels(root, idx);

    const storageKey = "lejlighed_reno_beregner_v1_2_" + idx;
    const q = (sel) => root.querySelector(sel);

    const area = q("[data-area]");
    const scope = q("[data-scope]");
    const standard = q("[data-standard]");
    const areaLevel = q("[data-arealevel]");
    const kitchen = q("[data-kitchen]");
    const bath = q("[data-bath]");
    const bathM2 = q("[data-bathm2]");
    const bathField = q("[data-bathfield]");
    const tech = q("[data-tech]");
    const layout = q("[data-layout]");
    const access = q("[data-access]");
    const advice = q("[data-advice]");
    const vat = q("[data-vat]");

    const pill = q("[data-pill]");
    const areaHelp = q("[data-areahelp]");
    const scopeHelp = q("[data-scopehelp]");

    const totalOut = q("[data-total]");
    const rangeOut = q("[data-range]");
    const rateOut  = q("[data-rate]");
    const badgeOut = q("[data-badge]");

    const outArea = q("[data-out-area]");
    const outScope = q("[data-out-scope]");
    const outStandard = q("[data-out-standard]");
    const outM2 = q("[data-out-m2]");
    const outSurface = q("[data-out-surface]");
    const outKitchen = q("[data-out-kitchen]");
    const outBath = q("[data-out-bath]");
    const outTech = q("[data-out-tech]");
    const outLayout = q("[data-out-layout]");
    const outDemo = q("[data-out-demo]");
    const outAdvice = q("[data-out-advice]");
    const outTotal = q("[data-out-total]");

    const toast = q("[data-toast]");
    const copyBtn = q("[data-copy]");
    const resetBtn = q("[data-reset]");

    if(!area || !scope || !standard || !kitchen || !bath) return;

    const nfCur = new Intl.NumberFormat("da-DK", { style:"currency", currency:"DKK", maximumFractionDigits:0 });
    const nfInt = new Intl.NumberFormat("da-DK", { maximumFractionDigits:0 });

    const clamp = (n, min, max) => Math.min(max, Math.max(min, n));
    const round0 = (n) => Math.round(n);
    const mid = (low, high) => (low + high) / 2;

    const SURFACE_PER_M2 = { low: 3500, high: 5200 };
    const KITCHEN = { low: 55000, high: 220000 };
    const BATH_PER_M2 = { low: 22000, high: 36000 };
    const BATH_MIN = { low: 120000, high: 170000 };

    const TECH = {
      minor:   { label:"Små tilpasninger", low: 15000, high: 35000 },
      partial: { label:"Delvis opgradering", low: 40000, high: 90000 },
      full:    { label:"Fuld udskiftning/opgradering", low: 90000, high: 200000 }
    };

    const LAYOUT = {
      none:      { label:"Ingen ændringer", low: 0, high: 0 },
      nonbearing:{ label:"Ikke-bærende vægge/døre", low: 30000, high: 80000 },
      bearing:   { label:"Indgreb i bærende konstruktion", low: 80000, high: 180000 }
    };

    const DEMO_BASE = { low: 18000, high: 32000 };
    const DEMO_PER_M2 = { low: 220, high: 420 };

    const MIN_RANGE_PCT = 0.14;

    function areaFactor(m2){
      if(m2 < 45) return 1.10;
      if(m2 < 70) return 1.04;
      if(m2 < 110) return 1.00;
      return 0.98;
    }
    function areaLevelFactor(){
      if(areaLevel.value === "low") return 0.95;
      if(areaLevel.value === "high") return 1.10;
      return 1.00;
    }
    function standardFactor(){
      if(standard.value === "budget") return 0.92;
      if(standard.value === "high") return 1.12;
      return 1.00;
    }
    function accessFactor(){
      if(access.value === "easy") return 0.95;
      if(access.value === "hard") return 1.10;
      return 1.00;
    }
    function advicePct(){
      const p = parseFloat(advice.value || "0");
      return Number.isFinite(p) ? (p/100) : 0;
    }
    function vatFactor(){
      return (vat.value === "ex") ? 0.8 : 1.0;
    }
    function vatSuffix(){
      return (vat.value === "inc") ? "inkl. moms" : "ekskl. moms";
    }
    function enforceMinRange(low, high, anchor){
      const a = Math.max(0, anchor);
      const desired = a * MIN_RANGE_PCT;
      let L = low, H = high;
      if(H - L < desired){
        const minHigh = a + desired/2;
        const minLow  = Math.max(0, a - desired/2);
        L = Math.min(L, minLow);
        H = Math.max(H, minHigh);
      }
      if(H < L){ const tmp=L; L=H; H=tmp; }
      return { low:L, high:H };
    }

    function readArea(){
      const raw = (area.value ?? "").toString().trim();
      if(raw === "" || raw === "-" || raw === "."){
        area.classList.add("gpb-invalid");
        if(areaHelp) areaHelp.textContent = "Indtast areal (m²) for at få et overslag.";
        return null;
      }
      const n = parseFloat(raw);
      if(!Number.isFinite(n)){
        area.classList.add("gpb-invalid");
        if(areaHelp) areaHelp.textContent = "Indtast et tal (m²), fx 80.";
        return null;
      }
      area.classList.remove("gpb-invalid");
      if(areaHelp) areaHelp.textContent = "Typisk 20–250 m². Små lejligheder har ofte højere pris pr. m².";
      return clamp(n, 20, 250);
    }

    function readBathM2(){
      const raw = (bathM2?.value ?? "").toString().trim();
      const n = parseFloat(raw);
      if(!Number.isFinite(n)) return 6;
      return clamp(n, 3, 12);
    }

    function showToast(msg){
      toast.textContent = msg;
      toast.style.display = "block";
      setTimeout(() => (toast.style.display = "none"), 2200);
    }

    function scopeLabel(){
      const o = scope.options[scope.selectedIndex];
      return (o && o.textContent) ? o.textContent.trim() : "";
    }
    function standardLabel(){
      const o = standard.options[standard.selectedIndex];
      return (o && o.textContent) ? o.textContent.trim() : "";
    }

    function shouldHaveKitchen(){
      return (scope.value === "mid" || scope.value === "total");
    }
    function shouldHaveBath(){
      return (scope.value === "mid" || scope.value === "total");
    }

    function compute(){
      if(pill) pill.textContent = "Vejledende overslag";

      if(scopeHelp){
        if(scope.value === "surface"){
          scopeHelp.textContent = "Primært overflader, gulve og maling. Køkken/bad kan tilvælges.";
        }else if(scope.value === "mid"){
          scopeHelp.textContent = "Typisk overflader + køkken/bad. Teknisk kan variere.";
        }else{
          scopeHelp.textContent = "Gennemgribende: overflader, køkken, bad, teknisk og evt. planløsning.";
        }
      }

      if(shouldHaveKitchen() && kitchen.value === "none") kitchen.value = "new";
      if(shouldHaveBath() && bath.value === "none") bath.value = "new";

      const withBath = (bath.value !== "none");
      if(bathField){
        bathField.classList.toggle("gpb-hidden", !withBath);
      }

      const m2Val = readArea();
      if(m2Val === null){
        totalOut.textContent = "—";
        rangeOut.textContent = "—";
        rateOut.textContent  = "—";
        outArea.textContent = "—";
        outScope.textContent = scopeLabel();
        outStandard.textContent = standardLabel();
        outM2.textContent = "—";
        outSurface.textContent = "—";
        outKitchen.textContent = "—";
        outBath.textContent = "—";
        outTech.textContent = "—";
        outLayout.textContent = "—";
        outDemo.textContent = "—";
        outAdvice.textContent = "—";
        outTotal.textContent = "—";
        badgeOut.textContent = "";
        return;
      }

      const m2 = m2Val;
      const fA = areaFactor(m2);
      const fL = areaLevelFactor();
      const fS = standardFactor();
      const fAcc = accessFactor();

      const surfaceLow = m2 * (SURFACE_PER_M2.low * fA * fL);
      const surfaceHigh = m2 * (SURFACE_PER_M2.high * fA * fL);
      const surfaceMid = mid(surfaceLow, surfaceHigh);

      let kitchenLow = 0, kitchenHigh = 0, kitchenMid = 0;
      if(kitchen.value !== "none"){
        const moveK = (kitchen.value === "move") ? 1.25 : 1.00;
        kitchenLow = KITCHEN.low * fL * fS * moveK;
        kitchenHigh = KITCHEN.high * fL * fS * moveK;
        kitchenMid = mid(kitchenLow, kitchenHigh);
      }

      let bathLow = 0, bathHigh = 0, bathMid = 0;
      if(withBath){
        const bm2 = readBathM2();
        const moveB = (bath.value === "move") ? 1.25 : 1.00;

        const calcLow = (bm2 * BATH_PER_M2.low) * fL * fS * moveB;
        const calcHigh = (bm2 * BATH_PER_M2.high) * fL * fS * moveB;

        bathLow = Math.max(calcLow, BATH_MIN.low * fL * fS * moveB);
        bathHigh = Math.max(calcHigh, BATH_MIN.high * fL * fS * moveB);
        bathMid = mid(bathLow, bathHigh);
      }

      const techPack = TECH[tech.value] || TECH.partial;
      const techLow = techPack.low * fL;
      const techHigh = techPack.high * fL;
      const techMid = mid(techLow, techHigh);

      const layoutPack = LAYOUT[layout.value] || LAYOUT.none;
      const layoutLow = layoutPack.low * fL;
      const layoutHigh = layoutPack.high * fL;
      const layoutMid = mid(layoutLow, layoutHigh);

      const demoLow = (DEMO_BASE.low + m2 * DEMO_PER_M2.low) * fL * fAcc;
      const demoHigh = (DEMO_BASE.high + m2 * DEMO_PER_M2.high) * fL * fAcc;
      const demoMid = mid(demoLow, demoHigh);

      let scopeAdjLow = 1.00, scopeAdjHigh = 1.00;
      if(scope.value === "surface"){
        scopeAdjLow = 0.92; scopeAdjHigh = 0.95;
      }else if(scope.value === "mid"){
        scopeAdjLow = 0.98; scopeAdjHigh = 1.02;
      }

      const sumLow = (surfaceLow + kitchenLow + bathLow + techLow + layoutLow + demoLow) * scopeAdjLow;
      const sumHigh = (surfaceHigh + kitchenHigh + bathHigh + techHigh + layoutHigh + demoHigh) * scopeAdjHigh;
      const sumMid = mid(sumLow, sumHigh);

      const ap = advicePct();
      const advLow = sumLow * ap;
      const advHigh = sumHigh * ap;
      const advMid = sumMid * ap;

      let totalLowInc = sumLow + advLow;
      let totalHighInc = sumHigh + advHigh;
      let totalMidInc = sumMid + advMid;

      const ranged = enforceMinRange(totalLowInc, totalHighInc, totalMidInc);
      totalLowInc = ranged.low;
      totalHighInc = ranged.high;

      const vF = vatFactor();
      const suffix = vatSuffix();

      const totalLow = totalLowInc * vF;
      const totalHigh = totalHighInc * vF;
      const totalMid = totalMidInc * vF;

      const m2Shown = totalMid / m2;

      totalOut.textContent = nfCur.format(round0(totalMid)) + " " + suffix;
      rangeOut.textContent = "Prisspænd " + nfCur.format(round0(totalLow)) + "–" + nfCur.format(round0(totalHigh)) + " " + suffix;
      rateOut.textContent  = "Effektiv pris pr. m² (alt inkl.): " + nfCur.format(round0(m2Shown)) + "/m² " + suffix;

      outArea.textContent = nfInt.format(m2) + " m²";
      outScope.textContent = scopeLabel();
      outStandard.textContent = standardLabel();
      outM2.textContent = nfCur.format(round0(m2Shown)) + "/m² " + suffix;

      outSurface.textContent = nfCur.format(round0(surfaceMid * vF));
      outKitchen.textContent = (kitchen.value !== "none") ? nfCur.format(round0(kitchenMid * vF)) : "0 kr.";
      outBath.textContent = withBath ? nfCur.format(round0(bathMid * vF)) : "0 kr.";
      outTech.textContent = nfCur.format(round0(techMid * vF));
      outLayout.textContent = nfCur.format(round0(layoutMid * vF));
      outDemo.textContent = nfCur.format(round0(demoMid * vF));
      outAdvice.textContent = (ap > 0) ? nfCur.format(round0(advMid * vF)) : "0 kr.";
      outTotal.textContent = nfCur.format(round0(totalMid));

      badgeOut.textContent = "";

      try{
        localStorage.setItem(storageKey, JSON.stringify({
          m2, scope: scope.value, standard: standard.value, areaLevel: areaLevel.value,
          kitchen: kitchen.value, bath: bath.value, bathM2: readBathM2(),
          tech: tech.value, layout: layout.value, access: access.value,
          advice: advice.value, vat: vat.value
        }));
      }catch(e){}
    }

    function restore(){
      try{
        const saved = JSON.parse(localStorage.getItem(storageKey) || "null");
        if(!saved) return;
        if(saved.m2 != null) area.value = saved.m2;
        if(saved.scope) scope.value = saved.scope;
        if(saved.standard) standard.value = saved.standard;
        if(saved.areaLevel) areaLevel.value = saved.areaLevel;
        if(saved.kitchen) kitchen.value = saved.kitchen;
        if(saved.bath) bath.value = saved.bath;
        if(saved.bathM2 != null && bathM2) bathM2.value = saved.bathM2;
        if(saved.tech) tech.value = saved.tech;
        if(saved.layout) layout.value = saved.layout;
        if(saved.access) access.value = saved.access;
        if(saved.advice != null) advice.value = saved.advice;
        if(saved.vat) vat.value = saved.vat;
      }catch(e){}
    }

    function projectText(){
      const m2Val = readArea();
      const m2 = (m2Val === null) ? 80 : m2Val;

      const scopeTxt = scope.options[scope.selectedIndex]?.textContent?.trim() || "";
      const stdTxt = standard.options[standard.selectedIndex]?.textContent?.trim() || "";
      const areaTxt = areaLevel.options[areaLevel.selectedIndex]?.textContent?.trim() || "";
      const kTxt = kitchen.options[kitchen.selectedIndex]?.textContent?.trim() || "";
      const bTxt = bath.options[bath.selectedIndex]?.textContent?.trim() || "";
      const tTxt = tech.options[tech.selectedIndex]?.textContent?.trim() || "";
      const lTxt = layout.options[layout.selectedIndex]?.textContent?.trim() || "";
      const aTxt = access.options[access.selectedIndex]?.textContent?.trim() || "";
      const advTxt = advice.options[advice.selectedIndex]?.textContent?.trim() || "";
      const vatTxt = (vat.value === "inc") ? "inkl. moms" : "ekskl. moms";
      const bathTxt = (bath.value !== "none") ? (" Bad ca. " + readBathM2() + " m².") : "";

      return (
        "Totalrenovering af lejlighed. " +
        "Areal ca. " + m2 + " m². " +
        "Omfang: " + scopeTxt + ". " +
        "Standard: " + stdTxt + ". " +
        "Prisniveau: " + areaTxt + ". " +
        "Køkken: " + kTxt + ". " +
        "Badeværelse: " + bTxt + "." + bathTxt + " " +
        "El/VVS: " + tTxt + ". " +
        "Planløsning: " + lTxt + ". " +
        "Adgang/logistik: " + aTxt + ". " +
        "Rådgivning: " + advTxt + ". " +
        "Ønsker pris " + vatTxt + ". " +
        "Inkludér i tilbud: nedrivning/affald, beskyttelse af fællesarealer, el/VVS, vådrum, gulve/overflader, køkken/bad, tidsplan og aflevering."
      );
    }

    let raf = 0;
    function schedule(){ if(raf) cancelAnimationFrame(raf); raf = requestAnimationFrame(compute); }

    [area, scope, standard, areaLevel, kitchen, bath, bathM2, tech, layout, access, advice, vat]
      .filter(Boolean)
      .forEach((n) => {
        n.addEventListener("input", schedule);
        n.addEventListener("change", schedule);
      });

    copyBtn.addEventListener("click", async () => {
      const text = projectText();
      try{ await navigator.clipboard.writeText(text); showToast("Kopieret."); }
      catch(e){
        const ta = document.createElement("textarea");
        ta.value = text; document.body.appendChild(ta); ta.select();
        try{ document.execCommand("copy"); }catch(err){}
        document.body.removeChild(ta);
        showToast("Kopieret.");
      }
    });

    resetBtn.addEventListener("click", () => {
      area.value = 80;
      scope.value = "total";
      standard.value = "standard";
      areaLevel.value = "normal";
      kitchen.value = "new";
      bath.value = "new";
      if(bathM2) bathM2.value = 6;
      tech.value = "partial";
      layout.value = "none";
      access.value = "normal";
      advice.value = "5";
      vat.value = "inc";
      try{ localStorage.removeItem(storageKey); }catch(e){}
      area.classList.remove("gpb-invalid");
      if(areaHelp) areaHelp.textContent = "Typisk 20–250 m². Små lejligheder har ofte højere pris pr. m².";
      schedule();
      showToast("Nulstillet.");
    });

    restore();
    schedule();
  });
})();
</script>

</div><div class="bde-rich-text-1425-156 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Planløsning: Meter, der føles som mere</h2>
<p>Når kvadratmeterprisen er høj, bliver spild ekstra dyrt. Ikke bare på papiret, men i oplevelsen.</p>
<p>Mange ældre lejligheder har en gang, der æder plads. Et køkken, der er lukket og smalt. Rum, der er opdelt efter en logik, der ikke helt passer til, hvordan folk bor i dag.</p>
<p>En totalrenovering giver mulighed for at gøre noget, der faktisk kan mærkes: at ændre flowet. At få køkken og ophold til at hænge sammen. At flytte døre, så du ikke mister halve vægge til gennemgang. At bygge opbevaring ind, så stuen ikke bliver til skab.</p>
<p>Køkken-alrum er blevet en klassiker, og det er ikke fordi alle pludselig elsker at lave mad. Det er fordi køkkenet er blevet et opholdsrum. Det er der, man står om morgenen, der hvor gæster ender, og der hvor en bærbar computer ofte lander, når man arbejder hjemme.</p>
<p>En god planløsning kan derfor være den mest værdifulde del af en totalrenovering. Du kan ikke sætte prisskilt på den på samme måde som en bordplade, men købere mærker det på to sekunder, når de træder ind.</p>
</div><div class="bde-rich-text-1425-157 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Badet er ikke et rum, det er en konstruktion</h2>
<p>Hvis der er ét sted, hvor man ikke skal gå på kompromis, er det badeværelset.</p>
<p>I en lejlighed er et bad ikke bare dit. Det er også foreningens, naboens og i praksis hele ejendommens risiko, hvis noget er lavet forkert. Derfor er det også her, købere ofte bliver mistænksomme.</p>
<p>Mange har set salgsannoncer med “nyt badeværelse”, hvor det nye i virkeligheden var overfladen. En ny bruser. Nye fliser oven på gamle. Men uden dokumentation for, hvordan vådrummet er bygget op.</p>
<p>En totalrenovering giver mulighed for at gøre det rigtigt fra bunden. Membran, korrekt fald, afløb, ventilation og alt det, der ikke er spændende at vælge, men som gør forskellen mellem et bad, der holder, og et bad, der giver problemer.</p>
<p>Der er også komfortdelen. Et lille badeværelse kan blive overraskende godt, hvis det er gennemtænkt. Bruseniche, opbevaring, ordentlig belysning, og et layout, hvor man ikke skal dreje sig sidelæns for at komme forbi vasken.</p>
</div><div class="bde-rich-text-1425-158 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">El og VVS: Det kedelige, der redder dig senere</h2>
<p>Der findes renoveringer, der ser flotte ud, men som føles irriterende at bo i. Det sker ofte, når man har brugt pengene på det synlige og sparet på det tekniske.</p>
<p><a href="https://mitboligprojekt.dk/elektriker/">El</a> er en typisk fælde. Hvis du arbejder hjemme, har du brug for stikkontakter de rigtige steder. Hvis du laver mad, har du brug for kapacitet. Hvis du vil have spots, kræver det planlægning, ikke gætteri.</p>
<p><a href="https://mitboligprojekt.dk/vvs/">VVS</a> er endnu mere nådesløst. Små fejl kan give store konsekvenser, især i etageejendomme. En utæthed kan udvikle sig, før du opdager den. Et afløb med forkert fald kan give problemer, der ikke bare er kosmetiske.</p>
<p>Når folk siger, at de betaler for “ro i maven”, handler det ofte om præcis det her. At installationerne er opdaterede. At badet er lavet korrekt. At der er papir på det.</p>
</div><div class="bde-rich-text-1425-159 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Indflytningsklar sælger: Hvorfor markedet belønner det færdige</h2>
<p>Der er en grund til, at ordene “gennemgribende istandsat” og “totalrenoveret” fylder så meget i boligannoncer. Det er et signal.</p>
<p>Det signal siger ikke, at alt er luksus. Det siger, at nogen har været nede i det besværlige. At el og rør ikke er et spørgsmålstegn. At badet ikke er et lotteri. At planløsningen er tænkt igennem.</p>
<p>I storbyerne betyder det noget, fordi mange købere ikke har lyst til at starte med håndværkere. Ikke fordi de er sarte, men fordi det er svært at kombinere med hverdag. Det gælder især, hvis man har børn, eller hvis man i forvejen har et liv, der kører i højt gear.</p>
<p>Derfor kan to lejligheder med samme adresse og samme størrelse ende med to forskellige prisniveauer. Den ene sælges på “muligheder”. Den anden sælges på, at den er klar.</p>
<p>Og “klar” er ofte det, folk betaler ekstra for.</p>
</div><img decoding="async" class="bde-image2-1425-176 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.53.28.webp" alt="Moderne master bedroom i penthouse på Islands Brygge med gulv-til-loft vinduer, havneudsigts, lyse gulve og valnøddepaneler." loading="lazy" srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.53.28.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.53.28-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.53.28-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.53.28-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-1425-161 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Materialer og finish: Det købere kan mærke, men sjældent kan forklare</h2>
<p>Det er nemt at blive grebet af materialer. Det er også her, budgetter løber.</p>
<p>Et godt trick er at tænke i hverdagsbrug. Hvad bliver rørt ved hver dag. Hvad bliver slidt. Hvad bliver vådt. Hvad bliver brugt som bordplade, selv om det ikke var meningen.</p>
<p>Gulvet er et klassisk eksempel. I en bylejlighed er gulvet ikke bare en flade. Det er gennemgang, legeplads, kontor, spiseplads og ofte også stedet, hvor man lige smider tasken, når man kommer ind. Hvis det ikke kan tåle livet, bliver det hurtigt en kilde til irritation.</p>
<p>Køkkenet er et andet. Her kan forskellen ligge i funktion og detaljer. Skuffer, hængsler, opbevaringsløsninger, og om der er tænkt over, hvordan man faktisk står og bevæger sig i rummet.</p>
<p>Finish er det, der afslører om noget er gjort ordentligt. Lister, overgange, fuger, dørtrin, indbyggede løsninger. De færreste kan sætte tekniske ord på, hvad de ser, men de kan mærke, om helheden spiller.</p>
</div><div class="bde-rich-text-1425-170 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Tidsplan og genhusning: Der hvor pengene ofte forsvinder</h2>
<p>Der findes to tidsplaner i en renovering. Den, man håber på. Og den, der sker.</p>
<p>Forsinkelser behøver ikke betyde, at nogen er uduelige. Byggeri er fyldt med afhængigheder. Leverancer kan skride. Materialer kan være i restordre. Og når man åbner op i en gammel lejlighed, kan man finde ting, ingen havde regnet med.</p>
<p>Men i en bylejlighed bliver hver ekstra uge dyr. Det er sjældent bare et irritationsmoment. Det er genhusning, dobbeltudgifter og en hverdag, der ikke kan falde på plads.</p>
<p>Det er også her, beslutninger bliver afgørende. Mange forsinkelser opstår, fordi valg ikke er taget i tide. Fliser er ikke bestilt. Køkkenet er forsinket. Armaturerne er udsolgt. Og pludselig står byggepladsen stille.</p>
<p>Stilstand er en af de dyreste poster, fordi den ikke nødvendigvis ser ud af noget på fakturaen, før den gør.</p>
</div><div class="bde-rich-text-1425-171 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Tilbud og kontrakt: Sådan undgår du de klassiske tillæg</h2>
<p>Tilbud kan ligne hinanden, men de kan dække over to helt forskellige virkeligheder.</p>
<p>Det er sjældent prisen alene, der gør forskellen. Det er detaljegraden.</p>
<p>Et godt tilbud beskriver, hvad der faktisk er med. Hvad der rives ned. Hvad der bortskaffes. Hvordan vådrum udføres. Hvilke materialer der er sat af til. Om afdækning og oprydning er inkluderet. Om fællesarealer er tænkt ind.</p>
<p>Et dårligt tilbud er ofte for pænt i sin enkelhed. Det ser overskueligt ud, men efterlader masser af åbne ender. Og åbne ender er det, der bliver til “tillæg”, når projektet er i gang.</p>
<p>Kig også på betalingsplanen. Alt på forhånd bør give anledning til spørgsmål. Milepæle, hvor betaling følger leverancer, er ofte et sundere tegn.</p>
<p>Hvis du ikke er vant til at læse byggeaftaler, kan det være en god idé at få en ekstra gennemgang, før du skriver under. Det føles måske som et irritationslag, men det er typisk billigere end at opdage hullerne, når lejligheden allerede er en byggeplads.</p>
</div><div class="bde-globalblock-1425-180 bde-globalblock"><div class="bde-rich-text-1432-100-1432-3 bde-rich-text bde-rich-text-1432-100 breakdance-rich-text-styles">
<p><style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style></p>
<aside class="ad-690">
<div class="ad-690-content">
<div class="ad-690-label">Annonce</div>
<div class="ad-690-headline">Overvejer du totalrenovering af lejlighed?</div>
<div class="ad-690-text">Få tre uforpligtende tilbud på totalentreprise.</div>
</div>
<a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener"> Få 3 gratis tilbud </a></aside>
</div></div><div class="bde-rich-text-1425-172 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Arkitekt og bygherrerådgivning: Hvornår det er en god idé at få hjælp</h2>
<p>Mange starter med en idé, der lyder enkel. Riv væggen ned. Flyt døren. Gør det lysere.</p>
<p>I ældre ejendomme er det sjældent så ligetil. En væg kan være bærende. Den kan gemme installationer. Den kan ændre lyd og konstruktion. Og pludselig er “vi åbner op” ikke bare et spørgsmål om vilje, men om teknik og godkendelser.</p>
<p>Det er her, en arkitekt kan give mening. Ikke nødvendigvis for at tegne en fancy drøm, men for at finde de greb, der gør lejligheden bedre at bo i. Lys, flow, proportioner og de små justeringer, der kan få en bolig til at føles større.</p>
<p>Hvis du vil have sparring, kan du indhente hjælp via <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/lp/arkitekt/" target="_blank" rel="noopener">3byggetilbud.dk til arkitekt</a>, så du kan få konkrete bud på muligheder og løsninger.</p>
<p>Bygherrerådgivning er den mere nøgterne disciplin. Her handler det om at holde styr på proces, økonomi og kvalitet, især hvis projektet er stort, eller hvis du vil have en, der hjælper dig med at stille de rigtige spørgsmål undervejs.</p>
<p>Du kan også se muligheder for <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/bygherreraadgivning/" target="_blank" rel="noopener">bygherrerådgivning via 3byggetilbud.dk</a>, hvis du gerne vil have en faglig medspiller, der kan hjælpe med overblik og kvalitetssikring.</p>
</div><div class="bde-rich-text-1425-173 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Forening, naboer og logistik: Når renovering bliver et naboprojekt</h2>
<p>Totalrenovering i en lejlighed foregår aldrig i et vakuum. Du bygger i en ejendom med naboer, trapperum, fælles installationer og ofte en bestyrelse, der har holdninger til, hvordan tingene skal foregå.</p>
<p>Der kan være støjregler og faste arbejdstider. Der kan være krav om anmeldelse og godkendelse, især hvis du rører ved bærende dele, vådrum eller ventilation. Og der kan være praktiske hensyn, som først bliver tydelige, når man står med en gipsplade i hånden på tredje sal.</p>
<p>Logistikken er også sin egen disciplin. Hvor står materialerne, når gården er lille? Hvordan får du køkkenelementer op uden elevator? Hvornår kan du få en container på gaden, og hvem betaler, hvis opgangen får skader?</p>
<p>Det er ikke det, man drømmer om, når man drømmer om nyt bad. Men det er ofte det, der afgør, om projektet flyder, eller om det bliver en lang række små irritationer.</p>
</div><div class="bde-rich-text-1425-174 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Overrenovering eller ramme rigtigt: Sådan matcher du kvarteret</h2>
<p>Det er fristende at tænke, at man altid kan “lægge på” med bedre materialer og flere løsninger. Men selv i stærke storbyområder findes der et loft for, hvad markedet belønner.</p>
<p>Forskellen ligger ofte i, om du rammer købergruppen i netop dit kvarter. En lejlighed på Vesterbro kan sagtens bære et robust, gennemført udtryk med fokus på funktion og holdbarhed, mens en mindre lejlighed tæt på studiemiljø i Aarhus ofte sælger på en anden pakke: god planløsning, fornuftige løsninger og et bad, der er lavet korrekt.</p>
<p>Det betyder ikke, at du skal bygge “billigt”. Det betyder, at du skal bygge klogt. Prioritér de steder, hvor kvalitet kan mærkes hver dag, og hvor fejl bliver dyre: vådrum, el, VVS, gulve og de overgange, der afslører, om arbejdet er ordentligt.</p>
<p>Og så er der helheden. En lejlighed kan hurtigt komme til at føles som et patchwork, hvis du vælger tre forskellige stilarter i tre forskellige rum. Det er sjældent det, der får folk til at byde mere. Det er derimod en rolig linje gennem boligen, hvor materialer, farver og detaljer hænger sammen, uden at det bliver museum.</p>
<p>Hvis du vil være helt nøgtern, kan det også være en idé at se på, hvad der faktisk bliver solgt i dit område, og hvordan det bliver prissat. Ikke for at kopiere. For at kalibrere, så du ikke ender med at betale for luksus, som kun du selv kan se værdien af.</p>
</div><img decoding="async" class="bde-image2-1425-177 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.42.37.webp" alt="Lys, nyrenoveret københavnerlejlighed med åbent køkken-alrum, dannebrogsvinduer, stuk, sildebensgulv i eg og minimalistisk nordisk indretning." loading="lazy" srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.42.37.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.42.37-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.42.37-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-15.-feb.-2026-13.42.37-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-1425-175 bde-rich-text breakdance-rich-text-styles">
<h2 data-pm-slice="1 1 []">Klar til at få tilbud på totalrenovering af lejlighed?</h2>
<p>Hvis du er nået til punktet, hvor du seriøst overvejer totalrenovering af lejlighed, er næste skridt ret lavpraktisk. Du skal have noget at regne på.</p>
<p>Det er svært at vurdere, om projektet giver mening, før du har set konkrete priser og fået en idé om tidsplanen. Derfor kan det være en fordel at indhente flere tilbud, så du kan sammenligne både pris, omfang og de løsninger, der bliver foreslået.</p>
<p>Du kan starte ved at hente tilbud via <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="noopener">3byggetilbud.dk til totalentreprise</a>. Det giver dig et mere realistisk overblik over, hvad der er inkluderet, og hvor de store poster ligger, før du træffer de endelige valg.</p>
<p>Hvis projektet også handler om planløsning, lys og rum, kan <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/lp/arkitekt/" target="_blank" rel="noopener">arkitekthjælp via 3byggetilbud.dk</a> være en måde at få idéerne gjort konkrete. Og hvis du mest af alt vil undgå, at projektet løber, kan <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/bygherreraadgivning/" target="_blank" rel="noopener">bygherrerådgivning via 3byggetilbud.dk</a> give dig en ekstra hånd på styring, kvalitet og de spørgsmål, der er lette at glemme, når det hele kører.</p>
</div><div class="bde-globalblock-1425-162 bde-globalblock"><div class="bde-rich-text-1432-100-1432-4 bde-rich-text bde-rich-text-1432-100 breakdance-rich-text-styles">
<p><style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style></p>
<aside class="ad-690">
<div class="ad-690-content">
<div class="ad-690-label">Annonce</div>
<div class="ad-690-headline">Overvejer du totalrenovering af lejlighed?</div>
<div class="ad-690-text">Få tre uforpligtende tilbud på totalentreprise.</div>
</div>
<a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener"> Få 3 gratis tilbud </a></aside>
</div></div><div class="bde-rich-text-1425-163 bde-rich-text breakdance-rich-text-styles">

</div>
</div><div class="bde-column-1425-164 bde-column">
  
  
	



<div class="bde-table-of-contents-1425-165 bde-table-of-contents">
<div class="bde-table-of-contents__wrapper">
  <header class="bde-table-of-contents__header">
        <h3 class="bde-table-of-contents__title toc-ignore">Indholdsfortegnelse</h3>
           </header>
  
  <div class="bde-table-of-contents__list">
    <nav id="bde-toc" class="toc js-breakdance-toc" aria-label="Indholdsfortegnelse">There are no headings in this document.</nav>
  </div>
</div>


</div><div class="bde-div-1425-166 bde-div">
  
  
	



<div class="bde-text-1425-167 bde-text">
Vi samarbejder med 3Byggetilbud.dk og modtager provision for henvisninger via links på denne side. Vi tager ikke ansvar for kvaliteten af det udførte arbejde eller for aftaler indgået mellem dig og de formidlede håndværkere. Alle aftaler indgås direkte mellem dig og den valgte håndværker.
</div>
</div><div class="bde-globalblock-1425-168 bde-globalblock"><div class="bde-rich-text-1433-100-1433-1 bde-rich-text bde-rich-text-1433-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-336 {
  position: relative;
  width: 336px;
  height: 280px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
}

.ad-336::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(
      rgba(245,245,242,0.05) 1px,
      transparent 1px
    ),
    linear-gradient(
      90deg,
      rgba(245,245,242,0.05) 1px,
      transparent 1px
    );
  background-size: 32px 32px;
  z-index: 0;
}

.ad-336::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at top,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-336 > * {
  position: relative;
  z-index: 1;
}

.ad-content {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.ad-label {
  font-size: 0.7rem;
  opacity: 0.8;
}

.ad-headline {
  font-size: 1.35rem;
  line-height: 1.25;
  font-weight: 600;
}

.ad-text {
  font-size: 0.95rem;
  line-height: 1.5;
  color: #E6ECE8;
}

.ad-badge {
  align-self: flex-start;
  border: 1px solid rgba(204,250,116,0.6);
  color: #EAF7C8;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 0.75rem;
}

.ad-footer {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ad-cta {
  background: var(--brand-light);
  color: #10110C !important;
  text-align: center;
  padding: 12px;
  border-radius: 999px;
  font-size: 1.1rem;
  font-weight: 600;
  text-decoration: none;
}

.ad-note {
  font-size: 0.7rem;
  opacity: 0.85;
  text-align: center;
}
</style>

<aside class="ad-336">
  <div class="ad-content">
    <div class="ad-label">Annonce</div>

    <div class="ad-headline">
      Overvejer du totalrenovering?
    </div>

    <div class="ad-text">
      Få et hurtigt overblik og sammenlign tilbud på totalrenovering af lejlighed.
    </div>

    <div class="ad-badge">
      Gratis og uforpligtende
    </div>
  </div>

  <div class="ad-footer">
    <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" class="ad-cta" target="_blank" rel="nofollow sponsored noopener">
      Få 3 gratis tilbud
    </a>

    <div class="ad-note">
      Sammenlign pris og løsning
    </div>
  </div>
</aside>

</div></div>
</div></div></div>
</section>]]></content:encoded>
					
					<wfw:commentRss>https://mitboligprojekt.dk/totalrenovering-af-lejlighed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Nybyg vs. totalrenovering: sådan finder I den rette løsning</title>
		<link>https://mitboligprojekt.dk/nybyg-vs-totalrenovering/</link>
					<comments>https://mitboligprojekt.dk/nybyg-vs-totalrenovering/#respond</comments>
		
		<dc:creator><![CDATA[Tobias]]></dc:creator>
		<pubDate>Wed, 04 Feb 2026 13:57:27 +0000</pubDate>
				<category><![CDATA[Totalentreprise]]></category>
		<category><![CDATA[Nybyg]]></category>
		<guid isPermaLink="false">https://mitboligprojekt.dk/?p=851</guid>

					<description><![CDATA[Nybyg og totalrenovering kan begge ende med et hjem, der føles som en ny start. Forskellen ligger i, hvad I vil bevare, hvor meget usikkerhed I kan leve med, og hvordan økonomi og tidsplan hænger sammen. Her får I en guide, der gør valget mere roligt og mere realistisk.]]></description>
										<content:encoded><![CDATA[<section class="bde-section-851-100 bde-section">
  
  
	



<div class="section-container"><div class="bde-columns-851-101 bde-columns"><div class="bde-column-851-102 bde-column">
  
  
	



<div class="bde-div-851-103 bde-div">
  
  
	



<div class="bde-breadcrumbs-851-104 bde-breadcrumbs"><nav aria-label="breadcrumbs" class="rank-math-breadcrumb"><p><a href="https://mitboligprojekt.dk">Forside</a><span class="separator"> &raquo; </span><span class="last">Totalentreprise</span></p></nav></div><ul class="bde-post-meta-851-105 bde-post-meta">            <li class="ee-postmeta-date-wrap">
                                                        <span class="ee-postmeta-date"><span
                            class="ee-postmeta-before">Senest opdateret: </span>4. februar 2026</span>
                                </li>
            </ul>
</div><div class="bde-fancy-divider-851-106 bde-fancy-divider">


<div class="bde-fancy-divider__wrapper">
  <div class="bde-fancy-divider__separator   ">
  	  </div>
</div>

</div><div class="bde-rich-text-851-107 bde-rich-text breakdance-rich-text-styles">
<h1><span style="font-weight: bold;">Nybyg vs. totalrenovering:</span> <span style="font-weight: 500;">sådan finder I den rette løsning</span></h1>
</div><div class="bde-text-851-108 bde-text">
<p>Nybyg og totalrenovering kan begge ende med et hjem, der føles som en ny start. Forskellen ligger i, hvad I vil bevare, hvor meget usikkerhed I kan leve med, og hvordan økonomi og tidsplan hænger sammen. Her får I en guide, der gør valget mere roligt og mere realistisk.</p>

</div><img decoding="async" class="bde-image2-851-109 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.08.45.webp" alt="Nybyg parcelhus vs totalrenovering af 60/70’er hus i Danmark (split-screen)." srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.08.45.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.08.45-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.08.45-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.08.45-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-851-110 bde-rich-text breakdance-rich-text-styles">
Nybyg parcelhus vs totalrenovering af 60/70’er hus i Danmark (split-screen).
</div><div class="bde-fancy-divider-851-111 bde-fancy-divider">


<div class="bde-fancy-divider__wrapper">
  <div class="bde-fancy-divider__separator   ">
  	  </div>
</div>

</div><div class="bde-rich-text-851-112 bde-rich-text breakdance-rich-text-styles">
<p>Måske er det pladsen, der mangler. Måske er det planløsningen, der driller. Eller måske er huset egentlig fint, men det føles som om I hele tiden lapper og aldrig rigtig kommer i mål.</p>
<p>Uanset årsagen ender mange danske boligejere samme sted: Skal vi bygge nyt, eller skal vi totalrenovere det, vi allerede har? Det er et stort valg, men det behøver ikke føles som et sats.</p>
<p>På <a href="https://mitboligprojekt.dk/">MitBoligProjekt.dk</a> hjælper vi boligejere med at skabe overblik før de binder sig. Denne artikel er skrevet til jer, der gerne vil træffe en god beslutning uden at drukne i detaljer. I får de vigtigste kriterier, de typiske faldgruber og en praktisk måde at komme videre på.</p>
</div><div class="bde-globalblock-851-113 bde-globalblock"><div class="bde-rich-text-838-100-838-1 bde-rich-text bde-rich-text-838-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style>

<aside class="ad-690">
  <div class="ad-690-content">
    <div class="ad-690-label">Annonce</div>

    <div class="ad-690-headline">
      Overvejer du totalrenovering?
    </div>

    <div class="ad-690-text">
      Sammenlign tilbud på totalrenovering af hus.
    </div>
  </div>

  <a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener">
    Få 3 gratis tilbud
  </a>
</aside>

</div></div><div class="bde-rich-text-851-114 bde-rich-text breakdance-rich-text-styles">
<h2>Start med det, I vil opnå</h2>
<p>Før I overhovedet begynder at regne på m² og materialer, er der ét spørgsmål, der gør alt lettere: Hvad er det, I vil have mere af i hverdagen?</p>
<p>For nogle handler det om ro. For andre handler det om flow, zoner og opbevaring. Og for mange handler det om livsfase.</p>
<p>Når der kommer børn til, bliver ekstra værelser, et ekstra bad og et køkken, der kan rumme kaos og madpakker, pludselig meget konkret. Når børnene flytter hjemmefra, handler ønsket ofte om det modsatte: færre kvadratmeter, bedre komfort og et hus, der er nemt at bo i og billigere at varme op.</p>
<p>Hvis I kan formulere målet i én sætning, bliver resten mere overskueligt. “Vi vil have et køkken-alrum og et ekstra bad.” “Vi vil have lavere drift og mindre vedligehold.” “Vi vil have et hus, der passer til de næste 10–15 år.”</p>
</div><div class="bde-rich-text-851-115 bde-rich-text breakdance-rich-text-styles">
<h2>To veje til et hjem, der føles nyt</h2>
<p>Nybyg og totalrenovering kan begge give jer den samme følelse, når I er færdige: “Nu fungerer det.” Men vejen dertil er forskellig.</p>
<p>Nybyg er et blankt lærred. I kan tegne huset til jeres liv, jeres vaner og jeres næste kapitel. Mange oplever også, at processen er lettere at forstå, fordi man bygger fremad fra en plan.</p>
<p>Totalrenovering er en opgradering af noget, der allerede har værdi. Beliggenheden, grunden, skolevejen, haven, nabolaget og måske også husets proportioner eller særlige detaljer. En god totalrenovering kan føles lige så moderne som nybyg, men med den store fordel, at I ikke skal starte forfra på adressen.</p>
<p>Hvis I vil læse mere om mulighederne ved nybyg, kan I bruge guiden om nybyg på MitBoligProjekt.dk. Og hvis I hælder mod en renovering med samlet ansvar, giver guiden om totalentreprise et godt udgangspunkt.</p>
</div><div class="bde-rich-text-851-133 bde-rich-text breakdance-rich-text-styles">
<div class="flex flex-col text-sm pb-25">
<article class="text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" dir="auto" tabindex="-1" data-turn-id="c51f4d2c-8b6c-4096-ac61-cb45c88e09d2" data-testid="conversation-turn-72" data-scroll-anchor="true" data-turn="assistant">
<div class="text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm/main:[--thread-content-margin:--spacing(6)] @w-lg/main:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)">
<div class="[--thread-content-max-width:40rem] @w-lg/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn" tabindex="-1">
<div class="flex max-w-full flex-col grow">
<div class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-1" dir="auto" data-message-author-role="assistant" data-message-id="f33e637f-a4f9-4cec-9a54-c33d85d1f41c" data-message-model-slug="gpt-5-2-thinking">
<div class="flex w-full flex-col gap-1 empty:hidden first:pt-[1px]">
<div class="markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling">
<h2 data-start="968" data-end="1039">Nybyg eller totalrenovering? Få en første retning på et par minutter</h2>
<p data-start="1041" data-end="1407" data-is-last-node="" data-is-only-node="">Er I i tvivl om, hvor det giver mest mening at lægge pengene: i et nyt hus eller i at løfte det, I allerede bor i? Denne guide hjælper jer med at få en realistisk mavefornemmelse, før I tager næste skridt.</p>
<p data-start="1041" data-end="1407" data-is-last-node="" data-is-only-node="">I svarer på 6 spørgsmål, ét ad gangen, og får en kort opsummering, som er nem at tage med ind i dialogen med en totalentreprenør eller en bygherrerådgiver.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</article>
</div>
</div><div class="bde-rich-text-851-116 bde-rich-text breakdance-rich-text-styles">

<p><style>
  .choice-mini {
    background: #F5F5F2;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 1.25rem;
    max-width: 760px;
    margin: 0 auto;
    color: #10110C;
    line-height: 1.55;
    font-weight: 300;
  }
  .choice-mini * { box-sizing: border-box; }

  .cg-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.85rem;
  }
  .cg-title {
    margin: 0;
    font-size: 1.15rem;
    color: #203723;
    font-weight: 500;
  }
  .cg-sub {
    margin: 0.25rem 0 0 0;
    font-size: 0.95rem;
    color: #333;
    font-weight: 300;
    max-width: 72ch;
  }
  .cg-pill {
    background: #fff;
    border: 1px solid #E1E1E1;
    border-radius: 999px;
    padding: 0.4rem 0.7rem;
    font-size: 0.9rem;
    color: #203723;
    font-weight: 400;
    white-space: nowrap;
  }

  .cg-card {
    background: #fff;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 1rem;
  }
  .cg-card + .cg-card { margin-top: 0.85rem; }

  .cg-section-title {
    margin: 0 0 0.75rem 0;
    color: #203723;
    font-size: 1.02rem;
    font-weight: 500;
  }

  .cg-stephead {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
  }
  .cg-step-pill {
    background: #F5F5F2;
    border: 1px solid #E1E1E1;
    border-radius: 999px;
    padding: 0.25rem 0.55rem;
    font-size: 0.84rem;
    color: #333;
    font-weight: 300;
    white-space: nowrap;
  }
  .cg-progress {
    flex: 1;
    height: 8px;
    border: 1px solid #E1E1E1;
    background: #F5F5F2;
    border-radius: 999px;
    overflow: hidden;
  }
  .cg-progress > div {
    height: 100%;
    width: 16%;
    background: #203723;
  }

  .cg-field { display: grid; gap: 0.45rem; }
  .cg-label { font-size: 0.98rem; color: #10110C; font-weight: 400; }

  .cg-select {
    width: 100%;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 0.72rem 2.35rem 0.72rem 0.75rem;
    background: #fff;
    color: #10110C;
    font-size: 0.98rem;
    font-weight: 300;
    outline: none;
    min-height: 46px;

    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-repeat: no-repeat;
    background-position: right 0.85rem center;
    background-size: 14px 14px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23203723' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  }
  .cg-select:focus { border-color: #203723; }

  .cg-under {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.15rem;
  }
  .cg-why {
    appearance: none;
    border: 0;
    background: transparent;
    padding: 0;
    color: #203723;
    cursor: pointer;
    font-size: 0.88rem;
    font-weight: 400;
    text-decoration: underline;
  }

  .cg-tip {
    display: none;
    margin-top: 0.65rem;
    padding: 0.65rem 0.7rem;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    background: #F5F5F2;
    font-size: 0.88rem;
    color: #333;
    font-weight: 300;
  }

  .cg-nav {
    display: flex;
    gap: 0.55rem;
    flex-wrap: wrap;
    margin-top: 0.95rem;
  }
  .cg-btn {
    appearance: none;
    border: 1px solid #E1E1E1;
    background: #fff;
    color: #10110C;
    padding: 0.6rem 0.85rem;
    border-radius: 10px;
    font-size: 0.95rem;
    cursor: pointer;
    font-weight: 400;
    transition: transform 0.08s ease, border-color 0.12s ease;
  }
  .cg-btn:hover { border-color: #203723; }
  .cg-btn:active { transform: scale(0.99); }
  .cg-btn[disabled] { opacity: 0.55; cursor: not-allowed; }

  .cg-primary {
    background: #203723;
    border-color: #203723;
    color: #fff;
  }
  .cg-primary:hover { filter: brightness(0.95); }

  .cg-kpi-top {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.15rem;
  }
  .cg-kpi-label { font-size: 0.92rem; color: #333; font-weight: 400; }
  .cg-kpi-value { font-size: 1.08rem; color: #10110C; font-weight: 500; }

  .cg-explain {
    margin: 0.35rem 0 0 0;
    font-size: 0.92rem;
    color: #333;
    font-weight: 300;
  }

  .cg-bar {
    margin-top: 0.65rem;
    border: 1px solid #E1E1E1;
    border-radius: 999px;
    height: 12px;
    background: #F5F5F2;
    overflow: hidden;
  }
  .cg-bar-fill {
    height: 100%;
    width: 50%;
    background: #203723;
  }
  .cg-bar-labels {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.35rem;
    font-size: 0.82rem;
    color: #666;
    font-weight: 300;
  }

  .cg-actions {
    display: flex;
    gap: 0.55rem;
    flex-wrap: wrap;
    margin-top: 0.9rem;
  }

  .cg-toast {
    display: none;
    margin-top: 0.65rem;
    padding: 0.65rem 0.75rem;
    border-radius: 10px;
    border: 1px solid #E1E1E1;
    background: #F5F5F2;
    color: #333;
    font-size: 0.9rem;
    font-weight: 300;
  }

  .cg-cta {
    margin-top: 0.95rem;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    background: #fff;
    padding: 1rem;
  }
  .cg-cta p {
    margin: 0 0 0.75rem 0;
    font-size: 0.95rem;
    color: #333;
    font-weight: 300;
  }

  .cg-cta-btn {
    display: block;
    width: 100%;
    text-align: center;
    text-decoration: none;
    padding: 0.75rem 1.05rem;
    border-radius: 10px;
    font-size: 1rem;
    font-weight: 500;
    margin-top: 0.55rem;
    border: 1px solid #E1E1E1;
  }
  .cg-cta-btn--primary {
    background: #203723;
    border-color: #203723;
    color: #fff !important;
  }
  .cg-cta-btn--secondary {
    background: #fff;
    border-color: #203723;
    color: #203723 !important;
  }
  .cg-cta-btn--primary:hover,
  .cg-cta-btn--secondary:hover { filter: brightness(0.97); }

  .cg-smallprint {
    margin-top: 0.65rem;
    font-size: 0.82rem;
    color: #666;
    font-weight: 300;
  }

  @media (max-width: 640px) {
    .choice-mini { padding: 1.05rem; }
    .cg-top { flex-direction: column; }
    .cg-nav .cg-btn, .cg-actions .cg-btn { width: 100%; text-align: center; }
  }
</style></p>

<div id="choiceGuide_singlecol_v4" class="choice-mini">
  <div class="cg-top">
    <div>
      <p class="cg-title">Nybyg eller totalrenovering?</p>
      <p class="cg-sub">Svar på 6 spørgsmål. Ét ad gangen. I får en retning og en opsummering, som er nem at bruge i dialogen bagefter.</p>
    </div>
    <div class="cg-pill">Vejledende guide</div>
  </div>

  <div class="cg-card">
    <p class="cg-section-title">6 spørgsmål der afklarer retningen</p>

    <div class="cg-stephead">
      <div class="cg-step-pill" id="cgStepPill_v4">Spørgsmål 1 af 6</div>
      <div class="cg-progress" aria-hidden="true"><div id="cgProg_v4"></div></div>
    </div>

    <div class="cg-field">
      <label class="cg-label" id="cgQLabel_v4" for="cgSelect_v4">Spørgsmål?</label>
      <select class="cg-select" id="cgSelect_v4" name="cgSelect_v4"></select>

      <div class="cg-under">
        <button class="cg-why" type="button" id="cgWhy_v4">Hvorfor spørger vi?</button>
      </div>

      <div class="cg-tip" id="cgTip_v4"></div>
    </div>

    <div class="cg-nav">
      <button class="cg-btn" type="button" id="cgBack_v4" disabled>Tilbage</button>
      <button class="cg-btn cg-primary" type="button" id="cgNext_v4">Næste</button>
    </div>
  </div>

  <div class="cg-card" id="cgResultCard_v4">
    <p class="cg-section-title">Jeres retning lige nu</p>

    <div class="cg-kpi-top">
      <div class="cg-kpi-label">Pejer mod</div>
      <div class="cg-kpi-value" id="cgResult_v4">Totalrenovering</div>
    </div>

    <p class="cg-explain" id="cgExplain_v4"></p>

    <div class="cg-bar" aria-hidden="true">
      <div class="cg-bar-fill" id="cgBar_v4" style="width: 50%;"></div>
    </div>
    <div class="cg-bar-labels" aria-hidden="true">
      <span>Totalrenovering</span>
      <span>Nybyg</span>
    </div>

    <div class="cg-actions">
      <button class="cg-btn" type="button" id="cgCopy_v4">Kopiér opsummering</button>
      <button class="cg-btn" type="button" id="cgReset_v4">Nulstil</button>
    </div>
    <div class="cg-toast" id="cgToast_v4" role="status" aria-live="polite">Kopieret.</div>

    <div class="cg-cta" id="cgCtaBox_v4">
      <p id="cgCtaText_v4">Næste skridt er at få konkrete bud, så I kan sammenligne på samme grundlag.</p>

      <a class="cg-cta-btn cg-cta-btn--primary" id="cgCtaPrimary_v4" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener">Få 3 uforpligtende tilbud på totalentreprise</a>

      <a class="cg-cta-btn cg-cta-btn--secondary" id="cgCtaAdvisor_v4" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/bygherreraadgivning/" target="_blank" rel="nofollow sponsored noopener">Få tilbud på bygherrerådgivning</a>

      <a class="cg-cta-btn cg-cta-btn--secondary" id="cgCtaAlt_v4" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/lp/nybyg/" target="_blank" rel="nofollow sponsored noopener" style="display:none;">Få 3 uforpligtende tilbud på nybyg</a>

      <div class="cg-smallprint">Guiden er vejledende. Brug den som retning og som tjekliste før dialogen.</div>
    </div>
  </div>
</div>

<p><script>
(function () {
  const root = document.getElementById("choiceGuide_singlecol_v4");
  if (!root) return;

  const storageKey = "nybyg_vs_totalreno_singlecol_v4";
  const el = (id) => document.getElementById(id);

  const stepPill = el("cgStepPill_v4");
  const prog = el("cgProg_v4");
  const qLabel = el("cgQLabel_v4");
  const select = el("cgSelect_v4");
  const whyBtn = el("cgWhy_v4");
  const tipBox = el("cgTip_v4");
  const backBtn = el("cgBack_v4");
  const nextBtn = el("cgNext_v4");

  const resultOut = el("cgResult_v4");
  const explainOut = el("cgExplain_v4");
  const barOut = el("cgBar_v4");

  const copyBtn = el("cgCopy_v4");
  const resetBtn = el("cgReset_v4");
  const toast = el("cgToast_v4");

  const ctaText = el("cgCtaText_v4");
  const ctaPrimary = el("cgCtaPrimary_v4");
  const ctaAdvisor = el("cgCtaAdvisor_v4");
  const ctaAlt = el("cgCtaAlt_v4");

  const links = {
    reno: "https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&bannerid=25692&htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/",
    advisor: "https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&bannerid=25692&htmlurl=https://www.3byggetilbud.dk/tilbud/bygherreraadgivning/",
    nybyg: "https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&bannerid=25692&htmlurl=https://www.3byggetilbud.dk/lp/nybyg/"
  };

  const clamp = (n, min, max) => Math.min(max, Math.max(min, n));

  // Alle spørgsmål (vi viser 6, men 2 af dem skifter afhængigt af “flytte vs blive”)
  const stepsAll = {
    stay: {
      key: "stay",
      label: "Hvor vigtigt er det at blive boende på adressen?",
      tip: "Hvis beliggenheden er hele pointen, peger det ofte mod totalrenovering.",
      def: "stay",
      options: [
        { v: "stay",  t: "Meget vigtigt", reno: 4, ny: 0 },
        { v: "maybe", t: "Rart, men ikke afgørende", reno: 2, ny: 1 },
        { v: "move",  t: "Vi er åbne for at flytte", reno: 0, ny: 3 }
      ]
    },
    nybygReal: {
      key: "nybygReal",
      label: "Er nybyg realistisk hos jer (på nuværende grund eller en ny)?",
      tip: "Hvis nybyg ikke er realistisk lige nu, giver det ofte mest mening at arbejde videre med huset og få et konkret renoveringsspor på plads.",
      def: "no",
      options: [
        { v: "no",        t: "Nej, ikke realistisk lige nu", reno: 2, ny: 0 },
        { v: "maybe",     t: "Måske (vi undersøger det)", reno: 1, ny: 2 },
        { v: "yesCurrent",t: "Ja, på nuværende grund", reno: 0, ny: 4 },
        { v: "yesOther",  t: "Ja, på anden grund", reno: 0, ny: 4 },
        { v: "dontknow",  t: "Ved ikke endnu", reno: 1, ny: 1 }
      ]
    },

    // Renoveringsrelevante (bruges især når man bliver)
    scope: {
      key: "scope",
      label: "Hvor meget skal reelt skiftes i huset?",
      tip: "Hvis næsten alt skal udskiftes, er nybyg værd at regne seriøst på som alternativ.",
      def: "much",
      options: [
        { v: "some", t: "Noget indvendigt, men ikke det hele", reno: 3, ny: 0 },
        { v: "much", t: "Meget indvendigt og flere store poster", reno: 2, ny: 2 },
        { v: "all",  t: "Næsten alt, inkl. installationer og klimaskærm", reno: 1, ny: 4 }
      ]
    },
    hidden: {
      key: "hidden",
      label: "Er der tegn på skjulte problemer i huset?",
      tip: "Ved tvivl om fugt, skimmel eller konstruktion giver en uvildig gennemgang ofte mest ro før I beslutter jer.",
      def: "none",
      options: [
        { v: "none",    t: "Nej, ikke hvad vi har set", reno: 2, ny: 0 },
        { v: "unknown", t: "Ved ikke endnu / ikke undersøgt", reno: 1, ny: 1 },
        { v: "yes",     t: "Ja, vi mistænker noget", reno: 0, ny: 4 }
      ]
    },

    // Flytte-scenarie: gør totalrenovering “relevant” som køb + renovering
    altHousing: {
      key: "altHousing",
      label: "Hvis I flytter: er I åbne for at købe et eksisterende hus og totalrenovere?",
      tip: "Når man flytter, handler valget ofte om: nybyg på grund vs. køb af hus (evt. håndværkertilbud) og en samlet renovering.",
      def: "maybe",
      options: [
        { v: "yes",     t: "Ja, det er realistisk for os", reno: 3, ny: 0 },
        { v: "maybe",   t: "Måske – vi vil gerne regne på det", reno: 1, ny: 1 },
        { v: "no",      t: "Nej, vi vil helst bygge nyt", reno: 0, ny: 3 },
        { v: "dontknow",t: "Ved ikke endnu", reno: 1, ny: 1 }
      ]
    },
    climate: {
      key: "climate",
      label: "Hvor vigtigt er klima og ressourcehensyn for jer?",
      tip: "At bevare mest muligt og genbruge konstruktioner/materialer peger ofte mod renovering frem for nedrivning/nybyg.",
      def: "some",
      options: [
        { v: "high", t: "Meget vigtigt", reno: 3, ny: 0 },
        { v: "some", t: "Det betyder noget, men er ikke alt", reno: 1, ny: 1 },
        { v: "low",  t: "Det er ikke afgørende for valget", reno: 0, ny: 2 }
      ]
    },

    // Altid relevante
    freedom: {
      key: "freedom",
      label: "Hvor frit vil I kunne ændre planløsning og boligtype?",
      tip: "Et blankt lærred peger typisk mod nybyg, især hvis I vil ændre boligtypen markant.",
      def: "work",
      options: [
        { v: "work",  t: "Vi kan arbejde med huset", reno: 3, ny: 0 },
        { v: "mix",   t: "Både og", reno: 2, ny: 2 },
        { v: "blank", t: "Vi vil starte fra nul", reno: 0, ny: 4 }
      ]
    },
    predict: {
      key: "predict",
      label: "Hvad betyder mest lige nu?",
      tip: "Forudsigelighed peger ofte mod nybyg eller en stramt afgrænset renovering med tydelig pakke og forventningsafstemning.",
      def: "clarity",
      options: [
        { v: "clarity", t: "Mest mulig forudsigelighed", reno: 1, ny: 3 },
        { v: "balance", t: "En balanceret løsning", reno: 2, ny: 2 },
        { v: "tailor",  t: "Skræddersy hjemmet, også hvis det bliver mere komplekst", reno: 3, ny: 1 }
      ]
    }
  };

  // State (gemmer alle keys – også dem der kan være “inaktive”)
  let state = { step: 0 };
  Object.keys(stepsAll).forEach(k => state[k] = stepsAll[k].def);

  function getActiveSteps() {
    // ALTID de 4 “faste”
    const base = [stepsAll.stay, stepsAll.nybygReal];

    // Skift de to midterspørgsmål afhængigt af “flytte”
    if (state.stay === "move") {
      base.push(stepsAll.altHousing, stepsAll.climate);
    } else {
      base.push(stepsAll.scope, stepsAll.hidden);
    }

    // Slut altid med de 2 “faste”
    base.push(stepsAll.freedom, stepsAll.predict);
    return base; // altid 6
  }

  function pickOption(step, value) {
    return step.options.find(o => o.v === value) || step.options[0];
  }

  function computeScores(activeSteps) {
    let reno = 0, ny = 0;
    activeSteps.forEach(step => {
      const opt = pickOption(step, state[step.key]);
      reno += (opt.reno || 0);
      ny += (opt.ny || 0);
    });
    return { reno, ny };
  }

  function shouldNudgeAdvisor(activeSteps) {
    // Kun hvis “usikkerhed”-svar er valgt på aktive spørgsmål
    const unsurePairs = [
      ["nybygReal", "maybe"], ["nybygReal", "dontknow"],
      ["hidden", "unknown"],
      ["altHousing", "dontknow"], ["altHousing", "maybe"]
    ];
    return unsurePairs.some(([k, v]) => activeSteps.some(s => s.key === k) && state[k] === v);
  }

  function buildResult(scores, activeSteps) {
    const diff = scores.reno - scores.ny;

    if (Math.abs(diff) <= 2) {
      let txt = "Jeres svar peger i begge retninger. Her er det typisk de konkrete løsninger og tilbud, der afgør det.";
      if (shouldNudgeAdvisor(activeSteps)) txt += " Hvis rammerne ikke er helt afklaret endnu, kan en uvildig vurdering give ro og retning.";
      return { heading: "Det er tæt løb", text: txt };
    }

    if (diff > 2) {
      let txt = "I kan sandsynligvis nå jeres mål ved at bygge videre på det, I har – og det trækker mest i retning af totalrenovering.";
      if (state.stay === "stay") txt = "I lægger vægt på adressen, og I kan sandsynligvis nå jeres mål ved at bygge videre på huset.";
      if (activeSteps.some(s => s.key === "hidden") && state.hidden === "unknown") txt += " Hvis I ikke har undersøgt skjulte forhold endnu, kan en uvildig gennemgang være en god genvej til klarhed.";
      if (activeSteps.some(s => s.key === "climate") && state.climate === "high") txt += " Og når klima/ressourcehensyn vægter højt, giver bevaring ofte ekstra mening.";
      return { heading: "Totalrenovering", text: txt };
    }

    let txt = "Jeres svar tyder på, at nybyg er værd at tage seriøst, især hvis I ønsker frihed og forudsigelighed.";
    if (state.nybygReal === "yesCurrent") txt = "Når nybyg er realistisk på jeres nuværende grund, bliver det ofte mere konkret og lettere at sammenligne på pris og proces.";
    if (state.nybygReal === "yesOther") txt = "Når I har en realistisk mulighed på en anden grund, kan nybyg blive et stærkt hovedspor, fordi rammerne kan defineres tydeligt fra start.";
    if (activeSteps.some(s => s.key === "altHousing") && state.altHousing === "yes") txt += " Samtidig er I åbne for køb + renovering, så det kan give mening at sammenligne begge spor med konkrete tilbud.";
    return { heading: "Nybyg", text: txt };
  }

  function applyCtas(heading, activeSteps) {
    ctaAdvisor.href = links.advisor;
    ctaAlt.style.display = "none";

    if (heading === "Totalrenovering") {
      ctaText.textContent = "Næste skridt er at få konkrete bud på totalrenovering, så I kan se pris, proces og ansvar i en samlet løsning.";
      ctaPrimary.textContent = "Få 3 uforpligtende tilbud på totalentreprise";
      ctaPrimary.href = links.reno;

      const showNybygAlt =
        state.nybygReal === "yesCurrent" || state.nybygReal === "yesOther" || state.nybygReal === "maybe" ||
        state.freedom === "blank" ||
        (activeSteps.some(s => s.key === "scope") && state.scope === "all");

      if (showNybygAlt) {
        ctaAlt.style.display = "block";
        ctaAlt.textContent = "Få 3 uforpligtende tilbud på nybyg";
        ctaAlt.href = links.nybyg;
      }
    }
    else if (heading === "Nybyg") {
      ctaText.textContent = "Næste skridt er at få konkrete bud på nybyg, så I kan sammenligne løsninger og få styr på den samlede økonomi.";
      ctaPrimary.textContent = "Få 3 uforpligtende tilbud på nybyg";
      ctaPrimary.href = links.nybyg;

      ctaAlt.style.display = "block";
      ctaAlt.textContent = "Få 3 uforpligtende tilbud på totalentreprise";
      ctaAlt.href = links.reno;
    }
    else {
      ctaText.textContent = "Når det er tæt løb, giver det mest ro at få konkrete bud på begge spor, eller starte med en uvildig vurdering før I låser jer fast.";
      ctaPrimary.textContent = "Få 3 uforpligtende tilbud på totalentreprise";
      ctaPrimary.href = links.reno;

      ctaAlt.style.display = "block";
      ctaAlt.textContent = "Få 3 uforpligtende tilbud på nybyg";
      ctaAlt.href = links.nybyg;
    }

    if (shouldNudgeAdvisor(activeSteps)) {
      ctaText.textContent += " Ved uafklarede rammer kan bygherrerådgivning være en god genvej til klarhed.";
    }
  }

  function getCurrentStep(activeSteps) {
    return activeSteps[clamp(state.step, 0, activeSteps.length - 1)];
  }

  function renderStep() {
    const activeSteps = getActiveSteps();
    state.step = clamp(state.step, 0, activeSteps.length - 1);

    const i = state.step;
    const s = activeSteps[i];

    stepPill.textContent = "Spørgsmål " + (i + 1) + " af " + activeSteps.length;
    prog.style.width = Math.round(((i + 1) / activeSteps.length) * 100) + "%";

    qLabel.textContent = s.label;

    select.innerHTML = "";
    s.options.forEach(opt => {
      const o = document.createElement("option");
      o.value = opt.v;
      o.textContent = opt.t;
      select.appendChild(o);
    });
    select.value = state[s.key];

    tipBox.style.display = "none";
    tipBox.textContent = s.tip;

    backBtn.disabled = (i === 0);
    nextBtn.textContent = (i === activeSteps.length - 1) ? "Se resultat" : "Næste";
  }

  function updateResult() {
    const activeSteps = getActiveSteps();
    const scores = computeScores(activeSteps);

    const total = Math.max(1, scores.reno + scores.ny);
    const nyShare = scores.ny / total;
    const width = clamp(Math.round(nyShare * 100), 10, 90);
    barOut.style.width = width + "%";

    const res = buildResult(scores, activeSteps);
    resultOut.textContent = res.heading;
    explainOut.textContent = res.text;

    applyCtas(res.heading, activeSteps);

    try { localStorage.setItem(storageKey, JSON.stringify(state)); } catch (e) {}
  }

  function summaryText() {
    const activeSteps = getActiveSteps();
    const lines = activeSteps.map(step => {
      const opt = pickOption(step, state[step.key]);
      return step.label + " " + opt.t;
    });

    return (
      "Mini afklaring: Nybyg vs. totalrenovering\n" +
      lines.join("\n") + "\n\n" +
      "Pejer mod: " + resultOut.textContent + "\n" +
      explainOut.textContent
    );
  }

  function showToast(msg) {
    toast.textContent = msg;
    toast.style.display = "block";
    setTimeout(() => (toast.style.display = "none"), 2200);
  }

  function restore() {
    try {
      const saved = JSON.parse(localStorage.getItem(storageKey) || "null");
      if (!saved) return;
      state = Object.assign(state, saved);

      // Guardrails (hvis noget ændrer sig over tid)
      Object.keys(stepsAll).forEach(k => {
        if (!(k in state)) state[k] = stepsAll[k].def;
      });
      state.step = clamp(parseInt(state.step || 0, 10), 0, 5);
    } catch (e) {}
  }

  // Events
  select.addEventListener("change", () => {
    const activeSteps = getActiveSteps();
    const current = getCurrentStep(activeSteps);
    state[current.key] = select.value;

    // Hvis “stay” ændres, skifter 2 spørgsmål → sørg for at step-index stadig giver mening
    const newActive = getActiveSteps();
    state.step = clamp(state.step, 0, newActive.length - 1);

    renderStep();
    updateResult();
  });

  whyBtn.addEventListener("click", () => {
    tipBox.style.display = (tipBox.style.display === "none" || !tipBox.style.display) ? "block" : "none";
  });

  backBtn.addEventListener("click", () => {
    state.step = clamp(state.step - 1, 0, 5);
    renderStep();
  });

  nextBtn.addEventListener("click", () => {
    const activeSteps = getActiveSteps();
    if (state.step < activeSteps.length - 1) {
      state.step += 1;
      renderStep();
    } else {
      const resCard = el("cgResultCard_v4");
      if (resCard) resCard.scrollIntoView({ behavior: "smooth", block: "start" });
    }
  });

  copyBtn.addEventListener("click", async () => {
    const text = summaryText();
    try {
      await navigator.clipboard.writeText(text);
      showToast("Kopieret. Du kan bruge opsummeringen i dialogen.");
    } catch (e) {
      const ta = document.createElement("textarea");
      ta.value = text;
      document.body.appendChild(ta);
      ta.select();
      try { document.execCommand("copy"); } catch (err) {}
      document.body.removeChild(ta);
      showToast("Kopieret. Du kan bruge opsummeringen i dialogen.");
    }
  });

  resetBtn.addEventListener("click", () => {
    state = { step: 0 };
    Object.keys(stepsAll).forEach(k => state[k] = stepsAll[k].def);
    try { localStorage.removeItem(storageKey); } catch (e) {}
    renderStep();
    updateResult();
    showToast("Nulstillet.");
  });

  // Init
  restore();
  renderStep();
  updateResult();
})();
</script></p>

</div><div class="bde-rich-text-851-117 bde-rich-text breakdance-rich-text-styles">
<h2>Økonomi: sammenlign det samme med det samme</h2>
<p>Økonomi fylder altid. Også når man prøver at lade være.</p>
<p>Det, der skaber mest forvirring, er ikke priserne i sig selv. Det er, at mange sammenligner to forskellige regnestykker.</p>
<p>Ved nybyg bliver budgettet ofte tænkt som “huset”. Men en bolig er mere end selve huset. Der kan komme udgifter til nedrivning, jordarbejde, byggemodning, belægning, indkørsel, have, hegn, skur og carport. Det er helt normale poster, men de bliver ofte opdaget sent.</p>
<p>Ved totalrenovering er faldgruben den modsatte: man starter med “vi tager køkkenet først” eller “vi tager badet næste år”, selv om målet egentlig er et hjem, der føles gennemført. Hvis I i praksis ønsker en samlet opgradering, skal budgettet også afspejle det.</p>
<p>Som pejlemærke ligger en indvendig totalrenovering ofte i niveauet 6.000–12.000 kr. pr. m², mens en kombineret indvendig og udvendig totalrenovering typisk ligger højere, ofte omkring 14.000–20.000 kr. pr. m², afhængigt af omfang og materialevalg. Det er brede spænd, men de giver en vigtig pointe: det er de store poster samlet set, der flytter billedet.</p>
<p>En metode, der næsten altid hjælper, er at lave to budgetspor. Første spor er “minimum, så huset fungerer og føles rigtigt”. Andet spor er “det hjem vi faktisk drømmer om”, inklusive de ting der ellers ender som halve løsninger. Når I kan se forskellen mellem de to, bliver valget mellem nybyg og totalrenovering ofte mere klart.</p>
</div><div class="bde-rich-text-851-118 bde-rich-text breakdance-rich-text-styles">
<h2>Drift og komfort: det I betaler bagefter</h2>
<p>Nybyg har ofte en fordel i driften. Moderne konstruktioner, bedre tæthed og nyere standarder giver typisk lavere varmeforbrug og en mere stabil komfort.</p>
<p>Men et ældre hus kan løftes rigtig langt med de rigtige greb.</p>
<p>Nye vinduer, bedre isolering, ventilation og en varmeløsning, der passer til huset, kan ændre både varmeregning og indeklima. Og så er der planløsningen. Mange boligejere opdager først bagefter, at det ikke var energien, der var den største irritation. Det var flowet. Når rumfordelingen fungerer, føles huset større, selv hvis det ikke bliver det.</p>
<p>Derfor er det værd at tænke komfort ind som et konkret kriterium. Ikke som pynt. Som hverdag.</p>
<h2>Klima og ressourcer: et valg der er svært at ignorere</h2>
<p>Klima fylder mere i boligvalg i dag, og det giver god mening.</p>
<p>Bolius peger blandt andet på, at byggeriet står for en betydelig del af Danmarks CO2-udledning, og at byggeaffald udgør en stor del af den samlede affaldsmængde. Når man river et hus ned, kasserer man ikke bare mursten og træ. Man kasserer også den energi og de ressourcer, der allerede er brugt.</p>
<p>Det betyder ikke, at nybyg altid er forkert. Nogle huse er så nedslidte, at det ikke er rimeligt at bygge videre. Men hvis bygningen kan bevares helt eller delvist, vil totalrenovering i mange tilfælde være et stærkt valg, også når man ser på klimaaftryk.</p>
</div><div class="bde-globalblock-851-119 bde-globalblock"><div class="bde-rich-text-838-100-838-2 bde-rich-text bde-rich-text-838-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style>

<aside class="ad-690">
  <div class="ad-690-content">
    <div class="ad-690-label">Annonce</div>

    <div class="ad-690-headline">
      Overvejer du totalrenovering?
    </div>

    <div class="ad-690-text">
      Sammenlign tilbud på totalrenovering af hus.
    </div>
  </div>

  <a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener">
    Få 3 gratis tilbud
  </a>
</aside>

</div></div><div class="bde-rich-text-851-120 bde-rich-text breakdance-rich-text-styles">
<h2>Risiko og uforudsete forhold: hvor kommer overraskelserne fra</h2>
<p>Overraskelser kan opstå i begge løsninger. Det er bare ikke de samme overraskelser.</p>
<p>Ved nybyg handler usikkerhed ofte om tilvalg, grænseflader og det, der ikke var med i den første pris. Leverancer, myndigheder og tidsplan kan også spille ind.</p>
<p>Ved totalrenovering ligger usikkerheden typisk i det skjulte. Det, man først opdager, når man åbner op. Gamle installationer, skjulte vandskader eller konstruktioner, der kræver ekstra forstærkning.</p>
<p>Her er der to ting, der virkelig gør en forskel: afklaring og buffer. Ikke en buffer “fordi man altid siger det”. Men fordi den beskytter jeres økonomi og jeres samarbejde, når virkeligheden viser sig.</p>
<h2>Tidsplan og hverdagslogistik: det som ofte afgør valget</h2>
<p>Tidsplanen lyder som et praktisk punkt. For de fleste familier er det et afgørende punkt.</p>
<p>Ved nybyg kan man ofte bo et andet sted imens. Det koster, men det giver også en klar adskillelse mellem hverdag og byggeplads. Når man flytter ind, er hjemmet typisk færdigt.</p>
<p>Ved totalrenovering vælger nogle at blive boende. Det kan fungere, men så skal projektet planlægges som etaper, og entreprenøren skal være vant til at arbejde i et hjem, hvor livet fortsætter. Det handler om mere end støv. Det handler om beslutningspres, logistik og det mentale overskud.</p>
<p>Hvis I allerede nu tænker “det her bliver for meget”, er det ikke et problem. Det er vigtig information.</p>
<h2>Beliggenhed, arkitektur og herlighedsværdi: det I ikke kan bestille</h2>
<p>Der er ting, man kan købe. Og der er ting, man ikke kan genskabe.</p>
<p>Et ældre hus kan have proportioner, materialer og detaljer, der er svære at få igen. Dagslys, murværk, loftshøjde, rummenes størrelse. Og så er der beliggenheden: skolevej, naboer, haven, træerne og det liv, I allerede har.</p>
<p>Hvis I elsker stedet, men ikke huset, er totalrenovering ofte den løsning, der giver mest mening. Hvis I drømmer om en helt anden boligtype, eller hvis huset er i så dårlig stand, at I reelt står overfor et næsten nyt projekt, kan nybyg være den mere ligetil vej.</p>
</div><div class="bde-rich-text-851-121 bde-rich-text breakdance-rich-text-styles">
<h2>Hvem skal holde trådene?</h2>
<p>Det er her mange boligejere mærker forskellen mellem “idé” og “projekt”.</p>
<p>Nybyg og totalrenovering kræver koordinering mellem fag. Tidsplaner skal hænge sammen. Budgettet skal følges. Beslutninger skal tages i den rigtige rækkefølge. Og der er meget, der kan blive dyrt, hvis det bliver taget for sent.</p>
<p>Hvis I ikke har lyst til at være projektleder, er totalentreprise ofte det naturlige valg. Én ansvarlig part. Ét samlet overblik. Og en proces, hvor I kan fokusere på beslutningerne frem for styringen. Læs mere i guiden om <a href="https://mitboligprojekt.dk/totalentreprise/">totalentreprise</a> på <a href="https://mitboligprojekt.dk/">MitBoligProjekt.dk</a>.</p>
<p>Hvis I gerne vil have en uvildig fagperson på jeres side, kan <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/bygherreraadgivning/" rel="sponsored noopener" target="_blank">bygherrerådgivning</a> være den ekstra sikkerhed, der gør beslutningen tryg. Især når I skal vurdere tilbud, forventninger og aftalegrundlag. Læs mere i guiden om <a href="https://mitboligprojekt.dk/bygherreraadgivning/">bygherrerådgivning</a> på MitBoligProjekt.dk.</p>
</div><img decoding="async" class="bde-image2-851-122 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.54.35.webp" alt="Foto af et moderne københavnerpar i en lys lejlighed i København, der sidder på en grå sofa og undersøger nybyg vs. totalrenovering af parcelhus." loading="lazy" srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.54.35.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.54.35-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.54.35-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-14.54.35-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-851-123 bde-rich-text breakdance-rich-text-styles">
<h2>Sådan bruger I tilbud som beslutningsværktøj</h2>
<p>Mange tror, at tilbudsfasen handler om at finde den laveste pris. I praksis handler den om at blive klogere.</p>
<p>Når I får flere tilbud på den samme beskrivelse, får I flere faglige perspektiver. Forskellige entreprenører ser forskellige muligheder i huset, og de stiller ofte forskellige spørgsmål. Det er guld værd, fordi det gør jeres projekt tydeligere.</p>
<p>Brug derfor tilbud til at teste jeres plan.</p>
<p>Er omfanget forstået ens. Er ansvaret tydeligt. Er tidsplanen realistisk. Og virker kommunikationen ordentlig. For en stor del af et vellykket projekt handler ikke om at “vinde” på prisen. Det handler om at undgå at tabe på misforståelser.</p>
<p>Hvis I vil læse videre og få et samlet overblik over jeres muligheder, kan I starte på MitBoligProjekt.dk.</p>
</div><div class="bde-rich-text-851-124 bde-rich-text breakdance-rich-text-styles">
<h2>Få 3 uforpligtende tilbud på nybyg eller totalrenovering</h2>
<p>Når I vil videre fra overvejelse til beslutning, hjælper det at få konkrete bud på bordet. Ikke fordi I skal vælge hurtigst muligt, men fordi tal og løsninger bliver tydelige, når flere fagfolk regner på den samme idé.</p>
<p>Hvis I hælder mod totalrenovering og gerne vil have én part til at samle ansvar, plan og udførelse, kan I få <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" rel="sponsored noopener" target="_blank">tre uforpligtende tilbud på totalentreprise gennem 3byggetilbud.dk</a>. Det giver jer et realistisk spænd på økonomi og tidsplan, og det gør det lettere at se, hvad der reelt er med i prisen.</p>
<p>Hvis I i stedet overvejer nybyg, kan I få <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/lp/nybyg/" rel="sponsored noopener" target="_blank">tre uforpligtende tilbud på nybyg gennem 3byggetilbud.dk</a>. Her får I typisk et bedre grundlag for at sammenligne pakkeløsninger, tilvalg og den samlede økonomi, før I binder jer til en retning.</p>
<p>Og hvis I gerne vil have en uvildig fagperson, der kan hjælpe med at gennemgå tilbud, forventninger og aftalegrundlag, kan I også få <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/bygherreraadgivning/" rel="sponsored noopener" target="_blank">tilbud på bygherrerådgivning gennem 3byggetilbud.dk</a>. Det kan især være en tryghed, når projektet er stort, og I vil undgå dyre misforståelser.</p>
<p>Vil I læse jer varme først, så start på MitBoligProjekt.dk og brug vores guider om <a href="https://mitboligprojekt.dk/nybyg/">nybyg</a>, <a href="https://mitboligprojekt.dk/totalentreprise/">totalentreprise</a> og <a href="https://mitboligprojekt.dk/bygherreraadgivning/">bygherrerådgivning</a> som næste stop.</p>
</div><div class="bde-globalblock-851-126 bde-globalblock"><div class="bde-rich-text-838-100-838-3 bde-rich-text bde-rich-text-838-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style>

<aside class="ad-690">
  <div class="ad-690-content">
    <div class="ad-690-label">Annonce</div>

    <div class="ad-690-headline">
      Overvejer du totalrenovering?
    </div>

    <div class="ad-690-text">
      Sammenlign tilbud på totalrenovering af hus.
    </div>
  </div>

  <a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener">
    Få 3 gratis tilbud
  </a>
</aside>

</div></div><div class="bde-rich-text-851-127 bde-rich-text breakdance-rich-text-styles">

</div>
</div><div class="bde-column-851-128 bde-column">
  
  
	



<div class="bde-table-of-contents-851-129 bde-table-of-contents">
<div class="bde-table-of-contents__wrapper">
  <header class="bde-table-of-contents__header">
        <h3 class="bde-table-of-contents__title toc-ignore">Indholdsfortegnelse</h3>
           </header>
  
  <div class="bde-table-of-contents__list">
    <nav id="bde-toc" class="toc js-breakdance-toc" aria-label="Indholdsfortegnelse">There are no headings in this document.</nav>
  </div>
</div>


</div><div class="bde-div-851-130 bde-div">
  
  
	



<div class="bde-text-851-131 bde-text">
Vi samarbejder med 3Byggetilbud.dk og modtager provision for henvisninger via links på denne side. Vi tager ikke ansvar for kvaliteten af det udførte arbejde eller for aftaler indgået mellem dig og de formidlede håndværkere. Alle aftaler indgås direkte mellem dig og den valgte håndværker.
</div>
</div><div class="bde-globalblock-851-132 bde-globalblock"><div class="bde-rich-text-839-100-839-1 bde-rich-text bde-rich-text-839-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-336 {
  position: relative;
  width: 336px;
  height: 280px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
}

.ad-336::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(
      rgba(245,245,242,0.05) 1px,
      transparent 1px
    ),
    linear-gradient(
      90deg,
      rgba(245,245,242,0.05) 1px,
      transparent 1px
    );
  background-size: 32px 32px;
  z-index: 0;
}

.ad-336::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at top,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-336 > * {
  position: relative;
  z-index: 1;
}

.ad-content {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.ad-label {
  font-size: 0.7rem;
  opacity: 0.8;
}

.ad-headline {
  font-size: 1.35rem;
  line-height: 1.25;
  font-weight: 600;
}

.ad-text {
  font-size: 0.95rem;
  line-height: 1.5;
  color: #E6ECE8;
}

.ad-badge {
  align-self: flex-start;
  border: 1px solid rgba(204,250,116,0.6);
  color: #EAF7C8;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 0.75rem;
}

.ad-footer {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ad-cta {
  background: var(--brand-light);
  color: #10110C !important;
  text-align: center;
  padding: 12px;
  border-radius: 999px;
  font-size: 1.1rem;
  font-weight: 600;
  text-decoration: none;
}

.ad-note {
  font-size: 0.7rem;
  opacity: 0.85;
  text-align: center;
}
</style>

<aside class="ad-336">
  <div class="ad-content">
    <div class="ad-label">Annonce</div>

    <div class="ad-headline">
  Totalrenovering af hus
    </div>

    <div class="ad-text">
      Få 3 uforpligtende tilbud fra lokale håndværkere og sammenlign pris og løsning.
    </div>

    <div class="ad-badge">
      Gratis og uforpligtende
    </div>
  </div>

  <div class="ad-footer">
    <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" class="ad-cta" target="_blank" rel="nofollow sponsored noopener">
      Få 3 gratis tilbud
    </a>

    <div class="ad-note">
      Sammenlign pris og løsning
    </div>
  </div>
</aside>

</div></div>
</div></div></div>
</section>]]></content:encoded>
					
					<wfw:commentRss>https://mitboligprojekt.dk/nybyg-vs-totalrenovering/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Totalrenovering af hus: sådan vælger du den rigtige totalentreprise</title>
		<link>https://mitboligprojekt.dk/totalrenovering-af-hus/</link>
					<comments>https://mitboligprojekt.dk/totalrenovering-af-hus/#respond</comments>
		
		<dc:creator><![CDATA[Tobias]]></dc:creator>
		<pubDate>Wed, 04 Feb 2026 10:05:37 +0000</pubDate>
				<category><![CDATA[Totalentreprise]]></category>
		<guid isPermaLink="false">https://mitboligprojekt.dk/?p=831</guid>

					<description><![CDATA[Overvejer du totalrenovering af dit hus, er det afgørende at få overblik tidligt. Her får du en praktisk gennemgang af, hvordan du indhenter og vurderer tilbud, og hvorfor totalentreprise ofte er den trygge løsning, når du ikke selv vil stå med ansvaret.]]></description>
										<content:encoded><![CDATA[<section class="bde-section-831-100 bde-section">
  
  
	



<div class="section-container"><div class="bde-columns-831-101 bde-columns"><div class="bde-column-831-102 bde-column">
  
  
	



<div class="bde-div-831-103 bde-div">
  
  
	



<div class="bde-breadcrumbs-831-104 bde-breadcrumbs"><nav aria-label="breadcrumbs" class="rank-math-breadcrumb"><p><a href="https://mitboligprojekt.dk">Forside</a><span class="separator"> &raquo; </span><span class="last">Totalentreprise</span></p></nav></div><ul class="bde-post-meta-831-105 bde-post-meta">            <li class="ee-postmeta-date-wrap">
                                                        <span class="ee-postmeta-date"><span
                            class="ee-postmeta-before">Senest opdateret: </span>4. februar 2026</span>
                                </li>
            </ul>
</div><div class="bde-fancy-divider-831-106 bde-fancy-divider">


<div class="bde-fancy-divider__wrapper">
  <div class="bde-fancy-divider__separator   ">
  	  </div>
</div>

</div><div class="bde-rich-text-831-145 bde-rich-text breakdance-rich-text-styles">
<h1><span style="font-weight: bold;">Totalrenovering af hus:</span> <span style="font-weight: 500;">sådan vælger du den rigtige totalentreprise</span></h1>
</div><div class="bde-text-831-108 bde-text">
<p>Overvejer du totalrenovering af dit hus, er det afgørende at få overblik tidligt. Her får du en praktisk gennemgang af, hvordan du indhenter og vurderer tilbud, og hvorfor totalentreprise ofte er den trygge løsning, når du ikke selv vil stå med ansvaret.</p>

</div><img decoding="async" class="bde-image2-831-109 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-11.04.16.webp" alt="Foto af klassisk dansk 1970’er parcelhus i totalrenovering med stillads, delvist afdækket tag, nye energivinduer og ryddelig byggeplads i villakvarter." srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-11.04.16.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-11.04.16-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-11.04.16-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-11.04.16-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-831-110 bde-rich-text breakdance-rich-text-styles">
Foto af klassisk dansk 1970’er parcelhus i totalrenovering med stillads, delvist afdækket tag, nye energivinduer og ryddelig byggeplads i villakvarter.
</div><div class="bde-fancy-divider-831-111 bde-fancy-divider">


<div class="bde-fancy-divider__wrapper">
  <div class="bde-fancy-divider__separator   ">
  	  </div>
</div>

</div><div class="bde-rich-text-831-112 bde-rich-text breakdance-rich-text-styles">
<p>Der er en særlig stemning, når tanken om en totalrenovering for alvor melder sig. Ikke fordi man drømmer om byggeplads og støv, men fordi man kan se det færdige resultat for sig. Et hus, der passer til livet, som det er nu. Mere plads der, hvor hverdagen kræver det. Mere ro i indretningen. Bedre komfort. Lavere varmeregning. Eller ganske enkelt en bolig, der igen føles som “jer”.</p>
<p>For mange starter det længe før, der ligger tegninger på bordet. Man har måske sparet op, fordi man ved, at huset på et tidspunkt skal løftes. Eller man kan mærke, at boligen trænger, og at lappeløsningerne ikke længere giver mening. Nogle står midt i småbørnslivet og mangler kvadratmeter og funktionelle rum. Andre står på den anden side, hvor børnene er flyttet hjemmefra, og huset føles større, end hverdagen har brug for. Fællesnævneren er, at boligen ikke længere arbejder med jer.</p>
<p>Netop derfor vælger mange at starte med at indhente <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" rel="sponsored noopener" target="_blank">tre uforpligtende tilbud på totalrenovering gennem totalentreprise</a> via <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692" rel="sponsored noopener" target="_blank">3byggetilbud.dk</a>. Ikke for at beslutte alt fra dag ét, men for at få et realistisk billede af prisniveau, muligheder og forskelle i tilgang, før man binder sig.</p>
</div><div class="bde-globalblock-831-113 bde-globalblock"><div class="bde-rich-text-838-100-838-1 bde-rich-text bde-rich-text-838-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style>

<aside class="ad-690">
  <div class="ad-690-content">
    <div class="ad-690-label">Annonce</div>

    <div class="ad-690-headline">
      Overvejer du totalrenovering?
    </div>

    <div class="ad-690-text">
      Sammenlign tilbud på totalrenovering af hus.
    </div>
  </div>

  <a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener">
    Få 3 gratis tilbud
  </a>
</aside>

</div></div><div class="bde-rich-text-831-114 bde-rich-text breakdance-rich-text-styles">
<h2>Totalrenovering af hus hænger tæt sammen med livets faser</h2>
<p>Totalrenovering er ofte et svar på et helt almindeligt spørgsmål: Hvordan vil vi gerne bo de næste mange år. Det kan lyde stort, men i praksis handler det om noget meget konkret. Om at morgenrutinen fungerer. Om at der er plads til både fællesskab og privatliv. Om at huset ikke føles som et kompromis, men som et sted, der understøtter hverdagen.</p>
<p>For børnefamilier handler totalrenovering tit om at skabe sammenhæng. Et køkken, hvor man faktisk kan lave mad og være sammen. Et bryggers, der kan holde til livet med overtøj, støvler og vasketøj. Et ekstra værelse, et bedre bad, eller en planløsning, der gør det lettere at få hverdagen til at glide. For par midt i livet handler det ofte om modernisering og komfort. Man vil have et hjem, der føles tidssvarende, uden at man nødvendigvis vil flytte fra et område, man holder af. Og når børnene er flyttet hjemmefra, kan totalrenovering være måden at gøre huset lettere at bo i. Færre spildkvadratmeter, bedre udnyttelse, mere lys og kvalitet, og en bolig, der passer til en ny rytme.</p>
<p>Det er også her, totalrenovering af hus adskiller sig fra “at sætte lidt i stand”. Det handler ikke kun om at skifte overflader. Det handler om at træffe valg, der kan mærkes i hverdagen i mange år.</p>
</div><div class="bde-rich-text-831-151 bde-rich-text breakdance-rich-text-styles">
<h2 data-start="0" data-end="55">Hvad koster en totalrenovering af hus?</h2>
<p data-start="57" data-end="431">En totalrenovering kan være drømmen om et hjem, der passer til livet nu. Mere plads til børnefamilien, en bedre planløsning, lavere varmeregning eller et hus, der føles “som nyt” uden at I skal flytte fra beliggenheden, I holder af. Men før man kan tage de rigtige beslutninger, er der ét spørgsmål, der altid melder sig: Hvad koster det cirka, og hvad påvirker prisen mest?</p>
<p data-start="433" data-end="760" data-is-last-node="" data-is-only-node="">Beregneren herunder giver et vejledende budgetspænd og en forventet tidsramme baseret på få valg. Den er lavet som et overblik, så du kan få en realistisk fornemmelse af niveauet, før du indhenter tilbud på totalentreprise. Du kan også kopiere en kort projektbeskrivelse, så det bliver lettere at få sammenlignelige tilbud.</p>
</div><div class="bde-rich-text-831-150 bde-rich-text breakdance-rich-text-styles">
<!-- TOTALRENOVERING – MINI BUDGETBEREGNER (V2) (Breakdance HTML-element) -->
<p><style>
  .reno-mini {
    background: #F5F5F2;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 1.25rem;
    max-width: 760px;
    margin: 0 auto;
    color: #10110C;
    line-height: 1.55;
    font-weight: 300;
    width: 100%;
    overflow-x: hidden;
  }
  .reno-mini * { box-sizing: border-box; }
  .reno-mini, .rm-top, .rm-card, .rm-grid, .rm-field, .rm-control, .rm-results,
  .rm-kpi, .rm-kpi-top, .rm-breakdown, .rm-line, .rm-actions, .rm-cta, .rm-checks { min-width:0; }

  .rm-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.85rem;
  }
  .rm-title {
    margin: 0;
    font-size: 1.15rem;
    color: #203723;
    font-weight: 500;
  }
  .rm-sub {
    margin: 0.25rem 0 0 0;
    font-size: 0.95rem;
    color: #333;
    font-weight: 300;
    max-width: 72ch;
  }
  .rm-pill {
    background: #fff;
    border: 1px solid #E1E1E1;
    border-radius: 999px;
    padding: 0.4rem 0.7rem;
    font-size: 0.9rem;
    color: #203723;
    font-weight: 500;
    white-space: nowrap;
    flex: 0 0 auto;
  }

  .rm-card {
    background: #fff;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 1rem;
  }
  .rm-section-title {
    margin: 0 0 0.75rem 0;
    color: #203723;
    font-size: 1.02rem;
    font-weight: 500;
  }

  .rm-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.85rem;
    align-items: start;
  }
  .rm-field { display: grid; gap: 0.35rem; align-content: start; min-width:0; }
  .rm-label { font-size: 0.92rem; color: #333; font-weight: 500; line-height: 1.2; }

  .rm-control { display: flex; gap: 0.5rem; align-items: stretch; min-width:0; }
  .rm-control > * { min-width:0; }

  .rm-input, .rm-select {
    width: 100%;
    max-width:100%;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 0.62rem 0.75rem;
    background: #fff;
    color: #10110C;
    font-size: 0.98rem;
    font-weight: 300;
    outline: none;
    min-height: 44px;
  }
  .rm-input:focus, .rm-select:focus { border-color: #203723; }
  .rm-input.rm-invalid{ border-color:#B00020; }

  .rm-select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 2.35rem;
    background-repeat: no-repeat;
    background-position: right 0.85rem center;
    background-size: 14px 14px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23203723' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  }

  .rm-unit {
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 0.62rem 0.5rem;
    background: #F5F5F2;
    font-size: 0.9rem;
    color: #333;
    font-weight: 500;
    min-height: 44px;
    width: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    white-space: nowrap;
    flex:0 0 auto;
  }

  .rm-help {
    margin: 0.05rem 0 0 0;
    font-size: 0.86rem;
    color: #555;
    font-weight: 300;
    min-height: 2.2em;
  }
  .rm-help--blank { visibility: hidden; }

  .rm-divider {
    height: 1px;
    background: #E1E1E1;
    border: 0;
    margin: 0.95rem 0;
  }

  .rm-checks {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.55rem;
    padding-top: 0.25rem;
  }
  .rm-check {
    display: flex;
    align-items: flex-start;
    gap: 0.55rem;
    padding: 0.65rem 0.7rem;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    background: #F5F5F2;
  }
  .rm-check input {
    margin-top: 0.2rem;
    width: 18px;
    height: 18px;
    accent-color: #203723;
    flex: 0 0 auto;
  }
  .rm-check-text { display: block; }
  .rm-check-title {
    display: block;
    font-weight: 500;
    color: #203723;
    margin-bottom: 0.18rem;
    line-height: 1.25;
  }
  .rm-check-desc {
    display: block;
    font-size: 0.92rem;
    color: #333;
    font-weight: 300;
    line-height: 1.35;
  }

  .rm-results { display: grid; gap: 0.65rem; margin-top: 0.75rem; }

  .rm-kpi {
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 0.85rem;
    background: #fff;
  }
  .rm-kpi-top {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.15rem;
  }
  .rm-kpi-label { font-size: 0.92rem; color: #333; font-weight: 500; }
  .rm-kpi-value { font-size: 1.08rem; color: #10110C; font-weight: 500; }
  .rm-kpi-sub { margin: 0.15rem 0 0 0; font-size: 0.86rem; color: #555; font-weight: 300; }

  .rm-breakdown { display: grid; gap: 0.4rem; padding-top: 0.25rem; }
  .rm-line {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    font-size: 0.92rem;
    color: #333;
    font-weight: 300;
  }
  .rm-line span:last-child { font-weight: 500; color: #10110C; white-space:nowrap; }

  .rm-actions {
    display: flex;
    gap: 0.55rem;
    flex-wrap: wrap;
    margin-top: 0.9rem;
  }
  .rm-btn {
    appearance: none;
    border: 1px solid #E1E1E1;
    background: #fff;
    color: #10110C;
    padding: 0.6rem 0.85rem;
    border-radius: 10px;
    font-size: 0.95rem;
    cursor: pointer;
    font-weight: 500;
    transition: transform 0.08s ease, border-color 0.12s ease;
  }
  .rm-btn:hover { border-color: #203723; }
  .rm-btn:active { transform: scale(0.99); }

  .rm-toast {
    display: none;
    margin-top: 0.65rem;
    padding: 0.65rem 0.75rem;
    border-radius: 10px;
    border: 1px solid #E1E1E1;
    background: #F5F5F2;
    color: #333;
    font-size: 0.9rem;
    font-weight: 300;
  }

  .rm-cta {
    margin-top: 0.9rem;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    background: #fff;
    padding: 1rem;
  }
  .rm-cta p {
    margin: 0 0 0.75rem 0;
    font-size: 0.95rem;
    color: #333;
    font-weight: 300;
  }
  .rm-cta a {
    display: inline-block;
    background: #203723;
    border: 1px solid #203723;
    color: #fff !important;
    text-decoration: none;
    padding: 0.75rem 1.05rem;
    border-radius: 10px;
    font-size: 1rem;
    font-weight: 500;
  }
  .rm-cta a:hover { filter: brightness(0.95); }

  .rm-smallprint {
    margin-top: 0.65rem;
    font-size: 0.82rem;
    color: #666;
    font-weight: 300;
  }

  @media (max-width: 780px) { .rm-checks { grid-template-columns: 1fr; } }
  @media (max-width: 640px) {
    .reno-mini { padding: 1.05rem; }
    .rm-top { flex-direction: column; }
    .rm-grid { grid-template-columns: 1fr; }
    .rm-actions .rm-btn, .rm-cta a { width: 100%; text-align: center; }
  }
</style></p>

<div id="renoMiniBeregner_final" class="reno-mini" role="region" aria-label="Mini budgetberegner for totalrenovering">
  <div class="rm-top">
    <div>
      <p class="rm-title">Mini beregner: totalrenovering af hus</p>
      <p class="rm-sub">Vælg få ting og få et vejledende budgetspænd, tidsramme og en kopiérbar projektbeskrivelse til totalentreprise.</p>
    </div>
    <div id="rmPill_f" class="rm-pill" aria-hidden="true">Vejledende estimat</div>
  </div>

  <div class="rm-card">
    <p class="rm-section-title">Dit hus</p>

    <div class="rm-grid" role="group" aria-label="Husdata">
      <div class="rm-field">
        <label class="rm-label" for="rmArea_f">Boligareal</label>
        <div class="rm-control">
          <input id="rmArea_f" class="rm-input" type="number" min="50" max="350" step="1" value="140" aria-describedby="rmAreaHelp_f" />
          <div class="rm-unit" aria-hidden="true">m²</div>
        </div>
        <p id="rmAreaHelp_f" class="rm-help">Et cirka-tal er fint. Det er nok til et brugbart overslag.</p>
      </div>

      <div class="rm-field">
        <label class="rm-label" for="rmLevel_f">Renoveringsniveau</label>
        <select id="rmLevel_f" class="rm-select" aria-describedby="rmLevelHelp_f">
          <option value="refresh">Let renovering</option>
          <option selected="selected" value="modern">Indvendig totalrenovering</option>
          <option value="deep">Indvendig + udvendig totalrenovering</option>
        </select>
        <p id="rmLevelHelp_f" class="rm-help">Vælg “indvendig + udvendig”, hvis tag/vinduer/facade realistisk skal med.</p>
      </div>

      <div class="rm-field">
        <label class="rm-label" for="rmAge_f">Husets alder</label>
        <select id="rmAge_f" class="rm-select" aria-describedby="rmAgeHelp_f">
          <option value="pre60">Før 1960</option>
          <option selected="selected" value="60to99">1960–1999</option>
          <option value="2000plus">2000 eller nyere</option>
        </select>
        <p id="rmAgeHelp_f" class="rm-help">Ældre huse har oftere skjulte forhold → højere buffer.</p>
      </div>

      <div class="rm-field">
        <label class="rm-label" for="rmLive_f">Bor I i huset under renoveringen?</label>
        <select id="rmLive_f" class="rm-select" aria-describedby="rmLiveHelp_f">
          <option selected="selected" value="yes">Ja</option>
          <option value="no">Nej</option>
        </select>
        <p id="rmLiveHelp_f" class="rm-help">At blive boende forlænger ofte forløbet (etaper og begrænset adgang).</p>
      </div>

      <div class="rm-field">
        <label class="rm-label" for="rmAccess_f">Adgang og kompleksitet</label>
        <select id="rmAccess_f" class="rm-select" aria-describedby="rmAccessHelp_f">
          <option value="easy">Nemt</option>
          <option selected="selected" value="normal">Normalt</option>
          <option value="hard">Svært</option>
        </select>
        <p id="rmAccessHelp_f" class="rm-help">Svært niveau kan øge både tid og pris (logistik, beskyttelse, adgang).</p>
      </div>

      <div class="rm-field">
        <label class="rm-label" for="rmVat_f">Momsvisning</label>
        <select id="rmVat_f" class="rm-select" aria-describedby="rmVatHelp_f">
          <option selected="selected" value="inc">Inkl. moms</option>
          <option value="ex">Ekskl. moms</option>
        </select>
        <p id="rmVatHelp_f" class="rm-help rm-help--blank">—</p>
      </div>
    </div>

    <hr class="rm-divider" />

    <p class="rm-section-title" style="margin-top:0;">Hvad skal med?</p>

    <div class="rm-checks" role="group" aria-label="Tilvalg">
      <label class="rm-check">
        <input id="rmKitchen_f" type="checkbox" />
        <span class="rm-check-text">
          <span class="rm-check-title">Nyt køkken</span>
          <span class="rm-check-desc">Flytter ofte budgettet tydeligt, især hvis plan/installationer ændres.</span>
        </span>
      </label>

      <label class="rm-check">
        <input id="rmBath1_f" checked="checked" type="checkbox" />
        <span class="rm-check-text">
          <span class="rm-check-title">Nyt badeværelse</span>
          <span class="rm-check-desc">Vådrum er typisk en tung post i både pris og tid.</span>
        </span>
      </label>

      <label class="rm-check">
        <input id="rmBath2_f" type="checkbox" />
        <span class="rm-check-text">
          <span class="rm-check-title">Ekstra bad eller gæstetoilet</span>
          <span class="rm-check-desc">Øger omfang og installationsarbejde.</span>
        </span>
      </label>

      <label class="rm-check">
        <input id="rmInstall_f" checked="checked" type="checkbox" />
        <span class="rm-check-text">
          <span class="rm-check-title">El og VVS i store dele af huset</span>
          <span class="rm-check-desc">Særligt relevant ved ældre huse og planændringer.</span>
        </span>
      </label>

      <label class="rm-check">
        <input id="rmLayout_f" type="checkbox" />
        <span class="rm-check-text">
          <span class="rm-check-title">Planløsningsændringer</span>
          <span class="rm-check-desc">Nedrivning/nybyg, evt. bærende forhold → mere kompleksitet.</span>
        </span>
      </label>

      <label class="rm-check">
        <input id="rmWindows_f" type="checkbox" />
        <span class="rm-check-text">
          <span class="rm-check-title">Nye vinduer og døre</span>
          <span class="rm-check-desc">Stor komfortgevinst, men også en stor udvendig post.</span>
        </span>
      </label>

      <label class="rm-check">
        <input id="rmRoof_f" type="checkbox" />
        <span class="rm-check-text">
          <span class="rm-check-title">Tag</span>
          <span class="rm-check-desc">Trækker ofte prisen op – især ved energiopgradering samtidig.</span>
        </span>
      </label>

      <label class="rm-check">
        <input id="rmEnergy_f" type="checkbox" />
        <span class="rm-check-text">
          <span class="rm-check-title">Energitiltag</span>
          <span class="rm-check-desc">Isolering/ventilation/varmeopgradering for komfort og drift.</span>
        </span>
      </label>
    </div>

    <hr class="rm-divider" />

    <div class="rm-results" aria-label="Resultater">
      <div class="rm-kpi" aria-live="polite" aria-atomic="true">
        <div class="rm-kpi-top">
          <div class="rm-kpi-label">Forventet total</div>
          <div id="rmTotal_f" class="rm-kpi-value">—</div>
        </div>
        <p id="rmRange_f" class="rm-kpi-sub">Spænd: —</p>
        <p id="rmPerM2_f" class="rm-kpi-sub">Ca. — kr./m²</p>
      </div>

      <div class="rm-kpi" aria-live="polite" aria-atomic="true">
        <div class="rm-kpi-top">
          <div class="rm-kpi-label">Forventet tidsramme</div>
          <div id="rmTime_f" class="rm-kpi-value">—</div>
        </div>

        <div class="rm-breakdown" aria-label="Budgetfordeling">
          <div class="rm-line">Grundniveau<span id="rmBase_f">—</span></div>
          <div class="rm-line">Køkken og bad<span id="rmWet_f">—</span></div>
          <div class="rm-line">Installationer og plan<span id="rmInst_f">—</span></div>
          <div class="rm-line">Udvendigt<span id="rmShell_f">—</span></div>
          <div class="rm-line">Energi og komfort<span id="rmEn_f">—</span></div>
          <div class="rm-line">Buffer<span id="rmBuf_f">—</span></div>
        </div>

        <p id="rmAssumptions_f" class="rm-kpi-sub" style="margin-top:0.55rem;">
          Vejledende estimat baseret på typiske prisniveauer. Brug det som overblik før du indhenter tilbud.
        </p>
      </div>
    </div>

    <div class="rm-actions" aria-label="Handlinger">
      <button id="rmCopy_f" class="rm-btn" type="button">Kopiér projektbeskrivelse</button>
      <button id="rmReset_f" class="rm-btn" type="button">Nulstil</button>
    </div>

    <div id="rmToast_f" class="rm-toast" role="status" aria-live="polite">Kopieret.</div>

    <div class="rm-cta">
      <p>Vil du have konkrete priser, så sammenlign tilbud på samme beskrivelse. Kopiér projektteksten og indhent tre uforpligtende tilbud på totalentreprise.</p>
      <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener">Få 3 uforpligtende tilbud</a>
      <div class="rm-smallprint">Estimatet er vejledende. Endelig pris afhænger bl.a. af opmåling, skjulte forhold, materialevalg, adgangsforhold og den konkrete aftale.</div>
    </div>
  </div>
</div>

<p><script>
(function () {
  const root = document.getElementById("renoMiniBeregner_final");
  if (!root) return;

  const storageKey = "totalrenovering_mini_beregner_final_v2";

  const $ = (id) => root.querySelector("#" + id);

  // Inputs
  const area = $("rmArea_f");
  const level = $("rmLevel_f");
  const age = $("rmAge_f");
  const live = $("rmLive_f");
  const access = $("rmAccess_f");
  const vat = $("rmVat_f");

  const kitchen = $("rmKitchen_f");
  const bath1 = $("rmBath1_f");
  const bath2 = $("rmBath2_f");
  const install = $("rmInstall_f");
  const layout = $("rmLayout_f");
  const windows = $("rmWindows_f");
  const roof = $("rmRoof_f");
  const energy = $("rmEnergy_f");

  // Outputs
  const pill = $("rmPill_f");

  const totalOut = $("rmTotal_f");
  const rangeOut = $("rmRange_f");
  const perM2Out = $("rmPerM2_f");
  const timeOut = $("rmTime_f");

  const baseOut = $("rmBase_f");
  const wetOut = $("rmWet_f");
  const instOut = $("rmInst_f");
  const shellOut = $("rmShell_f");
  const enOut = $("rmEn_f");
  const bufOut = $("rmBuf_f");
  const assumptionsOut = $("rmAssumptions_f");

  const copyBtn = $("rmCopy_f");
  const resetBtn = $("rmReset_f");
  const toast = $("rmToast_f");

  const nfCurrency = new Intl.NumberFormat("da-DK", { style: "currency", currency: "DKK", maximumFractionDigits: 0 });
  const nfInt = new Intl.NumberFormat("da-DK", { maximumFractionDigits: 0 });

  const clamp = (n, min, max) => Math.min(max, Math.max(min, n));

  function readNumber(input, { min, max, fallback=null }){
    const raw = (input.value ?? "").toString().trim();
    if(raw === "" || raw === "-" || raw === "."){
      input.classList.add("rm-invalid");
      return fallback;
    }
    const n = parseFloat(raw.replace(",", "."));
    if(!Number.isFinite(n)){
      input.classList.add("rm-invalid");
      return fallback;
    }
    input.classList.remove("rm-invalid");
    return clamp(n, min, max);
  }

  /*
    Kalibrering (vejledende):
    - Indvendig totalrenovering: typisk 6.000–12.000 kr./m² (afhænger af omfang/valg)
    - Indvendig+udvendig med tag/vinduer m.m.: kan lande omkring 14.000–20.000+ kr./m²
    Denne beregner er et mini-overslag, ikke en tilbudsmaskine.
  */

  // "Grundniveau" pr. m² (før store tilvalg)
  const basePerM2 = {
    refresh: 2200,
    modern:  4000,
    deep:    5200,
  };

  const ageFactor = { pre60: 1.12, "60to99": 1.05, "2000plus": 0.97 };
  const accessFactor = { easy: 0.95, normal: 1.00, hard: 1.15 };
  const liveFactor = { yes: 1.06, no: 1.00 };

  // Store poster (midtpunkter)
  function kitchenCost() { return 110000; }
  function bathCost1() { return 160000; }
  function bathCost2() { return 170000; }

  // Indvendige poster
  function installCost(A, factor) { return A * 1000 * factor; }
  function layoutCost(A, factor) { return A * 650 * factor; }

  // Udvendige poster (proxy pr. m²)
  function windowsCost(A) { return A * 1300; }
  function roofCost(A) { return A * 1800; }

  // Energi/komfort
  function energyCost(A, factor) { return A * 900 * factor; }

  // Tid: vis uger + ca. hele måneder (ingen decimal-mdr.)
  function weeksToText(weeks) {
    const w = Math.max(2, Math.round(weeks));
    if (w <= 8) return w + " uger";
    const months = Math.max(2, Math.round(w / 4.33));
    return w + " uger (ca. " + months + " mdr.)";
  }

  function computeTime(A, levelKey) {
    let baseWeeks =
      levelKey === "deep" ? (10 + (A / 45)) :
      levelKey === "modern" ? (6 + (A / 60)) :
      (4 + (A / 80));

    baseWeeks += kitchen.checked ? 2.0 : 0;
    baseWeeks += bath1.checked ? 3.0 : 0;
    baseWeeks += bath2.checked ? 2.0 : 0;
    baseWeeks += install.checked ? 2.0 : 0;
    baseWeeks += layout.checked ? 2.0 : 0;
    baseWeeks += windows.checked ? 2.0 : 0;
    baseWeeks += roof.checked ? 2.5 : 0;
    baseWeeks += energy.checked ? 1.5 : 0;

    baseWeeks *= (live.value === "yes" ? 1.12 : 1.00);
    baseWeeks *= (access.value === "hard" ? 1.10 : (access.value === "easy" ? 0.95 : 1.00));
    return baseWeeks;
  }

  function projectText(totalMidTxt, rangeTxt, vatTxt) {
    const A = clamp(parseFloat(area.value || 0), 50, 350);

    const levelTxt = level.options[level.selectedIndex].textContent.trim();
    const ageTxt = age.options[age.selectedIndex].textContent.trim();
    const liveTxt = live.options[live.selectedIndex].textContent.trim();
    const accTxt = access.options[access.selectedIndex].textContent.trim();

    const picks = [];
    if (kitchen.checked) picks.push("nyt køkken");
    if (bath1.checked) picks.push("nyt badeværelse");
    if (bath2.checked) picks.push("ekstra bad/gæstetoilet");
    if (install.checked) picks.push("el og VVS i store dele af huset");
    if (layout.checked) picks.push("planløsningsændringer");
    if (windows.checked) picks.push("vinduer og døre");
    if (roof.checked) picks.push("tag");
    if (energy.checked) picks.push("energitiltag");

    const scope = picks.length ? picks.join(", ") : "generel opdatering/modernisering";

    return (
      "Totalrenovering af hus på ca. " + A + " m² (" + ageTxt + "). " +
      "Niveau: " + levelTxt + ". " +
      "Omfang: " + scope + ". " +
      "Bor i huset undervejs: " + liveTxt + ". Adgang/kompleksitet: " + accTxt + ". " +
      "Ønske: totalentreprise med samlet ansvar, realistisk tidsplan og tydelig aftale om tilvalg/ekstraarbejde. " +
      "Vejledende budget: " + totalMidTxt + " (" + rangeTxt + "), " + vatTxt + ". " +
      "Inkludér i tilbud: nedrivning/affald, beskyttelse, koordinering af fag, el/VVS-arbejde, dokumentation og oprydning."
    );
  }

  function showToast(msg) {
    toast.textContent = msg;
    toast.style.display = "block";
    setTimeout(() => (toast.style.display = "none"), 2200);
  }

  let raf = 0;
  function scheduleCompute(){
    if(raf) cancelAnimationFrame(raf);
    raf = requestAnimationFrame(compute);
  }

  function compute() {
    const A = readNumber(area, { min: 50, max: 350, fallback: null });
    if(A === null){
      totalOut.textContent = "—";
      rangeOut.textContent = "Spænd: —";
      perM2Out.textContent = "Ca. — kr./m²";
      timeOut.textContent = "—";
      return;
    }

    const levelKey = level.value;
    const ageKey = age.value;
    const liveKey = live.value;
    const accessKey = access.value;
    const vatMode = vat.value;

    const fAge = ageFactor[ageKey] || 1.0;
    const fAcc = accessFactor[accessKey] || 1.0;
    const fLive = liveFactor[liveKey] || 1.0;
    const f = fAge * fAcc * fLive;

    const base = A * (basePerM2[levelKey] || basePerM2.modern) * f;

    let wet = 0;
    if (kitchen.checked) wet += kitchenCost();
    if (bath1.checked) wet += bathCost1();
    if (bath2.checked) wet += bathCost2();

    let inst = 0;
    if (install.checked) inst += installCost(A, f);
    if (layout.checked) inst += layoutCost(A, f);

    let shell = 0;
    if (windows.checked) shell += windowsCost(A);
    if (roof.checked) shell += roofCost(A);

    let en = 0;
    if (energy.checked) en += energyCost(A, f);
    if (energy.checked && (windows.checked || roof.checked)) en *= 0.92; // lidt synergi

    const subtotal = base + wet + inst + shell + en;

    // Buffer: typisk 8–15% + lidt ekstra for ældre/svært
    const baseBuf =
      levelKey === "deep" ? 0.15 :
      levelKey === "modern" ? 0.12 : 0.08;

    const ageBuf = (ageKey === "pre60") ? 0.03 : (ageKey === "60to99" ? 0.015 : 0.0);
    const accBuf = (accessKey === "hard") ? 0.015 : 0.0;

    const bufferRate = Math.min(0.22, baseBuf + ageBuf + accBuf);
    const buffer = subtotal * bufferRate;

    const totalMid = subtotal + buffer;

    // Spænd: udsving i finish/skjulte forhold/valg
    const totalLow  = subtotal * 0.92 + buffer * 0.70;
    const totalHigh = subtotal * 1.15 + buffer * 1.20;

    const vatF = (vatMode === "inc") ? 1.25 : 1.0;
    const vatTxt = (vatMode === "inc") ? "inkl. moms" : "ekskl. moms";

    const totalMidTxt = nfCurrency.format(totalMid * vatF);
    const totalLowTxt = nfCurrency.format(totalLow * vatF);
    const totalHighTxt = nfCurrency.format(totalHigh * vatF);

    totalOut.textContent = totalMidTxt;
    rangeOut.textContent = "Spænd: " + totalLowTxt + "–" + totalHighTxt;

    const perM2 = (totalMid * vatF) / Math.max(1, A);
    perM2Out.textContent = "Ca. " + nfInt.format(perM2) + " kr./m²";

    baseOut.textContent = nfCurrency.format(base * vatF);
    wetOut.textContent = nfCurrency.format(wet * vatF);
    instOut.textContent = nfCurrency.format(inst * vatF);
    shellOut.textContent = nfCurrency.format(shell * vatF);
    enOut.textContent = nfCurrency.format(en * vatF);
    bufOut.textContent = nfCurrency.format(buffer * vatF);

    const weeks = computeTime(A, levelKey);
    timeOut.textContent = weeksToText(weeks);

    // Opdater pill (lille nyttig status)
    if(pill){
      const bTxt = (ageKey === "pre60") ? "højere buffer" : (accessKey === "hard" ? "mere komplekst" : "overslag");
      pill.textContent = "Vejledende estimat · " + bTxt;
    }

    assumptionsOut.textContent =
      "Vejledende estimat " + vatTxt + ". Endelig pris afhænger af opmåling, skjulte forhold, materialevalg og den konkrete aftale.";

    const state = {
      A, levelKey, ageKey, liveKey, accessKey, vatMode,
      kitchenOn: kitchen.checked, bath1On: bath1.checked, bath2On: bath2.checked,
      installOn: install.checked, layoutOn: layout.checked,
      windowsOn: windows.checked, roofOn: roof.checked, energyOn: energy.checked
    };
    try { localStorage.setItem(storageKey, JSON.stringify(state)); } catch (e) {}
  }

  function restore() {
    try {
      const saved = JSON.parse(localStorage.getItem(storageKey) || "null");
      if (!saved) return;

      area.value = saved.A ?? area.value;
      level.value = saved.levelKey || level.value;
      age.value = saved.ageKey || age.value;
      live.value = saved.liveKey || live.value;
      access.value = saved.accessKey || access.value;
      vat.value = saved.vatMode || vat.value;

      kitchen.checked = !!saved.kitchenOn;
      bath1.checked = (saved.bath1On !== undefined) ? !!saved.bath1On : bath1.checked;
      bath2.checked = !!saved.bath2On;
      install.checked = (saved.installOn !== undefined) ? !!saved.installOn : install.checked;
      layout.checked = !!saved.layoutOn;
      windows.checked = !!saved.windowsOn;
      roof.checked = !!saved.roofOn;
      energy.checked = !!saved.energyOn;
    } catch (e) {}
  }

  [
    area, level, age, live, access, vat,
    kitchen, bath1, bath2, install, layout, windows, roof, energy
  ].forEach((node) => {
    node.addEventListener("input", scheduleCompute);
    node.addEventListener("change", scheduleCompute);
  });

  copyBtn.addEventListener("click", async () => {
    const vatTxt = (vat.value === "inc") ? "inkl. moms" : "ekskl. moms";
    const rangeTxt = (rangeOut.textContent || "").replace("Spænd: ", "").trim();
    const text = projectText(totalOut.textContent, rangeTxt, vatTxt);

    try {
      await navigator.clipboard.writeText(text);
      showToast("Kopieret. Du kan indsætte teksten i din opgavebeskrivelse.");
    } catch (e) {
      const ta = document.createElement("textarea");
      ta.value = text;
      document.body.appendChild(ta);
      ta.select();
      try { document.execCommand("copy"); } catch (err) {}
      document.body.removeChild(ta);
      showToast("Kopieret. Du kan indsætte teksten i din opgavebeskrivelse.");
    }
  });

  resetBtn.addEventListener("click", () => {
    area.value = 140;
    level.value = "modern";
    age.value = "60to99";
    live.value = "yes";
    access.value = "normal";
    vat.value = "inc";

    kitchen.checked = false;
    bath1.checked = true;
    bath2.checked = false;
    install.checked = true;
    layout.checked = false;
    windows.checked = false;
    roof.checked = false;
    energy.checked = false;

    try { localStorage.removeItem(storageKey); } catch (e) {}
    scheduleCompute();
    showToast("Nulstillet.");
  });

  restore();
  scheduleCompute();
})();
</script></p>

</div><div class="bde-rich-text-831-115 bde-rich-text breakdance-rich-text-styles">
<h2>Hvorfor totalentreprise er relevant, når du ikke er gør det selv type</h2>
<p>De fleste boligejere kan sagtens træffe gode valg om deres hjem. Men langt de fleste ønsker ikke at være projektledere i deres eget hus.</p>
<p>En totalrenovering kræver koordinering af flere faggrupper, styring af rækkefølge og tidsplan, håndtering af leverancer, og en løbende dialog, hvor små beslutninger kan få store konsekvenser for økonomien. Det kræver også, at nogen tager ansvar, når noget ikke går som planlagt, for i større renoveringer vil der næsten altid dukke noget op undervejs. Især i ældre huse.</p>
<p>Det er netop her, totalentreprise ofte giver mening. Ved totalentreprise samles ansvaret ét sted. Du har én primær kontakt, og én virksomhed står på mål for helheden. Det giver ro, fordi du ikke skal stå mellem flere parter, når der skal tages beslutninger, eller når noget skal løses.</p>
<p>På MitBoligProjekt.dk beskriver vi totalentreprise mere detaljeret på vores side om totalentreprise, netop fordi entrepriseformen ofte er nøglen til en tryg proces for boligejere, der ikke ønsker et gør det selv projekt.</p>
</div><div class="bde-rich-text-831-116 bde-rich-text breakdance-rich-text-styles">
<h2>Før du indhenter tilbud, skal du kende dine vigtigste prioriteter</h2>
<p>Mange bliver overraskede over, hvor meget klarhed man kan skabe, før man overhovedet taler med en entreprenør. Du behøver ikke have en færdig plan. Men du bør kunne sætte ord på, hvad du vil opnå.</p>
<p>Spørg dig selv, hvad der i virkeligheden driver ønsket om totalrenovering. Er det mere plads, bedre funktion, lavere energiforbrug, et nyt udtryk, eller et hus, der er lettere at vedligeholde. Ofte er det en kombination, men der vil næsten altid være noget, der vejer tungere end resten. Når du kender det, bliver det lettere at navigere i rådgivning, løsningsforslag og priser.</p>
<p>Det hjælper også at tænke over, hvordan hverdagen skal fungere under renoveringen. Skal I bo i huset imens, eller flytte ud i en periode. Er der en tidsmæssig ramme, der betyder noget, for eksempel skolestart, familieforøgelse eller en planlagt flytning. Jo tydeligere dine rammer er, desto bedre bliver de tilbud, du får.</p>
</div><div class="bde-globalblock-831-117 bde-globalblock"><div class="bde-rich-text-838-100-838-2 bde-rich-text bde-rich-text-838-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style>

<aside class="ad-690">
  <div class="ad-690-content">
    <div class="ad-690-label">Annonce</div>

    <div class="ad-690-headline">
      Overvejer du totalrenovering?
    </div>

    <div class="ad-690-text">
      Sammenlign tilbud på totalrenovering af hus.
    </div>
  </div>

  <a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener">
    Få 3 gratis tilbud
  </a>
</aside>

</div></div><div class="bde-rich-text-831-118 bde-rich-text breakdance-rich-text-styles">
<h2>Sådan indhenter du tre tilbud på totalrenovering uden at binde dig</h2>
<p>Det kan føles som et stort skridt at “række ud”, når man stadig er i overvejelsesfasen. Men tilbudsfasen behøver ikke være et valg. Den kan være en afklaring.</p>
<p>Når du indhenter <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" rel="sponsored noopener" target="_blank">tre uforpligtende tilbud på totalrenovering</a> gennem <a href="https://mitboligprojekt.dk/totalentreprise/">totalentreprise</a> via <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692" rel="sponsored noopener" target="_blank">3byggetilbud.dk</a>, er pointen netop at få flere faglige blik på dit hus og dit projekt. Du får en fornemmelse af, hvad der er realistisk, hvad der bør prioriteres, og hvordan forskellige virksomheder tænker. Det giver også et langt bedre grundlag for at vurdere, hvem du har tillid til.</p>
<p>Tre tilbud er sjældent tre ens løsninger. Og det er en fordel. Det gør det tydeligt, hvor dit projekt er uklart, og hvor du bør træffe beslutninger, før du går videre. For mange boligejere er det faktisk her, totalrenoveringen bliver konkret.</p>
</div><div class="bde-rich-text-831-119 bde-rich-text breakdance-rich-text-styles">
<h2>Sådan vurderer du tilbud, så du undgår dyre misforståelser</h2>
<p>Når du modtager tilbud på totalrenovering af hus, kan det være fristende at starte ved prisen. Men det er sjældent den bedste rækkefølge. Start i stedet med at forstå, hvad tilbuddet dækker, og hvordan entreprenøren har tænkt sig at løse opgaven.</p>
<p>Et tilbud kan virke lavt, fordi opgaven er afgrænset snævert, eller fordi der er taget forbehold, som først viser sig senere. Det er typisk her, ekstraomkostninger opstår. Kig derfor efter, om der er tydelighed omkring omfang, materialevalg og forudsætninger. Når noget står uklart, bliver det nemlig ofte dyrt at “opdage” efter kontrakten er underskrevet.</p>
<p>Læg også mærke til, hvordan tilbuddet håndterer ændringer og tilvalg. I en totalrenovering vil der ofte opstå nye beslutninger undervejs. Det kan være fordi man ser en bedre løsning, eller fordi huset gemmer på noget, man ikke kunne se fra start. Det er ikke et problem i sig selv. Det bliver først et problem, hvis processen for ændringer er utydelig, eller hvis prissætningen virker tilfældig.</p>
<p>Til sidst bør du forholde dig til tidsplanen. Ikke fordi den kan forudsiges helt præcist, men fordi en entreprenør, der kan forklare et realistisk forløb med tydelige faser, ofte også har bedre styr på planlægningen. Og planlægning er alt i en totalrenovering.</p>
</div><img decoding="async" class="bde-image2-831-120 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-10.54.36.webp" alt="Dansk par i lyst nordisk køkken, set bagfra, der planlægger totalrenovering ved spisebord med plantegninger, målebånd, notesbog og kaffekopper" loading="lazy" srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-10.54.36.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-10.54.36-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-10.54.36-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-4.-feb.-2026-10.54.36-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-831-121 bde-rich-text breakdance-rich-text-styles">
<h2>Kemi og kommunikation er ofte det, der afgør om du bliver tilfreds</h2>
<p>Man kan sagtens vælge det rigtige tilbud på papiret og stadig ende i et forløb, der føles tungt. Derfor er det vigtigt at tage samarbejdet seriøst allerede i tilbudsfasen.</p>
<p>Læg mærke til, hvordan du bliver mødt. Bliver der spurgt ind til din hverdag og dine prioriteter, eller handler samtalen kun om materialer og pris. Får du klare svar, når du spørger, eller får du fornemmelsen af, at du skal acceptere noget, du ikke helt forstår. Og oplever du, at virksomheden er realistisk, når de beskriver både muligheder og begrænsninger.</p>
<p>Mange boligejere vælger i sidste ende den samarbejdspartner, der giver ro i maven. Ikke nødvendigvis den, der lover mest, men den, der kan forklare processen på en måde, man kan følge, og som virker vant til at tage ansvar.</p>
</div><div class="bde-rich-text-831-123 bde-rich-text breakdance-rich-text-styles">
<h2>Hvad et seriøst tilbud på totalrenovering bør indeholde</h2>
<p>Et godt tilbud skal kunne læses uden at efterlade dig med nye spørgsmål. Det betyder ikke, at alt skal være detaljeret ned til mindste skrue, men du skal kunne se, hvad prisen bygger på, og hvor grænserne går.</p>
<p>Tilbuddet bør beskrive omfanget tydeligt, så du kan forstå, hvilke arbejder der er inkluderet, og hvad der eventuelt ligger udenfor. Det bør også give en klar fornemmelse af kvalitetsniveauet, så du ikke sammenligner et tilbud baseret på standardløsninger med et tilbud baseret på højere kvalitet, uden at det er tydeligt.</p>
<p>Derudover bør der være en realistisk tidsramme og en gennemsigtig prisstruktur. Og så bør håndteringen af ændringer og ekstraarbejde være beskrevet på en måde, der skaber tryghed. Det er ofte her, de største uenigheder opstår, hvis ikke det er aftalt på forhånd.</p>
</div><div class="bde-rich-text-831-131 bde-rich-text breakdance-rich-text-styles">
<h2>Er du klar til at modtage tre uforpligtende tilbud på totalrenovering?</h2>
<p>Hvis du overvejer totalrenovering af dit hus, kan det bedste næste skridt være at få indsigt, før du forpligter dig.</p>
<p>Ved at indhente<a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" rel="sponsored noopener" target="_blank"> tre uforpligtende tilbud på totalrenovering gennem totalentreprise via 3byggetilbud.dk</a> får du et reelt sammenligningsgrundlag. Du får et bedre billede af prisniveauet, du får konkrete løsningsforslag, og du får mulighed for at vurdere, hvem du har tillid til, før du vælger.</p>
<p>Og det er i sidste ende det, en god tilbudsfase skal give dig. Overblik, ro og et trygt grundlag for at gøre drømmen om en totalrenoveret bolig til virkelighed.</p>
</div><div class="bde-globalblock-831-124 bde-globalblock"><div class="bde-rich-text-838-100-838-3 bde-rich-text bde-rich-text-838-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-690 {
  position: relative;
  width: 690px;
  height: 90px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px 20px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: hidden;
}

.ad-690::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(245,245,242,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245,245,242,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  z-index: 0;
}

.ad-690::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at center,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-690 > * {
  position: relative;
  z-index: 1;
}

.ad-690-content {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ad-690-label {
  font-size: 0.65rem;
  opacity: 0.8;
}

.ad-690-headline {
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.2;
}

.ad-690-text {
  font-size: 0.9rem;
  opacity: 0.9;
}

.ad-690-cta {
  background: var(--brand-light);
  color: #10110C !important;
  padding: 12px 22px;
  border-radius: 999px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

@media (max-width: 768px) {

  .ad-690 {
    width: 336px;
    height: 280px;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    padding: 16px;
    gap: 0;
  }

  .ad-690-content {
    gap: 10px;
  }

  .ad-690-label {
    font-size: 0.7rem;
    opacity: 0.8;
  }

  .ad-690-headline {
    font-size: 1.35rem;
    line-height: 1.25;
    font-weight: 600;
  }

  .ad-690-text {
    font-size: 0.95rem;
    line-height: 1.5;
    color: #E6ECE8;
  }

  .ad-690-cta {
    width: 100%;
    text-align: center;
    padding: 12px;
    font-size: 1.1rem;
    border-radius: 999px;
  }
}

</style>

<aside class="ad-690">
  <div class="ad-690-content">
    <div class="ad-690-label">Annonce</div>

    <div class="ad-690-headline">
      Overvejer du totalrenovering?
    </div>

    <div class="ad-690-text">
      Sammenlign tilbud på totalrenovering af hus.
    </div>
  </div>

  <a class="ad-690-cta" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" target="_blank" rel="nofollow sponsored noopener">
    Få 3 gratis tilbud
  </a>
</aside>

</div></div><div class="bde-rich-text-831-125 bde-rich-text breakdance-rich-text-styles">

</div>
</div><div class="bde-column-831-126 bde-column">
  
  
	



<div class="bde-table-of-contents-831-127 bde-table-of-contents">
<div class="bde-table-of-contents__wrapper">
  <header class="bde-table-of-contents__header">
        <h3 class="bde-table-of-contents__title toc-ignore">Indholdsfortegnelse</h3>
           </header>
  
  <div class="bde-table-of-contents__list">
    <nav id="bde-toc" class="toc js-breakdance-toc" aria-label="Indholdsfortegnelse">There are no headings in this document.</nav>
  </div>
</div>


</div><div class="bde-div-831-128 bde-div">
  
  
	



<div class="bde-text-831-129 bde-text">
Vi samarbejder med 3Byggetilbud.dk og modtager provision for henvisninger via links på denne side. Vi tager ikke ansvar for kvaliteten af det udførte arbejde eller for aftaler indgået mellem dig og de formidlede håndværkere. Alle aftaler indgås direkte mellem dig og den valgte håndværker.
</div>
</div><div class="bde-globalblock-831-130 bde-globalblock"><div class="bde-rich-text-839-100-839-1 bde-rich-text bde-rich-text-839-100 breakdance-rich-text-styles">
<style>
:root{
  --brand: #203723;
  --brand-light: #CCFA74;
  --text-light: #F5F5F2;
}

.ad-336 {
  position: relative;
  width: 336px;
  height: 280px;
  background-color: var(--brand);
  border-radius: 8px;
  padding: 16px;
  color: var(--text-light);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
}

.ad-336::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(
      rgba(245,245,242,0.05) 1px,
      transparent 1px
    ),
    linear-gradient(
      90deg,
      rgba(245,245,242,0.05) 1px,
      transparent 1px
    );
  background-size: 32px 32px;
  z-index: 0;
}

.ad-336::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse at top,
      rgba(255,255,255,0.06) 0%,
      rgba(0,0,0,0.35) 70%
    );
  z-index: 0;
}

.ad-336 > * {
  position: relative;
  z-index: 1;
}

.ad-content {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.ad-label {
  font-size: 0.7rem;
  opacity: 0.8;
}

.ad-headline {
  font-size: 1.35rem;
  line-height: 1.25;
  font-weight: 600;
}

.ad-text {
  font-size: 0.95rem;
  line-height: 1.5;
  color: #E6ECE8;
}

.ad-badge {
  align-self: flex-start;
  border: 1px solid rgba(204,250,116,0.6);
  color: #EAF7C8;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 0.75rem;
}

.ad-footer {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ad-cta {
  background: var(--brand-light);
  color: #10110C !important;
  text-align: center;
  padding: 12px;
  border-radius: 999px;
  font-size: 1.1rem;
  font-weight: 600;
  text-decoration: none;
}

.ad-note {
  font-size: 0.7rem;
  opacity: 0.85;
  text-align: center;
}
</style>

<aside class="ad-336">
  <div class="ad-content">
    <div class="ad-label">Annonce</div>

    <div class="ad-headline">
  Totalrenovering af hus
    </div>

    <div class="ad-text">
      Få 3 uforpligtende tilbud fra lokale håndværkere og sammenlign pris og løsning.
    </div>

    <div class="ad-badge">
      Gratis og uforpligtende
    </div>
  </div>

  <div class="ad-footer">
    <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/totalentreprise/" class="ad-cta" target="_blank" rel="nofollow sponsored noopener">
      Få 3 gratis tilbud
    </a>

    <div class="ad-note">
      Sammenlign pris og løsning
    </div>
  </div>
</aside>

</div></div>
</div></div></div>
</section>]]></content:encoded>
					
					<wfw:commentRss>https://mitboligprojekt.dk/totalrenovering-af-hus/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
