/* =============================================================================
   JFA design system - BASKET (Elementor Cart widget on page 32), preview v2.
   Same tokens as jfa-ds.css; written against body.jfa-cartv2 because the basket
   is an Elementor page, not a .hv2 template. Loaded by jfa-cart-v2.php only.
   ============================================================================= */
body.jfa-cartv2{
  --ink:#10171E;--ink2:#55636F;--soft:#F4F7FA;--line:#E2E8EE;--dark:#0F1720;--cyan:#00C6FF;--cyanText:#0079AE;
  --ok:#1E9E5A;--warn:#B4381F;--radius:14px;background:#fff}

/* page title */
body.jfa-cartv2 .elementor-32 .elementor-widget-heading .elementor-heading-title{font-family:Oswald,sans-serif!important;font-weight:600!important;
  font-size:clamp(30px,4vw,46px)!important;letter-spacing:.01em;text-transform:uppercase;color:var(--ink)!important;text-align:left!important}
body.jfa-cartv2 .elementor-32 .elementor-widget-heading{margin-bottom:6px!important}
body.jfa-cartv2 .elementor-32>.elementor-section>.elementor-container{max-width:1180px!important}
body.jfa-cartv2 .elementor-32 .elementor-widget-wrap{padding:10px 16px!important}

/* two columns: items left, summary right (sticky). One column on phones. */
body.jfa-cartv2 .elementor-widget-woocommerce-cart .e-cart__container{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:22px!important;align-items:start}
@media(min-width:960px){body.jfa-cartv2 .elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:minmax(0,1fr) 400px!important;gap:30px!important}
  body.jfa-cartv2 .e-cart__column-end .e-cart__column-inner{position:sticky;top:110px}}
body.jfa-cartv2 .e-cart__column{width:auto!important;min-width:0}

/* strip Elementor's section boxes; we draw our own */
body.jfa-cartv2 .elementor-widget-woocommerce-cart .e-cart-section,
body.jfa-cartv2 .elementor-widget-woocommerce-cart .e-shop-table{background:none!important;border:0!important;box-shadow:none!important;padding:0!important;border-radius:0!important}

/* ---- items: each row becomes a card ---- */
body.jfa-cartv2 table.shop_table.cart{border:0!important;margin:0!important;width:100%;border-collapse:separate!important;border-spacing:0!important}
body.jfa-cartv2 table.shop_table.cart thead{display:none!important}
body.jfa-cartv2 table.shop_table.cart tbody{display:flex!important;flex-direction:column;gap:12px}
body.jfa-cartv2 table.shop_table.cart tr.cart_item{display:grid!important;grid-template-columns:96px minmax(0,1fr) auto;
  grid-template-areas:"img name name" "img price sub" "img qty remove";gap:4px 16px;align-items:center;
  padding:16px!important;border:1px solid var(--line)!important;border-radius:var(--radius);background:#fff;position:relative}
body.jfa-cartv2 table.shop_table.cart tr.cart_item td{display:block!important;padding:0!important;border:0!important;background:none!important;text-align:left!important;width:auto!important}
body.jfa-cartv2 table.shop_table.cart tr.cart_item td::before{display:none!important;content:none!important}
body.jfa-cartv2 tr.cart_item td.product-thumbnail{grid-area:img;align-self:start}
body.jfa-cartv2 tr.cart_item td.product-thumbnail img{width:96px!important;height:72px!important;max-width:none!important;object-fit:contain;border-radius:10px;background:var(--soft);border:1px solid var(--line);padding:4px}
body.jfa-cartv2 tr.cart_item td.product-name{grid-area:name}
body.jfa-cartv2 tr.cart_item td.product-name a{font-family:Oswald,sans-serif;font-weight:600;font-size:16.5px;line-height:1.25;letter-spacing:.02em;
  text-transform:uppercase;color:var(--ink)!important;text-decoration:none!important}
body.jfa-cartv2 tr.cart_item td.product-name a:hover{color:var(--cyanText)!important}
body.jfa-cartv2 tr.cart_item td.product-name dl.variation{margin:6px 0 0;font-size:13px;color:var(--ink2);display:grid;grid-template-columns:auto 1fr;gap:0 6px}
body.jfa-cartv2 tr.cart_item td.product-name dl.variation dt{font-weight:600;margin:0}
body.jfa-cartv2 tr.cart_item td.product-name dl.variation dd{margin:0}
body.jfa-cartv2 tr.cart_item td.product-name dl.variation dd p{margin:0;font-size:13px}
body.jfa-cartv2 tr.cart_item td.product-price{grid-area:price;font-size:13.5px;color:var(--ink2)}
body.jfa-cartv2 tr.cart_item td.product-price::after{content:" each"}
body.jfa-cartv2 tr.cart_item td.product-subtotal{grid-area:sub;justify-self:end;font-family:Oswald,sans-serif;font-weight:600;font-size:20px;color:var(--ink);white-space:nowrap}
body.jfa-cartv2 tr.cart_item td.product-subtotal small{display:none}
body.jfa-cartv2 tr.cart_item td.product-quantity{grid-area:qty}
body.jfa-cartv2 tr.cart_item td.product-remove{grid-area:remove;justify-self:end}
/* "Remove" as words, not a lone ×  */
body.jfa-cartv2 tr.cart_item td.product-remove a.remove{display:inline-flex!important;align-items:center;gap:6px;width:auto!important;height:auto!important;
  font-size:0!important;color:var(--ink2)!important;background:none!important;border-radius:0!important;padding:8px 0!important;line-height:1!important;text-decoration:none!important}
body.jfa-cartv2 tr.cart_item td.product-remove a.remove::after{content:"Remove";font-size:13px;font-weight:600;text-decoration:underline;text-underline-offset:3px}
body.jfa-cartv2 tr.cart_item td.product-remove a.remove:hover{color:var(--warn)!important}
/* quantity */
body.jfa-cartv2 tr.cart_item .quantity input.qty{width:72px!important;height:42px!important;border:1px solid var(--line)!important;border-radius:10px!important;
  text-align:center;font-size:16px!important;color:var(--ink)!important;background:#fff!important;padding:0 6px!important;margin:0!important}
body.jfa-cartv2 tr.cart_item .quantity input.qty[type=hidden]+*{display:none}
body.jfa-cartv2 tr.cart_item td.product-quantity:has(input[type=hidden])::after{content:"Qty 1";font-size:13px;color:var(--ink2)}
@media(max-width:520px){
  body.jfa-cartv2 table.shop_table.cart tr.cart_item{grid-template-columns:72px minmax(0,1fr) auto;gap:4px 12px;padding:14px!important}
  body.jfa-cartv2 tr.cart_item td.product-thumbnail img{width:72px!important;height:56px!important}
  body.jfa-cartv2 tr.cart_item td.product-name a{font-size:15px}
  body.jfa-cartv2 tr.cart_item td.product-subtotal{font-size:18px}
}
/* the actions row: basket updates automatically, so the empty button can go */
/* hidden rows still submit their inputs (nonce, update), so the form keeps working */
body.jfa-cartv2 table.shop_table.cart tr:not(.cart_item){display:none!important}

/* discount code: one quiet line under the items */
body.jfa-cartv2 .coupon.e-cart-section{margin-top:14px!important}
body.jfa-cartv2 .coupon .coupon-col{display:flex!important;gap:8px;flex-wrap:nowrap;margin:0!important}
body.jfa-cartv2 .coupon .coupon-col-start{flex:1 1 auto}
body.jfa-cartv2 .coupon input#coupon_code{width:100%!important;height:46px!important;border:1px solid var(--line)!important;border-radius:10px!important;padding:0 14px!important;font-size:16px!important;background:#fff!important}
body.jfa-cartv2 .coupon button.e-apply-coupon{height:46px!important;min-height:0!important;padding:0 18px!important;border-radius:10px!important;border:1px solid var(--ink)!important;
  background:#fff!important;color:var(--ink)!important;font-family:Oswald,sans-serif!important;font-weight:600!important;font-size:14px!important;letter-spacing:.06em!important;text-transform:uppercase!important;white-space:nowrap;width:auto!important}
body.jfa-cartv2 .coupon input#coupon_code::placeholder{color:#8B98A4}
body.jfa-cartv2 .coupon button.e-apply-coupon:hover{background:var(--ink)!important;color:#fff!important}

/* ---- order summary ---- */
body.jfa-cartv2 .cart_totals{background:var(--soft)!important;border:1px solid var(--line)!important;border-radius:var(--radius)!important;padding:22px 20px!important;width:auto!important;float:none!important}
body.jfa-cartv2 .cart_totals h2{font-family:Oswald,sans-serif!important;font-weight:600!important;font-size:22px!important;letter-spacing:.03em;text-transform:uppercase;margin:0 0 12px!important;color:var(--ink)!important}
body.jfa-cartv2 .cart_totals h2{font-size:0!important}
body.jfa-cartv2 .cart_totals h2::after{content:"Order summary";font-size:22px}
body.jfa-cartv2 .cart_totals table.shop_table,body.jfa-cartv2 .cart_totals table.shop_table tbody{border:0!important;margin:0 0 6px!important;width:100%;background:none!important;display:block!important}
body.jfa-cartv2 .cart_totals table.shop_table tr{display:flex!important;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;
  padding:12px 0!important;border:0!important;border-bottom:1px solid var(--line)!important;background:none!important}
body.jfa-cartv2 .cart_totals table.shop_table th,body.jfa-cartv2 .cart_totals table.shop_table td{display:block!important;padding:0!important;border:0!important;background:none!important;width:auto!important;text-align:left!important}
body.jfa-cartv2 .cart_totals table.shop_table td::before{display:none!important}
body.jfa-cartv2 .cart_totals th{font-size:14.5px!important;font-weight:600!important;color:var(--ink)!important}
body.jfa-cartv2 .cart_totals td{font-size:15px;color:var(--ink);text-align:right!important}
body.jfa-cartv2 .cart_totals .tax_label,body.jfa-cartv2 .cart_totals .includes_tax{font-size:12px!important;color:var(--ink2)!important}
/* delivery: full-width choices */
body.jfa-cartv2 .cart_totals tr.shipping td{flex:1 1 100%;text-align:left!important}
body.jfa-cartv2 .cart_totals tr.shipping th{flex:1 1 100%}
body.jfa-cartv2 .cart_totals tr.shipping th{font-size:0!important}
body.jfa-cartv2 .cart_totals tr.shipping th::after{content:"Delivery or collection";font-size:14.5px}
body.jfa-cartv2 ul#shipping_method{list-style:none!important;margin:8px 0 0!important;padding:0!important;display:grid;gap:8px}
body.jfa-cartv2 ul#shipping_method li{margin:0!important;padding:0!important;list-style:none!important;position:relative}
body.jfa-cartv2 ul#shipping_method li::before{display:none!important}
body.jfa-cartv2 ul#shipping_method input.shipping_method{position:absolute!important;left:14px;top:50%;margin:-9px 0 0!important;width:18px;height:18px;accent-color:var(--cyanText)}
body.jfa-cartv2 ul#shipping_method label{display:block!important;margin:0!important;padding:13px 14px 13px 42px!important;border:1px solid var(--line);border-radius:12px;background:#fff;
  font-size:14px!important;line-height:1.4;color:var(--ink)!important;cursor:pointer}
body.jfa-cartv2 ul#shipping_method li:has(input:checked) label{border-color:var(--cyanText);box-shadow:0 0 0 1px var(--cyanText) inset;background:#F2FBFF}
body.jfa-cartv2 ul#shipping_method label .amount{font-weight:700}
body.jfa-cartv2 .woocommerce-shipping-destination{margin:8px 0 0!important;font-size:12.5px!important;color:var(--ink2)!important}
body.jfa-cartv2 .shipping-calculator-button{font-size:12.5px!important;color:var(--cyanText)!important}
/* total */
body.jfa-cartv2 .cart_totals tr.order-total{border-bottom:0!important;padding-top:16px!important}
body.jfa-cartv2 .cart_totals tr.order-total th{font-family:Oswald,sans-serif;font-size:18px!important;text-transform:uppercase;letter-spacing:.04em}
body.jfa-cartv2 .cart_totals tr.order-total td strong .amount{font-family:Oswald,sans-serif;font-weight:600;font-size:30px;line-height:1;color:var(--ink)}
body.jfa-cartv2 .cart_totals tr.order-total td .includes_tax{display:block;margin-top:4px}
body.jfa-cartv2 .cart_totals .woocommerce-Price-currencySymbol{font-size:inherit!important;vertical-align:baseline!important}
body.jfa-cartv2 .cart_totals tr.order-total td{flex:1 1 auto}
/* checkout */
body.jfa-cartv2 .wc-proceed-to-checkout{padding:6px 0 0!important;margin:0!important}
body.jfa-cartv2 .wc-proceed-to-checkout a.checkout-button{display:flex!important;align-items:center;justify-content:center;width:100%!important;height:58px!important;
  margin:4px 0 0!important;padding:0 18px!important;border:0!important;border-radius:12px!important;background:var(--cyan)!important;color:#04141C!important;
  font-family:Oswald,sans-serif!important;font-weight:600!important;font-size:18px!important;letter-spacing:.06em!important;text-transform:uppercase!important;
  box-shadow:0 14px 32px -16px rgba(0,198,255,.9)!important;transition:transform .15s,filter .15s}
body.jfa-cartv2 .wc-proceed-to-checkout a.checkout-button:hover{transform:translateY(-1px);filter:brightness(1.05)}
/* Stripe draws the Apple Pay / Google Pay / Link buttons; make each one full width in the narrow summary column */
body.jfa-cartv2 #wc-stripe-express-checkout-element{margin-top:10px!important;display:flex!important;flex-direction:column!important;gap:8px}
body.jfa-cartv2 #wc-stripe-express-checkout-element .StripeElement,body.jfa-cartv2 #wc-stripe-express-checkout-element .__PrivateStripeElement{width:100%!important;max-width:none!important}
body.jfa-cartv2 #wc-stripe-express-checkout-element iframe{width:100%!important;min-width:100%!important}
/* under the buttons */
body.jfa-cartv2 .jfa-cart-after{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
body.jfa-cartv2 .jfa-pay{display:flex;flex-wrap:wrap;gap:6px;list-style:none!important;margin:0!important;padding:0!important}
body.jfa-cartv2 .jfa-pay li{margin:0!important;padding:0!important;list-style:none!important;display:flex;align-items:center;justify-content:center;width:46px;height:30px;border:1px solid var(--line);border-radius:6px;background:#fff;overflow:hidden}
body.jfa-cartv2 .jfa-pay li::before{display:none!important}
body.jfa-cartv2 .jfa-pay img{display:block;width:100%!important;height:100%!important;object-fit:contain;padding:2px;box-sizing:border-box}
body.jfa-cartv2 .jfa-cart-ticks{list-style:none!important;margin:14px 0 0!important;padding:0!important;display:grid;gap:8px}
body.jfa-cartv2 .jfa-cart-ticks li{position:relative;margin:0!important;padding:0 0 0 24px!important;font-size:13px;line-height:1.5;color:var(--ink2);list-style:none!important}
body.jfa-cartv2 .jfa-cart-ticks li::before{content:"";position:absolute;left:0;top:3px;width:15px;height:15px;border-radius:50%;
  background:var(--ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round' d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/10px no-repeat}
body.jfa-cartv2 .jfa-cart-ticks b{color:var(--ink)}
body.jfa-cartv2 .jfa-cart-ticks a{color:var(--cyanText)!important}

/* notices on the basket ("removed", "updated", errors) */
body.jfa-cartv2 .woocommerce-notices-wrapper .woocommerce-message,body.jfa-cartv2 .woocommerce-notices-wrapper .woocommerce-info,
body.jfa-cartv2 .woocommerce-notices-wrapper .woocommerce-error{border:1px solid var(--line)!important;border-radius:12px!important;background:var(--soft)!important;
  color:var(--ink)!important;padding:14px 16px!important;margin:0 0 16px!important;font-size:14.5px}
body.jfa-cartv2 .woocommerce-notices-wrapper .woocommerce-error{background:#FDF3F0!important;border-color:#F0D8D0!important}
body.jfa-cartv2 .woocommerce-notices-wrapper .woocommerce-message::before,body.jfa-cartv2 .woocommerce-notices-wrapper .woocommerce-info::before{display:none!important}
body.jfa-cartv2 .woocommerce-notices-wrapper a{color:var(--cyanText)!important}

/* empty basket */
body.jfa-cartv2 .cart-empty{font-family:Oswald,sans-serif;font-size:22px;text-transform:uppercase;color:var(--ink)}
body.jfa-cartv2 .return-to-shop a.button{display:inline-flex!important;align-items:center;height:52px!important;padding:0 24px!important;border-radius:12px!important;border:0!important;
  background:var(--cyan)!important;color:#04141C!important;font-family:Oswald,sans-serif!important;font-weight:600!important;letter-spacing:.06em;text-transform:uppercase}

/* phone: sticky total + checkout once the real button scrolls away */
.jfa-cbar{position:fixed;left:0;right:0;bottom:0;z-index:9998;background:#fff;border-top:1px solid #E2E8EE;box-shadow:0 -10px 30px -18px rgba(15,23,32,.5);
  transform:translateY(110%);transition:transform .22s ease;padding:10px 16px calc(10px + env(safe-area-inset-bottom))}
.jfa-cbar.on{transform:none}
.jfa-cbar-in{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:600px;margin:0 auto}
.jfa-cbar-t{font-family:Oswald,sans-serif;font-size:22px;font-weight:600;color:#10171E;line-height:1}
.jfa-cbar-t small{display:block;font-family:'Open Sans',sans-serif;font-size:11px;font-weight:400;color:#55636F;text-transform:uppercase;letter-spacing:.12em;margin-bottom:3px}
.jfa-cbar-go{display:inline-flex;align-items:center;justify-content:center;height:50px;padding:0 22px;border-radius:12px;background:#00C6FF;color:#04141C!important;
  font-family:Oswald,sans-serif;font-weight:600;font-size:16px;letter-spacing:.06em;text-transform:uppercase;text-decoration:none!important;flex:1 1 auto;max-width:240px}
@media(min-width:900px){.jfa-cbar{display:none}}
@media (prefers-reduced-motion:reduce){.jfa-cbar{transition:none}}

@media(max-width:420px){body.jfa-cartv2 .jfa-pay{gap:5px}body.jfa-cartv2 .jfa-pay li{width:40px;height:27px}}

/* ---- notices (1 Oct 2026). The theme wraps every notice in a full-width dark band (outer-container >
   inner-container > full-page), and Elementor's wrapper is a flex row, so an empty-coupon message pushed
   the whole basket sideways. One plain card, in the flow. ---- */
body.jfa-cartv2 .elementor-widget-woocommerce-cart .woocommerce{display:block!important}
body.jfa-cartv2 .woocommerce-notices-wrapper{display:block!important;background:none!important;padding:0!important;margin:0 0 16px!important;
  width:auto!important;max-width:none!important;position:static!important;left:auto!important;right:auto!important;transform:none!important}
body.jfa-cartv2 .woocommerce-notices-wrapper:empty{display:none!important}
body.jfa-cartv2 .woocommerce-notices-wrapper .outer-container,body.jfa-cartv2 .woocommerce-notices-wrapper .inner-container{background:none!important;padding:0!important;margin:0!important;
  width:auto!important;max-width:none!important;min-height:0!important;display:block!important}
body.jfa-cartv2 .woocommerce-notices-wrapper .full-page{background:#fff!important;border:1px solid var(--line)!important;border-radius:12px!important;padding:14px 16px!important;
  margin:0!important;width:auto!important;max-width:none!important;text-align:left!important;color:var(--ink)!important;font-size:14.5px!important;box-shadow:none!important}
body.jfa-cartv2 .woocommerce-notices-wrapper ul{margin:0!important;padding:0!important;list-style:none!important}
body.jfa-cartv2 .woocommerce-notices-wrapper li{margin:0!important;list-style:none!important}
/* discount code button: real text now (set by script), white outline */
body.jfa-cartv2 .coupon button.e-apply-coupon{font-size:14px!important;color:var(--ink)!important;min-width:96px}

/* anything WooCommerce drops into the grid (notices) spans the full width; the two columns keep their places */
body.jfa-cartv2 .e-cart__container>*:not(.e-cart__column){grid-column:1/-1!important}
@media(min-width:960px){body.jfa-cartv2 .e-cart__container>.e-cart__column-start{grid-column:1!important}
  body.jfa-cartv2 .e-cart__container>.e-cart__column-end{grid-column:2!important;grid-row:span 2}}

/* the theme floats its notice wrapper; take it out of the float so the page below starts underneath it */
body.jfa-cartv2 .woocommerce-notices-wrapper,body.jfa-cartv2 .woocommerce-notices-wrapper .outer-container,body.jfa-cartv2 .woocommerce-notices-wrapper .inner-container{float:none!important;clear:both}
body.jfa-cartv2 .woocommerce-notices-wrapper .full-page{display:block!important;float:none!important;width:auto!important}
body.jfa-cartv2 .e-cart__container,body.jfa-cartv2 .e-checkout__container{clear:both}
