/* radoncheck24.de – Design-System (Mobile-first, Breakpoints 600/900/1200). Klassenvokabular: docs/architektur.md §7 */
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url("/assets/fonts/inter-variable.woff2") format("woff2")}
:root{
--c-primaer:#0f4c5c;--c-primaer-dunkel:#0a3540;--c-primaer-hell:#1b667a;--c-primaer-tint:#e6f0f2;--c-primaer-tint2:#cfe0e5;
--c-akzent:#e36414;--c-akzent-hell:#fb8b24;--c-akzent-dunkel:#b54a0b;--c-akzent-tint:#fdeee2;
--c-text:#1f2933;--c-text-leicht:#52606d;--c-text-invers:#fff;--c-rahmen:#d9e2ec;--c-rahmen-stark:#b8c6d1;
--c-hg:#fff;--c-hg-alt:#f4f7f9;--c-hg-sanft:#eef4f6;
--c-ok:#2e7d32;--c-ok-tint:#e3f3e6;--c-ok-text:#1b5e20;--c-warn:#e0a100;--c-warn-tint:#fff4d6;--c-warn-text:#6b4a00;--c-orange:#e36414;--c-orange-tint:#fdeee2;--c-orange-text:#8a3a08;--c-gefahr:#b3261e;--c-gefahr-tint:#fde8e6;--c-gefahr-text:#8b1a12;--c-info-tint:#e4f0f4;--c-info-text:#0a3540;
--s-1:.25rem;--s-2:.5rem;--s-3:.75rem;--s-4:1rem;--s-5:1.5rem;--s-6:2rem;--s-7:3rem;--s-8:4rem;--abschnitt:clamp(2.5rem,2rem + 3vw,5rem);
--r-sm:6px;--r:10px;--r-lg:16px;--r-rund:999px;
--schatten-sm:0 1px 3px rgba(10,53,64,.08);--schatten:0 2px 12px rgba(10,53,64,.10);--schatten-lg:0 12px 32px rgba(10,53,64,.16);
--fs-xs:.8125rem;--fs-sm:.9rem;--fs-base:clamp(1rem,.96rem + .2vw,1.0625rem);--fs-lg:clamp(1.1rem,1.02rem + .35vw,1.25rem);--fs-h4:1.05rem;--fs-h3:clamp(1.15rem,1.05rem + .45vw,1.35rem);--fs-h2:clamp(1.5rem,1.25rem + 1.1vw,2.05rem);--fs-h1:clamp(1.9rem,1.5rem + 1.9vw,2.8rem);--fs-display:clamp(2.1rem,1.6rem + 2.6vw,3.4rem);
--breite:1180px;--breite-text:72ch;--schrift:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
--kopf-hoehe:68px;--fokus:0 0 0 3px #fff,0 0 0 6px var(--c-akzent);--uebergang:.18s ease}
/* ── Reset ── */
*,*::before,*::after{box-sizing:border-box}
html{font-size:100%;-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--kopf-hoehe) + 1rem)}
body{margin:0;font-family:var(--schrift);font-size:var(--fs-base);line-height:1.6;color:var(--c-text);background:var(--c-hg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-wrap:break-word}
/* Lange Zeichenketten brechen, statt aus ihrem Kasten zu laufen: E-Mail-Adressen,
   Sendungsnummern (20 Ziffern), IBANs, Dateinamen, Tokens. break-word greift NUR, wenn ein
   Wort sonst überliefe – normaler Textumbruch bleibt unberührt. Ohne diese Zeile schob eine
   lange Adresse auf einem 320px-Gerät die ganze Seite um 56px nach rechts. */
img,svg,video{max-width:100%;height:auto;vertical-align:middle}
h1,h2,h3,h4,h5,h6{margin:0 0 .6em;line-height:1.2;font-weight:700;color:var(--c-primaer-dunkel);letter-spacing:-.01em;text-wrap:balance}
h1{font-size:var(--fs-h1)}h2{font-size:var(--fs-h2)}h3{font-size:var(--fs-h3)}h4,h5,h6{font-size:var(--fs-h4)}
p,ul,ol,dl,figure,blockquote,pre,table{margin:0 0 1.1em}
/* Silbentrennung im Fließtext. „Umsatzsteuer-Identifikationsnummer" passt in keine schmale
   Spalte; mit lang="de" am <html> trennt der Browser nach deutschen Regeln. Bewusst NICHT
   auf Schaltflächen, Navigation, Kennzahlen und Code: dort ist ein Trennstrich ein Fehler. */
p,li,dd,dt,td,th,figcaption,blockquote,.karte__text,.hinweis,.feld__hilfe,.kpi__label,.kpi__text{hyphens:auto}
.button,.nav,.status,.kpi__wert,.badge,code,kbd,pre,input,select,textarea,.tabelle__zahl{hyphens:none}
a{color:var(--c-primaer);text-decoration-thickness:1px;text-underline-offset:.15em;transition:color var(--uebergang)}
a:hover{color:var(--c-akzent-dunkel)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
hr{border:0;border-top:1px solid var(--c-rahmen);margin:var(--s-6) 0}
code,kbd,pre{font-family:var(--mono);font-size:.92em}
pre{overflow-x:auto;padding:var(--s-4);background:var(--c-hg-alt);border-radius:var(--r-sm)}
small{font-size:var(--fs-sm)}
strong,b{font-weight:700}
:focus{outline:none}
:focus-visible{outline:3px solid var(--c-akzent);outline-offset:3px;border-radius:3px}
::selection{background:var(--c-primaer-tint2);color:var(--c-primaer-dunkel)}
.icon{width:1.25em;height:1.25em;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link{position:absolute;left:var(--s-4);top:-100px;z-index:1000;padding:.6rem 1rem;background:var(--c-primaer-dunkel);color:#fff;border-radius:var(--r-sm);font-weight:600;text-decoration:none}
.skip-link:focus{top:var(--s-3)}
/* ── Layout ── */
.container{width:100%;max-width:var(--breite);margin-inline:auto;padding-inline:clamp(1.25rem,3vw,2rem)}
.container--schmal{max-width:860px}
.abschnitt{padding-block:var(--abschnitt)}
.abschnitt--alt{background:var(--c-hg-alt)}
/* Das Hausmuster ist <section class="abschnitt--alt"><div class="container">…: Die Farbfläche
   geht über die volle Breite, den waagerechten Abstand liefert der container darin. Steht ein
   solches Band umgekehrt INNERHALB eines containers, liegt dessen Abstand außerhalb der Farbe –
   der Text klebt dann an der Kante. Dieser Fall bekommt seinen Abstand hier selbst und wird
   zugleich abgerundet, damit er als eigener Block gelesen wird und nicht als verrutschtes Band. */
.container>.abschnitt--alt,.container>.abschnitt--dunkel{padding-inline:clamp(var(--s-4),3vw,var(--s-6));border-radius:var(--r-lg)}
.abschnitt--dunkel{background:var(--c-primaer-dunkel);color:#dbe7ec}
.abschnitt--dunkel h2,.abschnitt--dunkel h3{color:#fff}
.abschnitt__kopf{max-width:var(--breite-text);margin-bottom:var(--s-6)}
.abschnitt__mehr{margin:var(--s-5) 0 0}
.abschnitt__kopf--zentriert{margin-inline:auto;text-align:center}
.ueberzeile{display:block;margin-bottom:var(--s-2);font-size:var(--fs-sm);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--c-akzent-dunkel)}
.einleitung{font-size:var(--fs-lg);line-height:1.55;color:var(--c-text-leicht);max-width:var(--breite-text)}
.raster{display:grid;gap:var(--s-5)}
/* Raster- und Flex-Elemente haben von Haus aus min-width:auto: Ihre Spur wird mindestens so
   breit wie ihr längstes unteilbares Wort. Ein Kompositum wie „Weltgesundheitsorganisation"
   in einer Kachel schob damit das ganze Raster über den Container hinaus – gemessen 88px
   waagerechter Seitenlauf auf der Startseite bei 900px Fensterbreite. Mit min-width:0 gilt
   die Spurbreite, und das Wort bricht (overflow-wrap am body) oder wird getrennt.
   Tabellen sind davon nicht betroffen: Sie tragen ihren eigenen Bildlauf
   (.tabelle-wrapper, .prose table, .diagramm, .kalender-gantt). */
.raster>*,.karten>*{min-width:0}
@media(min-width:600px){.raster--2,.raster--4{grid-template-columns:repeat(2,1fr)}}
@media(min-width:900px){.raster--3{grid-template-columns:repeat(3,1fr)}.raster--4{grid-template-columns:repeat(4,1fr)}}
.zentriert{text-align:center}
.mt-0{margin-top:0}.mb-0{margin-bottom:0}
/* ── Buttons ── */
.button{display:inline-flex;align-items:center;justify-content:center;gap:.5em;padding:.72rem 1.35rem;border-radius:var(--r);border:2px solid var(--c-primaer);background:#fff;color:var(--c-primaer);font-weight:600;line-height:1.25;text-decoration:none;cursor:pointer;transition:background var(--uebergang),color var(--uebergang),border-color var(--uebergang),transform var(--uebergang),box-shadow var(--uebergang)}
.button:hover{background:var(--c-primaer-tint);color:var(--c-primaer-dunkel)}
.button:active{transform:translateY(1px)}
.button--primaer{background:var(--c-akzent-dunkel);border-color:var(--c-akzent-dunkel);color:#fff;box-shadow:0 2px 8px rgba(191,79,12,.25)}
.button--primaer:hover{background:#a8440a;border-color:#a8440a;color:#fff}
.button--sekundaer{background:var(--c-primaer);border-color:var(--c-primaer);color:#fff}
.button--sekundaer:hover{background:var(--c-primaer-dunkel);border-color:var(--c-primaer-dunkel);color:#fff}
.button--ghost{background:transparent;border-color:transparent;color:var(--c-primaer)}
.button--ghost:hover{background:var(--c-primaer-tint)}
.button--gefahr{background:#fff;border-color:var(--c-gefahr);color:var(--c-gefahr)}
.button--gefahr:hover{background:var(--c-gefahr);color:#fff}
.button--klein{padding:.42rem .85rem;font-size:var(--fs-sm);border-radius:var(--r-sm)}
.button--block{display:flex;width:100%}
.button[disabled],.button[aria-disabled="true"]{opacity:.55;cursor:not-allowed;transform:none}
.button .icon{width:1.1em;height:1.1em}
.button-gruppe{display:flex;flex-wrap:wrap;gap:var(--s-3)}
/* ── Header ── */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--c-rahmen)}
.site-header__inner{display:flex;align-items:center;gap:var(--s-4);min-height:var(--kopf-hoehe)}
.logo{flex:none;display:inline-flex;align-items:center;gap:.55rem;text-decoration:none;color:var(--c-primaer-dunkel);font-size:1.3rem;font-weight:500;letter-spacing:-.02em;line-height:1}
@media(min-width:1100px) and (max-width:1279px){.site-header .logo{font-size:1.15rem}.site-header .logo__bild{width:34px;height:34px}}
.logo:hover{color:var(--c-primaer)}
.logo__bild{width:40px;height:40px;flex:none}
.logo__text strong{font-weight:800;color:var(--c-akzent)}
.logo__tld{color:var(--c-text-leicht);font-weight:400}
.logo--footer{color:#fff;font-size:1.35rem}
.logo--footer .logo__tld{color:#a9c1ca}
.nav-toggle{display:none;margin-left:auto;width:44px;height:44px;padding:0;border:0;border-radius:var(--r-sm);background:none;position:relative}
.nav-toggle__bar{position:absolute;left:10px;width:24px;height:2.5px;border-radius:2px;background:var(--c-primaer-dunkel);transition:transform var(--uebergang),opacity var(--uebergang)}
.nav-toggle__bar:nth-child(1){top:13px}.nav-toggle__bar:nth-child(2){top:21px}.nav-toggle__bar:nth-child(3){top:29px}
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1){transform:translateY(8px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
.nav{margin-left:auto;display:flex;align-items:center;gap:var(--s-4)}
.nav__liste{list-style:none;margin:0;padding:0;display:flex;gap:.15rem}
.nav__eintrag{position:relative;display:flex;align-items:center}
.nav__link{display:inline-block;padding:.55rem .55rem;border-radius:var(--r-sm);color:var(--c-text);font-weight:600;text-decoration:none;white-space:nowrap}
@media(min-width:1100px){.nav__link{font-size:.95rem}}
.nav__link:hover{color:var(--c-primaer);background:var(--c-primaer-tint)}
.nav__eintrag--aktiv>.nav__link{color:var(--c-primaer);box-shadow:inset 0 -3px 0 var(--c-akzent)}
.nav__aufklappen{width:24px;height:32px;margin-left:-.45rem;padding:0;border:0;border-radius:var(--r-sm);background:none;color:var(--c-text-leicht);display:inline-flex;align-items:center;justify-content:center}
.nav__aufklappen::before{content:"";width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform var(--uebergang)}
.nav__aufklappen:hover{background:var(--c-primaer-tint);color:var(--c-primaer)}
.nav__aufklappen[aria-expanded="true"]::before{transform:translateY(2px) rotate(-135deg)}
.nav__unter{display:none;position:absolute;top:calc(100% + .4rem);left:0;min-width:280px;margin:0;padding:.5rem;list-style:none;background:#fff;border:1px solid var(--c-rahmen);border-radius:var(--r);box-shadow:var(--schatten-lg);z-index:60}
.nav__unter::before{content:"";position:absolute;top:-.5rem;left:0;right:0;height:.5rem}
.nav__eintrag--offen>.nav__unter{display:block}
@media(hover:hover) and (min-width:1100px){.nav__eintrag:hover>.nav__unter{display:block}}
.nav__unter a{display:block;padding:.5rem .75rem;border-radius:var(--r-sm);color:var(--c-text);text-decoration:none;font-size:.97rem}
.nav__unter a:hover,.nav__unter a:focus-visible{background:var(--c-primaer-tint);color:var(--c-primaer-dunkel)}
.nav__aktionen{display:flex;align-items:center;gap:var(--s-3)}
.nav__warenkorb{position:relative;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-sm);color:var(--c-primaer-dunkel)}
.nav__warenkorb:hover{background:var(--c-primaer-tint)}
.nav__warenkorb-anzahl{position:absolute;top:4px;right:2px;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-rund);background:var(--c-akzent-dunkel);color:#fff;font-size:.7rem;font-weight:700;line-height:18px;text-align:center}
.nav__cta{white-space:nowrap}
@media(min-width:1100px){.nav{gap:var(--s-3)}.nav__aktionen{gap:var(--s-1)}.nav__cta{margin-left:var(--s-2);padding:.55rem 1rem;font-size:.95rem}}
@media(min-width:1100px) and (max-width:1379px){.nav__cta{display:none}}
@media(min-width:1380px){.site-header .container{max-width:1400px}}
.nav__suche{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-sm);color:var(--c-primaer-dunkel)}
.nav__suche:hover{background:var(--c-primaer-tint)}
@media(max-width:1099px){
.nav-toggle{display:block}
.nav{display:none;position:absolute;left:0;right:0;top:100%;max-height:calc(100vh - var(--kopf-hoehe));overflow-y:auto;flex-direction:column;align-items:stretch;gap:var(--s-4);padding:var(--s-4) clamp(1.25rem,3vw,2rem) var(--s-5);background:#fff;border-bottom:1px solid var(--c-rahmen);box-shadow:var(--schatten-lg)}
.nav--offen{display:flex}
.nav__liste{flex-direction:column;gap:0}
.nav__eintrag{flex-wrap:wrap;border-bottom:1px solid var(--c-rahmen)}
.nav__link{flex:1;padding:.85rem .25rem;white-space:normal}
.nav__eintrag--aktiv>.nav__link{box-shadow:inset 3px 0 0 var(--c-akzent);padding-left:.75rem}
.nav__aufklappen{width:44px;height:44px;margin:0}
.nav__unter{position:static;width:100%;min-width:0;padding:0 0 .5rem .75rem;border:0;box-shadow:none;border-radius:0}
.nav__aktionen{justify-content:space-between;padding-top:var(--s-2)}
.nav__cta{flex:1}
}
/* ── Footer ── */
.site-footer{margin-top:var(--abschnitt);background:var(--c-primaer-dunkel);color:#dbe7ec;padding:var(--s-7) 0 var(--s-5);font-size:.95rem}
.site-footer a{color:#fff;text-decoration:none}
.site-footer a:hover{color:var(--c-akzent-hell);text-decoration:underline}
.site-footer__spalten{display:grid;gap:var(--s-6)}
@media(min-width:600px){.site-footer__spalten{grid-template-columns:1fr 1fr}}
@media(min-width:900px){.site-footer__spalten{grid-template-columns:2.2fr repeat(4,1fr)}.site-footer__marke{grid-column:1;grid-row:1/3}}
.site-footer__marke p{max-width:46ch}
.site-footer__spalte{min-width:0}
.site-footer__hinweis{font-size:var(--fs-sm);color:#a9c1ca}
.site-footer ul{list-style:none;padding:0;margin:0}
.site-footer li{margin:.35rem 0}
.site-footer__titel{margin:0 0 var(--s-3);font-size:var(--fs-h4);color:#fff}
.site-footer__badges{display:flex;flex-wrap:wrap;gap:var(--s-3);margin:var(--s-5) 0 0;padding:0;list-style:none}
.site-footer__badge{display:inline-flex;align-items:center;gap:.45rem;padding:.4rem .75rem;border:1px solid rgba(255,255,255,.25);border-radius:var(--r-rund);font-size:var(--fs-sm);color:#fff}
.site-footer__badge .icon{color:var(--c-akzent-hell)}
/* Profil-Links (seo.sameas) im Markenblock des Fußbereichs. */
.site-footer__profile{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-4);margin:var(--s-4) 0 0;padding:0;list-style:none}
.site-footer__profile li{margin:0}
.site-footer__profile a{text-decoration:underline;text-underline-offset:.2em}
.site-footer__unten{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-3);margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid rgba(255,255,255,.2);font-size:var(--fs-sm);color:#a9c1ca}
.site-footer__unten p{margin:0}
/* ── Flash, Breadcrumb ── */
.flash-container{max-width:var(--breite);margin:var(--s-4) auto 0;padding-inline:clamp(1.25rem,3vw,2rem)}
.flash{display:flex;gap:.6rem;align-items:flex-start;padding:.85rem 1.1rem;margin:0 0 var(--s-3);border-radius:var(--r);border:1px solid var(--c-ok);border-left-width:5px;background:var(--c-ok-tint);color:var(--c-ok-text)}
.flash--erfolg{border-color:var(--c-ok);background:var(--c-ok-tint);color:var(--c-ok-text)}
.flash--fehler{border-color:var(--c-gefahr);background:var(--c-gefahr-tint);color:var(--c-gefahr-text)}
.flash--hinweis{border-color:var(--c-warn);background:var(--c-warn-tint);color:var(--c-warn-text)}
.breadcrumb{font-size:var(--fs-sm);color:var(--c-text-leicht)}
.breadcrumb ol{display:flex;flex-wrap:wrap;gap:.35rem;margin:0;padding-block:var(--s-3);list-style:none}
.breadcrumb li+li::before{content:"›";margin-right:.35rem;color:var(--c-rahmen-stark)}
.breadcrumb a{color:var(--c-text-leicht);text-decoration:none}
.breadcrumb a:hover{color:var(--c-primaer);text-decoration:underline}
.breadcrumb [aria-current]{color:var(--c-text);font-weight:500}
/* ── Hero ── */
.hero{position:relative;overflow:hidden;padding-block:clamp(2.5rem,2rem + 3vw,5rem);background:linear-gradient(180deg,var(--c-hg-sanft) 0%,#fff 100%)}
.hero::before{content:"";position:absolute;right:-10%;top:-30%;width:55vw;height:55vw;max-width:720px;max-height:720px;border-radius:50%;background:radial-gradient(closest-side,rgba(251,139,36,.16),rgba(251,139,36,0));pointer-events:none}
.hero__inner{position:relative;display:grid;gap:var(--s-6);align-items:center}
@media(min-width:900px){.hero__inner{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}}
.hero h1{font-size:var(--fs-display);margin-bottom:var(--s-4)}
.hero h1 em{font-style:normal;color:var(--c-akzent-dunkel)}
.hero__text .einleitung{margin-bottom:var(--s-5)}
.hero__aktionen{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-bottom:var(--s-4)}
.hero__hinweis{font-size:var(--fs-sm);color:var(--c-text-leicht);margin:0}
.hero__bild{display:block;margin:0}
.hero__bild img{width:100%;height:auto;filter:drop-shadow(0 12px 24px rgba(10,53,64,.12))}
/* ── Vertrauensleiste, Merkmale, Schritte, KPI ── */
.vertrauen{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s-3) var(--s-5);margin:0;padding:var(--s-4) 0;list-style:none;border-top:1px solid var(--c-rahmen);border-bottom:1px solid var(--c-rahmen)}
@media(min-width:900px){.vertrauen{grid-template-columns:repeat(4,1fr)}}
.vertrauen li{display:flex;align-items:center;gap:.6rem;font-weight:600;font-size:.95rem;color:var(--c-primaer-dunkel)}
.vertrauen .icon{width:1.5rem;height:1.5rem;color:var(--c-akzent-dunkel)}
.merkmale{display:grid;gap:var(--s-4);margin:0;padding:0;list-style:none}
/* Ohne min-width:0 bestimmt eine lange E-Mail-Adresse die Spaltenbreite, statt umzubrechen –
   min-width liegt bei Raster- und Flex-Elementen von Haus aus auf auto. Dasselbe Muster steht
   schon bei .site-footer__spalte. */
.merkmale li>*{min-width:0}
.merkmale li{display:flex;gap:.8rem;align-items:flex-start}
.merkmale .icon{width:1.6rem;height:1.6rem;margin-top:.1rem;color:var(--c-akzent-dunkel)}
.merkmale strong{display:block;color:var(--c-primaer-dunkel)}
.schritte{counter-reset:schritt;display:grid;gap:var(--s-5);margin:0;padding:0;list-style:none}
@media(min-width:600px){.schritte{grid-template-columns:repeat(2,1fr)}}
@media(min-width:900px){.schritte{grid-template-columns:repeat(4,1fr)}}
.schritte li{counter-increment:schritt;position:relative;padding:var(--s-5) var(--s-4) var(--s-4);background:#fff;border:1px solid var(--c-rahmen);border-radius:var(--r-lg)}
.schritte li::before{content:counter(schritt);display:flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;margin-bottom:var(--s-3);border-radius:50%;background:var(--c-primaer);color:#fff;font-weight:800;font-size:1.1rem}
.schritte .icon{position:absolute;top:var(--s-4);right:var(--s-4);width:1.75rem;height:1.75rem;color:var(--c-akzent)}
.schritte h3{font-size:var(--fs-h4);margin-bottom:.35rem}
.schritte p{margin:0;color:var(--c-text-leicht);font-size:.95rem}
.kpi{padding:var(--s-5);background:#fff;border:1px solid var(--c-rahmen);border-radius:var(--r-lg);border-top:4px solid var(--c-akzent)}
.kpi__wert{display:block;font-size:clamp(2rem,1.6rem + 1.5vw,2.75rem);font-weight:800;line-height:1.1;letter-spacing:-.02em;color:var(--c-primaer-dunkel);font-variant-numeric:tabular-nums}
.kpi__label{display:block;margin-top:.35rem;font-weight:600;color:var(--c-primaer)}
.kpi__text{display:block;margin-top:.3rem;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.kpi--ok{border-top-color:var(--c-ok)}.kpi--warn{border-top-color:var(--c-warn)}.kpi--gefahr{border-top-color:var(--c-gefahr)}.kpi--info{border-top-color:var(--c-primaer)}
/* ── Karten ── */
.karten{display:grid;gap:var(--s-4);margin:0;padding:0;list-style:none;grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr))}
/* Breitere Kartenspalten für den Kundenbereich: Aktionskarten enthalten Datei-,
   datetime-local- und date-Felder und brechen bei den 270px aus .karten unbrauchbar um. */
.karten--gross{grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr))}
.karte{display:flex;flex-direction:column;background:#fff;border:1px solid var(--c-rahmen);border-radius:var(--r-lg);box-shadow:var(--schatten-sm);transition:box-shadow var(--uebergang),transform var(--uebergang),border-color var(--uebergang)}
.karte:hover{box-shadow:var(--schatten);transform:translateY(-2px);border-color:var(--c-primaer-tint2)}
.karte>a:not(.karte__link){display:flex;flex-direction:column;flex:1;height:100%;padding:var(--s-5);color:inherit;text-decoration:none;border-radius:inherit}
.karte>a:not(.karte__link):focus-visible{outline-offset:-3px}
.karte--statisch{padding:var(--s-5)}
/* Das Polster einer Karte kam bisher nur aus .karte>a oder .karte--statisch. Wird eine Karte
   direkt mit Text oder einem Formular gefüllt – ohne Verweis, ohne Zusatzklasse –, klebte er
   am Rahmen. Diese Regel fängt genau diesen Fall ab, statt ihn in jeder Vorlage einzeln zu
   heilen. :has() ist im Projekt bereits in Gebrauch (.radio-karte:has(input:checked)). */
.karte:not(:has(>a:not(.karte__link))){padding:var(--s-5)}
.karte .icon{width:2rem;height:2rem;margin-bottom:var(--s-3);color:var(--c-akzent-dunkel)}
.karte__kategorie{display:block;margin-bottom:.4rem;font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--c-akzent-dunkel)}
.karte__titel{display:block;margin-bottom:.4rem;font-size:var(--fs-h4);font-weight:700;line-height:1.3;color:var(--c-primaer-dunkel)}
.karte>a:hover .karte__titel{color:var(--c-primaer);text-decoration:underline;text-decoration-color:var(--c-primaer-tint2)}
.karte__text{display:block;color:var(--c-text-leicht);font-size:.95rem}
.karte__meta{display:block;margin-top:auto;padding-top:var(--s-3);font-size:var(--fs-xs);color:var(--c-text-leicht)}
.karte__link{display:inline-flex;align-items:center;gap:.3rem;margin-top:auto;padding-top:var(--s-3);font-weight:600;color:var(--c-primaer)}
.karte--akzent{background:linear-gradient(160deg,var(--c-primaer-dunkel),var(--c-primaer));color:#dbe7ec;border:0}
.karte--akzent .karte__titel,.karte--akzent .karte__text,.karte--akzent h3{color:#fff}
/* ── Hinweise, Zitat, Badges ── */
.hinweis{position:relative;margin:var(--s-5) 0;padding:var(--s-4) var(--s-5) var(--s-4) calc(var(--s-5) + .25rem);border-radius:var(--r);background:var(--c-info-tint);border-left:5px solid var(--c-primaer);color:var(--c-text)}
.hinweis>:last-child{margin-bottom:0}
.hinweis__titel,.hinweis>strong:first-child{display:block;margin-bottom:.25rem;font-weight:700;color:var(--c-primaer-dunkel)}
.hinweis--wichtig{background:var(--c-orange-tint);border-left-color:var(--c-akzent)}
.hinweis--wichtig .hinweis__titel{color:var(--c-orange-text)}
.hinweis--tipp{background:var(--c-ok-tint);border-left-color:var(--c-ok)}
.hinweis--tipp .hinweis__titel{color:var(--c-ok-text)}
.hinweis--recht{background:var(--c-hg-alt);border-left-color:var(--c-text-leicht)}
/* Gesundheitshinweis unter Artikeln der Kategorie „gesundheit“ (partials/hinweis-medizin.twig):
   bewusst neutral wie der Rechtshinweis, kein Warnton – es ist eine Einordnung, keine Warnung. */
.hinweis--medizin{max-width:var(--breite-text);background:var(--c-hg-alt);border-left-color:var(--c-primaer-tint2)}
.hinweis--medizin strong{color:var(--c-text)}
.zitat,blockquote{margin:var(--s-5) 0;padding:var(--s-3) var(--s-5);border-left:4px solid var(--c-akzent-hell);background:var(--c-hg-alt);border-radius:0 var(--r) var(--r) 0;font-size:1.05em;color:var(--c-text)}
.zitat cite,blockquote cite{display:block;margin-top:.4rem;font-size:var(--fs-sm);font-style:normal;color:var(--c-text-leicht)}
.badge{display:inline-block;padding:.15rem .6rem;border-radius:var(--r-rund);background:var(--c-hg-alt);border:1px solid var(--c-rahmen);font-size:var(--fs-xs);font-weight:700;line-height:1.5;color:var(--c-text)}
.badge--ok{background:var(--c-ok-tint);border-color:#b7deb9;color:var(--c-ok-text)}
.badge--warn{background:var(--c-warn-tint);border-color:#f2d98c;color:var(--c-warn-text)}
.badge--gefahr{background:var(--c-gefahr-tint);border-color:#f3b4ad;color:var(--c-gefahr-text)}
.badge--info{background:var(--c-info-tint);border-color:var(--c-primaer-tint2);color:var(--c-info-text)}
.badge--akzent{background:var(--c-akzent-dunkel);border-color:var(--c-akzent-dunkel);color:#fff}
/* ── Prose (Artikel) ── */
.prose{max-width:var(--breite-text);font-size:clamp(1.0625rem,1rem + .25vw,1.125rem);line-height:1.7}
.prose>*{margin-top:0}
.prose h2{margin-top:2.2em;margin-bottom:.6em;padding-top:.2em;font-size:var(--fs-h2)}
.prose h3{margin-top:1.7em;margin-bottom:.5em}
.prose h4{margin-top:1.4em}
.prose h2:first-child{margin-top:0}
.prose p,.prose ul,.prose ol{margin-bottom:1.2em}
.prose li{margin-bottom:.35em}
.prose li::marker{color:var(--c-akzent-dunkel);font-weight:700}
.prose a{text-decoration:underline;text-decoration-color:var(--c-primaer-tint2);text-decoration-thickness:2px}
.prose a:hover{text-decoration-color:currentColor}
.prose img{border-radius:var(--r)}
.prose figure{margin:var(--s-6) 0}
.prose figcaption{margin-top:.5rem;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.prose table{width:100%;border-collapse:collapse;font-size:.95em;display:block;overflow-x:auto;border:1px solid var(--c-rahmen);border-radius:var(--r)}
.prose table thead{background:var(--c-primaer-tint)}
.prose th,.prose td{padding:.6rem .8rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--c-rahmen)}
.prose th{font-weight:700;color:var(--c-primaer-dunkel)}
.prose tbody tr:last-child td{border-bottom:0}
.prose tbody tr:nth-child(even){background:var(--c-hg-alt)}
.prose dl dt{font-weight:700;color:var(--c-primaer-dunkel)}
.prose dl dd{margin:0 0 .8em}
.prose .extern::after{content:"↗";font-size:.75em;margin-left:.15em;vertical-align:super}
.prose kbd{padding:.1em .4em;border:1px solid var(--c-rahmen-stark);border-bottom-width:2px;border-radius:4px;background:#fff}
.anker{margin-left:.35em;font-weight:400;color:var(--c-rahmen-stark);text-decoration:none;opacity:0;transition:opacity var(--uebergang)}
h2:hover .anker,h3:hover .anker,.anker:focus-visible{opacity:1}
.anker:hover{color:var(--c-akzent-dunkel)}
.inhaltsverzeichnis{margin:var(--s-5) 0 var(--s-6);padding:var(--s-4) var(--s-5) var(--s-4) var(--s-5);list-style:none;background:var(--c-hg-alt);border:1px solid var(--c-rahmen);border-radius:var(--r);font-size:.95em;columns:1}
.inhaltsverzeichnis::before{content:"Inhalt";display:block;margin-bottom:.5rem;font-weight:700;font-size:var(--fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--c-primaer-dunkel)}
.inhaltsverzeichnis li{margin:.3em 0;padding-left:1.1em;text-indent:-1.1em}
.inhaltsverzeichnis li::before{content:"›";display:inline-block;width:1.1em;text-indent:0;color:var(--c-akzent-dunkel);font-weight:700}
.inhaltsverzeichnis a{text-decoration:none;color:var(--c-primaer)}
.inhaltsverzeichnis a:hover{text-decoration:underline}
.inhaltsverzeichnis ul{list-style:none;padding-left:1em;margin:.2em 0 0}
/* ── Artikel-Layout ── */
.artikel{padding-bottom:var(--s-7)}
.artikel__kopf{max-width:var(--breite-text);margin:var(--s-4) 0 var(--s-6)}
.artikel__kategorie{display:inline-block;margin-bottom:var(--s-3);padding:.2rem .7rem;border-radius:var(--r-rund);background:var(--c-primaer-tint);color:var(--c-primaer-dunkel);font-size:var(--fs-xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.artikel__titel{margin-bottom:var(--s-4)}
.artikel__einleitung{font-size:var(--fs-lg);line-height:1.55;color:var(--c-text-leicht)}
.artikel__meta{display:flex;flex-wrap:wrap;gap:.35rem 1.25rem;margin:var(--s-4) 0 0;padding-top:var(--s-4);border-top:1px solid var(--c-rahmen);font-size:var(--fs-sm);color:var(--c-text-leicht)}
.artikel__meta span{display:inline-flex;align-items:center;gap:.35rem}
.artikel__bild{margin:var(--s-6) 0 0;max-width:var(--breite)}
.artikel__bild img{width:100%;height:auto;border-radius:var(--r-lg);background:var(--c-hg-alt)}
.artikel__inhalt{min-width:0}
.artikel__raster{display:grid;gap:var(--s-7)}
@media(min-width:1200px){.artikel__raster{grid-template-columns:minmax(0,1fr) 300px;align-items:start}.artikel__seite{position:sticky;top:calc(var(--kopf-hoehe) + 1rem)}}
.autor-box{display:flex;gap:var(--s-4);align-items:flex-start;margin:var(--s-7) 0 0;padding:var(--s-5);border:1px solid var(--c-rahmen);border-radius:var(--r-lg);background:var(--c-hg-alt)}
.autor-box__bild{flex:none;display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--c-primaer);color:#fff}
.autor-box__bild .icon{width:1.7rem;height:1.7rem}
.autor-box h2,.autor-box h3{font-size:var(--fs-h4);margin-bottom:.25rem}
.autor-box p{margin:0;font-size:.95rem;color:var(--c-text-leicht)}
.quellen{max-width:var(--breite-text);margin-top:var(--s-7);padding-top:var(--s-5);border-top:1px solid var(--c-rahmen);font-size:.95rem}
.quellen h2{font-size:var(--fs-h3)}
.quellen ol{padding-left:1.4rem}
.quellen li{margin-bottom:.4rem;word-break:break-word}
.verwandt{margin-top:var(--s-7)}
.verwandt h2{font-size:var(--fs-h2)}
/* Regionen-Verweise unter Regionalseiten (partials/regionen-liste.twig): mehrspaltige Liste,
   damit 16 Bundesländer plus Hub-Seiten nicht zur Bleiwüste werden. */
.regionen-liste{max-width:var(--breite-text);margin-top:var(--s-7);padding-top:var(--s-5);border-top:1px solid var(--c-rahmen)}
.regionen-liste h2{font-size:var(--fs-h3)}
.regionen-liste ul{columns:2;column-gap:var(--s-5);padding-left:1.2rem;margin:0}
.regionen-liste li{margin:0 0 .35rem;break-inside:avoid}
@media(min-width:700px){.regionen-liste ul{columns:3}}
/* ── FAQ ── */
.faq{margin:var(--s-7) 0 0;max-width:var(--breite-text)}
.faq--breit{max-width:none}
.faq__eintrag{border:1px solid var(--c-rahmen);border-radius:var(--r);margin-bottom:var(--s-3);background:#fff;overflow:hidden}
.faq__eintrag[open]{border-color:var(--c-primaer-tint2);box-shadow:var(--schatten-sm)}
.faq__eintrag summary{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:.95rem 1.1rem;cursor:pointer;list-style:none;font-weight:600;color:var(--c-primaer-dunkel)}
.faq__eintrag summary::-webkit-details-marker{display:none}
.faq__eintrag summary:hover{background:var(--c-hg-alt)}
.faq__eintrag summary:focus-visible{outline-offset:-3px}
.faq__eintrag summary::after{content:"";flex:none;width:28px;height:28px;border-radius:50%;background:var(--c-primaer-tint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230f4c5c' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/16px no-repeat;transition:transform var(--uebergang)}
.faq__eintrag[open] summary::after{transform:rotate(45deg)}
.faq__frage{display:inline;margin:0;font-size:1.05rem;font-weight:600;color:inherit}
.faq__antwort{padding:0 1.1rem 1.1rem;color:var(--c-text)}
.faq__antwort>:last-child{margin-bottom:0}
/* ── CTA-Box ── */
.cta-box{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-5);margin:var(--s-7) 0;padding:clamp(1.25rem,1rem + 1.5vw,2rem);border-radius:var(--r-lg);background:linear-gradient(135deg,var(--c-primaer-dunkel),var(--c-primaer) 70%,var(--c-primaer-hell));color:#e6f0f2;box-shadow:var(--schatten)}
.cta-box__text{flex:1 1 320px}
.cta-box__ueberschrift{margin:0 0 .35rem;font-size:var(--fs-h3);font-weight:700;color:#fff}
/* Kennzeichnung „Unser Mietangebot“ über der Überschrift der CTA-Box. */
.cta-box__label{display:block;margin-bottom:.35rem;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--c-akzent-hell)}
.cta-box--hell .cta-box__label{color:var(--c-akzent-dunkel)}
.cta-box p{margin:0}
.cta-box .button{flex:none}
.cta-box--hell{background:var(--c-akzent-tint);color:var(--c-text)}
.cta-box--hell .cta-box__ueberschrift{color:var(--c-primaer-dunkel)}
/* ── Formulare ── */
.formular{max-width:720px}
.formular fieldset{margin:0 0 var(--s-5);padding:0;border:0;min-width:0}
.formular legend{margin-bottom:var(--s-3);padding:0;font-size:var(--fs-h3);font-weight:700;color:var(--c-primaer-dunkel)}
.feld{margin-bottom:var(--s-4)}
.feld__label{display:block;margin-bottom:.35rem;font-weight:600;color:var(--c-primaer-dunkel)}
.feld__label .optional{font-weight:400;color:var(--c-text-leicht)}
.feld__eingabe,.feld input:not([type=checkbox]):not([type=radio]),.feld select,.feld textarea{display:block;width:100%;padding:.65rem .85rem;border:1.5px solid var(--c-rahmen-stark);border-radius:var(--r-sm);background:#fff;color:var(--c-text);line-height:1.4;min-height:44px;transition:border-color var(--uebergang),box-shadow var(--uebergang)}
.feld__eingabe:focus,.feld input:focus,.feld select:focus,.feld textarea:focus{border-color:var(--c-primaer);box-shadow:0 0 0 3px var(--c-primaer-tint2);outline:none}
.feld textarea{min-height:140px;resize:vertical}
.feld select{appearance:none;padding-right:2.5rem;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2352606d' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right .75rem center/18px no-repeat}
.feld__hilfe{margin:.35rem 0 0;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.feld__fehler{margin:.35rem 0 0;font-size:var(--fs-sm);font-weight:600;color:var(--c-gefahr)}
.feld--fehler .feld__eingabe,.feld--fehler input,.feld--fehler select,.feld--fehler textarea{border-color:var(--c-gefahr);background:#fffafa}
.feld--fehler .feld__label{color:var(--c-gefahr)}
.feld--inline{display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:flex-end}
.feld--inline .feld{flex:1 1 160px;margin:0}
.feld--kurz{max-width:200px}
.formular__zeile{display:grid;gap:var(--s-4)}
@media(min-width:600px){.formular__zeile{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}}
.formular__aktionen{display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:center;margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--c-rahmen)}
.checkbox{display:flex;gap:.7rem;align-items:flex-start;margin-bottom:var(--s-3);line-height:1.5}
.checkbox input{flex:none;width:1.3rem;height:1.3rem;margin:.15rem 0 0;accent-color:var(--c-primaer);cursor:pointer}
.checkbox label,.checkbox span{cursor:pointer}
.radio-karten{display:grid;gap:var(--s-3);margin:0 0 var(--s-4);padding:0;list-style:none}
@media(min-width:600px){.radio-karten{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}
.radio-karte{position:relative;display:flex;gap:.75rem;padding:var(--s-4);border:2px solid var(--c-rahmen);border-radius:var(--r);background:#fff;cursor:pointer;transition:border-color var(--uebergang),box-shadow var(--uebergang)}
.radio-karte:hover{border-color:var(--c-primaer-tint2)}
.radio-karte input{flex:none;width:1.25rem;height:1.25rem;margin-top:.15rem;accent-color:var(--c-primaer)}
.radio-karte:has(input:checked){border-color:var(--c-primaer);box-shadow:0 0 0 3px var(--c-primaer-tint2);background:var(--c-primaer-tint)}
.radio-karte:has(input:focus-visible){outline:3px solid var(--c-akzent);outline-offset:2px}
.radio-karte__titel{display:block;font-weight:700;color:var(--c-primaer-dunkel)}
.radio-karte__text{display:block;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.radio-karte__preis{margin-left:auto;font-weight:700;white-space:nowrap}
/* Zahlungsarten: Icon links, Text rechts. Das Icon steht im <label>, damit auch ein Klick
   darauf die Zahlungsart auswählt. */
.radio-karte--zahlung>label{display:flex;gap:.75rem;align-items:flex-start}
.radio-karte__inhalt{min-width:0}
.radio-karte__icon{flex:none;display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:var(--r-sm);background:var(--c-hg-alt);border:1px solid var(--c-rahmen);color:var(--c-primaer)}
.radio-karte__icon svg{width:1.4rem;height:1.4rem}
.radio-karte--zahlung:has(input:checked) .radio-karte__icon{background:#fff;border-color:var(--c-primaer-tint2);color:var(--c-primaer-dunkel)}
.zahlung__titel{display:flex;align-items:center;gap:.75rem}
/* Zahlungsarten brauchen mehr Breite als die Mietpakete: Bei drei Karten in einer Spalte
   von ~800px blieben sonst gut 250px je Karte und der Beschreibungstext zerfiel in
   Einwortzeilen. Ab 17rem Mindestbreite bricht das Raster lieber um. */
@media(min-width:600px){.radio-karten:has(.radio-karte--zahlung){grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr))}}
.suche-formular{display:flex;gap:var(--s-2);max-width:560px;margin:var(--s-4) 0 var(--s-5)}
.suche-formular input{flex:1;min-width:0;min-height:46px;padding:.6rem .9rem;border:1.5px solid var(--c-rahmen-stark);border-radius:var(--r-sm)}
.suche-formular input:focus{border-color:var(--c-primaer);box-shadow:0 0 0 3px var(--c-primaer-tint2)}
/* ── Tabellen ── */
.tabelle-wrapper{overflow-x:auto;margin-bottom:var(--s-5);border:1px solid var(--c-rahmen);border-radius:var(--r);-webkit-overflow-scrolling:touch}
.tabelle{width:100%;border-collapse:collapse;font-size:.95rem;margin:0}
.tabelle th,.tabelle td{padding:.7rem .9rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--c-rahmen)}
.tabelle thead th{background:var(--c-primaer-tint);color:var(--c-primaer-dunkel);font-weight:700;white-space:nowrap}
.tabelle tbody tr:last-child td{border-bottom:0}
.tabelle tbody tr:hover{background:var(--c-hg-alt)}
.tabelle tfoot td{font-weight:700;background:var(--c-hg-alt)}
.tabelle--kompakt th,.tabelle--kompakt td{padding:.4rem .6rem;font-size:var(--fs-sm)}
.tabelle__zahl{text-align:right!important;font-variant-numeric:tabular-nums;white-space:nowrap}
.tabelle caption{caption-side:top;padding:.6rem .9rem;text-align:left;font-weight:700;color:var(--c-primaer-dunkel)}
/* ── Shop ── */
.produkt{display:grid;gap:var(--s-6);margin-bottom:var(--s-7)}
@media(min-width:900px){.produkt{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}
.produkt__galerie{padding:var(--s-5);background:var(--c-hg-alt);border-radius:var(--r-lg);text-align:center}
.produkt__galerie img{max-height:460px;width:auto}
.produkt__info h1{margin-bottom:var(--s-2)}
.produkt__untertitel{font-size:var(--fs-lg);color:var(--c-text-leicht)}
.preis{font-weight:700;color:var(--c-primaer-dunkel);font-variant-numeric:tabular-nums}
.preis--gross{display:block;font-size:clamp(1.8rem,1.5rem + 1vw,2.4rem);line-height:1.1}
.preis--alt{text-decoration:line-through;color:var(--c-text-leicht);font-weight:400}
.preis__hinweis{display:block;font-size:var(--fs-xs);font-weight:400;color:var(--c-text-leicht)}
.pakete{display:grid;gap:var(--s-4);margin:0;padding:0;list-style:none}
@media(min-width:600px){.pakete{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));align-items:stretch}}
.paket{position:relative;display:flex;flex-direction:column;padding:var(--s-5);background:#fff;border:2px solid var(--c-rahmen);border-radius:var(--r-lg);transition:border-color var(--uebergang),box-shadow var(--uebergang)}
.paket:hover{border-color:var(--c-primaer-tint2);box-shadow:var(--schatten)}
.paket--empfohlen{border-color:var(--c-akzent);box-shadow:var(--schatten)}
.paket__empfehlung{position:absolute;top:-.8rem;left:var(--s-5);padding:.15rem .7rem;border-radius:var(--r-rund);background:var(--c-akzent-dunkel);color:#fff;font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em}
.paket__titel{margin-bottom:.25rem;font-size:var(--fs-h3)}
.paket__dauer{color:var(--c-text-leicht);font-size:var(--fs-sm)}
.paket__preis{margin:var(--s-3) 0 var(--s-2);font-size:2rem;font-weight:800;line-height:1;color:var(--c-primaer-dunkel);letter-spacing:-.02em}
.paket__preis small{font-size:var(--fs-sm);font-weight:400;color:var(--c-text-leicht)}
.paket__text{margin:0 0 var(--s-4);font-size:.95rem;color:var(--c-text-leicht)}
.paket__merkmale{margin:0 0 var(--s-4);padding:0;list-style:none;font-size:.95rem}
.paket__merkmale li{display:flex;gap:.5rem;align-items:flex-start;margin-bottom:.4rem}
.paket__merkmale .icon{width:1.15rem;height:1.15rem;margin-top:.2rem;color:var(--c-ok)}
.paket .button{margin-top:auto}
.warenkorb{display:grid;gap:var(--s-6)}
@media(min-width:900px){.warenkorb{grid-template-columns:minmax(0,1fr) 360px;align-items:start}}
.warenkorb__position{display:flex;flex-wrap:wrap;gap:var(--s-4);align-items:center;padding:var(--s-4) 0;border-bottom:1px solid var(--c-rahmen)}
.warenkorb__menge{width:5rem;text-align:center}
.warenkorb__summe{min-width:0;padding:var(--s-5);background:var(--c-hg-alt);border-radius:var(--r-lg);border:1px solid var(--c-rahmen)}
.warenkorb__summe dl{display:grid;grid-template-columns:1fr auto;gap:.4rem var(--s-4);margin:0 0 var(--s-4)}
.warenkorb__summe dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.warenkorb__summe .gesamt{font-weight:800;font-size:1.25rem;color:var(--c-primaer-dunkel);border-top:1px solid var(--c-rahmen);padding-top:.5rem}
.kasse{display:grid;gap:var(--s-6)}
/* Angeheftete Bestellübersicht. Der Kasten darf nie höher werden als das Sichtfenster:
   sonst bleibt sein unterer Teil unerreichbar. */
@media(min-width:900px){.kasse{grid-template-columns:minmax(0,1fr) 380px;align-items:start}.kasse__zusammenfassung{position:sticky;top:calc(var(--kopf-hoehe) + 1rem);max-height:calc(100vh - var(--kopf-hoehe) - 2rem);overflow-y:auto}}
/* Bestellformular: Hier stehen die Pflicht-Checkboxen UND der Bestellbutton unterhalb der
   Zusammenfassung im selben <aside>. Bleibt sie angeheftet, verschiebt sie sich beim Scrollen
   bis an den unteren Rand ihres Containers und legt sich dabei über den Button – bei 100 %
   Zoom war er dadurch nicht mehr sichtbar, erst beim Herauszoomen kam er zum Vorschein.
   Auf dieser Seite deshalb kein sticky. */
@media(min-width:900px){.kasse__formular .kasse__zusammenfassung{position:static;max-height:none;overflow:visible}}
.kasse__schritte{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:0 0 var(--s-6);padding:0;list-style:none}
.kasse__schritte li{display:flex;align-items:center;gap:.5rem;padding:.45rem .95rem;border-radius:var(--r-rund);background:var(--c-hg-alt);border:1px solid var(--c-rahmen);font-size:var(--fs-sm);font-weight:600;color:var(--c-text-leicht)}
.kasse__schritte li[aria-current]{background:var(--c-primaer-tint);border-color:var(--c-primaer-tint2);color:var(--c-primaer-dunkel)}
.kasse__schritte li.erledigt{background:var(--c-ok-tint);border-color:#b7deb9;color:var(--c-ok-text)}
.kasse__schritte li.erledigt::before{content:"✓";font-weight:800}
.kasse__zusammenfassung{min-width:0;padding:var(--s-5);background:var(--c-hg-alt);border:1px solid var(--c-rahmen);border-radius:var(--r-lg)}
.kasse__zusammenfassung h2{font-size:var(--fs-h3)}
.kasse__rechtliches{font-size:var(--fs-sm);color:var(--c-text-leicht)}
.zahlungsart{display:flex;align-items:center;gap:.6rem}
.zahlungsart .icon{width:1.5rem;height:1.5rem;color:var(--c-primaer)}
.iban{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .6rem;border:1px dashed var(--c-rahmen-stark);border-radius:var(--r-sm);font-family:var(--mono);background:#fff}
/* ── Verfügbarkeit (Kalender-Widget) ── */
.verfuegbarkeit{max-width:420px;padding:var(--s-4);border:1px solid var(--c-rahmen);border-radius:var(--r-lg);background:#fff}
.verfuegbarkeit__kopf{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s-3);font-weight:700;color:var(--c-primaer-dunkel)}
.verfuegbarkeit__kopf button{width:36px;height:36px;border:1px solid var(--c-rahmen);border-radius:var(--r-sm);background:#fff}
.verfuegbarkeit__kopf button:hover{background:var(--c-primaer-tint)}
.verfuegbarkeit__raster{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.verfuegbarkeit__wt{text-align:center;font-size:var(--fs-xs);font-weight:700;color:var(--c-text-leicht);padding-bottom:.25rem}
.verfuegbarkeit__tag{display:flex;align-items:center;justify-content:center;aspect-ratio:1;min-height:36px;border:1px solid transparent;border-radius:var(--r-sm);background:var(--c-hg-alt);color:var(--c-text-leicht);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.verfuegbarkeit__tag--frei{background:var(--c-ok-tint);color:var(--c-ok-text);border-color:#b7deb9;cursor:pointer}
.verfuegbarkeit__tag--frei:hover{background:#c9e9cd}
.verfuegbarkeit__tag--belegt{background:var(--c-gefahr-tint);color:var(--c-gefahr-text);text-decoration:line-through;cursor:not-allowed}
.verfuegbarkeit__tag--gewaehlt{background:var(--c-primaer);color:#fff;border-color:var(--c-primaer);font-weight:700}
.verfuegbarkeit__tag--heute{box-shadow:inset 0 0 0 2px var(--c-akzent)}
.verfuegbarkeit__legende{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-3);font-size:var(--fs-xs);color:var(--c-text-leicht)}
/* ── Status, Zeitleiste ── */
.status{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .7rem;border-radius:var(--r-rund);background:var(--c-hg-alt);border:1px solid var(--c-rahmen);font-size:var(--fs-xs);font-weight:700;white-space:nowrap;color:var(--c-text-leicht)}
.status::before{content:"";width:.55rem;height:.55rem;border-radius:50%;background:currentColor}
.status--offen{background:var(--c-warn-tint);border-color:#f2d98c;color:var(--c-warn-text)}
.status--bezahlt{background:var(--c-info-tint);border-color:var(--c-primaer-tint2);color:var(--c-info-text)}
.status--versendet{background:#e8ecfb;border-color:#c3cdf2;color:#2c3e8f}
.status--messung{background:var(--c-orange-tint);border-color:#f7c7a3;color:var(--c-orange-text)}
.status--zurueck{background:#ece8fb;border-color:#d0c5f2;color:#4a2f8f}
.status--fertig{background:var(--c-ok-tint);border-color:#b7deb9;color:var(--c-ok-text)}
.status--storniert{background:var(--c-hg-alt);border-color:var(--c-rahmen-stark);color:var(--c-text-leicht);text-decoration:line-through}
.status--problem{background:var(--c-gefahr-tint);border-color:#f3b4ad;color:var(--c-gefahr-text)}
.zeitleiste{position:relative;margin:var(--s-5) 0;padding:0;list-style:none}
.zeitleiste__schritt{position:relative;padding:0 0 var(--s-5) 2.5rem}
.zeitleiste__schritt::before{content:"";position:absolute;left:.62rem;top:1.4rem;bottom:-.2rem;width:2px;background:var(--c-rahmen)}
.zeitleiste__schritt:last-child::before{display:none}
.zeitleiste__schritt::after{content:"";position:absolute;left:0;top:.25rem;width:1.35rem;height:1.35rem;border-radius:50%;border:3px solid var(--c-rahmen-stark);background:#fff;box-sizing:border-box}
.zeitleiste__schritt--erledigt::after{border-color:var(--c-ok);background:var(--c-ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E") center/70% no-repeat}
.zeitleiste__schritt--erledigt::before{background:var(--c-ok)}
.zeitleiste__schritt--aktiv::after{border-color:var(--c-akzent);background:#fff;box-shadow:0 0 0 4px var(--c-akzent-tint)}
.zeitleiste__schritt--aktiv .zeitleiste__titel{color:var(--c-akzent-dunkel)}
.zeitleiste__titel{display:block;font-weight:700;color:var(--c-primaer-dunkel)}
.zeitleiste__text{display:block;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.zeitleiste__datum{display:block;font-size:var(--fs-xs);color:var(--c-text-leicht)}
@media(min-width:900px){.zeitleiste--horizontal{display:flex}.zeitleiste--horizontal .zeitleiste__schritt{flex:1;padding:2.2rem .5rem 0 0}.zeitleiste--horizontal .zeitleiste__schritt::before{left:1.4rem;right:-.5rem;top:.62rem;bottom:auto;width:auto;height:2px}.zeitleiste--horizontal .zeitleiste__schritt::after{top:0}}
/* ── Tabs ── */
.tabs{margin:var(--s-4) 0 var(--s-5)}
.tabs__liste{display:flex;flex-wrap:wrap;gap:.25rem;margin:0 0 var(--s-4);padding:0;list-style:none;border-bottom:2px solid var(--c-rahmen)}
.tabs__tab{margin-bottom:-2px;padding:.6rem 1rem;border:0;border-bottom:3px solid transparent;border-radius:var(--r-sm) var(--r-sm) 0 0;background:none;font-weight:600;color:var(--c-text-leicht)}
.tabs__tab:hover{color:var(--c-primaer);background:var(--c-hg-alt)}
.tabs__tab[aria-selected="true"]{color:var(--c-primaer-dunkel);border-bottom-color:var(--c-akzent)}
.tabs__panel[hidden]{display:none}
/* ── Diagramme ── */
.diagramm{margin:var(--s-5) 0;padding:var(--s-4);background:#fff;border:1px solid var(--c-rahmen);border-radius:var(--r-lg);overflow-x:auto}
.diagramm svg{display:block;width:100%;height:auto;max-width:100%}
.diagramm__titel{margin:0 0 var(--s-3);font-weight:700;color:var(--c-primaer-dunkel)}
.legende{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;margin:var(--s-3) 0 0;padding:0;list-style:none;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.legende li{display:inline-flex;align-items:center;gap:.4rem}
.legende__farbe{width:.9rem;height:.9rem;border-radius:3px;background:var(--c-primaer)}
.legende--ok .legende__farbe,.farbe-ok{background:var(--c-ok)}.legende--warn .legende__farbe,.farbe-warn{background:var(--c-warn)}.legende--orange .legende__farbe,.farbe-orange{background:var(--c-orange)}.legende--gefahr .legende__farbe,.farbe-gefahr{background:var(--c-gefahr)}
.ampel{display:grid;gap:var(--s-2);margin:0;padding:0;list-style:none}
.ampel li{display:flex;align-items:center;gap:.75rem;padding:.6rem .9rem;border-radius:var(--r-sm);font-weight:600}
.ampel li::before{content:"";flex:none;width:1rem;height:1rem;border-radius:50%;background:var(--c-ok)}
.ampel--ok{background:var(--c-ok-tint);color:var(--c-ok-text)}
.ampel--warn{background:var(--c-warn-tint);color:var(--c-warn-text)}.ampel--warn::before{background:var(--c-warn)!important}
.ampel--orange{background:var(--c-orange-tint);color:var(--c-orange-text)}.ampel--orange::before{background:var(--c-orange)!important}
.ampel--gefahr{background:var(--c-gefahr-tint);color:var(--c-gefahr-text)}.ampel--gefahr::before{background:var(--c-gefahr)!important}
/* ── Admin-Basis (Details in admin.css) ── */
.admin{display:grid;min-height:100vh;grid-template-columns:1fr;background:var(--c-hg-alt)}
@media(min-width:900px){.admin{grid-template-columns:240px minmax(0,1fr)}}
.admin__seitenleiste{background:var(--c-primaer-dunkel);color:#dbe7ec;padding:var(--s-4)}
.admin__seitenleiste a{color:#fff;text-decoration:none;display:block;padding:.5rem .75rem;border-radius:var(--r-sm)}
.admin__seitenleiste a:hover,.admin__seitenleiste a[aria-current]{background:rgba(255,255,255,.12)}
.admin__inhalt{padding:var(--s-5) clamp(1rem,2.5vw,2rem)}
.admin__kopf{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-5)}
.admin__kopf h1{margin:0;font-size:var(--fs-h2)}
.kalender-gantt{overflow-x:auto;border:1px solid var(--c-rahmen);border-radius:var(--r);background:#fff}
.kalender-gantt__zeile{display:grid;grid-template-columns:160px repeat(var(--tage,30),minmax(22px,1fr));align-items:center;border-bottom:1px solid var(--c-rahmen);min-height:36px}
.kalender-gantt__zeile:last-child{border-bottom:0}
.kalender-gantt__label{padding:.35rem .6rem;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-right:1px solid var(--c-rahmen);background:var(--c-hg-alt)}
.kalender-gantt__tag{font-size:var(--fs-xs);text-align:center;color:var(--c-text-leicht);border-left:1px solid var(--c-hg-alt)}
.kalender-gantt__tag--we{background:var(--c-hg-alt)}
.kalender-gantt__balken{grid-column:var(--von) / span var(--dauer);height:22px;margin:0 1px;border-radius:var(--r-sm);background:var(--c-primaer);color:#fff;font-size:var(--fs-xs);line-height:22px;padding:0 .4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kalender-gantt__balken--messung{background:var(--c-akzent-dunkel)}.kalender-gantt__balken--puffer{background:var(--c-rahmen-stark);color:var(--c-text)}.kalender-gantt__balken--problem{background:var(--c-gefahr)}.kalender-gantt__balken--fertig{background:var(--c-ok)}
/* ── Startseite: Anlässe, Regionen, Fakten ── */
.anlaesse .karte>a:not(.karte__link){padding:var(--s-4) var(--s-5)}
/* Zusatzsatz unter dem Karten-Link (Startseite, Anlässe): steht außerhalb des <a>, weil ein
   Link keinen zweiten Link enthalten darf; das Polster entspricht dem des Karten-Links. */
.karte__zusatz{margin:0;padding:var(--s-3) var(--s-5) var(--s-4);border-top:1px solid var(--c-rahmen);font-size:var(--fs-sm);color:var(--c-text-leicht)}
.karte__zusatz a{color:var(--c-primaer);font-weight:600}
/* Interaktive Radon-Deutschlandkarte (partials/karte-deutschland.twig + assets/js/karte.js).
   Zweispaltig ab 900px: links das Inline-SVG, rechts Suche, Info-Feld und Regionenliste.
   Das SVG bringt seine eigenen Regeln mit (alle unter #radonkarte), hier steht nur die Hülle. */
.radonkarte{display:grid;gap:var(--s-5) var(--s-6);align-items:start}
@media(min-width:900px){.radonkarte{grid-template-columns:minmax(260px,0.85fr) minmax(0,1fr)}.radonkarte__quelle{grid-column:1/-1}}
.radonkarte__buehne{max-width:480px;margin-inline:auto;border-radius:var(--r-lg);background:var(--c-hg-alt);overflow:hidden}
.radonkarte__buehne svg{display:block;width:100%;height:auto}
.radonkarte__seite{display:grid;gap:var(--s-4);align-content:start;min-width:0}
.radonkarte__eingabe{display:flex;gap:var(--s-2);flex-wrap:wrap}
.radonkarte__eingabe .feld__eingabe{flex:1 1 12rem;min-width:0}
.radonkarte__eingabe .button{flex:none}
.radonkarte__suche .feld__label{display:block;margin-bottom:var(--s-2)}
.radonkarte__suche .feld__hilfe{margin:var(--s-2) 0 0}
.radonkarte__treffer{padding:var(--s-3) var(--s-4);border:1px solid var(--c-rahmen);border-radius:var(--r);background:#fff}
.radonkarte__trefferzahl{margin:0 0 var(--s-2);font-size:var(--fs-xs);font-weight:600;color:var(--c-text-leicht);text-transform:uppercase;letter-spacing:.04em}
.radonkarte__trefferliste{display:grid;gap:2px;margin:0;padding:0;list-style:none}
.radonkarte__trefferliste button{display:block;width:100%;padding:.45rem .6rem;border:0;border-radius:var(--r-sm);background:none;text-align:left;font-weight:600;color:var(--c-primaer-dunkel)}
.radonkarte__trefferliste button:hover{background:var(--c-primaer-tint)}
.radonkarte__typ{display:block;font-weight:400;font-size:var(--fs-xs);color:var(--c-text-leicht)}
.radonkarte__leer{margin:0;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.radonkarte__info{padding:var(--s-4) var(--s-5);border:1px solid var(--c-rahmen);border-radius:var(--r);background:#fff}
.radonkarte__info>*:last-child{margin-bottom:0}
.radonkarte__platzhalter{margin:0;color:var(--c-text-leicht)}
.radonkarte__titel{margin:0 0 var(--s-2);font-size:var(--fs-h3)}
.radonkarte__klasse{margin:0 0 var(--s-3)}
.radonkarte__badge{display:inline-block;margin:0 0 var(--s-3);padding:.2rem .7rem;border-radius:var(--r-rund);font-size:var(--fs-sm);font-weight:600}
.radonkarte__badge--ja{background:var(--c-orange-tint);color:var(--c-orange-text)}
.radonkarte__badge--teils{background:var(--c-warn-tint);color:var(--c-warn-text)}
.radonkarte__badge--nein{background:var(--c-ok-tint);color:var(--c-ok-text)}
.radonkarte__stelle,.radonkarte__programm{margin:0 0 var(--s-2);font-size:var(--fs-sm)}
.radonkarte__programm{color:var(--c-ok-text)}
.radonkarte__hinweis{margin:var(--s-3) 0;padding-top:var(--s-3);border-top:1px solid var(--c-rahmen);font-size:var(--fs-sm);color:var(--c-text-leicht)}
.radonkarte__aktionen{display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:center;margin:0}
.radonkarte__liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.35rem var(--s-4);margin:0;padding:0;list-style:none}
.radonkarte__liste a{display:flex;align-items:center;gap:.4rem;padding:.45rem .5rem;border-radius:var(--r-sm);text-decoration:none;font-weight:500}
.radonkarte__liste a:hover{background:var(--c-hg-alt)}
.radonkarte__liste .icon{width:1rem;height:1rem;color:var(--c-akzent-dunkel)}
.radonkarte__quelle{margin:0;font-size:var(--fs-xs);color:var(--c-text-leicht)}
/* Im Artikeltext (Platzhalter {{karte}}) ist die Spalte auf Lesebreite begrenzt – dort wird
   die Karte einspaltig gestapelt, statt zwei schmale Spalten nebeneinander zu quetschen. */
.prose .radonkarte{margin:var(--s-6) 0;grid-template-columns:minmax(0,1fr)}
.prose .radonkarte__liste{font-size:var(--fs-sm)}
.sprungmarken{margin:0 0 var(--s-6)}
.sprungmarken ul{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:0;padding:0;list-style:none}
.sprungmarken a{display:inline-block;padding:.35rem .85rem;border:1px solid var(--c-rahmen);border-radius:var(--r-rund);background:#fff;color:var(--c-primaer);font-size:var(--fs-sm);font-weight:600;text-decoration:none}
.sprungmarken a:hover{background:var(--c-primaer-tint);border-color:var(--c-primaer-tint2);color:var(--c-primaer-dunkel)}
.fehlerseite{text-align:center;padding:var(--s-8) 1rem}
.fehlerseite__code{margin:0;font-size:clamp(4rem,10vw,7rem);font-weight:800;line-height:1;color:var(--c-primaer-tint2)}
.fehlerseite .suche-formular{margin-inline:auto}
.fehlerseite__details{text-align:left;font-size:var(--fs-xs);max-width:100%}
.nach-oben{position:fixed;right:1rem;bottom:1rem;z-index:40;width:44px;height:44px;border:0;border-radius:50%;background:var(--c-primaer-dunkel);color:#fff;box-shadow:var(--schatten);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity var(--uebergang),transform var(--uebergang),visibility var(--uebergang)}
.nach-oben--sichtbar{opacity:1;visibility:visible;transform:none}
.nach-oben:hover{background:var(--c-primaer)}
.kopieren{display:inline-flex;align-items:center;gap:.3rem}
.kopieren--fertig{color:var(--c-ok-text)}
.suche-treffer{font-weight:600;color:var(--c-text-leicht)}
.suche-treffer mark,.prose mark{background:var(--c-warn-tint);color:inherit;padding:0 .15em;border-radius:3px}
/* ── Shop-Detail: Produktkarten, Bestellformular, Mietpakete (Unterklassen der kern-Templates) ── */
.karte__bild{display:block;margin:calc(-1*var(--s-5)) calc(-1*var(--s-5)) var(--s-4);border-bottom:1px solid var(--c-rahmen);border-radius:calc(var(--r-lg) - 1px) calc(var(--r-lg) - 1px) 0 0;background:var(--c-hg-alt);overflow:hidden}
.karte__bild img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;padding:var(--s-4)}
.produkt-karte .karte__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .75rem}
.produkt-karte .preis{font-size:1.2rem}
.produkt__bestellen{max-width:none;margin-top:var(--s-5);padding-top:var(--s-5);border-top:1px solid var(--c-rahmen)}
.radio-karte>label{flex:1;min-width:0;cursor:pointer}
.radio-karte.paket{flex-direction:row;align-items:flex-start;padding:var(--s-4)}
.paket__name{display:block;margin-bottom:.15rem;font-weight:700;color:var(--c-primaer-dunkel)}
.radio-karte .paket__text{display:block;margin:0 0 .3rem;font-size:var(--fs-sm)}
.radio-karte .paket__preis{display:block;margin:.15rem 0 0;font-size:1.35rem}
.paket__kaution{display:block;margin-top:.2rem;font-size:var(--fs-xs);color:var(--c-text-leicht)}
/* Verfügbarkeitskalender (buchung.js): fortlaufende Tagesleiste, 7 Spalten */
.verfuegbarkeit__titel{margin:0 0 var(--s-2);font-weight:700;color:var(--c-primaer-dunkel)}
.verfuegbarkeit__navigation{display:flex;justify-content:space-between;gap:var(--s-2);margin-bottom:var(--s-3)}
.verfuegbarkeit__tage{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.verfuegbarkeit__tage .verfuegbarkeit__tag{flex-direction:column;gap:.05rem;aspect-ratio:auto;min-height:48px;padding:.3rem .1rem;font-size:var(--fs-xs);line-height:1.2}
.verfuegbarkeit__wochentag{font-size:.68rem;font-weight:600;letter-spacing:.02em;opacity:.85}
.verfuegbarkeit__datum{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.verfuegbarkeit__status{margin:.5rem 0 0;min-height:1.3em;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.legende__eintrag{display:inline-flex;align-items:center;gap:.4rem}
.legende__eintrag .verfuegbarkeit__tag{width:1rem;min-height:1rem;aspect-ratio:1;padding:0}
/* ── Kundenbewertungen (shop/_bewertungen.twig, portal/bewertung.twig) ──
   Die Sternleiste ist zweilagig: unten fünf graue Sterne, darüber dieselben fünf in Gold,
   auf --anteil der Breite beschnitten. Nur so lässt sich „4,6 von 5“ auch zeichnen; ein
   gerundeter Ganzstern zeigte etwas anderes an, als daneben steht und im Markup ausgezeichnet
   ist. Beide Lagen sind aria-hidden – vorgelesen wird das aria-label des Elternelements. */
.sterne{position:relative;display:inline-block;line-height:1;font-size:1.1rem;letter-spacing:.08em;white-space:nowrap}
.sterne__spur{color:var(--c-rahmen-stark)}
.sterne__wert{position:absolute;inset-block:0;left:0;width:var(--anteil,0);overflow:hidden;color:var(--c-akzent-hell)}
.bewertungen__kopf{display:flex;flex-wrap:wrap;gap:var(--s-4) var(--s-6);align-items:flex-start;margin-bottom:var(--s-5)}
.bewertungen__schnitt{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;font-size:var(--fs-lg)}
.bewertungen__schnitt .sterne{font-size:1.4rem}
.bewertungen__anzahl{color:var(--c-text-leicht);font-size:var(--fs-sm)}
.bewertungen__verteilung{list-style:none;margin:0;padding:0;min-width:min(100%,260px);font-size:var(--fs-sm)}
.bewertungen__verteilung li{display:grid;grid-template-columns:5.5em 1fr 2em;gap:.5rem;align-items:center;margin:.15rem 0}
.bewertungen__zahl{text-align:right;font-variant-numeric:tabular-nums;color:var(--c-text-leicht)}
.bewertungen__balken{display:block;height:.55rem;background:var(--c-hg-sanft);border-radius:var(--r-rund);overflow:hidden}
.bewertungen__balken>span{display:block;height:100%;width:var(--anteil,0);background:var(--c-akzent-hell)}
.bewertungen__liste{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-4)}
.bewertung{padding:var(--s-4);border:1px solid var(--c-rahmen);border-radius:var(--r);background:var(--c-hg)}
.bewertung__titel{margin:.3rem 0 .2rem;font-size:var(--fs-h4)}
.bewertung__meta{margin:0 0 .5rem;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.bewertung__text{margin:0;white-space:pre-line}
.bewertung__antwort{margin-top:var(--s-3);padding:var(--s-3);border-left:4px solid var(--c-primaer-tint2);background:var(--c-hg-alt);border-radius:0 var(--r-sm) var(--r-sm) 0}
.bewertung__antwort p{margin:0}
.bewertung__antwort-kopf{font-weight:700;color:var(--c-primaer-dunkel);font-size:var(--fs-sm)}
.bewertungen__mehr{margin:var(--s-4) 0 0;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.produkt__bewertung{margin:0 0 var(--s-3);display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:var(--fs-sm)}
/* Sternauswahl im Formular: echte Radiobuttons, nur größer beschriftet. Bewusst keine
   Hover-Sternleiste – die ist ohne Zeigegerät nicht bedienbar und ohne Beschriftung nicht
   vorlesbar. */
.sterne-wahl{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.sterne-wahl__option{position:relative}
.sterne-wahl__option input{position:absolute;opacity:0;width:1px;height:1px}
.sterne-wahl__option label{display:flex;align-items:center;gap:.25rem;padding:.5rem .8rem;border:2px solid var(--c-rahmen);border-radius:var(--r-sm);background:var(--c-hg);cursor:pointer;font-weight:600;transition:border-color var(--uebergang),background var(--uebergang)}
.sterne-wahl__option label:hover{border-color:var(--c-primaer-hell)}
.sterne-wahl__stern{color:var(--c-rahmen-stark)}
.sterne-wahl__option input:checked+label{border-color:var(--c-primaer);background:var(--c-primaer-tint)}
.sterne-wahl__option input:checked+label .sterne-wahl__stern{color:var(--c-akzent-hell)}
.sterne-wahl__option input:focus-visible+label{outline:3px solid var(--c-akzent);outline-offset:3px}
/* ── Warenkorb- und Kassen-Unterklassen ── */
.warenkorb__liste{max-width:none;min-width:0}
@media(min-width:900px){.warenkorb__liste{grid-column:1;grid-row:1}.warenkorb .warenkorb__summe{grid-column:2;grid-row:1}}
.warenkorb__zeitraum{list-style:none;margin:.4rem 0 0;padding:.5rem .75rem;background:var(--c-hg-alt);border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--c-text-leicht)}
.warenkorb__zeitraum li{margin:.15rem 0}
.warenkorb__zeilen{display:grid;grid-template-columns:1fr auto;gap:.4rem var(--s-4);margin:0 0 var(--s-4)}
.warenkorb__zeilen dt{margin:0}
.warenkorb__zeilen dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.feld--inline>.feld__eingabe{flex:1 1 140px;width:auto;min-width:0}
main.kasse{display:block}
.kasse__formular{max-width:none}
.kasse__formular>.raster--2{grid-template-columns:1fr;align-items:start}
@media(min-width:900px){.kasse__formular>.raster--2{grid-template-columns:minmax(0,1fr) minmax(320px,400px)}}
.kasse__lieferadresse,.kasse__zahlungsart-wechsel{margin:0 0 var(--s-5);border:1px solid var(--c-rahmen);border-radius:var(--r);background:var(--c-hg-alt)}
.kasse__lieferadresse[open],.kasse__zahlungsart-wechsel[open]{background:#fff;padding-bottom:var(--s-4)}
.kasse__lieferadresse summary,.kasse__zahlungsart-wechsel summary{padding:.8rem 1rem;cursor:pointer;font-weight:600;color:var(--c-primaer)}
.kasse__lieferadresse summary:hover,.kasse__zahlungsart-wechsel summary:hover{color:var(--c-primaer-dunkel);background:var(--c-primaer-tint);border-radius:inherit}
.kasse__lieferadresse>:not(summary),.kasse__zahlungsart-wechsel>:not(summary){margin-left:1rem;margin-right:1rem}
.kasse__positionen{list-style:none;margin:0 0 var(--s-4);padding:0}
.kasse__positionen>li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem .75rem;padding:.6rem 0;border-bottom:1px solid var(--c-rahmen)}
.kasse__positionen>li:first-child{padding-top:0}
.kasse__positionen>li:last-child{border-bottom:0}
.kasse__positionen .tabelle__zahl{margin-left:auto}
.kasse__positionen ul{flex-basis:100%;list-style:none;margin:.25rem 0 0;padding:0;font-size:var(--fs-xs);color:var(--c-text-leicht)}
.kasse__positionen ul li{margin:.15rem 0}
.feld__optional{font-weight:400;font-size:var(--fs-sm);color:var(--c-text-leicht)}
/* ── Einwilligungsbanner (partials/einwilligung.twig, assets/js/einwilligung.js) ──
   Unterer, NICHT blockierender Streifen: Die Seite bleibt lesbar und bedienbar, es gibt keine
   Abdunklung, keine Fokusfalle und kein gesperrtes Scrollen. Sichtbar wird der Kasten erst,
   wenn einwilligung.js das hidden-Attribut entfernt.

   Die erste Regel ist zwingend und darf nicht wegfallen: Autoren-CSS schlägt die
   Browser-Vorgabe [hidden]{display:none}, ein bloßes display:flex weiter unten würde das
   Attribut also wirkungslos machen – der Banner stünde dann ohne JavaScript dauerhaft im Bild.

   z-index 45: über dem Nach-oben-Knopf (40), aber unter dem klebenden Kopf (50), dem
   Untermenü (60) und dem Skip-Link (1000). Das offene Mobilmenü reicht bis zum unteren Rand
   und muss den Streifen überdecken dürfen, nicht umgekehrt. */
.einwilligung[hidden]{display:none}
.einwilligung{position:fixed;inset:auto 0 0 0;z-index:45;padding:var(--s-3)}
/* Der Nach-oben-Knopf säße sonst unter dem Streifen. :has() wird im Projekt bereits benutzt
   (.radio-karte:has(input:checked)); fehlt es, überlappen beide nur – nichts geht kaputt. */
body:has(.einwilligung:not([hidden])) .nach-oben{display:none}
/* Nur der Inhalt rollt; die drei Knöpfe bleiben immer sichtbar. Das ist die Bedingung dafür,
   dass „Ablehnen“ auch auf 320x480 ohne Rollen erreichbar ist. */
.einwilligung__karte{display:flex;flex-direction:column;max-width:var(--breite);max-height:min(80vh,34rem);margin-inline:auto;background:var(--c-hg);border:1px solid var(--c-rahmen);border-top:4px solid var(--c-primaer);border-radius:var(--r-lg);box-shadow:var(--schatten-lg);animation:einwilligung-auf .28s ease-out}
.einwilligung__karte:focus{outline:none}
.einwilligung__inhalt{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--s-5) var(--s-5) var(--s-4);-webkit-overflow-scrolling:touch}
.einwilligung__kopf{display:flex;align-items:flex-start;gap:var(--s-3)}
.einwilligung__titel{flex:1;margin:0 0 var(--s-2);font-size:var(--fs-h3)}
.einwilligung__schliessen{flex:none;margin:-.35rem -.35rem 0 0}
.einwilligung__text{margin:0 0 var(--s-4);font-size:var(--fs-sm);color:var(--c-text-leicht)}
/* Eigener fieldset-Reset: der aus .formular greift hier nicht. */
.einwilligung__kategorien{margin:0;padding:0;border:0;min-width:0}
.einwilligung__kategorie{margin:0 0 var(--s-3);padding:.7rem .85rem;border:1px solid var(--c-rahmen);border-radius:var(--r-sm);background:var(--c-hg-alt)}
.einwilligung__kategorie:has(input:checked:not(:disabled)){border-color:var(--c-primaer-tint2);background:var(--c-primaer-tint)}
.einwilligung__kategorie:has(input:focus-visible){outline:3px solid var(--c-akzent);outline-offset:2px}
.einwilligung__kategorie label{min-width:0}
.einwilligung__name{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-weight:700;color:var(--c-primaer-dunkel)}
.einwilligung__beschreibung{display:block;margin-top:.2rem;font-size:var(--fs-sm);color:var(--c-text-leicht)}
.einwilligung__details{margin:var(--s-3) 0 0;border-top:1px solid var(--c-rahmen)}
.einwilligung__details summary{display:flex;align-items:center;min-height:44px;font-size:var(--fs-sm);font-weight:600;color:var(--c-primaer);cursor:pointer}
.einwilligung__details summary:hover{color:var(--c-primaer-dunkel)}
.einwilligung__details p{margin:0 0 var(--s-3);font-size:var(--fs-sm);color:var(--c-text-leicht)}
/* env(safe-area-inset-bottom): auf Geräten mit Home-Anzeige läge der unterste Knopf sonst
   unter dem Balken. */
.einwilligung__aktionen{flex:none;display:grid;gap:var(--s-2);padding:var(--s-4) var(--s-5);padding-bottom:calc(var(--s-4) + env(safe-area-inset-bottom,0px));border-top:1px solid var(--c-rahmen)}
/* Gleich große Knöpfe sind keine Geschmacksfrage: Zustimmung und Ablehnung müssen
   gleichwertig sein. Deshalb drei gleiche Rasterspalten und in der Vorlage dreimal die reine
   Klasse .button (nicht --primaer, nicht --sekundaer). */
@media(min-width:600px){.einwilligung__aktionen{grid-template-columns:repeat(3,1fr)}}
/* Einmaliges Einblenden, kein Blinken. Die globale Regel unter „Bewegung, Druck“
   (prefers-reduced-motion) setzt die Dauer per !important auf .01ms – der Endzustand ist der
   sichtbare, es geht also nichts verloren. */
@keyframes einwilligung-auf{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

/* ── Bewegung, Druck ── */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}html{scroll-behavior:auto}}
@media print{
@page{margin:1.5cm}
body{font-size:11pt;color:#000;background:#fff}
.site-header,.site-footer,.nav,.nav-toggle,.cta-box,.skip-link,.flash-container,.breadcrumb,.nach-oben,.einwilligung,.verwandt,.hero__aktionen,.button,.faq__eintrag summary::after,.anker,.kopieren{display:none!important}
main{padding:0}
a{color:#000;text-decoration:underline}
.prose a[href^="http"]::after,.quellen a[href^="http"]::after{content:" (" attr(href) ")";font-size:.85em;color:#444;word-break:break-all}
.faq__eintrag{border:0;break-inside:avoid}
.faq__eintrag>*:not(summary){display:block}
.karte,.kpi,.schritte li,.hinweis,.paket{break-inside:avoid;box-shadow:none;border:1px solid #999}
h1,h2,h3{break-after:avoid;color:#000}
img{max-width:100%;page-break-inside:avoid}
.hero{background:none;padding:0}
.abschnitt{padding-block:1rem}
}

/* ── Langzeit-Bestandsaufnahme: Galerie, Vergleich, Verlauf, Bildbetrachter ──
   Steht in site.css und nicht in admin.css, weil beide Bereiche dieselben Bausteine
   zeigen: der Adminbereich beim Abarbeiten eines Durchgangs, der Kundenbereich beim
   Ansehen des Verlaufs. Zwei Fassungen desselben Rasters liefen unweigerlich auseinander. */
.bestand-punkt{margin-bottom:var(--s-5)}
.bestand-punkt--erledigt{border-left:4px solid var(--c-ok)}
.bestand-vergleich{display:grid;gap:var(--s-4);grid-template-columns:1fr;margin-bottom:var(--s-4)}
@media(min-width:700px){.bestand-vergleich{grid-template-columns:1fr 1fr}}
.bestand-bild{margin:0}
.bestand-bild figcaption{font-size:var(--fs-sm);font-weight:600;color:var(--c-text-leicht);margin-bottom:var(--s-2)}
.bestand-bild img{width:100%;border-radius:var(--r-sm);border:1px solid var(--c-rahmen);background:var(--c-hg-alt);display:block}
.bestand-bild__leer{padding:var(--s-5) var(--s-4);text-align:center;color:var(--c-text-leicht);font-size:var(--fs-sm);background:var(--c-hg-alt);border:1px dashed var(--c-rahmen-stark);border-radius:var(--r-sm)}
.bestand-fassungen{display:flex;flex-wrap:wrap;gap:var(--s-3);list-style:none;padding:0;margin:var(--s-3) 0 0}
.bestand-fassungen li{width:120px;font-size:var(--fs-xs);color:var(--c-text-leicht)}
.bestand-fassungen img{width:100%;border-radius:var(--r-sm);border:1px solid var(--c-rahmen)}
.bestand-verlauf{display:grid;gap:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.bestand-verlauf__schritt{margin:0;padding:var(--s-3);background:var(--c-hg-alt);border:1px solid var(--c-rahmen);border-radius:var(--r)}
.bestand-verlauf__schritt img{width:100%;border-radius:var(--r-sm);background:var(--c-hg);display:block}
.bestand-verlauf__schritt figcaption{margin-top:var(--s-2);font-size:var(--fs-sm);line-height:1.45}

/* Bildbetrachter. z-index 1100: über allem, was das Design sonst kennt (skip-link 1000).
   Er wird ausschließlich von admin.js/bestand.js aufgebaut; ohne JavaScript existiert er
   nicht, und der Klick öffnet die Vorschau ganz normal als Seite. */
.bildbetrachter{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:var(--s-4);background:rgba(10,53,64,.88)}
.bildbetrachter[hidden]{display:none}
.bildbetrachter__rahmen{max-width:min(1200px,96vw);max-height:94vh;display:flex;flex-direction:column;align-items:center;gap:var(--s-3)}
.bildbetrachter__bild{max-width:100%;max-height:80vh;width:auto;border-radius:var(--r-sm);background:#fff}
.bildbetrachter__titel{margin:0;color:#fff;font-size:var(--fs-sm);text-align:center}
.bildbetrachter__schliessen{padding:.5rem 1.1rem;border:1px solid rgba(255,255,255,.5);border-radius:var(--r-rund);background:transparent;color:#fff;font-weight:600}
.bildbetrachter__schliessen:hover{background:rgba(255,255,255,.14)}
body.bildbetrachter-offen{overflow:hidden}

/* Widerspruch gegen die Reichweitenmessung (Datenschutzerklärung). Ein Formular mit genau
   einem Knopf – es braucht kein Feldraster, nur Abstand nach oben und unten. Steht in einem
   .hinweis-Kasten und erbt dessen Typografie. */
.widerspruch-formular{margin:var(--s-4) 0}
