/* Fenstersanierungs AG Mittelland, Seon
   Farben unveraendert aus dem Bestand uebernommen (Elementor-Kit 6 und
   Logo, am Original gemessen):
       Blau  #0E70B6   Primaerfarbe, Schaltflaechen, Verweise
       Gruen #95C11E   Akzent - nur als Flaeche, Linie oder Marke.
                       Auf Weiss betraegt der Kontrast nur 1.9:1, als
                       Schriftfarbe waere sie unlesbar.
       Grau  #717171   Untertitel der Wortmarke
       Dunkel#363636   Grundfarbe der Texte
   Eine Schriftfamilie (Inter, variabel), zwei Dateien, selbst gehostet. */

@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;
  src:url(/assets/font/inter-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;
  src:url(/assets/font/inter-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  --blau:#0E70B6;
  --blau-dunkel:#0A5384;
  --blau-tief:#073A5D;
  --blau-flaeche:#EAF3FA;
  --blau-rand:#C6DFF0;

  --gruen:#95C11E;
  --gruen-dunkel:#6E9012;      /* fuer Text auf Weiss: 3.6:1 - nur gross */
  --gruen-flaeche:#F2F8E2;

  --text:#2B2B2B;
  --text-leise:#5E5E5E;
  --linie:#E2E5E8;
  --grund:#FFFFFF;
  --flaeche:#F5F7F8;
  --dunkel:#26303A;
  --dunkel-tief:#1B242C;

  --wrap:1160px;
  --rand:20px;
  --radius:10px;
  --radius-gross:16px;
  --schatten:0 1px 2px rgba(20,30,40,.06),0 6px 20px rgba(20,30,40,.07);
  --schatten-hoch:0 2px 4px rgba(20,30,40,.07),0 14px 36px rgba(20,30,40,.11);
  --kopf-hoehe:62px;
}

*,*::before,*::after{box-sizing:border-box}

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--kopf-hoehe) + 12px);
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  margin:0;
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',Arial,sans-serif;
  font-size:17px;
  line-height:1.65;
  color:var(--text);
  background:var(--grund);
  -webkit-font-smoothing:antialiased;
  /* Deutsche Komposita sind laenger als 320px Schirmbreite:
     "Lichtschachtabdeckungen", "Datenschutzerklaerung". Ohne diese Regel
     ragen sie aus ihrem Absatz und die ganze Seite scrollt waagrecht -
     und kein Element meldet es, weil nur der Textknoten ueberlaeuft. */
  overflow-wrap:break-word;
}

img,picture,svg,video{max-width:100%}
img{height:auto}

h1,h2,h3,h4{
  overflow-wrap:break-word;
  margin:0 0 .5em;
  line-height:1.18;
  letter-spacing:-.02em;
  font-weight:700;
  color:var(--dunkel);
  text-wrap:balance;
}
/* Silbentrennung nur auf sehr schmalen Schirmen - dort ist sie noetig,
   darueber sieht sie unruhig aus. Setzt lang="de-CH" am <html> voraus. */
@media (max-width:430px){h1,h2,h3{hyphens:auto}}
h1{font-size:clamp(1.85rem,1.35rem + 2.4vw,3.1rem)}
h2{font-size:clamp(1.5rem,1.2rem + 1.4vw,2.2rem)}
h3{font-size:clamp(1.12rem,1.03rem + .45vw,1.35rem)}
h4{font-size:1.02rem}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
strong{font-weight:600}

a{color:var(--blau-dunkel);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:var(--blau-tief)}

:focus-visible{outline:3px solid var(--blau);outline-offset:2px;border-radius:4px}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--rand)}
.wrap-schmal{max-width:780px}

.springen{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--blau);color:#fff;padding:12px 18px;border-radius:0 0 8px 0;
}
.springen:focus{left:0}

/* ------------------------------------------------------------- Kopfzeile */

.kopf{
  position:sticky;top:0;z-index:60;
  background:#fff;
  border-bottom:1px solid var(--linie);
  /* KEIN backdrop-filter und kein filter auf dieser Ebene: beides macht
     den Kopf zum Bezugsrahmen fuer position:fixed - das Off-Canvas-Menue
     wuerde dann in der Kopfzeile kleben statt ueber der Seite liegen. */
}
.kopf-zeile{
  display:flex;align-items:center;gap:12px;
  min-height:var(--kopf-hoehe);
}
.marke{display:flex;align-items:center;flex:0 0 auto;text-decoration:none}
/* flex:0 0 auto an BEIDEN Stellen: ein Flex-Kind schrumpft sonst unter seine
   eigene Breite, und die Wortmarke wird in der engen Kopfzeile zu einem
   unleserlichen Strich zusammengedrueckt. */
.marke img{display:block;width:152px;height:53px;flex:0 0 auto}
@media (max-width:400px){.marke img{width:124px;height:43px}}

.kopf-rest{margin-left:auto;display:flex;align-items:center;gap:8px;flex:0 0 auto}

.kopf-tel{
  display:inline-flex;align-items:center;gap:7px;
  font-weight:600;color:var(--dunkel);text-decoration:none;white-space:nowrap;
  padding:11px;min-width:44px;min-height:44px;justify-content:center;
  border:1px solid var(--linie);border-radius:8px;background:var(--flaeche);
}
.kopf-tel svg{width:18px;height:18px;color:var(--blau);flex:0 0 auto}
.kopf-tel span{display:none}
.kopf-tel:hover{color:var(--blau-dunkel);background:#EDF0F2}

.menue-knopf{
  flex:0 0 auto;
  display:inline-flex;align-items:center;gap:8px;
  background:var(--flaeche);border:1px solid var(--linie);
  color:var(--dunkel);font:inherit;font-weight:600;font-size:.94rem;
  padding:9px 13px;border-radius:8px;cursor:pointer;
}
.menue-knopf svg{width:19px;height:19px}
.menue-knopf{min-height:44px}
.menue-knopf:hover{background:#EDF0F2}

/* Off-Canvas-Navigation.
   Die Huelle ist fix und schneidet ab; Schleier und Menue liegen ABSOLUT
   darin. Waeren sie selbst fix, laege ihr geparkter Zustand rechts neben
   dem Dokument und machte die Seite breiter - overflow:clip am Wurzel-
   element hilft dagegen nicht, weil fixe Elemente daran vorbeigehen. */
.nav-huelle{
  position:fixed;inset:0;z-index:70;overflow:hidden;pointer-events:none;
}
/* Scrollsperre als Klasse, nicht als style-Attribut aus dem Skript:
   element.style.* ist ein Inline-Stil und faellt unter dieselbe
   CSP-Sperre wie style="..." im Markup. */
body.nav-offen{overflow:hidden}
.nav-offen .nav-huelle{pointer-events:auto}

.nav-schleier{
  position:absolute;inset:0;
  background:rgba(20,28,36,.55);
  opacity:0;pointer-events:none;transition:opacity .2s ease;
}
.nav-offen .nav-schleier{opacity:1;pointer-events:auto}

.nav{
  /* pointer-events ausdruecklich zuruecksetzen: die Huelle setzt
     pointer-events:none, und das VERERBT sich. Auf der breiten Ansicht
     loest display:contents die Huelle zwar auf, die Vererbung bleibt aber
     - die Navigationspunkte waeren sichtbar und trotzdem tot. */
  pointer-events:auto;
  position:absolute;top:0;right:0;bottom:0;z-index:2;
  width:min(360px,88vw);
  background:#fff;
  box-shadow:-12px 0 40px rgba(20,30,40,.18);
  transform:translateX(102%);
  transition:transform .24s ease;
  display:flex;flex-direction:column;
  overflow-y:auto;overscroll-behavior:contain;
}
.nav-offen .nav{transform:translateX(0)}
@media (prefers-reduced-motion:reduce){
  .nav,.nav-schleier{transition:none}
}
.nav-kopf{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px var(--rand);border-bottom:1px solid var(--linie);
}
.nav-kopf strong{font-size:.86rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-leise)}
.nav-zu{
  background:none;border:0;color:var(--dunkel);cursor:pointer;
  padding:11px;margin:-11px;line-height:0;border-radius:8px;
  min-width:44px;min-height:44px;display:flex;align-items:center;
  justify-content:center;
}
.nav-zu svg{width:22px;height:22px}
.nav ul{list-style:none;margin:0;padding:8px var(--rand) 4px}
.nav li{margin:0}
.nav a{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:12px 2px;color:var(--dunkel);text-decoration:none;font-weight:600;
  border-bottom:1px solid var(--linie);
}
.nav a:hover{color:var(--blau-dunkel)}
.nav a[aria-current]{color:var(--blau-dunkel)}
.nav a[aria-current]::after{
  content:"";width:7px;height:7px;border-radius:50%;background:var(--gruen);flex:0 0 auto;
}
.nav-fuss{padding:16px var(--rand) 26px;margin-top:auto;display:grid;gap:10px}
.nav-fuss .knopf{width:100%}

@media (min-width:640px){
  .kopf-tel span{display:inline}
  .kopf-tel{border:0;background:none;padding:10px 6px}
}

@media (min-width:1200px){
  :root{--kopf-hoehe:76px}
  .menue-knopf{display:none}
  .nav-schleier{display:none}
  /* display:contents loest die Huelle auf - .nav wird damit direktes
     Flex-Kind der Kopfzeile und sitzt in derselben Reihe wie das Logo.
     pointer-events muss mit: display:contents nimmt die Box weg, nicht
     die Vererbung. */
  .nav-huelle{display:contents;pointer-events:auto}
  .nav{
    position:static;width:auto;transform:none;box-shadow:none;background:none;
    flex-direction:row;align-items:center;overflow:visible;
  }
  .nav-kopf,.nav-fuss{display:none}
  .nav{margin-inline:auto}
  .nav ul{display:flex;align-items:center;gap:0;padding:0}
  /* Auf breiten Schirmen ist das Logo der Weg zur Startseite - der
     Navigationspunkt "Start" waere doppelt und kostet den Platz, der
     der Offerten-Schaltflaeche fehlt. Im Off-Canvas bleibt er. */
  .nav-start{display:none}
  .nav a{
    padding:8px 9px;border:0;border-radius:7px;font-size:.94rem;font-weight:600;
    white-space:nowrap;
  }
  .nav a:hover{background:var(--flaeche)}
  .nav a[aria-current]{background:var(--blau-flaeche);color:var(--blau-dunkel)}
  .nav a[aria-current]::after{display:none}
  .marke img{width:170px;height:59px}
}

/* Aktionsleiste am unteren Rand - auf dem Telefon ist die Offerten-
   Schaltflaeche damit auf jeder Seite und in jeder Scrollposition da. */
.aktionsleiste{
  position:fixed;left:0;right:0;bottom:0;z-index:55;
  display:grid;grid-template-columns:1fr 1fr;gap:10px;
  padding:10px var(--rand) calc(10px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.97);border-top:1px solid var(--linie);
  box-shadow:0 -4px 18px rgba(20,30,40,.08);
}
.aktionsleiste .knopf{width:100%;padding-block:12px}
body{padding-bottom:74px}
@media (min-width:760px){
  .aktionsleiste{display:none}
  body{padding-bottom:0}
}

/* ---------------------------------------------------------- Schaltflaechen */

.knopf{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:13px 22px;border-radius:9px;border:1px solid transparent;
  font:inherit;font-weight:600;line-height:1.25;text-decoration:none;
  cursor:pointer;text-align:center;
  transition:background-color .15s ease,border-color .15s ease,transform .15s ease;
}
.knopf svg{width:18px;height:18px;flex:0 0 auto}
.knopf:hover{transform:translateY(-1px)}
.knopf:active{transform:translateY(0)}
@media (prefers-reduced-motion:reduce){.knopf:hover{transform:none}}

.knopf-haupt{background:var(--blau);color:#fff;border-color:var(--blau)}
.knopf-haupt:hover{background:var(--blau-dunkel);border-color:var(--blau-dunkel);color:#fff}

.knopf-rand{background:#fff;color:var(--blau-dunkel);border-color:var(--blau-rand)}
.knopf-rand:hover{background:var(--blau-flaeche);border-color:var(--blau);color:var(--blau-tief)}

.knopf-gruen{background:var(--gruen);color:#23300A;border-color:var(--gruen)}
.knopf-gruen:hover{background:#88B11B;border-color:#88B11B;color:#1B2507}

.knopf-hell{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.55)}
.knopf-hell:hover{background:rgba(255,255,255,.24);border-color:#fff;color:#fff}

.knopf-reihe{display:flex;flex-wrap:wrap;gap:12px}

/* Diese beiden Regeln stehen bewusst NACH .knopf: bei gleicher Spezifitaet
   entscheidet die Reihenfolge, und .knopf setzt display:inline-flex. */
.kopf-cta{display:none;white-space:nowrap;padding-inline:18px}
@media (min-width:760px){.kopf-cta{display:inline-flex}}

/* ------------------------------------------------------------- Abschnitte */

.abschnitt{padding-block:clamp(48px,7vw,84px)}
.abschnitt-flaeche{background:var(--flaeche)}
.abschnitt-blau{background:var(--blau-flaeche)}
.abschnitt-eng{padding-block:clamp(34px,5vw,56px)}

.ueber{
  display:inline-flex;align-items:center;gap:9px;
  font-size:.8rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;
  color:var(--text-leise);margin-bottom:12px;
}
.ueber::before{content:"";width:22px;height:3px;border-radius:2px;background:var(--gruen)}

.lead{font-size:clamp(1.03rem,.98rem + .3vw,1.18rem);color:var(--text-leise);max-width:65ch}
.kopfblock{max-width:70ch;margin-bottom:clamp(26px,3.5vw,40px)}

/* ------------------------------------------------------------------ Hero */

.hero{position:relative;background:var(--dunkel-tief);color:#fff;overflow:hidden}
.hero-bild{position:absolute;inset:0;z-index:0}
.hero-bild picture,.hero-bild img{
  display:block;width:100%;height:100%;object-fit:cover;object-position:50% 42%;
}
.hero-schleier{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(180deg,rgba(15,22,29,.62) 0%,rgba(15,22,29,.72) 45%,rgba(15,22,29,.9) 100%),
    linear-gradient(90deg,rgba(11,40,62,.55) 0%,rgba(11,40,62,.1) 70%);
}
.hero-inhalt{position:relative;z-index:2;padding-block:clamp(56px,9vw,116px)}
.hero h1{color:#fff;max-width:17ch;margin-bottom:.45em}
.hero-lead{font-size:clamp(1.04rem,.98rem + .42vw,1.24rem);color:#E7EEF4;max-width:58ch;margin-bottom:26px}
.hero .knopf-reihe{margin-bottom:30px}
.hero-marker{
  display:inline-flex;align-items:center;gap:9px;
  background:rgba(149,193,30,.22);border:1px solid rgba(149,193,30,.5);
  color:#DCEFA8;border-radius:100px;padding:6px 14px;
  font-size:.83rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  margin-bottom:18px;
}
.hero-punkte{
  list-style:none;margin:0;padding:0;
  display:grid;gap:10px 26px;
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  max-width:760px;
}
.hero-punkte li{display:flex;align-items:flex-start;gap:10px;color:#DCE6ED;font-size:.97rem;line-height:1.45}
.hero-punkte svg{width:19px;height:19px;color:var(--gruen);flex:0 0 auto;margin-top:2px}

/* Kopfband der Unterseiten */
.band{position:relative;background:var(--dunkel-tief);color:#fff;overflow:hidden}
.band-bild{position:absolute;inset:0;z-index:0}
.band-bild picture,.band-bild img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 45%}
.band-schleier{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(15,22,29,.70),rgba(15,22,29,.88));
}
.band-inhalt{position:relative;z-index:2;padding-block:clamp(38px,6vw,68px)}
.band h1{color:#fff;margin-bottom:.3em}
.band .lead{color:#E2EBF1}
.band .ueber{color:#DDE9F2}

/* Farben der Brotkrumen auf dem dunklen Band. Gemessen gegen die
   dunkelste Stelle der abgedunkelten Fotos - unter #D6D6D6 reisst der
   Kontrast dort. */
.krumen{font-size:.86rem;margin-bottom:14px;color:#DDE9F2}
.krumen ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}
.krumen li::after{content:"›";margin-left:6px;opacity:.6}
.krumen li:last-child::after{content:""}
.krumen a{color:#EDF4F9}
.krumen a:hover{color:#fff}

/* Dieselbe Leiste auf weissem Grund (Impressum, Datenschutz, 404). */
.krumen-hell{color:var(--text-leise)}
.krumen-hell a{color:var(--blau-dunkel)}
.krumen-hell a:hover{color:var(--blau-tief)}
.krumen-hell li::after{opacity:.5}

/* ------------------------------------------------------------------ Raster */

.raster{display:grid;gap:clamp(16px,2.2vw,26px)}
.raster-2{grid-template-columns:1fr}
.raster-3{grid-template-columns:1fr}
.raster-4{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:620px){
  .raster-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .raster-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:920px){
  .raster-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .raster-4{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* ----------------------------------------------------------------- Kacheln */

.kachel{
  display:flex;flex-direction:column;
  background:#fff;border:1px solid var(--linie);border-radius:var(--radius-gross);
  overflow:hidden;min-width:0;
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
a.kachel{text-decoration:none;color:inherit}
a.kachel:hover{border-color:var(--blau-rand);box-shadow:var(--schatten-hoch);transform:translateY(-3px)}
@media (prefers-reduced-motion:reduce){a.kachel:hover{transform:none}}

.kachel-bild{position:relative;background:var(--flaeche);overflow:hidden}
.kachel-bild picture{display:block}
.kachel-bild img{display:block;width:100%;height:auto}
a.kachel:hover .kachel-bild img{transform:scale(1.035)}
.kachel-bild img{transition:transform .35s ease}
@media (prefers-reduced-motion:reduce){a.kachel:hover .kachel-bild img{transform:none}}

.kachel-text{padding:20px 20px 22px;display:flex;flex-direction:column;flex:1 1 auto}
.kachel-text h3{margin-bottom:.35em}
.kachel-text p{color:var(--text-leise);font-size:.97rem}
.kachel-mehr{
  margin-top:auto;padding-top:14px;
  display:inline-flex;align-items:center;gap:7px;
  font-weight:600;color:var(--blau-dunkel);font-size:.95rem;
}
.kachel-mehr svg{width:17px;height:17px;transition:transform .16s ease}
a.kachel:hover .kachel-mehr svg{transform:translateX(3px)}
@media (prefers-reduced-motion:reduce){a.kachel:hover .kachel-mehr svg{transform:none}}

/* ---------------------------------------------------------------- Ablauf */

.ablauf{list-style:none;margin:0;padding:0;counter-reset:schritt;display:grid;gap:4px}
.ablauf li{
  counter-increment:schritt;
  display:grid;grid-template-columns:auto 1fr;gap:16px;
  padding:18px 0;border-bottom:1px solid var(--linie);
}
.ablauf li:last-child{border-bottom:0}
.ablauf li::before{
  content:counter(schritt,decimal-leading-zero);
  font-size:.92rem;font-weight:700;letter-spacing:.04em;
  color:var(--blau);
  background:var(--blau-flaeche);border-radius:8px;
  width:40px;height:40px;display:flex;align-items:center;justify-content:center;
}
.ablauf h3{margin-bottom:.25em;font-size:1.06rem}
.ablauf p{color:var(--text-leise);font-size:.97rem}

/* -------------------------------------------------------- Sanierungsfaelle */

.fall{
  display:grid;gap:22px;align-items:start;
  background:#fff;border:1px solid var(--linie);border-radius:var(--radius-gross);
  padding:clamp(18px,2.6vw,28px);
}
@media (min-width:760px){
  .fall{grid-template-columns:minmax(200px,260px) 1fr;gap:clamp(24px,3vw,40px)}
}
.fall-bild{background:var(--flaeche);border-radius:var(--radius);overflow:hidden;padding:10px}
.fall-bild img{display:block;width:100%;height:auto;mix-blend-mode:multiply}
.fall h3{margin-bottom:.4em}
.fall p{color:var(--text-leise)}
.fall .detail{
  margin-top:14px;padding:14px 16px;border-left:3px solid var(--gruen);
  background:var(--gruen-flaeche);border-radius:0 var(--radius) var(--radius) 0;
  font-size:.96rem;color:var(--text);
}
.faelle{display:grid;gap:clamp(16px,2.2vw,24px)}

/* ------------------------------------------------------------- Systemblock */

.system{
  display:grid;gap:22px;align-items:center;
  padding-block:clamp(26px,3.4vw,42px);
  border-top:1px solid var(--linie);
}
.system:first-of-type{border-top:0;padding-top:0}
@media (min-width:780px){
  .system{grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:clamp(26px,4vw,52px)}
  .system:nth-child(even) .system-bild{order:2}
}
.system-bild{
  /* Weiss, nicht grau: die Freisteller bringen ihren eigenen weissen Grund
     mit - auf einer grauen Kachel entstuende ein weisser Kasten im Kasten. */
  background:#fff;border:1px solid var(--linie);
  border-radius:var(--radius-gross);overflow:hidden;
  display:flex;align-items:center;justify-content:center;padding:20px;
}
/* Die Freisteller behalten ihr eigenes Verhaeltnis (bis 1:2.7). Statt sie
   zu beschneiden, begrenzt hier die Hoehe - width:auto haelt das
   Verhaeltnis, max-width verhindert das Ueberlaufen auf schmalen Schirmen. */
.system-bild img{display:block;width:auto;max-width:100%;max-height:400px;height:auto}
.system h3{margin-bottom:.15em}
.system .unter{color:var(--blau-dunkel);font-weight:600;margin-bottom:.7em;font-size:1rem}
.system p{color:var(--text-leise)}

/* ------------------------------------------------------------ Sicherheit */

.stufen{display:grid;gap:18px}
@media (min-width:900px){.stufen{grid-template-columns:repeat(3,minmax(0,1fr))}}
.stufe{
  background:#fff;border:1px solid var(--linie);border-radius:var(--radius-gross);
  padding:22px;display:flex;flex-direction:column;
}
.stufe-kopf{padding-bottom:14px;border-bottom:1px solid var(--linie);margin-bottom:16px}
.stufe h3{margin-bottom:.2em;font-size:1.1rem}
.stufe .norm{font-size:.88rem;color:var(--text-leise)}
.stufe dl{margin:0;display:grid;gap:14px}
.stufe dt{
  font-size:.76rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--blau-dunkel);margin-bottom:3px;
}
.stufe dd{margin:0;font-size:.95rem;color:var(--text-leise)}

/* ------------------------------------------------------------ Downloads */

.download{
  display:flex;align-items:center;gap:10px;
  font-weight:600;color:var(--blau-dunkel);text-decoration:none;
  border:1px solid var(--blau-rand);background:#fff;
  border-radius:9px;padding:10px 15px;font-size:.95rem;
  align-self:flex-start;
}
.download:hover{background:var(--blau-flaeche);border-color:var(--blau)}
.download svg{width:18px;height:18px;flex:0 0 auto}
.download .gr{color:var(--text-leise);font-weight:400;font-size:.86rem}

.merkblatt{
  display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;
  background:#fff;border:1px solid var(--linie);border-radius:var(--radius-gross);
  padding:20px;text-decoration:none;color:inherit;
  transition:border-color .16s ease,box-shadow .16s ease;
}
.merkblatt:hover{border-color:var(--blau-rand);box-shadow:var(--schatten)}
.merkblatt img{
  display:block;width:96px;height:auto;border-radius:6px;
  border:1px solid var(--linie);background:#fff;
}
.merkblatt h3{margin-bottom:.3em;font-size:1.06rem}
.merkblatt p{color:var(--text-leise);font-size:.95rem;margin-bottom:.7em}
.merkblatt .pdf-marke{
  display:inline-flex;align-items:center;gap:7px;
  font-weight:600;color:var(--blau-dunkel);font-size:.9rem;
}
.merkblatt .pdf-marke svg{width:16px;height:16px}

/* ----------------------------------------------------------------- Team */

.team{
  display:grid;gap:clamp(14px,2vw,22px);
  grid-template-columns:repeat(auto-fill,minmax(min(170px,45%),1fr));
}
.person{text-align:left;min-width:0}
.person picture{display:block;border-radius:var(--radius);overflow:hidden;background:var(--flaeche)}
.person img{display:block;width:100%;height:auto}
.person .name{display:block;font-weight:600;margin-top:11px;line-height:1.3}
.person .rolle{display:block;color:var(--text-leise);font-size:.9rem;line-height:1.35}

/* ------------------------------------------------------------- Galerie */

.galerie{display:grid;gap:clamp(10px,1.6vw,16px);grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:820px){.galerie{grid-template-columns:repeat(3,minmax(0,1fr))}}
.galerie figure{margin:0;min-width:0}
.galerie button{
  display:block;width:100%;padding:0;border:0;background:var(--flaeche);
  border-radius:var(--radius);overflow:hidden;cursor:zoom-in;line-height:0;
}
.galerie img{display:block;width:100%;height:auto;transition:transform .35s ease}
.galerie button:hover img{transform:scale(1.04)}
@media (prefers-reduced-motion:reduce){.galerie button:hover img{transform:none}}
.galerie figcaption{
  font-size:.85rem;color:var(--text-leise);line-height:1.4;
  margin-top:8px;
}

dialog.gross{
  border:0;padding:0;background:transparent;max-width:min(96vw,1200px);max-height:92vh;
}
dialog.gross::backdrop{background:rgba(16,24,32,.86)}
dialog.gross img{display:block;max-width:100%;max-height:82vh;width:auto;height:auto;border-radius:8px}
dialog.gross figcaption{color:#DDE6ED;font-size:.92rem;margin-top:10px;text-align:center}
.gross-zu{
  position:absolute;top:-6px;right:-6px;
  background:#fff;border:0;border-radius:50%;width:40px;height:40px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  box-shadow:var(--schatten);
}
.gross-zu svg{width:20px;height:20px}
dialog.gross figure{margin:0;position:relative}

/* -------------------------------------------------------------- Referenzen */

.referenzen{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.referenzen li{
  display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start;
  padding:14px 0;border-bottom:1px solid var(--linie);
}
.referenzen li:last-child{border-bottom:0}
.referenzen svg{width:18px;height:18px;color:var(--gruen-dunkel);margin-top:4px;flex:0 0 auto}
.referenzen .wer{font-weight:600}
.referenzen .was{display:block;color:var(--text-leise);font-size:.94rem}

/* ----------------------------------------------------------------- Kontakt */

.kontaktkarte{
  background:#fff;border:1px solid var(--linie);border-radius:var(--radius-gross);
  padding:clamp(20px,2.6vw,28px);
}
.kontaktliste{list-style:none;margin:0;padding:0;display:grid;gap:18px}
.kontaktliste li{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start}
.kontaktliste svg{width:21px;height:21px;color:var(--blau);margin-top:3px}
.kontaktliste .beschriftung{
  display:block;font-size:.76rem;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--text-leise);margin-bottom:2px;
}
.kontaktliste a{font-weight:600;color:var(--dunkel);text-decoration:none}
.kontaktliste a:hover{color:var(--blau-dunkel);text-decoration:underline}

.zeiten{width:100%;border-collapse:collapse;font-size:.96rem}
.zeiten th{text-align:left;font-weight:500;color:var(--text-leise);padding:7px 0;white-space:nowrap}
.zeiten td{text-align:right;padding:7px 0;font-variant-numeric:tabular-nums}
.zeiten tr+tr th,.zeiten tr+tr td{border-top:1px solid var(--linie)}
.zeiten .zu td{color:var(--text-leise)}
.zeiten .heute th,.zeiten .heute td{background:var(--blau-flaeche);font-weight:600;color:var(--blau-tief)}
.zeiten .heute th{padding-left:8px;border-radius:6px 0 0 6px}
.zeiten .heute td{padding-right:8px;border-radius:0 6px 6px 0}

/* ----------------------------------------------------------------- Aufruf */

.aufruf-hell{
  background:var(--blau-flaeche);border:1px solid var(--blau-rand);
  border-radius:var(--radius-gross);padding:clamp(24px,3.4vw,40px);
  display:grid;gap:20px;align-items:center;
}
@media (min-width:820px){.aufruf-hell{grid-template-columns:1fr auto;gap:32px}}
.aufruf-hell h2{margin-bottom:.3em}
.aufruf-hell p{color:var(--text-leise);max-width:52ch;margin:0}

.aufruf{
  background:var(--blau-tief);color:#fff;border-radius:var(--radius-gross);
  padding:clamp(26px,4vw,48px);
  display:grid;gap:22px;align-items:center;
}
@media (min-width:820px){.aufruf{grid-template-columns:1fr auto;gap:36px}}
.aufruf h2{color:#fff;margin-bottom:.3em}
.aufruf p{color:#CFE1EE;max-width:52ch;margin:0}
.aufruf .knopf-reihe{flex-wrap:wrap}

/* ----------------------------------------------------------------- Formular */

.formular{display:grid;gap:16px}
.feld{display:grid;gap:6px}
.feld-paar{display:grid;gap:16px}
@media (min-width:560px){.feld-paar{grid-template-columns:1fr 1fr}}
.feld label{font-weight:600;font-size:.93rem}
.feld .hinweis{font-size:.84rem;color:var(--text-leise);font-weight:400}
.feld input,.feld textarea,.feld select{
  font:inherit;font-size:1rem;color:var(--text);
  padding:11px 13px;border:1px solid #CBD2D8;border-radius:9px;background:#fff;
  width:100%;
}
.feld textarea{min-height:140px;resize:vertical}
.feld input:focus,.feld textarea:focus,.feld select:focus{
  border-color:var(--blau);outline:2px solid var(--blau-rand);outline-offset:0;
}
.pflicht{color:#B3261E}

/* -------------------------------------------------------------- Stellen */

.stelle{
  background:#fff;border:1px solid var(--linie);border-radius:var(--radius-gross);
  padding:clamp(22px,3vw,34px);
}
.stelle+.stelle{margin-top:clamp(18px,2.4vw,28px)}
.stelle .antritt{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--gruen-flaeche);border:1px solid #D6E7A8;color:#3E5209;
  border-radius:100px;padding:5px 13px;font-size:.85rem;font-weight:600;
  margin-bottom:14px;
}
.stelle h3{
  font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--blau-dunkel);margin:26px 0 10px;font-weight:700;
}
.haken{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.haken li{display:grid;grid-template-columns:auto 1fr;gap:11px;align-items:start;font-size:.97rem}
.haken svg{width:18px;height:18px;color:var(--gruen-dunkel);margin-top:4px}

/* ---------------------------------------------------------------- Karte */

.karte{
  position:relative;background:var(--flaeche);border:1px solid var(--linie);
  border-radius:var(--radius-gross);overflow:hidden;
  aspect-ratio:16/9;max-height:440px;
}
.karte iframe{display:block;width:100%;height:100%;border:0}
.karte-platz{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;text-align:center;
  padding:24px;background:var(--flaeche);
}
.karte-platz p{color:var(--text-leise);font-size:.93rem;max-width:40ch;margin:0}
.karte-platz a{padding:10px 6px;display:inline-block}

/* ----------------------------------------------------------------- Text */

.textseite h2{margin-top:2em}
.textseite h2:first-child{margin-top:0}
.textseite h3{margin-top:1.6em;font-size:1.08rem}
.textseite ul{padding-left:1.25em;color:var(--text-leise)}
.textseite li{margin-bottom:.4em}
.textseite .stand{color:var(--text-leise);font-size:.92rem}

.hinweisbox{
  background:var(--blau-flaeche);border:1px solid var(--blau-rand);
  border-radius:var(--radius);padding:16px 18px;font-size:.96rem;
}
.hinweisbox a{display:inline-block;padding-block:9px}

/* ---------------------------------------------------------------- Fusszeile */

.fuss{background:var(--dunkel-tief);color:#C9D5DE;padding-block:clamp(40px,5vw,62px);margin-top:0}
.fuss a{color:#DCE8F0}
.fuss a:hover{color:#fff}
.fuss-raster{display:grid;gap:30px}
@media (min-width:700px){.fuss-raster{grid-template-columns:1.4fr 1fr 1fr}}
.fuss h2{color:#fff;font-size:.82rem;letter-spacing:.11em;text-transform:uppercase;margin-bottom:14px}
.fuss ul{list-style:none;margin:0;padding:0;display:grid;gap:0;font-size:.96rem}
.fuss ul a{display:inline-block;padding-block:9px}
.fuss-marke a{display:inline-block;margin-bottom:16px;border-radius:8px}
.fuss-marke img{width:186px;height:65px;display:block;
  background:#fff;border-radius:8px;padding:8px}
.fuss-marke p{font-size:.95rem;max-width:34ch}
.fuss address{font-style:normal;font-size:.96rem;line-height:1.7}
.fuss-unten{
  margin-top:34px;padding-top:20px;border-top:1px solid rgba(255,255,255,.14);
  display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center;
  font-size:.9rem;color:#9FB1BE;
}
.fuss-unten nav{display:flex;flex-wrap:wrap;gap:0 10px;margin-left:auto}
.fuss-unten nav a{padding:10px 4px}
.sozial{display:flex;gap:10px;margin-top:14px}
.sozial a{
  display:flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:9px;
  background:rgba(255,255,255,.1);color:#fff;
}
.sozial a:hover{background:var(--blau)}
.sozial svg{width:19px;height:19px}

/* -------------------------------------------------------------- Auftritt */

.auftritt{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.auftritt.da{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .auftritt{opacity:1;transform:none;transition:none}
}
.kein-js .auftritt{opacity:1;transform:none}

/* --------------------------------------------- Abstands- und Lagehelfer
   Diese Klassen ersetzen die frueheren style="..."-Attribute. Die
   Content-Security-Policy erlaubt keine Inline-Stile: live werden sie
   kommentarlos verworfen, und die Seite sieht anders aus als lokal. */
.mittig{align-items:center}
.weit{align-items:start;gap:clamp(24px,4vw,48px)}
.spalten{gap:0 clamp(24px,4vw,56px)}
.abstand{margin-top:20px}
.abstand-klein{margin-top:12px}
.karten-titel{font-size:1.1rem}
.lead-formular{margin-bottom:20px}

/* --------------------------------------------------------------- Diverses */

.nur-lesbar{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;border:0;
}
.tabelle-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.grenze{color:var(--text-leise);font-size:.9rem}
