/* ==========================================================================
   Rhön Harmonika · Design-System
   Bühne und Werkstatt: große Bilder, große Schrift, Holz und Grün als Marke.
   ========================================================================== */

/* ---------- Schriften (selbst gehostet) ---------- */
@font-face { font-family: "Barlow Condensed"; font-weight: 700; font-display: swap; src: url("../fonts/barlow-condensed-700-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212; }
@font-face { font-family: "Barlow Condensed"; font-weight: 800; font-display: swap; src: url("../fonts/barlow-condensed-800-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212; }
@font-face { font-family: "Barlow Condensed"; font-weight: 900; font-display: swap; src: url("../fonts/barlow-condensed-900-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212; }
@font-face { font-family: "Barlow Condensed"; font-weight: 900; font-display: swap; src: url("../fonts/barlow-condensed-900-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1E00-1E9F, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Source Sans 3"; font-weight: 400 900; font-display: swap; src: url("../fonts/source-sans-3-normal-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: "Source Sans 3"; font-weight: 400 900; font-display: swap; src: url("../fonts/source-sans-3-normal-latin-ext.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1E00-1E9F, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Source Sans 3"; font-style: italic; font-weight: 400 700; font-display: swap; src: url("../fonts/source-sans-3-italic-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC; }

/* ---------- Grundwerte ---------- */
:root {
  --gruen: #7BA02D;
  --gruen-tief: #5E7D1F;
  --gruen-dunkel: #4E6A17;
  --gruen-licht: #A9C770;
  --gruen-hauch: #E8EFD8;
  --holz: #432D22;
  --holz-tief: #2E1F17;
  --nacht: #17110D;
  --nacht-2: #221913;
  --papier: #F8F4EC;
  --creme: #EFE8DB;
  --linie: #DDD3C2;
  --linie-dunkel: rgba(246, 239, 226, .14);
  --tinte: #1E1712;
  --tinte-2: #574A3F;
  --hell: #F6EFE2;
  --hell-2: #C8BAA6;
  --weiss: #FFFFFF;

  --display: "Barlow Condensed", "Arial Narrow", "Helvetica Neue", sans-serif;
  --text: "Source Sans 3", "Source Sans Pro", "Helvetica Neue", Arial, sans-serif;

  --rand: clamp(20px, 5vw, 64px);
  --breite: 1320px;
  --abschnitt: clamp(88px, 11vw, 168px);
  --r-s: 6px; --r: 12px; --r-l: 20px;
  --ease: cubic-bezier(.23, 1, .32, 1);
  --ease-io: cubic-bezier(.77, 0, .175, 1);
  --ease-feder: cubic-bezier(.34, 1.56, .64, 1);
  --schatten: 0 1px 2px rgba(23,17,13,.06), 0 18px 40px -22px rgba(23,17,13,.35);
  --schatten-tief: 0 2px 6px rgba(23,17,13,.12), 0 50px 90px -40px rgba(10,6,4,.75);
  --kopf-h: 84px;
  --z-kopf: 50; --z-menue: 70; --z-dialog: 90;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--kopf-h) + 16px); }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
body { margin: 0; font-family: var(--text); font-size: clamp(17px, .5vw + 15px, 20px); line-height: 1.6; color: var(--tinte); background: var(--papier); overflow-x: clip; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; }
p { margin: 0 0 1em; text-wrap: pretty; }
h1, h2, h3, h4 { margin: 0; font-family: var(--display); font-weight: 900; text-transform: uppercase; line-height: .96; letter-spacing: -.005em; text-wrap: balance; }
strong, b { font-weight: 700; }
:focus-visible { outline: 3px solid var(--gruen); outline-offset: 3px; border-radius: 4px; }
/* Auf grünen Flächen wäre der grüne Rahmen unsichtbar */
.s-weg-karte--2 :focus-visible, .s-weg-karte--4 :focus-visible, .miete-preis :focus-visible { outline-color: var(--weiss); }
::selection { background: var(--gruen); color: var(--weiss); }
.nur-vorleser { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.symbole { position: absolute; width: 0; height: 0; overflow: hidden; }
.symbol { width: 1em; height: 1em; fill: currentColor; flex: none; }

/* ---------- Layout ---------- */
.innen { width: min(100% - 2 * var(--rand), var(--breite)); margin-inline: auto; }
.innen--schmal { width: min(100% - 2 * var(--rand), 860px); margin-inline: auto; }
.abschnitt { padding-block: var(--abschnitt); position: relative; }
.abschnitt--eng { padding-block: clamp(56px, 7vw, 96px); }
.flaeche-creme { background: var(--creme); }
.flaeche-nacht { background: var(--nacht); color: var(--hell); }
.flaeche-holz { position: relative; background: var(--holz) url("../img/holz-bahn-klein.webp") center top / max(100%, 1100px) auto repeat-y; color: var(--hell); isolation: isolate; }
@media (min-width: 900px) { .flaeche-holz { background-image: url("../img/holz-bahn.webp"); } }
.flaeche-holz::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(23,17,13,.55), rgba(23,17,13,.72)); }
.flaeche-nacht a:not(.knopf), .flaeche-holz a:not(.knopf) { color: var(--gruen-licht); }

/* ---------- Typografie-Bausteine ---------- */
.zeile { display: inline-flex; align-items: center; gap: 12px; font-family: var(--display); font-weight: 700; font-size: 16px; letter-spacing: .16em; text-transform: uppercase; color: var(--gruen-dunkel); margin-bottom: 22px; }
.zeile::before { content: ""; width: 34px; height: 2px; background: currentColor; }
.flaeche-nacht .zeile, .flaeche-holz .zeile { color: var(--gruen-licht); }
.titel-xxl { font-size: clamp(64px, 11.5vw, 188px); line-height: .92; letter-spacing: -.012em; }
.titel-xl { font-size: clamp(52px, 8vw, 128px); line-height: .94; }
.titel-l { font-size: clamp(44px, 6vw, 92px); }
.titel-m { font-size: clamp(34px, 4vw, 60px); }
.titel-s { font-size: clamp(26px, 2.4vw, 36px); line-height: 1; }
.gruen { color: var(--gruen); }
.flaeche-nacht .gruen, .flaeche-holz .gruen { color: var(--gruen-licht); }
.einleitung { font-size: clamp(20px, 1.5vw, 25px); line-height: 1.45; color: var(--tinte-2); max-width: 40ch; }
.flaeche-nacht .einleitung, .flaeche-holz .einleitung { color: var(--hell-2); }
.leise { color: var(--tinte-2); }
.flaeche-nacht .leise, .flaeche-holz .leise { color: var(--hell-2); }
.klein { font-size: 15px; }
.lesetext { max-width: 64ch; }
.lesetext h2 { font-size: clamp(32px, 3.4vw, 46px); margin: 1.6em 0 .5em; }
.lesetext h3 { font-size: clamp(24px, 2.2vw, 30px); margin: 1.4em 0 .4em; }
.lesetext ul, .lesetext ol { padding-left: 1.2em; margin: 0 0 1em; }
.lesetext li { margin-bottom: .4em; }
.lesetext a { color: var(--gruen-dunkel); text-decoration-thickness: 1.5px; text-underline-offset: .18em; }
.lesetext img { border-radius: var(--r); margin: 1.5em 0; }
.lesetext blockquote { margin: 1.5em 0; padding: 0 0 0 1em; font-size: 1.2em; font-weight: 600; color: var(--holz); box-shadow: inset 4px 0 0 var(--gruen); }

/* ---------- Aufkleber (Markenzeichen) ---------- */
.aufkleber { display: block; width: 100%; height: auto; overflow: visible; }
.aufkleber text { font-family: var(--text); font-weight: 900; text-transform: uppercase; letter-spacing: -.01em; }
.aufkleber .a-schatten { fill: rgba(10,6,4,.45); stroke: rgba(10,6,4,.45); stroke-width: 46; stroke-linejoin: round; filter: blur(4px); }
.aufkleber .a-kante { fill: none; stroke: #5E7D1F; stroke-width: 44; stroke-linejoin: round; }
.aufkleber .a-kontur { fill: var(--gruen); stroke: var(--gruen); stroke-width: 38; stroke-linejoin: round; }
.aufkleber .a-schrift { fill: var(--weiss); }
.marke-kasten { display: inline-block; font-family: var(--text); font-weight: 900; text-transform: uppercase; background: var(--gruen); color: var(--weiss); padding: .08em .32em .12em; border-radius: 3px; transform: rotate(-2deg); box-shadow: 0 10px 22px -12px rgba(10,6,4,.7); letter-spacing: -.005em; }

/* ---------- Knöpfe und Links ---------- */
.knopf { --hg: var(--gruen-tief); --fg: var(--weiss); position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .6em; min-height: 58px; padding: 0 1.7em; border: 0; border-radius: 999px; background: var(--hg); color: var(--fg); font-family: var(--display); font-weight: 800; font-size: 19px; letter-spacing: .06em; text-transform: uppercase; text-decoration: none; cursor: pointer; overflow: hidden; isolation: isolate; transition: transform .25s var(--ease), color .25s var(--ease); }
.knopf::after { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--gruen-dunkel); border-radius: inherit; transform: scaleY(0); transform-origin: bottom; transition: transform .35s var(--ease); }
.knopf:hover::after { transform: scaleY(1); }
.knopf:active { transform: scale(.97); }
.knopf .symbol { width: 20px; height: 20px; }
.knopf .pfeil { width: 18px; height: 18px; transition: transform .3s var(--ease); }
.knopf:hover .pfeil { transform: translateX(4px); }
.knopf--hell { --hg: var(--hell); --fg: var(--tinte); }
.knopf--hell::after { background: var(--weiss); }
/* Linienknopf: beim Drüberfahren füllt er sich. Füllfarbe und Schrift sind feste Paare, damit der Text immer lesbar bleibt. */
.knopf--linie { --hg: transparent; --fg: currentColor; --fuell: var(--tinte); --fuell-text: var(--papier); box-shadow: inset 0 0 0 2px currentColor; }
.knopf--linie::after { background: var(--fuell); }
.knopf--linie:hover, .knopf--linie:focus-visible { color: var(--fuell-text); box-shadow: inset 0 0 0 2px var(--fuell); }
.flaeche-nacht .knopf--linie, .flaeche-holz .knopf--linie, .held .knopf--linie, .seitenheld .knopf--linie, .fuss .knopf--linie, .menue .knopf--linie, .auf-dunkel .knopf--linie { --fuell: var(--hell); --fuell-text: var(--tinte); }
.knopf--klein { min-height: 46px; padding: 0 1.25em; font-size: 16px; }
.knopfreihe { display: flex; flex-wrap: wrap; gap: 12px; }

.textlink { display: inline-flex; align-items: center; gap: .5em; font-family: var(--display); font-weight: 800; font-size: 19px; text-transform: uppercase; letter-spacing: .06em; text-decoration: none; color: var(--gruen-dunkel); padding-block: 8px; background: linear-gradient(currentColor, currentColor) 0 100% / 0 2px no-repeat; transition: background-size .35s var(--ease); }
.textlink:hover { background-size: 100% 2px; }
.textlink .pfeil { width: 18px; height: 18px; transition: transform .3s var(--ease); }
.textlink:hover .pfeil { transform: translateX(4px); }
.flaeche-nacht .textlink, .flaeche-holz .textlink { color: var(--gruen-licht); }

/* ---------- Kopf ---------- */
.kopf { position: fixed; inset: 0 0 auto 0; z-index: var(--z-kopf); color: var(--weiss); transition: background-color .4s var(--ease), box-shadow .4s var(--ease); }
.kopf::before { content: ""; position: absolute; inset: 0 0 -40px 0; background: linear-gradient(180deg, rgba(10,6,4,.55), rgba(10,6,4,0)); pointer-events: none; transition: opacity .4s var(--ease); z-index: -1; }
.kopf.ist-fest { background: rgba(23,17,13,.94); -webkit-backdrop-filter: blur(14px) saturate(1.3); backdrop-filter: blur(14px) saturate(1.3); box-shadow: 0 10px 30px -18px rgba(0,0,0,.7); }
.kopf.ist-fest::before { opacity: 0; }
.kopf .innen { display: flex; align-items: center; gap: 28px; height: var(--kopf-h); }
.kopf-marke { display: flex; align-items: center; flex: none; }
.kopf-marke img { width: 70px; height: 70px; transition: transform .45s var(--ease-feder); }
.kopf-marke:hover img { transform: rotate(-6deg) scale(1.06); }
.kopf-navi { margin-left: auto; }
.kopf-navi ul { display: flex; gap: 4px; margin: 0; padding: 0; list-style: none; }
.kopf-navi a { position: relative; display: block; padding: 10px 14px; font-family: var(--display); font-weight: 700; font-size: 19px; letter-spacing: .06em; text-transform: uppercase; text-decoration: none; color: var(--weiss); white-space: nowrap; }
.kopf-navi a::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: 4px; height: 3px; border-radius: 2px; background: var(--gruen); transform: scaleX(0); transform-origin: right; transition: transform .35s var(--ease); }
.kopf-navi a:hover::after, .kopf-navi a[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; }
.kopf .knopf { flex: none; }
.kopf-navi .navi-fest { display: inline-flex; align-items: center; gap: 6px; margin-left: 6px; padding: 7px 12px 6px; border-radius: 6px; background: var(--gruen); box-shadow: 0 0 0 2px var(--gruen-tief); transform: rotate(-3deg); transition: transform .35s var(--ease-feder), background-color .25s var(--ease); }
.kopf-navi .navi-fest small { font-size: .78em; opacity: .9; }
.kopf-navi .navi-fest::after { display: none; }
.kopf-navi .navi-fest:hover, .kopf-navi .navi-fest[aria-current="page"] { transform: rotate(0deg) scale(1.04); background: var(--gruen-tief); }
@media (max-width: 1420px) { .kopf .innen { gap: 18px; } .kopf-navi a { padding: 10px 9px; font-size: 17.5px; letter-spacing: .04em; } .kopf-navi a::after { left: 9px; right: 9px; } }
.menue-knopf { display: none; }

/* Vollbild-Menü am Handy */
.menue { position: fixed; inset: 0; z-index: var(--z-menue); background: var(--nacht); color: var(--hell); display: flex; flex-direction: column; padding: calc(var(--kopf-h) + 12px) var(--rand) 28px; clip-path: inset(0 0 100% 0); visibility: hidden; transition: clip-path .6s var(--ease-io), visibility 0s linear .6s; overflow-y: auto; }
.menue.ist-offen { clip-path: inset(0 0 0 0); visibility: visible; transition-delay: 0s; }
.menue ul { list-style: none; margin: 0; padding: 0; }
.menue li { overflow: hidden; border-bottom: 1px solid var(--linie-dunkel); }
.menue a { display: flex; justify-content: space-between; align-items: center; padding: 14px 0; font-family: var(--display); font-weight: 900; font-size: clamp(40px, 11vw, 64px); text-transform: uppercase; line-height: 1; text-decoration: none; color: var(--hell); transform: translateY(105%); transition: transform .6s var(--ease); }
.menue.ist-offen a { transform: none; }
.menue li:nth-child(2) a { transition-delay: .04s; } .menue li:nth-child(3) a { transition-delay: .08s; } .menue li:nth-child(4) a { transition-delay: .12s; } .menue li:nth-child(5) a { transition-delay: .16s; } .menue li:nth-child(6) a { transition-delay: .2s; } .menue li:nth-child(7) a { transition-delay: .24s; } .menue li:nth-child(8) a { transition-delay: .28s; }
.menue a small { font-family: var(--text); font-size: 15px; font-weight: 600; text-transform: none; color: var(--hell-2); }
.menue-fuss { margin-top: auto; padding-top: 28px; display: grid; gap: 14px; }

@media (max-width: 1240px) {
  :root { --kopf-h: 72px; }
  .kopf-navi, .kopf .knopf { display: none; }
  .kopf-marke img { width: 58px; height: 58px; }
  .menue-knopf { display: inline-flex; align-items: center; gap: 12px; margin-left: auto; min-height: 48px; padding: 0 6px 0 18px; border: 0; border-radius: 999px; background: rgba(255,255,255,.12); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: var(--weiss); font-family: var(--display); font-weight: 800; font-size: 18px; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; position: relative; z-index: calc(var(--z-menue) + 1); }
  .menue-knopf i { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--gruen); position: relative; }
  .menue-knopf i::before, .menue-knopf i::after { content: ""; position: absolute; width: 16px; height: 2px; background: var(--weiss); transition: transform .35s var(--ease); }
  .menue-knopf i::before { transform: translateY(-4px); } .menue-knopf i::after { transform: translateY(4px); }
  .menue-knopf[aria-expanded="true"] i::before { transform: rotate(45deg); }
  .menue-knopf[aria-expanded="true"] i::after { transform: rotate(-45deg); }
  .kopf-marke { position: relative; z-index: calc(var(--z-menue) + 1); }
}

/* ---------- Seiten-Held (Unterseiten) ---------- */
.seitenheld { position: relative; min-height: clamp(520px, 78svh, 860px); display: flex; align-items: flex-end; color: var(--weiss); background: var(--nacht); overflow: hidden; isolation: isolate; }
.seitenheld-bild { position: absolute; inset: 0; z-index: -2; }
.seitenheld-bild img, .seitenheld-bild video { width: 100%; height: 100%; object-fit: cover; }
.seitenheld::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(10,6,4,.45) 0%, rgba(10,6,4,.05) 35%, rgba(10,6,4,.75) 100%); }
.seitenheld .innen { padding-block: calc(var(--kopf-h) + 40px) clamp(48px, 7vw, 96px); }
.seitenheld .zeile { color: var(--gruen-licht); max-width: none; margin: 0 0 22px; font-size: 16px; }
.seitenheld h1 { font-size: clamp(60px, 10vw, 170px); line-height: .92; max-width: 12ch; }
.seitenheld p { font-size: clamp(19px, 1.5vw, 24px); max-width: 44ch; margin: 24px 0 0; color: rgba(255,255,255,.88); }
.seitenheld .knopfreihe { margin-top: 32px; }
.seitenheld--kurz { min-height: clamp(380px, 52svh, 560px); }
.seitenheld--ohne-bild { background: var(--holz) url("../img/holz-bahn-klein.webp") center top / max(100%, 1100px) auto repeat-y; }
@media (min-width: 900px) { .seitenheld--ohne-bild { background-image: url("../img/holz-bahn.webp"); } }
.js .seitenheld-bild { animation: held-zoom 10s var(--ease) both; }
@keyframes held-zoom { from { transform: scale(1.1); } to { transform: none; } }

/* ---------- Fuß auf Holz ---------- */
.fuss { position: relative; color: var(--hell); background: var(--holz-tief) url("../img/holz-bahn-klein.webp") center top / max(100%, 1100px) auto repeat-y; isolation: isolate; overflow: hidden; }
@media (min-width: 900px) { .fuss { background-image: url("../img/holz-bahn.webp"); } }
.fuss::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(23,17,13,.78), rgba(15,10,7,.92)); }
.fuss-ruf { padding-block: clamp(96px, 12vw, 180px) clamp(56px, 7vw, 96px); border-bottom: 1px solid var(--linie-dunkel); }
.fuss-ruf h2 { font-size: clamp(64px, 11.5vw, 196px); line-height: .9; width: 100%; }
@media (min-width: 700px) { .fuss-ruf h2 > span:first-child { white-space: nowrap; } }
.fuss-ruf h2 > span { display: block; }
.fuss-ruf .zweite { color: var(--gruen-licht); }
.fuss-ruf-reihe { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 32px 48px; }
.fuss-ruf-reihe h2 { grid-column: 1 / -1; }
.fuss-ruf-reihe > div { grid-column: 2; max-width: 440px; }
@media (max-width: 900px) { .fuss-ruf-reihe > div { grid-column: 1; } }
@media (max-width: 900px) { .fuss-ruf-reihe { grid-template-columns: minmax(0, 1fr); } }
.fuss-ruf p { max-width: 34ch; color: var(--hell-2); margin: 0 0 18px; font-size: 19px; }
.fuss-raster { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 40px; padding-block: 64px; font-size: 16.5px; color: var(--hell-2); }
.fuss-raster h3 { font-size: 18px; letter-spacing: .12em; color: var(--weiss); margin-bottom: 18px; font-weight: 800; }
.fuss-raster ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.fuss-raster a { color: var(--hell); text-decoration: none; }
.fuss-raster a:hover { color: var(--gruen-licht); }
.fuss-raster address { font-style: normal; line-height: 1.5; margin-bottom: 14px; }
.fuss-raster address b { color: var(--weiss); font-weight: 700; }
.fuss-person { display: inline-block; margin-top: 2px; color: var(--hell); }
.fuss-person a { color: var(--gruen-licht) !important; white-space: nowrap; }
.fuss-marke img { width: 110px; height: 110px; margin-bottom: 18px; }
.sozial { display: flex; gap: 10px; margin-top: 20px; }
.sozial a { display: grid; place-items: center; width: 50px; height: 50px; border-radius: 50%; background: rgba(246,239,226,.08); color: var(--hell); transition: background-color .25s var(--ease), transform .25s var(--ease); }
.sozial a:hover { background: var(--gruen-tief); transform: translateY(-3px); color: var(--weiss); }
.sozial .symbol { width: 22px; height: 22px; }
.fuss-unten { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; padding-block: 26px 34px; border-top: 1px solid var(--linie-dunkel); font-size: 15px; color: var(--hell-2); }
.fuss-unten p { margin: 0; }
.fuss-unten ul { display: flex; flex-wrap: wrap; gap: 6px 24px; list-style: none; margin: 0; padding: 0; }
.fuss-unten a { color: var(--hell); text-decoration: none; }
.fuss-unten a:hover { color: var(--gruen-licht); }
@media (max-width: 960px) { .fuss-raster { grid-template-columns: 1fr 1fr; } .fuss-marke { grid-column: 1 / -1; } }
@media (max-width: 560px) { .fuss-raster { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Klebeleiste am Handy ---------- */
.daumen { display: none; }
@media (max-width: 760px) {
  .daumen { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; position: fixed; inset: auto 0 0 0; z-index: var(--z-kopf); padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: rgba(23,17,13,.95); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); transform: translateY(110%); transition: transform .4s var(--ease); }
  .daumen.ist-da { transform: none; }
  .daumen .knopf { min-height: 52px; font-size: 17px; padding: 0 12px; }
  .daumen { grid-template-columns: 1fr auto 1fr; }
  .daumen .knopf--wa { width: 56px; padding: 0; font-size: 0; gap: 0; background: #1f8f4e; color: #fff; }
  .daumen .knopf--wa .symbol { width: 26px; height: 26px; }
}
.knopf--wa .symbol { color: #2bb365; }
.daumen .knopf--wa .symbol { color: #fff; }
.kontakt-weg--wa b { color: var(--gruen-dunkel); }

/* ---------- Bewegung ---------- */
.js [data-zeigen] { opacity: 0; transform: translateY(32px); transition: opacity 1s var(--ease), transform 1s var(--ease); transition-delay: var(--verzug, 0ms); }
.js [data-zeigen].ist-da { opacity: 1; transform: none; }
/* Der Schnitt liegt auf dem Inhalt, nicht auf dem Rahmen: Ein Rahmen mit Fläche null meldet der Browser nie als sichtbar */
.js [data-aufdecken] > * { clip-path: inset(100% 0 0 0); transition: clip-path 1.2s var(--ease-io); transition-delay: var(--verzug, 0ms); }
.js [data-aufdecken] > img, .js [data-aufdecken] > video { transform: scale(1.15); transition: clip-path 1.2s var(--ease-io), transform 1.8s var(--ease); transition-delay: var(--verzug, 0ms); }
.js [data-aufdecken] > figcaption { transition-delay: calc(var(--verzug, 0ms) + 500ms); }
.js [data-aufdecken].ist-da > * { clip-path: inset(0 0 0 0); }
.js [data-aufdecken].ist-da > img, .js [data-aufdecken].ist-da > video { transform: none; }
/* Wörter steigen zeilenweise auf */
/* clip-path statt overflow: oben bleibt Luft für Ä-, Ö- und Ü-Punkte, unten wird das aufsteigende Wort abgeschnitten */
.wort { display: inline-block; vertical-align: top; clip-path: inset(-.6em -.3em -.08em -.3em); }
.wort > span { display: inline-block; }
.js [data-woerter] .wort > span { transform: translateY(140%); transition: transform 1s var(--ease); transition-delay: calc(var(--i, 0) * 45ms + var(--verzug, 0ms)); }
.js [data-woerter].ist-da .wort > span { transform: none; }
/* Text hellt beim Scrollen auf (nur wo der Browser es kann) */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .js [data-aufhellen] .w { opacity: .16; animation: aufhellen linear both; animation-timeline: view(); animation-range: cover calc(var(--p, 0) * 1%) cover calc(var(--p, 0) * 1% + 12%); }
    @keyframes aufhellen { to { opacity: 1; } }
    .js [data-parallax] { animation: parallax linear both; animation-timeline: view(); animation-range: cover; }
    @keyframes parallax { from { transform: translateY(-8%) scale(1.12); } to { transform: translateY(8%) scale(1.12); } }
  }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  .js [data-zeigen], .js [data-aufdecken], .js [data-aufdecken] > *, .js [data-woerter] .wort > span { opacity: 1; transform: none; clip-path: none; }
}

/* Sicherheitsnetz: lange Wörter, Adressen und Links brechen statt die Seite zu verbreitern */
h1, h2, h3, p, li, dd, address, td { overflow-wrap: break-word; }

/* Zahlen, die wie ein Zählwerk hochrollen (data-zahl) */
.z-leser { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.z-ziffer { position: relative; display: inline-block; line-height: 1.1; margin-block: calc(var(--z-luft, 0em) * -1); clip-path: inset(0 -.2em); }
.z-platz { visibility: hidden; }
.z-band { position: absolute; inset: 0 0 auto 0; display: flex; flex-direction: column; align-items: center; transform: translate3d(0, 0, 0); }
.z-band > span { display: block; height: 1.1em; line-height: 1.1; }
.z-los .z-band { transform: translate3d(0, calc(var(--ziel) * -1.1em), 0); transition: transform calc(1.25s + var(--n) * .2s) cubic-bezier(.16, 1, .3, 1) calc(var(--z-verzug, 0ms) + var(--n) * 110ms); }


/* Hinweis aus dem Pflegebereich: kleiner Kasten unten rechts */
.hinweis-kasten { position: fixed; z-index: 60; right: max(20px, env(safe-area-inset-right, 0px)); bottom: max(20px, env(safe-area-inset-bottom, 0px)); width: min(360px, calc(100vw - 32px)); display: grid; gap: 10px; justify-items: start; padding: 22px 22px 20px; border-radius: 20px; background: var(--holz-tief) url("../img/holz-klein.webp") center / cover; color: var(--hell); box-shadow: 0 0 0 1px rgba(255,255,255,.06), 0 30px 60px -20px rgba(10,6,4,.8); opacity: 0; transform: translateY(24px) scale(.97); pointer-events: none; transition: opacity .45s var(--ease), transform .6s var(--ease); isolation: isolate; }
.hinweis-kasten::before { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; background: linear-gradient(160deg, rgba(23,17,13,.35), rgba(15,10,7,.85)); }
.hinweis-kasten.ist-da { opacity: 1; transform: none; pointer-events: auto; }
.hinweis-titel { margin: 0; padding-right: 30px; font-family: var(--display); font-weight: 900; font-size: 26px; line-height: 1; text-transform: uppercase; color: var(--weiss); }
.hinweis-text { margin: 0; font-size: 16px; line-height: 1.45; color: var(--hell-2); }
.hinweis-zu { position: absolute; top: 10px; right: 10px; width: 36px; height: 36px; border: 0; border-radius: 50%; background: rgba(246,239,226,.12); color: var(--weiss); font-size: 24px; line-height: 1; cursor: pointer; }
.hinweis-zu:hover { background: rgba(246,239,226,.24); }
@media (max-width: 760px) { .hinweis-kasten { right: 16px; left: 16px; width: auto; bottom: calc(96px + env(safe-area-inset-bottom, 0px)); } }
@media (prefers-reduced-motion: reduce) { .hinweis-kasten { transition: opacity .2s linear; transform: none; } }

/* Rechtstexte */
.recht-kurz { padding: 22px 26px 6px; border-radius: 16px; background: var(--gruen-hauch); margin: 0 0 2em; }
.recht-kurz h2 { margin-top: 0; font-size: clamp(26px, 2.6vw, 34px); }
.lesetext h3 { scroll-margin-top: 90px; }
.recht-widerspruch p { font-size: .94em; letter-spacing: .01em; }
.recht-stand { margin-top: 2.4em; color: var(--tinte-leise, #6b5d52); font-size: .92em; }
.lesetext p { overflow-wrap: break-word; }

/* ==========================================================================
   Markenbewegung (November 2026): weniger Einblenden, dafür eigene Gesten
   ========================================================================== */
/* 1. Fließtext, Listen und Knöpfe stehen sofort da. Bewegung bleibt Überschriften, Bildern und Karten vorbehalten. */
.js p[data-zeigen], .js ul.haken[data-zeigen], .js .knopfreihe[data-zeigen], .js a.knopf[data-zeigen], .js .fakten[data-zeigen], .js .zeile[data-zeigen], .js small[data-zeigen] { opacity: 1; transform: none; transition: none; }
/* 2. Karten und Bilder: kürzer und ruhiger */
.js [data-zeigen] { transform: translateY(18px); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: var(--verzug, 0ms); }
.js [data-zeigen].ist-da { transform: none; }
/* 3. Aufkleben: Etiketten werden draufgeklatscht und sitzen dann schief */
.js .etikett--dreh[data-zeigen] { opacity: 0; transform: scale(1.4) rotate(-11deg); box-shadow: 0 26px 30px -14px rgba(10,6,4,.55); transition: opacity .18s linear, transform .5s var(--ease-feder), box-shadow .5s var(--ease); }
.js .etikett--dreh[data-zeigen].ist-da { opacity: 1; transform: rotate(-2.5deg); box-shadow: 0 6px 12px -8px rgba(10,6,4,.55); }
/* 4. Knöpfe geben beim Drücken nach wie die Knöpfe einer Harmonika */
.knopf:not(.knopf--linie) { box-shadow: 0 4px 0 -1px rgba(20,14,10,.32), 0 14px 22px -16px rgba(20,14,10,.6); transition: transform .12s var(--ease), box-shadow .12s var(--ease), color .3s; }
.knopf:not(.knopf--linie):active { transform: translateY(3px); box-shadow: 0 1px 0 -1px rgba(20,14,10,.32), 0 6px 10px -10px rgba(20,14,10,.6); }
.knopf--linie:active { transform: translateY(2px); }
.knopf { white-space: nowrap; }
@media (max-width: 380px) { .knopf { white-space: normal; text-align: center; } }

/* Flache schwarze Flächen bekommen dunkles Holz */
.flaeche-nacht { position: relative; isolation: isolate; background: var(--nacht) url("../img/holz-bahn-klein.webp") center top / max(100%, 1100px) auto repeat-y; }
.flaeche-nacht::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(18,13,10,.84), rgba(18,13,10,.9)); }

/* Macher-Zeile ganz unten: Knopfdruck. Der Perlmuttknopf gibt beim Überfahren nach wie ein Harmonika-Knopf. */
.macher { margin: -8px 0 0; padding-bottom: 30px; text-align: center; }
.macher a { display: inline-flex; align-items: center; flex-wrap: wrap; justify-content: center; column-gap: 14px; row-gap: 6px; color: var(--hell-2) !important; text-decoration: none; font-size: 14px; letter-spacing: .01em; }
.macher-von { opacity: .8; }
.macher-marke { display: inline-flex; align-items: center; gap: 9px; font-family: var(--display); font-weight: 800; font-size: 19px; letter-spacing: .14em; text-transform: uppercase; color: var(--hell); }
.macher-knopf { position: relative; width: 17px; height: 17px; border-radius: 50%; flex: none;
  background: radial-gradient(circle at 34% 30%, #fffdf8 0 18%, #ece4d6 46%, #b9ad9b 100%);
  box-shadow: 0 3px 0 -1px #6f6253, 0 5px 8px -3px rgba(0,0,0,.65), inset 0 -1px 2px rgba(80,64,48,.35);
  transition: transform .14s var(--ease), box-shadow .14s var(--ease); }
.macher-knopf::after { content: ""; position: absolute; inset: 4px; border-radius: 50%; box-shadow: inset 0 1px 1px rgba(90,72,54,.35); }
.macher-ruf { color: var(--gruen-licht); transition: color .3s; }
.macher-ruf::after { content: "→"; display: inline-block; margin-left: 6px; transition: transform .3s var(--ease); }
.macher a:hover .macher-knopf, .macher a:focus-visible .macher-knopf { transform: translateY(2px); box-shadow: 0 1px 0 -1px #6f6253, 0 2px 3px -2px rgba(0,0,0,.6), inset 0 -1px 2px rgba(80,64,48,.35); }
.macher a:hover .macher-ruf { color: var(--hell); }
.macher a:hover .macher-ruf::after { transform: translateX(4px); }
@media (max-width: 560px) { .macher a { flex-direction: column; } }
@media (prefers-reduced-motion: reduce) { .macher-knopf, .macher-ruf::after { transition: none; } }

/* Claim als Aufkleber: nur der grüne Rand mit feiner dunkler Kante (Adrian: ohne weißen Stanzrand schöner) */
.s-held-claim .a-kante { stroke: #55761B; stroke-width: 45; }
/* Zeilen enger und grüner Rand etwas kräftiger: die drei Zeilen verschmelzen zu einer Fläche, ohne Holz in den Fugen */
.s-held-claim .a-kontur { stroke-width: 42; }
.s-held-claim .a-schatten { stroke-width: 50; }

/* Prüferfunde: ruhigerer Takt. Wortweise steigen nur noch Seitentitel und wenige Leitüberschriften auf, Karten blenden nur ein. */
.js h2[data-woerter] .wort > span { transform: none; transition: none; }
.js .s-kosmos h2[data-woerter] .wort > span { transform: translateY(140%); transition: transform 1s var(--ease); transition-delay: calc(var(--i, 0) * 45ms); }
.js .s-kosmos h2[data-woerter].ist-da .wort > span { transform: none; }
.js [data-zeigen] { transform: translateY(8px); transition: opacity .5s var(--ease), transform .5s var(--ease); transition-delay: var(--verzug, 0ms); }
/* Prüferfunde: Abschluss-Block ohne leeres Viertel. Überschrift links, Text und Knöpfe rechts daneben. */
.fuss-ruf h2 { font-size: clamp(60px, 8vw, 140px); }
@media (min-width: 901px) {
  .fuss-ruf-reihe { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: end; }
  .fuss-ruf-reihe h2 { grid-column: 1; }
  .fuss-ruf-reihe > div { grid-column: 2; max-width: 580px; justify-self: end; }
  .fuss-ruf h2 > span:first-child { white-space: normal; }
}
.fuss-ruf .knopfreihe .knopf { flex: 0 1 auto; }
@media (min-width: 901px) {
  .fuss-ruf-reihe > div { width: 100%; }
  .fuss-ruf .knopfreihe { gap: 10px; }
  .fuss-ruf .knopfreihe .knopf { padding-inline: 1.3em; font-size: 18px; }
}
/* Am Handy liegt die Klebeleiste über dem Seitenende: der Fuß bekommt darunter Platz */
@media (max-width: 760px) { .fuss { padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)); } }
/* Handymenü: Logo und Schließen-Knopf liegen über dem offenen Menü, Knöpfe unten in normaler Größe */
body.menue-offen .kopf { z-index: calc(var(--z-menue) + 1); background: transparent; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
.menue a { flex-wrap: wrap; gap: 4px 14px; }
.menue .menue-fuss .knopf { justify-content: center; gap: 10px; min-height: 54px; padding: 0 1.2em; font-family: var(--display); font-size: 18px; font-weight: 800; letter-spacing: .06em; line-height: 1; border-bottom: 0; }


/* Runde 33: Newsletter-Anmeldung im Fuß jeder Seite und auf /newsletter/. Geht direkt an CleverReach (werkzeuge/bauen.py, b_post_formular). */
.fuss-post { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 28px clamp(32px, 5vw, 72px); align-items: center; padding-block: clamp(48px, 6vw, 76px); border-bottom: 1px solid var(--linie-dunkel); }
.fuss-post h2 { margin: 0 0 12px; font-size: clamp(38px, 4.6vw, 68px); line-height: .92; color: var(--weiss); }
.fuss-post-text p { margin: 0; max-width: 40ch; color: var(--hell-2); font-size: 18px; }
@media (max-width: 900px) { .fuss-post { grid-template-columns: minmax(0, 1fr); } }
.post-felder { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr) auto; gap: 12px; align-items: end; }
@media (max-width: 640px) { .post-felder { grid-template-columns: minmax(0, 1fr); } .post-felder .knopf { width: 100%; } }
.post-feld { display: grid; gap: 7px; min-width: 0; }
.post-feld span { font-family: var(--display); font-weight: 800; font-size: 14px; letter-spacing: .12em; text-transform: uppercase; color: var(--hell-2); }
.post-feld input { width: 100%; min-height: 56px; padding: 12px 16px; border: 0; border-radius: 10px; background: var(--papier); color: var(--tinte); font: inherit; font-size: 17px; box-shadow: inset 0 0 0 1.5px rgba(23,17,13,.12); transition: box-shadow .2s var(--ease), background-color .2s var(--ease); }
.post-feld input:focus { outline: none; background: var(--weiss); box-shadow: inset 0 0 0 2px var(--gruen), 0 0 0 4px rgba(123,160,45,.32); }
.post-felder .knopf { min-height: 56px; }
.post-klein { margin: 14px 0 0; font-size: 14.5px; line-height: 1.5; color: var(--hell-2); }
.post-klein a { color: var(--hell); }
.post-danke { margin: 0; padding: 18px 22px; border-radius: 12px; background: rgba(123,160,45,.2); box-shadow: inset 0 0 0 1.5px rgba(123,160,45,.5); color: var(--hell); font-size: 18px; line-height: 1.5; }
.post-danke b { color: var(--weiss); }
.post-form.ist-gesendet .post-felder, .post-form.ist-gesendet .post-klein { display: none; }
.post-seite { margin-top: 30px; max-width: 640px; }
.post-form--seite .post-felder { grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); }
.post-form--seite .post-felder .knopf { grid-column: 1 / -1; justify-self: start; }
@media (max-width: 640px) { .post-form--seite .post-felder { grid-template-columns: minmax(0, 1fr); } .post-form--seite .post-felder .knopf { justify-self: stretch; } }

/* Runde 35: Namen mit Bindestrich bleiben in einer Zeile */
.am-stueck { white-space: nowrap; }
