/* === Move To Shop Storefront (Phase D.1) ============================== */
/* Theme-friendly: nutzt currentColor + neutrale Greys, ueberschreibt nichts. */
/*
   WHITE-LABEL (TASK-483 P4): Alle marken-/theme-relevanten Farben sind
   Tokens (--mts-c-primary & Familie). Der :root-DEFAULT ist bewusst
   NEUTRAL (sachliches Slate/Grau-Blau), damit das Modul fuer beliebige
   Fremd-Haendler OHNE Multicycle-Bezug ausrollbar ist. Das Multicycle-Gruen
   ist als Override-Block direkt unter :root erhalten und wird ueber das
   Attribut data-mts-brand="multicycle" (auf <html> oder <body>) aktiviert.
   Zustandsfarben (success/warning/danger) und neutrale Struktur-Greys sind
   theme-agnostisch und bleiben markenunabhaengig.

   THEME-ANKER-KOPPLUNG (Fremd-Theme-Fallbacks): Viele Regeln weiter unten
   (.pd-offer-actions, .pd-data-col, .gal-nav-cell, .costep, .faceted-search,
   .megamenu, .artlist-actions, .breadcrumb-container, .choice-box*, der
   #main-update-container-PDP-Kontext) haengen an der DOM-Struktur des
   Smartstore-Flex/Flow-Themes. Auf einem Ziel-Theme mit abweichender
   Markup-Struktur greifen sie ggf. nicht (rein kosmetischer Verlust, KEIN
   Funktionsbruch). Die JS-Fallback-Anker #main-update-container /
   form[data-pf] / .pd-form liegen in storefront.js (collectVariantQuery) und
   degradieren dort defensiv auf `document`. */

:root {
    /* ---- Marken-/Primaerfarbe: NEUTRALER Default (white-label) ----------
       Sachliches Slate/Grau-Blau. Multicycle-Gruen -> Override-Block unten.
       Die -rgb-Tokens speisen die abgeleiteten tint/ring/Schatten via
       rgba(var(--...-rgb), a); so muss der Brand-Override nur die Basiswerte
       setzen, die Ableitungen folgen automatisch. */
    --mts-c-primary:            #3f5b73;
    --mts-c-primary-rgb:        63, 91, 115;
    --mts-c-primary-soft:       #6c839a;    /* heller: Gradient-Start / Light-BG */
    --mts-c-primary-soft-rgb:   108, 131, 154;
    --mts-c-primary-soft-2:     #5a7288;    /* Hover-Gradient-Start */
    --mts-c-primary-dark:       #33485c;    /* Gradient-Ende */
    --mts-c-primary-hover:      #324759;    /* Solid-Button-Hover */
    --mts-c-primary-active:     #29394a;    /* aktiv/gedrueckt */
    --mts-c-primary-active-rgb: 41, 57, 74;
    --mts-c-primary-shadow-rgb: 26, 40, 52; /* Add-to-Cart-Drop-Shadow */
    --mts-c-primary-onbg:       #ffffff;    /* Text auf der Primaerflaeche */
    --mts-c-primary-tint:       rgba(var(--mts-c-primary-rgb), 0.10);
    --mts-c-primary-ring:       rgba(var(--mts-c-primary-rgb), 0.22);
    /* "Hauptfiliale"-Badge (Filialfinder-Karten): weicher Primaer-Tint. */
    --mts-c-badge-primary-bg:   #e9edf1;
    --mts-c-badge-primary-fg:   #33485c;

    /* ---- Zustandsfarben (theme-agnostisch, markenunabhaengig) ----------- */
    --mts-c-warning: #d97706;
    --mts-c-danger:  #dc2626;
    --mts-c-success: #16a34a;

    /* ---- Neutrale Struktur-/Text-Tokens (theme-agnostisch) -------------- */
    --mts-c-text:    #1f2937;
    --mts-c-muted:   #6b7280;
    --mts-c-border:  #e5e7eb;
    --mts-c-bg-soft: #f9fafb;
    /* Global promotet (waren zuvor nur .mts-page-lokal): so loesen die
       PDP-/Listing-/Cart-Overrides weiter unten diese Tokens global auf
       (statt per-Site var()-Fallback-Literal). Werte identisch zu den
       bisherigen Fallbacks -> kein visueller Unterschied. --mts-surface-2,
       --mts-line und --mts-line-soft bleiben BEWUSST .mts-page-lokal, weil
       ihre per-Site-Fallbacks divergieren (#f5f5f7 vs #f1f1f4 / mehrere
       Border-Alphas) - ein globales Hochziehen wuerde sie kollabieren. */
    --mts-surface:   #ffffff;
    --mts-ink:       #0b1220;
    --mts-ink-soft:  #4a5568;
    --mts-ink-muted: #6b7280;
    /* Akzent-Aliase zeigen auf die Brand-Tokens (killt die zuvor versteckten
       green-Fallbacks in var(--mts-accent) ausserhalb .mts-page). */
    --mts-accent:    var(--mts-c-primary);
    --mts-accent-2:  var(--mts-c-primary-soft);

    --mts-radius:    0.55rem;
    --mts-shadow-sm: 0 1px 2px rgba(15,23,42,0.06);
    --mts-shadow-md: 0 6px 18px rgba(15,23,42,0.10);
}

/* === Multicycle-Brand-Override (movetoshopdemo) =========================
   Byte-genau die bisherigen Multicycle-Gruen-Werte (Stand vor TASK-483 P4).
   Aktivierung ueber data-mts-brand="multicycle" auf <html> ODER <body>
   (beide Selektor-Varianten abgedeckt).

   >>> DEPLOY-AUFLAGE <<<  Dieses Attribut MUSS serverseitig gesetzt werden.
   Das bestehende data-tenant sitzt auf dem MtsAssets-<script>-Tag
   (Views/Shared/Components/MtsAssets/Default.cshtml) und ist fuer CSS-Scoping
   NICHT nutzbar (Script-Element, keine gerenderten Kinder). Es braucht einen
   neuen Anker auf <html>/<body> - z.B. via kleinem Inline-Setter in
   Default.cshtml, der aus @Model.TenantId ("movetoshopdemo") ->
   document.documentElement.setAttribute('data-mts-brand','multicycle') macht.
   OHNE das Attribut erscheint auch die Demo NEUTRAL (slate) statt gruen.

   tint/ring/Schatten leiten sich aus den -rgb-Tokens ab -> hier nur Basis. */
:root[data-mts-brand="multicycle"],
[data-mts-brand="multicycle"] {
    --mts-c-primary:            #5f8175;
    --mts-c-primary-rgb:        95, 129, 117;
    --mts-c-primary-soft:       #7d9c92;
    --mts-c-primary-soft-rgb:   125, 156, 146;
    --mts-c-primary-soft-2:     #6e9285;
    --mts-c-primary-dark:       #4d6b60;
    --mts-c-primary-hover:      #4f6d62;
    --mts-c-primary-active:     #445e54;
    --mts-c-primary-active-rgb: 68, 94, 84;
    --mts-c-primary-shadow-rgb: 47, 78, 68;
    --mts-c-primary-onbg:       #1a1a1a;
    --mts-c-badge-primary-bg:   #e6efe9;
    --mts-c-badge-primary-fg:   #33544a;
}

/* --- Header-Pill (BranchPickerHeader) --------------------------------- */
.mts-branch-pill {
    display: inline-flex; align-items: center; gap: 0.4rem;
    padding: 0.35rem 0.5rem;
    border: 0;
    border-radius: 9999px;
    background: transparent;
    color: var(--mts-c-text);
    text-decoration: none !important;
    font-size: 0.85rem; line-height: 1;
    transition: color 0.15s;
}
.mts-branch-pill:hover { color: var(--mts-c-primary-dark); }
.mts-branch-pill svg { flex-shrink: 0; }
.mts-branch-pill-label { font-weight: 600; max-width: 28ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 768px) { .mts-branch-pill-label { max-width: 16ch; } }
.mts-branch-pill-caret { opacity: 0.6; }

/* --- PDP-Stockbox ------------------------------------------------------ */
.mts-pdp-stockbox {
    margin: 1rem 0;
    padding: 1rem 1.1rem;
    background: var(--mts-c-bg-soft);
    border: 1px solid var(--mts-c-border);
    border-radius: var(--mts-radius);
    color: var(--mts-c-text);
    font-size: 0.9rem;
}
.mts-pdp-stockbox-head { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.6rem; }
.mts-pdp-stockbox-title { font-weight: 600; }
.mts-pdp-stockbox-aggregate { margin-left: auto; font-size: 0.78rem; color: var(--mts-c-muted); }
.mts-pdp-stockbox-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.3rem; }
.mts-pdp-stockbox-row {
    display: grid;
    grid-template-columns: 12px 1fr auto auto;
    align-items: center; gap: 0.5rem;
    padding: 0.35rem 0.5rem;
    border-radius: 0.35rem;
    background: #fff;
    border: 1px solid transparent;
}
.mts-pdp-stockbox-row.is-current { border-color: var(--mts-c-primary); background: var(--mts-c-primary-tint); }
.mts-pdp-stockbox-dot { width: 10px; height: 10px; border-radius: 50%; background: #ddd; }
.mts-state-in  .mts-pdp-stockbox-dot { background: var(--mts-c-success); }
.mts-state-low .mts-pdp-stockbox-dot { background: var(--mts-c-warning); }
.mts-state-out .mts-pdp-stockbox-dot { background: var(--mts-c-danger); }
.mts-pdp-stockbox-name { color: var(--mts-c-text); text-decoration: none; font-weight: 500; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mts-pdp-stockbox-name:hover { text-decoration: underline; }
.mts-pdp-stockbox-status { font-size: 0.78rem; color: var(--mts-c-muted); }
.mts-state-in  .mts-pdp-stockbox-status { color: var(--mts-c-success); }
.mts-state-low .mts-pdp-stockbox-status { color: var(--mts-c-warning); }
.mts-state-out .mts-pdp-stockbox-status { color: var(--mts-c-danger); }
.mts-pdp-stockbox-qty { font-size: 0.78rem; color: var(--mts-c-muted); white-space: nowrap; }
.mts-pdp-stockbox-foot { margin-top: 0.6rem; font-size: 0.8rem; }
.mts-pdp-stockbox-foot a { color: var(--mts-c-primary); text-decoration: none; }
.mts-pdp-stockbox-foot a:hover { text-decoration: underline; }

/* --- Cart Pickup CTA (TASK-251 / Strom A) ----------------------------- */
/* Borderless, button-first. Der gruene Aktivieren-Button ist ein
   gleichwertiges Geschwister des orangen "Zur Kasse"-Buttons (#checkout):
   full-width Pille, gleiche Hoehe/Radius/Shadow-Sprache. */
.mts-cart-pickup {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.55rem;
    margin: 0;            /* sitzt im row-gap-2-Flow der cart-footer-actions */
    padding: 0;
    background: none;
    border: 0;
    color: inherit;
    font-size: 0.9rem;
    text-align: center;
}
.mts-cart-pickup--cart { margin-top: 0.5rem; }

/* Primaerer Aktivieren-Button: gruene Voll-Pille im #checkout-Stil. */
.mts-cart-pickup-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    cursor: pointer;
    border: 0;
    font-family: inherit;
    font-weight: 600;
    transition: background 0.15s ease, box-shadow 0.15s ease, color 0.15s ease;
    text-decoration: none;
}
.mts-cart-pickup-btn-on {
    min-height: 52px;
    padding: 12px 28px;
    border-radius: 999px;
    font-size: 16px;
    line-height: 1.2;
    background: #16a34a;
    color: #fff;
    box-shadow: 0 8px 20px rgba(22, 163, 74, 0.30);
}
.mts-cart-pickup-btn-on:hover,
.mts-cart-pickup-btn-on:focus-visible { background: #15803d; color: #fff; }
.mts-cart-pickup-btn-icon { display: inline-flex; }

/* Deaktivieren-Button im Aktiv-Zustand: dezenter Outline-Pill, kein dominanter Block. */
.mts-cart-pickup-btn-off {
    min-height: 44px;
    padding: 10px 24px;
    border-radius: 999px;
    font-size: 0.92rem;
    background: #fff;
    color: #15803d;
    border: 1.5px solid #16a34a;
    box-shadow: none;
}
.mts-cart-pickup-btn-off:hover,
.mts-cart-pickup-btn-off:focus-visible { background: #f0fdf4; color: #166534; border-color: #15803d; }

/* Begleittext borderless (kein gelber Kasten mehr). */
.mts-cart-pickup-note {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    gap: 0.45rem;
    color: #475569;
    font-size: 0.84rem;
    line-height: 1.45;
    padding: 0 0.25rem;
}
.mts-cart-pickup-note strong { color: #1e293b; font-weight: 600; }
.mts-cart-pickup-note--inactive { color: #64748b; }
.mts-cart-pickup-note--active { color: #15803d; }
.mts-cart-pickup-note--active strong { color: #166534; }
.mts-cart-pickup-note-icon { flex: 0 0 auto; color: #16a34a; margin-top: 0.05rem; }
.mts-cart-pickup-note-text { text-align: left; }

/* "Andere Filiale waehlen" – nur im Aktiv-Zustand sichtbar (View-seitig konditional). */
.mts-cart-pickup-link {
    display: inline-block;
    color: #64748b;
    font-size: 0.82rem;
    text-decoration: none;
    border-bottom: 1px solid transparent;
}
.mts-cart-pickup-link:hover { color: #16a34a; border-bottom-color: currentColor; }

/* Side-Cart (Offcanvas): kompakter, ohne grossen Shadow. */
.mts-cart-pickup--offcanvas { gap: 0.4rem; margin-top: 0.4rem; }
.mts-cart-pickup--offcanvas .mts-cart-pickup-btn-on {
    min-height: 46px;
    padding: 10px 22px;
    font-size: 0.95rem;
    box-shadow: 0 6px 16px rgba(22, 163, 74, 0.26);
}
.mts-cart-pickup--offcanvas .mts-cart-pickup-btn-off { min-height: 40px; }

/* --- Reserve-Drawer (Phase 7c, shopify-style slide-in von rechts) ---- */
.mts-drawer[hidden] { display: none !important; }
.mts-drawer {
    position: fixed; inset: 0; z-index: 10600;
    display: flex; justify-content: flex-end;
    pointer-events: none;
}
.mts-drawer-backdrop {
    position: absolute; inset: 0;
    background: rgba(15, 23, 42, 0.0);
    backdrop-filter: blur(0px);
    transition: background 0.35s ease, backdrop-filter 0.35s ease;
    pointer-events: none;
}
.mts-drawer.is-open { pointer-events: auto; }
.mts-drawer.is-open .mts-drawer-backdrop {
    background: rgba(15, 23, 42, 0.42);
    backdrop-filter: blur(4px);
    pointer-events: auto;
}
.mts-drawer-panel {
    position: relative;
    width: 100%; max-width: 480px;
    height: 100%;
    background: #fff;
    box-shadow: -24px 0 56px rgba(15, 23, 42, 0.18);
    border-top-left-radius: 0;
    display: flex; flex-direction: column;
    transform: translateX(100%);
    transition: transform 0.42s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: transform;
}
.mts-drawer-head {
    background: linear-gradient(180deg, var(--mts-c-primary-tint) 0%, transparent 100%);
    padding-bottom: 1.4rem;
}
.mts-drawer.is-open .mts-drawer-panel { transform: translateX(0); }
@media (prefers-reduced-motion: reduce) {
    .mts-drawer-panel, .mts-drawer-backdrop { transition: none; }
}
.mts-drawer-head {
    display: flex; align-items: flex-start; justify-content: space-between;
    gap: 1rem;
    padding: 1.4rem 1.5rem 1.1rem;
}
.mts-drawer-eyebrow {
    margin: 0 0 0.2rem; font-size: 0.72rem; letter-spacing: 0.08em;
    text-transform: uppercase; font-weight: 700; color: var(--mts-c-primary);
}
.mts-drawer-head h3 {
    margin: 0; font-size: 1.35rem; font-weight: 700; color: #0f172a;
    line-height: 1.2;
}
.mts-drawer-close {
    border: 0; background: transparent; cursor: pointer;
    padding: 0.4rem; color: #64748b;
    border-radius: 999px;
    transition: background 0.15s, color 0.15s;
}
.mts-drawer-close:hover { background: rgba(15, 23, 42, 0.06); color: #0f172a; }

/* TASK-444: Such-/Standort-Toolbar im Reserve-Drawer. Eine Zeile (nowrap),
   Pill-Form mit leichtem grauem Rand, Akzente im Multicycle-Gruen
   (var(--mts-c-primary)). */
.mts-drawer-tools {
    display: flex; flex-wrap: nowrap; gap: 0.5rem; align-items: stretch;
    padding: 0 1.5rem 0.8rem;
}
.mts-drawer-search-wrap {
    position: relative; flex: 1 1 auto; min-width: 0;
    color: #94a3b8;
}
.mts-drawer-search-wrap svg {
    position: absolute; left: 0.8rem; top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
}
input.mts-drawer-search {
    width: 100%;
    border: 1px solid rgba(15, 23, 42, 0.14) !important;
    border-radius: 999px !important;
    background: #fff;
    padding: 0.55rem 1rem 0.55rem 2.3rem;
    font-size: 0.9rem;
    line-height: 1.3;
    height: auto;
    color: #0f172a;
    outline: none;
    -webkit-appearance: none;
    appearance: none;
    box-shadow: none;
    transition: border-color 0.15s, box-shadow 0.15s;
}
input.mts-drawer-search:focus {
    border-color: var(--mts-c-primary) !important;
    box-shadow: 0 0 0 3px var(--mts-c-primary-ring);
}
input.mts-drawer-search::placeholder { color: #94a3b8; }
.mts-drawer-geo {
    display: inline-flex; align-items: center; gap: 0.4rem;
    flex: 0 0 auto;
    border: 1px solid rgba(15, 23, 42, 0.14);
    border-radius: 999px;
    background: #fff;
    padding: 0.55rem 0.95rem;
    font-size: 0.85rem; font-weight: 600;
    color: #334155;
    cursor: pointer;
    white-space: nowrap;
    transition: border-color 0.15s, background 0.15s, color 0.15s, box-shadow 0.15s;
}
.mts-drawer-geo:hover {
    border-color: var(--mts-c-primary);
    color: var(--mts-c-primary);
    box-shadow: 0 0 0 3px var(--mts-c-primary-ring);
}
.mts-drawer-geo.is-active {
    background: var(--mts-c-primary);
    border-color: var(--mts-c-primary);
    color: #fff;
}
.mts-drawer-geo.is-loading { opacity: 0.6; cursor: wait; }
.mts-drawer-geo-err {
    margin: 0 1.5rem 0.6rem;
    padding: 0.6rem 0.85rem;
    background: rgba(217, 119, 6, 0.08);
    color: #92400e;
    border-radius: 0.6rem;
    font-size: 0.82rem;
}
.mts-drawer-body {
    flex: 1; overflow-y: auto;
    padding: 0 1.5rem 1rem;
    display: flex; flex-direction: column; gap: 0.8rem;
}
.mts-drawer-foot {
    padding: 1rem 1.5rem 1.5rem;
    border-top: 1px solid rgba(15, 23, 42, 0.06);
}
.mts-drawer-footnote { margin: 0; font-size: 0.78rem; color: #64748b; line-height: 1.5; }
.mts-drawer-empty { color: #64748b; padding: 1rem 0; }
.mts-drawer-error {
    margin: 0; padding: 0.85rem 1rem;
    background: rgba(220, 38, 38, 0.06);
    color: #b91c1c;
    border-radius: 0.6rem;
    font-size: 0.88rem;
}

/* Reserve-Card (no border, no grey bg - clean shadow + hover lift) */
.mts-rc {
    background: #fff;
    border-radius: 14px;
    padding: 1.1rem 1.15rem 1rem;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 2px 8px rgba(15, 23, 42, 0.06);
    transition: transform 0.18s ease, box-shadow 0.18s ease;
    position: relative;
    overflow: hidden;
}
.mts-rc::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0;
    width: 3px; background: transparent;
    transition: background 0.18s ease;
}
.mts-rc:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(15, 23, 42, 0.10); }
.mts-rc.is-current::before { background: linear-gradient(180deg, var(--mts-c-primary-soft), var(--mts-c-primary)); }
.mts-rc-state-in::before    { background: #16a34a; }
.mts-rc-state-low::before   { background: #d97706; }
.mts-rc-state-out::before   { background: #94a3b8; }
.mts-rc-state-unknown::before { background: #cbd5e1; }
/* Reserve-Card-Header: Verfuegbarkeit links, Badges rechts.
   Bis 2026-07-14 hatte KEINE der beiden Seiten eine Flex-Vorgabe - beide waren
   damit gleich schrumpfbar. Standen rechts BEIDE Badges ("Aktuell ausgewaehlt"
   + "Hauptfiliale"), wurde der Status-Block so schmal, dass er INNERHALB
   umbrach: "Wenige / verfuegbar" und "1 / Stueck" jeweils zweizeilig.
   Der Bestand ist die Kerninformation der Karte - er behaelt seine natuerliche
   Breite (flex: 0 0 auto + nowrap), die Badges geben nach.

   Ziel ist EINE Zeile: "Wenige verfuegbar | 1 Stueck | Aktuell ausgewaehlt |
   Hauptfiliale". Reicht der Platz nicht (schmaler Viewport), sollen die Badges
   OBERHALB der Bestandsangabe landen, nicht darunter (User-Vorgabe 2026-07-14).
   Genau das macht `wrap-reverse`: es kehrt nur die Stapelrichtung der Zeilen um
   (Zeilen wachsen nach oben), NICHT die Reihenfolge innerhalb der Zeile. Im
   Einzeiler bleibt es also bei Bestand links / Badges rechts. */
.mts-rc-head {
    display: flex; justify-content: space-between; align-items: center;
    gap: 0.5rem; margin-bottom: 0.55rem; flex-wrap: wrap-reverse;
}
.mts-rc-state-pill {
    display: inline-flex; align-items: center; gap: 0.45rem;
    font-size: 0.78rem; color: #475569; font-weight: 600;
    flex: 0 0 auto;
}
.mts-rc-dot {
    width: 9px; height: 9px; border-radius: 50%; background: #cbd5e1;
    box-shadow: 0 0 0 3px rgba(203, 213, 225, 0.25);
}
.mts-rc-state-in    .mts-rc-dot { background: #16a34a; box-shadow: 0 0 0 4px rgba(22, 163, 74, 0.16); }
.mts-rc-state-low   .mts-rc-dot { background: #d97706; box-shadow: 0 0 0 4px rgba(217, 119, 6, 0.16); }
.mts-rc-state-out   .mts-rc-dot { background: #94a3b8; }
.mts-rc-state-unknown .mts-rc-dot { background: #cbd5e1; }
.mts-rc-state-label { color: #1e293b; white-space: nowrap; }
.mts-rc-state-in    .mts-rc-state-label { color: #15803d; }
.mts-rc-state-low   .mts-rc-state-label { color: #b45309; }
.mts-rc-qty {
    font-size: 0.72rem; padding: 0.1rem 0.5rem; border-radius: 999px;
    background: rgba(15, 23, 42, 0.05); color: #475569;
    white-space: nowrap;   /* "1 Stueck" nie umbrechen */
}
.mts-rc-badges {
    display: inline-flex; gap: 0.3rem; flex-wrap: wrap; justify-content: flex-end;
    flex: 1 1 auto; min-width: 0;   /* gibt nach, statt den Bestand zu quetschen */
}
.mts-rc-badge {
    font-size: 0.66rem; font-weight: 700; padding: 0.18rem 0.55rem;
    border-radius: 999px;
    white-space: nowrap;   /* Umbruch ZWISCHEN Badges, nicht innerhalb */
}
.mts-rc-badge-current {
    background: linear-gradient(135deg, var(--mts-c-primary-soft) 0%, var(--mts-c-primary) 100%);
    color: var(--mts-c-primary-onbg);
}
.mts-rc-badge-primary { background: var(--mts-c-primary-dark); color: #fff; }
.mts-rc-name { margin: 0 0 0.3rem; font-size: 1.02rem; font-weight: 700; color: #0f172a; line-height: 1.25; }
.mts-rc-addr { margin: 0 0 0.6rem; font-size: 0.83rem; color: #64748b; line-height: 1.4; }
.mts-rc-tags { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-bottom: 0.75rem; }
.mts-rc-tag {
    font-size: 0.7rem; padding: 0.2rem 0.55rem;
    border-radius: 999px; background: rgba(15, 23, 42, 0.045); color: #475569;
}
.mts-rc-actions { margin-top: 0.3rem; }
.mts-rc-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
    width: 100%; padding: 0.7rem 1rem;
    border-radius: 10px;
    font-size: 0.92rem; font-weight: 600; line-height: 1;
    cursor: pointer;
    transition: transform 0.12s, box-shadow 0.18s, background 0.18s;
    text-decoration: none;
    border: 0;
    font-family: inherit;
}
.mts-rc-btn-primary {
    background: linear-gradient(135deg, var(--mts-c-primary-soft) 0%, var(--mts-c-primary) 100%);
    color: var(--mts-c-primary-onbg);
    box-shadow: 0 1px 2px rgba(var(--mts-c-primary-rgb), 0.20), 0 4px 14px rgba(var(--mts-c-primary-rgb), 0.28);
    letter-spacing: 0.01em;
}
.mts-rc-btn-primary:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 14px rgba(var(--mts-c-primary-rgb), 0.32), 0 8px 22px rgba(var(--mts-c-primary-rgb), 0.22);
    background: linear-gradient(135deg, var(--mts-c-primary-soft-2) 0%, var(--mts-c-primary-dark) 100%);
}
.mts-rc-btn-primary:active { transform: translateY(0); }
.mts-rc-btn-primary.is-loading { opacity: 0.6; cursor: progress; }
.mts-rc-btn-primary[disabled] { opacity: 0.5; cursor: not-allowed; }
.mts-rc-btn-ghost {
    background: transparent; color: #1e293b;
    box-shadow: inset 0 0 0 1.5px rgba(15, 23, 42, 0.12);
}
.mts-rc-btn-ghost:hover { box-shadow: inset 0 0 0 1.5px #0f172a; }
.mts-rc-btn-disabled { background: rgba(15, 23, 42, 0.06); color: #94a3b8; cursor: not-allowed; }
.mts-rc-err {
    margin-top: 0.6rem; padding: 0.5rem 0.7rem;
    background: rgba(220, 38, 38, 0.08); color: #b91c1c;
    border-radius: 0.5rem; font-size: 0.82rem;
}
.mts-rc-success { animation: mtsRcPulse 0.4s ease-out; }
@keyframes mtsRcPulse {
    0%   { transform: scale(0.98); }
    50%  { transform: scale(1.01); }
    100% { transform: scale(1); }
}
.mts-rc-success-box { text-align: center; padding: 0.8rem 0.4rem; }
.mts-rc-success-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 52px; height: 52px; border-radius: 50%;
    background: rgba(22, 163, 74, 0.12); color: #15803d;
    margin-bottom: 0.6rem;
}
.mts-rc-success-box h5 { margin: 0 0 0.35rem; font-size: 1rem; font-weight: 700; color: #15803d; }
.mts-rc-success-box p { margin: 0 0 0.25rem; font-size: 0.9rem; color: #1e293b; }
.mts-rc-success-box strong { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 1.05rem; letter-spacing: 0.04em; }
.mts-rc-success-sub { color: #64748b !important; font-size: 0.82rem !important; }

/* Skeleton placeholder waehrend Verfuegbarkeit laedt */
.mts-drawer-skeleton { display: flex; flex-direction: column; gap: 0.8rem; }
.mts-skeleton-card {
    height: 145px; border-radius: 14px;
    background: linear-gradient(90deg, rgba(15,23,42,0.04) 0%, rgba(15,23,42,0.08) 50%, rgba(15,23,42,0.04) 100%);
    background-size: 220% 100%;
    animation: mtsShimmer 1.4s linear infinite;
}
@keyframes mtsShimmer {
    0%   { background-position: 220% 0; }
    100% { background-position: -20% 0; }
}

/* --- Modal ------------------------------------------------------------ */
/* Borderless, mehr Whitespace, Hover-Lift statt Border-Wechsel, Apple-style.
   Service-Tags wurden aus dem Markup entfernt (User-Praeferenz 2026-05-11):
   das Modal ist ein Picker, keine Service-Uebersicht. */
.mts-modal[hidden] { display: none !important; }
.mts-modal { position: fixed; inset: 0; z-index: 10500; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.mts-modal-backdrop { position: absolute; inset: 0; background: rgba(15,23,42,0.45); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.mts-modal-card {
    position: relative; width: 100%;
    max-width: 960px; max-height: 88vh;
    display: flex; flex-direction: column;
    background: #fff; border-radius: 20px;
    box-shadow: 0 1px 2px rgba(15,23,42,0.06), 0 24px 64px -16px rgba(15,23,42,0.24);
    overflow: hidden;
    animation: mtsModalIn 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes mtsModalIn { from { transform: translateY(12px) scale(0.985); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } }
.mts-modal-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 1.5rem 1.6rem 0.85rem;
    border: 0;
}
.mts-modal-head h3 {
    margin: 0; font-size: 1.35rem; font-weight: 700;
    color: #0f172a; letter-spacing: -0.01em; line-height: 1.2;
}
.mts-modal-close {
    border: 0; background: transparent; cursor: pointer;
    width: 38px; height: 38px;
    display: inline-flex; align-items: center; justify-content: center;
    color: #64748b; border-radius: 999px;
    transition: background 0.18s ease, color 0.18s ease;
}
.mts-modal-close:hover { background: rgba(15,23,42,0.06); color: #0f172a; }
.mts-modal-body { padding: 0.5rem 1.6rem 1.2rem; overflow-y: auto; }
.mts-modal-intro {
    font-size: 0.95rem; color: #475569; line-height: 1.5;
    margin: 0 0 1.1rem;
}
.mts-modal-search {
    width: 100%; box-sizing: border-box;
    padding: 0.8rem 1rem 0.8rem 2.6rem;
    background: #f5f7fa;
    border: 0;
    border-radius: 12px;
    font-size: 0.95rem;
    font-family: inherit;
    color: #0f172a;
    margin-bottom: 1rem;
    transition: background 0.18s ease, box-shadow 0.18s ease;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: 0.85rem center;
    background-size: 18px 18px;
}
.mts-modal-search::placeholder { color: #94a3b8; }
.mts-modal-search:focus {
    outline: none;
    background: #fff;
    box-shadow: 0 0 0 3px var(--mts-c-primary-ring), inset 0 0 0 1.5px var(--mts-c-primary);
}
/* Filialen als Karten-Grid (Bild-Platzhalter + Name + Strasse/Ort) */
.mts-modal-branch-list {
    list-style: none; margin: 0; padding: 0.25rem 0.25rem 0.35rem;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
    gap: 0.9rem;
}
.mts-modal-branch-item {
    border-radius: 16px;
}
.mts-modal-branch-btn {
    width: 100%; height: 100%; text-align: left;
    padding: 0.7rem 0.7rem 0.85rem;
    background: #fff;
    border: 1px solid var(--mts-line, #e5e7eb);
    border-radius: 16px;
    cursor: pointer;
    font-family: inherit;
    transition: box-shadow 0.18s ease, transform 0.14s ease, border-color 0.18s ease;
    display: flex; flex-direction: column; gap: 0.6rem;
}
.mts-modal-branch-btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 28px -12px rgba(15,23,42,0.28);
    border-color: var(--mts-c-primary);
}
.mts-modal-branch-item.is-current .mts-modal-branch-btn {
    background: var(--mts-c-primary-tint);
    border-color: var(--mts-c-primary);
    box-shadow: inset 0 0 0 1.5px var(--mts-c-primary);
}
.mts-modal-branch-item.is-current .mts-modal-branch-btn:hover {
    background: rgba(var(--mts-c-primary-rgb), 0.14);
}
/* Bild-Platzhalter der Filiale (Inline-SVG Store-Pin, kein Emoji) */
.mts-modal-branch-media {
    display: flex; align-items: center; justify-content: center;
    width: 100%; aspect-ratio: 16 / 9;
    border-radius: 11px;
    background: linear-gradient(135deg, #eef2f0 0%, #dde7e2 100%);
    color: var(--mts-c-primary);
    overflow: hidden; flex: 0 0 auto;
}
.mts-modal-branch-media svg { width: 36px; height: 36px; opacity: 0.5; }
.mts-modal-branch-info { display: flex; flex-direction: column; gap: 0.28rem; padding: 0 0.2rem; }
.mts-modal-branch-name {
    display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap;
    font-weight: 700; color: #0f172a;
    font-size: 1.02rem; line-height: 1.28;
    letter-spacing: -0.005em;
}
.mts-modal-branch-street { display: block; font-size: 0.95rem; font-weight: 600; color: #1f2937; line-height: 1.35; }
.mts-modal-branch-city { display: block; font-size: 0.9rem; color: #64748b; line-height: 1.35; }
.mts-modal-branch-primary {
    font-size: 0.65rem;
    padding: 0.2rem 0.55rem;
    background: linear-gradient(135deg, var(--mts-c-primary-soft) 0%, var(--mts-c-primary) 100%);
    color: var(--mts-c-primary-onbg);
    border-radius: 9999px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.mts-modal-branch-active {
    font-size: 0.65rem;
    padding: 0.2rem 0.55rem;
    background: var(--mts-c-primary-dark);
    color: #fff;
    border-radius: 9999px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.mts-modal-branch-addr {
    display: block;
    font-size: 0.88rem;
    color: #64748b;
    margin-top: 0.3rem;
    line-height: 1.4;
}
/* Service-Tags-Container im Modal entfernt (Markup-Edit), CSS bleibt
   als no-op falls altes Markup im Cache irgendwo persistiert. */
.mts-modal-branch-tags { display: none; }
.mts-modal-foot {
    padding: 1rem 1.6rem 1.4rem;
    border: 0;
    background: transparent;
    text-align: right;
}
.mts-modal-allbranches {
    font-size: 0.9rem;
    color: var(--mts-c-primary-dark);
    font-weight: 600;
    text-decoration: none;
    transition: color 0.18s ease;
}
.mts-modal-allbranches:hover { color: var(--mts-c-primary); text-decoration: none; }

/* === Storefront Pages: Filialfinder + Detail (Apple-style polish) ====== */
/* Design tokens, lokal scoped damit der Rest der Storefront-Komponenten
   nicht beeinflusst wird. */
.mts-page {
    --mts-ink:        #0b1220;
    --mts-ink-soft:   #4a5568;
    --mts-ink-muted:  #6b7280;
    --mts-line:       rgba(15, 23, 42, 0.08);
    --mts-line-soft:  rgba(15, 23, 42, 0.04);
    --mts-surface:    #ffffff;
    --mts-surface-2:  #f5f7fa;
    --mts-accent:     var(--mts-c-primary);
    --mts-accent-2:   var(--mts-c-primary-soft);
    --mts-radius-lg:  20px;
    --mts-radius-md:  14px;
    --mts-radius-sm:  10px;
    --mts-shadow-1:   0 1px 2px rgba(15,23,42,0.04), 0 8px 24px -10px rgba(15,23,42,0.10);
    --mts-shadow-2:   0 1px 2px rgba(15,23,42,0.06), 0 24px 60px -22px rgba(15,23,42,0.22);
    max-width: 1200px;
    margin: 2.5rem auto 4rem;
    padding: 0 1.25rem;
    color: var(--mts-ink);
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Inter, system-ui, sans-serif;
    -webkit-font-smoothing: antialiased;
}

/* Hero / Page-Head -------------------------------------------------- */
.mts-page-head {
    margin: 1.5rem 0 2.25rem;
    padding: 2.25rem 2.5rem 2rem;
    border-radius: var(--mts-radius-lg);
    background:
        radial-gradient(ellipse 75% 80% at 12% 0%, rgba(var(--mts-c-primary-soft-rgb),0.14), transparent 60%),
        radial-gradient(ellipse 70% 70% at 100% 0%, rgba(var(--mts-c-primary-rgb),0.10), transparent 65%),
        linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
    border: 1px solid var(--mts-line);
    position: relative;
    overflow: hidden;
}
.mts-page-head::after {
    content: '';
    position: absolute;
    right: -40px;
    top: -40px;
    width: 220px;
    height: 220px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(var(--mts-c-primary-soft-rgb),0.10) 0%, transparent 65%);
    pointer-events: none;
}
.mts-page-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--mts-accent);
    margin: 0 0 0.85rem;
}
.mts-page-eyebrow::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--mts-accent);
    box-shadow: 0 0 0 4px rgba(var(--mts-c-primary-rgb),0.22);
}
.mts-page-title {
    font-size: clamp(2rem, 3.4vw, 2.85rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.1;
    margin: 0 0 0.6rem;
    color: var(--mts-ink);
}
.mts-page-lead {
    font-size: clamp(1rem, 1.2vw, 1.1rem);
    line-height: 1.55;
    color: var(--mts-ink-soft);
    max-width: 60ch;
    margin: 0;
}

/* Filter Bar -------------------------------------------------------- */
.mts-tag-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0 0 2rem;
    padding: 0;
    border: 0;
}
.mts-tag-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.55rem 1.1rem;
    border: 1px solid var(--mts-line);
    border-radius: 9999px;
    background: var(--mts-surface);
    font-size: 0.88rem;
    font-weight: 500;
    color: var(--mts-ink);
    text-decoration: none !important;
    transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.12s ease;
}
.mts-tag-pill:hover {
    background: var(--mts-surface-2);
    border-color: rgba(15,23,42,0.16);
    color: var(--mts-ink);
}
.mts-tag-pill.is-active {
    background: var(--mts-ink);
    border-color: var(--mts-ink);
    color: #fff;
}
.mts-tag-pill.is-active:hover {
    background: #1f2937;
    border-color: #1f2937;
    color: #fff;
}

/* Service-Tag-Chips: farbcodiert pro Service-Typ ------------------- */
.mts-tag-chip {
    display: inline-flex;
    align-items: center;
    padding: 0.22rem 0.65rem;
    background: #eef2f7;
    color: #1f2937;
    font-size: 0.74rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 9999px;
}
/* Sprachneutrale Heuristik per Attribut-Selector — der View liefert den
   Service-Tag-Text direkt, also greifen wir auf den Inhalt indirekt zu via
   class-Toggle wäre sauberer; hier matchen wir den deutschen Standard. */
.mts-tag-chip:where([data-tag="Verkauf"], :is(span:where(:not([data-tag])):where(:where([data-tag])))) { background: #e0f2fe; color: #075985; }
/* Fallback farb-codiert via JS / data-tag — siehe storefront.js (Phase D.2) */
.mts-tag-chip[data-tag="Verkauf"]      { background: #e0f2fe; color: #075985; }
.mts-tag-chip[data-tag="Werkstatt"]    { background: #e6efe9; color: #33544a; }
.mts-tag-chip[data-tag="Leasing"]      { background: #ecfccb; color: #3f6212; }
.mts-tag-chip[data-tag="Versicherung"] { background: #ede9fe; color: #5b21b6; }
.mts-tag-chip[data-tag="Probefahrt"]   { background: #cffafe; color: #155e75; }
.mts-tag-chip[data-tag="Service"]      { background: #ffe4e6; color: #9f1239; }

/* Empty-State ------------------------------------------------------- */
.mts-empty {
    text-align: center;
    padding: 4.5rem 1.5rem;
    color: var(--mts-ink-muted);
    background: var(--mts-surface-2);
    border-radius: var(--mts-radius-lg);
    border: 1px dashed var(--mts-line);
}
.mts-empty svg { color: var(--mts-ink-muted); opacity: 0.6; margin-bottom: 0.85rem; }
.mts-empty h2 { margin: 0 0 0.4rem; color: var(--mts-ink); font-size: 1.25rem; font-weight: 600; }
.mts-empty p { margin: 0; }

/* Branch Cards ------------------------------------------------------ */
.mts-branch-grid {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
    gap: 1.5rem;
    align-items: stretch;
}
.mts-branch-card {
    position: relative;
    background: var(--mts-surface);
    border: 1px solid var(--mts-line);
    border-radius: var(--mts-radius-lg);
    box-shadow: var(--mts-shadow-1);
    display: flex;
    flex-direction: column;
    padding: 1.75rem 1.75rem 1.5rem;
    overflow: hidden;
    transition: transform 0.22s cubic-bezier(.4,0,.2,1), box-shadow 0.22s cubic-bezier(.4,0,.2,1), border-color 0.22s;
}
.mts-branch-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--mts-shadow-2);
    border-color: rgba(15,23,42,0.12);
}
.mts-branch-card.is-current {
    border-color: var(--mts-accent);
    box-shadow: 0 0 0 1px var(--mts-accent), var(--mts-shadow-2);
}
.mts-branch-card.is-current::before {
    content: '';
    position: absolute;
    inset: 0 0 auto 0;
    height: 4px;
    background: linear-gradient(90deg, var(--mts-accent), var(--mts-accent-2));
    z-index: 1;
}
/* Stretched-Link-Pattern: Title-Link spannt sich unsichtbar ueber die ganze Card.
   Inline-Links (Phone/Email/Details) bleiben darueber klickbar via z-index. */
.mts-branch-card-title-link {
    color: inherit;
    text-decoration: none !important;
}
.mts-branch-card-title-link::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
}
.mts-branch-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.85rem;
    margin-bottom: 0.35rem;
}
.mts-branch-card-name {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: -0.01em;
    color: var(--mts-ink);
    flex: 1;
    min-width: 0;
    text-wrap: balance;
}
.mts-branch-card-name a { color: inherit; text-decoration: none !important; }
.mts-branch-card:hover .mts-branch-card-name a { color: var(--mts-accent); }
.mts-branch-card-badges {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.3rem;
    flex-shrink: 0;
}
.mts-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.28rem 0.65rem;
    font-size: 0.66rem;
    font-weight: 700;
    border-radius: 9999px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    white-space: nowrap;
}
.mts-badge-primary  { background: var(--mts-c-badge-primary-bg); color: var(--mts-c-badge-primary-fg); }
.mts-badge-current  { background: var(--mts-accent); color: #fff; }
.mts-badge-distance { background: #eef2ff; color: #3730a3; }

.mts-branch-card-address {
    font-style: normal;
    margin: 1rem 0 0;
    color: var(--mts-ink-soft);
    font-size: 0.92rem;
    line-height: 1.5;
    padding-left: 1.5rem;
    background-repeat: no-repeat;
    background-position: 0 0.18rem;
    background-size: 1rem 1rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}

.mts-branch-card-meta {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    margin: 1.25rem 0 0;
    padding-top: 1.25rem;
    border-top: 1px solid var(--mts-line-soft);
    font-size: 0.92rem;
    position: relative;
}
.mts-branch-card-meta::before {
    content: 'Kontakt';
    position: absolute;
    top: -0.5rem;
    left: 0;
    background: var(--mts-surface);
    padding: 0 0.5rem 0 0;
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--mts-ink-muted);
}
.mts-branch-card-meta dt { display: none; }
.mts-branch-card-meta dd {
    margin: 0;
    padding-left: 1.7rem;
    background-repeat: no-repeat;
    background-position: 0 50%;
    background-size: 1rem 1rem;
    line-height: 1.4;
}
.mts-branch-card-meta dt:has(+ dd:first-of-type) + dd,
.mts-branch-card-meta dd:nth-of-type(1) {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
}
.mts-branch-card-meta dd:nth-of-type(2) {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'/%3E%3Cpolyline points='22,6 12,13 2,6'/%3E%3C/svg%3E");
}
.mts-branch-card-meta a {
    color: var(--mts-ink);
    text-decoration: none;
    font-weight: 500;
    transition: color 0.15s;
    position: relative;
    z-index: 2;
}
.mts-branch-card-meta a:hover { color: var(--mts-accent); }

.mts-branch-card-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 1.25rem 0 0;
    padding-top: 1.25rem;
    border-top: 1px solid var(--mts-line-soft);
    position: relative;
}
.mts-branch-card-tags::before {
    content: 'Vor Ort';
    position: absolute;
    top: -0.5rem;
    left: 0;
    background: var(--mts-surface);
    padding: 0 0.5rem 0 0;
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--mts-ink-muted);
}

.mts-branch-card-actions {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin: auto 0 0;
    padding-top: 1.5rem;
    background: transparent;
    border-top: 0;
    position: relative;
    z-index: 2;
}

/* Buttons ---------------------------------------------------------- */
.mts-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.7rem 1.1rem;
    font-size: 0.88rem;
    font-weight: 600;
    border-radius: 9999px;
    cursor: pointer;
    border: 1px solid transparent;
    transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.12s ease;
    text-decoration: none !important;
    line-height: 1.15;
    font-family: inherit;
    white-space: nowrap;
}
.mts-btn:active { transform: scale(0.98); }
.mts-btn-primary {
    background: linear-gradient(135deg, var(--mts-c-primary-soft) 0%, var(--mts-c-primary) 100%);
    color: var(--mts-c-primary-onbg);
    border-color: transparent;
    box-shadow: 0 1px 2px rgba(var(--mts-c-primary-rgb),0.18), 0 4px 14px rgba(var(--mts-c-primary-rgb),0.26);
    flex: 1 1 auto;
    min-width: 0;
    letter-spacing: 0.01em;
}
.mts-btn-primary:hover {
    background: linear-gradient(135deg, var(--mts-c-primary-soft-2) 0%, var(--mts-c-primary-dark) 100%);
    border-color: transparent;
    color: var(--mts-c-primary-onbg);
    box-shadow: 0 4px 14px rgba(var(--mts-c-primary-rgb),0.32), 0 8px 22px rgba(var(--mts-c-primary-rgb),0.22);
    transform: translateY(-1px);
}
.mts-btn-current {
    background: var(--mts-c-primary-tint);
    color: var(--mts-c-primary-dark);
    border-color: var(--mts-c-primary-ring);
    cursor: default;
    flex: 1 1 auto;
    min-width: 0;
}
.mts-btn-ghost {
    background: transparent;
    color: var(--mts-ink-soft);
    border-color: var(--mts-line);
    flex: 0 0 auto;
    padding: 0.7rem 1rem;
}
.mts-btn-ghost:hover {
    background: var(--mts-surface-2);
    border-color: rgba(15,23,42,0.15);
    color: var(--mts-ink);
}

/* --- Detail-Page ------------------------------------------------------ */
.mts-breadcrumb {
    display: flex;
    gap: 0.5rem;
    font-size: 0.85rem;
    color: var(--mts-ink-muted);
    margin: 0 0 1.5rem;
    padding: 0;
}
.mts-breadcrumb a { color: var(--mts-ink-muted); text-decoration: none; transition: color 0.15s; }
.mts-breadcrumb a:hover { color: var(--mts-accent); }
.mts-bc-sep { opacity: 0.4; }

.mts-detail-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
}
.mts-detail-badges { margin-top: 0.6rem; display: flex; gap: 0.4rem; }

.mts-detail-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
}
.mts-detail-card {
    background: var(--mts-surface);
    border: 1px solid var(--mts-line);
    border-radius: var(--mts-radius-lg);
    padding: 1.75rem 1.85rem;
    box-shadow: var(--mts-shadow-1);
    transition: box-shadow 0.22s ease, transform 0.22s ease;
}
.mts-detail-card:hover { box-shadow: var(--mts-shadow-2); transform: translateY(-2px); }
.mts-detail-card h2 {
    font-size: 0.78rem;
    font-weight: 700;
    margin: 0 0 1.1rem;
    color: var(--mts-ink-muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    border: 0;
    padding: 0;
}
.mts-detail-card address {
    font-style: normal;
    margin: 0 0 0.85rem;
    line-height: 1.55;
    font-size: 0.98rem;
    color: var(--mts-ink);
}
.mts-detail-card address strong { font-weight: 600; }
.mts-detail-card p { margin: 0.45rem 0; font-size: 0.95rem; color: var(--mts-ink); }
.mts-detail-card p a { color: var(--mts-ink); text-decoration: none; font-weight: 500; transition: color 0.15s; }
.mts-detail-card p a:hover { color: var(--mts-accent); }
.mts-detail-label { color: var(--mts-ink-muted); margin-right: 0.45rem; font-size: 0.85rem; }

.mts-hours-table { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
.mts-hours-table th, .mts-hours-table td {
    padding: 0.6rem 0.4rem;
    text-align: left;
    border-bottom: 1px solid var(--mts-line-soft);
    font-weight: 400;
    color: var(--mts-ink);
}
.mts-hours-table th { color: var(--mts-ink-soft); }
.mts-hours-table tr:last-child th, .mts-hours-table tr:last-child td { border-bottom: 0; }
.mts-hours-table tr.is-today {
    background: linear-gradient(90deg, var(--mts-c-primary-tint), transparent);
    border-radius: var(--mts-radius-sm);
}
.mts-hours-table tr.is-today th, .mts-hours-table tr.is-today td { font-weight: 700; color: var(--mts-accent); }
.mts-hours-closed { color: var(--mts-ink-muted); font-style: italic; }
.mts-tag-cloud { display: flex; flex-wrap: wrap; gap: 0.4rem; }

@media (max-width: 720px) {
    .mts-page { margin: 1.5rem auto 3rem; padding: 0 0.75rem; }
    .mts-page-head { padding: 1.75rem 1.5rem 1.5rem; margin: 0.75rem 0 1.5rem; }
    .mts-branch-grid { grid-template-columns: 1fr; gap: 1rem; }
    .mts-branch-card-link { padding: 1.5rem 1.25rem 1rem; }
    .mts-branch-card-actions { padding: 1rem 1.25rem 1.25rem; flex-wrap: wrap; }
    .mts-branch-card-actions .mts-btn-ghost { margin-left: 0; flex: 1; }
    .mts-detail-head { flex-direction: column; align-items: flex-start; }
    .mts-modal-card { max-height: 92vh; }
}

/* --- Color-Swatch als Kreis (Phase 6, 2026-05-11) ---------------------
   Smartstore-Default rendert PVAV.Color als eckiges ".choice-box-element"
   mit Border (border-radius-md + 1px solid). Wir wollen einen randlosen
   Kreis im Apple-Style. Scope: NUR Color-Boxes (die haben inline
   background-color), Size-Boxes (Text-Pills) bleiben rechteckig.
   --------------------------------------------------------------------- */
.choice-box-element[style*="background-color"] {
    border-radius: 50% !important;
    border: 0 !important;
    /* Dezenter Innenring statt none: helle/weisse Lack-Swatches (bild-
       abgeleitete PVAV.Color, TASK-444) bleiben auf Weiss sichtbar. */
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.18) !important;
    width: 28px !important;
    min-width: 28px !important;
    height: 28px !important;
    line-height: 28px !important;
    padding: 0 !important;
    display: inline-block;
    vertical-align: middle;
    overflow: hidden;
    transition: transform 0.18s cubic-bezier(.22,.61,.36,1), box-shadow 0.18s ease;
}

/* Wrapper randlos + tap-target ~44x44 (Padding 8px um den 28px-Kreis).
   :has() wird von allen modernen Browsern unterstuetzt (Chrome 105+,
   Safari 15.4+, Firefox 121+). Aelterer Browser sieht den Kreis mit
   alter Wrapper-Border - akzeptabler Fallback, fault tolerant. */
.choice-box-content:has(> .choice-box-element[style*="background-color"]),
.choice-box:has(.choice-box-element[style*="background-color"]) .choice-box-label,
.choice-box:has(.choice-box-element[style*="background-color"]) .choice-box-content {
    border: 0 !important;
    background: transparent !important;
    padding: 6px !important;
    border-radius: 50% !important;
    box-shadow: none !important;
    line-height: 1 !important;
}

.choice-box:has(.choice-box-element[style*="background-color"]) {
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

/* Smartstore-Default-Selected-State (.choice-box-control-native:checked + ...)
   ueberschreiben - kein gray-700-Border, kein inset-2px-white, kein heller
   Outer-Ring. Apple-Watch-Style: enger schwarzer Ring direkt am Kreis. */
.choice-box-control-native:checked + .choice-box-label .choice-box-element[style*="background-color"],
.choice-box-control-native:checked + .choice-box-content .choice-box-element[style*="background-color"],
.choice-box.selected:has(.choice-box-element[style*="background-color"]) .choice-box-element {
    box-shadow: 0 0 0 2px #000, inset 0 0 0 1px rgba(15, 23, 42, 0.18) !important;
}

/* Hover (nicht-selected): leichter Lift. */
.choice-box:has(.choice-box-element[style*="background-color"]):not(.selected):hover .choice-box-element {
    transform: scale(1.10);
}

/* Unavailable: ausgegraut + Strike (Smartstore-Default-Strike via `&:after`
   passt nicht zum Kreis - wir nutzen statt dessen Opacity + grayscale). */
.choice-box.unavailable:has(.choice-box-element[style*="background-color"]) .choice-box-element {
    filter: grayscale(0.85);
    opacity: 0.55;
}
.choice-box.unavailable:has(.choice-box-element[style*="background-color"]) .choice-box-element::after {
    display: none !important;
}

/* ====================================================================
   TASK-294-FE (2026-06-14): Breadcrumb-Overlap-Fix + PDP-Galerie-
   Doppelbild-Fix (Slick-FOUC) + Sidebar-Modernisierung.
   Append-only Override-Block (hoechste Cascade-Prio); reversibel durch
   Entfernen dieses Blocks. Live-diagnostiziert per DOM-Messung/Screenshot.
   ==================================================================== */

/* --- 1) Breadcrumb nicht vom Galerie-/Content-Block ueberlappen ---
   Live gemessen: .breadcrumb-container hatte effektiv margin-bottom:0
   (Bootstrap mb-4 ueberschrieben), das nachfolgende Galerie-Element
   startete ~8px zu hoch und kappte die Unterlaengen (g/p/y). Fix:
   echter Abstand + eigener Stacking-Context (Kategorien ueber dem Bild). */
.breadcrumb-container {
    margin-bottom: 1.25rem !important;
    position: relative;
    z-index: 5;
    overflow: visible;
}
.breadcrumb-container .breadcrumb { overflow: visible; margin-bottom: 0; }
.breadcrumb-container .breadcrumb-item,
.breadcrumb-container .breadcrumb-item > * { line-height: 1.5; }

/* --- 2) PDP-Galerie: Produktbild nicht doppelt (Slick-FOUC) ---
   Die Galerie ist ein Slick-Karussell (.gal in .gal-cell). Vor der Slick-
   Initialisierung stapeln sich die Bild-Slides untereinander; zusaetzlich
   bleiben die Original-Quell-Items (ohne .slick-slide) bei 0x0 stehen.
   Beides defensiv ausblenden -> immer genau EIN Hauptbild + Dots. */
.pd-data-col .gal:not(.slick-initialized) .gal-item:not(:first-child) { display: none !important; }
.pd-data-col .gal-cell .gal-item:not(.slick-slide) { display: none !important; }
.pd-data-col .gal .slick-list { overflow: hidden !important; }

/* --- 3) Listing-Filter/Sortier-Buttons: keine schwarzen Flaechen ---
   "Filtern & Sortieren" + "Ergebnisse pro Seite" waren --mts-ink (fast
   schwarz). Auf cleanes, helles Outline-Styling umstellen. Scope strikt
   auf die Listing-Action-Bar + Filter-Offcanvas - der Warenkorb-CTA
   (eigene Klasse) bleibt unberuehrt. */
.artlist-action-group .btn,
.artlist-actions .btn-secondary,
.artlist-actions .dropdown-toggle,
.artlist-action--filter .btn,
.faceted-search .btn-primary,
.faceted-search .btn-secondary,
.faceted-search-offcanvas .btn-primary,
.offcanvas-lg .facet-offcanvas-actions .btn {
    background: var(--mts-surface, #fff) !important;
    color: var(--mts-ink, #0b1220) !important;
    border: 1px solid var(--mts-line, rgba(15,23,42,0.12)) !important;
    border-radius: 10px !important;
    box-shadow: none !important;
    font-weight: 500 !important;
}
.artlist-action-group .btn:hover,
.artlist-actions .btn-secondary:hover,
.artlist-actions .dropdown-toggle:hover,
.artlist-action--filter .btn:hover,
.faceted-search .btn-primary:hover,
.faceted-search .btn-secondary:hover,
.offcanvas-lg .facet-offcanvas-actions .btn:hover {
    background: var(--mts-surface-2, #f5f5f7) !important;
    border-color: rgba(15,23,42,0.2) !important;
    color: var(--mts-ink, #0b1220) !important;
}

/* --- 4) Facet-Gruppen: ruhigere, modernere Optik (schlicht/professionell) --- */
.faceted-search .facet-group {
    border: 0 !important;
    border-top: 1px solid var(--mts-line, rgba(15,23,42,0.08)) !important;
    margin: 0 !important;
}
.faceted-search .facet-group:first-child { border-top: 0 !important; }
.faceted-search .facet-group-header,
.faceted-search .facet-group-header .facet-toggle {
    padding: 0.85rem 0 !important;
    font-weight: 600 !important;
    letter-spacing: -0.01em !important;
    color: var(--mts-ink, #0b1220) !important;
}
.faceted-search .facet-body { padding: 0 0 0.7rem 0 !important; }
.faceted-search .facet-control-label { color: var(--mts-ink-soft, #4a5568) !important; }
/* Preis-"Los"-Button (rund, Akzent) etwas dezenter, aber sichtbar */
.faceted-search .facet-range-container .btn { border-radius: 9999px !important; }

/* --- 5) Listing-Toolbar + Pagination: keine fast-schwarzen Flaechen ---
   "Ergebnisse pro Seite"-Dropdown, Grid/Sort-Icon-Buttons (btn-artlist-actions)
   waren --mts-ink (#1d1d1f). Auf cleanes helles Outline-Styling. */
.btn-artlist-actions,
.btn.btn-secondary.dropdown-toggle,
.art-actions .btn-secondary,
.artlist-actions .btn-secondary {
    background: var(--mts-surface, #fff) !important;
    color: var(--mts-ink, #0b1220) !important;
    border: 1px solid var(--mts-line, rgba(15,23,42,0.14)) !important;
    box-shadow: none !important;
}
.btn-artlist-actions:hover,
.btn.btn-secondary.dropdown-toggle:hover,
.art-actions .btn-secondary:hover,
.artlist-actions .btn-secondary:hover {
    background: var(--mts-surface-2, #f5f5f7) !important;
    border-color: rgba(15,23,42,0.22) !important;
    color: var(--mts-ink, #0b1220) !important;
}
/* Pagination aktive Seite: Akzent statt Schwarz */
.pagination .page-item.active .page-link,
.pagination .active > .page-link,
.page-link.active {
    background: var(--mts-accent) !important;
    border-color: var(--mts-accent) !important;
    color: #fff !important;
}

/* --- 6) Breadcrumb-Abstand robust (hoehere Spezifitaet gegen Theme mb:0) ---
   Ergaenzt den z-index-Lift (Punkt 1): echter Abstand unter der Breadcrumb,
   damit die Galerie sie gar nicht erst beruehrt. */
body .product-details-page .breadcrumb-container,
body .product-details .breadcrumb-container,
body .breadcrumb-container {
    margin-bottom: 1.25rem !important;
}

/* --- 7) Click&Collect: Versand/Abholung-Choice-Widget (C&C-Umbau 2026-06-14) ---
   Bewusste, gleichwertige Wahl statt aktivieren/deaktivieren-Toggle. Segmented
   Control + inline Abhol-Block (Filiale + Standort/PLZ-Lookup). Nutzt die
   bestehenden --mts-Tokens; generisch (keine filial-spezifischen Werte). */
.mts-fulfillment { margin: 0 0 1rem; }
.mts-fulfillment--offcanvas { margin: 0.6rem 0; }
.mts-fulfillment-seg {
    display: grid; grid-template-columns: 1fr 1fr; gap: 6px;
    background: var(--mts-surface-2, #f1f1f4); padding: 5px; border-radius: 14px;
}
.mts-fulfillment-opt {
    display: flex; align-items: center; justify-content: center; gap: 0.5rem;
    padding: 0.7rem 0.6rem; border: 1px solid transparent; border-radius: 10px;
    background: transparent; color: var(--mts-ink-soft, #4a5568);
    font-size: 0.92rem; font-weight: 600; cursor: pointer;
    transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
}
.mts-fulfillment-opt:hover { color: var(--mts-ink, #0b1220); }
.mts-fulfillment-opt.is-selected {
    background: var(--mts-surface, #fff); color: var(--mts-ink, #0b1220);
    box-shadow: 0 1px 3px rgba(15,23,42,0.12); border-color: rgba(15,23,42,0.06);
}
.mts-fulfillment-opt-icon { display: inline-flex; }
.mts-fulfillment-pickup {
    margin-top: 0.85rem; padding-top: 0.85rem;
    border-top: 1px solid var(--mts-line, rgba(15,23,42,0.1)); display: grid; gap: 0.7rem;
}
.mts-fulfillment-pickup[hidden] { display: none; }
.mts-fulfillment-branch {
    display: flex; align-items: center; justify-content: center; gap: 0.6rem; padding: 0.25rem 0;
    background: transparent; border-radius: 0;
}
.mts-fulfillment-branch-icon { display: none !important; }
/* Checkout-Pickup-Hint: SVG-Icon neben dem Hinweistext ausblenden (Confirm-Seite) */
.mts-checkout-pickup-hint-icon { display: none !important; }
.mts-fulfillment-branch-text { display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 0; text-align: center; }
.mts-fulfillment-branch-name { font-weight: 600; color: var(--mts-ink, #0b1220); }
.mts-fulfillment-branch-addr { font-size: 0.83rem; color: var(--mts-ink-muted, #6b7280); }
.mts-fulfillment-branch-distance { font-size: 0.83rem; color: var(--mts-accent); font-weight: 600; }
.mts-fulfillment-locate { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.mts-fulfillment-locate-btn {
    display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.55rem 0.85rem;
    border: 1px solid var(--mts-line, rgba(15,23,42,0.14)); border-radius: 9999px;
    background: var(--mts-surface, #fff); color: var(--mts-ink, #0b1220);
    font-size: 0.85rem; font-weight: 500; cursor: pointer; transition: background 0.15s;
}
.mts-fulfillment-locate-btn:hover { background: var(--mts-surface-2, #f1f1f4); }
.mts-fulfillment-locate-or {
    display: inline-flex; align-items: center; flex: 1; min-width: 160px;
    border: 1px solid var(--mts-line, rgba(15,23,42,0.14)); border-radius: 9999px;
    overflow: hidden; background: var(--mts-surface, #fff);
}
.mts-fulfillment-locate-input { flex: 1; min-width: 0; border: 0; outline: 0; padding: 0.55rem 0.85rem; font-size: 0.85rem; background: transparent; color: var(--mts-ink, #0b1220); }
.mts-fulfillment-locate-go { display: inline-flex; align-items: center; justify-content: center; width: 38px; border: 0; background: transparent; color: var(--mts-ink-muted, #6b7280); cursor: pointer; }
.mts-fulfillment-locate-go:hover { color: var(--mts-accent); }
.mts-fulfillment-locate-status { width: 100%; margin: 0; font-size: 0.82rem; color: var(--mts-ink-muted, #6b7280); }
.mts-fulfillment-otherbranch { display: block; text-align: center; font-size: 0.85rem; color: var(--mts-accent); text-decoration: none; font-weight: 500; }
.mts-fulfillment-otherbranch:hover { text-decoration: underline; }
.mts-fulfillment-pickup-note { margin: 0; font-size: 0.82rem; color: var(--mts-ink-muted, #6b7280); }

/* ----------------------------------------------------------------------------
   TASK-249 - Verfuegbarkeits-Chip auf den nativen Smartstore-Produktkarten
   (Zone productbox_add_info). Dezenter Pill mit Inline-SVG-Icon + Label.
   Drei Zustaende (in/low/out) konsistent zu den Reserve-Drawer-Farb-Tokens.
   --------------------------------------------------------------------------- */
.mts-listing-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-top: 0.4rem;
    padding: 0.15rem 0.5rem;
    border-radius: 9999px;
    border: 1px solid transparent;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    vertical-align: middle;
}
.mts-listing-chip-icon { display: inline-flex; flex: 0 0 auto; }
.mts-listing-chip-icon svg { display: block; }
.mts-listing-chip-label { white-space: nowrap; }

.mts-listing-chip.mts-state-in {
    color: var(--mts-c-success, #16a34a);
    background: rgba(22, 163, 74, 0.10);
    border-color: rgba(22, 163, 74, 0.22);
}
.mts-listing-chip.mts-state-low {
    color: var(--mts-c-warning, #d97706);
    background: rgba(217, 119, 6, 0.10);
    border-color: rgba(217, 119, 6, 0.24);
}
.mts-listing-chip.mts-state-out {
    color: var(--mts-c-danger, #dc2626);
    background: rgba(220, 38, 38, 0.09);
    border-color: rgba(220, 38, 38, 0.22);
}

/* ============================================================================
   PDP-Design-Fixes (2026-07-05) - Produktdetailseite store.movetoshop.de.
   Override-Layer: laedt NACH dem Base-Overlay (DB-Topic MtsThemeGlobal) und
   nach der PDP-Widget-CSS (pdp-countdown.html). Alle Regeln additiv + scoped,
   damit Listing/Cart/andere Seiten unberuehrt bleiben.
   ============================================================================ */

/* --- Fix 1 (rev3): Preis WIEDER ZENTRIERT + Deal rechts daneben -----------
   Regression aus rev2: der `order`-Flex hatte .pd-finalprice an den Zeilenstart
   (links) gezogen (Preis-cx 961 statt Block-Mitte 1152). Ziel: Preis wieder
   mittig (wie die "Zuletzt niedrigster Preis"-Zeile darunter), Deal-Badge rechts
   daneben, OHNE den Preis aus der Mitte zu schieben.
   Technik = Balanced-Flex: ein leerer ::before-Spacer (flex:1) links und die
   .pd-promobadges-Zelle (flex:1) rechts wachsen gleich stark -> der Preis
   (flex:0 0 auto) steht mathematisch zentriert, unabhaengig von der Badge-
   Breite. Das Badge sitzt am Start seiner (rechten) Zelle, also direkt rechts
   vom Preis; sein margin-left liegt INNEN in der Zelle und stoert die Balance
   nicht. Restgruppe (Zuletzt-niedrigster-Preis) via flex-basis:100% neue Zeile.
   <meta>-Kinder sind display:none -> keine Flex-Items. */
body.mts-pdp .pd-price-group {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: center !important;
    column-gap: 0 !important;
    row-gap: 2px !important;
}
body.mts-pdp .pd-price-group::before {
    content: "" !important;
    order: 1 !important;
    flex: 1 1 0 !important;
    min-width: 0 !important;
}
body.mts-pdp .pd-price-group .pd-finalprice {
    order: 2 !important;
    flex: 0 0 auto !important;
}
body.mts-pdp .pd-price-group .pd-promobadges {
    order: 3 !important;
    flex: 1 1 0 !important;
    min-width: 0 !important;
    margin: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
}
body.mts-pdp .pd-price-group .pd-promoprice-group {
    order: 4 !important;
    flex-basis: 100% !important;
    margin-top: 2px !important;
}
.pd-promobadges .badge,
.pd-promobadges .badge-dark {
    display: inline-flex !important;
    align-items: center !important;
    margin-left: 10px !important;
    font-size: 0.9rem !important;
    line-height: 1 !important;
    font-weight: 600 !important;
    letter-spacing: 0.02em !important;
    padding: 4px 13px 5px !important;
    border-radius: 999px !important;
    background: var(--mts-c-primary) !important;
    color: #fff !important;
    vertical-align: middle !important;
    height: auto !important;
    min-height: 0 !important;
}

/* --- Fix 2 (rev2): Add-to-Cart-Button - SOLID #5f8175 + weisser Text -------
   Live-Button: button.btn.btn-primary.btn-lg.btn-block.btn-add-to-cart.
   (a) HINTERGRUND: computed war ein gruener VERLAUF
       linear-gradient(135deg,#7d9c92,#5f8175) - kommt aus der .btn-add-to-cart-
       Regel der Stage-B-Overlays (layout-styles.html/apple-style.css), Stops
       ueber --mts-cta-grad-from/-to (auf gruen umdefiniert), Spezifitaet 0/2/2
       !important. Gefiel dem Nutzer nicht. Ersatz: SOLID #5f8175 (dunkleres
       Marken-Gruen, hebt sich staerker gegen die weisse Seite ab, besserer
       Weiss-Kontrast ~3.4:1). background-image explizit auf none. Hover etwas
       dunkler (#4f6d62). Direkt-Selektor 0/4/2 schlaegt die 0/2/2-Verlaufsregel.
   (b) TEXT weiss: die Schwarz-Schrift kam aus demselben Overlay via
       .btn-add-to-cart{ color:var(--mts-cta-text)!important } (0/2/2) mit
       :root{--mts-cta-text:#1a1a1a}. Fix: --mts-cta-text im Buybox-Container
       auf #fff umdefinieren (0/2/1 !important > :root 0/0/0; deckt Base+Hover;
       Disabled #777 bleibt) + direkte 0/4/2-Farbregel als Sicherung. */
body.mts-pdp .pd-offer-actions-container,
body.mts-pdp .pd-offer-actions {
    --mts-cta-text: #fff !important;
}
body.mts-pdp .pd-offer-actions-container .pd-offer-actions button.btn-add-to-cart,
body.mts-pdp .pd-offer-actions-container .pd-offer-actions a.btn-add-to-cart {
    background: var(--mts-c-primary) !important;
    background-image: none !important;
    background-color: var(--mts-c-primary) !important;
    color: #fff !important;
    border: 0 !important;
    box-shadow: 0 4px 16px rgba(var(--mts-c-primary-shadow-rgb), 0.30) !important;
}
body.mts-pdp .pd-offer-actions-container .pd-offer-actions button.btn-add-to-cart:not([disabled]):hover,
body.mts-pdp .pd-offer-actions-container .pd-offer-actions a.btn-add-to-cart:not([disabled]):hover {
    background: var(--mts-c-primary-hover) !important;
    background-image: none !important;
    background-color: var(--mts-c-primary-hover) !important;
    box-shadow: 0 6px 22px rgba(var(--mts-c-primary-shadow-rgb), 0.42) !important;
}
body.mts-pdp .pd-offer-actions-container .pd-offer-actions button.btn-add-to-cart span,
body.mts-pdp .pd-offer-actions-container .pd-offer-actions button.btn-add-to-cart i {
    color: #fff !important;
}

/* --- Fix 3 (rev2): Galerie-Pfeile - dezente graue Affordanz statt weg -----
   Am vertikalen Thumbnail-Strip existieren ZWEI funktionale Pfeil-Familien
   (beide scrollen den Strip, live per Klick-Test verifiziert):
   (A) NATIV (Smartstore-Core-Smartgallery): btn.btn-secondary.btn-no-border.
       btn-icon.rounded-circle.btn-sm.gal-arrow.gal-prev|gal-next + fa-chevron.
       Das sind die PROMINENTEN (Kreis-)Buttons, die der Nutzer nicht wollte.
       Klick scrollt ~Seite (778px-Sprung). -> AUSBLENDEN.
   (B) MTS-EIGEN (pdp-countdown.html v6): .mts-gal-arrow-up/-down (SVG-Chevron,
       transparenter BG). Klick scrollt exakt 1 Thumbnail (142px), fein.
       -> WIEDER EINBLENDEN, aber DEZENT hellgrau + als absolute Overlays,
       damit sie KEINEN Platz reservieren (Thumbs bleiben unverschoben; im
       .mts-gal-stack-Flow wuerden 2x ~22px die Thumbs verschieben).
   Beide liegen im .gal-nav-cell (Thumb-Strip), nicht im .gal-cell (Hauptbild). */
/* (A) native prominente Pfeile -> aus */
.pd-data-col .gal-nav-cell .gal-arrow,
.pd-data-col .gal-nav-cell .gal-prev,
.pd-data-col .gal-nav-cell .gal-next,
.pd-data-col .gal-arrow,
.pd-data-col .gal-next,
.pd-data-col .gal-prev {
    display: none !important;
}
/* (B) MTS-Pfeile: Stack als Anker fuer die absolute Positionierung */
body.mts-pdp .pd-data-col .mts-gal-stack {
    position: relative !important;
}
/* MTS-Pfeile sichtbar, dezent hellgrau, als Overlay ueber Strip-Rand
   (out of flow -> kein reservierter Platz -> kein Thumbnail-Versatz) */
body.mts-pdp .pd-data-col .mts-gal-arrow-up,
body.mts-pdp .pd-data-col .mts-gal-arrow-down {
    display: flex !important;
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    width: auto !important;
    height: 18px !important;
    margin: 0 !important;
    padding: 0 !important;
    z-index: 4 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    color: #c4c4c4 !important;
    opacity: 0.85 !important;
    cursor: pointer !important;
    pointer-events: auto !important;
    transition: color 0.15s ease, opacity 0.15s ease !important;
}
body.mts-pdp .pd-data-col .mts-gal-arrow-up { top: -6px !important; bottom: auto !important; }
body.mts-pdp .pd-data-col .mts-gal-arrow-down { bottom: -6px !important; top: auto !important; }
body.mts-pdp .pd-data-col .mts-gal-arrow-up:not([disabled]):hover,
body.mts-pdp .pd-data-col .mts-gal-arrow-down:not([disabled]):hover {
    color: #8a8a8a !important;
    opacity: 1 !important;
}
body.mts-pdp .pd-data-col .mts-gal-arrow-up[disabled],
body.mts-pdp .pd-data-col .mts-gal-arrow-down[disabled] {
    opacity: 0.22 !important;
    cursor: default !important;
}
body.mts-pdp .pd-data-col .mts-gal-arrow-up svg,
body.mts-pdp .pd-data-col .mts-gal-arrow-down svg {
    width: 15px !important;
    height: 15px !important;
}

/* --- Fix 4 (rev4): oberes Review-Summary "erste Bewertung" ausblenden ------
   REVERT rev3: Die native Aktionsreihe "Merken / Fragen? / Weitersagen"
   (.pd-actions-container / .pd-actions / .pd-action-item) wurde in rev3
   FAELSCHLICH komplett ausgeblendet. Die display:none-Regel ist ENTFERNT ->
   die drei Aktionen (.action-add-to-wishlist / .action-ask-question /
   .action-bullhorn) sind wieder sichtbar.
   STATTDESSEN: das OBERE Review-Summary neben dem Produkttitel/Rating weg.
   Auf der PDP existieren ZWEI "Geben Sie die erste Bewertung ab"-Elemente:
   (a) OBEN, im .pd-section-top (Klasse admin-actions-container), neben dem
       Titel/Rating: div.pd-review-summary.pd-group > div.pd-review-link.link-dnu
       > a.link-dnu[href^="/product/reviews/"]. -> DIESES ausblenden.
   (b) UNTEN im Bewertungen-Tab (#pd-tabs-2 in section.pd-section-bottom):
       a.btn.btn-warning[href^="/product/reviews/"] -> bleibt (Fix 5, gruen).
   Nur den oberen Summary-Container ausblenden, streng auf .pd-section-top
   gescoped, damit der untere gruene Button (.pd-section-bottom) unberuehrt
   bleibt. */
body.mts-pdp .pd-section-top .pd-review-summary {
    display: none !important;
}

/* --- Fix 5 (rev3): Review-CTA "erste Bewertung" gruen statt orange --------
   Button im Bewertungen-Tab (section.pd-section-bottom > #pd-tabs) ist
   a.btn.btn-warning (Bootstrap-Orange #ee9b00). Recolor auf Marken-Gruen
   #5f8175 (wie Add-to-Cart), weisser Text, dunklerer Hover. Scope auf die
   PDP-Tab-Section, damit nicht globale .btn-warning betroffen sind. */
body.mts-pdp .pd-tabs .btn-warning,
body.mts-pdp .pd-section-bottom .btn-warning {
    background: var(--mts-c-primary) !important;
    background-image: none !important;
    background-color: var(--mts-c-primary) !important;
    border-color: var(--mts-c-primary) !important;
    color: #fff !important;
}
body.mts-pdp .pd-tabs .btn-warning:hover,
body.mts-pdp .pd-tabs .btn-warning:focus,
body.mts-pdp .pd-section-bottom .btn-warning:hover,
body.mts-pdp .pd-section-bottom .btn-warning:focus {
    background: var(--mts-c-primary-hover) !important;
    background-color: var(--mts-c-primary-hover) !important;
    border-color: var(--mts-c-primary-hover) !important;
    color: #fff !important;
}

/* --- Fix 6 (rev3): "Zuletzt angesehen"-Karten gleich hoch -----------------
   Recently-Viewed-Grid (.recently-viewed-product-grid, .mts-pcard-Karten).
   Karten-Hoehe variiert, weil Titel a.art-name-link mal 2, mal 3 Zeilen haben
   (line-height 1.35 = ~22.36px). Das bestehende mts-pcard-System setzt jedoch
   mit !important-Regeln HOEHERER Spezifitaet:
     - .artlist:not(.artlist-lines) .art .art-name-link { min-height:2.7em }  (0/4/0, 2 Zeilen)
     - .art.mts-pcard .mts-pcard__name a { -webkit-line-clamp:unset }          (0/3/1, kein Clamp)
   Daher reservieren Titel nur 2 Zeilen und ein 3-Zeilen-Titel macht seine
   Karte hoeher (434 vs 414). Fix: Titel IMMER 3 Zeilen reservieren
   (min-height 3x1.35em) und auf 3 klemmen. Selektor mit der vollen
   mts-pcard-Kette + recently-viewed-Scope => Spezifitaet 0/5/2, schlaegt die
   0/4/0- und 0/3/1-Ursprungsregeln. STRENG auf Recently-Viewed gescoped,
   normale Listing-Karten (.artlist-grid) bleiben unveraendert. */
body.mts-pdp .recently-viewed-product-grid .art.mts-pcard .mts-pcard__name a.art-name-link,
body.mts-pdp .recently-viewed-product-grid .art.mts-pcard .art-name a.art-name-link,
body.mts-pdp .recently-viewed-product-grid .mts-pcard__name a.art-name-link {
    /* -webkit-box + line-clamp fuer sauberes 3-Zeilen-Ellipsis (wenn es greift) */
    display: -webkit-box !important;
    -webkit-line-clamp: 3 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    /* FIXE Hoehe = exakt 3 Zeilen, unabhaengig davon ob display gewinnt:
       garantiert identische Titel- und damit Karten-Hoehe (2- wie 3-Zeilen). */
    box-sizing: content-box !important;
    line-height: 1.35 !important;
    height: calc(3 * 1.35em) !important;
    min-height: calc(3 * 1.35em) !important;
    max-height: calc(3 * 1.35em) !important;
}

/* --- Fix 7 (rev4): Header-Menue "Sale" als gruene Pille -------------------
   Der Sale-Menueeintrag ist bereits gruen + weiss (Quelle = DB-Topic-Regel
   `header#header ... ul#menu-main li a[href$="/sale/"]` mit
   background:var(--mts-accent)=#5f8175, color:#fff, border-radius:7px,
   padding:7px 24px - alles !important, Spezifitaet ~2/3/4). Er wirkt aber
   noch rechteckig (7px). Ziel: Pill-Form wie Deal-Badge/Add-to-Cart-CTA
   (border-radius:999px), Gruen bleibt, weisser Text, dezenteres Padding,
   dunklerer Hover (#4f6d62).
   Selektor href-basiert - die Menue-Item-id (main-nav-item-...258215) ist
   ueber Re-Imports INSTABIL. Spezifitaet 2/4/4 (#header + #menu-main = 2 IDs;
   .nav-link .menu-link [href] [role] = 4 Klassen/Attr; header ul li a = 4
   Typen) schlaegt die Quelle 2/3/4, und storefront.css laedt zuletzt =>
   gewinnt sicher. NUR der Sale-Eintrag, keine anderen Menuepunkte. */
header#header ul#menu-main li a.nav-link.menu-link[href$="/sale/"][role="menuitem"],
header#header ul#menu-main li a.nav-link.menu-link[href$="/sale"][role="menuitem"] {
    background: var(--mts-c-primary) !important;
    background-image: none !important;
    background-color: var(--mts-c-primary) !important;
    color: #fff !important;
    border-radius: 999px !important;
    padding: 7px 18px !important;
}
header#header ul#menu-main li a.nav-link.menu-link[href$="/sale/"][role="menuitem"]:hover,
header#header ul#menu-main li a.nav-link.menu-link[href$="/sale/"][role="menuitem"]:focus,
header#header ul#menu-main li a.nav-link.menu-link[href$="/sale"][role="menuitem"]:hover,
header#header ul#menu-main li a.nav-link.menu-link[href$="/sale"][role="menuitem"]:focus {
    background: var(--mts-c-primary-hover) !important;
    background-image: none !important;
    background-color: var(--mts-c-primary-hover) !important;
    color: #fff !important;
}

/* --- Fix 8 (rev5): Scroll-to-Top-Button nach UNTEN LINKS ------------------
   Smartstore-Core-Button `a#scroll-top.scrollto` (position:fixed, bottom:16px,
   right:16px, z-index:99998). Er lag unten RECHTS und ueberlappte den
   Bike-Chatbot-FAB (.mts-cb-root, ebenfalls unten rechts). Verschiebung nach
   unten LINKS: right:auto + left:16px (bottom bleibt 16px vom Core). #scroll-top
   ist ID-Selektor (Spez. 1/0/0) = gleiche Spez. wie die Core-Regel; storefront.css
   laedt zuletzt -> gewinnt; !important zusaetzlich gegen Spez.-Gleichstand. */
a#scroll-top,
#scroll-top.scrollto {
    right: auto !important;
    left: 16px !important;
}

/* --- Fix 9 (rev6): Vergleichs-Drawer UVP-Referenzpreis rot durchgestrichen -
   Der Post-Process in storefront.js baut die Preiszelle des Custom-Compare-
   Drawers zu <span.mts-compare-price-current> + <span.mts-compare-uvp> um.
   Der aktuelle Preis erbt das native .mts-compare-price-Styling (bold), der
   Referenzpreis wird als "UVP …" rot (#d0021b = rgb(208,2,27)) + durchge-
   strichen gesetzt, mit dezentem Abstand. Streng auf #mts-compare-drawer
   gescoped -> keine Wirkung auf Listing/PDP/Cart. */
#mts-compare-drawer .mts-compare-uvp {
    color: #d0021b !important;
    text-decoration: line-through !important;
    margin-left: 0.4em;
    white-space: nowrap;
}

/* --- Fix 10 (rev7, 2026-07-05): Globaler Orange-Sweep -> Marken-Gruen ------
   Das Flex-Theme hardcodet sein Warning-Orange #ee9b00 an interaktiven
   Elementen, die der Multicycle-Recolor (mts-theme-global) nicht abdeckt:
   Warning-Buttons ("Registrieren" auf /login, "Als Rechnungsanschrift
   festlegen" im Checkout-Adressbuch), Checkout-Step-Indikator (.costep),
   Auswahl-Badges (.choice-box), aktive Options-Kacheln (Versand-/Zahlart),
   Menue-Akzente. Zusaetzlich sind Radios/Checkboxen im Checkout noch im
   Theme-Default-Indigo #3f51b5. Alles auf Marken-Gruen #5f8175 (Hover
   #4f6d62 wie Fix 5/7). Semantische Warn-Texte/-Alerts (--warning,
   .text-warning, .alert-warning) bleiben BEWUSST amber - hier geht es nur
   um Akzent-/Interaktionsfarben.
   Mechanik: theme.css setzt die Farben als Button-/Badge-Custom-Props auf
   der Klasse; storefront.css laedt NACH theme.css -> gleiche Spezifitaet,
   spaeter gewinnt. Wo Literale statt Props verwendet werden (costep,
   choice-box, megamenu, list-group), gleiche/hoehere Selektoren + !important.
   Der aeltere PDP-Scope-Fix 5 bleibt als Doppelung stehen (harmlos). */

/* 10a: Warning-Buttons global (deckt "Registrieren", "Als Rechnungs-
   anschrift festlegen", Review-CTAs usw. ab). */
.btn-warning {
    --btn-color: #fff;
    --btn-bg: var(--mts-c-primary);
    --btn-border-color: var(--mts-c-primary);
    --btn-disabled-color: #fff;
    --btn-disabled-bg: var(--mts-c-primary);
    --btn-disabled-border-color: rgba(89, 97, 103, 0.15);
}
.btn-warning, .btn-outline-warning {
    --btn-hover-color: #fff;
    --btn-hover-bg: var(--mts-c-primary-hover);
    --btn-hover-border-color: var(--mts-c-primary-hover);
    --btn-active-color: #fff;
    --btn-active-bg: var(--mts-c-primary-active);
    --btn-active-border-color: var(--mts-c-primary-active);
    --btn-focus-shadow-rgb: var(--mts-c-primary-rgb);
}
.btn-outline-warning {
    --btn-color: var(--mts-c-primary);
    --btn-border-color: var(--mts-c-primary);
    --btn-disabled-color: var(--mts-c-primary);
    --btn-disabled-border-color: var(--mts-c-primary);
}
.btn-3d.btn-warning, .btn-3d.btn-outline-warning {
    --shadow-color-rgb: var(--mts-c-primary-active-rgb);
}

/* 10b: Warning-Badges (z.B. Bestell-/Statusbadges). */
.badge-warning {
    --badge-base-rgb: var(--mts-c-primary-rgb);
    --badge-bg: var(--mts-c-primary);
    --badge-bg-rgb: var(--mts-c-primary-rgb);
    --badge-color: #fff;
}

/* 10c: Checkout-Step-Indikator (.costeps auf Cart + allen Checkout-Seiten):
   durchlaufene Schritte (visited) = gruen gefuellt inkl. Verbindungslinien,
   aktiver Schritt = gruener Ring. Quelle in theme.css nutzt Literale. */
.costep.visited:before,
.costep.visited:after,
.costep.active:before {
    background-color: var(--mts-c-primary) !important;
}
.costep.visited .costep-icon {
    border-color: var(--mts-c-primary) !important;
    background-color: var(--mts-c-primary) !important;
}
.costep.active .costep-icon {
    border-color: var(--mts-c-primary) !important;
    background-color: #fff !important;
}

/* 10d: Auswahl-Haekchen der Choice-Boxen (Varianten-/Checkout-Kacheln). */
.choice-box-content:after {
    background-color: var(--mts-c-primary) !important;
}

/* 10e: Aktive Options-Kachel (Versandart/Zahlart, .opt-list-item ist
   list-group-item): linke Akzentlinie war orange. */
.list-group .list-group-item.active:before {
    background: var(--mts-c-primary) !important;
}

/* 10f: Megamenu-/Offcanvas-Menue-Akzente + Tab-Unterstrich + Instasearch. */
.megamenu .nav-item.selected .nav-link:before,
.megamenu .nav-item.expanded .nav-link:before {
    background: var(--mts-c-primary) !important;
}
.nav-tabs-line {
    --nav-underline-active-color: var(--mts-c-primary);
}
#offcanvas-menu {
    --ocm-item-selected-color: var(--mts-c-primary);
}
.instasearch-term:is(.active) {
    outline-color: var(--mts-c-primary) !important;
    border-color: var(--mts-c-primary) !important;
}

/* 10g: Radios/Checkboxen (checked) vom Theme-Indigo #3f51b5 auf Gruen -
   sichtbar u.a. an der Versandart-/Zahlart-Auswahl im Checkout. */
.form-check-input:checked,
.form-check-input[type="checkbox"]:indeterminate {
    background-color: var(--mts-c-primary) !important;
    border-color: var(--mts-c-primary) !important;
}
.custom-control-input:checked ~ .custom-control-label::before,
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
    background-color: var(--mts-c-primary) !important;
    border-color: var(--mts-c-primary) !important;
}

/* --- Fix 11 (rev7, 2026-07-05): Cart-Item-Aktionsreihe vereinheitlichen ----
   Auf /cart/ bestand die Aktionsreihe pro Artikel aus drei verschieden
   grossen Pillen: "Menge:"-Fake-Button (48px hoch - er erbt das grosse
   12px/28px-Padding der globalen .btn-secondary-Regel aus mts-theme-global),
   Papierkorb (36px) und "Auf die Wunschliste" (34px, eigene 4px/8px-Regel).
   Ziel: EINE Hoehe (38px) + EINE Schriftgroesse (0.85rem) fuer alle drei.
   ACHTUNG Body-Klasse: /cart/ traegt in dieser Instanz body.order-summary-page
   + body.checkout-page (NICHT shopping-cart-page - das nur zur Sicherheit
   mitgefuehrt). Spezifitaet body.x .cart-item-actions .btn.btn-secondary
   = (0,4,1) schlaegt sowohl .btn.btn-secondary (0,2,0 !important) als auch
   .shopping-cart-page .cart-item-actions .btn[data-action] (0,4,0 !important). */
body.order-summary-page .cart-item-actions .btn.btn-secondary,
body.shopping-cart-page .cart-item-actions .btn.btn-secondary {
    font-size: 0.85rem !important;
    padding: 8px 16px !important;
    min-height: 38px !important;
    line-height: 1.2 !important;
    display: inline-flex !important;
    align-items: center !important;
}
/* Papierkorb bleibt kompakt-quadratisch in gleicher Hoehe. */
body.order-summary-page .cart-item-actions .btn.btn-secondary.btn-icon,
body.shopping-cart-page .cart-item-actions .btn.btn-secondary.btn-icon {
    padding: 8px 13px !important;
}
/* Menge-Fake-Button: nicht mehr full-width aufblasen, Label normalgewichtet. */
body.order-summary-page .cart-item-actions .mf-dropdown .btn.btn-secondary,
body.shopping-cart-page .cart-item-actions .mf-dropdown .btn.btn-secondary {
    width: auto !important;
    min-width: 108px !important;
    justify-content: space-between !important;
}
body.order-summary-page .cart-item-actions .btn.btn-secondary .fwn,
body.shopping-cart-page .cart-item-actions .btn.btn-secondary .fwn {
    font-size: 0.85rem !important;
}


/* ============================================================================
   TASK-450 (2026-07-06): UVP-Zeile auf der PDP in Rot.
   Das Label kommt serverseitig aus PriceLabel (DefaultRegularPriceLabelId ->
   Label "UVP"); hier nur die Farbe. Streichpreis bleibt durchgestrichen.
   Scoped auf body.mts-pdp - Listing-Karten (.mts-pcard__uvp) und Modals
   (.mts-bt-uvp) haben ihr eigenes UVP-Styling.
   ============================================================================ */
body.mts-pdp .pd-promoprice-group .pd-promoprice-label,
body.mts-pdp .pd-promoprice-group .pd-promoprice {
    color: #b91c1c !important;
}
body.mts-pdp .pd-promoprice-group .pd-promoprice {
    text-decoration: line-through !important;
    font-weight: 600 !important;
}
body.mts-pdp .pd-promoprice-group .pd-promoprice-tip {
    color: #b91c1c !important;
    opacity: 0.75;
}

/* TASK-450 Nachtrag (2026-07-06): Native Sekundaer-Aktionen "Merken",
   "Fragen?", "Weitersagen" auf der PDP ausblenden (User-Auftrag). Nur CSS,
   damit der __mtsPdpCtaReorder-Anchor (MtsLayoutScripts) im DOM bleibt.
   Das eigene Vergleichen-Item (.mts-compare-action-item) bleibt sichtbar
   und rueckt zentriert in die Reihe. */
body.mts-pdp .pd-actions .pd-action-item:has(.action-add-to-wishlist),
body.mts-pdp .pd-actions .pd-action-item:has(.action-ask-question),
body.mts-pdp .pd-actions .pd-action-item:has(.action-bullhorn) {
    display: none !important;
}
/* Vergleichen-Button wird vom MtsPdpFulfillment-Widget aus dieser Row in
   die CTA-Row (zwischen Leasing und Bestpreis) umgehaengt - danach ist die
   Row leer, Container komplett ausblenden. initCompare (mts-theme-global.js)
   injiziert weiterhin hierher (display:none stoert DOM-Inserts nicht). */
body.mts-pdp .pd-actions-container {
    display: none !important;
}
/* Der Sibling-Trennstrich aus MtsPdpCountdown (.pd-action-item + .pd-action-item::before)
   matcht weiter gegen die per display:none versteckten Items -> am freistehenden
   Vergleichen-Item unterdruecken. */
body.mts-pdp .pd-actions .pd-action-item + .pd-action-item::before {
    content: none !important;
}
/* Codex-F4: Fehlermeldung des PDP-CTA-Reservierungs-Pfads (reserveProduct
   ohne Drawer-Karte) - sitzt unter dem Menge/Warenkorb-Container. */
body.mts-pdp .pd-offer-actions-container .mts-cta-err {
    flex-basis: 100%;
    margin-top: 8px;
    text-align: center;
}

/* --- PDP Rahmenform-Switcher (TASK-451) ------------------------------- */
/* Wird von storefront.js oberhalb der Varianten-/Groessenauswahl injiziert
   (Aequivalent zur Smartstore-Zone productdetails_attrs_top). Zentriert,
   KEIN Rahmen/Border, KEIN grauer Hintergrund. Header nur "Rahmenform"
   (Typografie wie natives .choice-label). Icons = lizenzierte Bidex-FT-Glyphen
   (lokal gehosteter Icon-Font), schwarz. Aktive Form: fett + Primaerfarbe. */
@font-face {
    font-family: 'bidex';
    font-weight: 400;
    font-style: normal;
    src: url('/Modules/MoveToShop.Filialen/fonts/bidex.woff') format('woff');
    font-display: swap;
}
.mts-fsw {
    margin: 0 0 0.9rem;
    padding: 0;
    background: transparent;
    border: 0;
    text-align: center;
}
.mts-fsw-head {
    display: block;
    margin-bottom: 8px;
    line-height: 1.2;
}
.mts-fsw-head-label {
    font-size: 14px; font-weight: 600; letter-spacing: 0.28px;
    color: #1d1d1f;
}
.mts-fsw-chips {
    display: flex; flex-wrap: wrap; gap: 0.5rem 1.35rem;
    justify-content: center; align-items: flex-start;
}
.mts-fsw-chip {
    display: inline-flex; flex-direction: column; align-items: center;
    gap: 0.25rem;
    padding: 0.1rem 0.1rem;
    background: transparent;
    border: 0;
    color: #1d1d1f;
    text-decoration: none !important;
}
a.mts-fsw-chip { cursor: pointer; }
a.mts-fsw-chip:hover .mts-fsw-label { color: var(--mts-c-primary-dark); }
a.mts-fsw-chip:focus-visible { outline: none; }
a.mts-fsw-chip:focus-visible .mts-fsw-label { text-decoration: underline; }
.mts-fsw-chip.is-active { cursor: default; }
/* Bidex-FT-Icon-Glyph pro Chip (PUA-Codepoints) - klar SCHWARZ, deutlich sichtbar. */
.mts-fsw-ic {
    font-family: 'bidex';
    font-weight: 400;
    font-style: normal;
    line-height: 1;
    font-size: 36px;
    display: inline-block;
    color: #1d1d1f;
    speak: none;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.mts-fsw-ic::before { display: inline-block; }
.mts-fsw-ic--diamant::before    { content: '\F009'; }
.mts-fsw-ic--trapeze::before    { content: '\F002'; }
.mts-fsw-ic--easy-entry::before { content: '\F005'; }
.mts-fsw-ic--wave::before       { content: '\F004'; }
.mts-fsw-ic--damen::before      { content: '\F001'; }
.mts-fsw-label {
    font-size: 13px; font-weight: 500; line-height: 1.15;
    color: #1d1d1f; text-align: center;
}
.mts-fsw-chip.is-active .mts-fsw-label { font-weight: 700; color: var(--mts-c-primary); }
@media (max-width: 480px) {
    .mts-fsw-chips { gap: 0.4rem 1rem; }
    .mts-fsw-ic { font-size: 32px; }
    .mts-fsw-label { font-size: 12px; }
}
