/* plantbeat.io - gemeinsames Stylesheet. Markenfarben Brand Identity V1.0, Designsystem 2026-10-08, Redesign 2026-10-09
   (editoriale Typografie, Pulslinie als Markenelement, Hairlines statt Karten, ein heller Abschnitt je Seite).
   Keine Fremdquellen; Schriften selbst gehostet (assets/fonts, SIL OFL 1.1). Farben nur ueber die Tokens in :root;
   das Pruefskript misst die Kontraste der Token-Paare (WCAG AA). */

@font-face{font-family:"IBM Plex Sans"; font-style:normal; font-weight:400; font-display:swap; src:url("fonts/IBMPlexSans-Regular.woff2") format("woff2");}
@font-face{font-family:"IBM Plex Sans"; font-style:normal; font-weight:500; font-display:swap; src:url("fonts/IBMPlexSans-Medium.woff2") format("woff2");}
@font-face{font-family:"IBM Plex Sans"; font-style:normal; font-weight:600; font-display:swap; src:url("fonts/IBMPlexSans-SemiBold.woff2") format("woff2");}
@font-face{font-family:"IBM Plex Sans"; font-style:normal; font-weight:700; font-display:swap; src:url("fonts/IBMPlexSans-Bold.woff2") format("woff2");}
@font-face{font-family:"JetBrains Mono"; font-style:normal; font-weight:400; font-display:swap; src:url("fonts/JetBrainsMono-Regular.woff2") format("woff2");}
@font-face{font-family:"JetBrains Mono"; font-style:normal; font-weight:700; font-display:swap; src:url("fonts/JetBrainsMono-Bold.woff2") format("woff2");}

:root{
  --bg:#04121E;
  --surface:#0B1D2C;
  --surface-2:#1D3347;
  --accent:#4DC2FF;
  --on-accent:#04121E;
  --text:#EEF3FC;
  --text-muted:#A9B8CC;
  --ok:#3DDC97;
  --warn:#FFB547;
  --err:#FF6B6B;
  /* Heller Abschnitt (Logo-Invers der Brand Identity): Ice White Grund, Deep Navy Text, tiefes Smartlife-Blau. */
  --bg-light:#EEF3FC;
  --text-on-light:#04121E;
  --muted-on-light:#4A5E74;
  --link-on-light:#136A94;
  --line-on-light:#2B9BD8;
  --hairline-on-light:rgba(4,18,30,.18);
  --font-sans:"IBM Plex Sans","Segoe UI",system-ui,-apple-system,sans-serif;
  --font-mono:"JetBrains Mono",Consolas,"Courier New",monospace;
  --fs-14:.875rem; --fs-16:1rem; --fs-17:1.0625rem; --fs-18:1.125rem; --fs-20:1.25rem; --fs-24:1.5rem; --fs-32:2rem; --fs-36:2.25rem;
  --fs-h1:clamp(2.25rem, 1.2rem + 3.6vw, 4rem);
  --fs-zitat:clamp(2.75rem, 1.4rem + 3.9vw, 4.75rem);
  --sp-8:8px; --sp-16:16px; --sp-24:24px; --sp-32:32px; --sp-48:48px; --sp-64:64px; --sp-96:96px;
  --radius:8px;
  --radius-klein:6px;
  --max:1200px;
  --kopf-hoehe:64px;
  --dauer:180ms;
  --z-kopf:40;
  --z-skip:100;
}

/* Grundlagen */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%; text-size-adjust:100%; scroll-padding-top:calc(var(--kopf-hoehe) + var(--sp-16));}
@media (prefers-reduced-motion: no-preference){ html{scroll-behavior:smooth;} }
body{margin:0; min-height:100vh; min-height:100dvh; display:flex; flex-direction:column; background:var(--bg); color:var(--text);
  font-family:var(--font-sans); font-size:var(--fs-17); font-weight:400; line-height:1.6;}
@media (min-width:1024px){ body{font-size:var(--fs-18);} }
main{flex:1 0 auto;}
img{display:block; max-width:100%; height:auto;}
svg{flex:none;}
a{color:var(--accent); text-decoration:underline; text-underline-offset:3px; transition:color var(--dauer) ease-out;}
a:hover{color:var(--text);}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
h1,h2,h3{margin:0 0 var(--sp-16); line-height:1.15; font-weight:700; text-wrap:balance;}
h1{font-size:var(--fs-h1); letter-spacing:-.025em; line-height:1.05;}
h2{font-size:var(--fs-32); letter-spacing:-.015em;}
h3{font-size:var(--fs-20); font-weight:600; line-height:1.3;}
@media (min-width:1024px){ h2{font-size:var(--fs-36);} }
p{margin:0 0 var(--sp-16); max-width:54ch;}
ul,ol{margin:0 0 var(--sp-16);}
code,.mono{font-family:var(--font-mono);}
b,strong{font-weight:600; color:var(--text);}
.muted{color:var(--text-muted);}
.num{font-variant-numeric:tabular-nums;}
.akzent{color:var(--accent);}
.nur-sr{position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;}
.wrap{width:100%; max-width:var(--max); margin:0 auto; padding:0 var(--sp-16);}
@media (min-width:768px){ .wrap{padding:0 var(--sp-24);} }

/* Sprungmarke */
.skip{position:absolute; left:var(--sp-16); top:-200px; z-index:var(--z-skip); padding:12px 16px; border-radius:var(--radius);
  background:var(--accent); color:var(--on-accent); font-weight:600; text-decoration:none;}
.skip:focus{top:var(--sp-8);}

/* Kopfzeile */
.kopf{position:sticky; top:0; z-index:var(--z-kopf); background:var(--bg); border-bottom:1px solid var(--surface-2);}
.kopf .wrap{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:0 var(--sp-16); min-height:var(--kopf-hoehe);}
.marke{display:inline-flex; align-items:center; gap:var(--sp-8); min-height:44px; color:var(--text); text-decoration:none;
  font-size:var(--fs-24); font-weight:700; letter-spacing:-.01em;}
.marke:hover{color:var(--text);}
/* Seitenlinks (.nav) und Aktionen (.kopf-aktion: Sprache, Kopf-CTA). Ab 1024 px eine Zeile; darunter bricht der
   Kopf in DOM-Reihenfolge um (Logo, Links, Aktionen) - ohne JS, ohne Menue, ohne CSS order, damit die Tab-Reihenfolge
   der sichtbaren Reihenfolge folgt. Die Aktionen stehen dann rechtsbuendig in der letzten Zeile. */
.nav{flex:0 0 auto; max-width:calc(100% + 2 * var(--sp-8)); display:flex; flex-wrap:wrap; align-items:center; gap:0 var(--sp-8);
  margin:0 calc(-1 * var(--sp-8));}
.nav a{display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; padding:0 var(--sp-8);
  border-radius:var(--radius); color:var(--text-muted); text-decoration:none; font-size:var(--fs-16);}
.nav a:hover,.nav a[aria-current="page"]{color:var(--text);}
.kopf-aktion{display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:var(--sp-8); margin-left:auto;}
.kopf-aktion .knopf{padding:8px 16px;}
@media (max-width:1023.98px){ .kopf .wrap{padding-block:calc(var(--sp-8) / 2);} }
@media (min-width:1024px){
  .nav{flex:0 1 auto; margin:0 0 0 auto;}
  .kopf-aktion{margin-left:0;}
}
/* Mit zweiter Linkzeile ist der Kopf hoeher: Tablet (768-1023 px) haelt Anker entsprechend frei; auf dem Telefon
   (unter 768 px) laeuft der Kopf mit (nicht klebend), damit er nicht ein Drittel des Bildschirms belegt. */
@media (min-width:768px) and (max-width:1023.98px){
  html{scroll-padding-top:calc(var(--kopf-hoehe) + 52px + var(--sp-16));}
}
@media (max-width:767.98px){
  .kopf{position:static;}
  html{scroll-padding-top:var(--sp-16);}
}
@media (max-width:479.98px){
  .kopf .wrap{column-gap:var(--sp-8);}
  .marke{font-size:var(--fs-18);}
  .kopf-aktion .knopf{padding:8px 12px; font-size:var(--fs-14);}
  .nav{gap:0;}
}
.zurueck{display:inline-flex; align-items:center; min-height:44px; color:var(--text-muted); text-decoration:none;}
.zurueck:hover{color:var(--text);}

/* Sprachumschalter */
.sprache{display:inline-flex; border:1px solid var(--surface-2); border-radius:var(--radius); overflow:hidden;}
.sprache button{min-width:44px; min-height:44px; padding:0 var(--sp-8); border:0; background:transparent; color:var(--text-muted);
  font-family:var(--font-mono); font-size:var(--fs-14); font-weight:700; cursor:pointer; touch-action:manipulation;
  transition:background-color var(--dauer) ease-out, color var(--dauer) ease-out;}
.sprache button:hover{color:var(--text);}
.sprache button[aria-pressed="true"]{background:var(--surface-2); color:var(--text);}

/* Knoepfe */
.knopf{display:inline-flex; align-items:center; justify-content:center; gap:var(--sp-8); min-height:44px; padding:10px 20px;
  border:1px solid transparent; border-radius:var(--radius); font-family:inherit; font-size:var(--fs-16); font-weight:600;
  line-height:1.2; text-align:center; text-decoration:none; cursor:pointer; touch-action:manipulation;
  transition:background-color var(--dauer) ease-out, border-color var(--dauer) ease-out, color var(--dauer) ease-out;}
.knopf-primaer{background:var(--accent); color:var(--on-accent);}
.knopf-primaer:hover{background:var(--text); color:var(--on-accent);}
.knopf-sekundaer{background:transparent; color:var(--text); border-color:var(--surface-2);}
.knopf-sekundaer:hover{border-color:var(--accent); color:var(--text);}
.knopf-gross{min-height:52px; padding:14px 28px; font-size:var(--fs-18);}
.knopf .icon{color:currentColor;}
.knopfreihe{display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-16) var(--sp-24); margin-top:var(--sp-24);}
/* Textlink neben einem Knopf: gleiche Hoehe, kein Rahmen. */
.textlink{display:inline-flex; align-items:center; min-height:44px; font-weight:600;}

/* Icons (Inline-SVG im Lucide-Stil, aria-hidden) */
.icon{width:24px; height:24px; color:var(--accent);}
.icon-20{width:20px; height:20px;}

/* Pulslinie (Markenelement): drei Pfade - flache Linie links, der eine Ausschlag, flache Linie rechts.
   vector-effect non-scaling-stroke haelt die Strichstaerke bei jeder Breite. */
.puls{display:block; width:100%; height:auto; overflow:visible;}
.puls path{fill:none; stroke-linejoin:round; stroke-linecap:round; stroke-width:2; vector-effect:non-scaling-stroke;}
.puls .puls-flach{stroke:var(--surface-2);}
.puls .puls-schlag{stroke:var(--accent);}
.puls-trenner{max-width:var(--max); margin:0 auto; padding:0 var(--sp-16);}
@media (min-width:768px){ .puls-trenner{padding:0 var(--sp-24);} }
/* Unter dem Hero-Claim: schmal, einmal langsam gezeichnet (nur stroke-dashoffset). */
.puls-claim{width:min(280px, 60%); margin:var(--sp-8) 0 var(--sp-24);}
.puls-claim path{stroke:var(--accent);}
.puls-zeichnen path{stroke-dasharray:1; stroke-dashoffset:1; animation:puls-zeichnen 1.2s ease-out .2s forwards;}
@keyframes puls-zeichnen{ to{stroke-dashoffset:0;} }
.held{position:relative; overflow-x:clip;}

/* Abschnitte */
/* overflow-x clip: angeschnittene Bilder (.anschnitt-*) laufen bis zur Fensterkante, nie darueber hinaus. */
.abschnitt{padding:var(--sp-48) 0; overflow-x:clip;}
@media (min-width:1024px){ .abschnitt{padding:var(--sp-64) 0;} }
.abschnitt-rand{border-top:1px solid var(--surface-2);}
.lead{font-size:var(--fs-18); color:var(--text-muted);}
@media (min-width:1024px){ .lead{font-size:var(--fs-20);} }
.hinweis{margin-top:var(--sp-16); font-size:var(--fs-14); color:var(--text-muted);}
.einleitung{color:var(--text-muted); max-width:54ch;}
/* Mono nur fuer Daten: Messwerte, Pfade, Preise, technische Angaben. */
.daten-zeile{font-family:var(--font-mono); font-size:var(--fs-14); color:var(--text-muted); font-variant-numeric:tabular-nums;}

/* Hero: links Text, rechts Bild, das am rechten Rand anschneidet. */
.held-innen{padding:var(--sp-48) 0 var(--sp-48);}
@media (min-width:1024px){ .held-innen{padding:var(--sp-96) 0 var(--sp-64);} }
.held h1{max-width:18ch;}
.held-zwei{display:grid; gap:var(--sp-32); align-items:center;}
@media (min-width:1024px){ .held-zwei{grid-template-columns:minmax(0,6fr) minmax(0,7fr); gap:var(--sp-48);} }
.held-bild{margin:0;}
.held-bild img{width:100%; border:1px solid var(--surface-2); border-radius:var(--radius);}
.held-bild-frei img{border:0; border-radius:0;}
/* Zweispaltig Text / Bild (und gespiegelt) */
.zwei{display:grid; gap:var(--sp-32); align-items:center;}
@media (min-width:1024px){
  .zwei{grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:var(--sp-64);}
  .zwei-bild-links{grid-template-columns:minmax(0,7fr) minmax(0,5fr);}
  .zwei-bild-links > :first-child{order:0;}
  .zwei-bild-links > :last-child{order:1;}
}
.zwei figure{margin:0;}
.zwei figure img{width:100%; border:1px solid var(--surface-2); border-radius:var(--radius);}
.zwei figcaption{margin-top:var(--sp-8); font-size:var(--fs-14); color:var(--text-muted);}
/* Auf dem Telefon steht das Bild unter dem Text, auch wenn es im DOM zuerst kommt. */
@media (max-width:1023.98px){ .zwei-bild-links > figure{order:1;} }

/* Anschnitt: Bild laeuft bis an die Fensterkante (nur ab 1024 px, darunter normale Breite). */
@media (min-width:1024px){
  figure.anschnitt-rechts{width:calc(100% + max(var(--sp-24), (100vw - var(--max)) / 2 + var(--sp-24)));}
  figure.anschnitt-rechts img{border-right:0; border-top-right-radius:0; border-bottom-right-radius:0;}
  figure.anschnitt-links{width:calc(100% + max(var(--sp-24), (100vw - var(--max)) / 2 + var(--sp-24))); margin-left:calc(-1 * max(var(--sp-24), (100vw - var(--max)) / 2 + var(--sp-24)));}
  figure.anschnitt-links img{border-left:0; border-top-left-radius:0; border-bottom-left-radius:0;}
}

/* Vollbreites Bild ohne Karte */
.voll{margin:0; padding:0;}
.voll img{width:100%;}
.voll figcaption{padding:var(--sp-8) var(--sp-16) 0; font-size:var(--fs-14); color:var(--text-muted);}
@media (min-width:768px){ .voll figcaption{padding:var(--sp-8) var(--sp-24) 0;} }

/* Reine Textsektion mit grosser Typo */
.zitat{font-size:var(--fs-zitat); font-weight:600; line-height:1.1; letter-spacing:-.025em; margin:0 0 var(--sp-32); text-wrap:balance;}
.zitat-text{display:grid; gap:0 var(--sp-48);}
.zitat-text p{margin-bottom:var(--sp-8);}
@media (min-width:1024px){
  .zitat{max-width:83.333%;}
  .zitat-text{grid-template-columns:repeat(2, minmax(0,1fr));}
}

/* Ueberschrift links, Liste mit Hairlines rechts */
.liste-zwei{display:grid; gap:var(--sp-24);}
@media (min-width:1024px){ .liste-zwei{grid-template-columns:minmax(0,4fr) minmax(0,8fr); gap:var(--sp-64);} }
.liste-zwei > div > h2{max-width:14ch;}
.hairlines{list-style:none; margin:0; padding:0; border-top:1px solid var(--surface-2);}
.hairlines li{display:grid; gap:4px var(--sp-24); padding:var(--sp-16) 0; border-bottom:1px solid var(--surface-2);}
@media (min-width:768px){ .hairlines li{grid-template-columns:minmax(0,4fr) minmax(0,8fr); padding:var(--sp-24) 0;} }
.hairlines h3{margin:0;}
.hairlines p{margin:0; color:var(--text-muted); max-width:54ch;}
.hairlines .daten-zeile{margin-top:4px;}
.hairlines .hairline-aktion{margin-top:var(--sp-8); font-size:var(--fs-16);}
/* Variante mit Mono-Datenzeile unter dem Titel */
.hairlines-dreier li{grid-template-columns:none;}
@media (min-width:768px){ .hairlines-dreier li{grid-template-columns:minmax(0,3fr) minmax(0,9fr);} }

/* Ablauf als eine Linie mit Punkten (Pulslinie-Motiv) */
.ablauf{position:relative; margin:var(--sp-32) 0 0;}
.ablauf .puls{margin-bottom:var(--sp-16);}
.ablauf-punkte{display:grid; gap:var(--sp-24); margin:0; padding:0; list-style:none; counter-reset:schritt;}
@media (min-width:768px){ .ablauf-punkte{grid-template-columns:repeat(var(--punkte, 3), minmax(0,1fr)); gap:var(--sp-32);} }
.ablauf-punkte li{position:relative; padding-top:var(--sp-16); counter-increment:schritt; border-top:1px solid var(--surface-2);}
@media (min-width:768px){ .ablauf-punkte li{border-top:0; padding-top:0;} }
.ablauf-punkte li::before{content:counter(schritt, decimal-leading-zero); display:block; margin-bottom:var(--sp-8);
  font-family:var(--font-mono); font-size:var(--fs-14); font-variant-numeric:tabular-nums; color:var(--accent);}
.ablauf-punkte h3,.ablauf-punkte h2{margin-bottom:var(--sp-8); font-size:var(--fs-20); font-weight:600; line-height:1.3;}
.ablauf-punkte p{margin:0; color:var(--text-muted);}
.ablauf .puls circle{fill:var(--bg); stroke:var(--accent); stroke-width:2; vector-effect:non-scaling-stroke;}
@media (max-width:767.98px){ .ablauf .puls{display:none;} }
.ablauf-vier .ablauf-punkte{--punkte:4;}
/* Zielgruppen (schulung): dieselbe Dreier-Reihe, Buchstaben statt Nummern */
.zielgruppen{margin-top:var(--sp-32);}
.zielgruppen li::before{content:counter(schritt, upper-alpha);}

/* Datenblatt in Mono (Hairlines, kein Rahmen) */
.daten{display:grid; grid-template-columns:minmax(0,auto) minmax(0,1fr); gap:0 var(--sp-24); margin:0; border-top:1px solid var(--surface-2);}
.daten dt,.daten dd{margin:0; padding:12px 0; border-bottom:1px solid var(--surface-2);}
.daten dt{color:var(--text-muted); font-size:var(--fs-16);}
.daten dd{font-family:var(--font-mono); font-size:var(--fs-16); font-variant-numeric:tabular-nums; padding-left:1.5ch; text-indent:-1.5ch;}
.daten-kompakt dt,.daten-kompakt dd{padding:10px 0;}

/* Tabellen: Hairlines, kein Rahmen; Werte in Mono wo es Daten sind. */
.tabelle{margin-top:var(--sp-24); overflow-x:auto;}
table{width:100%; border-collapse:collapse; font-size:var(--fs-16); border-top:1px solid var(--surface-2);}
th,td{padding:12px 16px 12px 0; text-align:left; vertical-align:top; border-bottom:1px solid var(--surface-2);}
thead th{color:var(--text-muted); font-weight:500; font-size:var(--fs-14);}
tbody th{font-weight:600; color:var(--text);}
td.mono,th.mono{font-variant-numeric:tabular-nums;}
.spalte-pb{background:var(--surface); padding-left:12px;}
thead th.spalte-pb{color:var(--text); font-weight:600;}
.ja{color:var(--text); font-weight:500;}
.nein{color:var(--text-muted);}
.spec tbody th{width:30%;}
.spec td{font-family:var(--font-mono); font-size:var(--fs-14); font-variant-numeric:tabular-nums;}
@media (max-width:767.98px){
  .spec tr,.spec th,.spec td{display:block; width:auto;}
  .spec tbody th{width:auto; padding-bottom:4px; border-bottom:0;}
  .spec td{padding-top:8px;}
}

/* Ausschnitte echter Oberflaeche: festes 2x2-Raster ab 768 px, jeder Ausschnitt auf Spaltenbreite, schmaler Rahmen. */
.details{display:grid; gap:var(--sp-24); margin-top:var(--sp-32);}
@media (min-width:768px){ .details{grid-template-columns:repeat(2, minmax(0,1fr)); gap:var(--sp-32);} }
.detail{margin:0; min-width:0;}
.detail-rahmen{display:block; padding:var(--sp-8); background:var(--surface); border:1px solid var(--surface-2); border-radius:var(--radius);}
.detail img{width:100%; height:auto; border-radius:var(--radius-klein);}
.detail figcaption{margin-top:var(--sp-8); font-family:var(--font-mono); font-size:var(--fs-14); color:var(--text-muted);}

/* Video (2026-10-09): Textlink mit Abspiel-Symbol, Karte aus Vorschaubild mit Abspiel-Knopf und Mono-Dauer,
   ein Dialog je Seite. Rahmen nur um das Videobild; kein Autoplay, Ton erst nach Klick auf Abspielen. */
.video-link{display:inline-flex; align-items:center; gap:var(--sp-8); min-height:44px; font-weight:600;}
.video-link .icon{width:18px; height:18px; color:currentColor;}
.video-link .mono{font-weight:400; font-size:var(--fs-14); color:var(--text-muted);}
.video-karte{position:relative; display:block; overflow:hidden; border:1px solid var(--surface-2); border-radius:var(--radius);
  background:var(--surface); color:var(--text); text-decoration:none;}
.video-karte img{width:100%; aspect-ratio:16/9; object-fit:cover; transition:opacity var(--dauer) ease-out;}
.video-karte:hover img,.video-karte:focus-visible img{opacity:.8;}
.video-play{position:absolute; left:50%; top:50%; width:64px; height:64px; margin:-32px 0 0 -32px; display:flex; align-items:center;
  justify-content:center; border-radius:50%; background:var(--accent); color:var(--on-accent); box-shadow:0 0 0 1px rgba(4,18,30,.25);
  transition:transform var(--dauer) ease-out;}
.video-play svg{width:28px; height:28px; margin-left:3px;}
.video-karte:hover .video-play,.video-karte:focus-visible .video-play{transform:scale(1.06);}
.video-dauer{position:absolute; right:var(--sp-8); bottom:var(--sp-8); padding:2px 8px; border-radius:var(--radius-klein);
  background:rgba(4,18,30,.82); color:var(--text); font-family:var(--font-mono); font-size:var(--fs-14); font-variant-numeric:tabular-nums;}
/* Pulslinie als dezentes Motiv unter der Karte: Zeile mit Titel links, Dauer rechts, Hairline dazwischen. */
.video-zeile{display:flex; flex-wrap:wrap; justify-content:space-between; gap:var(--sp-8) var(--sp-16); margin:var(--sp-8) 0 0;
  max-width:none; font-size:var(--fs-14); color:var(--text-muted);}
.video-zeile .mono{font-variant-numeric:tabular-nums;}
.hell .video-karte{border-color:var(--hairline-on-light); background:var(--bg-light);}
.hell .video-zeile{color:var(--muted-on-light);}
/* Unter der Ablauf-Linie: kurzer Text links, Karte rechts. */
.ablauf-video{display:grid; gap:var(--sp-24); margin-top:var(--sp-48); align-items:end;}
@media (min-width:1024px){ .ablauf-video{grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:var(--sp-64);} }
.ablauf-video p{margin:0;}
.ablauf-video h3{margin-bottom:var(--sp-8);}
.hairlines .video-link{font-size:var(--fs-16);}
.video-dialog{width:min(960px, calc(100% - 2 * var(--sp-16))); max-width:none; max-height:calc(100% - 2 * var(--sp-16)); margin:auto; padding:0;
  border:1px solid var(--surface-2); border-radius:var(--radius); background:var(--surface); color:var(--text); overflow:auto;}
.video-dialog::backdrop{background:rgba(4,18,30,.86);}
.video-dialog[open]{animation:video-auf var(--dauer) ease-out;}
@keyframes video-auf{ from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:none;} }
.video-dialog-kopf{display:flex; align-items:center; justify-content:space-between; gap:var(--sp-16); padding:var(--sp-8) var(--sp-8) var(--sp-8) var(--sp-16);}
.video-dialog-titel{margin:0; font-size:var(--fs-18); font-weight:600; line-height:1.3;}
.video-schliessen{display:inline-flex; flex:none; align-items:center; justify-content:center; width:44px; height:44px; padding:0; border:0;
  border-radius:var(--radius); background:transparent; color:var(--text-muted); cursor:pointer; touch-action:manipulation;
  transition:background-color var(--dauer) ease-out, color var(--dauer) ease-out;}
.video-schliessen:hover{color:var(--text); background:var(--surface-2);}
.video-schliessen svg{width:22px; height:22px;}
.video-dialog video{display:block; width:100%; aspect-ratio:16/9; background:#000;}
.video-beschreibung{margin:0; padding:var(--sp-16); max-width:none; font-size:var(--fs-16); color:var(--text-muted);}

/* Preise: Vergleichstabelle (preise.html) und kompakter Hinweis (Startseite) */
.preis-tabelle thead th{font-size:var(--fs-18); font-weight:700; color:var(--text); padding-bottom:4px;}
.preis-tabelle tbody th{font-weight:500; color:var(--text-muted); width:16%;}
.preis-tabelle .preis{margin:0;}
.preis-tabelle .kauf-hinweis{margin-top:var(--sp-8);}
/* Unter 768 px je Zeile ein Block: Zeilenkopf als Ueberschrift, jede Zelle mit dem Spaltennamen (data-spalte) davor.
   Gilt fuer alle Tabellen mit .tabelle-stapel (Vergleich, Lizenzen, Box, Stufen, Module); .spec stapelt eigenstaendig. */
@media (max-width:767.98px){
  .tabelle-stapel thead{display:none;}
  .tabelle-stapel tr,.tabelle-stapel th,.tabelle-stapel td{display:block; width:auto; border:0; padding:0;}
  .tabelle-stapel tr{padding:var(--sp-16) 0; border-bottom:1px solid var(--surface-2);}
  .tabelle-stapel tbody th{width:auto; padding-bottom:4px; color:var(--text); font-weight:600;}
  .tabelle-stapel td{padding:4px 0;}
  .tabelle-stapel td::before{content:attr(data-spalte) ": "; color:var(--text-muted); font-size:var(--fs-14);}
  .tabelle-stapel td.spalte-pb{padding:4px 8px; border-radius:var(--radius-klein);}
  .tabelle-stapel td .preis,.tabelle-stapel td .knopf{display:block; margin-top:4px;}
  .tabelle-stapel td .knopf{display:inline-flex; margin-bottom:var(--sp-8);}
  .tabelle-stapel td:has(.knopf)::before{display:block;}
}
.preis{margin:var(--sp-8) 0 var(--sp-16); font-family:var(--font-mono); font-variant-numeric:tabular-nums; font-size:var(--fs-32); font-weight:700; line-height:1.2;}
.preis small{font-family:var(--font-sans); font-size:var(--fs-14); font-weight:400; color:var(--text-muted);}
.kauf-hinweis{margin:var(--sp-8) 0 0; font-size:var(--fs-14);}
/* Kompakter Preis-Hinweis (Startseite) */
.preis-kurz{list-style:none; margin:0; padding:0; border-top:1px solid var(--surface-2);}
.preis-kurz li{display:flex; flex-wrap:wrap; justify-content:space-between; gap:var(--sp-8) var(--sp-24); padding:12px 0; border-bottom:1px solid var(--surface-2);}
.preis-kurz .mono{font-variant-numeric:tabular-nums; font-weight:700;}
.preis-kurz span:first-child{color:var(--text-muted); max-width:54ch;}

/* Fragen und Antworten als Text (kein Akkordeon) */
.fragen{display:grid; gap:var(--sp-24); margin-top:var(--sp-32);}
@media (min-width:768px){ .fragen{grid-template-columns:repeat(2, minmax(0,1fr)); gap:var(--sp-32) var(--sp-48);} }
.fragen h3{margin-bottom:var(--sp-8);}
.fragen p{margin:0;}

/* Heller Abschnitt: Ice White Grund, Deep Navy Text (Logo-Invers). */
.hell{background:var(--bg-light); color:var(--text-on-light);}
.hell a{color:var(--link-on-light);}
.hell a:hover{color:var(--text-on-light);}
.hell :focus-visible{outline-color:var(--link-on-light);}
.hell b,.hell strong,.hell h1,.hell h2,.hell h3,.hell tbody th,.hell .ja{color:var(--text-on-light);}
.hell .muted,.hell .lead,.hell .hinweis,.hell .einleitung,.hell .daten-zeile,.hell p.muted,.hell thead th,.hell .hairlines p,
.hell .ablauf-punkte p,.hell .nein,.hell .daten dt{color:var(--muted-on-light);}
.hell .ablauf-punkte li::before{color:var(--link-on-light);}
.hell .puls .puls-flach{stroke:var(--line-on-light); opacity:.45;}
.hell .puls .puls-schlag{stroke:var(--line-on-light);}
.hell .ablauf .puls circle{fill:var(--bg-light); stroke:var(--line-on-light);}
.hell table,.hell th,.hell td,.hell tr,.hell .hairlines,.hell .hairlines li,.hell .daten,.hell .daten dt,.hell .daten dd,.hell .ablauf-punkte li{border-color:var(--hairline-on-light);}
.hell .knopf-sekundaer{color:var(--text-on-light); border-color:var(--hairline-on-light);}
.hell .knopf-sekundaer:hover{border-color:var(--link-on-light);}
.hell-marke{display:flex; align-items:center; gap:var(--sp-8); margin-bottom:var(--sp-24); font-weight:700; font-size:var(--fs-18); letter-spacing:-.01em;}
.hell-marke .invers{color:var(--line-on-light);}

/* Wer dahintersteht */
.wer{display:grid; gap:var(--sp-24);}
@media (min-width:1024px){ .wer{grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:var(--sp-64);} }
.adresse{font-style:normal; margin:0; padding:var(--sp-16) 0 0; border-top:1px solid var(--surface-2); line-height:1.7;}
.adresse b{display:block;}

/* Ruhige Abschlusszeile statt CTA-Band */
.schluss{padding:var(--sp-48) 0;}
.schluss .wrap{display:grid; gap:var(--sp-16);}
@media (min-width:768px){ .schluss .wrap{grid-template-columns:minmax(0,7fr) minmax(0,5fr); align-items:end; gap:var(--sp-48);} }
.schluss h2{font-size:var(--fs-24); margin-bottom:var(--sp-8);}
.schluss p{margin:0; color:var(--text-muted);}
.schluss-links{display:flex; flex-wrap:wrap; gap:var(--sp-8) var(--sp-24);}
@media (min-width:768px){ .schluss-links{justify-content:flex-end;} }
.schluss-links a{display:inline-flex; align-items:center; min-height:44px; font-weight:600;}

/* Rechtsseiten */
.text-seite{max-width:800px; padding-bottom:var(--sp-48);}
.text-seite h1{margin-top:var(--sp-48); margin-bottom:var(--sp-8); font-size:var(--fs-36);}
.text-seite h2{margin-top:var(--sp-32); font-size:var(--fs-24);}
.text-seite h3{margin-top:var(--sp-24);}
.text-seite p,.text-seite li{max-width:54ch; color:var(--text-muted);}
.text-seite ol,.text-seite ul{padding-left:24px;}
.text-seite li{margin-bottom:var(--sp-8);}
.stand{margin-bottom:var(--sp-32); font-size:var(--fs-14); color:var(--text-muted);}
.kasten{margin:var(--sp-16) 0 var(--sp-24); padding:var(--sp-16) var(--sp-24); background:var(--surface);
  border:1px solid var(--surface-2); border-radius:var(--radius);}
.kasten p{margin:0;}

/* Danke-Seite: ohne Karte, Schritte als Linie */
.danke{padding:var(--sp-48) 0;}
.danke .wrap{max-width:800px;}
.danke h1{font-size:var(--fs-36); max-width:none;}
@media (min-width:1024px){ .danke h1{font-size:3rem;} }
.danke .ablauf-punkte{--punkte:3;}
.danke .hinweis a{word-break:break-all;}

/* Fusszeile mit Adresse */
.fuss{padding:var(--sp-32) 0 var(--sp-48); border-top:1px solid var(--surface-2); color:var(--text-muted); font-size:var(--fs-14);}
.fuss .wrap{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--sp-16);}
.fuss .fuss-adresse{flex:1 1 100%; font-style:normal; line-height:1.7;}
.fuss nav{display:flex; flex-wrap:wrap; gap:0 var(--sp-8);}
.fuss a{display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; padding:0 4px; color:var(--text-muted);}
.fuss a:hover{color:var(--text);}
.fuss-adresse a{display:inline; min-width:0; min-height:0; padding:0;}

/* Reduzierte Bewegung: keine Uebergaenge, Pulslinie sofort fertig gezeichnet. */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{transition:none !important; animation:none !important; scroll-behavior:auto !important;}
  .puls-zeichnen path{stroke-dashoffset:0;}
}

/* Download-Seite: Karte "Aktuelle Version" (ein Objekt, deshalb mit Rahmen), Pruefsumme in Mono, fruehere Versionen. */
.release{padding:var(--sp-24); background:var(--surface); border:1px solid var(--surface-2); border-radius:var(--radius);}
.release + .release{margin-top:var(--sp-16);}
.release h3{margin-bottom:4px;}
.release p{max-width:56ch;}
.release-version{display:inline-block; margin:0 0 var(--sp-16); padding:2px 10px; border:1px solid var(--surface-2); border-radius:var(--radius-klein);
  font-size:var(--fs-18); font-weight:700; font-variant-numeric:tabular-nums; color:var(--accent);}
.release .daten-zeile{margin-bottom:var(--sp-16);}
.release-system{color:var(--text-muted);}
.release .knopfreihe{margin-top:var(--sp-16);}
.release-notizen{margin-top:var(--sp-24); padding-top:var(--sp-24); border-top:1px solid var(--surface-2);}
.release-notizen h4{margin:0 0 var(--sp-8); font-size:var(--fs-16); font-weight:600;}
.release-notizen ul{margin:0 0 var(--sp-16); padding-left:20px; color:var(--text-muted);}
.release-notizen li{margin-bottom:var(--sp-8); max-width:56ch;}
.release-notizen-link{margin:0; font-size:var(--fs-16);}
.release-sha{margin-top:var(--sp-24); padding-top:var(--sp-24); border-top:1px solid var(--surface-2);}
.release-sha-titel{margin:0 0 var(--sp-8); font-size:var(--fs-14); color:var(--text-muted);}
.release-sha-zeile{display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-8) var(--sp-16);}
.release-sha-zeile code{font-size:var(--fs-14); word-break:break-all; color:var(--text);}
.kopieren{display:inline-flex; align-items:center; gap:var(--sp-8);}
.kopieren-status{min-width:6ch; font-size:var(--fs-14); color:var(--text-muted);}
.kopieren-ok{color:var(--ok);}
.knopf-klein{min-height:44px; padding:8px 14px; font-size:var(--fs-14);}
.fruehere{margin-top:var(--sp-24);}
.fruehere summary{display:inline-flex; align-items:center; min-height:44px; cursor:pointer; font-weight:600; color:var(--accent); list-style:none;}
.fruehere summary::-webkit-details-marker{display:none;}
.fruehere summary::before{content:""; display:inline-block; width:8px; height:8px; margin-right:12px; border:solid currentColor; border-width:0 2px 2px 0; transform:rotate(-45deg); transition:transform var(--dauer) ease-out;}
.fruehere[open] summary::before{transform:rotate(45deg);}
.fruehere summary:hover{color:var(--text);}
.fruehere-liste{margin-top:var(--sp-16);}
.fruehere-liste li{grid-template-columns:none;}
@media (min-width:768px){ .fruehere-liste li{grid-template-columns:minmax(0,3fr) minmax(0,9fr);} }
.release-version-klein{margin:0; font-weight:700; font-variant-numeric:tabular-nums;}
.release-aktionen{display:flex; flex-wrap:wrap; gap:var(--sp-8) var(--sp-24); margin:0 0 var(--sp-8); font-size:var(--fs-16);}
.release-aktionen a{display:inline-flex; align-items:center; min-height:44px; font-weight:600;}
.release-sha-klein{display:block; font-size:var(--fs-14); color:var(--text-muted); word-break:break-all;}
