/**
 * LeafBridge Pro mini-cart — Story production chrome.
 * Whole drawer scrolls as one unit (no sticky header / nested item overflow).
 */

/* Hide ATC success toasts while the Added to Cart modal is active.
 * Classic LeafBridge deck + Pro react-toastify growls. Keep error toasts. */
body.lb-ss-hide-atc-toast #lb_toast_messages_deck .lb_toast_msg_box:not(.lb-ss-toast-error):not(:has(.fa-triangle-exclamation)),
body.lb-ss-atc-card-open #lb_toast_messages_deck .lb_toast_msg_box:not(.lb-ss-toast-error):not(:has(.fa-triangle-exclamation)),
body.lb-ss-hide-atc-toast .Toastify__toast--success,
body.lb-ss-atc-card-open .Toastify__toast--success,
body.lb-ss-hide-atc-toast .Toastify__toast[data-type='success'],
body.lb-ss-atc-card-open .Toastify__toast[data-type='success'] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
  height: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
}

/* Modal XOR drawer — hide drawer only while ATC confirmation modal is open.
 * Intentional opens (View Cart / cart icon) must clear lb-ss-atc-card-open first. */
body.lb-ss-atc-card-open #leafbridge-cart-wrapper.open_cart {
  transform: translateX(100%) !important;
  pointer-events: none !important;
  visibility: hidden !important;
}

/* ATC loading: lock geometry so label/icon don't jump. */
.add-to-cart-btn,
button.add-to-cart-btn {
  min-height: 44px !important;
  height: 44px !important;
  box-sizing: border-box !important;
  position: relative;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px;
  line-height: 1.2 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

.add-to-cart-btn.addingToCart,
button.add-to-cart-btn.addingToCart {
  min-height: 44px !important;
  height: 44px !important;
  overflow: hidden;
}

.add-to-cart-btn.addingToCart > *:not(.lb-ss-atc-spinner),
button.add-to-cart-btn.addingToCart > *:not(.lb-ss-atc-spinner) {
  opacity: 0.35;
}

#leafbridge-cart-wrapper.open_cart,
#leafbridge-cart-wrapper {
  --lb-ss-pro-cart-red: #e4022d;
  --lb-ss-pro-cart-ink: #1a1a1a;
  --lb-ss-pro-cart-muted: rgba(26, 26, 26, 0.55);
  --lb-ss-pro-cart-border: #e8e8e8;
  /* Mirror v3 classic's cart-item well (leafbridge-public.css) — v3 is the
   * approved look, so these are measured from it, not picked. */
  --lb-ss-pro-cart-well: #f9f9f9;
  --lb-ss-pro-cart-well-border: #eaeaea;
  --lb-ss-pro-cart-well-ink: #333;
  --lb-ss-pro-cart-font: 'Roboto', 'Hanken Grotesk', Arial, sans-serif;
  --lb-ss-pro-cart-display: 'Druk Text Wide', 'Druk TextWide', 'Roboto', Arial, sans-serif;
}

/*
 * Kill Pro’s fixed header + 60px top pad so the dark loyalty block
 * starts at the very top and the whole drawer scrolls together.
 */
#leafbridge-cart-wrapper .cart_inner,
div#leafbridge-cart-wrapper .cart_inner {
  display: block !important;
  max-height: 100%;
  height: 100% !important;
  width: min(550px, 100vw) !important;
  max-width: 550px !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  /* White, not #0a0a0a: the header and the loyalty block each paint their own
   * dark background (loyalty via a gradient, so it reads transparent in
   * backgroundColor), and a dark fill here showed as a black void under a short
   * cart. */
  background: #fff;
  -webkit-overflow-scrolling: touch;
}

/* Header: title + location; white X close top-right (matches production ref) */
#leafbridge-cart-wrapper .cart_header,
div#leafbridge-cart-wrapper .cart_header {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  width: 100% !important;
  max-width: none !important;
  z-index: 1 !important;
  display: block !important;
  margin: 0 !important;
  padding: 18px 52px 14px 18px !important;
  box-sizing: border-box;
  background: #0a0a0a;
  color: #fff;
  border-bottom: 0;
}

/* Title only. Never target a bare <p> here — Pro puts the location line in the
 * first <p>, which rendered "Shopping at" at title size and wrapped the store. */
#leafbridge-cart-wrapper .cart_header .cart_title,
#leafbridge-cart-wrapper .cart_header h3,
#leafbridge-cart-wrapper .cart_header .lb-ss-cart-title {
  color: #fff !important;
  font-family: var(--lb-ss-pro-cart-display) !important;
  font-weight: 700 !important;
  font-size: 26px !important;
  line-height: 1.15 !important;
  letter-spacing: 0.01em;
  text-transform: none;
  margin: 0 0 4px !important;
  width: auto;
  padding-right: 0;
}

#leafbridge-cart-wrapper .cart_header p,
#leafbridge-cart-wrapper .cart_header .retailer_name,
#leafbridge-cart-wrapper .cart_header .shopping,
#leafbridge-cart-wrapper .cart_header .lb-ss-cart-loc,
#leafbridge-cart-wrapper .cart_header .lb-ss-cart-loc span {
  color: rgba(255, 255, 255, 0.92) !important;
  font-family: var(--lb-ss-pro-cart-font) !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  line-height: 1.3 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  margin: 0 !important;
}

#leafbridge-cart-wrapper .cart_header #reset_cart {
  display: none !important;
}

/* White square X — top right of header */
#leafbridge-cart-wrapper .cart_header #close_cart {
  position: absolute !important;
  top: 16px !important;
  right: 14px !important;
  left: auto !important;
  bottom: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 4px !important;
  background: #fff !important;
  color: #111 !important;
  font-size: 0 !important;
  line-height: 0 !important;
  cursor: pointer;
  box-shadow: none !important;
  z-index: 5;
}

#leafbridge-cart-wrapper .cart_header #close_cart::before {
  content: '' !important;
  display: block;
  width: 14px;
  height: 14px;
  background: center / 14px 14px no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23111' d='M18.3 5.7a1 1 0 0 0-1.4 0L12 10.6 7.1 5.7a1 1 0 0 0-1.4 1.4L10.6 12l-4.9 4.9a1 1 0 1 0 1.4 1.4L12 13.4l4.9 4.9a1 1 0 0 0 1.4-1.4L13.4 12l4.9-4.9a1 1 0 0 0 0-1.4z'/%3E%3C/svg%3E");
}

#leafbridge-cart-wrapper .cart_header #close_cart::after {
  content: none !important;
  display: none !important;
}

#leafbridge-cart-wrapper #lb-ss-loyalty {
  margin: 0;
  position: relative;
  z-index: 1;
}

/* Items + footer + carousel scroll with the drawer (no nested overflow) */
#leafbridge-cart-wrapper #cart_render {
  flex: none !important;
  overflow: visible !important;
  max-height: none !important;
  height: auto !important;
  background: #fff;
  /* Pro pads this 30px, which stacked with the list's own inset and squeezed
   * rows to 450px. v3 insets content once, by 20px — so own it downstream.
   * The vertical half (30px + a 15px margin) read as dead space under the
   * loyalty block, so the list's own 20px is the only inset here too. */
  margin-top: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* —— Empty cart —— */
#leafbridge-cart-wrapper .lb-ss-cart-empty-state {
  padding: 32px 20px 28px;
  text-align: center;
  background: #fff;
}

#leafbridge-cart-wrapper .lb-ss-cart-empty-title {
  margin: 0 0 6px;
  font-family: var(--lb-ss-pro-cart-display);
  font-size: 18px;
  font-weight: 800;
  color: var(--lb-ss-pro-cart-ink);
}

#leafbridge-cart-wrapper .lb-ss-cart-empty-sub {
  margin: 0 0 18px;
  font-family: var(--lb-ss-pro-cart-font);
  font-size: 13px;
  color: var(--lb-ss-pro-cart-muted);
}

#leafbridge-cart-wrapper .lb-ss-cart-empty-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 24px;
  background: var(--lb-ss-pro-cart-red);
  color: #fff !important;
  font-family: var(--lb-ss-pro-cart-display);
  font-size: 13px;
  font-weight: 800;
  text-transform: uppercase;
  text-decoration: none !important;
  cursor: pointer;
}

#leafbridge-cart-wrapper .lb-ss-cart-empty-cta:hover {
  background: #c40126;
}

/* Pro's loader spins forever on a session with no cart — don't stack it above
 * the empty message. */
#leafbridge-cart-wrapper.lb-ss-cart-empty .cart_loader_wrapper {
  display: none !important;
}

/* Nothing to total up, and Pro leaves the checkout button behind. */
#leafbridge-cart-wrapper.lb-ss-cart-empty .cart_footer,
#leafbridge-cart-wrapper.lb-ss-cart-empty #cart_footer,
#leafbridge-cart-wrapper.lb-ss-cart-empty .summary {
  display: none !important;
}

/* v3 insets the list with 20px on .floating_cart_items_wrapper and spaces rows
 * with a 15px bottom margin; Pro has no wrapper, so pad the list and use gap. */
#leafbridge-cart-wrapper .cart_items.floating_cart_items_inner,
#leafbridge-cart-wrapper .cart_items {
  display: flex;
  flex-direction: column;
  gap: 15px;
  padding: 20px;
  margin: 0;
  background: #fff;
  overflow: visible !important;
  max-height: none !important;
}

/* —— Line items: boxed wells, matching v3 —— */
#leafbridge-cart-wrapper .cart-item,
#leafbridge-cart-wrapper .floating_cart_item_box.cart-item {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
  column-gap: 12px;
  row-gap: 8px;
  align-items: start;
  position: relative;
  width: 100%;
  box-sizing: border-box;
  padding: 10px;
  margin: 0;
  background: var(--lb-ss-pro-cart-well) !important;
  border: 1px solid var(--lb-ss-pro-cart-well-border) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

#leafbridge-cart-wrapper .cart-item > .floating_cart_item_image,
#leafbridge-cart-wrapper .cart-item > img {
  grid-column: 1;
  grid-row: 1 / span 2;
  width: 72px;
  height: 72px;
  border-radius: 4px;
  overflow: hidden;
  background: #fff;
  border: 1px solid #e6e6e6;
}

#leafbridge-cart-wrapper .cart-item .floating_cart_item_image img,
#leafbridge-cart-wrapper .cart-item > img {
  width: 72px;
  height: 72px;
  object-fit: contain;
  display: block;
}

/* Title spans qty + price columns — otherwise the price column steals width
 * and product names wrap to 4+ lines (production keeps them to 1–2). */
#leafbridge-cart-wrapper .cart-item .item-details,
#leafbridge-cart-wrapper .cart-item .floating_cart_item_details {
  grid-column: 2 / span 2;
  grid-row: 1;
  min-width: 0;
  padding-right: 28px;
}

/* Image + name/brand open the PDP; quantity and remove stay their own buttons. */
#leafbridge-cart-wrapper .cart-item .item-name,
#leafbridge-cart-wrapper .cart-item .item-brand,
#leafbridge-cart-wrapper .cart-item .floating_cart_item_image {
  cursor: pointer;
}

#leafbridge-cart-wrapper .cart-item .item-name:hover {
  text-decoration: underline;
}

/* prod_id is all a line carries, so the PDP waits on a fetch — show the wait. */
#leafbridge-cart-wrapper .cart-item.lb-ss-cart-line-loading {
  opacity: 0.55;
}

#leafbridge-cart-wrapper .cart-item.lb-ss-cart-line-loading .item-name,
#leafbridge-cart-wrapper .cart-item.lb-ss-cart-line-loading .item-brand,
#leafbridge-cart-wrapper .cart-item.lb-ss-cart-line-loading .floating_cart_item_image {
  cursor: progress;
}

#leafbridge-cart-wrapper .cart-item .item-name {
  margin: 0 0 2px;
  font-family: var(--lb-ss-pro-cart-display);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.25;
  color: var(--lb-ss-pro-cart-well-ink);
}

#leafbridge-cart-wrapper .cart-item .item-brand {
  margin: 0 0 8px;
  font-family: var(--lb-ss-pro-cart-display);
  font-size: 13px;
  font-weight: 400;
  color: var(--lb-ss-pro-cart-well-ink);
  line-height: 1.2;
}

#leafbridge-cart-wrapper .cart-item .quantity-control,
#leafbridge-cart-wrapper .cart-item .cart_item_count {
  grid-column: 2;
  grid-row: 2;
  display: inline-flex !important;
  align-items: center;
  gap: 0;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  align-self: end;
}

#leafbridge-cart-wrapper .cart-item .quantity-control label {
  display: none !important;
}

#leafbridge-cart-wrapper .cart-item .quantity-control .decrease_item_count,
#leafbridge-cart-wrapper .cart-item .quantity-control .increase_item_count {
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 4px !important;
  background: var(--lb-ss-pro-cart-red) !important;
  color: #fff !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  cursor: pointer;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
}

#leafbridge-cart-wrapper .cart-item .quantity-control input.item_count,
#leafbridge-cart-wrapper .cart-item .quantity-control input.cart_item_count_val {
  width: 36px !important;
  height: 28px !important;
  margin: 0 4px !important;
  padding: 0 !important;
  border: 1px solid var(--lb-ss-pro-cart-border) !important;
  border-radius: 4px !important;
  background: #fff !important;
  color: var(--lb-ss-pro-cart-ink) !important;
  font-family: var(--lb-ss-pro-cart-font) !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  text-align: center !important;
  -moz-appearance: textfield;
}

#leafbridge-cart-wrapper .cart-item .quantity-control input.item_count::-webkit-outer-spin-button,
#leafbridge-cart-wrapper .cart-item .quantity-control input.item_count::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

#leafbridge-cart-wrapper .cart-item .update_item_count {
  display: none !important;
}

/* Price column — reference: ~~list~~ + % OFF + large $total */
#leafbridge-cart-wrapper .cart-item .floating_cart_item_price-panel,
#leafbridge-cart-wrapper .cart-item .lb-ss-pro-price-panel {
  grid-column: 3;
  grid-row: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: flex-end;
  gap: 2px;
  min-width: 132px;
  padding-top: 0;
  align-self: end;
}

/* Production SoT: [ ~~$10~~ / 10% OFF ]  $9.00  — small stack LEFT of the total. */
#leafbridge-cart-wrapper .cart-item .item-price,
#leafbridge-cart-wrapper .cart-item .cart_item_amount {
  display: inline-flex !important;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin: 0;
  text-align: right;
  font-family: var(--lb-ss-pro-cart-display) !important;
  line-height: 1.1;
}

#leafbridge-cart-wrapper .cart-item .cart_item_amount .special_price_det {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: flex-end;
  gap: 2px;
}

#leafbridge-cart-wrapper .cart-item .cart_item_amount .strk_price {
  color: rgba(26, 26, 26, 0.45) !important;
  font-family: var(--lb-ss-pro-cart-display) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  font-style: normal !important;
  text-decoration: line-through !important;
  line-height: 1.15;
}

/* Show % OFF chip — matches production reference */
#leafbridge-cart-wrapper .cart-item .cart_item_amount .special_offer_precentage {
  display: inline !important;
  color: var(--lb-ss-pro-cart-red) !important;
  font-family: var(--lb-ss-pro-cart-display) !important;
  font-size: 11px !important;
  font-weight: 800 !important;
  font-style: normal !important;
  line-height: 1.15;
  text-transform: uppercase;
  white-space: nowrap;
}

#leafbridge-cart-wrapper .cart-item .cart_item_amount .lb-ss-pro-unit-price {
  display: none !important;
}

/* The generic span rule must exclude .lb-ss-pro-line-total: each :not() adds
 * class specificity, so it outranked the .is-full-price override below and
 * painted full-price lines red. */
#leafbridge-cart-wrapper .cart-item .cart_item_amount .lb-ss-pro-line-total,
#leafbridge-cart-wrapper .cart-item .cart_item_amount > span:not(.special_price_det):not(.strk_price):not(.special_offer_precentage):not(.lb-ss-pro-unit-price):not(.lb-ss-pro-line-total) {
  color: var(--lb-ss-pro-cart-red) !important;
  font-family: var(--lb-ss-pro-cart-display) !important;
  font-size: 18px !important;
  font-weight: 800 !important;
  font-style: normal !important;
  line-height: 1.1;
}

#leafbridge-cart-wrapper .cart-item .cart_item_amount.is-full-price .lb-ss-pro-line-total {
  color: var(--lb-ss-pro-cart-ink) !important;
}

/* Full-price rows paint their total here, so it has to use the same face as a
 * discounted row's total or the two rows disagree on font. */
#leafbridge-cart-wrapper .cart-item .normal_price,
#leafbridge-cart-wrapper .cart-item .priceXqty {
  font-family: var(--lb-ss-pro-cart-display) !important;
  color: var(--lb-ss-pro-cart-ink);
}

/* Remove X */
#leafbridge-cart-wrapper .cart-item .remove-btn,
#leafbridge-cart-wrapper .cart-item .remove_cart_item {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 2;
  width: 22px;
  height: 22px;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 2px;
  background: #111;
  color: #fff;
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
  opacity: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

#leafbridge-cart-wrapper .cart-item .remove-btn:hover,
#leafbridge-cart-wrapper .cart-item .remove_cart_item:hover {
  background: var(--lb-ss-pro-cart-red);
  color: #fff;
}

#leafbridge-cart-wrapper .cart-item .item-details .quantity-control {
  grid-column: 2;
}

/* Footer discounts in Story red */
#leafbridge-cart-wrapper .summary-row.lb-ss-cart-discount,
#leafbridge-cart-wrapper .summary-row.discounts_row,
#leafbridge-cart-wrapper .summary-row.lb-ss-cart-discount > *,
#leafbridge-cart-wrapper .summary-row.discounts_row > * {
  color: var(--lb-ss-pro-cart-red) !important;
  font-weight: 700 !important;
}

/* Totals read as one price cluster like the item rows. Pro/theme rules land on
 * the row *spans*, so only Subtotal inherited our font and Discounts/Total fell
 * back to Roboto at mixed sizes — hence the family on the children too. */
#leafbridge-cart-wrapper .summary-row,
#leafbridge-cart-wrapper .summary-row > * {
  font-family: var(--lb-ss-pro-cart-display) !important;
  letter-spacing: 0.01em !important;
}

/* Pro sizes the subtotal spans at 14px, which made that one row outrank the
 * others. Sizing belongs to the row so every line matches. */
#leafbridge-cart-wrapper .summary-row > * {
  font-size: inherit !important;
}

#leafbridge-cart-wrapper .cart_footer {
  display: flex !important;
  flex-direction: column;
}

#leafbridge-cart-wrapper .cart_footer > .summary,
#leafbridge-cart-wrapper .cart_footer > #cart_footer {
  order: 1;
}

/* Fine print belongs under the total, not above it in the display face. */
#leafbridge-cart-wrapper .cart_summary_note,
#leafbridge-cart-wrapper .tax_note {
  order: 2;
  margin: 10px 0 0 !important;
  font-family: var(--lb-ss-pro-cart-font) !important;
  font-size: 11px !important;
  font-weight: 400 !important;
  line-height: 1.35 !important;
  letter-spacing: 0 !important;
  color: #6b6b6b !important;
  text-align: left !important;
  text-transform: none !important;
}

#leafbridge-cart-wrapper .cart_footer > .checkout-btn,
#leafbridge-cart-wrapper .cart_footer > a.checkout-btn,
#leafbridge-cart-wrapper .cart_footer > button.checkout-btn {
  order: 3;
}

/* Totals sit edge to edge like the item rows — no inset panel, no side gutter. */
#leafbridge-cart-wrapper .cart_footer,
#leafbridge-cart-wrapper .summary,
#leafbridge-cart-wrapper #cart_footer {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  /* 20px sides so the footer lines up with the item wells (see #cart_render). */
  padding: 14px 20px !important;
  box-sizing: border-box !important;
  background: #fff;
  border-top: 1px solid var(--lb-ss-pro-cart-border);
  border-radius: 0 !important;
}

/* A nested .summary inside .cart_footer would double the padding. */
#leafbridge-cart-wrapper .cart_footer .summary {
  padding: 0 !important;
  border-top: 0;
}

#leafbridge-cart-wrapper .summary-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 500;
  text-transform: uppercase;
  color: var(--lb-ss-pro-cart-ink);
}

#leafbridge-cart-wrapper .summary-row:last-child {
  margin-bottom: 0;
}

#leafbridge-cart-wrapper .summary-row.total,
#leafbridge-cart-wrapper .summary-row.total-row {
  padding-top: 12px;
  margin-top: 12px;
  border-top: 1px solid var(--lb-ss-pro-cart-border);
  font-size: 18px;
}

#leafbridge-cart-wrapper .summary-row.total > *,
#leafbridge-cart-wrapper .summary-row.total-row > * {
  font-weight: 800 !important;
}

#leafbridge-cart-wrapper .checkout-btn,
#leafbridge-cart-wrapper .cart_footer a.checkout-btn,
#leafbridge-cart-wrapper .cart_footer button.checkout-btn {
  text-decoration: none !important;
  display: flex !important;
  align-items: center;
  justify-content: center;
  width: 100% !important;
  min-height: 48px;
  margin: 12px 0 0 !important;
  border-radius: 8px !important;
  background: var(--lb-ss-pro-cart-red) !important;
  color: #fff !important;
  font-family: var(--lb-ss-pro-cart-font) !important;
  font-weight: 700 !important;
  font-size: 16px !important;
  text-transform: none !important;
  cursor: pointer;
}

#leafbridge-cart-wrapper .lb-ss-deal-group,
#leafbridge-cart-wrapper .lb-ss-deal-banners {
  margin: 0 0 8px;
  width: 100%;
  flex: 0 0 auto;
}

/* Inside a deal group the lines are one set, not separate wells. */
#leafbridge-cart-wrapper .lb-ss-deal-group .lb-ss-deal-group-body {
  display: flex;
  flex-direction: column;
  gap: 0;
}
#leafbridge-cart-wrapper .lb-ss-deal-group .cart-item,
#leafbridge-cart-wrapper .lb-ss-deal-group .floating_cart_item_box.cart-item {
  background: transparent !important;
  border: none !important;
  margin: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
#leafbridge-cart-wrapper .lb-ss-deal-group .cart-item + .cart-item,
#leafbridge-cart-wrapper .lb-ss-deal-group .floating_cart_item_box + .floating_cart_item_box {
  border-top: 1px solid var(--lb-ss-pro-cart-well-border, #eaeaea) !important;
}

/* v3 hides line % chips inside a finished set — savings live on the group foot.
 * The generic well rule forces display:inline !important and otherwise wins. */
#leafbridge-cart-wrapper .lb-ss-deal-group.is-complete .cart-item .special_offer_precentage,
#leafbridge-cart-wrapper .lb-ss-deal-group.is-complete .cart-item .cart_item_amount .special_offer_precentage,
#leafbridge-cart-wrapper .lb-ss-deal-group.is-complete .cart-item .cart_item_amount .special_price_det .special_offer_precentage {
  display: none !important;
  visibility: hidden !important;
  font-size: 0 !important;
  width: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
}

#leafbridge-cart-wrapper .cart-products-carousel {
  position: relative !important;
  background: #fff;
  border-top: 1px solid var(--lb-ss-pro-cart-border);
  padding: 12px;
  overflow: visible !important;
}

@media (max-width: 640px) {
  #leafbridge-cart-wrapper .cart-item {
    grid-template-columns: 64px minmax(0, 1fr);
  }

  #leafbridge-cart-wrapper .cart-item > .floating_cart_item_image,
  #leafbridge-cart-wrapper .cart-item > img {
    width: 64px;
    height: 64px;
  }

  #leafbridge-cart-wrapper .cart-item .floating_cart_item_image img,
  #leafbridge-cart-wrapper .cart-item > img {
    width: 64px;
    height: 64px;
  }

  /* Shares row 2 with the qty stepper once the grid drops to two columns, so it
   * must hug the right edge — at width:100% the panel sat on top of the stepper
   * and swallowed clicks on − / +. */
  #leafbridge-cart-wrapper .cart-item .floating_cart_item_price-panel,
  #leafbridge-cart-wrapper .cart-item .lb-ss-pro-price-panel {
    grid-column: 2;
    grid-row: 2;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    justify-self: end;
    width: auto;
    max-width: calc(100% - 120px);
    min-width: 0;
  }

  #leafbridge-cart-wrapper .cart-item .cart_item_amount:has(.special_price_det) > span:not(.special_price_det) {
    font-size: 15px !important;
  }
}

/* ---------------------------------------------------------------------------
 * Pro's Toastify growl ("Cart updated successfully", fired by the cart-line
 * Update button).
 *
 * Toastify intends a bare transparent x, but builds it as a <button> — so the
 * theme's generic button rule painted it Story red (#e4012c) with a #cc3366
 * border at 42x42, and Toastify's own opacity:.4 muted that to a muddy tan
 * block wider than the message. Theme button rules already beat Toastify's
 * own (0,1,0) reset, so these need !important to land.
 *
 * Pro sets the fill inline per type (green success / salmon error), so leave
 * the background alone and fix the chrome only.
 * ------------------------------------------------------------------------- */
body .toastify {
  display: flex !important;
  align-items: center;
  gap: 16px;
  padding: 13px 16px 13px 18px !important;
  border-radius: 6px !important;
  font-family: 'Druk Text Wide', 'Druk TextWide', 'Roboto', Arial, sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: 0.01em;
  /* Stock cap is calc(50% - 20px), so a long message ("Requested quantity
   * exceeds available quantity") stretched to 523px across the viewport.
   * Wrap to a second line instead. */
  max-width: min(420px, calc(100vw - 30px)) !important;
  /* Toastify's stock shadow carries a blue tint (rgba(77,96,232,.3)). */
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18) !important;
}

body .toastify .toast-close {
  flex: 0 0 auto;
  width: 22px !important;
  height: 22px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
  color: #fff !important;
  font-size: 15px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  text-transform: none !important;
  opacity: 0.7;
  transition: opacity 0.15s ease;
}

body .toastify .toast-close:hover,
body .toastify .toast-close:focus-visible {
  background: none !important;
  opacity: 1;
}
