<?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>Nedrivning &#8211; MitBoligProjekt.dk</title>
	<atom:link href="https://mitboligprojekt.dk/kategori/nedrivning/feed/" rel="self" type="application/rss+xml" />
	<link>https://mitboligprojekt.dk</link>
	<description>Find de rette fagfolk til dit boligprojekt</description>
	<lastBuildDate>Fri, 06 Feb 2026 21:42:08 +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>Nedrivning &#8211; MitBoligProjekt.dk</title>
	<link>https://mitboligprojekt.dk</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Kan det betale sig at rive sit hus ned og bygge nyt?</title>
		<link>https://mitboligprojekt.dk/riv-hus-ned-og-byg-nyt/</link>
					<comments>https://mitboligprojekt.dk/riv-hus-ned-og-byg-nyt/#respond</comments>
		
		<dc:creator><![CDATA[Tobias]]></dc:creator>
		<pubDate>Thu, 05 Feb 2026 10:23:31 +0000</pubDate>
				<category><![CDATA[Nybyg]]></category>
		<category><![CDATA[Nedrivning]]></category>
		<guid isPermaLink="false">https://mitboligprojekt.dk/?p=885</guid>

					<description><![CDATA[Overvejer du at rive et hus ned og bygge nyt på samme grund? Her får du et realistisk overblik over økonomi, regler, beliggenhed og CO2, så du kan vælge med ro i maven — og med tal på bordet.]]></description>
										<content:encoded><![CDATA[<section class="bde-section-885-100 bde-section">
  
  
	



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



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



<div class="bde-breadcrumbs-885-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">Nedrivning</span></p></nav></div><ul class="bde-post-meta-885-105 bde-post-meta">            <li class="ee-postmeta-date-wrap">
                                                        <span class="ee-postmeta-date"><span
                            class="ee-postmeta-before">Senest opdateret: </span>5. februar 2026</span>
                                </li>
            </ul>
</div><div class="bde-fancy-divider-885-106 bde-fancy-divider">


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

</div><div class="bde-rich-text-885-107 bde-rich-text breakdance-rich-text-styles">
<h1>Kan det betale sig at rive huset ned og bygge nyt?</h1>
</div><div class="bde-text-885-108 bde-text">
<p>Overvejer du at rive et hus ned og bygge nyt på samme grund? Her får du et realistisk overblik over økonomi, regler, beliggenhed og CO2, så du kan vælge med ro i maven — og med tal på bordet.</p>

</div><img decoding="async" class="bde-image2-885-109 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.23.34.webp" alt="Nybygget étplansvilla i mursten i dansk villakvarter ved en ældre villavej – illustrerer valget mellem nedrivning og nybyggeri." srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.23.34.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.23.34-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.23.34-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.23.34-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-885-110 bde-rich-text breakdance-rich-text-styles">
Nybygget étplansvilla i mursten i dansk villakvarter ved en ældre villavej – illustrerer valget mellem nedrivning og nybyggeri.
</div><div class="bde-fancy-divider-885-111 bde-fancy-divider">


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

</div><div class="bde-rich-text-885-112 bde-rich-text breakdance-rich-text-styles">
<p data-start="1987" data-end="2689">Forestil dig, at du endelig har fundet den slags adresse, der får hverdagen til at hænge sammen. Du kan aflevere børnene uden logistik-cirkus. Du er tæt på venner, fritidsliv og de ting, der gør, at man faktisk kan få en tirsdag til at fungere. Der står bare et hus på grunden, som ikke rigtig passer til jer. Måske er det opdelt i små rum. Måske er kælderen “kun lidt fugtig”, som mægleren siger, og måske kan du allerede mærke i maven, at I kommer til at bruge jeres weekender på at lappe og justere i årevis. Og så kommer spørgsmålet, som mange ender med at stille sig selv lidt for sent: Skal vi totalrenovere… eller skal vi overveje, om det i virkeligheden kan betale sig at rive ned og bygge nyt?</p>
<p data-start="2691" data-end="2999">Der er ikke ét svar, der passer til alle. Men der er et mønster i de situationer, hvor nedrivning og nybyg faktisk giver mening. Det handler sjældent om, at folk “bare vil have nyt”. Det handler om adressen. Om at få det moderne hjem, man drømmer om, uden at give slip på det sted, man allerede ved fungerer.</p>
<p data-start="3001" data-end="3344">Hvis du vil have et hurtigt overblik over mulighederne, kan du starte med vores side om <a class="decorated-link" href="https://mitboligprojekt.dk/nedrivning/" target="_new" rel="noopener" data-start="3091" data-end="3143">nedrivning</a> og vores guide til <a class="decorated-link" href="https://mitboligprojekt.dk/nybyg/" target="_new" rel="noopener" data-start="3167" data-end="3209">nybyg</a>. Ikke fordi du skal beslutte dig i dag, men fordi det er rart at forstå spillereglerne, før du begynder at regne på noget som helst.</p>
</div><div class="bde-globalblock-885-113 bde-globalblock"><div class="bde-rich-text-897-100-897-1 bde-rich-text bde-rich-text-897-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">Nedrivning af hus?</div>
<div class="ad-690-text">Sammenlign tilbud på nedrivning 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/nedrivning/" target="_blank" rel="nofollow sponsored noopener"> Få 3 gratis tilbud </a></aside>
</div></div><div class="bde-rich-text-885-114 bde-rich-text breakdance-rich-text-styles">
<h2 data-start="3346" data-end="3412">Nedrivning i Danmark sker oftest der, hvor beliggenheden er dyr</h2>
<p data-start="3414" data-end="3759">Man ser “riv ned og byg nyt” allerflest steder, hvor grundene er eftertragtede. Det er typisk i og omkring de større byer, hvor mange villaveje allerede er fyldt op, og hvor en tom grund nærmest er en myte. Her kan det give mening at købe et ældre hus, selv om man egentlig ikke køber huset for husets skyld. Man køber retten til at bo lige dér.</p>
<p data-start="3761" data-end="4185">I områder, hvor boligpriserne er lavere, ser regnestykket ofte anderledes ud. Du kan sagtens drømme om nybyg, men hvis du ender med at bygge et dyrt hus i et område, hvor markedet ikke følger med, skal du gøre det for jeres egen livskvalitet. Ikke fordi du regner med at “tjene det hjem” ved et salg. Og det er en vigtig ærlighed at have med sig. For det er præcis sådan nogle beslutninger, der senere kan give ondt i maven.</p>
</div><div class="bde-rich-text-885-115 bde-rich-text breakdance-rich-text-styles">
<h2 data-start="4187" data-end="4251">Hvad koster en nedrivning, og hvad er det, der kan overraske?</h2>
<p data-start="4253" data-end="4654">Selve nedrivningen er ofte mere ligetil, end mange forestiller sig. Det, der kan ændre prisen, er alt det rundt om. Adgangsforhold. Affaldssortering. Miljøscreening. Og om der er materialer, der kræver særlig håndtering. Hvis du vil have et realistisk prisspænd, er det typisk bedst at få flere tilbud, så du ikke læner dig op ad én mavefornemmelse eller én tilfældig pris, du har hørt fra en bekendt.</p>
<p data-start="4656" data-end="5024">Når du er dér, hvor du gerne vil se konkrete bud, kan du indhente <a class="decorated-link" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/nedrivning/" target="_new" rel="noopener" data-start="4724" data-end="4879">tilb</a><a class="decorated-link" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/nedrivning/" target="_new" rel="noopener" data-start="4724" data-end="4879">ud</a><a class="decorated-link" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/nedrivning/" target="_new" rel="noopener" data-start="4724" data-end="4879"> på nedrivning</a> og sammenligne på samme opgavebeskrivelse. Det gør valget meget mere håndgribeligt. Og det er som regel dér, beslutningen begynder at give ro.</p>
</div><div class="bde-rich-text-885-133 bde-rich-text breakdance-rich-text-styles">
<!-- NEDRIVNING – PRISBEREGNER (Breakdance HTML-element) -->
<p><style>
  .demo-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;

    /* Mobil-sikkerhed */
    width: 100%;
    overflow-x: hidden;
  }
  .demo-mini * { box-sizing: border-box; }

  /* VIGTIGT: Flex/grid-børn må kunne krympe, ellers kan de skabe horisontal scroll */
  .demo-mini, .dm-top, .dm-card, .dm-grid, .dm-field, .dm-control, .dm-results,
  .dm-kpi, .dm-kpi-top, .dm-breakdown, .dm-line, .dm-actions, .dm-cta {
    min-width: 0;
  }
  .dm-control > * { min-width: 0; }

  .dm-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.85rem;
  }
  .dm-title {
    margin: 0;
    font-size: 1.15rem;
    color: #203723;
    font-weight: 500;
  }
  .dm-sub {
    margin: 0.25rem 0 0 0;
    font-size: 0.95rem;
    color: #333;
    font-weight: 300;
    max-width: 72ch;
  }
  .dm-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;
  }

  .dm-card {
    background: #fff;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    padding: 1rem;
  }

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

  .dm-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.85rem;
    align-items: start;
  }
  .dm-field { display: grid; gap: 0.35rem; align-content: start; }
  .dm-label { font-size: 0.92rem; color: #333; font-weight: 400; }

  .dm-control { display: flex; gap: 0.5rem; align-items: stretch; }

  .dm-input, .dm-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;
  }
  .dm-input:focus, .dm-select:focus { border-color: #203723; }

  .dm-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>");
  }

  .dm-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: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    white-space: nowrap;
    flex: 0 0 auto;
  }

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

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

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

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

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

  .dm-actions {
    display: flex;
    gap: 0.55rem;
    flex-wrap: wrap;
    margin-top: 0.9rem;
  }
  .dm-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;
  }
  .dm-btn:hover { border-color: #203723; }
  .dm-btn:active { transform: scale(0.99); }

  .dm-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;
  }

  .dm-cta {
    margin-top: 0.9rem;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    background: #fff;
    padding: 1rem;
  }
  .dm-cta p {
    margin: 0 0 0.75rem 0;
    font-size: 0.95rem;
    color: #333;
    font-weight: 300;
  }
  .dm-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;
  }
  .dm-cta a:hover { filter: brightness(0.95); }

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

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

<div id="nedrivningBeregnerV1" class="demo-mini" role="region" aria-label="Prisberegner til nedrivning af hus">
  <div class="dm-top">
    <div>
      <p class="dm-title">Prisberegner: nedrivning af hus</p>
      <p class="dm-sub">Svar på få spørgsmål og få et vejledende estimat med prisspænd. Beregneren er lavet til hele husnedrivninger og tager højde for kælder, materialer, adgang og miljøsanering.</p>
    </div>
    <div class="dm-pill" aria-hidden="true">Vejledende estimat</div>
  </div>

  <div class="dm-card">
    <p id="dmSection1" class="dm-section-title">Huset og forholdene</p>

    <div class="dm-grid" role="group" aria-labelledby="dmSection1">
      <div class="dm-field">
        <label class="dm-label" for="dmArea">Grundareal (m²)</label>
        <div class="dm-control">
          <input id="dmArea" class="dm-input" inputmode="numeric" max="350" min="40" step="1" type="number" value="140" aria-describedby="dmAreaHelp" />
          <div class="dm-unit" aria-hidden="true">m²</div>
        </div>
        <p id="dmAreaHelp" class="dm-help">Brug husets grundplan/etageareal pr. plan. Ved to plan: vælg samlet etageareal i næste felt.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmFloors">Etager</label>
        <select id="dmFloors" class="dm-select" aria-describedby="dmFloorsHelp">
          <option selected="selected" value="1">1 plan</option>
          <option value="2">2 plan</option>
          <option value="3">3 plan (sjældent)</option>
        </select>
        <p id="dmFloorsHelp" class="dm-help">Flere etager giver ofte mere tid, sikring og sortering.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmBasement">Kælder</label>
        <select id="dmBasement" class="dm-select" aria-describedby="dmBasementHelp">
          <option selected="selected" value="none">Ingen kælder</option>
          <option value="partial">Delvis kælder</option>
          <option value="full">Fuld kælder</option>
        </select>
        <p id="dmBasementHelp" class="dm-help">Kælder løfter prisen, fordi der er mere beton, håndtering og evt. opfyldning.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmMaterial">Primære materialer</label>
        <select id="dmMaterial" class="dm-select" aria-describedby="dmMaterialHelp">
          <option value="light">Let konstruktion (træ/let facade)</option>
          <option selected="selected" value="mix">Blandet (typisk parcelhus)</option>
          <option value="masonry">Tungt (mursten/beton)</option>
        </select>
        <p id="dmMaterialHelp" class="dm-help">Tunge materialer giver mere affald, flere maskintimer og højere sorteringskrav.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmHazard">Miljøfarlige stoffer</label>
        <select id="dmHazard" class="dm-select" aria-describedby="dmHazardHelp">
          <option selected="selected" value="none">Ingen kendte (screening viser intet)</option>
          <option value="unknown">Ikke afklaret endnu</option>
          <option value="some">Muligt / mindre omfang (fx enkelte tagplader)</option>
          <option value="high">Sandsynligt / større omfang (asbest/PCB m.m.)</option>
        </select>
        <p id="dmHazardHelp" class="dm-help">Sanering kan flytte prisen mest. Ved “ikke afklaret” bør du regne med en buffer.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmAccess">Adgang for maskiner</label>
        <select id="dmAccess" class="dm-select" aria-describedby="dmAccessHelp">
          <option value="easy">Nemt (bred indkørsel, fri adgang)</option>
          <option selected="selected" value="normal">Normalt</option>
          <option value="hard">Svært (smal vej, tæt bebyggelse, mange hensyn)</option>
        </select>
        <p id="dmAccessHelp" class="dm-help">Svær adgang kan give flere timer, mindre maskiner og mere manuel sortering.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmSorting">Krav til sortering</label>
        <select id="dmSorting" class="dm-select" aria-describedby="dmSortingHelp">
          <option selected="selected" value="standard">Standard kildesortering</option>
          <option value="high">Høj (mange fraktioner / selektiv nedrivning)</option>
        </select>
        <p id="dmSortingHelp" class="dm-help">Høj sortering koster mere, men kan give bedre genanvendelse.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmOutbuildings">Udhuse/garage</label>
        <select id="dmOutbuildings" class="dm-select" aria-describedby="dmOutHelp">
          <option selected="selected" value="0">Ingen</option>
          <option value="1">1 mindre udhus/garage</option>
          <option value="2">2 mindre udhuse/garage</option>
          <option value="3">Flere eller større bygninger</option>
        </select>
        <p id="dmOutHelp" class="dm-help">Små bygninger kan være 10.000 kr. og op, afhængigt af materialer og tag.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmInterior">Indvendig “rydning” før nedrivning</label>
        <select id="dmInterior" class="dm-select" aria-describedby="dmInteriorHelp">
          <option selected="selected" value="none">Nej (normalt indbo fjernes af ejer)</option>
          <option value="some">Ja, lidt (fx køkken/lofter lokalt)</option>
          <option value="full">Ja, meget (tung indvendig strip)</option>
        </select>
        <p id="dmInteriorHelp" class="dm-help">Hvis der skal ryddes mange materialer ud først, stiger timeforbruget.</p>
      </div>

      <div class="dm-field">
        <label class="dm-label" for="dmVat">Momsvisning</label>
        <select id="dmVat" class="dm-select" aria-describedby="dmVatHelp">
          <option selected="selected" value="inc">Inkl. moms</option>
          <option value="ex">Ekskl. moms</option>
        </select>
        <p id="dmVatHelp" class="dm-help">Vælg hvordan priserne vises.</p>
      </div>
    </div>

    <hr class="dm-divider" />

    <div class="dm-results" aria-label="Resultater">
      <div class="dm-kpi" aria-live="polite" aria-atomic="true">
        <div class="dm-kpi-top">
          <div class="dm-kpi-label">Forventet total</div>
          <div id="dmTotal" class="dm-kpi-value">0 kr.</div>
        </div>
        <p id="dmRange" class="dm-kpi-sub">Prisspænd 0–0 kr.</p>
        <p id="dmPerM2" class="dm-kpi-sub">Ca. 0 kr./m²</p>
      </div>

      <div class="dm-kpi" aria-live="polite" aria-atomic="true">
        <div class="dm-kpi-top">
          <div class="dm-kpi-label">Prisfordeling</div>
          <div id="dmHint" class="dm-kpi-value">Overblik</div>
        </div>

        <div class="dm-breakdown" aria-label="Prisfordeling i poster">
          <div class="dm-line">Grundnedrivning<span id="dmBase">0 kr.</span></div>
          <div class="dm-line">Miljø / sanering<span id="dmEnv">0 kr.</span></div>
          <div class="dm-line">Kælder og beton<span id="dmBas">0 kr.</span></div>
          <div class="dm-line">Sortering og bortskaffelse<span id="dmWaste">0 kr.</span></div>
          <div class="dm-line">Adgang og logistik<span id="dmAcc">0 kr.</span></div>
          <div class="dm-line">Ekstra bygninger<span id="dmOut">0 kr.</span></div>
          <div class="dm-line">Buffer<span id="dmBuf">0 kr.</span></div>
        </div>

        <p id="dmAssume" class="dm-kpi-sub" style="margin-top: 0.55rem;">Estimatet er vejledende. En entreprenør skal altid se huset, især ved mistanke om asbest/PCB eller kælder.</p>
      </div>
    </div>

    <div class="dm-actions" aria-label="Handlinger">
      <button id="dmCopy" class="dm-btn" type="button">Kopiér projektbeskrivelse</button>
      <button id="dmReset" class="dm-btn" type="button">Nulstil</button>
    </div>

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

    <div class="dm-cta">
      <p>Vil du have en rigtig pris, så sammenlign flere tilbud på den samme beskrivelse.</p>
      <a href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/nedrivning/" target="_blank" rel="nofollow sponsored noopener">Få 3 uforpligtende tilbud på nedrivning</a>
      <div class="dm-smallprint">Priser varierer meget. Den endelige pris afhænger især af miljøscreening/sanering, kælder, materialer, adgang og krav til sortering.</div>
    </div>
  </div>
</div>

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

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

  const area = el("dmArea");
  const floors = el("dmFloors");
  const basement = el("dmBasement");
  const material = el("dmMaterial");
  const hazard = el("dmHazard");
  const access = el("dmAccess");
  const sorting = el("dmSorting");
  const outbuildings = el("dmOutbuildings");
  const interior = el("dmInterior");
  const vat = el("dmVat");

  const totalOut = el("dmTotal");
  const rangeOut = el("dmRange");
  const perM2Out = el("dmPerM2");

  const baseOut = el("dmBase");
  const envOut = el("dmEnv");
  const basOut = el("dmBas");
  const wasteOut = el("dmWaste");
  const accOut = el("dmAcc");
  const outOut = el("dmOut");
  const bufOut = el("dmBuf");

  const assumeOut = el("dmAssume");
  const toast = el("dmToast");

  const copyBtn = el("dmCopy");
  const resetBtn = el("dmReset");

  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));

  function baseRatePerM2() {
    let rate = 750;

    if (material.value === "light") rate -= 80;
    if (material.value === "masonry") rate += 120;

    if (floors.value === "2") rate += 60;
    if (floors.value === "3") rate += 110;

    if (sorting.value === "high") rate += 70;

    if (access.value === "easy") rate -= 40;
    if (access.value === "hard") rate += 90;

    if (interior.value === "some") rate += 45;
    if (interior.value === "full") rate += 95;

    return clamp(rate, 520, 980);
  }

  function envCost(A) {
    if (hazard.value === "none") return 0;
    if (hazard.value === "unknown") return 14000 + A * 35;
    if (hazard.value === "some") return 28000 + A * 65;
    return 65000 + A * 140;
  }

  function basementCost(A) {
    if (basement.value === "none") return 0;
    if (basement.value === "partial") return 22000 + A * 70;
    return 48000 + A * 120;
  }

  function wasteCost(A) {
    let w = 0;

    if (material.value === "masonry") w += 9000 + A * 40;
    if (material.value === "mix") w += 5500 + A * 25;
    if (material.value === "light") w += 3000 + A * 15;

    if (sorting.value === "high") w *= 1.18;

    if (basement.value === "partial") w += 4500;
    if (basement.value === "full") w += 9500;

    return w;
  }

  function accessCost(A) {
    let c = 0;

    if (access.value === "normal") c += 4500;
    if (access.value === "hard") c += 12500 + A * 20;

    if (floors.value === "2") c += 2500;
    if (floors.value === "3") c += 5500;

    return c;
  }

  function outbuildingCost() {
    const v = outbuildings.value;
    if (v === "0") return 0;
    if (v === "1") return 14000;
    if (v === "2") return 22000;
    return 38000;
  }

  function compute() {
    const A = clamp(parseFloat(area.value || 0), 40, 350);
    if (!Number.isFinite(A)) return;

    const rate = baseRatePerM2();
    const base = A * rate;

    const env = envCost(A);
    const bas = basementCost(A);
    const waste = wasteCost(A);
    const acc = accessCost(A);
    const out = outbuildingCost();

    const subtotal = base + env + bas + waste + acc + out;

    let bufRate = 0.08;
    if (hazard.value === "unknown") bufRate += 0.04;
    if (hazard.value === "some") bufRate += 0.03;
    if (hazard.value === "high") bufRate += 0.05;

    if (basement.value === "partial") bufRate += 0.02;
    if (basement.value === "full") bufRate += 0.03;

    if (access.value === "hard") bufRate += 0.02;
    if (sorting.value === "high") bufRate += 0.01;

    bufRate = clamp(bufRate, 0.08, 0.18);

    const buffer = subtotal * bufRate;
    const totalMid = subtotal + buffer;

    let lowF = 0.90;
    let highF = 1.14;

    if (hazard.value === "unknown") { lowF -= 0.02; highF += 0.05; }
    if (hazard.value === "some") { lowF -= 0.01; highF += 0.06; }
    if (hazard.value === "high") { lowF -= 0.03; highF += 0.10; }

    if (basement.value !== "none") { lowF -= 0.01; highF += 0.04; }
    if (access.value === "hard") { lowF -= 0.01; highF += 0.03; }
    if (sorting.value === "high") { highF += 0.02; }

    const low = totalMid * lowF;
    const high = totalMid * highF;

    const vatF = (vat.value === "inc") ? 1.25 : 1.0;

    totalOut.textContent = nfCur.format(totalMid * vatF);
    rangeOut.textContent = "Prisspænd " + nfCur.format(low * vatF) + "–" + nfCur.format(high * vatF);

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

    baseOut.textContent = nfCur.format(base * vatF);
    envOut.textContent = nfCur.format(env * vatF);
    basOut.textContent = nfCur.format(bas * vatF);
    wasteOut.textContent = nfCur.format(waste * vatF);
    accOut.textContent = nfCur.format(acc * vatF);
    outOut.textContent = nfCur.format(out * vatF);
    bufOut.textContent = nfCur.format(buffer * vatF);

    const vatTxt = (vat.value === "inc") ? "inkl. moms" : "ekskl. moms";
    const hazardTxt = hazard.options[hazard.selectedIndex]?.textContent?.trim() || "";
    const basTxt = basement.options[basement.selectedIndex]?.textContent?.trim() || "";

    assumeOut.textContent =
      "Vejledende estimat " + vatTxt + ". " +
      "Særligt " + hazardTxt.toLowerCase() + " og " + basTxt.toLowerCase() +
      " kan ændre prisen, når entreprenøren har set huset og evt. screeningsrapport.";

    const state = {
      A,
      floors: floors.value,
      basement: basement.value,
      material: material.value,
      hazard: hazard.value,
      access: access.value,
      sorting: sorting.value,
      outbuildings: outbuildings.value,
      interior: interior.value,
      vat: vat.value
    };
    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;
      floors.value = saved.floors || floors.value;
      basement.value = saved.basement || basement.value;
      material.value = saved.material || material.value;
      hazard.value = saved.hazard || hazard.value;
      access.value = saved.access || access.value;
      sorting.value = saved.sorting || sorting.value;
      outbuildings.value = saved.outbuildings || outbuildings.value;
      interior.value = saved.interior || interior.value;
      vat.value = saved.vat || vat.value;
    } catch (e) {}
  }

  function projectText() {
    const A = clamp(parseFloat(area.value || 0), 40, 350);
    const vatTxt = (vat.value === "inc") ? "inkl. moms" : "ekskl. moms";

    const floorsTxt = floors.options[floors.selectedIndex]?.textContent?.trim() || "";
    const basTxt = basement.options[basement.selectedIndex]?.textContent?.trim() || "";
    const matTxt = material.options[material.selectedIndex]?.textContent?.trim() || "";
    const hazTxt = hazard.options[hazard.selectedIndex]?.textContent?.trim() || "";
    const accTxt = access.options[access.selectedIndex]?.textContent?.trim() || "";
    const sortTxt = sorting.options[sorting.selectedIndex]?.textContent?.trim() || "";
    const outTxt = outbuildings.options[outbuildings.selectedIndex]?.textContent?.trim() || "";
    const intTxt = interior.options[interior.selectedIndex]?.textContent?.trim() || "";

    return (
      "Nedrivning af enfamiliehus. " +
      "Areal ca. " + A + " m². " +
      "Etager: " + floorsTxt + ". " +
      "Kælder: " + basTxt + ". " +
      "Materialer: " + matTxt + ". " +
      "Miljøforhold: " + hazTxt + ". " +
      "Adgang: " + accTxt + ". " +
      "Sortering: " + sortTxt + ". " +
      "Udhuse/garage: " + outTxt + ". " +
      "Indvendig rydning før nedrivning: " + intTxt + ". " +
      "Ønske: pris inkl. afkobling af forsyninger, lovpligtig håndtering af affald, bortkørsel og aflevering af grund i terræn (afklares i tilbud). " +
      "Vejledende budget: " + totalOut.textContent + " (" + rangeOut.textContent.replace("Prisspænd ", "") + "), " + vatTxt + "."
    );
  }

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

  function bind(node) {
    node.addEventListener("input", compute);
    node.addEventListener("change", compute);
  }

  [area, floors, basement, material, hazard, access, sorting, outbuildings, interior, vat].forEach(bind);

  copyBtn.addEventListener("click", async () => {
    const text = projectText();
    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;
    floors.value = "1";
    basement.value = "none";
    material.value = "mix";
    hazard.value = "unknown";
    access.value = "normal";
    sorting.value = "standard";
    outbuildings.value = "0";
    interior.value = "none";
    vat.value = "inc";
    try { localStorage.removeItem(storageKey); } catch (e) {}
    compute();
    showToast("Nulstillet.");
  });

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

</div><div class="bde-rich-text-885-116 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="5026" data-end="5093">Må du bygge nyt på grunden, eller bliver du stoppet af reglerne?</h2>
<p data-start="5095" data-end="5481">Det her er et punkt, der kan spare dig for rigtig meget tid. For du kan i princippet forelske dig i den perfekte idé, og så viser det sig, at du ikke kan bygge den bolig, du havde set for dig. Lokalplan, bebyggelsesprocent, placering på grunden, højde, materialer og udtryk kan i nogle områder være stramt styret. Og selv om du river det gamle hus ned, får du ikke automatisk frit spil.</p>
<p data-start="5483" data-end="5743">Hvis du drømmer om nybyg på en eksisterende grund, så gør dig selv en tjeneste og få rammerne afklaret tidligt. Det behøver ikke være en stor øvelse, men det er vigtigt at vide, hvad der faktisk er realistisk, før du bruger energi på plantegninger og detaljer.</p>
<h2 data-start="5745" data-end="5780">Hvornår giver nybyg mest mening?</h2>
<p data-start="5782" data-end="6248">Nybyg giver ofte mest mening, når I reelt har brug for at starte forfra. Det kan være fordi huset er i så dårlig stand, at en renovering bliver en form for genopbygning, bare uden den forudsigelighed, man normalt forbinder med nybyg. Det kan også være fordi I vil noget, huset ikke naturligt kan give jer. En helt anden planløsning. Et andet flow i hverdagen. Et hus, der er indrettet til den måde, man lever på i dag, og ikke den måde man levede på for 60 år siden.</p>
<p data-start="6250" data-end="6559">Der er også noget psykologisk i nybyg, som man ikke skal undervurdere. For nogle er det en lettelse at tage beslutninger én gang. At få det gjort ordentligt. At vide, hvad man går ind til. Renovering kan være fantastisk, men den kan også være en lang serie af valg, hvor “lige det næste” hele tiden dukker op.</p>
<p data-start="6561" data-end="6956">Hvis du vil teste nybyg-sporet seriøst, kan du indhente <a class="decorated-link" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/lp/nybyg/" target="_new" rel="noopener" data-start="6619" data-end="6760">tilbud på nybyg</a> og se, hvad en samlet løsning i praksis lander på. Det er svært at vurdere nybyg ud fra løse tal, fordi tilvalg og forudsætninger betyder så meget. Men konkrete bud gør det hele mere virkeligt.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</article>
</div>
</div><img decoding="async" class="bde-image2-885-123 bde-image2" src="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.41.02.webp" alt="Unge dansk par set bagfra vurderer ældre gul murstensvilla med tegltag i dansk villakvarter – huskøb og mulig nedrivning." loading="lazy" srcset="https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.41.02.webp 1536w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.41.02-300x200.webp 300w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.41.02-1024x683.webp 1024w, https://mitboligprojekt.dk/wp-content/uploads/2026/02/ChatGPT-Image-6.-feb.-2026-22.41.02-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px"><div class="bde-rich-text-885-118 bde-rich-text breakdance-rich-text-styles">
<h2 data-start="6958" data-end="7006">Klima, CO2 og den misforståelse mange ender i</h2>
<p data-start="7008" data-end="7378">Det er fristende at tænke, at et nyt hus altid er “bedre”, fordi energimærket er bedre. Men energimærket handler primært om drift, og klimaregnskabet handler også om materialer, produktion og affald. Nedrivning skaber affald. Nybyg bruger mange nye materialer. Så selv om et nyt hus kan være billigere at varme op, er det ikke automatisk den klimamæssigt bedste løsning.</p>
<p data-start="7380" data-end="7714">Omvendt er renovering heller ikke altid “det rigtige”, hvis huset er i virkelig dårlig stand, eller hvis I ender med at skifte så meget, at I næsten bygger nyt, bare på en mere bøvlet måde. Pointen er, at det her ikke er sort/hvidt. Det er netop derfor, det er værd at regne på det for jeres konkrete hus, jeres område og jeres behov.</p>
<h2 data-start="7716" data-end="7792">Totaløkonomi er nøglen, hvis du vil træffe en beslutning uden at fortryde</h2>
<p data-start="7794" data-end="8048">Når man står midt i det her, kommer man hurtigt til at fokusere på den store pris. Hvad koster nedrivningen? Hvad koster huset? Hvad koster byggeriet? Men hvis du vil træffe en beslutning, der stadig føles rigtig om fem år, så kig også på totaløkonomien.</p>
<p data-start="8050" data-end="8508">Hvad koster det at bo i huset? Ikke kun varme, men også vedligehold. Hvad betyder det for jeres tid og energi, hvis I renoverer i etaper? Hvad betyder det for jeres hverdag, hvis I bygger nyt? Og hvor længe vil I egentlig blive boende? Jo længere tidshorisont, jo mere vægt får komfort, drift og vedligehold. Jo kortere tidshorisont, jo vigtigere bliver områdets prisniveau og sandsynligheden for at kunne sælge uden at blive ramt af “I har bygget for dyrt”.</p>
<p data-start="8510" data-end="8794">Det er også her, mange opdager, at de i virkeligheden har to projekter, ikke ét. De har huset. Og de har haven, belægningen, hegn, skur, carport og alt det, der får et hjem til at fungere i Danmark. Det er ikke altid det mest romantiske at tale om, men det er sådan, budgetter holder.</p>
</div><div class="bde-rich-text-885-119 bde-rich-text breakdance-rich-text-styles">
<!-- NYBYG ELLER NEDRIVNING – SMART SPØRGEHJÆLPER (1 KOLONNE / BREAKDANCE) -->

<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;

    /* Mobil-sikkerhed */
    width: 100%;
    max-width: 760px;
    overflow-x: hidden;
  }
  .choice-mini * { box-sizing: border-box; }

  /* Kritisk: flex/grid børn må krympe */
  .choice-mini,
  .cg-top, .cg-card, .cg-stephead, .cg-progress, .cg-field, .cg-under,
  .cg-nav, .cg-kpi-top, .cg-bar-labels, .cg-actions, .cg-cta {
    min-width: 0;
  }
  .cg-top > div,
  .cg-kpi-top > div { min-width: 0; }

  .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;
    flex: 0 0 auto;
    max-width: 100%;
  }

  .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;
    flex: 0 0 auto;
    max-width: 100%;
  }
  .cg-progress {
    flex: 1;
    height: 8px;
    border: 1px solid #E1E1E1;
    background: #F5F5F2;
    border-radius: 999px;
    overflow: hidden;
    min-width: 0;
  }
  .cg-progress > div {
    height: 100%;
    width: 10%;
    background: #203723;
  }

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

  .cg-select {
    width: 100%;
    max-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;
    min-width: 0;
  }
  .cg-why {
    appearance: none;
    border: 0;
    background: transparent;
    padding: 0;
    color: #203723;
    cursor: pointer;
    font-size: 0.88rem;
    font-weight: 400;
    text-decoration: underline;
    max-width: 100%;
    overflow-wrap: anywhere;
    text-align: left;
  }

  .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;
    overflow-wrap: anywhere;
  }

  .cg-nav {
    display: flex;
    gap: 0.55rem;
    flex-wrap: wrap;
    margin-top: 0.95rem;
    min-width: 0;
  }
  .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;
    max-width: 100%;
  }
  .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;
    min-width: 0;
  }
  .cg-kpi-label { font-size: 0.92rem; color: #333; font-weight: 400; }
  .cg-kpi-value {
    font-size: 1.08rem;
    color: #10110C;
    font-weight: 500;
    text-align: right;
    overflow-wrap: anywhere;
  }

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

  .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;
    min-width: 0;
  }
  .cg-bar-labels span { overflow-wrap: anywhere; min-width: 0; }

  .cg-actions {
    display: flex;
    gap: 0.55rem;
    flex-wrap: wrap;
    margin-top: 0.9rem;
    min-width: 0;
  }
  .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;
    overflow-wrap: anywhere;
  }

  .cg-cta {
    margin-top: 0.95rem;
    border: 1px solid #E1E1E1;
    border-radius: 10px;
    background: #fff;
    padding: 1rem;
    min-width: 0;
  }
  .cg-cta p {
    margin: 0 0 0.75rem 0;
    font-size: 0.95rem;
    color: #333;
    font-weight: 300;
    overflow-wrap: anywhere;
  }
  .cg-cta-btn {
    display: block;
    width: 100%;
    max-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;
    overflow-wrap: anywhere;
  }

  @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_nybyg_nedriv_v1" class="choice-mini">
  <div class="cg-top">
    <div>
      <p class="cg-title">Nybyg eller riv ned og byg nyt?</p>
      <p class="cg-sub">
        Denne hjælper stiller kun de spørgsmål, der giver mening for jeres situation.
        Svar ét ad gangen og få en retning samt en tekst, du kan bruge til tilbud og dialog.
      </p>
    </div>
    <div class="cg-pill">Vejledende guide</div>
  </div>

  <div class="cg-card">
    <p class="cg-section-title">Spørgsmål der tilpasser sig jeres svar</p>

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

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

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

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

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

  <div class="cg-card" id="cgResultCard_nd1">
    <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_nd1">Riv ned og byg nyt</div>
    </div>

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

    <div class="cg-bar" aria-hidden="true">
      <div class="cg-bar-fill" id="cgBar_nd1" style="width: 50%;"></div>
    </div>
    <div class="cg-bar-labels" aria-hidden="true">
      <span>Riv ned og byg nyt</span>
      <span>Nybyg andet sted</span>
    </div>

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

    <div class="cg-cta" id="cgCtaBox_nd1">
      <p id="cgCtaText_nd1">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_nd1" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/nedrivning/" target="_blank" rel="nofollow sponsored noopener">
        Indhent tilbud på nedrivning
      </a>

      <a class="cg-cta-btn cg-cta-btn--secondary" id="cgCtaAlt_nd1" 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">
        Indhent tilbud på nybyg
      </a>

      <div class="cg-smallprint">
        Guiden er vejledende. Den kan ikke erstatte byggesag, lokalplan og miljøscreening, men den gør jer skarpere på, hvad I bør afklare.
      </div>
    </div>
  </div>
</div>

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

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

  const stepPill = el("cgStepPill_nd1");
  const prog = el("cgProg_nd1");
  const qLabel = el("cgQLabel_nd1");
  const select = el("cgSelect_nd1");
  const whyBtn = el("cgWhy_nd1");
  const tipBox = el("cgTip_nd1");
  const backBtn = el("cgBack_nd1");
  const nextBtn = el("cgNext_nd1");

  const resultOut = el("cgResult_nd1");
  const explainOut = el("cgExplain_nd1");
  const barOut = el("cgBar_nd1");

  const copyBtn = el("cgCopy_nd1");
  const resetBtn = el("cgReset_nd1");
  const toast = el("cgToast_nd1");

  const ctaText = el("cgCtaText_nd1");
  const ctaPrimary = el("cgCtaPrimary_nd1"); // nedrivning
  const ctaAlt = el("cgCtaAlt_nd1");         // nybyg

  const links = {
    demo: "https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&bannerid=25692&htmlurl=https://www.3byggetilbud.dk/tilbud/nedrivning/",
    newb: "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));

  const QUESTIONS = [
    {
      key: "situation",
      label: "Hvad passer bedst på jeres situation?",
      tip: "Det vigtigste først. Hvis I allerede har en attraktiv adresse, handler valget typisk om at bevare beliggenheden eller starte forfra et andet sted.",
      def: "own",
      options: [
        { v: "own",  t: "Vi har allerede et hus på en adresse, vi gerne vil blive på", demo: 3, newb: 0, flags: [] },
        { v: "look", t: "Vi leder efter den rigtige adresse (kigger på både grunde og huse)", demo: 1, newb: 1, flags: [] },
        { v: "land", t: "Vi har (eller kan få) en byggegrund uden hus", demo: 0, newb: 3, flags: [] }
      ]
    },
    {
      key: "location",
      label: "Hvor vigtig er beliggenheden helt konkret for jer?",
      tip: "Når beliggenheden er ‘alt’, ender mange med at acceptere nedrivning/byg nyt, hvis huset ikke kan løses fornuftigt.",
      def: "high",
      showIf: (s) => s.situation === "own" || s.situation === "look",
      options: [
        { v: "high", t: "Meget vigtig (skole, netværk, hverdag er bundet til området)", demo: 3, newb: 0, flags: [] },
        { v: "mid",  t: "Vigtig, men vi kan godt flytte 10–30 minutter", demo: 1, newb: 2, flags: [] },
        { v: "low",  t: "Ikke afgørende (vi er fleksible)", demo: 0, newb: 3, flags: [] }
      ]
    },
    {
      key: "permit",
      label: "Er det realistisk at bygge nyt på den adresse, I har i tankerne?",
      tip: "Det her er en gamechanger. Lokalplan, bebyggelsesprocent, afstandskrav, bevaringshensyn og servitutter kan afgøre alt.",
      def: "unknown",
      showIf: (s) => s.situation === "own" || s.situation === "look" || s.situation === "land",
      options: [
        { v: "yes",     t: "Ja, vi ved at nybyg kan godkendes her", demo: 2, newb: 1, flags: [] },
        { v: "maybe",   t: "Måske (vi skal tjekke lokalplan/servitutter)", demo: 1, newb: 1, flags: ["needs_clarity"] },
        { v: "unknown", t: "Vi ved det ikke endnu", demo: 1, newb: 1, flags: ["needs_clarity"] },
        { v: "no",      t: "Nej, nybyg er ikke realistisk på adressen", demo: 0, newb: 3, flags: ["block_demo"] }
      ]
    },
    {
      key: "condition",
      label: "Hvor træt er huset, I har i tankerne?",
      tip: "Hvis næsten alt alligevel skal skiftes, kan nedrivning + nybyg blive mere relevant at regne på.",
      def: "mid",
      showIf: (s) => s.situation === "own" || s.situation === "look",
      options: [
        { v: "ok",  t: "Overordnet ok (mindre renoveringer)", demo: 0, newb: 2, flags: [] },
        { v: "mid", t: "Blandet (flere store poster nærmer sig)", demo: 1, newb: 1, flags: [] },
        { v: "bad", t: "Meget slidt (tag/installationer/fugt/pladsproblemer)", demo: 3, newb: 0, flags: [] }
      ]
    },
    {
      key: "hazard",
      label: "Er der mistanke om asbest, PCB eller andre miljøforhold?",
      tip: "Miljøscreening og sanering kan ændre både pris og tempo. Hvis det er uklart, så planlæg som minimum en buffer.",
      def: "unknown",
      showIf: (s) => s.situation === "own" || s.situation === "look",
      options: [
        { v: "none",    t: "Nej, vi tror ikke der er noget", demo: 1, newb: 1, flags: [] },
        { v: "unknown", t: "Vi ved det ikke endnu", demo: 1, newb: 1, flags: ["needs_clarity"] },
        { v: "some",    t: "Muligt (fx tagplader/fuger)", demo: 2, newb: 0, flags: ["needs_clarity"] },
        { v: "high",    t: "Sandsynligt / større omfang", demo: 2, newb: 0, flags: ["needs_clarity"] }
      ]
    },
    {
      key: "basement",
      label: "Har huset kælder eller meget beton, som vil gøre nedrivning tungere?",
      tip: "Kælder kan skubbe prisen på nedrivning og jordarbejde, men det betyder ikke automatisk at nybyg andet sted er bedre.",
      def: "none",
      showIf: (s) => s.situation === "own" || s.situation === "look",
      options: [
        { v: "none", t: "Ingen kælder", demo: 1, newb: 1, flags: [] },
        { v: "part", t: "Delvis kælder", demo: 1, newb: 1, flags: [] },
        { v: "full", t: "Fuld kælder", demo: 0, newb: 2, flags: [] }
      ]
    },
    {
      key: "altPlot",
      label: "Hvis I vælger nybyg andet sted, hvor realistisk er det at finde en grund i jeres ønskede område?",
      tip: "Hvis grunde i jeres område er få og dyre, bliver nedrivning på en eksisterende adresse ofte den ‘praktiske’ vej til beliggenheden.",
      def: "mid",
      showIf: (s) => s.situation !== "land",
      options: [
        { v: "easy", t: "Ret realistisk (der er grunde/udstykninger)", demo: 0, newb: 3, flags: [] },
        { v: "mid",  t: "Muligt, men vi skal være tålmodige", demo: 1, newb: 2, flags: [] },
        { v: "hard", t: "Meget svært (næsten ingen grunde i området)", demo: 3, newb: 0, flags: [] }
      ]
    },
    {
      key: "budget",
      label: "Hvilken budget- og risikoprofil passer bedst på jer?",
      tip: "Her handler det ikke om ‘billigst’. Det handler om, hvor meget usikkerhed I vil acceptere, og hvor stram en ramme I har.",
      def: "mid",
      options: [
        { v: "tight", t: "Stramt budget (vi skal undgå store overraskelser)", demo: 0, newb: 2, flags: [] },
        { v: "mid",   t: "Mellem (vi kan håndtere noget variation)", demo: 1, newb: 1, flags: [] },
        { v: "flex",  t: "Fleksibelt (vi prioriterer beliggenhed og løsning)", demo: 2, newb: 0, flags: [] }
      ]
    },
    {
      key: "timeline",
      label: "Hvad er vigtigst for jer tidsmæssigt?",
      tip: "Nedrivning + nybyg kan være effektivt, men kræver afklaringer. Nybyg i udstykning kan være mere ‘standardiseret’.",
      def: "balanced",
      options: [
        { v: "fast",     t: "Vi vil hurtigt i gang med en overskuelig proces", demo: 0, newb: 2, flags: [] },
        { v: "balanced", t: "Vi kan leve med planlægning, hvis det giver en bedre løsning", demo: 1, newb: 1, flags: [] },
        { v: "right",    t: "Vi går efter den rigtige løsning, selv om det tager tid", demo: 2, newb: 0, flags: [] }
      ]
    }
  ];

  let state = { idx: 0 };
  QUESTIONS.forEach(q => state[q.key] = q.def);

  function isActive(q) {
    if (!q.showIf) return true;
    try { return !!q.showIf(state); } catch (e) { return false; }
  }

  function activeQuestions() {
    return QUESTIONS.filter(isActive);
  }

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

  function computeScores() {
    let demo = 0, newb = 0;
    let flags = new Set();

    QUESTIONS.forEach(q => {
      if (!isActive(q)) return;
      const opt = optFor(q, state[q.key]);
      demo += (opt.demo || 0);
      newb += (opt.newb || 0);
      (opt.flags || []).forEach(f => flags.add(f));
    });

    return { demo, newb, flags };
  }

  function buildResult(scores) {
    if (scores.flags.has("block_demo")) {
      return {
        heading: "Nybyg andet sted",
        text:
          "Jeres svar tyder på, at nybyg ikke er realistisk på den adresse, I tænker på. " +
          "Så giver det mest mening at kigge efter en grund eller en løsning i et område, hvor nybyg kan godkendes."
      };
    }

    const needsClarity = scores.flags.has("needs_clarity");
    const diff = scores.demo - scores.newb;

    if (needsClarity && Math.abs(diff) <= 2) {
      return {
        heading: "Stop op og få afklaring",
        text:
          "I er i et punkt, hvor et par få afklaringer kan afgøre hele regnestykket. " +
          "Start med at få styr på byggeret og miljøforhold, og først derefter giver det mening at sammenligne priser."
      };
    }

    if (Math.abs(diff) <= 2) {
      let txt =
        "Det er tæt løb. Begge veje kan være rigtige, og her er det typisk beliggenhed, byggeret og de konkrete tilbud, der afgør det.";
      if (needsClarity) {
        txt += " Når miljø eller regler ikke er afklaret, så planlæg med en buffer og få afklaring tidligt.";
      }
      return { heading: "Det er tæt løb", text: txt };
    }

    if (diff > 2) {
      let txt =
        "Jeres svar peger på, at beliggenheden og udgangspunktet gør det relevant at regne seriøst på at rive ned og bygge nyt på samme adresse.";
      if (state.permit === "maybe" || state.permit === "unknown") {
        txt += " Før I går langt, bør I dog få afklaret lokalplan/servitutter, så I ved, hvad I faktisk må bygge.";
      }
      if (state.hazard === "unknown" || state.hazard === "some" || state.hazard === "high") {
        txt += " Og hvis der er miljøforhold, bør det indgå tidligt i plan og budget.";
      }
      return { heading: "Riv ned og byg nyt", text: txt };
    }

    let txt =
      "Jeres svar tyder på, at nybyg andet sted er det mest oplagte spor. " +
      "Det passer ofte bedst, når beliggenheden er fleksibel, og I gerne vil have en mere standardiseret proces.";
    if (state.situation === "look") {
      txt += " Hvis I stadig kigger, kan det være en god idé at sammenligne en tom grund med et hus til nedrivning i samme område.";
    }
    return { heading: "Nybyg andet sted", text: txt };
  }

  function applyCtas(heading, scores) {
    ctaPrimary.style.display = "block";
    ctaAlt.style.display = "block";

    if (heading === "Riv ned og byg nyt") {
      ctaText.textContent =
        "Næste skridt er at få konkrete priser på nedrivning og forstå, hvad der er inkluderet, så I kan regne nybyg-delen rigtigt efterfølgende.";
      ctaPrimary.textContent = "Indhent tilbud på nedrivning";
      ctaPrimary.href = links.demo;

      ctaAlt.textContent = "Indhent tilbud på nybyg";
      ctaAlt.href = links.newb;
    }
    else if (heading === "Nybyg andet sted") {
      ctaText.textContent =
        "Næste skridt er at få konkrete bud på nybyg, så I kan sammenligne løsninger, energiniveau og totaløkonomi.";
      ctaPrimary.textContent = "Indhent tilbud på nybyg";
      ctaPrimary.href = links.newb;

      ctaAlt.textContent = "Indhent tilbud på nedrivning";
      ctaAlt.href = links.demo;
    }
    else if (heading === "Stop op og få afklaring") {
      ctaText.textContent =
        "Start med at få afklaret byggeret, lokalplan og miljøforhold. Når det er på plads, kan I indhente priser og sammenligne fair.";
      ctaPrimary.textContent = "Indhent tilbud på nedrivning";
      ctaPrimary.href = links.demo;

      ctaAlt.textContent = "Indhent tilbud på nybyg";
      ctaAlt.href = links.newb;
    }
    else {
      ctaText.textContent =
        "Når det er tæt løb, giver det mest ro at indhente konkrete bud på begge spor, så I sammenligner på samme grundlag.";
      ctaPrimary.textContent = "Indhent tilbud på nedrivning";
      ctaPrimary.href = links.demo;

      ctaAlt.textContent = "Indhent tilbud på nybyg";
      ctaAlt.href = links.newb;
    }

    if (scores.flags.has("needs_clarity")) {
      ctaText.textContent += " Planlæg med en buffer, indtil I har fakta på bordet.";
    }
  }

  function render() {
    const active = activeQuestions();
    state.idx = clamp(state.idx, 0, active.length - 1);

    const q = active[state.idx];

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

    qLabel.textContent = q.label;

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

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

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

  function update() {
    const scores = computeScores();
    const total = Math.max(1, scores.demo + scores.newb);
    const newShare = scores.newb / total;

    const width = clamp(Math.round(newShare * 100), 10, 90);
    barOut.style.width = width + "%";

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

    applyCtas(res.heading, scores);

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

  function summaryText() {
    const active = activeQuestions();
    const lines = active.map(q => {
      const opt = optFor(q, state[q.key]);
      return q.label + " " + opt.t;
    });

    return (
      "Mini afklaring: Nybyg vs. riv ned og byg nyt\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);

      QUESTIONS.forEach(q => {
        if (!(q.key in state)) state[q.key] = q.def;
      });

      state.idx = clamp(parseInt(state.idx || 0, 10), 0, 50);
    } catch (e) {}
  }

  select.addEventListener("change", () => {
    const active = activeQuestions();
    const q = active[state.idx];
    state[q.key] = select.value;

    const newActive = activeQuestions();
    state.idx = clamp(state.idx, 0, newActive.length - 1);

    render();
    update();
  });

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

  backBtn.addEventListener("click", () => {
    state.idx = clamp(state.idx - 1, 0, 999);
    render();
  });

  nextBtn.addEventListener("click", () => {
    const active = activeQuestions();
    if (state.idx < active.length - 1) {
      state.idx += 1;
      render();
    } else {
      const resCard = el("cgResultCard_nd1");
      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 = { idx: 0 };
    QUESTIONS.forEach(q => state[q.key] = q.def);
    try { localStorage.removeItem(storageKey); } catch (e) {}
    render();
    update();
    showToast("Nulstillet.");
  });

  restore();
  render();
  update();
})();
</script></p>

</div><div class="bde-rich-text-885-134 bde-rich-text breakdance-rich-text-styles">
<h2 data-start="8796" data-end="8855">Sådan kommer du videre uden at låse dig fast for tidligt</h2>
<p data-start="8857" data-end="9021">Du behøver ikke vælge nybyg eller renovering i dag. Men du kan vælge at gøre det konkret. Det er ofte det, der skaber ro, fordi du går fra forestillinger til fakta.</p>
<p data-start="9023" data-end="9575">Start med at få indblik i, hvad nedrivningen vil koste gennem <a class="decorated-link" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/tilbud/nedrivning/" target="_new" rel="noopener" data-start="9087" data-end="9242">tilbud på nedrivning</a>. Og hvis nybyg reelt er et spor, I overvejer, så sammenlign med <a class="decorated-link" href="https://www.partner-ads.com/dk/klikbanner.php?partnerid=41736&amp;bannerid=25692&amp;htmlurl=https://www.3byggetilbud.dk/lp/nybyg/" target="_new" rel="noopener" data-start="9311" data-end="9452">tilbud på nybyg</a>. Ikke for at “vinde” et regnestykke, men for at se, hvad der følger med i de to valg, og hvad I faktisk får for pengene.</p>
<p data-start="9577" data-end="9790">Når du står med konkrete bud, bliver det tydeligt, hvad der er realistisk. Og hvad der bare var en idé. Det er dér, du kan tage beslutningen på et oplyst grundlag, uden at det føles som et spring ud fra en klippe.</p>
</div><div class="bde-globalblock-885-120 bde-globalblock"><div class="bde-rich-text-897-100-897-2 bde-rich-text bde-rich-text-897-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">Nedrivning af hus?</div>
<div class="ad-690-text">Sammenlign tilbud på nedrivning 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/nedrivning/" target="_blank" rel="nofollow sponsored noopener"> Få 3 gratis tilbud </a></aside>
</div></div><div class="bde-rich-text-885-127 bde-rich-text breakdance-rich-text-styles">

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



<div class="bde-table-of-contents-885-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-885-130 bde-div">
  
  
	



<div class="bde-text-885-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-885-132 bde-globalblock"><div class="bde-rich-text-898-100-898-1 bde-rich-text bde-rich-text-898-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">
  Nedrivning af hus
    </div>

    <div class="ad-text">
      Få 3 uforpligtende tilbud fra lokale nedrivningsfirmaer og sammenlign pris.
    </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/nedrivning/" 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/riv-hus-ned-og-byg-nyt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
