/* Komponente: Badge (.sg-badge) – kurze, nicht klickbare Kennzeichnung. Doku: /styleguide/#sgd-badge
 * Töne:     (neutral) · --brand · --brand-solid · --sale · --success · --warning · --danger
 *           · --inverse · --overlay (auf Bildern) · --gold · --partner (+ data-brand="esn" …)
 * Größe:    --sm · (Standard) · --lg      Form: --square (statt Pille)
 * Position: --pin (oben links auf einem Bild/einer Medien-Karte)
 * Jede Schrift-/Flächen-Kombination ist ein geprüftes Token-Paar (WCAG 2.2 AA, 4,5 : 1). */
.sg-badge{display:inline-flex;align-items:center;gap:var(--sg-space-1);max-width:100%;
  padding:var(--sg-space-1) var(--sg-space-2);border:1px solid var(--sg-color-border);border-radius:var(--sg-radius-pill);
  background:var(--sg-color-bg-subtle);color:var(--sg-color-text-muted);
  font-family:var(--sg-font-family-body);font-size:var(--sg-font-size-xs);font-weight:var(--sg-font-weight-bold);
  line-height:1.2;letter-spacing:.01em;white-space:nowrap;vertical-align:middle;text-decoration:none}
.sg-badge svg{width:1em;height:1em;flex:0 0 auto}
.sg-badge img{width:auto;height:1em;flex:0 0 auto}

.sg-badge--brand{background:var(--sg-color-primary-soft);color:var(--sg-color-primary-text);border-color:transparent}
.sg-badge--brand-solid{background:var(--sg-color-primary);color:var(--sg-color-on-primary);border-color:transparent}
.sg-badge--sale{background:var(--sg-color-sale);color:var(--sg-color-on-sale);border-color:transparent;font-weight:var(--sg-font-weight-heavy)}
.sg-badge--success{background:var(--sg-color-success-soft);color:var(--sg-color-success);border-color:transparent}
.sg-badge--warning{background:var(--sg-color-warning-soft);color:var(--sg-color-warning);border-color:transparent}
.sg-badge--danger{background:var(--sg-color-danger-soft);color:var(--sg-color-danger);border-color:transparent}
.sg-badge--inverse{background:var(--sg-color-text);color:var(--sg-color-bg);border-color:transparent}
.sg-badge--overlay{background:var(--sg-color-surface);color:var(--sg-color-text);border-color:transparent;box-shadow:var(--sg-shadow-sm)}
.sg-badge--gold{background:var(--sg-color-gold);color:var(--sg-color-on-gold);border-color:transparent}
.sg-badge--partner{background:var(--sg-color-text);color:var(--sg-color-bg);border-color:transparent}
.sg-badge--partner[data-brand="more-nutrition"]{background:var(--sg-partner-more-nutrition);color:var(--sg-partner-more-nutrition-on)}
.sg-badge--partner[data-brand="more-taste"]{background:var(--sg-partner-more-taste);color:var(--sg-partner-more-taste-on)}
.sg-badge--partner:is([data-brand="esn"],[data-brand="oace"],[data-brand="ninja"]){background:var(--sg-partner-esn);color:var(--sg-partner-esn-on)}
.sg-badge--partner[data-brand="vorpack"]{background:var(--sg-partner-vorpack);color:var(--sg-partner-vorpack-on)}

.sg-badge--sm{font-size:var(--sg-font-size-2xs);padding:var(--sg-space-0-5) var(--sg-space-1-5)}
.sg-badge--lg{font-size:var(--sg-font-size-sm);padding:var(--sg-space-1-5) var(--sg-space-3)}
.sg-badge--square{border-radius:var(--sg-radius-sm)}
.sg-badge--pin{position:absolute;top:var(--sg-space-3);left:var(--sg-space-3);z-index:2;pointer-events:none}
.sg-badge--pin-end{left:auto;right:var(--sg-space-3)}

/* Komponente: Button (.sg-btn) – nur Tokens. Doku: /styleguide/#sgd-button
 * Varianten: --primary (Standard-Aktion) · --secondary (Kontur) · --ghost (nur Text) · --danger (tonal)
 *            · --partner (+ data-brand="esn|more-nutrition|more-taste|vorpack|whatsapp")
 * Größen:    --sm (32 px) · (Standard 40 px) · --lg (48 px)      Breite: --block
 * Alle Größen ≥ 24 px Klickfläche (WCAG 2.5.8); --lg erfüllt 44 px für Touch.
 * Zustände:  :hover, :focus-visible (Fokusring), [disabled]/[aria-disabled="true"]. */
.sg-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sg-space-2);
  min-height:2.5rem;padding:0 var(--sg-space-5);border:1px solid transparent;border-radius:var(--sg-radius-pill);
  font-family:var(--sg-font-family-body);font-size:var(--sg-font-size-base);font-weight:var(--sg-font-weight-bold);
  line-height:1.2;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;
  -webkit-appearance:none;appearance:none;
  transition:background-color var(--sg-motion-fast) var(--sg-motion-easing),border-color var(--sg-motion-fast) var(--sg-motion-easing),color var(--sg-motion-fast) var(--sg-motion-easing)}
.sg-btn svg,.sg-btn img{width:1.15em;height:1.15em;flex:0 0 auto}
.sg-btn:focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus);outline-offset:var(--sg-size-focus-offset)}

.sg-btn--primary{background:var(--sg-color-primary);color:var(--sg-color-on-primary)}
.sg-btn--primary:hover{background:var(--sg-color-primary-hover);color:var(--sg-color-on-primary)}
.sg-btn--secondary{background:var(--sg-color-surface);color:var(--sg-color-text);border-color:var(--sg-color-border-field)}
.sg-btn--secondary:hover{border-color:var(--sg-color-primary-text);color:var(--sg-color-primary-text)}
.sg-btn--ghost{background:transparent;color:var(--sg-color-primary-text)}
.sg-btn--ghost:hover{background:var(--sg-color-primary-soft)}
.sg-btn--danger{background:var(--sg-color-danger-soft);color:var(--sg-color-danger)}
.sg-btn--danger:hover{border-color:var(--sg-color-danger)}
.sg-btn--partner{background:var(--sg-color-text);color:var(--sg-color-bg)}
.sg-btn--partner[data-brand="more-nutrition"]{background:var(--sg-partner-more-nutrition);color:var(--sg-partner-more-nutrition-on)}
.sg-btn--partner[data-brand="more-taste"]{background:var(--sg-partner-more-taste);color:var(--sg-partner-more-taste-on)}
.sg-btn--partner:is([data-brand="esn"],[data-brand="oace"],[data-brand="ninja"]){background:var(--sg-partner-esn);color:var(--sg-partner-esn-on)}
.sg-btn--partner[data-brand="vorpack"]{background:var(--sg-partner-vorpack);color:var(--sg-partner-vorpack-on)}
.sg-btn--partner[data-brand="whatsapp"]{background:var(--sg-partner-whatsapp);color:var(--sg-partner-whatsapp-on)}
.sg-btn--partner:hover{filter:brightness(.93)}

.sg-btn--sm{min-height:2rem;padding:0 var(--sg-space-3);font-size:var(--sg-font-size-sm)}
.sg-btn--lg{min-height:3rem;padding:0 var(--sg-space-6);font-size:var(--sg-font-size-md)}
.sg-btn--block{display:flex;width:100%}

.sg-btn[disabled],.sg-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;pointer-events:none}
@media (forced-colors:active){.sg-btn{border-color:ButtonText}}

/* Komponente: Karte (.sg-card) – nur Tokens. Doku + Beispiele: /styleguide/#sgd-card
 * Grundtypen:  .sg-card                 Panel mit Innenabstand
 *              .sg-card--media          Bild oben, Inhalt in .sg-card__body (kein Innenabstand außen)
 * Optionen:    --subtle (graue Fläche, ohne Rand) · --elevated (Schatten) · --interactive (Hover/Fokus)
 * Ganze Karte klickbar: genau EIN Link mit .sg-card__link (meist im Titel); er spannt sich per
 * ::after über die Karte. So gibt es nur einen Tab-Stopp und einen kurzen Linknamen (WCAG 2.4.4). */
.sg-card{position:relative;display:flex;flex-direction:column;gap:var(--sg-space-3);min-width:0;
  background:var(--sg-color-surface);color:var(--sg-color-text);
  border:1px solid var(--sg-color-border);border-radius:var(--sg-radius-lg);
  padding:var(--sg-space-5);text-decoration:none}
.sg-card[hidden]{display:none!important}
.sg-card--subtle{background:var(--sg-color-bg-subtle);border-color:transparent}
.sg-card--elevated{box-shadow:var(--sg-shadow-md)}
.sg-card--media{padding:0;gap:0;overflow:hidden}
.sg-card--plain{background:none;border:0;padding:0;border-radius:var(--sg-radius-md)} /* ohne Fläche/Rand – z. B. Bild + Titel in Reihen */
.sg-card--plain.sg-card--interactive:hover{box-shadow:none}

.sg-card__media{position:relative;display:block;margin:0;background:var(--sg-color-bg-subtle);overflow:hidden}
.sg-card__media img{display:block;width:100%;height:100%;object-fit:cover}
.sg-card__media--4x3{aspect-ratio:4/3}
.sg-card__media--16x9{aspect-ratio:16/9}
.sg-card__media--1x1{aspect-ratio:1/1}
.sg-card__body{display:flex;flex-direction:column;gap:var(--sg-space-2);flex:1 1 auto;padding:var(--sg-space-4)}
.sg-card__eyebrow{font-size:var(--sg-font-size-xs);font-weight:var(--sg-font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;color:var(--sg-color-primary-text)}
.sg-card .sg-card__title{margin:0;font-family:var(--sg-font-family-body);font-size:var(--sg-font-size-lg);font-weight:var(--sg-font-weight-bold);line-height:var(--sg-font-line-height-snug);color:var(--sg-color-text)}
.sg-card__text{margin:0;font-size:var(--sg-font-size-base);line-height:var(--sg-font-line-height-normal);color:var(--sg-color-text-muted)}
.sg-card__meta{font-size:var(--sg-font-size-sm);color:var(--sg-color-text-subtle)}
.sg-card__body > .sg-badge,.sg-card > .sg-badge{align-self:flex-start}
.sg-card__footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sg-space-2);margin-top:auto}

/* Klickbare Karte */
.sg-card__link{color:inherit;text-decoration:none}
.sg-card__link::after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit}
.sg-card :is(a,button,input,select,textarea,summary,label,[role="button"],[tabindex]):not(.sg-card__link){position:relative;z-index:2} /* weitere Bedienelemente bleiben klickbar */
.sg-card--interactive{transition:box-shadow var(--sg-motion-base) var(--sg-motion-easing),transform var(--sg-motion-base) var(--sg-motion-easing),border-color var(--sg-motion-base) var(--sg-motion-easing)}
.sg-card--interactive:hover{box-shadow:var(--sg-shadow-lg)}
.sg-card--interactive:hover .sg-card__title{color:var(--sg-color-primary-text)}
@media (prefers-reduced-motion:no-preference){.sg-card--interactive:hover{transform:translateY(-2px)}}
.sg-card--interactive:focus-within:has(.sg-card__link:focus-visible),
a.sg-card--interactive:focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus);outline-offset:var(--sg-size-focus-offset)}
.sg-card__link:focus-visible{outline:none}
/* Fallback ohne :has(): Fokusring am Link selbst */
@supports not selector(:has(*)){.sg-card__link:focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus);outline-offset:var(--sg-size-focus-offset)}}

/* Komponente: Chip / Filter (.sg-chip) – nur Tokens. Doku: /styleguide/#sgd-chip
 * Umschalt-Filter: <button class="sg-chip" aria-pressed="true|false">Text <span class="sg-chip__n">12</span></button>
 * Navigations-Filter (Link): <a class="sg-chip" aria-current="true"> für den aktiven.
 * Gruppe: <div class="sg-chips" role="group" aria-label="…"> · Wischleiste: .sg-chips--scroll
 * Zustand kommt aus aria-pressed / aria-current – nie nur aus einer Klasse (WCAG 4.1.2). */
.sg-chips{display:flex;flex-wrap:wrap;gap:var(--sg-space-2)}
.sg-chips--scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:var(--sg-space-1)}
.sg-chips--scroll::-webkit-scrollbar{display:none}
.sg-chip{display:inline-flex;align-items:center;gap:var(--sg-space-1-5);flex:0 0 auto;min-height:2.25rem;padding:0 var(--sg-space-4);
  border:1px solid var(--sg-color-border-strong);border-radius:var(--sg-radius-pill);background:var(--sg-color-surface);color:var(--sg-color-text);
  font-family:var(--sg-font-family-body);font-size:var(--sg-font-size-sm);font-weight:var(--sg-font-weight-semibold);line-height:1.2;
  text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none;appearance:none;
  transition:background-color var(--sg-motion-fast) var(--sg-motion-easing),border-color var(--sg-motion-fast) var(--sg-motion-easing),color var(--sg-motion-fast) var(--sg-motion-easing)}
.sg-chip:hover{border-color:var(--sg-color-primary-text);color:var(--sg-color-primary-text)}
.sg-chip:focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus);outline-offset:var(--sg-size-focus-offset)}
.sg-chip[aria-pressed="true"],.sg-chip[aria-current]:not([aria-current="false"]),
.sg-chip:is(.is-on,.is-active){ /* zweite Zeile: Brücke für Modul-Filter, bis das Skript aria-pressed gesetzt hat */
  background:var(--sg-color-primary);border-color:var(--sg-color-primary);color:var(--sg-color-on-primary)}
.sg-chip__n{display:inline-flex;align-items:center;justify-content:center;min-width:1.5em;padding:0 var(--sg-space-1-5);border-radius:var(--sg-radius-pill);
  background:var(--sg-color-bg-subtle);color:var(--sg-color-text-muted);font-size:var(--sg-font-size-xs);font-weight:var(--sg-font-weight-bold);font-variant-numeric:tabular-nums}
.sg-chip[aria-pressed="true"] .sg-chip__n,.sg-chip[aria-current]:not([aria-current="false"]) .sg-chip__n,.sg-chip:is(.is-on,.is-active) .sg-chip__n{background:var(--sg-color-on-primary);color:var(--sg-color-primary-text)}
.sg-chip--icon{padding-left:var(--sg-space-1-5)} /* Chip mit Symbol vorne */
.sg-chip svg,.sg-chip img{width:1.1em;height:1.1em;flex:0 0 auto}
.sg-chip[disabled],.sg-chip[aria-disabled="true"]{opacity:.5;cursor:not-allowed;pointer-events:none}
@media (forced-colors:active){.sg-chip[aria-pressed="true"]{outline:2px solid Highlight}}

/* Komponente: Formularfeld (.sg-field + .sg-input/.sg-select/.sg-textarea/.sg-check) – nur Tokens.
 * Doku: /styleguide/#sgd-field
 * Aufbau:  .sg-field > label.sg-field__label[for] + p.sg-field__hint + Steuerelement + p.sg-field__error
 * Zustände: :focus-visible (Fokusring), [aria-invalid="true"] / .sg-field--error, :disabled, [readonly] */

/* --- Sicherheitsnetz: Jedes Formularfeld zeigt bei Tastatur-/Eingabe-Fokus einen sichtbaren Ring –
 *     auch dort, wo Modul-CSS outline:none setzt (WCAG 2.4.7). Gilt nur auf Seiten mit Tokens. */
:is(input:not([type="hidden"]),select,textarea):focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus)!important;outline-offset:var(--sg-size-focus-offset)!important}

.sg-field{display:flex;flex-direction:column;gap:var(--sg-space-1-5);min-width:0;margin:0 0 var(--sg-space-4)}
.sg-field__label{font-size:var(--sg-font-size-sm);font-weight:var(--sg-font-weight-semibold);color:var(--sg-color-text)}
.sg-field__req{color:var(--sg-color-danger);margin-left:2px}
.sg-field__hint{margin:0;font-size:var(--sg-font-size-sm);color:var(--sg-color-text-muted)}
.sg-field__error{display:flex;align-items:flex-start;gap:var(--sg-space-1);margin:0;font-size:var(--sg-font-size-sm);font-weight:var(--sg-font-weight-semibold);color:var(--sg-color-danger)}
.sg-field__error svg{width:1em;height:1em;flex:0 0 auto;margin-top:.15em}

.sg-input,.sg-select,.sg-textarea{width:100%;min-height:2.75rem;box-sizing:border-box;
  padding:var(--sg-space-2) var(--sg-space-3);border:1px solid var(--sg-color-border-field);border-radius:var(--sg-radius-md);
  background:var(--sg-color-surface);color:var(--sg-color-text);
  font-family:var(--sg-font-family-body);font-size:max(16px,var(--sg-font-size-md));line-height:1.4;
  transition:border-color var(--sg-motion-fast) var(--sg-motion-easing)}
.sg-input::placeholder,.sg-textarea::placeholder{color:var(--sg-color-text-subtle);opacity:1}
.sg-input:hover,.sg-select:hover,.sg-textarea:hover{border-color:var(--sg-color-text-muted)}
.sg-textarea{min-height:6rem;resize:vertical}
.sg-select{-webkit-appearance:none;appearance:none;padding-right:var(--sg-space-10);
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 20px) 55%,calc(100% - 15px) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.sg-input[readonly],.sg-textarea[readonly]{background:var(--sg-color-bg-subtle);color:var(--sg-color-text-muted)}
.sg-input:disabled,.sg-select:disabled,.sg-textarea:disabled{opacity:.55;cursor:not-allowed}
.sg-field--error :is(.sg-input,.sg-select,.sg-textarea),:is(.sg-input,.sg-select,.sg-textarea)[aria-invalid="true"]{border-color:var(--sg-color-danger);border-width:2px}

/* Checkbox / Radio mit Label rechts – ganze Zeile klickbar, Klickfläche ≥ 24 px */
.sg-check{display:flex;align-items:flex-start;gap:var(--sg-space-2);min-height:var(--sg-size-target-min);cursor:pointer;font-size:var(--sg-font-size-base);color:var(--sg-color-text)}
.sg-check input{width:1.125rem;height:1.125rem;margin:.15em 0 0;flex:0 0 auto;accent-color:var(--sg-color-primary)}

/* Suchfeld mit Icon (Label unsichtbar, aber vorhanden) */
.sg-search{position:relative;display:flex;align-items:center}
.sg-search__icon{position:absolute;left:var(--sg-space-3);width:1.1em;height:1.1em;color:var(--sg-color-text-muted);pointer-events:none}
.sg-search .sg-input{padding-left:var(--sg-space-10)}

/* Komponente: Kartenraster (.sg-grid) – nur Tokens + Token-Breakpoints. Doku: /styleguide/#sgd-grid
 * --products  Produkt-/Rezept-/Deal-Kacheln: 5 · 4 (≤1199) · 3 (≤900) · 2 (≤640)
 * --articles  Artikel-/Deal-Karten mit Text:  3 · 2 (≤900) · 1 (≤640)
 * Spalten immer minmax(0,1fr): lange Wörter sprengen die Spalten nicht. */
.sg-grid{display:grid;gap:var(--sg-space-4);align-items:start;min-width:0}
.sg-grid--products{grid-template-columns:repeat(5,minmax(0,1fr))}
.sg-grid--articles{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sg-space-6)}
@media (max-width:1199px){.sg-grid--products{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:900px){
  .sg-grid--products{grid-template-columns:repeat(3,minmax(0,1fr))}
  .sg-grid--articles{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sg-space-4)}
}
@media (max-width:640px){
  .sg-grid{gap:var(--sg-space-3)}
  .sg-grid--products{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sg-grid--articles{grid-template-columns:minmax(0,1fr)}
}

/* Komponente: Hero-Panel (.sg-hero-panel) – Kopfbereich von Detailseiten (Deal, Gutschein). Nur Tokens.
 * Doku: /styleguide/#sgd-hero · Dunkelmodus automatisch über die Tokens.
 * Marken-Heros (z. B. Vorpacklink in More-Orange) dürfen eigene Flächen haben, nutzen aber
 * Radius/Abstände aus den Tokens. */
.sg-hero-panel{background:linear-gradient(180deg,var(--sg-color-surface),var(--sg-color-bg-subtle));border:1px solid var(--sg-color-border);
  border-radius:var(--sg-radius-xl);padding:var(--sg-space-8) var(--sg-space-8);box-shadow:var(--sg-shadow-md)}
@media (max-width:640px){.sg-hero-panel{padding:var(--sg-space-6) var(--sg-space-5)}}

/* Komponenten: Seiten-Container, Seitenkopf, Breadcrumbs – nur Tokens. Doku: /styleguide/#sgd-layout
 * .sg-container: EINE Breite für alle Seiten = Header-Breite (1240 px inkl. Seitenrand → 1192 px Inhalt),
 *   gleicher Abstand oben (20 px) → Breadcrumb und Titel stehen auf jeder Seite an derselben Stelle.
 *   --medium / --narrow ändern NICHT die Position, nur die maximale Zeilenbreite des Inhalts (linksbündig).
 * .sg-page-header > nav.sg-breadcrumbs + p.sg-page-eyebrow + h1.sg-page-title + p.sg-page-lead + .sg-page-actions */
.sg-container{box-sizing:border-box;width:100%;max-width:var(--sg-layout-container-wide);margin-inline:auto;
  padding-inline:var(--sg-layout-gutter);padding-block:var(--sg-space-5) var(--sg-space-20)}
.sg-container--medium > *{max-width:var(--sg-layout-container-medium)}
.sg-container--narrow > *{max-width:var(--sg-layout-container-narrow)}
@media (max-width:640px){.sg-container{padding-inline:var(--sg-layout-gutter-sm)}}

.sg-page-header{display:flex;flex-direction:column;gap:var(--sg-space-2);margin:0 0 var(--sg-space-6)}
/* Breadcrumb im Seitenkopf: zusammen mit dem Flex-Abstand genau so weit vom Titel wie überall (16 px) */
.sg-page-header > .sg-breadcrumbs{margin-bottom:var(--sg-space-2)}
.sg-page-eyebrow{margin:0;font-size:var(--sg-font-size-xs);font-weight:var(--sg-font-weight-bold);letter-spacing:.06em;text-transform:uppercase;color:var(--sg-color-primary-text)}
.sg-page-title{margin:0;font-family:var(--sg-font-family-display);font-size:var(--sg-font-size-4xl);font-weight:var(--sg-font-weight-semibold);
  line-height:var(--sg-font-line-height-tight);letter-spacing:-.01em;color:var(--sg-color-text);text-wrap:balance}
.sg-page-lead{margin:0;max-width:64ch;font-size:var(--sg-font-size-lg);line-height:var(--sg-font-line-height-normal);color:var(--sg-color-text-muted)}
.sg-page-actions{display:flex;flex-wrap:wrap;gap:var(--sg-space-2);margin-top:var(--sg-space-2)}

/* Breadcrumbs: <nav aria-label> > <ol> > <li>; aktuelle Seite mit aria-current="page", Trenner nur optisch */
.sg-breadcrumbs{margin:0 0 var(--sg-space-4);font-family:var(--sg-font-family-body);font-size:var(--sg-font-size-sm);line-height:1.4}
.sg-breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sg-space-1) 0;list-style:none;margin:0;padding:0}
.sg-breadcrumbs li{display:inline-flex;align-items:center;min-width:0}
.sg-breadcrumbs__sep{margin:0 var(--sg-space-2);color:var(--sg-color-text-subtle)}
.sg-breadcrumbs a{color:var(--sg-color-text-muted);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;
  padding-block:var(--sg-space-0-5);transition:text-decoration-color var(--sg-motion-fast) var(--sg-motion-easing)}
.sg-breadcrumbs a:hover{color:var(--sg-color-text);text-decoration-color:currentColor}
.sg-breadcrumbs a:focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus);outline-offset:var(--sg-size-focus-offset);border-radius:var(--sg-radius-sm)}
.sg-breadcrumbs [aria-current="page"]{color:var(--sg-color-text);font-weight:var(--sg-font-weight-semibold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(60ch,70vw)}

/* Breite Tabellen: scrollen innerhalb ihres Rahmens statt die ganze Seite zu verbreitern.
 * <div class="sg-table-scroll" tabindex="0" role="region" aria-label="…"><table>…</table></div>
 * tabindex + Name: per Tastatur scrollbar (WCAG 2.1.1) */
.sg-table-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.sg-table-scroll:focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus);outline-offset:var(--sg-size-focus-offset);border-radius:var(--sg-radius-sm)}

/* Komponente: Hinweis (.sg-notice) + Leer-Zustand (.sg-empty) – nur Tokens. Doku: /styleguide/#sgd-notice
 * Ton nie nur über Farbe: Rand links + Titel/Text sagen, worum es geht (WCAG 1.4.1). */
.sg-notice{display:flex;flex-direction:column;gap:var(--sg-space-1);margin:0 0 var(--sg-space-4);padding:var(--sg-space-3) var(--sg-space-4);
  border:1px solid var(--sg-color-border);border-left-width:4px;border-radius:var(--sg-radius-md);background:var(--sg-color-surface);color:var(--sg-color-text);
  font-size:var(--sg-font-size-sm);line-height:var(--sg-font-line-height-normal)}
.sg-notice__title{font-weight:var(--sg-font-weight-bold)}
.sg-notice__body > :last-child{margin-bottom:0}
.sg-notice--info{border-left-color:var(--sg-color-primary);background:var(--sg-color-primary-soft)}
.sg-notice--success{border-left-color:var(--sg-color-success);background:var(--sg-color-success-soft)}
.sg-notice--warning{border-left-color:var(--sg-color-warning);background:var(--sg-color-warning-soft)}
.sg-notice--danger{border-left-color:var(--sg-color-danger);background:var(--sg-color-danger-soft)}
.sg-notice a{color:inherit;text-decoration:underline}

.sg-empty{margin:var(--sg-space-2) 0;padding:var(--sg-space-6) var(--sg-space-5);border:1px dashed var(--sg-color-border-strong);border-radius:var(--sg-radius-lg);
  background:var(--sg-color-bg-subtle);color:var(--sg-color-text-muted);text-align:center;font-size:var(--sg-font-size-base)}
.sg-empty p{margin:0 0 var(--sg-space-3)}
.sg-empty p:last-child{margin:0}

/* Komponente: Preis (.sg-price) – nur Tokens. Doku: /styleguide/#sgd-price
 * Aufbau: .sg-price > [.sg-price__from] .sg-price__now [s.sg-price__old]
 * Schriftgröße erbt vom Umfeld (Karte, Produktseite), damit die Module ihre Hierarchie behalten. */
.sg-price{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:0 var(--sg-space-1-5);font-variant-numeric:tabular-nums;white-space:nowrap}
.sg-price__from{font-size:.85em;font-weight:var(--sg-font-weight-medium);color:var(--sg-color-text-muted)}
.sg-price__now{font-weight:var(--sg-font-weight-bold);color:var(--sg-color-text)}
.sg-price__old{font-size:.85em;font-weight:var(--sg-font-weight-medium);color:var(--sg-color-text-subtle);text-decoration:line-through}

/* Komponente: Fortschrittsbalken (.sg-progress) – nur Tokens. Doku: /styleguide/#sgd-progress */
.sg-progress{height:.5rem;border-radius:var(--sg-radius-pill);background:var(--sg-color-bg-subtle);box-shadow:inset 0 0 0 1px var(--sg-color-border);overflow:hidden}
.sg-progress__bar{display:block;height:100%;width:var(--sg-progress,0%);border-radius:inherit;background:var(--sg-color-primary);transition:width var(--sg-motion-base, .3s) var(--sg-motion-easing)}
.sg-progress--success .sg-progress__bar{background:var(--sg-color-success)}
@media (prefers-reduced-motion:reduce){.sg-progress__bar{transition:none}}
@media (forced-colors:active){.sg-progress__bar{background:Highlight}}

/* Komponente: Bewertung (.sg-score, .sg-stars) – nur Tokens. Doku: /styleguide/#sgd-score
 * .sg-score--supp  Suppligator-Score (Gator, /10)    .sg-score--comm  Community (Stern, /5)
 * Varianten: (inline) · --badge · --large
 * Zahl immer in Textfarbe (4,5 : 1); Icons/Sterne als Grafik mit ≥ 3 : 1 (color.star, color.brand). */
.sg-score{display:inline-flex;align-items:center;gap:var(--sg-space-1);white-space:nowrap;
  font-family:var(--sg-font-family-body);font-size:var(--sg-font-size-sm);font-weight:var(--sg-font-weight-heavy);
  line-height:1.2;color:var(--sg-color-text);font-variant-numeric:tabular-nums}
.sg-score__icon{display:inline-flex;align-items:center;flex:0 0 auto}
.sg-score__icon img,.sg-score__icon svg{width:1.15em;height:1.15em;display:block}
.sg-score--comm .sg-score__icon{color:var(--sg-color-star)}
.sg-score--supp .sg-score__value{color:var(--sg-color-primary-text)}
.sg-score__max{font-weight:var(--sg-font-weight-semibold);font-size:.85em;color:var(--sg-color-text-muted);margin-left:1px}
.sg-score__count{font-weight:var(--sg-font-weight-semibold);color:var(--sg-color-text-muted)}

.sg-score--badge{padding:var(--sg-space-1) var(--sg-space-2);border-radius:var(--sg-radius-pill);font-size:var(--sg-font-size-xs)}
.sg-score--badge.sg-score--supp{background:var(--sg-color-primary-soft)}
.sg-score--badge.sg-score--comm{background:var(--sg-color-warning-soft)}
.sg-score--badge .sg-score__max{color:var(--sg-color-text)}

.sg-score--large{gap:var(--sg-space-2);font-size:var(--sg-font-size-3xl);font-weight:var(--sg-font-weight-bold);line-height:1}
.sg-score--large .sg-score__max{font-size:.5em}

/* Sterne-Reihe: graue Basis + farbige Füllung per Breite */
.sg-stars{position:relative;display:inline-block;line-height:1;font-size:var(--sg-font-size-md);letter-spacing:1px;white-space:nowrap;vertical-align:middle}
.sg-stars__base{color:var(--sg-color-border-field)}
.sg-stars__fill{position:absolute;inset:0 auto 0 0;overflow:hidden;color:var(--sg-color-star)}

/* Komponente: Tabs (.sg-tabs > .sg-tab) – nur Tokens. Doku: /styleguide/#sgd-tabs
 * Inhalts-Tabs mit Unterstrich. Zustand aus aria-selected (Brücke: .is-active). */
.sg-tabs{display:flex;flex-wrap:wrap;gap:var(--sg-space-6);border-bottom:1px solid var(--sg-color-border);margin:0 0 var(--sg-space-6)}
.sg-tab{display:inline-flex;align-items:center;gap:var(--sg-space-2);min-height:2.75rem;margin:0 0 -1px;padding:0 0 var(--sg-space-3);
  border:0;border-bottom:3px solid transparent;background:none;color:var(--sg-color-text-subtle);
  font-family:var(--sg-font-family-body);font-size:var(--sg-font-size-lg);font-weight:var(--sg-font-weight-semibold);cursor:pointer;
  transition:color var(--sg-motion-fast) var(--sg-motion-easing),border-color var(--sg-motion-fast) var(--sg-motion-easing)}
.sg-tab:hover{color:var(--sg-color-text)}
.sg-tab:focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus);outline-offset:var(--sg-size-focus-offset);border-radius:var(--sg-radius-sm)}
.sg-tab[aria-selected="true"],.sg-tab.is-active,.sg-tab.is-on{color:var(--sg-color-text);border-bottom-color:var(--sg-color-primary)}
.sg-tab .sg-chip__n{margin-left:var(--sg-space-1)}
@media (forced-colors:active){.sg-tab[aria-selected="true"]{border-bottom-color:Highlight}}

/* Segment-Schalter (.sg-segmented > .sg-segmented__btn): kleine Umschalter mit 2–4 Optionen
 * (z. B. Zeitraum, Sortierung). Zustand aus aria-selected (Tabs) bzw. aria-pressed (Umschalter). */
.sg-segmented{display:inline-flex;gap:var(--sg-space-1);padding:var(--sg-space-1);border-radius:var(--sg-radius-pill);background:var(--sg-color-bg-subtle);border:1px solid var(--sg-color-border)}
.sg-segmented__btn{display:inline-flex;align-items:center;gap:var(--sg-space-1-5);min-height:2rem;padding:0 var(--sg-space-4);border:0;border-radius:var(--sg-radius-pill);background:transparent;
  color:var(--sg-color-text-muted);font-family:var(--sg-font-family-body);font-size:var(--sg-font-size-sm);font-weight:var(--sg-font-weight-bold);cursor:pointer;
  transition:background-color var(--sg-motion-fast) var(--sg-motion-easing),color var(--sg-motion-fast) var(--sg-motion-easing)}
.sg-segmented__btn:hover{color:var(--sg-color-text)}
.sg-segmented__btn:focus-visible{outline:var(--sg-size-focus-width) solid var(--sg-color-focus);outline-offset:var(--sg-size-focus-offset)}
.sg-segmented__btn:is([aria-selected="true"],[aria-pressed="true"],.is-active){background:var(--sg-color-surface);color:var(--sg-color-text);box-shadow:var(--sg-shadow-sm)}
.sg-segmented__btn svg,.sg-segmented__btn img{width:1.1em;height:1.1em}
@media (forced-colors:active){.sg-segmented__btn:is([aria-selected="true"],[aria-pressed="true"]){outline:2px solid Highlight}}

/* Hilfsklassen des Design Systems. */
/* Nur für Screenreader sichtbar (z. B. „Rabatt:“ vor „−20 %“). */
.sg-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}