/* ============================================================================
 * custom-mobile.css — HawaiiCards Mobile/Tablet-Schicht
 * ===== MOBILE (≤839px) — Eigentum Rolle mobile — NICHT vom Desktop ändern =====
 *
 * Zone lt. DESKTOP-MOBILE-VERTRAG: ausschließlich @media (max-width:839px).
 * Basis: Deep-Research Mobile/Tablet-Dimensionierung
 *   Compact  < 600px  → 4-Spalten-Raster, Seitenrand 16px, Gap 16px
 *   Medium 600–839px  → 8-Spalten-Raster, Seitenrand 24px, Gap 24px
 *   Expanded ≥ 840px  → NICHT diese Datei (Rolle frontend)
 * Referenz-Artboards: 390 / 768 (/ 1024 nur Smoke-Test)
 * Test-Matrix vor Abnahme: 360 / 390 / 768 / 834 / 1024
 *
 * P0-1 Adaptives Fundament v1.1 — 2026-07-02
 * P0-2 Navigation + Suche v1 — 2026-07-02 (Abschnitt 7, JS: custom-mobile.js)
 * Eigene Klassen tragen Präfix .hcm- (HawaiiCards Mobile) — kollisionsfrei.
 * Desktop-Hooks werden nur GELESEN (.wrap, .btn, .a-btn, .go, .a-cart, .catbar),
 * nie umbenannt (Vertrag §2).
 * ========================================================================== */

/* ---------- 1 · Mobile-Tokens (Compact-Default, Medium-Override) ---------- */
@media (max-width: 839px) {
  :root {
    /* Spacing-Skala: 8er-Raster mit 4er-Feinschritt */
    --hcm-s1: 4px;
    --hcm-s2: 8px;
    --hcm-s3: 12px;
    --hcm-s4: 16px;
    --hcm-s5: 24px;
    --hcm-s6: 32px;
    --hcm-s7: 40px;
    --hcm-s8: 48px;

    /* Layout Compact (<600): 4 Spalten, Rand+Gap 16 */
    --hcm-cols: 4;
    --hcm-pad: 16px;
    --hcm-gap: 16px;

    /* Touch-Targets (WCAG 24 min · Praxisziel 44–48) */
    --hcm-tap: 44px;
    --hcm-tap-primary: 48px;
  }
}
@media (min-width: 600px) and (max-width: 839px) {
  :root {
    /* Layout Medium (600–839): 8 Spalten, Rand+Gap 24 */
    --hcm-cols: 8;
    --hcm-pad: 24px;
    --hcm-gap: 24px;
  }
}

@media (max-width: 839px) {

  /* ---------- 2 · Overflow-Guard (sticky-sicher) ----------
   * clip statt hidden: overflow-x:hidden an Vorfahren bricht position:sticky.
   * !important nötig: hawaiicards.css (body{overflow-x:hidden}) + später
   * geladene Sheets überstimmen sonst per Ladereihenfolge. Zone ≤839 = mobile.
   */
  html, body {
    overflow-x: clip !important;
  }

  /* ---------- 3 · Basis-Ergonomie: Touch-Targets ----------
   * :where() hält Spezifität = 0 — Detail-Etappen (P0-2/P0-3) können
   * gezielt übersteuern, Desktop-Styles werden nur bei Gleichstand
   * durch Ladereihenfolge ergänzt.
   */
  :where(.btn, button, [role="button"], input[type="submit"], input[type="button"]) {
    min-height: var(--hcm-tap);
  }
  :where(.site-header .a-btn, .site-header .a-cart, .site-header .go) {
    min-height: var(--hcm-tap);
    min-width: var(--hcm-tap);
  }
  :where(input[type="text"], input[type="search"], input[type="email"],
         input[type="tel"], input[type="number"], input[type="password"],
         select, textarea) {
    min-height: var(--hcm-tap);
    /* iOS-Auto-Zoom verhindern: Eingaben nie unter 16px */
    font-size: max(16px, 1em);
  }
  /* Navigations-/Listenziele: Höhe über Padding statt starrer height */
  :where(.catbar a, .site-footer a) {
    padding-top: max(var(--hcm-s2), 0px);
    padding-bottom: max(var(--hcm-s2), 0px);
  }

  /* ---------- 4 · Container- & Max-Width-Regeln ---------- */
  :where(.wrap) {
    padding-left: var(--hcm-pad);
    padding-right: var(--hcm-pad);
  }
  /* Medien nie über Containerbreite hinaus */
  :where(main img, main video, main iframe) {
    max-width: 100%;
    height: auto;
  }

  /* ---------- 5 · Raster-Utilities (Fundament für P0-2/P0-3/P1) ----------
   * .hcm-grid       — Spaltenraster gem. Größenklasse (4 Compact / 8 Medium)
   * .hcm-grid-2up   — visuell getriebene Produktkarten (Sealed/Singles)
   * .hcm-grid-1up   — spec-getriebene Liste (Zubehör/Specs)
   * .hcm-grid-3up   — nur Medium sinnvoll (Tablet), Compact fällt auf 2 zurück
   */
  .hcm-grid {
    display: grid;
    grid-template-columns: repeat(var(--hcm-cols), minmax(0, 1fr));
    gap: var(--hcm-gap);
  }
  .hcm-grid-2up {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--hcm-gap);
  }
  .hcm-grid-1up {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--hcm-gap);
  }
  .hcm-grid-3up {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--hcm-gap);
  }

  /* ---------- 6 · Sichtbarkeits-Utilities ---------- */
  .hcm-only-desktop { display: none !important; }

  /* ---------- 7 · P0-2: Header-Suche + Burger-Navigation ----------
   * Elemente werden von custom-mobile.js NUR ≤839px injiziert.
   */
  .hcm-searchrow {
    display: flex;
    gap: var(--hcm-s2);
    padding: var(--hcm-s2) var(--hcm-pad) var(--hcm-s3);
    /* W4-A (24.07.2026, Chef "ruckelfrei"): eigene Opacity/Visibility-Basis,
     * damit der Kompakt-Toggle (11.5) NIE mehr display:none nutzt — dessen
     * Flow-Hoehe (68px) blieb sonst konstant im DOM, nur die SICHTBARKEIT
     * toggelt jetzt. Siehe Root-Cause-Notiz bei 11.5. */
    opacity: 1;
    visibility: visible;
    transition: opacity 0.18s ease;
  }
  @media (prefers-reduced-motion: reduce) {
    .hcm-searchrow { transition: none; }
  }
  .hcm-searchinput {
    flex: 1;
    min-width: 0;
    height: var(--hcm-tap-primary);
    border: 1px solid rgba(12, 30, 42, 0.18);
    border-radius: var(--r-pill, 999px);
    padding: 0 var(--hcm-s4);
    background: #fff;
    color: var(--brand-navy, #0c1e2a);
  }
  .hcm-searchgo {
    flex: 0 0 auto;
    width: var(--hcm-tap-primary);
    height: var(--hcm-tap-primary);
    border: 0;
    border-radius: 50%;
    background: var(--brand-orange, #f08a24);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
  }

  .hcm-burger {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    width: var(--hcm-tap);
    height: var(--hcm-tap);
    border: 0;
    background: transparent;
    cursor: pointer;
    padding: 0;
  }
  .hcm-burger span {
    display: block;
    width: 22px;
    height: 2.5px;
    border-radius: 2px;
    background: var(--brand-navy, #0c1e2a);
  }

  .hcm-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(12, 30, 42, 0.45);
    opacity: 0;
    transition: opacity 0.2s var(--ease-out, ease-out);
    z-index: 99998;
  }
  .hcm-backdrop.hcm-in { opacity: 1; }

  .hcm-drawer {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    width: min(86vw, 360px);
    /* W4-C (24.07.2026, Chef woertlich "Menue in Weiss"): Light-Mode-Flaeche
     * jetzt reines Weiss statt Cream (Brand-Book-Linie "Flaechen weiss, kein
     * Beige-Flaechenlook"). Dark-Mode (midnight) bleibt navy — eigener
     * [data-theme="midnight"] .hcm-drawer-Override unten UNVERAENDERT, gewinnt
     * dort per hoeherer Spezifitaet. */
    background: #fff;
    z-index: 99999;
    transform: translateX(-102%);
    transition: transform 0.22s var(--ease-out, ease-out);
    overflow-y: auto;
    overscroll-behavior: contain;
    box-shadow: 0 0 40px rgba(12, 30, 42, 0.25);
    font-family: var(--font-body, system-ui, sans-serif);
  }
  .hcm-drawer.hcm-in { transform: translateX(0); }

  .hcm-drawer-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--hcm-s3) var(--hcm-s4);
    border-bottom: 1px solid rgba(12, 30, 42, 0.12);
    font-family: var(--font-display, system-ui, sans-serif);
    font-size: 18px;
    /* W4-C (24.07.2026, Chef "Menue wird in unserem Orange geschrieben"):
     * .hcm-close (das ×) traegt eine EIGENE explizite color-Regel (s.u.) und
     * erbt diese Farbe deshalb NICHT — nur der <strong>"Menü"</strong>-Text
     * (ohne eigene Regel) erbt sie und wird dadurch orange, ohne einen neuen
     * Selektor zu brauchen. Gilt fuer BEIDE Themes (Chef: "reine Textfarbe
     * Orange bleibt unveraendert") — Dark-Override unten auf denselben Wert. */
    color: #ef820e;
  }
  .hcm-close {
    width: var(--hcm-tap);
    height: var(--hcm-tap);
    border: 0;
    background: transparent;
    font-size: 30px;
    line-height: 1;
    color: var(--brand-navy, #0c1e2a);
    cursor: pointer;
  }

  .hcm-drawer-list {
    list-style: none;
    margin: 0;
    padding: var(--hcm-s2) 0 var(--hcm-s6);
  }
  /* W4-C (24.07.2026): Trennlinie leicht angehoben (0.08 -> 0.11), damit die
   * Zeilen auf reinem Weiss (vorher Cream) noch spuerbar strukturiert wirken —
   * Cream gab von sich aus schon etwas Kontrast, Weiss braucht etwas mehr. */
  .hcm-item { border-bottom: 1px solid rgba(12, 30, 42, 0.11); }
  .hcm-row { display: flex; align-items: stretch; }
  .hcm-link {
    flex: 1;
    display: flex;
    align-items: center;
    min-height: var(--hcm-tap-primary);
    padding: var(--hcm-s2) var(--hcm-s4);
    color: var(--brand-navy, #0c1e2a);
    text-decoration: none;
    font-weight: 600;
    font-size: 16px;
  }
  /* W4-C (24.07.2026, Chef "Konto/Merkliste ebenfalls in Brand-Orange"): NUR
   * der Top-Block (.hcm-drawer-top, s. buildNav) — Kategorien nutzen dieselbe
   * .hcm-link-Klasse und bleiben bewusst Navy (Chef: "Kategorien bleiben
   * Navy"), 2-Klassen-Selektor schlaegt die 1-Klassen-Basisregel automatisch,
   * kein !important noetig. Gilt in BEIDE Themes gleich (s. Dark-Override
   * Abschnitt 12 fuer den spezifitaets-gleichgezogenen Gegenpart). */
  .hcm-drawer-top .hcm-link { color: #ef820e; }
  .hcm-acc {
    flex: 0 0 var(--hcm-tap-primary);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    background: transparent;
    color: var(--brand-navy, #0c1e2a);
    cursor: pointer;
    transition: transform 0.18s ease;
  }
  .hcm-open > .hcm-row .hcm-acc { transform: rotate(180deg); }

  .hcm-subnav {
    list-style: none;
    margin: 0;
    padding: 0 0 var(--hcm-s2);
    /* W4-C (24.07.2026): war rgba(255,255,255,.55) fuer Kontrast GEGEN Cream —
     * auf dem neuen weissen Drawer-Grund waere das jetzt unsichtbar (Weiss auf
     * Weiss). Navy-Tint stattdessen, liest sich auf Weiss wie zuvor als
     * dezent abgesetztes Akkordeon-Panel. */
    background: rgba(12, 30, 42, 0.04);
  }
  .hcm-sublink {
    display: flex;
    align-items: center;
    min-height: var(--hcm-tap);
    padding: var(--hcm-s1) var(--hcm-s6);
    color: var(--brand-navy, #0c1e2a);
    text-decoration: none;
    font-size: 15px;
  }

  /* Scroll-Lock bei offenem Drawer (nur Mobile-Zone) */
  body.hcm-lock { overflow: hidden !important; }
}

@media (min-width: 600px) and (max-width: 839px) {
  .hcm-grid-3up {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ============================================================================
 * Abschnitt 8 · Etappe A (2026-07-11) — Blocker-Fixes + Startseiten-Dichte
 * Grundlage: BESTANDSAUFNAHME 03.07. (E1-E4) + Analyse-Fragen F1-F12 (Empfehlungen)
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 8.1 · E1/1.1: Legacy-Mobil-Menü stilllegen + toter Altbestand (K2) ----
   * .hcm-drawer ist kanonisch (Chef-Entscheidung E1, 04.07.). Der Legacy-Burger
   * .a-burger lag ohnehin unsichtbar außerhalb des Viewports (r=507 bei 390px). */
  .a-burger,
  #mobileMenu,
  .mobile-menu {
    display: none !important;
  }

  /* ---- 8.2 · K1: kompakter Header — Warenkorb wieder im Viewport ----
   * Vorher: .brand(271px) + .act ragten bis x=507; Cart halb unsichtbar.
   * Layout U7A: Burger links (JS setzt ihn in .wrap) · Logo mittig ohne
   * Subline · Merken + Warenkorb rechts. */
  .site-header .wrap {
    display: flex;
    align-items: center;
    gap: var(--hcm-s2);
  }
  .site-header .brand {
    flex: 1 1 auto;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
  }
  .site-header .brand small { display: none; }
  .site-header .brand img { height: 34px; width: auto; }
  .site-header .brand .c {
    font-size: clamp(15px, 4.6vw, 18px);
    white-space: nowrap;
  }
  .site-header .act {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: var(--hcm-s1);
    margin-left: auto;
  }
  /* Merkliste als kompaktes Icon wieder sichtbar (war ≤1080 komplett weg) */
  .site-header .act a[aria-label="Merkliste"] { display: inline-flex !important; }
  .site-header .act a[aria-label="Merkliste"] .lbl { display: none; }

  /* ---- 8.3 · F3A: USP-Leiste als eine kompakte Snap-Zeile ---- */
  #hc-usp .row {
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    gap: var(--hcm-s4);
    scroll-snap-type: x proximity; /* proximity, nie mandatory (Snap-Gotcha) */
    -webkit-overflow-scrolling: touch;
    padding-bottom: var(--hcm-s1);
  }
  #hc-usp .hc-usp-item {
    flex: 0 0 auto;
    scroll-snap-align: start;
    white-space: nowrap;
  }

  /* ---- 8.4 · F9A/F7A: Platzhalter-Reviews + Demo-"Zuletzt angesehen" aus ----
   * Wieder aktivieren, sobald echte Bewertungen/Verlaufsdaten existieren. */
  /* NUR Platzhalter-Reviews aus — #hc-foryou ist seit deploy45-68 (frontend, 11.07.)
   * "Sammler-Highlights" mit ECHTEN Produkten und bleibt sichtbar! */
  #hc-proof {
    display: none !important;
  }

  /* ---- 8.5 · F8A: Themen-Karten 2-up statt Stapel ---- */
  #hc-themen .tgrid {
    display: grid !important;
    /* !important: startseite-v3.css lädt im Body NACH dieser Datei */
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: var(--hcm-s3) !important;
  }

  /* ---- 8.6 · F12/M9: Community 2-up + Kontrast-Pflichtfix ---- */
  #hc-community .cgrid {
    display: grid !important;
    /* !important: startseite-v3.css lädt im Body NACH dieser Datei */
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: var(--hcm-s3) !important;
  }
  #hc-community .hc-ccard,
  #hc-community .hc-ccard :where(h3, h4, strong, b) {
    color: #fff !important;
    text-shadow: 0 1px 2px rgba(12, 30, 42, 0.35);
  }

  /* ---- 8.7 · F5A: "Neu eingetroffen" + Sale als 2-up-Snap-Karussell ---- */
  #hc-new .hc-rail,
  #hc-sale .hc-rail {
    display: flex !important;
    gap: var(--hcm-s3) !important;
    overflow-x: auto !important;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
  }
  #hc-new .hc-rail > *,
  #hc-sale .hc-rail > * {
    /* 14 · Rail-Peek: 46 % statt 50 % — 8 % der naechsten Kachel sichtbar */
    flex: 0 0 calc(46% - var(--hcm-s2)) !important;
    width: calc(46% - var(--hcm-s2)) !important;
    min-width: 0 !important;
    scroll-snap-align: start;
  }
}

/* ============================================================================
 * Abschnitt 9 · S1-S3 (2026-07-11) — Kategorieseiten: Ansichten + Grid + Select
 * Chef-Vorgabe: mobil nur GROSSE Kacheln + LISTE, klein raus, gross = Standard.
 * Filter-Off-Canvas kommt aus hawaiicards.css (@<=1100, Rolle frontend) — hier
 * bewusst NICHT gedoppelt (Single-Writer). Nur Ergaenzungen in meiner Zone.
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 9.1 · Ansicht "Kleine Kacheln" mobil entfernen ---- */
  .view-toggle button[title="Kleine Kacheln"] { display: none !important; }
  .view-toggle button {
    min-width: 44px !important;
    min-height: 44px !important;
  }

  /* ---- 9.2 · Produkt-Grid: grosse Kacheln = 2-up Compact, Liste 1-spaltig ---- */
  main .grid.cols-4,
  main .grid.cols-3,
  main .grid.cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: var(--hcm-s3) !important;
  }
  main .grid.is-list,
  main .grid.list {
    grid-template-columns: 1fr !important;
  }

  /* ---- 9.3 · Filter-Drawer-Reparatur: hawaiicards.css hat das Off-Canvas
   * (rechts, translateX(102%)), aber die .open-Regel verliert den Kaskaden-
   * Kampf gegen die eigene Basis-Regel — hier nur der Mechanismus, kein Doppel-CSS. */
  .pk-sidebar.open { transform: none !important; }
  .drawer-backdrop.show {
    display: block !important;
    position: fixed;
    inset: 0;
    background: rgba(12, 30, 42, 0.45);
    z-index: 209;
  }
  body:has(.pk-sidebar.open) { overflow: hidden; }

  /* ---- 9.5 · Selects: iOS-Zoom-Falle + Tap-Hoehe (shopweit, K3) ---- */
  select {
    font-size: 16px !important;
    min-height: 44px !important;
  }
}
@media (min-width: 600px) and (max-width: 839px) {
  /* Medium: 2-up (B2-Fix, E1-Sweep 23.07.2026 — Ansichten-Matrix Freigabe 3010/
   * 20.07. verlangt Tablet 661-839 = 2 Spalten, war faelschlich 3-up seit 11.07.
   * Tatsaechlich entscheidend ist Abschnitt 13.12 (hoehere Spezifitaet per
   * ID-Boost) — hier nur fuer Konsistenz mitgezogen, keine eigene Wirkung mehr.) */
  main .grid.cols-4,
  main .grid.cols-3,
  main .grid.cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

/* ============================================================================
 * Abschnitt 10 · S4+S5 (2026-07-11) — Kategorie-Hero + Startseiten-Hero + Ergonomie
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 10.1 · S4: .cat-hero entschaerfen (war fix 664px + overflow:hidden) ---- */
  .cat-hero {
    height: auto !important;
    min-height: 0 !important;
    padding-top: var(--hcm-s5);
    padding-bottom: var(--hcm-s5);
  }

  /* ---- 10.2 · S5: Startseiten-Hero kompakt (F1) ----
   * Ziel ~600px statt 815: H1 gedeckelt, CTAs nebeneinander, Pfeile weg
   * (Swipe/Dots reichen), Dots mit 44px-Hit-Area. */
  .hcm-hero .hcm-h1 { font-size: clamp(26px, 8vw, 34px) !important; line-height: 1.05 !important; }
  .hcm-hero .hcm-cta {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap;
    gap: var(--hcm-s2) !important;
  }
  .hcm-hero .hcm-cta .hcm-btn,
  .hcm-hero .hcm-cta [class*="btn"] {
    width: auto !important;
    flex: 0 1 auto !important;
    min-width: 0;
  }
  .hcm-hero .hcm-arrow { display: none !important; }
  .hcm-hero .hcm-dots button,
  .hcm-hero .hcm-dots > * { min-width: 24px; min-height: 24px; }

  /* ---- 10.3 · Ergonomie-Kleinkram (Bestandsaufnahme 2.10/2.12) ---- */
  .kf-chip { min-height: 44px !important; }
  [style*="top: 90px"], [style*="top: 120px"] { top: 56px !important; }
}

/* ============================================================================
 * Abschnitt 11 · Teil 3 (2026-07-11) — Chef-Entscheidungen To-dos 1-6+9
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 11.1 · Cat-Hero kompakt: Grid war 1128px in 664px-Fenster ---- */
  /* :not(#_) = ID-Spezifitäts-Konter gegen golive :is(#hc-...)-Fixhöhe 664px */
  /* max-height-Klemme: 664px ist NATUERLICHE Hoehe (absolute Karten-Deko),
   * keine height-Regel vorhanden -> height:auto war wirkungslos */
  /* [ANGEPASST 24.07.2026, E0-B Rollout-Welle] Die max-height:420px-Klemme +
   * overflow:hidden klemmten H1/CTAs/.pk-quick/.cat-stats.hc-trust auf 0-41%
   * sichtbar auf 13 Seiten (siehe E0B_Hero-Inventur_2026-07-24.md). Root-Cause
   * live verifiziert: .cat-hero ist display:flex;align-items:center (golive,
   * ungescoped) — bei Inhalt > 420px zentrierte das die H1 weit UEBER den
   * sichtbaren Bereich (z.B. /karten-ankauf: -138px bei 390px). Klemme raus =
   * echter Stapel-Flow wie Startseiten-Hero (Abschnitt 16): Box waechst exakt
   * auf Inhaltshoehe, align-items:center hat dann keinen Effekt mehr (Box=
   * Kind-Groesse), KEIN separater align-items-Fix noetig (live bestaetigt auf
   * /karten-ankauf, /wunsch-service, /faq). WICHTIG: golive-content.css setzt
   * .cat-hero{height/min-height/max-height:664px!important;overflow:hidden
   * !important} UNGESCOPED (Z.1701) — reines Entfernen der eigenen max-height/
   * overflow-Zeilen reicht NICHT (664px-Restklemme blieb aktiv, live gefunden
   * beim Verify nach Deploy). max-height explizit auf none + overflow auf
   * visible kontern, damit die :not(#_)-Spezifitaet wirklich greift. */
  .cat-hero:not(#_) {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow: visible !important;
  }
  .cat-hero:not(#_) .cat-hero-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: var(--hcm-s3);
    height: auto !important;
    min-height: 0 !important;
  }
  .cat-hero:not(#_) .card-side {
    width: min(46vw, 170px) !important;
    height: auto !important;
    aspect-ratio: 266 / 330;
  }

  /* ---- 11.2 · SEO-Texte: 4-Zeilen-Clamp (JS setzt Klasse + Mehr-lesen) ---- */
  .hcm-textclamp {
    display: -webkit-box !important;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .hcm-morebtn {
    min-height: 44px;
    background: none;
    border: 0;
    color: var(--brand-orange, #f08a24);
    font-weight: 600;
    padding: 2px 0;
    cursor: pointer;
  }

  /* ---- 11.3 · FAQ: 48px-Zeilen (JS klappt alle details zu) ---- */
  main details summary {
    min-height: 48px;
    display: flex;
    align-items: center;
    cursor: pointer;
  }

  /* ---- 11.4 · Footer-Akkordeon ---- */
  .site-footer .hcm-footacc h5 {
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    margin: 0;
  }
  .site-footer .hcm-footacc h5::after { content: "\25BE"; opacity: 0.6; }
  .site-footer .hcm-footacc.hcm-open h5::after { content: "\25B4"; }
  .site-footer .hcm-footacc > *:not(h5) { display: none; }
  .site-footer .hcm-footacc.hcm-open > *:not(h5) { display: block; }

  /* ---- 11.5 · Sticky-Header kompakt ab 600px Scroll (JS toggelt hcm-compact) ----
   * W4-A (24.07.2026, Chef "ruckelfrei", Verhalten KOMPAKT behalten): FIX statt
   * display:none. ROOT CAUSE (live gemessen @390: header 152px -> 84px, body-
   * scrollHeight -68px in derselben Millisekunde): .hcm-searchrow stand in
   * normalem Fluss NACH .wrap (kein position:sticky/fixed-Sonderfall) — ihr
   * display:none entfernte die vollen 68px (48px Tap-Primary-Input + 8+12px
   * Padding) aus der Boxhoehe von .site-header, wodurch der GESAMTE Dokument-
   * fluss darunter augenblicklich um 68px nach oben sprang (klassischer
   * Reflow-Jank, kein Animations-/Perf-Problem). Fix: Suchzeile bleibt PHYSISCH
   * im Fluss (nimmt ihre 68px immer ein, ob kompakt oder nicht) und wird nur
   * noch UNSICHTBAR geschaltet (opacity+visibility, Basis in Abschnitt 7) —
   * .site-header's eigene Boxhoehe aendert sich dadurch nie (live verifiziert:
   * 152px konstant in beiden Zuständen, 0px bodyScrollHeight-Differenz, siehe
   * Rueckgabetext). Trade-off (dokumentiert, Chef-Prioritaet "ruckelfrei" >
   * Platz-Rueckgewinn): der Sticky-Header bleibt beim Scrollen durchgehend
   * 152px hoch (reserviert weiterhin den Suchzeilen-Platz), gibt also KEINEN
   * zusaetzlichen Bildschirmplatz mehr frei — nur die OPTIK (Logo 26px,
   * Suchzeile weg) aendert sich noch, exakt wie abgenommen. .brand img-Groesse
   * war schon vorher unschaedlich (wrap-Zeile bleibt bei 84px, dominiert von
   * Padding/Tap-Targets, nicht vom Logo — live bestaetigt, keine Aenderung
   * hier noetig). */
  .hcm-compact .site-header .hcm-searchrow {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
  }
  .hcm-compact .site-header .brand img { height: 26px; }

  /* ---- 11.6 · Hero-Ruhe: Holo-Glitzer aus · M2: zweites Band + Desktop-Copy aus ---- */
  .hcm-hero .hcm-holo,
  .hcm-hero .hcm-holo::before,
  .hcm-hero .hcm-holo::after {
    animation: none !important;
    transition: none !important;
    will-change: auto !important;
  }
  #hc-cats .tmk-band.rev { display: none !important; }
  #hc-cats .listdesc { display: none !important; }
}

/* Gegenstück außerhalb der Mobile-Zone: mobile-only-Elemente auf Desktop aus.
 * (Einzige Regel ≥840px in dieser Datei — definiert nur das Verhalten der
 * hcm-eigenen Utility-Klasse, fasst keine Desktop-Styles an.) */
@media (min-width: 840px) {
  .hcm-only-mobile { display: none !important; }
}

/* ============================================================================
 * Abschnitt 12 · Dark-Mode (data-theme="midnight") fuer hcm-Komponenten
 * Befund 11./12.07.: Drawer blieb cream, Burger-Striche unsichtbar, Such-Input
 * hart weiss. Palette: Navy #101d2b · Cream-Text #f2ede0 · Orange #ffa64d.
 * ========================================================================== */
@media (max-width: 839px) {
  /* W4-C (24.07.2026): Drawer-Flaeche bleibt hier bewusst NAVY (Chef-Pflicht
   * "Dark-Mode nicht weiss machen") — Abschnitt 6's neue #fff-Regel gilt nur
   * im Default/Light-Theme ("reef"), diese hoehere Spezifitaet ([data-theme]
   * + .hcm-drawer) gewinnt unveraendert weiter. */
  [data-theme="midnight"] .hcm-drawer { background: #101d2b; color: #f2ede0; }
  /* "Menü"-Titel bleibt Orange (erbt von hier, s. Abschnitt 6-Kommentar) —
   * Chef: "reine Textfarbe Orange bleibt unveraendert", nur der Border passt
   * sich der dunklen Flaeche an. */
  [data-theme="midnight"] .hcm-drawer-head {
    color: #ef820e;
    border-bottom-color: rgba(255, 255, 255, 0.1);
  }
  [data-theme="midnight"] .hcm-close { color: #f2ede0; }
  [data-theme="midnight"] .hcm-drawer .hcm-link,
  [data-theme="midnight"] .hcm-drawer .hcm-sublink,
  [data-theme="midnight"] .hcm-drawer .hcm-acc { color: #f2ede0; }
  /* Konto/Merkliste bleiben Orange auch im Dark-Mode (4 Klassen-Ebenen inkl.
   * Attribut-Selektor schlaegt zuverlaessig die 3-Ebenen-Regel direkt darueber,
   * die sonst mit gleicher [data-theme]-Spezifitaet gewinnen wuerde). */
  [data-theme="midnight"] .hcm-drawer .hcm-drawer-top .hcm-link { color: #ef820e; }
  [data-theme="midnight"] .hcm-drawer .hcm-row { border-color: rgba(255, 255, 255, 0.08); }
  [data-theme="midnight"] .hcm-subnav { background: rgba(255, 255, 255, 0.05); }
  [data-theme="midnight"] .hcm-searchinput {
    background: rgba(255, 255, 255, 0.08);
    color: #f2ede0;
    border-color: rgba(255, 255, 255, 0.16);
  }
  [data-theme="midnight"] .hcm-searchinput::placeholder { color: rgba(242, 237, 224, 0.55); }
  [data-theme="midnight"] .hcm-burger span { background: #f2ede0; }
  [data-theme="midnight"] .active-chips > * {
    background: #16273a;
    color: #f2ede0;
    border-color: rgba(255, 255, 255, 0.16);
  }
  [data-theme="midnight"] .hcm-morebtn { color: #ffa64d; }
  [data-theme="midnight"] .hcm-shipbar { background: rgba(255, 255, 255, 0.06); color: #f2ede0; }
}

/* ============================================================================
 * Abschnitt 13 · Systemcheck-Fixes (12.07.) — siehe SYSTEMCHECK_Mobile_2026-07-12.md
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 13.1 · P0-3: pk-Sidebar/Filter-Drawer deterministische Endlage.
   * transition:none — CSSTransition kann in Hintergrund-Tabs am Startwert
   * einfrieren (Loesungsbuch-Gotcha); Panel steht damit SOFORT bei right:0. */
  .pk-sidebar.open {
    transform: none !important;
    transition: none !important;
    right: 0 !important;
    left: auto !important;
    width: min(86vw, 360px) !important;
    overflow-x: hidden !important;
  }

  /* ---- 13.1b · Filter-Oeffner-Button (JS: pkFilterOpener, pk-Seiten ohne Engine-Button) ---- */
  .hcm-filterbtn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 44px;
    padding: 0 16px;
    border: 1.5px solid rgba(12, 30, 42, 0.22);
    border-radius: 999px;
    background: #fff;
    color: var(--brand-navy, #0c1e2a);
    font: 600 14px/1 var(--font-body, system-ui, sans-serif);
    cursor: pointer;
    margin-right: 8px;
  }
  [data-theme="midnight"] .hcm-filterbtn {
    background: #16273a;
    color: #f2ede0;
    border-color: rgba(255, 255, 255, 0.2);
  }

  /* ---- 13.7 · P1-5: Community-Icons — currentColor lief mobil auf weiss ---- */
  #hc-community .ic { color: #0c1e2a !important; }

  /* ---- 13.8 · P2-1: Wisch-Zeilen ohne sichtbare (Windows-)Scrollbar ---- */
  #hc-usp .row,
  .nav-tabs,
  [role="tablist"] { scrollbar-width: none; }
  #hc-usp .row::-webkit-scrollbar,
  .nav-tabs::-webkit-scrollbar,
  [role="tablist"]::-webkit-scrollbar { display: none; }

  /* ---- 13.14 · P2-8: NOVA-Suchergebnis (/?qs=) — Seitenrand + Toolbar-Luft ---- */
  #result-wrapper {
    padding-left: var(--hcm-pad) !important;
    padding-right: var(--hcm-pad) !important;
  }

  /* ---- 13.15 · P2-9: /shop — Franchise-Pills + Filter-Tap-Groessen ---- */
  main .cat-pills {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
  }
  main .cat-pills > a {
    display: inline-flex !important;
    align-items: center !important;
    min-height: 40px !important;
    padding: 0 14px !important;
    border: 1.5px solid rgba(12, 30, 42, 0.2) !important;
    border-radius: 999px !important;
    text-decoration: none !important;
  }
  main label.fopt {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    min-height: 44px !important;
  }
  main label.fopt input[type="checkbox"] {
    width: 22px !important;
    height: 22px !important;
    flex: 0 0 auto !important;
  }

  /* ---- 13.17 · Nacht-Loop R1 (12.07.): 5 Klein-Fixes aus dem Voll-Re-Check ---- */
  /* R1-1: gunpla-Kacheln — Meta-Badges (.lang/.lg, 1/144 usw.) liefen 32px aus
   * der Kachel (seit overflow:hidden = abgeschnittene Chips) -> umbrechen */
  a.prod .hc-cathead { flex-wrap: wrap !important; row-gap: 2px !important; }
  a.prod .hc-cathead .meta-row {
    max-width: 100% !important;
    flex-wrap: wrap !important;
    justify-content: flex-start !important;
  }
  /* R1-2: /pre-order "Preis folgt" brach 2-zeilig (78px) */
  .po-drop .price {
    white-space: nowrap !important;
    font-size: clamp(20px, 6vw, 26px) !important;
  }
  /* R1-3: Breadcrumb-Links (.nav-link u.a.) nur 20px hoch -> Tap-Flaeche
   * per Padding-Trick vergroessern, Optik unveraendert */
  main .breadcrumb a,
  main nav[aria-label*="readcrumb" i] a,
  main .crumb a,
  main .nav-link {
    position: relative;
    padding-top: 10px !important;
    padding-bottom: 10px !important;
    margin-top: -10px !important;
    margin-bottom: -10px !important;
  }
  /* R1-4: PDP — leeres 360px-img (ohne src, kein lazy-data) im #product-offer
   * frass eine ganze Bildflaeche */
  #product-offer img:not([src]),
  #product-offer img[src=""] { display: none !important; }
  /* R2-2: Topmarken-Panel — 18px-Pfeil-Kreise (a.all): unsichtbare ::after-
   * Hitarea auf ~44px (width:18 + border-box klemmen echte Box; Kreis-Optik
   * darf nicht wachsen) */
  #tmk a.all, #hc-cats a.all, #hc-tmk a.all {
    position: relative !important;
  }
  #tmk a.all::after, #hc-cats a.all::after, #hc-tmk a.all::after {
    content: "";
    position: absolute;
    inset: -11px;
  }
  /* R1-5: Pagination (.pager) 21px-Ziffern -> 40px-Taps */
  .pager a, .pager span {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 40px !important;
    min-height: 40px !important;
  }

  /* ---- 13.16 · P2-6: PDP-Thumbnails — eine Wisch-Reihe statt Umbruch ---- */
  .hc-gal .hc-thumbs {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 4px;
  }
  .hc-gal .hc-thumbs::-webkit-scrollbar { display: none; }
  .hc-gal .hc-thumbs > * { flex: 0 0 auto; scroll-snap-align: start; }
}

@media (max-width: 599px) {

  /* ---- 13.2 · Kachel-Fusszeile = VARIANTE B (Brand-Book-Freigabe 3010, 20.07.2026
   * — nachgezogen im E1-Sweep-Fix 23.07.2026; lief bis dahin faelschlich in der am
   * 20.07. VERWORFENEN gestapelten Alternative, siehe Report-Fund A3/B3).
   * Struktur: a.prod > .pb > .rowend > div>span.price + span.add (Warenkorb) bzw.
   * button.hc-ask-btn (ausverkauft). Preis + Warenkorb-Kreis NEBENEINANDER.
   * Rechnung Brand Book §3.4: 96px(Preis) + 8(gap) + 36(Kreis) = 140px <= 141px
   * Kachel-Innenbreite. Gilt fuer Grids UND Startseiten-Rails (gleiche Kachel). */
  a.prod { overflow: hidden !important; }
  a.prod .rowend {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 8px !important;
  }
  /* Preis 19px: derselbe :is(#hc-xx,...)-Selektor wie golive-content.css (dort
   * unconditional bei 30px/line-height:42px) — ohne den Spiegel-Selektor verliert
   * jede reine Klassen-Regel gegen die ID-Liste (Report-Fund A2: ID schlaegt Klasse
   * immer, unabhaengig von der Ladereihenfolge). line-height statt top-Offset,
   * weil DIESE Kachel-Variante (plain .prod, kein .card) ihre H11-Zentrierung
   * ueber line-height=Button-Hoehe loest, nicht ueber position:relative;top
   * (das ist die Technik der anderen HC-KACHEL-V1/.prod.card-Variante). */
  :is(#hc-op, #hc-pk, #hc-gt, #hc-gp, #hc-mk, #hc-mtg, #hc-ygo, #hc-swu, #hc-dbs,
      #hc-fab, #hc-nrk, #hc-ws, #hc-cp, #hc-dg, #hc-sgl, #hc-slv, #hc-dbx, #hc-rft,
      #hc-clb) .prod .pb .price {
    font-size: 19px !important;
    line-height: 36px !important;
  }
  /* Pflicht-Guards (Brand Book §3.4): Preis darf nie umbrechen. */
  a.prod .rowend .price {
    white-space: nowrap !important;
    flex: 0 0 auto !important;
  }
  /* Warenkorb-Kreis 36px (vorher gar nicht mobil uebersteuert -> blieb bei 42px) */
  a.prod .rowend .add,
  a.prod .add {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    flex: 0 0 auto !important;
  }
  a.prod .rowend .add svg,
  a.prod .add svg {
    width: 18px !important;
    height: 18px !important;
  }
  /* "Anfragen" -> 36px-Icon-Kreis (Marcel-Entscheidung Brand Book §3.4: Text-Pill
   * 76px wuerde neben dem Preis kollidieren). Text bleibt im aria-label fuer
   * Screenreader (custom.js setzt bereits "Bestellanfrage ueber das
   * Kontaktformular senden" — kein Eingriff in custom.js noetig). */
  a.prod .rowend .hc-ask-btn {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 50% !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 0 0 auto !important;
    font-size: 0 !important;
    line-height: 1 !important;
  }
  a.prod .rowend .hc-ask-btn::before {
    content: "\2709";
    font-size: 16px !important;
    line-height: 1 !important;
  }

  /* ---- 13.3 · P1-2: Liste-Ansicht kompakt (Bild 104px, Text darf schrumpfen) ---- */
  main .grid.is-list a.prod {
    flex-direction: row !important;
    align-items: flex-start !important;
    gap: 10px !important;
  }
  main .grid.is-list a.prod .pim {
    flex: 0 0 104px !important;
    width: 104px !important;
    min-width: 104px !important;
  }
  main .grid.is-list a.prod .pb { min-width: 0 !important; flex: 1 1 auto !important; }
  main .grid.is-list a.prod .nm {
    display: -webkit-box !important;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden !important;
  }

  /* ---- 13.4 · P1-3: Hero-Deko-Karten aus (Marcel-Entscheid F-A: ganz weg) ---- */
  .cat-hero .card-side { display: none !important; }

  /* ---- 13.5 · P1-4: #hc-brands Rondell -> 2-up-Kachel-Grid (Entscheid F-B).
   * Desktop-Hover-Akkordeon kollabierte <600 auf 74px, .reveal lief als
   * Geister-Text heraus. Mobil: jede Kachel 150px, Bild + Name + Pfeil. */
  #hc-brands .bacc {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    /* startseite-v3.css (@<=560) setzt feste 74px-Zeilen -> Items koennen nicht
     * wachsen. Rows freigeben, jede Zeile 150px: */
    grid-template-rows: none !important;
    grid-auto-rows: 150px !important;
    gap: 10px !important;
    height: auto !important;
  }
  #hc-brands .bacc .bpanel {
    height: 150px !important;
    width: auto !important;
    flex: none !important;
    border-radius: 16px !important;
    overflow: hidden !important;
    position: relative !important;
  }
  #hc-brands .bpanel .bg { opacity: 1 !important; }
  #hc-brands .bpanel .vlabel,
  #hc-brands .bpanel .sw,
  #hc-brands .bpanel .pub,
  #hc-brands .bpanel .desc { display: none !important; }
  #hc-brands .bpanel .reveal {
    opacity: 1 !important;
    transform: none !important;
    position: absolute !important;
    inset: auto 0 0 0 !important;
    width: auto !important;
    height: auto !important;
    padding: 24px 12px 10px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 2px !important;
    background: linear-gradient(180deg, transparent, rgba(10, 16, 26, 0.82)) !important;
  }
  #hc-brands .bpanel .reveal b { color: #fff !important; font-size: 15px !important; }
  #hc-brands .bpanel .reveal .go { color: #ffa64d !important; font-size: 13px !important; }

  /* ---- 13.6 · P1-6: /pre-order Most-wanted-Karten einspaltig ---- */
  .po-drop { grid-template-columns: 1fr !important; }
  .po-drop .po-drop-art { max-width: 200px; margin: 0 auto; }
  .po-drop .po-drop-body { min-width: 0 !important; }
  .po-drop .po-drop-body a,
  .po-drop .po-drop-body button {
    max-width: 100% !important;
    width: 100% !important;
    box-sizing: border-box !important;
    white-space: normal !important;
  }

  /* ---- 13.9 · P2-2: Topmarken (#hc-cats) Chips + Panel-Kopf ---- */
  #hc-cats .btab { overflow: hidden !important; }
  #hc-cats .btab .logo { flex: 0 0 auto !important; max-width: 72px !important; }
  #hc-cats .btab .meta {
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }
  #hc-cats .phead {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 8px !important;
  }
  #hc-cats .phead img {
    position: static !important;
    height: 34px !important;
    width: auto !important;
    max-width: 120px !important;
  }
  #hc-cats .phead > * { min-width: 0; }

  /* ---- 13.10 · P2-4: Footer-Akkordeon — Luecken straffen ---- */
  .site-footer .foot-grid { gap: 14px !important; }

  /* ---- 13.11 · P2-5: Themen/Beratung — 3. Karte volle Breite, Schatten weg ---- */
  #hc-themen .tgrid > *:nth-child(3):last-child { grid-column: 1 / -1; }
  #hc-themen .tgrid * { text-shadow: none !important; }
}

@media (min-width: 600px) and (max-width: 839px) {

  /* ---- 13.12 · P1-7a→B2-Fix (E1-Sweep 23.07.2026): Medium 2-up — Spezifitaets-Booster.
   * Engine-Regeln sind auf #hc-XX-IDs gescoped und schlagen main .grid (ID > Klasse).
   * :is(#hcm-x, [id]) erbt ID-Spezifitaet fuer JEDEN [id]-Match — gewinnt sauber.
   * War faelschlich repeat(3) seit 11.07. — Ansichten-Matrix (Freigabe 3010, 20.07.)
   * verlangt Tablet 661-839 = 2 Spalten, nicht 3. Report-Fund B2. */
  main :is(#hcm-x, [id]) .grid.cols-4,
  main :is(#hcm-x, [id]) .grid.cols-3,
  main :is(#hcm-x, [id]) .grid.cols-2,
  main .grid.cols-4,
  main .grid.cols-3,
  main .grid.cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  main :is(#hcm-x, [id]) .grid.is-list,
  main .grid.is-list { grid-template-columns: 1fr !important; }

  /* ---- 13.13 · P1-7b: H-Scroll-Klemmen (Uebeltaeter 12.07.: .hcm-cluster/.hcm-frame
   * (Desktop-Hero, frontend) + Topbar-Inhalte liefen bis 819/880px) ---- */
  .hcm-frame, .hcm-cluster { max-width: 100% !important; }
  #utilbar { overflow: hidden !important; }
  #utilbar .wrap { flex-wrap: wrap; row-gap: 2px; }
}

/* ============================================================================
 * Abschnitt 14 · Conversion-Paket (12.07., Welle 4) — Badge, Shipbar, Suggest,
 * Touch, Safe-Area, Back-to-top, Skeleton, Perf. JS: custom-mobile.js v3.
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 14.1 · Warenkorb-Badge (Punkt am Cart-Icon, JS setzt/entfernt) ---- */
  .hcm-cartbadge {
    position: absolute;
    top: 2px;
    right: 2px;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    border-radius: 9px;
    background: #d9435f;
    color: #fff;
    font: 700 11px/18px system-ui, sans-serif;
    text-align: center;
    pointer-events: none;
    box-shadow: 0 0 0 2px #fff;
  }
  [data-theme="midnight"] .hcm-cartbadge { box-shadow: 0 0 0 2px #101d2b; }

  /* ---- 14.2 · Gratis-Versand-Balken im Drawer ---- */
  .hcm-shipbar {
    margin: var(--hcm-s3) var(--hcm-s4) var(--hcm-s5);
    padding: var(--hcm-s3);
    border-radius: 12px;
    background: rgba(12, 30, 42, 0.06);
    font: 500 13px/1.45 var(--font-body, system-ui, sans-serif);
    color: var(--brand-navy, #0c1e2a);
  }
  .hcm-shipbar-track {
    height: 8px;
    border-radius: 4px;
    background: rgba(12, 30, 42, 0.12);
    overflow: hidden;
    margin-top: 6px;
  }
  .hcm-shipbar-fill {
    height: 100%;
    border-radius: 4px;
    background: linear-gradient(90deg, #ef820e, #ffa64d);
    transition: width 0.3s ease-out;
  }

  /* ---- 14.3 · Such-Autocomplete (Kategorien + Marken, clientseitig) ---- */
  .hcm-suggest {
    position: absolute;
    left: var(--hcm-pad);
    right: var(--hcm-pad);
    top: 100%;
    margin: 0;
    padding: 4px 0;
    list-style: none;
    background: #fff;
    border-radius: 0 0 14px 14px;
    box-shadow: 0 14px 30px rgba(12, 30, 42, 0.18);
    z-index: 120;
    max-height: 292px;
    overflow-y: auto;
  }
  .hcm-suggest:empty { display: none; }
  .hcm-suggest a {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    padding: 0 14px;
    color: var(--brand-navy, #0c1e2a);
    text-decoration: none;
    font: 500 15px/1.2 var(--font-body, system-ui, sans-serif);
  }
  .hcm-suggest a small { color: rgba(12, 30, 42, 0.55); font-size: 12px; }
  [data-theme="midnight"] .hcm-suggest { background: #16273a; }
  [data-theme="midnight"] .hcm-suggest a { color: #f2ede0; }
  [data-theme="midnight"] .hcm-suggest a small { color: rgba(242, 237, 224, 0.55); }

  /* ---- 14.4 · Touch-Feedback (nur echte Touch-Geraete, reduced-motion-sicher) ---- */
  @media (hover: none) and (prefers-reduced-motion: no-preference) {
    a.prod:active,
    .hcm-btn:active,
    .btn:active,
    .a-btn:active { transform: scale(0.97); transition: transform 0.12s ease-out; }
  }

  /* ---- 14.5 · Safe-Area (iPhone Notch / Home-Bar) ---- */
  .hcm-drawer { padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px)); }
  .pk-sidebar.open { padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px)) !important; }

  /* ---- 14.6 · Back-to-top (dezenter Kreis unten rechts, JS toggelt .hcm-show) ---- */
  .hcm-b2t {
    position: fixed;
    right: 14px;
    bottom: calc(18px + env(safe-area-inset-bottom, 0px));
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 0;
    background: rgba(255, 255, 255, 0.94);
    color: var(--brand-navy, #0c1e2a);
    box-shadow: 0 6px 18px rgba(12, 30, 42, 0.22);
    display: grid;
    place-items: center;
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
    z-index: 220;
    cursor: pointer;
  }
  .hcm-b2t.hcm-show { opacity: 1; visibility: visible; transform: none; }
  .hcm-b2t.hcm-fabshift { bottom: calc(78px + env(safe-area-inset-bottom, 0px)); }
  [data-theme="midnight"] .hcm-b2t { background: rgba(22, 39, 58, 0.96); color: #f2ede0; }

  /* ---- 14.7 · Skeleton-Shimmer bis Bild geladen (JS setzt .hcm-skel) ---- */
  .hcm-skel {
    background: linear-gradient(110deg, rgba(12, 30, 42, 0.06) 8%, rgba(12, 30, 42, 0.12) 18%, rgba(12, 30, 42, 0.06) 33%);
    background-size: 200% 100%;
    animation: hcm-shimmer 1.2s linear infinite;
    border-radius: 10px;
  }
  @keyframes hcm-shimmer { to { background-position: -200% 0; } }
  @media (prefers-reduced-motion: reduce) {
    .hcm-skel { animation: none; }
  }

  /* ---- 14.8 · Perf: Below-fold-Module erst rendern, wenn noetig ---- */
  #hc-brands,
  #hc-community,
  .site-footer .foot-grid {
    content-visibility: auto;
    contain-intrinsic-size: auto 600px;
  }

  /* =====================================================================
   * 15 · TOPMARKEN-MODUL — Marcels Variante C "Marken-Raster mit Aufklapp"
   * (Chef-Entscheid 25.07.2026; loest die Tab-Variante A vom 13.07. ab).
   *
   * Desktop bleibt unangetastet: zwei Baender, Hover waehlt das Panel.
   * Mobil baut JS (tmkAccordion) aus den acht .btab ein 2-spaltiges
   * Marken-Raster. Beim Antippen wandert das ORIGINAL-Panel der Marke in
   * ein Aufklapp-Feld hinter ihre Rasterzeile — Akkordeon, immer nur eines
   * offen, erneutes Tippen schliesst. Startzustand: alles zu.
   *
   * Warum verschieben statt nachbauen: die Panels tragen die echten
   * Produktkacheln samt Merken-Herz, Warenkorb-Knopf und Links. Als
   * dieselben Knoten funktionieren sie weiter; ein Nachbau wuerde sie
   * stillschweigend tot machen.
   *
   * Alle Regeln haengen an .hcm-acc bzw. .hcm-b* — die JS erst setzt.
   * Faellt das JS aus, bleibt schlicht das alte Layout stehen statt einer
   * leeren Sektion (gleicher Schutz wie zuvor bei .hcm-tmk).
   * Gemessen @390: zugeklappt ~708px, mit einer offenen Marke ~1.218px
   * (vorher 1.407px, dabei nur 2 von 8 Marken und 2 von 4 Produkten).
   * ===================================================================== */
  #tmk.hcm-acc .tmk-band { display: none !important; }
  #hc-cats.hcm-acc-on .sec-head .lead { display: none !important; }

  .hcm-blead {
    font-size: 14px;
    line-height: 1.5;
    color: #4d6470;
    margin: 6px 0 0;
  }
  [data-theme="midnight"] .hcm-blead { color: rgba(255, 255, 255, 0.72); }

  .hcm-bgrid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }

  /* Marken-Kachel: Logo, Name, Produktzahl, Chevron; Markenfarbe als
   * schmaler Streifen links (--c kommt vom Original-Reiter) */
  .hcm-btile {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 104px;
    padding: 12px 10px;
    margin: 0;
    border: 1px solid rgba(12, 30, 42, 0.10);
    border-radius: 16px;
    background: #fff;
    color: #0c1e2a;
    font: inherit;
    text-align: center;
    cursor: pointer;
    overflow: hidden;
    -webkit-appearance: none;
    appearance: none;
    transition: box-shadow 0.18s ease, border-color 0.18s ease;
  }
  .hcm-btile::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: var(--c, #ef820e);
    opacity: 0.85;
  }
  .hcm-btile.is-open {
    border-color: var(--c, #ef820e);
    box-shadow: inset 0 0 0 2px var(--c, #ef820e);
    background: #fbf8f0;
  }
  .hcm-bt-logo {
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .hcm-bt-logo img {
    max-height: 32px;
    max-width: 104px;
    width: auto;
    object-fit: contain;
  }
  .hcm-bt-nm {
    font-size: 12.5px;
    font-weight: 700;
    line-height: 1.15;
  }
  /* Marken ohne Bild-Logo (The Army Painter): der Name ist das Logo */
  .hcm-bt-word {
    min-height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 800;
    line-height: 1.15;
  }
  .hcm-bt-cnt {
    font-size: 10.5px;
    color: #4d6470;
    display: flex;
    align-items: center;
    gap: 5px;
  }
  .hcm-bt-chev { transition: transform 0.25s ease; }
  .hcm-btile.is-open .hcm-bt-chev { transform: rotate(180deg); }

  /* Aufklapp-Feld: volle Rasterbreite, sitzt hinter der Zeile der Marke.
   * BEWUSST OHNE eigene Flaeche (Chef-Fund 25.07.: "doppelter Hintergrund"):
   * das Panel bringt seinen weissen Grund, den Radius und die markenfarbige
   * Oberkante bereits selbst mit. Ein zweiter Kasten drumherum sah aus wie
   * zwei ineinandergeschachtelte Karten. Hier bleibt nur die Rasterbreite
   * und das Aufklappen — die Optik macht das Panel. Spart nebenbei 43px. */
  .hcm-bslot {
    grid-column: 1 / -1;
    background: none;
    border: 0;
    border-radius: 0;
    padding: 0;
    animation: hcmBOpen 0.26s cubic-bezier(0.22, 0.61, 0.36, 1);
  }
  @keyframes hcmBOpen {
    from { opacity: 0; transform: translateY(-7px); }
    to   { opacity: 1; transform: none; }
  }
  .hcm-bslot .panel {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 14px 13px !important;   /* Desktop-Polster 20/22 ist mobil zu satt */
  }
  /* MARKEN-LEISTE als Kopfzeile des Aufklapp-Feldes.
   * Inhalt: Marken-Logo · Markenname · "Alle"-Knopf. Sie sitzt oben im Feld
   * und scrollt mit den Artikeln mit — Chef-Abnahme 25.07. an der Demo
   * `Mobile-Frontend/DEMO_Top-Marken-Aufklapp_W7.html` ("genauso").
   *
   * NICHT klebend: eine Variante, in der die Leiste unter der Kopfleiste
   * haengenbleibt, war gebaut und lag in derselben Demo als Schalter daneben —
   * Marcel hat die ruhige Fassung gewaehlt. Falls das je zurueckkommt, reichen
   * drei Zeilen hier: position:sticky + top:132px + z-index:20 (132px = Unter-
   * kante der Kopfleiste, seit W6 konstant; z-index unter deren 50 bleiben).
   *
   * Der Kicker "TOPMARKE" und der Untertitel fliegen raus — der Markenname
   * steht schon auf der Kachel darueber, mehr braucht die Zeile nicht.
   * Die negativen Raender heben das Panel-Polster auf, damit die Leiste
   * randlos ueber die volle Panel-Breite laeuft.
   * min-height:0 ist Pflicht — das Modul reserviert hier 66px fuer das
   * Logo-Rund (gleiche Falle wie W5-Set-Logo und W6-Toggle: ein geerbtes
   * min-height schlaegt jede Hoehenangabe). */
  #hc-cats .hcm-bslot .phead {
    flex-wrap: nowrap !important;
    align-items: center !important;
    gap: 10px !important;
    min-height: 0 !important;
    margin: -14px -13px 12px !important;
    padding: 9px 13px !important;
    background: #fff;
    border-bottom: 1px solid rgba(12, 30, 42, 0.08);
    border-radius: 16px 16px 0 0;
  }
  [data-theme="midnight"] #hc-cats .hcm-bslot .phead {
    background: #0e1a24;
    border-bottom-color: rgba(255, 255, 255, 0.12);
  }
  /* Kicker + Untertitel raus, Markenname bleibt als Kennung in der Leiste */
  .hcm-bslot .phead .ptitle > .k,
  #hc-cats .hcm-bslot .phead .ptitle > .sub { display: none !important; }
  #hc-cats .hcm-bslot .phead .ptitle > h3 {
    display: block !important;
    font-size: 14px !important;
    line-height: 1.2 !important;
    margin: 0 !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  /* Das Logo ist im Modul absolut positioniert UND per transform zentriert —
   * beides muss weg, sonst ignoriert es die Flex-Reihenfolge und haengt um
   * seine halbe Groesse verschoben links aus der Leiste heraus (Fund 25.07.). */
  #hc-cats .hcm-bslot .phead .logo {
    display: flex !important;
    align-items: center;
    order: -1 !important;
    position: static !important;
    transform: none !important;
    inset: auto !important;
    margin: 0 !important;
    height: 24px;
    flex: 0 0 auto;
  }
  #hc-cats .hcm-bslot .phead .logo img {
    max-height: 24px !important;
    max-width: 64px !important;
    width: auto !important;
  }
  #hc-cats .hcm-bslot .phead .ptitle { flex: 1 1 auto; min-width: 0; }
  #hc-cats .hcm-bslot .phead a.all { flex: 0 0 auto; margin-left: auto; }
  /* Der "Alle <Marke>"-Link ist im Modul ein 18px-Kreis: seine Beschriftung
   * (.t) ist ausgeblendet und der Pfeil auf 0x0 zusammengefallen — im
   * Aufklapp-Feld sieht das aus wie ein leerer Kreis (Fund Trockenlauf
   * 25.07.). Hier bekommt er Beschriftung, Pfeil und ein echtes Tap-Ziel.
   * Die unsichtbare ::after-Trefferflaeche aus R2-2 bleibt zusaetzlich. */
  .hcm-bslot .phead a.all {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    width: auto !important;
    height: auto !important;
    min-height: 34px;
    padding: 6px 13px !important;
    border: 0 !important;
    background: none !important;
    /* Der zarte Innen-Schatten kommt aus dem Desktop-Stil und bleibt —
     * mit Pillenform passt er zur restlichen Bedien-Sprache des Shops */
    border-radius: 999px !important;
    font-size: 12.5px;
    font-weight: 700;
    color: var(--c, #ef820e);
    white-space: nowrap;
  }
  /* Beschriftung kurz halten: der Original-Text lautet "Alle <Marke>" und
   * wiederholt damit den Markennamen, der in derselben Leiste direkt daneben
   * steht. Zu dritt (Logo + Name + langer Knopf) passt das @360 nicht mehr —
   * der Markenname wurde mit Auslassungspunkten abgeschnitten (Fund 25.07.).
   * Darum in der Leiste nur "Alle" + Pfeil; die Marke sagt die Leiste selbst. */
  .hcm-bslot .phead a.all .t { display: none !important; }
  .hcm-bslot .phead a.all::before {
    content: "Alle";
    font-weight: 700;
    font-size: 12.5px;
  }
  .hcm-bslot .phead a.all svg {
    width: 14px !important;
    height: 14px !important;
    flex: 0 0 14px;
  }
  /* Alle vier Produkte als 2x2 — die Variante-A-Kappung auf zwei ist weg */
  .hcm-bslot .prods {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 10px !important;
  }
  .hcm-bslot .prods > * { display: flex !important; }

  /* Kachel-Trimm im Aufklapp-Feld: die Vollformat-Kachel ist 304px hoch —
   * zu zweit nebeneinander und in zwei Reihen sprengt das den Bereich
   * (offen waeren es sonst 1.494px, also MEHR als die 1.407px vorher).
   * Gemessen 25.07.: Bild 138->96 und straffere Polster/Schriften bringen
   * die Kachel auf 245px und den offenen Bereich auf ~1.375px.
   * Bewusst NICHT angetastet: das Sprach-Kuerzel (.meta-row). Es haette
   * weitere 60px gebracht, ist bei Karten aber ein Kaufkriterium (DE/EN)
   * und darf auf der Kachel nicht fehlen. */
  .hcm-bslot .prod .pim { height: 96px !important; }
  .hcm-bslot .prod .pim img { max-height: 96px !important; }
  .hcm-bslot .prod .pb { padding: 9px 9px 10px !important; gap: 5px !important; }
  .hcm-bslot .prod .cat { font-size: 9.5px !important; letter-spacing: 1.2px !important; }
  .hcm-bslot .prod .nm { font-size: 11.5px !important; line-height: 1.28 !important; }
  .hcm-bslot .prod .rowend { padding-top: 8px !important; }
  .hcm-bslot .prod .add {
    width: 32px !important;
    height: 32px !important;
    flex: 0 0 32px !important;
  }

  /* Dark-Mode */
  [data-theme="midnight"] .hcm-btile {
    background: rgba(255, 255, 255, 0.06);
    color: #fff;
    border-color: rgba(255, 255, 255, 0.14);
  }
  [data-theme="midnight"] .hcm-btile.is-open { background: rgba(255, 255, 255, 0.10); }
  [data-theme="midnight"] .hcm-bt-cnt { color: rgba(255, 255, 255, 0.66); }
  /* Fuer .hcm-bslot braucht der Dark-Mode nichts: das Feld hat keine eigene
   * Flaeche mehr, das Panel darin bringt sein Dark-Styling selbst mit. */
}

/* Sicherheitsnetz: Raster und Aufklapp-Feld existieren im DOM auch auf
 * Desktop (Resize-Kante) — dort nie anzeigen. Ein geliehenes Panel holt
 * das JS beim Wechsel selbst an seinen Platz zurueck. */
@media (min-width: 840px) {
  .hcm-bgrid,
  .hcm-blead { display: none !important; }
}

/* ============================================================================
 * Abschnitt 16 · Chef-Entscheid 23.07.2026 — Startseiten-Hero: Zusatzbilder
 * (Karten-/Modell-Deko) mobil AUS. Kollidierten auf iPhones, gestapeltes
 * Layout wurde zu lang. Bleibt <=839px: Hintergrund, Eyebrow/H1/Subline,
 * CTAs, Dots/Navigation (aktuell keine im Live-DOM — .hcm-frame ist leer,
 * nur 1 Slide aktiv). Desktop (>=840px) bleibt PIXELIDENTISCH — .hcm-cluster
 * ist Hero-Subtree-Eigentum von frontend (Vertrag §2a), hier nur READ+OVERRIDE
 * innerhalb der eigenen Media-Zone, keine Umbenennung/kein Markup-Eingriff.
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 16.1 · Bild-Cluster aus ---- */
  .hcm-hero .hcm-cluster { display: none !important; }

  /* ---- 16.2 · Hero-Rahmen nachziehen (sonst Leerflaeche/volle Fix-Hoehe) ----
   * Live-Befund: ab ~700px (Medium-Bereich innerhalb <=839) setzt frontends
   * Basis-CSS .hcm-hero auf eine feste height:clamp(480px,86vh,664px) und
   * positioniert .hcm-copy absolut/50%-zentriert NEBEN .hcm-cluster (welches
   * mit height:100% die Hoehe traegt). Ohne Cluster bliebe sonst rechts eine
   * leere Flaeche UND die volle Fix-Hoehe stehen (kein Auto-Shrink).
   * Fix: die GESAMTE Mobile-Zone (<=839, also auch die Medium-Bandbreite)
   * auf das schon vorhandene Compact-Stack-Muster (<600px, natuerlicher
   * Fluss) zwingen — Hero/Rotator/aktiver Slide/Stage/Copy auf position:static
   * + height:auto, damit die Hoehe rein aus dem Text-Inhalt entsteht.
   * Kein neuer Hook, nur Overrides bestehender Hero-Subtree-Klassen. */
  .hcm-hero { height: auto !important; min-height: 0 !important; }
  .hcm-hero .hcm-rotator {
    position: static !important;
    inset: auto !important;
    height: auto !important;
  }
  .hcm-hero .hcm-slide.is-active {
    position: static !important;
    inset: auto !important;
    display: block !important;
    height: auto !important;
    opacity: 1 !important;
    visibility: visible !important;
  }
  .hcm-hero .hcm-stage {
    display: flex !important;
    flex-direction: column !important;
    height: auto !important;
    min-height: 0 !important;
  }
  .hcm-hero .hcm-copy {
    position: static !important;
    top: auto !important;
    left: auto !important;
    transform: none !important;
    width: 100% !important;
  }
}

/* ============================================================================
 * Abschnitt 17 · E1-Sweep-Fixes Welle 1 (23.07.2026) — iOS-Auto-Zoom Kauf-Trichter
 * (A1), -webkit-Praefixe fuer Drawer-Blur (A5) + Filter-Chip-Touch-Select (A6).
 * Quelle: 00_MASTER/_BEREICHE/frontend-mobile/arbeit/E1_Sweep_E3_Precheck_2026-07-23.md
 * (Rolle mobile, ausschliesslich mobile-Zone-Befunde — A4 bleibt Frontend-Melde-
 * Liste und wird hier NICHT angefasst, siehe custom.js Z. 23904).
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 17.1 · A1: iOS-Auto-Zoom im gesamten Kauf-Trichter. golive-system-pages.css
   * setzt .form-control/input[type=..]/select/textarea auf 14.5px (Bootstrap-3-Erbe);
   * die alte :where()-Regel in Abschnitt 3 hat Spezifitaet 0 und verliert gegen
   * body.hc-xx main .form-control (0,2,2) bzw. input[type=..] (0,2,3). Hier 1:1
   * gespiegelte Selektoren mit gleicher/hoeherer Spezifitaet — custom-mobile.css
   * laedt NACH golive-system-pages.css, also gewinnt der Tie-Break. */
  body.hc-cart main .form-control, body.hc-checkout main .form-control,
  body.hc-conf main .form-control, body.hc-acct main .form-control,
  body.hc-auth main .form-control, body.hc-wl main .form-control,
  body.hc-news main .form-control, body.hc-kontakt main .form-control,
  body.hc-cart main input[type="text"], body.hc-checkout main input[type="text"],
  body.hc-conf main input[type="text"], body.hc-acct main input[type="text"],
  body.hc-auth main input[type="text"], body.hc-wl main input[type="text"],
  body.hc-news main input[type="text"], body.hc-kontakt main input[type="text"],
  body.hc-cart main input[type="email"], body.hc-checkout main input[type="email"],
  body.hc-conf main input[type="email"], body.hc-acct main input[type="email"],
  body.hc-auth main input[type="email"], body.hc-wl main input[type="email"],
  body.hc-news main input[type="email"], body.hc-kontakt main input[type="email"],
  body.hc-cart main input[type="tel"], body.hc-checkout main input[type="tel"],
  body.hc-conf main input[type="tel"], body.hc-acct main input[type="tel"],
  body.hc-auth main input[type="tel"], body.hc-wl main input[type="tel"],
  body.hc-news main input[type="tel"], body.hc-kontakt main input[type="tel"],
  body.hc-cart main input[type="password"], body.hc-checkout main input[type="password"],
  body.hc-conf main input[type="password"], body.hc-acct main input[type="password"],
  body.hc-auth main input[type="password"], body.hc-wl main input[type="password"],
  body.hc-news main input[type="password"], body.hc-kontakt main input[type="password"],
  body.hc-cart main input[type="number"], body.hc-checkout main input[type="number"],
  body.hc-conf main input[type="number"], body.hc-acct main input[type="number"],
  body.hc-auth main input[type="number"], body.hc-wl main input[type="number"],
  body.hc-news main input[type="number"], body.hc-kontakt main input[type="number"],
  body.hc-cart main select, body.hc-checkout main select,
  body.hc-conf main select, body.hc-acct main select,
  body.hc-auth main select, body.hc-wl main select,
  body.hc-news main select, body.hc-kontakt main select,
  body.hc-cart main textarea, body.hc-checkout main textarea,
  body.hc-conf main textarea, body.hc-acct main textarea,
  body.hc-auth main textarea, body.hc-wl main textarea,
  body.hc-news main textarea, body.hc-kontakt main textarea {
    font-size: 16px !important;
  }

  /* ---- 17.2 · A5: -webkit-backdrop-filter fuer die Mobile-Filter-Drawer-Backdrops
   * (aeltere iOS-Versionen < 18 ignorieren unpraefixtes backdrop-filter komplett).
   * Rein additiv (neue Deklaration, keine Spezifitaets-Frage/Ueberschreibung). */
  :is(#hc-op, #hc-pk, #hc-gt, #hc-gp, #hc-mk, #hc-mtg, #hc-ygo, #hc-swu, #hc-dbs,
      #hc-fab, #hc-nrk, #hc-ws, #hc-cp, #hc-dg, #hc-sgl, #hc-slv, #hc-dbx, #hc-rft,
      #hc-clb) .drawer-backdrop {
    -webkit-backdrop-filter: blur(2px);
  }
  :is(#hc-op, #hc-pk, #hc-gt, #hc-gp, #hc-mk, #hc-mtg, #hc-ygo, #hc-swu, #hc-dbs,
      #hc-fab, #hc-nrk, #hc-ws, #hc-cp, #hc-dg, #hc-sgl, #hc-slv, #hc-dbx, #hc-rft,
      #hc-clb) .drawer-apply {
    -webkit-backdrop-filter: blur(10px);
  }

  /* ---- 17.3 · A6: -webkit-user-select fuer Filter-Chips (langes Antippen konnte
   * auf alten iOS-Versionen das native Text-Auswahl-Callout-Menue ausloesen). */
  :is(#hc-op, #hc-pk, #hc-gt, #hc-gp, #hc-mk, #hc-mtg, #hc-ygo, #hc-swu, #hc-dbs,
      #hc-fab, #hc-nrk, #hc-ws, #hc-cp, #hc-dg, #hc-sgl, #hc-slv, #hc-dbx, #hc-rft,
      #hc-clb) .f-pill {
    -webkit-user-select: none;
  }
}

/* ============================================================================
 * Abschnitt 18 · E0-B Rollout-Welle (24.07.2026) — Hero-Klemme sitewide weg
 * Quelle: 00_MASTER/_BEREICHE/frontend-mobile/arbeit/E0B_Hero-Inventur_2026-07-24.md
 * Basis-Fix ist Abschnitt 11.1 (max-height/overflow-Klemme entfernt) — loest
 * laut Inventur 10 von 13 A-Faellen automatisch (7 TCG-Franchise-Seiten +
 * Model-Kits + Pre-Order + alle 3 ak-hero-Seiten). pk-quick/.cat-stats.hc-trust
 * brauchten KEINE Zusatzregel — werden durch den Stapel-Flow automatisch
 * sichtbar+kompakt (live verifiziert /pokemon-tcg @390: 98px/116px, bereits
 * display:flex aus golive-content.css geerbt). Dieser Abschnitt ergaenzt nur
 * die 3 seitenspezifischen Resthebel + den OP15-H-Scroll-Guard.
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 18.1 · Gunpla-Flaggschiff (#hc-gp) kompakt statt 14-26% sichtbar ----
   * .cat-hero-visual traegt sonst eine feste 340px-Wrapper-Hoehe (fuer die
   * Kartenfaecher-Duo-Variante gedacht) -> bei Gunpla mit nur 1 Bild bleiben
   * sonst 160px Leerraum. height:auto kollabiert den Wrapper korrekt auf das
   * (jetzt position:static) Einzelbild. Nur #hc-gp-Scope, NICHT die Duo-
   * Variante generell: dort ist .cat-hero-visual mit ABSOLUTE-positionierten
   * .card-side-Faechern bewusst 340px hoch — live verifiziert, ein generelles
   * height:auto haette dort ein Fan-Card ueber den oberen Rand hinausgeschoben
   * (Testprotokoll: pokemon-tcg @768, Karte 2 sonst top<heroTop). */
  #hc-gp .cat-hero-visual { height: auto !important; }
  #hc-gp .cat-hero-visual .holo-card.card-main {
    height: clamp(180px, 42vw, 240px) !important;
    position: static !important;
  }

  /* ---- 18.2 · Alle-Marken (/alle-marken) Logo-Raster: eigene Hoehe statt
   * geerbtes height:100% (folgte sonst der jetzt aufgehobenen Hero-Klemme
   * ueber Prozent-Vererbung) -> alle 8 Logos/4 Reihen wieder vollstaendig da,
   * inkl. "+40 weitere Marken" (Reihe 4, vorher 0% sichtbar). */
  .mk-hero-visual { height: auto !important; }

  /* ---- 18.3 · Sammelkarten (/sammelkarten) Breiten-Bug: NUR die feste
   * 696px-Spaltenbreite responsiv machen, Hoehe bewusst NICHT komprimiert
   * (funktionale TCG-Auswahl-Navigation, kein reiner Deko-Hero — D2 offen,
   * siehe Rueckgabe/Marcel-Frage). min-width:0 auf den Grid-Items ist
   * Pflicht: 1fr allein greift nicht, weil Grid-Tracks per Default auf
   * minmax(auto,1fr) laufen und "auto" = Content-Min-Breite der Kinder
   * (696px) erzwingt (klassische Grid-Falle, live per getComputedStyle-Diff
   * verifiziert: grid-template-columns:1fr ohne min-width blieb bei 696px). */
  .hc-sk-hgrid { grid-template-columns: 1fr !important; }
  .hc-sk-hgrid > * { min-width: 0 !important; }

  /* ---- 18.4 · OP15-Landingpage (/op15-adventure-on-kamis-island) H-Scroll-
   * Guard, Design unangetastet. 3 unabhaengige Ursachen live isoliert:
   * (a) .stickybar + .stormbg sind position:fixed mit width:100vw/inset:0 —
   *     ihr Containing Block (ICB) maß in der Testumgebung 410px statt der
   *     tatsaechlichen 390px (window.innerWidth-vs-documentElement.clientWidth
   *     -Diskrepanz). Fix: body:has(...) bekommt per transform einen neuen
   *     Containing Block, damit beide Fixed-Elemente gegen den korrekt
   *     gemessenen Body (390px) rechnen statt gegen die ICB.
   * (b) .wrap.story enthaelt Scroll-Reveal-Elemente (.rv-l/.rv-r) mit einer
   *     Pre-Reveal-transform:translateX(-44px) — vor dem Ins-Bild-Scrollen von
   *     keinem overflow:hidden-Vorfahren eingefangen. clip auf den Wrapper
   *     aendert die Animation selbst NICHT (Endzustand bei translateX:0
   *     unveraendert), faengt nur den Off-Stage-Bleed ein. Nebeneffekt: auch
   *     auf OP16 vorhanden (gleiche Komponente), dort bereits 0px Overflow —
   *     Regel dort wirkungslos/harmlos (kein Design-Eingriff).
   * (c) .sb-in (Sticky-Bar-Inhalt) lief mit flex-wrap:nowrap bei 342px
   *     Innenbreite ueber den CTA-Button hinaus -> wrap erlaubt 2. Zeile
   *     statt Overflow, kein Inhalt verschwindet.
   * Ergebnis (live gemessen, Body/HTML overflow-x:clip aus Abschnitt 2 bleibt
   * zusaetzlich als Backstop bestehen): @768 773->753px (0px Rest) · @390
   * 410->399px (Rest ~9px, vermutlich Test-Tool-Messartefakt s.o. — clip
   * verhindert unabhaengig davon jede tatsaechliche Scroll-Geste). */
  body:has(.stickybar, .stormbg) { transform: translateZ(0) !important; }
  .wrap.story { overflow-x: clip !important; }
  .sb-in { flex-wrap: wrap !important; row-gap: 6px !important; }
}

/* ============================================================================
 * Abschnitt 19 · E0-B.2 Hero-Kompaktierung (24.07.2026) — dieselben Inhalte,
 * aber verdichtet. Abschnitt 18 hat die Klemme sitewide entfernt (0% -> 100%
 * sichtbar), aber dadurch wurden die Heroes zu LANG (@390: pokemon-tcg 1073px ·
 * karten-ankauf 1134px · wunsch-service 1169px · model-kits 1063px · gunpla
 * 963px · faq 1014px · pre-order 889px). Ziel 550-700px, hart <800px — NICHTS
 * ausgeblendet, nur geklappt/gewischt/verdichtet (Chef-Prinzip). Live gegen
 * https://hawaiicards.de per Browser-Pane validiert (alle 8 Verify-Seiten x
 * 360/390/768/834, 0 H-Scroll, 0 Konsolen-Fehler, Desktop @1280 unberuehrt da
 * alles in dieser @media-Zone).
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 19.1 · Basis-Bugfix: .cat-hero-grid align-items:center (golive-Erbe)
   * blaest ein nowrap+overflow-x:auto-Kind (Wisch-Zeile) auf max-content-Breite
   * auf und schiebt die Text-Spalte aus dem Viewport (live gefunden bei diesem
   * Umbau: .cat-hero-grid hat KEIN eigenes align-items aus Abschnitt 11.1 --
   * geerbtes golive align-items:center wirkt in der jetzt column-Richtung auf
   * der Kreuzachse (Breite) statt Hauptachse (Hoehe); ein flex-item ohne
   * explizite Breite bekommt dann shrink-to-fit statt 100% -- bei einem tief
   * verschachtelten overflow-x:auto-Kind mit nowrap-Inhalt eskaliert das auf
   * dessen max-content-Breite, Text-Spalte landete bei left:-175px/w:741px
   * ausserhalb des 390px-Viewports, von overflow-x:clip unsichtbar
   * abgeschnitten. stretch macht Spalten wieder 100% breit, wie der Stapel-Flow
   * es (Abschnitt 11.1) eigentlich vorsah. Ohne diesen Fix waeren 19.4/19.5/
   * 19.8/19.10/19.11 unten auf 7+ Seiten unsichtbar/verschoben gerendert. */
  .cat-hero:not(#_) .cat-hero-grid { align-items: stretch !important; gap: var(--hcm-s2) !important; }

  /* ---- 19.2 · Vertikale Dichte: Hero-Innenabstand von 24px (Abschnitt 10.1)
   * auf 16px, damit die Kompaktierung unten nicht durch Fix-Paddings
   * aufgefressen wird. */
  .cat-hero:not(#_) { padding-top: var(--hcm-s4) !important; padding-bottom: var(--hcm-s4) !important; }

  /* ---- 19.3 · Intro-/SEO-Text im Hero: 3-Zeilen statt 4 (Abschnitt 11.2
   * clamped bereits generisch ueber main p.lead -- hier gezielt fuer
   * Hero-Leads knapper). Toggle-Button aus 11.2 bleibt unveraendert (JS
   * entfernt/setzt nur die Klasse hcm-textclamp, keine JS-Aenderung noetig). */
  .cat-hero:not(#_) p.lead.hcm-textclamp { -webkit-line-clamp: 3 !important; }

  /* ---- 19.4 · .pk-quick-Chips: einzeilige Wisch-Leiste statt mehrzeiligem
   * Stapel (Mechanik 2, betrifft alle 7 Franchise-Seiten + Gunpla). Fade-Kante
   * rechts als Wisch-Affordanz per mask-image (kein Markup noetig). */
  .cat-hero:not(#_) .pk-quick {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    scrollbar-width: none;
    gap: var(--hcm-s3) !important;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
            mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
  }
  .cat-hero:not(#_) .pk-quick::-webkit-scrollbar { display: none; }
  .cat-hero:not(#_) .pk-quick button { flex: 0 0 auto !important; white-space: nowrap !important; }

  /* ---- 19.5 · .cat-stats.hc-trust-Badges: gleiche Wisch-Mechanik (Mechanik 3;
   * 7 Franchise-Seiten + Gunpla + /alle-marken teilen dieselbe Klasse). */
  .cat-hero:not(#_) .cat-stats.hc-trust {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    scrollbar-width: none;
    padding: var(--hcm-s3) 0 0 !important;
    gap: 18px !important;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
            mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
  }
  .cat-hero:not(#_) .cat-stats.hc-trust::-webkit-scrollbar { display: none; }
  .cat-hero:not(#_) .cat-stats.hc-trust .hc-trust-item { flex: 0 0 auto !important; white-space: nowrap !important; }

  /* ---- 19.6 · Franchise-Logo (h1 img) moderat verkleinert -- bleibt
   * erkennbar (Brand-Vorgabe), nur ein Groessenschritt kleiner. ---- */
  .cat-hero:not(#_) h1 img.hc-franchise-logo { width: clamp(140px, 44vw, 190px) !important; height: auto !important; }

  /* ---- 19.7 · Groesster Einzelblock (Mechanik 5): Fan-Card-Visual (rotiertes
   * Duo/Solo-Kartenbild) auf kompakte Hoehe/Breite. Funktioniert sicher, weil
   * .card-main mit left:50%;top:50%;transform:translate(-50%,-50%) rotate(...)
   * (hawaiicards.css) UM DIE EIGENE MITTE zentriert rotiert -- prozentual, nicht
   * fix-pixelig -- ein kleinerer Container/eine kleinere Karte bleibt sauber
   * zentriert statt zu verrutschen (live verifiziert). #hc-gp bewusst
   * ausgenommen: eigene, bereits abgenommene 18.1-Regel fuer das flache
   * Einzelbild (position:static, width:auto!important dort) -- ein blindes
   * height:auto/width-Clamp hier wuerde die 18.1-Klemme (height:180-240px,
   * width:auto) ueberschreiben (gleiche Spezifitaet, diese Regel steht spaeter
   * im File = wuerde gewinnen) und den bereits gefixten Gunpla-Flaggschiff
   * wieder verzerren. hc-lc/hc-dg haben ID-gescopte !important-Ketten in
   * golive-content.css (width/height:280px/391px!important) -- eigene,
   * gleich starke ID-Selektoren noetig, die als spaeter geladene Regel
   * gewinnen (sonst blieben Lorcana/Digimon bei der vollen 391px-Kartenhoehe). */
  .cat-hero:not(#_):not(#hc-gp) .cat-hero-visual { height: clamp(150px, 42vw, 210px) !important; }
  .cat-hero:not(#_):not(#hc-gp) .holo-card.card-main,
  #hc-lc .cat-hero-visual .holo-card.card-main,
  #hc-dg .cat-hero-visual .holo-card.card-main {
    width: clamp(110px, 30vw, 150px) !important;
    max-width: none !important;
    height: auto !important;
  }

  /* ---- 19.8 · ak-hero (/karten-ankauf, /wunsch-service, /faq): CTA-Buttons
   * enger, Pills als Wisch-Zeile statt Stapel (Mechanik 2/4). ---- */
  .cat-hero.ak-hero .ak-hero-cta { margin-top: var(--hcm-s1) !important; gap: var(--hcm-s3) !important; }
  .cat-hero.ak-hero .ak-hero-cta .btn { padding-top: 12px !important; padding-bottom: 12px !important; }
  .cat-hero.ak-hero .ak-hero-pills {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    scrollbar-width: none;
    margin-top: var(--hcm-s2) !important;
    gap: var(--hcm-s3) !important;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
            mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
  }
  .cat-hero.ak-hero .ak-hero-pills::-webkit-scrollbar { display: none; }
  .cat-hero.ak-hero .ak-pill { flex: 0 0 auto !important; white-space: nowrap !important; }

  /* ---- 19.9 · /karten-ankauf: .ak-cascade (animierte Fallkarten-Deko, 440px
   * fix, 17s-Keyframe-Loop) per transform:scale kompaktiert statt Hoehe direkt
   * zu setzen -- Animation/Choreo bleibt intakt (Keyframes laufen unveraendert
   * im lokalen Koordinatensystem), nur visuell kleiner. margin-bottom
   * kompensiert den sonst leeren Flow-Platz (identisches Referenz-Muster
   * bereits in golive-content.css bei #hc-dg .hc-dg-fan). width:100% ist
   * PFLICHT: .ak-cascade traegt golive margin:0 auto -- bei align-items:stretch
   * (19.1) deaktiviert ein Auto-Margin auf der Kreuzachse per Spezifikation den
   * Stretch, die Box kollabierte in Tests sonst auf 0 Breite. */
  .cat-hero.ak-hero .ak-cascade {
    width: 100% !important;
    transform: scale(0.42);
    transform-origin: top center;
    margin-bottom: -255px !important;
  }

  /* ---- 19.10 · /faq: Themen-Karten (topic-strip, 5 Karten) als Wisch-Zeile
   * statt 1-spaltigem Grid-Stapel (war groesster Einzelblock, 465px). ---- */
  .faq-hero .topic-strip {
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    scrollbar-width: none;
    grid-template-columns: none !important;
    gap: var(--hcm-s2) !important;
    margin-top: var(--hcm-s3) !important;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
            mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
  }
  .faq-hero .topic-strip::-webkit-scrollbar { display: none; }
  .faq-hero .topic-strip .topic { flex: 0 0 auto !important; width: 160px !important; }
  .faq-hero .faq-search { margin-top: var(--hcm-s2) !important; }
  .faq-hero .faq-meta { margin-top: var(--hcm-s2) !important; row-gap: 4px !important; }

  /* ---- 19.11 · /pre-order: .po-pills (6 Filter-Buttons/Produktkategorie-Tabs)
   * als Wisch-Zeile statt Stapel. ---- */
  .po-hero .po-pills {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    scrollbar-width: none;
    gap: var(--hcm-s2) !important;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
            mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
  }
  .po-hero .po-pills::-webkit-scrollbar { display: none; }
  .po-hero .po-pills button { flex: 0 0 auto !important; white-space: nowrap !important; }

  /* ---- 19.12 · /model-kits: .cat-stats (4 Kacheln, kein .hc-trust) Gap
   * gestrafft; .hero-brands (6 Marken-Kacheln, aria-hidden="true" = rein
   * dekorativ -- gleiche Praezedenz wie 13.4 Hero-Deko-Karten "ganz weg", hier
   * bewusst nur verkleinert statt entfernt) per scale kompaktiert. ---- */
  .cat-hero:not(#_) .cat-stats:not(.hc-trust) { gap: 10px !important; margin-top: var(--hcm-s1) !important; }
  .cat-hero:not(#_) .hero-brands {
    transform: scale(0.38);
    transform-origin: top center;
    margin-bottom: -278px !important;
  }
}

/* ============================================================================
 * Abschnitt 20 · E3-W2 (24.07.2026) — Ansichten-Mapping shopweit HART durchsetzen
 * + Gunpla-Kachel-Fixes (Badge-Overlap/Button-Clipping). Chef-Ansage 24.07.: mobil
 * (<=839px) existieren GENAU 3 Ansichten — Standard=2 Kacheln/Reihe, Gross=1
 * Kachel/Reihe, Liste=untereinander. 3-up ist Desktop-only, darf <=839 NIE
 * auftreten. Live-Beweis: E2_Voll-Audit_2026-07-24.md (iPhone13/S23/Pixel9,
 * 360/390/412 identisch reproduziert).
 *
 * ROOT CAUSE (live verifiziert an golive-content.css?v=20260723m, 24.07.2026):
 * golive-content.css traegt ZWEI widerspruechliche Regel-Generationen fuer
 * dieselben ID-Grids (#hc-op/#hc-pk/#hc-gt/#hc-gp/#hc-mk/... + #hcSearchList):
 *   (a) Z.1913f "Ansichten-Standard Pilot" (03.07.2026, STALE — vor der Klassen-
 *       Umdeutung vom 20.07. — UNGESCOPED, KEINE @media-Klammer, gilt bei JEDER
 *       Breite) mit !important:
 *         :is(#hc-op,#hc-pk,...,#hc-gp,#hc-mk,...) .grid.cols-3{repeat(2,1fr)!important}
 *         :is(...) .grid.cols-4{repeat(3,1fr)!important}
 *   (b) Z.3344ff "TABLET/PHONE: Spalten (Premium+Suche)" (neuer, INHALTLICH
 *       KORREKT nach Freigabe 3010/20.07., liegt in @media(max-width:839px)),
 *       aber OHNE !important:
 *         :is(...) .grid, :is(...) .grid.cols-4{repeat(2,1fr)}
 *         :is(...) .grid.cols-3{1fr}
 * (b) ist richtig, verliert aber gegen (a): !important entscheidet IMMER vor
 * Spezifitaet/Reihenfolge/@media-Scope. Live gemessen an /gunpla + /pokemon-tcg
 * @390: "grid cols-4" rendert grid-template-columns:110px 110px 110px (3
 * Spalten) exakt wie im E2-Report. #hcSearchList traegt eine DRITTE, noch
 * juengere injizierte !important-Kette (@max-width:559px -> 1fr), die die
 * Suche faelschlich auf 1 Spalte klemmt statt "wie Standard" (2 Sp.).
 * Abschnitt 13.12 (23.07.) hat (a) fuer Tablet 600-839 bereits mit einem
 * ":is(#hcm-x,[id])"-Spezifitaets-Booster geschlagen (ID-Treffer via [id] auf
 * JEDEM ID-Vorfahren + eigenes "main" gewinnt den Typ-Tiebreak gegen (a)s
 * ID+2-Klassen-Selektor). Es fehlte aber: der Booster im Phone-Zweig (<600px,
 * hier greift nur die unboosted Regel aus 9.2 -> verliert gegen (a) -> 3-up),
 * die Gross-Korrektur auf 1 statt 2 Spalten (Klassen-Umdeutung Brand Book §3.4/
 * Ansichten-Matrix 20.07.2026), und #hcSearchList (kein cols-Klassenname noetig,
 * "main :is(#hcm-x,[id]) .grid" faengt jeden ID-gescopten Grid-Container generisch
 * ab, auch ohne .cols-4/.cols-3).
 *
 * Dieser Abschnitt ist ab jetzt die alleinige Quelle der Wahrheit fuer die
 * Ansichten-Spaltenzahl <=839 (Standard/Gross/Liste gelten laut Matrix fuer
 * Phone UND Tablet identisch -> EIN Media-Query statt der bisherigen 599/600-
 * Aufteilung in 9.2/13.12 fuer diesen Teil-Aspekt) und deckt jedes ID-gescopte
 * Produkt-Grid automatisch ab (Gunpla, alle #hc-XX-TCG/Zubehoer-Seiten, Suche) —
 * OHNE Aufzaehlung einzelner IDs, per [id]-Booster zukunftssicher auch fuer
 * neue Kategorieseiten. 9.2/13.12 bleiben unveraendert stehen (redundant fuer
 * cols-4, werden hier fuer cols-3 durch die hoehere Spezifitaet/spaetere
 * Position sauber ueberschrieben — gleiches Muster wie 13.12 es selbst schon
 * fuer 9.2 beschreibt).
 *
 * NEBENEFFEKT (live nachgemessen, KEINE Extra-Regel fuer Badge/Button noetig):
 * Sobald die Kachel wieder ihre echte 2-Spalten-Breite hat (156px@360/171px@390
 * statt 110px@beide), verschwinden BEIDE E2-Befunde automatisch:
 *   - Befund 1 (Massstabs-/Grade-Badge "Non-Scale"/"1/144" ueberlappt Titel):
 *     bei 110px musste .hc-cathead .meta-row umbrechen (flex-wrap aus 13.17),
 *     die Cathead-Box wuchs dabei NICHT auf die zweite Zeile mit (gemessene
 *     Ueberlappung Cathead-Bottom vs. .nm-Top: -13.75px). Bei 156-171px passen
 *     Franchise-Chip + Grade-Chip auf eine Zeile -> kein Umbruch -> kein
 *     Overlap (live nachgemessen an allen 6 im E2-Report genannten Karten
 *     @360: Abstand jetzt +8px statt -13.75px Ueberlappung).
 *   - Befund 2 (Warenkorb-/Anfragen-Kreis rechts abgeschnitten): bei 110px
 *     ragte der 36px-Kreis 13.4px ueber den rechten Kartenrand hinaus (Karte
 *     hat overflow:hidden). Bei 156-171px liegt der Kreis vollstaendig
 *     innerhalb (12px Restabstand = pb-padding-right, live nachgemessen).
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 20.1 · Standard-Fallback: JEDES ID-gescopte Produkt-Grid ohne (oder mit
   * beliebiger) View-Klasse = 2 Spalten. Faengt insbesondere #hcSearchList .grid
   * (traegt keine cols-4-Klasse) ein -> "Suche = wie Standard" (Ansichten-Matrix).
   * main + :is(#hcm-x,[id]) (ID-Spezifitaet von JEDEM ID-Vorfahren) schlaegt
   * golive (a) zuverlaessig (main-Typ gewinnt den Tiebreak bei gleicher
   * ID+Klassen-Zahl). ---- */
  main :is(#hcm-x, [id]) .grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: var(--hcm-s3) !important;
  }

  /* ---- 20.2 · Gross (cols-3) = 1 Spalte, ~342px Bild (Klassen-Umdeutung Brand
   * Book §3.4 / Ansichten-Matrix 20.07.2026: Tablet 661-839 UND Phone <=660 je
   * 1 Spalte). Zwei Klassen > eine Klasse aus 20.1 -> gewinnt automatisch ohne
   * Reihenfolge-Abhaengigkeit. War bisher faelschlich mit cols-4 in derselben
   * 2-up-Gruppe (Abschnitt 9.2/13.12) -> Follow-up aus Welle 1 hiermit behoben
   * (Live-Test vorher: 110-171px/2-spaltig statt 1-spaltig/~342-352px). ---- */
  main :is(#hcm-x, [id]) .grid.cols-3 {
    grid-template-columns: 1fr !important;
  }

  /* ---- 20.3 · Liste (is-list/list) = gestapelt, 1 Spalte (war bereits korrekt,
   * hier zusaetzlich boostet fuer Konsistenz/Zukunftssicherheit). ---- */
  main :is(#hcm-x, [id]) .grid.is-list,
  main :is(#hcm-x, [id]) .grid.list {
    grid-template-columns: 1fr !important;
  }

  /* ---- 20.4 · Harte 3-up-Sperre: falls irgendeine kuenftige golive-Regel
   * erneut repeat(3,...)/repeat(4,...) auf ein ID-gescoptes Grid legt, faengt
   * dieser Schlusswaechter es zusaetzlich ab (identische Spezifitaet wie 20.1,
   * steht aber danach -> gewinnt Reihenfolge-Tiebreak bei exakter Uebereinstimmung;
   * inhaltlich deckungsgleich mit 20.1, rein defensiv). ---- */
  main :is(#hcm-x, [id]) .grid:not(.cols-3):not(.is-list):not(.list) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

/* ============================================================================
 * Abschnitt 21 · W3-B (24.07.2026) — /sammelkarten-Hero kompaktieren
 * Chef-Auftrag 24.07. nachmittags, Marcel waehlte "Komprimieren (Empfehlung)".
 * Ist ~968px @390 (Chef-Referenz "~1155px" schliesst den Sticky-Header-Offset
 * mit ein) -> Ziel ~700px. Dichte-Mechanik wie E0-B.2 (Abschnitt 19): Gaps/
 * Margins gestrafft, H1 kleiner geclampt, Lede 3-Zeilen-Clamp mit Toggle
 * (eigene Mini-Funktion skHeroClamp() in custom-mobile.js -- seoClamp()s
 * bestehender Toggle greift hier NICHT, weil .hc-sk-lede mit ~87px unter
 * dessen 130px-Schwelle liegt und deshalb uebersprungen wuerde), Stats als
 * sauberes 2-up-Grid, Produkt-Buehne (.hc-sk-stage, aus dem JS-injizierten
 * hc-sk-css: aspect-ratio:1.18/1) per Breiten-Kappung min(62%,230px)
 * verkleinert -- Hoehe folgt automatisch proportional mit, KEIN object-fit-
 * Zerren, Bild/Link/Preis-Tag bleiben 100% funktional (live gegengeprueft:
 * Preis-Tag ueberlaeuft bei keinem getesteten Produkt). NICHTS entfernt,
 * alle Ziele (Alle TCGs ansehen / Zubehoer / Produkt-Link / 10 Thumbs /
 * Filter) bleiben erreichbar, Touch-Targets unveraendert >=44px (CTA-Buttons
 * weiter 46px; Stats/Thumbs sind keine eigenen Touch-Targets bzw. bereits
 * >=44px). !important noetig, weil golive/hc-sk-css als <style id="hc-sk-css">
 * ERST ZUR LAUFZEIT per JS ans <head> angehaengt wird -- bei gleicher
 * Selektor-Spezifitaet gewinnt sonst die spaeter im DOM stehende Regel.
 * Verifiziert 360/390/768 (min(),  daher ueber die ganze <=839-Spanne
 * konsistent ~700-712px statt bei 768 wieder auf ~877px zu wachsen):
 *   360px: Hero 708,7px, kein H-Scroll, Preis-Tag ok.
 *   390px: Hero 712,0px (Ziel ~700, +12), Stats sauber 2x2 (171px Spalten),
 *          CTA-Hoehe unveraendert 46/46px, Preis-Tag ok.
 *   768px: Hero 708,6px (ohne min()-Kappung waere es 877px gewesen).
 * Nur <=839; Desktop (>839) durch reine @media-Kapselung strukturell
 * unberuehrt (hc-sk-css bleibt komplett Eigentum von custom.js/frontend,
 * hier nur READ+Override der bestehenden Klassen, kein Markup-Eingriff).
 * ========================================================================== */
@media (max-width: 839px) {
  #hc-sk .hc-sk-hero { padding: 14px 0 18px !important; }
  #hc-sk .hc-sk-crumb { margin-bottom: 8px !important; }
  #hc-sk .hc-sk-hgrid { gap: 12px !important; }
  #hc-sk h1 { font-size: clamp(27px, 8vw, 34px) !important; margin: 6px 0 8px !important; }

  /* 3-Zeilen-Clamp (Klasse wird von skHeroClamp() in custom-mobile.js gesetzt;
   * gleiche Basis-Klasse .hcm-textclamp wie ueberall sonst -- Standardwert
   * ist 4 Zeilen aus Abschnitt 11.2, hier auf 3 verschaerft wie bei 19.3). */
  #hc-sk .hc-sk-lede.hcm-textclamp { -webkit-line-clamp: 3 !important; }

  #hc-sk .hc-sk-stats {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 8px 16px !important;
    margin-top: 12px !important;
  }
  #hc-sk .hc-sk-cta { margin-top: 12px !important; }
  #hc-sk .hc-sk-show { gap: 10px !important; }

  /* Produkt-Buehne verkleinern: aspect-ratio:1.18/1 (hc-sk-css) sorgt dafuer,
   * dass die Hoehe der Breite automatisch folgt -- kein Bild-Zerren, da
   * .hc-sk-stobj img selbst ueber max-height:300px;width:auto skaliert.
   * min(...) statt reinem %-Wert, damit @768 (breiterer Container) nicht
   * wieder auf volle Groesse zurueckwaechst (getestet: ohne Kappung 363px
   * Buehnen-Hoehe statt 195px -> Hero 877px statt 709px). */
  #hc-sk .hc-sk-stage { width: min(62%, 230px) !important; margin: 0 auto !important; }
}

/* ============================================================================
 * Abschnitt 22 · W4-D + W4-E (24.07.2026) — Kategorie-Hero radikal verschlanken
 * Chef-Ansage (iPhone-Abnahme, woertlich): "hier sollen die Karten im Hero-
 * Banner ganz weg... Logo wird dafuer mittig zentriert" (W4-D) + "dieser
 * Bereich mit Mehr lesen, Booster Display etc und die Selling Points fliegen
 * in der Mobile-Version auch aus dem Hero-Banner raus" (W4-E). Das revidiert
 * bewusst Abschnitt 19 (E0-B.2, selber Tag frueher): 19 hatte die Klemme-Bugs
 * gefixt und Karte/Chips/Trust dabei nur VERDICHTET; das war KEIN Fehler,
 * Marcel sieht das Element auf dem Handy jetzt einfach lieber ganz weg als
 * verdichtet — reine Geschmacks-/Kompaktions-Entscheidung, kein Widerspruch.
 * Alte Abschnitte 18/19 bleiben unveraendert stehen (Datei-Konvention: nur
 * ergaenzen, nicht loeschen) — ihre Deko-/Groessen-Regeln werden hier durch
 * display:none auf denselben Elementen einfach wirkungslos (spaetere Regel im
 * File + eigenes !important gewinnt zuverlaessig, keine Spezifitaets-Wette
 * noetig, da unterschiedliche Properties: height/width vs. display).
 *
 * SCOPE (live an 9 Seiten geprueft: /pokemon-tcg, /one-piece-tcg, /gundam-tcg,
 * /gunpla, /model-kits, /lorcana, /karten-ankauf, /wunsch-service, /faq +
 * /sammelkarten separat):
 *   .cat-hero-visual  (Holo-Karten-Faecher/Solo-Karte) — auf ALLEN .cat-hero-
 *     Seiten vorhanden AUSSER karten-ankauf/faq (dort schlicht nicht im DOM,
 *     Selektor greift ins Leere = harmlos).
 *   .ak-cascade  (animierte Fallkarten-Deko, NUR /karten-ankauf) — zaehlt
 *     ebenfalls als "Karten-/Deko-Bild-Element" (Chef: "die Karten"), daher
 *     mit demselben Prinzip entfernt.
 *   p.lead (Intro-/SEO-Text) + der zugehoerige .hcm-morebtn — NUR innerhalb
 *     .cat-hero, sitzt aber auf ALLEN 9 geprueften Hero-Varianten inkl. FAQ/
 *     Karten-Ankauf/Wunsch-Service (die haben zwar kein .pk-quick/.hc-trust,
 *     aber sehr wohl ein p.lead) — generischer .cat-hero-Scope deckt das ohne
 *     Seiten-Aufzaehlung ab. JS-Gegenstueck: seoClamp() in custom-mobile.js
 *     initialisiert den Toggle jetzt gar nicht mehr fuer Hero-Absaetze (Guard
 *     p.closest('.cat-hero')) — ausserhalb von Heroes (SEO-Texte unter Grids,
 *     FAQ-Antworten etc.) unveraendert aktiv.
 *   .pk-quick (Schnellzugriffs-Chips) + .cat-stats.hc-trust (Trust-Badges) —
 *     NUR auf den 7 TCG-Franchise-Seiten + Gunpla vorhanden (karten-ankauf/
 *     wunsch-service/faq haben diese Klassen nicht, Selektor greift ins
 *     Leere = harmlos, "H1/CTAs dort nicht anfassen" bleibt gewahrt).
 *
 * ZUSAETZLICH entfernt (/model-kits, nicht woertlich in W4-E benannt, aber
 * per Chef-Schlusssatz "Hero-Endzustand mobil = NUR Kicker + zentriertes Logo
 * (+H1)" trotzdem im Geltungsbereich -- sonst waere Model-Kits die einzige
 * Seite ueber der 500px-Zielmarke geblieben, live gemessen 534px mit, 297px
 * ohne):
 *   - .hero-brands (6 Marken-Logo-Kacheln, aria-hidden) — bislang (19.12)
 *     bewusst nur skaliert statt entfernt; W4-E's Schlusssatz ist expliziter
 *     als die alte 19.12-Entscheidung und geht hier vor.
 *   - .cat-stats:not(.hc-trust) (4 Spec-Kacheln) — selbes Prinzip.
 *   .cat-hero-grid hat auf /model-kits sogar 3 Top-Level-Kinder (Inhalt +
 *   .cat-hero-visual + .hero-brands als eigenes Geschwister, nicht im
 *   Inhalts-Div verschachtelt) — beide Zusatz-Selektoren sind deshalb
 *   eigenstaendig auf Hero-Ebene formuliert, nicht ueber :first-child.
 *
 * BEWUSST NICHT angefasst:
 *   - #hc-sk .hc-sk-show (/sammelkarten-Hub) — KEIN Deko-Fake wie .cat-hero-
 *     visual, sondern eine interaktive Produkt-Buehne mit echten Artikeln +
 *     klickbaren Thumbnails (10 echte Produkte). #hc-sk ist zudem gar kein
 *     .cat-hero (eigene Komponente, s. Abschnitt 21) und hat keinen Franchise-
 *     Logo-H1 — nur die Lede (naechster Punkt) faellt dort in dieselbe
 *     Kategorie wie ueberall sonst.
 *   - #hc-sk .hc-sk-lede — GLEICHE Behandlung wie p.lead anderswo (Intro-Text
 *     raus), eigener Selektor noetig weil andere Klasse/kein .cat-hero-Scope.
 *     skHeroClamp() in custom-mobile.js baut den Toggle dafuer jetzt gar nicht
 *     mehr auf (fruehes return, Kommentar dort).
 *
 * Zentrierung (NUR W4-D, NUR die 7 TCG-Franchise-Seiten + Gunpla + Model-Kits —
 * explizit NICHT ak-hero-Varianten [karten-ankauf/wunsch-service/faq], dort
 * Chef-Vorgabe "H1/CTAs nicht anfassen" inkl. Ausrichtung; NICHT /sammelkarten,
 * kein Franchise-Logo dort): Kicker-Zeile (.eyebrow/.pk-brandline) + H1 (Bild-
 * Logo ODER Text, je nach Seite) zentriert. text-align:center auf der
 * Inhalts-Spalte deckt beides ab (Bild=inline, Text=inline/inline-Kinder);
 * .pk-brandline ist zusaetzlich ein eigener Flex-Container (Kicker-Icon +
 * Text) und braucht justify-content:center separat, sonst ignoriert er
 * text-align vom Vorfahren (Flex-Items reagieren nicht auf text-align).
 * Breadcrumb (.crumb, liegt ausserhalb von .cat-hero-grid) bleibt bewusst
 * linksbuendig — ist keine Hero-Copy, sondern Utility-Navigation.
 *
 * Live gemessen an /pokemon-tcg @390 (Referenzseite, per injiziertem Dry-Run-
 * Style vor dem Deploy geprueft, s. Rueckgabetext fuer alle 9 Seiten):
 *   .cat-hero-grid vorher 600px -> nachher siehe Rueckgabe (Ziel deutlich <500px,
 *   NUR noch Kicker + H1-Logo uebrig).
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 22.1 · Karten-/Deko-Bild-Elemente ganz weg (W4-D) ---- */
  .cat-hero:not(#_) .cat-hero-visual { display: none !important; }
  .cat-hero.ak-hero .ak-cascade { display: none !important; margin-bottom: 0 !important; }

  /* ---- 22.2 · Intro-/Lead-Text + Mehr-lesen-Toggle raus, NUR im Hero (W4-E.1) ---- */
  .cat-hero:not(#_) p.lead,
  .cat-hero:not(#_) .hcm-morebtn { display: none !important; }
  #hc-sk .hc-sk-lede,
  #hc-sk .hcm-morebtn { display: none !important; }

  /* ---- 22.3 · Quick-Chips raus (W4-E.2) ---- */
  .cat-hero:not(#_) .pk-quick { display: none !important; }

  /* ---- 22.4 · Selling-Points/Trust-Zeile raus (W4-E.3) ---- */
  .cat-hero:not(#_) .cat-stats.hc-trust { display: none !important; }

  /* ---- 22.4b · /model-kits-Zusatz: Spec-Kacheln + Marken-Logo-Reihe raus,
   * damit auch dort NUR Kicker+Logo(+H1) uebrig bleibt (s. Abschnitt-Kopf-
   * kommentar). Selektoren greifen NUR wo die Klassen existieren -- auf
   * allen anderen Heroes wirkungslos. ---- */
  .cat-hero:not(#_):not(.ak-hero) .cat-stats:not(.hc-trust) { display: none !important; }
  .cat-hero:not(#_):not(.ak-hero) .hero-brands { display: none !important; }

  /* ---- 22.5 · Kicker + Logo/H1 zentrieren (W4-D.2), NUR Franchise-Heroes ----
   * text-align:center allein reicht NICHT fuer den Logo-Fall: golive setzt
   * "h1 img.hc-franchise-logo{display:block}" (live gemessen) — Block-Boxen
   * ignorieren das text-align des Vorfahren fuer die eigene Position, sie
   * brauchen margin:auto. Text-Only-H1 (z.B. Model-Kits) profitiert weiter
   * vom text-align (inline Textinhalt reagiert normal). */
  .cat-hero:not(#_):not(.ak-hero) .cat-hero-grid > div:first-child { text-align: center; }
  .cat-hero:not(#_):not(.ak-hero) .pk-brandline { justify-content: center; }
  .cat-hero:not(#_):not(.ak-hero) h1 img.hc-franchise-logo {
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

/* ===== ENDE MOBILE ===== */

/* ===== HC-SALE-PAUSE (beide Zonen, Chef 24.07.2026) - "Sale" kommt spaeter fuer Aktionen;
 * bis dahin toten Catbar-Eintrag ausblenden (div.cat.sale ist kein Link, /sale leitet nur
 * auf die Startseite). ABSICHTLICH ausserhalb @media = wirkt auch Desktop (explizite
 * Chef-Freigabe im Chat). Rueckbau: diesen Block loeschen. ===== */
.catbar .cat.sale { display: none !important; }
/* ===== ENDE HC-SALE-PAUSE ===== */

/* ===== Abschnitt 23 - W5 (24.07.2026 Nacht, Marcels Live-Abnahme) =====
 * A: Set-Ribbon-Kacheln kompakter 368->298px (Chef: "zu gross"). Doppel-ID-
 *    Booster noetig (golive: .set-logo min-height:100px; se-spacer/set-logo
 *    sind inline-Spans -> height wirkungslos, daher display-Wechsel).
 * B: Standard-Toggle-Button (cols-4) zurueck = 3 Ansichten Gross/Standard/
 *    Liste (Chef 24.07., hebt "Klein raus"-Hide vom 11.07. auf).
 * C: PDP Abstand Zahlarten -> Beschreibung +18px (Chef: "stimmiger").
 * D: PDP-Spec-Tabelle Label-Spalte nowrap (Doppelpunkt-Umbruch weg).
 * E: Kompakt-Modus NEUTRALISIERT (Chef: Logo immer gleich gross, Suchzeile
 *    bleibt beim Scrollen sichtbar) - Header damit beim Scrollen komplett
 *    statisch, weisse Flaeche weg; ruckelfrei bleibt (W4-A Hoehe konstant).
 *    JS-Cleanup (stickyCompact ganz aus) beim naechsten js-Deploy. ===== */
@media (max-width:839px){
	:is(#hcm-x,[id]) :is(#hcm-x,[id]) .set-tile{height:auto!important;min-height:0!important}
	:is(#hcm-x,[id]) :is(#hcm-x,[id]) .set-tile .se-spacer{display:none!important}
	:is(#hcm-x,[id]) :is(#hcm-x,[id]) .set-tile .set-explore{padding:10px 8px 4px!important}
	:is(#hcm-x,[id]) :is(#hcm-x,[id]) .set-tile .set-logo{height:80px!important;min-height:0!important}
	:is(#hcm-x,[id]) :is(#hcm-x,[id]) .set-tile .set-name{line-height:1.15!important;min-height:0!important}
	:is(#hcm-x,[id]) :is(#hcm-x,[id]) .set-tile .set-date{margin-top:2px!important}
	:is(#hcm-x,[id]) :is(#hcm-x,[id]) .set-tile .set-filter{margin:8px auto!important}
	:is(#hcm-x,[id]) :is(#hcm-x,[id]) .set-tile .set-badge{margin-bottom:10px!important}
	main :is(#hcm-x,[id]) button[data-view="cols-4"]{display:grid!important}
	.hc-ppay{margin-bottom:18px!important}
	.hc-spec td:first-child{white-space:nowrap!important;padding-right:10px!important}
	.hcm-compact .site-header .hcm-searchrow{opacity:1!important;visibility:visible!important}
	.hcm-compact .site-header .brand img{height:34px!important}
}
/* ===== ENDE Abschnitt 23 ===== */

/* ============================================================================
 * Abschnitt 24 · W6 (2026-07-24) — Header-Feinausrichtung auf der 16er-Achse,
 * Dark-Toggle-Pille, Drawer-Submenüs kompakt + „Aktuelle Sets"-Gruppe.
 * Chef-Aufträge aus der Live-iPhone-Abnahme (Screenshots 24.07.).
 * Messbasis @390 vor W6: Burger x=28 · Logo-Mitte ~97 (statt 195) · Cart-Kante
 * 362 vs. Lupen-Kante 374 (12px versetzt) · #darkToggle 75×44 in 40px-Util-Bar
 * (4px beschnitten, keine Kontur). JS-Anteile (Badge-Zahl, Aktuelle-Sets-li,
 * stickyCompact-Ausbau): custom-mobile.js W6. Zone ≤839 lt. Vertrag.
 * ========================================================================== */
@media (max-width: 839px) {

  /* ---- 24.1 · Header auf die 16er-Achse (Brand-Book-Raster) ----
   * Suchfeld sitzt auf x=16, Lupen-Kante auf x=374 — Headerzeile zieht nach:
   * Burger-Box-Kante = 16, Cart-Box-Kante = 374 = bündig zur Lupe darunter. */
  .site-header .wrap {
    padding-left: 16px !important;
    padding-right: 16px !important;
    position: relative;
    /* Der Desktop-Wrap trägt transition:padding .25s — mobil gibt es seit W5/W6
     * keinen Padding-Wechsel mehr; ohne transition kann auch nichts nachruckeln
     * (Beweis-Injektion 24.07.: eingefrorene padding-Transition im Hintergrund-
     * Tab hielt sogar inline-!important auf dem Altwert fest). */
    transition: none;
  }
  .site-header .act { gap: 8px; }

  /* ---- 24.2 · VOLLE Logo-Einheit mittig (Chef-Vorgabe 25.07.) ----
   * Marcel wörtlich: „das Logo ist für mich das Maskottchen zusammen mit dem
   * Shopnamen und Sammelkarten und Modelkits" — plus ein leichter Schlagschatten
   * hinter der GANZEN Einheit, nicht nur hinter dem Maskottchen.
   *
   * Platzrechnung @390 (alles live gemessen 25.07.):
   *   Burger endet 60 · Bildschirmmitte 195 · Warenkorb ab 322
   *   Die volle Einheit braucht 189px. Mittig zentriert reicht sie 101–290.
   *   Mit dem Herz (Merkliste ab 256) kollidierte sie um 34px — deshalb ist
   *   das Herz aus der Kopfzeile raus (24.2b). Ohne Herz: 24px Luft je Seite.
   *
   * Der Schatten sitzt als filter auf .brand statt auf dem <img>, damit auch
   * Schriftzug und Untertitel ihn tragen. Untertitel mit reduzierter Laufweite,
   * sonst passt „Sammelkarten · Modelkits" nicht in die Breite. */
  .site-header .brand {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    filter: drop-shadow(0 3px 8px rgba(12, 30, 42, 0.30));
  }
  .site-header .brand img {
    height: 36px !important;
    width: auto;
    flex: 0 0 auto;
    filter: none !important;   /* Schatten liegt jetzt auf der ganzen Einheit */
  }
  .site-header .brand .wordmark {
    display: block !important;
    line-height: 1.02;
    font-size: 20px;
    font-weight: 800;
    letter-spacing: -0.2px;
    white-space: nowrap;
  }
  .site-header .brand .wordmark small {
    display: block !important;
    font-size: 9.5px;
    font-weight: 600;
    letter-spacing: 0.55px;
    margin-top: 3px;
    white-space: nowrap;
    opacity: 0.72;
  }

  /* ---- 24.2b · Merkliste raus aus der Kopfzeile (Chef-Entscheid 25.07.) ----
   * „man sieht die ja im Menü das man links aufklappen kann" — die Merkliste
   * steht seit W4 ganz oben im Drawer neben Konto. Sie war der einzige Grund,
   * warum die volle Logo-Einheit nicht mittig passte (Engpass ab x=256).
   * Der Warenkorb bleibt: er ist der Kaufweg und trägt die Artikel-Anzahl. */
  .site-header .act a[href*="Wunschliste"],
  .site-header .act a[href*="wunschliste"] { display: none !important; }

  /* ---- 24.3 · Dark-Toggle: Pille mit Kontur, nicht mehr beschnitten ----
   * Vorher: 75×44-Button in der 40px-Util-Bar (unten abgeschnitten), 0px-
   * Border → wirkte „schwebend abgesägt". Jetzt 30px-Pille, vertikal mittig,
   * rechte Kante auf der 16er-Achse wie Cart/Lupe. */
  .util-bar .wrap {
    padding-left: 16px;
    padding-right: 16px;
  }
  .util-bar .u-right {
    height: 40px;
    align-items: center;
  }
  /* ID+Klasse als Selektor + min-height:0 — Höhen-Blocker-Lektion aus W5
   * (Set-Logo): ein geerbtes min-height schlägt jedes height. */
  #darkToggle.dark-toggle {
    height: 30px !important;
    min-height: 0 !important;
    padding: 0 12px !important;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 1.5px solid rgba(12, 30, 42, 0.25) !important;
    border-radius: 999px;
    background: transparent;
  }
  #darkToggle.dark-toggle svg {
    width: 14px;
    height: 14px;
  }
  #darkToggle.dark-toggle .dt-label {
    font-size: 12px;
    font-weight: 700;
  }
  [data-theme="midnight"] #darkToggle.dark-toggle { border-color: rgba(255, 255, 255, 0.3) !important; }

  /* ---- 24.4 · Drawer-Submenüs kompakter (Chef: „Abstand zwischen den Tabs
   * etwas kleiner") — Zeile 48px+ → 40px, bleibt tappbar (WCAG ≥24). ---- */
  .hcm-subnav .hcm-sublink {
    min-height: 40px;
    padding-top: 2px;
    padding-bottom: 2px;
    font-size: 14.5px;
  }

  /* ---- 24.5 · „Aktuelle Sets"-Gruppe im Submenü (li baut custom-mobile.js:
   * alle Set-Links vor dem ersten „Alle …"-Link) ---- */
  .hcm-subgrouphead {
    padding: 10px var(--hcm-s6) 2px;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 1.8px;
    text-transform: uppercase;
    color: var(--brand-orange, #ef820e);
    list-style: none;
  }
  .hcm-subdivide {
    border-bottom: 1px solid rgba(12, 30, 42, 0.08);
    margin: 6px var(--hcm-s4) 4px;
    list-style: none;
  }
  [data-theme="midnight"] .hcm-subdivide { border-color: rgba(255, 255, 255, 0.1); }
}
/* ===== ENDE Abschnitt 24 ===== */
/* 24.1b (W6-Nachfix, 24.07.): golive-content setzt header.site-header .brandrow padding 28px !important (0,2,1) und schlaegt .site-header .wrap (0,2,0) - Booster (0,3,1). */
@media (max-width:839px){header.site-header .wrap.brandrow{padding-left:16px!important;padding-right:16px!important}}

/* ============================================================
   25 · STARTSEITE MOBIL KUERZEN  (26.07.2026)
   Vorher gemessen @390: 11.141px = 13,2 Bildschirme
   Ziel nach diesem Abschnitt: 9.130px = 10,8 Bildschirme (-2.011px)
   Jeder Hebel einzeln am Live-DOM gemessen, nicht geschaetzt.
   ============================================================ */
@media (max-width:839px){

  /* 25.1  Marken-Schnelleinstieg aus  (-692px)
     Doppelung: #hc-cats zeigt dieselben Marken MIT Produkten und Bildern,
     #hc-brands nur 12 nackte Textlinks. Desktop bleibt unberuehrt. */
  #hc-brands{display:none!important}

  /* 25.2  Wissens-Karten zweispaltig  (-234px)
     Nur hier sinnvoll: bei Release/Konfigurator wurde zweispaltig LAENGER
     (+65 / +112px), weil der Inhalt auf 390px in mehr Zeilen umbricht. */
  #hc-content .bs-grid{grid-template-columns:1fr 1fr!important;gap:12px!important}

  /* 25.3  Modul-Polster 46 -> 30px  (-310px ueber 12 Module) */
  .hc3 > section{padding-top:30px!important;padding-bottom:30px!important}

  /* 25.4  Release-Zeitleiste: 3 statt 5 Termine, engere Zeilen  (-228px) */
  #hc-release .rr-tl .rr-row:nth-child(n+4){display:none!important}
  #hc-release .rr-tl .rr-row{padding:7px 8px!important}

  /* 25.5  Konfigurator zugeklappt, oeffnet auf Tipp  (-595px)
     777px = fast ein ganzer Handy-Bildschirm, der ungefragt offen stand.
     Kopf + Einleitung bleiben sichtbar, die 3 Schritte kommen auf Wunsch.
     Farben bewusst modus-neutral (halbtransparent) wegen Dark-Toggle. */
  #hc-themen .hc-konfig.hcm-zu .kf-grid,
  #hc-themen .hc-konfig.hcm-zu .kf-result{display:none!important}
  #hc-themen .hcm-kf-btn{
    display:flex;align-items:center;justify-content:center;gap:8px;
    width:100%;min-height:46px;min-width:0;margin-top:14px;padding:10px 16px;
    border:1px solid rgba(127,127,127,.30);border-radius:12px;
    background:rgba(127,127,127,.08);color:inherit;
    font:600 15px/1.2 Epilogue,system-ui,-apple-system,sans-serif;
    cursor:pointer;-webkit-tap-highlight-color:transparent;
  }
  #hc-themen .hcm-kf-btn::after{content:'\25BE';font-size:12px;opacity:.65;transition:transform .2s}
  #hc-themen .hc-konfig:not(.hcm-zu) .hcm-kf-btn::after{transform:rotate(180deg)}
}
/* ===== Ende Abschnitt 25 ===== */





/* ============================================================
   27 · ANFRAGE-KNOPF NUR FUER DIE KIT-WELT  (26.07.2026)
   Chef-Entscheid: 'Anfragen' nur fuer Model-Kits und deren Zubehoer,
   Sammelkarten bekommen nur 'Ausverkauft'.
   Die Klasse setzt HCM-ASK-WELT in custom-mobile.js (Klassifizierung dort).
   Die Information geht nicht verloren - die Ausverkauft-Pille aus
   Abschnitt 26 steht weiterhin auf jeder Kachel.
   ============================================================ */
@media (max-width:839px){
  .prod.prod.hcm-keine-anfrage .hc-ask-btn.hc-ask-btn{display:none!important}
}
/* ===== Ende Abschnitt 27 ===== */



/* ============================================================
   29 · KACHEL-FEINSCHLIFF STARTSEITE  (26.07.2026)
   Vier Befunde vom echten Pixel 9, alle von Marcel gemeldet:
   1. Die Seitenzahl-Punkte waren aufrechte Balken statt Punkte
      (geerbtes min-height:44px bei nur 22px Breite - die min-height-Falle).
      Fingerflaeche bleibt erhalten ueber ein unsichtbares Klickfeld.
   2. Die beiden Produkt-Rails waren Karussells: eine 263px-Kachel fuellte
      fast den ganzen 390er-Bildschirm, die naechste ragte halb rein.
      Jetzt sauberes 2-Spalten-Raster (Karussells sind mobil ohnehin
      ein Anti-Pattern laut Deep-Research).
   3. Die Bereichs-Umrandung (Radius 34px + Schlagschatten) faellt weg.
   4. Kacheln waren mit 498px zu hoch fuers Handy - Textblock gestrafft
      (498 -> 371 bzw. 423 -> 391).
   ============================================================ */
@media (max-width:839px){

  /* 29.1 Seitenzahl-Punkte: rund statt Balken */
  #hc-new .np-dot{width:8px!important;height:8px!important;min-height:0!important;
    border-radius:99px!important;position:relative;flex:0 0 auto!important}
  #hc-new .np-dot.on{width:22px!important}
  #hc-new .np-dot::after{content:'';position:absolute;inset:-18px -8px}

  /* 29.2 Karussell -> 2-Spalten-Raster */
  #hc-foryou .hc-rail,#hc-sale .hc-rail{display:grid!important;grid-template-columns:1fr 1fr!important;
    gap:12px!important;overflow-x:visible!important;scroll-snap-type:none!important;padding:0!important}
  #hc-foryou .hc-rail>*,#hc-sale .hc-rail>*{flex:none!important;width:auto!important;
    min-width:0!important;max-width:none!important;scroll-snap-align:none!important}
  #hc-foryou .hc-rail .pim,#hc-sale .hc-rail .pim{height:auto!important;aspect-ratio:1/1}

  /* 29.3 Bereichs-Umrandung weg */
  #hc-foryou .panel,#hc-sale .panel{border-radius:0!important;box-shadow:none!important;
    background:transparent!important;padding-left:0!important;padding-right:0!important}

  /* 29.4 Kachelhoehe straffen */
  #hc-foryou .hc-rail .pb,#hc-sale .hc-rail .pb{padding:12px!important}
  #hc-foryou .hc-rail .listdesc,#hc-sale .hc-rail .listdesc{font-size:12px!important;
    line-height:1.35!important;white-space:nowrap!important;overflow:hidden!important;
    text-overflow:ellipsis!important}
  #hc-foryou .hc-rail .nm,#hc-sale .hc-rail .nm{font-size:13.5px!important;line-height:1.3!important}
  #hc-foryou .hc-rail .rowend,#hc-sale .hc-rail .rowend{padding-top:8px!important}
  #hc-foryou .hc-rail .meta-row,#hc-sale .hc-rail .meta-row{margin:2px 0 4px!important}
}
/* ===== Ende Abschnitt 29 ===== */



/* ============================================================
   31 · MARKEN-KACHELN + FILTER-FARBEN  (26.07.2026)
   Beides von Marcel am Geraet gesehen und entschieden.
   ============================================================ */
@media (max-width:839px){

  /* 31.1 Marken-Kacheln im Top-Marken-Modul
     Vorher: kein Rahmen, kein Grund - die Kacheln waren als Flaeche nicht
     erkennbar. Der Farbstrich stand links ueber die volle Hoehe.
     Jetzt: feine Kontur + weisser Grund, Farbstrich am UNTEREN Rand
     ueber die ganze Breite (wirkt als Marken-Signatur ruhiger). */
  #hc-cats .hcm-btile{
    border:1px solid rgba(12,30,42,.11)!important;
    background:#fff!important;
    box-shadow:0 1px 2px rgba(12,30,42,.04)!important;
    overflow:hidden!important}
  #hc-cats .hcm-btile::before{
    left:0!important;right:0!important;top:auto!important;bottom:0!important;
    width:auto!important;height:3px!important;border-radius:0!important;opacity:.9!important}
  :root[data-theme="midnight"] #hc-cats .hcm-btile{
    background:rgba(255,255,255,.04)!important;border-color:rgba(255,255,255,.12)!important}

  /* 31.2 Filter-Bereich in der Farbstruktur des Menues
     Das aufklappbare Menue steht auf Weiss mit Navy-Text; der Filter stand
     auf Creme rgb(244,241,232) und wirkte dadurch wie eine fremde Ebene. */
  .pk-sidebar{background:#fff!important}
  .pk-sidebar .pk-sb-head,.pk-sidebar .pk-sb-foot{background:#fff!important}
}
/* ===== Ende Abschnitt 31 ===== */







/* ============================================================
   35 · FILTER-OVERLAY + MERKEN-HERZ (27.07.2026)

   Gemessen an /pokemon-tcg im 390-px-Rahmen, Injektions-Beweis VOR dem Bau.

   35.1 Filterzeilen stauchen, sobald mehrere Gruppen offen sind.
        .pk-sidebar ist eine Flex-Spalte; Inhalt 937px > sichtbar 857,5px
        -> alle Flex-Kinder stauchen proportional. Der Kopf behaelt seine 44px,
        aber .filter-group hat overflow:hidden und schneidet ihn ab
        (Marcels "Wortfragmente"). Das ist KEINE min-height-Falle, sondern
        flex-shrink.                       zugeklappte Zeile  20,1px -> 46,7px
   35.2 Optionszeilen unter der Fingerflaeche             33px -> 44px
   35.3 iOS-Auto-Zoom: Safari zoomt beim Fokus auf Felder <16px hinein
        (Brand Book 12.6).                                 14px -> 16px
   35.4 Fuss "Ergebnisse anzeigen" stand noch auf Creme; 12.15 nachgezogen.
                                    srgb .956/.945/.909/.88 -> #fff
   35.5 Klebender Fuss verdeckte die letzte Gruppe.
        Ursache: margin-bottom:-96px -> er reserviert keinen Platz im Fluss.
        padding-bottom am Scrollbereich half NICHT, weil der Fuss dessen
        letztes Kind ist - die Luft entstand hinter ihm.
                                letzte Gruppe zum Fuss  -57,7px -> +25,9px
   35.6 Merken-Herz war 34x44, mit border-radius:50% also eine Ellipse.
        Ursache: die globale Tap-Regel
          :where(.btn,button,[role="button"],...){min-height:var(--hcm-tap)} = 44px
        .wish ist ein <button> und wird miterfasst; min-height schlaegt height
        unabhaengig von Spezifitaet - deshalb griff auch !important auf height
        nicht. FUENFTER Fall der min-height-Falle (W5, W6, W7, 29.1, hier).
                                       34x44 -> 34x34 rund, Tastflaeche 44x44

   Messfalle beim Pruefen (nicht im Produktivcode noetig): .wish hat
   transition:.2s; im gedrosselten iframe friert ein per Skript geaenderter
   Wert am Startwert ein und schlaegt dabei sogar inline-!important. Beim
   echten Seitenaufbau gibt es keinen Wertwechsel und damit keine Transition.
   ============================================================ */
@media (max-width:839px){

  /* 35.1 Flex-Kinder duerfen nicht stauchen - stattdessen scrollen */
  .pk-sidebar .filter-group{flex:0 0 auto!important}

  /* 35.2 + 35.3 Fingerflaeche und iOS-Zoom-Schwelle */
  .pk-sidebar .filter-group .f-opt{min-height:44px!important;display:flex!important;
    align-items:center!important;font-size:16px!important}
  .pk-sidebar input,.pk-sidebar select,.pk-sidebar label{font-size:16px!important}

  /* 35.4 + 35.5 Fuss weiss und wieder platzreservierend */
  .pk-sidebar .drawer-apply{background:#fff!important;margin-bottom:0!important}

  /* 35.6 Herz rund - min-height ausdruecklich zuruecknehmen, Tastflaeche via ::after */
  .prod .pim .wish{min-height:0!important;min-width:0!important;
    width:34px!important;height:34px!important;padding:0!important;
    border-radius:50%!important}
  .prod .pim .wish::after{content:''!important;position:absolute!important;
    inset:-5px!important;border-radius:50%!important}
}
/* ===== Ende Abschnitt 35 ===== */
/* ============================================================
   36 · ANFRAGE-KNOPF: TEXT STATT UMSCHLAG (27.07.2026)

   Chef: "der brief ist absolut nichts sagend". Stimmt - das Symbol war nicht
   einmal ein Icon, sondern das Schriftzeichen U+2709 in einem ::before.
   Der Knopf trug den Text "Anfragen" bereits, unsichtbar per font-size:0.

   Warum eigene Zeile statt neben dem Preis:
     .rowend ist 135,1px breit, der laengste Preis ("EUR 659,99") 81,1px,
     gap 8px -> es bleiben 46px. Eine Pille "Anfragen" braucht >=63px
     (Text 13px = 57,9px + Innenabstand). Inline waere bei teuren Artikeln
     gebrochen - deshalb volle Breite in einer zweiten Zeile.

   Warum nur bis 599px:
     Der Umschlag-Kreis stammt aus a.prod .rowend .hc-ask-btn im
     @media (max-width:599px). Ab 600px ist der Knopf laengst eine Pille mit
     lesbarem Text - dort gibt es nichts zu reparieren, und die Seite soll
     auf dem Tablet nicht ohne Grund wachsen.

   Die zu schlagende Regel hat Spezifitaet (0,3,1):
     a.prod .rowend .hc-ask-btn{width:36px!;height:36px!;font-size:0!;border-radius:50%!}
   Ein Selektor mit weniger Gewicht greift nicht (erst getestet, dann gemessen).
   Deshalb hier derselbe Selektor - gleiche Spezifitaet, spaeter im Sheet.

   Knopf        36x36 transparent + U+2709  ->  135,1x44 orange, "Anfragen" 13px
   Tastflaeche                        36px  ->  44px (Brand Book 12)
   Kachel                            382,2  ->  442,2   (+60)
   Seite /gunpla                    19.124  ->  21.404  (+2.280, +12%)
   Alle 75 Anfrage-Kacheln einheitlich, kein Querlauf.
   ============================================================ */
@media (max-width:599px){

  /* Umschlag raus */
  a.prod .rowend .hc-ask-btn::before{content:none!important}

  /* Zweite Zeile zulassen */
  a.prod .rowend{flex-wrap:wrap!important}

  /* Voller oranger Knopf mit Text */
  a.prod .rowend .hc-ask-btn{
    flex:1 0 100%!important;width:100%!important;min-width:0!important;
    height:44px!important;min-height:44px!important;margin-top:8px!important;
    border-radius:999px!important;border:0!important;
    background:#ef820e!important;color:#fff!important;
    font-size:13px!important;line-height:1!important;font-weight:800!important;
    letter-spacing:.2px!important;padding:0!important;
    display:flex!important;align-items:center!important;justify-content:center!important}
}
/* ===== Ende Abschnitt 36 ===== */

/* ============================================================
   Abschnitt 37 · Die vier neuen Hub-Seiten mobil (29.07.2026)
   Betrifft #hc-skx /sammelkarten · #hc-skz /sammelkarten-zubehoer ·
   #hc-mkz /model-kit-zubehoer · #hc-clx /collectibles

   37.1 HERO-DECKEL. Marcels Entscheid 29.07.: Hub-Ausnahme mit Deckel ~640px
        statt Brand Book §12.1 hart (<=300px). Begruendung: die Hub-Heroes
        tragen echten Inhalt (H1, Fliesstext, zwei Knoepfe, Schaufenster),
        nicht nur Kicker + Logo wie die Kategorieseiten.
        Gemessen @390 vorher -> nachher:
          skx 1167 -> 503 · skz 1179 -> 577 · mkz 1267 -> 577 · clx 1232 -> 594

   37.2 SCHAUFENSTER UNTER DEN INDEX. Das JS (HCM-HUB-HERO) verschiebt die
        Buehne bzw. die Vitrine hinter die Index-Leiste. Das geht gefahrlos,
        weil ALLE Styles der Buehne an #hc-xxx haengen und nicht an .xxx-hero
        (nachgezaehlt am 29.07.: 0 Regeln binden an den Hero).
        Die Seitenluft von 28px muss dabei nachgereicht werden - ausserhalb
        des .xxx-wrap gaebe es sonst keine.

   37.3 KARUSSELL AUFGELOEST (Brand Book §12.13). Drei der vier Heroes tragen
        ein Produkt-Karussell: 4 absolut positionierte Folien, Punkte-Leiste,
        Auto-Rotation alle 4,2s. Mobil verboten -> 2-Spalten-Raster nach §3.4.
        ACHTUNG min-height-Falle (Fall 6): .xxx-stage hat min-height:420px -
        ohne min-height:0 bleibt das Raster 420px hoch.

   37.4 KACHEL-INNENLAYOUT nach Brand Book §3.4, weil aus jeder Folie eine
        Produktkachel wird: Kachel-Gleichstand (grid-auto-rows:1fr), Titel-Slot
        genau 2 Zeilen, Preis 19px, Knopf volle Breite und >=44px hoch.
        Preis mit margin-top:auto - dadurch sitzen Preis UND Knopf in jeder
        Kachel auf derselben Grundlinie, egal wie lang der Titel ist.
        Nachgemessen: 4 Kacheln je 330px, Preise und Knoepfe deckungsgleich.
   ============================================================ */
@media (max-width:839px){

/* 37.1 */
#hc-skx .skx-hero,#hc-skz .skz-hero,#hc-mkz .mkz-hero,#hc-clx .clx-hero{padding-top:28px!important;padding-bottom:30px!important}
#hc-skx .skx-lead,#hc-skz .skz-lead,#hc-mkz .mkz-lead,#hc-clx .clx-lead{display:-webkit-box!important;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin-bottom:14px!important}

/* 37.2 */
.hcm-hub-show{padding-left:28px!important;padding-right:28px!important;box-sizing:border-box!important;margin:0 0 6px!important}

/* 37.3 */
#hc-skx .skx-stage,#hc-skz .skz-stage,#hc-mkz .mkz-stage{position:static!important;height:auto!important;min-height:0!important;display:grid!important;grid-template-columns:1fr 1fr!important;grid-auto-rows:1fr!important;gap:10px!important}
#hc-skx .skx-slide,#hc-skz .skz-slide,#hc-mkz .mkz-slide{position:static!important;inset:auto!important;opacity:1!important;transform:none!important;transition:none!important;pointer-events:auto!important;height:auto!important;min-height:0!important;gap:8px!important}
#hc-skx .skx-dots,#hc-skz .skz-dots,#hc-mkz .mkz-dots{display:none!important}

/* 37.4 */
#hc-skx .skx-shot,#hc-skz .skz-shot,#hc-mkz .mkz-shot{flex:none!important;height:132px!important;min-height:0!important}
#hc-skx .skx-shot img,#hc-skz .skz-shot img,#hc-mkz .mkz-shot img{padding:12px!important}
#hc-skx .skx-tagchip,#hc-skz .skz-tagchip,#hc-mkz .mkz-tagchip{top:8px!important;left:8px!important;font-size:9.5px!important;padding:5px 8px!important;max-width:calc(100% - 16px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#hc-skx .skx-plate,#hc-skz .skz-plate,#hc-mkz .mkz-plate{flex:1!important;flex-direction:column!important;align-items:stretch!important;gap:7px!important;padding:12px 12px 13px!important}
#hc-skx .skx-plate h3,#hc-skz .skz-plate h3,#hc-mkz .mkz-plate h3{font-size:14px!important;line-height:1.25!important;display:-webkit-box!important;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-height:2.5em!important}
#hc-skx .skx-pcat,#hc-skz .skz-pcat,#hc-mkz .mkz-pcat{display:block!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#hc-skx .skx-pprice,#hc-skz .skz-pprice,#hc-mkz .mkz-pprice{font-size:19px!important;margin-top:auto!important}
#hc-skx .skx-pbtn,#hc-skz .skz-pbtn,#hc-mkz .mkz-pbtn{width:100%!important;justify-content:center!important;margin-top:0!important;padding:0 10px!important;font-size:12.5px!important}

}
/* ===== Ende Abschnitt 37 ===== */

/* ============================================================
   Abschnitt 38 · Sortiment-Raster der Hub-Seiten + Menue-Fingerflaeche
   (29.07.2026, Chef-Entscheide desselben Tages)

   38.1 PREIS 30 -> 19 px. Die Hub-Seiten kamen mit 30px Preis; die
        Referenz-Kategorieseite /pokemon-tcg zeigt 19px, so steht es auch in
        Brand Book §3.4 (Phone-Kachelmatrix). Nachgemessen 29.07. @390 auf allen
        vier Seiten: durchgehend 30px, also durchgehend falsch.

   38.2 /collectibles war als EINZIGE Hub-Seite einspaltig (.clx-side, 334px).
        §3.4 Phone-Standard ist 2 Spalten. Der Hinweiskasten .clx-snote bleibt
        volle Breite, sonst stuende er neben einem Produkt.
        Gemessen: Seite 10.217 -> 9.777 px (-440).

   38.3 KACHEL-GLEICHSTAND (§3.4). Ohne grid-auto-rows:1fr wachsen Rasterzeilen
        unabhaengig - gemessen /sammelkarten 496/452/468, /model-kit-zubehoer
        511/531. Mit 1fr + .rowend{margin-top:auto} sitzen Preis und Aktion in
        jeder Kachel auf derselben Grundlinie.
        ⚠️ NUR die Hub-Raster. Das Kategorie-Raster (.grid.cols-4) hat denselben
        Fehler (376/392 auf /pokemon-tcg), ist aber abgenommener Bestand auf
        ALLEN Kategorieseiten - Aenderung dort braucht Marcels Code 3010.

   38.4 MENUE-FINGERFLAECHE 40 -> 44 px (§12).
        ⚠️ Der unsichtbare-::after-Trick (wie beim Merken-Herz) traegt hier
        NICHT: die Zeilen liegen lueckenlos aneinander, die 44er-Flaeche des
        Nachbarn ueberlappt und gewinnt (spaeter im DOM). Nachgewiesen per
        elementFromPoint. Deshalb echte Zeilenhoehe.
        Kosten nachgemessen: Drawer 1.802 -> 1.870 px (+68), Gruppe Pokemon
        819 -> 887. Bei 22 sichtbaren Untereintraegen.
   ============================================================ */
@media (max-width:839px){

/* 38.1 */
#hc-skx .skx-pgrid .prod .price,#hc-skz .skz-pgrid .prod .price,#hc-mkz .mkz-pgrid .prod .price,#hc-clx .clx-side .prod .price{font-size:19px!important}

/* 38.2 */
#hc-clx .clx-side{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important}
#hc-clx .clx-side>.clx-snote{grid-column:1/-1!important}

/* 38.3 */
#hc-skx .skx-pgrid,#hc-skz .skz-pgrid,#hc-mkz .mkz-pgrid,#hc-clx .clx-side{grid-auto-rows:1fr!important}
#hc-skx .skx-pgrid .prod,#hc-skz .skz-pgrid .prod,#hc-mkz .mkz-pgrid .prod,#hc-clx .clx-side .prod{height:auto!important}
#hc-skx .skx-pgrid .prod .rowend,#hc-skz .skz-pgrid .prod .rowend,#hc-mkz .mkz-pgrid .prod .rowend,#hc-clx .clx-side .prod .rowend{margin-top:auto!important}

/* 38.4 */
nav.hcm-drawer .hcm-sublink{min-height:44px!important;display:flex!important;align-items:center!important}

}
/* ===== Ende Abschnitt 38 ===== */

/* ============================================================
   Abschnitt 39 · Kaufweg mobil (29.07.2026)
   Betrifft Produktseite, Warenkorb und Bestellvorgang.
   Grundlage: kompletter Gast-Durchlauf am 29.07. @390 gemessen
   (Produktseite -> Korb -> Kundendaten -> Versand/Zahlung -> Uebersicht,
   kein Querlauf auf einer einzigen Stufe, alle Textfelder bereits 16px).

   39.1 KLEBENDE KAUFLEISTE. Gemessen: der Knopf "In den Warenkorb" sass auf
        der Produktseite bei y=1348 - der Kunde musste 1,6 Bildschirme scrollen,
        bevor er kaufen konnte. Zwei Hebel:
        (a) der "Hits"-Block (247px) stand MITTEN in der Galerie-Spalte, vor
            Preis und Kauf-Knopf -> per JS hinter den Produktblock verschoben,
            bringt den Knopf auf y=1081 (-267px)
        (b) diese Leiste erscheint, sobald der echte Knopf aus dem Blick ist,
            und verschwindet wieder, wenn er sichtbar wird - kein Doppel-Knopf.

   39.2 KAESTCHEN OPTISCH GROESSER. ⚠️ Keine Tastflaechen-Korrektur: die AGB-
        und Widerrufs-Haken sitzen INNERHALB ihres <label>, und das Label ist
        54px hoch - man kann irgendwo in die Zeile tippen, die Tastflaeche ist
        also bereits in Ordnung. Vergroessert wird nur das GEMALTE Kaestchen
        von 17 auf 22px, damit man es besser sieht und zielen kann.

   39.3 "AENDERN"-LINKS. In der Bestelluebersicht nur 30px breit (Hoehe 44 ok).
        Bekommen per JS die Klasse .hcm-wide und hier Mindestmasse.
   ============================================================ */
@media (max-width:839px){

/* 39.1 */
.hcm-buybar{position:fixed;left:0;right:0;bottom:0;z-index:900;display:flex;gap:10px;align-items:center;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff;
  box-shadow:0 -6px 24px rgba(12,30,42,.18);transform:translateY(115%);transition:transform .22s ease}
.hcm-buybar.on{transform:none}
.hcm-buybar b{font:800 19px/1 "Space Grotesk",system-ui,sans-serif;color:#0c1e2a;white-space:nowrap}
.hcm-buybar button{flex:1;min-height:48px;border:0;border-radius:99px;background:#ef820e;color:#fff;
  font:800 15px/1 "Space Grotesk",system-ui,sans-serif;cursor:pointer}
body.hcm-buybar-on{padding-bottom:78px}

/* 39.2 */
form input[type=checkbox],form input[type=radio],
.jtl-validate input[type=checkbox],.jtl-validate input[type=radio]{width:22px!important;height:22px!important}

/* 39.3 */
a.hcm-wide{min-width:64px!important;justify-content:center!important;text-align:center}

}
/* ===== Ende Abschnitt 39 ===== */

/* ============================================================
   Abschnitt 40 · Startseite "Frisch von der Insel" (29.07.2026)
   Marcels Entscheid: 2 Spalten, 4 Kacheln sichtbar, Rest per Knopf.
   Gemessen: Wisch-Bahn 563px (1,3 von 8 sichtbar, Inhalt 2104px breit) ->
   Raster mit 4 Kacheln 939px / Seite 11.558 (+399). Aufgeklappt 1861/12.420.
   Preis 30 -> 19px (§3.4). Wisch-Pfeile werden im Raster sinnlos.
   ============================================================ */
@media (max-width:839px){
#hc-stc .stc-rail{display:grid!important;grid-template-columns:1fr 1fr!important;grid-auto-rows:1fr!important;gap:10px!important;overflow-x:visible!important}
#hc-stc .stc-rail .prod{width:auto!important;min-width:0!important;flex:none!important;height:auto!important}
#hc-stc .stc-rail .prod .price{font-size:19px!important}
#hc-stc .stc-rail .prod:nth-child(n+5){display:none}
#hc-stc .stc-rail.hcm-alle .prod:nth-child(n+5){display:flex}
#hc-stc .stc-arrows{display:none!important}
.hcm-mehr{display:block;width:100%;min-height:48px;margin:12px 0 0;border:1.5px solid rgba(12,30,42,.16);
  border-radius:99px;background:#fff;color:#0c1e2a;
  font:800 15px/1 "Space Grotesk",system-ui,sans-serif;cursor:pointer}
}
/* ===== Ende Abschnitt 40 ===== */

/* ============================================================
   Abschnitt 41 · Fehlerbehebung aus dem Tester-Bericht (29.07.2026)
   Quelle: Screenshots eines Testers mit Samsung Galaxy S24 im Dunkelmodus.
   Alle drei Befunde am Live-DOM nachgemessen und der Fix belegt.

   41.1 PRODUKTSEITE - FESTE SPALTENBREITE. Das war die eigentliche Ursache.
        .col.product-gallery und .col.product-info haben eine FESTE Breite von
        360px, obwohl ihr Elternteil (.row.product-detail) korrekt 312px misst.
        Ueberstand je Bildschirmbreite:
            390px (mein Standardtest) ->  2px  <- deshalb uebersehen
            360px (Galaxy S24)        -> 32px  <- der Tester-Screenshot
            344px                     -> 48px
        Kein Querlauf, weil ein Vorfahre clippt - der Inhalt ist trotzdem weg.
        ⚠️ LEHRE: Auf Querlauf zu pruefen (scrollWidth > clientWidth) reicht
        NICHT. Man muss zusaetzlich nach Elementen suchen, die ueber den Rand
        ragen UND geclippt werden. Steht ab jetzt im Mess-Rezept.
        Nach dem Fix: Galerie 360 -> 296px, passt vollstaendig.
        NICHT angefasst: .hc-thumbs und .hc-tabnav sind wischbare Leisten
        (overflow-x:auto) - deren Ueberstand ist gewollt.

   41.2 WORTMARKE. #hc-stc .stc-wordmark traegt "HAWAII CARDS" mit
        font-size:88px und white-space:nowrap - das braucht rund 700px. Der
        Kasten ist 360px breit und clippt: der Kunde liest "HAWAII C".
        Fix: Schriftgroesse an die Bildschirmbreite koppeln.
        Gemessen: 88px -> 41,4px, Breite 360px, passt.

   41.3 BENTO-KACHELN. .stc-tover ist ein Flex-Container in Zeilenrichtung.
        Darin stehen der Beschreibungstext und das Zaehler-Badge (z.B.
        "Alle TCGs", 82px, flex:0 0 auto = nicht schrumpfbar) NEBENEINANDER.
        Bei 145px Kachelbreite bleiben dem Text 13 bis 49px - er bricht nach
        jedem Wort um, das Badge ueberlagert ihn.
        Fix: Spaltenrichtung, Text volle Breite.
        Gemessen: Textbreiten 13/48/49/81 -> 109 bis 268px.
   ============================================================ */
@media (max-width:839px){

/* 41.1 */
body.hc-pdp .row.product-detail > .col,
body.hc-pdp .product-gallery,
body.hc-pdp .product-info{width:100%!important;max-width:100%!important;flex:0 0 100%!important;min-width:0!important}
body.hc-pdp .hc-gal,body.hc-pdp .hc-gal-main,body.hc-pdp .hc-thumbs{width:100%!important;max-width:100%!important;min-width:0!important}

/* 41.2 */
#hc-stc .stc-wordmark>*{font-size:min(88px,11.5vw)!important}

/* 41.3 */
#hc-stc .stc-tover{flex-direction:column!important;align-items:flex-start!important;justify-content:flex-end!important;gap:6px!important}
#hc-stc .stc-tover>div{width:100%!important;min-width:0!important}
#hc-stc .stc-tover>.n{align-self:flex-start!important}

}
/* ===== Ende Abschnitt 41 ===== */

/* ============================================================
   Abschnitt 42 · /model-kits (#hc-mk) mobil - die letzte Hub-Seite (29.07.2026)
   Gleiche Regel wie Abschnitt 37/38 fuer skx/skz/mkz/clx, plus zwei Fehler,
   die es nur hier gibt. Alles bei 360px im Dunkelmodus gemessen.

   42.1 ⚠️ DOPPELTE RASTER-DEFINITION IN custom-desktop.css.
        Der Block "#hc-mk .aa-x .wrap" ist dort ZWEIMAL definiert:
            #hc-mk .aa-x .wrap                  -> 1fr 380px
            @media (max-width:1199px) ...       -> 1fr 300px
            @media (max-width:1023px) ...       -> 1fr        <- korrekte Mobilregel
            #hc-mk .aa-x .wrap                  -> 1fr 580px  <- hebt sie wieder auf
            @media (max-width:1199px) ...       -> 1fr 440px  <- greift auch bei 360px
        Die zweite Definition steht NACH der 1023er-Regel und gewinnt bei
        gleicher Spezifitaet. Ergebnis @360: zwei Spalten mit 434+440px in einem
        360px-Kasten, Inhalt ragt 92 bis 564px raus und wird abgeschnitten -
        derselbe Fehlertyp wie auf der Produktseite (Abschnitt 41.1).
        Hier mit hoeherer Spezifitaet erschlagen (Element+Klasse statt nur Klasse).
        ⚠️ Als Uebergabe an frontend-desktop gemeldet: die Doppeldefinition
        gehoert dort bereinigt, nicht hier dauerhaft ueberschrieben.

   42.2 GRID-MINDESTBREITE. Auch einspaltig blieb die Spalte 434px breit:
        Grid-Kinder haben min-width:auto und wachsen auf ihren Inhalt. Erst
        min-width:0 an den Kindern macht die Spalte schmal genug -> 324px.

   42.3 HERO-DECKEL + KARUSSELL wie bei den anderen vier Hubs.
        Gemessen: Hero 1125 -> 706px. Buehne (5 absolut positionierte Folien +
        Punkte) aufgeloest in ein 2-Spalten-Raster, alle 5 sichtbar, 416px.
        ⚠️ Anders als bei skz/mkz ist .aa-slide ein BLOCK-Element, kein Flex -
        ohne display:flex + explizite Hoehe am .aa-shot kollabiert es auf 20px.
        Das ist beim ersten Versuch passiert und hier festgehalten.

   42.4 KACHEL-GLEICHSTAND wie Abschnitt 38.3. Vorher 501/519/515/495 -> 519.

   Ergebnis @360 dunkel: 0 ueberstehende Elemente, kein Querlauf,
   Seite 11.855 -> 12.164px (+309 fuer das aufgeloeste Karussell).
   ============================================================ */
@media (max-width:839px){

/* 42.1 + 42.2 */
div#hc-mk section.aa-x div.wrap,div#hc-mk section.aa-news div.wrap{grid-template-columns:1fr!important}
div#hc-mk section.aa-x div.wrap>*,div#hc-mk section.aa-news div.wrap>*{min-width:0!important;max-width:100%!important}
div#hc-mk .xb,div#hc-mk .aa-xcards{width:auto!important;max-width:100%!important;min-width:0!important}
div#hc-mk .xb>*,div#hc-mk .aa-xcards>*{min-width:0!important;max-width:100%!important}

/* 42.3 */
#hc-mk .aa-lead{display:-webkit-box!important;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin-bottom:14px!important}
#hc-mk .aa-stage{position:static!important;height:auto!important;min-height:0!important;display:grid!important;grid-template-columns:1fr 1fr!important;grid-auto-rows:1fr!important;gap:10px!important}
#hc-mk .aa-slide{position:static!important;inset:auto!important;opacity:1!important;transform:none!important;transition:none!important;pointer-events:auto!important;height:auto!important;min-height:0!important;display:flex!important;flex-direction:column!important;gap:8px!important}
#hc-mk .aa-slide .aa-shot{position:relative!important;flex:none!important;height:132px!important;min-height:0!important}
#hc-mk .aa-slide .aa-plate{flex:1!important;flex-direction:column!important;align-items:stretch!important;gap:7px!important}
#hc-mk .aa-dots{display:none!important}

/* 42.4 */
#hc-mk .aa-kits{grid-auto-rows:1fr!important}
#hc-mk .aa-kits .prod{height:auto!important}
#hc-mk .aa-kits .prod .rowend{margin-top:auto!important}

}
/* ===== Ende Abschnitt 42 ===== */

/* ============================================================
   Abschnitt 43 · Kachel-Gleichstand shopweit + Sortierleiste (29.07.2026)
   Marcels Code 3010 erteilt - damit darf abgenommener Bestand angefasst werden.
   Alles bei 360px im Dunkelmodus gemessen.

   43.1 KACHEL-GLEICHSTAND (Brand Book §3.4). Bisher wuchsen die Rasterzeilen
        unabhaengig. Gemessen:
          /pokemon-tcg  .grid.cols-4  -> 360/377/394/384/401 (5 Werte)
          Suchergebnis  .grid         -> 470/486/446/429/462 (5 Werte)
        Mit grid-auto-rows:1fr + .rowend{margin-top:auto} sitzen Preis und
        Aktion in jeder Kachel auf derselben Grundlinie.
        Nachher: /pokemon-tcg alle 401px, Suche alle 486px.
        Kosten: Seite waechst um den Betrag, den die hoechste Kachel je Reihe
        vorgibt - /pokemon-tcg 7.685 -> 7.919 (+234), Suche 6.299 -> 6.636.
        Dasselbe Rezept wie Abschnitt 38.3 (Hub-Seiten) und 42.4 (/model-kits).

   43.2 SORTIERLEISTE DER ERGEBNISLISTE. Neu gefunden bei dieser Runde:
        div.col.displayoptions ist 517px breit bei 360px Bildschirm. Darin
        stehen Filter-Knopf, "Artikel pro Seite", Sortierung und der
        Ansichts-Umschalter NEBENEINANDER, ohne umzubrechen. Der rechte Teil
        (Listen-/Kachelansicht) ragte 173px raus und war abgeschnitten -
        derselbe Fehlertyp wie Abschnitt 41.1 und 42.1.
        Nachher: 328px, passt vollstaendig, 0 ueberstehende Elemente.
        ⚠️ Das ist eine JTL-Systemleiste - die Regel ist bewusst auf die
        Mobil-Zone gescopt, damit der Desktop unberuehrt bleibt.
   ============================================================ */
@media (max-width:839px){

/* 43.1 */
#result-wrapper .grid,.grid.cols-4{grid-auto-rows:1fr!important}
#result-wrapper .grid > .prod,.grid.cols-4 > .prod{height:auto!important}
#result-wrapper .grid > .prod .rowend,.grid.cols-4 > .prod .rowend{margin-top:auto!important}

/* 43.2 */
.productlist-page-nav-header-m > .col,.productlist-page-nav-header-m > .col.displayoptions,
.productlist-page-nav-footer-m > .col{width:100%!important;max-width:100%!important;flex:0 0 100%!important;min-width:0!important;
  display:flex!important;flex-wrap:wrap!important;gap:8px!important}
.productlist-page-nav-header-m .dropdown,.productlist-page-nav-header-m .btn-group{max-width:100%!important;min-width:0!important}
.productlist-page-nav-header-m .dropdown > .btn{max-width:100%!important;min-width:0!important;white-space:normal!important}

}
/* ===== Ende Abschnitt 43 ===== */

/* ============================================================
   Abschnitt 44 · Startseite Feinschliff (29.07.2026)
   Zwei funktionale Korrekturen, beide bei 360px im Dunkelmodus gemessen.

   44.1 "DIREKT ZUR ...-WELT"-LINKS im Marken-Regal waren nur 22px hoch -
        die Haelfte der 44px-Fingerflaeche aus §12. Sie stehen in .stc-mkb mit
        16px Abstand, ein unsichtbares ::after haette sich also mit dem
        Nachbarn ueberlappt (Lehre aus Abschnitt 39.2). Deshalb echte Hoehe.
        Gemessen: 22 -> 44px, Tastflaechen unter 44 von 12 auf 4 gesunken,
        Seitenlaenge praktisch unveraendert (11.805 -> 11.804).

   44.2 NEWSLETTER-FELD hatte 14,5px Schrift. Alles unter 16px laesst iOS beim
        Antippen in die Seite zoomen (§12.6). Auf 16px gesetzt.

   ⚠️ NICHT GEMACHT - KLEINTEXT. 51 Textstellen liegen bei 11px statt der 12px
   aus §12. Ein generischer Versuch (font-size:max(12px,1em)) hat es VERSCHLIMMERT:
   er hat andere Elemente verkleinert, die Zahl stieg von 51 auf 137. Rueckgaengig
   gemacht und als offener Punkt notiert - die betroffenen Bausteine (b, i, sub,
   span, .tag, .cat, .n) brauchen einzelne Regeln, keine Sammelregel.
   ============================================================ */
@media (max-width:839px){

/* 44.1 */
#hc-stc .stc-mkgo{min-height:44px!important;align-items:center!important}

/* 44.2 */
#hc-stc input[type=email],#hc-stc input[type=text],#hc-stc input[type=search]{font-size:16px!important}

}
/* ===== Ende Abschnitt 44 ===== */

/* ============================================================
   Abschnitt 45 · Schlussabnahme (30.07.2026)
   Zwei Befunde aus dem Durchlauf 360 / 390 / 768 + Desktop-1280-Gegenprobe
   ueber zehn Seiten (Startseite, /pokemon-tcg, Produktseite, /sammelkarten,
   /sammelkarten-zubehoer, /model-kits, /model-kit-zubehoer, /collectibles,
   /Warenkorb, /news, Suchergebnisseite).

   45.1 HUB-INDEXLEISTEN, DIE NICHT WISCHBAR SIND.
        Gemessen @360: die Ankerleiste der Hub-Inseln braucht 623-660px
        Platz, hat aber nur 360. Drei der sechs Eintraege standen damit
        AUSSERHALB des Bildes - und weil html/body auf overflow-x:clip
        stehen, gab es auch keine Scrollleiste: die Eintraege waren nicht
        weiter rechts, sie waren weg.
        Das ist dieselbe Krankheit wie der Tester-Fehler auf der
        Produktseite - ein Kasten breiter als das Geraet, und ein Vorfahr,
        der den Ueberstand wegschneidet statt ihn scrollbar zu machen.

        Betroffen : /collectibles (.clx-wrap), /sammelkarten-zubehoer (.skz-wrap)
        In Ordnung: /sammelkarten (.skx-wrap), /model-kits (.aa-idx>.wrap),
                    /model-kit-zubehoer (.mkz-wrap) - die hatten
                    overflow-x:auto bereits. Also kein neues Verhalten,
                    sondern eine vergessene Zeile.

        NICHT nur ein 360er-Problem: @390 fehlten immer noch zwei von sechs,
        darunter "Wunsch-Service". Das trifft jedes gaengige Handy.

        Der Selektor ist bewusst allgemein gehalten, damit eine kuenftige
        sechste Insel den Fehler nicht erbt. Trockenlauf gemessen: genau
        EINE Leiste je Seite wird getroffen, keine Kollateraltreffer.
        WARNUNG: das ">" ist nicht Kosmetik. Auf /collectibles heisst AUCH
        der Newsletter-Kasten .clx-wrap (section.clx-news > div.clx-wrap).
        Ohne Kind-Zeichen bekaeme der Newsletter-Block overflow-x:auto.

        Nachgemessen: .clx-wrap 360 sichtbar / 848 Inhalt, .skz-wrap 360/660
        - beide wischbar, Ueberstand 0, Seitenbreite unveraendert 360.

   45.2 EINGABEFELDER UNTER 16px.
        Gemessen: die Newsletter-Felder der Inseln standen auf 14 bzw 14,5px.
        iOS Safari zoomt beim Antippen in JEDES Feld unter 16px hinein und
        zoomt nicht von selbst zurueck - der Kunde landet in einer
        verschobenen Seite. Abschnitt 44 hatte das geloest, aber nur fuer die
        Startseite (Selektor #hc-stc); das Feld steckt jedoch in JEDER Insel.

        Trockenlauf auf /collectibles und /sammelkarten-zubehoer: genau EIN
        Feld je Seite aendert sich (304x48@14,5 -> 304x51@16), Seitenhoehe
        9.941->9.905 bzw 10.825->10.828, kein neuer Querlauf. Such- und
        Kassenfelder standen bereits auf 16px und bleiben unberuehrt.

        WARNUNG: bewusst nur input/select/textarea - NICHT der Versuch aus
        Abschnitt 44, generell Kleintext anzuheben. Der hat die Zahl der
        Elemente unter 12px von 51 auf 137 ERHOEHT und wurde zurueckgenommen.
        Bei Eingabefeldern ist die Menge klein und nachzaehlbar, bei
        Fliesstext nicht.
   ============================================================ */
@media (max-width:839px){

/* 45.1 */
nav[class*="-idx"]>div[class*="-wrap"]{overflow-x:auto!important;-webkit-overflow-scrolling:touch}
nav[class*="-idx"]>div[class*="-wrap"]>*{flex-shrink:0!important}

/* 45.2 */
input[type=email],input[type=text],input[type=search],input[type=tel],
input[type=number],input[type=password],textarea,select{font-size:16px!important}

}
/* ===== Ende Abschnitt 45 ===== */

/* ============================================================
   Abschnitt 46 · Cookie-Banner vor der Kaufleiste (30.07.2026)
   P0 - RECHTLICH RELEVANT. Gefunden auf einem ECHTEN Galaxy S24
   (BrowserStack, Android 14, Chrome), nicht im Messfenster.

   BEFUND. Auf der Produktseite lag die klebende Kaufleiste UEBER dem
   dritten Knopf des Cookie-Banners. Der dritte Knopf ist ausgerechnet
   "Nur notwendige" - die ablehnende Wahl. "Alle akzeptieren" und
   "Auswahl speichern" lagen frei, "Nur notwendige" war nicht antippbar.
   Am Geraet gegengeprueft: das Banner laesst sich nicht weiterschieben,
   der Knopf bleibt hinter der Leiste. Er war also nicht schwer
   erreichbar, sondern gar nicht.

   Das ist nicht nur haesslich. Eine Einwilligung, bei der das Ablehnen
   verdeckt ist waehrend das Zustimmen frei liegt, ist angreifbar.

   URSACHE. Ebenen-Inventar der Seite:
       z=99999  nav.hcm-drawer      (Menue, nur nach Tippen)
       z=  900  div.hcm-buybar      <- meine Kaufleiste
       z=  220  button.hcm-b2t      <- mein "Nach oben"-Knopf
       z=   80  div#hc-cookie       <- das Cookie-Banner
   Zwei meiner fest stehenden Elemente lagen ueber dem Einwilligungs-
   Dialog. Beide muessen zuruecktreten, solange er offen ist.

   WARUM DIESE LOESUNG. Nicht die z-Ebene der Leiste senken - dann
   verschwindet sie hinter normalem Inhalt. Und nicht das Banner
   hochziehen - das ist Desktop-Zone. Stattdessen: solange der Dialog
   offen ist, hat die Kaufleiste dort nichts zu suchen.

   WARUM OHNE :has(). Das Banner (#hc-cookie, Stelle 3 unter body) steht
   im DOM VOR beiden Elementen (Stelle 11 und 12), der Geschwister-
   Selektor "~" reicht also. Laeuft damit auch auf aelteren Geraeten.

   WARUM :not([hidden]). Nach der Zustimmung wird das Banner NICHT aus
   dem DOM genommen - es bekommt display:none UND das hidden-Attribut
   (nachgemessen). Ohne das :not() waere die Kaufleiste dauerhaft weg.

   TROCKENLAUF, drei Zustaende gemessen:
     Banner zugestimmt (hidden)  -> Leiste flex, Knopf grid   (normal)
     Banner offen                -> Leiste none, Knopf none   (tritt zurueck)
     wieder zugestimmt           -> Leiste flex, Knopf grid   (kommt zurueck)
   ============================================================ */
@media (max-width:839px){

#hc-cookie:not([hidden]) ~ .hcm-buybar,
#hc-cookie:not([hidden]) ~ .hcm-b2t{display:none!important}

}
/* ===== Ende Abschnitt 46 ===== */

/* ============================================================
   Abschnitt 47 · Versandrechner im Warenkorb (30.07.2026)
   Gefunden im ANGEMELDETEN Kaufweg-Durchlauf (Marcels Testkonto,
   echter Artikel im Korb, 525 px Fensterbreite).

   BEFUND. Im Warenkorb steht der Block "Versandkosten ermitteln"
   (.shipping-calculator-form). Seine Zeile .form-row ist display:flex
   mit flex-wrap:nowrap und 461 px breit. Darin drei Spalten:

       .col.col-md-5   220 px   (Land)
       .col.col-md-3   120 px   (PLZ)
       .col.col-md-4   219 px   (Knopf "Versandkosten ermitteln")
       ----------------------------
       zusammen        559 px   in einer 461-px-Zeile

   Der Knopf ragte damit 89 px ueber seinen Kasten hinaus und wurde
   abgeschnitten - bei 525 px Fensterbreite. Auf einem 360er-Geraet
   faellt entsprechend mehr weg.

   URSACHE. Die Spalten haben flex:0 0 auto und min-width:auto, sie
   schrumpfen also nicht und brechen nicht um. Die Bootstrap-Klassen
   col-md-5/3/4 greifen nicht, weil das Bootstrap-Grid shopweit fehlt
   (template.xml laesst es weg) - genau die bekannte Falle, die schon
   Warenkorb, Kasse und Konto betrifft. Ohne Grid ist "col" eine
   Klasse ohne Wirkung, und die Spalte nimmt ihre Inhaltsbreite.

   LOESUNG. Mobil untereinander statt nebeneinander. Kein Nachbau des
   Bootstrap-Grids - nur diese eine Zeile umbrechen lassen und die
   Spalten auf volle Breite setzen. min-width:0 ist noetig, weil
   Flex-Kinder sonst nicht unter ihre Inhaltsbreite gehen.

   GEMESSEN, Trockenlauf direkt im Warenkorb:
     vorher  Ueberstand 2, Seitenhoehe 2.359
     nachher Ueberstand 0, Seitenhoehe 2.471 (+112 - die drei Felder
             stehen jetzt untereinander, das ist auf dem Handy richtig)
     Knopf danach 461x44 statt 219 breit und abgeschnitten.

   Der uebrige angemeldete Kaufweg wurde im selben Durchlauf gemessen
   und war sauber: Produktseite, Kundendaten und Zusammenfassung je
   Ueberstand 0 und keine Textfelder unter 16 px.
   ============================================================ */
@media (max-width:839px){

.shipping-calculator-form .form-row{flex-wrap:wrap!important;row-gap:8px}
.shipping-calculator-form .form-row>.col{flex:0 0 100%!important;max-width:100%!important;min-width:0!important}
.shipping-calculator-form .form-row>.col>.btn{width:100%!important}

}
/* ===== Ende Abschnitt 47 ===== */

/* ============================================================
   Abschnitt 48 · Mengenzaehler rund + Hover orange (30.07.2026)

   !! DIESER ABSCHNITT STEHT BEWUSST *AUSSERHALB* DER MEDIA QUERY.
   Er gilt damit auch auf dem Desktop (>=840px) und verlaesst die
   Mobil-Zone. Das ist KEIN Versehen und kein Vertragsbruch:
   Marcel hat es am 30.07.2026 ausdruecklich angeordnet -
   "uebernehme den mengen zaehler auch fuer desktop. in diesem fall
   ist das eine bewusste entscheidung von mir."
   Ohne diese Freigabe gehoert so etwas in custom-desktop.css und
   damit in den Frontend-Desktop-Chat.

   WARUM TROTZDEM IN DIESER DATEI: custom-mobile.css wird ohne
   media-Attribut eingebunden, also auf allen Breiten geladen - eine
   Regel ohne Media Query wirkt hier shopweit. Die Alternative waere
   gewesen, in custom-desktop.css zu schreiben; der Desktop-Chat hat
   aber am selben Tag an genau dieser Datei gearbeitet, und zwei
   Schreiber auf einer Datei ist das groessere Risiko.

   BEFUND (Marcel). Die Knoepfe + und - wirkten eckig. Erst beim
   Ueberfahren erschien ein runder, leicht grauer Kreis.
   Gewuenscht: dauerhaft sauber rund, und beim Ueberfahren orange
   statt grau.

   URSACHE, gemessen im Warenkorb:
     div.input-group.form-counter   132x45  border-radius 2px,
                                    Rahmen 0,67px #707070   <- das Eckige
       button.btn-decrement          40x44  radius 999px 0 0 999px, transparent
       input.form-control.quantity   52x44  radius 0
       button.btn-increment          40x44  radius 0 999px 999px 0, transparent
   Die Knoepfe waren also nur AUSSEN halbrund und komplett durchsichtig -
   sichtbar war allein der eckige Rahmen der Gruppe. Dazu 40x44: bei
   ungleicher Hoehe und Breite wird aus border-radius:50% eine Ellipse,
   kein Kreis.

   AENDERUNG:
     - Rahmen der Gruppe entfernt (er war der eigentliche Grund fuer den
       eckigen Eindruck; von Marcel abgenommen)
     - beide Knoepfe exakt 40x40 -> border-radius:50% ergibt einen echten
       Kreis, dauerhaft mit hellem Grundton rgba(12,30,42,.07)
     - Ueberfahren/Fokus: #ef820e mit weissem Symbol, 0,15s weich
     - Zahlenfeld 12px Radius, zentriert

   SPEZIFITAET, vorher geprueft: die Grundregeln stehen in
   golive-content.css als "body.hc-cart .choose_quantity .btn-decrement"
   OHNE !important. custom-desktop.css enthaelt zu diesem Bauteil gar
   nichts (nachgezaehlt: 0 Treffer fuer form-counter/increment/decrement).
   Die Selektoren hier sind hoeher gewichtet und zusaetzlich !important -
   sie gewinnen in beiden Zonen.
   ============================================================ */

div.input-group.form-counter{border:0!important;border-radius:999px!important;align-items:center!important}
div.input-group.form-counter div.input-group-prepend,
div.input-group.form-counter div.input-group-append{display:flex!important;align-items:center!important}

div.input-group.form-counter button.btn.btn-decrement,
div.input-group.form-counter button.btn.btn-increment{
  width:40px!important;height:40px!important;min-height:0!important;padding:0!important;
  border:0!important;border-radius:50%!important;
  background-color:rgba(12,30,42,.07)!important;color:#0c1e2a!important;
  display:inline-flex!important;align-items:center!important;justify-content:center!important;
  transition:background-color .15s ease,color .15s ease!important}

div.input-group.form-counter button.btn.btn-decrement:hover,
div.input-group.form-counter button.btn.btn-increment:hover,
div.input-group.form-counter button.btn.btn-decrement:focus,
div.input-group.form-counter button.btn.btn-increment:focus{
  background-color:#ef820e!important;color:#fff!important}

div.input-group.form-counter input.form-control.quantity{
  border-radius:12px!important;text-align:center!important}

/* ===== Ende Abschnitt 48 ===== */

/* ============================================================
   Abschnitt 49 · Marken-Regal der Startseite, mobil (30.07.2026)
   Marcels Auftrag, ausdruecklich NUR mobil - "desktop bleibt wie es ist".
   Gehoert zum JS-Block HCM-MARKEN-AKKORDEON.

   49.1 HERSTELLER WEG, MARKENNAME EINZEILIG.
        Gemessen @390: die Zeile a.stc-mk ist 334 px breit, display:flex,
        gap 20 px. Darin <i> "01" 26 px + <b> Markenname + <span.sub>
        Herstellername 147 px. Dem Markennamen blieben dadurch nur 101 px -
        bei 28 px Schrift brach er auf ZWEI Zeilen um (Hoehe 58 statt 29).
        Betroffen waren 5 von 8 Marken.
        Marcel: "Franchise bleibt aber die hersteller koennen weg" und
        "dafuer braucht der text nie in 2 zeilen".
        Nach der Regel: "Gundam Card Game" 203x58 -> 268x29, alle acht
        Namen einzeilig, kein Ueberstand.

   49.2 REGAL KLAPPT UNTER DER MARKE AUF, 4 ARTIKEL STATT 8.
        Die 8 Panels liegen in .stc-mkstage absolut uebereinander, UNTER
        der ganzen Liste. Mobil werden sie in den Fluss geholt und per JS
        direkt hinter die angetippte Zeile geschoben.
        Die Artikel stehen in 4 Reihen .stc-shelfrow zu je 2 Stueck; ab
        der dritten Reihe ausgeblendet ergibt 4 sichtbare Artikel.
        !! Der Selektor trifft NUR .stc-shelfrow. Die Geschwister
        .stc-feet und .stc-mkb sind ebenfalls div, tragen aber die Klasse
        nicht - der "Alle ansehen"-Knopf (192x44) bleibt also erhalten,
        nachgemessen.

   GEMESSEN @390 mit dem JS-Block:
     Modulhoehe   1.507 -> 1.001 px
     Seitenhoehe 11.309 -> 10.803 px
     zweizeilige Markennamen 5 -> 0 | Artikel im Regal 8 -> 4
   ============================================================ */
@media (max-width:839px){

/* 49.1 */
#hc-stc .stc-marken a.stc-mk .sub{display:none!important}
#hc-stc .stc-marken a.stc-mk b{white-space:nowrap!important}

/* 49.2 */
#hc-stc .stc-mgrid{display:block!important}
#hc-stc .stc-mkstage{display:none!important}
#hc-stc .stc-mkpanel{position:static!important;opacity:1!important;visibility:visible!important;height:auto!important;margin:10px 0 18px}
#hc-stc .stc-mlist>.stc-mkpanel{display:block!important}
#hc-stc .stc-mkpanel .stc-regal>.stc-shelfrow:nth-of-type(n+3){display:none!important}

/* 49.3 · Kaufleiste im Anfrage-Zustand (gehoert zum JS-Patch in
   HCM-KAUFWEG): dunkel wie der echte Knopf a.hc-notify-ask, nicht orange.
   Vorher log die Leiste "In den Warenkorb", obwohl der Artikel nur
   angefragt werden kann - Marcels Befund vom 30.07. */
.hcm-buybar.hcm-buybar-ask button{background:#0c1e2a!important;color:#fff!important}

}
/* ===== Ende Abschnitt 49 ===== */

/* ============================================================
   Abschnitt 50 · Set-Chip auf der Produktseite, mobil (30.07.2026)
   Marcels Anweisung mit Code 3010, ausdruecklich "fuer mobile":
   "der schwarze Chip mit GunplaHG kann aus dem standart entfernt
   werden. das ist eher stoerend und macht garkeinen sinn"

   BEFUND. In der Galerie sitzt oben rechts <span class="hc-setchip">
   (gemessen 87x27, in div.hc-gal-main). Sein Text ist das LETZTE
   SEGMENT DER ARTIKELNUMMER:
       HC-GPL-KIT-HGLFRITH   ->  Chip "◆ HGLFRITH"
       HC-GPL-KIT-GUNPLAHG   ->  Chip "◆ GUNPLAHG"
   Bei Model-Kits ist das ein internes Kuerzel ohne jede Bedeutung fuer
   den Kunden - es sieht aus wie eine Marke, ist aber keine.

   ⚠️ NUR MOBIL. Der Chip bleibt auf dem Desktop stehen; Marcel hat 3010
   ausdruecklich "fuer mobile" gegeben. Wer ihn spaeter auch dort
   entfernen will, braucht eine eigene Freigabe.
   ⚠️ Nur ausgeblendet, nicht entfernt: das Markup kommt aus der
   Desktop-Zone. Ein display:none ist die kleinste Aenderung, die keine
   fremde Datei anfasst.
   ============================================================ */
@media (max-width:839px){

body.hc-pdp .hc-gal .hc-setchip{display:none!important}

}
/* ===== Ende Abschnitt 50 ===== */

/* ============================================================
   Abschnitt 51 · Sortiment-Kacheln der Startseite, mobil (30.07.2026)
   Marcels Auftrag: "teilweise kann man nicht erkennen was da abgebildet
   ist am besten alle so wie die collectibles kachel von der optik.
   nur auf mobile"

   BEFUND, gemessen @390. Die Kacheln .stc-tile liegen in einem Raster
   .stc-bento mit grid-auto-rows:190px. In jeder Kachel:
     img.stc-bimg    position:absolute
     div.stc-tover   position:absolute, weiss mit 70% Deckung

   Bei SECHS von sieben Kacheln beginnt das Textfeld bei y72, das Bild
   endet aber erst bei y130 - das Textfeld liegt also 58 px WEIT UEBER
   der unteren Bildhaelfte. Genau deshalb erkennt man das Produkt nicht.

   Die Collectibles-Kachel .stc-t7 ist als EINZIGE richtig gebaut:
     Bild  y10-144 (134 px hoch, also 18 px groesser)
     Text  ab y154 - komplett UNTER dem Bild, Ueberlappung 0
   Das ist die Optik, die Marcel fuer alle wollte.

   AENDERUNG: Bild und Textfeld aus der absoluten Lage in den normalen
   Fluss holen und untereinander stellen. Das Textfeld braucht dann
   keinen halbtransparenten Hintergrund mehr - es liegt ja auf nichts
   mehr drauf.

   ZEILENHOEHE, gemessen statt geschaetzt. Die Kachel "Sammelkarten" hat
   die laengste Unterzeile ("Alle TCG-Welten · Singles · Zubehoer") und
   bricht zweizeilig um - sie bestimmt die noetige Hoehe:
     238px -> 21 px Ueberstand @390
     252px ->  7 px Ueberstand @390
     264px ->  0 px  @390 UND @360
   Gesetzt sind 268px: der gemessene Mindestwert plus 4 px Reserve fuer
   Geraete mit groesserer Systemschrift.

   ⚠️ Beim Messen fast in die Lazy-Falle gelaufen: die Bilder haben
   loading="lazy" und waren beim ersten Messen noch nicht geladen
   (complete=false, naturalWidth 0). Die Kastenhoehen stimmen erst nach
   dem Laden - vorher misst man Platzhalter.
   ============================================================ */
@media (max-width:839px){

#hc-stc .stc-bento{grid-auto-rows:268px!important}
#hc-stc .stc-tile{display:flex!important;flex-direction:column!important}
#hc-stc .stc-bento .stc-tile img.stc-bimg{position:static!important;width:100%!important;height:138px!important;
  object-fit:contain!important;margin:12px 0 0!important;padding:0 10px!important;box-sizing:border-box!important}
#hc-stc .stc-bento .stc-tile.stc-t1 img.stc-bimg{height:300px!important}
#hc-stc .stc-tile .stc-tover{position:static!important;background:transparent!important;height:auto!important;
  margin-top:auto!important;padding:6px 12px 12px!important;flex-direction:column!important;align-items:flex-start!important}

}
/* ===== Ende Abschnitt 51 ===== */

/* ============================================================
   Abschnitt 52 · Pokemon-Kachel flacher + Kachel-Optik (30.07.2026)
   Marcel: "die kachel muss viel kleiner werden" / "flacher" und
   "die kacheln enger zusammen. dann die hintergrund farbe rausnehmen
   und unseren klassischen leichten rand in hell und dark mode um die
   gesamte kachel. wenn man ueber die kacheln hovert oder drauf klickt
   hat die aktive kachel den orangenen rahmen. die hintergrundfarbe im
   darkmode bleibt" - alles ausdruecklich nur mobil.

   52.1 FLACHER. Die Kachel .stc-t1 spannte zwei Rasterzeilen
        (2 x 268 + 14 = 550 px) mit einem Bildkasten von 300 px. Das
        Pokemon-Logo ist 560x287 und rendert bei der verfuegbaren Breite
        nur 161 px hoch - 139 px darunter waren reiner Leerraum.
        Jetzt: eine Zeile, Hoehe aus dem Inhalt, Bildkasten 130 px.
        Gemessen: 550 -> 236 px, also 57% flacher, Logo bleibt
        vollstaendig (object-fit:contain), volle Breite bleibt.
        Durchgemessene Alternativen, Leerraum ueberall 0:
          Bild 150 -> 254 | 130 -> 234 | 116 -> 220 | 100 -> 204

   52.2 ENGER. Abstand 14 -> 10 px. ⚠️ Der eigentliche Uebeltaeter war
        aber ein anderer: durch 52.1 ist die Kachel 236 px hoch, ihre
        Rasterzeile aber weiterhin 268 - macht 32 px Loch plus Abstand,
        also 42 px Luecke. grid-template-rows:min-content laesst die
        ERSTE Zeile ihrer Kachel folgen; die uebrigen bleiben bei 268.
        Gemessen: Luecke 42 -> 10 px.

   52.3 RAND STATT FLAECHE. Die Kacheln hatten einen Beige-Hintergrund
        (rgb(251,248,240)) und statt eines Randes einen Inset-Schatten.
        Jetzt im HELLEN: Hintergrund transparent, Schatten weg, dafuer
        der klassische Rand des Shops. Der Wert ist nicht erfunden,
        sondern von den bestehenden Produktkacheln .prod uebernommen
        bzw. aus der Variablen --border: rgba(12,30,42,.12).
        Im DUNKLEN bleibt die Flaeche stehen (Marcels Vorgabe), nur der
        Rand wird auf rgba(255,255,255,.10) angeglichen - der Wert, den
        --border dort fuehrt.
        Themen-Schalter: html[data-theme="reef"] hell,
        html[data-theme="midnight"] dunkel (nachgemessen).

   52.4 AKTIVE KACHEL ORANGE. :hover fuer Maus, :active fuer den Finger
        (auf Touch gibt es kein Hover), :focus-visible fuer Tastatur.
   ============================================================ */
@media (max-width:839px){

/* 52.1 */
#hc-stc .stc-bento .stc-t1{grid-row:auto/span 1!important;height:auto!important;align-self:start!important}
#hc-stc .stc-bento .stc-tile.stc-t1 img.stc-bimg{height:130px!important}

/* 52.2 */
#hc-stc .stc-bento{row-gap:10px!important;column-gap:10px!important;grid-template-rows:min-content!important}

/* 52.3 */
html[data-theme="reef"] #hc-stc .stc-bento .stc-tile{background:transparent!important;box-shadow:none!important;
  border:1px solid rgba(12,30,42,.12)!important}
html[data-theme="midnight"] #hc-stc .stc-bento .stc-tile{box-shadow:none!important;
  border:1px solid rgba(255,255,255,.10)!important}

/* 52.4 */
#hc-stc .stc-bento .stc-tile:hover,
#hc-stc .stc-bento .stc-tile:active,
#hc-stc .stc-bento .stc-tile:focus-visible{border-color:#ef820e!important}

}
/* ===== Ende Abschnitt 52 ===== */

/* ============================================================
   Abschnitt 53 · Marken-Regal: Produkte erkennbar (30.07.2026)
   Marcel: "hier muss das Regal so gross sein, dass man zu mindestens
   die produktkacheln erkennt". Gehoert zum Auto-Durchlauf im JS-Block
   HCM-MARKEN-AKKORDEON.

   BEFUND @390, und er ist eindeutig: das Produktbild im Regal war
   16x16 PIXEL gross - bei einer Bilddatei von 600x600. Man sah einen
   Kruemel neben zwei Textzeilen in 10,5px.

   URSACHE: der Artikel a.stc-rg-it ist ein Flex-Container mit zwei
   Kindern. Das Bildfeld span.im hat flex:1 1 0% - also Startbreite 0
   und "darf schrumpfen". Das Textfeld span.lb nimmt mit seinen 124px
   den gesamten Platz, das Bildfeld faellt auf 0x0 zusammen und uebrig
   bleibt nur das Bild selbst mit seiner Minimalgroesse.

   AENDERUNG: dem Bildfeld eine feste Groesse geben (52x52, flex:0 0),
   dem Textfeld min-width:0 damit es umbrechen darf statt zu draengeln,
   und die Schrift von 10,5 auf 12 bzw 12,5px.

   GEMESSEN vorher -> nachher:
     Bild      16x16   -> 52x52
     Artikel   124x31  -> 124x94
     Regal     137     -> 263
     Panel     207     -> 333
   Kein Ueberstand, Seite +126px. Das ist der Preis dafuer, dass man
   die Ware ueberhaupt sieht - und immer nur EIN Regal ist offen.
   ============================================================ */
@media (max-width:839px){

#hc-stc .stc-mkpanel .stc-rg-it{gap:8px!important;align-items:center!important}
#hc-stc .stc-mkpanel .stc-rg-it .im{flex:0 0 52px!important;width:52px!important;height:52px!important;
  display:flex!important;align-items:center!important;justify-content:center!important}
#hc-stc .stc-mkpanel .stc-rg-it .im img{width:100%!important;height:100%!important;object-fit:contain!important}
#hc-stc .stc-mkpanel .stc-rg-it .lb{flex:1 1 auto!important;min-width:0!important;width:auto!important}
#hc-stc .stc-mkpanel .stc-rg-it .lb b{font-size:12px!important;line-height:1.25!important}
#hc-stc .stc-mkpanel .stc-rg-it .lb i{font-size:12.5px!important}

}
/* ===== Ende Abschnitt 53 ===== */

/* ============================================================
   Abschnitt 54 · Marken-Regal mobil: Kulisse raus, Kacheln rein (30.07.2026)

   ⚠️ ZWEI ANLAEUFE - der erste war falsch, das gehoert hier dokumentiert.
   Marcel wollte zuerst "ein regal an der wand ... dezenter moderner wand
   hintergrund der zu den raendern abblendet". Das war gebaut (Wand als
   zwei maskierte Ebenen hinter dem Inhalt) und wurde NICHT ausgeliefert,
   weil er nach dem Ansehen praezisiert hat:
     "das passt immer noch nicht. diese standart kacheln sollen dahin.
      mache das mit dem regal in der mobile version ganz raus nur die
      produktkacheln"
   Also: die gesamte Regal-Kulisse verschwindet mobil, und die Artikel
   werden als normale Produktkacheln gezeigt - der Shop-Standard schlaegt
   die Sonderoptik. Desktop bleibt unangetastet, dort bleibt das Regal.

   WAS MOBIL WEGFAELLT: der 8,8px-Rahmen von .stc-regal (die "Bretter"),
   sein Inset-Schatten und die zwei Regalfuesse .stc-feet (je 48x12).

   WAS BLEIBT: genau ZWEI Artikel je Marke (die Artikel liegen in vier
   Reihen zu je zwei; ab der zweiten Reihe ausgeblendet), und der Knopf
   "Alle ansehen" - nachgemessen, dass er nicht mit wegfaellt.

   ⚠️ ANNAHME zu "die neuesten Artikel": es sind die ersten zwei in der
   vorhandenen Reihenfolge. Eine echte Sortierung nach Neuheit braeuchte
   window.HC_NEW oder eine sortierte Auslieferung aus der Desktop-Zone.
   Siehe W17/AUFTRAG_Marken-Regal-Neubau.md.

   KACHEL-AUFBAU: vorher lagen Bild und Text nebeneinander in einer 31px
   hohen Zeile, das Bild war 16x16 (dazu Abschnitt 53). Jetzt untereinander
   als Kachel in der Sprache des Shops - weisser Grund, Rand
   rgba(12,30,42,.10), Radius 20, wie .prod.
   Gemessen: Kachel 161x195, Bild 136x104, Ueberstand 0.

   ⚠️ Der Produktname ragte anfangs 3px aus der Kachel (169px Text in
   161px Kachel) - lange Namen wie "ME05 Dunkelnacht Booster Display"
   brechen ohne Hilfe nicht um. overflow-wrap:anywhere loest das.

   SMOOTH UEBERBLENDEN ohne JavaScript: der Auto-Durchlauf schiebt das
   Panel bei jedem Wechsel neu unter seine Markenzeile - ein neu
   eingefuegtes Element startet seine CSS-Animation von vorn. Deshalb
   genuegt eine Einblendung von 0,45s. prefers-reduced-motion wird
   respektiert.

   Ersetzt in Teilen Abschnitt 49 (dort 4 Artikel) und 53 (Bild/Text
   nebeneinander) - beide bleiben stehen, dieser Abschnitt steht spaeter
   in der Datei und gewinnt.
   ============================================================ */
@media (max-width:839px){

/* Kulisse raus */
#hc-stc .stc-mkpanel{background:transparent!important;padding:12px 0 0!important}
#hc-stc .stc-mkpanel .stc-regal{border:0!important;box-shadow:none!important;background:transparent!important;padding:0!important}
#hc-stc .stc-mkpanel .stc-feet{display:none!important}

/* genau zwei Artikel */
#hc-stc .stc-mkpanel .stc-regal>.stc-shelfrow:nth-of-type(n+2){display:none!important}
#hc-stc .stc-mkpanel .stc-shelfrow{gap:12px!important;padding:0!important}

/* Artikel als Produktkachel */
#hc-stc .stc-mkpanel .stc-rg-it{flex-direction:column!important;gap:8px!important;padding:12px!important;
  background:#fff!important;border:1px solid rgba(12,30,42,.10)!important;border-radius:20px!important;
  align-items:stretch!important;text-align:left!important;flex:1 1 0!important;min-width:0!important}
#hc-stc .stc-mkpanel .stc-rg-it .im{flex:0 0 auto!important;width:100%!important;height:104px!important;
  display:flex!important;align-items:center!important;justify-content:center!important}
#hc-stc .stc-mkpanel .stc-rg-it .im img{width:100%!important;height:100%!important;object-fit:contain!important}
#hc-stc .stc-mkpanel .stc-rg-it .lb{flex:0 0 auto!important;min-width:0!important;width:100%!important;
  flex-direction:column!important;align-items:flex-start!important;gap:4px!important}
#hc-stc .stc-mkpanel .stc-rg-it .lb b{font-size:12.5px!important;line-height:1.3!important;font-weight:700!important;
  max-width:100%!important;overflow-wrap:anywhere!important;word-break:break-word!important}
#hc-stc .stc-mkpanel .stc-rg-it .lb i{font-size:15px!important;font-style:normal!important;font-weight:800!important}

/* weiche Einblendung bei jedem Wechsel */
#hc-stc .stc-mlist>.stc-mkpanel{animation:hcmRegalEin .45s cubic-bezier(.22,.61,.36,1) both}
@keyframes hcmRegalEin{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

}
@media (max-width:839px) and (prefers-reduced-motion:reduce){
#hc-stc .stc-mlist>.stc-mkpanel{animation:none}
}
/* ===== Ende Abschnitt 54 ===== */

/* ============================================================
   Abschnitt 55 · Marken-Modul: Kacheln auf den Shop-Standard (30.07.2026)
   Marcel: "benutze in dem marken modul unseren standart fuer mobile
   produktkacheln aus dem brandbook im hub".

   ⚠️ KORREKTUR AN MIR SELBST. In Abschnitt 54 hatte ich die Kachel-Optik
   frei erfunden statt den vorhandenen Standard zu nehmen. Gemessen an der
   echten .prod-Kachel im Hub (@390: 171x392) wich mein Eigenbau an vier
   Stellen ab:
       Radius       20px   ->  24px
       Rand         1px    ->  0.8px
       Bildfeld     104px hoch, rechteckig -> QUADRATISCH (dort 170x170)
       Name         font-weight 700 -> 600
   Die Werte sind nicht geschaetzt, sondern aus .prod ausgelesen.

   Das quadratische Bildfeld ist der auffaelligste Punkt: der Shop zeigt
   Produktbilder ueberall im Verhaeltnis 1:1. Ein flacheres Feld faellt
   sofort als Fremdkoerper auf, auch wenn man nicht benennen kann warum.

   Gemessen nach der Regel: Kachel 161x223, Bildfeld 160x160 (quadratisch
   bestaetigt), Radius 24, Rand 0.8px, Name 600/12,5px, Ueberstand 0.
   ============================================================ */
@media (max-width:839px){

#hc-stc .stc-mkpanel .stc-rg-it{border:.8px solid rgba(12,30,42,.1)!important;border-radius:24px!important;
  padding:0!important;gap:0!important;overflow:hidden!important}
#hc-stc .stc-mkpanel .stc-rg-it .im{width:100%!important;height:auto!important;aspect-ratio:1/1!important;
  padding:8px!important;box-sizing:border-box!important}
#hc-stc .stc-mkpanel .stc-rg-it .lb{padding:0 12px 12px!important;gap:4px!important}
#hc-stc .stc-mkpanel .stc-rg-it .lb b{font-weight:600!important;font-size:12.5px!important}

}
/* ===== Ende Abschnitt 55 ===== */

/* ============================================================
   Abschnitt 56 · Erster Bildschirm der Startseite (30.07.2026)
   Marcel: "es geht um die anordung und groesse der elemete" - der erste
   Bildschirm war so voll, dass die Slideshow darunter nicht mehr zu sehen
   war. Sein Zielbild zeigt beide Knoepfe NEBENEINANDER und die Slideshow
   angeschnitten im Bild. Nur mobil.

   GEMESSEN @390x844, so ging der Platz weg:
       Kopfbereich    0-192   152px
       Ticker         192      41px
       Ueberschrift   277     165px  (44px Schrift, VIER Zeilen)
       Fliesstext     462     112px
       Knopf 1        598      58px
       Knopf 2        670      58px  <- eigene Zeile
       Slideshow      774            <- 30px vor Bildschirmende

   URSACHE DES UMBRUCHS, und sie ist strukturell: die Knopfleiste
   .stc-hcta ist 334px breit, flex-wrap:wrap, gap 14. Jeder Knopf misst
   durch padding 17px/32px aber 234px - zwei davon brauchen 482px. Sie
   KONNTEN nie nebeneinander passen. Mit flex:1 1 0, min-width:0,
   seitlichem Padding 10px und Schrift 14,5px teilen sie sich die Zeile.

   UEBERSCHRIFT 44 -> 36px. Kein geratener Wert, sondern der Kipppunkt.
   Durchgemessen @390:
       44px -> 187px, 4 Zeilen, Slideshow ab y682 (162px sichtbar)
       40px -> 170px, 4 Zeilen, ab y665 (179px)
       38px -> 161px, 4 Zeilen, ab y657 (187px)
       36px -> 114px, 3 ZEILEN, ab y610 (234px)   <- gewaehlt
       34px ->  72px, 2 Zeilen, ab y568 (276px)
   Bei 36px faellt eine ganze Zeile weg, die Ueberschrift bleibt aber
   wuchtig. 34px waere kompakter, macht sie aber kleiner als im Zielbild.

   ERGEBNIS @390: Slideshow ab y610 statt 774, davon 234px im ersten
   Bildschirm. Gegengeprueft @360x800: Knoepfe 147x50 nebeneinander ohne
   Textumbruch, Slideshow ab y648 mit 152px sichtbar, Ueberstand 0.

   ⚠️ Die Slideshow selbst wird in einem ANDEREN Chat gebaut - hier wird
   nur Platz fuer sie geschaffen, an ihr wird nichts geaendert.
   ============================================================ */
@media (max-width:839px){

#hc-stc h1{font-size:36px!important;line-height:1.06!important}
#hc-stc .stc-hsub{font-size:15.5px!important;line-height:1.5!important;margin-top:14px!important}
#hc-stc .stc-hcta{flex-wrap:nowrap!important;gap:10px!important;margin-top:16px!important}
#hc-stc .stc-hcta a.btn{flex:1 1 0!important;min-width:0!important;padding:14px 4px!important;
  font-size:12.5px!important;white-space:nowrap!important;text-align:center!important;justify-content:center!important}
/* Schrift 14,5 -> 12,5 und Padding 10 -> 4 (Nachtrag 30.07.2026, Marcel:
   "kannst du die schrift in den buttons etwas kleiner machen, damit zu den
   Sammelkarten nicht so gequetscht im button sitzt").
   GEMESSEN @360 - der laengste Text ist "Zu den Sammelkarten":
     14,5px / pad 10 -> Text 151px in 127px Innenraum = -24px, gequetscht
     13,5px / pad  8 -> -10px, immer noch gequetscht
     13,0px / pad  8 ->  -4px
     12,5px / pad  6 ->  +5px, knapp
     12,5px / pad  4 ->  +9px  <- gewaehlt
     12,0px / pad  6 -> +10px, aber unnoetig kleine Schrift
   12,5px mit schmalem Padding schlaegt 12px mit breitem: gleiche Luft,
   groessere Schrift. @390 bleiben 24px Luft. Beide Knoepfe tragen
   dieselbe Groesse - nachgemessen, nicht nur gleich geschrieben.
   Tastflaeche bleibt bei 47px. */

}
/* ===== Ende Abschnitt 56 ===== */

/* ===== ABSCHNITT 57 - Listenansicht der Kategorieseiten, mobil =====
   Befund Marcel 31.07.2026: "die preise muessen etwas kleiner sein, damit der
   shopping button noch in eine reihe passt und wir so ein gleiches layout haben
   ohne das was falsch in ein zweite zeile skalliert."

   URSACHE (gemessen @360 auf /gunpla, 82 Kacheln):
   Der Shop hat bereits eigene Mobil-Regeln fuer die Liste (max-width:839px ->
   .grid.is-list .pim width 110px, .pb einspaltig, .price 20px). Die greifen
   aber nicht, weil eine Regel OHNE Media Query mit ID-Spezifitaet und
   !important darueber steht und .pim auf 205px festnagelt.
   Folge @360: Bild frisst 205 von 305 px, die Textspalte behaelt 64 px.
   Der Name bricht auf "SD Gundam BB Senshi...", der 30-px-Preis ist mit 105 px
   breiter als seine 94-px-Spalte, der Kaufknopf rutscht darunter.

   FIX: gleiche ID-Spezifitaet + !important INNERHALB der Mobil-Zone, damit die
   vom Shop gedachte Listenoptik wieder greift. Bild 92 px, Preis 18 px,
   Preis + Kaufknopf in EINER Reihe (space-between, nowrap).

   ACHTUNG: Der Kaufknopf der Liste ist KEIN Textknopf, sondern span.add (Icon).
   Nur ausverkaufte Artikel zeigen button.hc-ask-btn "Anfragen".
   Icon von 36 auf 44 px = Tastflaechen-Vorgabe.

   GEMESSEN nach dem Fix (82 Kacheln, /gunpla):
     @320  Ueberstand 0 - Knopf faellt bewusst auf eigene volle Zeile
     @360  Ueberstand 0 - engste Luft 19 px (Fall 659,99 EUR + "Anfragen")
     @390  Ueberstand 0 - engste Luft 49 px
     @768  Ueberstand 0 - engste Luft 349 px - Bild 132 px (Tablet-Stufe)
     @840 / @1280  unveraendert: Bild 205, Preis 30 px, Trennlinie da
   Zeilenhoehe 261 -> 185 px, Namensbreite 94 -> 181 px.
   Vierstelliger Preis (1.234,95 EUR) passt @360 mit 10 px Luft. */
@media (max-width:839px){
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pim{width:92px!important;min-width:92px!important;flex:0 0 92px!important;height:92px!important;align-self:flex-start!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb{padding:10px!important;min-width:0}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb .nm{font-size:13px!important;line-height:1.3!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb .price{font-size:18px!important;letter-spacing:-.2px!important;white-space:nowrap!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend{display:flex!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;padding-top:8px!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend>*{flex:0 0 auto!important;min-width:0}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend .add{width:44px!important;height:44px!important;min-width:44px!important;flex:0 0 44px!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend .add svg{width:20px!important;height:20px!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend>button,:is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend>a{width:auto!important;max-width:none!important;min-height:44px!important;padding:0 14px!important;font-size:12.5px!important;white-space:nowrap!important}
}
/* Tablet-Stufe: ab 600 px ist Platz fuer ein groesseres Bild */
@media (min-width:600px) and (max-width:839px){
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pim{width:132px!important;min-width:132px!important;flex:0 0 132px!important;height:132px!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb{padding:14px!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb .nm{font-size:15px!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb .price{font-size:22px!important}
}
/* Unter 360 px (iPhone SE 1. Gen) faellt der Knopf bewusst auf eine eigene
   volle Zeile statt herauszuragen. */
@media (max-width:359px){
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend{flex-wrap:wrap!important;row-gap:8px!important}
  :is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend>button,:is(#hc-clb,#hc-clx,#hc-cp,#hc-dbs,#hc-dbx,#hc-dg,#hc-fab,#hc-gp,#hc-gt,#hc-lc,#hc-mk,#hc-mkz,#hc-mtg,#hc-nrk,#hc-op,#hc-pk,#hc-rft,#hc-sgl,#hc-skx,#hc-skz,#hc-slv,#hc-stc,#hc-swu,#hc-ws,#hc-ygo) .grid.is-list .prod .pb>.rowend>a{flex:1 1 100%!important;width:100%!important}
}
/* ===== Ende Abschnitt 57 ===== */

/* ===== ABSCHNITT 58 - /sammelkarten, Block "02 - Frisch erschienen" mobil =====
   Befund Marcel 01.08.2026: "die unterseite sammelkarten 02, frische sets hat
   zuviele kollisionen und muss fuer mobile optimiert werden."

   URSACHE (gemessen @360, section#skx-releases, 6 Zeilen):
   Die Zeile ist ein starres Raster. Die vorhandene Mobil-Regel
     #hc-skx .skx-rrow{grid-template-columns:84px minmax(0,1fr) 100px 92px;gap:14px}
   braucht allein fuer die FESTEN Spalten 84+100+92 + 3x14 Gap = 318 px.
   Zur Verfuegung stehen bei 360 px aber nur 265 px Innenraum.
   Folge: die flexible Titelspalte wird auf 0 px gequetscht, in ALLEN SECHS
   Zeilen. Die Titel standen als 0x82 bis 0x131 hohe Saeulen da (ein Zeichen
   pro Zeile), der Preis wurde quer durch den Titel gedruckt, und die
   "Zum Artikel"-Spalte ragte 43 px aus der Zeile heraus.
   Die Regel war fuer Tablets gedacht (bis 839 px) und nie bei 360 geprueft:
   rechnerisch traegt sie erst ab 413 px Fensterbreite, lesbar erst ab ~600.

   FIX: bis 599 px wird die Zeile zweizeilig statt vierspaltig.
     Zeile 1  [Code-Chip]  Titel (ueber beide restlichen Spalten)
     Zeile 2  Preis links ......... "Zum Artikel" rechts
   Ab 600 px bleibt das Original unangetastet - dort traegt es (Titel 187 px,
   zweizeilig) und ist kompakter als die Zweizeiler-Variante.

   GEMESSEN nach dem Fix:
     @320  Spalten 76+31,8+89,2 + 2x14 = 225 = Innenraum, Ueberstand 0
     @360  Spalten 76+71,8+89,2 + 2x14 = 265 = Innenraum, Ueberstand 0
     @390  Spalten 76+101,8+89,2 + 2x14 = 295 = Innenraum, Ueberstand 0
     @599  Titel einzeilig, Ueberstand 0
     @600  Original greift wieder (84+187+100+92), Ueberstand 0
     @1280 unveraendert siebenspaltig (84+409+170+90+110+110+92)
   Titel-Boxen 0x82..0x131 -> einheitlich 175x39.
   Zeilenhoehen 123/139/172/123/123/155 -> einheitlich 104.
   Sektionshoehe 1055 -> 845 px. Ganze Seite @360 gegengeprueft:
   0 nullbreite Textfelder, 0 Ueberstand.

   ANMERKUNG fuer den Seiten-Chat: #hc-skx blendet unter 839 px
   .skx-rfr (Franchise) UND .skx-rst (Verfuegbarkeit) aus. Der Abschnitts-
   Vorspann verspricht aber "Verfuegbarkeit ehrlich, wie sie ist". Auf dem
   Handy sieht man sie damit nicht. Nicht eigenmaechtig geaendert - das ist
   eine Design-Entscheidung der Seite, nicht der Mobil-Zone. */
@media (max-width:599px){
  #hc-skx .skx-rrow{grid-template-columns:auto minmax(0,1fr) auto!important;grid-template-rows:auto auto!important;column-gap:12px!important;row-gap:8px!important;align-items:center!important;padding:16px 12px!important}
  #hc-skx .skx-rrow .skx-rcode{grid-area:1/1/2/2!important;align-self:start!important}
  #hc-skx .skx-rrow .skx-rname{grid-area:1/2/2/4!important;min-width:0!important}
  #hc-skx .skx-rrow h3{font-size:15px!important;line-height:1.3!important}
  #hc-skx .skx-rrow .skx-rpr{grid-area:2/1/3/3!important;font-size:16px!important;justify-self:start!important}
  #hc-skx .skx-rrow .skx-rarr{grid-area:2/3/3/4!important;flex-direction:row!important;align-items:center!important;gap:6px!important;justify-self:end!important}
  #hc-skx .skx-rrow .skx-rarr em{font-size:11px!important}
}
/* ===== Ende Abschnitt 58 ===== */

/* ===== ABSCHNITT 59 - /sammelkarten, Franchise-Kacheln "Welche Welt sammelst du?" mobil =====
   Befund Marcel 01.08.2026: "die franchise kacheln sind zu gross. kannst du das
   wie eine listen ansicht machen? links logo und rechts der rest der kachel.
   schoen und akkurat damit alles sauber sitzt."

   URSACHE (gemessen @390, section#skx-welten .skx-posters, 8 Kacheln):
   Die Kachel war ein Plakat mit fester Proportion UND abschneidendem Rand:
     #hc-skx .skx-poster{overflow:hidden}  +  @max-839px{aspect-ratio:16/9}
   Bei 315 px Kachelbreite ergibt 16/9 genau 177 px Hoehe. Der Inhalt braucht
   aber 197 px Logofeld (aspect-ratio 16/10) + 127 px Textblock = 324 px.
   Folge: in ALLEN ACHT Kacheln wurden 147 px abgeschnitten - und zwar genau
   der komplette Textblock. Vom Namen, der Beschreibung und dem Knopf
   "Zum <Marke>-Shop" waren 0 von 127 px sichtbar. Sichtbar war nur das Logo.
   Acht Kacheln a 177 px = 1.530 px Scrollweg fuer acht Logos ohne Text.

   FIX: bis 839 px ist die Kachel eine Listenzeile.
     Logo-Spalte 34 %, Textspalte der Rest, eine einzige Rasterzeile.
     Die Nummer bleibt der schwebende Chip in der Ecke ueber dem Logo.
     grid-auto-rows:1fr haelt alle acht Zeilen exakt gleich hoch.

   ⚠️ ALLE LOGOS LINKS - kein Seitenwechsel. Marcel hatte zuerst
   "immer im wechsel, 2 logos links 2 logos rechts" gewuenscht; das war
   gebaut (nth-child(4n+3)/(4n+4) gespiegelt) und wurde am selben Tag
   verworfen: "mach doch alle logos auf die linke seite das sieht sonst
   komisch aus beim lesen". Der Wechsel bricht die Lesekante - das Auge
   springt je Zeile zwischen zwei Textanfaengen. Nicht wieder einbauen.

   GEMESSEN nach dem Fix (8 Kacheln, live ohne Testcode):
     @320  Zeilen einheitlich 209, Raster 1753 (eng, aber vollstaendig)
     @360  Zeilen einheitlich 154, Raster 1530 -> 1319
     @390  Zeilen einheitlich 152, Raster 1530 -> 1301
     @768  Zeilen einheitlich 120, Raster 1530 -> 1044
     Chip liegt in 8 von 8 Kacheln ueber dem Logo, 0 Kollisionen mit Text.
     Textachse (Name / Beschreibung / Knopf): 0,00 px Abweichung,
     jetzt zusaetzlich EINE gemeinsame Lesekante ueber alle acht Kacheln.
     @840 und @1280 unveraendert (zwei- bzw. vierspaltiges Plakat-Raster).

   ⚠️ WARUM DIE NUMMER NICHT IN DEN TEXTFLUSS GEHOERT: eine Zwischenfassung
   stellte den Chip ueber den Namen. Das kostet eine eigene Rasterzeile
   (27 px + Abstand) und der lange Name "Magic: The Gathering" bricht dann
   zweizeilig - ueber grid-auto-rows:1fr zog dieser EINE Name alle acht
   Zeilen von 166 auf 183 px. Ergebnis waeren 1.551 px gewesen, also mehr
   als der kaputte Ausgangszustand.

   ⚠️ HINWEIS AN DIE DESKTOP-ZONE: derselbe Zuschnitt-Fehler steckt zwischen
   840 und 1199 px. Dort gilt aspect-ratio:16/10 auf der Kachel, gemessen bei
   840 px: Kachel 375x234, Inhalt 234 Logofeld + 127 Textblock = 361 - also
   127 px abgeschnitten, wieder der ganze Textblock. Nicht angefasst,
   das ist Zone >= 840. */
@media (max-width:839px){
  #hc-skx .skx-posters{gap:12px!important;grid-auto-rows:1fr!important}
  #hc-skx .skx-poster{aspect-ratio:auto!important;display:grid!important;grid-template-columns:34% 1fr!important;grid-template-rows:1fr!important;column-gap:14px!important;row-gap:0!important;align-items:center!important;padding:12px!important}
  #hc-skx .skx-poster .skx-pnum{position:absolute!important;grid-area:auto!important;top:10px!important;left:10px!important;right:auto!important;justify-self:auto!important;align-self:auto!important}
  #hc-skx .skx-poster .skx-bslot{grid-area:1/1/2/2!important;aspect-ratio:auto!important;align-self:stretch!important;min-height:96px!important}
  #hc-skx .skx-poster .skx-bslot .skx-logo{padding:10px!important}
  #hc-skx .skx-poster .skx-btb{grid-area:1/2/2/3!important;padding:0!important}
}
/* ===== Ende Abschnitt 59 ===== */

/* ===== ABSCHNITT 60 - Hero-Produktbuehne der Hub-Seiten: mobil komplett raus =====
   Auftrag Marcel 01.08.2026: "der bereich oben im bereich sammelkarten mit den
   produkten und direkt zum shop soll in der mobile version raus. pruefe auch bei
   modelkits und ggf ebenfalls in der mobile version raus"

   WAS DAS IST: die Hero-Buehne direkt unter der Index-Leiste. Auf dem Desktop
   ein Karussell mit einer Produktfolie; mobil baue ich sie seit Woche 13 zum
   zweispaltigen Raster um (Klasse hcm-hub-show). Sie kommt auf FUENF Hub-Seiten
   vor - gemessen @390:
     /sammelkarten           #skxHeroCar  711 px  4 Preise  4x "Zum Shop"
     /sammelkarten-zubehoer  #skzHeroCar  711 px  4 Preise
     /model-kits             #mkHeroCar   416 px  5 Preise
     /model-kit-zubehoer     #mkzHeroCar  622 px  4 Preise
     /collectibles           #clxHeroCar  483 px  0 Preise  <- KEINE Produktbuehne

   ENTFERNT auf den VIER Seiten mit Produktkacheln. /collectibles bleibt: dort
   ist es eine Schaukasten-Insel ohne Preise und ohne Kaufweg, also nicht das
   Modul, das Marcel gemeint hat.
   Die beiden Zubehoer-Hubs hat Marcel nicht ausdruecklich genannt - sie tragen
   aber exakt dasselbe Modul wie die beiden Hauptseiten. Mitgenommen, damit die
   vier Hubs nicht auseinanderlaufen. Zurueckholen = die jeweilige ID hier
   aus dem Selektor streichen, eine Zeile.

   GEMESSEN nach dem Ausblenden (live, @390):
     /sammelkarten           Seite 11.260 -> 10.544 px  (-716)
     /sammelkarten-zubehoer  Seite 10.854 -> 10.138 px  (-716)
     /model-kits             Seite 12.038 -> 11.615 px  (-423)
     /model-kit-zubehoer     Seite 12.149 -> 11.521 px  (-628)
   Auf allen vier Seiten folgt jetzt direkt hinter der Index-Leiste der Block
   "01 - ..." mit 0 px Restluecke - kein Loch, kein doppelter Abstand.
   @840 und @1280 unveraendert: Buehne sichtbar, Karussell laeuft weiter.

   ⚠️ SPEZIFITAETS-FALLE: eine fremde Regel #hc-mk .aa-stage{display:grid
   !important} (Spezifitaet 1-2-0, ebenfalls in einer max-width:839px-Abfrage,
   aber NICHT in dieser Datei) schlaegt ein simples #mkHeroCar (1-0-0).
   Deshalb steht hier die Insel-ID VOR der Buehnen-ID (1-0-0 + 1-0-0 = 2-0-0).
   Wer das kuerzt, schaltet die Regel still ab.

   HINWEIS: Abschnitt 60 hatte bis 19:40 Uhr desselben Tages die Kacheln dieser
   Buehne auf den Produktkachel-Standard gesetzt (Radius 24, Rand 0,8 px,
   quadratisches Bildfeld, Name 12,5/600). Da die Buehne mobil nun ganz
   entfaellt, waeren das tote Regeln - sie sind ersetzt statt auskommentiert.
   Die Fassung liegt als Sicherungskopie in
   SERVER-ERSATZ_2026-07-29/W17/_block-abschnitt-60.css, falls die Buehne
   mobil zurueckkommt. */
@media (max-width:839px){
  #hc-skx #skxHeroCar,#hc-skz #skzHeroCar,#hc-mk #mkHeroCar,#hc-mkz #mkzHeroCar{display:none!important}
}
/* ===== Ende Abschnitt 60 ===== */

/* ===== ABSCHNITT 61 - Model-Kits-Hero an den Sammelkarten-Hero angeglichen, Chip raus =====
   Auftrag Marcel 01.08.2026: "kannst du bitte modelkits den hero an den von
   sammelkarten anpassen und akkurat nachziehen. der grosse chip bei sammelkarten
   wird nicht uebernommen und auch bei sammelkarten entfernt"

   DER "GROSSE CHIP" ist span.skx-eyebrow im Sammelkarten-Hero: eine volle
   Breite fuellende Pille (319x54 @390, Radius 999, eigener Hintergrund,
   12,5 px / fw 800) mit dem Text "Sammelkarten - Displays, Booster & Singles".
   Sie ist mobil auf BEIDEN Seiten aus - auf /model-kits die Entsprechung
   span.eyebrow (339x36, schlicht ohne Pille). Danach beginnt der Hero auf
   beiden Seiten direkt mit der Ueberschrift.
   ⚠️ NUR MOBIL. Auf dem Desktop bleiben beide stehen (@1280 geprueft:
   Sammelkarten inline-block 35 px, Model Kits inline-flex 18 px). Wenn der
   Chip auch am Desktop weg soll, ist das eine Uebergabe an Frontend-Desktop.

   GEMESSENE ABWEICHUNGEN VORHER (@390, Model Kits gegen Sammelkarten):
     Hero-Hoehe          650  gegen 503
     Innenpolster Wrap    18  gegen 28 px  -> Innenbreite 339 statt 319
     Raster-Innenpolster  51/52 px extra   -> allein 103 px Hoehe
     h1                   42 px            gegen clamp(34px,9vw,44px) = 35,1
     Lead                 15,5 px          gegen 16,5 px / lh 1,65
     CTA-Knoepfe          183 und 186 px halbbreit, flex 0 1 auto
                                           gegen 319x48, flex 1 1 100%
     CTA-Abstand          gap 14 / mt 30   gegen gap 12 / mt 26
     Kennzahlen           2+1 gestapelt, 144 px hoch, Zahl 30 px, Label fw 600
                          ls 1,43          gegen eine Reihe, 60 px, Zahl 26 px,
                                           Label fw 700, ls 1,1
     Abstaende            h1 mt 22 / Lead mt 24 / figs mt 40
                                           gegen 20 / 18 / 34

   ERGEBNIS (@390, live gegengemessen):
     Sammelkarten  Hero 450 - innen 319 - h1 35,136 - Knopf 319x48 - figs 60
     Model Kits    Hero 476 - innen 319 - h1 35,136 - Knopf 319x48 - figs 85
   Alles deckungsgleich bis auf die Kennzahlen-Hoehe.

   ⚠️ WARUM figs 85 statt 60 - und warum das NICHT zu beheben ist:
   Die drei Model-Kits-Labels sind laenger als die von Sammelkarten
   ("Bausaetze gelistet" gegen "Produkte"). In drei gleichen Spalten a 106 px
   bricht genau EINES davon zweizeilig - das kostet 25 px. Damit alle drei
   einzeilig passen, muesste das Label unter 11 px, und 11 px ist am Shop
   ohnehin schon die untere Grenze. Gerechnet: die drei Labels brauchen bei
   der Sammelkarten-Typografie zusammen 320 px plus Polster, verfuegbar sind
   319. Der Rest der Kachelreihe steht exakt gleich - drei gleich breite
   Spalten, gleiche Zahl- und Labelgroesse.

   WEITERE BREITEN (live):
     @360  beide innen 289, h1 34, Knopf 289x48 - Hero 447 gegen 473
     @768  beide innen 697, h1 44, Knopf 697x48 - Hero 468 gegen 477
     @320  Model Kits 473 / figs 85, Sammelkarten 555 / figs 133 - dort
           bricht die Sammelkarten-Reihe schlechter um als das neue
           Model-Kits-Raster. Kein Auftrag, nur notiert.
     @840 und @1280 unveraendert. */
/* ⚠️ SHOPWEIT, BEWUSST OHNE MEDIA QUERY - Marcel am 01.08.2026 auf Rueckfrage:
   "desktop auch". Der grosse Chip faellt damit in BEIDEN Zonen weg, nicht nur
   mobil. custom-mobile.css wird ohne media-Attribut eingebunden und wirkt hier
   deshalb auch ab 840 px. Zweiter Fall dieser Art nach Abschnitt 48
   (Mengenzaehler). NICHT wegraeumen, weil es "in der Mobil-Datei steht". */
#hc-skx .skx-hero .skx-eyebrow,#hc-mk .aa-hero .eyebrow{display:none!important}
@media (max-width:839px){
  #hc-mk .aa-hero{padding:28px 0 30px!important}
  #hc-mk .aa-hero .wrap{padding-left:28px!important;padding-right:28px!important}
  #hc-mk .aa-hero .aa-hgrid{padding:0!important}
  #hc-mk .aa-hero h1{font-size:clamp(34px,9vw,44px)!important;line-height:1.02!important;margin-top:20px!important}
  #hc-mk .aa-hero .aa-lead{font-size:16.5px!important;line-height:1.65!important;margin-top:18px!important;margin-bottom:14px!important}
  #hc-mk .aa-hero .aa-cta{gap:12px!important;margin-top:26px!important}
  #hc-mk .aa-hero .aa-cta>a{flex:1 1 100%!important;height:48px!important}
  #hc-mk .aa-hero .aa-figs{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:14px 0!important;margin-top:34px!important}
  #hc-mk .aa-hero .aa-figs .aa-fig{width:auto!important;padding-right:0!important}
  #hc-mk .aa-hero .aa-figs .aa-fig>*:first-child{font-size:26px!important;letter-spacing:normal!important}
  #hc-mk .aa-hero .aa-figs .aa-fig>*:last-child{font-weight:700!important;letter-spacing:1.1px!important}
}
/* ===== Ende Abschnitt 61 ===== */

/* ===== ABSCHNITT 62 - Startseiten-Modul "Top-Marken", mobil neu gebaut =====
   Auftrag Marcel 01.08.2026: Modul sauber neu programmieren, nur Mobil-Zone.
   Gehoert zum JS-Block HCM-TOPMARKEN-V2 in custom-mobile.js - dort steht die
   ausfuehrliche Ursachenanalyse. Kurz:
     1. transition:all .25s auf dem Markennamen steht in der Kaskade UEBER
        !important. Die alte 3-Sekunden-Automatik hielt staendig Uebergaenge am
        Laufen - deshalb sind vier CSS-Runden wirkungslos verpufft.
        -> Automatik ist raus, und hier steht transition:none fuer das Modul.
     2. Der Markenname steht zweimal im DOM: echter Text (weiss) + b::before
        aus data-txt (durchsichtig). Erst der Desktop-Hover faerbt eine Ebene.
        Mobil gab es das nicht -> 7 von 8 Marken unsichtbar.
        -> Pseudo-Element stillgelegt, echter Text in der Markenfarbe --mc.

   GEMESSEN nach dem Umbau @390: weisse Namen 8 -> 0, Namensgroesse 28 -> 20 px,
   Zeilenhoehe 56 px (Tastflaeche), Kacheln 154x227 mit quadratischem Bildfeld
   152x152 im Kachel-Standard, Knopf 307x44, Sektion 1.077 -> 1.039 px.

   ⚠️ Die alten Abschnitte 49/53/54 zum selben Modul stehen noch in dieser
   Datei (rund 7,5 KB, drei Bloecke zwischen 149.000 und 167.400). Sie sind
   durch den Umbau weitgehend gegenstandslos, wurden aber NICHT entfernt:
   die automatische Grenzerkennung lieferte ueberlappende Bereiche, und an
   einer 190-KB-Produktionsdatei wird nicht auf Verdacht geschnitten.
   Aufraeumen ist als eigene Aufgabe hinterlegt - von Hand, an den Marker-
   Kommentaren entlang, nicht ueber berechnete Offsets. */
@media (max-width:839px){
  /* Uebergaenge stilllegen - sie stehen ueber !important und maskieren jede Regel */
  #hc-stc .stc-mlist .hcm-zeile,#hc-stc .stc-mlist .hcm-zeile *,#hc-stc .stc-mlist .hcm-panel,#hc-stc .stc-mlist .hcm-panel *{transition:none!important;animation:none!important}
  /* Kopf */
  #hc-stc .stc-marken .stc-shead h2{font-size:clamp(26px,7.2vw,34px)!important;line-height:1.08!important}
  #hc-stc .stc-marken .stc-shead p.lead{font-size:15px!important;line-height:1.55!important}
  /* Markenzeile */
  #hc-stc .stc-mlist .hcm-zeile{display:flex!important;align-items:center!important;gap:12px!important;min-height:56px!important;padding:10px 0!important;border-bottom:.8px solid var(--border)!important;text-decoration:none!important}
  #hc-stc .stc-mlist .hcm-zeile i{flex:0 0 auto!important;font-style:normal!important;font-size:12px!important;font-weight:800!important;opacity:.5!important;-webkit-text-fill-color:currentColor!important}
  #hc-stc .stc-mlist .hcm-zeile b{position:relative!important;flex:1 1 auto!important;min-width:0!important;font-size:20px!important;line-height:1.15!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;color:var(--mc,#0c1e2a)!important;-webkit-text-fill-color:var(--mc,#0c1e2a)!important;-webkit-text-stroke:0!important;text-shadow:none!important}
  #hc-stc .stc-mlist .hcm-zeile b::before,#hc-stc .stc-mlist .hcm-zeile b::after{display:none!important;content:none!important}
  #hc-stc .stc-mlist .hcm-zeile .sub{display:none!important}
  #hc-stc .stc-mlist .hcm-zeile::after{content:""!important;flex:0 0 auto!important;width:10px!important;height:10px!important;border-right:2px solid var(--mc,#0c1e2a)!important;border-bottom:2px solid var(--mc,#0c1e2a)!important;transform:rotate(45deg)!important;margin-right:4px!important;opacity:.55!important}
  #hc-stc .stc-mlist .hcm-zeile.hcm-aktiv::after{transform:rotate(-135deg)!important;opacity:1!important}
  /* Panel */
  #hc-stc .stc-mlist .hcm-panel{display:none!important}
  #hc-stc .stc-mlist .hcm-panel.hcm-auf{display:block!important;padding:14px 0 18px!important;background:transparent!important;border:0!important}
  #hc-stc .stc-mlist .hcm-panel .stc-regal{display:block!important;background:transparent!important;border:0!important;padding:0!important;box-shadow:none!important}
  #hc-stc .stc-mlist .hcm-panel .hcm-row{display:grid!important;grid-template-columns:1fr 1fr!important;gap:12px!important}
  /* Kachel im Shop-Standard */
  #hc-stc .stc-mlist .hcm-panel a.stc-rg-it{display:flex!important;flex-direction:column!important;width:auto!important;height:auto!important;background:var(--card)!important;border:.8px solid var(--border)!important;border-radius:24px!important;overflow:hidden!important;text-decoration:none!important;opacity:1!important;transform:none!important}
  #hc-stc .stc-mlist .hcm-panel a.stc-rg-it .im{display:block!important;width:100%!important;height:auto!important;aspect-ratio:1/1!important;flex:0 0 auto!important;background:transparent!important;border-radius:0!important;overflow:hidden!important}
  #hc-stc .stc-mlist .hcm-panel a.stc-rg-it .im img{width:100%!important;height:100%!important;object-fit:contain!important;padding:10px!important;box-sizing:border-box!important;display:block!important}
  #hc-stc .stc-mlist .hcm-panel a.stc-rg-it .lb{display:block!important;width:auto!important;height:auto!important;padding:10px 12px 12px!important;background:transparent!important;opacity:1!important}
  #hc-stc .stc-mlist .hcm-panel a.stc-rg-it .lb b{display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important;font-size:12.5px!important;font-weight:600!important;line-height:1.3!important;color:var(--ink,#0c1e2a)!important;-webkit-text-fill-color:currentColor!important}
  #hc-stc .stc-mlist .hcm-panel a.stc-rg-it .lb i{display:block!important;font-style:normal!important;font-size:15px!important;font-weight:800!important;margin-top:6px!important;color:var(--ink,#0c1e2a)!important;-webkit-text-fill-color:currentColor!important}
  /* Knopf zur Markenseite */
  #hc-stc .stc-mlist .hcm-panel .stc-mkb{display:block!important;margin-top:14px!important}
  #hc-stc .stc-mlist .hcm-panel a.stc-mkgo{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;min-height:44px!important;border-radius:999px!important;border:.8px solid var(--border)!important;font-size:12.5px!important;font-weight:800!important;text-decoration:none!important;color:var(--mc,#0c1e2a)!important;-webkit-text-fill-color:currentColor!important}
}
/* ===== Ende Abschnitt 62 ===== */

/* ============================================================================
   ABSCHNITT — COOKIE-BANNER MOBIL (Befund Marcel 10.08.2026)
   ----------------------------------------------------------------------------
   Gemessen @390: der Kasten ist 797 px hoch, hat max-height:none und
   overflow:visible. Auf dem echten iPhone bleiben mit Safari-Leisten nur rund
   660 px sichtbar -> der Kopf wird abgeschnitten, der Kunde sieht die Einleitung
   nicht mehr. Zusaetzlich sind die drei Knoepfe unterschiedlich breit
   (146 / 165 / 146) und linksbuendig.

   Fix: eigener Scrollbereich statt Abschnitt + drei gleich breite Knoepfe.
   100dvh statt 100vh, weil Safari die Leisten dynamisch ein- und ausfaehrt.
   Basisregeln liegen in golive-content.css (GETEILTE Datei) - hier NUR mobil
   ueberschrieben, Desktop bleibt unangetastet.
   ============================================================================ */
@media (max-width: 839px) {
  #hc-cookie {
    max-height: calc(100dvh - 48px);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
  /* Knoepfe untereinander, volle Breite, gleiche Hoehe */
  #hc-cookie .ck-actions {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }
  #hc-cookie .ck-actions > button,
  #hc-cookie .ck-actions > a {
    width: 100%;
    justify-content: center;
    text-align: center;
  }
}
