/* Jeanettemai v2 — extras NOT in the design handoff source.
   Shoptimizer chrome reskin + mobile hybrid bottom bar + WC integration tweaks.
   Scoped to body.jm-v2 (body class set by the jm child theme). */

/* =========================================================================
   SHOPTIMIZER HEADER RESKIN (ported from fabricly v2 header blocks, 2026-07-02;
   palette translated to jm tokens: peach = CTA/fill, pink = accent)
   ========================================================================= */

/* --- Page background: near-white surface everywhere --- */
body.jm-v2 {
    background: var(--cream, #FDFDFC);
    color: var(--text, #333E48);
}

/* --- Header: keep Shoptimizer DOM, swap palette + typography --- */
body.jm-v2 #masthead,
body.jm-v2 .site-header,
body.jm-v2 #site-navigation {
    background: var(--cream, #FDFDFC) !important;
    border-bottom: 1px dashed var(--border, #ECEAE6) !important;
    box-shadow: none !important;
}
body.jm-v2 #masthead a,
body.jm-v2 .site-header a,
body.jm-v2 #site-navigation a {
    color: var(--text, #333E48);
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
}
body.jm-v2 .site-branding .site-title,
body.jm-v2 .site-branding a {
    font-family: 'Nunito', sans-serif;
    font-weight: 900;
    letter-spacing: -0.02em;
}
body.jm-v2 #site-navigation a:hover,
body.jm-v2 .main-navigation a:hover {
    color: var(--jm-pink, #E27297);
}

/* Footer reskin — preserves all original columns + links, just paints them. */
body.jm-v2 .site-footer,
body.jm-v2 #colophon,
body.jm-v2 .footer-widgets {
    background: var(--cream, #FDFDFC) !important;
    color: var(--text, #333E48) !important;
    border-top: 1px dashed var(--border, #ECEAE6) !important;
}
body.jm-v2 .site-footer a,
body.jm-v2 #colophon a {
    color: var(--text, #333E48);
    font-family: 'Nunito', sans-serif;
}
body.jm-v2 .site-footer a:hover,
body.jm-v2 #colophon a:hover {
    color: var(--jm-pink, #E27297);
}
body.jm-v2 .site-footer h2,
body.jm-v2 .site-footer h3,
body.jm-v2 .site-footer h4,
body.jm-v2 #colophon h2,
body.jm-v2 #colophon h3,
body.jm-v2 #colophon h4 {
    font-family: 'Nunito', sans-serif !important;
    font-weight: 900 !important;
    color: var(--text, #333E48) !important;
}

/* Search field reskin — only the input gets the visible border, not the
   wrapper. Painting both produces a double-border look. */
body.jm-v2 .site-search {
    background: transparent;
    border: 0;
    padding: 0;
}
body.jm-v2 .site-search .woocommerce-product-search,
body.jm-v2 .site-search .search-form {
    position: relative;
    display: flex;
    align-items: stretch;
    background: #fff;
    border: 1.5px solid var(--border, #ECEAE6);
    border-radius: 999px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(60, 50, 30, 0.05);
}
body.jm-v2 .site-search input[type="search"],
body.jm-v2 .site-search .search-field {
    flex: 1;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 10px 18px !important;
    font-family: 'Poppins', sans-serif !important;
    font-size: 14px !important;
    color: var(--text, #333E48) !important;
    outline: none !important;
    border-radius: 0 !important;
}
body.jm-v2 .site-search button[type="submit"] {
    flex-shrink: 0;
    background: var(--jm-yellow, #C75B80) !important;
    color: #fff !important;
    border: 0 !important;
    padding: 0 18px !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 800 !important;
    font-size: 13px !important;
    letter-spacing: 0.04em !important;
    cursor: pointer;
    border-radius: 0 !important;
}
body.jm-v2 .site-search button[type="submit"]:hover {
    background: var(--jm-yellow-dark, #B14A6F) !important;
}

/* Shoptimizer renders TWO product searches — one in the main header and one in
   the secondary nav bar (.shoptimizer-primary-navigation). Hide the secondary
   one in v2 so we don't get a phantom white bar next to the categories.
   Desktop-only — at ≤992 .col-full-nav becomes Shoptimizer's slide-out
   drawer and this .site-search is the drawer's search field (keep it there). */
@media (min-width: 993px) {
body.jm-v2 .shoptimizer-primary-navigation > .site-search,
body.jm-v2 .col-full-nav .site-search {
    display: none !important;
}
}

/* Shoptimizer paints a magnifier icon via .woocommerce-product-search::before
   that overlaps our placeholder text (left-anchored). The yellow submit button
   already provides the search affordance — kill the parent-theme icon. */
body.jm-v2 .woocommerce-product-search::before,
body.jm-v2 .widget_search::before,
body.jm-v2 form.search-form::before,
body.jm-v2 .wp-block-search__inside-wrapper::before {
    display: none !important;
    content: none !important;
}

/* MOB-R2 FIX-1 ────────────────────────────────────────────────────────────
   The whole nav-row reskin below is DESKTOP-ONLY. Shoptimizer switches nav at
   992/993: at ≤992 it does NOT hide .col-full-nav — it converts it into the
   off-canvas hamburger drawer (position:fixed; left:-300px; width:300px;
   min-height:100vh; z-index:102; opened by body.mobile-toggled → left:0).
   An unscoped `position:relative !important` destroys that panel: the 100vh
   box renders IN FLOW at the top of every page and overlaps the header. */
@media (min-width: 993px) {
/* The secondary nav row (.col-full-nav / .shoptimizer-primary-navigation) had
   a white background. With the duplicate search hidden, that left a wide white
   strip beside the menu items. Blend the row with the page background. */
body.jm-v2 .col-full-nav,
body.jm-v2 .shoptimizer-primary-navigation {
    background: var(--cream, #FDFDFC) !important;
    border-top: 1px dashed var(--border, #ECEAE6) !important;
    border-bottom: 1px dashed var(--border, #ECEAE6) !important;
}
/* Center the primary nav VISUALLY in the row.
   .shoptimizer-primary-navigation IS the .col-full element (same div), so a
   `> .col-full` rule matches nothing. The row contains: hidden search +
   #site-navigation + cart. Use flex with nav as flex:1 so it expands to fill
   the row, then center menu items inside the ul. This keeps the menu ul
   at full width — critical because the mega menu anchors to that ul
   (`.main-navigation > div > ul { position: relative }`). Absolute-positioning
   the nav shrinks it to content-width and breaks mega-menu width. */
body.jm-v2 .col-full-nav {
    position: relative !important;
    z-index: 100 !important;
}
body.jm-v2 .shoptimizer-primary-navigation {
    position: relative !important;
    z-index: 100 !important;
    display: flex !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
}
body.jm-v2 .shoptimizer-primary-navigation > #site-navigation,
body.jm-v2 .shoptimizer-primary-navigation > nav.main-navigation {
    flex: 1 1 auto !important;
    margin: 0 !important;
    width: auto !important;
}
body.jm-v2 .shoptimizer-primary-navigation > .site-header-cart,
body.jm-v2 .shoptimizer-primary-navigation > nav.site-header-cart {
    flex: 0 0 auto !important;
    margin-left: auto !important;
}
body.jm-v2 .shoptimizer-primary-navigation .primary-navigation {
    margin: 0 !important;
}
}

/* MOB-R2 FIX-2b — mobile hamburger drawer assist (≤992, matches Shoptimizer's
   own switch point). Real open-state structure (from parent main.css/js):
   body.mobile-toggled → .col-full-nav slides in (z 102), .mobile-overlay dims
   (z 101), .mobile-menu.close-drawer is the X (z 999). Our fixed v2 UI sits at
   .fab-mbar z 1000 / #jm-btt z 999, both potentially ABOVE the parent drawer —
   so lift the drawer stack over them and hide the bar + back-to-top while the
   menu is open (mirrors the cart drawer-open pattern). */
@media (max-width: 992px) {
body.jm-v2 .col-full-nav {
    background: #fff !important; /* solid panel — otherwise reads transparent */
}
body.jm-v2 .col-full-nav a {
    pointer-events: auto !important;
}
body.jm-v2.mobile-toggled .col-full-nav { z-index: 100001 !important; }
body.jm-v2.mobile-toggled .mobile-overlay { z-index: 100000 !important; }
body.jm-v2.mobile-toggled .mobile-menu.close-drawer { z-index: 100002 !important; }
body.jm-v2.mobile-toggled .fab-mbar,
body.jm-v2.mobile-toggled #jm-btt { display: none !important; }
}

/* ===== Header scrapbook personality =====
   Yellow cart pill, nav pill chips with rotation-on-hover, account icon hover —
   so the header reads as part of the v2 page rather than stranded above it. */

/* Cart icon → quiet outline glyph, third pass (Marc 2026-08-05: den fyldte
   rosa pille "ser stadig ud til at stå oven på noget" — den var det ENESTE
   massive element i en header af tynde streg-ikoner: hamburger, line-art-logo,
   muted konto-ikon, og mbar'ens outline-faner har allerede en KURV. Integreret
   = samme dæmpede blæk som konto-ikonet 20px væk; antallet som lille pink
   prik-badge i stedet for en hel pille om det hele).
   CSS-only on purpose: the Shoptimizer markup (.amount + .count) stays
   untouched so the wc-ajax cart fragment keeps refreshing the count — the
   bag glyph is drawn via ::before. */
body.jm-v2 #masthead .shoptimizer-cart .cart-contents {
    position: relative;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    /* Parent sets height/line-height 55px + 1px #eee border on .cart-contents;
       left alone it bloats into a 55px gray-edged oval on the ~60px
       mobile header. Normalize: */
    height: auto !important;
    line-height: 1 !important;
    border: 0 !important;
    background: transparent !important;
    color: var(--text-mid, #5D7184) !important;
    padding: 10px !important;
    min-width: 44px;
    min-height: 44px;
    box-sizing: border-box;
    border-radius: 12px !important;
    text-decoration: none !important;
    transition: color 200ms ease-out !important;
    box-shadow: none;
}
/* White bag glyph. Marc 2026-07-29 called the mobile cart "unclear": the old
   path was a bare trapezoid (M6 2l-2 6v14h16V8l-2-6z) with no handle, which at
   16px reads as an anonymous box rather than a shopping bag. Body + handle,
   rounded joins, 18px — the handle is what makes it legible at a glance. */
/* Glyffen tegnes som MASK med currentColor-fyld (før: baked-in hvid stroke i
   en background-image, som ingen hover kunne farve). Nu følger den elementets
   color — muted i ro, pink på hover, præcis som konto-ikonet. */
body.jm-v2 #masthead .shoptimizer-cart .cart-contents::before {
    content: "";
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 8h13l-1.1 11.4a1.5 1.5 0 0 1-1.5 1.35H8.1a1.5 1.5 0 0 1-1.5-1.35z'/%3E%3Cpath d='M9 8V6.2a3 3 0 0 1 6 0V8'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 8h13l-1.1 11.4a1.5 1.5 0 0 1-1.5 1.35H8.1a1.5 1.5 0 0 1-1.5-1.35z'/%3E%3Cpath d='M9 8V6.2a3 3 0 0 1 6 0V8'/%3E%3C/svg%3E") center / contain no-repeat;
}
body.jm-v2 #masthead .shoptimizer-cart .cart-contents:hover {
    background: transparent !important;
    color: var(--jm-pink, #E27297) !important;
    transform: none;
    box-shadow: none;
}
/* Price text hidden — the scrapbook pill is glyph + count only. The element
   stays in the DOM (display:none, no markup change) so WC fragments still
   update it. */
body.jm-v2 #masthead .shoptimizer-cart .cart-contents .amount {
    display: none !important;
}
/* Count badge. The parent theme (shoptimizer/src/css/components/header-cart.css
   :33) draws the count AS a shopping bag: a 28px-tall #dc9814-bordered body with
   a ::after arc for the handle. The v2 pill already has its own glyph, so all
   three of those work against it — and #dc9814 is in no v2 palette. Measured
   before this fix: 21.9 x 28 under border-radius:999px, i.e. an egg, ringed in
   gold, with a gold squiggle floating above it. Marc 2026-07-29: "too heigh,
   unclear and doesn't align with the theme". Height/border/margin are the three
   parent declarations the old block never overrode. */
body.jm-v2 #masthead .shoptimizer-cart .cart-contents .count {
    position: absolute;        /* prik-badge på glyffens hjørne, som mbar'ens
                                  fab-mbar__menu-dot — ikke et pille-element */
    top: 3px; right: 3px;
    height: 16px !important;   /* parent's 28px is what made it an egg */
    min-width: 16px;
    box-sizing: border-box;
    border: 1.5px solid #fff !important; /* hvid ring løfter den fra glyffen */
    margin-left: 0 !important;
    background: var(--jm-pink-dark, #C75B80);
    color: #fff;
    border-radius: 999px;
    padding: 0 4px;
    font-size: 10px;
    line-height: 13px;         /* 16px boks − 2×1.5px border (border-box) */
    text-align: center;
    font-weight: 800;
    font-family: 'Nunito', sans-serif;
}
/* Parent's bag-handle arc — meaningless once the badge is a badge and not a bag */
body.jm-v2 #masthead .shoptimizer-cart .cart-contents .count::after {
    content: none !important;
}
/* The DESKTOP cart sits in .col-full-nav, outside #masthead, so every rule above
   misses it and it still renders the parent's raw gold bag: #dc9814 border,
   #dc9814 digits, gold handle arc. Same off-palette colour Marc flagged on
   mobile, 20px away. Colour only — the parent's bag layout is left intact,
   because on desktop it sits next to the price and reads correctly there. */
body.jm-v2 .shoptimizer-cart a.cart-contents .count,
body.jm-v2 .shoptimizer-cart a.cart-contents .count:after {
    border-color: var(--jm-pink-dark, #C75B80);
    color: var(--jm-pink-dark, #C75B80);
}
body.jm-v2 .shoptimizer-cart a.cart-contents:hover .count {
    background-color: var(--jm-pink-dark, #C75B80);
}

/* (≤639-kompaktblokken er væk: 44px tap-boksen ligger nu i hovedreglen,
   fordi ikonet er ens på alle bredder — der er ingen pille at komprimere.) */

/* GLB-5: style.css's ≤768 header layer absolutely positions account at
   right:56px + cart at right:12px — sized for v1's bare cart icon. The v2
   yellow pill is ~64-72px wide, so its left edge would overlap the account
   icon's tap zone by ~8-16px. Shift the account icon left of the pill and
   give it + the hamburger a 44px tap box. 768px (not 899) on purpose:
   this block pairs with style.css's `@media (max-width: 768px)` layer. */
/* GLB-5 v2 (2026-08-05): den gamle blok satte KUN `right: 88px` — men aldrig
   `position`, og right er virkningsløs på et statisk element (style.css-laget
   den kommenterede imod findes ikke længere; grep = 0 match). Målt: ≤768 er
   kurven absolut (Shoptimizer-forælderen) og lå BOGSTAVELIGT oven på det
   statisk flydende konto-ikon (x=331 vs 334) — den gamle massive pille skjulte
   kollisionen, det nye transparente ikon afslørede den. Ved 800px overlapper
   de også (12px, via kurv-wrapperen). Én deterministisk regel for hele
   Shoptimizer-mobilbåndet ≤992: pin kontoen absolut, venstre for kurvens
   faste slot (right:12 + 44 bred + 8px luft = 64). .main-header er
   position:relative (målt), så det er konteksten. */
@media (max-width: 992px) {
    /* Marc 2026-08-06: konto+kurv i headeren er dubletter af bundbarens faste
       KONTO/KURV — VÆK på mobil. Pladsen går til søge-ikonet (eneste synlige
       søgeindgang udenfor skuffen; søgende kunder konverterer bedst). */
    body.jm-v2 .site-header .jm-header-account,
    body.jm-v2 #masthead .shoptimizer-cart {
        display: none !important;
    }
    body.jm-v2 .site-header .jm-header-search {
        position: absolute;
        right: 12px;
        top: 50%;
        transform: translateY(-50%);
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 44px;
        min-height: 44px;
        color: var(--text-mid, #5D7184);
        text-decoration: none;
        transition: color 200ms ease-out;
    }
    body.jm-v2 .site-header .jm-header-search:hover {
        color: var(--jm-pink, #E27297);
    }
    body.jm-v2 .site-header .site-branding .menu-toggle {
        min-width: 44px;
        min-height: 44px;
    }
}
/* Desktop har søgebaren — ikonet er mobilens. */
@media (min-width: 993px) {
    body.jm-v2 .site-header .jm-header-search { display: none; }
}
/* GLB-5: at phone widths the logo fills the whole branding box, so widen
   the right padding past the relocated account icon (left edge ≈132px
   from the viewport right) to keep logo and icon from colliding @360px. */
@media (max-width: 639px) {
    body.jm-v2 .site-header .site-branding {
        padding-left: 88px !important;
        padding-right: 140px !important;
    }
}

/* Account icon → muted by default, pink on hover */
body.jm-v2 #masthead .jm-header-account {
    color: var(--text-mid, #5D7184) !important;
    transition: color 200ms ease-out !important;
}
body.jm-v2 #masthead .jm-header-account:hover {
    color: var(--jm-pink, #E27297) !important;
}

/* Primary nav links → scrapbook pills with playful tilt hover.
   Direct child combinator (> a) ensures the mega-menu sub-items keep
   their existing Shoptimizer dropdown styling untouched. */
body.jm-v2 #site-navigation .menu-primary-menu-container > ul.menu {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 0 !important;
    margin: 0 auto !important;
    list-style: none !important;
    width: 100%;
}
body.jm-v2 #site-navigation .menu-primary-menu-container > ul.menu > li.menu-item {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}
body.jm-v2 #site-navigation .menu-primary-menu-container > ul.menu > li.menu-item > a {
    font-family: 'Nunito', sans-serif !important;
    font-weight: 800 !important;
    font-size: 16px !important;
    letter-spacing: 0.01em !important;
    color: var(--text, #333E48) !important;
    padding: 10px 18px !important;
    border-radius: 10px !important;
    text-decoration: none !important;
    transition: all 200ms ease-out !important;
    line-height: 1.2 !important;
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
}
body.jm-v2 #site-navigation .menu-primary-menu-container > ul.menu > li.menu-item > a:hover {
    background: var(--jm-yellow-light, #FAEDF2) !important;
    color: var(--jm-yellow-dark, #B14A6F) !important;
    transform: rotate(-1deg);
}
body.jm-v2 #site-navigation .menu-primary-menu-container > ul.menu > li.menu-item:nth-child(even) > a:hover {
    transform: rotate(1deg);
}
body.jm-v2 #site-navigation .menu-primary-menu-container > ul.menu > li.menu-item:nth-child(3n) > a:hover {
    transform: rotate(-1.5deg);
}
/* Caret next to mega-menu parent items (Metervarer, Sytilbehør) */
body.jm-v2 #site-navigation .menu-primary-menu-container > ul.menu > li.menu-item > .caret {
    display: inline-block;
    font-size: 10px;
    color: var(--text-muted, #888);
    margin-left: 2px;
}


/* Announcement strip → muted cream-dark instead of yellow so it sits
   inside the scrapbook palette rather than fighting it. */
body.jm-v2 .fabricly-announcement {
    background: var(--cream-dark) !important;
    border-bottom: 1px dashed var(--border) !important;
    color: var(--text-mid) !important;
}
body.jm-v2 .fabricly-announcement-inner span {
    font-family: 'Nunito', sans-serif !important;
    font-weight: 700 !important;
    font-size: 12px !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase;
    color: var(--text-mid) !important;
}
body.jm-v2 .fabricly-announcement-close {
    color: var(--text-muted) !important;
}

/* Hide the global "Vertrag widerrufen" floating button (fabricly-widerrufsbutton mu-plugin)
   only inside v2. The legal-recall content stays at /widerruf/ and in the footer. */
body.jm-v2 .fab-widerruf-fab,
body.jm-v2 a.fab-widerruf-fab,
body.jm-v2 #fabricly-widerrufsbutton,
body.jm-v2 .fabricly-widerrufsbutton {
    display: none !important;
}

/* Standalone utility strip emitted at wp_body_open (before Shoptimizer's #masthead).
   Three columns of equal width so the middle "ISSUE 01 · FRÜHLING '26" tag is
   geometrically centered regardless of the left and right text length. */
body.jm-v2 .sb-util--standalone {
    display: grid !important;
    grid-template-columns: 1fr 1fr 1fr;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
    text-transform: uppercase;
    z-index: 5;
    position: relative;
}
body.jm-v2 .sb-util--standalone > span:nth-child(1) { text-align: left; }
body.jm-v2 .sb-util--standalone > span:nth-child(2) { text-align: center; }
body.jm-v2 .sb-util--standalone > span:nth-child(3) { text-align: right; }
@media (max-width: 767px) {
    body.jm-v2 .sb-util--standalone {
        grid-template-columns: 1fr auto;
        padding: 8px 18px;
        font-size: 9px;
        gap: 8px;
    }
    body.jm-v2 .sb-util--standalone > span:nth-child(1) { text-align: left; }
    body.jm-v2 .sb-util--standalone > span:nth-child(2) { display: none; }
    body.jm-v2 .sb-util--standalone > span:nth-child(3) { text-align: right; }
}

/* WP page wrappers from the parent theme can over-constrain v2 templates;
   let v2 templates breathe full-width but still inside Shoptimizer chrome. */
body.jm-v2 #content,
body.jm-v2 #primary,
body.jm-v2 .site-content {
    background: transparent !important;
}
body.jm-v2 #content > .col-full,
body.jm-v2 .site-content > .col-full {
    max-width: none !important;
    padding: 0 !important;
}

/* ===== Mobile hybrid bottom bar ===== */
/* Three context variants:
   - .fab-mbar--pdp   → hamburger + heart + ATC pill (product pages)
   - .fab-mbar--cta   → hamburger + big CTA (cart, checkout)
   - .fab-mbar--tabs  → 5-tab nav (Start / Shop / Liste / Konto / Korb) */
.fab-mbar {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    display: none;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    background: #fff;
    border-top: 1px solid var(--border);
    box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.06);
    z-index: 1000;
    box-sizing: border-box;
}
.fab-mbar--tabs {
    gap: 0;
    padding: 6px 4px 8px;
}
.fab-mbar__menu {
    position: relative;
    flex-shrink: 0;
    width: 44px; height: 44px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 12px;
    background: var(--cream);
    color: var(--text);
    text-decoration: none;
}
.fab-mbar__menu-dot {
    position: absolute;
    top: 6px; right: 6px;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--jm-yellow);
    border: 1.5px solid #fff;
}
.fab-mbar__heart {
    flex-shrink: 0;
    width: 44px; height: 44px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 12px;
    background: var(--cream);
    color: var(--text);
    text-decoration: none;
    border: 1px solid var(--border);
}
.fab-mbar__heart:hover { color: var(--jm-yellow); }
.fab-mbar__cta {
    flex: 1;
    justify-content: center;
    padding: 14px 18px !important;
    font-size: 15px !important;
    text-align: center;
    text-decoration: none;
}
.fab-mbar__tab {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    padding: 6px 4px;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-mid);
    text-decoration: none;
    position: relative;
    transition: color 0.15s ease;
}
.fab-mbar__tab svg {
    width: 22px; height: 22px;
    stroke-width: 1.75;
}
.fab-mbar__tab:hover { color: var(--text); }
.fab-mbar__tab.is-active {
    color: var(--jm-yellow);
}
.fab-mbar__tab.is-active::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 24px; height: 2px;
    background: var(--jm-yellow);
    border-radius: 0 0 2px 2px;
}
.fab-mbar__badge {
    position: absolute;
    top: 2px;
    right: calc(50% - 18px);
    background: var(--jm-yellow);
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    min-width: 16px; height: 16px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 4px;
    border: 1.5px solid #fff;
}
.fab-mbar-spacer { height: 0; }

@media (max-width: 767px) {
    .fab-mbar { display: flex; }
    .fab-mbar-spacer { height: 76px; }
}

/* ===== Preview banner ===== */
.fab-v2-banner {
    background: var(--jm-pink-dark);
    color: #fff;
    text-align: center;
    padding: 12px 16px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.06em;
}
.fab-v2-banner a { color: #fff; text-decoration: underline; margin-left: 6px; }

/* ===== WooCommerce form integration in v2 chrome ===== */
/* WC's quantity input + ATC button styling on PDP */
.pdp__qty-steps .qty,
.pdp__qty-steps input[type="number"] {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 18px;
    width: 60px;
    text-align: center;
    border: 0;
    background: transparent;
    -moz-appearance: textfield;
}
.pdp__qty-steps input::-webkit-outer-spin-button,
.pdp__qty-steps input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Hide native cart/checkout headings — we provide our own eyebrow + h1 */
.jm-v2 .woocommerce > h2:first-child,
.jm-v2 .woocommerce-cart h2:first-child { display: none; }

/* WooCommerce buttons inside v2 → use coral primary look */
.jm-v2 .woocommerce #respond input#submit,
.jm-v2 .woocommerce a.button.alt,
.jm-v2 .woocommerce button.button.alt,
.jm-v2 .woocommerce input.button.alt,
.jm-v2 .woocommerce a.button,
.jm-v2 .woocommerce button.button,
.jm-v2 .woocommerce input.button {
    background: var(--jm-yellow) !important;
    color: #fff !important;
    border: none !important;
    border-radius: 14px !important;
    padding: 14px 24px !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 800 !important;
    box-shadow: var(--shadow-cta) !important;
    transition: all 200ms ease-out !important;
}
.jm-v2 .woocommerce a.button:hover,
.jm-v2 .woocommerce button.button:hover {
    background: var(--jm-yellow-dark) !important;
    transform: translateY(-2px);
    box-shadow: var(--shadow-cta-hover) !important;
}

/* Form fields adopt cream + rounded look inside v2 cart/checkout */
.jm-v2 .woocommerce form .form-row input.input-text,
.jm-v2 .woocommerce form .form-row textarea,
.jm-v2 .woocommerce-checkout #payment ul.payment_methods,
.jm-v2 .select2-container--default .select2-selection--single {
    border-radius: 12px !important;
    border: 2px solid var(--border) !important;
    background: #fff !important;
    font-family: 'Poppins', sans-serif !important;
}
.jm-v2 .woocommerce form .form-row input.input-text:focus,
.jm-v2 .woocommerce form .form-row textarea:focus {
    border-color: var(--jm-pink) !important;
    outline: none !important;
}

/* Checkout grid lives further down the file — keyed off body.jm-v2.woocommerce-checkout */

/* Cart layout polish */
.jm-v2 .woocommerce-cart .cart-collaterals { margin-top: 40px; }
.jm-v2 .cart_totals h2 {
    font-family: 'Nunito', sans-serif;
    font-weight: 900;
    font-size: 28px;
}

/* Scrapbook chrome around WC content */
.fab-v2-chrome {
    padding: 60px 80px 80px;
    max-width: 1280px;
    margin: 0 auto;
}
.fab-v2-chrome__head {
    margin-bottom: 36px;
}
.fab-v2-chrome__eyebrow {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 13px;
    letter-spacing: 0.22em;
    color: var(--jm-yellow);
    text-transform: uppercase;
    margin-bottom: 14px;
}
.fab-v2-chrome__h1 {
    font-family: 'Nunito', sans-serif;
    font-weight: 900;
    font-size: 56px;
    line-height: 1.02;
    letter-spacing: -1.2px;
    margin: 0 0 14px;
}
.fab-v2-chrome__sub {
    font-family: 'Caveat', cursive;
    font-size: 22px;
    color: var(--text-mid);
    font-style: italic;
    margin-bottom: 20px;
}

@media (max-width: 767px) {
    .fab-v2-chrome { padding: 32px 18px 60px; }
    .fab-v2-chrome__h1 { font-size: 36px; }
    /* 2026-07-22: the old pre-pass pdp__main/pdp__info/plp__grid/plp__facets
       !important patch was PRUNED here — fabricly deleted it upstream when the
       consolidated PDP/PLP mobile sections took over; those now arrive via
       mobile-sync.css (incl. Bug 7's single-column guarantee). Leaving the
       patch would beat the new layer on !important. See mobile-sync-report. */
    .plp__banner {
        grid-template-columns: 1fr !important;
        gap: 0 !important;
        padding: 28px 22px 24px !important;
        margin: 24px 14px 28px !important;
        text-align: left !important;
    }
    .plp__banner-h1 { font-size: 34px !important; line-height: 1.05 !important; }
    .plp__banner-sub { font-size: 15px !important; max-width: none !important; }
    .plp__banner-count {
        text-align: left !important;
        font-size: 14px !important;
        color: var(--jm-pink, #E27297) !important;
        margin-top: 16px !important;
        padding-top: 14px !important;
        border-top: 1px dashed rgba(0, 0, 0, 0.14) !important;
        display: flex !important;
        align-items: baseline !important;
        gap: 8px !important;
    }
    .plp__banner-count strong {
        display: inline !important;
        font-size: 24px !important;
        line-height: 1 !important;
        letter-spacing: -0.5px !important;
    }
    .pdp__related-grid { grid-template-columns: 1fr 1fr !important; }
    .pdp__story {
        grid-template-columns: 1fr !important;
        padding: 32px 20px !important;
        margin: 0 14px 40px !important;
        gap: 28px !important;
    }
    .pdp__story-portrait { width: 160px !important; margin: 0 auto; }
    .pdp__story-h { font-size: 26px !important; }
}

@media (min-width: 768px) and (max-width: 1100px) {
    .pdp__story {
        grid-template-columns: 180px 1fr !important;
        padding: 48px 36px !important;
        margin: 0 32px 60px !important;
        gap: 36px !important;
    }
}

/* ===== Phase 4: Flyout cart (Shoptimizer drawer reskin) ===== */
body.jm-v2 .shoptimizer-mini-cart-wrap {
    background: var(--cream, #FAF6EE) !important;
    border-left: 1px dashed rgba(0, 0, 0, 0.18) !important;
    box-shadow: -16px 0 40px rgba(0, 0, 0, 0.08) !important;
    padding: 22px 22px 28px !important;
    display: flex;
    flex-direction: column;
}
/* Drawer slides in on every viewport — desktop AND mobile.
   Mobile note: Shoptimizer's source has this rule too but WP Rocket's Used CSS
   sometimes prunes it. Repeating here guarantees the Korb tap on /shop/ opens. */
body.jm-v2.drawer-open .shoptimizer-mini-cart-wrap { right: 0 !important; z-index: 100002 !important; }
body.jm-v2.drawer-open .fab-mbar { display: none !important; }
@media (min-width: 768px) {
    /* Bump drawer a bit wider so item names + prices breathe */
    body.jm-v2 .shoptimizer-mini-cart-wrap {
        width: 460px !important;
        right: -460px !important;
    }
}
body.jm-v2 .shoptimizer-mini-cart-wrap::before {
    /* tape strip — masking tape with subtle vertical fibres */
    content: "";
    position: absolute;
    top: -8px; left: 28px;
    width: 110px; height: 24px;
    background:
        linear-gradient(90deg, transparent 0, rgba(255,255,255,0.35) 30%, transparent 60%),
        repeating-linear-gradient(90deg, rgba(255,255,255,0.18) 0 1px, transparent 1px 6px),
        rgba(255, 207, 99, 0.65);
    border: 1px dashed rgba(0, 0, 0, 0.18);
    transform: rotate(-2.5deg);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
    pointer-events: none;
    z-index: 5;
}
/* Shoptimizer drawer heading — replaced by .fab-flycart-header rendered inside
   .widget_shopping_cart_content via woocommerce_before_mini_cart so the count
   updates via cart-fragments AJAX. */
body.jm-v2 .shoptimizer-mini-cart-wrap .cart-drawer-heading {
    display: none !important;
}

/* New summary header (eyebrow + count + total meters) */
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-header {
    margin: 0 0 16px;
    padding: 0 0 14px;
    border-bottom: 1px dashed rgba(0, 0, 0, 0.12);
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-header__eyebrow {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--jm-yellow, #E76A5C);
    margin: 0 0 4px;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-header__summary {
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 22px;
    line-height: 1.2;
    color: var(--text, #2A2A2A);
    letter-spacing: -0.01em;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-header__summary strong {
    font-weight: 900;
}
/* Breathing room above the progress bar / first item card */
body.jm-v2 .shoptimizer-mini-cart-wrap .widget_shopping_cart_content {
    padding-top: 14px !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .close-drawer {
    top: 16px !important;
    right: 16px !important;
    color: var(--text, #2A2A2A) !important;
}

/* Mini cart item rows */
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart {
    padding: 0 !important;
    margin: 0 !important;
    list-style: none !important;
}
/* Actual mini-cart DOM (verified via wp_eval render):
     li.mini_cart_item
       ├── a.remove (×)
       ├── a (img + span.fab-mc-title + div.fab-mc-meta[hidden])
       ├── dl.variation [hidden]
       ├── div.fabricly-mc-stepper (the −1,0m+ pill)
       └── div.fabricly-mc-price (the price)
   Stepper + price are TOP-LEVEL siblings, not wrapped in .quantity.
   Layout: 2-col grid — title (col 1, spans both rows) + stepper-over-price (col 2). */
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item {
    position: relative;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.06);
    border-radius: 12px;
    padding: 10px 32px 10px 10px !important;
    margin-bottom: 8px !important;
    display: grid !important;
    grid-template-columns: 1fr auto !important;
    grid-template-rows: auto auto !important;
    column-gap: 12px !important;
    row-gap: 4px !important;
    align-items: center !important;
    box-sizing: border-box !important;
    overflow: visible !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item a:not(.remove):not(.fabricly-mc-find-match) {
    grid-column: 1 / 2 !important;
    grid-row: 1 / 3 !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    min-width: 0 !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 700 !important;
    font-size: 13px !important;
    line-height: 1.3 !important;
    color: var(--text, #2A2A2A) !important;
    text-decoration: none !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item .fab-mc-title {
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    word-break: break-word !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item img {
    width: 52px !important;
    height: 52px !important;
    border-radius: 8px;
    object-fit: cover;
    margin: 0 !important;
    flex-shrink: 0;
}

/* Free-ship progress strip — re-skin fabricly-psychology's .fabricly-shipping-progress
   in the scrapbook white-card style. The bar is rendered (and AJAX-updated) by
   fabricly-psychology.php on woocommerce_widget_shopping_cart_before_buttons. */
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-shipping-progress {
    background: #fff !important;
    border: 1px solid rgba(0, 0, 0, 0.08) !important;
    border-radius: 12px !important;
    padding: 12px 14px !important;
    margin: 0 0 14px !important;
    box-shadow: none !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-shipping-progress__content {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin-bottom: 8px !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-shipping-msg {
    font-family: 'Nunito', sans-serif !important;
    font-size: 13px !important;
    line-height: 1.4 !important;
    color: var(--text-mid, #5A5A5A) !important;
    margin: 0 !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-shipping-remaining {
    color: var(--jm-yellow, #E76A5C) !important;
    font-weight: 900 !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-shipping-msg.fabricly-shipping-free {
    color: #1F8A4C !important;
    font-weight: 800 !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-ship-icon {
    color: var(--jm-pink, #2F6F6E);
    flex-shrink: 0;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-progress-bar {
    background: rgba(0, 0, 0, 0.06) !important;
    height: 6px !important;
    border-radius: 3px !important;
    overflow: hidden !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-progress-fill {
    height: 100% !important;
    background: linear-gradient(90deg, var(--jm-yellow, #E76A5C), #F8B05A) !important;
    border-radius: 3px !important;
    transition: width 0.4s ease !important;
}
/* Hide the legacy .fab-flycart-progress class if it shows up from a stale
   localStorage cart fragment — only psychology's bar should be visible on v2. */
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-progress {
    display: none !important;
}

/* Delivery date pill — prominent, sits directly above the checkout button.
   Soft mint/teal so it reads as a positive logistics confirmation. */
.fab-flycart-delivery {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    background: rgba(226, 114, 151, 0.10);
    border: 1px solid rgba(226, 114, 151, 0.30);
    border-radius: 12px;
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    line-height: 1.35;
    color: var(--text, #2A2A2A);
    margin: 0 0 14px;
}
.fab-flycart-delivery strong {
    color: var(--text, #2A2A2A);
    font-weight: 800;
    white-space: nowrap;
}
.fab-flycart-delivery__icon {
    display: inline-flex;
    color: var(--jm-pink, #E27297);
    flex-shrink: 0;
}

/* Trust strip below buttons */
.fab-flycart-trust {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    padding: 10px 0 4px;
    margin-top: 12px;
    border-top: 1px dashed rgba(0, 0, 0, 0.12);
    font-family: 'Nunito', sans-serif;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-mid, #5A5A5A);
}
.fab-flycart-trust span {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.fab-flycart-trust svg {
    color: var(--jm-pink, #2F6F6E);
    flex-shrink: 0;
}

/* Recommendations strip */
.fab-flycart-recs {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px dashed rgba(0, 0, 0, 0.12);
}
.fab-flycart-recs__eyebrow {
    font-family: 'Nunito', sans-serif;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-mid, #5A5A5A);
    display: block;
    margin-bottom: 10px;
}
.fab-flycart-recs__strip {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.fab-flycart-rec {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.06);
    border-radius: 10px;
    text-decoration: none;
    color: inherit;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.fab-flycart-rec:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
    color: inherit;
}
.fab-flycart-rec__img {
    width: 44px; height: 44px;
    border-radius: 6px;
    object-fit: cover;
    flex-shrink: 0;
}
.fab-flycart-rec__body { flex: 1; min-width: 0; }
.fab-flycart-rec__title {
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 13px;
    color: var(--text, #2A2A2A);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.fab-flycart-rec__price {
    font-family: 'Nunito', sans-serif;
    font-size: 12px;
    color: var(--jm-yellow, #E76A5C);
    font-weight: 800;
    margin-top: 2px;
}
.fab-flycart-rec__price del {
    color: var(--text-muted, #888);
    font-weight: 500;
    margin-right: 4px;
}

/* Buttons inside the drawer — strip default <p> styling (Shoptimizer adds a white
   card background on .woocommerce-mini-cart__buttons, which makes the text-link
   "Warenkorb ansehen" sit inside a visible box). */
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__buttons {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
    margin: 12px 0 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__buttons a.button {
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    width: 100% !important;
    max-width: 100% !important;
    min-height: 48px !important;
    margin: 0 !important;
    text-align: center !important;
    border-radius: 999px !important;
    padding: 12px 18px !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 800 !important;
    font-size: 14px !important;
    letter-spacing: 0.01em !important;
    text-transform: none !important;
    text-decoration: none !important;
    text-indent: 0 !important;
    visibility: visible !important;
    opacity: 1 !important;
    border: 1px solid rgba(0, 0, 0, 0.1) !important;
    background: #fff !important;
    color: var(--text, #2A2A2A) !important;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
/* Shoptimizer adds a ::before lock icon on a.checkout — make sure it sits inline
   with the label and the pair is centered as a unit (gap is on the flex parent above). */
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__buttons a.checkout::before {
    position: static !important;
    margin: 0 !important;
    transform: none !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__buttons a.checkout {
    order: 1;
    background: var(--jm-yellow, #E76A5C) !important;
    color: #fff !important;
    border-color: var(--jm-yellow, #E76A5C) !important;
    min-height: 54px !important;
    font-size: 16px !important;
}
/* Defensive: force text colour to win over any inherited transparent / 0-color rules */
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__buttons a.checkout,
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__buttons a.checkout * {
    color: #fff !important;
    -webkit-text-fill-color: #fff !important;
}
/* "Warenkorb ansehen" — small text link below the primary checkout button */
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__buttons a.button:not(.checkout) {
    order: 2;
    background: transparent !important;
    border: none !important;
    min-height: 0 !important;
    padding: 4px 8px !important;
    color: var(--text-mid, #5A5A5A) !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    text-decoration: underline !important;
    text-underline-offset: 3px !important;
    text-decoration-thickness: 1px !important;
    text-decoration-color: rgba(0, 0, 0, 0.2) !important;
    border-radius: 0 !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__buttons a.button:not(.checkout):hover {
    color: var(--jm-yellow, #E76A5C) !important;
    text-decoration-color: var(--jm-yellow, #E76A5C) !important;
    background: transparent !important;
    border: none !important;
}
/* Default WC subtotal action is removed in PHP for v2, so the <p> wrapper only
   contains our custom .fab-flycart-totals. Strip the <p>'s default text styling
   so it doesn't add extra padding/border around our card. */
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__total {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    text-align: left !important;
    font-size: inherit !important;
    font-weight: normal !important;
}

/* Custom totals breakdown: subtotal, savings (green), shipping note, total (coral).
   Matches the screenshot ref: dark Zwischensumme, green discount, small grey
   shipping note, big coral Gesamt (both label + value coral). */
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals {
    margin: 14px 0 0;
    padding: 0;
    background: transparent;
    border: 0;
    font-family: 'Nunito', sans-serif;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row {
    display: flex !important;
    justify-content: space-between !important;
    align-items: baseline !important;
    gap: 12px !important;
    font-size: 15px !important;
    line-height: 1.4 !important;
    margin: 0 0 10px !important;
    color: var(--text, #2A2A2A) !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row:last-child {
    margin-bottom: 0 !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__label {
    font-weight: 700 !important;
    color: var(--text, #2A2A2A) !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__value,
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__value .amount,
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__value bdi {
    font-weight: 800 !important;
    color: var(--text, #2A2A2A) !important;
    white-space: nowrap !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--save .fab-flycart-totals__label,
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--save .fab-flycart-totals__value,
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--save .fab-flycart-totals__value .amount,
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--save .fab-flycart-totals__value bdi {
    color: #1F8A4C !important;
    font-weight: 800 !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--note {
    font-size: 13px !important;
    margin-bottom: 14px !important;
    padding-bottom: 14px !important;
    border-bottom: 1px dashed rgba(0, 0, 0, 0.15) !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--note .fab-flycart-totals__label,
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--note .fab-flycart-totals__value {
    color: var(--text-mid, #5A5A5A) !important;
    font-weight: 600 !important;
    font-size: 13px !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--total {
    align-items: center !important;
    margin-top: 4px !important;
    margin-bottom: 14px !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--total .fab-flycart-totals__label {
    font-family: 'Nunito', sans-serif !important;
    font-weight: 900 !important;
    font-size: 28px !important;
    line-height: 1.1 !important;
    color: var(--jm-yellow, #E76A5C) !important;
    letter-spacing: -0.01em !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--total .fab-flycart-totals__value,
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--total .fab-flycart-totals__value .amount,
body.jm-v2 .shoptimizer-mini-cart-wrap .fab-flycart-totals__row--total .fab-flycart-totals__value bdi {
    font-family: 'Nunito', sans-serif !important;
    font-weight: 900 !important;
    font-size: 24px !important;
    line-height: 1.1 !important;
    color: var(--jm-yellow, #E76A5C) !important;
}

/* Drawer wrap: cap to viewport and scroll internally. Without explicit height,
   the flex-column container auto-grows past the viewport and content (especially
   the recs strip + bundle CTAs) ends up below the fold — items are at the top
   but the drawer's render position pushes them out of sight. */
body.jm-v2 .shoptimizer-mini-cart-wrap {
    height: 100vh !important;
    height: 100dvh !important;
    max-height: 100vh !important;
    max-height: 100dvh !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
}
/* Parent Shoptimizer CSS sets .product_list_widget { flex:1; overflow-y:auto }
   which collapses the items list to height 0 whenever our header + totals +
   delivery pill + buttons + trust + recs sum past the viewport — that's the
   "items invisible at 100% zoom" bug. Force intrinsic sizing and let the OUTER
   wrap handle scrolling instead. */
body.jm-v2 .shoptimizer-mini-cart-wrap .widget_shopping_cart {
    display: block !important;
    height: auto !important;
    overflow: visible !important;
    margin-top: 50px !important;
    /* Parent theme pads the widget 20px each side ON TOP of the drawer's own
       22px gutter — 42px dead rails. Span the drawer's full inner width
       (fabricly fix 2026-07-22, their v2-extras 2.9.99 ~L1534; handoff §7.4). */
    padding-left: 0 !important;
    padding-right: 0 !important;
    width: 100% !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .widget_shopping_cart_content {
    display: block !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .product_list_widget,
body.jm-v2 .shoptimizer-mini-cart-wrap ul.cart_list {
    flex: 0 0 auto !important;
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
    padding-right: 0 !important;
    display: block !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart.cart_list:before {
    display: none !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap::-webkit-scrollbar { width: 6px; }
body.jm-v2 .shoptimizer-mini-cart-wrap::-webkit-scrollbar-thumb {
    background: rgba(0,0,0,0.12);
    border-radius: 3px;
}

/* Stepper and price live in column 2 of the grid (top + bottom rows, right-aligned).
   .quantity (the WC default wrapper) doesn't render in this theme — these classes do. */
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item .fabricly-mc-stepper {
    grid-column: 2 !important;
    grid-row: 1 !important;
    justify-self: end !important;
    align-self: end !important;
    margin: 0 !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item .fabricly-mc-price {
    grid-column: 2 !important;
    grid-row: 2 !important;
    justify-self: end !important;
    align-self: start !important;
    margin: 0 !important;
    font-size: 13px !important;
    font-weight: 800 !important;
    color: var(--text, #2A2A2A) !important;
    white-space: nowrap;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item .fabricly-mc-find-match {
    grid-column: 1 / -1 !important;
    grid-row: 3 !important;
    margin: 4px 0 0 !important;
    padding: 6px 10px !important;
    background: rgba(226, 114, 151, 0.08) !important;
    border-radius: 8px !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    color: var(--jm-pink, #4CA4A5) !important;
    text-decoration: none !important;
    text-align: center !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}
/* Hide the per-item meta caption ("Bündchen", "Uni-…", etc.) — stepper is enough */
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item .fab-mc-meta {
    display: none !important;
}
/* Hide the "Länge: X,Xm" data row — same value already shown in the stepper */
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item dl.variation,
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item .variation,
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item .wc-item-meta {
    display: none !important;
}

/* Stepper: single unified pill. Buttons sit borderless inside so the whole
   thing reads as one rounded element instead of three floating circles.
   Outer pill carries the cream bg + border; inner buttons are transparent
   until hover, when they pick up a subtle coral tint. */
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item .fabricly-mc-stepper {
    display: inline-flex !important;
    align-items: center !important;
    gap: 0 !important;
    margin: 0 !important;
    padding: 2px 4px !important;
    background: var(--cream, #FBF6EE) !important;
    border: 1px solid rgba(0,0,0,0.08) !important;
    border-radius: 999px !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-mc-stepper__btn {
    width: 24px !important;
    height: 24px !important;
    border-radius: 50% !important;
    border: none !important;
    background: transparent !important;
    color: var(--text-mid, #5A5A5A) !important;
    font-weight: 700 !important;
    font-size: 15px !important;
    line-height: 1 !important;
    padding: 0 !important;
    cursor: pointer !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    transition: background 150ms ease, color 150ms ease !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-mc-stepper__btn:hover {
    background: var(--jm-yellow, #E76A5C) !important;
    color: #fff !important;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .fabricly-mc-stepper__val {
    min-width: 36px !important;
    text-align: center !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 800 !important;
    font-size: 12px !important;
    color: var(--text, #2A2A2A) !important;
    padding: 0 2px !important;
}
/* Remove (×) button — top-right of each row, sitting on top of image.
   Shoptimizer parent CSS positions .remove absolute top:0 left:0 by default,
   which lands behind the product image. Force top-right + z-index. */
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item a.remove,
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart-item a.remove {
    position: absolute !important;
    z-index: 3 !important;
    top: 8px !important;
    right: 8px !important;
    left: auto !important;
    bottom: auto !important;
    width: 22px !important;
    height: 22px !important;
    line-height: 20px !important;
    border-radius: 50% !important;
    background: rgba(0,0,0,0.04) !important;
    color: var(--text-mid, #5A5A5A) !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    text-align: center !important;
    transition: background 0.15s ease, color 0.15s ease;
}
body.jm-v2 .shoptimizer-mini-cart-wrap .mini_cart_item a.remove:hover {
    background: var(--jm-yellow, #E76A5C) !important;
    color: #fff !important;
}

/* Recs head wrapper — already has eyebrow, just give it spacing */
.fab-flycart-recs__head {
    margin: 0 0 10px;
}

/* ===== Empty drawer state ===== */
.fab-flycart-empty {
    text-align: center;
    padding: 32px 20px 12px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}
.fab-flycart-empty__illu {
    margin-bottom: 4px;
}
.fab-flycart-empty__head {
    font-family: 'Nunito', sans-serif;
    font-weight: 900;
    font-size: 22px;
    color: var(--text, #2A2A2A);
    letter-spacing: -0.01em;
}
.fab-flycart-empty__sub {
    font-family: 'Caveat', cursive;
    font-size: 20px;
    color: var(--text-mid, #5A5A5A);
    line-height: 1.3;
    max-width: 280px;
}
.fab-flycart-empty__cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
    padding: 12px 22px;
    background: var(--jm-yellow, #E76A5C);
    color: #fff !important;
    border-radius: 999px;
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 14px;
    text-decoration: none !important;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.fab-flycart-empty__cta:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(231, 106, 92, 0.28);
    color: #fff !important;
}

/* When cart is empty, suppress the progress strip + delivery pill (no point showing them) */
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__empty-message ~ .fab-flycart-progress,
body.jm-v2 .shoptimizer-mini-cart-wrap .woocommerce-mini-cart__empty-message ~ .fab-flycart-delivery {
    display: none;
}

/* ===== Phase 5: PLP rebuild ===== */
body.jm-v2 .plp__breadcrumb {
    padding: 14px 80px 0;
    font-family: 'Nunito', sans-serif;
    font-weight: 600;
    font-size: 13px;
    color: var(--text-muted, #888);
}
body.jm-v2 .plp__breadcrumb a {
    color: var(--jm-pink, #2F6F6E);
    text-decoration: none;
}
body.jm-v2 .plp__breadcrumb strong { color: var(--text, #2A2A2A); }

/* 4-col grid override */
body.jm-v2 .plp__grid {
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 36px 24px !important;
    padding: 0 80px 60px !important;
    position: relative;
}

/* Decorative ruler — left edge of the grid */
body.jm-v2 .plp__grid::before {
    content: "";
    position: absolute;
    left: 32px;
    top: 0; bottom: 60px;
    width: 18px;
    background: repeating-linear-gradient(
        to bottom,
        rgba(0,0,0,0.18) 0,
        rgba(0,0,0,0.18) 1px,
        transparent 1px,
        transparent 16px
    );
    border-left: 1px solid rgba(0, 0, 0, 0.18);
    border-right: 1px dashed rgba(0, 0, 0, 0.12);
    pointer-events: none;
    opacity: 0.55;
}

/* Editorial pull-quote — full-row break injected mid-grid by v2-plp-grid.php (after card 8).
   Acts as a zine column-break: tape strip, eyebrow, handwritten quote, signature. */
body.jm-v2 .plp__divider {
    grid-column: 1 / -1;
    position: relative;
    background: var(--cream-warm, #F2EBDD);
    border: 1px dashed rgba(0, 0, 0, 0.18);
    padding: 36px 32px 30px;
    margin: 12px 0;
    text-align: center;
    transform: rotate(-0.3deg);
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.05);
}
body.jm-v2 .plp__divider-tape {
    position: absolute;
    top: -10px; left: 50%;
    transform: translateX(-50%) rotate(-2deg);
    width: 96px; height: 22px;
    background: repeating-linear-gradient(
        90deg,
        rgba(212, 196, 162, 0.92) 0,
        rgba(212, 196, 162, 0.92) 6px,
        rgba(195, 178, 142, 0.92) 6px,
        rgba(195, 178, 142, 0.92) 9px
    );
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}
body.jm-v2 .plp__divider-eyebrow {
    display: block;
    font-family: var(--mono, 'JetBrains Mono', monospace);
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--jm-pink, #2F6F6E);
    margin-bottom: 14px;
}
body.jm-v2 .plp__divider-quote {
    font-family: var(--serif, 'Fraunces', Georgia, serif);
    font-size: 22px;
    line-height: 1.35;
    color: var(--text, #2A2A2A);
    margin: 0 auto 12px;
    max-width: 540px;
    font-style: italic;
}
body.jm-v2 .plp__divider-sig {
    display: block;
    font-family: var(--mono, 'JetBrains Mono', monospace);
    font-size: 12px;
    color: rgba(42, 42, 42, 0.6);
    letter-spacing: 0.06em;
}
@media (max-width: 767px) {
    body.jm-v2 .plp__divider {
        padding: 28px 18px 22px;
        margin: 8px 14px;
    }
    body.jm-v2 .plp__divider-quote { font-size: 18px; }
}

/* Facet rail */
body.jm-v2 .plp__facets {
    margin: 24px 80px 28px !important;
    padding: 24px 30px !important;
    background: #fff !important;
    border-radius: 14px !important;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.04) !important;
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    align-items: start !important;
    column-gap: 36px !important;
    row-gap: 22px !important;
}
body.jm-v2 .plp__facet h4 {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--text-dark, #333);
    margin: 0 0 10px;
    padding-bottom: 6px;
    border-bottom: 1px solid rgba(40, 30, 30, 0.08);
}
.plp__facet-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}
.plp__facet-chip {
    display: inline-block;
    padding: 5px 11px;
    background: var(--cream, #FAF6EE);
    color: var(--text-mid, #5A5A5A);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 999px;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 11.5px;
    text-decoration: none;
    transition: all 0.15s ease;
}
.plp__facet-chip:hover {
    border-color: var(--jm-pink, #2F6F6E);
    color: var(--jm-pink, #2F6F6E);
}
.plp__facet-chip.is-active {
    background: var(--jm-pink, #2F6F6E);
    color: #fff;
    border-color: var(--jm-pink, #2F6F6E);
}
.plp__facet-swatches {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.plp__facet-swatch {
    width: 30px; height: 30px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(0, 0, 0, 0.1);
    background: #fff;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.plp__facet-swatch-dot {
    width: 22px; height: 22px;
    border-radius: 50%;
    display: block;
    border: 1px solid rgba(0, 0, 0, 0.06);
}
.plp__facet-swatch:hover {
    transform: scale(1.1);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.plp__facet-swatch.is-active {
    box-shadow: 0 0 0 2px var(--jm-yellow, #E76A5C), 0 0 0 4px #fff;
}

/* Toolbar polish + clear-filter chip */
body.jm-v2 .plp__toolbar {
    padding: 0 80px 18px !important;
    align-items: center;
}
.plp__chip--clear {
    background: transparent !important;
    color: var(--jm-yellow, #E76A5C) !important;
    border-color: rgba(231, 106, 92, 0.4) !important;
    text-decoration: none;
}
.plp__chip--clear:hover {
    background: var(--jm-yellow, #E76A5C) !important;
    color: #fff !important;
}

/* Empty state */
.plp__empty {
    grid-column: 1 / -1;
    text-align: center;
    padding: 80px 20px;
    font-family: 'Caveat', cursive;
    font-size: 28px;
    color: var(--text-muted, #888);
}

/* Pagination — scrapbook polish */
.plp__pagination {
    padding: 24px 80px 60px;
    display: flex;
    justify-content: center;
}
.plp__pagination ul,
.plp__pagination .page-numbers {
    list-style: none;
    margin: 0; padding: 0;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
}
.plp__pagination li { list-style: none; }
.plp__pagination a.page-numbers,
.plp__pagination span.page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px; height: 40px;
    padding: 0 14px;
    border-radius: 999px;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.1);
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: var(--text, #2A2A2A);
    text-decoration: none;
    transition: all 0.15s ease;
}
.plp__pagination a.page-numbers:hover {
    border-color: var(--jm-pink, #2F6F6E);
    color: var(--jm-pink, #2F6F6E);
    transform: translateY(-1px);
}
.plp__pagination span.page-numbers.current {
    background: var(--jm-yellow, #E76A5C);
    color: #fff;
    border-color: var(--jm-yellow, #E76A5C);
}
.plp__pagination .prev,
.plp__pagination .next {
    background: var(--cream, #FAF6EE);
    padding: 0 18px;
}
.plp__pagination .dots {
    border: 0;
    background: transparent;
    color: var(--text-muted, #888);
}

/* Category description (moved to bottom) */
.plp__about {
    margin: 0 80px 80px;
    padding: 0;
}
.plp__about-inner {
    background: #fff;
    border-radius: 14px;
    padding: 32px 36px 28px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.04);
    position: relative;
    max-width: 880px;
}
.plp__about-eyebrow {
    color: var(--jm-yellow, #E76A5C);
    margin-bottom: 8px;
}
.plp__about-h2 {
    font-size: 28px;
    margin: 0 0 14px;
    line-height: 1.15;
}
.plp__about-text {
    color: var(--text-mid, #5A5A5A);
    font-family: 'Nunito', sans-serif;
    font-size: 15px;
    line-height: 1.6;
}
.plp__about-text p { margin: 0 0 10px; }

/* Tablet: 3-col grid + 2-col facets */
@media (max-width: 1100px) {
    body.jm-v2 .plp__grid {
        grid-template-columns: repeat(3, 1fr) !important;
        padding: 0 32px 60px !important;
    }
    body.jm-v2 .plp__grid::before { display: none; }
    body.jm-v2 .plp__facets {
        grid-template-columns: repeat(2, 1fr) !important;
        margin: 24px 32px 28px !important;
    }
    body.jm-v2 .plp__breadcrumb,
    body.jm-v2 .plp__toolbar,
    .plp__pagination,
    .plp__about { padding-left: 32px !important; padding-right: 32px !important; }
    .plp__about { margin-left: 0; margin-right: 0; }
}

/* Mobile: 2-col grid, hide facets (mobile gets the existing m-plp facet drawer) */
@media (max-width: 767px) {
    body.jm-v2 .plp__grid {
        grid-template-columns: 1fr 1fr !important;
        gap: 18px !important;
        padding: 0 14px 40px !important;
    }
    body.jm-v2 .plp__facets { display: none !important; }
    body.jm-v2 .plp__breadcrumb,
    body.jm-v2 .plp__toolbar,
    .plp__pagination,
    .plp__about { padding-left: 14px !important; padding-right: 14px !important; }
}

/* ===== Phase 6: PDP additions ===== */
/* Stoffprobe sample box */
.pdp__sample {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 18px;
    background: linear-gradient(135deg, rgba(255, 207, 99, 0.18), rgba(231, 106, 92, 0.10));
    border: 1px dashed rgba(231, 106, 92, 0.4);
    border-radius: 14px;
    margin: 18px 0 14px;
}
.pdp__sample-icon {
    flex-shrink: 0;
    width: 44px; height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #fff;
    color: var(--jm-yellow, #E76A5C);
}
.pdp__sample-body {
    flex: 1; min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-family: 'Nunito', sans-serif;
}
.pdp__sample-body strong {
    font-size: 14px;
    font-weight: 800;
    color: var(--text, #2A2A2A);
}
.pdp__sample-body span {
    font-size: 12px;
    color: var(--text-mid, #5A5A5A);
    line-height: 1.4;
}
.pdp__sample-cta {
    flex-shrink: 0;
    padding: 8px 16px;
    background: var(--jm-yellow, #E76A5C);
    color: #fff;
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 13px;
    border-radius: 999px;
    text-decoration: none;
    white-space: nowrap;
    transition: transform 0.15s ease;
}
.pdp__sample-cta:hover {
    transform: translateY(-1px);
    color: #fff;
}

/* Accordion */
.pdp__accordion {
    margin-top: 24px;
    border-top: 1px dashed rgba(0, 0, 0, 0.12);
}
.pdp__acc-item {
    border-bottom: 1px dashed rgba(0, 0, 0, 0.12);
}
.pdp__acc-summary {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 4px;
    cursor: pointer;
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 15px;
    color: var(--text, #2A2A2A);
    list-style: none;
    user-select: none;
}
.pdp__acc-summary::-webkit-details-marker { display: none; }
.pdp__acc-num {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    color: var(--text-muted, #888);
    background: var(--cream, #FAF6EE);
    padding: 4px 8px;
    border-radius: 4px;
    flex-shrink: 0;
}
.pdp__acc-icon {
    margin-left: auto;
    width: 28px; height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--cream, #FAF6EE);
    color: var(--jm-yellow, #E76A5C);
    font-size: 18px;
    font-weight: 700;
    transition: transform 0.2s ease;
}
.pdp__acc-item[open] .pdp__acc-icon {
    transform: rotate(45deg);
    background: var(--jm-yellow, #E76A5C);
    color: #fff;
}
.pdp__acc-body {
    padding: 4px 4px 18px 48px;
    color: var(--text-mid, #5A5A5A);
    font-family: 'Nunito', sans-serif;
    font-size: 14px;
    line-height: 1.6;
}
.pdp__acc-body p { margin: 0 0 10px; }

/* Tip-linjen. Fabricly giver sit "Tipp:" sin egen linje, og hele grunden til at
   flytte tørretumbler-advarslen ud af afsnittet var, at den blev læst forbi som
   sætning nummer to — så den skal se anderledes ud end afsnittene, ikke bare
   stå et andet sted. Venstrekant i pink frem for en fuld farvet boks: teksten
   ligger allerede indrykket 48px under accordion-nummeret, og en boks mere
   inde i en foldet blok inde i et kort er tre rammer om samme sætning.
   --jm-pink-light som bund, så mærket læses som en del af v2-paletten og ikke
   som en advarsel (det er et tip, ikke en fejl). */
.pdp__acc-body .pdp__acc-tip {
    margin: 14px 0 0;
    padding: 10px 14px;
    border-left: 3px solid var(--jm-pink, #E27297);
    border-radius: 0 8px 8px 0;
    background: var(--jm-pink-light, #FAEDF2);
    color: var(--text, #333E48);
}
.pdp__acc-body .pdp__acc-tip strong {
    color: var(--jm-pink-dark, #C75B80);
    font-weight: 700;
}

/* ── PRODUKTBESKRIVELSE (post_content) ──────────────────────────────────
   Fuld bredde over specs/accordion-parret, med et læsemål på 68ch. Ligger
   i .pdp__info-pair's grid, så den arver parrets 32px row-gap.
   Indholdet er redaktionel WP-editor-tekst: afsnit, punktopstillinger,
   links, enkelte <h2> og på 4 produkter en TablePress-tabel — alt det skal
   have styling her, ellers er det arvet brødtekst uden markerede links. */
.pdp__desc { grid-column: 1 / -1; }
.pdp__desc-body {
    margin-top: 10px;
    max-width: 68ch;
    color: var(--text-mid, #5A5A5A);
    font-family: 'Nunito', sans-serif;
    font-size: 15px;
    line-height: 1.75;
}
/* Jeanette-signatur under beskrivelsen. Samme rolle som Camilla på Fabriclys
   PDP: et ansigt på teksten. Bredden følger .pdp__desc-body's 68ch, så
   signaturen står under teksten og ikke under hele arkets bredde — ellers
   hænger den løsrevet ude til højre på desktop.
   Portrættet er kvadratisk beskåret i en cirkel: originalen er et stående
   illustreret portræt, og i det roterede polaroid-format fra .pdp__story ville
   det stjæle beskrivelsen. En cirkel på 56px læser som en forfatter-byline,
   hvilket er præcis den rolle den har her. */
.pdp__desc-sig {
    display: flex;
    align-items: center;
    gap: 12px;
    max-width: 68ch;
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--jm-border, #ECEAE6);
}
.pdp__desc-sig-img {
    flex: 0 0 auto;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    /* Kilden (jeanette-byline.jpg) er allerede kvadratisk 480×480 og beskåret til
       hoved og skuldre, så cirklen kræver ingen object-position-justering.
       object-fit står som værn: skifter nogen filen til et ikke-kvadratisk
       billede, beskæres det i stedet for at blive trykket sammen. */
    object-fit: cover;
    background: var(--cream-dark, #F7F6F3);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.pdp__desc-sig-txt { display: flex; flex-direction: column; line-height: 1.3; }
.pdp__desc-sig-name {
    color: var(--jm-pink-dark, #C75B80);
    font-size: 20px;
}
.pdp__desc-sig-role {
    color: var(--text-muted, #888);
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
}

.pdp__desc-body > :first-child { margin-top: 0; }
.pdp__desc-body > :last-child { margin-bottom: 0; }
.pdp__desc-body p { margin: 0 0 12px; }
.pdp__desc-body h1,
.pdp__desc-body h2,
.pdp__desc-body h3,
.pdp__desc-body h4 {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 16px;
    color: var(--text, #2A2A2A);
    margin: 20px 0 8px;
}
.pdp__desc-body ul,
.pdp__desc-body ol { margin: 0 0 12px; padding-left: 20px; }
.pdp__desc-body li { margin: 0 0 5px; }
.pdp__desc-body li > ul,
.pdp__desc-body li > ol { margin: 5px 0 0; }
/* Gamle editor-runder efterlod ul > li > ul-indpakninger i teksten (fx
   #2608). Den ydre li har intet indhold — kun den indre liste — så dens
   bullet stod alene foran første punkt. Rettet i CSS, ikke i 4.159
   produktbeskrivelser. */
.pdp__desc-body li:has(> ul:first-child),
.pdp__desc-body li:has(> ol:first-child) { list-style: none; }
.pdp__desc-body a {
    color: var(--jm-pink, #D96B8A);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.pdp__desc-body a:hover { text-decoration-thickness: 2px; }
.pdp__desc-body strong, .pdp__desc-body b { font-weight: 800; color: var(--text, #2A2A2A); }
.pdp__desc-body img { max-width: 100%; height: auto; }
/* De 4 [table…]-produkter: TablePress' tabel må ikke skubbe siden vandret. */
.pdp__desc-body table { max-width: 100%; }
@media (max-width: 767px) {
    .pdp__desc-body { font-size: 15px; line-height: 1.7; }
    .pdp__desc-body table { display: block; overflow-x: auto; }
}

/* PDP ruler — decorative dashed strip on the left edge of the main */
body.jm-v2 .pdp__main {
    position: relative;
}
body.jm-v2 .pdp__main::before {
    content: "";
    position: absolute;
    left: 36px;
    top: 30px; bottom: 60px;
    width: 12px;
    background: repeating-linear-gradient(
        to bottom,
        rgba(0,0,0,0.18) 0,
        rgba(0,0,0,0.18) 1px,
        transparent 1px,
        transparent 14px
    );
    border-left: 1px solid rgba(0, 0, 0, 0.16);
    pointer-events: none;
    opacity: 0.5;
}
@media (max-width: 1100px) {
    body.jm-v2 .pdp__main::before { display: none; }
}

/* Stoffprobe nudge — scroll-triggered polaroid, dismissable for good */
.pdp-probe-nudge {
    position: fixed;
    right: 24px;
    bottom: 24px;
    width: 200px;
    background: #fff;
    border-radius: 6px;
    padding: 14px 14px 12px;
    box-shadow: 0 18px 44px rgba(40,30,30,0.18), 0 4px 10px rgba(40,30,30,0.08);
    z-index: 100;
    transform: translateY(24px) rotate(-3deg);
    opacity: 0;
    pointer-events: none;
    transition: opacity 280ms ease, transform 320ms cubic-bezier(.2,.7,.3,1);
    font-family: 'Nunito', sans-serif;
}
.pdp-probe-nudge.is-visible {
    transform: translateY(0) rotate(-3deg);
    opacity: 1;
    pointer-events: auto;
}
.pdp-probe-nudge:hover {
    transform: translateY(-4px) rotate(-1deg);
}
.pdp-probe-nudge__tape {
    top: -10px; left: 50%;
    width: 70px; height: 18px;
    transform: translateX(-50%) rotate(-2deg);
    background: rgba(226, 138, 87, 0.55);
    z-index: 1;
}
.pdp-probe-nudge__close {
    position: absolute;
    top: 4px; right: 4px;
    width: 24px; height: 24px;
    border: none; background: transparent;
    border-radius: 50%;
    font-size: 18px; line-height: 1; color: var(--text-muted, #888);
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    z-index: 2;
}
.pdp-probe-nudge__close:hover { background: var(--cream, #FAF6EE); color: var(--text, #2A2A2A); }
.pdp-probe-nudge__link {
    display: block; text-decoration: none; color: inherit;
}
.pdp-probe-nudge__swatch {
    width: 100%;
    aspect-ratio: 1/1;
    background: var(--cream-dark, #F0E8D8);
    border-radius: 3px;
    overflow: hidden;
    margin-bottom: 10px;
}
.pdp-probe-nudge__swatch img {
    width: 100%; height: 100%; object-fit: cover; display: block;
}
.pdp-probe-nudge__cap {
    text-align: center;
}
.pdp-probe-nudge__title {
    display: block;
    font-size: 18px;
    color: var(--jm-yellow, #E76A5C);
    margin-bottom: 2px;
}
.pdp-probe-nudge__cap strong {
    display: block;
    font-weight: 800; font-size: 13px;
    color: var(--text, #2A2A2A);
    line-height: 1.2;
}
.pdp-probe-nudge__price {
    display: block;
    font-size: 11px;
    color: var(--text-muted, #888);
    margin-top: 2px;
    line-height: 1.3;
}
.pdp-probe-nudge__never {
    display: block;
    width: 100%;
    margin-top: 10px;
    padding: 6px 0 0;
    border: none;
    border-top: 1px dashed var(--border-subtle, rgba(0,0,0,0.08));
    background: transparent;
    font-family: 'Nunito', sans-serif;
    font-size: 11px;
    color: var(--text-muted, #888);
    cursor: pointer;
    letter-spacing: 0.02em;
}
.pdp-probe-nudge__never:hover { color: var(--text, #2A2A2A); }

@media (max-width: 768px) {
    .pdp-probe-nudge {
        right: 12px; left: 12px; bottom: 88px;
        width: auto;
        padding: 10px 40px 10px 10px;
        transform: translateY(24px) rotate(0);
    }
    .pdp-probe-nudge.is-visible { transform: translateY(0) rotate(0); }
    .pdp-probe-nudge:hover { transform: translateY(0) rotate(0); }
    .pdp-probe-nudge__tape { display: none; }
    .pdp-probe-nudge__link {
        display: grid;
        grid-template-columns: 56px 1fr;
        gap: 12px;
        align-items: center;
    }
    .pdp-probe-nudge__swatch { aspect-ratio: 1/1; margin-bottom: 0; }
    .pdp-probe-nudge__cap { text-align: left; }
    .pdp-probe-nudge__title { font-size: 16px; }
    .pdp-probe-nudge__never {
        position: absolute;
        right: 8px; bottom: 4px;
        width: auto;
        margin: 0; padding: 4px 6px;
        border: none;
        font-size: 10px;
    }
    .pdp-probe-nudge__close { top: 2px; right: 2px; }
}

/* ===== PDP Lightbox — full-size image viewer ===== */
.pdp-lightbox {
    position: fixed; inset: 0;
    background: rgba(20, 20, 24, 0.92);
    z-index: 100000;
    display: flex; align-items: center; justify-content: center;
    opacity: 0; visibility: hidden;
    transition: opacity 200ms ease, visibility 200ms ease;
    padding: 24px;
}
.pdp-lightbox.is-open { opacity: 1; visibility: visible; }
.pdp-lightbox__stage {
    max-width: min(90vw, 1400px);
    max-height: 88vh;
    display: flex; align-items: center; justify-content: center;
}
.pdp-lightbox__img {
    max-width: 100%;
    max-height: 88vh;
    width: auto; height: auto;
    object-fit: contain;
    border-radius: 6px;
    box-shadow: 0 20px 60px rgba(0,0,0,0.4);
    user-select: none;
    -webkit-user-drag: none;
}
.pdp-lightbox__close {
    position: absolute; top: 16px; right: 16px;
    width: 44px; height: 44px;
    border-radius: 999px;
    background: rgba(255,255,255,0.95);
    border: 0;
    font-size: 28px; line-height: 1; color: #222;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    transition: transform 150ms;
}
.pdp-lightbox__close:hover { transform: scale(1.08); }
.pdp-lightbox__nav {
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 52px; height: 52px;
    border-radius: 999px;
    background: rgba(255,255,255,0.92);
    border: 0;
    font-size: 32px; line-height: 1; color: #222;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    padding-bottom: 4px;
    transition: transform 150ms, background 150ms;
}
.pdp-lightbox__nav:hover { background: #fff; transform: translateY(-50%) scale(1.06); }
.pdp-lightbox__nav--prev { left: 20px; }
.pdp-lightbox__nav--next { right: 20px; }
.pdp-lightbox__counter {
    position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%);
    background: rgba(0,0,0,0.5);
    color: #fff;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 13px;
    font-family: 'Nunito', sans-serif;
    letter-spacing: 0.04em;
}
@media (max-width: 768px) {
    .pdp-lightbox { padding: 12px; }
    .pdp-lightbox__nav { width: 40px; height: 40px; font-size: 24px; }
    .pdp-lightbox__nav--prev { left: 8px; }
    .pdp-lightbox__nav--next { right: 8px; }
    .pdp-lightbox__close { top: 8px; right: 8px; width: 38px; height: 38px; font-size: 22px; }
}

/* ===== Phase 7: Checkout ===== */
/* 4-step stepper */
.fab-stepper {
    list-style: none;
    margin: 0 0 32px;
    padding: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0;
    counter-reset: step;
}
.fab-stepper__item {
    list-style: none;
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--text-muted, #888);
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 14px;
    white-space: nowrap;
}
.fab-stepper__item a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: inherit;
    text-decoration: none;
}
.fab-stepper__item + .fab-stepper__item::before {
    content: "";
    width: 32px;
    height: 1px;
    background: rgba(0, 0, 0, 0.2);
    margin: 0 12px;
}
.fab-stepper__dot {
    width: 30px; height: 30px;
    border-radius: 50%;
    background: var(--cream, #FAF6EE);
    color: var(--text-muted, #888);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 800;
    border: 1px solid rgba(0, 0, 0, 0.1);
}
.fab-stepper__item.is-done {
    color: var(--text, #2A2A2A);
}
.fab-stepper__item.is-done .fab-stepper__dot {
    background: var(--jm-pink, #2F6F6E);
    color: #fff;
    border-color: var(--jm-pink, #2F6F6E);
}
.fab-stepper__item.is-current {
    color: var(--text, #2A2A2A);
}
.fab-stepper__item.is-current .fab-stepper__dot {
    background: var(--jm-yellow, #E76A5C);
    color: #fff;
    border-color: var(--jm-yellow, #E76A5C);
    box-shadow: 0 0 0 4px rgba(231, 106, 92, 0.18);
}

/* Two-column checkout: form left, sticky summary right.
   Shoptimizer's cart-checkout.css forces #order_review { float:right; width:41.17%; }
   at min-width:993px AND applies responsive `display:block` to table cells which can
   leak into desktop. Override aggressively with !important so the grid + native table
   layout both win. */
/* Cap form width on big viewports so the grid never overflows. */
body.jm-v2.woocommerce-checkout form.checkout {
    max-width: 1240px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    box-sizing: border-box !important;
    width: 100% !important;
}

/* Mobil (én kolonne): DOM-ordenen er felter → betaling → oversigt (v2-checkout.js
   monterer #fab-payment-relocated lige efter #customer_details). Kunden skal se
   ordreoversigten FØR "Godkend ordre" — flex-order bytter de to. Marc 2026-08-07. */
@media (max-width: 991.98px) {
    body.jm-v2.woocommerce-checkout form.checkout {
        display: flex !important;
        flex-direction: column !important;
    }
    body.jm-v2.woocommerce-checkout form.checkout > #customer_details { order: 1 !important; }
    body.jm-v2.woocommerce-checkout form.checkout > h3#order_review_heading,
    body.jm-v2.woocommerce-checkout form.checkout > .jm-cofold--summary,
    body.jm-v2.woocommerce-checkout form.checkout > #order_review { order: 2 !important; }
    body.jm-v2.woocommerce-checkout form.checkout > #fab-payment-relocated { order: 3 !important; }
}

/* ── Mobil-kassen kompakteres: fold-bjælker i taped-note-stil (Marc 2026-08-07).
      Skjul er nøglet til .jm-cofolds-ready (JS-sat) — fragt-lektionen: intet
      forsvinder for kunder, før bjælken der erstatter det, faktisk findes. ── */
body.jm-v2.woocommerce-checkout .jm-cofold { display: none; }
@media (max-width: 991.98px) {
    body.jm-v2.woocommerce-checkout form.checkout.jm-cofolds-ready .jm-cofold {
        display: flex; align-items: center; gap: 10px; width: 100%;
        position: relative; background: #fff;
        border: 1px dashed var(--border, #ECEAE6); border-radius: 10px;
        padding: 14px 16px; margin: 14px 0 0;
        font-family: 'JetBrains Mono', monospace; font-size: 12px;
        letter-spacing: .06em; text-transform: uppercase;
        color: var(--text-muted, #6B6660);
        appearance: none; -webkit-appearance: none; cursor: pointer;
        text-align: left; transform: rotate(-.3deg);
    }
    body.jm-v2.woocommerce-checkout .jm-cofold::before {
        content: ''; position: absolute; top: -9px; left: 22px;
        width: 56px; height: 18px; background: rgba(240, 200, 175, .6);
        transform: rotate(-2deg); border-radius: 2px;
    }
    body.jm-v2.woocommerce-checkout .jm-cofold__total {
        margin-left: auto; font-family: 'Caveat', cursive; font-size: 21px;
        letter-spacing: 0; text-transform: none;
        color: var(--jm-pink, #C96F85); white-space: nowrap;
    }
    body.jm-v2.woocommerce-checkout .jm-cofold__hint {
        margin-left: auto; text-transform: none; letter-spacing: 0; font-size: 11px;
    }
    body.jm-v2.woocommerce-checkout .jm-cofold__chev { transition: transform .2s; }
    body.jm-v2.woocommerce-checkout form.checkout.jm-summary-open .jm-cofold--summary .jm-cofold__chev,
    body.jm-v2.woocommerce-checkout form.checkout.jm-notes-open .jm-cofold--notes .jm-cofold__chev {
        transform: rotate(180deg);
    }

    /* Lukket som udgangspunkt — men KUN når bjælkerne findes */
    body.jm-v2.woocommerce-checkout form.checkout.jm-cofolds-ready:not(.jm-summary-open) > #order_review,
    body.jm-v2.woocommerce-checkout form.checkout.jm-cofolds-ready:not(.jm-summary-open) > h3#order_review_heading {
        display: none !important;
    }
    body.jm-v2.woocommerce-checkout form.checkout.jm-cofolds-ready:not(.jm-notes-open) .woocommerce-additional-fields {
        display: none !important;
    }

    /* Trust-grid → én dæmpet linje under Godkend-knappen */
    body.jm-v2.woocommerce-checkout .jm-co-trust { display: none !important; }
    body.jm-v2.woocommerce-checkout #payment .place-order::after {
        content: '🔒 SSL-krypteret betaling · 14 dages fortrydelsesret';
        display: block; text-align: center; margin-top: 10px;
        font-size: 12px; color: var(--text-muted, #6B6660);
    }

    /* Betalingsmetoder strammes */
    body.jm-v2.woocommerce-checkout #payment ul.payment_methods li { padding: 10px 12px !important; }
    body.jm-v2.woocommerce-checkout #payment ul.payment_methods img { max-height: 18px !important; width: auto !important; }

    /* Hero slankes */
    body.jm-v2.woocommerce-checkout .fab-v2-chrome__h1 { font-size: 26px !important; margin: 4px 0 !important; }
    body.jm-v2.woocommerce-checkout .fab-v2-chrome__head { margin-bottom: 10px !important; }
    body.jm-v2.woocommerce-checkout .fab-v2-chrome__sub { font-size: 13px !important; }

    /* Kupon/login-linjer i samme dæmpede kort-sprog */
    body.jm-v2.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info,
    body.jm-v2.woocommerce-checkout .woocommerce-form-login-toggle .woocommerce-info {
        background: none; border: 1px dashed var(--border, #ECEAE6);
        border-radius: 10px; padding: 10px 14px; font-size: 13px;
    }

    /* Luft-stramning (Marcs screenshots 2026-08-07 21:22): margin-stakkene i
       flex-kolonnen kollapser ikke, så de skal skæres eksplicit på mobil. */
    body.jm-v2.woocommerce-checkout .fab-checkout-back-link { margin: 6px 0 !important; display: inline-block; }
    body.jm-v2.woocommerce-checkout form.checkout { padding-top: 4px !important; }
    body.jm-v2.woocommerce-checkout .woocommerce-billing-fields > h3 { margin-top: 8px !important; }
    body.jm-v2.woocommerce-checkout #fab-payment-relocated { padding-top: 10px !important; margin-top: 4px !important; }
    body.jm-v2.woocommerce-checkout #payment .wc_payment_methods::before { margin: 8px 0 12px !important; }
    body.jm-v2.woocommerce-checkout #payment { margin-bottom: 8px !important; }

    /* Reepay-logolinjer: LI-kortene fyldte (52px) om 20px-billeder */
    body.jm-v2.woocommerce-checkout #payment ul.reepay-logos {
        gap: 6px !important; margin: 0 !important; padding: 0 !important;
    }
    body.jm-v2.woocommerce-checkout #payment li.reepay-logo {
        width: 36px !important; height: 24px !important; padding: 2px !important;
        display: inline-flex !important; align-items: center; justify-content: center;
    }
    body.jm-v2.woocommerce-checkout #payment li.reepay-logo img { max-height: 14px !important; }
}

@media (min-width: 992px) {
    /* Row 1: Rechnungsdaten (left, ~2/3) + Deine Bestellung (right, ~1/3), equal heights.
       Row 2: Zahlung — full width, spanning both columns + gap. */
    body.jm-v2.woocommerce-checkout form.checkout {
        display: grid !important;
        grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) !important;
        grid-template-rows: auto auto !important;
        column-gap: 32px !important;
        row-gap: 28px !important;
        align-items: stretch !important;
    }
    /* LEFT col, row 1: address fields */
    body.jm-v2.woocommerce-checkout form.checkout > #customer_details {
        grid-column: 1 / 2 !important;
        grid-row: 1 !important;
        display: block !important;
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        overflow: visible !important;
        float: none !important;
        clear: none !important;
        margin: 0 !important;
        align-self: stretch !important;
    }
    /* RIGHT col, row 1: order summary — equal height with customer_details */
    body.jm-v2.woocommerce-checkout form.checkout > #order_review {
        grid-column: 2 / 3 !important;
        grid-row: 1 !important;
        display: flex !important;
        flex-direction: column !important;
        width: auto !important;
        max-width: none !important;
        float: none !important;
        margin: 0 !important;
        clear: none !important;
        align-self: stretch !important;
        background: #fff;
        border-radius: 14px;
        padding: 32px 28px 28px;
        box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05);
        border: 1px dashed rgba(0, 0, 0, 0.08);
        position: relative;
        overflow: visible;
    }
    /* Push the totals to the bottom of #order_review so the card looks
       balanced when its height is stretched to match the taller left column. */
    body.jm-v2.woocommerce-checkout form.checkout > #order_review .shop_table {
        display: flex !important;
        flex-direction: column !important;
        flex: 1 1 auto !important;
    }
    body.jm-v2.woocommerce-checkout form.checkout > #order_review .shop_table tfoot {
        margin-top: auto !important;
    }
    /* FULL WIDTH, row 2: payment block (moved here by v2-checkout.js) */
    body.jm-v2.woocommerce-checkout form.checkout > #fab-payment-relocated {
        grid-column: 1 / 3 !important;
        grid-row: 2 !important;
        display: block !important;
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        margin: 0 !important;
    }
    /* Heading lives INSIDE #order_review now (relocated by JS) */
    body.jm-v2.woocommerce-checkout form.checkout > h3#order_review_heading,
    body.jm-v2.woocommerce-checkout #order_review > h3#order_review_heading {
        display: block !important;
        position: static;
        background: transparent;
        padding-top: 0 !important;
        padding-bottom: 12px !important;
        margin: 0 0 14px !important;
        font-family: 'Nunito', sans-serif;
        font-weight: 900;
        font-size: 22px;
        border-bottom: 1px dashed rgba(0, 0, 0, 0.12);
        float: none !important;
        clear: none !important;
        max-width: none !important;
        width: auto !important;
    }
    /* Hide the now-empty heading slot if JS hasn't moved it yet (fallback) */
    body.jm-v2.woocommerce-checkout form.checkout > h3#order_review_heading:empty {
        display: none !important;
    }
    /* Customer-details inner col2-set: stack billing/shipping vertically inside the left track. */
    body.jm-v2.woocommerce-checkout #customer_details.col2-set,
    body.jm-v2.woocommerce-checkout #customer_details > .col-1,
    body.jm-v2.woocommerce-checkout #customer_details > .col-2 {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        float: none !important;
        clear: none !important;
        box-sizing: border-box !important;
    }
}

/* Prevent any field, select, textarea, or fieldset from pushing the left
   grid track wider than its budget (long select-option text was forcing
   horizontal overflow → right column clipped past viewport). */
body.jm-v2.woocommerce-checkout #customer_details,
body.jm-v2.woocommerce-checkout #customer_details *,
body.jm-v2.woocommerce-checkout .woocommerce-billing-fields,
body.jm-v2.woocommerce-checkout .woocommerce-shipping-fields,
body.jm-v2.woocommerce-checkout .woocommerce-additional-fields {
    box-sizing: border-box;
}
body.jm-v2.woocommerce-checkout #customer_details .form-row,
body.jm-v2.woocommerce-checkout #customer_details fieldset,
body.jm-v2.woocommerce-checkout #customer_details .woocommerce-billing-fields__field-wrapper,
body.jm-v2.woocommerce-checkout #customer_details .woocommerce-shipping-fields__field-wrapper,
body.jm-v2.woocommerce-checkout #customer_details .woocommerce-additional-fields__field-wrapper {
    max-width: 100% !important;
    min-width: 0 !important;
}
body.jm-v2.woocommerce-checkout #customer_details input[type="text"],
body.jm-v2.woocommerce-checkout #customer_details input[type="email"],
body.jm-v2.woocommerce-checkout #customer_details input[type="tel"],
body.jm-v2.woocommerce-checkout #customer_details input[type="number"],
body.jm-v2.woocommerce-checkout #customer_details select,
body.jm-v2.woocommerce-checkout #customer_details textarea,
body.jm-v2.woocommerce-checkout #customer_details .select2,
body.jm-v2.woocommerce-checkout #customer_details .select2-container {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
}
/* Order-review children must also not exceed their column. Mollie payment
   iframe and other embeds are common culprits. */
body.jm-v2.woocommerce-checkout #order_review,
body.jm-v2.woocommerce-checkout #order_review * {
    max-width: 100%;
    box-sizing: border-box;
}
body.jm-v2.woocommerce-checkout #order_review iframe,
body.jm-v2.woocommerce-checkout #payment iframe {
    max-width: 100% !important;
    width: 100% !important;
}

/* ============================================================
   Order summary card-list restyle.
   We abandon native table rendering entirely: every row becomes a
   flex container so we can layer the design (thumb · name · price)
   without fighting Shoptimizer's responsive table CSS.
   ============================================================ */
body.jm-v2.woocommerce-checkout #order_review .shop_table,
body.jm-v2.woocommerce-checkout #order_review table.woocommerce-checkout-review-order-table {
    display: block !important;
    width: 100% !important;
    border: 0 !important;
    margin: 0 !important;
    background: transparent !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table thead {
    display: none !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tbody,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot {
    display: block !important;
    width: 100% !important;
}

/* ----- Cart item rows (compact) ----- */
body.jm-v2.woocommerce-checkout #order_review .shop_table tbody tr.cart_item {
    display: flex !important;
    align-items: flex-start;
    gap: 10px;
    padding: 9px 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-bottom: 1px dashed rgba(0, 0, 0, 0.08) !important;
    background: transparent !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tbody tr.cart_item:first-child {
    padding-top: 0 !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tbody tr.cart_item:last-child {
    border-bottom: 0 !important;
    padding-bottom: 4px !important;
}

body.jm-v2.woocommerce-checkout #order_review tbody td.product-name {
    display: flex !important;
    flex: 1 1 auto;
    min-width: 0;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 10px;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    font-size: 13px;
    line-height: 1.35;
    color: var(--text, #2A2A2A);
}
body.jm-v2.woocommerce-checkout #order_review tbody td.product-total {
    display: block !important;
    flex: 0 0 auto;
    text-align: right !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    font-weight: 700;
    color: var(--text, #2A2A2A);
    white-space: nowrap;
    align-self: flex-start;
    margin-top: 2px;
}
body.jm-v2.woocommerce-checkout #order_review tbody td.product-total .woocommerce-Price-amount {
    font-size: 14px;
}

/* Thumbnail (compact) */
body.jm-v2.woocommerce-checkout #order_review td.product-name img.product-item-thumbnail,
body.jm-v2.woocommerce-checkout #order_review td.product-name > img:first-child {
    width: 48px !important;
    height: 48px !important;
    object-fit: cover;
    border-radius: 6px;
    flex: 0 0 48px;
    margin: 0 !important;
}

/* Title + meta wrapper (Shoptimizer's div) */
body.jm-v2.woocommerce-checkout #order_review td.product-name .cg-checkout-table-product-name {
    flex: 1 1 calc(100% - 70px);
    min-width: 0;
    margin: 0;
    padding: 0;
    display: block;
}
body.jm-v2.woocommerce-checkout #order_review td.product-name .cg-checkout-table-product-name a {
    text-decoration: none;
    color: inherit;
}

body.jm-v2.woocommerce-checkout #order_review .fab-mc-title {
    display: block;
    font-weight: 600;
    font-size: 13px;
    line-height: 1.3;
    color: var(--text, #2A2A2A);
}
body.jm-v2.woocommerce-checkout #order_review .fab-mc-meta {
    display: block;
    margin-top: 2px;
    font-size: 11px;
    color: var(--text-muted, #888);
    line-height: 1.3;
}

/* Meta wrapper — JS-injected container holding both variation + quantity pills.
   Carries the 58px left indent (under the thumb) so individual pills sit
   naturally side by side via gap. */
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta {
    display: inline-flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 6px !important;
    margin: 4px 0 0 58px !important;
    width: auto !important;
}

/* Variation (Länge) — compact pill, side-by-side with quantity via wrapper gap. */
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta .variation,
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta dl.variation {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    width: auto !important;
    margin: 0 !important;
    padding: 2px 8px !important;
    background: rgba(0, 0, 0, 0.05) !important;
    border-radius: 4px !important;
    border: 0 !important;
    font-size: 11px !important;
    font-weight: 400 !important;
    color: var(--text-mid, #5A5A5A) !important;
    line-height: 1.4 !important;
    align-items: center;
}
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta .variation dt,
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta .variation dd,
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta .variation dd p {
    display: inline !important;
    margin: 0 !important;
    padding: 0 !important;
    font-weight: 500 !important;
    color: inherit !important;
    background: transparent !important;
    font-size: inherit !important;
    line-height: inherit !important;
}
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta .variation dt::after {
    content: " ";
}

/* Quantity (× N) — small coral pill right next to the variation pill. */
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta .product-quantity,
body.jm-v2.woocommerce-checkout #order_review td.product-name .fab-cart-meta strong.product-quantity {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    width: auto !important;
    margin: 0 !important;
    padding: 2px 8px !important;
    background: rgba(231, 106, 92, 0.1) !important;
    border-radius: 4px !important;
    border: 0 !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    color: var(--jm-yellow, #E76A5C) !important;
    line-height: 1.4 !important;
    text-align: left !important;
    align-items: center;
}

/* ----- Totals (tfoot rows) ----- */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr {
    display: flex !important;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr th,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr td {
    display: block !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    font-weight: 400;
    color: var(--text, #2A2A2A);
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr th {
    flex: 1 1 auto;
    text-align: left !important;
    font-size: 14px;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr td {
    flex: 0 0 auto;
    text-align: right !important;
    font-size: 14px;
    white-space: nowrap;
}
/* Shipping td needs to span full row (radio list inside), and its
   labels must allow wrapping so long method names don't overflow the
   narrower right column. */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.shipping td {
    white-space: normal !important;
}

/* ----- Hierarchy: subtotal/fee/shipping/tax all 13px text-mid; order-total hero ----- */
/* Intermediate totals row: medium small, lighter color */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.cart-subtotal th,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.cart-subtotal td,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.fee th,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.fee td,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.shipping th {
    font-size: 13px !important;
    color: var(--text-mid, #5A5A5A) !important;
    font-weight: 500;
}

/* Subtotal — divider above totals stack */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.cart-subtotal {
    border-top: 1px dashed rgba(0, 0, 0, 0.12) !important;
    padding-top: 14px !important;
    margin-top: 10px !important;
}

/* Discount fee in green */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.fee th,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.fee td,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.fee td .woocommerce-Price-amount {
    color: #2A8B5E !important;
    font-weight: 600 !important;
}

/* Tax dimmed/small */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.tax-rate th,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.tax-rate td {
    font-size: 11px !important;
    color: var(--text-muted, #888) !important;
    font-weight: 400;
}

/* Order total — hero row. Label + value sit on ONE line with the price
   right-aligned. Sized so "Gesamtsumme + €XX,XX" fits the ~300px card width. */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total {
    align-items: baseline !important;
    border-top: 2px solid var(--jm-yellow, #E76A5C) !important;
    padding-top: 16px !important;
    margin-top: 14px !important;
    flex-wrap: wrap !important;
    justify-content: space-between !important;
    column-gap: 12px !important;
    row-gap: 4px !important;
    background: transparent !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total th {
    font-family: 'Nunito', sans-serif !important;
    font-weight: 900 !important;
    font-size: 19px !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    line-height: 1.15 !important;
    color: var(--text, #2A2A2A) !important;
    flex: 0 1 auto !important;
    min-width: 0 !important;
    background: transparent !important;
    padding: 0 !important;
    white-space: nowrap !important;
}
/* Direct-child price (the order total amount) — coral. Use child selector
   so we DON'T match the nested .woocommerce-Price-amount inside <small> below. */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total > td,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total > td > strong,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total > td > .woocommerce-Price-amount,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total > td > strong > .woocommerce-Price-amount,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total > td > .woocommerce-Price-amount bdi,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total > td > strong > .woocommerce-Price-amount bdi {
    font-family: 'Nunito', sans-serif !important;
    font-weight: 900 !important;
    font-size: 22px !important;
    line-height: 1.15 !important;
    color: var(--jm-yellow, #E76A5C) !important;
    white-space: nowrap !important;
    text-align: right !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total > td {
    flex: 0 1 auto !important;
    padding: 0 !important;
    background: transparent !important;
}
/* "(inkl. €X,XX MwSt.)" caption — small, on its own line, right-aligned.
   Override price-inside-small so it doesn't inherit the 26px coral above. */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total small.includes_tax {
    display: block;
    flex-basis: 100%;
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 400 !important;
    font-size: 11px !important;
    text-transform: none;
    letter-spacing: 0;
    color: var(--text-muted, #888) !important;
    margin-top: 4px !important;
    text-align: right;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total small.includes_tax .woocommerce-Price-amount,
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.order-total small.includes_tax .woocommerce-Price-amount bdi {
    font-family: 'JetBrains Mono', monospace !important;
    font-weight: 400 !important;
    font-size: 11px !important;
    color: var(--text-muted, #888) !important;
}

/* Shipping options — vertical stack of radio cards */
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.shipping {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    padding: 12px 0 !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.shipping th {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-muted, #888);
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tfoot tr.shipping td {
    width: 100%;
    text-align: left !important;
}
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li {
    margin: 0;
    padding: 8px 10px;
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 8px;
    font-size: 13px;
    background: #fff;
    transition: border-color 120ms ease, box-shadow 120ms ease;
}
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li:has(input:checked) {
    border-color: var(--jm-yellow, #E76A5C);
    box-shadow: 0 0 0 2px rgba(231, 106, 92, 0.12);
}
/* Locked column grid: [icon 56px | text 1fr | price auto].
   Radio sits outside the label as li > input. The label is a 3-col grid so
   icon, text, and price always line up across rows regardless of which
   carrier filter (GLS svg / UPS img / 🎉 emoji / nothing) injected the icon.

   The <li> itself uses a 2-column grid: [radio | label]. Anything else inside
   <li> (Shipmondo's "Please enter shipping address" notice, etc.) drops to
   row 2 spanning both columns — instead of competing horizontally with the
   label and squeezing its 1fr text column to char-width. */
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: center;
    column-gap: 10px;
    row-gap: 6px;
}
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li > input[type="radio"] {
    grid-column: 1;
    grid-row: 1;
}
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li > label {
    grid-column: 2;
    grid-row: 1;
}
/* Carrier-injected notices (Shipmondo PaketShop hint, plugin status text):
   span the full width on a second row, styled as supplementary info. */
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li > *:not(input):not(label) {
    grid-column: 1 / -1;
    grid-row: 2;
    font-size: 12px;
    color: var(--text-muted, #888);
    line-height: 1.4;
    padding-left: 26px;
    margin: 0;
}
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li input[type="radio"] {
    flex: 0 0 auto;
    margin: 0;
    accent-color: var(--jm-yellow, #E76A5C);
}
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li label {
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
    cursor: pointer;
    line-height: 1.35;
    display: grid;
    grid-template-columns: 56px 1fr auto;
    align-items: center;
    column-gap: 12px;
    font-size: 13px;
}
/* Icon column — fixed width slot, content centered. Empty slot still reserves space. */
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li label .fab-ship-icon {
    width: 56px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
}
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li label .fab-ship-icon img,
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li label .fab-ship-icon svg {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    margin: 0 !important;
    vertical-align: middle;
}
/* Strip stray inline margin/padding that filters bake into the icon spans. */
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li label .fab-ship-icon > * {
    margin: 0 !important;
    padding: 0 !important;
}
/* Method name column — wraps cleanly inside its slot. */
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li label .fab-ship-text {
    min-width: 0;
    word-break: break-word;
    color: var(--text, #2A2A2A);
}
/* Price column — compact, right-aligned, never wraps. */
body.jm-v2.woocommerce-checkout #order_review tfoot tr.shipping ul#shipping_method li label .woocommerce-Price-amount {
    white-space: nowrap;
    font-weight: 600;
    color: var(--text, #2A2A2A);
    text-align: right;
}

/* ----- Submit button ----- */
body.jm-v2.woocommerce-checkout #order_review #place_order {
    width: 100% !important;
    display: block !important;
    padding: 16px 24px !important;
    background: var(--jm-yellow, #E76A5C) !important;
    color: #fff !important;
    border: 0 !important;
    border-radius: 12px !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 800 !important;
    font-size: 16px !important;
    margin-top: 16px !important;
    transition: transform 120ms ease, box-shadow 120ms ease;
    cursor: pointer;
    text-transform: none !important;
    letter-spacing: 0;
    box-shadow: 0 6px 14px rgba(231, 106, 92, 0.18);
}
body.jm-v2.woocommerce-checkout #order_review #place_order:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 22px rgba(231, 106, 92, 0.32);
}
body.jm-v2.woocommerce-checkout #order_review #place_order:disabled {
    opacity: 0.6;
    cursor: not-allowed;
    transform: none;
}

/* Numbered section headings — overlay 01/02 prefix on WC labels */
body.jm-v2.woocommerce-checkout .woocommerce-billing-fields > h3,
body.jm-v2.woocommerce-checkout .woocommerce-shipping-fields > h3,
body.jm-v2.woocommerce-checkout .woocommerce-additional-fields > h3 {
    display: flex;
    align-items: center;
    gap: 12px;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 900 !important;
    font-size: 22px !important;
    margin: 28px 0 16px !important;
    padding-bottom: 12px;
    border-bottom: 1px dashed rgba(0, 0, 0, 0.12);
}
body.jm-v2.woocommerce-checkout .woocommerce-billing-fields > h3::before,
body.jm-v2.woocommerce-checkout .woocommerce-shipping-fields > h3::before,
body.jm-v2.woocommerce-checkout .woocommerce-additional-fields > h3::before {
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    color: var(--jm-yellow, #E76A5C);
    background: var(--cream, #FAF6EE);
    padding: 5px 10px;
    border-radius: 6px;
    flex-shrink: 0;
}
body.jm-v2.woocommerce-checkout .woocommerce-billing-fields > h3::before { content: "01"; }
body.jm-v2.woocommerce-checkout .woocommerce-shipping-fields > h3::before { content: "02"; }
body.jm-v2.woocommerce-checkout .woocommerce-additional-fields > h3::before { content: "03"; }
body.jm-v2.woocommerce-checkout #payment .wc_payment_methods::before {
    content: "04 · Betaling"; /* aldrig em-dash i kundevendt tekst (Marc-regel) */
    display: block;
    font-family: 'Nunito', sans-serif;
    font-weight: 900;
    font-size: 22px;
    margin: 28px 0 16px;
    padding-bottom: 12px;
    border-bottom: 1px dashed rgba(0, 0, 0, 0.12);
    color: var(--text, #2A2A2A);
}

/* Kill any duplicate stepper rendered by plugins */
body.jm-v2.woocommerce-checkout .checkout-progress,
body.jm-v2.woocommerce-checkout .wc-progress-steps,
body.jm-v2.woocommerce-checkout .checkout-step-progress {
    display: none !important;
}

@media (max-width: 991px) {
    .fab-stepper { gap: 4px; }
    .fab-stepper__item + .fab-stepper__item::before { width: 12px; margin: 0 4px; }
    .fab-stepper__label { display: none; }
    .fab-stepper__item.is-current .fab-stepper__label { display: inline; }
}

/* ===== Phase 8: Stoffkunde polish ===== */
.fab-stk-week {
    margin: 0 0 48px;
    padding: 0;
}
.fab-stk-week__head {
    margin-bottom: 18px;
}
.fab-stk-week__grid {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 24px;
    align-items: stretch;
}
.fab-stk-week__feat {
    background: #fff;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 220px 1fr;
}
.fab-stk-week__img {
    background-size: cover;
    background-position: center;
}
.fab-stk-week__body {
    padding: 22px 24px 24px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.fab-stk-week__body h3 {
    font-size: 22px;
    line-height: 1.2;
    margin: 4px 0 6px;
    color: var(--text, #2A2A2A);
}
.fab-stk-week__body p {
    color: var(--text-mid, #5A5A5A);
    margin: 0;
    line-height: 1.5;
}
.fab-stk-week__cta {
    align-self: flex-start;
    margin-top: 12px;
}
.fab-stk-week__list {
    list-style: none;
    margin: 0;
    padding: 0;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
    display: flex;
    flex-direction: column;
}
.fab-stk-week__list li {
    list-style: none;
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 18px 22px;
    border-bottom: 1px dashed rgba(0, 0, 0, 0.1);
    cursor: pointer;
    transition: background 0.15s ease;
}
.fab-stk-week__list li:last-child { border-bottom: 0; }
.fab-stk-week__list li:hover { background: var(--cream, #FAF6EE); }
.fab-stk-week__num {
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    color: var(--jm-yellow, #E76A5C);
    background: var(--cream, #FAF6EE);
    padding: 6px 10px;
    border-radius: 6px;
    flex-shrink: 0;
    font-weight: 700;
}
.fab-stk-week__list li > div { display: flex; flex-direction: column; gap: 2px; }
.fab-stk-week__list strong {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 15px;
    color: var(--text, #2A2A2A);
}
.fab-stk-week__list span {
    font-size: 12px;
    color: var(--text-muted, #888);
}
@media (max-width: 900px) {
    .fab-stk-week__grid { grid-template-columns: 1fr; }
    .fab-stk-week__feat { grid-template-rows: 200px 1fr; }
}

/* Topic grid — monochrome icons */
.fab-stk-topics {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 20px;
    margin-bottom: 64px;
}
.fab-stk-topic {
    background: #fff;
    border-radius: 14px;
    padding: 28px 24px 22px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.05);
    text-decoration: none;
    color: inherit;
    transition: transform 200ms ease, box-shadow 200ms ease;
    display: block;
    border: 1px solid rgba(0, 0, 0, 0.04);
}
.fab-stk-topic:hover {
    transform: rotate(0deg) translateY(-3px) !important;
    box-shadow: 0 14px 30px rgba(0, 0, 0, 0.08);
    color: inherit;
}
.fab-stk-topic__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px; height: 46px;
    border-radius: 12px;
    background: var(--cream, #FAF6EE);
    color: var(--jm-pink, #2F6F6E);
    margin-bottom: 14px;
}
.fab-stk-topic__icon svg {
    width: 24px; height: 24px;
}

/* Newsletter — dark teal */
.fab-stk-newsletter {
    background: linear-gradient(135deg, #1F4F4E, #2F6F6E);
    color: #fff;
    border-radius: 14px;
    padding: 48px 40px;
    text-align: center;
    position: relative;
    box-shadow: 0 14px 40px rgba(31, 79, 78, 0.25);
}
.fab-stk-newsletter__inner {
    max-width: 540px;
    margin: 0 auto;
}
.fab-stk-newsletter__h {
    font-size: 36px !important;
    color: #fff !important;
    margin: 0 0 8px !important;
    line-height: 1.1;
}
.fab-stk-newsletter__sub {
    font-size: 24px;
    margin: 0 0 24px;
    color: var(--jm-yellow, #C75B80);
}
.fab-stk-newsletter__form {
    display: flex;
    gap: 8px;
    max-width: 480px;
    margin: 0 auto;
    flex-wrap: wrap;
}
.fab-stk-newsletter__form input {
    flex: 1;
    min-width: 200px;
    padding: 14px 18px;
    border-radius: 10px;
    border: 0;
    font-family: 'Nunito', sans-serif;
    font-size: 15px;
    color: var(--text, #2A2A2A);
    background: #fff;
}
.fab-stk-newsletter__form button {
    padding: 14px 28px;
    border-radius: 10px;
    border: 0;
    background: var(--jm-yellow, #C75B80);
    color: #1F4F4E;
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 15px;
    cursor: pointer;
    transition: transform 0.15s ease;
}
.fab-stk-newsletter__form button:hover {
    transform: translateY(-1px);
    background: #fff;
}
.fab-stk-newsletter__small {
    margin-top: 14px;
    font-size: 13px;
    opacity: 0.8;
}

/* ============================================================
   PHASE 9 — Homepage additions: Reviews, Personal, Journal
   ============================================================ */

/* Reviews carousel */
body.jm-v2 .sb-reviews {
    max-width: 1200px;
    margin: 80px auto;
    padding: 0 24px;
}
body.jm-v2 .sb-reviews__head {
    text-align: center;
    margin-bottom: 48px;
}
body.jm-v2 .sb-reviews__h2 {
    font-size: clamp(28px, 4vw, 42px);
    margin: 0;
}
body.jm-v2 .sb-reviews__row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
}
body.jm-v2 .sb-review {
    position: relative;
    background: #fff;
    border-radius: 6px;
    padding: 32px 26px 26px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.08);
    transform: rotate(-0.6deg);
    margin: 0;
}
body.jm-v2 .sb-review--mid {
    transform: rotate(0.5deg) translateY(-8px);
    background: #FFFBEC;
}
body.jm-v2 .sb-tape--rev {
    position: absolute;
    top: -12px;
    left: 50%;
    transform: translateX(-50%) rotate(-3deg);
    width: 90px;
    height: 22px;
    background: rgba(226,114,151,0.45);
    border-radius: 2px;
}
body.jm-v2 .sb-tape--rev2 {
    background: rgba(232,127,116,0.45);
    transform: translateX(-50%) rotate(2deg);
}
body.jm-v2 .sb-review__stars {
    color: var(--jm-yellow, #C75B80);
    font-size: 18px;
    letter-spacing: 2px;
    margin-bottom: 14px;
}
body.jm-v2 .sb-review__quote {
    font-size: 19px;
    line-height: 1.5;
    color: var(--text, #2A2A2A);
    margin: 0 0 18px;
    font-style: italic;
}
body.jm-v2 .sb-review__by {
    display: flex;
    flex-direction: column;
    gap: 2px;
    border-top: 1px dashed rgba(0,0,0,0.12);
    padding-top: 14px;
}
body.jm-v2 .sb-review__name {
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 15px;
}
body.jm-v2 .sb-review__where {
    font-size: 13px;
    color: var(--text-muted, #6B6B6B);
}
body.jm-v2 .sb-reviews__foot {
    text-align: center;
    margin-top: 36px;
    font-family: 'Nunito', sans-serif;
}
body.jm-v2 .sb-reviews__rating {
    font-weight: 800;
    color: var(--jm-yellow);
    font-size: 22px;
}
body.jm-v2 .sb-reviews__count {
    color: var(--text-muted, #6B6B6B);
    font-size: 15px;
    margin-left: 6px;
}
@media (max-width: 880px) {
    body.jm-v2 .sb-reviews__row { grid-template-columns: 1fr; gap: 20px; }
    body.jm-v2 .sb-review--mid { transform: rotate(0.5deg); }
}

/* Personal picks */
body.jm-v2 .sb-personal {
    max-width: 1200px;
    margin: 90px auto;
    padding: 0 24px;
}
body.jm-v2 .sb-personal__head {
    text-align: center;
    margin-bottom: 40px;
}
body.jm-v2 .sb-personal__h2 {
    font-size: clamp(28px, 4vw, 42px);
    margin: 0 0 10px;
}
body.jm-v2 .sb-personal__sub {
    font-size: 18px;
    color: var(--text-muted, #6B6B6B);
}
body.jm-v2 .sb-personal__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
body.jm-v2 .sb-personal__card {
    text-decoration: none;
    color: inherit;
    display: block;
    transition: transform 0.2s ease;
}
body.jm-v2 .sb-personal__card:hover { transform: translateY(-4px); }
body.jm-v2 .sb-personal__img-wrap {
    position: relative;
    aspect-ratio: 1 / 1;
    border-radius: 8px;
    overflow: hidden;
    margin-bottom: 12px;
    background: var(--cream, #F7F1E2);
}
body.jm-v2 .sb-personal__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
body.jm-v2 .sb-personal__badge {
    position: absolute;
    top: 10px;
    left: 10px;
    background: #fff;
    color: var(--jm-yellow);
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 12px;
    padding: 4px 8px;
    border-radius: 4px;
    letter-spacing: 0.5px;
}
body.jm-v2 .sb-personal__name {
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 1.3;
    margin-bottom: 4px;
}
body.jm-v2 .sb-personal__price {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    color: var(--jm-pink);
    font-size: 16px;
}
@media (max-width: 1024px) {
    body.jm-v2 .sb-personal__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
    body.jm-v2 .sb-personal__grid { grid-template-columns: 1fr; }
}

/* Werkstatt-Tagebuch journal */
body.jm-v2 .sb-journal {
    max-width: 1200px;
    margin: 90px auto;
    padding: 0 24px;
}
body.jm-v2 .sb-journal__head {
    text-align: center;
    margin-bottom: 48px;
}
body.jm-v2 .sb-journal__h2 {
    font-size: clamp(28px, 4vw, 42px);
    margin: 0;
}
body.jm-v2 .sb-journal__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
}
body.jm-v2 .sb-journal__card {
    text-decoration: none;
    color: inherit;
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 6px 20px rgba(0,0,0,0.06);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    display: flex;
    flex-direction: column;
}
body.jm-v2 .sb-journal__card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 28px rgba(0,0,0,0.1);
}
body.jm-v2 .sb-journal__img {
    aspect-ratio: 16 / 10;
    background-size: cover;
    background-position: center;
    background-color: var(--cream, #F7F1E2);
}
body.jm-v2 .sb-journal__body {
    padding: 22px 24px 26px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1;
}
body.jm-v2 .sb-journal__meta {
    display: flex;
    gap: 12px;
    align-items: center;
    margin-bottom: 4px;
}
body.jm-v2 .sb-journal__num {
    background: var(--jm-yellow);
    color: #fff;
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 11px;
    padding: 3px 8px;
    border-radius: 3px;
    letter-spacing: 0.5px;
}
body.jm-v2 .sb-journal__date {
    font-size: 13px;
    color: var(--text-muted, #6B6B6B);
    font-family: 'Nunito', sans-serif;
}
body.jm-v2 .sb-journal__title {
    font-size: 20px;
    line-height: 1.3;
    margin: 4px 0 6px;
    color: var(--text, #2A2A2A);
}
body.jm-v2 .sb-journal__excerpt {
    font-size: 15px;
    line-height: 1.5;
    color: var(--text-muted, #6B6B6B);
    margin: 0 0 14px;
    flex: 1;
}
body.jm-v2 .sb-journal__cta {
    color: var(--jm-pink);
    font-size: 16px;
    margin-top: auto;
}
@media (max-width: 880px) {
    body.jm-v2 .sb-journal__grid { grid-template-columns: 1fr; gap: 20px; }
}

/* ===========================================================
   PLP layout fixes — Shoptimizer wraps our v2 main in
   .shoptimizer-archive > .archive-header + .col-full, which
   - duplicates the breadcrumb
   - constrains width to ~1190px
   - reserves space for an empty left sidebar (body.left-woocommerce-sidebar)
   Neutralize all of that on v2.
   =========================================================== */
body.jm-v2 .archive-header { display: none !important; }

body.jm-v2 .shoptimizer-archive {
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}
body.jm-v2 .shoptimizer-archive > .col-full,
body.jm-v2 .shoptimizer-archive .col-full {
    max-width: none !important;
    width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
    float: none !important;
    display: block !important;
}

/* Shoptimizer's left/right sidebar variants reserve column space via
   #primary width / margin. Force full-width on v2 templates. */
body.jm-v2.left-woocommerce-sidebar #primary,
body.jm-v2.right-woocommerce-sidebar #primary,
body.jm-v2 #primary,
body.jm-v2 #main {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    float: none !important;
}
body.jm-v2 #secondary,
body.jm-v2 .sidebar.widget-area,
body.jm-v2 .secondary-sidebar { display: none !important; }

/* v2 PLP container: centered + breathing room, beats Shoptimizer's width clamp. */
body.jm-v2 #jm-plp-v2 {
    max-width: var(--container-max, 1480px); /* Bug 1 (ported fra fabricly b315db8): harmoniseret med den fælles bredde-cap */
    margin: 0 auto;
    padding: 24px 0 80px;
    box-sizing: border-box;
}

/* PLP card ATC pill — visual cue, the whole card already links to the PDP. */
body.jm-v2 .sb-sku__atc {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    padding: 8px 14px;
    background: var(--jm-yellow, #E76A5C);
    color: #fff !important;
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 12px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border-radius: 999px;
    transition: transform .15s ease, box-shadow .15s ease;
}
body.jm-v2 .sb-sku:hover .sb-sku__atc {
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(231, 106, 92, 0.28);
}
body.jm-v2 .sb-sku__atc--row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 14px;
}
@media (max-width: 880px) {
    body.jm-v2 #jm-plp-v2 { padding: 16px 0 56px; }
    body.jm-v2 .sb-sku__atc { font-size: 11px; padding: 7px 12px; }
}

/* Quality overlay (Stoffart) — top-left of card image, mirrors cert badge
   bottom-left. Distinct white/teal treatment so it reads as info, not promo. */
body.jm-v2 .sb-sku__quality {
    position: absolute;
    top: 12px;
    left: 12px;
    background: rgba(255, 255, 255, 0.96);
    color: var(--jm-pink, #2F6F6E);
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 10px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 5px 10px;
    border-radius: 4px;
    box-shadow: 0 2px 6px rgba(40, 30, 30, 0.10);
    z-index: 2;
    line-height: 1;
}
@media (max-width: 600px) {
    body.jm-v2 .sb-sku__quality {
        font-size: 9px;
        padding: 4px 8px;
        letter-spacing: 0.08em;
    }
}

/* Hero polaroid — chunkier white frame + smaller image area so the fabric
   pattern reads as PATTERN (multiple repeats visible), not as one over-zoomed
   close-up. The base scrapbook.css uses padding 14/14/36; we bump it for v2
   and constrain the background to the inner content-box. */
body.jm-v2 .sb-polaroid {
    padding: 22px 22px 64px !important;
    background-clip: content-box;
    background-origin: content-box;
    background-size: cover;
    background-position: center;
}
body.jm-v2 .sb-polaroid::after {
    /* Caption hint inside the white bottom strip — uses [data-name] from PHP. */
    content: attr(data-name);
    position: absolute;
    left: 22px; right: 22px; bottom: 16px;
    font-family: 'Caveat', cursive;
    font-size: 14px;
    color: var(--text-muted, #6e6453);
    text-align: center;
    pointer-events: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
@media (max-width: 880px) {
    body.jm-v2 .sb-polaroid {
        padding: 16px 16px 48px !important;
    }
    body.jm-v2 .sb-polaroid::after { font-size: 12px; left: 16px; right: 16px; bottom: 12px; }
}

/* Camilla's signature — sits below the Werkstatt-Versprechen body.
   "Camilla" rendered in Caveat (already loaded) with italic + slight rotation,
   then a small flourish underline, then the caption. Uses coral so it reads
   as a real signature against the cream surroundings. */
body.jm-v2 .sb-signature {
    margin-top: 32px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
body.jm-v2 .sb-signature__name {
    font-family: 'Caveat', cursive;
    font-weight: 700;
    font-style: italic;
    font-size: 64px;
    line-height: 0.9;
    letter-spacing: -0.5px;
    color: var(--jm-yellow, #e87b6e);
    transform: rotate(-4deg);
    transform-origin: left center;
    margin-left: 4px;
}
body.jm-v2 .sb-signature__flourish {
    width: 220px;
    height: 22px;
    margin-top: -2px;
    margin-left: -8px;
    color: var(--jm-yellow, #e87b6e);
    transform: rotate(-2deg);
    transform-origin: left center;
}
body.jm-v2 .sb-signature__caption {
    margin-top: 10px;
    font-family: 'Poppins', sans-serif;
    font-size: 14px;
    color: var(--text-muted, #6e6453);
    letter-spacing: 0.01em;
}
@media (max-width: 880px) {
    body.jm-v2 .sb-signature__name { font-size: 52px; }
    body.jm-v2 .sb-signature__flourish { width: 180px; }
}

/* ============================================================
   v2 checkout — Phase 2: card-wrap left column + relocated payment
   Pairs with assets/v2-checkout.js which moves #payment out of
   #order_review into #fab-payment-relocated, and the heading INTO
   #order_review.
   ============================================================ */

/* Zurück zum Shop link, injected by v2-checkout.js above form.checkout */
body.jm-v2.woocommerce-checkout .fab-checkout-back-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 18px;
    padding: 6px 0;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    letter-spacing: 0.04em;
    color: var(--text-mid, #5A5A5A);
    text-decoration: none;
    transition: color 0.15s ease;
}
body.jm-v2.woocommerce-checkout .fab-checkout-back-link:hover {
    color: var(--jm-yellow, #E76A5C);
}

@media (min-width: 992px) {
    /* Card-wrap address fields */
    body.jm-v2.woocommerce-checkout #customer_details {
        background: #fff;
        border-radius: 14px;
        padding: 32px;
        box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05);
        border: 1px dashed rgba(0, 0, 0, 0.08);
        box-sizing: border-box;
        position: relative;
        overflow: visible;
    }
    /* Card-wrap relocated payment block */
    body.jm-v2.woocommerce-checkout #fab-payment-relocated {
        background: #fff;
        border-radius: 14px;
        padding: 32px;
        box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05);
        border: 1px dashed rgba(0, 0, 0, 0.08);
        box-sizing: border-box;
        position: relative;
        overflow: visible;
    }
    /* When #payment lives inside the relocated wrapper, strip its own card
       chrome (background, border, padding) so we don't double-card. */
    body.jm-v2.woocommerce-checkout #fab-payment-relocated > #payment {
        background: transparent !important;
        border: 0 !important;
        padding: 0 !important;
        margin: 0 !important;
        box-shadow: none !important;
    }
}

/* Form input polish: cream BG + uppercase letter-spaced labels */
body.jm-v2.woocommerce-checkout #customer_details .form-row label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-mid, #5A5A5A);
    margin-bottom: 6px;
    display: block;
}
body.jm-v2.woocommerce-checkout #customer_details input[type="text"],
body.jm-v2.woocommerce-checkout #customer_details input[type="email"],
body.jm-v2.woocommerce-checkout #customer_details input[type="tel"],
body.jm-v2.woocommerce-checkout #customer_details input[type="number"],
body.jm-v2.woocommerce-checkout #customer_details input[type="password"],
body.jm-v2.woocommerce-checkout #customer_details select,
body.jm-v2.woocommerce-checkout #customer_details .select2-selection,
body.jm-v2.woocommerce-checkout #customer_details .select2-selection--single {
    background: var(--cream, #FAF6EE) !important;
    border: 1px solid rgba(0, 0, 0, 0.1) !important;
    border-radius: 10px !important;
    height: 50px !important;
    line-height: 24px !important;
    padding: 13px 16px !important;
    font-size: 14px !important;
    color: var(--text, #2A2A2A) !important;
    box-sizing: border-box !important;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
body.jm-v2.woocommerce-checkout #customer_details textarea {
    background: var(--cream, #FAF6EE) !important;
    border: 1px solid rgba(0, 0, 0, 0.1) !important;
    border-radius: 10px !important;
    line-height: 24px !important;
    padding: 13px 16px !important;
    font-size: 14px !important;
    color: var(--text, #2A2A2A) !important;
    min-height: 110px;
    box-sizing: border-box !important;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
/* Select2 inner rendered text — vertical-align center inside the 50px box. */
body.jm-v2.woocommerce-checkout #customer_details .select2-selection--single .select2-selection__rendered {
    line-height: 24px !important;
    padding: 0 !important;
    color: var(--text, #2A2A2A) !important;
}
body.jm-v2.woocommerce-checkout #customer_details .select2-selection--single .select2-selection__arrow {
    height: 48px !important;
    top: 0 !important;
    right: 8px !important;
}
/* Field row vertical rhythm */
body.jm-v2.woocommerce-checkout #customer_details .form-row {
    margin-bottom: 14px !important;
}
/* Placeholder color and weight */
body.jm-v2.woocommerce-checkout #customer_details input::placeholder,
body.jm-v2.woocommerce-checkout #customer_details textarea::placeholder,
body.jm-v2.woocommerce-checkout #customer_details .select2-selection__placeholder {
    color: rgba(42, 42, 42, 0.4) !important;
    font-weight: 400;
    opacity: 1;
}
body.jm-v2.woocommerce-checkout #customer_details input:focus,
body.jm-v2.woocommerce-checkout #customer_details textarea:focus,
body.jm-v2.woocommerce-checkout #customer_details select:focus,
body.jm-v2.woocommerce-checkout #customer_details .select2-selection:focus,
body.jm-v2.woocommerce-checkout #customer_details .select2-container--focus .select2-selection {
    border-color: var(--jm-yellow, #E76A5C) !important;
    box-shadow: 0 0 0 3px rgba(231, 106, 92, 0.15) !important;
    outline: none !important;
}

/* Section H3 inside customer_details: uppercased coral with numbered chip */
body.jm-v2.woocommerce-checkout #customer_details > .col-1 h3,
body.jm-v2.woocommerce-checkout #customer_details > .col-2 h3,
body.jm-v2.woocommerce-checkout .woocommerce-additional-fields h3 {
    margin-top: 0;
    margin-bottom: 18px;
}

/* Payment radios as bordered cards */
body.jm-v2.woocommerce-checkout #payment ul.payment_methods {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
    margin: 0 0 18px !important;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li {
    background: var(--cream, #FAF6EE);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 10px;
    padding: 14px 16px;
    margin: 0 !important;
    list-style: none;
    transition: border-color 0.15s ease, background 0.15s ease;
}
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li::before,
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li::after {
    display: none !important;
}
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li:hover {
    border-color: rgba(231, 106, 92, 0.4);
}
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li > input[type="radio"]:checked + label,
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li.active,
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li:has(input[type="radio"]:checked) {
    border-color: var(--jm-yellow, #E76A5C);
    background: #fff;
}
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li label {
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text, #2A2A2A);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    margin: 0;
}
body.jm-v2.woocommerce-checkout #payment ul.payment_methods > li label img {
    max-height: 22px;
    width: auto;
    margin-left: auto;
}
body.jm-v2.woocommerce-checkout #payment ul.payment_methods .payment_box {
    background: transparent !important;
    border: 0 !important;
    padding: 12px 0 4px !important;
    margin: 8px 0 0 !important;
    font-size: 13px;
    color: var(--text-mid, #5A5A5A);
}
body.jm-v2.woocommerce-checkout #payment ul.payment_methods .payment_box::before {
    display: none !important;
}

/* Place-order button inside relocated payment */
body.jm-v2.woocommerce-checkout #fab-payment-relocated #place_order,
body.jm-v2.woocommerce-checkout #payment #place_order {
    width: 100%;
    background: var(--jm-yellow, #E76A5C);
    color: #fff;
    font-family: 'Nunito', sans-serif;
    font-weight: 900;
    font-size: 16px;
    padding: 14px 18px;
    border-radius: 10px;
    border: 0;
    box-shadow: 0 8px 18px rgba(231, 106, 92, 0.25);
    transition: transform 0.1s ease, box-shadow 0.15s ease;
}
body.jm-v2.woocommerce-checkout #fab-payment-relocated #place_order:hover,
body.jm-v2.woocommerce-checkout #payment #place_order:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 22px rgba(231, 106, 92, 0.32);
}

/* Mobile: collapse cards back to flat layout */
@media (max-width: 991px) {
    body.jm-v2.woocommerce-checkout #customer_details,
    body.jm-v2.woocommerce-checkout #fab-payment-relocated {
        background: transparent;
        border: 0;
        padding: 0;
        box-shadow: none;
        margin-bottom: 24px;
    }
    body.jm-v2.woocommerce-checkout #fab-payment-relocated {
        margin-top: 24px;
    }
}

/* ============================================================
   v2 checkout — Phase 3: scrapbook accents + visible coupon
   ============================================================ */

/* Cards must be positioned for the absolute ::before tape to anchor correctly,
   regardless of breakpoint. (The @media block also sets these but we want the
   tape rule itself to be self-sufficient.) */
body.jm-v2.woocommerce-checkout #customer_details,
body.jm-v2.woocommerce-checkout #order_review,
body.jm-v2.woocommerce-checkout #fab-payment-relocated {
    position: relative;
}

/* Scrapbook tape strip on each card.
   Same masking-tape recipe as the cart drawer (lines 478-493). Different
   tints: customer = yellow, order = blue, payment = coral. */
body.jm-v2.woocommerce-checkout #customer_details::before,
body.jm-v2.woocommerce-checkout #order_review::before,
body.jm-v2.woocommerce-checkout #fab-payment-relocated::before {
    content: "";
    position: absolute;
    top: -10px;
    left: 32px;
    width: 110px;
    height: 22px;
    background:
        linear-gradient(90deg, transparent 0, rgba(255, 255, 255, 0.35) 30%, transparent 60%),
        repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.18) 0 1px, transparent 1px 6px),
        rgba(255, 207, 99, 0.65);
    border: 1px dashed rgba(0, 0, 0, 0.18);
    transform: rotate(-2.5deg);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
    pointer-events: none;
    z-index: 5;
}
body.jm-v2.woocommerce-checkout #order_review::before {
    background:
        linear-gradient(90deg, transparent 0, rgba(255, 255, 255, 0.35) 30%, transparent 60%),
        repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.18) 0 1px, transparent 1px 6px),
        rgba(184, 220, 224, 0.75);
    transform: rotate(-1.5deg);
    left: 24px;
    width: 96px;
}
body.jm-v2.woocommerce-checkout #fab-payment-relocated::before {
    background:
        linear-gradient(90deg, transparent 0, rgba(255, 255, 255, 0.35) 30%, transparent 60%),
        repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.18) 0 1px, transparent 1px 6px),
        rgba(244, 201, 192, 0.7);
    transform: rotate(-3deg);
    left: 40px;
    width: 120px;
}

/* Order review heading — flex row with bullet ○ + label + Bearbeiten link */
body.jm-v2.woocommerce-checkout #order_review > h3#order_review_heading {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    justify-content: flex-start;
}
body.jm-v2.woocommerce-checkout #order_review > h3#order_review_heading::before {
    content: "○";
    font-size: 16px;
    line-height: 1;
    color: var(--text-mid, #5A5A5A);
    font-weight: 400;
    margin-right: 2px;
}
body.jm-v2.woocommerce-checkout #order_review > h3#order_review_heading .fab-edit-link {
    margin-left: auto;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    font-weight: 500;
    color: var(--jm-yellow, #E76A5C);
    text-decoration: underline;
    text-underline-offset: 3px;
    letter-spacing: 0;
    text-transform: none;
}
body.jm-v2.woocommerce-checkout #order_review > h3#order_review_heading .fab-edit-link:hover {
    text-decoration: none;
}

/* Hide any remaining Shoptimizer coupon-wrapper relics in the after-form
   slot. Our PHP renders the always-visible coupon row inside #order_review. */
body.jm-v2.woocommerce-checkout .coupon-wrapper,
body.jm-v2.woocommerce-checkout .woocommerce-form-coupon-toggle {
    display: none !important;
}

/* Coupon row rendered by PHP via woocommerce_review_order_after_cart_contents
   — sits as a <tr> inside the review table tbody, after cart items. */
body.jm-v2.woocommerce-checkout #order_review .shop_table tr.fab-coupon-row {
    display: block !important;
    padding: 14px 0 !important;
    margin: 6px 0 !important;
    border-top: 1px dashed rgba(0, 0, 0, 0.12) !important;
    border-bottom: 1px dashed rgba(0, 0, 0, 0.12) !important;
    background: transparent !important;
}
body.jm-v2.woocommerce-checkout #order_review .shop_table tr.fab-coupon-row > td {
    display: block !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon {
    display: flex !important;
    flex-direction: row !important;
    align-items: stretch !important;
    flex-wrap: nowrap !important;
    gap: 10px !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon p {
    margin: 0 !important;
    padding: 0 !important;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon .form-row-first {
    flex: 1 1 0% !important;
    min-width: 0 !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon .form-row-last {
    flex: 0 0 auto !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon .clear {
    display: none !important;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon input[type="text"],
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon input.input-text {
    background: var(--cream, #FAF6EE) !important;
    border: 1px solid rgba(0, 0, 0, 0.1) !important;
    border-radius: 8px !important;
    height: 44px !important;
    line-height: 22px !important;
    padding: 11px 14px !important;
    font-size: 14px !important;
    width: 100% !important;
    box-sizing: border-box !important;
    color: var(--text, #2A2A2A) !important;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon input[type="text"]::placeholder {
    color: rgba(42, 42, 42, 0.4) !important;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon button[type="submit"] {
    background: #fff !important;
    border: 1.5px solid var(--text, #2A2A2A) !important;
    border-radius: 8px !important;
    height: 44px !important;
    padding: 0 22px !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 800 !important;
    font-size: 14px !important;
    color: var(--text, #2A2A2A) !important;
    cursor: pointer !important;
    box-shadow: none !important;
    transition: background 0.15s ease, color 0.15s ease;
    text-transform: none !important;
    letter-spacing: 0;
}
body.jm-v2.woocommerce-checkout #order_review form.checkout_coupon button[type="submit"]:hover {
    background: var(--text, #2A2A2A) !important;
    color: #fff !important;
}

/* Payment section row spacing + cream-style fields + coral focus ring.
   Mollie Components renders some fields as iframes (Kartennummer, CVC) where
   we cannot reach inside, but Name auf der Karte and similar are real native
   inputs that we CAN style. Tightens the vertical gaps so the section
   doesn't feel half-empty. */
body.jm-v2.woocommerce-checkout #payment .payment_box {
    padding: 14px 0 4px !important;
    margin: 8px 0 0 !important;
}
body.jm-v2.woocommerce-checkout #payment .payment_box p,
body.jm-v2.woocommerce-checkout #payment .payment_box .form-row {
    margin: 0 0 14px !important;
    padding: 0 !important;
}
body.jm-v2.woocommerce-checkout #payment .payment_box label,
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-component-label,
body.jm-v2.woocommerce-checkout #payment .payment_box [class*="label"] {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
    color: var(--text-mid, #5A5A5A) !important;
    margin: 0 0 6px !important;
    display: block !important;
    font-weight: 500 !important;
}
body.jm-v2.woocommerce-checkout #payment .payment_box input[type="text"],
body.jm-v2.woocommerce-checkout #payment .payment_box input[type="email"],
body.jm-v2.woocommerce-checkout #payment .payment_box input[type="tel"],
body.jm-v2.woocommerce-checkout #payment .payment_box input[type="number"],
body.jm-v2.woocommerce-checkout #payment .payment_box select,
body.jm-v2.woocommerce-checkout #payment .payment_box textarea {
    background: var(--cream, #FAF6EE) !important;
    border: 1px solid rgba(0, 0, 0, 0.1) !important;
    border-radius: 10px !important;
    height: 50px !important;
    line-height: 24px !important;
    padding: 13px 16px !important;
    font-size: 14px !important;
    width: 100% !important;
    box-sizing: border-box !important;
    color: var(--text, #2A2A2A) !important;
}
body.jm-v2.woocommerce-checkout #payment .payment_box input:focus,
body.jm-v2.woocommerce-checkout #payment .payment_box select:focus,
body.jm-v2.woocommerce-checkout #payment .payment_box textarea:focus {
    outline: none !important;
    border-color: var(--jm-yellow, #E76A5C) !important;
    box-shadow: 0 0 0 3px rgba(231, 106, 92, 0.15) !important;
}
/* Mollie Components iframe wrappers — full match to customer_details inputs.
   Cream BG is safe because Mollie's iframe is launched with all `styles` set
   to null (see live HTML on Karte fields), so the iframe content background
   is transparent and inherits this cream — no nested-box doubling. */
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-component,
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-components-controller-card {
    background: var(--cream, #FAF6EE) !important;
    border: 1px solid rgba(0, 0, 0, 0.1) !important;
    border-radius: 10px !important;
    height: 50px !important;
    min-height: 50px !important;
    padding: 13px 16px !important;
    box-sizing: border-box !important;
    overflow: hidden;
    display: flex !important;
    align-items: center !important;
}
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-component iframe,
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-components-controller-card iframe {
    background: transparent !important;
    width: 100% !important;
    height: 24px !important;
    vertical-align: middle !important;
}
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-component.is-focused,
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-components-controller-card.is-focused {
    border-color: var(--jm-yellow, #E76A5C) !important;
    box-shadow: 0 0 0 3px rgba(231, 106, 92, 0.15) !important;
}
/* Tighten the gap between fields so the section doesn't feel half-empty. */
body.jm-v2.woocommerce-checkout #payment .payment_box .form-row,
body.jm-v2.woocommerce-checkout #payment .payment_box p {
    margin: 0 0 16px !important;
}
/* Mollie footer badge — small + muted */
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-secured-by,
body.jm-v2.woocommerce-checkout #payment .payment_box .mollie-components-secured-by {
    font-size: 11px !important;
    color: var(--text-muted, #888) !important;
    margin-top: 8px !important;
}

/* Mobile: hide tape on small screens (cards lose their card chrome anyway) */
@media (max-width: 991px) {
    body.jm-v2.woocommerce-checkout #customer_details::before,
    body.jm-v2.woocommerce-checkout #order_review::before,
    body.jm-v2.woocommerce-checkout #fab-payment-relocated::before {
        display: none !important;
    }
}

/* Delivery-estimate pill inside #order_review — keep the date range on one
   line and let the label wrap to the next line when the column is narrow. */
body.jm-v2.woocommerce-checkout #order_review .fabricly-delivery-estimate,
body.jm-v2.woocommerce-checkout #fab-payment-relocated .fabricly-delivery-estimate {
    flex-wrap: wrap;
    row-gap: 2px;
    line-height: 1.35;
    padding: 12px 14px;
}
body.jm-v2.woocommerce-checkout #order_review .fabricly-delivery-estimate strong,
body.jm-v2.woocommerce-checkout #fab-payment-relocated .fabricly-delivery-estimate strong {
    white-space: nowrap;
}

/* ============================================================
   v2 checkout — unified checkbox styling
   Targets: newsletter opt-in, "Ein Konto erstellen?", marketing
   channel checkboxes, and any payment-side checkboxes (Klarna,
   Mollie consent, etc). Overrides default browser appearance and
   any plugin styles so all boxes look the same.
   ============================================================ */
body.jm-v2.woocommerce-checkout form.checkout input[type="checkbox"],
body.jm-v2.woocommerce-checkout #customer_details input[type="checkbox"],
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="checkbox"] {
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    width: 18px !important;
    height: 18px !important;
    min-width: 18px !important;
    margin: 0 10px 0 0 !important;
    padding: 0 !important;
    border: 1.5px solid rgba(0, 0, 0, 0.45) !important;
    border-radius: 4px !important;
    background: #fff !important;
    cursor: pointer !important;
    position: relative !important;
    flex-shrink: 0 !important;
    vertical-align: -3px !important;
    box-shadow: none !important;
    transition: background 0.12s ease, border-color 0.12s ease;
}
body.jm-v2.woocommerce-checkout form.checkout input[type="checkbox"]:hover,
body.jm-v2.woocommerce-checkout #customer_details input[type="checkbox"]:hover,
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="checkbox"]:hover {
    border-color: var(--jm-yellow, #E76A5C) !important;
}
body.jm-v2.woocommerce-checkout form.checkout input[type="checkbox"]:checked,
body.jm-v2.woocommerce-checkout #customer_details input[type="checkbox"]:checked,
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="checkbox"]:checked {
    background: var(--jm-yellow, #E76A5C) !important;
    border-color: var(--jm-yellow, #E76A5C) !important;
}
body.jm-v2.woocommerce-checkout form.checkout input[type="checkbox"]:checked::after,
body.jm-v2.woocommerce-checkout #customer_details input[type="checkbox"]:checked::after,
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="checkbox"]:checked::after {
    content: "" !important;
    position: absolute !important;
    left: 5px !important;
    top: 1px !important;
    width: 5px !important;
    height: 10px !important;
    border: solid #fff !important;
    border-width: 0 2px 2px 0 !important;
    transform: rotate(45deg) !important;
    background: transparent !important;
}
body.jm-v2.woocommerce-checkout form.checkout input[type="checkbox"]:focus,
body.jm-v2.woocommerce-checkout #customer_details input[type="checkbox"]:focus,
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="checkbox"]:focus {
    outline: none !important;
    box-shadow: 0 0 0 3px rgba(231, 106, 92, 0.18) !important;
}

/* Checkbox labels — single unified rule. ANY <label> that wraps an
   input[type="checkbox"] inside the form gets the same compact mono-uppercase
   look as our native form-row labels. This kills the giant sentence-case
   "Email" / "Ein Konto erstellen?" labels and makes them match "Newsletter
   abonnieren" exactly. */
body.jm-v2.woocommerce-checkout form.checkout label:has(> input[type="checkbox"]),
body.jm-v2.woocommerce-checkout form.checkout label.checkbox,
body.jm-v2.woocommerce-checkout form.checkout label.woocommerce-form__label-checkbox,
body.jm-v2.woocommerce-checkout form.checkout .form-row.create-account > label,
body.jm-v2.woocommerce-checkout form.checkout fieldset li label,
body.jm-v2.woocommerce-checkout form.checkout fieldset ul label {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
    color: var(--text-mid, #5A5A5A) !important;
    line-height: 1.4 !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 0 !important;
    cursor: pointer !important;
    margin: 0 !important;
    padding: 0 !important;
    white-space: normal;
}

/* Newsletter / marketing-prefs group helper text ("Bitte wähle, wie du von
   uns hören möchtest") — make it look like a quiet helper, not a heading. */
body.jm-v2.woocommerce-checkout form.checkout .form-row > p:not(.form-row),
body.jm-v2.woocommerce-checkout form.checkout .form-row > legend,
body.jm-v2.woocommerce-checkout form.checkout fieldset > legend,
body.jm-v2.woocommerce-checkout form.checkout .marketing-permissions p:first-child {
    font-family: 'Nunito', sans-serif !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    color: var(--text-muted, #888) !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    line-height: 1.4 !important;
    margin: 4px 0 8px !important;
    padding: 0 !important;
}

/* Stack checkbox rows with consistent spacing + flush-left alignment */
body.jm-v2.woocommerce-checkout form.checkout label:has(> input[type="checkbox"]),
body.jm-v2.woocommerce-checkout form.checkout label.woocommerce-form__label-checkbox,
body.jm-v2.woocommerce-checkout form.checkout fieldset li label {
    margin: 0 0 8px 0 !important;
}

/* Marketing channel sub-list (Email / SMS / Post under the legend) — flush
   left, no bullets, single-column stack matching the other checkbox rows. */
body.jm-v2.woocommerce-checkout form.checkout .form-row ul,
body.jm-v2.woocommerce-checkout form.checkout fieldset ul,
body.jm-v2.woocommerce-checkout form.checkout .marketing-permissions ul {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
body.jm-v2.woocommerce-checkout form.checkout .form-row ul li,
body.jm-v2.woocommerce-checkout form.checkout fieldset ul li,
body.jm-v2.woocommerce-checkout form.checkout .marketing-permissions ul li {
    list-style: none !important;
    margin: 0 0 6px 0 !important;
    padding: 0 !important;
    background: none !important;
}

/* Hide the nested span/text wrapper from default WC checkbox markup so it
   doesn't double-render. */
body.jm-v2.woocommerce-checkout form.checkout label:has(> input[type="checkbox"]) > span {
    font-family: inherit !important;
    font-size: inherit !important;
    color: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
}

/* ============================================================
   v2 checkout — payment column matches rechnungsdata feel
   ============================================================ */

/* Payment heading "Zahlung" — same numbered-chip vibe as customer_details */
body.jm-v2.woocommerce-checkout #fab-payment-relocated > h3,
body.jm-v2.woocommerce-checkout #payment > h3 {
    font-family: 'Nunito', sans-serif !important;
    font-weight: 900 !important;
    font-size: 18px !important;
    color: var(--text, #2A2A2A) !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    margin: 0 0 18px !important;
    display: flex;
    align-items: center;
    gap: 8px;
}
body.jm-v2.woocommerce-checkout #fab-payment-relocated > h3::before,
body.jm-v2.woocommerce-checkout #payment > h3::before {
    content: "○";
    font-size: 16px;
    line-height: 1;
    color: var(--text-mid, #5A5A5A);
    font-weight: 400;
    margin-right: 2px;
}

/* Any text/email/tel inputs that show up inside payment_box (e.g. Klarna fields,
   custom gateway fields) — match the cream input style from customer_details. */
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="text"],
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="email"],
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="tel"],
body.jm-v2.woocommerce-checkout #fab-payment-relocated input[type="number"],
body.jm-v2.woocommerce-checkout #fab-payment-relocated select {
    background: var(--cream, #FAF6EE) !important;
    border: 1px solid rgba(0, 0, 0, 0.1) !important;
    border-radius: 10px !important;
    height: 50px !important;
    line-height: 24px !important;
    padding: 13px 16px !important;
    font-size: 14px !important;
    color: var(--text, #2A2A2A) !important;
    box-sizing: border-box !important;
}
body.jm-v2.woocommerce-checkout #fab-payment-relocated input::placeholder {
    color: rgba(42, 42, 42, 0.4) !important;
}
body.jm-v2.woocommerce-checkout #fab-payment-relocated input:focus,
body.jm-v2.woocommerce-checkout #fab-payment-relocated select:focus {
    border-color: var(--jm-yellow, #E76A5C) !important;
    box-shadow: 0 0 0 3px rgba(231, 106, 92, 0.15) !important;
    outline: none !important;
}

/* Payment-box labels (above iframe-wrapped inputs like Mollie) — same uppercase
   monospace mini-label feel as customer_details form-row labels. */
body.jm-v2.woocommerce-checkout #payment .payment_box label:not(.checkbox):not(.woocommerce-form__label-checkbox),
body.jm-v2.woocommerce-checkout #fab-payment-relocated .payment_box label:not(.checkbox):not(.woocommerce-form__label-checkbox) {
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 11px !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
    color: var(--text-mid, #5A5A5A) !important;
    margin-bottom: 6px !important;
    display: block !important;
}

/* ─── Free-shipping celebration pill on /kasse/ (achieved-state only) ─────
   Renders below the shipping methods row when subtotal >= 89 EUR.
   Borrows phrasing from cart drawer: "✓ Gratis-Versand freigeschaltet"
   (cart) → "Kostenloser Versand freigeschaltet" (here, formal long-form).
   Single teal pill, low height, no progress bar (cart already does that). */
body.jm-v2.woocommerce-checkout #order_review tr.fab-free-ship-celebrate td {
    padding: 6px 0 12px;
    border: none !important;
    background: transparent;
    text-align: left;
}
body.jm-v2.woocommerce-checkout #order_review .fab-free-ship-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px 5px 8px;
    border-radius: 999px;
    background: rgba(47, 111, 110, 0.10);  /* --jm-pink at ~10% */
    color: var(--jm-pink, #2F6F6E);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.01em;
    line-height: 1.3;
    white-space: nowrap;
}
body.jm-v2.woocommerce-checkout #order_review .fab-free-ship-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--jm-pink, #2F6F6E);
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    line-height: 1;
}

/* ============================================================
   CART PAGE (/warenkorb/) — minimal Pass 2.
   Don't touch the WC cart table layout (Shoptimizer's columns work fine).
   Just style the stepper pill + de-squeeze the cross-sell grid.
   ============================================================ */

/* Cart-page length stepper (same pill as the mini-cart drawer). */
body.jm-v2.woocommerce-cart .fabricly-cart-stepper {
    display: inline-flex !important;
    align-items: center !important;
    gap: 0 !important;
    margin: 0 !important;
    padding: 2px 4px !important;
    background: var(--cream, #FBF6EE) !important;
    border: 1px solid rgba(0, 0, 0, 0.08) !important;
    border-radius: 999px !important;
}
body.jm-v2.woocommerce-cart .fabricly-cart-stepper .fabricly-mc-stepper__btn {
    width: 24px !important;
    height: 24px !important;
    border-radius: 50% !important;
    border: none !important;
    background: transparent !important;
    color: var(--text-mid, #5A5A5A) !important;
    font-weight: 700 !important;
    font-size: 15px !important;
    line-height: 1 !important;
    padding: 0 !important;
    cursor: pointer !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    transition: background 150ms ease, color 150ms ease !important;
}
body.jm-v2.woocommerce-cart .fabricly-cart-stepper .fabricly-mc-stepper__btn:hover {
    background: var(--jm-yellow, #E76A5C) !important;
    color: #fff !important;
}
body.jm-v2.woocommerce-cart .fabricly-cart-stepper .fabricly-mc-stepper__val {
    min-width: 36px !important;
    text-align: center !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 800 !important;
    font-size: 12px !important;
    color: var(--text, #2A2A2A) !important;
    padding: 0 2px !important;
}

/* Cross-sell grid — let cards breathe (don't force columns-4). */
body.jm-v2.woocommerce-cart ul.products.fabricly-cart-xsell__grid {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)) !important;
    gap: 18px !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}
body.jm-v2.woocommerce-cart ul.products.fabricly-cart-xsell__grid > li {
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    float: none !important;
    list-style: none !important;
}

/* ============================================================
   CART PAGE v2 (/warenkorb/) — Phase 1, ported from
   design_handoff_fabricly_v2/source/v2-system.css §CART DRAWER.
   Adapted from drawer (480px slide-in) to a centered full-page card.
   Markup is rendered by cart-v2.php; class names mirror the handoff 1:1
   so future iteration against the JSX is direct.
   Scope guard: every selector starts with body.jm-v2.woocommerce-cart
   so it cannot leak into checkout, PDP, or non-v2 visitors.
   ============================================================ */

/* Page frame — cream background, centered card stack. */
body.jm-v2.woocommerce-cart {
    background: var(--cream, #FAF7F2) !important;
}
body.jm-v2.woocommerce-cart #jm-cart-v2.fab-v2-cart-page {
    max-width: 1200px;
    margin: 0 auto;
    padding: 24px 24px 80px;
    position: relative;
}

body.jm-v2.woocommerce-cart .fab-v2-cart-page > .fab-checkout-back-link {
    display: inline-block;
    margin: 0 0 18px;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 13px;
    color: var(--text-mid, #555);
    text-decoration: none;
    letter-spacing: 0.02em;
}
body.jm-v2.woocommerce-cart .fab-v2-cart-page > .fab-checkout-back-link:hover {
    color: var(--jm-yellow, #C75B80);
}

/* Outer cart card — ported from .cart in v2-system.css. */
body.jm-v2.woocommerce-cart aside.cart {
    position: relative;
    background: #fff;
    border-radius: 14px;
    box-shadow: var(--shadow-1, 0 8px 40px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04));
    overflow: hidden;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.96), rgba(255, 255, 255, 0.96)),
        repeating-linear-gradient(0deg, transparent 0 27px, rgba(226, 114, 151, 0.06) 27px 28px);
    display: flex;
    flex-direction: column;
}

/* Header — eyebrow + count title. */
body.jm-v2.woocommerce-cart aside.cart > .cart__header {
    padding: 28px 32px 20px;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    border-bottom: 1px dashed var(--border, #E8E4DF);
}
body.jm-v2.woocommerce-cart aside.cart > .cart__header .cart__eyebrow {
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-size: 11px;
    color: var(--jm-yellow, #C75B80);
    margin: 0 0 4px;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__header .cart__title {
    font-family: 'Nunito', sans-serif;
    font-weight: 900;
    letter-spacing: -0.5px;
    font-size: 28px;
    line-height: 1.1;
    margin: 0;
    color: var(--text, #333);
}

/* Free-shipping strip. */
body.jm-v2.woocommerce-cart aside.cart > .cart__shipping {
    padding: 18px 32px;
    background: linear-gradient(90deg, rgba(226, 114, 151, 0.06), rgba(226, 138, 87, 0.06));
    border-bottom: 1px dashed var(--border, #E8E4DF);
}
body.jm-v2.woocommerce-cart aside.cart > .cart__shipping .cart__shipping-row {
    font-size: 13px;
    color: var(--text-mid, #555);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 8px;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__shipping .cart__shipping-row strong {
    color: var(--jm-yellow, #C75B80);
    font-weight: 800;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__shipping .cart__truck {
    color: var(--jm-pink-dark, #C75B80);
    display: inline-flex;
    align-items: center;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__shipping .cart__shipping-bar {
    height: 6px;
    border-radius: 3px;
    background: var(--cream-darker, #EDE7DF);
    position: relative;
    overflow: hidden;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__shipping .cart__shipping-fill {
    height: 100%;
    border-radius: 3px;
    background: linear-gradient(90deg, var(--jm-pink, #E27297), var(--jm-yellow, #C75B80));
    transition: width 400ms ease-out;
}

/* Items area. */
body.jm-v2.woocommerce-cart aside.cart > .cart__items {
    padding: 8px 32px;
}

/* Cart line — 4-col grid: Nº badge · 80px image · body · × remove. */
body.jm-v2.woocommerce-cart .cart-line {
    display: grid !important;
    grid-template-columns: 36px 80px 1fr 24px;
    gap: 14px;
    padding: 18px 0;
    border-bottom: 1px dashed var(--border, #E8E4DF);
    align-items: flex-start;
    background: transparent;
}
body.jm-v2.woocommerce-cart .cart-line:last-child {
    border-bottom: none;
}
body.jm-v2.woocommerce-cart .cart-line__num {
    font-family: 'JetBrains Mono', 'Courier New', monospace;
    font-size: 10px;
    color: var(--text-muted, #888);
    letter-spacing: 0.08em;
    padding-top: 4px;
}
body.jm-v2.woocommerce-cart .cart-line--uni .cart-line__num,
body.jm-v2.woocommerce-cart .cart-line--bundchen .cart-line__num {
    background: var(--jm-pink-light, #FAEDF2);
    color: var(--jm-pink-dark, #C75B80);
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    padding: 4px 6px;
    border-radius: 3px;
    height: fit-content;
    letter-spacing: 0.06em;
    text-align: center;
}
body.jm-v2.woocommerce-cart .cart-line__img {
    width: 80px;
    height: 80px;
    border-radius: 4px;
    overflow: hidden;
    background: var(--cream-dark, #F5F0EB);
    position: relative;
}
body.jm-v2.woocommerce-cart .cart-line__img a {
    display: block;
    width: 100%;
    height: 100%;
}
body.jm-v2.woocommerce-cart .cart-line__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
body.jm-v2.woocommerce-cart .cart-line__body {
    min-width: 0;
}
body.jm-v2.woocommerce-cart .cart-line__title {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 15px;
    line-height: 1.25;
    color: var(--text, #333);
}
body.jm-v2.woocommerce-cart .cart-line__title a {
    color: inherit;
    text-decoration: none;
}
body.jm-v2.woocommerce-cart .cart-line__title a:hover {
    color: var(--jm-yellow, #C75B80);
}
body.jm-v2.woocommerce-cart .cart-line__sub {
    font-size: 11px;
    color: var(--text-muted, #888);
    letter-spacing: 0.04em;
    margin: 2px 0 10px;
}
body.jm-v2.woocommerce-cart .cart-line__qty-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
}

/* Cart-line stepper — restyle the existing .fabricly-mc-stepper to match
   the handoff's .cart-line__qty-stepper (cream pill, monospace count). */
body.jm-v2.woocommerce-cart .cart-line__qty-stepper.fabricly-cart-stepper {
    display: inline-flex !important;
    align-items: center !important;
    gap: 0 !important;
    padding: 0 !important;
    background: var(--cream-dark, #F5F0EB) !important;
    border: 0 !important;
    border-radius: 999px !important;
    overflow: hidden !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 700 !important;
}
body.jm-v2.woocommerce-cart .cart-line__qty-stepper.fabricly-cart-stepper .fabricly-mc-stepper__btn {
    width: 26px !important;
    height: 26px !important;
    background: transparent !important;
    border: none !important;
    cursor: pointer !important;
    font-size: 14px !important;
    line-height: 1 !important;
    color: var(--text, #333) !important;
    padding: 0 !important;
    border-radius: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    transition: background 150ms ease, color 150ms ease !important;
}
body.jm-v2.woocommerce-cart .cart-line__qty-stepper.fabricly-cart-stepper .fabricly-mc-stepper__btn:hover {
    background: var(--jm-yellow, #C75B80) !important;
    color: #fff !important;
}
body.jm-v2.woocommerce-cart .cart-line__qty-stepper.fabricly-cart-stepper .fabricly-mc-stepper__val {
    padding: 0 10px !important;
    font-size: 12px !important;
    min-width: 60px !important;
    text-align: center !important;
    color: var(--text, #333) !important;
    font-family: 'Nunito', sans-serif !important;
    font-weight: 700 !important;
}

body.jm-v2.woocommerce-cart .cart-line__price-stack {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
}
body.jm-v2.woocommerce-cart .cart-line__price {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 15px;
    color: var(--jm-yellow, #C75B80);
    white-space: nowrap;
}
body.jm-v2.woocommerce-cart .cart-line__price .woocommerce-Price-amount {
    color: inherit;
}

/* M2 Task C — bundle discount price treatment on complement lines (uni/cuff). */
body.jm-v2.woocommerce-cart .cart-line__price--strike {
    font-size: 12px;
    font-weight: 600;
    color: var(--text-mid, #888);
    text-decoration: line-through;
    text-decoration-thickness: 1px;
    text-decoration-color: rgba(0, 0, 0, 0.35);
}
body.jm-v2.woocommerce-cart .cart-line__price-row {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
body.jm-v2.woocommerce-cart .cart-line__price--discounted {
    /* Same coral as the regular .cart-line__price — emphasis stays on the live price. */
    color: var(--jm-yellow, #C75B80);
}
body.jm-v2.woocommerce-cart .cart-line__discount-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    background: var(--mint-pale, #eef7ef);
    color: #1f6b3a;
    border: 1px solid var(--mint, #b9dcc1);
    border-radius: 999px;
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 10px;
    letter-spacing: 0.04em;
    white-space: nowrap;
    line-height: 1.4;
}
body.jm-v2.woocommerce-cart .cart-line__remove {
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--text-muted, #888);
    padding: 4px;
    text-decoration: none;
    display: inline-flex;
    align-items: flex-start;
    justify-content: center;
    line-height: 1;
}
body.jm-v2.woocommerce-cart .cart-line__remove:hover {
    color: var(--jm-yellow, #C75B80);
}

/* Camilla testimonial inside the cart card. */
body.jm-v2.woocommerce-cart aside.cart > .cart__camilla {
    position: relative;
    margin: 12px 24px 16px;
    padding: 18px 18px 16px;
    background: rgba(232, 248, 249, 0.5);
    border: 1px dashed var(--jm-pink, #E27297);
    border-radius: 6px;
    display: flex;
    gap: 14px;
    align-items: center;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__camilla .sb-tape {
    position: absolute;
    top: -10px;
    left: 30px;
    width: 64px;
    height: 18px;
    transform: rotate(-3deg);
    background: rgba(226, 138, 87, 0.45);
    pointer-events: none;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__camilla .cart__camilla-img {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__camilla .cart__camilla-text {
    flex: 1;
    min-width: 0;
}
body.jm-v2.woocommerce-cart aside.cart > .cart__camilla .sb-hand {
    font-family: 'Caveat', cursive;
    font-size: 19px;
    line-height: 1.35;
    margin: 0 0 4px;
    color: var(--text, #333);
}
body.jm-v2.woocommerce-cart aside.cart > .cart__camilla .cart__camilla-byline {
    font-size: 12px;
    color: var(--text-muted, #888);
    font-style: italic;
}

/* Footer: totals + CTA + tiny trust strip. */
body.jm-v2.woocommerce-cart aside.cart > .cart__footer {
    border-top: 2px solid var(--text, #333);
    padding: 22px 32px 26px;
    background: #fff;
}

/* M2 Task D — Coupon disclosure block. Collapsed by default; auto-expands
   when a WC notice is present (i.e. user just applied/failed a code). */
body.jm-v2.woocommerce-cart .cart__coupon {
    margin: 0 0 18px;
    padding-bottom: 16px;
    border-bottom: 1px dashed var(--border, #E8E4DF);
}
body.jm-v2.woocommerce-cart .cart__coupon-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    list-style: none;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 13px;
    color: var(--text-mid, #555);
    user-select: none;
    transition: color 150ms ease;
}
body.jm-v2.woocommerce-cart .cart__coupon-toggle::-webkit-details-marker { display: none; }
body.jm-v2.woocommerce-cart .cart__coupon-toggle:hover { color: var(--jm-yellow, #C75B80); }
body.jm-v2.woocommerce-cart .cart__coupon-chevron {
    transition: transform 200ms ease;
}
body.jm-v2.woocommerce-cart .cart__coupon[open] .cart__coupon-chevron {
    transform: rotate(180deg);
}
body.jm-v2.woocommerce-cart .cart__coupon-form {
    display: flex;
    gap: 8px;
    margin-top: 12px;
    align-items: stretch;
}
body.jm-v2.woocommerce-cart .cart__coupon-input {
    flex: 1;
    min-width: 0;
    padding: 10px 14px;
    background: var(--cream-dark, #F5F0EB);
    border: 1px solid transparent;
    border-radius: 999px;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text, #333);
    transition: border-color 150ms ease, background 150ms ease;
}
body.jm-v2.woocommerce-cart .cart__coupon-input::placeholder {
    color: var(--text-muted, #999);
    text-transform: none;
    letter-spacing: 0.02em;
    font-weight: 600;
}
body.jm-v2.woocommerce-cart .cart__coupon-input:focus {
    outline: none;
    background: #fff;
    border-color: var(--jm-yellow, #C75B80);
}
body.jm-v2.woocommerce-cart .cart__coupon-btn {
    background: var(--jm-yellow, #C75B80);
    color: #fff;
    border: none;
    padding: 0 18px;
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 0.02em;
    border-radius: 999px;
    cursor: pointer;
    line-height: 1;
    transition: background 150ms ease, transform 150ms ease;
    white-space: nowrap;
}
body.jm-v2.woocommerce-cart .cart__coupon-btn:hover {
    background: #e86c63;
    transform: translateY(-1px);
}

/* WC notices inside the coupon block — override default WC list styling
   so success/error look native to the cart card. */
body.jm-v2.woocommerce-cart .cart__coupon-notices {
    margin-top: 12px;
}
body.jm-v2.woocommerce-cart .cart__coupon-notices .woocommerce-message,
body.jm-v2.woocommerce-cart .cart__coupon-notices .woocommerce-error,
body.jm-v2.woocommerce-cart .cart__coupon-notices .woocommerce-info {
    list-style: none;
    margin: 0 0 8px;
    padding: 10px 14px;
    border-radius: 8px;
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.4;
    background: var(--cream, #FAF7F2);
    border-left: 3px solid var(--text-mid, #999);
    color: var(--text, #333);
}
body.jm-v2.woocommerce-cart .cart__coupon-notices .woocommerce-message {
    background: var(--mint-pale, #eef7ef);
    border-left-color: var(--mint, #b9dcc1);
    color: #1f6b3a;
}
body.jm-v2.woocommerce-cart .cart__coupon-notices .woocommerce-error {
    background: #fdeeec;
    border-left-color: var(--jm-yellow, #C75B80);
    color: #8a2820;
}
body.jm-v2.woocommerce-cart .cart__coupon-notices .woocommerce-message .button,
body.jm-v2.woocommerce-cart .cart__coupon-notices .woocommerce-error .button,
body.jm-v2.woocommerce-cart .cart__coupon-notices .woocommerce-info .button {
    /* Hide WC's default action buttons (e.g. "View cart") — we're already in the cart. */
    display: none;
}

body.jm-v2.woocommerce-cart .cart__totals {
    margin-bottom: 16px;
}
body.jm-v2.woocommerce-cart .cart__totals-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-size: 14px;
    padding: 4px 0;
    font-family: 'Nunito', sans-serif;
    font-weight: 600;
    color: var(--text, #333);
}
body.jm-v2.woocommerce-cart .cart__totals-row .woocommerce-Price-amount {
    color: inherit;
}
body.jm-v2.woocommerce-cart .cart__totals-row--muted {
    color: var(--text-muted, #888);
    font-size: 12px;
}
body.jm-v2.woocommerce-cart .cart__totals-row--save {
    color: #2E8B57;
}
body.jm-v2.woocommerce-cart .cart__totals-row--save .woocommerce-Price-amount {
    color: #2E8B57;
    font-weight: 700;
}
body.jm-v2.woocommerce-cart .cart__totals-row--total {
    font-size: 22px;
    font-weight: 900;
    padding-top: 10px;
    border-top: 1px dashed var(--border, #E8E4DF);
    margin-top: 6px;
}
body.jm-v2.woocommerce-cart .cart__totals-row--total span:last-child,
body.jm-v2.woocommerce-cart .cart__totals-row--total .woocommerce-Price-amount {
    color: var(--jm-yellow, #C75B80);
}

body.jm-v2.woocommerce-cart .cart__cta {
    width: 100%;
    justify-content: center;
    text-decoration: none;
    text-align: center;
}

body.jm-v2.woocommerce-cart .cart__trust {
    display: flex;
    justify-content: space-between;
    margin-top: 14px;
    font-size: 10px;
    color: var(--text-muted, #888);
    font-family: 'JetBrains Mono', 'Courier New', monospace;
    letter-spacing: 0.06em;
}

/* Mobile tweaks for the cart card. */
@media (max-width: 600px) {
    body.jm-v2.woocommerce-cart #jm-cart-v2.fab-v2-cart-page {
        padding: 16px 12px 60px;
    }
    body.jm-v2.woocommerce-cart aside.cart > .cart__header {
        padding: 20px 20px 16px;
    }
    body.jm-v2.woocommerce-cart aside.cart > .cart__shipping {
        padding: 14px 20px;
    }
    body.jm-v2.woocommerce-cart aside.cart > .cart__items {
        padding: 4px 20px;
    }
    body.jm-v2.woocommerce-cart aside.cart > .cart__footer {
        padding: 18px 20px 22px;
    }
    body.jm-v2.woocommerce-cart aside.cart > .cart__camilla {
        margin: 10px 16px 14px;
    }
    body.jm-v2.woocommerce-cart .cart-line {
        grid-template-columns: 28px 64px 1fr 24px;
        gap: 10px;
    }
    body.jm-v2.woocommerce-cart .cart-line__img {
        width: 64px;
        height: 64px;
    }
    body.jm-v2.woocommerce-cart .cart-line__title {
        font-size: 14px;
    }
    body.jm-v2.woocommerce-cart .cart-line__qty-row {
        flex-wrap: wrap;
        row-gap: 8px;
    }
    body.jm-v2.woocommerce-cart aside.cart > .cart__header .cart__title {
        font-size: 22px;
    }
    body.jm-v2.woocommerce-cart .cart__totals-row--total {
        font-size: 20px;
    }
}

/* ════════════════════════════════════════════════════════════════════════════
   THANK-YOU v2 — Receipt Keepsake (handoff variant B, Phase 1)
   Scoped to body.jm-v2.woocommerce-order-received so we don't collide
   with anything Woo or Shoptimizer might bring on /kasse/order-received/.
   ════════════════════════════════════════════════════════════════════════════ */

body.jm-v2.woocommerce-order-received {
    background: var(--cream, #FAF7F2) !important;
}
body.jm-v2.woocommerce-order-received #fabricly-thankyou-v2.fab-v2-thankyou-page {
    max-width: 1240px;
    margin: 0 auto;
    padding: 24px 28px 80px;
    position: relative;
    font-family: 'Nunito', sans-serif;
    color: var(--text, #2A2A2A);
}

/* Header strip ─────────────────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .fab-v2-thankyou-page .oc__hdr {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 6px 0 18px;
    border-bottom: 1px dashed var(--border, #E8E4DF);
    margin-bottom: 32px;
}
/* (.oc__brand fjernet 2026-08-06 — Poppins-wordmark uden hjemmel i v2-stakken;
   markup'en røg samtidig ud af thankyou-v2.php.) */
body.jm-v2.woocommerce-order-received .oc__eyebrow {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted, #888);
}
body.jm-v2.woocommerce-order-received .oc__eyebrow--jm-yellow { color: var(--jm-yellow, #C75B80); }
body.jm-v2.woocommerce-order-received .oc__eyebrow--jm-pink  { color: var(--jm-pink-dark, #2E8E96); }

/* Two-column grid ─────────────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(280px, 1fr);
    gap: 28px;
    align-items: start;
    margin-bottom: 32px;
}
body.jm-v2.woocommerce-order-received .oc__l { min-width: 0; }
body.jm-v2.woocommerce-order-received .oc__r {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

/* Receipt card ─────────────────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc__receipt {
    position: relative;
    background:
        linear-gradient(rgba(255,255,255,0.98), rgba(255,255,255,0.98)),
        repeating-linear-gradient(0deg, transparent 0 27px, rgba(226,114,151,0.05) 27px 28px);
    border: 1px solid var(--border, #E8E4DF);
    border-radius: 14px;
    padding: 44px 44px 36px;
    box-shadow: 0 6px 22px rgba(0,0,0,0.06);
    overflow: visible;
}

/* Tape strips — inline so we don't depend on global .sb-tape rules */
body.jm-v2.woocommerce-order-received .oc__tape {
    position: absolute;
    top: -14px;
    left: 60px;
    width: 130px;
    height: 26px;
    transform: rotate(-3deg);
    z-index: 2;
    border-radius: 1px;
    background: rgba(226,138,87,0.55);
    box-shadow: 0 2px 4px rgba(0,0,0,0.06);
}
body.jm-v2.woocommerce-order-received .oc__tape--gold  { background: rgba(226,138,87,0.55); }
body.jm-v2.woocommerce-order-received .oc__tape--right {
    left: auto;
    right: 30px;
    transform: rotate(4deg);
    background: rgba(226, 138, 87,0.5);
    width: 100px;
    height: 22px;
}
body.jm-v2.woocommerce-order-received .oc__tape--jm-pink {
    left: auto;
    right: 30px;
    transform: rotate(-4deg);
    background: rgba(226,114,151,0.5);
    width: 90px;
    height: 22px;
}

/* Stamp ────────────────────────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc__stamp {
    position: absolute;
    top: 28px;
    right: 28px;
    width: 110px;
    height: 110px;
    border: 2px dashed var(--jm-yellow, #C75B80);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transform: rotate(-8deg);
    background: rgba(255,255,255,0.55);
    z-index: 1;
}
body.jm-v2.woocommerce-order-received .oc__stamp-inner { text-align: center; }
body.jm-v2.woocommerce-order-received .oc__stamp-word {
    font-family: 'Caveat', cursive;
    font-size: 26px;
    color: var(--jm-yellow, #C75B80);
    line-height: 1;
}
body.jm-v2.woocommerce-order-received .oc__stamp-date {
    font-family: 'Caveat', cursive;
    font-size: 15px;
    color: var(--text-muted, #888);
    margin-top: 4px;
}

/* Receipt heading ──────────────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc__receipt-h {
    max-width: calc(100% - 130px);
    margin-bottom: 28px;
}
body.jm-v2.woocommerce-order-received .oc__h1 {
    font-family: 'Poppins', sans-serif;
    font-size: 44px;
    line-height: 1.05;
    font-weight: 800;
    margin: 8px 0 16px;
    color: var(--text, #2A2A2A);
    letter-spacing: -0.01em;
}
body.jm-v2.woocommerce-order-received .oc__order-num {
    color: var(--jm-yellow, #C75B80);
    background: linear-gradient(180deg, transparent 65%, rgba(226,138,87,0.55) 65%, rgba(226,138,87,0.55) 92%, transparent 92%);
    padding: 0 4px;
}
body.jm-v2.woocommerce-order-received .oc__receipt-meta {
    font-size: 13.5px;
    line-height: 1.65;
    color: var(--text-mid, #555);
}
body.jm-v2.woocommerce-order-received .oc__receipt-meta strong { font-weight: 700; color: var(--text, #2A2A2A); }
body.jm-v2.woocommerce-order-received .oc__receipt-meta address { font-style: normal; display: inline; }

/* Rechnung-PDF download button — sits below the receipt meta block */
body.jm-v2.woocommerce-order-received .oc__pdf-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 14px;
    padding: 8px 14px;
    background: var(--cream-dark, #F5F0EB);
    color: var(--text, #2A2A2A);
    border: 1px solid var(--cream-dark, #F5F0EB);
    border-radius: 999px;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 12.5px;
    letter-spacing: 0.02em;
    text-decoration: none;
    transition: background 160ms ease, border-color 160ms ease, color 160ms ease;
}
body.jm-v2.woocommerce-order-received .oc__pdf-btn:hover,
body.jm-v2.woocommerce-order-received .oc__pdf-btn:focus-visible {
    background: var(--jm-yellow, #C75B80);
    border-color: var(--jm-yellow, #C75B80);
    color: #fff;
    text-decoration: none;
}
body.jm-v2.woocommerce-order-received .oc__pdf-btn svg { flex: none; }

/* Vertical timeline (with icons) ──────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc-tl--vertical {
    list-style: none;
    margin: 0 0 22px;
    padding: 24px 22px;
    background: var(--cream, #FAF7F2);
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    gap: 18px;
}
body.jm-v2.woocommerce-order-received .oc-tl__step {
    position: relative;
    display: grid;
    grid-template-columns: 38px 24px 1fr auto;
    align-items: center;
    column-gap: 14px;
    color: var(--text-muted, #888);
}
body.jm-v2.woocommerce-order-received .oc-tl__step:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 18px;
    top: 38px;
    width: 2px;
    height: calc(100% - 22px);
    background: var(--border, #E8E4DF);
}
body.jm-v2.woocommerce-order-received .oc-tl__step--done:not(:last-child)::after { background: var(--jm-pink, #E27297); }
body.jm-v2.woocommerce-order-received .oc-tl__dot {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--border, #E8E4DF);
    color: var(--text-muted, #888);
    font-family: 'Poppins', sans-serif;
    font-weight: 800;
    font-size: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}
body.jm-v2.woocommerce-order-received .oc-tl__step--done .oc-tl__dot {
    background: var(--jm-pink, #E27297);
    border-color: var(--jm-pink, #E27297);
    color: #fff;
}
body.jm-v2.woocommerce-order-received .oc-tl__step--current .oc-tl__dot {
    background: var(--jm-yellow, #C75B80);
    border-color: var(--jm-yellow, #C75B80);
    color: #fff;
    box-shadow: 0 0 0 6px rgba(226, 138, 87,0.18);
}
body.jm-v2.woocommerce-order-received .oc-tl__icon {
    color: var(--text-muted, #888);
    display: flex;
    align-items: center;
    justify-content: center;
}
body.jm-v2.woocommerce-order-received .oc-tl__step--done .oc-tl__icon,
body.jm-v2.woocommerce-order-received .oc-tl__step--current .oc-tl__icon { color: var(--text, #2A2A2A); }
body.jm-v2.woocommerce-order-received .oc-tl__step--done,
body.jm-v2.woocommerce-order-received .oc-tl__step--current { color: var(--text, #2A2A2A); }
body.jm-v2.woocommerce-order-received .oc-tl__label {
    font-size: 14.5px;
    font-weight: 700;
}
body.jm-v2.woocommerce-order-received .oc-tl__date {
    font-size: 12px;
    color: var(--text-muted, #888);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    white-space: nowrap;
}

/* Tracking pending block ─────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc-track {
    display: grid;
    grid-template-columns: 22px 1fr;
    column-gap: 14px;
    align-items: start;
    background: rgba(226, 138, 87,0.08);
    border: 1px dashed var(--jm-yellow, #C75B80);
    border-radius: 10px;
    padding: 16px 20px;
    margin-bottom: 26px;
}
body.jm-v2.woocommerce-order-received .oc-track__icon {
    color: var(--jm-yellow, #C75B80);
    margin-top: 2px;
}
body.jm-v2.woocommerce-order-received .oc-track__h {
    font-weight: 700;
    font-size: 14px;
    color: var(--text, #2A2A2A);
    margin-bottom: 4px;
}
body.jm-v2.woocommerce-order-received .oc-track__sub {
    font-size: 13px;
    color: var(--text-mid, #555);
    line-height: 1.55;
}
body.jm-v2.woocommerce-order-received .oc-track__sub a {
    color: var(--jm-yellow, #C75B80);
    text-decoration: underline;
}

/* Order summary ────────────────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc-sum {
    border-top: 1px dashed var(--border, #E8E4DF);
    padding-top: 22px;
}
body.jm-v2.woocommerce-order-received .oc-sum__h {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    border-bottom: 1px dashed var(--border, #E8E4DF);
    padding-bottom: 16px;
    margin-bottom: 6px;
}
body.jm-v2.woocommerce-order-received .oc-sum__title {
    font-family: 'Poppins', sans-serif;
    font-size: 26px;
    font-weight: 800;
    margin: 4px 0 0;
    letter-spacing: -0.01em;
}
body.jm-v2.woocommerce-order-received .oc-sum__items {
    display: flex;
    flex-direction: column;
}
body.jm-v2.woocommerce-order-received .oc-sum__row {
    display: grid;
    grid-template-columns: 56px 1fr auto;
    column-gap: 16px;
    align-items: center;
    padding: 16px 0;
    border-bottom: 1px dashed var(--border, #E8E4DF);
}
body.jm-v2.woocommerce-order-received .oc-sum__row:last-child { border-bottom: 0; }
body.jm-v2.woocommerce-order-received .oc-sum__thumb {
    width: 56px;
    height: 56px;
    border-radius: 8px;
    overflow: hidden;
    background: #f1ece5;
}
body.jm-v2.woocommerce-order-received .oc-sum__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
body.jm-v2.woocommerce-order-received .oc-sum__name {
    font-weight: 700;
    font-size: 15px;
    color: var(--text, #2A2A2A);
}
body.jm-v2.woocommerce-order-received .oc-sum__sub {
    font-size: 12.5px;
    color: var(--text-muted, #888);
    margin-top: 4px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    letter-spacing: 0.01em;
}
body.jm-v2.woocommerce-order-received .oc-sum__sub .woocommerce-Price-amount { color: inherit; }
body.jm-v2.woocommerce-order-received .oc-sum__badge {
    display: inline-block;
    background: rgba(46,139,87,0.12);
    color: #2E8B57;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 4px;
    margin-left: 4px;
    font-family: 'Nunito', sans-serif;
}
body.jm-v2.woocommerce-order-received .oc-sum__price {
    text-align: right;
    font-weight: 700;
    font-size: 15px;
    color: var(--text, #2A2A2A);
    white-space: nowrap;
}
body.jm-v2.woocommerce-order-received .oc-sum__price .woocommerce-Price-amount { color: inherit; }
body.jm-v2.woocommerce-order-received .oc-sum__was {
    display: inline-block;
    color: var(--text-muted, #888);
    text-decoration: line-through;
    font-weight: 400;
    margin-right: 6px;
    font-size: 13px;
}
body.jm-v2.woocommerce-order-received .oc-sum__now--save .woocommerce-Price-amount,
body.jm-v2.woocommerce-order-received .oc-sum__now--save { color: #2E8B57; }
body.jm-v2.woocommerce-order-received .oc-sum__totals {
    margin-top: 14px;
}
body.jm-v2.woocommerce-order-received .oc-sum__line {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 7px 0;
    font-size: 14px;
    color: var(--text-mid, #555);
}
body.jm-v2.woocommerce-order-received .oc-sum__line--disc,
body.jm-v2.woocommerce-order-received .oc-sum__line--disc .woocommerce-Price-amount {
    color: var(--jm-pink-dark, #2E8E96);
    font-weight: 700;
}
body.jm-v2.woocommerce-order-received .oc-sum__free { color: #2E8B57; font-weight: 700; }
body.jm-v2.woocommerce-order-received .oc-sum__line--total {
    font-family: 'Poppins', sans-serif;
    font-size: 22px;
    font-weight: 900;
    color: var(--text, #2A2A2A);
    border-top: 2px solid var(--text, #2A2A2A);
    padding-top: 14px;
    margin-top: 8px;
}
body.jm-v2.woocommerce-order-received .oc-sum__line--total span:last-child,
body.jm-v2.woocommerce-order-received .oc-sum__line--total .woocommerce-Price-amount {
    color: var(--jm-yellow, #C75B80);
}

/* Right rail — Camilla card ──────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc__camilla,
body.jm-v2.woocommerce-order-received .oc__xs,
body.jm-v2.woocommerce-order-received .oc__acct {
    position: relative;
    background: #fff;
    border: 1px solid var(--border, #E8E4DF);
    border-radius: 14px;
    padding: 32px 30px 28px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.04);
    overflow: visible;
}
body.jm-v2.woocommerce-order-received .oc__camilla {
    text-align: center;
    padding-top: 36px;
}
body.jm-v2.woocommerce-order-received .oc__camilla-photo {
    width: 110px;
    height: 110px;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto 18px;
    background: #FCE9E0;
    box-shadow: 0 4px 14px rgba(0,0,0,0.08);
}
body.jm-v2.woocommerce-order-received .oc__camilla-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
body.jm-v2.woocommerce-order-received .oc__camilla-quote {
    font-family: 'Caveat', cursive;
    font-size: 22px;
    line-height: 1.4;
    color: var(--text, #2A2A2A);
    margin: 0 0 12px;
    text-align: left;
}
body.jm-v2.woocommerce-order-received .oc__camilla-num {
    color: var(--jm-yellow, #C75B80);
    font-weight: 700;
}
body.jm-v2.woocommerce-order-received .oc__camilla-sig {
    display: block;
    font-family: 'Caveat', cursive;
    font-size: 28px;
    color: var(--jm-yellow, #C75B80);
    text-align: left;
    margin: 4px 0 8px;
    letter-spacing: 1px;
    font-style: italic;
    transform: rotate(-2deg);
    transform-origin: left center;
}
body.jm-v2.woocommerce-order-received .oc__camilla-byline {
    text-align: left;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.06em;
    color: var(--text-muted, #888);
    border-top: 1px dashed var(--border, #E8E4DF);
    padding-top: 12px;
    margin-top: 8px;
}

/* Right rail — Cross-sell ────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc__xs-h {
    font-family: 'Poppins', sans-serif;
    font-size: 19px;
    font-weight: 800;
    margin: 8px 0 16px;
    line-height: 1.25;
    color: var(--text, #2A2A2A);
}
body.jm-v2.woocommerce-order-received .oc__xs-card {
    display: grid;
    grid-template-columns: 44px 1fr auto;
    column-gap: 12px;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px dashed var(--border, #E8E4DF);
}
body.jm-v2.woocommerce-order-received .oc__xs-card:last-child { border-bottom: 0; padding-bottom: 0; }
body.jm-v2.woocommerce-order-received .oc__xs-thumb {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    overflow: hidden;
    background: #f1ece5;
}
body.jm-v2.woocommerce-order-received .oc__xs-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
body.jm-v2.woocommerce-order-received .oc__xs-name {
    font-weight: 700;
    font-size: 13.5px;
    color: var(--text, #2A2A2A);
}
body.jm-v2.woocommerce-order-received .oc__xs-sub {
    font-size: 11.5px;
    color: var(--text-muted, #888);
    margin-top: 2px;
}
body.jm-v2.woocommerce-order-received .oc__xs-actions {
    text-align: right;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 4px;
}
body.jm-v2.woocommerce-order-received .oc__xs-price {
    font-weight: 700;
    font-size: 13px;
    color: var(--text, #2A2A2A);
    white-space: nowrap;
}
body.jm-v2.woocommerce-order-received .oc__xs-price .woocommerce-Price-amount { color: inherit; }
body.jm-v2.woocommerce-order-received .oc__xs-add {
    background: var(--jm-yellow, #C75B80);
    color: #fff !important;
    border: 0;
    border-radius: 6px;
    padding: 5px 10px;
    font-family: 'Nunito', sans-serif;
    font-size: 11.5px;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
body.jm-v2.woocommerce-order-received .oc__xs-add:hover {
    background: #E66B5C;
    color: #fff !important;
}

/* Right rail — Account create ────────────────────────────────────────── */
/* Account-create card — sits inside right rail (column 2 of receipt grid).
   Stacks single-column inside (eyebrow → headline → bullets → form → note). */
body.jm-v2.woocommerce-order-received .oc__acct {
    position: relative;
    padding: 30px 28px 26px;
    border-radius: 14px;
    background: #fff;
    border: 1px dashed var(--jm-pink, #E27297);
}
body.jm-v2.woocommerce-order-received .oc__acct-tape {
    position: absolute;
    top: -8px;
    left: 24px;
    transform: rotate(-3deg);
    width: 90px;
    height: 20px;
    background: rgba(240, 200, 175, 0.8);
    border-radius: 2px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.08);
}
body.jm-v2.woocommerce-order-received .oc__eyebrow--jm-pink {
    color: var(--jm-pink-dark, #C75B80);
    letter-spacing: 0.18em;
    font-weight: 600;
}
body.jm-v2.woocommerce-order-received .oc__acct-h {
    font-family: 'Poppins', sans-serif;
    font-size: 24px;
    font-weight: 800;
    margin: 8px 0 14px;
    line-height: 1.15;
    color: var(--text, #333E48);
    letter-spacing: -0.01em;
}
body.jm-v2.woocommerce-order-received .oc__acct-em {
    display: inline;
    color: var(--jm-pink-dark, #C75B80);
    font-weight: 700;
}
body.jm-v2.woocommerce-order-received .oc__acct-list {
    list-style: none;
    padding: 0;
    margin: 0 0 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
body.jm-v2.woocommerce-order-received .oc__acct-list li {
    font-size: 13.5px;
    color: #40525F;
    line-height: 1.45;
    padding-left: 22px;
    position: relative;
}
body.jm-v2.woocommerce-order-received .oc__acct-list li::before {
    content: '✓';
    position: absolute;
    left: 0;
    top: 0;
    color: var(--jm-pink, #E27297);
    font-weight: 700;
    font-size: 14px;
}
body.jm-v2.woocommerce-order-received .oc__acct-form {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin: 0 0 10px;
}
body.jm-v2.woocommerce-order-received .oc__acct-form input[type="password"] {
    padding: 13px 14px;
    border: 1.5px solid var(--border, #ECEAE6);
    border-radius: 9px;
    font-family: 'Nunito', sans-serif;
    font-size: 14px;
    background: #fff;
    color: var(--text, #333E48);
    width: 100%;
    box-sizing: border-box;
}
body.jm-v2.woocommerce-order-received .oc__acct-form input[type="password"]::placeholder {
    color: #8A97A2;
}
body.jm-v2.woocommerce-order-received .oc__acct-form input[type="password"]:focus {
    outline: 2px solid var(--jm-pink, #E27297);
    outline-offset: 1px;
    border-color: var(--jm-pink, #E27297);
}
body.jm-v2.woocommerce-order-received .oc__acct-btn {
    background: var(--jm-pink, #E27297);
    color: #fff;
    border: 0;
    border-radius: 9px;
    padding: 14px 18px;
    font-family: 'Nunito', sans-serif;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background-color 0.15s ease, transform 0.15s ease;
    box-shadow: 0 4px 10px rgba(226, 114, 151, 0.28);
}
body.jm-v2.woocommerce-order-received .oc__acct-btn:hover {
    background: #E66B5C;
    transform: translateY(-1px);
}
body.jm-v2.woocommerce-order-received .oc__acct-note {
    font-size: 12px;
    color: #5C6B68;
    line-height: 1.5;
    margin-top: 4px;
}
body.jm-v2.woocommerce-order-received .oc__acct-note strong {
    color: #1F2A28;
    font-weight: 700;
}

/* Help strip ──────────────────────────────────────────────────────────── */
body.jm-v2.woocommerce-order-received .oc-help {
    border-top: 1px dashed var(--border, #E8E4DF);
    padding-top: 22px;
    margin-top: 8px;
}
body.jm-v2.woocommerce-order-received .oc-help__row {
    font-size: 14px;
    line-height: 1.6;
    color: var(--text-mid, #555);
    margin-bottom: 12px;
}
body.jm-v2.woocommerce-order-received .oc-help__row strong {
    color: var(--text, #2A2A2A);
    margin-right: 6px;
}
body.jm-v2.woocommerce-order-received .oc-help__trust {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted, #888);
}

/* Mobile — stack right rail under receipt ───────────────────────────── */
@media (max-width: 920px) {
    body.jm-v2.woocommerce-order-received .oc__grid {
        grid-template-columns: 1fr;
    }
    body.jm-v2.woocommerce-order-received .oc__receipt { padding: 36px 28px 28px; }
    body.jm-v2.woocommerce-order-received .oc__h1 { font-size: 36px; }
    body.jm-v2.woocommerce-order-received .oc__stamp {
        width: 86px;
        height: 86px;
        top: 22px;
        right: 18px;
    }
    body.jm-v2.woocommerce-order-received .oc__stamp-word { font-size: 19px; }
    body.jm-v2.woocommerce-order-received .oc__stamp-date { font-size: 12px; }
    body.jm-v2.woocommerce-order-received .oc__receipt-h { max-width: calc(100% - 100px); }
}
@media (max-width: 600px) {
    body.jm-v2.woocommerce-order-received #fabricly-thankyou-v2.fab-v2-thankyou-page {
        padding: 18px 14px 60px;
    }
    body.jm-v2.woocommerce-order-received .oc__receipt { padding: 28px 20px 22px; }
    body.jm-v2.woocommerce-order-received .oc__h1 { font-size: 28px; margin: 8px 0 12px; }
    body.jm-v2.woocommerce-order-received .oc__receipt-h { max-width: 100%; }
    body.jm-v2.woocommerce-order-received .oc__stamp {
        position: static;
        margin: 0 auto 20px;
        transform: rotate(-4deg);
    }
    body.jm-v2.woocommerce-order-received .oc-tl--vertical { padding: 18px 14px; }
    body.jm-v2.woocommerce-order-received .oc-tl__step {
        grid-template-columns: 32px 20px 1fr;
        column-gap: 10px;
        row-gap: 2px;
    }
    body.jm-v2.woocommerce-order-received .oc-tl__date {
        grid-column: 3 / -1;
        font-size: 11px;
    }
    body.jm-v2.woocommerce-order-received .oc-tl__dot { width: 32px; height: 32px; font-size: 13px; }
    body.jm-v2.woocommerce-order-received .oc-sum__title { font-size: 22px; }
    body.jm-v2.woocommerce-order-received .oc-sum__line--total { font-size: 20px; }
    body.jm-v2.woocommerce-order-received .oc__camilla,
    body.jm-v2.woocommerce-order-received .oc__xs {
        padding: 26px 22px 22px;
    }
}

@media (max-width: 600px) {
    body.jm-v2.woocommerce-order-received .oc__acct {
        padding: 26px 22px 22px;
    }
    body.jm-v2.woocommerce-order-received .oc__acct-h { font-size: 22px; }
}

/* ── IG referral block · "Was machst du daraus?" ──────────────────────────── */
body.jm-v2.woocommerce-order-received .oc-insta {
    position: relative;
    margin: 56px 0 32px;
    padding: 56px 56px 48px;
    border-radius: 22px;
    background:
        radial-gradient(120% 90% at 90% 10%, rgba(255,255,255,0.18), transparent 55%),
        linear-gradient(135deg, #F08070 0%, #E8665A 50%, #D85248 100%);
    color: #FFFAF2;
    display: grid;
    grid-template-columns: 1.1fr 1fr;
    gap: 48px;
    align-items: center;
    box-shadow: 0 14px 36px rgba(216, 82, 72, 0.28);
    overflow: hidden;
}
body.jm-v2.woocommerce-order-received .oc-insta::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        radial-gradient(circle at 12% 88%, rgba(255,255,255,0.1) 0 1px, transparent 2px),
        radial-gradient(circle at 78% 22%, rgba(255,255,255,0.08) 0 1px, transparent 2px);
    background-size: 24px 24px, 36px 36px;
    pointer-events: none;
    opacity: 0.6;
}
body.jm-v2.woocommerce-order-received .oc-insta__tape {
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%) rotate(-2deg);
    width: 110px;
    height: 22px;
    z-index: 2;
}
body.jm-v2.woocommerce-order-received .oc-insta__l {
    position: relative;
    z-index: 1;
}
body.jm-v2.woocommerce-order-received .oc__eyebrow--white {
    color: rgba(255,250,242,0.85);
    letter-spacing: 0.18em;
}
body.jm-v2.woocommerce-order-received .oc-insta__h {
    font-family: var(--f-display, 'Fraunces', Georgia, serif);
    font-weight: 600;
    font-size: 46px;
    line-height: 1.05;
    letter-spacing: -0.01em;
    margin: 8px 0 16px;
    color: #FFFAF2;
}
body.jm-v2.woocommerce-order-received .oc-insta__p {
    font-size: 16px;
    line-height: 1.6;
    color: rgba(255,250,242,0.94);
    margin: 0 0 22px;
    max-width: 460px;
}
body.jm-v2.woocommerce-order-received .oc-insta__p strong {
    font-weight: 600;
    color: #FFFAF2;
}
body.jm-v2.woocommerce-order-received .oc-insta__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px 22px;
}
body.jm-v2.woocommerce-order-received .oc-insta__copy-btn {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    background: #FFFAF2;
    color: #B14638;
    border: 0;
    border-radius: 999px;
    padding: 13px 22px;
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.01em;
    cursor: pointer;
    box-shadow: 0 6px 14px rgba(0,0,0,0.12);
    transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}
body.jm-v2.woocommerce-order-received .oc-insta__copy-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(0,0,0,0.16);
}
body.jm-v2.woocommerce-order-received .oc-insta__copy-btn.is-copied {
    background: #FCEBDD;
    color: #7A4A20;
}
body.jm-v2.woocommerce-order-received .oc-insta__copy-btn svg {
    flex: 0 0 auto;
}
body.jm-v2.woocommerce-order-received .oc-insta__ig {
    color: rgba(255,250,242,0.95);
    font-size: 14px;
    font-weight: 500;
    text-decoration: underline;
    text-underline-offset: 3px;
}
body.jm-v2.woocommerce-order-received .oc-insta__ig:hover {
    color: #FFFAF2;
    text-decoration: none;
}
body.jm-v2.woocommerce-order-received .oc-insta__r {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    align-items: center;
    justify-items: center;
    padding: 12px 4px;
}
body.jm-v2.woocommerce-order-received .oc-insta__tile {
    background: #FFFAF2;
    border-radius: 4px;
    padding: 10px 10px 14px;
    width: 100%;
    max-width: 130px;
    box-shadow: 0 10px 22px rgba(0,0,0,0.18);
    transform: rotate(-4deg);
}
body.jm-v2.woocommerce-order-received .oc-insta__tile:nth-child(2) {
    transform: rotate(2deg) translateY(-12px);
}
body.jm-v2.woocommerce-order-received .oc-insta__tile:nth-child(3) {
    transform: rotate(-2deg) translateY(6px);
}
body.jm-v2.woocommerce-order-received .oc-insta__tile-photo {
    width: 100%;
    aspect-ratio: 1 / 1;
    border-radius: 2px;
    margin-bottom: 8px;
}
body.jm-v2.woocommerce-order-received .oc-insta__tile--purple .oc-insta__tile-photo {
    background:
        radial-gradient(circle at 30% 35%, rgba(255,255,255,0.45), transparent 55%),
        linear-gradient(135deg, #B698D6 0%, #8E6FB8 100%);
}
body.jm-v2.woocommerce-order-received .oc-insta__tile--jm-yellow .oc-insta__tile-photo {
    background:
        radial-gradient(circle at 70% 30%, rgba(255,255,255,0.45), transparent 55%),
        linear-gradient(135deg, #F4A38E 0%, #E27966 100%);
}
body.jm-v2.woocommerce-order-received .oc-insta__tile--jm-pink .oc-insta__tile-photo {
    background:
        radial-gradient(circle at 30% 70%, rgba(255,255,255,0.45), transparent 55%),
        linear-gradient(135deg, #7FB8B0 0%, #4F8F86 100%);
}
body.jm-v2.woocommerce-order-received .oc-insta__tile-handle {
    font-family: 'Caveat', 'Patrick Hand', cursive;
    font-size: 18px;
    color: #2A2520;
    text-align: center;
    line-height: 1;
}

@media (max-width: 920px) {
    body.jm-v2.woocommerce-order-received .oc-insta {
        grid-template-columns: 1fr;
        padding: 44px 32px 36px;
        gap: 32px;
    }
    body.jm-v2.woocommerce-order-received .oc-insta__h { font-size: 38px; }
    body.jm-v2.woocommerce-order-received .oc-insta__r { padding: 4px 0 8px; }
}
@media (max-width: 600px) {
    body.jm-v2.woocommerce-order-received .oc-insta {
        margin: 40px 0 24px;
        padding: 36px 22px 28px;
        border-radius: 18px;
    }
    body.jm-v2.woocommerce-order-received .oc-insta__h { font-size: 30px; }
    body.jm-v2.woocommerce-order-received .oc-insta__p { font-size: 15px; }
    body.jm-v2.woocommerce-order-received .oc-insta__copy-btn {
        width: 100%;
        justify-content: center;
    }
    body.jm-v2.woocommerce-order-received .oc-insta__r {
        gap: 8px;
    }
    body.jm-v2.woocommerce-order-received .oc-insta__tile { padding: 8px 8px 10px; }
    body.jm-v2.woocommerce-order-received .oc-insta__tile-handle { font-size: 15px; }
}


/* ═══════════════════════════════════════════════════════════════════════════
   AUTH v2 — Login + Register split-screen
   Source: design_handoff_fabricly_v2/source/auth.css + auth.jsx
   Scope:  body.fab-auth (set in functions.php body_class filter)
   Phase A — 2026-05-07
   ═══════════════════════════════════════════════════════════════════════════ */

body.fab-auth { background: var(--cream); }

/* Hide Shoptimizer's normal page chrome that doesn't fit the split-screen.
   The auth template hand-renders its own header + footer. */
body.fab-auth .site-header,
body.fab-auth #site-header,
body.fab-auth .header-fluid,
body.fab-auth .secondary-navigation,
body.fab-auth .pre-header-block,
body.fab-auth .topbar,
body.fab-auth .breadcrumb,
body.fab-auth .woocommerce-breadcrumb,
body.fab-auth .site-footer,
body.fab-auth .footer-widgets,
body.fab-auth #colophon { display: none !important; }

body.fab-auth #content,
body.fab-auth .site-content,
body.fab-auth #primary,
body.fab-auth .site-content > .container,
body.fab-auth .site-content > .container > .row,
body.fab-auth .col-full {
    padding: 0 !important;
    margin: 0 !important;
    max-width: none !important;
    width: 100% !important;
}

body.fab-auth #fabricly-auth-v2 { background: var(--cream); }

/* === Container === */
body.fab-auth .auth {
    --auth-cream: var(--cream);
    --auth-editorial: #F4ECD9;
    --auth-tape-coral: rgba(244, 169, 127, 0.5);
    --auth-tape-coral-border: rgba(226, 138, 87, 0.6);
    --auth-tape-gold: rgba(226, 138, 87, 0.4);

    font-family: 'Poppins', -apple-system, sans-serif;
    color: var(--text);
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background: var(--cream);
}

/* === Header === */
body.fab-auth .auth__hdr {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 48px;
    border-bottom: 1px dashed var(--border);
    background: var(--cream);
}
body.fab-auth .auth__hdr-logo { text-decoration: none; }
body.fab-auth .auth__hdr-meta { flex: 1; text-align: center; }
body.fab-auth .auth__hdr-back {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: var(--text-mid);
    text-decoration: none;
    cursor: pointer;
}
body.fab-auth .auth__hdr-back:hover { color: var(--jm-yellow); }

/* === Body grid === */
body.fab-auth .auth__body {
    flex: 1;
    display: grid;
    grid-template-columns: 1fr 1fr;
    min-height: 720px;
}

/* === LEFT — form column === */
body.fab-auth .auth__form-col {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 56px 48px;
    background: var(--cream);
}
body.fab-auth .auth__form-card {
    width: 100%;
    max-width: 440px;
}

body.fab-auth .auth__eyebrow {
    font-size: 11px;
    letter-spacing: 0.1em;
    color: var(--text-muted);
    margin-bottom: 12px;
}

body.fab-auth .auth__h1 {
    font-size: 40px;
    line-height: 1.1;
    letter-spacing: -0.02em;
    font-weight: 800;
    margin: 0 0 32px;
    color: var(--text);
}

/* === Toggle pill === */
body.fab-auth .auth__toggle {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 100px;
    padding: 4px;
    margin-bottom: 24px;
}
body.fab-auth .auth__toggle-btn {
    position: relative;
    z-index: 2;
    border: 0;
    background: transparent;
    padding: 12px;
    font: inherit;
    font-weight: 700;
    font-size: 14px;
    color: var(--text-muted);
    cursor: pointer;
    transition: color 200ms;
    border-radius: 100px;
    text-align: center;
    text-decoration: none;
}
body.fab-auth .auth__toggle-btn.is-active { color: #fff; }
body.fab-auth .auth__toggle-pill {
    position: absolute;
    top: 4px;
    bottom: 4px;
    left: 4px;
    width: calc(50% - 4px);
    background: var(--text);
    border-radius: 100px;
    z-index: 1;
    transition: transform 240ms cubic-bezier(0.4, 0, 0.2, 1);
}
body.fab-auth .auth__toggle-pill--right { transform: translateX(100%); }

/* === Social buttons === */
body.fab-auth .auth__social {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    margin-bottom: 20px;
}
body.fab-auth .auth__social-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: 8px;
    padding: 12px 16px;
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    cursor: pointer;
    text-decoration: none;
    transition: border-color 150ms, transform 100ms;
}
body.fab-auth .auth__social-btn:hover { border-color: var(--text); }
body.fab-auth .auth__social-btn:active { transform: translateY(1px); }

/* === Divider === */
body.fab-auth .auth__divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 20px 0;
}
body.fab-auth .auth__divider::before,
body.fab-auth .auth__divider::after {
    content: '';
    flex: 1;
    border-top: 1px dashed var(--border);
}
body.fab-auth .auth__divider span {
    font-size: 11px;
    letter-spacing: 0.08em;
    color: var(--text-muted);
    text-transform: uppercase;
}

/* === Form fields === */
body.fab-auth .auth__form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
body.fab-auth .auth__field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
body.fab-auth .auth__label {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--text);
    text-transform: uppercase;
}
body.fab-auth .auth__hint {
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: var(--text-muted);
    font-size: 11px;
    margin-left: 4px;
}
body.fab-auth .auth__field input {
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: 8px;
    padding: 14px 16px;
    font: inherit;
    font-size: 15px;
    color: var(--text);
    transition: border-color 150ms;
    width: 100%;
    box-sizing: border-box;
}
body.fab-auth .auth__field input::placeholder { color: var(--text-muted); }
body.fab-auth .auth__field input:focus {
    outline: none;
    border-color: var(--jm-yellow);
}

/* Password reveal toggle */
body.fab-auth .auth__pw { position: relative; }
body.fab-auth .auth__pw input { padding-right: 48px; }
body.fab-auth .auth__pw-toggle {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    background: transparent;
    border: 0;
    color: var(--text-muted);
    cursor: pointer;
    padding: 4px;
    display: flex;
    align-items: center;
}
body.fab-auth .auth__pw-toggle:hover { color: var(--text); }

/* Row meta (Angemeldet bleiben + Passwort vergessen) */
body.fab-auth .auth__row-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: -4px;
}

/* Checkbox base */
body.fab-auth .auth__check {
    display: inline-flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 13px;
    color: var(--text-mid);
    cursor: pointer;
    line-height: 1.5;
}
body.fab-auth .auth__check input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    border: 1.5px solid var(--border);
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    flex-shrink: 0;
    margin: 2px 0 0;
    position: relative;
    transition: all 150ms;
}
body.fab-auth .auth__check input[type="checkbox"]:checked {
    background: var(--text);
    border-color: var(--text);
}
body.fab-auth .auth__check input[type="checkbox"]:checked::after {
    content: '';
    position: absolute;
    top: 3px;
    left: 5px;
    width: 4px;
    height: 8px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

/* Newsletter checkbox — full-width card variant */
body.fab-auth .auth__check--block {
    display: flex;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 14px 16px;
}
body.fab-auth .auth__check-sub {
    display: block;
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 4px;
}
body.fab-auth .auth__check-sub a {
    color: var(--jm-yellow);
    text-decoration: underline;
}

/* Forgot password */
body.fab-auth .auth__forgot {
    font-size: 13px;
    color: var(--jm-yellow);
    text-decoration: none;
    cursor: pointer;
}
body.fab-auth .auth__forgot:hover { text-decoration: underline; }

/* Submit button — use design system primary, override padding */
body.fab-auth .auth__submit {
    margin-top: 8px;
    padding: 16px 24px;
    font-size: 15px;
    font-weight: 700;
    width: 100%;
    justify-content: center;
}

/* Legal disclaimer */
body.fab-auth .auth__legal {
    font-size: 11px;
    color: var(--text-muted);
    line-height: 1.5;
    margin: 0;
    text-align: center;
}
body.fab-auth .auth__legal a {
    color: var(--text-mid);
    text-decoration: underline;
}

/* Guest checkout footer */
body.fab-auth .auth__guest {
    margin-top: 32px;
    padding: 16px;
    background: rgba(255,255,255,0.5);
    border: 1px dashed var(--border);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 13px;
    color: var(--text-mid);
}
body.fab-auth .auth__guest a {
    color: var(--jm-yellow);
    font-weight: 700;
    text-decoration: none;
}
body.fab-auth .auth__guest a:hover { text-decoration: underline; }

/* === RIGHT — editorial Camilla welcome === */
body.fab-auth .auth__editorial {
    position: relative;
    background: #F4ECD9;
    padding: 64px;
    display: flex;
    align-items: center;
    overflow: hidden;
}

body.fab-auth .auth__ed-tape {
    position: absolute;
    width: 100px;
    height: 24px;
    background: var(--auth-tape-coral);
    z-index: 2;
    border: 1px dashed var(--auth-tape-coral-border);
}
body.fab-auth .auth__ed-tape--tl {
    top: 32px;
    left: -20px;
    transform: rotate(-18deg);
}
body.fab-auth .auth__ed-tape--br {
    bottom: 56px;
    right: -20px;
    transform: rotate(15deg);
}

body.fab-auth .auth__ed-content {
    position: relative;
    max-width: 480px;
    z-index: 1;
}

body.fab-auth .auth__ed-eyebrow {
    font-size: 11px;
    letter-spacing: 0.12em;
    color: var(--text-muted);
    margin-bottom: 18px;
    font-weight: 700;
}

body.fab-auth .auth__ed-h2 {
    font-size: 44px;
    line-height: 1.1;
    letter-spacing: -0.02em;
    font-weight: 800;
    margin: 0 0 24px;
    color: var(--text);
}

body.fab-auth .auth__ed-body {
    font-size: 16px;
    line-height: 1.6;
    color: var(--text-mid);
    margin: 0 0 16px;
    max-width: 420px;
}

/* Camilla signature */
body.fab-auth .auth__ed-sig {
    margin: 32px 0;
}
body.fab-auth .auth__ed-sig-name {
    font-family: 'Caveat', cursive;
    font-size: 32px;
    font-weight: 600;
    color: var(--jm-yellow);
    display: block;
    line-height: 1;
}
body.fab-auth .auth__ed-sig-role {
    font-size: 11px;
    color: var(--text-muted);
    font-style: italic;
    margin-top: 4px;
    display: block;
}

/* Polaroid */
body.fab-auth .auth__ed-polaroid {
    position: relative;
    background: #fff;
    padding: 16px 16px 12px;
    width: 220px;
    box-shadow: 0 6px 24px rgba(0,0,0,0.08), 0 1px 3px rgba(0,0,0,0.06);
    transform: rotate(-2.5deg);
    margin: 32px 0 24px;
    box-sizing: border-box;
}
body.fab-auth .auth__ed-tape--polaroid {
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%) rotate(2deg);
    width: 80px;
    height: 18px;
    background: var(--auth-tape-gold);
    border: 0;
}
body.fab-auth .auth__ed-polaroid-img {
    width: 188px;
    height: 188px;
    background: linear-gradient(135deg, #C8B4D6 0%, #E87F72 100%);
    display: flex;
    align-items: flex-end;
    padding: 12px;
    box-sizing: border-box;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.05em;
}
body.fab-auth .auth__ed-polaroid-img > span {
    background: rgba(0,0,0,0.4);
    padding: 4px 8px;
    border-radius: 2px;
}
body.fab-auth .auth__ed-polaroid-cap {
    margin-top: 12px;
    font-size: 12px;
    color: var(--text-mid);
    text-align: center;
    line-height: 1.4;
}
body.fab-auth .auth__ed-polaroid-cap em {
    font-family: 'Caveat', cursive;
    font-style: italic;
    font-size: 16px;
    color: var(--jm-yellow);
}

/* Trust strip */
body.fab-auth .auth__ed-trust {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-top: 24px;
    padding-top: 24px;
    border-top: 1px dashed var(--border);
}
body.fab-auth .auth__ed-trust-item {
    display: flex;
    flex-direction: column;
    text-align: center;
}
body.fab-auth .auth__ed-trust-item strong {
    font-size: 18px;
    font-weight: 800;
    color: var(--text);
    letter-spacing: -0.01em;
}
body.fab-auth .auth__ed-trust-item span {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 2px;
}

/* === Footer legal strip === */
body.fab-auth .auth__foot {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 48px;
    font-size: 11px;
    color: var(--text-muted);
    border-top: 1px dashed var(--border);
    background: var(--cream);
}
body.fab-auth .auth__foot-links {
    display: flex;
    gap: 8px;
}
body.fab-auth .auth__foot-links a {
    color: var(--text-mid);
    text-decoration: none;
}
body.fab-auth .auth__foot-links a:hover { color: var(--jm-yellow); }

/* === WC notice surfacing === */
body.fab-auth .auth__form-card .woocommerce-notices-wrapper { margin-bottom: 16px; }
body.fab-auth .auth__form-card .woocommerce-error,
body.fab-auth .auth__form-card .woocommerce-message,
body.fab-auth .auth__form-card .woocommerce-info {
    list-style: none;
    margin: 0 0 16px;
    padding: 12px 16px;
    border-radius: 8px;
    font-size: 13px;
    background: #FEF0EF;
    border: 1px solid var(--jm-yellow);
    color: var(--text);
}
body.fab-auth .auth__form-card .woocommerce-message { background: #FAEDF2; border-color: var(--jm-pink); }
body.fab-auth .auth__form-card .woocommerce-error li,
body.fab-auth .auth__form-card .woocommerce-message li { padding: 0; }

/* ─── Tablet (≤960px) ─── */
@media (max-width: 960px) {
    body.fab-auth .auth__body { grid-template-columns: 1fr; min-height: 0; }
    body.fab-auth .auth__editorial { padding: 48px 32px; }
    body.fab-auth .auth__ed-h2 { font-size: 32px; }
    body.fab-auth .auth__form-col { padding: 40px 24px; }
    body.fab-auth .auth__h1 { font-size: 32px; }
    body.fab-auth .auth__hdr { padding: 14px 24px; }
    body.fab-auth .auth__foot { padding: 16px 24px; flex-direction: column; gap: 8px; text-align: center; }
}

/* ─── Mobile (≤640px) — single col, form first, compact Camilla note ─── */
@media (max-width: 640px) {
    body.fab-auth .auth__hdr-meta { display: none; }
    body.fab-auth .auth__hdr { padding: 12px 16px; }
    body.fab-auth .auth__hdr-back span { display: none; }

    body.fab-auth .auth__form-col { padding: 24px 16px; }
    body.fab-auth .auth__h1 { font-size: 28px; margin-bottom: 24px; }

    body.fab-auth .auth__editorial { padding: 32px 20px; }
    body.fab-auth .auth__ed-h2 { font-size: 26px; }
    body.fab-auth .auth__ed-body { font-size: 15px; }
    body.fab-auth .auth__ed-polaroid { width: 180px; margin: 24px auto; }
    body.fab-auth .auth__ed-polaroid-img { width: 148px; height: 148px; }
    body.fab-auth .auth__ed-trust { gap: 8px; }
    body.fab-auth .auth__ed-trust-item strong { font-size: 16px; }

    body.fab-auth .auth__foot { padding: 12px 16px; font-size: 10px; }
}

/* ════════════════════════════════════════════════════════════════════════
   STOFF-SAMMLUNG (WISHLIST) — Phase B.1
   Pairs with mu-plugins/fabricly-wishlist.php + fabricly-assets/wishlist.js
   ════════════════════════════════════════════════════════════════════════ */

/* ─── Heart icon button (PLP / PDP / Card) ─────────────────────────────── */

.fab-heart {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    background: rgba(255, 255, 255, 0.92);
    color: var(--text, #2a2a2a);
    border: 1px solid var(--border, #e6dccb);
    border-radius: 50%;
    cursor: pointer;
    transition: transform 140ms ease, background 140ms ease, color 140ms ease, box-shadow 140ms ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
    -webkit-tap-highlight-color: transparent;
}
.fab-heart:hover {
    background: #fff;
    color: var(--jm-yellow, #e08470);
    transform: scale(1.06);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
}
.fab-heart:focus-visible {
    outline: 2px solid var(--jm-yellow, #e08470);
    outline-offset: 2px;
}
.fab-heart:active {
    transform: scale(0.94);
}
.fab-heart.is-active {
    color: var(--jm-yellow, #e08470);
}
.fab-heart.is-active .fab-heart__icon path {
    fill: currentColor;
    stroke: currentColor;
}
.fab-heart__icon {
    pointer-events: none;
    display: block;
}

/* Heart wrappers — position contexts on PLP/PDP */
.fab-heart-wrap--plp {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 4;
    pointer-events: none;
}
.fab-heart-wrap--plp .fab-heart { pointer-events: auto; }

/* The loop item wrapper needs position context */
ul.products li.product { position: relative; }

/* PDP — absolute against the gallery side */
.product .fab-heart-wrap--pdp {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 5;
}
@media (max-width: 768px) {
    .product .fab-heart-wrap--pdp {
        top: 10px;
        right: 10px;
    }
}

/* Heart on wish-card sits over the image — top-right (matches badge corner pairing
   and keeps the bottom edge free for the "low stock" stripe). */
.wish-card .fab-heart--card {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 3;
    width: 32px;
    height: 32px;
}

/* ─── Header badge ─────────────────────────────────────────────────────── */

.fab-wishlist-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    margin-left: 4px;
    font: 600 11px/1 var(--font-body, system-ui, sans-serif);
    color: #fff;
    background: var(--jm-yellow, #e08470);
    border-radius: 9px;
    vertical-align: middle;
}

/* ─── Toast ────────────────────────────────────────────────────────────── */

.fab-wl-toast {
    position: fixed;
    left: 50%;
    bottom: 24px;
    transform: translateX(-50%) translateY(20px);
    z-index: 9999;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 18px;
    background: var(--text, #2a2a2a);
    color: #fff;
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);
    font: 500 14px/1.4 var(--font-body, system-ui, sans-serif);
    opacity: 0;
    pointer-events: none;
    transition: opacity 200ms ease, transform 240ms ease;
    max-width: calc(100vw - 32px);
}
.fab-wl-toast.is-visible {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
    pointer-events: auto;
}
.fab-wl-toast__text { white-space: normal; }
.fab-wl-toast__action {
    color: #fff;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
    white-space: nowrap;
}
.fab-wl-toast__action:hover { color: var(--jm-yellow, #e08470); }

@media (max-width: 480px) {
    .fab-wl-toast {
        left: 12px;
        right: 12px;
        bottom: 12px;
        transform: translateY(20px);
        max-width: none;
    }
    .fab-wl-toast.is-visible { transform: translateY(0); }
}

/* ════════════════════════════════════════════════════════════════════════
   /my-account/stoff-sammlung/ — grid + states
   ════════════════════════════════════════════════════════════════════════ */

/* ─── Empty state ──────────────────────────────────────────────────────── */

.wish-empty {
    padding: 48px 24px;
    text-align: center;
}
.wish-empty__inner {
    max-width: 520px;
    margin: 0 auto;
}
.wish-empty__eyebrow {
    font: 600 11px/1 var(--font-body);
    letter-spacing: 0.15em;
    color: var(--text-mid, #6a6a6a);
    margin-bottom: 16px;
}
.wish-empty__h2 {
    font-size: 32px;
    line-height: 1.15;
    margin: 0 0 16px;
    color: var(--text, #2a2a2a);
}
.wish-empty__body {
    font-size: 15px;
    line-height: 1.55;
    color: var(--text, #2a2a2a);
    margin: 0 0 28px;
}

/* ─── Section header ───────────────────────────────────────────────────── */

.wish-section { padding: 8px 0 32px; }
.wish-section__head { margin-bottom: 28px; }
.wish-section__eyebrow {
    font: 600 11px/1 var(--font-body);
    letter-spacing: 0.15em;
    color: var(--text-mid, #6a6a6a);
    margin-bottom: 10px;
}
.wish-section__h1 {
    font-size: 36px;
    line-height: 1.1;
    margin: 0 0 8px;
    color: var(--text, #2a2a2a);
}
.wish-section__count {
    color: var(--text-mid, #6a6a6a);
    font-weight: 400;
}
.wish-section__sub {
    font-size: 14px;
    color: var(--text-mid, #6a6a6a);
    margin: 0;
}
.wish-section__settings-link {
    color: var(--jm-yellow, #e08470);
    text-decoration: underline;
    text-underline-offset: 3px;
    margin-left: 6px;
}

/* ─── Grid ─────────────────────────────────────────────────────────────── */

.wish-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 24px;
}
@media (max-width: 1100px) {
    .wish-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
    .wish-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
}
@media (max-width: 460px) {
    .wish-grid { grid-template-columns: 1fr; }
}

/* ─── Card ─────────────────────────────────────────────────────────────── */

.wish-card {
    position: relative;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--border, #e6dccb);
    border-radius: 10px;
    overflow: hidden;
    transition: transform 200ms ease, box-shadow 200ms ease, opacity 240ms ease;
}
.wish-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06);
}
.wish-card.is-removing {
    opacity: 0;
    transform: scale(0.96);
}

.wish-card__media {
    position: relative;
    display: block;
    aspect-ratio: 1 / 1;
    background: var(--cream, #f7f1e6);
    overflow: hidden;
}
.wish-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 400ms ease;
}
.wish-card:hover .wish-card__media img { transform: scale(1.03); }

.wish-card__body {
    padding: 14px 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.wish-card__sku {
    font: 600 10px/1 var(--font-body);
    letter-spacing: 0.12em;
    color: var(--text-mid, #6a6a6a);
}
.wish-card__title {
    font-size: 15px;
    line-height: 1.3;
    margin: 0;
    color: var(--text, #2a2a2a);
}
.wish-card__title a {
    color: inherit;
    text-decoration: none;
}
.wish-card__title a:hover { color: var(--jm-yellow, #e08470); }
.wish-card__price {
    font-size: 14px;
    color: var(--text, #2a2a2a);
    margin-bottom: 8px;
}
.wish-card__price del { color: var(--text-mid, #6a6a6a); margin-right: 6px; }
.wish-card__price ins { text-decoration: none; color: var(--jm-yellow, #e08470); font-weight: 600; }

/* ─── Card CTAs ────────────────────────────────────────────────────────── */

.wish-card__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 38px;
    padding: 0 14px;
    border-radius: 6px;
    font: 600 13px/1 var(--font-body);
    text-decoration: none;
    transition: background 140ms ease, color 140ms ease, border-color 140ms ease;
    margin-top: 4px;
}
.wish-card__cta--primary {
    background: var(--text, #2a2a2a);
    color: #fff;
}
.wish-card__cta--primary:hover { background: var(--jm-yellow, #e08470); color: #fff; }

.wish-card__cta--jm-yellow {
    background: var(--jm-yellow, #e08470);
    color: #fff;
}
.wish-card__cta--jm-yellow:hover { background: var(--jm-yellow-dark, #c95849); color: #fff; }

.wish-card__cta--ghost {
    background: #fff;
    color: var(--text, #2a2a2a);
    border: 1px solid var(--border, #e6dccb);
}
.wish-card__cta--ghost:hover { border-color: var(--text, #2a2a2a); }

/* ─── State variants — badge / stripe / overlay ────────────────────────── */

.wish-card__badge {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 2;
    background: var(--jm-yellow, #e08470);
    color: #fff;
    font: 700 12px/1 var(--font-body);
    padding: 6px 10px;
    border-radius: 4px;
    letter-spacing: 0.04em;
}

.wish-card__stripe {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 2;
    background: var(--jm-yellow, #e08470);
    color: #fff;
    font: 600 12px/1 var(--font-body);
    padding: 8px 10px;
    text-align: center;
    letter-spacing: 0.03em;
}

/* Out-of-stock overlay — only covers the bottom band so the fabric print stays
   recognisable. Soft gradient fade into a cream pill that holds the label. */
.wish-card__overlay {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    background: linear-gradient(
        to top,
        rgba(247, 241, 230, 0.96) 0%,
        rgba(247, 241, 230, 0.92) 55%,
        rgba(247, 241, 230, 0) 100%
    );
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    text-align: center;
    padding: 28px 14px 14px;
    gap: 2px;
    pointer-events: none;
}
.wish-card__overlay-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--text, #2a2a2a);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}
.wish-card__overlay-sub {
    font-size: 11px;
    color: var(--text-mid, #6a6a6a);
    line-height: 1.3;
}

/* Out-of-stock card — light desaturation only, keep print visible */
.wish-card--out .wish-card__media img { filter: saturate(0.85); opacity: 0.92; }
.wish-card--out:hover .wish-card__media img { transform: none; filter: saturate(0.9); opacity: 0.95; }

/* ─── Bulk add-to-cart bar ─────────────────────────────────────────────────
   Sits between the dashboard header and the wish-grid. Single primary action
   ("Alles in den Korb") + explicit italic note that the meter quantity is the
   customer's to adjust. POSTs to admin-post.php → redirects to /warenkorb/.
   ─────────────────────────────────────────────────────────────────────── */
.wish-bulk {
    margin: 4px 0 28px;
    padding: 16px 18px;
    background: #fff;
    border: 1px dashed var(--border, #e6dccb);
    border-radius: 10px;
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
}
.wish-bulk__btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--text, #2a2a2a);
    color: #fff;
    border: none;
    padding: 11px 18px;
    border-radius: 6px;
    font: 600 13px/1 var(--font-body);
    cursor: pointer;
    transition: background 140ms ease, transform 140ms ease;
    flex: 0 0 auto;
}
.wish-bulk__btn:hover {
    background: var(--jm-yellow, #e08470);
    transform: translateY(-1px);
}
.wish-bulk__btn:active { transform: translateY(0); }
.wish-bulk__btn-label { font-weight: 700; }
.wish-bulk__btn-sep { opacity: 0.55; }
.wish-bulk__btn-meta { font-weight: 500; letter-spacing: 0.01em; }
.wish-bulk__note {
    margin: 0;
    flex: 1 1 240px;
    color: var(--text-mid, #6a6a6a);
    font: 400 13px/1.45 var(--font-body);
    font-style: italic;
}
.wish-bulk__note strong {
    color: var(--text, #2a2a2a);
    font-style: normal;
    font-weight: 600;
}
.wish-bulk__meta {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex: 1 1 240px;
    min-width: 0;
}
.wish-bulk__toggle {
    align-self: flex-start;
    background: transparent;
    border: none;
    padding: 0;
    color: var(--jm-yellow, #e08470);
    font: 600 12px/1 var(--font-body);
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
    transition: color 140ms ease;
}
.wish-bulk__toggle:hover { color: var(--jm-yellow-dark, #c95849); }
.wish-bulk__btn:disabled {
    background: var(--border, #e6dccb);
    color: var(--text-mid, #6a6a6a);
    cursor: not-allowed;
    transform: none;
}
@media (max-width: 640px) {
    .wish-bulk { padding: 14px; gap: 12px; }
    .wish-bulk__btn { width: 100%; justify-content: center; }
    .wish-bulk__meta { flex-basis: 100%; }
    .wish-bulk__note { font-size: 12.5px; }
}

/* ─── Card-level select checkbox ───────────────────────────────────────────
   Sibling of .wish-card__media (NOT inside its anchor) so clicks don't bubble
   into the product-page navigation. Default checked; controlled by JS.
   ─────────────────────────────────────────────────────────────────────── */
.wish-card__select {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 4;
    display: inline-flex;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}
.wish-card__select input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    pointer-events: none;
}
.wish-card__select-box {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    background: rgba(255, 255, 255, 0.95);
    border: 1px solid var(--border, #e6dccb);
    border-radius: 5px;
    color: transparent;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
    transition: background 140ms ease, border-color 140ms ease, color 140ms ease, transform 140ms ease;
}
.wish-card__select:hover .wish-card__select-box {
    border-color: var(--text, #2a2a2a);
    transform: scale(1.04);
}
.wish-card__select input:checked + .wish-card__select-box {
    background: var(--text, #2a2a2a);
    border-color: var(--text, #2a2a2a);
    color: #fff;
}
.wish-card__select input:focus-visible + .wish-card__select-box {
    outline: 2px solid var(--jm-yellow, #e08470);
    outline-offset: 2px;
}
/* When the card is unselected, dim it slightly so the user can scan picks. */
.wish-card:has(.wish-card__select input:not(:checked)) {
    opacity: 0.65;
}
.wish-card:has(.wish-card__select input:not(:checked)):hover {
    opacity: 0.85;
}

/* ─── Stoff-Sammlung heart — v2 PLP card (.sb-sku-wrap sibling) ────────── */

.sb-sku-wrap {
    position: relative;
    display: block;
}
.sb-sku-wrap .fab-heart {
    position: absolute;
    top: 22px;
    right: 18px;
    z-index: 5;
    width: 38px;
    height: 38px;
}

/* ─── Stoff-Sammlung heart — v2 PDP gallery ────────────────────────────── */

.pdp__gallery { position: relative; }
.pdp__gallery .fab-heart-wrap--pdp {
    position: absolute;
    top: 18px;
    right: 18px;
    z-index: 6;
}
.pdp__gallery .fab-heart {
    width: 42px;
    height: 42px;
}
@media (max-width: 768px) {
    .pdp__gallery .fab-heart-wrap--pdp { top: 12px; right: 12px; }
    .pdp__gallery .fab-heart { width: 38px; height: 38px; }
}

/* ════════════════════════════════════════════════════════════════════════
 * Phase C — /mein-konto/ scrapbook dashboard
 * ════════════════════════════════════════════════════════════════════════ */

#fabricly-account-v2.dash {
    background: var(--cream);
    color: var(--text);
    display: flex;
    flex-direction: column;
    min-height: 70vh;
}

/* Sticky top tab nav */
.dash__tabnav {
    position: sticky;
    top: 0;
    z-index: 30;
    background: var(--cream);
    border-bottom: 1px dashed var(--border);
}
.dash__tabnav-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
    display: flex;
    gap: 32px;
    overflow-x: auto;
    scrollbar-width: none;
}
.dash__tabnav-inner::-webkit-scrollbar { display: none; }
.dash__tab {
    padding: 14px 0;
    font-size: 13px;
    font-weight: 600;
    color: var(--text-muted);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    white-space: nowrap;
}
.dash__tab:hover { color: var(--text); }
.dash__tab.is-active {
    color: var(--text);
    border-bottom-color: var(--jm-yellow);
}

.dash__main {
    flex: 1;
    max-width: 1200px;
    margin: 0 auto;
    padding: 48px;
    width: 100%;
    box-sizing: border-box;
}

.dash__breadcrumb {
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: 16px;
}
.dash__breadcrumb a { color: var(--text-mid); text-decoration: none; }
.dash__breadcrumb a:hover { color: var(--jm-yellow); }
.dash__breadcrumb span { margin: 0 6px; }
.dash__breadcrumb strong { color: var(--text); font-weight: 700; }

/* Greeting */
.dash__greeting {
    margin-bottom: 40px;
    max-width: 720px;
}
.dash__greet-eyebrow {
    font-size: 11px;
    letter-spacing: 0.12em;
    color: var(--text-muted);
    margin-bottom: 12px;
    font-weight: 700;
}
.dash__greet-h1 {
    font-size: 48px;
    line-height: 1.1;
    letter-spacing: -0.02em;
    font-weight: 800;
    margin: 0 0 16px;
}
.dash__greet-sub {
    font-size: 16px;
    color: var(--text-mid);
    margin: 0;
    line-height: 1.5;
}
.dash__greet-sub a { color: var(--jm-yellow); }

/* Inner-page head */
.dash__page-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 32px;
    gap: 24px;
    flex-wrap: wrap;
}
.dash__page-eyebrow {
    font-size: 11px;
    letter-spacing: 0.12em;
    color: var(--text-muted);
    margin-bottom: 8px;
    font-weight: 700;
}
.dash__page-h1 {
    font-size: 36px;
    line-height: 1.1;
    letter-spacing: -0.02em;
    font-weight: 800;
    margin: 0;
}
.dash__page-sub {
    font-size: 14px;
    color: var(--text-mid);
    margin: 8px 0 0;
    max-width: 640px;
    line-height: 1.5;
}

/* Filter chips (orders + wishlist) */
.dash__filters {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.dash__filter {
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: 100px;
    padding: 8px 16px;
    font: inherit;
    font-size: 13px;
    cursor: pointer;
    color: var(--text-mid);
    text-decoration: none;
    line-height: 1;
}
.dash__filter:hover { color: var(--text); border-color: var(--text); }
.dash__filter.is-active {
    background: var(--text);
    color: #fff;
    border-color: var(--text);
}
.dash__select {
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: 100px;
    padding: 8px 14px;
    font: inherit;
    font-size: 13px;
    cursor: pointer;
    color: var(--text);
}

/* ─── Card grid (Übersicht landing) ─────────────────────────────────────── */
.dash__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 40px;
}
.dash-card {
    position: relative;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 24px;
    cursor: pointer;
    text-decoration: none;
    color: inherit;
    transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
    display: flex;
    flex-direction: column;
    min-height: 160px;
}
.dash-card:hover {
    border-color: var(--text);
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(0,0,0,0.06);
}
.dash-card--jm-yellow { border-top: 3px solid var(--jm-yellow); }
.dash-card--jm-pink  { border-top: 3px solid var(--jm-pink); }
.dash-card__eyebrow {
    font-size: 11px;
    letter-spacing: 0.1em;
    color: var(--text-muted);
    margin-bottom: 8px;
    font-weight: 700;
    font-family: var(--font-mono, 'JetBrains Mono', ui-monospace, monospace);
}
.dash-card__title {
    font-size: 24px;
    font-weight: 800;
    letter-spacing: -0.01em;
    margin: 0 0 8px;
    line-height: 1.15;
}
.dash-card__sub {
    font-size: 13px;
    color: var(--text-mid);
    margin-bottom: 16px;
    flex: 1;
    line-height: 1.5;
}
.dash-card__cta {
    font-size: 13px;
    font-weight: 700;
    color: var(--jm-yellow);
}
.dash-card__badge {
    position: absolute;
    top: 12px;
    right: 12px;
    background: var(--jm-yellow);
    color: #fff;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 800;
    line-height: 1;
}

/* Camilla weekly nudge */
.dash__note {
    position: relative;
    background: #F4ECD9;
    border-radius: 4px;
    padding: 32px;
    display: grid;
    grid-template-columns: 1fr 240px;
    gap: 32px;
    align-items: center;
    margin-bottom: 24px;
}
.dash__note-tape {
    position: absolute;
    top: -12px;
    left: 32px;
    width: 100px;
    height: 22px;
    background: rgba(226, 138, 87, 0.4);
    transform: rotate(-3deg);
}
.dash__note-eyebrow {
    font-size: 11px;
    letter-spacing: 0.12em;
    color: var(--text-muted);
    margin-bottom: 8px;
    font-weight: 700;
}
.dash__note-h2 {
    font-size: 30px;
    line-height: 1.15;
    letter-spacing: -0.02em;
    font-weight: 800;
    margin: 0 0 12px;
}
.dash__note-body p {
    font-size: 15px;
    line-height: 1.55;
    color: var(--text-mid);
    margin: 0 0 16px;
}
.dash__note-actions {
    display: flex;
    gap: 16px;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.dash__note-secondary {
    font-size: 13px;
    color: var(--text-mid);
    text-decoration: underline;
}
.dash__note-secondary:hover { color: var(--text); }
.dash__note-sig {
    font-family: var(--font-hand, 'Caveat', cursive);
    font-size: 24px;
    color: var(--jm-yellow);
    font-style: italic;
}
.dash__note-img {
    width: 220px;
    height: 220px;
    border-radius: 4px;
    transform: rotate(2deg);
    box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}

/* ─── Orders list ────────────────────────────────────────────────────────── */
.dash__orders {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-bottom: 32px;
}
.order-card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    overflow: hidden;
}
.order-card__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 24px;
    border-bottom: 1px dashed var(--border);
    background: var(--cream);
    gap: 16px;
    flex-wrap: wrap;
}
.order-card__num {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: 14px;
    font-weight: 700;
}
.order-card__date {
    font-size: 12px;
    color: var(--text-muted);
}
.order-card__status {
    font-size: 12px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 100px;
    letter-spacing: 0.05em;
}
.order-card__status--shipped {
    background: rgba(226, 114, 151, 0.15);
    color: #1B6B70;
}
.order-card__status--delivered {
    background: rgba(92, 138, 79, 0.15);
    color: #5C8A4F;
}
.order-card__status--cancelled {
    background: rgba(192, 57, 43, 0.10);
    color: #C0392B;
}
.order-card__status--pending {
    background: rgba(0, 0, 0, 0.06);
    color: var(--text-mid);
}
.order-card__body {
    display: grid;
    grid-template-columns: 80px 1fr auto;
    gap: 20px;
    padding: 20px 24px;
    align-items: center;
}
.order-card__img {
    width: 80px;
    height: 80px;
    border-radius: 4px;
    overflow: hidden;
    background: var(--cream);
}
.order-card__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.order-card__title {
    font-size: 15px;
    font-weight: 700;
    margin-bottom: 4px;
    line-height: 1.3;
}
.order-card__total {
    font-size: 13px;
    color: var(--text-mid);
}
.order-card__actions {
    display: flex;
    flex-direction: column;
    gap: 6px;
    align-items: flex-end;
}

.dash__btn-secondary {
    background: #fff;
    border: 1.5px solid var(--text);
    border-radius: 100px;
    padding: 8px 16px;
    font: inherit;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    color: var(--text);
    white-space: nowrap;
    text-decoration: none;
    display: inline-block;
}
.dash__btn-secondary:hover { background: var(--text); color: #fff; }
.dash__btn-link {
    font-size: 12px;
    color: var(--jm-yellow);
    text-decoration: none;
    cursor: pointer;
    background: transparent;
    border: 0;
    padding: 4px 0;
    font: inherit;
}
.dash__btn-link:hover { text-decoration: underline; }
.dash__btn-danger {
    background: transparent;
    border: 1.5px solid #C0392B;
    color: #C0392B;
    border-radius: 100px;
    padding: 10px 20px;
    font: inherit;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    text-decoration: none;
    display: inline-block;
}
.dash__btn-danger:hover { background: #C0392B; color: #fff; }

/* Pagination */
.dash__pagination {
    display: flex;
    justify-content: center;
    gap: 6px;
    align-items: center;
    margin: 24px 0;
}
.dash__page-btn {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    width: 36px;
    height: 36px;
    font: inherit;
    font-size: 13px;
    cursor: pointer;
    text-decoration: none;
    color: var(--text);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.dash__page-btn:hover { border-color: var(--text); }
.dash__page-current {
    background: var(--text);
    color: #fff;
    border-radius: 8px;
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 700;
}

/* Empty state */
.dash__empty {
    background: #fff;
    border: 1px dashed var(--border);
    border-radius: 8px;
    padding: 48px 24px;
    text-align: center;
}
.dash__empty p {
    color: var(--text-mid);
    margin: 0 0 16px;
}

/* Save notice */
.dash__notice {
    border-radius: 8px;
    padding: 12px 16px;
    margin-bottom: 24px;
    font-size: 14px;
    font-weight: 600;
}
.dash__notice--ok {
    background: rgba(92, 138, 79, 0.10);
    color: #5C8A4F;
    border: 1px solid rgba(92, 138, 79, 0.25);
}

/* ─── Stoff-Sammlung — v2 head styling ──────────────────────────────────── */
.wish-section--v2 { padding: 0; max-width: none; }
.wish-section--v2 .wish-grid { margin-top: 8px; }

/* ─── Meine Stoffe placeholder ──────────────────────────────────────────── */
.ms-placeholder {
    position: relative;
    background: #fff;
    border: 1px dashed var(--border);
    border-radius: 8px;
    padding: 56px 32px;
    text-align: center;
}
.ms-placeholder__inner {
    position: relative;
    max-width: 520px;
    margin: 0 auto;
}
.ms-placeholder__icon {
    font-size: 48px;
    color: var(--text-muted);
    line-height: 1;
    margin-bottom: 16px;
}
.ms-placeholder__h2 {
    font-size: 28px;
    font-weight: 800;
    letter-spacing: -0.01em;
    margin: 0 0 12px;
}
.ms-placeholder__body {
    font-size: 15px;
    color: var(--text-mid);
    line-height: 1.6;
    margin: 0 0 16px;
}
.ms-placeholder__body a { color: var(--jm-yellow); }
.ms-placeholder__sig {
    font-family: var(--font-hand, 'Caveat', cursive);
    font-size: 20px;
    color: var(--jm-yellow);
    font-style: italic;
}

/* ─── Einstellungen ─────────────────────────────────────────────────────── */
.dash__settings {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.settings-card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    overflow: hidden;
}
.settings-card--danger { border-color: rgba(192, 57, 43, 0.3); }
.settings-card__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 24px;
    background: var(--cream);
    border-bottom: 1px dashed var(--border);
}
.settings-card__title {
    font-size: 18px;
    font-weight: 800;
    margin: 0;
}
.settings-card__status {
    font-size: 12px;
    color: #5C8A4F;
    font-weight: 700;
}
.settings-card__body { padding: 20px 24px; }
.settings-card__body > p:first-child { margin-top: 0; }

.settings-row {
    display: flex;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px dashed var(--border);
    font-size: 14px;
    gap: 16px;
}
.settings-row:last-child { border-bottom: 0; }
.settings-row span { color: var(--text-muted); }
.settings-row strong { font-weight: 700; word-break: break-all; }

.addr-card {
    position: relative;
    background: var(--cream);
    border-radius: 6px;
    padding: 16px;
    margin-bottom: 12px;
}
.addr-card:last-child { margin-bottom: 0; }
.addr-card--default { border: 1.5px solid var(--jm-yellow); }
.addr-card__badge {
    position: absolute;
    top: -8px;
    left: 12px;
    background: var(--jm-yellow);
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    padding: 3px 8px;
    border-radius: 3px;
    letter-spacing: 0.05em;
}
.addr-card strong { font-size: 14px; }
.addr-card p {
    font-size: 13px;
    color: var(--text-mid);
    margin: 4px 0 12px;
    line-height: 1.5;
}
.addr-card__actions { display: flex; gap: 16px; flex-wrap: wrap; }

.settings-toggles {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.settings-toggle {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    cursor: pointer;
}
.settings-toggle input { width: 16px; height: 16px; flex-shrink: 0; }

.dash__form-actions {
    display: flex;
    justify-content: flex-end;
    margin: 8px 0;
}

/* Wrap Woo's native edit-account / edit-address forms in our look */
.dash__woo-content .woocommerce-MyAccount-content { margin: 0; padding: 0; }
.dash__woo-content form.woocommerce-EditAccountForm,
.dash__woo-content form.woocommerce-address-fields,
.dash__woo-content form.edit-account {
    max-width: 640px;
}
.dash__woo-content .button {
    background: var(--text);
    color: #fff;
    border: 0;
    border-radius: 100px;
    padding: 10px 24px;
    font-weight: 700;
    cursor: pointer;
    text-decoration: none;
}
.dash__woo-content .button:hover { background: var(--jm-yellow); }

/* ─── Responsive ────────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
    .dash__main { padding: 32px 24px; }
    .dash__tabnav-inner { padding: 0 24px; }
    .dash__grid { grid-template-columns: repeat(2, 1fr); }
    .dash__greet-h1 { font-size: 38px; }
    .dash__page-h1 { font-size: 28px; }
    .dash__note { grid-template-columns: 1fr; }
    .dash__note-img { width: 100%; max-width: 320px; margin: 0 auto; }
}
@media (max-width: 640px) {
    .dash__main { padding: 24px 16px; }
    .dash__tabnav-inner { padding: 0 16px; gap: 20px; }
    .dash__tab { font-size: 12px; padding: 12px 0; }
    .dash__grid { grid-template-columns: 1fr; }
    .dash__greet-h1 { font-size: 30px; }
    .dash__page-h1 { font-size: 24px; }
    .dash__page-head { align-items: flex-start; }
    .order-card__body { grid-template-columns: 64px 1fr; }
    .order-card__img { width: 64px; height: 64px; }
    .order-card__actions {
        grid-column: 1 / -1;
        flex-direction: row;
        align-items: stretch;
        flex-wrap: wrap;
        gap: 8px;
    }
    .order-card__actions .dash__btn-secondary,
    .order-card__actions .dash__btn-link {
        flex: 1 1 auto;
        text-align: center;
    }
    .dash__note { padding: 24px 20px; }
    .dash__note-h2 { font-size: 24px; }
}

/* ════════════════════════════════════════════════════════════════════════
 * Phase C revision — minimal account chrome (mirrors body.fab-auth)
 *
 * The account template (my-account-v2.php) keeps get_header()/get_footer()
 * so WP infrastructure (admin bar, wp_head, wp_footer, scripts) works, but
 * Shoptimizer's site-header, site-footer, breadcrumbs, and the v2 util
 * strip are hidden via CSS. The template then renders its own minimal
 * .dash__hdr (logo + shop nav + greeting + Abmelden + tab row) and
 * .dash__foot (Camilla note + 4 legal links).
 * ════════════════════════════════════════════════════════════════════════ */

body.fab-account { background: var(--cream); }

/* Hide Shoptimizer's page chrome so the dashboard owns the viewport.
   Mirror of the body.fab-auth ruleset above, plus extra selectors for the
   Shoptimizer primary-nav row (.col-full-nav) which body.jm-v2
   normally keeps visible with a styled cream background. */
body.fab-account #masthead,
body.fab-account .site-header,
body.fab-account #site-header,
body.fab-account .header-fluid,
body.fab-account .secondary-navigation,
body.fab-account .pre-header-block,
body.fab-account .topbar,
body.fab-account .topbar-wrapper,
body.fab-account .top-bar,
body.fab-account .header-4-container,
body.fab-account .col-full-nav,
body.fab-account .shoptimizer-primary-navigation,
body.fab-account .breadcrumb,
body.fab-account .woocommerce-breadcrumb,
body.fab-account .archive-header,
body.fab-account .page-title-wrapper,
body.fab-account .site-footer,
body.fab-account .footer-widgets,
body.fab-account #colophon,
body.fab-account .sb-util,
body.fab-account .sb-util--standalone { display: none !important; }

body.fab-account #content,
body.fab-account .site-content,
body.fab-account #primary,
body.fab-account .site-content > .container,
body.fab-account .site-content > .container > .row,
body.fab-account .col-full {
    padding: 0 !important;
    margin: 0 !important;
    max-width: none !important;
    width: 100% !important;
}

body.fab-account #fabricly-account-v2 { background: var(--cream); }

/* === Header (sticky: top row + tabs row) === */
.dash__hdr {
    position: sticky;
    top: 0;
    z-index: 30;
    background: var(--cream);
    border-bottom: 1px dashed var(--border);
}
.dash__hdr-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 16px 48px;
}
.dash__hdr-logo {
    text-decoration: none;
    flex-shrink: 0;
}
.dash__hdr-logo .f-display {
    font-size: 24px;
    color: var(--jm-pink-dark, var(--jm-pink));
    line-height: 1;
}
.dash__hdr-shop {
    display: flex;
    gap: 24px;
    flex: 1;
    justify-content: center;
}
.dash__hdr-shop a {
    font-size: 13px;
    color: var(--text-mid);
    text-decoration: none;
    font-weight: 500;
    transition: color 0.15s ease;
}
.dash__hdr-shop a:hover { color: var(--jm-yellow); }
.dash__hdr-account {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-shrink: 0;
}
.dash__hdr-greet {
    font-size: 13px;
    color: var(--text);
    font-weight: 600;
}
.dash__hdr-logout {
    display: inline-flex;
    align-items: center;
    padding: 8px 16px;
    border: 1px solid var(--border);
    border-radius: 100px;
    background: transparent;
    color: var(--text-mid);
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    transition: border-color 0.15s ease, color 0.15s ease;
}
.dash__hdr-logout:hover {
    border-color: var(--jm-yellow);
    color: var(--jm-yellow);
}

/* Tab row inside the sticky header */
.dash__hdr-tabs {
    display: flex;
    gap: 32px;
    padding: 0 48px;
    border-top: 1px solid var(--border);
    overflow-x: auto;
    scrollbar-width: none;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
    box-sizing: border-box;
}
.dash__hdr-tabs::-webkit-scrollbar { display: none; }

/* === Footer === */
.dash__foot {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 24px;
    padding: 24px 48px;
    border-top: 1px dashed var(--border);
    font-size: 12px;
    color: var(--text-muted);
    background: var(--cream);
    flex-wrap: wrap;
}
.dash__foot em {
    font-family: var(--font-hand, 'Caveat', cursive);
    font-style: normal;
    font-size: 18px;
    color: var(--text-mid);
}
.dash__foot-links {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.dash__foot-links a {
    color: var(--text-muted);
    text-decoration: none;
    transition: color 0.15s ease;
}
.dash__foot-links a:hover { color: var(--jm-yellow); }
.dash__foot-links span { color: var(--border); }

/* === Mobile === */
@media (max-width: 768px) {
    .dash__hdr-top { padding: 12px 16px; }
    .dash__hdr-shop { display: none; }
    .dash__hdr-tabs { padding: 0 16px; gap: 20px; }
    .dash__hdr-logo .f-display { font-size: 20px; }
    .dash__foot { padding: 20px 16px; flex-direction: column; align-items: flex-start; gap: 12px; }
}
@media (max-width: 480px) {
    .dash__hdr-greet { display: none; }
    .dash__hdr-logout { padding: 6px 12px; font-size: 11px; }
}

/* ============================================================
   SEARCH v2 — /suche/?q=
   AI-ranked results (top picks + related), Camilla rescue,
   empty state with Claude-generated alternatives.
   ============================================================ */

.fab-search-page {
    color: var(--text);
    background: var(--cream);
    padding-bottom: 80px;
}

/* Match highlighting (umlaut-safe regex in fabricly_search_highlight) */
.fab-search-page mark {
    background: rgba(226, 138, 87, 0.25);
    color: inherit;
    padding: 0 2px;
    border-radius: 2px;
}

/* --- Sticky search bar --- */
.fab-search-page .search__bar-wrap {
    position: sticky;
    top: 0;
    z-index: 50;
    padding: 24px 48px 16px;
    background: var(--cream);
    border-bottom: 1px solid var(--border-subtle, var(--border));
}
.fab-search-page .search__bar {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: 100px;
    padding: 8px 8px 8px 24px;
    max-width: 800px;
    margin: 0 auto;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
}
.fab-search-page .search__bar:focus-within {
    border-color: var(--jm-yellow);
    box-shadow: 0 2px 16px rgba(226, 138, 87, 0.15);
}
.fab-search-page .search__bar > svg {
    color: var(--text-muted);
    flex: 0 0 auto;
}
.fab-search-page .search__input {
    flex: 1;
    border: 0;
    background: transparent;
    font: inherit;
    font-size: 16px;
    padding: 12px 0;
    outline: none;
    color: var(--text);
}
.fab-search-page .search__clear {
    background: transparent;
    border: 0;
    cursor: pointer;
    color: var(--text-muted);
    padding: 8px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    text-decoration: none;
}
.fab-search-page .search__clear:hover { background: var(--cream); color: var(--text); }
.fab-search-page .search__submit {
    background: var(--text);
    color: #fff;
    border: 0;
    padding: 12px 24px;
    border-radius: 100px;
    font: inherit;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    transition: background 0.15s ease;
}
.fab-search-page .search__submit:hover { background: var(--jm-yellow); }

/* --- Results header --- */
.fab-search-page .search__results-h {
    padding: 40px 48px 16px;
    max-width: 1200px;
    margin: 0 auto;
}
.fab-search-page .search__eyebrow {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.12em;
    color: var(--text-muted);
    margin-bottom: 8px;
    font-weight: 700;
    text-transform: uppercase;
}
.fab-search-page .search__h1 {
    font-size: 36px;
    line-height: 1.15;
    letter-spacing: -0.02em;
    font-weight: 800;
    margin: 0;
}
.fab-search-page .search__did-you-mean {
    font-size: 14px;
    color: var(--text-mid, var(--text));
    margin-top: 12px;
}
.fab-search-page .search__did-you-mean em {
    font-family: var(--font-hand, 'Caveat', cursive);
    font-style: italic;
    color: var(--jm-yellow);
    font-size: 18px;
}

/* --- Camilla reasoning bar (handwritten, above grid) --- */
.fab-search-page .search__camilla-bar {
    max-width: 1200px;
    margin: 8px auto 24px;
    padding: 12px 48px;
    font-family: var(--font-hand, 'Caveat', cursive);
    font-size: 22px;
    line-height: 1.3;
    color: var(--jm-yellow);
    display: flex;
    align-items: center;
    gap: 12px;
}
.fab-search-page .search__camilla-mark {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 14px;
    color: var(--jm-yellow);
    opacity: 0.7;
}
.fab-search-page .search__camilla-text {
    border-bottom: 2px dashed rgba(244, 169, 127, 0.5);
    padding-bottom: 4px;
}

/* --- Sections (top picks + related) --- */
.fab-search-page .search__section {
    max-width: 1200px;
    margin: 0 auto;
    padding: 16px 48px 32px;
}
.fab-search-page .search__section-h {
    margin-bottom: 16px;
}
.fab-search-page .search__section-eyebrow {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.12em;
    color: var(--text-muted);
    font-weight: 700;
    text-transform: uppercase;
}

/* --- Grids --- */
.fab-search-page .search__grid {
    display: grid;
    gap: 20px;
}
.fab-search-page .search__grid--top {
    grid-template-columns: repeat(3, 1fr);
}
.fab-search-page .search__grid--related {
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}

/* --- Result cards --- */
.fab-search-page .search-card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    overflow: hidden;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
    display: flex;
    flex-direction: column;
}
.fab-search-page .search-card:hover {
    transform: translateY(-2px);
    border-color: var(--text);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
}
.fab-search-page .search-card--top {
    border: 1.5px solid var(--jm-yellow);
}
.fab-search-page .search-card--top:hover {
    border-color: var(--jm-yellow);
    box-shadow: 0 8px 24px rgba(226, 138, 87, 0.18);
}
.fab-search-page .search-card--related .search-card__body {
    padding: 12px 14px;
}
.fab-search-page .search-card--low {
    border-left: 3px solid var(--jm-yellow);
}
.fab-search-page .search-card__link {
    color: inherit;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    flex: 1;
}
.fab-search-page .search-card__img-wrap {
    position: relative;
    aspect-ratio: 4 / 3;
    background: var(--cream);
    overflow: hidden;
}
.fab-search-page .search-card__img-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.fab-search-page .search-card__no {
    position: absolute;
    top: 10px;
    left: 10px;
    background: rgba(0, 0, 0, 0.6);
    color: #fff;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    padding: 3px 7px;
    border-radius: 3px;
    letter-spacing: 0.05em;
}
.fab-search-page .search-card__lowstock {
    position: absolute;
    top: 10px;
    right: 10px;
    background: var(--jm-yellow);
    color: #fff;
    font-size: 10px;
    font-weight: 800;
    padding: 4px 8px;
    border-radius: 100px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.fab-search-page .search-card__body {
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.fab-search-page .search-card__mood {
    font-family: var(--font-hand, 'Caveat', cursive);
    font-style: italic;
    color: var(--jm-yellow);
    font-size: 16px;
    line-height: 1;
}
.fab-search-page .search-card__title {
    font-size: 14px;
    font-weight: 700;
    line-height: 1.3;
    color: var(--text);
}
.fab-search-page .search-card--related .search-card__title { font-size: 13px; }
.fab-search-page .search-card__meta {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-top: 4px;
}
.fab-search-page .search-card__price {
    font-size: 15px;
    font-weight: 800;
}
.fab-search-page .search-card__gsm {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--text-muted);
}
.fab-search-page .search-card__cta-form {
    padding: 0 16px 16px;
    margin: 0;
}
.fab-search-page .search-card__cta {
    width: 100%;
    background: var(--jm-yellow);
    color: #fff;
    border: 0;
    padding: 10px 14px;
    border-radius: 100px;
    font-family: inherit;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.15s ease;
}
.fab-search-page .search-card__cta:hover {
    background: var(--text);
    transform: translateY(-1px);
}

/* --- Camilla rescue (bottom of results page) --- */
.fab-search-page .search__rescue {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 32px;
    background: #F4ECD9;
    padding: 40px 48px;
    max-width: 1200px;
    margin: 24px auto 0;
    border-radius: 8px;
    position: relative;
    align-items: center;
}
.fab-search-page .search__rescue-tape {
    position: absolute;
    top: -10px;
    left: 48px;
    width: 100px;
    height: 22px;
    background: rgba(232, 127, 114, 0.4);
    transform: rotate(-3deg);
}
.fab-search-page .search__rescue-l { display: flex; justify-content: center; }
.fab-search-page .search__rescue-img {
    width: 180px;
    height: 180px;
    object-fit: cover;
    border-radius: 50%;
    border: 3px solid #fff;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.fab-search-page .search__rescue-h {
    font-size: 28px;
    line-height: 1.15;
    letter-spacing: -0.02em;
    font-weight: 800;
    margin: 6px 0 12px;
}
.fab-search-page .search__rescue-p {
    font-size: 15px;
    color: var(--text-mid, var(--text));
    margin: 0 0 16px;
    line-height: 1.5;
    max-width: 560px;
}
.fab-search-page .search__rescue-actions {
    display: flex;
    align-items: center;
    gap: 20px;
    flex-wrap: wrap;
}
.fab-search-page .search__rescue-secondary {
    font-size: 14px;
    color: var(--text-mid, var(--text));
    cursor: pointer;
    text-decoration: underline;
}
.fab-search-page .search__rescue-secondary em {
    font-family: var(--font-hand, 'Caveat', cursive);
    color: var(--jm-yellow);
    font-size: 18px;
    margin-left: 2px;
    font-style: italic;
}

/* --- Empty state --- */
.fab-search-page .search__empty {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 60px;
    padding: 60px 48px 80px;
    max-width: 1100px;
    margin: 0 auto;
    align-items: flex-start;
}
.fab-search-page .search__empty-portrait {
    position: relative;
    padding-top: 16px;
}
.fab-search-page .search__empty-tape {
    position: absolute;
    top: 0;
    left: 30px;
    width: 80px;
    height: 22px;
    background: rgba(232, 127, 114, 0.4);
    transform: rotate(-3deg);
}
.fab-search-page .search__empty-img {
    width: 220px;
    height: 220px;
    object-fit: cover;
    border-radius: 50%;
    border: 3px solid #fff;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.fab-search-page .search__empty-h1 {
    font-size: 44px;
    line-height: 1.1;
    letter-spacing: -0.02em;
    font-weight: 800;
    margin: 12px 0 16px;
}
.fab-search-page .search__empty-h1 em {
    color: var(--jm-yellow);
    font-family: var(--font-hand, 'Caveat', cursive);
    font-style: italic;
    font-weight: 600;
}
.fab-search-page .search__empty-p {
    font-size: 16px;
    color: var(--text-mid, var(--text));
    line-height: 1.6;
    margin: 0 0 32px;
    max-width: 560px;
}
.fab-search-page .search__empty-suggestions {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 40px;
}
.fab-search-page .search__empty-suggestion {
    display: block;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 16px 20px;
    cursor: pointer;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease, transform 0.15s ease;
}
.fab-search-page .search__empty-suggestion:hover {
    border-color: var(--jm-yellow);
    transform: translateX(4px);
}
.fab-search-page .search__empty-suggestion strong {
    display: block;
    font-size: 15px;
    margin-bottom: 4px;
    color: var(--text);
}
.fab-search-page .search__empty-suggestion span {
    font-size: 13px;
    color: var(--text-mid, var(--text));
}
.fab-search-page .search__empty-cta-row {
    display: flex;
    align-items: center;
    gap: 24px;
    flex-wrap: wrap;
}

/* --- Mobile --- */
@media (max-width: 900px) {
    .fab-search-page .search__bar-wrap { padding: 16px 20px 12px; }
    .fab-search-page .search__results-h { padding: 28px 20px 12px; }
    .fab-search-page .search__camilla-bar { padding: 8px 20px; font-size: 19px; }
    .fab-search-page .search__section { padding: 12px 20px 24px; }
    .fab-search-page .search__h1 { font-size: 28px; }
    .fab-search-page .search__grid--top,
    .fab-search-page .search__grid--related { grid-template-columns: repeat(2, 1fr); gap: 14px; }
    .fab-search-page .search__rescue {
        grid-template-columns: 1fr;
        gap: 20px;
        padding: 32px 24px;
        margin: 16px 20px 0;
    }
    .fab-search-page .search__rescue-l { padding-top: 8px; }
    .fab-search-page .search__rescue-img { width: 140px; height: 140px; }
    .fab-search-page .search__rescue-h { font-size: 22px; }
    .fab-search-page .search__empty {
        grid-template-columns: 1fr;
        gap: 24px;
        padding: 40px 20px 60px;
    }
    .fab-search-page .search__empty-portrait { text-align: center; }
    .fab-search-page .search__empty-img { width: 160px; height: 160px; }
    .fab-search-page .search__empty-tape { left: 50%; margin-left: -40px; }
    .fab-search-page .search__empty-h1 { font-size: 30px; }
}
@media (max-width: 480px) {
    .fab-search-page .search__grid--top,
    .fab-search-page .search__grid--related { grid-template-columns: 1fr; }
    .fab-search-page .search__submit { padding: 10px 16px; font-size: 13px; }
    .fab-search-page .search__input { font-size: 15px; }
}

/* === D.2.C.3 — Full SRP additions (sort, chips bar, full grid, articles, pagination) === */

/* Results header with sort on the right */
.fab-search-page .search__results-h--with-sort {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
}
.fab-search-page .search__sort {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
}
.fab-search-page .search__sort-label {
    font-size: 13px;
    color: var(--text-muted);
}
.fab-search-page .search__sort select {
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: 100px;
    padding: 8px 14px;
    font: inherit;
    font-size: 13px;
    color: var(--text);
    cursor: pointer;
}
.fab-search-page .search__sort select:focus {
    outline: 0;
    border-color: var(--jm-yellow);
    box-shadow: 0 2px 12px rgba(226, 138, 87, 0.18);
}

/* Refinement chips bar */
.fab-search-page .search__chips-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 0 48px 24px;
    max-width: 1200px;
    margin: 0 auto;
}
.fab-search-page .search__filter-chip {
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: 100px;
    padding: 8px 16px;
    font: inherit;
    font-size: 13px;
    color: var(--text-mid);
    cursor: pointer;
    text-decoration: none;
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.fab-search-page .search__filter-chip.is-active {
    background: var(--text);
    color: #fff;
    border-color: var(--text);
}
.fab-search-page .search__filter-chip:hover:not(.is-active) {
    border-color: var(--jm-yellow);
    color: var(--jm-yellow);
}
.fab-search-page .search__filter-chip-n {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    opacity: 0.7;
}

/* Full grid (replaces top/related splits when rendering all results) */
.fab-search-page .search__grid--full {
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 0 48px;
    max-width: 1200px;
    margin: 0 auto 32px;
}
.fab-search-page .search__grid--articles {
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    padding: 0 48px;
    max-width: 1200px;
    margin: 0 auto 32px;
}

/* Inline article cards in the magazine-mixed grid */
.fab-search-page .search-article {
    background: #F4ECD9;
    border-radius: 8px;
    padding: 24px;
    position: relative;
    display: flex;
    flex-direction: column;
}
.fab-search-page .search-article--wide {
    grid-column: span 2;
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 28px;
    padding: 28px;
    align-items: center;
}
.fab-search-page .search-article__tape {
    position: absolute;
    top: -10px;
    left: 28px;
    width: 80px;
    height: 20px;
    background: rgba(232, 127, 114, 0.4);
    transform: rotate(-3deg);
}
.fab-search-page .search-article__eyebrow {
    font-size: 10px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 12px;
    font-weight: 700;
}
.fab-search-page .search-article__h {
    font-family: var(--font-display, var(--font-body));
    font-size: 24px;
    font-weight: 800;
    letter-spacing: -0.02em;
    line-height: 1.2;
    margin: 0 0 12px;
}
.fab-search-page .search-article--wide .search-article__h { font-size: 28px; }
.fab-search-page .search-article__h a {
    color: inherit;
    text-decoration: none;
}
.fab-search-page .search-article__h a:hover { color: var(--jm-yellow); }
.fab-search-page .search-article__p {
    font-size: 14px;
    color: var(--text-mid);
    line-height: 1.55;
    margin: 0 0 14px;
}
.fab-search-page .search-article__meta {
    display: flex;
    gap: 8px;
    font-size: 12px;
    color: var(--text-muted);
}
.fab-search-page .search-article__cta {
    display: inline-block;
    margin-top: 14px;
    color: var(--jm-yellow);
    font-weight: 700;
    font-size: 14px;
    text-decoration: none;
}
.fab-search-page .search-article__cta:hover { color: var(--jm-yellow-dark, #B14A6F); }
.fab-search-page .search-article__col-r {
    background: #fff;
    border-radius: 6px;
    min-height: 180px;
    overflow: hidden;
}
.fab-search-page .search-article__visual {
    width: 100%;
    height: 100%;
    min-height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Trending + recent suggest row (shown on /suche/ with no query) */
.fab-search-page .search__suggest-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
    max-width: 1200px;
    margin: 8px auto 32px;
    padding: 0 48px;
}
.fab-search-page .search__suggest-col {}
.fab-search-page .search__suggest-eyebrow {
    font-size: 11px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-muted);
    font-weight: 700;
    margin-bottom: 10px;
}
.fab-search-page .search__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.fab-search-page .search__chip {
    background: var(--cream, #FAF7F2);
    border: 1px solid var(--border, #E5DDD0);
    border-radius: 100px;
    padding: 7px 14px;
    font: inherit;
    font-size: 13px;
    color: var(--text);
    text-decoration: none;
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.fab-search-page .search__chip:hover {
    border-color: var(--jm-yellow);
    color: var(--jm-yellow);
    background: #fff;
}
.fab-search-page .search__chip--recent {
    color: var(--text-muted);
}
.fab-search-page .search__chips-empty {
    font-size: 13px;
    color: var(--text-muted);
    font-style: italic;
}

.fab-search-page .search__empty-tab {
    max-width: 1200px;
    margin: 0 auto 32px;
    padding: 24px 48px;
    font-size: 15px;
    color: var(--text-mid);
}
.fab-search-page .search__empty-tab a {
    color: var(--jm-yellow);
    text-decoration: underline;
    margin-left: 8px;
}

/* Pagination */
.fab-search-page .search__pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    padding: 8px 16px 48px;
    max-width: 1200px;
    margin: 0 auto;
}
.fab-search-page .search__page-btn {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 10px 16px;
    font: inherit;
    font-size: 13px;
    color: var(--text);
    text-decoration: none;
    cursor: pointer;
    transition: border-color 0.15s ease, color 0.15s ease;
}
.fab-search-page .search__page-btn:hover {
    border-color: var(--jm-yellow);
    color: var(--jm-yellow);
}
.fab-search-page .search__page-btn.is-disabled {
    opacity: 0.4;
    cursor: not-allowed;
    pointer-events: none;
}
.fab-search-page .search__page-current {
    background: var(--text);
    color: #fff;
    border-radius: 8px;
    padding: 10px 16px;
    font-size: 13px;
    font-weight: 700;
}
.fab-search-page .search__page-dots { color: var(--text-muted); padding: 0 4px; }

@media (max-width: 768px) {
    .fab-search-page .search__results-h--with-sort {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
    }
    .fab-search-page .search__chips-bar { padding: 0 20px 16px; }
    .fab-search-page .search__grid--full { grid-template-columns: repeat(2, 1fr); padding: 0 20px; gap: 14px; }
    .fab-search-page .search__grid--articles { grid-template-columns: 1fr; padding: 0 20px; }
    .fab-search-page .search-article--wide {
        grid-column: span 2;
        grid-template-columns: 1fr;
        gap: 20px;
        padding: 20px;
    }
    .fab-search-page .search-article--wide .search-article__h { font-size: 22px; }
    .fab-search-page .search__pagination { padding: 8px 16px 32px; flex-wrap: wrap; }
}
@media (max-width: 480px) {
    .fab-search-page .search__grid--full { grid-template-columns: 1fr; }
    .fab-search-page .search-article--wide { grid-column: span 1; }
}

/* ─── M1: PDP mood caption above title (Caveat coral) ───────────────────── */
.pdp__mood-caption {
    font-size: 28px;
    line-height: 1.1;
    color: var(--jm-yellow);
    margin: 6px 0 -2px;
    transform: rotate(-1deg);
    display: inline-block;
}
@media (max-width: 768px) {
    .pdp__mood-caption { font-size: 22px; }
}

/* ─── M1: PDP Camilla signature block ───────────────────────────────────── */
.pdp__story-signature { margin-top: 24px; }

/* ─── M1: PDP trust grid 4-col (was 3-col in system.css before reviews cell) ─ */
.pdp__trust-grid { grid-template-columns: repeat(4, 1fr); }
/* Uden anmeldelser er der kun tre celler, og repeat(4,1fr) efterlod en tom
   fjerdedel i et panel med synlig ramme. Templaten sætter --3up når stjerne-
   cellen ikke renderes; målt 2026-08-05 er det hver eneste produktside
   (0 af 4182 udgivne produkter har en anmeldelse). Regelen står efter
   4-kolonne-reglen med vilje — samme specificitet, senere position vinder. */
.pdp__trust-grid--3up { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 768px) {
    .pdp__trust-grid,
    .pdp__trust-grid--3up { grid-template-columns: repeat(2, 1fr); }
}

/* ─── M1 fix (2026-05-20): mobile bar deferred to .fab-mbar--pdp (functions.php).
   The new bar I added was redundant with the pre-existing .fab-mbar PDP variant.
   v1's #fabricly-bottom-nav is suppressed on v2 via PHP gate in functions.php. */

/* ─── M2: Cart Nähpaket-Rabatt nudge panel ─────────────────────────────── */
.cart__nudge {
    position: relative;
    margin: 28px 0 4px;
    padding: 22px 22px 20px;
    background: #fff;
    border: 1px solid var(--line, #e5e5e5);
    border-radius: 4px;
}
.cart__nudge::before {
    content: "";
    position: absolute;
    top: -10px; left: 28px;
    width: 64px; height: 18px;
    background: var(--jm-yellow, #e8765c);
    opacity: 0.32;
    transform: rotate(-3deg);
    border-radius: 1px;
}
.cart__nudge--max {
    background: var(--mint-pale, #eef7ef);
    border-color: var(--mint, #b9dcc1);
}
.cart__nudge--max::before { background: var(--mint, #b9dcc1); opacity: 0.6; }
.cart__nudge-head { display: block; }
.cart__nudge-eyebrow {
    display: block;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--jm-yellow, #C75B80);
    margin-bottom: 8px;
}
.cart__nudge-title {
    font-family: 'Nunito', sans-serif;
    font-weight: 900;
    letter-spacing: -0.5px;
    font-size: 20px;
    line-height: 1.25;
    color: var(--text, #1a1a1a);
    margin: 0 0 6px;
}
.cart__nudge-title strong { color: var(--jm-yellow, #C75B80); font-weight: 900; }
.cart__nudge--max .cart__nudge-title strong { color: var(--text, #1a1a1a); }
.cart__nudge-sub {
    font-family: 'Nunito', sans-serif;
    font-size: 13px;
    color: var(--text-mid, #555);
    line-height: 1.45;
    margin: 0;
}
.cart__nudge-list {
    list-style: none;
    padding: 0;
    margin: 18px 0 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}
.cart__nudge-item {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 14px;
    background: #fff;
    border: 1px solid var(--border, #E8E4DF);
    border-radius: 10px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.cart__nudge-link {
    display: flex;
    gap: 12px;
    align-items: center;
    color: var(--text, #1a1a1a);
    text-decoration: none;
}
.cart__nudge-img {
    width: 64px; height: 64px;
    object-fit: cover;
    border-radius: 6px;
    flex: 0 0 64px;
}
.cart__nudge-meta {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
    flex: 1;
}
.cart__nudge-name {
    font-family: 'Nunito', sans-serif;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.3;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.cart__nudge-price {
    font-family: 'Nunito', sans-serif;
    font-size: 12px;
    font-weight: 700;
    color: var(--jm-yellow, #C75B80);
}
/* Stepper + add-button row — mirrors cart-line's .cart-line__qty-row layout. */
.cart__nudge-controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding-top: 12px;
    border-top: 1px dashed var(--border, #E8E4DF);
}

/* Length stepper — same cream-dark pill as the cart-row stepper. */
.cart__nudge-stepper {
    display: inline-flex;
    align-items: center;
    background: var(--cream-dark, #F5F0EB);
    border-radius: 999px;
    overflow: hidden;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
}
.cart__nudge-stepper__btn {
    width: 26px;
    height: 26px;
    background: transparent;
    border: none;
    cursor: pointer;
    font-size: 14px;
    line-height: 1;
    color: var(--text, #333);
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 150ms ease, color 150ms ease;
}
.cart__nudge-stepper__btn:hover {
    background: var(--jm-yellow, #C75B80);
    color: #fff;
}
.cart__nudge-stepper__val {
    padding: 0 8px;
    font-size: 12px;
    min-width: 52px;
    text-align: center;
    color: var(--text, #333);
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
}

/* Coral pill CTA — matches Zur Kasse / other v2 primary buttons in compact form. */
.cart__nudge-add {
    background: var(--jm-yellow, #C75B80);
    color: #fff;
    border: none;
    padding: 8px 14px;
    font-family: 'Nunito', sans-serif;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.02em;
    border-radius: 999px;
    cursor: pointer;
    line-height: 1.2;
    transition: background 150ms ease, transform 150ms ease;
    white-space: nowrap;
}
.cart__nudge-add:hover { background: #e86c63; transform: translateY(-1px); }
.cart__nudge-add[disabled] { opacity: 0.55; cursor: wait; transform: none; }

@media (max-width: 600px) {
    .cart__nudge { padding: 18px 16px; }
    .cart__nudge-title { font-size: 18px; }
    .cart__nudge-list {
        grid-template-columns: none;
        grid-auto-flow: column;
        grid-auto-columns: 78%;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scrollbar-width: none;
    }
    .cart__nudge-list::-webkit-scrollbar { display: none; }
    .cart__nudge-item { scroll-snap-align: start; }
}

/* ─────────────────────────────────────────────────────────────────────────
   PLP card color dots — pa_farbe taxonomy (14 families + bunt fallback).
   Hex values mirror import/color_detection.py:COLOR_FAMILIES so the
   ColorThief-assigned attribute reads the same shade on the card.
   ──────────────────────────────────────────────────────────────────────── */
.sb-sku__colors {
    display: flex;
    gap: 4px;
    margin: 0 0 10px;
    flex-wrap: wrap;
}
.sb-sku__dot {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    border: 1px solid rgba(0, 0, 0, 0.08);
    flex: 0 0 auto;
}
.sb-sku__dot--rosa    { background: #f4a7bb; }
.sb-sku__dot--blau    { background: #4a90d9; }
.sb-sku__dot--marine  { background: #1e3a5f; }
.sb-sku__dot--gruen   { background: #5b9a3e; }
.sb-sku__dot--rot     { background: #d64045; }
.sb-sku__dot--gelb    { background: #f5d547; }
.sb-sku__dot--lila    { background: #8b5cf6; }
.sb-sku__dot--schwarz { background: #222222; }
.sb-sku__dot--weiss   { background: #ffffff; border-color: rgba(0, 0, 0, 0.18); }
.sb-sku__dot--grau    { background: #9ca3af; }
.sb-sku__dot--beige   { background: #d4b896; }
.sb-sku__dot--tuerkis { background: #E27297; }
.sb-sku__dot--orange  { background: #f59e0b; }
.sb-sku__dot--braun   { background: #8b6914; }
.sb-sku__dot--bunt    {
    background: linear-gradient(45deg, #f4a7bb 0%, #f5d547 25%, #5b9a3e 50%, #4a90d9 75%, #8b5cf6 100%);
}

/* ─────────────────────────────────────────────────────────────────────────
   T3 — AJAX swap loading state. JS toggles .is-loading on #jm-plp-v2
   during the in-flight request; transition keeps it from feeling jumpy.
   ──────────────────────────────────────────────────────────────────────── */
#jm-plp-v2 [data-fab-plp-grid] {
    transition: opacity 180ms ease;
}
#jm-plp-v2.is-loading [data-fab-plp-grid] {
    opacity: 0.55;
    pointer-events: none;
}

/* ===== PLP FACET CHIP BAR (.jm-facets — template-parts/v2-plp-facets.php) =====
   Compact white bar between the banner and the grid: each facet renders as a
   small eyebrow label + a wrap row of rounded term chips with counts. The
   same partial renders inside the mobile filter drawer (reset there below). */
body.jm-v2 .jm-facets {
    margin: 20px 80px 28px;
    padding: 18px 24px 16px;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.04);
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    align-items: start;
    column-gap: 32px;
    row-gap: 16px;
}
body.jm-v2 .jm-facets__group {
    min-width: 0;
}
body.jm-v2 .jm-facets__label {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--text, #333E48);
    margin: 0 0 8px;
    padding-bottom: 5px;
    border-bottom: 1px solid rgba(40, 30, 30, 0.08);
}
body.jm-v2 .jm-facets__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}
body.jm-v2 .jm-facets__chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 11px;
    background: var(--cream, #FDFDFC);
    color: var(--text-mid, #5D7184);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 999px;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 11.5px;
    line-height: 1.3;
    text-decoration: none;
    transition: all 0.15s ease;
}
body.jm-v2 .jm-facets__chip:hover {
    border-color: var(--jm-pink, #E27297);
    color: var(--jm-pink-dark, #C75B80);
}
body.jm-v2 .jm-facets__chip.is-active {
    background: var(--jm-pink, #E27297);
    color: #fff;
    border-color: var(--jm-pink, #E27297);
}
body.jm-v2 .jm-facets__cnt {
    font-size: 10px;
    font-weight: 600;
    opacity: 0.65;
}

/* ===== Farvefilter (16 familier — inc/colour-families.php) =====
   Samme pille som en chip, men med en farveprik foran: aktiv-tilstanden er
   ordret chippens (pink fyld), så hele facetfladen taler ÉT sprog om hvad der
   er valgt. Selve farven kommer fra --swatch, sat inline af skabelonen, fordi
   den er produktdata — alt andet her er tokens.
   Gruppen spænder hele rækken: 16 familier i en tredjedelsbred kolonne bliver
   en høj smal liste, og en farvevælger skal kunne skimmes på tværs. */
body.jm-v2 .jm-facets__group--colour {
    grid-column: 1 / -1;
}
body.jm-v2 .jm-facets__swatches {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
body.jm-v2 .jm-facets__swatch {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 4px 12px 4px 5px;
    background: var(--cream, #FDFDFC);
    color: var(--text-mid, #5D7184);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 999px;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 11.5px;
    line-height: 1.3;
    text-decoration: none;
    transition: all 0.15s ease;
}
body.jm-v2 .jm-facets__swatch-dot {
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--swatch, #DDD);
    /* Indvendig kant og ikke border: en border ville æde af prikken og gøre de
       små farver endnu mindre. */
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.07);
}
/* Hvid og neon forsvinder i den flødefarvede flade uden en tydeligere kant. */
body.jm-v2 .jm-facets__swatch.has-edge .jm-facets__swatch-dot {
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.22);
}
body.jm-v2 .jm-facets__swatch:hover {
    border-color: var(--jm-pink, #E27297);
    color: var(--jm-pink-dark, #C75B80);
}
body.jm-v2 .jm-facets__swatch.is-active {
    background: var(--jm-pink, #E27297);
    color: #fff;
    border-color: var(--jm-pink, #E27297);
}
/* Hvid ring, så prikken stadig læses som en farveprøve oven på det pink fyld. */
body.jm-v2 .jm-facets__swatch.is-active .jm-facets__swatch-dot {
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12), 0 0 0 2px #fff;
}
/* Samme "Vis flere"-regel som chipsene, bare med swatchens visningstype. */
body.jm-v2 .jm-facets__swatch.is-overflow {
    display: none;
}
body.jm-v2 .jm-facets__group.is-expanded .jm-facets__swatch.is-overflow {
    display: inline-flex;
}

/* "Vis flere" — chips ud over de første 6 skjules indtil gruppen foldes ud.
   Kun grupper med .is-collapsible har en knap (template-parts/v2-plp-facets.php:
   mindst 3 skjulte, ellers koster knappen mere plads end den sparer). En AKTIV
   chip får aldrig .is-overflow, så en filtreret visning viser altid sit valg. */
body.jm-v2 .jm-facets__chip.is-overflow {
    display: none;
}
body.jm-v2 .jm-facets__group.is-expanded .jm-facets__chip.is-overflow {
    display: inline-flex;
}
body.jm-v2 .jm-facets__more {
    display: inline-block;
    margin: 7px 0 0;
    padding: 2px 0;
    background: none;
    border: 0;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 11.5px;
    color: var(--text-muted, #888);
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}
body.jm-v2 .jm-facets__more:hover {
    color: var(--jm-pink-dark, #C75B80);
}
body.jm-v2 .jm-facets__more:focus-visible {
    outline: 2px solid var(--jm-pink, #E27297);
    outline-offset: 2px;
    border-radius: 4px;
}
body.jm-v2 .jm-facets__reset {
    grid-column: 1 / -1;
    justify-self: start;
    font-family: 'Nunito', sans-serif;
    font-weight: 600;
    font-size: 12px;
    color: var(--text-muted, #888);
    text-decoration: underline;
    text-underline-offset: 3px;
}
body.jm-v2 .jm-facets__reset:hover {
    color: var(--jm-pink-dark, #C75B80);
}
/* Mobile (≤767px): the slide-up drawer is THE filter UX (Batch B, Task 10).
   The inline chip bar is hidden and replaced by the "Filtrér" trigger button
   (archive-product-v2.php, data-fab-mfilters-open — handled by v2-plp.js).
   The old collapsed-chip-bar mobile styles were removed with it. */
body.jm-v2 .plp__mfilters-trigger {
    display: none; /* desktop: inline chip bar stays, no trigger */
    align-items: center;
    gap: 7px;
    margin: 12px 14px 4px;
    padding: 10px 18px;
    min-height: 44px;
    background: #fff;
    color: var(--text, #333E48);
    border: 1.5px solid var(--border, #ECEAE6);
    border-radius: 999px;
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 13px;
    letter-spacing: 0.03em;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);
}
body.jm-v2 .plp__mfilters-trigger-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    background: var(--jm-pink, #E27297);
    color: #fff;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 800;
}
@media (max-width: 767px) {
    body.jm-v2 .plp__mfilters-trigger {
        display: inline-flex;
    }
    /* Hide only the inline bar (direct child of .plp) — the drawer's copy
       lives in .plp__mfilters-body and keeps its own overrides below. */
    body.jm-v2 .plp > .jm-facets {
        display: none;
    }
}
/* Inside the mobile filter drawer the partial renders again — drop the card
   chrome so it reads as sheet content, and let chips wrap normally there. */
body.jm-v2 .plp__mfilters-body .jm-facets {
    display: block;
    margin: 0;
    padding: 0;
    background: transparent;
    box-shadow: none;
    border-radius: 0;
}
body.jm-v2 .plp__mfilters-body .jm-facets__chips {
    flex-wrap: wrap;
    overflow-x: visible;
    gap: 8px;
}
/* Gitterets row-gap gælder ikke i skuffen (display:block), så grupperne får
   deres egen afstand — ellers klistrer labels sig til chipsene ovenover. */
body.jm-v2 .plp__mfilters-body .jm-facets__group + .jm-facets__group {
    margin-top: 20px;
}
/* Berøringsmål i skuffen: chips 40px, "Vis flere" 44px. På desktop er de
   samme chips 24px høje — det er en musflade, skuffen er en tommelfinger. */
body.jm-v2 .plp__mfilters-body .jm-facets__chip {
    min-height: 40px;
    padding: 9px 15px;
    font-size: 13px;
}
body.jm-v2 .plp__mfilters-body .jm-facets__swatches {
    gap: 8px;
}
body.jm-v2 .plp__mfilters-body .jm-facets__swatch {
    min-height: 40px;
    padding: 6px 16px 6px 7px;
    font-size: 13px;
}
body.jm-v2 .plp__mfilters-body .jm-facets__swatch-dot {
    width: 20px;
    height: 20px;
}
body.jm-v2 .plp__mfilters-body .jm-facets__more {
    min-height: 44px;
    margin-top: 10px;
    font-size: 13px;
}
body.jm-v2 .plp__mfilters-body .jm-facets__reset {
    display: inline-block;
    min-height: 44px;
    padding-top: 12px;
    font-size: 13px;
}

/* ===== Mobile filter drawer (slide-up sheet, archive-product-v2.php) ===== */

/* Drawer container hidden until JS opens it. */
.plp__mfilters { display: none; }
.plp__mfilters.is-open { display: block; }
.plp__mfilters[hidden] { display: none !important; }


/* ═══════════════════════════════════════════════════════════════
   MOBILE-SPECIFIC OVERRIDES — the slide-up filter drawer styles live
   here so they never apply at desktop.
   ═══════════════════════════════════════════════════════════════ */
@media (max-width: 767px) {
    /* Slide-up sheet. .plp__mfilters[hidden] keeps it out of the a11y tree until opened. */
    .plp__mfilters {
        position: fixed;
        inset: 0;
        z-index: 9000;
        display: none;
    }
    .plp__mfilters.is-open {
        display: block;
    }
    .plp__mfilters-backdrop {
        position: absolute;
        inset: 0;
        background: rgba(40, 30, 30, 0.42);
        opacity: 0;
        transition: opacity 220ms ease;
    }
    .plp__mfilters.is-open .plp__mfilters-backdrop { opacity: 1; }
    .plp__mfilters-sheet {
        position: absolute;
        left: 0; right: 0; bottom: 0;
        max-height: 88vh;
        background: var(--cream, #FAF6EE);
        border-radius: 18px 18px 0 0;
        box-shadow: 0 -16px 48px rgba(0, 0, 0, 0.22);
        transform: translateY(100%);
        transition: transform 280ms cubic-bezier(0.22, 0.61, 0.36, 1);
        display: flex;
        flex-direction: column;
        overflow: hidden;
    }
    .plp__mfilters.is-open .plp__mfilters-sheet { transform: translateY(0); }
    .plp__mfilters-handle {
        flex: 0 0 auto;
        width: 44px; height: 5px;
        margin: 10px auto 0;
        border-radius: 999px;
        background: rgba(0, 0, 0, 0.22);
        cursor: grab;
    }
    .plp__mfilters-head {
        flex: 0 0 auto;
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 14px 20px 8px;
    }
    .plp__mfilters-head h2 {
        margin: 0;
        font-family: 'Nunito', sans-serif;
        font-weight: 900;
        font-size: 22px;
        color: var(--text, #2A2A2A);
    }
    .plp__mfilters-close {
        background: transparent;
        border: 0;
        font-size: 28px;
        line-height: 1;
        color: var(--text, #2A2A2A);
        cursor: pointer;
        padding: 4px 8px;
    }
    .plp__mfilters-body {
        flex: 1 1 auto;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        padding: 8px 20px 16px;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }
    /* Re-show + restyle .plp__facet inside the drawer (.plp__facets is hidden on mobile). */
    .plp__mfilters-body .plp__facet { display: block !important; }
    .plp__mfilters-body .plp__facet h4 {
        margin: 0 0 10px;
        font-family: 'Nunito', sans-serif;
        font-weight: 900;
        font-size: 13px;
        text-transform: uppercase;
        letter-spacing: 0.06em;
        color: var(--text-muted, #6b6260);
    }
    .plp__mfilters-body .plp__facet-chips {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
    }
    .plp__mfilters-body .plp__facet-chip {
        display: inline-block;
        padding: 8px 14px;
        background: #fff;
        border: 1px solid rgba(0, 0, 0, 0.14);
        border-radius: 999px;
        font-size: 13px;
        color: var(--text, #2A2A2A);
        text-decoration: none;
    }
    .plp__mfilters-body .plp__facet-chip.is-active {
        background: var(--text, #2A2A2A);
        color: #fff;
        border-color: var(--text, #2A2A2A);
    }
    .plp__mfilters-body .plp__facet-swatches {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
    }
    .plp__mfilters-body .plp__facet-swatch {
        width: 38px; height: 38px;
        border-radius: 999px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        border: 2px solid transparent;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
    }
    .plp__mfilters-body .plp__facet-swatch.is-active {
        border-color: var(--text, #2A2A2A);
    }
    .plp__mfilters-body .plp__facet-swatch-dot {
        width: 28px; height: 28px;
        border-radius: 999px;
        display: block;
    }
    .plp__mfilters-foot {
        flex: 0 0 auto;
        display: flex;
        gap: 12px;
        align-items: center;
        padding: 14px 20px calc(14px + env(safe-area-inset-bottom));
        border-top: 1px dashed rgba(0, 0, 0, 0.12);
        background: #fff;
    }
    .plp__mfilters-reset {
        font-size: 14px;
        color: var(--text-muted, #6b6260);
        text-decoration: underline;
    }
    .plp__mfilters-apply {
        flex: 1 1 auto;
        text-align: center;
        font-size: 15px;
        padding: 12px 18px;
        cursor: pointer;
    }

    /* Body scroll lock while drawer is open. */
    body.fab-mfilters-open {
        overflow: hidden;
        touch-action: none;
    }
}

/* Single nav row: the old-theme menu rides the secondary location (2026-07-02). */
body.jm-v2 .secondary-navigation { display: none !important; }

/* PDP: suppress plugin leftovers inside the v2 view (2026-07-02).
   MPC (retires at flip) injects its meter form + price table above the jm
   stepper; WC's default stock line duplicates the styled stock box.
   NB: single-product is a BODY class → compound selector, not descendant
   (the original descendant form matched nothing — 2026-07-22, row 93).
   display:none keeps MPC's length_needed in the form POST (engine owns
   quantity; MPC just needs its field present until it retires at flip). */
body.jm-v2.single-product p.stock {
    display: none !important;
}
/* MPC UI + WC qty hidden ONLY where the engine owns the form (body.jm-engine-pdp,
   stamped by jm-add-to-cart's takeover — simple sells-by-meter products). The
   unscoped version made variable + unit products unbuyable: no stepper, no MPC
   calculator, no qty input (Marc, 2026-07-22 M8). qty hide keys on the engine's
   own .jm-hidden-qty class — correct scope by construction. */
body.jm-engine-pdp.single-product .wc-measurement-price-calculator,
body.jm-engine-pdp.single-product .wc-measurement-price-calculator-price-table,
body.jm-engine-pdp.single-product #price_calculator,
body.jm-engine-pdp.single-product .wc-mpc-form,
body.jm-engine-pdp.single-product .product_price_calculator,
body.jm-v2.single-product form.cart input.jm-hidden-qty[type=number] {
    display: none !important;
}

/* ── Variable + unit products: native WC/MPC form styled to the engine look ──
   Engine-owned simple PDPs never render these (takeover removes MPC there).
   First styled 2026-07-22 — this surface was display:none'd AND unbuyable
   before the ownership split, so it never got the design pass. */
body.jm-v2.single-product form.cart table.variations {
    width: 100%; margin: 0 0 14px; border-collapse: collapse;
}
body.jm-v2.single-product form.cart table.variations th.label {
    padding: 0 16px 8px 0; font-weight: 600; text-align: left; white-space: nowrap; vertical-align: middle;
}
body.jm-v2.single-product form.cart table.variations td.value { width: 100%; padding-bottom: 8px; }
/* Two defects here, both from the same 2026-07-22 pass, both reported by Marc
   2026-07-26 as "teksten i farvevælgeren er ikke helt synlig".

   1) HEIGHT. Parent Shoptimizer main.min.css carries a bare `select{height:40px}`.
      With the global border-box, our 12px+12px padding and 1.5px+1.5px border ate
      27 of those 40px, leaving a 13px content box for text that needs ~19px — so
      the glyphs were sliced through the descenders ("Hvid med sølv" lost the y-tail
      and the ø-stroke). mobile-sync.css L826 then forces 16px under 899px, which
      makes it worse exactly where it is hardest to read. Height must be auto; the
      48px floor matches the qty input's min-height so the row lines up.

   2) ARROW. `background: #fff` is a SHORTHAND, so it also reset the parent's
      background-image — and the parent's `appearance: none` stayed. The picker
      rendered as a plain white box with no affordance that it opens. Set the
      colour on its own longhand and put the chevron back; padding-right clears it. */
body.jm-v2.single-product form.cart table.variations select {
    width: 100%; padding: 12px 40px 12px 16px; border: 1.5px solid var(--border);
    border-radius: 12px; font-size: 15px;
    height: auto; min-height: 48px; line-height: 1.25;
    background-color: #fff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.75 6 6.25l5-4.5' stroke='%23767676' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    background-size: 12px 8px;
}
body.jm-v2.single-product form.cart .reset_variations {
    display: inline-block; margin-top: 4px; font-size: 13px; color: var(--text-muted);
}
body.jm-v2.single-product form.cart #price_calculator.wc-measurement-price-calculator-price-table {
    width: 100%; margin: 0 0 14px; border-collapse: separate; border-spacing: 0;
    background: var(--cream); border: 1.5px solid var(--border-subtle);
    border-radius: 14px; overflow: hidden;
}
body.jm-v2.single-product form.cart #price_calculator .price-table-row th,
body.jm-v2.single-product form.cart #price_calculator .price-table-row td {
    padding: 12px 16px; font-size: 14px; text-align: left; border: 0;
}
body.jm-v2.single-product form.cart #price_calculator input.amount_needed {
    width: 110px; padding: 10px 12px; border: 1.5px solid var(--border);
    border-radius: 10px; font-size: 15px; text-align: center; background: #fff;
}
/* MPC renders the length field two ways, and only one of them was styled.
   22 products have accepted_input = "limited", which emits a
   <select class="amount_needed"> instead of the number input above — so they
   kept the raw parent skin (40px tall, 0.3rem radius, 1px #d2d6dc, grey caret)
   sitting directly under a 48px/12px-radius colour picker. Same rule set as
   table.variations select so the two stack as one control; width is content-
   sized because the options are "0,5 m", "1 m" — not a full-width row.
   Do NOT fold this into the input.amount_needed rule above: that would stretch
   the compact 110px box on the other 40 products. */
body.jm-v2.single-product form.cart #price_calculator select.amount_needed {
    width: auto; min-width: 120px; padding: 12px 40px 12px 16px;
    border: 1.5px solid var(--border); border-radius: 12px; font-size: 15px;
    height: auto; min-height: 48px; line-height: 1.25;
    background-color: #fff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.75 6 6.25l5-4.5' stroke='%23767676' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    background-size: 12px 8px;
}
body.jm-v2.single-product form.cart #price_calculator .calculated-price td { font-weight: 700; }
body.jm-v2.single-product form.cart .woocommerce-variation-add-to-cart {
    display: flex; gap: 10px; align-items: stretch;
}
body.jm-v2.single-product form.cart .woocommerce-variation-add-to-cart .quantity input.qty {
    width: 64px; min-height: 48px; padding: 0 8px; border: 1.5px solid var(--border);
    border-radius: 12px; text-align: center; font-size: 15px;
}
/* <select> og <input> ARVER hverken font-family eller color, og ingen af
   reglerne ovenfor satte dem eksplicit. Konsekvens: kontrollerne stod i
   UA-fallback (Arial), og på iOS-Safari renderes en select uden eksplicit
   color i systemets BLÅ tint — Marc 2026-08-05: "dropdown ikke tilpasset
   temaet og skriften er blå" (længdevælger på elastik = select.amount_needed,
   samme hul i alle fire kontroller). Én regel, temaets font + blæk: */
body.jm-v2.single-product form.cart table.variations select,
body.jm-v2.single-product form.cart #price_calculator select.amount_needed,
body.jm-v2.single-product form.cart #price_calculator input.amount_needed,
body.jm-v2.single-product form.cart .woocommerce-variation-add-to-cart .quantity input.qty {
    font-family: 'Nunito', sans-serif;
    font-weight: 600;
    color: var(--text);
}

/* ── Footer link columns (2026-07-23: shop's own Footer Menu #1-3 rendered) ── */
body.jm-v2 .jm-footer-links { background: var(--cream-dark, #F7F6F3); border-top: 1px solid var(--border-subtle, #F0EEE9); padding: 36px 0 8px; }
body.jm-v2 .jm-footer-links__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
body.jm-v2 .jm-footer-links__list { list-style: none; margin: 0; padding: 0; }
body.jm-v2 .jm-footer-links__list li { margin: 0 0 9px; }
body.jm-v2 .jm-footer-links__list a { font-size: 13.5px; color: var(--text-muted, #5D7184); text-decoration: none; }
body.jm-v2 .jm-footer-links__list a:hover { color: var(--jm-pink-dark, #C75B80); text-decoration: underline; text-underline-offset: 2px; }
@media (max-width: 639px) { body.jm-v2 .jm-footer-links__grid { grid-template-columns: 1fr 1fr; gap: 18px; } }

/* ── Mega-menu row layout ──────────────────────────────────────────────────
   Marc 2026-07-23: navne + tal brød om til to linjer. Flex-løsningen var
   rigtig — tallet skal pinnes til højre — men `text-overflow: ellipsis` var
   en overflødig tilføjelse, og den kostede læsbarheden: 34 af 64 kategorier
   stod afklippet ("Bomulds…", "Rib Jers…", "Wellnes…"). Det er anden halvdel
   af Marcs 2026-07-30-punkt, "mega menuen er svær at læse" — den første
   halvdel (gennemsigtig baggrund) blev lukket i style.css:240.

   Rodårsagen var hverken skriftstørrelsen eller kolonneantallet: hvert link
   arvede `padding: 12px 16px` fra Shoptimizers sub-menu-styling. Det er
   32 px vandret stjålet fra en kolonne på 163 px — derfor blev "Bomulds
   Jersey" (135 px tekst) klippet i et felt på 102 px — og 24 px lodret pr.
   række gange 14 rækker i den højeste kolonne.

   Målt før/efter i samme kørsel, 1440×1000, panelet åbent:
       før:  1.219 px højt, 34 afklippede
       efter:   851 px højt,  0 afklippede, 0 tal på egen linje
   Kun 2 rækker bruger nu to linjer, og `align-items: baseline` holder tallet
   på første linje, så det oprindelige 2026-07-23-symptom ikke kommer igen.
   Ombrydning frem for afklipning er også det sikre valg: en ny kategori med
   et langt navn bliver lang, aldrig ulæselig. ────────────────────────────── */
body.jm-v2 .jm-mega__col li { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; white-space: normal; }
body.jm-v2 .jm-mega__col li a { min-width: 0; flex: 1 1 auto; padding: 4px 0; }
body.jm-v2 .jm-mega__col .jm-mega__cnt { flex: 0 0 auto; margin-left: 0; }
/* Samme arvede padding rammer de to tværgående bånd. */
body.jm-v2 .jm-mega__uni a, body.jm-v2 .jm-mega__motiv a { padding: 4px 0; }

/* ── Mega-menu count badge, DESKTOP base (mobile-sync carries ≤899; Marc
   2026-07-23 "numbers looking off" — desktop had no styling at all) ── */
body.jm-v2 .jm-mega__cnt, body.jm-v2 .jm-menu-count {
    display: inline-block; min-width: 20px; padding: 1px 7px; margin-left: 6px;
    font-size: 11px; font-weight: 700; line-height: 16px; text-align: center;
    color: var(--text-muted, #5D7184); background: var(--cream-dark, #F7F6F3);
    border: 1px solid var(--border-subtle, #F0EEE9); border-radius: 50px;
    vertical-align: 1px;
}
body.jm-v2 .jm-mega__col li a:hover + .jm-mega__cnt { color: var(--jm-pink-dark, #C75B80); }

/* pdp__sub can now carry a rendered TablePress spec table (was a raw shortcode) */
body.jm-v2 .pdp__sub .tablepress { margin: 10px 0 0; font-size: 13.5px; }
body.jm-v2 .pdp__sub .tablepress td, body.jm-v2 .pdp__sub .tablepress th { padding: 6px 10px; }

/* Nav condensing 993-1420px: the full menu wrapped to two lines in this band
   (seen live 2026-07-02 at 1356px). Tighter gaps + type until wide desktop. */
@media (min-width: 993px) and (max-width: 1420px) {
    /* Text sits in a <span> inside .cg-menu-link (Shoptimizer markup). */
    body.jm-v2 .main-navigation .cg-menu-link,
    body.jm-v2 .main-navigation .cg-menu-link span,
    body.jm-v2 .main-navigation .main-menu-link span {
        font-size: 13.5px !important;
        letter-spacing: 0 !important;
        white-space: nowrap;
    }
    body.jm-v2 .main-navigation .cg-menu-link {
        padding-left: 8px !important;
        padding-right: 8px !important;
    }
    body.jm-v2 .main-navigation ul.menu { flex-wrap: nowrap !important; gap: 0 !important; }
}

/* Narrow-laptop band: 9 menu items need one more step down to stay on one line. */
@media (min-width: 993px) and (max-width: 1200px) {
    body.jm-v2 .main-navigation .cg-menu-link,
    body.jm-v2 .main-navigation .cg-menu-link span,
    body.jm-v2 .main-navigation .main-menu-link span {
        font-size: 12px !important;
    }
    body.jm-v2 .main-navigation .cg-menu-link {
        padding-left: 5px !important;
        padding-right: 5px !important;
    }
}

/* ── CART LINE STEPPER (fabricly cart-line__qty-stepper port, jm palette) ──
   Cream pill with −/+ steps of 0,5 m per line; endpoint jm_update_cart_length
   in jm-add-to-cart.php clamps to the engine's max-meters. */
body.jm-v2.woocommerce-cart .cart-line__qty.jm-cart-stepper {
    display: inline-flex;
    align-items: center;
    gap: 0;
    padding: 0;
    background: var(--jm-cream-dark, #F5F0EB);
    border-radius: 999px;
    overflow: hidden;
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
}
body.jm-v2.woocommerce-cart .jm-cart-stepper .jm-mc-stepper__btn {
    width: 26px;
    height: 26px;
    background: transparent;
    border: none;
    cursor: pointer;
    font-size: 14px;
    line-height: 1;
    color: var(--jm-text, #333E48);
    padding: 0;
    border-radius: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 150ms ease, color 150ms ease;
}
body.jm-v2.woocommerce-cart .jm-cart-stepper .jm-mc-stepper__btn:hover {
    background: var(--jm-pink, #E7A5B8);
    color: #fff;
}
body.jm-v2.woocommerce-cart .jm-cart-stepper .jm-mc-stepper__val {
    min-width: 52px;
    text-align: center;
    font-size: 13px;
    padding: 0 4px;
}

/* ── PDP WISHLIST BUTTON (under the CTA — fabricly Nähliste parity) ────── */
body.jm-v2.single-product .pdp__wishlist-btn {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 10px;
    padding: 12px 16px;
    background: #fff;
    border: 1px solid var(--jm-border, #ECEAE6);
    border-radius: var(--jm-radius, 10px);
    font-family: var(--jm-font-body, 'Inter', sans-serif);
    font-weight: 600;
    font-size: 14px;
    color: var(--jm-text, #333E48);
    cursor: pointer;
    transition: border-color 150ms ease, color 150ms ease;
}
body.jm-v2.single-product .pdp__wishlist-btn:hover {
    border-color: var(--jm-pink, #E7A5B8);
    color: var(--jm-pink-dark, #E27297);
}
body.jm-v2.single-product .pdp__wishlist-btn .fab-heart__icon {
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
}
body.jm-v2.single-product .pdp__wishlist-btn .pdp__wishlist-label--on { display: none; }
body.jm-v2.single-product .pdp__wishlist-btn.is-active .pdp__wishlist-label--off { display: none; }
body.jm-v2.single-product .pdp__wishlist-btn.is-active .pdp__wishlist-label--on { display: inline; }
body.jm-v2.single-product .pdp__wishlist-btn.is-active {
    border-color: var(--jm-pink, #E7A5B8);
    color: var(--jm-pink-dark, #E27297);
}
body.jm-v2.single-product .pdp__wishlist-btn.is-active .fab-heart__icon path {
    fill: var(--jm-pink, #E7A5B8);
    stroke: var(--jm-pink-dark, #E27297);
}

/* ── Stof A-Z mega panel (Marc 2026-07-23) ── */
body.jm-v2 .jm-mega--az { padding-bottom: 8px; }
body.jm-v2 .jm-mega--az .jm-mega__az-letter {
    font-size: 11px; font-weight: 800; letter-spacing: 0.16em;
    color: var(--jm-pink, #E27297); margin: 12px 0 4px;
}
body.jm-v2 .jm-mega--az .jm-mega__az-letter:first-child { margin-top: 0; }
body.jm-v2 .jm-mega--az ul { margin: 0 0 6px; }
/* `grid-column: 1 / -1` var en no-op: .jm-mega er `display: flex` (style.css:294),
   ikke grid. Foden lå derfor som en 6. KOLONNE ved siden af de fem
   bogstavspalter — jm_render_stof_az_panel() lægger den som sidste flex-barn
   (inc/nav-builder.php:482) — og pressede dem sammen, i stedet for at ligge
   som en fuldbredde-fod under dem. `flex: 0 0 100%` er flex-oversættelsen af
   den samme hensigt, og virker fordi containeren har flex-wrap: wrap. */
body.jm-v2 .jm-mega__az-foot { flex: 0 0 100%; border-top: 1px dashed var(--border, #ECEAE6); padding-top: 10px; margin-top: 6px; }
/* Følgefejl af det samme: `.jm-mega__col:last-child { border-right: 0 }`
   (style.css:379) ramte FODEN og ikke femte spalte, så panelet endte med en
   stiplet lodret streg hængende yderst til højre uden noget til højre for sig.
   nth-last-child(2) er den femte spalte, netop fordi foden altid er sidst. */
body.jm-v2 .jm-mega--az .jm-mega__col:nth-last-child(2) { border-right: 0; padding-right: 0; }
/* De fire ulinkede poster (Filt, Folie jersey, Kunstpels, Markise). Uden en
   regel her arvede <span> hverken .jm-mega__col a's polstring eller farve, så
   de sad forskudt op ad de rigtige links. Samme dæmpede kursiv som på
   A-Z-siden, så "ikke et link" ser ens ud begge steder. */
body.jm-v2 .jm-mega__az-plain {
    display: block;
    padding: 4px 0;
    color: var(--text-muted, #888);
    font-style: italic;
}
body.jm-v2 .jm-mega__az-foot a { font-weight: 800; font-size: 13px; color: var(--jm-pink-dark, #C75B80); text-decoration: none; }
body.jm-v2 .jm-mega__az-foot a:hover { text-decoration: underline; text-underline-offset: 2px; }

/* ── Non-engine ATC submit: same centered skin as the engine CTA
   (Marc 2026-07-23: tilbehør button text off-center, qty rough) ── */
body.jm-v2.single-product form.cart .single_add_to_cart_button {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    text-align: center; font-weight: 800;
}
body.jm-v2.single-product form.cart .woocommerce-variation-add-to-cart .quantity { display: flex; }

/* ── Sticky killer fix (2026-07-23): the parent theme sets overflow-x:hidden
   on html+body → body becomes the scroll container → EVERY position:sticky
   dies (PDP buy box, Marc: "fabricly's follows the image"). clip gives the
   same horizontal clipping WITHOUT creating a scroll container. ── */
html { overflow-x: clip !important; }
body.jm-v2 { overflow-x: clip !important; overflow-y: visible !important; }

/* Non-engine ATC: same parent-theme margin-left:40px indent kill (measured) */
body.jm-v2.single-product form.cart .single_add_to_cart_button { margin-left: 0 !important; margin-right: 0 !important; }

/* ─── Senest viste — vandret strip af små kort (senest-viste.js renderer
   markup'en; hidden indtil funktionel-samtykke + ikke-tom liste) ─────────── */
.pdp__senest { max-width: 1280px; margin: 0 auto; padding: 0 var(--container-pad) 48px; }
.pdp__senest [data-jm-senest-viste][hidden] { display: none; }
.jm-senest__h {
    font-family: 'Nunito', sans-serif; font-weight: 800; font-size: 18px;
    color: var(--text); margin: 0 0 14px;
}
.jm-senest__list {
    display: flex; gap: 14px; margin: 0; padding: 0 0 8px; list-style: none;
    overflow-x: auto; -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}
.jm-senest__list li { flex: 0 0 128px; }
.jm-senest__list a {
    display: block; text-decoration: none; color: var(--text);
    background: #fff; border-radius: 6px; padding: 8px;
    box-shadow: var(--shadow-1);
}
.jm-senest__list img {
    width: 100%; aspect-ratio: 1; object-fit: cover;
    border-radius: 4px; display: block; margin-bottom: 8px;
    background: var(--cream-dark);
}
.jm-senest__list span {
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden;
    font-family: 'Nunito', sans-serif; font-weight: 600; font-size: 12px;
    line-height: 1.3;
}

/* Tak-sidens ét-klik-knap arver linkets udseende (button-reset) */
.oc__xs-form { margin: 0; display: inline; }
button.oc__xs-add {
    background: none; border: 0; padding: 0; cursor: pointer;
    font: inherit; color: var(--jm-pink-dark, #C75B80); font-weight: 800;
}
button.oc__xs-add:hover { text-decoration: underline; }

/* QA B10 2026-08-07: på KURV-siden hedder flyout-wrappen .widget_shopping_cart
   (ikke .shoptimizer-mini-cart-wrap), så parent-temaets a.remove slap igennem:
   text-indent -9999px + cirkel uden glyf = tom stiplet cirkel (kollega-fund).
   Vis ×'et og gør cirklen bevidst: */
body.jm-v2 .widget_shopping_cart a.remove {
    text-indent: 0 !important;
    width: 24px !important;
    height: 24px !important;
    line-height: 21px !important;
    border: 1.5px solid var(--jm-pink, #E27297) !important;
    border-radius: 50% !important;
    color: var(--jm-pink-dark, #C75B80) !important;
    background: #fff !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    text-align: center !important;
}

/* ═══ QA-runde 2 (Marc mobil, 2026-08-07) ═══════════════════════════════ */
/* D11: mørke knapper på Gemte varer/min konto matchede ikke temaet */
.wish-bulk__btn { background: var(--jm-pink, #E27297); }
.wish-bulk__btn:hover { background: var(--jm-pink-dark, #C75B80); }
.dash__filter.is-active {
    background: var(--jm-pink, #E27297);
    border-color: var(--jm-pink, #E27297);
    color: #fff;
}
.dash__filter:hover { color: var(--jm-pink-dark, #C75B80); border-color: var(--jm-pink, #E27297); }

/* A-Z-panelet: udfoldede bogstav-lister i draweren */
.jm-azm__chip { cursor: pointer; }
.jm-azm__chip.is-active {
    background: var(--jm-pink, #E27297);
    border-color: var(--jm-pink, #E27297);
    color: #fff;
}
/* Bogstav-listerne spejler panelets egne rækker (.jm-azm__pop) — Marcs
   reference: symønstre-rækkernes ro og overskuelighed. */
.jm-azm__list {
    list-style: none;
    margin: 6px 0 4px;
    padding: 0 0 0 4px;
}
.jm-azm__list li { display: flex; margin: 0; }
.jm-azm__list a {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: 8px 0;
    font-family: 'Nunito', sans-serif;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.25;
    color: var(--text, #333E48);
    text-decoration: none;
    border-bottom: 1px dashed var(--border, #ECEAE6);
}
.jm-azm__list li:last-child a { border-bottom: none; }
.jm-azm__list a:active { color: var(--jm-pink-dark, #C75B80); }

/* D9: kategori-chips på shop-forsiden — kun mobil (desktop har megamenuen) */
.plp__quickcats-wrap { position: relative; }
.plp__quickcats-eyebrow {
    margin: 10px 16px 6px;
    font-family: 'JetBrains Mono', 'Courier New', monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--jm-pink-dark, #C75B80);
}
.plp__quickcats {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    touch-action: pan-x pan-y; /* iOS: tillad eksplicit vandret swipe i rækken */
    overscroll-behavior-x: contain;
    padding: 2px 16px 10px;
    margin: 0 0 2px;
}
/* Fade i højre kant = "der er mere" — affordance når scrollbaren er skjult */
.plp__quickcats-wrap::after {
    content: '';
    position: absolute;
    top: 0; right: 0; bottom: 6px;
    width: 42px;
    background: linear-gradient(to right, rgba(253,253,252,0), var(--cream, #FDFDFC));
    pointer-events: none;
}
.plp__quickcats::-webkit-scrollbar { display: none; }
.plp__quickcat {
    flex: 0 0 auto;
    padding: 9px 14px;
    border: 1.5px solid var(--border, #ECEAE6);
    border-radius: 100px;
    background: #fff;
    color: var(--text, #2a2a2a);
    font: 600 13px/1 var(--font-body, sans-serif);
    text-decoration: none;
    white-space: nowrap;
}
.plp__quickcat--az {
    border-color: var(--jm-pink, #E27297);
    color: var(--jm-pink-dark, #C75B80);
}
@media (min-width: 993px) {
    .plp__quickcats-wrap { display: none; }
}

/* ═══ Desktop facet-accordion v2 (Marc 2026-08-07: "ved siden af hinanden,
   foldes ud på en flot måde, ALT efter polaroid-temaet"). Grid-tricket:
   grupperne er display:contents, labels lander som piller på række 1,
   det åbne panel spænder hele række 2 som en tapet seddel. KUN ≥993px —
   mobilens filter-drawer viser alt udfoldet og ignorerer is-open. ═══ */
@media (min-width: 993px) {
    body.jm-v2 .jm-facets {
        display: grid;
        grid-template-columns: repeat(6, max-content) 1fr;
        column-gap: 10px;
        align-items: center;
    }
    body.jm-v2 .jm-facets__group { display: contents; }
    body.jm-v2 .jm-facets__label {
        grid-row: 1;
        display: inline-flex;
        align-items: center;
        gap: 8px;
        margin: 0;
        padding: 10px 16px;
        border: 1.5px solid var(--border, #ECEAE6);
        border-radius: 100px;
        background: #fff;
        cursor: pointer;
        user-select: none;
    }
    body.jm-v2 .jm-facets__label::after {
        content: '+';
        font-size: 15px;
        font-weight: 400;
        line-height: 1;
        color: var(--jm-pink-dark, #C75B80);
    }
    body.jm-v2 .jm-facets__group.is-open .jm-facets__label {
        background: var(--jm-pink, #E27297);
        border-color: var(--jm-pink, #E27297);
        color: #fff;
    }
    body.jm-v2 .jm-facets__group.is-open .jm-facets__label::after { content: '\2212'; color: #fff; }
    body.jm-v2 .jm-facets__chips,
    body.jm-v2 .jm-facets__swatches {
        grid-row: 2;
        grid-column: 1 / -1;
    }
    body.jm-v2 .jm-facets__group:not(.is-open) .jm-facets__chips,
    body.jm-v2 .jm-facets__group:not(.is-open) .jm-facets__swatches,
    body.jm-v2 .jm-facets__group:not(.is-open) .jm-facets__more { display: none; }
    /* Det åbne panel = tapet seddel (polaroid-DNA) */
    body.jm-v2 .jm-facets__group.is-open .jm-facets__chips,
    body.jm-v2 .jm-facets__group.is-open .jm-facets__swatches {
        position: relative;
        margin-top: 16px;
        padding: 18px 16px 14px;
        background: #FBF9F7;
        border: 1px dashed var(--border, #ECEAE6);
        border-radius: 10px;
        transform: rotate(-0.2deg);
    }
    body.jm-v2 .jm-facets__group.is-open .jm-facets__chips::before,
    body.jm-v2 .jm-facets__group.is-open .jm-facets__swatches::before {
        content: '';
        position: absolute;
        top: -10px;
        left: 26px;
        width: 70px;
        height: 20px;
        background: rgba(240, 200, 175, 0.6);
        transform: rotate(-2deg);
        border-radius: 2px;
    }
    body.jm-v2 .jm-facets__more {
        grid-row: 3;
        grid-column: 1 / -1;
        justify-self: start;
        margin-top: 8px;
    }
    body.jm-v2 .jm-facets__reset {
        grid-row: 1;
        grid-column: 7;
        justify-self: end;
    }
}

/* QA 2026-08-07: fragtvalg flyttet op mellem adresse og betaling — tapet
   kort i polaroid-sproget, samme familie som betalingsboksen. */
body.jm-v2.woocommerce-checkout .fab-shipping-relocated {
    position: relative;
    background: #fff;
    border: 1px dashed var(--border, #ECEAE6);
    border-radius: 10px;
    padding: 18px 16px 12px;
    margin: 18px 0 0;
}
body.jm-v2.woocommerce-checkout .fab-shipping-relocated::before {
    content: '';
    position: absolute;
    top: -10px;
    left: 24px;
    width: 64px;
    height: 20px;
    background: rgba(240, 200, 175, 0.6);
    transform: rotate(-2deg);
    border-radius: 2px;
}
body.jm-v2.woocommerce-checkout .fab-shipping-relocated__h {
    margin: 0 0 10px;
    font-size: 16px;
}
body.jm-v2.woocommerce-checkout .fab-shipping-relocated__body ul#shipping_method {
    list-style: none;
    margin: 0;
    padding: 0;
}
/* Originalrækken i oversigten er tømt (indholdet bor i fragt-boksen) — skjul
   den med CSS så den aldrig kan dukke op mellem re-renders. */
body.jm-v2.woocommerce-checkout.fab-shipping-moved #order_review tr.woocommerce-shipping-totals { display: none !important; }

/* Søge-overlay (ikonet i headeren) — polaroid-kort på mørklagt bagtæppe */
#jm-msearch {
    position: fixed;
    inset: 0;
    z-index: 100000;
    background: rgba(51, 62, 72, 0.35);
    display: none;
}
#jm-msearch.is-open { display: block; }
#jm-msearch .jm-msearch__card {
    position: relative;
    margin: 16px 12px 0;
    background: var(--cream, #FDFDFC);
    border: 1px dashed var(--border, #ECEAE6);
    border-radius: 12px;
    padding: 18px 54px 18px 16px;
    box-shadow: 0 14px 44px rgba(51, 62, 72, 0.2);
}
#jm-msearch .jm-msearch__card::before {
    content: '';
    position: absolute;
    top: -10px;
    left: 24px;
    width: 68px;
    height: 20px;
    background: rgba(240, 200, 175, 0.65);
    transform: rotate(-2deg);
    border-radius: 2px;
}
#jm-msearch input.search-field {
    width: 100%;
    font-size: 16px; /* under 16 zoomer iOS ind */
    padding: 12px 14px;
    border: 1.5px solid var(--border, #ECEAE6);
    border-radius: 10px;
    background: #fff;
}
#jm-msearch .jm-msearch__close {
    position: absolute;
    top: 50%;
    right: 12px;
    transform: translateY(-50%);
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 34px;
    height: 34px;
    min-width: 34px;
    min-height: 34px;
    padding: 0;
    margin: 0;
    appearance: none;
    -webkit-appearance: none;
    border: 1.5px solid var(--jm-pink, #E27297);
    border-radius: 50%;
    background: #fff;
    color: var(--jm-pink-dark, #C75B80);
    font-size: 18px;
    line-height: 1;
    box-shadow: none;
    cursor: pointer;
}
body.jm-msearch-open { overflow: hidden; }
body.jm-msearch-open .fab-search-drop { z-index: 100001 !important; }

/* Spar-badge på kortbilleder - polaroid-sprog (Marc launch-aften) */
body.jm-v2 .sb-sku__save {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    background: #fff;
    border: 2px dashed var(--jm-pink, #E27297);
    color: var(--jm-pink-dark, #C75B80);
    border-radius: 999px;
    padding: 8px 11px;
    font-family: 'Poppins', sans-serif;
    font-weight: 800;
    font-size: 13px;
    line-height: 1;
    transform: rotate(6deg);
    box-shadow: 0 2px 8px rgba(51, 62, 72, 0.10);
}

/* PDP: spar-badge større, top-venstre (hjertet bor til højre) */
body.jm-v2 .pdp__gallery .sb-sku__save {
    top: 16px;
    left: 16px;
    right: auto;
    font-size: 17px;
    padding: 12px 15px;
    transform: rotate(-5deg);
}
/* PDP: gennemstreget førpris ved siden af rabatprisen */
body.jm-v2 .pdp__price-was {
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    font-size: 22px;
    color: #9AA6B0;
    text-decoration: line-through;
    margin-right: 10px;
    align-self: center;
}
