/* 1. Use a more-intuitive box-sizing model */
*, *::before, *::after {
    box-sizing: border-box;
  }
  
  /* 2. Remove default margin */
  * {
    margin: 0;
  }
  
  body {
    /* 3. Add accessible line-height */
    line-height: 1.5;
    /* 4. Improve text rendering */
    -webkit-font-smoothing: antialiased;
  }
  
  /* 5. Improve media defaults */
  img, picture, video, canvas, svg {
    display: block;
    max-width: 100%;
  }
  
  /* 6. Inherit fonts for form controls */
  input, button, textarea, select {
    font: inherit;
  }
  
  /* 7. Avoid text overflows */
  p, h1, h2, h3, h4, h5, h6 {
    overflow-wrap: break-word;
  }
  
  /* 8. Improve line wrapping */
  p {
    text-wrap: pretty;
  }
  h1, h2, h3, h4, h5, h6 {
    text-wrap: balance;
  }
  
  /*
    9. Create a root stacking context
  */
  #root, #__next {
    isolation: isolate;
  }

@font-face {
  font-family: "Garet";   /* Name, den du im CSS später nutzt */
  src: url("fonts/Garet-Regular.woff2") format("woff2");
  font-weight: 400;             /* Schriftschnitt */
  font-style: normal;           /* normal / italic */
  font-display: swap;           /* Text wird sofort angezeigt, bis Font geladen */
}

/* root variablen festlegen */
:root {
    /* Farben */
    --color-primary: #fffbf5;
    --color-accent: #89937c;
    --color-dark: #78142d;
    --color-font: #323232;
  
    /* Primary Abstufungen */
    --primary-100: hsl(180, 20%, 98%);
    --primary-200: hsl(180, 20%, 95%);
    --primary-300: hsl(180, 15%, 90%);
    --primary-400: hsl(180, 15%, 80%);
    --primary-500: hsl(180, 10%, 70%);
    --primary-600: hsl(180, 10%, 60%);
    --primary-700: hsl(180, 10%, 50%);
    --primary-800: hsl(180, 10%, 40%);
    --primary-900: hsl(180, 10%, 30%);

    /* Accent Abstufungen */
    --accent-100: hsl(120, 50%, 90%);
    --accent-200: hsl(120, 50%, 75%);
    --accent-300: hsl(120, 50%, 65%);
    --accent-400: hsl(120, 45%, 55%);
    --accent-500: hsl(120, 45%, 45%);
    --accent-600: hsl(120, 40%, 35%);
    --accent-700: hsl(120, 35%, 30%);
    --accent-800: hsl(120, 30%, 25%);
    --accent-900: hsl(120, 25%, 20%);

    /* Dark Abstufungen */
    --dark-100: hsl(220, 20%, 30%);
    --dark-200: hsl(220, 20%, 28%);
    --dark-300: hsl(220, 20%, 26%);
    --dark-400: hsl(220, 20%, 24%);
    --dark-500: hsl(220, 20%, 22%);
    --dark-600: hsl(220, 20%, 20%);
    --dark-700: hsl(220, 20%, 18%);
    --dark-800: hsl(220, 20%, 16%);
    --dark-900: hsl(220, 20%, 14%);
  
    /* Schriftarten */
    --font-family: "Garet", Arial, sans-serif;
  
    /* Abstände */
    --spacing-xs: 0.25rem; /* 4px */
    --spacing-sm: 0.5rem;  /* 8px */
    --spacing-md: 0.7rem;    /* 16px */
    --spacing-lg: 1rem;  /* 24px */
    --spacing-xl: 1.5rem;    /* 32px */
    --spacing-xxl: 2rem;    /* 32px */
  
    /* Schriftgrößen */
    --font-size-xs: clamp(0.75rem, 0.9vw, 0.85rem);  /* Min: 12px, Ideal: 2vw, Max: 14px */
    --font-size-sm: clamp(0.875rem, 1vw, 1rem);  /* Min: 14px, Ideal: 2.5vw, Max: 16px */
    --font-size-md: clamp(1rem, 1.3vw, 1.3rem);     /* Min: 16px, Ideal: 3vw, Max: 18px */
    --font-size-lg: clamp(1.3rem, 1.5vw, 1.8rem); /* Min: 17.6px, Ideal: 3.5vw, Max: 20px */
    --font-size-xl: clamp(1.8rem, 2.5vw, 2.3rem);   /* Min: 20px, Ideal: 4vw, Max: 24px */
    --font-size-xxl: clamp(2.3rem, 2.7vw, 3.5rem);     /* Min: 24px, Ideal: 5vw, Max: 32px */

    /* Schriftgrößen */
    --font-weight-regular: 100; /* body */
    --font-weight-semibold: 600; /* h4,button */
    --font-weight-bold: 700;    /* h3 */
    --font-weight-extrabold: 800; /* h2 */
    --font-weight-black: 900;  /* h1 */
  
    /* Andere Variablen */
    --border-radius: 0.25rem; /* 4px */
    --transition-default: 0.3s ease-in-out;
  }

html, body {
  margin: 0;
  padding: 0;
  overflow-x: hidden; /* kein horizontales Scrollen */
}

h1, h2, h3, h4, h5, h6, p, button, ul, a, address{
  font-family: var(--font-family);
  color: var(--color-font);
  font-style: normal;
  text-decoration: none;
}

h2 {
  font-size: var(--font-size-xxl);
  padding-bottom: var(--spacing-xl);
  font-weight: var(--font-weight-regular);
}

h3 {
  font-size: var(--font-size-xl);
  padding-bottom: var(--spacing-sm);
  font-weight: var(--font-weight-regular);
}

h4 {
  font-size: var(--font-size-lg);
  padding-bottom: var(--spacing-sm);
  font-weight: var(--font-weight-regular);
}

p {
  font-size: var(--font-size-md);
}

button {
    background-color: var(--color-font);
    color: var(--color-primary);
    border-radius: var(--spacing-sm);
    padding: var(--spacing-sm);
    border: none;
    cursor: pointer;
}

/* Hero-Bereich */
header {
  min-height: 70vh; /* Fast ganze Bildschirmhöhe */
  width: 100vw;
  background-image: url("assets/hero2.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: white;
  text-align: center;
}

/* Logo */
header img {
  width: 90%;
  align-self: center;
  padding: var(--spacing-lg);
}

header * {
  position: relative;
  z-index: 1;
}

/* Scroll-Indikator */
.scroll-indicator {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 2rem;
  color: white;
  animation: bounce 1.5s infinite;
  opacity: 0.8;
}

/* Animierter Pfeil nach unten */
@keyframes bounce {
  0%, 20%, 50%, 80%, 100% {
    transform: translate(-50%, 0);
  }
  40% {
    transform: translate(-50%, 10px);
  }
  60% {
    transform: translate(-50%, 5px);
  }
}

main {
  background-color: var(--color-primary);
}

section {
  padding: var(--spacing-xxl);
  text-align: center;
  align-content: center;
}

section > div{
  display: flex;
  flex-direction: column;
  gap: var(--spacing-lg);
  margin: auto;
}

.herz {
  display: none;
}

.leitspruch .textbox {
  display: flex;
  flex-direction: column;
  margin: auto;
  gap: var(--spacing-lg);
  }

dialog {
  display: none;
}

dialog[open] {
  display: flex;
  margin: auto;
  background: none;
  height: 100%;
  width: 100%;
  border: none;
  padding: 0;
  justify-content: center;
  align-content: center;
}

::backdrop {
	background-color: rgba(0, 0, 0, 0.93);
}
.close-modal button{
  position: absolute;
  top: 1%;
  right: 3%;
  z-index: 1000;
  color: var(--color-primary);
  font-size: var(--font-size-xxl);
  border: none;
  opacity: 0.9;
}

.close-modal button,
.close-modal button:hover,
.close-modal button:focus,
.close-modal button:active {
  color: var(--color-primary);
  outline: none;
}

.carousel-indicators li{
  height: 0.5vh;
}

.carousel {
  align-content: center;
}

.carousel-inner {
  max-height: 100%;
}

.carousel-item{
  height: 100%;
  align-content: center;
}

.carousel-item img {
  max-height: 100%;
  max-width: 100%;
  object-fit: contain;
}

.carousel-control-next,
.carousel-control-prev,
.carousel-control-next:hover,
.carousel-control-prev:hover,
.carousel-control-next:focus,
.carousel-control-prev:focus,
.carousel-control-next:active,
.carousel-control-prev:active{
  font-size: var(--font-size-xl);
  color: var(--color-primary);
  opacity: 0.9;
}

.carousel-control-next span, .carousel-control-prev span {
  background-color: rgba(50, 50, 50, 0.6);
  border-radius: var(--spacing-md);
  padding: var(--spacing-xs);
  padding-left: var(--spacing-sm);
  padding-right: var(--spacing-sm);
}

article {
  display: flex;
  flex-direction: column;
  flex: 1; /* alle Artikel gleich breit und gleich hoch */
  border: 1px solid var(--color-accent);
  background-color: var(--color-primary);
  padding: var(--spacing-lg);
  gap: var(--spacing-lg);
}

article p {
  flex: 1; /* füllt Rest zwischen h3 und unterem Rand */
  border-top: 1px solid var(--color-accent);
  padding-top: var(--spacing-lg);
  margin: auto;
}

article h4 {
  padding: 0;
  margin: 0;
}

.info, .kontakt {
  background-color: var(--color-accent);
}

.kontakt div{
  display: flex;
  flex-direction: column;
}

.kontakt h3 {
  color: var(--color-primary);
}

.kontakt address > div{
  flex-direction: column;
  display: flex;
  gap: var(--spacing-lg);
}

hr {
  margin-top: var(--spacing-lg);
  margin-bottom: var(--spacing-lg);
  background: var(--color-primary);
  height: 1px;
  border: 0px solid var(--color-accent);
}

footer {
  display: flex;
  font-size: var(--font-size-xs);
  justify-content: space-between;
  background-color: var(--color-accent);
  padding-left: var(--spacing-lg);
  padding-right: var(--spacing-lg);
}

footer *{
    color: var(--color-primary);
    padding-bottom: var(--spacing-sm);
}

.no-scroll {
    overflow: hidden;
    /* Verhindert das "Springen" des Inhalts, wenn der Scrollbalken auf Desktop verschwindet */
}

/* Wichtig: Auf manchen mobilen Browsern (insbesondere iOS) muss overflow: hidden 
   explizit auf dem <html>-Element gesetzt werden. */
html.no-scroll {
    overflow: hidden;
    position: fixed; /* Fixiert die Position des Viewports, um das Ziehen zu verhindern */
    width: 100%;     /* Stellt sicher, dass die Breite fixiert ist */
    height: 100%;    /* Stellt sicher, dass die Höhe fixiert ist */
}

/* Ab Desktop-Breite (z. B. 768px) → nebeneinander */
@media (min-width: 768px) {
  /* Hero-Bereich */
  header {
    min-height: 85vh; /* Fast ganze Bildschirmhöhe */
    align-items: end;
  }

  /* Logo */
  header img {
    width: 35%;
    align-self: baseline;
  }

  section > div{
    flex-direction: row;
    width: 80%;
  }

  .leitspruch .textbox {
    text-align: start;
  }

  .herz {
    display: block;
    max-width: 30%;
  }

  .info, .produktauswahl {
    min-height: 70vh;
  }

  .carousel-inner {
    height: 100%;
  }

  .carousel-item{
    height: 100%;
    align-content: center;
  }

  .carousel-item img {
    max-height: 100%;
    max-width: 100%;
    object-fit: contain;
  }

  section .info, section .produktauswahl{
    display: flex;
    gap: var(--spacing-lg);
    margin: auto;
  }

  .kontakt div{
    flex-direction: row;
    width: 80%;
  }

  .kontakt > div > div{
    flex-direction: column;
    border: 1px solid var(--color-font);
    padding: var(--spacing-xl);
    background-color: var(--color-primary);
  }

  .kontakt address > div {
    flex-direction: row-reverse;
    margin-left: auto;
  }

  .kontakt address > div div:nth-child(1) span{
    text-align: end;
  }

  .kontakt address > div div:nth-child(2) span{
    text-align: start;
  }

  .kontakt address > div div {
    flex-direction: column;
  }

  .kontakt div div:nth-of-type(1){
    text-align: start;
  }

  .kontakt div div:nth-of-type(2){
    text-align: end;
  }

  .kontakt h3 {
    color: var(--color-dark);
  }

  .kontakt span{
    white-space: nowrap;
  }

  hr {
    display: none;
  }
}