#import "functions-core.typ": c, parse-alignment

#let configure_document(
  body,
  logo_file: "logo",
  logo_width: 60mm,
  logo_height: 20mm,
  logo_align: center,
  datum: "20.01.2025",
  issuer: "febis"
) = {[

//#include "vars-core.typ"
#set text(lang: "de", region: "DE", font: "Noto Sans", size: 10pt)
#show math.equation: set text(font: "Noto Sans", size: 10pt)

#set page(
  paper: "a4",
  margin: (top: 48mm, bottom: 20mm, right: 20mm, left: 20mm),
  header: [
    #align( logo_align,
      image(logo_file, height: logo_height)
    )
    #set align(right)
    #set text(size: 9pt)
    Energiesparrechner - Zusammenfassung vom #datum
    #v(8mm)
  ],
  header-ascent: 16pt,
  footer: [
    #set align(center)
    #context counter(page).display(
        "1 / 1",
        both: true,
    )
    | #issuer #sym.dot.op Energiesparrechner
  ],
  footer-descent: 16pt,
)

#set table(
    stroke: none,
    align: start,
    gutter: 5pt,
)

#show table.cell.where(x: 0): it => table.cell(it.body, inset: (left: 0pt, rest: 5pt))

#set box(
  stroke: (top:(paint: luma(0), thickness: 0.75pt), bottom:(paint: luma(0), thickness: 0.75pt)),
  width: 100%
)

#set table.vline(
    stroke: (paint: luma(0), thickness: 0.75pt),
)

#set table.hline(
    stroke: (paint: luma(0), thickness: 0.75pt),
)

#show heading.where(level: 1): it => align(pad(it.body, top: 0mm, bottom: 6pt), left)
#show heading.where(level: 2): it => pad(it.body, bottom: 2pt)

#set document(title: "Ergebnisse und Einsparungen im Überblick")

#body
]}


#let section_intro() = {[
#title()

Die Ergebnisse der Simulation im Energiesparrechner basieren auf Ihren Angaben und dienen zur Orientierung möglicher Sanierungsvorhaben, deren Einsparpotenzial und Kosten. Mit dieser Zusammenfassung können Sie die nächsten Schritte angehen.
]}

#let section_gebaeude(
  baujahr,
  region_name,
  gebaeude_typ,
  vollgeschosse,
  wohneinheiten,
  wohnflaeche,
) = {[
= Gebäude

  #box(
      table(
        columns: (1fr, 1fr, 1fr, 1fr),
        pdf.header-cell(scope: "row")[*Baujahr*], [#baujahr], table.vline(start: 0),
        pdf.header-cell(scope: "row")[*Standort*], [#region_name],
        pdf.header-cell(scope: "row")[*Gebäudeart*], [#gebaeude_typ],
        pdf.header-cell(scope: "row")[*Vollgeschosse*], [#vollgeschosse],
        pdf.header-cell(scope: "row")[*Anzahl Wohneinheiten*], [#wohneinheiten],
        pdf.header-cell(scope: "row")[*Wohnfläche*], [#wohnflaeche m²],
    )
  )
]}

#let section_bubble(
  bubble_bg,
  bubble_text,
  energy_savings_percentage,
  annual_profit_loss,
  monthly_profit_loss,
  house_image,
) = {[
#set text(fill: bubble_text);
#grid(
  columns: (1fr, 1fr),
  grid.cell(
    box(width: 1fr, height: 30mm, stroke: none, fill: bubble_bg,
      align(center + horizon)[#text(24pt)[*#energy_savings_percentage%*] <bbl_a> \ *mögliche Heizkosteneinsparung* <bbl_b> \ #block[#c(annual_profit_loss) € im Jahr bzw. #c(monthly_profit_loss) € im Monat] <bbl_c>] +
      place(left + bottom, dy: 9mm, dx: 10mm, polygon(
          fill: bubble_bg,
          (0cm, 0cm),
          (1.6cm, 0cm),
          (8mm, 1cm),
      ))
    )
  ),
  grid.cell(align( center,
    pdf.artifact(image(house_image, width:100%))
  ))
)
]}

#let section_tacho(
  energy_class_max,
  energyclasses,
  energy_efficiency_class_adjusted_level,
  energy_efficiency_class_planned_level,
) = {[
#let bar_width = (210 - 40);
#let marker_vorher_dx = calc.clamp((float(energy_efficiency_class_adjusted_level)/energy_class_max) * bar_width, 0, bar_width);
#let marker_nachher_dx = calc.clamp((float(energy_efficiency_class_planned_level)/energy_class_max) * bar_width, 0, bar_width);
#let labels_close = calc.abs(marker_vorher_dx - marker_nachher_dx) < 15;

#set text(fill: rgb(0,0,0));
#v(20pt)

#figure(
  alt: str(energy_efficiency_class_adjusted_level)+str(energy_efficiency_class_planned_level),
  box(
  stroke: none,
  table(
    gutter: 0pt,
    columns: (30fr,
              20fr,
              25fr,
              25fr,
              30fr,
              30fr,
              40fr,
              50fr,
              50fr),

    ..for (label, _span, span, color) in energyclasses {
      (table.cell(fill: color)[#align(center)[#label]],)
    },

    ..for (_, label, _, _) in energyclasses {
      (table.cell(align: right)[#label],)
    }
  ) +
  place(left, dx: eval(str(marker_nachher_dx)+"mm"), dy: -13mm,

    place(left, dy: if labels_close { -9mm } else { -4.23mm },  box(width: 2cm, stroke: none, inset: 1mm, fill: white)[*Nachher*])+
    line(start: (0mm, if labels_close { -8mm } else { 0mm }), end: (0mm,7mm))
  )+
  place(left, dx: eval(str(marker_vorher_dx)+"mm"), dy: -13mm,
     place(left, dy: -4.23mm,  box(width: 2cm, stroke: none, inset: 1mm, fill: white)[*Vorher*]) +
    line(start: (0mm, if labels_close { -3mm } else { 0mm }), end: (0mm,7mm))
  )

))
]}

#let section_massnahmen_ueberblick(
  bubble_bg,
  bubble_text,
  energy_class_max,
  energyclasses,
  massnahmen,
  energy_efficiency_class_adjusted_level,
  energy_efficiency_class_planned_level,
  energy_savings_percentage,
  annual_profit_loss,
  monthly_profit_loss,
  house_image,
) = {[

= Maßnahmen im Überblick
(sanieren oder nicht sanieren) Alle nachfolgenden Wertangaben sind ca.-Werte

#box(
  table(
  columns: (1fr, 1fr, 1fr, 1fr),
  ..for (l, v, n, k, s, i) in massnahmen {
       if calc.rem-euclid(i, 2) == 0 {
          if s == [nicht sanieren] {
            (pdf.header-cell(scope: "row")[#text(fill:luma(128))[#l]],[#text(fill:luma(128))[#s]])
          } else {
            (pdf.header-cell(scope: "row")[#l],[#s])
          }
       }else{
         if s == [nicht sanieren] {
            (pdf.header-cell(scope: "row")[#text(fill:luma(128))[#l]],[#text(fill:luma(128))[#s]],table.vline(start: 0), table.hline(start: 0))
          } else {
            (pdf.header-cell(scope: "row")[#l],[#s],table.vline(start: 0), table.hline(start: 0))
          }
       }

    }
  )
)
]}

#let section_modernisierungsschritte(
  massnahmen,
) = {[
= Modernisierungsschritte

#box(
  table(
    columns: (1fr, 1fr, 1fr),
    gutter: 0pt,
    row-gutter: 10pt,
    table.header([*Maßnahme*],table.vline(start: 0),[*Vorher (jetziger Zustand)*],table.vline(start: 0),[*Nachher (gewünschter Ausbau)*]),
    table.hline(start: 0),
    ..for (l, v, n, _, _, _) in massnahmen {
      (pdf.header-cell(scope: "row")[#l],[#v],[#n])
    }
  )
)
]}

#let section_einsparpotenzial(
  annual_energy_consumption_kwh_current,
  annual_energy_consumption_kwh_planned,
  annual_heating_costs_adjusted,
  annual_heating_costs_planned,
  annual_savings_on_energy_costs,
  energy_efficiency_class_adjusted_level,
  energy_efficiency_class_planned_level,
  co2_emission_current,
  co2_emissions_planned,
  annual_energy_consumption_selected_unit_current,
  annual_energy_consumption_selected_unit_planned,
  selected_unit
) = {[
= Einsparpotenzial (pro Jahr)
#text(size: 8pt)[
  *Energieverbrauch*: Zur besseren Vergleichbarkeit werden hier der bisherige und der neue Energieverbrauch des Hauses (Heizung + Strom) in der Einheit (kWh) angezeigt.
] \

#text(size: 8pt)[
  *Energiekennzahl*: Zeigt, wie viel Energie das Haus pro m² Nutzfläche im Jahr verbraucht. Auf dieser Basis kann es in eine Effizienzklasse von A+ bis H eingestuft werden.
] \ 

#box(
  table(
    columns: (1fr, 1fr, 1fr, 1fr),

    table.header([], table.vline(start: 0),
    [*Vorher\(jetziger Zustand)*], table.vline(start: 0),
    [*Nachher*], table.vline(start: 0),
    [*Einsparung*]),
    table.hline(start: 0),

    pdf.header-cell(scope: "row")[Energieverbrauch],[#c(annual_energy_consumption_kwh_current) kWh],
    [#c(annual_energy_consumption_kwh_planned) kWh],[*#c(float(annual_energy_consumption_kwh_current) - float(annual_energy_consumption_kwh_planned)) kWh*],

    if selected_unit != "kWh" {pdf.header-cell(scope: "row")[Energieverbrauch (#selected_unit)]},
    if selected_unit != "kWh" {[#c(annual_energy_consumption_selected_unit_current) #selected_unit]},
    if selected_unit != "kWh" {[#c(annual_energy_consumption_selected_unit_planned) #selected_unit]},
    if selected_unit != "kWh" {[*#c(float(annual_energy_consumption_selected_unit_current) - float(annual_energy_consumption_selected_unit_planned)) #selected_unit*]},
    
    pdf.header-cell(scope: "row")[Energiekosten],[#c(annual_heating_costs_adjusted) €],[#c(annual_heating_costs_planned) €],[*#c(annual_savings_on_energy_costs) €*],
        pdf.header-cell(scope: "row")[CO₂ Emission],[#c(co2_emission_current) kg],[#c(co2_emissions_planned) kg],[*#c(float(co2_emission_current) - float(co2_emissions_planned)) kg*],

    pdf.header-cell(scope: "row")[Energiekennzahl \ #text(size: 8pt)[für Energieklasse A+ bis H]],[#c(energy_efficiency_class_adjusted_level) kWh/m²/Jahr],[#energy_efficiency_class_planned_level kWh/m²/Jahr],[],
  )
)
]}

#let section_wirtschaftlichkeit_header() = {[
#pagebreak()

= Wirtschaftlichkeit: Kosten, Finanzierung und Förderung
Alle nachfolgenden Wertangaben sind ca.-Werte
]}

#let table_massnahmen_foerderung(
  massnahmen_subsidy,
  subsidy_sum,
  building_envelope_costs,
  building_envelope_max_funding,
  building_system_costs,
  building_system_max_funding,
  total_planned_costs,
  total_possible_subsidy,
) = {[
#let capped_building_envelope = if float(building_envelope_costs) > float(building_envelope_max_funding) {
  float(building_envelope_max_funding)
} else {
  float(building_envelope_costs)
}

#let capped_building_system = if float(building_system_costs) > float(building_system_max_funding) {
  float(building_system_max_funding)
} else {
  float(building_system_costs)
}

#let new_total_costs = capped_building_envelope + capped_building_system

#box(
  table(
    columns: (1fr, 1fr, 1fr),

    table.header([*Maßnahme*],table.vline(start: 0),[*Investitionskosten*],table.vline(start: 0),[*Mögliche BEG-Förderung*]),
    table.hline(start: 0),

    ..for (l, i, s) in massnahmen_subsidy {
      (pdf.header-cell(scope: "row")[#l],[#i €],[#s €])
    },

    table.hline(start: 0),

    pdf.header-cell(scope: "row")[Summe], [#c(total_planned_costs) €], [#c(subsidy_sum) €],

    pdf.header-cell(scope: "row")[*Förderbare Summe*],
    [*#c(new_total_costs) €*],
    [*#c(total_possible_subsidy) €*]
  )
)
]}

#let table_kosten_foerderung(
  total_planned_costs,
  total_possible_subsidy,
  total_final_costs,
) = {[
#box(
  table(
    columns: (1fr, 1fr, 1fr),

   table.cell(rowspan: 3, pdf.header-cell(scope: "row")[*Kosten und Förderung*] + pdf.artifact(align(right + bottom)[#image("icons/febis_einsparpotenzial_sparschwein.svg", fit: "contain", width: 15mm)])),table.vline(start: 0),
   pdf.header-cell(scope: "row")[Investitionskosten gesamt],table.vline(start: 0),[#c(total_planned_costs) €],
   pdf.header-cell(scope: "row")[BEG-Förderung #sym.ast.basic im 1. Jahr],[#c(total_possible_subsidy) €],
   pdf.header-cell(scope: "row")[Investition nach Förderung],[#c(total_final_costs) €],
  )
)
]}

#let table_einsparungen(
  annual_savings_on_energy_costs,
  kostensteigerung_energie,
  period_unter_review,
  savings_over_lifetime,
  co2_tax_savings,
) = {[
#box(
  table(
    columns: (1fr, 1fr, 1fr),

   table.cell(rowspan: 5, pdf.header-cell(scope: "row")[*Einsparungen* \ \ #text(size: 8pt)[Nutzungsdauer:] \ #text(size: 8pt)[Heizung: 20 Jahre] \ #text(size: 8pt)[Dämmung / Fenster: 40 Jahre] \ #text(size: 8pt)[Heizung + Dämmung: 40 Jahre] ] + pdf.artifact(align(right + bottom)[#image("icons/febis_grafik_kosten-foerderung_mensch_geld.svg", fit: "contain", width: 15mm)])),table.vline(start: 0),
   pdf.header-cell(scope: "row")[Einsparungen pro Jahr <sav_a>],table.vline(start: 0),[#block[#c(float(annual_savings_on_energy_costs)) €] <sav_a>] ,
   pdf.header-cell(scope: "row")[Einsparungen pro Monat <sav_b>],[#block[#c(calc.floor(float(annual_savings_on_energy_costs) / 12)) €] <sav_b>],
   pdf.header-cell(scope: "row")[Kostensteigerung Energie <sav_c>],[#block[#c(kostensteigerung_energie) %] <sav_c>],
   pdf.header-cell(scope: "row")[Einsparungen über die Nutzungsdauer von #period_unter_review Jahren <sav_d>],[#block[#c(savings_over_lifetime) €] <sav_d>],
   pdf.header-cell(scope: "row")[CO₂-Steuerersparnis <sav_e>],[#block[#c(co2_tax_savings) €] <sav_e>],
  )
)
]}

#let table_wirtschaftlichkeit(
  annual_profit_loss,
  monthly_profit_loss,
  return_on_investment,
  payback_period,
) = {[
#box(
  table(
    columns: (1fr, 1fr, 1fr),

    table.cell(rowspan: 4, pdf.header-cell(scope: "row")[*Wirtschaftlichkeit*] + pdf.artifact(align(right + bottom)[#image("icons/febis_wirtschaftlichkeit_haus.svg", fit: "contain", width: 15mm)])),table.vline(start: 0),
    pdf.header-cell(scope: "row")[Gewinn / Verlust(-) jährlich],table.vline(start: 0),[#c(annual_profit_loss) €],
    pdf.header-cell(scope: "row")[Gewinn / Verlust(-) monatlich],[#c(monthly_profit_loss) €],
    pdf.header-cell(scope: "row")[Mittlere Rendite],[#c(return_on_investment) %],
    pdf.header-cell(scope: "row")[Amortisationsdauer],[#c(payback_period) Jahre],
  )
)
]}

#let section_kontakt(
  bubble_bg,
  contact_name,
  contact_email,
  contact_contact,
  contact_address,
  contact_zip,
  contact_city,
  contact_tel,
) = {[
#if contact_name != none and contact_name.len() > 0 {
  let name = contact_name
  let email = contact_email
  let contact = contact_contact
  let address = contact_address
  let zip = contact_zip
  let city = contact_city
  let tel = contact_tel

  set box(inset: 8mm, stroke: none, fill: bubble_bg)

  grid(
    columns: (1fr, 1fr),
    gutter: 4mm,
    grid.cell(align(center,
      [#box()[
       *#name* \
       #address \
       #zip #city
       ] <contact_box_a>]
       
    )),
    grid.cell(align(center,
      [#box()[
        *Ihr persönlicher Ansprechpartner* \
        #contact \
        #tel \
        #email] <contact_box_b>]
    )),
  ) 
}
]}

#let section_hinweise_foerderung() = {[
= Ergänzende Hinweise zur BEG-Förderung

== Bemessungsgrenze Förderung BEG EM:
*Bitte beachten Sie:* In der BEG-Förderung sind die förderfähigen Kosten je nach Maßnahme gedeckelt.

#set table(
    stroke: none,
    align: start,
    gutter: 0pt,
)

#box(
  table(
    columns: (1fr, 1fr),
    table.hline(start: 0),
   table.header([*BEG EM Gebäudehülle/Lüftung*],	[*förderfähige Kosten*]),
    pdf.header-cell(scope: "row")[ohne iSFP], [30.000 € je Wohnung und Jahr],
    pdf.header-cell(scope: "row")[mit iSFP], [60.000 € je Wohnung und Jahr],
    table.hline(start: 0),
    table.header([*Heizung förderfähige Kosten*], [*einmalig je Objekt*]),
    pdf.header-cell(scope: "row")[für die 1. Wohnung], [30.000 €],
    pdf.header-cell(scope: "row")[für 2. bis 6. Wohnung],	[15.000 € je Wohnung],
    pdf.header-cell(scope: "row")[ab der 7. Wohnung],	[8.000 € je Wohnung],
    table.hline(start: 0),
  )
)

- Sanierungskosten von Einzelmaßnahmen können ergänzend über einen BEG-Ergänzungskredit finanziert werden. Mit der vorliegenden Zuschuss-Zusage kann der Ergänzungskredit über eine Bank oder einen Finanzierer beantragt werden.

- Bei einer Überschreitung der förderfähigen Kosten durch
  mehrere Maßnahmen empfiehlt es sich, die Maßnahmen auf mehrere Jahre zu verteilen.

== iSFP (individueller Sanierungsfahrplan
Ein individueller Sanierungsfahrplan (iSFP) wird von einem Energieeffizienz-Experten erstellt und zeigt individuelle auf, wie ein Wohnhaus Schritt für Schritt energieeffizient modernisiert werden kann. Für die Energieberatung zum Sanierungsfahrplan und für die einzelnen Sanierungsmaßnahmen können Fördergelder der Bundesförderungen genutzt werden. Der Sanierungsfahrplan wird mit 50 % der Beratungskosten bezuschusst, max. 650 € im Ein-/Zweifamilienhaus und 850 € im Mehrfamilienhaus. Für Maßnahmen an der Gebäudehülle erhöht der Sanierungsfahrplan die BEG-Förderung, sowohl die Förderquote als auch die förderfähigen Kosten.

== Klimageschwindigkeitsbonus für Heizungen
Den Klimageschwindigkeits-Bonus gibt es nur für selbstnutzende Wohneigentümer, deren alte Gas- o. Biomassezentralheizung mind. 20 Jahre alt ist, o. die eine Öl-, Kohle-, Gasetagen-, Nachtspeicherheizung oder Gas-Öfen besitzen. Nach der Heizungsmodernisierung wird nicht mehr mit fossilen Brennstoffen geheizt und die Entsorgung der alten Heizung nachgewiesen.
Für Holz-/Pelletheizungen gilt zusätzlich: die neue Heizung muss mit einer Solarthermie-Anlage, einer PV-Anlage oder Wärmepumpe zur Warmwasserbereitung und/oder Raumheizung kombiniert werden.

== Einkommensbonus
Den Einkommens-Bonus gibt es nur für selbstnutzende Wohneigentümer mit durchschnittlichem, zu versteuernden
Haushaltseinkommen von bis zu 40.000 € pro Jahr. Dazu sind die Einkommenssteuerbescheide für das zweite und dritte Jahr vor Antragstellung einzureichen, und zwar von allen Personen, die zum versteuernden Haushaltsjahreseinkommen beitragen.


== Alternative Steuerermäßigung bei energetischer Gebäudesanierung
Alternativ zur Zuschussförderung kann bei selbstgenutztem Wohneigentum eine der Maßnahmen über die Steuerermäßigung bei energetischer Gebäudesanierung nach § 35 c EStG angesetzt werden. Bei Einzelmaßnahmen zur energetischen Gebäudesanierung sind 20% der Aufwendungen (max. 40.000 € pro Wohnobjekt), verteilt über drei Jahre, steuerlich abzugsfähig.
]}

#let section_rechtlicher_hinweis() = {[
= Rechtlicher Hinweise

Bitte beachten Sie, dass sich aus den nach Ihren Angaben durchgeführten Berechnungen keine Rechtsansprüche herleiten
lassen. Sie haben lediglich informativen Charakter und sollen Ihnen als Hilfe für Ihre weiteren Planungen dienen. Die Ergebnisse bieten keine Gewähr für den Einzelfall, sondern zeigen die generelle Tendenz für die zu erwartenden Energieeinsparungen und Kosten. Die Berechnungen ersetzten keine individuelle Energieberatung durch einen Energieeffizienz-Experten.

Der Energiesparrechner ist ein Service von febis Service GmbH.
]}

#let draw_document(
  bubble_bg,
  bubble_text,
  energy_class_max,
  energyclasses,
  massnahmen,
  massnahmen_subsidy,
  subsidy_sum,
  baujahr,
  region_name,
  gebaeude_typ,
  vollgeschosse,
  wohneinheiten,
  wohnflaeche,
  energy_efficiency_class_adjusted_level,
  energy_efficiency_class_planned_level,
  energy_savings_percentage,
  annual_profit_loss,
  monthly_profit_loss,
  house_image,
  annual_energy_consumption_kwh_current,
  annual_energy_consumption_kwh_planned,
  annual_heating_costs_adjusted,
  annual_heating_costs_planned,
  annual_savings_on_energy_costs,
  co2_emission_current,
  co2_emissions_planned,
  building_envelope_costs,
  building_envelope_max_funding,
  building_system_costs,
  building_system_max_funding,
  total_planned_costs,
  total_possible_subsidy,
  total_final_costs,
  kostensteigerung_energie,
  period_unter_review,
  savings_over_lifetime,
  co2_tax_savings,
  return_on_investment,
  payback_period,
  contact_name,
  contact_email,
  contact_contact,
  contact_address,
  contact_zip,
  contact_city,
  contact_tel,
) = {[
#section_intro()

#section_gebaeude(
  baujahr,
  region_name,
  gebaeude_typ,
  vollgeschosse,
  wohneinheiten,
  wohnflaeche,
)

#section_massnahmen_ueberblick(
  bubble_bg,
  bubble_text,
  energy_class_max,
  energyclasses,
  massnahmen,
  energy_efficiency_class_adjusted_level,
  energy_efficiency_class_planned_level,
  energy_savings_percentage,
  annual_profit_loss,
  monthly_profit_loss,
  house_image,
)

#section_bubble(
  bubble_bg,
  bubble_text,
  energy_savings_percentage,
  annual_profit_loss,
  monthly_profit_loss,
  house_image,
)

#section_tacho(
  energy_class_max,
  energyclasses,
  energy_efficiency_class_adjusted_level,
  energy_efficiency_class_planned_level,
)

#section_modernisierungsschritte(
  massnahmen,
)

#section_einsparpotenzial(
  annual_energy_consumption_kwh_current,
  annual_energy_consumption_kwh_planned,
  annual_heating_costs_adjusted,
  annual_heating_costs_planned,
  annual_savings_on_energy_costs,
  energy_efficiency_class_adjusted_level,
  energy_efficiency_class_planned_level,
  co2_emission_current,
  co2_emissions_planned,
)

#section_wirtschaftlichkeit_header()

#table_massnahmen_foerderung(
  massnahmen_subsidy,
  subsidy_sum,
  building_envelope_costs,
  building_envelope_max_funding,
  building_system_costs,
  building_system_max_funding,
  total_planned_costs,
  total_possible_subsidy,
)

#table_kosten_foerderung(
  total_planned_costs,
  total_possible_subsidy,
  total_final_costs,
)

#(
  annual_savings_on_energy_costs,
  kostensteigerung_energie,
  period_unter_review,
  savings_over_lifetime,
  co2_tax_savings,
)

#table_wirtschaftlichkeit(
  annual_profit_loss,
  monthly_profit_loss,
  return_on_investment,
  payback_period,
)

#set text(size: 8pt)

#pagebreak()

#section_kontakt(
  bubble_bg,
  contact_name,
  contact_email,
  contact_contact,
  contact_address,
  contact_zip,
  contact_city,
  contact_tel,
)

#section_hinweise_foerderung()

#section_rechtlicher_hinweis()
]}
