/* =====================================================================
   Faszination Brasilien - einzige Stylesheet-Quelle.
   Typografie und Abstaende fluid ueber clamp(), keine Breakpoint-Treppen.
   Kontraste geprueft: Fliesstext und Links mindestens 4,5:1.
   ===================================================================== */

@font-face{font-family:Fraunces;src:url(fonts/fraunces-var.woff2)format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:Outfit;src:url(fonts/Outfit-Latin.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Outfit;src:url(fonts/Outfit-LatinExt.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  --gruen:#009739; --gruen-tief:#046c31; --gruen-nacht:#06301b;
  --gelb:#ffdf00; --gelb-warm:#ffc400;
  --blau:#002776;
  --nacht:#101a14; --grau:#4a5d52; --sand:#fbf7f0; --sand-tief:#f2ebdf; --weiss:#fff;

  --step--1:clamp(.875rem,.85rem + .12vw,.95rem);
  --step-0:clamp(1rem,.96rem + .22vw,1.125rem);
  --step-1:clamp(1.2rem,1.12rem + .4vw,1.5rem);
  --step-2:clamp(1.45rem,1.3rem + .75vw,2.05rem);
  --step-3:clamp(1.75rem,1.45rem + 1.5vw,2.9rem);
  --step-4:clamp(2.1rem,1.5rem + 3vw,4.4rem);
  --step-5:clamp(2.6rem,1.5rem + 5.2vw,6.2rem);

  --space-2xs:clamp(.35rem,.33rem + .1vw,.45rem);
  --space-xs:clamp(.6rem,.55rem + .25vw,.85rem);
  --space-s:clamp(.9rem,.8rem + .5vw,1.35rem);
  --space-m:clamp(1.4rem,1.2rem + 1vw,2.2rem);
  --space-l:clamp(2.2rem,1.8rem + 2vw,3.6rem);
  --space-xl:clamp(3.2rem,2.4rem + 4vw,6rem);
  --space-2xl:clamp(4.5rem,3rem + 7vw,9rem);

  --breite:78rem;
  --rund:14px;
  --ease:cubic-bezier(.16,1,.3,1);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--sand);color:var(--nacht);
  font-family:Outfit,"Segoe UI",sans-serif;font-size:var(--step-0);line-height:1.65;
  text-rendering:optimizeLegibility}
h1,h2,h3,h4{font-family:Fraunces,Georgia,serif;font-variation-settings:"SOFT" 40,"WONK" 1;
  line-height:1.08;margin:0 0 var(--space-s);letter-spacing:-.015em}
h1{font-size:var(--step-4);font-weight:700}
h2{font-size:var(--step-3);font-weight:600}
h3{font-size:var(--step-1);font-weight:600;line-height:1.2}
h4{font-size:var(--step-0);font-weight:600}
p,ul,ol{margin:0 0 var(--space-s)}
p{max-width:68ch}
a{color:var(--gruen-tief);text-underline-offset:.18em;text-decoration-thickness:.08em}
a:hover{color:var(--nacht)}
:focus-visible{outline:3px solid var(--blau);outline-offset:3px;border-radius:4px}
img{max-width:100%;height:auto}
strong{font-weight:600}
abbr[title]{text-decoration:underline dotted;cursor:help}

.huelle{width:min(100% - 2*var(--space-m),var(--breite));margin-inline:auto}
.skip{position:absolute;left:-9999px;top:0;background:var(--blau);color:#fff;
  padding:.75rem 1.25rem;z-index:99}
.skip:focus{left:0}
.nur-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Amtlich-Band ---------- */
.amtlich{background:var(--gelb);color:var(--nacht);border-bottom:4px solid var(--nacht)}
.amtlich .huelle{display:grid;grid-template-columns:auto 1fr;gap:var(--space-s);
  padding-block:var(--space-s)}
.amtlich svg{width:2.1rem;height:2.1rem;flex:none;margin-top:.15rem}
.amtlich h2{font-family:Outfit,sans-serif;font-size:var(--step-0);font-weight:700;
  letter-spacing:0;margin:0 0 .35rem;line-height:1.3}
.amtlich p{font-size:var(--step--1);margin:0;max-width:75ch}
.amtlich a{color:var(--nacht);font-weight:600}
.amtlich dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));
  gap:var(--space-xs) var(--space-l);margin:var(--space-xs) 0;font-size:var(--step--1)}
.amtlich dl > div{min-width:0}
.amtlich dt{font-weight:700}
.amtlich dd{margin:0}

/* Kompakte Variante fuer alle Unterseiten: eine Zeile, auf Wunsch ausklappbar.
   <details> bringt Tastaturbedienung und Zustandsanzeige von Haus aus mit. */
.amtlich.kompakt .huelle{display:block;padding-block:0}
.amtlich.kompakt summary{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
  min-height:2.75rem;padding-block:.55rem;cursor:pointer;list-style:none;font-weight:700}
.amtlich.kompakt summary::-webkit-details-marker{display:none}
.amtlich.kompakt summary svg{width:1.4rem;height:1.4rem;margin:0;flex:none}
.amtlich.kompakt .satz{font-size:var(--step--1)}
.amtlich.kompakt .mehr{margin-left:auto;font-weight:600;font-size:var(--step--1);
  text-decoration:underline;text-underline-offset:.18em;white-space:nowrap}
.amtlich.kompakt .mehr::after{content:" ▾";text-decoration:none}
.amtlich.kompakt details[open] .mehr::after{content:" ▴"}
.amtlich.kompakt .mehr .zu{display:none}
.amtlich.kompakt details[open] .mehr .auf{display:none}
.amtlich.kompakt details[open] .mehr .zu{display:inline}
.amtlich.kompakt .ausklapp{padding-bottom:var(--space-s)}
.amtlich.kompakt .ausklapp p:first-child{margin-top:0}
.amtlich.kompakt summary:focus-visible{outline:3px solid var(--nacht);outline-offset:2px}
@media (max-width:34rem){
  .amtlich.kompakt .mehr{margin-left:0;width:100%}
}

/* ---------- Kopf ---------- */
.kopf{background:var(--gruen-nacht);color:#fff}
.kopf .huelle{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-s);
  padding-block:var(--space-xs)}
.marke{display:flex;align-items:center;gap:.7rem;margin-right:auto;
  font-family:Fraunces,serif;font-size:var(--step-1);font-weight:600;color:#fff;
  text-decoration:none}
/* Gleiche Falle wie im Fuss: a:hover (Pseudoklasse) schlaegt .marke (Klasse) und
   faerbt den Schriftzug auf var(--nacht), Kontrast 1,23 zu 1 auf dem dunkelgruenen
   Kopf. Das Logo soll beim Ueberfahren schlicht weiss bleiben. */
.marke:hover,.marke:focus-visible{color:#fff}
.marke img{width:2.6rem;height:2.6rem}
.marke span{display:block;font-family:Outfit,sans-serif;font-size:.62rem;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;color:var(--gelb)}
.nav ul{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-s);
  list-style:none;margin:0;padding:0}
.nav a{display:inline-block;min-height:2.75rem;padding:.6rem .1rem;color:#fff;
  font-weight:500;text-decoration:none;border-bottom:2px solid transparent}
.nav a:hover,.nav a:focus-visible{color:var(--gelb);border-bottom-color:var(--gelb)}
.nav [aria-current=page]{color:var(--gelb);border-bottom-color:var(--gelb)}

/* ---------- Brotkrumen ---------- */
.krumen{font-size:var(--step--1);color:var(--grau);padding-block:var(--space-s) 0}
.krumen ol{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:0;padding:0}
.krumen li::after{content:"›";margin-left:.4rem;color:var(--grau)}
.krumen li:last-child::after{content:none}

/* ---------- Hero ---------- */
.hero{position:relative;color:#fff;overflow:hidden;
  background:radial-gradient(120% 90% at 15% 0%,#00a13d 0%,var(--gruen) 45%,#007c2f 100%);
  padding-block:var(--space-2xl) calc(var(--space-2xl) + 5vw)}
/* Das Band ist ein einzelnes, nicht kachelbares Bild im Verhaeltnis 3,94:1.
   Deshalb no-repeat und contain: so wird nie eine Bergspitze abgeschnitten,
   und auf sehr breiten Schirmen laeuft es mittig aus statt sich zu wiederholen.
   Die Hoehe folgt mit 25,4vw genau dem Seitenverhaeltnis. */
.hero::after{content:"";position:absolute;inset:auto 0 -1px 0;height:min(25.4vw,22rem);
  background:url(img/skyline-band.png) no-repeat bottom center/contain;opacity:.22;
  pointer-events:none}
.hero .huelle{position:relative;z-index:1}
.hero h1{font-size:var(--step-5);max-width:16ch;text-wrap:balance}
.hero .vorspann{font-size:var(--step-1);font-weight:500;max-width:46ch;color:#eafff0}
.hero .betont{display:block;color:var(--gelb)}

/* Hero mit Ortsbild: das Bild traegt die Flaeche, ein Verlauf sichert den Text */
.hero.mitbild{background:var(--gruen-nacht)}
.hero.mitbild::after{content:none}
.hero-bild{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:center 40%}
.hero.mitbild::before{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(100deg,rgba(6,48,27,.92) 0%,rgba(6,48,27,.72) 38%,
    rgba(6,48,27,.15) 72%,rgba(6,48,27,.05) 100%)}
@media (max-width:46rem){
  .hero.mitbild::before{background:linear-gradient(180deg,rgba(6,48,27,.55) 0%,
    rgba(6,48,27,.88) 55%,rgba(6,48,27,.94) 100%)}
}
.bildnachweis{margin-block:0;padding-block:var(--space-xs);font-size:var(--step--1);
  color:var(--grau);max-width:none}

/* schmalere Variante fuer Unterseiten */
.hero.klein{padding-block:var(--space-xl)}
.hero.klein h1{font-size:var(--step-4);max-width:22ch}
.hero.klein::after{height:min(20vw,9rem);opacity:.18}
.hero .meta{display:flex;flex-wrap:wrap;gap:var(--space-s);margin:0;padding:0;
  list-style:none;font-size:var(--step--1);color:#eafff0}
.hero .meta li{background:rgba(255,255,255,.14);border-radius:999px;padding:.35rem .9rem}

.cta{display:inline-flex;align-items:center;gap:.6rem;min-height:3rem;
  padding:.85rem 1.6rem;border-radius:999px;background:var(--gelb);color:var(--nacht);
  font-weight:700;text-decoration:none;
  transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.cta:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(4,48,27,.45);color:var(--nacht)}

/* ---------- Sektionen ---------- */
section{padding-block:var(--space-xl)}
.intro{max-width:58ch}
.intro h2{margin-bottom:var(--space-xs)}
.lead{font-size:var(--step-1);color:var(--grau)}
.hell{background:var(--weiss);border-block:1px solid var(--sand-tief)}
/* Die Textspalte begrenzen p, ul und ol selbst. Der Container bleibt in der
   Seitenbreite, damit Tabellen und Ueberschriften am Raster ausgerichtet bleiben. */
.prosa h2{margin-top:var(--space-l)}
.prosa h3{margin-top:var(--space-m)}
.prosa h2,.prosa h3{max-width:34ch}

/* Rubriken: bewusst ungleiche Kacheln statt drei gleicher Cards */
.rubriken{display:grid;gap:var(--space-s);grid-template-columns:repeat(6,1fr);
  margin-top:var(--space-l)}
.rubrik{grid-column:span 6;position:relative;display:flex;flex-direction:column;
  justify-content:flex-end;min-height:14rem;padding:var(--space-m);border-radius:var(--rund);
  color:#fff;text-decoration:none;overflow:hidden;transition:transform .5s var(--ease)}
.rubrik:hover{transform:translateY(-4px);color:#fff}
/* 115 Prozent Breite, damit der Hover-Versatz von 1,5rem rechts keine Luecke
   aufreisst. Ohne Kachelung gaebe es dort sonst blanken Hintergrund. */
.rubrik::after{content:"";position:absolute;inset:auto 0 0 0;height:6.5rem;
  background:url(img/skyline-band.png) no-repeat bottom/115% auto;opacity:.18;
  transition:transform .7s var(--ease)}
.rubrik:hover::after{transform:translateX(-1.5rem)}
.rubrik h3,.rubrik p{position:relative;z-index:1}
.rubrik p{margin:0;font-size:var(--step--1);color:rgba(255,255,255,.9);max-width:none}
.r-tanz{background:linear-gradient(160deg,#0b7a35,#04381d)}
.r-feste{background:linear-gradient(160deg,#e09400,#7a4400)}
.r-sport{background:linear-gradient(160deg,#00408f,var(--blau))}
.r-natur{background:linear-gradient(160deg,#0e6b57,#06301b)}
@media (min-width:46rem){
  .rubrik{grid-column:span 3}
  .r-tanz{grid-column:span 4;min-height:18rem}
  .r-feste{grid-column:span 2}
  .r-sport{grid-column:span 2}
  .r-natur{grid-column:span 4;min-height:18rem}
}

/* ---------- Tabellen ---------- */
.tabelle{margin-top:var(--space-m);overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;min-width:34rem;border-collapse:collapse;font-variant-numeric:tabular-nums}
caption{text-align:left;font-size:var(--step--1);color:var(--grau);margin-bottom:var(--space-xs)}
th,td{padding:.7rem .6rem;text-align:left;border-bottom:1px solid var(--sand-tief)}
th{font-weight:700}
td.num,th.num{text-align:right}
tbody tr:hover{background:var(--sand)}
.hell tbody tr:hover{background:var(--sand)}

/* ---------- Kennzahlen ---------- */
.kennzahlen{display:grid;gap:var(--space-s);margin-top:var(--space-m);
  grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}
.kennzahl{background:var(--weiss);border:1px solid var(--sand-tief);border-radius:var(--rund);
  padding:var(--space-s)}
.kennzahl dt{font-size:var(--step--1);color:var(--grau);margin-bottom:.2rem}
.kennzahl dd{margin:0;font-family:Fraunces,serif;font-size:var(--step-2);font-weight:600;
  line-height:1.1;font-variant-numeric:tabular-nums}
.kennzahl .zusatz{display:block;font-family:Outfit,sans-serif;font-size:var(--step--1);
  font-weight:400;color:var(--grau);margin-top:.25rem}

/* ---------- Chips ---------- */
.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:var(--space-m);padding:0;list-style:none}
.chips a{display:inline-block;min-height:2.75rem;padding:.6rem 1rem;background:var(--weiss);
  border:1px solid var(--sand-tief);border-radius:999px;color:var(--nacht);
  text-decoration:none;font-size:var(--step--1);font-weight:500;
  transition:transform .3s var(--ease),border-color .3s var(--ease)}
.chips a:hover{transform:translateY(-2px);border-color:var(--gruen);color:var(--gruen-tief)}
.chips .zahl{color:var(--grau)}

/* ---------- Service-Band ---------- */
.service{background:var(--gruen-nacht);color:#eafff0}
.service h2,.service h3{color:#fff}
.service .lead{color:#bfe6cd}
.service a{color:var(--gelb)}
/* Ohne eigene Regel gaebe es hier gar keinen Hover: `.service a` und das globale
   `a:hover` haben dieselbe Spezifitaet (0,1,1), die spaetere Regel gewinnt und
   die Farbe bleibt gelb. Weiss auf --gruen-nacht sind 14,5 zu 1. */
.service a:hover,.service a:focus-visible{color:#fff;text-decoration-thickness:.12em}
.service .spalten{display:grid;gap:var(--space-m);margin-top:var(--space-m);
  grid-template-columns:repeat(auto-fit,minmax(17rem,1fr))}
.service h3{font-size:var(--step-0);font-family:Outfit,sans-serif;font-weight:700}
.service p{font-size:var(--step--1);margin-bottom:0}

/* ---------- Fuss ---------- */
footer{background:var(--nacht);color:#cdd8d1;padding-block:var(--space-l);font-size:var(--step--1)}
footer a{color:#fff}
/* Ohne diese Zeile greift das globale a:hover mit var(--nacht) - und das ist
   exakt die Hintergrundfarbe des Fusses. Die Links verschwaenden im Hover
   vollstaendig (Kontrast 1,00 zu 1). `a:hover` schlaegt `footer a`, weil eine
   Pseudoklasse hoeher wiegt als ein zweites Element. Gelb wie in der Navigation,
   13,4 zu 1. */
footer a:hover,footer a:focus-visible{color:var(--gelb)}
footer ul{display:flex;flex-wrap:wrap;gap:var(--space-s);list-style:none;padding:0;
  margin:0 0 var(--space-s)}
footer p{max-width:80ch}

/* ---------- Ladeanimation ---------- */
@media (prefers-reduced-motion:no-preference){
  .auf{opacity:0;transform:translateY(18px);animation:auf .9s var(--ease) forwards}
  .auf:nth-child(2){animation-delay:.08s}
  .auf:nth-child(3){animation-delay:.16s}
  @keyframes auf{to{opacity:1;transform:none}}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}
}

/* ---------- Vertretungen und Inhaltsseiten ---------- */
.anschrift{font-style:normal;background:var(--weiss);border:1px solid var(--sand-tief);
  border-left:5px solid var(--gruen);border-radius:var(--rund);padding:var(--space-s);
  margin:var(--space-s) 0;line-height:1.7;max-width:34rem}
.service-liste{display:grid;gap:var(--space-m);margin-top:var(--space-m);
  grid-template-columns:repeat(auto-fit,minmax(20rem,1fr))}
.service-liste h3{margin-bottom:.3rem}
.service-liste p{font-size:var(--step--1)}
.prosa ul,.prosa ol{max-width:68ch;padding-left:1.3rem}
.prosa li{margin-bottom:.35rem}
.hinweis{background:#fff8d6;border:1px solid #e8d78a;border-radius:var(--rund);
  padding:var(--space-s);max-width:68ch}
.hinweis p:last-child{margin-bottom:0}
.zweispalt{display:grid;gap:var(--space-m);grid-template-columns:repeat(auto-fit,minmax(18rem,1fr))}
.raetsel{background:var(--weiss);border:1px solid var(--sand-tief);border-radius:var(--rund);
  padding:var(--space-m);margin-top:var(--space-m)}
.raetsel label{display:block;font-weight:600;margin-bottom:.3rem}
.raetsel input,.raetsel select{min-height:2.75rem;padding:.5rem .7rem;font-size:1rem;
  border:1px solid #cfc6b6;border-radius:8px;background:#fff}
.raetsel .felder{display:flex;flex-wrap:wrap;gap:var(--space-s);align-items:end}
.raetsel button{min-height:2.75rem;padding:.6rem 1.4rem;border:0;border-radius:999px;
  background:var(--gruen-tief);color:#fff;font-weight:600;cursor:pointer}
.treffer{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:var(--space-s) 0 0}
.treffer li{background:var(--sand);border:1px solid var(--sand-tief);border-radius:999px;
  padding:.35rem .8rem;font-size:var(--step--1)}
