/* Rentique Weiß — eigene Ergänzungen zum Design-System.
   Alles, was das Design-System nicht mitbringt, steht HIER — niemals in /ds/,
   damit ein Update des Design-Systems ein reiner Ordnertausch bleibt.
   Nur Token verwenden, keine festen Farben oder Abstände. */

/* ═══════════════════════════════════════════════════════════════════════════
   KORREKTUR am gelieferten Design-System — ds/tokens/typography.css

   Dort fehlen in sechs clamp()-Ausdrücken die Leerzeichen um das Pluszeichen:
       --fs-h1: clamp(2.25rem,1.5rem+3vw,3.5rem)     <- ungültig
   In CSS müssen + und - innerhalb von calc()/clamp() von Leerzeichen umgeben
   sein. Ohne sie ist der ganze Ausdruck ungültig, die Eigenschaft fällt beim
   Berechnen aus — und JEDE Überschrift der Seite erbt die Fließtextgröße.
   Gemessen vor der Korrektur: h1 17 px, h2 15 px, h3 16 px.

   Die Werte sind unverändert übernommen, nur die Schreibweise ist berichtigt.
   Korrigiert wird HIER und nicht in ds/, damit ein Update des Design-Systems
   ein reiner Ordnertausch bleibt. Sobald die Korrektur dort ankommt, kann
   dieser Block ersatzlos weg.
   ═══════════════════════════════════════════════════════════════════════════ */
:root{
  --fs-hero:clamp(2.75rem, 1.35rem + 5.6vw, 5.5rem);
  --fs-h1:clamp(2.25rem, 1.5rem + 3vw, 3.5rem);
  --fs-h2:clamp(1.75rem, 1.3rem + 1.9vw, 2.625rem);
  --fs-h3:clamp(1.25rem, 1.1rem + 0.7vw, 1.5rem);
  --fs-lead:clamp(1.0625rem, 1rem + 0.45vw, 1.25rem);
  --fs-stamp:clamp(1.25rem, 1.1rem + 0.6vw, 1.5rem);
}

/* ═══════════════════════════════════════════════════════════════════════════
   ZWEITE KORREKTUR am Design-System — ds/components/media/media.css

   Dort steht ein Kindselektor:   .rw-imgframe > img { object-fit: cover; … }
   Ausgeliefert wird aber <picture><source …><img></picture>, damit WebP und
   JPEG nebeneinander angeboten werden können. Das <picture> steht zwischen
   Rahmen und Bild, der Kindselektor greift nicht — und dann fehlen Breite,
   Höhe und object-fit. Wirkung: ein 3:2-Foto in einer 4:3-Kachel füllt den
   Rahmen nicht, unten bleibt ein Streifen Navy stehen. Betrifft jede
   Produktkachel und jede Bildstrecke.

   <picture> ist ein reiner Behälter ohne eigene Darstellung, deshalb muss er
   die Maße durchreichen.
   ═══════════════════════════════════════════════════════════════════════════ */
.rw-imgframe picture{display:block;width:100%;height:100%}
.rw-imgframe img{width:100%;height:100%;object-fit:cover;object-position:center}

/* ——— Auflage auf ovalen Bildrahmen ———
   Der Badge-Rahmen ist eine Ellipse mit overflow:hidden. Die Standardauflage
   sitzt unten links — dort liegt die Ecke aber AUSSERHALB der Ellipse und wird
   abgeschnitten (gemessen 1,63 statt <= 1,0; die Unterzeile des Preisstempels
   war halb weg). Bei ovalen Rahmen gehört die Auflage in die Mitte, wo die
   Ellipse am breitesten ist. */
.rw-imgframe--badge .rw-imgframe__overlay{justify-content:center;
  padding-bottom:clamp(18px, 6%, 34px)}

/* ——— hidden muss stärker sein als display aus einer Klasse ———
   Die UA-Regel [hidden]{display:none} verliert gegen jedes .klasse{display:…}.
   Ohne diese Zeile bleibt die mobile Schublade offen, der Einwilligungsdialog
   sichtbar und ausgefilterte Kacheln stehen weiter im Raster. */
[hidden]{display:none !important}

/* ——— aktiver Navigationspunkt ———
   Das Design-System gestaltet nur aria-current="page" (vom Generator gesetzt).
   basis.js markiert beim Scrollen zusätzlich mit aria-current="true"; ohne
   diese Zeile bliebe die Markierung unsichtbar. */
.rw-nav__link[aria-current="true"]{background:var(--accent);color:var(--on-accent)}

/* ——— Einblenden beim Scrollen ———
   Die Regel hängt an .rw-reveal-an, das basis.js erst setzt, wenn JavaScript
   läuft UND der Nutzer keine reduzierte Bewegung wünscht. Ohne JavaScript ist
   der Inhalt deshalb ganz normal sichtbar — das ist der Punkt. */
.rw-reveal-an [data-reveal]{opacity:0;transform:translateY(12px);
  transition:opacity var(--dur-slow) var(--ease-out),
             transform var(--dur-slow) var(--ease-out)}
.rw-reveal-an [data-reveal].ist-sichtbar{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .rw-reveal-an [data-reveal]{opacity:1;transform:none;transition:none}
}

/* ——— Sprungmarke: erstes fokussierbares Element der Seite ——— */
.rw-skip{position:absolute;left:var(--space-4);top:-64px;z-index:100;
  display:inline-flex;align-items:center;min-height:44px;padding:0 20px;
  border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);
  font-family:var(--font-display);font-weight:var(--fw-display);
  letter-spacing:var(--tr-caps);text-transform:uppercase;text-decoration:none;
  transition:top var(--dur) var(--ease-out)}
.rw-skip:focus{top:var(--space-3);color:var(--on-accent)}

/* ——— Fußzeile: Domain rechts ausrichten ——— */
.rw-footer__dom{margin-left:auto}

/* ——— Sortiment: Rubriküberschrift je Kategorie ——— */
.site-katrubrik{display:flex;align-items:center;gap:var(--space-3);
  margin:var(--space-12) 0 var(--space-6);font-size:var(--fs-h3);
  color:var(--navy-900)}
.site-katrubrik:first-of-type{margin-top:0}
.site-katrubrik .rw-icon{color:var(--accent-text)}
.site-katrubrik::after{content:"";flex:1;height:var(--bw-hair);
  background:var(--border);margin-left:var(--space-2)}


/* ——— Produktseite: Bildstrecke ——— */
.pdp__thumb{padding:0;border:var(--bw-hair) solid var(--border);
  border-radius:var(--r-sm);background:none;cursor:pointer;overflow:hidden;
  transition:border-color var(--dur-fast) var(--ease-out)}
.pdp__thumb:hover{border-color:var(--copper)}
.pdp__thumb[aria-current="true"]{border-width:var(--bw);border-color:var(--copper)}

/* ——— Produktseite: Zubehör ——— */
.pdp__options{display:flex;flex-direction:column;gap:8px;max-width:520px}
.pdp__optnote{margin:10px 0 0;font-size:var(--fs-xs);color:var(--text-muted)}
.pdp__dl{max-width:520px}
.pdp__lead{font-size:var(--fs-lead);color:var(--text-muted);max-width:56ch}
.pdp__chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:var(--space-5)}
.pdp__avail{margin-bottom:var(--space-5)}
.pdp__text{max-width:60ch}

/* ——— Kalender ohne JavaScript ——— */
.rw-cal__noscript{margin:0;padding:var(--space-5);border-radius:var(--r-card);
  background:var(--surface-sunken);border:var(--bw-hair) solid var(--border);
  font-size:var(--fs-sm);color:var(--text-muted)}

/* ——— Kontakt: Zusammenfassung der Anfrage aus dem Kalender ——— */
.anfrage-vorschau{white-space:pre-wrap;font-family:var(--font-body);
  font-size:var(--fs-sm)}

/* ——— Rechtstexte ——— */
.legal-prose{max-width:var(--prose-max)}
.legal-prose h2{margin-top:1.8em;font-size:var(--fs-h3)}
.legal-prose h3{margin-top:1.4em;color:var(--accent-text);font-size:var(--fs-h4)}
.legal-prose dl{margin:0 0 1em}
.legal-prose dt{font-weight:var(--fw-semibold);color:var(--text-body);margin-top:.8em}
.legal-prose dd{margin:0 0 .2em}
.legal-prose table{width:100%;border-collapse:collapse;margin:0 0 1.4em;
  font-size:var(--fs-sm)}
.legal-prose th{text-align:left;padding:9px 12px 9px 0;font-weight:var(--fw-semibold);
  border-bottom:var(--bw-hair) solid var(--line-soft);vertical-align:top}
.legal-prose td{padding:9px 0;border-bottom:var(--bw-hair) solid var(--line-soft)}
.legal-stand{font-size:var(--fs-xs);color:var(--text-muted)}

/* ——— Seitenkopf für Unterseiten ——— */
.site-pagehead{padding-block:clamp(28px,4vw,44px)}
.site-pagehead h1{margin:0;color:var(--text-on-dark)}
.site-pagehead p{margin:var(--space-3) 0 0;max-width:56ch;
  color:var(--text-on-dark-muted)}

/* ——— Vorzeile als Blockelement ———
   .rw-eyebrow ist inline-block. Als Abschnittsüberschrift (h2) braucht sie
   eine eigene Zeile. */
.rw-eyebrow--block{display:block}

/* ——— Bausteine, die keinen Außenabstand mitbringen sollen ——— */
.rw-avail{margin:0}
.rw-footer__hint{margin:var(--space-4) 0 0;font-size:var(--fs-xs)}
.rw-footer__adr{margin-bottom:0}

/* ═══════════════════════════════════════════════════════════════════════════
   ABNAHME-KORREKTUREN — Kontrast und Bedienbarkeit

   Alle Vorher-Werte sind im Browser gemessen (WCAG-Relativluminanz), nicht
   geschätzt. Die betroffenen Regeln stehen in ds/ — deshalb wird hier
   überschrieben und dort nichts angefasst.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ——— Text auf dem Metallverlauf: --steel-500 ist eine Linienfarbe ———
   ds/tokens/colors.css beschreibt --steel-500 selbst als „Haarlinien auf
   Navy“ — als Schrift trägt sie nicht. Der Verlauf --grad-metal läuft von
   --navy-900 über --navy-700 (62 %) nach --navy-800; an der hellsten Stelle
   bleibt von 4,5:1 nichts übrig.
   Gemessen: Fußzeilen-Kleintext 2,10:1 · Platzhalterhinweis 1,43:1 (mit
   Bildschleier) bzw. 2,05:1 (ohne) · Unterzeile unter der Bildmarke 3,06:1.
   Die Fußzeile bekommt --text-on-dark-muted (= --steel-300, dieselbe Farbe,
   die die Links daneben schon tragen), der Bildplatzhalter --text-on-dark. */
.rw-footer__bottom{color:var(--text-on-dark-muted)}
.rw-ph__name{color:var(--text-on-dark)}
.rw-ph__note{color:var(--text-on-dark);font-size:var(--fs-xs)} /* 11 px -> 13 px */

/* Der Bildschleier hat einen Zweck: den Preisstempel über einem FOTO lesbar
   halten. Über dem Badge-Platzhalter liegt kein Foto — dort dunkelt er nur
   die eigene Schrift ab (Deckkraft an der Hinweiszeile gemessen 0,48; das
   drückt selbst Elfenbein auf 4,18:1). Der Stempel bleibt lesbar, er bringt
   seine eigene helle Fläche mit. */
.rw-imgframe:has(.rw-ph) .rw-imgframe__veil{display:none}

/* Kategorie-Motiv als Bildersatz (seit 30.09.2026): Strichzeichnung aus
   /motive/<kategorie>.svg, füllt rund 3/5 der Bildfläche, ohne Text. */
.rw-ph--motiv{padding:0}
/* Verfügbarkeitszeile, solange /api/frei noch nicht geantwortet hat (oder ohne JS):
   neutral wie „Auf Anfrage“ – keine Aussage, bis die echte da ist. */
.rw-avail--live{background:var(--status-blocked-surface);color:var(--status-blocked);border-color:var(--border)}
/* Rubrik „Selbstgemacht zum Kaufen“ (Kennung kaufen): dunkles Kupfer statt Navy,
   damit man sofort sieht, dass das kein Verleih ist (Philipp 30.09.2026). Greift
   überall, wo das Kaufen-Motiv steht (Kachel, Karte/Seite ohne Foto). */
:root{--kupfer-dunkel-900:#24140A;--kupfer-dunkel-700:#4E2C13;--kupfer-dunkel-800:#331C0C;
  --grad-kupfer:linear-gradient(158deg,var(--kupfer-dunkel-900) 0%,var(--kupfer-dunkel-700) 62%,var(--kupfer-dunkel-800) 100%)}
.rw-imgframe:has(.rw-ph__motiv[src^="/motive/kaufen.svg"]){background-color:var(--kupfer-dunkel-900);background-image:var(--grad-kupfer)}
.rw-cat:has(.rw-ph__motiv[src^="/motive/kaufen.svg"]) .rw-cat__oval{background-color:var(--kupfer-dunkel-900);background-image:var(--grad-kupfer)}
/* .rw-imgframe img (oben, für Fotos: volle Fläche, cover) wäre spezifischer –
   deshalb hier mit .rw-imgframe davor. */
.rw-imgframe .rw-ph__motiv,.rw-ph__motiv{width:62%;height:62%;object-fit:contain}

/* ——— Formulare: --text-faint ist zu hell für Schrift ———
   Gemessen: „freiwillig“ und die Platzhaltertexte 3,75:1 auf Weiß, 3,39:1 auf
   Elfenbein. --text-muted misst an derselben Stelle 7,05:1 bzw. 6,36:1 und
   bleibt vom Eingabetext (--text-body) deutlich unterscheidbar. */
.rw-field__opt{color:var(--text-muted)}
.rw-input::placeholder{color:var(--text-muted)}

/* ——— Eingabefelder müssen als Bedienelement erkennbar sein ———
   Gemessen: Rand --border (#DDD5C6) gegen die weiße Feldfläche 1,46:1, gegen
   den Seitengrund 1,32:1 — WCAG 1.4.11 verlangt 3:1. --steel-500 ist hier
   richtig: Linienfarbe, und auf hellem Grund kräftig genug (5,56:1 gegen
   Weiß, 5,02:1 gegen Elfenbein). Der Fehlerrand bleibt unangetastet, er ist
   spezifischer. */
.rw-input,select.rw-input,textarea.rw-input{border-color:var(--steel-500)}
.rw-input:hover:not([aria-invalid="true"]){border-color:var(--navy-700)}

/* ——— Kalender: belegt darf nicht an der Farbe hängen ———
   Gemessen: Fläche belegt (--sand) gegen frei (weiß) 1,20:1. Das Absperrband
   liegt schon darüber, war aber fast durchsichtig (Kupfer 30 %, Navy 14 %) —
   die Streifen kamen auf 1,76:1 bzw. 1,56:1 gegen einen freien Tag.
   Verstärkt auf 70 % / 28 %: der dunkle Streifen misst 3,19:1 gegen einen
   freien Tag, der helle 2,09:1, die Streifen untereinander 1,53:1. Damit
   trägt die FORM (das Band) den Zustand, nicht die Farbe. Die Tageszahl wird
   von --text-faint (1,48:1 auf dem Band) auf --text-body gehoben: 5,16:1 auf
   dem dunklen, 7,88:1 auf dem hellen Streifen.
   Legende und Tag benutzen bewusst dieselbe Regel — ein Muster, das die
   Legende nicht zeigt, ist keins. */
.rw-cal__day--booked{color:var(--text-body)}
.rw-cal__day--booked::before,
.rw-cal__key--booked::before{
  background:repeating-linear-gradient(135deg,
    color-mix(in srgb, var(--copper) 70%, transparent) 0 5px,
    color-mix(in srgb, var(--navy-800) 28%, transparent) 5px 10px)}

/* ——— Zielgrößen: die eigene Zusage sind 44 px (ARCHITEKTUR §6.5) ———
   Gemessen: Filterchips 38 px, kleine Knöpfe 38 px, Kalendernavigation
   40 × 40 px. WCAG 2.5.8 (AA) verlangt 24 × 24 px und war erfüllt; 44 px ist
   2.5.5 (AAA) — und hier zugesagt. Innenabstand und Schriftgröße der Chips
   bleiben, damit die Filterleiste nicht klobig wird: sie wird höher, nicht
   fetter. */
button.rw-chip{min-height:var(--tap-min)}
.rw-btn--sm{min-height:var(--tap-min)}
.rw-cal__navbtn{width:var(--tap-min);height:var(--tap-min)}

/* ——— Ladekreisel bei reduzierter Bewegung ———
   ds/components/core/core.css verlängert unter prefers-reduced-motion nur die
   Umlaufzeit auf 2,4 s — er dreht sich also weiter. „Reduziert“ heißt nicht
   „langsamer“. Statt dessen ein stehender Ring: geschlossen, ohne Bewegung. */
@media (prefers-reduced-motion:reduce){
  .rw-btn--loading .rw-btn__spin{animation:none;border-top-color:currentColor;
    opacity:.75}
}

/* ——— Hilfsklassen, bewusst wenige ——— */
.rw-hidden{display:none !important}
.rw-mt-4{margin-top:var(--space-4)}
.rw-mt-6{margin-top:var(--space-6)}
.rw-mb-0{margin-bottom:0}
.rw-maxw-form{max-width:620px}

/* ═══════════════════════════════════════════════════════════════════════════
   Auf Wunsch des Betreibers: die Absperrband-Schraffur als Abschnittstrenner
   ist raus. Statt der diagonalen Kupfer/Navy-Streifen jetzt eine ruhige,
   durchgehende Kupferleiste. Betrifft alle Trenner der Website (Startseite,
   über der Fußzeile, in der Widerrufsbelehrung).

   NICHT betroffen ist --hazard-soft: das ist das Muster der belegten
   Kalendertage. Dort trägt es Information — der Zustand darf nicht allein
   über die Farbe erkennbar sein.
   ═══════════════════════════════════════════════════════════════════════════ */
.rw-hazard{background:var(--accent)}

/* ——— Chips auf der Produktseite ———
   .rw-chip--neutral bringt --surface-sunken (Sand) mit. Neben dem Elfenbein
   des Seitengrunds wirkt der Kautions-Chip dadurch wie ein dunkler Fleck.
   Auf der Produktseite steht er frei im Text, nicht auf einer Karte —
   deshalb hier ohne eigene Fläche, nur mit Kontur. */
.pdp__chips .rw-chip--neutral{background:transparent;border-color:var(--border)}

/* ——— Abschnittstexte, die in eine Zeile gehören ——— */
.site-head--breit{max-width:none}
.site-head--breit p{max-width:none;text-wrap:pretty}

/* ——— Startbild: das Logo statt eines Fotos ——— */
.site-hero__logo{width:100%;max-width:520px;height:auto;margin-inline:auto}

/* ——— Downloadbereich: eine Gruppe je Gerät ——— */
.dl-geraet{list-style:none}
.dl-geraet + .dl-geraet{margin-top:var(--space-7)}
.dl-geraet__name{display:flex;align-items:center;gap:var(--space-3);
  margin:0 0 var(--space-3);font-size:var(--fs-h4);color:var(--navy-900)}
.dl-geraet__name .rw-icon{color:var(--accent-text)}

/* ——— Preistafel: Unterzeile („24 Stunden ab Übergabe“) ——— */
.rw-ptable__sub{display:block;margin-top:2px;font-family:var(--font-body);
  font-size:var(--fs-xs);font-weight:var(--fw-body);letter-spacing:0;
  text-transform:none;color:var(--text-muted)}

/* ——— Produktseite: Einsatzfelder, Vorteile, Lieferumfang ——— */
.einsatz{display:grid;gap:var(--space-6);grid-template-columns:1fr}
@media (min-width:620px){.einsatz{grid-template-columns:1fr 1fr}}
.einsatz__block h3{margin:0 0 var(--space-3);font-size:var(--fs-h4)}
.einsatz__felder,.einsatz__liste{margin:0;padding:0;list-style:none;
  display:flex;flex-direction:column;gap:10px}
.einsatz__felder li,.einsatz__liste li{display:flex;gap:10px;align-items:flex-start;
  font-size:var(--fs-sm);color:var(--text-muted)}
.einsatz__felder .rw-icon,.einsatz__liste .rw-icon{color:var(--accent-text);margin-top:2px}
.einsatz__feld strong{display:block;color:var(--text-body);
  font-weight:var(--fw-semibold)}

/* ——— Warenkorb: Anzeige in der Kopfzeile ———
   Der Knopf wird von /js/warenkorb.js gebaut (ohne JavaScript gibt es keinen
   Warenkorb). Seit 30.09.2026 steht er immer neben dem WhatsApp-Knopf, auch
   bei leerem Warenkorb. Die Zahl sitzt als kupferne Scheibe in der Ecke (nur,
   wenn etwas drin ist); die Farbe ist nicht die einzige Information — das
   aria-label sagt den ganzen Satz. */
.rw-korbknopf{position:relative;text-decoration:none}
.rw-korbknopf__zahl{position:absolute;top:2px;right:2px;min-width:18px;height:18px;
  padding:0 5px;border-radius:999px;background:var(--copper-glow);color:var(--navy-900);
  font-family:var(--font-body);font-size:var(--fs-xs);font-weight:var(--fw-semibold);
  line-height:18px;text-align:center}

/* ——— Warenkorb: Zeile unter der Bestellübersicht der Produktseite ——— */
.korb-hinweis{margin:var(--space-3) 0 0;font-size:var(--fs-xs);color:var(--text-muted)}
.korb-hinweis a{color:var(--accent-text)}

/* ——— Warenkorb: die Liste in der Buchungsstrecke (seit 30.09.2026 aufklappbar) ———
   Jedes Gerät ist eine Karte. Der Kopf ist ein Knopf (Pfeil + Name + Tage ·
   Übergabe · Zubehör); rechts der Preis, darunter bzw. daneben „ändern" und
   „entfernen". Aufgeklappt folgt das Panel mit Kalender, Zubehör, Übergabe. */
.korb{margin:var(--space-4) 0 0;padding:0;list-style:none;
  display:flex;flex-direction:column;gap:var(--space-3)}
.korb__eintrag{border:1px solid var(--border-subtle);border-radius:var(--r-card);background:var(--surface-card)}
.korb__eintrag--offen{border-color:var(--copper)}
.korb__kopf{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3)}
.korb__auf{flex:1 1 16rem;min-width:0;min-height:44px;display:flex;gap:var(--space-3);align-items:flex-start;
  background:none;border:0;padding:var(--space-2) 0;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer}
.korb__pfeil{flex:none;margin-top:2px;transition:transform .15s ease}
.korb__auf[aria-expanded="true"] .korb__pfeil{transform:rotate(180deg)}
.korb__text{flex:1 1 auto;min-width:0}
.korb__name{display:block;font-weight:var(--fw-semibold);color:var(--text-body)}
.korb__zusatz{display:block;font-size:var(--fs-xs);color:var(--text-muted)}
.korb__warn{color:var(--error);font-weight:var(--fw-semibold)}
.korb__preis{flex:none;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}
.korb__aktionen{flex:none;display:flex;gap:var(--space-1);margin-left:auto}
/* Stift (ändern) und X (entfernen): nur Symbol, 44 × 44 px Trefferfläche,
   Beschriftung über aria-label und title. */
.korb__symbol{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;
  border:0;border-radius:var(--r-sm);background:none;color:var(--accent-text);cursor:pointer;text-decoration:none}
.korb__symbol:hover{background:var(--copper-050)}
.korb__symbol:focus-visible{outline:2px solid var(--copper);outline-offset:2px}
.korb__kosten{display:block;font-size:var(--fs-xs);color:var(--text-body);margin-top:2px}
.korb__zeile-block{display:block}
.korb__panel{border-top:1px solid var(--border-subtle);padding:var(--space-4) var(--space-3) var(--space-4)}
.korb__h{margin:0 0 var(--space-3);font-size:var(--fs-h4)}
/* Kalender im Warenkorb so groß wie auf der Geräteseite (dort 423 px breit,
   Tageskacheln 52 px); ohne Grenze füllte er die ganze Spalte und die Kacheln
   wurden 74 px groß (Philipp 30.09.2026). */
.korb__kalender{max-width:26.5rem}
.korb__status{margin:var(--space-2) 0 0;font-size:var(--fs-xs);color:var(--text-muted)}
.korb__status:empty{display:none}
.korb__gruppe{margin-top:var(--space-5)}
.korb__fertig{margin-top:var(--space-5)}
.korb__leer{margin-top:var(--space-4)}
.korb__leer p{margin:0 0 var(--space-3)}
@media (max-width:360px){
  .korb__aktionen{flex-basis:100%;justify-content:flex-end}
}
/* Handy: das Panel hat Innenabstand, dadurch wurden die Tageskacheln 40 px –
   unter der Mindestgröße für Fingertipps (44 px). Der Kalender nutzt deshalb
   die volle Kartenbreite. */
@media (max-width:520px){
  .korb__kalender{margin-inline:calc(var(--space-3) * -1 - 1px)}
}
@media (prefers-reduced-motion:reduce){.korb__pfeil{transition:none}}
.korb-hinweis__knopf{display:block;background:none;border:0;padding:0;font:inherit;color:var(--accent-text);
  text-decoration:underline;cursor:pointer;min-height:44px;text-align:left}
.danke-termine{text-align:left;margin:var(--space-4) auto 0;max-width:36rem;padding-left:1.2em}

/* ——— Zubehör mit Menge (Schleifscheiben, seit 30.09.2026) ———
   Zahlfeld statt Häkchen, daneben Minus/Plus (baut produkt.js bzw. buchung.js).
   „ist-gewaehlt“ setzt das Skript, sobald die Menge > 0 ist – :checked gibt es
   bei einem Zahlfeld nicht. */
.rw-option--menge{cursor:default;align-items:center}
.rw-option--menge.ist-gewaehlt{border-color:var(--accent);background:var(--copper-050)}
.rw-menge{flex:none;display:inline-flex;align-items:center;gap:4px}
.rw-option .rw-menge input{width:3.2em;height:var(--tap-min);margin:0;padding:0 4px;text-align:center;
  font:inherit;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums lining-nums;
  color:var(--text-body);background:var(--surface-card);border:var(--bw-hair) solid var(--border);
  border-radius:var(--r-sm);-moz-appearance:textfield;appearance:textfield}
.rw-menge input::-webkit-inner-spin-button,.rw-menge input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.rw-menge input:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
.rw-menge__knopf{flex:none;width:var(--tap-min);height:var(--tap-min);display:inline-flex;align-items:center;
  justify-content:center;padding:0;color:var(--navy-800);background:var(--surface-card);
  border:var(--bw-hair) solid var(--border);border-radius:var(--r-sm);cursor:pointer}
.rw-menge__knopf:hover{border-color:var(--copper)}
.rw-menge__knopf:focus-visible{outline:var(--focus-width) solid var(--focus-color);outline-offset:var(--focus-offset)}
.rw-menge__knopf[disabled]{opacity:.4;cursor:not-allowed}
@media (max-width:520px){
  .rw-option--menge{flex-wrap:wrap}
  .rw-option--menge .rw-option__body{flex:1 1 100%}
}

/* § 356a BGB: „Vertrag widerrufen“ im Fuß hervorgehoben, aber leise — Kupfergold zu 65 % ins Linkgrau gemischt.
   Nicht weiter abschwächen, sonst ist der Link nicht mehr „hervorgehoben“ (Philipp, 07.10.2026). */
.rw-footer__links a.rw-footer__widerruf{color:color-mix(in srgb,var(--copper-glow) 65%,var(--text-on-dark-muted))}
.rw-footer__links a.rw-footer__widerruf:hover{color:var(--copper-glow)}
