/**
 * Editorial Modern Template - VOLLSTÄNDIGE KONSOLIDIERTE CSS
 * 
 * Diese Datei enthält ALLE CSS-Regeln aus allen ursprünglichen Dateien:
 * - template.css (Basis-Styles, Typography, Variables)
 * - layout.css (Layout-System, Header, Navigation, Content)
 * - phi-perfect-layout.css (Erweiterte Layout-Optionen)
 * - hero-fix.css (Hero-Bereich-Anpassungen)
 * - custom.css (Custom-Overrides, Listen, Footer)
 * - responsive.css (Mobile/Tablet Anpassungen)
 * - final-overrides.css (Erzwungene Überschriften-Hierarchie)
 * 
 * Version: 1.0 Vollständig Konsolidiert
 * Datum: 16. Februar 2026
 * 
 * WICHTIG: Diese Datei ersetzt ALLE anderen CSS-Dateien!
 */

/**
 * Editorial Modern Template
 * Ein elegantes, modernes Joomla-Template mit Editorial-Design
 */

/* ========================================
   Google Fonts Import
   ======================================== */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700;800;900&family=Crimson+Pro:wght@300;400;500;600&family=Manrope:wght@300;400;500;600;700&display=swap');/* ========================================
   CSS Variables & Theme - Goldener Schnitt
   ======================================== */
:root{
  /* Goldener Schnitt (Phi) */
    --phi: 1.618;
  --phi-inverse: 0.618;
  --phi-squared: 2.618;
  /* Farben - Standardwerte (werden durch Template-Params überschrieben) */
    --color-primary: #2a2a2a;
  --color-secondary: #8b6f47;
  --color-accent: #c49a6c;
  --color-background: #fdfbf7;
  --color-outer: #ffffff;
  --color-surface: #ffffff;
  --color-text: #2a2a2a;
  --color-text-muted: #666666;
  --color-border: #e8e4dd;
  --color-hover: #f5f1eb;
  /* Spezifische Bereichsfarben */
    --header-background: #ffffff;
  --header-text: #2a2a2a;
  --header-border: #e8e4dd;
  --nav-text: #2a2a2a;
  --nav-hover: #8b6f47;
  --nav-active: #c49a6c;
  --content-background: #ffffff;
  --content-text: #2a2a2a;
  --content-link: #8b6f47;
  --footer-background: #ffffff;
  --footer-text: #666666;
  --footer-border: #e8e4dd;
  --footer-title-size: 0.875rem;  /* 14px - Footer-Überschriften */
  --footer-text-size: 1rem;  /* 16px - Footer-Text */
  --footer-bottom-size: 0.875rem;  /* 14px - Copyright-Text */
  --button-background: #8b6f47;
  --button-text: #ffffff;
  --button-hover: #c49a6c;
  /* Typografie - Basiert auf Goldenem Schnitt */
    --font-display: 'Playfair Display', serif;
  --font-body: 'Crimson Pro', serif;
  --font-sans: 'Manrope', sans-serif;
  /* Font-Größen nach Phi-Verhältnis (1.618) */
    --font-size-base: 0.742rem;
  /* Verkleinert! (war: 1rem) */
    --font-size-small: calc(var(--font-size-base) * var(--phi-inverse));
  /* 0.458rem = ~7px */
    --font-size-medium: calc(var(--font-size-base) * var(--phi));
  /* 1.2rem = ~19px ✓ */
    --font-size-large: calc(var(--font-size-base) * var(--phi-squared));
  /* 1.94rem = ~31px */
    --font-size-xlarge: calc(var(--font-size-base) * var(--phi) * var(--phi-squared));
  /* 3.14rem = ~50px */
    --font-size-xxlarge: calc(var(--font-size-base) * var(--phi-squared) * var(--phi-squared));
  /* 5.09rem = ~81px */
    
    /* Zeilenhöhe nach Goldenem Schnitt */
    /*--line-height-tight: var(--phi);
  /*--line-height-normal: var(--phi-squared);
  /*--line-height-relaxed: calc(var(--phi) + 0.2);
  */
    --line-height-tight: 1.0;
  /* Basis */
    --line-height-normal: 1.272;
  /* √φ */
    --line-height-relaxed: 1.618;
  /* φ */
  
    /* Spacing nach Phi - Fibonacci-ähnliche Sequenz */
    --spacing-base: 1rem;
  --spacing-xs: calc(var(--spacing-base) * var(--phi-inverse) * var(--phi-inverse));
  /* 0.382rem */
    --spacing-sm: calc(var(--spacing-base) * var(--phi-inverse));
  /* 0.618rem */
    --spacing-md: var(--spacing-base);
  /* 1rem */
    --spacing-lg: calc(var(--spacing-base) * var(--phi));
  /* 1.618rem */
    --spacing-xl: calc(var(--spacing-base) * var(--phi-squared));
  /* 2.618rem */
    --spacing-xxl: calc(var(--spacing-base) * var(--phi) * var(--phi-squared));
  /* 4.236rem */
    --spacing-xxxl: calc(var(--spacing-base) * var(--phi-squared) * var(--phi-squared));
  /* 6.854rem */
    
    /* Layout - Proportionen nach Goldenem Schnitt */
    --container-width: 1200px;
  --header-height: calc(var(--spacing-base) * 5);
  /* 80px */
    --sidebar-width: calc(var(--container-width) * var(--phi-inverse) / 3);
  /* ~247px */
    --content-width: calc(var(--container-width) - var(--sidebar-width) - var(--spacing-xl));
  /* Border Radius */
    --border-radius-small: 2px;
  --border-radius-medium: calc(var(--border-radius-small) * var(--phi));
  /* ~3.236px */
    --border-radius-large: calc(var(--border-radius-small) * var(--phi-squared));
  /* ~5.236px */
    
    /* Transitions */
    --transition-fast: 0.2s ease;
  --transition-medium: 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  --transition-slow: calc(0.4s * var(--phi)) cubic-bezier(0.4, 0, 0.2, 1);
  /* Schatten nach Phi-Verhältnis */
    --shadow-small: 0 calc(2px * var(--phi-inverse)) calc(8px * var(--phi-inverse)) rgba(0, 0, 0, 0.1);
  --shadow-medium: 0 calc(4px * var(--phi)) calc(16px * var(--phi)) rgba(0, 0, 0, 0.1);
  --shadow-large: 0 calc(8px * var(--phi-squared)) calc(32px * var(--phi-squared)) rgba(0, 0, 0, 0.15);
}/* Dark Theme */
.color-scheme-dark{
  --color-primary: #f5f1eb;
  --color-secondary: #c49a6c;
  --color-accent: #8b6f47;
  --color-background: #1a1a1a;
  --color-surface: #2a2a2a;
  --color-text: #f5f1eb;
  --color-text-muted: #999999;
  --color-border: #3a3a3a;
  --color-hover: #333333;
  /* Dark Theme spezifische Anpassungen */
    --header-background: #2a2a2a;
  --header-text: #f5f1eb;
  --header-border: #3a3a3a;
  --nav-text: #f5f1eb;
  --content-background: #2a2a2a;
  --content-text: #f5f1eb;
  --footer-background: #2a2a2a;
  --footer-text: #999999;
  --footer-border: #3a3a3a;
}/* Goldener Schnitt Hilfsklassen */
.phi-ratio{
  aspect-ratio: 1.618 / 1;
}.phi-inverse-ratio{
  aspect-ratio: 0.618 / 1;
}/* Grid-System basierend auf Goldenem Schnitt */
.grid-phi{
  display: grid;
  grid-template-columns: 1fr calc(var(--phi) * 1fr);
  gap: var(--spacing-lg);
}.grid-phi-inverse{
  display: grid;
  grid-template-columns: calc(var(--phi) * 1fr) 1fr;
  gap: var(--spacing-lg);
}/* ========================================
   Reset & Base Styles
   ======================================== */
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}html{
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  scroll-behavior: smooth;
  overflow-x: hidden;
  /* Verhindert horizontales Scrollen */;
}body{
  font-family: var(--font-body);
  font-size: 1.125rem;
  line-height: 1.8;
  color: var(--color-text);
  background-color: var(--color-outer);
  font-weight: 400;
  overflow-x: hidden;
  /* Verhindert horizontales Scrollen */;
}/* ========================================
   Typography - Basierend auf Goldenem Schnitt
   ======================================== */
h1, h2, h3, h4, h5, h6{
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.2;
  margin-bottom: 1.25rem;
  margin-top: 1.5rem;
  color: var(--color-primary);
}

/* Optimale typografische Skala für beste Lesbarkeit */
/* Alle Überschriften sind responsiv und passen sich an die Bildschirmbreite an */

h1{
  font-size: clamp(1.5rem, 2.5vw + 0.75rem, 2.25rem);  /* 24px → 36px (2 Stufen kleiner) */
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.2;
  margin-bottom: 1.25rem;
  margin-top: 1.5rem;
}

h2{
  font-size: clamp(1.25rem, 2vw + 0.625rem, 1.875rem);  /* 20px → 30px (2 Stufen kleiner) */
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1.3;
  margin-bottom: 1rem;
  margin-top: 1.25rem;
}

h3{
  font-size: clamp(1.125rem, 1.5vw + 0.5rem, 1.5rem);  /* 18px → 24px (2 Stufen kleiner) */
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.4;
  margin-bottom: 0.875rem;
  margin-top: 1rem;
}

h4{
  font-size: clamp(1rem, 1vw + 0.5rem, 1.25rem);  /* 16px → 20px (2 Stufen kleiner) */
  font-weight: 600;
  letter-spacing: -0.005em;
  line-height: 1.5;
  margin-bottom: 0.75rem;
  margin-top: 0.875rem;
}

h5{
  font-size: clamp(0.875rem, 0.75vw + 0.5rem, 1.125rem);  /* 14px → 18px (2 Stufen kleiner) */
  font-weight: 600;
  line-height: 1.5;
  margin-bottom: 0.625rem;
  margin-top: 0.75rem;
}

h6{
  font-size: clamp(0.75rem, 0.5vw + 0.5rem, 1rem);  /* 12px → 16px (2 Stufen kleiner) */
  font-weight: 600;
  line-height: 1.6;
  margin-bottom: 0.5rem;
  margin-top: 0.625rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}p{
  margin-bottom: var(--spacing-lg);
  line-height: var(--line-height-normal);
  color: var(--content-text, var(--color-text));
}/* Optimale Zeilenlänge nach Goldenem Schnitt: 45-75 Zeichen
   Nur außerhalb der strukturierten Layout-Bereiche anwenden */
p{
  max-width: calc(var(--font-size-base) * 45);
}

/* Innerhalb der Content-Area (zwischen Sidebars) vollen Platz nutzen */
.content-area p,
.item-page p,
.com-content-article p,
.blog p,
.blog-featured p,
.main-top p,
.main-bottom p {
  max-width: none;
}

/* Listen sollen NICHT in eine schmale Lesespalte gezwungen werden.
   Sonst rutschen Marker optisch "außerhalb" der Textspalte – besonders wenn <p> in <li> steckt. */
.item-page ul,
.item-page ol,
.com-content-article ul,
.com-content-article ol{
  padding-left: 1.6rem;         /* leichte Einrückung */
  margin-left: 0;
  list-style-position: outside;
}

.item-page li,
.com-content-article li{
  max-width: none;               /* keine künstliche Lesebreite für Listenitems */
}

/* Falls der Editor <p> innerhalb <li> erzeugt: keine eigene Lesespalte/Auto-Zentrierung */
.item-page li > p,
.com-content-article li > p{
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  margin-bottom: 0.35rem;        /* etwas Luft, aber nicht wie Absätze */
}
.lead, .intro{
  font-size: var(--font-size-medium);
  line-height: var(--line-height-relaxed);
  margin-bottom: calc(var(--spacing-lg) * var(--phi));
}blockquote{
  font-size: var(--font-size-medium);
  line-height: var(--line-height-relaxed);
  font-style: italic;
  margin: calc(var(--spacing-lg) * var(--phi)) 0;
  padding-left: calc(var(--spacing-lg) * var(--phi));
  border-left: calc(var(--spacing-xs) * var(--phi)) solid var(--color-secondary);
  color: var(--color-text-muted);
}small, .small-text{
  font-size: var(--font-size-small);
}a{
  color: var(--content-link, var(--color-secondary));
  text-decoration: none;
  transition: color var(--transition-fast);
  position: relative;
}a:hover{
  color: var(--color-accent);
}a:not(.btn)::after{
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 1px;
  background-color: var(--color-accent);
  transition: width var(--transition-medium);
}a:not(.btn):hover::after{
  width: 100%;
}/* ========================================
   Module Styles
   ======================================== */
.moduletable,
.module{
  margin-bottom: var(--spacing-md);
}.moduletable h3,
.module h3{
  font-size: 1.5rem;
  margin-bottom: var(--spacing-sm);
  padding-bottom: var(--spacing-sm);
  border-bottom: 2px solid var(--color-secondary);
  position: relative;
}.moduletable h3::after,
.module h3::after{
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 60px;
  height: 2px;
  background-color: var(--color-accent);
}/* Card Style */
.moduletable-card,
.module-card{
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  padding: var(--spacing-md);
  transition: all var(--transition-medium);
}.moduletable-card:hover,
.module-card:hover{
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.05);
  transform: translateY(-2px);
}/* ========================================
   Article Styles
   ======================================== */
.item-page,
.blog,
article{
  background-color: var(--content-background, var(--color-surface));
  padding: calc(var(--spacing-lg) * var(--phi));
  border: 1px solid var(--color-border);
  margin-bottom: var(--spacing-xl);
}article header{
  margin-bottom: calc(var(--spacing-lg) * var(--phi));
  padding-bottom: var(--spacing-lg);
  border-bottom: 1px solid var(--color-border);
}.page-header h1,
.page-header h2,
article h1,
article h2{
  margin-bottom: var(--spacing-lg);
}article img{
  max-width: 100%;
  height: auto;
  display: block;
  margin: calc(var(--spacing-lg) * var(--phi)) 0;
  box-shadow: var(--shadow-small);
}/* Optimale Bildproportionen nach Goldenem Schnitt */
article img.featured,
article img.hero{
  aspect-ratio: var(--phi) / 1;
  object-fit: cover;
}.article-info{
  font-family: var(--font-sans);
  font-size: var(--font-size-small);
  color: var(--color-text-muted);
  display: flex;
  gap: var(--spacing-lg);
  flex-wrap: wrap;
}.article-info dd{
  margin-left: 0;
}/* ========================================
   Footer
   ======================================== */
.site-footer{
  background-color: var(--footer-background, var(--color-surface));
  border-top: 1px solid var(--footer-border, var(--color-border));
  padding: 0 0 var(--spacing-lg);
  margin-top: 0;
  color: var(--footer-text, var(--color-text-muted));
}/* Footer Inhalt (template-gesteuert) */
.footer-grid{
  display: grid;
  gap: var(--spacing-xl);
  margin: 0; /* kein zusätzlicher Abstand vor footer-bottom */
  padding: 0;
}
.footer-cols-2{ grid-template-columns: 1.2fr 1fr; }
.footer-cols-3{ grid-template-columns: 1.2fr 1fr 1fr; }

.footer-title{
  font-family: var(--font-sans);
  font-weight: 600;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  font-size: var(--font-size-small);
  margin: 0 0 12px 0;
  color: var(--footer-text-strong, var(--color-text));
}

.footer-text{
  font-family: var(--font-body);
  color: var(--footer-text, var(--color-text-muted));
  line-height: 1.7;
}

.footer-links,
.footer-contact-list{
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-links li,
.footer-contact-list li{
  margin: 0 0 8px 0;
}

.footer-links a,
.footer-contact-list a{
  color: var(--footer-link, var(--footer-text, var(--color-text-muted)));
  text-decoration: none;
}

.footer-links a:hover,
.footer-contact-list a:hover{
  color: var(--footer-link-hover, var(--color-text));
  text-decoration: underline;
}
.footer-bottom{
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 12px;
  border-top: 1px solid var(--footer-border, var(--color-border));
  font-family: var(--font-sans);
  font-size: var(--font-size-small);
  color: var(--footer-text, var(--color-text-muted));
}.footer-bottom p{
  margin: 0;
}.footer-bottom a{
  color: var(--footer-text, var(--color-text-muted));
}.footer-bottom a:hover{
  color: var(--color-secondary);
}/* ========================================
   Forms
   ======================================== */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="search"],
input[type="url"],
input[type="tel"],
input[type="number"],
textarea,
select{
  width: 100%;
  padding: var(--spacing-sm);
  border: 1px solid var(--color-border);
  background-color: var(--color-surface);
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: 1rem;
  transition: all var(--transition-fast);
}input:focus,
textarea:focus,
select:focus{
  outline: none;
  border-color: var(--color-secondary);
  box-shadow: 0 0 0 3px rgba(139, 111, 71, 0.1);
}textarea{
  min-height: 150px;
  resize: vertical;
}/* Buttons */
.btn,
button[type="submit"],
input[type="submit"],
.button{
  display: inline-block;
  padding: var(--spacing-sm) calc(var(--spacing-lg) * var(--phi));
  background-color: var(--button-background, var(--color-secondary));
  color: var(--button-text, var(--color-surface));
  border: none;
  border-radius: var(--border-radius-small);
  font-family: var(--font-sans);
  font-size: var(--font-size-small);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: all var(--transition-medium);
  position: relative;
  overflow: hidden;
}.btn::after{
  display: none;
}.btn::before{
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.2);
  transform: translate(-50%, -50%);
  transition: width var(--transition-medium), height var(--transition-medium);
}.btn:hover::before{
  width: calc(var(--spacing-base) * 18.75);
  height: calc(var(--spacing-base) * 18.75);
}.btn:hover{
  background-color: var(--button-hover, var(--color-accent));
  transform: translateY(calc(var(--spacing-xs) * -0.5));
  box-shadow: 0 calc(var(--spacing-xs) * var(--phi)) calc(var(--spacing-md) * var(--phi)) 
        rgba(139, 111, 71, 0.3);
}/* ========================================
   Alerts & Messages
   ======================================== */
.alert,
#system-message-container .alert{
  padding: var(--spacing-sm) var(--spacing-md);
  margin-bottom: var(--spacing-md);
  border-left: 4px solid;
  background-color: var(--color-surface);
}.alert-success{
  border-color: #4caf50;
  color: #2e7d32;
}.alert-info{
  border-color: #2196f3;
  color: #1565c0;
}.alert-warning{
  border-color: #ff9800;
  color: #e65100;
}.alert-error,
.alert-danger{
  border-color: #f44336;
  color: #c62828;
}/* ========================================
   Pagination
   ======================================== */
.pagination{
  display: flex;
  justify-content: center;
  gap: var(--spacing-xs);
  margin: var(--spacing-lg) 0;
  font-family: var(--font-sans);
}.pagination li{
  list-style: none;
}.pagination a,
.pagination span{
  display: block;
  padding: var(--spacing-xs) var(--spacing-sm);
  border: 1px solid var(--color-border);
  color: var(--color-text);
  transition: all var(--transition-fast);
}.pagination a::after{
  display: none;
}.pagination a:hover{
  background-color: var(--color-secondary);
  border-color: var(--color-secondary);
  color: var(--color-surface);
}.pagination .active span{
  background-color: var(--color-secondary);
  border-color: var(--color-secondary);
  color: var(--color-surface);
}/* ========================================
   Utility Classes
   ======================================== */
.text-center{
  text-align: center;
}.text-right{
  text-align: right;
}.mt-0{
  margin-top: 0;
}.mt-1{
  margin-top: var(--spacing-sm);
}.mt-2{
  margin-top: var(--spacing-md);
}.mt-3{
  margin-top: var(--spacing-lg);
}.mb-0{
  margin-bottom: 0;
}.mb-1{
  margin-bottom: var(--spacing-sm);
}.mb-2{
  margin-bottom: var(--spacing-md);
}.mb-3{
  margin-bottom: var(--spacing-lg);
}.hidden{
  display: none;
}/* ========================================
   Print Styles
   ======================================== */
@media print{
  .site-header,
    .site-navigation,
    .menu-toggle,
    .sidebar,
    .site-footer,
    .pagination,
    .btn {
        display: none !important;
  }
    
    body {
        background: white;
  color: black;
  }
    
    a {
        text-decoration: underline;
  };
}/* --- Template Hardening: Hero boxed & no gap to content --- */
.hero-section{
  margin: 0;
}.hero-section > .container{
  padding-top: 0;
  padding-bottom: 0;
}.site-main{
  margin-top: 0;
}/* Header/Hero stacking safety */
.site-header{
  z-index: 2000;
}.hero-section{
  position: relative;
  z-index: 1;
}/* --- HERO volle Layoutbreite (Layout = --container-width, nicht Viewport) ---
   Das Bild/Hintergrund kommt aus dem Joomla-Modul in der Position "hero".
*/
.hero-section.hero-full{
  width: 100%;
  margin: 0;
  padding: 0;
}/* Hero nutzt die Layoutbreite (wie .container), aber ohne Template-Container-Kopplung */
.hero-section.hero-full > .hero-container{
  width: 100%;
  max-width: var(--container-width);
  margin: 0 auto;
  padding: 0;
}/* Falls das Modul ein <img> ausgibt: */
.hero-section.hero-full img{
  display: block;
  width: 100%;
  height: auto;
}/* --- HERO: Modul-Wrapper immer 100% Breite (verhindert "rechts bleibt frei") --- */
.hero-section.hero-full > .hero-container > *{
  width: 100%;
  max-width: 100%;
}.hero-section.hero-full .moduletable,
.hero-section.hero-full .module,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom{
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 0;
}/* Falls das Bild als Background in einem inneren Wrapper liegt */
.hero-section.hero-full [style*="background"]{
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}/* --- HERO Strong Force: alles im Hero wirklich 100% Layoutbreite --- */
.hero-section.hero-full .hero-container{
  display: block;
}/* Häufige Ursache: Modul/Custom-HTML rendert inline/auto-width -> erzwingen */
.hero-section.hero-full .hero-container > *{
  display: block !important;
  width: 100% !important;
  max-width: none !important;
}/* Joomla-Module Wrapper (verschiedene Renderer) */
.hero-section.hero-full .moduletable,
.hero-section.hero-full .moduletable > *,
.hero-section.hero-full .module,
.hero-section.hero-full .module > *,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom,
.hero-section.hero-full .custom > *{
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  float: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}/* Bilder niemals durch max-width oder inline sizing begrenzen */
.hero-section.hero-full img{
  width: 100% !important;
  max-width: none !important;
  height: auto !important;
}/* Wenn irgendwo text-align:center wirkt, kann das Layout "komisch" aussehen */
.hero-section.hero-full .moduletable,
.hero-section.hero-full .module,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom{
  text-align: left !important;
}/* --- HERO Layoutkante exakt treffen: Container-Padding + Modul-Bleed --- */
/* hero-container wie .container (Layoutbreite + Innenpadding) */
.hero-section.hero-full > .hero-container{
  max-width: var(--container-width);
  margin: 0 auto;
  padding-left: var(--spacing-md);
  padding-right: var(--spacing-md);
}/* Modul/Hintergrund soll bis zur äußeren Layoutkante (inkl. Padding) reichen */
.hero-section.hero-full > .hero-container > *{
  margin-left: calc(-1 * var(--spacing-md)) !important;
  margin-right: calc(-1 * var(--spacing-md)) !important;
  width: calc(100% + (2 * var(--spacing-md))) !important;
  max-width: none !important;
}/* --- HERO Fix: verschachteltes .container im Hero-Modul darf NICHT erneut begrenzen --- */
.hero-section.hero-full .hero-container .container{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}/* Inhalt im Hero weiterhin sauber zentrieren (optional) */
.hero-section.hero-full .hero-container .hero-content{
  max-width: var(--container-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
}/* --- HERO Fix (final): innerer .container im Hero-Modul darf NICHT begrenzen --- */
/* Trifft deinen konkreten DOM: <div id="mod-custom110" class="mod-custom custom"><div class="container"> ... */
.hero-section.hero-full #mod-custom110 > .container,
.hero-section.hero-full .mod-custom.custom > .container{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  /* Hintergrund soll bis zur Layoutkante reichen */
    box-sizing: border-box;
}/* Inhalt weiterhin sauber im Layout zentrieren */
.hero-section.hero-full .mod-custom.custom > .container > .hero-content{
  max-width: var(--container-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
  box-sizing: border-box;
}/* Falls der Hintergrund auf dem inneren Container liegt */
.hero-section.hero-full .mod-custom.custom > .container{
  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
}/* --- HERO Background bis zur Layoutkante (inkl. Layout-Padding) ---
   Hintergrund sitzt typischerweise auf dem Modul-Wrapper (.mod-custom.custom).
   Wir halten den Hero in Layoutbreite (max-width), aber lassen den Modul-Wrapper
   in das Container-Padding "bluten", damit links/rechts keine helle Kante bleibt.
*/
.hero-section.hero-full > .hero-container{
  width: 100%;
  max-width: var(--container-width);
  margin: 0 auto;
  padding-left: var(--spacing-md);
  padding-right: var(--spacing-md);
  box-sizing: border-box;
}/* Modul-Wrapper wird auf volle Layoutkante erweitert */
.hero-section.hero-full > .hero-container > .mod-custom.custom,
.hero-section.hero-full > .hero-container > .module,
.hero-section.hero-full > .hero-container > .moduletable{
  margin-left: calc(-1 * var(--spacing-md)) !important;
  margin-right: calc(-1 * var(--spacing-md)) !important;
  width: calc(100% + (2 * var(--spacing-md))) !important;
  max-width: none !important;
  box-sizing: border-box !important;
}/* Falls der Hintergrund über Pseudo-Elemente kommt */
.hero-section.hero-full > .hero-container > .mod-custom.custom::before,
.hero-section.hero-full > .hero-container > .mod-custom.custom::after{
  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
}/* Falls der Hintergrund direkt auf dem Wrapper liegt */
.hero-section.hero-full > .hero-container > .mod-custom.custom{
  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
}/* =========================================================
   HERO (boxed): Hero liegt im .container und nutzt dessen Layoutbreite
   ========================================================= */
.hero-section.hero-full{
  width: 100%;
  margin: 0;
  padding: 0;
  background-color: #fff;
  /* Seam-Fix bei sehr hellem PNG */;
}.hero-section.hero-full .mod-custom.custom,
.hero-section.hero-full .module,
.hero-section.hero-full .moduletable{
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 0;
  background-color: #fff;
  /* Seam-Fix */;
}/* =========================================================
   HERO im Grid: über Sidebar1 + Content + Sidebar2 spannen
   ========================================================= */
.content-wrapper.has-sidebar .hero-section.hero-in-grid{
  grid-column: 1 / -1;
  width: 100%;
  margin: 0 0 var(--spacing-lg) 0;
  padding: 0;
  background-color: #fff;
  /* Seam-Fix */;
}.content-wrapper.has-sidebar .hero-section.hero-in-grid .mod-custom.custom,
.content-wrapper.has-sidebar .hero-section.hero-in-grid .module,
.content-wrapper.has-sidebar .hero-section.hero-in-grid .moduletable{
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 0;
  background-color: #fff;
}/* =========================================================
   HERO (clean): spannt über Sidebar1 + Content + Sidebar2
   - Hero-Section im Grid: grid-column: 1 / -1
   - Keine Phi-Begrenzung im Hero (volle Breite für Background)
   - Innerer .container im Hero-Modul neutralisieren
   ========================================================= */

/* 1) Hero im 3-Spalten-Grid über alle Spalten ziehen */
.content-wrapper .hero-section.hero-full{
  grid-column: 1 / -1;
}/* 2) Falls Joomla/Module einen inneren .container ausgeben: nicht erneut begrenzen */
.content-wrapper .hero-section.hero-full .container{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
}/* 3) Hero-Content im Hero darf nicht durch Phi-Formel beschnitten werden */
.content-wrapper .hero-section.hero-full .hero-content{
  width: 100% !important;
  max-width: none !important;
  margin: 0 auto !important;
  text-align: center !important;
}/* 4) Module Wrapper im Hero: volle Breite + saubere Background-Defaults */
.content-wrapper .hero-section.hero-full .mod-custom.custom,
.content-wrapper .hero-section.hero-full .module,
.content-wrapper .hero-section.hero-full .moduletable{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
}/* 5) Optional: helle PNG-Fades sollen nicht "beige" wirken */
.content-wrapper .hero-section.hero-full{
  background-color: #fff !important;
}/* =========================================================
   LAYOUT: keine Zwischenräume zwischen Sidebars und Content
   (grün markierte Bereiche entfernen)
   ========================================================= */

/* Standard: Seiten mit Sidebars sollen ohne Grid-Gap laufen */
.content-wrapper.has-sidebar,
.content-wrapper.has-sidebar-left,
.content-wrapper.has-sidebar-right{
  gap: 0 !important;
}/* Falls irgendwo explizit column/row-gap gesetzt wurde */
.content-wrapper.has-sidebar,
.content-wrapper.has-sidebar-left,
.content-wrapper.has-sidebar-right{
  column-gap: 0 !important;
  row-gap: 0 !important;
}/* Sicherheit: Sidebars nicht durch zusätzliche Außenabstände absetzen */
.content-wrapper.has-sidebar .sidebar,
.content-wrapper.has-sidebar-left .sidebar,
.content-wrapper.has-sidebar-right .sidebar{
  margin: 0 !important;
}/* Optional: Content-Area keine Außenmargen, damit sie direkt anliegt */
.content-wrapper.has-sidebar .content-area,
.content-wrapper.has-sidebar-left .content-area,
.content-wrapper.has-sidebar-right .content-area{
  margin: 0 !important;
}/* =========================================================
   LAYOUT: keine Zwischenräume zwischen Sidebars und Content
   (grün markierte Bereiche entfernen)
   ========================================================= */

/* Standard: Seiten mit Sidebars sollen ohne Grid-Gap laufen */
.content-wrapper.has-sidebar,
.content-wrapper.has-sidebar-left,
.content-wrapper.has-sidebar-right{
  
}/* Falls irgendwo explizit column/row-gap gesetzt wurde */
.content-wrapper.has-sidebar,
.content-wrapper.has-sidebar-left,
.content-wrapper.has-sidebar-right{
  
}/* Sicherheit: Sidebars nicht durch zusätzliche Außenabstände absetzen */
.content-wrapper.has-sidebar .sidebar,
.content-wrapper.has-sidebar-left .sidebar,
.content-wrapper.has-sidebar-right .sidebar{
  
}/* Optional: Content-Area keine Außenmargen, damit sie direkt anliegt */
.content-wrapper.has-sidebar .content-area,
.content-wrapper.has-sidebar-left .content-area,
.content-wrapper.has-sidebar-right .content-area{
  
}/* =========================================
   PATCH: Layout ohne Rahmen + volle Hintergrundhöhe
   (gefügt von ChatGPT)
   ========================================= */
/* --- Option C: Content-Spalte ohne Innenabstand, aber Artikel mit definierter Innenluft --- */
.content-area{
  padding: 0 !important;
}.content-area .item-page,
.content-area .blog,
.content-area .blog-featured,
.content-area .com-content-article,
.content-area article{
  padding: var(--spacing-md) !important;
  box-sizing: border-box;
}/* --- Keine Rahmen / keine Schatten (Content, Sidebars, Module, Artikel) --- */
/* Hauptcontainer ohne Rahmen */
.content-area,
.sidebar,
.moduletable-card,
.content-area .item-page,
.content-area .blog,
.content-area .blog-featured,
.content-area .com-content-article,
.content-area .com-content-article__body,
.content-area article,
article.item-page,
article.com-content-article,
.item-page,
.com-content-article,
.blog-item,
.page-header,
.content-area > div,
.content-area > section{
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
}

/* Tabellen dürfen Rahmen haben */
.content-area table{
  border-collapse: collapse;
  border: 1px solid var(--color-border) !important;
}

.content-area table td,
.content-area table th{
  border: 1px solid var(--color-border) !important;
  padding: var(--spacing-sm);
}

/* Blockquotes dürfen border-left haben */
.content-area blockquote{
  border-left: calc(var(--spacing-xs) * var(--phi)) solid var(--color-secondary) !important;
}

/* HR dürfen Border haben */
.content-area hr{
  border: none;
  border-top: 1px solid var(--color-border) !important;
}/* --- Einheitlicher Hintergrund über die komplette Höhe der Layout-Spalten --- */
/* Der Wrapper trägt die Fläche, Spalten selbst sind transparent. Dadurch endet die Farbe nicht an den Modulen. */
.site-main{
  min-height: 100vh;
}.site-main .content-wrapper.has-sidebar,
.site-main .content-wrapper.has-sidebar-left,
.site-main .content-wrapper.has-sidebar-right{
  background: var(--content-background, var(--color-surface)) !important;
}.site-main .content-wrapper.has-sidebar > .sidebar,
.site-main .content-wrapper.has-sidebar > .content-area,
.site-main .content-wrapper.has-sidebar-left > .sidebar,
.site-main .content-wrapper.has-sidebar-left > .content-area,
.site-main .content-wrapper.has-sidebar-right > .sidebar,
.site-main .content-wrapper.has-sidebar-right > .content-area{
  background: transparent !important;
}/* =========================================
   Startseite (Itemid 105): Titel-Links in Listenansichten neutralisieren (Fallback)
   Primär soll der Menüpunkt auf "Beiträge → Einzelner Beitrag" stehen.
   Wenn dennoch Blog/Featured gerendert wird, verhindert dies das "Titel ist Link"-Verhalten.
   ========================================= */
body.itemid-105 .com-content-featured .page-header a,
body.itemid-105 .com-content-category-blog .page-header a,
body.itemid-105 .blog-items .page-header a,
body.itemid-105 .items-leading .page-header a,
body.itemid-105 .items-row .page-header a,
body.itemid-105 article .page-header a{
  pointer-events: none;
  cursor: text;
  text-decoration: none;
  color: inherit;
}/* --- Rechtes (und ggf. linkes) Menü: Standard-Einzüge/Bullets entfernen, damit Sidebars optisch gleich wirken --- */
/* Wichtig: Diese Regeln betreffen NUR Sidebars, nicht den Content-Bereich */
.sidebar ul:not(.content-area ul):not(.item-page ul):not(.com-content-article ul),
.sidebar .mod-menu ul{
  list-style: none !important;
  padding-left: 0 !important;
  margin-left: 0 !important;
}
.sidebar li:not(.content-area li):not(.item-page li):not(.com-content-article li){
  margin-left: 0 !important;
  padding-left: 0 !important;
}/* === TYPO: FORCE ARTICLE TITLES SMALLER (Joomla 5) === */
/* NUR die Artikel-Überschrift, NICHT alle H1/H2 im Content */
.content-area > .page-header h1,
.content-area .page-title,
.content-area > .page-header .page-title,
.content-area .com-content-article__title,
.content-area .item-title,
.content-area .blog-item-title,
.content-area .blog-item .page-header h2,
.content-area .blog-item h2.item-title,
.content-area > article > .page-header h1,
.content-area > .item-page > .page-header h1{
  font-size: clamp(1.85rem, 2.2vw, 2.45rem) !important;
  line-height: 1.18 !important;
  margin: 0 0 0.85rem 0 !important;
  letter-spacing: -0.02em !important;
  font-weight: 600 !important;
}

/* Blog overview titles a bit smaller */
.content-area .blog-item h2.item-title,
.content-area .blog h2.item-title,
.content-area .blog-featured h2.item-title{
  font-size: clamp(1.35rem, 1.6vw, 1.75rem) !important;
  line-height: 1.25 !important;
  margin: 0 0 0.75rem 0 !important;
  letter-spacing: -0.01em !important;
}

/* === TECH-CLEAN TYPO SYSTEM === */
/* HERO */
.hero h1{
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.1;
}

/* Body text */
.content-area{
  font-size: 1.05rem;
  line-height: 1.7;
}/* Links: tech-clean underline */
.content-area a{
  text-decoration: none;
  border-bottom: 1px solid rgba(0,0,0,0.25);
  transition: border-color .2s ease;
}.content-area a:hover{
  border-bottom-color: rgba(0,0,0,0.6);
}/* === ARTICLE NAVIGATION VARIANTE C (Tech-clean text links) === */
/* Remove old box/button styles */
.content-area .pagenavigation,
.content-area nav.pagenavigation,
.content-area .com-content-article__navigation{
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin-top: 2rem;
}/* Links as clean text links */
.content-area .pagenavigation a,
.content-area .com-content-article__navigation a{
  display: inline-block;
  padding: 0;
  margin-right: 1.5rem;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(0,0,0,.25);
  transition: border-color .2s ease, opacity .2s ease;
}/* Hover effect */
.content-area .pagenavigation a:hover,
.content-area .com-content-article__navigation a:hover{
  border-bottom-color: rgba(0,0,0,.65);
  opacity: .85;
}/* Optional arrow for "Zurück" */
.content-area a[rel="prev"]::before,
.content-area a[rel="up"]::before{
  content: "← ";
  font-weight: 700;
}


/* Logo (Template-Parameter) */
.logo-link{display:inline-flex;align-items:center;gap:var(--brand-gap,12px);text-decoration:none;}

.brand-text{display:flex;flex-direction:column;line-height:1.1;}
.brand-title{font-size:var(--brand-title-size,0.95rem);font-weight:600;letter-spacing:0.2px;}
.brand-tagline{font-size:var(--brand-tagline-size,0.75rem);opacity:0.8;}

.logo-img{height:var(--logo-height,42px);width:auto;display:block;}




/* Footer responsive */
@media (max-width: 900px){
  .footer-cols-2, .footer-cols-3{ grid-template-columns: 1fr; }
}

/* Global UL/OL margins are risky because they also affect menus/modules.
   Keep list rhythm scoped to the article/content area. */
.content-area ul,
.content-area ol{
  margin-top: 0.35rem;
  margin-bottom: var(--spacing-lg);
}
/* ========================================
   Layout Components
   ======================================== */
.container{
  max-width: var(--container-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
}.page-wrapper{
  /* "Papier"-Bereich nur innerhalb des Layouts */
  max-width: var(--container-width);
  margin: 0 auto;
  background: var(--color-background);
  border-left: 1px solid rgba(0,0,0,0.06);
  border-right: 1px solid rgba(0,0,0,0.06);
  box-shadow: 0 10px 30px rgba(0,0,0,0.06);
  display: flex;
  flex-direction: column;
  min-height: auto;
  opacity: 0;
  animation: fadeIn var(--transition-slow) forwards;
}@keyframes fadeIn{
to{
  opacity: 1;
}

}/* ========================================
   Header
   ======================================== */
.site-header{
  position: sticky;
  top: 0;
  z-index: 1000;
  background-color: var(--header-background, var(--color-surface));
  border-bottom: 1px solid var(--header-border, var(--color-border));
  transition: all var(--transition-medium);
  animation: slideDown var(--transition-slow) ease-out;
}@keyframes slideDown{
from{
  transform: translateY(-100%);
}to{
  transform: translateY(0);
}

}.site-header.header-transparent{
  background-color: transparent;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  position: sticky;
  /* bleibt im Dokumentfluss -> Hero startet darunter */
    top: 0;
  width: 100%;
}.header-inner{
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: var(--header-height);
  gap: var(--spacing-lg);
}.site-logo{
  flex-shrink: 0;
}.logo-text{
  font-family: var(--font-display);
  font-size: var(--font-size-medium);
  font-weight: 800;
  color: var(--header-text, var(--color-primary));
  letter-spacing: -0.02em;
  transition: color var(--transition-fast);
}.site-logo a:hover .logo-text{
  color: var(--nav-hover, var(--color-secondary));
}.site-logo a::after{
  display: none;
}/* Navigation */
.site-navigation{
  flex-grow: 1;
  display: flex;
  justify-content: flex-end;
}.menu-toggle{
  display: none;
  flex-direction: column;
  gap: calc(var(--spacing-xs) * var(--phi));
  background: none;
  border: none;
  cursor: pointer;
  padding: var(--spacing-xs);
}.menu-toggle span{
  display: block;
  width: calc(var(--spacing-base) * 1.75);
  height: 2px;
  background-color: var(--nav-text, var(--color-primary));
  transition: all var(--transition-fast);
}.nav-wrapper ul{
  display: flex;
  list-style: none;
  gap: var(--spacing-lg);
  align-items: center;
}.nav-wrapper li{
  position: relative;
}.nav-wrapper a{
  font-family: var(--font-sans);
  font-size: var(--font-size-small);
  font-weight: 500;
  color: var(--nav-text, var(--color-text));
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: var(--spacing-xs);
  transition: color var(--transition-fast);
}.nav-wrapper a::after{
  bottom: 0;
  background-color: var(--nav-active, var(--color-accent));
}.nav-wrapper a:hover,
.nav-wrapper li.active > a{
  color: var(--nav-hover, var(--color-secondary));
}/* Dropdown Menu */
.nav-wrapper li ul{
  position: absolute;
  top: 100%;
  left: 0;
  background-color: var(--header-background, var(--color-surface));
  border: 1px solid var(--header-border, var(--color-border));
  padding: var(--spacing-sm);
  min-width: calc(var(--spacing-base) * 12.5);
  opacity: 0;
  visibility: hidden;
  transform: translateY(calc(var(--spacing-sm) * -1));
  transition: all var(--transition-medium);
  box-shadow: var(--shadow-medium);
}.nav-wrapper li:hover > ul{
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}.nav-wrapper li ul li{
  display: block;
}.nav-wrapper li ul a{
  display: block;
  padding: var(--spacing-xs) var(--spacing-sm);
  text-transform: none;
}/* ========================================
   Hero Section
   ======================================== */
.hero-section{
  padding: 0;
  background: linear-gradient(135deg, var(--color-background) 0%, var(--color-hover) 100%);
  position: relative;
  overflow: hidden;
}.hero-section::before{
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, transparent 48%, var(--color-border) 49%, var(--color-border) 51%, transparent 52%),
        linear-gradient(-45deg, transparent 48%, var(--color-border) 49%, var(--color-border) 51%, transparent 52%);
  background-size: 60px 60px;
  opacity: 0.03;
  pointer-events: none;
}.hero-section .container{
  position: relative;
  z-index: 1;
}/* ========================================
   Main Content
   ======================================== */
.site-main{
  flex: 1;
  padding: 0 0 var(--spacing-lg) 0;
}.main-top{
  margin-bottom: var(--spacing-lg);
  animation: fadeInUp var(--transition-slow) ease-out 0.2s both;
}@keyframes fadeInUp{
from{
  opacity: 0;
  transform: translateY(30px);
}to{
  opacity: 1;
  transform: translateY(0);
}

}.content-wrapper{
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--spacing-xl);
  animation: fadeInUp var(--transition-slow) ease-out 0.4s both;
}/* =========================================================
   Layout: Keine Lücke zwischen Sidebars und Content
   (entfernt das sichtbare "Gutter" zwischen den Spalten)
   ========================================================= */
.content-wrapper.has-sidebar,
.content-wrapper.has-sidebar-left,
.content-wrapper.has-sidebar-right{
  gap: 0;
  column-gap: 0;
  row-gap: 0;
  align-items: stretch;
  /* Spalten ohne "Luft" auf gleicher Höhe */;
}/* =========================================================
   Sidebars bündig an den Content (kein "Zwischenraum" sichtbar)
   Ursache: Sidebars waren transparent (Seiten-Background scheint durch).
   Lösung: Sidebars bekommen die gleiche Fläche wie Content + Rahmen.
   Zusätzlich entfernen wir die innenliegenden Content-Rahmen, damit
   zwischen den Spalten keine doppelte Border entsteht.
   ========================================================= */

.content-wrapper.has-sidebar .sidebar,
.content-wrapper.has-sidebar-left .sidebar,
.content-wrapper.has-sidebar-right .sidebar{
  background-color: var(--content-background, var(--color-surface));
  border: 1px solid var(--color-border);
  padding: 0;
  /* keine Innenkanten als "Abstand" */;
}/* Content-Rahmen dort entfernen, wo Sidebars angrenzen */
.content-wrapper.has-sidebar .content-area{
  border-left: 0 !important;
  border-right: 0 !important;
}.content-wrapper.has-sidebar-left .content-area{
  border-left: 0 !important;
}.content-wrapper.has-sidebar-right .content-area{
  border-right: 0 !important;
}/* 3-Spalten-Layout: Sidebar links (15%) + Content (70%) + Sidebar rechts (15%) */
.content-wrapper.has-sidebar{
  /* Use fr tracks + minmax(0, …) so sidebars don't "grow" because of
       grid item's default min-width: auto (e.g. long labels/login forms).
       Keeps a true 15/70/15 ratio at all times.
    */
    grid-template-columns: minmax(0, 15fr) minmax(0, 70fr) minmax(0, 15fr);
}/* Nur linke Sidebar (15% + 85%) */
.content-wrapper.has-sidebar-left{
  grid-template-columns: minmax(0, 15fr) minmax(0, 85fr);
}/* Nur rechte Sidebar (85% + 15%) */
.content-wrapper.has-sidebar-right{
  grid-template-columns: minmax(0, 85fr) minmax(0, 15fr);
}.content-area{
  min-width: 0;
  background-color: var(--content-background, var(--color-surface));
  padding: calc(var(--spacing-lg) * var(--phi));
  border: 0;
  color: var(--content-text, var(--color-text));
}.sidebar{
  position: sticky;
  top: calc(var(--header-height) + var(--spacing-lg));
  height: fit-content;
  min-width: 0;
  /* allow the grid column to shrink (prevents "sidebar grows") */;
}.sidebar-right{
  grid-column: 3;
}.main-bottom{
  margin-top: var(--spacing-lg);
  animation: fadeInUp var(--transition-slow) ease-out 0.6s both;
}/* =========================================================
   HERO: Hintergrund bis zur Layoutkante (gezielt für .mod-custom.custom)
   ========================================================= */
.hero-section.hero-full > .hero-container{
  width: 100%;
  max-width: var(--container-width);
  margin: 0 auto;
  padding-left: var(--spacing-md);
  padding-right: var(--spacing-md);
  box-sizing: border-box;
}/* Der Hero-Hintergrund sitzt i.d.R. auf dem Modul-Wrapper */
.hero-section.hero-full > .hero-container > .mod-custom.custom{
  margin-left: calc(-1 * var(--spacing-md)) !important;
  margin-right: calc(-1 * var(--spacing-md)) !important;
  width: calc(100% + (2 * var(--spacing-md))) !important;
  max-width: none !important;
  box-sizing: border-box !important;
  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
}/* Falls das Hintergrundbild über Pseudo-Elemente kommt */
.hero-section.hero-full > .hero-container > .mod-custom.custom::before,
.hero-section.hero-full > .hero-container > .mod-custom.custom::after{
  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
}/* =========================================================
   HERO Seam-Fix: falls PNG/Background Transparenz hat, kein beiger Rand sichtbar
   ========================================================= */
.hero-section.hero-full{
  
}.hero-section.hero-full > .hero-container > .mod-custom.custom{
  
}/* ========================================
   Phi-Perfect Layout (merged)
   ======================================== */

/**
 * Phi-Perfect Layout Erweiterungen
 * Optimierungen für asymmetrisches Layout mit Hero-Bereich
 */

/* ========================================
   Hero-Bereich (boxed) – Template neutral, Bild kommt aus Joomla-Modul
   ======================================== */
.hero-section{
  width: auto !important;
  max-width: none !important;
  min-height: 0 !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  display: block !important;
  /* kein Flex-Zentrieren -> kein Leerraum */
    left: auto !important;
  right: auto !important;
  transform: none !important;
}/* Container bleibt normal */
.hero-section > .container{
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}/* Hero mit Hintergrundbild - Optimiert für volle Abdeckung */
.hero-section.hero-with-image{
  background-size: cover !important;
  /* Füllt kompletten Bereich */
    background-position: center center !important;
  /* Zentriert das Bild */
    background-repeat: no-repeat !important;
  background-attachment: scroll;
  /* Bessere Mobile-Performance */;
}/* Alternativer Modus: Bild oben ausrichten (falls oberer Teil wichtig ist) */
.hero-section.hero-bg-top{
  background-position: center top !important;
}/* Alternativer Modus: Bild unten ausrichten */
.hero-section.hero-bg-bottom{
  background-position: center bottom !important;
}/* Dunkles Overlay für bessere Text-Lesbarkeit */
.hero-section.hero-with-image::before{
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(
        135deg,
        rgba(0, 0, 0, 0.5) 0%,
        rgba(0, 0, 0, 0.2) 100%
    );
  z-index: 1;
}/* Stärkeres Overlay (falls Text schwer lesbar) */
.hero-section.hero-dark-overlay::before{
  background: linear-gradient(
        135deg,
        rgba(0, 0, 0, 0.7) 0%,
        rgba(0, 0, 0, 0.4) 100%
    );
}/* Kein Overlay (falls Bild schon dunkel genug) */
.hero-section.hero-no-overlay::before{
  display: none;
}.hero-section .container{
  z-index: 2;
  width: 100%;
}/* Hero Content */
.hero-content{
  max-width: calc(var(--container-width) * var(--phi-inverse));
  text-align: left;
}.hero-content h1{
  font-size: clamp(var(--font-size-large), 8vw, var(--font-size-xxlarge));
  margin-bottom: calc(var(--spacing-lg) * var(--phi));
  line-height: var(--line-height-tight);
  color: var(--color-primary);
}.hero-section.hero-with-image .hero-content h1{
  color: white;
  text-shadow: 0 2px 30px rgba(0, 0, 0, 0.7), 0 4px 10px rgba(0, 0, 0, 0.5);
  font-weight: 800;
}.hero-content .lead{
  font-size: var(--font-size-medium);
  line-height: var(--line-height-relaxed);
  margin-bottom: calc(var(--spacing-xl) * var(--phi));
  color: var(--color-text);
}.hero-section.hero-with-image .hero-content .lead{
  color: rgba(255, 255, 255, 0.95);
  text-shadow: 0 1px 20px rgba(0, 0, 0, 0.6), 0 2px 5px rgba(0, 0, 0, 0.4);
  font-weight: 500;
}/* Hero CTA Buttons */
.hero-cta{
  display: flex;
  gap: var(--spacing-lg);
  flex-wrap: wrap;
}.hero-cta .btn{
  padding: var(--spacing-md) calc(var(--spacing-lg) * var(--phi));
  font-size: var(--font-size-base);
}.hero-cta .btn-primary{
  background-color: var(--button-background, var(--color-secondary));
  color: var(--button-text, white);
}.hero-cta .btn-secondary{
  background-color: transparent;
  border: 2px solid var(--color-secondary);
  color: var(--color-secondary);
}.hero-section.hero-with-image .hero-cta .btn-secondary{
  border-color: white;
  color: white;
}.hero-cta .btn-secondary:hover{
  background-color: var(--color-secondary);
  color: white;
}/* ========================================
   Sidebar Optimierungen
   ======================================== */

/* Sidebar "Card" Style für Module */
.sidebar .moduletable,
.sidebar .module{
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  padding: calc(var(--spacing-lg) * var(--phi));
  margin-bottom: calc(var(--spacing-lg) * var(--phi));
  transition: all var(--transition-medium);
}.sidebar .moduletable:hover,
.sidebar .module:hover{
  box-shadow: var(--shadow-medium);
  transform: translateY(-2px);
}.sidebar .moduletable h3,
.sidebar .module h3{
  font-size: var(--font-size-medium);
  margin-bottom: var(--spacing-lg);
  padding-bottom: var(--spacing-sm);
  border-bottom: 2px solid var(--color-secondary);
}/* Sidebar Navigation/Menu */
.sidebar nav ul,
.sidebar .menu ul{
  list-style: none;
  padding: 0;
  margin: 0;
}.sidebar nav li,
.sidebar .menu li{
  margin-bottom: var(--spacing-sm);
}.sidebar nav a,
.sidebar .menu a{
  display: block;
  padding: var(--spacing-xs) var(--spacing-sm);
  color: var(--nav-text, var(--color-text));
  border-left: 3px solid transparent;
  transition: all var(--transition-fast);
}.sidebar nav a:hover,
.sidebar .menu a:hover,
.sidebar nav li.active > a,
.sidebar .menu li.active > a{
  border-left-color: var(--color-secondary);
  background-color: var(--color-hover);
  color: var(--nav-hover, var(--color-secondary));
  padding-left: var(--spacing-md);
}.sidebar nav a::after,
.sidebar .menu a::after{
  display: none;
}/* Sidebar Social Links */
.sidebar .social-links{
  display: flex;
  gap: var(--spacing-md);
  flex-wrap: wrap;
}.sidebar .social-links a{
  display: flex;
  align-items: center;
  justify-content: center;
  width: calc(var(--spacing-base) * 2.5);
  height: calc(var(--spacing-base) * 2.5);
  background-color: var(--color-secondary);
  color: white;
  border-radius: 50%;
  transition: all var(--transition-fast);
  text-decoration: none;
}.sidebar .social-links a:hover{
  background-color: var(--color-accent);
  transform: translateY(-2px) scale(1.1);
}.sidebar .social-links a::after{
  display: none;
}/* Sidebar Bio/About */
.sidebar .bio-widget{
  text-align: center;
}.sidebar .bio-widget img{
  width: calc(var(--spacing-base) * 10);
  height: calc(var(--spacing-base) * 10);
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto var(--spacing-lg);
  border: 4px solid var(--color-secondary);
  box-shadow: var(--shadow-medium);
}.sidebar .bio-widget h3{
  border: none;
  margin-bottom: var(--spacing-sm);
}.sidebar .bio-widget p{
  font-size: var(--font-size-small);
  line-height: var(--line-height-normal);
}/* ========================================
   Content-Bereich Optimierungen
   ======================================== */

/* Optimale Lesbarkeit: Content-Breite begrenzen */
.content-area article,
.content-area .item-page{
  max-width: 100%;
}.content-area article p,
.content-area article li,
.content-area .item-page p,
.content-area .item-page li{
  max-width: none;
  /* Volle Breite der Content-Area nutzen */;
}/* Article Grid (für Blog-Übersicht) */
.blog-items,
.articles-grid{
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(calc(var(--spacing-base) * 18.75), 1fr));
  gap: calc(var(--spacing-lg) * var(--phi));
}.blog-item,
.article-card{
  background-color: var(--content-background, var(--color-surface));
  border: 1px solid var(--color-border);
  transition: all var(--transition-medium);
  overflow: hidden;
}.blog-item img,
.article-card img{
  width: 100%;
  aspect-ratio: var(--phi) / 1;
  object-fit: cover;
  transition: transform var(--transition-slow);
}.blog-item-content,
.article-card-content{
  padding: calc(var(--spacing-lg) * var(--phi));
}.blog-item h3,
.article-card h3{
  font-size: var(--font-size-medium);
  margin-bottom: var(--spacing-md);
}.blog-item .article-info,
.article-card .article-info{
  font-size: var(--font-size-small);
  color: var(--color-text-muted);
  margin-bottom: var(--spacing-sm);
}/* Featured Article (erstes Element größer) */
.blog-items .blog-item:first-child,
.articles-grid .article-card:first-child{
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: calc(var(--phi) * 1fr) 1fr;
  gap: calc(var(--spacing-lg) * var(--phi));
}.blog-items .blog-item:first-child img,
.articles-grid .article-card:first-child img{
  height: 100%;
}/* ========================================
   Scroll-Indikator
   ======================================== */
.scroll-indicator{
  position: absolute;
  bottom: var(--spacing-xl);
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  animation: bounce 2s infinite;
}.scroll-indicator::before{
  content: '↓';
  font-size: var(--font-size-large);
  color: var(--color-secondary);
  opacity: 0.7;
}.hero-section.hero-with-image .scroll-indicator::before{
  color: white;
}@keyframes bounce{
0%, 20%, 50%, 80%, 100%{
  transform: translateY(0);
}40%{
  transform: translateY(-10px);
}60%{
  transform: translateY(-5px);
}

}/* ========================================
   Responsive Anpassungen
   ======================================== */
@media (max-width: 768px){
  .hero-section {
        min-height: calc(100vh * 0.8);
  /* Auf mobil etwas niedriger */
        padding: var(--spacing-xl) 0;
  }
    
    .hero-content {
        max-width: 100%;
  }
    
    .hero-cta {
        flex-direction: column;
  }
    
    .hero-cta .btn {
        width: 100%;
  text-align: center;
  justify-content: center;
  }
    
    .blog-items .blog-item: first-child,
    .articles-grid .article-card:first-child {
        grid-template-columns: 1fr;
  }
    
    .scroll-indicator {
        display: none;
  };
}@media (max-width: 480px){
.hero-section{
  min-height: 70vh;
  /* 70% auf Mobile statt auto */
        padding: var(--spacing-lg) 0;
}.hero-content{
  text-align: center;
  /* Zentriert auf Mobile */;
}.hero-content h1{
  font-size: var(--font-size-large);
}.sidebar .bio-widget img{
  width: calc(var(--spacing-base) * 6.25);
  height: calc(var(--spacing-base) * 6.25);
}

}/* ========================================
   Accordion-Menü in Sidebar
   ======================================== */

/* Parent-Menüpunkt mit Accordion */
.sidebar nav li.parent > a,
.sidebar .menu li.parent > a{
  position: relative;
  cursor: pointer;
}/* Untermenu-Styling */
.sidebar nav li ul,
.sidebar .menu li ul{
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease;
  padding-left: var(--spacing-md);
}/* Geöffnetes Untermenu */
.sidebar nav li.menu-open > ul,
.sidebar .menu li.menu-open > ul{
  max-height: none !important;
}/* Unterpunkte einrücken */
.sidebar nav li ul li a,
.sidebar .menu li ul li a{
  padding-left: calc(var(--spacing-sm) * 1.5);
  font-size: 0.9em;
}/* Toggle-Icon Animation */
.menu-toggle-icon{
  display: inline-block;
  transition: transform 0.3s ease;
}/* Aktiver Parent hat Icon gedreht */
.sidebar nav li.menu-open > a .menu-toggle-icon,
.sidebar .menu li.menu-open > a .menu-toggle-icon{
  transform: rotate(180deg);
}/* ========================================
   PFEILE BEI ALLEN LINKS ENTFERNEN
   ======================================== */

/* Globale Pfeil-Entfernung - überschreibt Joomla Core CSS */
a[href^="http://"]::after,
a[href^="https://"]::after,
a[href^="mailto:"]::after,
a[href*="://"]::after,
a[target="_blank"]::after,
a.external::after,
a.external-link::after{
  display: none !important;
  content: "" !important;
  visibility: hidden !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
}/* Speziell in Modulen und Sidebar */
.moduletable a::after,
.module a::after,
.sidebar a::after,
.sidebar-left a::after,
.sidebar-right a::after{
  display: none !important;
  content: "" !important;
}/* Bio-Widget und Social Icons */
.bio-widget a::after,
.bio-widget a::before,
.social-links a::after,
.social-links a::before,
a[aria-label]::after,
a[title*="Facebook"]::after,
a[title*="Twitter"]::after,
a[title*="X"]::after,
a[title*="XING"]::after,
a[title*="Xing"]::after,
a[title*="LinkedIn"]::after,
a[title*="Instagram"]::after,
a[title*="Mail"]::after,
a[title*="E-Mail"]::after{
  display: none !important;
  content: "" !important;
  visibility: hidden !important;
}/* Zusätzliche Absicherung für alle img-Link-Kombinationen */
a > img{
  pointer-events: none;
}a:has(> img)::after,
a:has(> img)::before{
  display: none !important;
}/* ========================================
   SPACING-FIXES für Hero-Bereich
   Entfernt Abstände vor/nach Hero
   ======================================== */

/* Entfernt Abstand ÜBER dem Hero (zwischen Header und Hero) */
.site-main{
  margin-top: 0 !important;
  padding-top: 0 !important;
  overflow-x: hidden;
  /* Wichtig für Hero-Breakout */;
}.page-wrapper{
  margin-top: 0 !important;
  padding-top: 0 !important;
  overflow-x: hidden;
  /* Wichtig für Hero-Breakout */;
}body > .page-wrapper{
  margin-top: 0 !important;
}.site-header + .site-main .hero-section,
.site-header + * .hero-section{
  margin-top: 0 !important;
}/* Hero-Container muss volle Breite erlauben */
jdoc[name="hero"],
.position-hero,
[data-position="hero"]{
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
  width: 100% !important;
}/* Entfernt Abstand UNTER dem Hero (zwischen Hero und Content) */
.hero-section + *{
  margin-top: 0 !important;
  padding-top: 0 !important;
}.site-main .hero-section ~ .container,
.site-main .hero-section ~ *{
  margin-top: 0 !important;
  padding-top: 0 !important;
}/* Body und HTML ohne Abstände */
body{
  margin: 0 !important;
  padding: 0 !important;
}html{
  margin: 0 !important;
  padding: 0 !important;
}/* Falls Modulpositionen verwendet werden */
jdoc[name="hero"]{
  margin: 0 !important;
  padding: 0 !important;
}/* ========================================
   OPTIONAL: Wenn Sie ETWAS Abstand wollen
   Kommentieren Sie diese Zeilen ein:
   ======================================== */

/* Kleiner Abstand nach Hero (z.B. 30px) */
/*
.hero-section + *{
  margin-top: 30px !important;
}*/

/* Kleiner Abstand vor Hero (z.B. 20px) */
/*
.hero-section{
  margin-top: 20px !important;
}*/


/* --- Final Safety: ensure HERO never breaks out of container --- */
.hero-section{
  width: auto !important;
  max-width: none !important;
  min-height: 0 !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  display: block !important;
}/* --- HERO Layoutbreite: keine Phi-MinHeight/Breakouts erzwingen --- */
.hero-section.hero-full{
  min-height: 0 !important;
  height: auto !important;
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
}.hero-section.hero-full > .hero-container{
  width: 100% !important;
  max-width: var(--container-width) !important;
  margin: 0 auto !important;
  padding: 0 !important;
}/* --- HERO (Phi-Safety): Modul-Wrapper immer 100% Breite (verhindert "rechts bleibt frei") --- */
.hero-section.hero-full > .hero-container > *{
  width: 100%;
  max-width: 100%;
}.hero-section.hero-full .moduletable,
.hero-section.hero-full .module,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom{
  
}/* Falls das Bild als Background in einem inneren Wrapper liegt */
.hero-section.hero-full [style*="background"]{
  
}/* --- HERO Strong Force: alles im Hero wirklich 100% Layoutbreite --- */
.hero-section.hero-full .hero-container{
  
}/* Häufige Ursache: Modul/Custom-HTML rendert inline/auto-width -> erzwingen */
.hero-section.hero-full .hero-container > *{
  
}/* Joomla-Module Wrapper (verschiedene Renderer) */
.hero-section.hero-full .moduletable,
.hero-section.hero-full .moduletable > *,
.hero-section.hero-full .module,
.hero-section.hero-full .module > *,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom,
.hero-section.hero-full .custom > *{
  
}/* Bilder niemals durch max-width oder inline sizing begrenzen */
.hero-section.hero-full img{
  
}/* Wenn irgendwo text-align:center wirkt, kann das Layout "komisch" aussehen */
.hero-section.hero-full .moduletable,
.hero-section.hero-full .module,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom{
  
}/* --- HERO Layoutkante exakt treffen: Container-Padding + Modul-Bleed --- */
/* hero-container wie .container (Layoutbreite + Innenpadding) */
.hero-section.hero-full > .hero-container{
  
}/* Modul/Hintergrund soll bis zur äußeren Layoutkante (inkl. Padding) reichen */
.hero-section.hero-full > .hero-container > *{
  
}/* --- HERO Fix: verschachteltes .container im Hero-Modul darf NICHT erneut begrenzen --- */
.hero-section.hero-full .hero-container .container{
  
}/* Inhalt im Hero weiterhin sauber zentrieren (optional) */
.hero-section.hero-full .hero-container .hero-content{
  
}/* --- HERO Fix (final): innerer .container im Hero-Modul darf NICHT begrenzen --- */
/* Trifft deinen konkreten DOM: <div id="mod-custom110" class="mod-custom custom"><div class="container"> ... */
.hero-section.hero-full #mod-custom110 > .container,
.hero-section.hero-full .mod-custom.custom > .container{
  
}/* Inhalt weiterhin sauber im Layout zentrieren */
.hero-section.hero-full .mod-custom.custom > .container > .hero-content{
  
}/* Falls der Hintergrund auf dem inneren Container liegt */
.hero-section.hero-full .mod-custom.custom > .container{
  
}/* --- HERO Background bis zur Layoutkante (inkl. Layout-Padding) ---
   Hintergrund sitzt typischerweise auf dem Modul-Wrapper (.mod-custom.custom).
   Wir halten den Hero in Layoutbreite (max-width), aber lassen den Modul-Wrapper
   in das Container-Padding "bluten", damit links/rechts keine helle Kante bleibt.
*/
.hero-section.hero-full > .hero-container{
  
}/* Modul-Wrapper wird auf volle Layoutkante erweitert */
.hero-section.hero-full > .hero-container > .mod-custom.custom,
.hero-section.hero-full > .hero-container > .module,
.hero-section.hero-full > .hero-container > .moduletable{
  
}/* Falls der Hintergrund über Pseudo-Elemente kommt */
.hero-section.hero-full > .hero-container > .mod-custom.custom::before,
.hero-section.hero-full > .hero-container > .mod-custom.custom::after{
  
}/* Falls der Hintergrund direkt auf dem Wrapper liegt */
.hero-section.hero-full > .hero-container > .mod-custom.custom{
  
}/* =========================================================
   HERO: Hintergrund bis zur Layoutkante (gezielt für .mod-custom.custom)
   ========================================================= */
.hero-section.hero-full > .hero-container{
  
}/* Der Hero-Hintergrund sitzt i.d.R. auf dem Modul-Wrapper */
.hero-section.hero-full > .hero-container > .mod-custom.custom{
  
}/* Falls das Hintergrundbild über Pseudo-Elemente kommt */
.hero-section.hero-full > .hero-container > .mod-custom.custom::before,
.hero-section.hero-full > .hero-container > .mod-custom.custom::after{
  
}/* =========================================================
   HERO Seam-Fix: falls PNG/Background Transparenz hat, kein beiger Rand sichtbar
   ========================================================= */
.hero-section.hero-full{
  
}.hero-section.hero-full > .hero-container > .mod-custom.custom{
  
}/* =========================================================
   HERO (boxed): Hero liegt im .container und nutzt dessen Layoutbreite
   ========================================================= */
.hero-section.hero-full{
  /* Seam-Fix bei sehr hellem PNG */;
}.hero-section.hero-full .mod-custom.custom,
.hero-section.hero-full .module,
.hero-section.hero-full .moduletable{
  /* Seam-Fix */;
}/* =========================================================
   HERO im Grid: über Sidebar1 + Content + Sidebar2 spannen
   ========================================================= */
.content-wrapper.has-sidebar .hero-section.hero-in-grid{
  /* Seam-Fix */;
}.content-wrapper.has-sidebar .hero-section.hero-in-grid .mod-custom.custom,
.content-wrapper.has-sidebar .hero-section.hero-in-grid .module,
.content-wrapper.has-sidebar .hero-section.hero-in-grid .moduletable{
  
}/* =========================================================
   HERO (clean): spannt über Sidebar1 + Content + Sidebar2
   - Hero-Section im Grid: grid-column: 1 / -1
   - Keine Phi-Begrenzung im Hero (volle Breite für Background)
   - Innerer .container im Hero-Modul neutralisieren
   ========================================================= */

/* 1) Hero im 3-Spalten-Grid über alle Spalten ziehen */
.content-wrapper .hero-section.hero-full{
  
}/* 2) Falls Joomla/Module einen inneren .container ausgeben: nicht erneut begrenzen */
.content-wrapper .hero-section.hero-full .container{
  
}/* 3) Hero-Content im Hero darf nicht durch Phi-Formel beschnitten werden */
.content-wrapper .hero-section.hero-full .hero-content{
  
}/* 4) Module Wrapper im Hero: volle Breite + saubere Background-Defaults */
.content-wrapper .hero-section.hero-full .mod-custom.custom,
.content-wrapper .hero-section.hero-full .module,
.content-wrapper .hero-section.hero-full .moduletable{
  
}/* 5) Optional: helle PNG-Fades sollen nicht "beige" wirken */
.content-wrapper .hero-section.hero-full{
  
}/* =====================================================
   HERO-FIX (merged) — formerly css/hero-fix.css
   Loaded last by being appended here
   ===================================================== */
/* HERO-FIX (loaded last) - wenn du diesen Kommentar in DevTools findest, wird die Datei geladen */

/* 1) Hero liegt im Grid-Container (.content-wrapper) und soll über alle Spalten laufen */
.content-wrapper .hero-section.hero-in-grid{
  grid-column: 1 / -1 !important;
  width: 100% !important;
  margin: 0 !important;
  background-color: #fff !important;
  /* verhindert beige "Kanten" bei sehr hellem PNG */;
}/* 2) Joomla/Module erzeugen oft einen inneren .container -> hier darf nichts begrenzen */
.content-wrapper .hero-section.hero-in-grid .container{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}/* 3) Hero-Content: keine Phi-Max-Width, Text zentrieren (damit nichts links "abbricht") */
.content-wrapper .hero-section.hero-in-grid .hero-content{
  width: 100% !important;
  max-width: none !important;
  margin: 0 auto !important;
  text-align: center !important;
}/* 4) Hintergrund sitzt i.d.R. auf dem Modul-Wrapper */
.content-wrapper .hero-section.hero-in-grid .mod-custom.custom,
.content-wrapper .hero-section.hero-in-grid .module,
.content-wrapper .hero-section.hero-in-grid .moduletable{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
  background-color: #fff !important;
}/* Ultra-specific overrides (win against any template rule) */
.hero-section.hero-in-grid .hero-content{
  max-width: none !important;
  width: 100% !important;
  text-align: center !important;
}.hero-section.hero-in-grid #mod-custom110,
.hero-section.hero-in-grid [id^="mod-custom"]{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}/* =====================================================
   HERO TYPOGRAPHY OPTIMIZATION
===================================================== */

.hero-section.hero-in-grid{
  padding: clamp(80px, 10vw, 160px) 0 !important;
  text-align: center !important;
}.hero-section.hero-in-grid h2{
  font-size: clamp(2.2rem, 4vw, 3.6rem);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.02em;
  margin-bottom: 1.5rem;
}.hero-section.hero-in-grid p.lead{
  font-size: clamp(1.1rem, 1.5vw, 1.35rem);
  line-height: 1.6;
  max-width: 900px !important;
  margin: 0 auto 2.5rem auto !important;
  opacity: 0.9;
}.hero-section.hero-in-grid .hero-cta{
  margin-top: 1.5rem;
}.hero-section.hero-in-grid .btn{
  padding: 0.9rem 2rem;
  font-size: 1rem;
  font-weight: 500;
  border-radius: 6px;
  transition: all 0.25s ease;
}.hero-section.hero-in-grid .btn-primary{
  box-shadow: 0 10px 25px rgba(0,0,0,0.15);
}.hero-section.hero-in-grid .btn:hover{
  transform: translateY(-2px);
}/* =====================================================
   HERO FLUSH (bündig & sauber)
   Entfernt den "beigen Leerraum" oberhalb/unterhalb des Heroes
   und sorgt für einen sauberen Anschluss an Header und Content.
===================================================== */

/* 0) Häufige Ursache: Grid-Gap/Margins im Wrapper */
.content-wrapper{
  row-gap: 0 !important;
}/* 1) Hero selbst: keine äußeren Abstände */
.hero-section.hero-in-grid{
  margin: 0 !important;
  padding: 0 !important;
  /* entfernt Leerraum oben/unten im Hero */;
}/* 2) Falls der Bereich oberhalb vom Hero aus Main/Wrapper-Padding kommt */
.site-header + main,
.site-header + main .site-main,
.site-header + main .main-content{
  margin-top: 0 !important;
  padding-top: 0 !important;
}/* 3) Hintergrund-Wrapper: kein Padding, damit unten keine "leere Zone" entsteht */
.hero-section.hero-in-grid .mod-custom.custom,
.hero-section.hero-in-grid .module,
.hero-section.hero-in-grid .moduletable{
  margin: 0 !important;
  padding: 0 !important;
}/* 4) Innenabstand für Inhalte (Text/Buttons), ohne extra Fläche außerhalb des Backgrounds */
.hero-section.hero-in-grid .hero-content{
  padding: clamp(56px, 8vw, 120px) var(--spacing-md) clamp(40px, 6vw, 96px) !important;
}/* 5) Lead-Text: kompakter, ohne zusätzliche Leerzeilen */
.hero-section.hero-in-grid p.lead{
  margin-top: 0 !important;
  margin-bottom: 2.0rem !important;
}/* 6) CTA: kein zusätzlicher Spacer nach unten */
.hero-section.hero-in-grid .hero-cta{
  margin-top: 1.0rem !important;
  margin-bottom: 0 !important;
}/* =====================================================
   UNDER HERO MENU (horizontal navigation between Hero and Content)
===================================================== */
.under-hero-menu{
  grid-column: 1 / -1;
  margin: 0;
  padding: 0;
}/* Ensure the menu module doesn't reintroduce width constraints */
.under-hero-menu .container{
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}/* Default Joomla menu modules usually output ul.menu */
.under-hero-menu ul{
  list-style: none;
  margin: 0;
  padding: 0;
}/* Horizontal layout */
.under-hero-menu ul.menu,
.under-hero-menu ul.nav,
.under-hero-menu .mod-menu__nav{
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.25rem;
  align-items: center;
  justify-content: flex-start;
  padding: 0.75rem 0;
  border-top: 1px solid rgba(0,0,0,0.06);
  border-bottom: 1px solid rgba(0,0,0,0.06);
  background: rgba(255,255,255,0.6);
  backdrop-filter: blur(6px);
}/* Links */
.under-hero-menu a{
  display: inline-block;
  text-decoration: none;
  padding: 0.35rem 0.2rem;
  font-weight: 500;
  letter-spacing: 0.01em;
}/* Active/Current item */
.under-hero-menu li.active > a,
.under-hero-menu li.current > a{
  text-decoration: underline;
  text-underline-offset: 0.25rem;
}/* Hover */
.under-hero-menu a:hover{
  text-decoration: underline;
  text-underline-offset: 0.25rem;
}/* -----------------------------------------------------
   Menu separator support
   Joomla separators are often rendered as:
   <li class="... separator ..."><span class="separator">---</span></li>
   or sometimes <li class="... separator ..."><a>---</a></li>
   We render them as a thin line and hide the placeholder text.
----------------------------------------------------- */
.under-hero-menu li.separator,
.under-hero-menu li.divider,
.under-hero-menu li.menu-separator,
.under-hero-menu li.em-divider{
  display: flex;
  align-items: center;
  padding: 0;
  margin: 0 0.25rem;
}.under-hero-menu li.separator > span.separator,
.under-hero-menu li.separator > span,
.under-hero-menu li.divider > span,
.under-hero-menu li.menu-separator > span,
.under-hero-menu li.em-divider > span,
.under-hero-menu li.separator > a,
.under-hero-menu li.divider > a,
.under-hero-menu li.menu-separator > a,
.under-hero-menu li.em-divider > a{
  display: block;
  width: 2.25rem;
  height: 1px;
  padding: 0;
  margin: 0;
  background: rgba(0,0,0,0.20);
  color: transparent;
  text-decoration: none;
  overflow: hidden;
  text-indent: -9999px;
  border: 0;
}.under-hero-menu li.separator > a,
.under-hero-menu li.divider > a,
.under-hero-menu li.menu-separator > a,
.under-hero-menu li.em-divider > a{
  pointer-events: none;
  cursor: default;
}/* Small screens */
@media (max-width: 640px){
  .under-hero-menu ul.menu,
    .under-hero-menu ul.nav,
    .under-hero-menu .mod-menu__nav{
        justify-content: flex-start;
  padding-left: var(--spacing-md);
  padding-right: var(--spacing-md);
  };
}/* =====================================================
   UNDER HERO MENU (alignment override): left aligned + layout width
===================================================== */
.under-hero-menu{
  width: 100%;
  max-width: var(--container-width);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--spacing-md);
  padding-right: var(--spacing-md);
  box-sizing: border-box;
  text-align: left;
}/* Some menu renderers wrap inside <div class="mod-menu"> or similar */
.under-hero-menu .mod-menu,
.under-hero-menu .moduletable,
.under-hero-menu .module{
  width: 100%;
  max-width: none;
  margin: 0;
}/* Ensure the flex container is left aligned even if theme defaults center it */
.under-hero-menu ul.menu,
.under-hero-menu ul.nav,
.under-hero-menu .mod-menu__nav{
  justify-content: flex-start !important;
}/* If the menu is rendered as plain <ul> without class */
.under-hero-menu > ul{
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.25rem;
  align-items: center;
  justify-content: flex-start;
}


/* =====================================================
   Sidebar / Module Menüs: Separator als Linie (statt '---')
   ===================================================== */
.mod-menu li.separator,
.mod-menu li.divider,
.mod-menu li.menu-separator,
.mod-menu li.em-divider{
  display: block;
  padding: 0;
  margin: 0.6rem 0;
}

/* Linie rendern (Text/Link unsichtbar) */
.mod-menu li.separator > span,
.mod-menu li.separator > span.separator,
.mod-menu li.divider > span,
.mod-menu li.menu-separator > span,
.mod-menu li.em-divider > span,
.mod-menu li.separator > a,
.mod-menu li.divider > a,
.mod-menu li.menu-separator > a,
.mod-menu li.em-divider > a{
  display: block;
  width: 100%;
  height: 1px;
  padding: 0;
  margin: 0;
  background: rgba(0,0,0,0.20);
  color: transparent;
  text-decoration: none;
  overflow: hidden;
  text-indent: -9999px;
  border: 0;
  pointer-events: none;
}



/* Container innerhalb des Page-Wrappers soll die volle Breite nutzen */
.page-wrapper .container{
  max-width: 100%;
}
/**
 * Phi-Perfect Layout Erweiterungen
 * Optimierungen für asymmetrisches Layout mit Hero-Bereich
 */

/* ========================================
   Hero-Bereich (boxed) – Template neutral, Bild kommt aus Joomla-Modul
   ======================================== */
.hero-section{
    width: auto !important;
    max-width: none !important;
    min-height: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important; /* kein Flex-Zentrieren -> kein Leerraum */
    left: auto !important;
    right: auto !important;
    transform: none !important;
}

/* Container bleibt normal */
.hero-section > .container{
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

/* Hero mit Hintergrundbild - Optimiert für volle Abdeckung */
.hero-section.hero-with-image {
    background-size: cover !important;           /* Füllt kompletten Bereich */
    background-position: center center !important; /* Zentriert das Bild */
    background-repeat: no-repeat !important;
    background-attachment: scroll;               /* Bessere Mobile-Performance */
}

/* Alternativer Modus: Bild oben ausrichten (falls oberer Teil wichtig ist) */
.hero-section.hero-bg-top {
    background-position: center top !important;
}

/* Alternativer Modus: Bild unten ausrichten */
.hero-section.hero-bg-bottom {
    background-position: center bottom !important;
}

/* Dunkles Overlay für bessere Text-Lesbarkeit */
.hero-section.hero-with-image::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(
        135deg,
        rgba(0, 0, 0, 0.5) 0%,
        rgba(0, 0, 0, 0.2) 100%
    );
    z-index: 1;
}

/* Stärkeres Overlay (falls Text schwer lesbar) */
.hero-section.hero-dark-overlay::before {
    background: linear-gradient(
        135deg,
        rgba(0, 0, 0, 0.7) 0%,
        rgba(0, 0, 0, 0.4) 100%
    );
}

/* Kein Overlay (falls Bild schon dunkel genug) */
.hero-section.hero-no-overlay::before {
    display: none;
}

.hero-section .container {
    position: relative;
    z-index: 2;
    width: 100%;
}

/* Hero Content */
.hero-content {
    max-width: calc(var(--container-width) * var(--phi-inverse));
    text-align: left;
}

.hero-content h1 {
    font-size: clamp(var(--font-size-large), 8vw, var(--font-size-xxlarge));
    margin-bottom: calc(var(--spacing-lg) * var(--phi));
    line-height: var(--line-height-tight);
    color: var(--color-primary);
}

.hero-section.hero-with-image .hero-content h1 {
    color: white;
    text-shadow: 0 2px 30px rgba(0, 0, 0, 0.7), 0 4px 10px rgba(0, 0, 0, 0.5);
    font-weight: 800;
}

.hero-content .lead {
    font-size: var(--font-size-medium);
    line-height: var(--line-height-relaxed);
    margin-bottom: calc(var(--spacing-xl) * var(--phi));
    color: var(--color-text);
}

.hero-section.hero-with-image .hero-content .lead {
    color: rgba(255, 255, 255, 0.95);
    text-shadow: 0 1px 20px rgba(0, 0, 0, 0.6), 0 2px 5px rgba(0, 0, 0, 0.4);
    font-weight: 500;
}

/* Hero CTA Buttons */
.hero-cta {
    display: flex;
    gap: var(--spacing-lg);
    flex-wrap: wrap;
}

.hero-cta .btn {
    padding: var(--spacing-md) calc(var(--spacing-lg) * var(--phi));
    font-size: var(--font-size-base);
}

.hero-cta .btn-primary {
    background-color: var(--button-background, var(--color-secondary));
    color: var(--button-text, white);
}

.hero-cta .btn-secondary {
    background-color: transparent;
    border: 2px solid var(--color-secondary);
    color: var(--color-secondary);
}

.hero-section.hero-with-image .hero-cta .btn-secondary {
    border-color: white;
    color: white;
}

.hero-cta .btn-secondary:hover {
    background-color: var(--color-secondary);
    color: white;
}

/* ========================================
   Sidebar Optimierungen
   ======================================== */

/* Sidebar "Card" Style für Module */
.sidebar .moduletable,
.sidebar .module {
    background-color: var(--color-surface);
    border: 1px solid var(--color-border);
    padding: calc(var(--spacing-lg) * var(--phi));
    margin-bottom: calc(var(--spacing-lg) * var(--phi));
    transition: all var(--transition-medium);
}

.sidebar .moduletable:hover,
.sidebar .module:hover {
    box-shadow: var(--shadow-medium);
    transform: translateY(-2px);
}

.sidebar .moduletable h3,
.sidebar .module h3 {
    font-size: var(--font-size-medium);
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-sm);
    border-bottom: 2px solid var(--color-secondary);
}

/* Sidebar Navigation/Menu */
.sidebar nav ul,
.sidebar .menu ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.sidebar nav li,
.sidebar .menu li {
    margin-bottom: var(--spacing-sm);
}

.sidebar nav a,
.sidebar .menu a {
    display: block;
    padding: var(--spacing-xs) var(--spacing-sm);
    color: var(--nav-text, var(--color-text));
    border-left: 3px solid transparent;
    transition: all var(--transition-fast);
}

.sidebar nav a:hover,
.sidebar .menu a:hover,
.sidebar nav li.active > a,
.sidebar .menu li.active > a {
    border-left-color: var(--color-secondary);
    background-color: var(--color-hover);
    color: var(--nav-hover, var(--color-secondary));
    padding-left: var(--spacing-md);
}

.sidebar nav a::after,
.sidebar .menu a::after {
    display: none;
}

/* Sidebar Social Links */
.sidebar .social-links {
    display: flex;
    gap: var(--spacing-md);
    flex-wrap: wrap;
}

.sidebar .social-links a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: calc(var(--spacing-base) * 2.5);
    height: calc(var(--spacing-base) * 2.5);
    background-color: var(--color-secondary);
    color: white;
    border-radius: 50%;
    transition: all var(--transition-fast);
    text-decoration: none;
}

.sidebar .social-links a:hover {
    background-color: var(--color-accent);
    transform: translateY(-2px) scale(1.1);
}

.sidebar .social-links a::after {
    display: none;
}

/* Sidebar Bio/About */
.sidebar .bio-widget {
    text-align: center;
}

.sidebar .bio-widget img {
    width: calc(var(--spacing-base) * 10);
    height: calc(var(--spacing-base) * 10);
    border-radius: 50%;
    object-fit: cover;
    margin: 0 auto var(--spacing-lg);
    border: 4px solid var(--color-secondary);
    box-shadow: var(--shadow-medium);
}

.sidebar .bio-widget h3 {
    border: none;
    margin-bottom: var(--spacing-sm);
}

.sidebar .bio-widget p {
    font-size: var(--font-size-small);
    line-height: var(--line-height-normal);
}

/* ========================================
   Content-Bereich Optimierungen
   ======================================== */

/* Optimale Lesbarkeit: Content-Breite begrenzen */
.content-area article,
.content-area .item-page {
    max-width: 100%;
}

.content-area article p,
.content-area article li,
.content-area .item-page p,
.content-area .item-page li {
    max-width: none; /* Volle Breite der Content-Area nutzen */
}

/* Article Grid (für Blog-Übersicht) */
.blog-items,
.articles-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(calc(var(--spacing-base) * 18.75), 1fr));
    gap: calc(var(--spacing-lg) * var(--phi));
}

.blog-item,
.article-card {
    background-color: var(--content-background, var(--color-surface));
    border: 1px solid var(--color-border);
    transition: all var(--transition-medium);
    overflow: hidden;
}

.blog-item img,
.article-card img {
    width: 100%;
    aspect-ratio: var(--phi) / 1;
    object-fit: cover;
    transition: transform var(--transition-slow);
}

.blog-item-content,
.article-card-content {
    padding: calc(var(--spacing-lg) * var(--phi));
}

.blog-item h3,
.article-card h3 {
    font-size: var(--font-size-medium);
    margin-bottom: var(--spacing-md);
}

.blog-item .article-info,
.article-card .article-info {
    font-size: var(--font-size-small);
    color: var(--color-text-muted);
    margin-bottom: var(--spacing-sm);
}

/* Featured Article (erstes Element größer) */
.blog-items .blog-item:first-child,
.articles-grid .article-card:first-child {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: calc(var(--phi) * 1fr) 1fr;
    gap: calc(var(--spacing-lg) * var(--phi));
}

.blog-items .blog-item:first-child img,
.articles-grid .article-card:first-child img {
    height: 100%;
}

/* ========================================
   Scroll-Indikator
   ======================================== */
.scroll-indicator {
    position: absolute;
    bottom: var(--spacing-xl);
    left: 50%;
    transform: translateX(-50%);
    z-index: 2;
    animation: bounce 2s infinite;
}

.scroll-indicator::before {
    content: '↓';
    font-size: var(--font-size-large);
    color: var(--color-secondary);
    opacity: 0.7;
}

.hero-section.hero-with-image .scroll-indicator::before {
    color: white;
}

@keyframes bounce {
    0%, 20%, 50%, 80%, 100% {
        transform: translateY(0);
    }
    40% {
        transform: translateY(-10px);
    }
    60% {
        transform: translateY(-5px);
    }
}

/* ========================================
   Responsive Anpassungen
   ======================================== */
@media (max-width: 768px) {
    .hero-section {
        min-height: calc(100vh * 0.8); /* Auf mobil etwas niedriger */
        padding: var(--spacing-xl) 0;
    }
    
    .hero-content {
        max-width: 100%;
    }
    
    .hero-cta {
        flex-direction: column;
    }
    
    .hero-cta .btn {
        width: 100%;
        text-align: center;
        justify-content: center;
    }
    
    .blog-items .blog-item:first-child,
    .articles-grid .article-card:first-child {
        grid-template-columns: 1fr;
    }
    
    .scroll-indicator {
        display: none;
    }
}

@media (max-width: 480px) {
    .hero-section {
        min-height: 70vh; /* 70% auf Mobile statt auto */
        padding: var(--spacing-lg) 0;
    }
    
    .hero-content {
        text-align: center; /* Zentriert auf Mobile */
    }
    
    .hero-content h1 {
        font-size: var(--font-size-large);
    }
    
    .sidebar .bio-widget img {
        width: calc(var(--spacing-base) * 6.25);
        height: calc(var(--spacing-base) * 6.25);
    }
}

/* ========================================
   Accordion-Menü in Sidebar
   ======================================== */

/* Parent-Menüpunkt mit Accordion */
.sidebar nav li.parent > a,
.sidebar .menu li.parent > a {
    position: relative;
    cursor: pointer;
}

/* Untermenu-Styling */
.sidebar nav li ul,
.sidebar .menu li ul {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease;
    padding-left: var(--spacing-md);
}

/* Geöffnetes Untermenu */
.sidebar nav li.menu-open > ul,
.sidebar .menu li.menu-open > ul {
    max-height: none !important;
}

/* Unterpunkte einrücken */
.sidebar nav li ul li a,
.sidebar .menu li ul li a {
    padding-left: calc(var(--spacing-sm) * 1.5);
    font-size: 0.9em;
}

/* Toggle-Icon Animation */
.menu-toggle-icon {
    display: inline-block;
    transition: transform 0.3s ease;
}

/* Aktiver Parent hat Icon gedreht */
.sidebar nav li.menu-open > a .menu-toggle-icon,
.sidebar .menu li.menu-open > a .menu-toggle-icon {
    transform: rotate(180deg);
}

/* ========================================
   PFEILE BEI ALLEN LINKS ENTFERNEN
   ======================================== */

/* Globale Pfeil-Entfernung - überschreibt Joomla Core CSS */
a[href^="http://"]::after,
a[href^="https://"]::after,
a[href^="mailto:"]::after,
a[href*="://"]::after,
a[target="_blank"]::after,
a.external::after,
a.external-link::after {
    display: none !important;
    content: "" !important;
    visibility: hidden !important;
    opacity: 0 !important;
    width: 0 !important;
    height: 0 !important;
}

/* Speziell in Modulen und Sidebar */
.moduletable a::after,
.module a::after,
.sidebar a::after,
.sidebar-left a::after,
.sidebar-right a::after {
    display: none !important;
    content: "" !important;
}

/* Bio-Widget und Social Icons */
.bio-widget a::after,
.bio-widget a::before,
.social-links a::after,
.social-links a::before,
a[aria-label]::after,
a[title*="Facebook"]::after,
a[title*="Twitter"]::after,
a[title*="X"]::after,
a[title*="XING"]::after,
a[title*="Xing"]::after,
a[title*="LinkedIn"]::after,
a[title*="Instagram"]::after,
a[title*="Mail"]::after,
a[title*="E-Mail"]::after {
    display: none !important;
    content: "" !important;
    visibility: hidden !important;
}

/* Zusätzliche Absicherung für alle img-Link-Kombinationen */
a > img {
    pointer-events: none;
}

a:has(> img)::after,
a:has(> img)::before {
    display: none !important;
}

/* ========================================
   SPACING-FIXES für Hero-Bereich
   Entfernt Abstände vor/nach Hero
   ======================================== */

/* Entfernt Abstand ÜBER dem Hero (zwischen Header und Hero) */
.site-main {
    margin-top: 0 !important;
    padding-top: 0 !important;
    overflow-x: hidden; /* Wichtig für Hero-Breakout */
}

.page-wrapper {
    margin-top: 0 !important;
    padding-top: 0 !important;
    overflow-x: hidden; /* Wichtig für Hero-Breakout */
}

body > .page-wrapper {
    margin-top: 0 !important;
}

.site-header + .site-main .hero-section,
.site-header + * .hero-section {
    margin-top: 0 !important;
}

/* Hero-Container muss volle Breite erlauben */
jdoc[name="hero"],
.position-hero,
[data-position="hero"] {
    padding: 0 !important;
    margin: 0 !important;
    max-
    
}

/* Entfernt Abstand UNTER dem Hero (zwischen Hero und Content) */
.hero-section + * {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

.site-main .hero-section ~ .container,
.site-main .hero-section ~ * {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

/* Body und HTML ohne Abstände */
body {
    margin: 0 !important;
    padding: 0 !important;
}

html {
    margin: 0 !important;
    padding: 0 !important;
}

/* Falls Modulpositionen verwendet werden */
jdoc[name="hero"] {
    margin: 0 !important;
    padding: 0 !important;
}

/* ========================================
   OPTIONAL: Wenn Sie ETWAS Abstand wollen
   Kommentieren Sie diese Zeilen ein:
   ======================================== */

/* Kleiner Abstand nach Hero (z.B. 30px) */
/*
.hero-section + * {
    margin-top: 30px !important;
}
*/

/* Kleiner Abstand vor Hero (z.B. 20px) */
/*
.hero-section {
    margin-top: 20px !important;
}
*/


/* --- Final Safety: ensure HERO never breaks out of container --- */
.hero-section{
    width: auto !important;
    max-width: none !important;
    min-height: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
}



/* --- HERO Layoutbreite: keine Phi-MinHeight/Breakouts erzwingen --- */
.hero-section.hero-full{
    min-height: 0 !important;
    height: auto !important;
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
}
.hero-section.hero-full > .hero-container{
    width: 100% !important;
    max-width: var(--container-width) !important;
    margin: 0 auto !important;
    padding: 0 !important;
}


/* --- HERO (Phi-Safety): Modul-Wrapper immer 100% Breite (verhindert "rechts bleibt frei") --- */
.hero-section.hero-full > .hero-container > *{
    width: 100%;
    max-width: 100%;
}

.hero-section.hero-full .moduletable,
.hero-section.hero-full .module,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom{
    width: 100%;
    max-width: 100%;
    margin: 0;
    padding: 0;
}

/* Falls das Bild als Background in einem inneren Wrapper liegt */
.hero-section.hero-full [style*="background"]{
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
}


/* --- HERO Strong Force: alles im Hero wirklich 100% Layoutbreite --- */
.hero-section.hero-full .hero-container{
    display: block;
}

/* Häufige Ursache: Modul/Custom-HTML rendert inline/auto-width -> erzwingen */
.hero-section.hero-full .hero-container > *{
    display: block !important;
    width: 100% !important;
    max-width: none !important;
}

/* Joomla-Module Wrapper (verschiedene Renderer) */
.hero-section.hero-full .moduletable,
.hero-section.hero-full .moduletable > *,
.hero-section.hero-full .module,
.hero-section.hero-full .module > *,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom,
.hero-section.hero-full .custom > *{
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    float: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/* Bilder niemals durch max-width oder inline sizing begrenzen */
.hero-section.hero-full img{
    width: 100% !important;
    max-width: none !important;
    height: auto !important;
}

/* Wenn irgendwo text-align:center wirkt, kann das Layout "komisch" aussehen */
.hero-section.hero-full .moduletable,
.hero-section.hero-full .module,
.hero-section.hero-full .mod-custom,
.hero-section.hero-full .custom{
    text-align: left !important;
}


/* --- HERO Layoutkante exakt treffen: Container-Padding + Modul-Bleed --- */
/* hero-container wie .container (Layoutbreite + Innenpadding) */
.hero-section.hero-full > .hero-container{
    max-width: var(--container-width);
    margin: 0 auto;
    padding-left: var(--spacing-md);
    padding-right: var(--spacing-md);
}

/* Modul/Hintergrund soll bis zur äußeren Layoutkante (inkl. Padding) reichen */
.hero-section.hero-full > .hero-container > *{
    margin-left: calc(-1 * var(--spacing-md)) !important;
    margin-right: calc(-1 * var(--spacing-md)) !important;
    width: calc(100% + (2 * var(--spacing-md))) !important;
    max-width: none !important;
}


/* --- HERO Fix: verschachteltes .container im Hero-Modul darf NICHT erneut begrenzen --- */
.hero-section.hero-full .hero-container .container{
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/* Inhalt im Hero weiterhin sauber zentrieren (optional) */
.hero-section.hero-full .hero-container .hero-content{
    max-width: var(--container-width);
    margin: 0 auto;
    padding: 0 var(--spacing-md);
}




/* --- HERO Fix (final): innerer .container im Hero-Modul darf NICHT begrenzen --- */
/* Trifft deinen konkreten DOM: <div id="mod-custom110" class="mod-custom custom"><div class="container"> ... */
.hero-section.hero-full #mod-custom110 > .container,
.hero-section.hero-full .mod-custom.custom > .container{
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important; /* Hintergrund soll bis zur Layoutkante reichen */
    box-sizing: border-box;
}

/* Inhalt weiterhin sauber im Layout zentrieren */
.hero-section.hero-full .mod-custom.custom > .container > .hero-content{
    max-width: var(--container-width);
    margin: 0 auto;
    padding: 0 var(--spacing-md);
    box-sizing: border-box;
}

/* Falls der Hintergrund auf dem inneren Container liegt */
.hero-section.hero-full .mod-custom.custom > .container{
    background-position: center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}


/* --- HERO Background bis zur Layoutkante (inkl. Layout-Padding) ---
   Hintergrund sitzt typischerweise auf dem Modul-Wrapper (.mod-custom.custom).
   Wir halten den Hero in Layoutbreite (max-width), aber lassen den Modul-Wrapper
   in das Container-Padding "bluten", damit links/rechts keine helle Kante bleibt.
*/
.hero-section.hero-full > .hero-container{
    width: 100%;
    max-width: var(--container-width);
    margin: 0 auto;
    padding-left: var(--spacing-md);
    padding-right: var(--spacing-md);
    box-sizing: border-box;
}

/* Modul-Wrapper wird auf volle Layoutkante erweitert */
.hero-section.hero-full > .hero-container > .mod-custom.custom,
.hero-section.hero-full > .hero-container > .module,
.hero-section.hero-full > .hero-container > .moduletable{
    margin-left: calc(-1 * var(--spacing-md)) !important;
    margin-right: calc(-1 * var(--spacing-md)) !important;
    width: calc(100% + (2 * var(--spacing-md))) !important;
    max-width: none !important;
    box-sizing: border-box !important;
}

/* Falls der Hintergrund über Pseudo-Elemente kommt */
.hero-section.hero-full > .hero-container > .mod-custom.custom::before,
.hero-section.hero-full > .hero-container > .mod-custom.custom::after{
    background-position: center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}

/* Falls der Hintergrund direkt auf dem Wrapper liegt */
.hero-section.hero-full > .hero-container > .mod-custom.custom{
    background-position: center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}


/* =========================================================
   HERO: Hintergrund bis zur Layoutkante (gezielt für .mod-custom.custom)
   ========================================================= */
.hero-section.hero-full > .hero-container{
    width: 100%;
    max-width: var(--container-width);
    margin: 0 auto;
    padding-left: var(--spacing-md);
    padding-right: var(--spacing-md);
    box-sizing: border-box;
}

/* Der Hero-Hintergrund sitzt i.d.R. auf dem Modul-Wrapper */
.hero-section.hero-full > .hero-container > .mod-custom.custom{
    margin-left: calc(-1 * var(--spacing-md)) !important;
    margin-right: calc(-1 * var(--spacing-md)) !important;
    width: calc(100% + (2 * var(--spacing-md))) !important;
    max-width: none !important;
    box-sizing: border-box !important;

    background-position: center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}

/* Falls das Hintergrundbild über Pseudo-Elemente kommt */
.hero-section.hero-full > .hero-container > .mod-custom.custom::before,
.hero-section.hero-full > .hero-container > .mod-custom.custom::after{
    background-position: center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}


/* =========================================================
   HERO Seam-Fix: falls PNG/Background Transparenz hat, kein beiger Rand sichtbar
   ========================================================= */
.hero-section.hero-full{
    background-color: #fff !important;
}
.hero-section.hero-full > .hero-container > .mod-custom.custom{
    background-color: #fff !important;
}


/* =========================================================
   HERO (boxed): Hero liegt im .container und nutzt dessen Layoutbreite
   ========================================================= */
.hero-section.hero-full{
    width: 100%;
    margin: 0;
    padding: 0;
    background-color: #fff; /* Seam-Fix bei sehr hellem PNG */
}
.hero-section.hero-full .mod-custom.custom,
.hero-section.hero-full .module,
.hero-section.hero-full .moduletable{
    width: 100%;
    max-width: 100%;
    margin: 0;
    padding: 0;
    background-color: #fff; /* Seam-Fix */
}


/* =========================================================
   HERO im Grid: über Sidebar1 + Content + Sidebar2 spannen
   ========================================================= */
.content-wrapper.has-sidebar .hero-section.hero-in-grid{
    grid-column: 1 / -1;
    width: 100%;
    margin: 0 0 var(--spacing-lg) 0;
    padding: 0;
    background-color: #fff; /* Seam-Fix */
}
.content-wrapper.has-sidebar .hero-section.hero-in-grid .mod-custom.custom,
.content-wrapper.has-sidebar .hero-section.hero-in-grid .module,
.content-wrapper.has-sidebar .hero-section.hero-in-grid .moduletable{
    width: 100%;
    max-width: 100%;
    margin: 0;
    padding: 0;
    background-color: #fff;
}


/* =========================================================
   HERO (clean): spannt über Sidebar1 + Content + Sidebar2
   - Hero-Section im Grid: grid-column: 1 / -1
   - Keine Phi-Begrenzung im Hero (volle Breite für Background)
   - Innerer .container im Hero-Modul neutralisieren
   ========================================================= */

/* 1) Hero im 3-Spalten-Grid über alle Spalten ziehen */
.content-wrapper .hero-section.hero-full{
    grid-column: 1 / -1;
}

/* 2) Falls Joomla/Module einen inneren .container ausgeben: nicht erneut begrenzen */
.content-wrapper .hero-section.hero-full .container{
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box !important;
}

/* 3) Hero-Content im Hero darf nicht durch Phi-Formel beschnitten werden */
.content-wrapper .hero-section.hero-full .hero-content{
    width: 100% !important;
    max-width: none !important;
    margin: 0 auto !important;
    text-align: center !important;
}

/* 4) Module Wrapper im Hero: volle Breite + saubere Background-Defaults */
.content-wrapper .hero-section.hero-full .mod-custom.custom,
.content-wrapper .hero-section.hero-full .module,
.content-wrapper .hero-section.hero-full .moduletable{
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    background-position: center !important;
    background-size: cover !important;
    background-repeat: no-repeat !important;
}

/* 5) Optional: helle PNG-Fades sollen nicht "beige" wirken */
.content-wrapper .hero-section.hero-full{
    background-color: #fff !important;
}

/* HERO-FIX (loaded last) - wenn du diesen Kommentar in DevTools findest, wird die Datei geladen */

/* 1) Hero liegt im Grid-Container (.content-wrapper) und soll über alle Spalten laufen */
.content-wrapper .hero-section.hero-in-grid{
  grid-column: 1 / -1 !important;
  width: 100% !important;
  margin: 0 !important;
  background-color: #fff !important; /* verhindert beige "Kanten" bei sehr hellem PNG */
}

/* 2) Joomla/Module erzeugen oft einen inneren .container -> hier darf nichts begrenzen */
.content-wrapper .hero-section.hero-in-grid .container{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}

/* 3) Hero-Content: keine Phi-Max-Width, Text zentrieren (damit nichts links "abbricht") */
.content-wrapper .hero-section.hero-in-grid .hero-content{
  width: 100% !important;
  max-width: none !important;
  margin: 0 auto !important;
  text-align: center !important;
}

/* 4) Hintergrund sitzt i.d.R. auf dem Modul-Wrapper */
.content-wrapper .hero-section.hero-in-grid .mod-custom.custom,
.content-wrapper .hero-section.hero-in-grid .module,
.content-wrapper .hero-section.hero-in-grid .moduletable{
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;

  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
  background-color: #fff !important;
}


/* Ultra-specific overrides (win against any template rule) */
.hero-section.hero-in-grid .hero-content{ max-width:none !important; width:100% !important; text-align:center !important; }
.hero-section.hero-in-grid #mod-custom110,
.hero-section.hero-in-grid [id^="mod-custom"]{ width:100% !important; max-width:none !important; margin:0 !important; padding:0 !important; }


/* =====================================================
   HERO TYPOGRAPHY OPTIMIZATION
===================================================== */

.hero-section.hero-in-grid{
    padding: clamp(80px, 10vw, 160px) 0 !important;
    text-align: center !important;
}

.hero-section.hero-in-grid h2{
    font-size: clamp(2.2rem, 4vw, 3.6rem);
    font-weight: 600;
    line-height: 1.15;
    letter-spacing: -0.02em;
    margin-bottom: 1.5rem;
}

.hero-section.hero-in-grid p.lead{
    font-size: clamp(1.1rem, 1.5vw, 1.35rem);
    line-height: 1.6;
    max-width: 900px !important;
    margin: 0 auto 2.5rem auto !important;
    opacity: 0.9;
}

.hero-section.hero-in-grid .hero-cta{
    margin-top: 1.5rem;
}

.hero-section.hero-in-grid .btn{
    padding: 0.9rem 2rem;
    font-size: 1rem;
    font-weight: 500;
    border-radius: 6px;
    transition: all 0.25s ease;
}

.hero-section.hero-in-grid .btn-primary{
    box-shadow: 0 10px 25px rgba(0,0,0,0.15);
}

.hero-section.hero-in-grid .btn:hover{
    transform: translateY(-2px);
}


/* =====================================================
   HERO FLUSH (bündig & sauber)
   Entfernt den "beigen Leerraum" oberhalb/unterhalb des Heroes
   und sorgt für einen sauberen Anschluss an Header und Content.
===================================================== */

/* 0) Häufige Ursache: Grid-Gap/Margins im Wrapper */
.content-wrapper{
    row-gap: 0 !important;
}

/* 1) Hero selbst: keine äußeren Abstände */
.hero-section.hero-in-grid{
    margin: 0 !important;
    padding: 0 !important; /* entfernt Leerraum oben/unten im Hero */
}

/* 2) Falls der Bereich oberhalb vom Hero aus Main/Wrapper-Padding kommt */
.site-header + main,
.site-header + main .site-main,
.site-header + main .main-content{
    margin-top: 0 !important;
    padding-top: 0 !important;
}

/* 3) Hintergrund-Wrapper: kein Padding, damit unten keine "leere Zone" entsteht */
.hero-section.hero-in-grid .mod-custom.custom,
.hero-section.hero-in-grid .module,
.hero-section.hero-in-grid .moduletable{
    margin: 0 !important;
    padding: 0 !important;
}

/* 4) Innenabstand für Inhalte (Text/Buttons), ohne extra Fläche außerhalb des Backgrounds */
.hero-section.hero-in-grid .hero-content{
    padding: clamp(56px, 8vw, 120px) var(--spacing-md) clamp(40px, 6vw, 96px) !important;
}

/* 5) Lead-Text: kompakter, ohne zusätzliche Leerzeilen */
.hero-section.hero-in-grid p.lead{
    margin-top: 0 !important;
    margin-bottom: 2.0rem !important;
}

/* 6) CTA: kein zusätzlicher Spacer nach unten */
.hero-section.hero-in-grid .hero-cta{
    margin-top: 1.0rem !important;
    margin-bottom: 0 !important;
}


/* =====================================================
   UNDER HERO MENU (horizontal navigation between Hero and Content)
===================================================== */
.under-hero-menu{
    grid-column: 1 / -1;
    margin: 0;
    padding: 0;
}

/* Ensure the menu module doesn't reintroduce width constraints */
.under-hero-menu .container{
    max-width: none !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* Default Joomla menu modules usually output ul.menu */
.under-hero-menu ul{
    list-style: none;
    margin: 0;
    padding: 0;
}

/* Horizontal layout */
.under-hero-menu ul.menu,
.under-hero-menu ul.nav,
.under-hero-menu .mod-menu__nav{
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
    align-items: center;
    justify-content: flex-start;
    padding: 0.75rem 0;
    border-top: 1px solid rgba(0,0,0,0.06);
    border-bottom: 1px solid rgba(0,0,0,0.06);
    background: rgba(255,255,255,0.6);
    backdrop-filter: blur(6px);
}

/* Links */
.under-hero-menu a{
    display: inline-block;
    text-decoration: none;
    padding: 0.35rem 0.2rem;
    font-weight: 500;
    letter-spacing: 0.01em;
}

/* Active/Current item */
.under-hero-menu li.active > a,
.under-hero-menu li.current > a{
    text-decoration: underline;
    text-underline-offset: 0.25rem;
}

/* Hover */
.under-hero-menu a:hover{
    text-decoration: underline;
    text-underline-offset: 0.25rem;
}

/* Small screens */
@media (max-width: 640px){
    .under-hero-menu ul.menu,
    .under-hero-menu ul.nav,
    .under-hero-menu .mod-menu__nav{
        justify-content: flex-start;
        padding-left: var(--spacing-md);
        padding-right: var(--spacing-md);
    }
}

/* =====================================================
   UNDER HERO MENU (alignment override): left aligned + layout width
===================================================== */
.under-hero-menu{
    width: 100%;
    max-width: var(--container-width);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--spacing-md);
    padding-right: var(--spacing-md);
    box-sizing: border-box;
    text-align: left;
}

/* Some menu renderers wrap inside <div class="mod-menu"> or similar */
.under-hero-menu .mod-menu,
.under-hero-menu .moduletable,
.under-hero-menu .module{
    width: 100%;
    max-width: none;
    margin: 0;
}

/* Ensure the flex container is left aligned even if theme defaults center it */
.under-hero-menu ul.menu,
.under-hero-menu ul.nav,
.under-hero-menu .mod-menu__nav{
    justify-content: flex-start !important;
}

/* If the menu is rendered as plain <ul> without class */
.under-hero-menu > ul{
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
    align-items: center;
    justify-content: flex-start;
}
/* =====================================================
   Editorial Modern – Custom Overrides
   (kept separate so updates to template.css remain easy)
   ===================================================== */

/* ============ Themen-Kacheln (4 Blöcke) ============
   Usage (in an article):
   <div class="dw-topic-cards"> ... <a class="dw-card"> ...
*/

.dw-topic-cards{
  margin: 24px 0 10px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.dw-card{
  display: block;
  text-decoration: none !important;
  padding: 18px 18px 16px;
  border: 1px solid rgba(0,0,0,0.14);
  background: rgba(255,255,255,0.78);
  box-shadow: 0 6px 18px rgba(0,0,0,0.06);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease;
  position: relative;
  font-family: inherit;
  color: var(--content-text, var(--color-text));
}

.dw-card::before{
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 3px;
  background: rgba(139, 111, 71, 0.35); /* matches default --color-secondary */
}

.dw-card h3{
  margin: 0 0 var(--spacing-sm) 0;
  font-family: var(--font-display);
  font-weight: 700;
  line-height: var(--line-height-tight);
  color: var(--color-primary);
  /* match template scale, but slightly calmer inside cards */
  font-size: clamp(calc(var(--font-size-base) * 1.1), 2.4vw, calc(var(--font-size-base) * 1.35));
}

.dw-card p{
  margin: 0;
  max-width: none;
  font-family: var(--font-body);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  color: var(--content-text, var(--color-text));
}

.dw-card:hover{
  transform: translateY(-2px);
  border-color: rgba(139, 111, 71, 0.55);
  background: rgba(255,255,255,0.92);
  box-shadow: 0 10px 26px rgba(0,0,0,0.10);
}

/* If the center column gets narrow due to sidebars, stack */
@media (max-width: 1100px){
  .dw-topic-cards{
    grid-template-columns: 1fr;
  }
}


/* =====================================================
   Premium Footer + Layout Fixes
   ===================================================== */

/* Remove artificial whitespace above footer */
.site-main{
  min-height: auto !important; /* template.css had 100vh */
  padding-bottom: 0 !important;
}

/* Make sure wrappers don't inject bottom spacing */
.site-main .container,
.site-main .content-wrapper,
.site-main .content-area{
  margin-bottom: 0 !important;
}

/* Footer – slightly darker, clearer hierarchy */
.site-footer{
  margin-top: 0 !important;
  padding: 34px 0 18px;
  background: linear-gradient(to bottom, rgba(253,251,247,0) 0%, rgba(231,226,218,1) 28%, rgba(231,226,218,1) 100%), var(--footer-background, #e7e2da);
  border-top: 1px solid rgba(0,0,0,0.06);
  color: var(--footer-text, #2f2f2f);
}

.site-footer .footer-grid{
  gap: 34px;
}

.site-footer .footer-title{
  font-family: var(--font-display);
  font-size: var(--footer-title-size, 0.875rem);  /* Verwendet Template-Parameter */
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-secondary, #8b6f47);
  margin: 0 0 12px 0;
}

.site-footer .footer-text,
.site-footer .footer-contact-list,
.site-footer .footer-links{
  font-family: var(--font-body);
  font-size: var(--footer-text-size, 1rem);  /* Verwendet Template-Parameter */
  line-height: 1.7;
  color: var(--footer-text, #2f2f2f);
}

.site-footer .footer-links,
.site-footer .footer-contact-list{
  list-style: none;
  padding: 0;
  margin: 0;
}

.site-footer .footer-links li,
.site-footer .footer-contact-list li{
  margin: 0 0 8px 0;
}

.site-footer a{
  color: var(--color-secondary, #8b6f47);
  text-decoration: none;
  border-bottom: 1px solid rgba(139,111,71,0.25);
  transition: color .18s ease, border-color .18s ease;
}

.site-footer a:hover{
  color: var(--color-accent, #c49a6c);
  border-color: rgba(196,154,108,0.55);
}

.site-footer .footer-bottom{
  margin-top: 18px;
  padding-top: 12px;
  border-top: 1px solid rgba(0,0,0,0.08);
}

/* =========================================================
   CONTENT LISTS – Force bullets/numbering in article content
   Loaded LAST (after template.css, responsive.css, layout.css)
   so it can safely override menu/sidebar resets.
   ========================================================= */

/* Guarantee visible markers in the main content area - with maximum selector coverage */
.content-area ul:not(.menu):not(.nav):not(.footer-links):not(.footer-contact-list),
.content-area .item-page ul,
.content-area .com-content-article ul,
.content-area .com-content-article__body ul,
.content-area article ul,
.content-area .blog ul,
.content-area .blog-featured ul,
.main-content ul:not(.menu):not(.nav),
main ul:not(.menu):not(.nav):not(.sidebar *){
  list-style-type: disc !important;
  list-style-position: outside !important;
  padding-left: 1.6rem !important;
  margin-left: 0 !important;
}

.content-area ol:not(.menu):not(.nav):not(.footer-links):not(.footer-contact-list),
.content-area .item-page ol,
.content-area .com-content-article ol,
.content-area .com-content-article__body ol,
.content-area article ol,
.content-area .blog ol,
.content-area .blog-featured ol,
.main-content ol:not(.menu):not(.nav),
main ol:not(.menu):not(.nav):not(.sidebar *){
  list-style-type: decimal !important;
  list-style-position: outside !important;
  padding-left: 1.6rem !important;
  margin-left: 0 !important;
}

/* Nested ordered lists should use different styles */
.content-area ol ol{
  list-style-type: lower-alpha !important;
}

.content-area ol ol ol{
  list-style-type: lower-roman !important;
}

/* Sidebars and menus should NOT have bullets - explicit override */
.sidebar ul,
.sidebar ol,
.sidebar .menu ul,
.sidebar .menu ol,
.sidebar nav ul,
.sidebar nav ol,
ul.menu,
ol.menu,
nav ul,
nav ol,
.nav-wrapper ul,
.nav-wrapper ol,
.site-footer ul,
.site-footer ol{
  list-style: none !important;
  padding-left: 0 !important;
  margin-left: 0 !important;
}

/* Prevent outside markers from being clipped */
.content-area .item-page,
.content-area .com-content-article,
.content-area .com-content-article__body,
.content-area article{
  overflow: visible;
}

/* Avoid "double gap" between a paragraph and a following list */
.content-area p + ul,
.content-area p + ol{
  margin-top: 0.25rem !important;
}

/* Comfortable rhythm inside lists */
.content-area li{
  margin: 0.35rem 0;
  line-height: 1.6;
}

/* If the editor wraps list text in <p>, remove paragraph margins inside list items */
.content-area li > p{
  margin: 0;
  max-width: none;
}

/* Nested lists: slightly tighter */
.content-area li ul,
.content-area li ol{
  margin-top: 0.35rem;
  margin-bottom: 0.35rem;
}

.site-footer .footer-bottom .copyright,
.site-footer .footer-bottom .credits{
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--footer-bottom-size, 0.875rem);  /* Verwendet Template-Parameter */
  line-height: 1.5;
  color: rgba(47,47,47,0.85);
}

@media (max-width: 900px){
  .site-footer{ padding: 28px 0 16px; }
  .site-footer .footer-grid{ grid-template-columns: 1fr; gap: 22px; }
}
/**
 * Responsive Styles
 * Mobile-first responsive Design
 */

/* ========================================
   Tablet Landscape (max-width: 1024px)
   ======================================== */
@media (max-width: 1024px){
  :root {
        --container-width: 960px;
  --header-height: calc(var(--spacing-base) * 4.375);
  --sidebar-width: calc(var(--container-width) * var(--phi-inverse) / 3.5);
  }
    
    h1 {
        font-size: var(--font-size-xlarge);
  }
    
    .content-wrapper.has-sidebar {
        grid-template-columns: 20% 60% 20%;
  }
    
    .content-wrapper.has-sidebar-left {
        grid-template-columns: 20% 1fr;
  }
    
    .content-wrapper.has-sidebar-right {
        grid-template-columns: 1fr 20%;
  }
    
    .footer-modules {
        grid-template-columns: repeat(auto-fit, minmax(calc(var(--spacing-base) * 12.5), 1fr));
  gap: var(--spacing-lg);
  };
}/* ========================================
   Tablet Portrait (max-width: 768px)
   ======================================== */
@media (max-width: 768px){
  :root {
        --header-height: calc(var(--spacing-base) * 3.75);
  --spacing-xxl: calc(var(--spacing-base) * var(--phi-squared));
  --spacing-xxxl: calc(var(--spacing-base) * var(--phi) * var(--phi-squared));
  }
    
    html {
        font-size: 15px;
  }
    
    body {
        font-size: var(--font-size-base);
  }
    
    /* Header & Navigation */
    .header-inner {
        gap: var(--spacing-sm);
  }
    
    .logo-text {
        font-size: calc(var(--font-size-base) * 1.5);
  }
    
    .menu-toggle {
        display: flex;
  }
    
    .menu-toggle.active span: nth-child(3) {
        transform: rotate(-45deg) translate(calc(var(--spacing-xs) * var(--phi)), calc(var(--spacing-xs) * -var(--phi)));
  }
    
    .site-navigation {
        order: 2;
  }
    
    .nav-wrapper {
        position: fixed;
  top: var(--header-height);
  left: 0;
  right: 0;
  background-color: var(--header-background, var(--color-surface));
  }
    
    .nav-wrapper.active {
        max-height: calc(100vh - var(--header-height));
  overflow-y: auto;
  }
    
    .nav-wrapper ul {
        flex-direction: column;
  }
    
    .nav-wrapper li {
        width: 100%;
  border-bottom: 1px solid var(--color-border);
  }
    
    .nav-wrapper li: last-child {
        border-bottom: none;
  }
    
    .nav-wrapper a {
        display: block;
  }
    
    .nav-wrapper li ul {
        position: static;
  opacity: 1;
  visibility: visible;
  transform: none;
  border: none;
  box-shadow: none;
  max-height: 0;
  overflow: hidden;
  transition: max-height var(--transition-medium);
  }
    
    .nav-wrapper li.active > ul,
    .nav-wrapper li: hover > ul {
        max-height: calc(var(--spacing-base) * 31.25);
  }
    
    .header-modules {
        order: 1;
  margin-left: auto;
  margin-right: var(--spacing-sm);
  }
    
    /* Hero */
    .hero-section {
        min-height: calc(100vh * 0.8);
  /* 80% auf Tablet */
        padding: var(--spacing-xl) 0;
  }
    
    .hero-content {
        max-width: 100%;
  }
    
    /* Content */
    .content-wrapper.has-sidebar {
        grid-template-columns: 1fr;
  }
    
    .sidebar {
        position: static;
  order: 2;
  }
    
    .content-area {
        order: 1;
  padding: var(--spacing-lg);
  }
    
    .sidebar-right {
        order: 3;
  grid-column: 1;
  }
    
    /* Articles */
    .item-page,
    .blog,
    article {
        padding: var(--spacing-lg);
  }
    
    /* Footer */
    .footer-modules {
        grid-template-columns: 1fr;
  }
    
    .footer-bottom {
        flex-direction: column;
  gap: var(--spacing-sm);
  text-align: center;
  };
}/* ========================================
   Mobile (max-width: 480px)
   ======================================== */
@media (max-width: 480px){
  :root {
        --spacing-base: 0.875rem;
  }
    
    html {
        font-size: 14px;
  }
    
    .container {
        padding: 0 var(--spacing-md);
  }
    
    h1 {
        font-size: var(--font-size-large);
  margin-bottom: var(--spacing-lg);
  }
    
    h2 {
        font-size: var(--font-size-medium);
  }
    
    h3 {
        font-size: calc(var(--font-size-base) * 1.5);
  }
    
    h4 {
        font-size: calc(var(--font-size-base) * var(--phi));
  }
    
    .logo-text {
        font-size: calc(var(--font-size-base) * 1.25);
  }
    
    .site-main {
        padding: var(--spacing-lg) 0;
  }
    
    .main-top,
    .main-bottom {
        margin-bottom: var(--spacing-lg);
  }
    
    .content-wrapper {
        gap: var(--spacing-lg);
  }
    
    .content-area,
    .item-page,
    .blog,
    article {
        padding: var(--spacing-md);
  }
    
    article header {
        margin-bottom: var(--spacing-md);
  padding-bottom: var(--spacing-sm);
  }
    
    .article-info {
        font-size: calc(var(--font-size-small) * 0.95);
  gap: var(--spacing-sm);
  }
    
    .btn,
    button[type="submit"],
    input[type="submit"],
    .button {
        padding: var(--spacing-xs) var(--spacing-md);
  }
    
    .pagination {
        gap: var(--spacing-xs);
  }
    
    .pagination a,
    .pagination span {
        padding: var(--spacing-xs) var(--spacing-sm);
  font-size: calc(var(--font-size-small) * 0.95);
  };
}/* ========================================
   Touch Devices
   ======================================== */
@media (hover: none) and (pointer: coarse){
  /* Größere Touch-Targets */
    .nav-wrapper a,
    .btn,
    button,
    input[type="submit"] {
        min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  }
    
    /* Keine Hover-Effekte */
    a: hover::after {
        width: 0;
  }
    
    .moduletable-card: hover,
    .module-card:hover {
        transform: none;
  }
    
    /* Schnellere Transitions */
    * {
        transition-duration: 0.15s !important;
  };
}/* ========================================
   Landscape Orientation
   ======================================== */
@media (max-height: 500px) and (orientation: landscape){
  .hero-section {
        padding: var(--spacing-md) 0;
  }
    
    .site-main {
        padding: var(--spacing-md) 0;
  }
    
    .nav-wrapper {
        max-height: 80vh;
  };
}/* ========================================
   High DPI / Retina Displays
   ======================================== */
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi){
  body {
        -webkit-font-smoothing: subpixel-antialiased;
  };
}/* ========================================
   Reduced Motion
   ======================================== */
@media (prefers-reduced-motion: reduce){
  *,
    *: :before,
    *::after {
        animation-duration: 0.01ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.01ms !important;
  scroll-behavior: auto !important;
  }
    
    .page-wrapper {
        animation: none;
  opacity: 1;
  }
    
    .site-header {
        animation: none;
  }
    
    .main-top,
    .content-wrapper,
    .main-bottom {
        animation: none;
  };
}/* ========================================
   Dark Mode Preferences
   ======================================== */
@media (prefers-color-scheme: dark){
  /* Automatisches Dark Mode kann hier implementiert werden */
    /* Falls der User kein spezifisches Schema gewählt hat */;
}/* =========================================================
   HERO: Hintergrund bis zur Layoutkante (gezielt für .mod-custom.custom)
   (duplicated here to win against responsive overrides)
   ========================================================= */
.hero-section.hero-full > .hero-container{
  width: 100% !important;
  max-width: var(--container-width) !important;
  margin: 0 auto !important;
  padding-left: var(--spacing-md) !important;
  padding-right: var(--spacing-md) !important;
  box-sizing: border-box !important;
}.hero-section.hero-full > .hero-container > .mod-custom.custom{
  margin-left: calc(-1 * var(--spacing-md)) !important;
  margin-right: calc(-1 * var(--spacing-md)) !important;
  width: calc(100% + (2 * var(--spacing-md))) !important;
  max-width: none !important;
  box-sizing: border-box !important;
}.hero-section.hero-full > .hero-container > .mod-custom.custom::before,
.hero-section.hero-full > .hero-container > .mod-custom.custom::after{
  background-position: center !important;
  background-size: cover !important;
  background-repeat: no-repeat !important;
}/* =========================================================
   HERO Seam-Fix: falls PNG/Background Transparenz hat, kein beiger Rand sichtbar
   ========================================================= */
.hero-section.hero-full{
  background-color: #fff !important;
}.hero-section.hero-full > .hero-container > .mod-custom.custom{
  background-color: #fff !important;
}/* =========================================================
   HERO (boxed): Hero liegt im .container und nutzt dessen Layoutbreite
   ========================================================= */
.hero-section.hero-full{
  /* Seam-Fix bei sehr hellem PNG */;
}.hero-section.hero-full .mod-custom.custom,
.hero-section.hero-full .module,
.hero-section.hero-full .moduletable{
  /* Seam-Fix */;
}/* =========================================================
   HERO im Grid: über Sidebar1 + Content + Sidebar2 spannen
   ========================================================= */
.content-wrapper.has-sidebar .hero-section.hero-in-grid{
  /* Seam-Fix */;
}.content-wrapper.has-sidebar .hero-section.hero-in-grid .mod-custom.custom,
.content-wrapper.has-sidebar .hero-section.hero-in-grid .module,
.content-wrapper.has-sidebar .hero-section.hero-in-grid .moduletable{
  
}/* =========================================================
   HERO (clean): spannt über Sidebar1 + Content + Sidebar2
   - Hero-Section im Grid: grid-column: 1 / -1
   - Keine Phi-Begrenzung im Hero (volle Breite für Background)
   - Innerer .container im Hero-Modul neutralisieren
   ========================================================= */

/* 1) Hero im 3-Spalten-Grid über alle Spalten ziehen */
.content-wrapper .hero-section.hero-full{
  
}/* 2) Falls Joomla/Module einen inneren .container ausgeben: nicht erneut begrenzen */
.content-wrapper .hero-section.hero-full .container{
  
}/* 3) Hero-Content im Hero darf nicht durch Phi-Formel beschnitten werden */
.content-wrapper .hero-section.hero-full .hero-content{
  
}/* 4) Module Wrapper im Hero: volle Breite + saubere Background-Defaults */
.content-wrapper .hero-section.hero-full .mod-custom.custom,
.content-wrapper .hero-section.hero-full .module,
.content-wrapper .hero-section.hero-full .moduletable{
  
}/* 5) Optional: helle PNG-Fades sollen nicht "beige" wirken */
.content-wrapper .hero-section.hero-full{
  
}
/* =====================================================
   FINAL OVERRIDES - Loaded LAST
   Diese Datei erzwingt die globalen H1-H6 Regeln
   ÜBERALL im Template mit !important.
   
   Neue optimale typografische Hierarchie:
   H1: 36-56px (sehr groß, responsiv)
   H2: 30-44px (groß, responsiv)
   H3: 24-36px (mittel, responsiv)
   H4: 20-30px (klein-mittel, responsiv)
   H5: 18-24px (klein, responsiv)
   H6: 16-20px (sehr klein, responsiv, UPPERCASE)
   ===================================================== */

/* ========================================
   H1-H6 ÜBERSCHRIFTEN: ERZWINGE ÜBERALL
   Diese Regeln überschreiben ALLES mit !important
   ======================================== */

/* H1 - Überall die gleiche Größe erzwingen */
h1,
.content-area h1,
.item-page h1,
.com-content-article h1,
.com-content-article__body h1,
.item-content h1,
article h1,
.blog h1,
.blog-item h1,
main h1,
.site-main h1,
div h1,
section h1 {
  font-size: clamp(1.5rem, 2.5vw + 0.75rem, 2.25rem) !important;  /* 24-36px (2 Stufen kleiner) */
  font-weight: 800 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  margin-bottom: 1.25rem !important;
  margin-top: 1.5rem !important;
  font-family: var(--font-display) !important;
  color: var(--color-primary) !important;
}

/* H2 - Überall die gleiche Größe erzwingen */
h2,
.content-area h2,
.item-page h2,
.com-content-article h2,
.com-content-article__body h2,
.item-content h2,
article h2,
.blog h2,
.blog-item h2,
main h2,
.site-main h2,
div h2,
section h2 {
  font-size: clamp(1.25rem, 2vw + 0.625rem, 1.875rem) !important;  /* 20-30px (2 Stufen kleiner) */
  font-weight: 700 !important;
  letter-spacing: -0.015em !important;
  line-height: 1.3 !important;
  margin-bottom: 1rem !important;
  margin-top: 1.25rem !important;
  font-family: var(--font-display) !important;
  color: var(--color-primary) !important;
}

/* H3 - Überall die gleiche Größe erzwingen */
h3,
.content-area h3,
.item-page h3,
.com-content-article h3,
.com-content-article__body h3,
.item-content h3,
article h3,
.blog h3,
.blog-item h3,
main h3,
.site-main h3,
div h3,
section h3 {
  font-size: clamp(1.125rem, 1.5vw + 0.5rem, 1.5rem) !important;  /* 18-24px (2 Stufen kleiner) */
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.4 !important;
  margin-bottom: 0.875rem !important;
  margin-top: 1rem !important;
  font-family: var(--font-display) !important;
  color: var(--color-primary) !important;
}

/* H4 - Überall die gleiche Größe erzwingen */
h4,
.content-area h4,
.item-page h4,
.com-content-article h4,
.com-content-article__body h4,
.item-content h4,
article h4,
.blog h4,
.blog-item h4,
main h4,
.site-main h4,
div h4,
section h4 {
  font-size: clamp(1rem, 1vw + 0.5rem, 1.25rem) !important;  /* 16-20px (2 Stufen kleiner) */
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  line-height: 1.5 !important;
  margin-bottom: 0.75rem !important;
  margin-top: 0.875rem !important;
  font-family: var(--font-display) !important;
  color: var(--color-primary) !important;
}

/* H5 - Überall die gleiche Größe erzwingen */
h5,
.content-area h5,
.item-page h5,
.com-content-article h5,
.com-content-article__body h5,
.item-content h5,
article h5,
.blog h5,
.blog-item h5,
main h5,
.site-main h5,
div h5,
section h5 {
  font-size: clamp(0.875rem, 0.75vw + 0.5rem, 1.125rem) !important;  /* 14-18px (2 Stufen kleiner) */
  font-weight: 600 !important;
  line-height: 1.5 !important;
  margin-bottom: 0.625rem !important;
  margin-top: 0.75rem !important;
  font-family: var(--font-display) !important;
  color: var(--color-primary) !important;
}

/* H6 - Überall die gleiche Größe erzwingen */
h6,
.content-area h6,
.item-page h6,
.com-content-article h6,
.com-content-article__body h6,
.item-content h6,
article h6,
.blog h6,
.blog-item h6,
main h6,
.site-main h6,
div h6,
section h6 {
  font-size: clamp(0.75rem, 0.5vw + 0.5rem, 1rem) !important;  /* 12-16px (2 Stufen kleiner) */
  font-weight: 600 !important;
  line-height: 1.6 !important;
  margin-bottom: 0.5rem !important;
  margin-top: 0.625rem !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  font-family: var(--font-display) !important;
  color: var(--color-primary) !important;
}

/* ========================================
   AUSNAHME: Artikel-Titel (Seitentitel)
   Diese bleiben kompakter
   ======================================== */

.content-area > .page-header h1,
.content-area .page-title,
.content-area .com-content-article__title,
.page-header > h1.page-title,
h1.page-title,
.item-title.page-title {
  font-size: clamp(1.125rem, 1.5vw + 0.5rem, 1.5rem) !important;  /* 18-24px (2 Stufen kleiner) */
  line-height: 1.4 !important;
  margin: 0 0 0.875rem 0 !important;
  letter-spacing: -0.01em !important;
  font-weight: 700 !important;
}

/* ========================================
   AUSNAHME: Blog-Item-Titles (H2)
   Etwas kleiner als normale H2
   ======================================== */

.blog-item h2.item-title,
.blog h2.item-title,
.blog-featured h2.item-title,
h2.item-title {
  font-size: clamp(1rem, 1vw + 0.5rem, 1.25rem) !important;  /* 16-20px (2 Stufen kleiner) */
  line-height: 1.5 !important;
  margin: 0 0 0.75rem 0 !important;
  letter-spacing: -0.005em !important;
  font-weight: 700 !important;
}

/* ========================================
   KEINE RAHMEN UM CONTENT
   ======================================== */

.content-area,
.content-area .item-page,
.content-area .blog,
.content-area .blog-featured,
.content-area .com-content-article,
.content-area .com-content-article__body,
.content-area article,
.content-area > div,
.content-area > section,
article.item-page,
article.com-content-article,
.item-page,
.com-content-article,
.blog-item,
.page-header,
div[class*="com-content"]{
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
}

/* ========================================
   BULLETPOINTS GARANTIERT SICHTBAR
   ======================================== */

.content-area ul:not(.menu):not(.nav):not(.footer-links),
.content-area .com-content-article__body ul,
.content-area .item-page ul,
.content-area .item-content ul,
.content-area article ul:not(.menu){
  list-style-type: disc !important;
  list-style-position: outside !important;
  padding-left: 1.6rem !important;
  margin-left: 0 !important;
}

.content-area ol:not(.menu):not(.nav):not(.footer-links),
.content-area .com-content-article__body ol,
.content-area .item-page ol,
.content-area .item-content ol,
.content-area article ol:not(.menu){
  list-style-type: decimal !important;
  list-style-position: outside !important;
  padding-left: 1.6rem !important;
  margin-left: 0 !important;
}

/* Sidebars: keine Bullets */
.sidebar ul,
.sidebar ol,
ul.menu,
ol.menu{
  list-style: none !important;
  padding-left: 0 !important;
}
