/* ZUENTEC — Design-Token gemäß Corporate-Design-Skill (Master: ~/.claude/skills/corporate-design) */

:root {
  --primaer: #245273;
  --akzent: #A3C1D5;
  --dunkler-grund: #101826;
  --hintergrund: #f4f5f7;
  --karte: #ffffff;
  --text: #1c1e21;
  --gedaempft: #6b7280;
  --rand: #e5e7eb;
  --aktion: var(--primaer);
  --aktion-text: #ffffff;
  --band-grund: #dbe7f0;
  --band-text: #1c1e21;
  /* Hoehe der festen Kopfleiste. KEIN Farbton, sondern ein Mass: Die Leiste
     steht seit 16.08.2026 fest, und ein Sprungziel muss unter ihr hervorkommen
     (scroll-padding-top weiter unten). Wie hoch sie ist, haengt davon ab, in
     wie viele Zeilen die Navigation umbricht - das kann CSS nicht wissen.
     Der Wert hier passt zur einzeiligen Leiste (0,9 rem + 40 px Logo +
     0,9 rem + Rand) und ist der Rueckfallwert ohne JavaScript;
     menue.js misst die tatsaechliche Hoehe und schreibt sie hierher. */
  --kopfhoehe: 4.4rem;
}

/* Dunkle Palette doppelt einbinden: Systemwahl UND explizite Wahl */
@media (prefers-color-scheme: dark) {
  :root:not([data-thema="hell"]) {
    --hintergrund: #111317;
    --karte: #1b1e24;
    --text: #e5e7eb;
    --gedaempft: #9ca3af;
    --rand: #2d323b;
    --aktion: var(--akzent);
    --aktion-text: #101826;
    --band-grund: #1b2a3a;
    --band-text: #e5e7eb;
  }
}
:root[data-thema="dunkel"] {
  --hintergrund: #111317;
  --karte: #1b1e24;
  --text: #e5e7eb;
  --gedaempft: #9ca3af;
  --rand: #2d323b;
  --aktion: var(--akzent);
  --aktion-text: #101826;
  --band-grund: #1b2a3a;
  --band-text: #e5e7eb;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: "Segoe UI", system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--text);
  background: var(--hintergrund);
}

/* Kopfbereich — nur hier spricht die Markenschrift.
   FEST SEIT 16.08.2026: Die Leiste bleibt beim Blättern stehen, damit
   Navigation, Darstellungs- und Sprachwahl auf den langen Seiten (ORDNA hat
   dreizehn Kapitel, der Änderungsverlauf 48 Einträge) nicht erst ein Rückweg
   nach oben sind. Drei Dinge hängen daran und dürfen nicht wegfallen:
   der Hintergrund muss DECKEND bleiben (var(--karte)), sonst scheint der
   Inhalt durch; kein Vorfahr von header.kopf darf overflow bekommen, sonst
   wirkt sticky nicht mehr; und die Sprungziele brauchen den Abstand aus
   --kopfhoehe. */
header.kopf {
  position: sticky;
  top: 0;
  z-index: 15;
  background: var(--karte);
  border-bottom: 1px solid var(--rand);
  padding: 0.9rem 1.5rem;
  display: flex;
  align-items: center;
  /* Zeilenabstand 0,7 rem, Spaltenabstand 1,5 rem: Die 1,5 rem waren als
     Abstand zwischen Marke und Navigation NEBENEINANDER gedacht. Sobald die
     Navigation umbricht, wurden daraus 24 px senkrechter Leerraum in einer
     Leiste, die jetzt dauerhaft stehenbleibt. */
  gap: 0.7rem 1.5rem;
  flex-wrap: wrap;
}
.marke { display: flex; align-items: center; gap: 0.7rem; text-decoration: none; }
/* Kein display hier — sonst überschreibt es die Hell/Dunkel-Umschaltung unten */
/* width:auto ist Pflicht, nicht Kosmetik (gemessen 16.08.2026): Das <img>
   trägt width="320" height="64" als Attribut. Setzt CSS nur die Höhe, bleibt
   die Breite bei 320 px stehen — die SVG zeichnet sich dann mit ihrem
   viewBox 320×64 auf 200×40 in die Mitte dieser Fläche, links und rechts
   je 60 px Leerraum. Unsichtbar, aber es waren genau diese 120 px, die die
   Navigation zwischen 1024 und 1440 px in eine zweite Zeile drückten. Bei
   fester Leiste kostet jede Zeile dauerhaft Platz. */
.marke img { height: 40px; width: auto; }
/* Logo-Variante je Farbmodus — gilt überall (Kopf, Hero, Ablaufgrafik) */
.logo-hell { display: block; }
.logo-dunkel { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-thema="hell"]) .logo-hell { display: none; }
  :root:not([data-thema="hell"]) .logo-dunkel { display: block; }
}
:root[data-thema="dunkel"] .logo-hell { display: none; }
:root[data-thema="dunkel"] .logo-dunkel { display: block; }

/* Zeilenabstand 0,5 rem statt 1,2 rem — aus demselben Grund wie in
   header.kopf: Der 1,2-rem-Abstand ist zwischen zwei Menüpunkten NEBENEINANDER
   gedacht. Bricht die Navigation um, zahlt die feste Leiste ihn senkrecht. */
nav.haupt { display: flex; gap: 0.5rem 1.2rem; margin-left: auto; align-items: center; flex-wrap: wrap; }
nav.haupt a { color: var(--text); text-decoration: none; }
nav.haupt a:hover, nav.haupt a[aria-current="page"] { color: var(--aktion); }
/* Der Produkt-CTA ist die einzige gefuellte Flaeche der Kopfleiste. Bis
   14.08.2026 waren es die beiden Aufklappmenues — Darstellung und Sprache
   sahen damit wichtiger aus als das, weswegen der Besucher hier ist. */
nav.haupt a.knopf-kopf {
  color: var(--aktion-text);
  padding: 0.42rem 1.1rem;
  font-weight: 600;
}
nav.haupt a.knopf-kopf:hover { color: var(--aktion-text); }
/* Kopfmenüs Darstellung + Sprachwahl: details-Aufklappmenüs im
   Schaltflächenstil des Corporate Designs — funktionieren ohne JavaScript;
   menue.js schließt sie nur zusätzlich beim Klick daneben und mit Escape,
   thema.js schaltet die Darstellungs-Optionen und markiert die aktive. */
.sprachwahl, .themawahl { font-size: 0.87rem; position: relative; }
.sprachwahl summary, .themawahl summary {
  cursor: pointer; list-style: none; -webkit-user-select: none; user-select: none;
  background: none; color: var(--gedaempft);
  border: 1px solid var(--rand);
  /* 0.45rem statt 0.32rem: ergibt mit der Zeilenhoehe ein Ziel von rund
     40 px Hoehe — WCAG 2.2 (2.5.8) verlangt 24 px, Fingerbedienung mehr. */
  padding: 0.45rem 0.9rem; border-radius: 8px;
}
.sprachwahl summary::-webkit-details-marker,
.themawahl summary::-webkit-details-marker { display: none; }
.sprachwahl summary::after, .themawahl summary::after { content: " ▾"; font-size: 0.75em; }
.sprachwahl summary:hover, .themawahl summary:hover,
.sprachwahl[open] summary, .themawahl[open] summary {
  color: var(--aktion); border-color: var(--aktion);
}
.sprachliste, .themaliste {
  position: absolute; right: 0; top: calc(100% + 0.45rem); z-index: 10;
  margin: 0; padding: 0.3rem 0; list-style: none; min-width: 8.5rem;
  background: var(--karte); border: 1px solid var(--rand); border-radius: 8px;
}
.sprachliste a, .sprachliste span, .themaliste button {
  display: block; padding: 0.35rem 1.1rem; white-space: nowrap;
  color: var(--gedaempft); text-decoration: none;
}
.themaliste button {
  width: 100%; text-align: left; background: none; border: none;
  font: inherit; cursor: pointer;
}
.sprachliste a:hover, .themaliste button:hover { background: var(--hintergrund); color: var(--aktion); }
.sprachliste span[aria-current], .themaliste button[aria-current] { color: var(--text); font-weight: 600; }

main { max-width: 60rem; margin: 0 auto; padding: 2rem 1.5rem 4rem; }

.hero { text-align: center; padding: 3rem 0 2rem; }

/* Hero mit Hintergrundbild (helle KI-Grafiken; im Dark Mode ohne Bild,
   bis dunkle Fassungen vorliegen — siehe OFFENE-PUNKTE.md) */
.hero-bild {
  border-radius: 12px;
  padding: 4rem 1.5rem 5rem;
  background-size: cover;
  background-repeat: no-repeat;
}
/* Die Hintergrundbilder liegen als WebP vor (15.08.2026): 953 KB PNG wurden
   30 KB, 603 KB wurden 11 KB. Sie liegen hinter einem 90-%-Overlay, dem die
   Kompression nichts anhaben kann — der PNG-Master liegt im Repo unter
   produktbilder/hintergruende/ und gehoert nicht ins Webroot. */
.hero-zuentec {
  background-image:
    linear-gradient(rgba(244, 245, 247, 0.9), rgba(244, 245, 247, 0.9)),
    url("../bilder/hintergrund-zuentec-hell.webp?v=3a764f50");
  background-position: center bottom;
}
.hero-ordna {
  background-image:
    linear-gradient(rgba(244, 245, 247, 0.9), rgba(244, 245, 247, 0.9)),
    url("../bilder/hintergrund-ordna-hell.webp?v=b80c1703");
  background-position: center;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-thema="hell"]) .hero-bild { background-image: none; padding: 3rem 0 2rem; }
}
:root[data-thema="dunkel"] .hero-bild { background-image: none; padding: 3rem 0 2rem; }
.hero h1 { font-size: 2rem; margin: 0 0 0.5rem; }
.slogan { font-size: 1.15rem; color: var(--aktion); font-style: italic; margin: 0 0 1rem; }
.hinweis { font-size: 0.87rem; color: var(--gedaempft); }

/* Hilfe-Symbol der ORDNA-Oberflaeche, wie im Programm gezeichnet.
   NICHT das Emoji ❓ (U+2753) verwenden: Ein Emoji bezieht seine Farbe aus
   der Emoji-Schrift und kommt ROT — und Rot ist im Corporate Design
   ausschliesslich Statusfarbe fuer Fehler, nie Dekoration. ORDNA hat das
   Emoji aus genau diesem Grund selbst ersetzt (0.24.0, Aenderungseintrag
   "the help symbol in the header is no longer red ... it now carries the
   same blue as the other controls"); die Webseite zeigte danach weiter das
   rote Emoji und widersprach damit ihrem eigenen Aenderungsverlauf.
   Die Pfaddaten stehen unveraendert wie in ..\Projekt_ORDNA\web\index.html
   (#hilfe-knopf) im HTML. Die Farbe kommt aus --aktion und ist wertgleich
   mit --akzent der App (#245273 hell, #a3c1d5 dunkel), stimmt also in
   beiden Farbmodi mit dem Programm ueberein.
   WER DAS SYMBOL IN ORDNA AENDERT, zieht es hier und in
   werkzeuge\unterlagen.ps1 nach — dort steht dasselbe SVG fuer den
   maschinell erzeugten Aenderungsverlauf. */
.sym-hilfe {
  display: inline-block; width: 1.05em; height: 1.05em;
  vertical-align: -0.16em; color: var(--aktion);
}

h2 { font-size: 1.5rem; margin-top: 3rem; line-height: 1.3; }

.karte {
  background: var(--karte);
  border: 1px solid var(--rand);
  border-radius: 10px;
  padding: 1.3rem 1.5rem;
  margin: 1rem 0;
}
.karte h3 { margin-top: 0; }

a { color: var(--aktion); }

.knopf {
  display: inline-block;
  background: var(--aktion);
  color: var(--aktion-text);
  padding: 0.55rem 1.3rem;
  border-radius: 8px;
  text-decoration: none;
  border: none;
  font-size: 1rem;
  cursor: pointer;
}
.knopf:hover { filter: brightness(1.1); }

/* Kontaktseite: mailto-Knopf und Kopier-Rückfall nebeneinander */
.kontakt-aktion { display: flex; flex-wrap: wrap; gap: 0.9rem; align-items: center; }

/* Logo als Hero-Überschrift (ZUENTEC-Startseite) */
.hero-wortbild { margin: 0 0 0.8rem; }
.hero-wortbild img { max-width: min(460px, 92%); height: auto; margin: 0 auto; }

/* Kachel-Symbole (SVG-Nachbau des KI-Blatts Erkennen/Benennen/Wiederfinden) */
.kachel-symbol { display: block; width: 88px; height: 88px; margin: 0.3rem auto 0.9rem; }
.kachel-symbol .sym-haupt { fill: var(--primaer); }
.kachel-symbol .sym-lauf { fill: var(--karte); }
.kachel-symbol .sym-akzent { fill: var(--akzent); }
.kachel-symbol .sym-akzent-linie {
  fill: none; stroke: var(--akzent);
  stroke-width: 4.5; stroke-linecap: round; stroke-linejoin: round;
}
.kachel-symbol .sym-haken {
  fill: none; stroke: #245273;
  stroke-width: 4; stroke-linecap: round; stroke-linejoin: round;
}
/* Dark Mode: Marke wird weiß, Akzent bleibt (Corporate-Design-Regel) */
@media (prefers-color-scheme: dark) {
  :root:not([data-thema="hell"]) .kachel-symbol .sym-haupt { fill: #ffffff; }
}
:root[data-thema="dunkel"] .kachel-symbol .sym-haupt { fill: #ffffff; }

/* Verzeichnisbaum im Datei-Explorer-Stil */
.symbolvorrat { display: none; }
.baum { font-size: 0.9rem; line-height: 2; overflow-x: auto; }
.baum ul { list-style: none; margin: 0; padding-left: 1.5rem; }
.baum > ul { padding-left: 0; }
.baum .zeile { display: flex; align-items: center; gap: 0.45rem; white-space: nowrap; }
.baum .pfeil { color: var(--gedaempft); font-size: 0.7rem; width: 0.9rem; flex: none; text-align: center; }
.baum svg.sym { width: 16px; height: 16px; flex: none; }
.baum .sym-ordner { color: var(--akzent); }
.baum .sym-datei { color: var(--gedaempft); }

/* Produktbilder: Variante je Farbmodus (analog logo-hell/logo-dunkel) */
.bild-hell { display: block; }
.bild-dunkel { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-thema="hell"]) .bild-hell { display: none; }
  :root:not([data-thema="hell"]) .bild-dunkel { display: block; }
}
:root[data-thema="dunkel"] .bild-hell { display: none; }
:root[data-thema="dunkel"] .bild-dunkel { display: block; }

figure.screenshot { margin: 1.5rem 0; }
figure.screenshot img { width: 100%; height: auto; border: 1px solid var(--rand); border-radius: 10px; }
figure.screenshot figcaption { font-size: 0.87rem; color: var(--gedaempft); margin-top: 0.4rem; text-align: center; }

.kacheln { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 1rem; margin: 1rem 0; }
.kacheln .karte { margin: 0; }
/* Schmalere Kacheln, damit die vier Handbücher in eine Reihe passen */
.kacheln-vier { grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); }

.zitat {
  border-left: 4px solid var(--akzent);
  padding: 0.4rem 1.2rem;
  margin: 1.5rem 0;
  font-style: italic;
}
.zitat .hinweis { font-style: normal; }

/* Fußzeile zentriert unter dem Inhalt — der Darstellungs-Schalter sitzt
   seit 14.08.2026 als Aufklappmenü in der Kopfleiste. */
footer.fuss {
  border-top: 1px solid var(--rand);
  padding: 1.2rem 1.5rem;
  font-size: 0.87rem;
  color: var(--gedaempft);
  display: flex;
  gap: 1.2rem;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
}
footer.fuss a { color: var(--gedaempft); }

/* ============================================================
   Bausteine der Produktseite (ORDNA)
   Reihenfolge wie auf der Seite: Hero → Problem → Vorher/Nachher →
   Schritte → Alltag → Beweis → Band → Vertrauen → Abgrenzung →
   Download → Aufklappbares
   ============================================================ */

/* Hero: Marke über der Nutzenüberschrift.
   Die Akronym-Zeile im ORDNA-Lockup ist 31 von 1000 viewBox-Einheiten hoch.
   Bei 1000/31 rem Breite erreicht sie damit genau die Fließtextgröße (1rem) —
   darunter wird sie unleserlich. Wer das Lockup austauscht, rechnet hier nach. */
.hero-marke { margin: 0 0 1.3rem; }
.hero-marke img {
  width: calc(1000rem / 31);
  max-width: 100%;
  height: auto;
  margin: 0 auto;
}
.hero .hero-titel { font-size: clamp(1.7rem, 4.2vw, 2.5rem); line-height: 1.2; margin: 0 0 0.9rem; }
.hero-untertitel { font-size: 1.08rem; max-width: 36rem; margin: 0 auto 1.6rem; }
.hero-aktion {
  display: flex; justify-content: center; align-items: center;
  gap: 1.3rem; flex-wrap: wrap; margin: 0 0 1.3rem;
}

.knopf-gross { font-size: 1.08rem; padding: 0.8rem 1.8rem; font-weight: 600; }
.knopf-zweit { background: none; color: var(--aktion); border: 1px solid var(--aktion); }
.knopf-zweit:hover { background: var(--aktion); color: var(--aktion-text); filter: none; }

/* Entscheidungskriterien direkt unter dem Hauptknopf */
.merkmalzeile {
  list-style: none; display: flex; justify-content: center; flex-wrap: wrap;
  margin: 0 0 0.9rem; padding: 0; font-size: 0.87rem; color: var(--gedaempft);
}
.merkmalzeile li { padding: 0 0.9rem; border-right: 1px solid var(--rand); }
.merkmalzeile li:last-child { border-right: none; }

/* Problemabschnitt: Alltagsfragen als Kacheln */
.fragen {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: 0.9rem; margin: 1.4rem 0; list-style: none; padding: 0;
}
.fragen li {
  background: var(--karte); border: 1px solid var(--rand);
  border-left: 3px solid var(--akzent); border-radius: 10px;
  padding: 1rem 1.2rem; font-style: italic;
}

/* Vorher / Nachher */
.vorher-nachher { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1.4rem 0; }
/* min-width: 0 ist hier keine Kosmetik: Ein Grid-Kind ist von Haus aus
   mindestens so breit wie sein laengster unumbrechbarer Inhalt. Die
   Dateinamen in .dateiliste stehen mit white-space: nowrap - ohne diese
   Zeile schob der laengste Name (469 px) die GANZE SEITE auf 493 px und ein
   360-px-Telefon bekam einen waagerechten Rollbalken. Gemessen 15.08.2026.
   Das overflow-x: auto der Liste greift erst, wenn ihr Kasten schrumpfen darf. */
.vorher-nachher .karte { margin: 0; min-width: 0; }
.dateiliste { min-width: 0; }
.vorher-nachher h3 { font-size: 0.95rem; margin: 0 0 0.7rem; color: var(--gedaempft); }
.dateiliste {
  font-family: Consolas, "Courier New", monospace; font-size: 0.85rem;
  line-height: 1.9; margin: 0; padding: 0; list-style: none; overflow-x: auto;
}
.dateiliste li { white-space: nowrap; }
/* 55 rem = 880 px: Ab hier wird die halbe Spalte schmaler als der laengste
   Dateiname (gemessen 17.08.2026: 359 px brauchen 407 px Spalte). Bis dahin
   standen die beiden Karten bis 46 rem nebeneinander — und die Namen liefen
   in ein waagerechtes Rollfeld, das den Namen genau dort abschnitt, wo er
   etwas zeigen sollte. Nebeneinander bleiben sie nur noch, solange sie
   hineinpassen; darunter steht jede Karte auf voller Breite.
   .abgrenzung behaelt seine eigene Grenze bei 46 rem — dort geht es um
   Fliesstext, nicht um unumbrechbare Namen. */
@media (max-width: 55rem) {
  .vorher-nachher { grid-template-columns: 1fr; }
}
/* Auf dem Telefon passt auch die volle Breite nicht (375 px Fenster lassen
   279 px Inhalt, der laengste Name braucht 359 px). Dann lieber umbrechen als
   abschneiden: Ein Rollbalken im Karteninneren wird uebersehen, und der
   abgeschnittene Name sieht aus wie ein Fehler. Der haengende Einzug zeigt,
   dass die zweite Zeile zum selben Namen gehoert. */
@media (max-width: 46rem) {
  .dateiliste li {
    white-space: normal; overflow-wrap: anywhere;
    padding-left: 1.1rem; text-indent: -1.1rem;
  }
}
.spalte-vorher .dateiliste { color: var(--gedaempft); }
.spalte-nachher .dateiliste .ordner-teil { color: var(--aktion); font-weight: 600; }

/* Ablaufgrafik Dokument → ORDNA → Archiv (Mitte: das ORDNA-App-Icon) */
.ablauf { display: block; width: 100%; max-width: 36rem; height: auto; margin: 0.5rem auto 1.8rem; }
.ablauf .ab-icon-haupt { fill: var(--primaer); }
.ablauf .ab-icon-akzent { fill: var(--akzent); }
.ablauf .ab-form { fill: none; stroke: var(--gedaempft); stroke-width: 2; }
.ablauf .ab-akzent { fill: var(--akzent); }
.ablauf .ab-pfeil { fill: none; stroke: var(--gedaempft); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ablauf text { font-family: "Segoe UI", system-ui, sans-serif; text-anchor: middle; }
.ablauf .ab-beschriftung { fill: var(--gedaempft); font-size: 12px; }
/* Dark Mode: Bildmarke wird weiß, Akzentelement bleibt (Corporate-Design-Regel) */
@media (prefers-color-scheme: dark) {
  :root:not([data-thema="hell"]) .ablauf .ab-icon-haupt { fill: #ffffff; }
}
:root[data-thema="dunkel"] .ablauf .ab-icon-haupt { fill: #ffffff; }

/* Drei Schritte */
.schritte { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1rem; margin: 1.2rem 0; }
.schritte .karte { margin: 0; }
.schritte .kachel-symbol { width: 72px; height: 72px; margin: 0.2rem auto 1rem; }
.schritte h3 { display: flex; align-items: center; gap: 0.6rem; }
.schritt-nummer {
  display: inline-flex; align-items: center; justify-content: center;
  flex: none; width: 1.7rem; height: 1.7rem; border-radius: 50%;
  background: var(--aktion); color: var(--aktion-text);
  font-size: 0.9rem; font-weight: 600;
}

/* Alltagssituationen: Frage links, Antwort rechts */
.alltag { margin: 1.4rem 0; }
.alltag > div {
  display: grid; grid-template-columns: 19rem 1fr; gap: 0.5rem 2rem;
  padding: 1.2rem 0; border-top: 1px solid var(--rand);
}
.alltag > div:last-child { border-bottom: 1px solid var(--rand); }
.alltag-frage { font-style: italic; font-size: 1.05rem; margin: 0; color: var(--aktion); }
.alltag-antwort { margin: 0; }

/* Beweis: Ordnerbaum und Bildschirmfoto nebeneinander */
.beweis { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 1rem; align-items: start; margin: 1.2rem 0; }
.beweis .karte, .beweis figure.screenshot { margin: 0; }
/* Etwas kleiner als frei stehend — sonst laufen lange Dateinamen aus der Spalte */
.beweis .baum { font-size: 0.8rem; }

/* Handlungsband zwischen den Abschnitten */
.cta-band {
  background: var(--band-grund); color: var(--band-text);
  border-radius: 12px; padding: 1.7rem 1.5rem; margin: 3rem 0; text-align: center;
}
.cta-band p { margin: 0 0 1rem; font-size: 1.05rem; }
.cta-band p:last-child { margin: 0; }
.cta-band .hinweis { color: var(--band-text); opacity: 0.8; font-size: 0.87rem; margin: 0.8rem 0 0; }

/* Datenschutz: hervorgehobene Fläche */
.hervorkarte { border: 2px solid var(--akzent); }
.hervorsatz { font-size: 1.12rem; font-weight: 600; color: var(--aktion); }

/* Vertrauensraster */
.vertrauen {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
  gap: 1.3rem 2rem; margin: 1.4rem 0; list-style: none; padding: 0;
}
.vertrauen li { position: relative; padding-left: 1.9rem; }
.vertrauen li::before {
  content: "✓"; position: absolute; left: 0; top: 0;
  color: var(--aktion); font-weight: 700;
}

/* Abgrenzung: gedacht für / nicht gedacht für */
.abgrenzung { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1.2rem 0; }
.abgrenzung .karte { margin: 0; }
.liste-ja, .liste-nein { list-style: none; padding: 0; margin: 0.6rem 0 0; }
.liste-ja li, .liste-nein li { position: relative; padding-left: 1.6rem; margin-bottom: 0.6rem; }
.liste-ja li::before { content: "✓"; position: absolute; left: 0; color: var(--aktion); font-weight: 700; }
.liste-nein li::before { content: "–"; position: absolute; left: 0; color: var(--gedaempft); font-weight: 700; }

/* Ruhiger Hinweiskasten (kein Warnton) */
.hinweiskasten {
  background: var(--karte); border: 1px solid var(--rand);
  border-left: 3px solid var(--akzent); border-radius: 8px;
  padding: 1rem 1.2rem; margin: 1.2rem 0; font-size: 0.94rem;
}

/* Downloadbereich */
.download-aktion { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; margin: 1.3rem 0 0.6rem; }
/* Freiwillige Unterstuetzung. Der Abschnitt steht seit 16.08.2026 am ENDE
   der ORDNA-Seite (Kommentar 14b dort), bewusst NICHT im Download-Abschnitt
   und nicht davor: Dort stuende die Bitte vor dem Moment, in dem jemand das
   Programm ueberhaupt gestartet haben kann. Traeger ist seither ein <p> mit
   einem Link darin, vorher ein <form>. */
.spenden-aktion { margin: 1.2rem 0 0.4rem; }
/* Offizieller PayPal-Spendenknopf. Die Grafik ist UNVERAENDERT die von
   PayPal ausgelieferte (assets/logo/paypal-spenden-*.gif, je eine
   Sprachfassung) - PayPal verlangt unveraenderte Verwendung, sie wird also
   weder umgefaerbt noch skaliert. Sie liegt bewusst OERTLICH: eingebunden
   von paypalobjects.com waere sie eine Einbindung von einem fremden Server
   und widerspraeche der Zusage im Datenschutzabschnitt derselben Seite.
   Die Polsterung veraendert das Bild nicht, sie vergroessert nur die
   Klickflaeche: 26 px hohe Grafik + 2 x 9 px = 44 px, wie es die
   Fingerbedienung braucht (WCAG 2.5.8 fordert 24 px als Untergrenze).

   box-sizing: content-box IST HIER PFLICHT (behoben 16.08.2026). Das
   "* { box-sizing: border-box }" ganz oben gilt fuer JEDES Element, also
   auch fuer diese Grafik, und rechnet die Polsterung dann IN die Masse
   hinein, die width/height am Element vorgeben. Aus 98 x 26 px wurden
   dadurch 98-2*6 = 86 auf 26-2*9 = 8 px: Die Marke lag flach gequetscht auf
   der Seite - und damit war zugleich die Auflage gebrochen, die
   PayPal-Grafik unveraendert und unskaliert zu zeigen. Mit content-box
   gelten width/height fuer das Bild selbst, die Polsterung kommt aussen
   dazu: Grafik 98 x 26, Klickflaeche 110 x 44. Der Fehler entstand am
   input-Element und ueberlebte den Umbau zum <img> im Link - er haengt
   nicht am Elementtyp, sondern an der Kombination "feste Masse plus
   Polsterung". Wer hier etwas aendert, sieht sich den Knopf in allen vier
   Sprachfassungen an (die Grafiken sind 98/92/124/92 px breit) und in
   beiden Farbmodi. */
.paypal-knopf {
  display: inline-block; border: 0; padding: 9px 6px;
  background: none; cursor: pointer;
  box-sizing: content-box;
}

/* Aufklappbares: Technik und häufige Fragen */
.details-block { margin: 1.2rem 0; }
.details-block details {
  background: var(--karte); border: 1px solid var(--rand);
  border-radius: 10px; margin-bottom: 0.6rem;
}
.details-block summary {
  padding: 0.9rem 1.2rem; cursor: pointer; font-weight: 600;
  list-style: none; display: flex; align-items: flex-start; gap: 0.6rem;
}
.details-block summary::-webkit-details-marker { display: none; }
.details-block summary::before { content: "▸"; color: var(--aktion); flex: none; }
.details-block details[open] summary::before { content: "▾"; }
.details-block summary:hover { color: var(--aktion); }
.details-block details > *:not(summary) { padding: 0 1.2rem; margin: 0 0 1rem; }

/* Rückweg über der Überschrift (Änderungsverlauf → Support) */
.rueckweg { font-size: 0.9rem; margin: 0 0 0.6rem; }
.rueckweg a { color: var(--gedaempft); text-decoration: none; }
.rueckweg a:hover { color: var(--aktion); }

/* Änderungsverlauf — je Fassung ein Abschnitt, erzeugt von werkzeuge/unterlagen.ps1 */
.fassung { border-top: 1px solid var(--rand); }
.fassung:first-of-type { border-top: none; }
.fassung h2 {
  display: flex; align-items: baseline; gap: 0.9rem; flex-wrap: wrap;
  font-size: 1.35rem; margin: 2rem 0 0;
}
.fassung-datum { font-size: 0.87rem; font-weight: 400; color: var(--gedaempft); }
.aenderungen { margin: 0.7rem 0 1.8rem; padding-left: 1.3rem; }
.aenderungen li { margin-bottom: 0.7rem; }
/* Bewusst nur hier: ein globaler code-Stil würde die ORDNA-Seite mitverändern */
.fassung code {
  background: var(--karte); border: 1px solid var(--rand); border-radius: 4px;
  padding: 0.05em 0.35em; font-size: 0.92em;
}

/* ============================================================
   Bedienbarkeit: Sprungmarke und sichtbarer Fokus (WCAG 2.2 AA)
   ============================================================ */

/* Erster Tabstopp der Seite: springt ueber Kopf und Navigation zum Inhalt.
   Sichtbar nur, solange er den Fokus hat.
   FIXED, nicht absolute (16.08.2026): Absolut stand er am Anfang des
   DOKUMENTS. Seit die Kopfleiste feststeht, kann man mitten auf der Seite
   wieder in die Navigation tabben - der Sprungmarke haette man dann beim
   Fokussieren nichts angesehen, weil sie weit oben ausserhalb des Fensters
   lag. z-index 20 haelt sie ueber der Leiste (15). */
.sprungmarke {
  position: fixed; left: 0.5rem; top: -3.5rem; z-index: 20;
  background: var(--aktion); color: var(--aktion-text);
  padding: 0.6rem 1.1rem; border-radius: 0 0 8px 8px; text-decoration: none;
  transition: top 0.15s ease-out;
}
.sprungmarke:focus { top: 0; }

/* Rueckweg zum Seitenanfang, am Ende jedes Kapitels (16.08.2026).
   Das Menue springt in die Kapitel hinein (#schritte, #voraussetzungen,
   #download) - es fehlte der Weg zurueck.
   Ziel ist #oben, ein leeres <span> als erstes Element im <body>. NICHT die
   Kopfleiste: Die steht fest und ist damit immer im Bild - ein Browser
   scrollt nicht zu einem Ziel, das schon oben steht (gemessen; der Rueckweg
   blieb so in sechs von sieben Fenstergroessen wirkungslos).
   Der Pfeil steht in CSS, nicht im HTML: Als Zeichen im Linktext liest ihn
   ein Screenreader als "Pfeil nach oben" mit vor, und derselbe Link stuende
   dann auf der ORDNA-Seite dreizehnmal doppelt benannt da.
   Gedaempft und rechtsbuendig: Er ist ein Rueckweg, kein Angebot - er darf
   dem Knopf im Kapitel darueber keine Aufmerksamkeit wegnehmen. */
.nach-oben {
  margin: 1.6rem 0 0;
  text-align: right;
  font-size: 0.87rem;
}
.nach-oben a {
  color: var(--gedaempft);
  text-decoration: none;
  /* Fingerziel nach WCAG 2.2 (2.5.8): mit der Polsterung rund 34 px hoch. */
  display: inline-block;
  padding: 0.3rem 0.2rem;
}
.nach-oben a::before { content: "↑ "; }
.nach-oben a:hover { color: var(--aktion); text-decoration: underline; }

/* Der Standard-Fokusring verschwindet auf gefuellten Knoepfen. Zwei Ringe
   in Gegenfarben sind auf jedem Untergrund zu sehen — hell wie dunkel. */
:focus-visible {
  outline: 3px solid var(--aktion);
  outline-offset: 2px;
  border-radius: 4px;
}
.knopf:focus-visible, .knopf-kopf:focus-visible, .sprungmarke:focus-visible {
  outline: 3px solid var(--text);
  outline-offset: 3px;
}

/* Wer Bewegung reduziert haben will, bekommt sie nicht. */
@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;
  }
}

/* Sprungziele liegen als leere <span> in der Ueberschrift; ohne diesen
   Abstand verschwindet die Ueberschrift unter der FESTEN Kopfleiste - und
   zwar unsichtbar: Der Browser scrollt korrekt, die Ueberschrift steht dann
   aber hinter der Leiste, und der Leser landet mitten im Text.
   Gesetzt wird das am Rollbehaelter (html), nicht am Ziel: So gilt es auch
   fuer #inhalt, fuer die Aufklapper und dafuer, dass der Browser ein
   angetabbtes Bedienelement unter der Leiste hervorholt.
   Bis 16.08.2026 stand hier main [id] { scroll-margin-top: 1.5rem } - die
   1,5 rem sind als Luft ueber dem Ziel geblieben. */
html { scroll-padding-top: calc(var(--kopfhoehe) + 1.5rem); }

/* ============================================================
   Bausteine der ueberarbeiteten ORDNA-Seite (15.08.2026)
   ============================================================ */

.hero-einordnung {
  text-transform: uppercase; letter-spacing: 0.08em;
  font-size: 0.82rem; font-weight: 600; color: var(--gedaempft);
  margin: 0 0 0.6rem;
}
.hero-zusatz { margin: 0 0 1rem; }
/* Speicherbedarf im Hero (seit 16.08.2026). Die Zeile traegt die 4,6 GB des
   Erkennungsmodells samt Begruendung ueber den Falz - PRODUKT_ORDNA.md
   Abschnitt 7 verlangt genau das. Sie bleibt gedaempft und in Textbreite,
   damit sie informiert und nicht bremst. */
.hero-platz { max-width: 34rem; margin: 0.9rem auto 0; }

/* Vertrauensleiste unter dem Hero: fuenf ueberpruefbare Aussagen */
.vertrauensleiste {
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: 0.5rem 0.7rem; list-style: none; margin: 1.4rem 0 0; padding: 0;
}
.vertrauensleiste li {
  background: var(--karte); border: 1px solid var(--rand);
  border-radius: 999px; padding: 0.35rem 0.95rem;
  font-size: 0.88rem; color: var(--text);
}
.vertrauensleiste li::before {
  content: "✓ "; color: var(--aktion); font-weight: 700;
}

.unter-h3 { margin-top: 2.2rem; font-size: 1.15rem; }

/* Ausschnitt aus der ECHTEN Oberflaeche - nur EINER, auf den Startseiten
   neben dem Produktanriss.
   Bewusst als Hintergrundbild statt als zugeschnittene Zweitdatei: Der
   Ausschnitt zeigt damit immer das Bild, das setup-aktualisieren.ps1
   zuletzt aufgenommen hat; ein zugeschnittenes Bild veraltete unbemerkt.

   NEU GEMESSEN AM 16.08.2026 (ORDNA 0.30.0) - und zwar an allen vier
   Sprachbildern, nicht nur am deutschen:

     de/fr/es   Bild 1416 x 1064   Archivkarte x 747-1393 / y  83-835
     en         Bild 1416 x 1046   Archivkarte x 747-1393 / y  83-817

   MIT 0.30.0 IST DAS FENSTER 18 PX HOEHER GEWORDEN (1046 -> 1064); die
   englische Fassung blieb bei 1046, weil ihr kuerzerer Text eine Zeile
   weniger umbricht. Die Werte hier standen davor auf 644/728 und
   96,9 % / 26,4 %, gemessen an 1416 x 1046 - sie zeigten den Ausschnitt
   rund einen Pixel versetzt und schnitten unten etwa 25 px der Karte ab.
   Bis 0.28.0 stand die Archivkarte sogar LINKS (x 23-561, Bild 1416 x 1025);
   mit 0.29.0 folgt das Fenster dem Weg der Dokumente - die beiden Quellen
   links, ein Pfeil nach rechts, dort das Archiv.

   EIN WERT FUER ALLE VIER SPRACHEN, und zwar die GROESSTE Kartenhoehe
   (753): So wird nie ein Stueck der Karte abgeschnitten; bei Englisch
   stehen dafuer rund 18 px Seitenhintergrund unter der Karte, was neben
   dem Kartenrand nicht auffaellt. Umgekehrt waere schlechter - ein
   angeschnittener Rahmen sieht nach Fehler aus, etwas Luft darunter nicht.
   WARUM NICHT SPRACHABHAENGIG: Welche Sprache wie hoch umbricht, kann sich
   mit jedem Text aendern; vier Werte zu pflegen hiesse, den Fehler zu
   vervierfachen.

   So rechnet man die Werte um, wenn sich das Layout wieder aendert:
     background-size       = 1416 / Ausschnittbreite * 100
     background-position X = 100 * x0 / (1416 - Ausschnittbreite)
     background-position Y = 100 * y0 / (Bildhoehe - Ausschnitthoehe)
   Hier: 1416/647 = 219 % · 100*747/769 = 97,1 % · 100*83/311 = 26,7 %.
   Nachmessen laesst sich das an der Hintergrundfarbe: Die Karte ist alles,
   was in einer Spalte durch sie hindurch NICHT #f4f5f7 ist.
   (Auf der ORDNA-Seite standen bis 15.08.2026 drei solche Ausschnitte
   nebeneinander. Sie sind entfallen - das Vollbild mit einer Legende
   darunter sagt dasselbe an einem Stueck.) */
.ausschnitt {
  background-repeat: no-repeat;
  border: 1px solid var(--rand); border-radius: 10px;
  background-color: var(--karte);
}
.ausschnitt-archiv { aspect-ratio: 647 / 789; background-size: 219%; background-position: 97.1% 26.7%; }

/* Legende unter dem Vollbild: was in welchem Bereich des Fensters steht */
.bildlegende { list-style: none; padding: 0; margin: 1rem 0 0; }
.bildlegende li {
  position: relative; padding-left: 1.5rem; margin-bottom: 0.9rem;
}
.bildlegende li::before {
  content: "▸"; position: absolute; left: 0; top: 0; color: var(--aktion);
}

/* Je Seitensprache das Bild dieser Sprache, je Farbmodus die passende Fassung */
html[lang="de"] .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-de-hell.png?v=113ce985"); }
html[lang="en"] .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-en-hell.png?v=26675958"); }
html[lang="fr"] .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-fr-hell.png?v=5a234ffa"); }
html[lang="es"] .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-es-hell.png?v=bf51d530"); }
@media (prefers-color-scheme: dark) {
  html[lang="de"]:not([data-thema="hell"]) .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-de-dunkel.png?v=f3de3403"); }
  html[lang="en"]:not([data-thema="hell"]) .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-en-dunkel.png?v=65957bc8"); }
  html[lang="fr"]:not([data-thema="hell"]) .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-fr-dunkel.png?v=e4d3682b"); }
  html[lang="es"]:not([data-thema="hell"]) .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-es-dunkel.png?v=d3ea724c"); }
}
html[lang="de"][data-thema="dunkel"] .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-de-dunkel.png?v=f3de3403"); }
html[lang="en"][data-thema="dunkel"] .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-en-dunkel.png?v=65957bc8"); }
html[lang="fr"][data-thema="dunkel"] .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-fr-dunkel.png?v=e4d3682b"); }
html[lang="es"][data-thema="dunkel"] .ausschnitt { background-image: url("../bilder/ordna-oberflaeche-es-dunkel.png?v=d3ea724c"); }

/* Spaltenliste der Excel-Mappe: zwei Spalten, damit sechs kurze Angaben
   nicht als lange Kolonne wirken */
.spaltenliste {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: 0.2rem 1.5rem; margin: 0.6rem 0 1rem; padding-left: 1.3rem;
}

/* Produktanriss auf der Startseite: Text links, echter Ausschnitt rechts */
.produkt-anriss {
  display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: 1.5rem; align-items: start; margin: 1.2rem 0;
}
.produkt-anriss figure { margin: 0; }
.produkt-anriss figcaption { font-size: 0.87rem; color: var(--gedaempft); margin-top: 0.5rem; }
.produkt-anriss .vertrauen { grid-template-columns: 1fr; gap: 0.8rem; }

/* Drei Haushaltssituationen */
.faelle { display: grid; grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); gap: 1rem; margin: 1.2rem 0; }
.faelle .karte { margin: 0; display: flex; flex-direction: column; }
.fall-frage {
  font-style: italic; color: var(--aktion);
  border-left: 3px solid var(--akzent); padding-left: 0.9rem; margin: 0 0 0.9rem;
}
.fall-nutzen { margin: auto 0 0; padding-top: 0.7rem; font-weight: 600; }

/* Weg des Dokuments (Datenschutzabschnitt) */
.wegbild { display: block; width: 100%; max-width: 34rem; height: auto; margin: 1.4rem auto; }
.wegbild .weg-feld { fill: var(--hintergrund); stroke: var(--rand); stroke-width: 1.5; }
.wegbild .weg-mitte { stroke: var(--akzent); stroke-width: 2.5; }
.wegbild .weg-pfeil { fill: none; stroke: var(--gedaempft); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wegbild text { font-family: "Segoe UI", system-ui, sans-serif; text-anchor: middle; fill: var(--text); font-size: 14px; }
.wegbild .weg-klein { fill: var(--gedaempft); font-size: 11.5px; }

/* Systemanforderungen als Tabelle — Begriff links, Antwort rechts */
.anforderungen { width: 100%; border-collapse: collapse; margin: 1.2rem 0; }
.anforderungen caption { caption-side: bottom; text-align: left; padding-top: 0.7rem; }
.anforderungen th, .anforderungen td {
  text-align: left; vertical-align: top;
  padding: 0.85rem 1rem; border-top: 1px solid var(--rand);
}
.anforderungen th { width: 13rem; font-weight: 600; }
.anforderungen tr:first-child th, .anforderungen tr:first-child td { border-top: none; }

/* Anbieterangaben */
.anbieter-fakten { list-style: none; padding: 0; margin: 1rem 0 0; }
.anbieter-fakten li { position: relative; padding-left: 1.4rem; margin-bottom: 0.6rem; }
.anbieter-fakten li::before { content: "·"; position: absolute; left: 0.4rem; color: var(--aktion); font-weight: 700; }

/* Dateiangaben am Download: Bezeichnung ueber Wert, damit die Pruefsumme
   auf schmalen Bildschirmen nicht in eine Spalte gequetscht wird. */
.dateiangaben {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.9rem 1.4rem; margin: 1.4rem 0 0;
  border-top: 1px solid var(--rand); padding-top: 1.2rem;
}
.dateiangaben > div.breit { grid-column: 1 / -1; }
.dateiangaben dt { font-size: 0.82rem; color: var(--gedaempft); text-transform: uppercase; letter-spacing: 0.04em; }
/* Die Dateiangaben stehen im Aufklapper "Echtheit pruefen" (details), nicht
   mehr offen in der Download-Karte: Eine 64-stellige Pruefsumme ist fuer
   den einen der Beleg und fuer den anderen nur Rauschen. */
.details-block .dateiangaben { border-top: none; padding-top: 0; margin-top: 0; }
.dateiangaben dd { margin: 0.2rem 0 0; }
.dateiangaben code {
  font-family: Consolas, "Courier New", monospace; font-size: 0.85rem;
  word-break: break-all; line-height: 1.5;
}
.befehl {
  display: inline-block; background: var(--hintergrund);
  border: 1px solid var(--rand); border-radius: 6px;
  padding: 0.4rem 0.7rem; font-family: Consolas, "Courier New", monospace;
  font-size: 0.88rem; word-break: break-all;
}

/* Schmale Bildschirme: alles untereinander */
/* 85 rem = 1360 px (bis 16.08.2026: 62 rem). Die beiden Sprungmarken der
   eigenen Seite stehen jetzt genau dann in der Leiste, wenn sie einzeilig
   bleibt — GEMESSEN, nicht geschaetzt: Die Navigation braucht mit ihnen
   1066 px, ohne sie 821 px; bei 1366 px Fensterbreite bleiben neben der Marke
   1118 px. Die alte Grenze liess sie in einem Bereich stehen, in dem sie die
   Leiste zweizeilig machten (120 statt 70 px). Solange die Leiste mitscrollte,
   kostete das einmal Platz; seit sie feststeht, kostet es ihn dauerhaft.
   Erreichbar bleiben die Kapitel ueber die Seite selbst. */
@media (max-width: 85rem) {
  nav.haupt a.nav-anker { display: none; }
}
/* 62 rem = 992 px: Unterhalb bekommt die Navigation keine eigene Zeile mehr
   geschenkt — sie bricht ohnehin um. Die Kopfleiste steht fest, und was sie
   hier zu hoch ist, fehlt dem Inhalt DAUERHAFT und nicht nur einmal beim
   Seitenanfang. Deshalb ueberall knapper: Logo 30 statt 40 px, engere
   Polsterung, kleinerer Zeilenabstand. GEMESSEN: 120 -> 93 px.
   Diese Grenze und nicht 52 rem, weil das Band 833-992 px sonst hoeher waere
   als das darunter — die Kompaktierung setzte spaeter ein als der Umbruch.
   Die Fingerziele bleiben ueber den 24 px, die WCAG 2.2 (2.5.8) verlangt:
   Knopf und Aufklapper messen rund 34 px. */
@media (max-width: 62rem) {
  /* Rueckfallwert OHNE JavaScript, gemessen als Hoechstwert dieses Bandes
     (93 px bei 768-850 px). Zu grosszuegig ist harmlos - die Ueberschrift
     steht dann etwas tiefer; zu knapp ist der Fehler, den es zu vermeiden
     gilt: Dann verschwindet sie hinter der Leiste. Mit JavaScript gewinnt
     ohnehin der gemessene Wert, den menue.js als Inline-Stil setzt. */
  :root { --kopfhoehe: 6rem; }
  header.kopf { padding: 0.55rem 1rem; gap: 0.55rem 0.7rem; }
  .marke img { height: 30px; }
  nav.haupt { gap: 0.45rem 0.9rem; font-size: 0.95rem; }
  nav.haupt a.knopf-kopf { padding: 0.3rem 0.85rem; }
  .sprachwahl summary, .themawahl summary { padding: 0.32rem 0.7rem; }
}

@media (max-width: 52rem) {
  .beweis { grid-template-columns: 1fr; }
  /* Untereinander nimmt jede Kachel die volle Breite. Der gemeinsame
     Massstab geht dabei verloren - auf einem Telefon waere eine 39 %
     breite Archivkarte aber ohnehin nicht mehr zu lesen, und
     nebeneinander vergleicht sie dort niemand. */
  .produkt-anriss { grid-template-columns: 1fr; }
  .anforderungen th, .anforderungen td { display: block; width: auto; padding: 0.2rem 0; }
  .anforderungen th { padding-top: 0.9rem; border-top: 1px solid var(--rand); }
  .anforderungen td { border-top: none; padding-bottom: 0.9rem; }
}
/* Rueckfallwert ohne JavaScript fuer das schmalste Band: hier bricht die
   Navigation in fuenf bis sechs Zeilen um (gemessen 134 px bei 600-700 px,
   166 px bei 320 px). Siehe Begruendung bei 62 rem. */
@media (max-width: 44rem) {
  :root { --kopfhoehe: 10.5rem; }
}

/* Flache Fenster: Landschaftsformat auf dem Telefon (375-414 px hoch). Eine
   feste Leiste naehme dort ein Viertel des Bildes dauerhaft weg — mehr, als
   sie einbringt. Sie scrollt deshalb wieder mit, und --kopfhoehe faellt auf
   den Abstand zurueck, der vor der festen Leiste galt. */
@media (max-height: 28rem) {
  header.kopf { position: static; }
  :root { --kopfhoehe: 0rem; }
}

@media (max-width: 46rem) {
  /* .vorher-nachher stapelt schon ab 55 rem, siehe dort. */
  .abgrenzung { grid-template-columns: 1fr; }
  .alltag > div { grid-template-columns: 1fr; }
  .hero-aktion { flex-direction: column; gap: 0.9rem; }
  .hero-aktion .knopf { width: 100%; }
}
