/**
 * Cart Hopper (FunnelKit Sliding Cart) — bundle item + footer redesign.
 *
 * Companion to credit-bundle-cart-item-design.css. The shared file already
 * defines the .cfe-line chip + math base styling and the design-token
 * alias bridge (--fog, --mist, --ink, --mint-bg, etc.) on .cfe-line and
 * .cfe-line__row.
 *
 * This file:
 *   - Restructures the FK Cart drawer item into a Fog-tinted card
 *     (no thumbnail, no qty widget, X repositioned to top-right).
 *   - Styles the chips, edit link, savings pill, and price block per the
 *     CFE Design System cart-slider redesign.
 *   - Styles the FK footer (subtotal + savings pill + checkout CTA).
 *
 * Companion JS cart-hopper-bundle-item-reposition.js relocates
 * .cfe-line__row--hopper to be a direct child of .fkcart--item and pulls
 * .fkcart-item-misc (price block) into the price slot inside our row.
 *
 * Markup is emitted by WC_CF_Credit_Bundle_Cart_Hopper_Item hooked at
 * `fkcart_after_item_meta` (per item) and `fkcart_after_order_summary`
 * (footer addons).
 */

/* ============================================================
   Token alias bridge — .fkcart--item context.
   The design's tokens (--fog, --mint-bg, etc.) come from the
   parent .cfe-line bridge, but the .fkcart--item card itself
   needs them at its own scope since chip rules sit on it.
   ============================================================ */
.fkcart--item {
    --fog:          var(--cfe-ds-color-fog,          #F4F5F7);
    --mist:         var(--cfe-ds-color-mist,         #E8EAED);
    --ink:          var(--cfe-ds-color-ink,          #1B2A3B);
    --graphite:     var(--cfe-ds-color-graphite,     #5B6573);
    --mint-bg:      var(--cfe-ds-color-mint-bg,      #ECFDF5);
    --mint-border:  var(--cfe-ds-color-mint-border,  #6EE7B7);
    --mint-text:    var(--cfe-ds-color-mint-text,    #0F7A2A);
    --sky-text:     var(--cfe-ds-color-sky-text,     #3E8AB8);
    --font-display: var(--cfe-ds-font-display,       'Outfit', -apple-system, BlinkMacSystemFont, sans-serif);
    --font-sans:    var(--cfe-ds-font-body,          'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif);
}

/* ============================================================
   Item card layout — Fog tile, vertical stack, no thumbnail.
   ============================================================ */
.fkcart--item {
    position: relative !important;
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    gap: 10px !important;
    background: var(--fog);
    border: 1px solid rgba(27, 42, 59, 0.06);
    border-radius: 12px;
    padding: 16px;
    margin: 0 16px 14px 16px;
    transition: box-shadow 0.15s ease;
}

.fkcart--item:hover {
    box-shadow: 0 6px 18px rgba(27, 42, 59, 0.06);
}

/* Tighter gap inside the card after relocation. */
#fkcart-modal .fkcart-slider-body .fkcart-item-wrap .fkcart--item {
    gap: 10px !important;
}

/* Hide the thumbnail entirely; keep the wrapper as an absolute mount
   point for the X button. */
.fkcart--item .fkcart-thumb-wrap {
    position: static !important;
    width: 24px !important;
    min-width: 24px !important;
    max-width: 24px !important;
    height: 24px !important;
    margin: 0 !important;
    padding: 0 !important;
    flex: 0 0 24px !important;
    align-self: flex-start;
}

/* Hide everything inside the thumb wrapper except the remove (X) button. */
.fkcart--item .fkcart-thumb-wrap > *:not(.fkcart-remove-item) {
    display: none !important;
}

/* X button — circular grey, top-right of card. */
.fkcart--item .fkcart-remove-item {
    position: static;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: rgba(27, 42, 59, 0.08);
    color: var(--graphite);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.fkcart--item .fkcart-remove-item:hover {
    background: var(--ink);
    color: #fff;
}

.fkcart--item .fkcart-remove-item {
    line-height: 1;
    padding: 0;
}

.fkcart--item .fkcart-remove-item > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 12px;
    height: 12px;
    line-height: 1;
    padding: 0;
    margin: 0;
}

.fkcart--item .fkcart-remove-item svg {
    width: 12px;
    height: 12px;
    display: block;
}

/* Item info: FK defaults to display:flex with gap:16px and stacks
   .fkcart-item-meta + .fkcart-item-misc side-by-side, which steals
   ~140px from the title row even when JS is moving misc into our
   price slot. Force column direction so .fkcart-item-meta gets the
   full container width. Hide misc while it's still in info — JS
   relocates the same node into .cfe-line__price-slot where it
   shows again because the rule only targets misc as a direct child
   of info. */
#fkcart-modal .fkcart--item .fkcart-item-info {
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
    width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
}

#fkcart-modal .fkcart--item .fkcart-item-info > .fkcart-item-meta,
#fkcart-modal .fkcart-item-wrap .fkcart--item .fkcart-item-wrap-start .fkcart-item-meta {
    width: 100% !important;
    max-width: 100% !important;
    flex: 1 1 100% !important;
    min-width: 0 !important;
}

#fkcart-modal .fkcart--item .fkcart-item-info > .fkcart-item-misc {
    display: none !important;
}

.fkcart--item .fkcart-item-meta {
    display: flex;
    flex-direction: column;
    gap: 0;
    width: 100%;
}

.fkcart--item .fkcart-qty-wrap {
    display: none !important;
}

/* Hide FK's native attribute display + native edit link wrapper.
   Both .fkcart-item-meta-content divs are redundant — our
   .cfe-line__row--hopper renders chips + edit + savings instead. */
.fkcart--item .fkcart-item-meta-content,
.fkcart--item .fkcart-attr-wrap,
.fkcart--item dl.variation,
.fkcart--item .variation,
.fkcart--item .product-quantity {
    display: none !important;
}

/* Title row — true flex row matching design's .a-item__top.
   Title left, X right (after JS-moved .fkcart-thumb-wrap), 12px gap.
   Title gets flex:1 + min-width:0 so ellipsis triggers right at the X. */
.fkcart--item .fkcart-item-title-price {
    display: flex !important;
    flex-direction: row !important;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    margin: 0;
    padding: 0;
}

/* Title — use #fkcart-modal prefix to beat FK's
   
   rule which sets font-weight: 600 (heavier glyphs that overflowed
   the available row width). */
/* Title — match design's .a-item__title.
   Uses #fkcart-modal prefix to win specificity over FK's
   
   which sets font-weight:600 (heavier glyphs were overflowing the row). */
#fkcart-modal .fkcart--item .fkcart-item-title-price > a:first-child,
#fkcart-modal .fkcart--item .fkcart-item-title-price .fkcart-item-title,
#fkcart-modal .fkcart--item .fkcart-item-title-price .fkcart-product-name,
#fkcart-modal .fkcart--item .fkcart-item-title-price .fkcart-product-name a {
    font-family: var(--font-display) !important;
    font-weight: 500 !important;
    font-size: 16px !important;
    line-height: 1.3 !important;
    letter-spacing: -0.005em;
    color: var(--ink);
    text-decoration: none;
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    margin: 0 !important;
    padding: 0;
    white-space: normal;
    overflow-wrap: break-word;
    text-wrap: pretty;
}

/* Edit link — "Change credits or university". Sky-text underline,
   matches design's .a-item__edit. */
.fkcart--item .cfe-line__edit {
    align-self: flex-start;
    background: transparent;
    border: 0;
    padding: 0;
    color: var(--sky-text);
    font-family: inherit;
    font-size: 12px;
    line-height: 1.3;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}

.fkcart--item .cfe-line__edit:hover {
    color: var(--ink);
}

/* ============================================================
   Hopper row — chips on top, savings + price on bottom.
   ============================================================ */
.fkcart--item .cfe-line__row--hopper {
    flex: 0 0 100%;
    width: 100%;
    margin: 0;
    padding: 0;
}

.fkcart--item .cfe-line.cfe-line--hopper {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* Line thumbnail — the product's featured image (mirrors its LearnDash
   course image). The reposition JS lifts it to be the card's first child
   and flags the card; we then lay the card out as [thumb | content] with
   the thumb spanning the title + meta rows, so it sits to the LEFT of the
   course title. */
.fkcart--item--has-thumb {
    display: grid !important;
    grid-template-columns: 44px 1fr;
    grid-template-areas:
        "thumb info"
        "thumb line";
    column-gap: 12px;
    row-gap: 10px;
    align-items: start;
}
.fkcart--item--has-thumb > .cfe-line__thumb      { grid-area: thumb; }
.fkcart--item--has-thumb > .fkcart-item-info     { grid-area: info; min-width: 0; }
.fkcart--item--has-thumb > .cfe-line__row--hopper { grid-area: line; min-width: 0; }
.fkcart--item .cfe-line__thumb {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    object-fit: cover;
    border: 1px solid rgba(27, 42, 59, 0.08);
}

/* Bundle thumb: zoom the card art so the credit number reads at 44px.
   Span clips the scaled image (the padding/eyebrow/owl crop away). */
.fkcart--item .cfe-line__thumb--bundle {
    overflow: hidden;
    display: block;
}
.fkcart--item .cfe-line__thumb--bundle img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.9);
    transform-origin: 50% 45%;
}

.fkcart--item .cfe-line__chips {
    flex-wrap: wrap;
    gap: 6px;
}

/* Chip: white-ish bg + mist border, with icon on the left. */
.fkcart--item .cfe-line__chip {
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(27, 42, 59, 0.08);
    color: var(--ink);
    padding: 5px 11px;
    font-size: 12px;
    line-height: 1;
    border-radius: 9999px;
}

.fkcart--item .cfe-line__chip i.bb-icon-l,
.fkcart--item .cfe-line__chip i.bb-icon-rl,
.fkcart--item .cfe-line__chip i.bb-icon-rf {
    color: var(--graphite);
    font-size: 13px;
}

/* Bottom row: savings pill (left) + price block (right). Single row,
   nowrap — savings can shrink, price can shrink, no wrap to a second
   line under any cart-drawer width. */
.fkcart--item .cfe-line__bottom {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
    padding-top: 10px;
    border-top: 1px dashed rgba(27, 42, 59, 0.12);
    flex-wrap: nowrap;
}

.fkcart--item .cfe-line__bottom .cfe-line__math {
    margin: 0;
    padding: 5px 9px;
    font-size: 12px;
    font-weight: 500;
    border-radius: 6px;
    line-height: 1.2;
    white-space: nowrap;
    flex: 0 1 auto;
    min-width: 0;
}

.fkcart--item .cfe-line__bottom .cfe-line__math svg {
    width: 14px;
    height: 14px;
}

.fkcart--item .cfe-line__bottom .cfe-line__math strong {
    font-weight: 600;
}

/* Price slot — receives .fkcart-item-misc via JS reposition. */
.fkcart--item .cfe-line__price-slot {
    margin-left: auto;
    text-align: right;
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    flex: 0 0 auto;
}

/* Price slot: collapse the WC default column stack into a single
   horizontal row — retail (struck), now, save-pct all inline at the
   right end of the bottom row. */
.fkcart--item .cfe-line__price-slot .fkcart-item-misc {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: flex-end;
    gap: 6px;
    margin: 0;
    padding: 0;
    flex-wrap: nowrap;
    white-space: nowrap;
}

#fkcart-modal .fkcart--item .cfe-line__price-slot .fkcart-item-price {
    display: inline-flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: baseline !important;
    gap: 6px !important;
    margin: 0 !important;
    line-height: 1.15 !important;
    text-align: right !important;
    white-space: nowrap !important;
}

/* Flex order — ins (current) shows first, del (retail strikethrough)
   shows second. WC's default DOM order is del, ins. */
#fkcart-modal .fkcart--item .cfe-line__price-slot .fkcart-item-price del,
#fkcart-modal .fkcart--item .cfe-line__price-slot .fkcart-item-price s {
    order: 1 !important;
}
#fkcart-modal .fkcart--item .cfe-line__price-slot .fkcart-item-price ins {
    order: 2 !important;
}

.fkcart--item .cfe-line__price-slot .fkcart-item-price del,
.fkcart--item .cfe-line__price-slot .fkcart-item-price s {
    display: inline-block;
    color: var(--graphite);
    font-size: 12px;
    font-weight: 400;
    text-decoration: line-through;
    text-decoration-color: rgba(91, 101, 115, 0.6);
    margin: 0;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

/* The "now" price — <ins> for sale, the bare .amount span for non-sale,
   or the inner .amount inside <ins>. Excludes .screen-reader-text. */
.fkcart--item .cfe-line__price-slot .fkcart-item-price ins,
.fkcart--item .cfe-line__price-slot .fkcart-item-price > .amount,
.fkcart--item .cfe-line__price-slot .fkcart-item-price > bdi {
    display: inline-block;
    text-decoration: none;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 16px;
    color: var(--ink);
    line-height: 1;
    font-variant-numeric: tabular-nums;
    margin: 0;
}

/* WC emits screen-reader-only spans ("Original price was…" / "Current
   price is…") between <del> and <ins>. Visually hide them. */
.fkcart--item .cfe-line__price-slot .fkcart-item-price > .screen-reader-text {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    margin: -1px !important;
    padding: 0 !important;
    border: 0 !important;
    white-space: nowrap !important;
}

/* Hide WC's 'Save X%' line — savings is already conveyed by the
   bundle-rate pill on the left of the bottom row. */
.fkcart--item .cfe-line__price-slot .fkcart-discounted-price,
.fkcart--item .cfe-line__price-slot .fkcart-discounted-text {
    display: none !important;
}

/* ============================================================
   Drawer header — "Your cart (N)" + close X.
   ============================================================ */
.fkcart-slider-heading {
    --ink:         var(--cfe-ds-color-ink,         #1B2A3B);
    --graphite:    var(--cfe-ds-color-graphite,    #5B6573);
    --mist:        var(--cfe-ds-color-mist,        #E8EAED);
    --font-display:var(--cfe-ds-font-display,      'Outfit', sans-serif);
    --font-sans:   var(--cfe-ds-font-body,         'Plus Jakarta Sans', sans-serif);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 20px;
    border-bottom: 1px solid var(--mist);
}

.fkcart-slider-heading .fkcart-title {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 18px;
    color: var(--ink);
    line-height: 1.2;
}

/* The (N) count span sits inline next to the heading text. */
.fkcart-slider-heading .fkcart-title > span {
    color: var(--graphite);
    font-family: var(--font-sans);
    font-weight: 400;
    font-size: 14px;
    margin-left: 6px;
}

/* Close X — design's .drawer__hd-x: 32x32 rounded square, hover bg. */
.fkcart-slider-heading .fkcart-modal-close {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    background: transparent;
    color: var(--graphite);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.fkcart-slider-heading .fkcart-modal-close:hover {
    background: var(--mist);
    color: var(--ink);
}

.fkcart-slider-heading .fkcart-modal-close svg {
    width: 16px;
    height: 16px;
    display: block;
}

/* ============================================================
   Footer — subtotal + savings pill + CTA + continue.
   ============================================================ */
.fkcart-order-summary,
.fkcart-checkout-wrap {
    --ink:         var(--cfe-ds-color-ink,         #1B2A3B);
    --graphite:    var(--cfe-ds-color-graphite,    #5B6573);
    --mint-bg:     var(--cfe-ds-color-mint-bg,     #ECFDF5);
    --mint-border: var(--cfe-ds-color-mint-border, #6EE7B7);
    --mint-text:   var(--cfe-ds-color-mint-text,   #0F7A2A);
    --font-display:var(--cfe-ds-font-display,      'Outfit', sans-serif);
    --font-sans:   var(--cfe-ds-font-body,         'Plus Jakarta Sans', sans-serif);
}

/* Subtotal — bigger, design-font amount. */
.fkcart-order-summary .fkcart-subtotal-wrap {
    align-items: center;
}

.fkcart-order-summary .fkcart-subtotal-wrap .fkcart-summary-text strong {
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: 13px;
    color: var(--graphite);
    text-transform: none;
}

.fkcart-order-summary .fkcart-subtotal-wrap .fkcart-summary-amount strong {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 24px;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
}

/* Footer addon row injected via fkcart_after_order_summary. */
.cfe-cart-footer-addon {
    margin-top: 8px;
}

.cfe-cart-footer-addon__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.cfe-cart-footer-addon__label {
    font-family: var(--font-sans);
    font-size: 13px;
    color: var(--graphite);
}

.cfe-cart-footer-addon__pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--mint-bg);
    border: 1px solid var(--mint-border);
    color: var(--mint-text);
    border-radius: 9999px;
    padding: 4px 10px;
    font-size: 12px;
    font-weight: 500;
}

.cfe-cart-footer-addon__pill svg {
    width: 12px;
    height: 12px;
}

.cfe-cart-footer-addon__credits-meta {
    display: none;
}

/* Checkout CTA — full-width, dark, rounded. */
.fkcart-checkout-wrap .fkcart-checkout-info {
    width: 100%;
}

.fkcart-checkout-wrap a#fkcart-checkout-button {
    width: 100%;
    background: var(--ink) !important;
    color: #fff !important;
    border-radius: 10px !important;
    padding: 14px 18px !important;
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: 16px;
    line-height: 1;
    transition: background 0.15s ease, transform 0.1s ease;
}

.fkcart-checkout-wrap a#fkcart-checkout-button:hover {
    background: #0F1923 !important;
}

.fkcart-checkout-wrap a#fkcart-checkout-button:active {
    transform: translateY(1px);
}

.fkcart-checkout-wrap a#fkcart-checkout-button .fkcart-checkout--text {
    font-weight: 500;
}

.fkcart-checkout-wrap a#fkcart-checkout-button .fkcart-checkout--price {
    font-variant-numeric: tabular-nums;
    opacity: 0.9;
    margin-left: 8px;
}

/* Continue shopping — centered graphite link. */
.fkcart-checkout-wrap .fkcart-shopping-link {
    display: block;
    text-align: center;
    color: var(--graphite);
    font-family: var(--font-sans);
    font-size: 13px;
    margin-top: 10px;
    text-decoration: none;
}

.fkcart-checkout-wrap .fkcart-shopping-link:hover {
    color: var(--ink);
    text-decoration: underline;
}

/* Pay-as-you-enroll callout on bundle-only hopper rows.
   Mirrors .ck-cart__pay-later on the FK checkout — sky-tinted bg,
   sky-text border + icon, ink-on-light copy. */
.cfe-line__row--bundle-only .cfe-line__math--paylater {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    margin-top: 6px;
    padding: 6px 10px;
    background: var(--cfe-ds-tint-sky, #EFF6FF);
    border: 1px solid var(--cfe-ds-color-sky-text, #3E8AB8);
    border-radius: 8px;
    color: var(--cfe-ds-color-ink, #1B2A3B);
    font-size: 12px;
    line-height: 1.4;
}
.cfe-line__row--bundle-only .cfe-line__math--paylater svg {
    flex: 0 0 auto;
    width: 14px;
    height: 14px;
    color: var(--cfe-ds-color-sky-text, #3E8AB8);
    margin-top: 1px;
}

/* ============================================================
   Drawer overflow safety — bundle-only + course rows added meta
   rows (chips, bundle-rate, standard-rate, paylater note) which
   bumped per-item height. Force the slider body to scroll so the
   footer/checkout button stays anchored visible.
   ============================================================ */
#fkcart-modal .fkcart-slider-body {
    overflow-y: auto !important;
    min-height: 0 !important;
}

/* Tighten the bottom row gap on bundle-only items — the chip + paylater
   stack is already plenty of vertical info; don't waste a 16px gap. */
.cfe-line__row--bundle-only .cfe-line__bottom {
    margin-top: 4px;
    gap: 4px;
}
.cfe-line__row--bundle-only .cfe-line__chips {
    margin: 0 0 6px;
}

/* Course rows: trim the gap between math rows so 2-row bundle/standard
   breakdowns don't blow up vertical space. */
#fkcart-modal .fkcart--item .cfe-line__math + .cfe-line__math {
    margin-top: 2px;
}

/* Hide the scrollbar entirely — content still scrolls via wheel/touch.
   Per Tuan, the visible bar looks bad in the drawer. */
#fkcart-modal .fkcart-slider-body {
    scrollbar-width: none;
}
#fkcart-modal .fkcart-slider-body::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
}


/* Bottom-row reorder: bundle-rate sits left, price stays right (same row);
   standard-rate (overflow) wraps to its OWN row below the pair. Avoids
   squishing 3 children into a single 420px-wide flex line. */
.fkcart--item .cfe-line__bottom {
    flex-wrap: wrap;
    column-gap: 8px;
    row-gap: 4px;
}
.fkcart--item .cfe-line__bottom .cfe-line__math:not(.cfe-line__math--standard) {
    order: 1;
}
.fkcart--item .cfe-line__bottom .cfe-line__price-slot {
    order: 2;
}
.fkcart--item .cfe-line__bottom .cfe-line__math--standard {
    order: 4;
    flex: 0 0 auto;
    width: auto;
}

/* Pseudo flex-item forces a line break between price and standard-rate
   so standard-rate stays sized to its content instead of stretching
   full-width. */
.fkcart--item .cfe-line__bottom::after {
    content: '';
    flex-basis: 100%;
    order: 3;
    height: 0;
    width: 0;
}

/* cfe-overflow-price-below
   Overflow lines (course has credits billed past the bundle, i.e. a
   .cfe-line__math--standard row exists): stack each rate on its own row and
   drop the price BELOW the standard-rate row, instead of pairing it with the
   bundle-rate row. Fully-covered lines (no standard row) keep the original
   bundle-rate + price same-row layout above. */
.fkcart--item .cfe-line__bottom:has(.cfe-line__math--standard) .cfe-line__math:not(.cfe-line__math--standard) {
    order: 1;
    flex: 0 0 100%;
}
.fkcart--item .cfe-line__bottom:has(.cfe-line__math--standard) .cfe-line__math--standard {
    order: 2;
    flex: 0 0 100%;
    width: 100%;
}
.fkcart--item .cfe-line__bottom:has(.cfe-line__math--standard) .cfe-line__price-slot {
    order: 3;
    flex: 0 0 100%;
    display: flex;
    justify-content: flex-end;
}
.fkcart--item .cfe-line__bottom:has(.cfe-line__math--standard)::after {
    display: none;
}

/* cfe-swap-full-width
   The bundle swap editor is hoisted by the reposition JS to be a direct child
   of the grid item; span it across both columns (under the thumb) so the chip
   strip + ledger get the full drawer width instead of the 1fr content column. */
.fkcart--item--has-thumb > .cfe-line__swap {
    grid-column: 1 / -1;
    min-width: 0;
}

/* cfe-bundle-price-slot-margin
   Breathing room above the bundle line's registration-fee price. */
.fkcart--item .cfe-line__row--bundle-only .cfe-line__price-slot {
    margin-top: 6px;
}
