/* ============================================================
   SAVAGEARS — theme-level CSS (not in the prototype helmet):
   page wrapper, sticky-nav scrolled state, cart drawer + overlay
   + toast, and a light WooCommerce skin for cart / checkout / shop.
   Section visuals themselves are inline-styled in the markup
   (ported verbatim from the prototype) so they stay pixel-exact.
   ============================================================ */

html { scroll-behavior: smooth; }
body.sg { margin: 0; overflow-x: hidden; background: var(--sg-bg); color: var(--sg-text); font-family: var(--sg-body); -webkit-font-smoothing: antialiased; }
body.sg a { color: inherit; }
img { max-width: 100%; }

/* ---- Wholesale-only tokens / keyframes (storefront app.css lacks them) ---- */
:root { --wa: #25d366; }
@keyframes wsmarq { from { transform: translateX(0); } to { transform: translateX(-50%); } }
input::placeholder, textarea::placeholder { color: var(--sg-dim); }

/* ---- Sticky nav scrolled state (JS toggles .sg-scrolled) ---- */
#sg-nav.sg-scrolled, #ws-nav.sg-scrolled {
	background: var(--sg-glass);
	-webkit-backdrop-filter: saturate(160%) blur(14px);
	backdrop-filter: saturate(160%) blur(14px);
	border-bottom-color: var(--sg-line);
}

/* ---- Image zoom on hover (replaces the prototype's style-hover) ---- */
/* #details now uses the .bento grid (see app.css). */
body.sg-wholesale img { transition: transform .7s cubic-bezier(.2,.7,.2,1); }
body.sg-wholesale .sg-zoom:hover img,
body.sg-wholesale figure:hover img,
body.sg-wholesale a:hover > img { transform: scale(1.06); }

/* Wholesale "קו מלא למדף" shelf: 5 cards (3 bags + 2 wallets). Flex + centered
   wrap so wide desktop shows all 5 in one row, and narrower widths center the
   last row instead of leaving a lonely orphan card in an empty column. */
.sg-wh-shelf { display: flex; flex-wrap: wrap; justify-content: center; gap: clamp(16px,2vw,24px); }
.sg-wh-shelf > div { flex: 1 1 200px; min-width: 0; max-width: 260px; }
@media (max-width: 560px) { .sg-wh-shelf > div { flex-basis: 100%; max-width: none; } }

/* ---- Reveal-on-scroll (progressive enhancement; visible without JS) ---- */
.sg-rv-init { opacity: 0; transform: translateY(34px); transition: opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); }
.sg-rv-in { opacity: 1 !important; transform: none !important; }
@media (prefers-reduced-motion: reduce){ .sg-rv-init{ opacity:1; transform:none; } }

/* ---- Cart drawer + overlay ---- */
.sg-overlay {
	position: fixed; inset: 0; background: var(--sg-veil); z-index: 96;
	opacity: 0; pointer-events: none; transition: opacity .3s ease;
}
.sg-drawer {
	position: fixed; top: 0; bottom: 0; left: 0; width: min(420px, 92vw);
	background: var(--sg-surface); border-inline-end: 1px solid var(--sg-line);
	z-index: 97; display: flex; flex-direction: column;
	transform: translateX(-100%); transition: transform .34s cubic-bezier(.2,.7,.2,1);
}
.sg-cart-open .sg-overlay { opacity: 1; pointer-events: auto; }
.sg-cart-open .sg-drawer { transform: translateX(0); }
body.sg-cart-open { overflow: hidden; }
.sg-drawer-inner { display: flex; flex-direction: column; flex: 1; min-height: 0; }

/* ---- Cart drawer: in-flight state ----
   The drawer is repainted the instant a button is pressed and the server reply
   lands ~1.2s later, so these rules only mark what the browser could not work
   out for itself. They are deliberately quiet: a badge that flashes on every
   single tap is worse noise than the wait it is reporting.

   `display` is never set on the elements app.js toggles, so the UA's
   `[hidden] { display: none }` holds — but Flatsome's stylesheet also loads on
   the cart and checkout templates, so state it here rather than trust it. */
.sg-drawer [hidden] { display: none !important; }

/* A hairline running along the top of the drawer while a request is out. The
   250ms delay means a fast reply never draws it at all. */
.sg-drawer::before {
	content: ''; position: absolute; inset-inline: 0; top: 0; height: 2px;
	background: linear-gradient(90deg, transparent, var(--sg-accent-ink), transparent);
	transform: scaleX(0); transform-origin: 0 50%; opacity: 0;
	transition: opacity .2s ease .25s; z-index: 3; pointer-events: none;
}
body.sg-cart-busy .sg-drawer::before { opacity: 1; animation: sg-cart-wait 1.1s ease-in-out infinite; }
@keyframes sg-cart-wait {
	0%   { transform: scaleX(0);   transform-origin: 0 50%; }
	50%  { transform: scaleX(1);   transform-origin: 0 50%; }
	100% { transform: scaleX(0);   transform-origin: 100% 50%; }
}

/* The upsell is the one panel the browser cannot recompute — which offer to
   make depends on server-side logic — so it is frozen rather than guessed at.
   Same delayed fade: no flicker on a quick reply. */
body.sg-cart-busy [data-sg-upsell] {
	opacity: .5; pointer-events: none;
	transition: opacity .2s ease .25s;
}
[data-sg-upsell] { transition: opacity .2s ease; }

/* A row added optimistically has no WooCommerce cart key yet, so its own
   +/-/remove controls genuinely cannot work until the reply arrives. */
[data-sg-line][data-sg-pending] button[disabled] { opacity: .4; cursor: default; }

button.sg-add[disabled] { cursor: progress; }

@media (prefers-reduced-motion: reduce) {
	body.sg-cart-busy .sg-drawer::before { animation: none; transform: scaleX(1); }
}

/* ---- FAQ accordion ---- */
.faqcard { border: 1px solid var(--sg-line); border-radius: 14px; margin-bottom: 10px; overflow: hidden; background: var(--sg-surface); transition: border-color .25s ease, box-shadow .25s ease; }
.faqcard.is-open { border-color: var(--sg-accent-ink); box-shadow: 0 0 44px -24px var(--sg-accent); }
.faqcard .faq-panel { display: none; }
.faqcard.is-open .faq-panel { display: block; }
.faqcard .faq-sign::before { content: '+'; }
.faqcard.is-open .faq-sign::before { content: '\2212'; }

/* ---- Toast ---- */
#sg-toast {
	position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(16px);
	z-index: 95; background: var(--sg-surface); border: 1px solid var(--sg-line);
	color: var(--sg-text); padding: 13px 20px; border-radius: 9999px;
	display: flex; align-items: center; gap: 10px;
	opacity: 0; pointer-events: none; transition: opacity .25s ease, transform .25s ease;
}
#sg-toast.is-on { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ============================================================
   WooCommerce skin (cart / checkout / shop / account).
   The two designed pages are custom; these pages inherit the
   brand so the flow stays on-theme.
   ============================================================ */
.sg-shell { max-width: 1180px; margin: 0 auto; padding: clamp(96px,12vw,140px) 24px clamp(60px,8vw,100px); }

/* Legal / content pages (privacy, terms, shipping-returns, accessibility) */
.sg-page-content { max-width: 780px; font-size: 16px; }
/* …but cart and checkout render inside the same wrapper, and a 780px reading
   measure squeezed the two-column checkout into half the screen on desktop.
   Those pages are layouts, not prose — let them use the shell width. */
.woocommerce-cart .sg-page-content,
.woocommerce-checkout .sg-page-content,
.woocommerce-account .sg-page-content,
.sg-tracking .sg-page-content { max-width: none; }
.sg-page-content h2 { font-family: var(--sg-display); font-weight: 800; font-size: clamp(20px,2.4vw,26px); letter-spacing: -.01em; color: var(--sg-text); margin: 40px 0 12px; }
.sg-page-content h3 { font-family: var(--sg-display); font-weight: 700; font-size: 18px; color: var(--sg-text); margin: 26px 0 8px; }
.sg-page-content p { color: var(--sg-muted); margin: 0 0 14px; }
.sg-page-content ul, .sg-page-content ol { color: var(--sg-muted); margin: 0 0 18px; padding-inline-start: 22px; }
.sg-page-content li { margin: 0 0 8px; }
.sg-page-content strong { color: var(--sg-text); font-weight: 700; }
.sg-page-content a { color: var(--sg-accent-ink); text-decoration: none; }
.sg-page-content a:hover { text-decoration: underline; }
.sg-page-content em { color: var(--sg-dim); font-size: 13.5px; }

/* Legal / info pages (template-legal.php) — a readable branded document */
.sg-shell.sg-legal { max-width: 820px; }
.sg-legal .sg-legal-head { margin: 0 0 clamp(24px,4vw,38px); padding-bottom: 22px; border-bottom: 1px solid var(--sg-line); }
.sg-legal .sg-legal-eyebrow { font-family: var(--sg-mono); font-size: 12px; letter-spacing: .22em; color: var(--sg-accent-ink); }
.sg-legal .sg-legal-head h1 { font-family: var(--sg-display); font-weight: 900; letter-spacing: -.02em; font-size: clamp(30px,5vw,48px); line-height: 1.04; margin: 14px 0 0; color: var(--sg-text); }
.sg-legal .sg-legal-updated { margin: 12px 0 0; font-family: var(--sg-mono); font-size: 12.5px; color: var(--sg-dim); }
.sg-legal .sg-legal-body { max-width: none; }
.sg-legal .sg-legal-body h2:first-child { margin-top: 0; }
.sg-legal .sg-legal-more { margin: clamp(38px,5vw,58px) 0 0; padding-top: 26px; border-top: 1px solid var(--sg-line); }
.sg-legal .sg-legal-more-label { font-family: var(--sg-mono); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--sg-dim); }
.sg-legal .sg-legal-more-links { display: flex; flex-wrap: wrap; gap: 10px 12px; margin-top: 14px; }
.sg-legal .sg-legal-more-links a { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--sg-muted); text-decoration: none; border: 1px solid var(--sg-line); border-radius: 9999px; padding: 9px 16px; transition: border-color .2s ease, color .2s ease; }
.sg-legal .sg-legal-more-links a:hover { border-color: var(--sg-accent-ink); color: var(--sg-text); }
.sg-legal .sg-legal-more-links a svg { color: var(--sg-accent-ink); }

/* Flatsome dumps its off-canvas mobile menu + popup content (newsletter signup,
   search) into wp_footer on every page; its own CSS hides them, but we dequeue
   Flatsome CSS on our pages — so hide these leftovers ourselves. This is what
   was showing as a stray "search / • / התחברות / Newsletter" list + empty dot. */
#main-menu, .mfp-hide, .header-newsletter-signup, #header-newsletter-signup { display: none !important; }
/* WooCommerce's password show/hide toggle renders as a stray dash without Flatsome's
   icon font — hide it on our account/checkout forms. */
.sg-shell .show-password-input { display: none; }
.woocommerce-page h1, .woocommerce h1, .woocommerce h2 { font-family: var(--sg-display); font-weight: 900; letter-spacing: -.02em; }

/* Branded keyboard focus — gold ring instead of the browser default (blue), on
   all our pages. Only swaps the colour; focus is never removed (accessibility).
   Text inputs keep their own gold box-shadow ring (higher-specificity :focus). */
body.sg a:focus-visible,
body.sg button:focus-visible,
body.sg select:focus-visible,
body.sg textarea:focus-visible,
body.sg input:focus-visible,
body.sg [tabindex]:focus-visible,
body.sg .select2-selection:focus-visible {
	outline: 2px solid var(--sg-accent);
	outline-offset: 2px;
}

.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews, .woocommerce-store-notice {
	background: var(--sg-surface); border: 1px solid var(--sg-line); border-top: 3px solid var(--sg-accent-ink);
	color: var(--sg-text); border-radius: 12px; padding: 14px 18px;
}
.woocommerce-message a, .woocommerce-info a { color: var(--sg-accent-ink); }

.woocommerce table.shop_table { background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 14px; border-collapse: separate; }
.woocommerce table.shop_table th, .woocommerce table.shop_table td { border-top: 1px solid var(--sg-line); color: var(--sg-text); }
.woocommerce .cart_totals, .woocommerce-checkout #order_review { background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 16px; padding: 18px; }

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.select2-container .select2-selection {
	background: var(--sg-bg); border: 1px solid var(--sg-line); color: var(--sg-text);
	border-radius: 10px; padding: 12px 13px; font-family: var(--sg-body);
}
.woocommerce form .form-row label { color: var(--sg-muted); font-size: 13px; }

.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt {
	background: var(--sg-accent); color: var(--sg-on-accent); border: none; border-radius: 9999px;
	padding: 13px 24px; font-family: var(--sg-body); font-weight: 800; font-size: 15px; cursor: pointer;
	transition: filter .2s ease, transform .2s ease;
}
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover { filter: brightness(1.08); transform: translateY(-1px); }
.woocommerce .button.wc-backward, .woocommerce a.button.alt.wc-forward { background: var(--sg-accent); }
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button { font-size: 16px; }

.woocommerce ul.products li.product .price, .woocommerce div.product p.price, .woocommerce div.product span.price { color: var(--sg-accent-ink); font-weight: 800; }
.woocommerce .quantity input.qty { background: var(--sg-bg); border: 1px solid var(--sg-line); color: var(--sg-text); border-radius: 8px; }

/* ============================================================
   PREMIUM CHECKOUT — scoped to .woocommerce-checkout
   ============================================================ */

/* Checkout guard (assets/js/checkout-guard.js): a transparent shield over the
   express-pay buttons while the form is incomplete; required offenders and
   the terms row turn red. Shield hidden = form complete = real button live. */
/* PayPal's iframe carries z-index:100 (measured live) — the shield must sit above it. */
.woocommerce-checkout .sg-pay-shield { position: absolute; z-index: 1000; cursor: pointer; background: transparent; }
.woocommerce-checkout .payment_box, .woocommerce-checkout .wc_payment_method, .woocommerce-checkout #payment, .woocommerce-checkout .place-order { position: relative; }
.woocommerce-checkout .sg-pay-shield[hidden] { display: none; }
.woocommerce-checkout .form-row.sg-guard-invalid input.input-text,
.woocommerce-checkout .form-row.sg-guard-invalid select,
.woocommerce-checkout .form-row.sg-guard-invalid textarea { border-color: var(--sg-err) !important; box-shadow: 0 0 0 3px var(--sg-err-bg) !important; }
.woocommerce-checkout .form-row.sg-guard-invalid > label { color: var(--sg-err); }
.woocommerce-checkout .form-row.sg-guard-invalid .woocommerce-terms-and-conditions-checkbox-text,
.woocommerce-checkout .form-row.sg-guard-invalid .woocommerce-terms-and-conditions-checkbox-text a { color: var(--sg-err) !important; font-weight: 700; }
.woocommerce-checkout .sg-guard-invalid #terms { outline: 2px solid var(--sg-err); outline-offset: 2px; border-radius: 3px; }
.woocommerce-checkout .sg-guard-notice { background: var(--sg-err-bg); border: 1px solid var(--sg-err-line); color: var(--sg-err); border-radius: 12px; padding: 12px 16px; margin: 0 0 16px; font-weight: 600; }


.woocommerce-checkout .sg-shell { max-width: 1200px; }
.woocommerce-checkout form.checkout { max-width: 1200px; margin-inline: auto; }

/* branded header */
.sg-co-head { margin: 0 0 26px; }
.sg-co-title { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.sg-co-head h1 { font-family: var(--sg-display); font-weight: 900; letter-spacing: -.02em; font-size: clamp(28px,4vw,42px); margin: 0; color: var(--sg-text); }
.sg-co-secure { display: inline-flex; align-items: center; gap: 7px; font-family: var(--sg-mono); font-size: 12px; letter-spacing: .05em; color: var(--sg-ok); background: var(--sg-ok-bg); border: 1px solid var(--sg-ok-line); padding: 6px 12px; border-radius: 9999px; }
.sg-co-sub { margin: 10px 0 0; color: var(--sg-muted); font-size: 15px; }

/* two-column layout: Flatsome wraps the checkout in .row > .large-7 (details) +
   .large-5 (order review). We dequeue Flatsome CSS, so grid that .row ourselves. */
.woocommerce-checkout form.checkout > .row { display: grid; grid-template-columns: 1fr minmax(340px,400px); gap: 28px; align-items: start; max-width: none; }
.woocommerce-checkout form.checkout > .row > .large-7 { grid-column: 1; min-width: 0; float: none; width: auto; max-width: none; padding: 0; }
.woocommerce-checkout form.checkout > .row > .large-5 { grid-column: 2; float: none; width: auto; max-width: none; padding: 0; }
.woocommerce-checkout .checkout-sidebar { position: sticky; top: 96px; }
.woocommerce-checkout #order_review_heading { margin: 0 0 14px; font-family: var(--sg-mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--sg-dim); }

/* stack the col2-set into full-width cards */
.woocommerce-checkout #customer_details.col2-set { display: block; }
.woocommerce-checkout #customer_details .col-1,
.woocommerce-checkout #customer_details .col-2 { width: 100%; float: none; max-width: none; margin: 0 0 18px; }
.woocommerce-checkout #customer_details .col-2:empty { display: none; }

/* cards.
   This WooCommerce build renders #customer_details WITHOUT the legacy
   .col-1/.col-2 wrappers, so the card was being painted on selectors that
   never matched — invisible on the dark ground, obvious on paper. Put the
   card on #customer_details itself and neutralise the inner columns so older
   markup does not end up with a card inside a card. */
.woocommerce-checkout #customer_details,
.woocommerce-checkout #order_review {
  background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 16px;
  padding: clamp(18px,2.4vw,26px); box-shadow: 0 14px 34px -28px var(--sg-shadow);
}
.woocommerce-checkout #customer_details .col-1,
.woocommerce-checkout #customer_details .col-2 {
  background: transparent; border: 0; padding: 0; box-shadow: none;
}
.woocommerce-checkout .woocommerce-billing-fields > h3,
.woocommerce-checkout .woocommerce-additional-fields > h3,
.woocommerce-checkout .woocommerce-shipping-fields h3 {
  font-family: var(--sg-display); font-weight: 800; font-size: 19px; margin: 0 0 18px; color: var(--sg-text);
}

/* Field grid — SIX tracks so both splits divide cleanly: first/last name are
   3+3, the entrance/floor/apartment minis are 2+2+2, everything else spans
   the row. (A 2-track grid can never seat three fields on one line.) */
.woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0 16px; }
.woocommerce-checkout .woocommerce-billing-fields__field-wrapper .form-row,
.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper .form-row { float: none !important; width: auto !important; margin: 0 0 15px !important; padding: 0 !important; }
.woocommerce-checkout .form-row-wide,
.woocommerce-checkout #billing_country_field,
.woocommerce-checkout #billing_address_1_field,
.woocommerce-checkout #billing_email_field { grid-column: 1 / -1; }
.woocommerce-checkout .form-row-first { grid-column: span 3; }
.woocommerce-checkout .form-row-last { grid-column: span 3; }
.woocommerce-checkout .form-row.sg-mini { grid-column: span 2; }

/* labels + inputs */
.woocommerce-checkout form .form-row { margin: 0 0 15px; }
.woocommerce-checkout form .form-row label { display: block; margin: 0 0 7px; color: var(--sg-muted); font-size: 13px; font-weight: 600; }
.woocommerce-checkout form .form-row .required { color: var(--sg-accent-ink); border: 0; text-decoration: none; }
.woocommerce-checkout form .form-row .optional { color: var(--sg-dim); }
.woocommerce-checkout form .form-row input.input-text,
.woocommerce-checkout form .form-row textarea,
.woocommerce-checkout form .form-row select {
  width: 100%; box-sizing: border-box; height: 50px; background: var(--sg-bg); border: 1px solid var(--sg-line-strong);
  border-radius: 11px; color: var(--sg-text); padding: 0 15px; font-family: var(--sg-body); font-size: 15px;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.woocommerce-checkout form .form-row textarea { height: auto; min-height: 92px; padding: 13px 15px; resize: vertical; }
.woocommerce-checkout form .form-row input.input-text:focus,
.woocommerce-checkout form .form-row textarea:focus,
.woocommerce-checkout form .form-row select:focus { border-color: var(--sg-accent-ink); box-shadow: 0 0 0 3px var(--sg-accent-soft); outline: none; }
.woocommerce-checkout form .form-row input::placeholder,
.woocommerce-checkout form .form-row textarea::placeholder { color: var(--sg-dim); }

/* select2 (country) */
.woocommerce-checkout .select2-container--default .select2-selection--single { height: 50px; padding: 0; box-sizing: border-box; background: var(--sg-bg); border: 1px solid var(--sg-line-strong); border-radius: 11px; }
.woocommerce-checkout .select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--sg-text); line-height: 50px; padding: 0 15px; }
.woocommerce-checkout .select2-container--default .select2-selection--single .select2-selection__arrow { height: 48px; }
.select2-dropdown { background: var(--sg-surface) !important; border: 1px solid var(--sg-line-strong) !important; color: var(--sg-text); }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--sg-accent-soft) !important; color: var(--sg-text) !important; }
.select2-search--dropdown .select2-search__field { background: var(--sg-bg); border: 1px solid var(--sg-line); color: var(--sg-text); border-radius: 8px; }

/* order summary table */
.woocommerce-checkout #order_review .shop_table { background: transparent; border: 0; border-radius: 0; width: 100%; }
.woocommerce-checkout #order_review .shop_table thead th { border: 0; border-bottom: 1px solid var(--sg-line); padding: 0 0 12px; color: var(--sg-dim); font-family: var(--sg-mono); font-size: 10.5px; letter-spacing: .12em; font-weight: 600; text-transform: uppercase; }
.woocommerce-checkout #order_review .shop_table td,
.woocommerce-checkout #order_review .shop_table tbody th,
.woocommerce-checkout #order_review .shop_table tfoot th,
.woocommerce-checkout #order_review .shop_table tfoot td { border: 0; border-top: 1px solid var(--sg-line); padding: 14px 0; color: var(--sg-text); font-size: 14px; vertical-align: middle; }
.woocommerce-checkout .sg-co-item { display: flex; align-items: center; gap: 12px; }
.woocommerce-checkout .sg-co-item-thumb img { width: 52px; height: 52px; border-radius: 9px; object-fit: cover; background: var(--plate); display: block; margin: 0; }
.woocommerce-checkout .sg-co-item-name { font-weight: 600; line-height: 1.3; }
.woocommerce-checkout #order_review .product-total,
.woocommerce-checkout #order_review .product-quantity { white-space: nowrap; }
.woocommerce-checkout #order_review .cart-subtotal td,
.woocommerce-checkout #order_review .shipping td,
.woocommerce-checkout #order_review .cart-subtotal th,
.woocommerce-checkout #order_review .shipping th { color: var(--sg-muted); }
.woocommerce-checkout #order_review tr.fee th,
.woocommerce-checkout #order_review tr.fee td { color: var(--sg-accent-ink); font-weight: 600; }
.woocommerce-checkout #order_review .order-total th { font-family: var(--sg-display); font-size: 16px; color: var(--sg-text); }
.woocommerce-checkout #order_review .order-total .amount,
.woocommerce-checkout #order_review .order-total bdi { color: var(--sg-accent-ink); font-family: var(--sg-display); font-weight: 900; font-size: 23px; }

/* payment */
.woocommerce-checkout #payment { background: transparent; border-radius: 0; border-top: 1px solid var(--sg-line); margin-top: 8px; padding-top: 18px; }
.woocommerce-checkout #payment ul.payment_methods { border: 0; padding: 0; margin: 0 0 6px; }
.woocommerce-checkout #payment ul.payment_methods li { list-style: none; background: none; }
.woocommerce-checkout #payment ul.payment_methods li label { color: var(--sg-text); }
/* Gateway description (COD "שלמו במזומן…", and ppcp when connected) reads as an
   explanation line, not an empty input: no box border, muted text, soft indent. */
.woocommerce-checkout #payment .payment_box {
	background: transparent !important; border: 0; border-radius: 0; box-shadow: none;
	color: var(--sg-dim); font-size: 13px; line-height: 1.55;
	margin: 2px 0 4px; padding: 2px 2px 2px 0;
}
.woocommerce-checkout #payment .payment_box p { margin: 0; }
.woocommerce-checkout #payment .payment_box::before { display: none; }
/* Official PayPal Payments (ppcp) gateway — dark-skin the method row + smart-button
   container (the buttons themselves are a PayPal iframe; set style=Gold in the plugin). */
.woocommerce-checkout .payment_method_ppcp-gateway label,
.woocommerce-checkout .payment_method_ppcp-credit-card-gateway label { color: var(--sg-text); display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.woocommerce-checkout .payment_method_ppcp-gateway label img,
.woocommerce-checkout li[class*="payment_method_ppcp"] label img { max-height: 24px; width: auto; display: inline-block; }
.woocommerce-checkout li[class*="payment_method_ppcp"] .payment_box { background: transparent !important; border: 0; border-radius: 0; }
.woocommerce-checkout .ppcp-button-container,
.woocommerce-checkout [id^="ppc-button"] { margin-top: 10px; }
.woocommerce-checkout .ppcp-messages { margin: 8px 0 0; }
.woocommerce-checkout #payment div.place-order { padding: 0; }
.woocommerce-checkout #place_order { width: 100%; padding: 17px; font-size: 16.5px; border-radius: 12px; margin-top: 4px; }
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper { margin: 4px 0 16px; }
/* branded, comfortably tappable checkboxes (terms + ship-to-different), RTL-aligned */
.woocommerce-checkout .woocommerce-form__label-for-checkbox,
.woocommerce-checkout #ship-to-different-address label { color: var(--sg-muted); font-size: 13.5px; display: flex; align-items: flex-start; gap: 10px; cursor: pointer; margin: 0; }
.woocommerce-checkout input[type="checkbox"],
.woocommerce-checkout #ship-to-different-address input[type="checkbox"] { accent-color: var(--sg-accent); width: 20px; height: 20px; min-width: 20px; margin: 1px 0 0; flex: none; cursor: pointer; }
.woocommerce-checkout .woocommerce-invalid input.input-text { border-color: var(--sg-err-line); }
.woocommerce-checkout .woocommerce-validated input.input-text { border-color: var(--sg-ok-line); }

/* coupon — consistent with the cards (no dashed default, gold link) */
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info { background: var(--sg-surface); border: 1px solid var(--sg-line); border-top: 1px solid var(--sg-line); border-radius: 12px; padding: 14px 18px; color: var(--sg-muted); }
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info::before { display: none; }
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info a { color: var(--sg-accent-ink); font-weight: 600; }
.woocommerce-checkout form.checkout_coupon { background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 12px; padding: 18px; }
.woocommerce-checkout form.checkout_coupon p:first-child { color: var(--sg-muted); font-size: 13.5px; }

/* free-shipping progress in the order summary (row in the totals table) */
.woocommerce-checkout #order_review .shop_table tfoot .sg-co-ship-row td { border-top: 0; padding: 6px 0 2px; }
.sg-co-ship { margin: 0; }
.sg-co-ship-track { height: 6px; border-radius: 9999px; background: var(--sg-line); overflow: hidden; }
.sg-co-ship-fill { height: 100%; border-radius: 9999px; background: var(--sg-accent); transition: width .5s ease; }
.sg-co-ship.is-free .sg-co-ship-fill { background: var(--sg-ok); }
.sg-co-ship-msg { margin: 8px 0 0; font-size: 12.5px; color: var(--sg-dim); line-height: 1.5; }
.sg-co-ship.is-free .sg-co-ship-msg { color: var(--sg-ok); font-weight: 700; }

/* trust row */
.sg-co-trust { display: flex; flex-wrap: wrap; gap: 12px 18px; justify-content: center; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--sg-line); }
.sg-co-trust-item { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--sg-muted); }
.sg-co-trust-ic { color: var(--sg-accent-ink); display: inline-flex; }

/* mobile */
@media (max-width: 880px) {
  .woocommerce-checkout form.checkout > .row { display: block; }
  .woocommerce-checkout .checkout-sidebar { position: static; margin-top: 20px; }
  .woocommerce-checkout #order_review_heading { margin-top: 24px; }
  /* Mobile: everything stacks — except the entrance/floor/apartment minis,
     which stay three-up (their values are 1–3 characters). */
  .woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
  .woocommerce-checkout .woocommerce-shipping-fields__field-wrapper { grid-template-columns: repeat(3, 1fr); }
  .woocommerce-checkout .form-row-first, .woocommerce-checkout .form-row-last { grid-column: 1 / -1; }
  .woocommerce-checkout .form-row.sg-mini { grid-column: span 1; }
}

/* ============================================================
   CART — scoped to .woocommerce-cart. The cart uses Flatsome's markup
   (.ux-quantity, .ux-cart-coupon, .cart-sidebar) but Flatsome's CSS is dequeued
   on our pages, so we skin those classes ourselves. Its JS still loads, so the
   +/- quantity buttons keep working.
   ============================================================ */
/* Two columns. Flatsome grids the cart as .large-7 (items) + .large-5
   (sidebar), but its CSS is dequeued here, so both rendered full width and
   stacked — the totals ended up a screen below the items. Grid the .row
   ourselves, exactly like the checkout. */
.woocommerce-cart .woocommerce.row {
	display: grid; grid-template-columns: minmax(0,1fr) minmax(320px,380px);
	gap: 26px; align-items: start; max-width: none;
}
.woocommerce-cart .woocommerce.row > .large-7 { grid-column: 1; min-width: 0; float: none; width: auto; max-width: none; padding: 0; }
.woocommerce-cart .woocommerce.row > .cart-collaterals { grid-column: 2; float: none; width: auto; max-width: none; padding: 0; }
.woocommerce-cart .cart-sidebar { position: sticky; top: 96px; }

/* items table + a real thumbnail size. Without Flatsome the images rendered at
   their natural 300px, turning every row into a 300px-tall block. */
.woocommerce-cart table.cart { background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 16px; overflow: hidden; }
.woocommerce-cart table.cart td.product-thumbnail img { width: 88px; height: 88px; object-fit: cover; display: block; }
.woocommerce-cart table.cart td { vertical-align: middle; padding: 14px 16px; }
.woocommerce-cart table.cart thead th { padding: 14px 16px; color: var(--sg-dim); font-family: var(--sg-mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; }

@media (max-width: 880px) {
	.woocommerce-cart .woocommerce.row { display: block; }
	.woocommerce-cart .cart-sidebar { position: static; margin-top: 18px; }
}

/* sidebar: coupon + totals as one cohesive stack (coupon on top) */
.woocommerce-cart .cart-sidebar { display: flex; flex-direction: column; gap: 16px; }
.woocommerce-cart .ux-cart-coupon { order: -1; }

/* totals card */
.woocommerce-cart .cart_totals { background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 16px; padding: clamp(18px,2.4vw,24px); }
/* Flatsome injects a duplicate header table (via woocommerce_before_cart_totals) before the <h2> — hide it */
.woocommerce-cart .cart_totals > table:not(.shop_table) { display: none; }
.woocommerce-cart .cart_totals > h2 { font-family: var(--sg-display); font-weight: 800; font-size: 20px; margin: 0 0 14px; color: var(--sg-text); }
.woocommerce-cart .cart_totals .shop_table { background: transparent; border: 0; border-radius: 0; width: 100%; margin: 0; }
.woocommerce-cart .cart_totals .shop_table th,
.woocommerce-cart .cart_totals .shop_table td { border: 0; border-top: 1px solid var(--sg-line); padding: 13px 0; color: var(--sg-text); font-size: 14px; background: transparent; }
.woocommerce-cart .cart_totals .cart-subtotal th,
.woocommerce-cart .cart_totals .woocommerce-shipping-totals th { color: var(--sg-muted); font-weight: 600; }
.woocommerce-cart .cart_totals tr.fee th,
.woocommerce-cart .cart_totals tr.fee td { color: var(--sg-accent-ink); font-weight: 600; }
.woocommerce-cart .cart_totals .order-total th { font-family: var(--sg-display); font-size: 16px; color: var(--sg-text); }
.woocommerce-cart .cart_totals .order-total .amount,
.woocommerce-cart .cart_totals .order-total bdi { color: var(--sg-accent-ink); font-family: var(--sg-display); font-weight: 900; font-size: 22px; }
/* free-shipping row (shared sg-co-ship markup, rendered by sg_render_ship_bar_row) */
.woocommerce-cart .cart_totals .sg-co-ship-row td { border-top: 0; padding: 10px 0 2px; }
/* proceed-to-checkout button, full width */
.woocommerce-cart .wc-proceed-to-checkout { padding: 16px 0 0; margin: 0; }
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button { display: block; width: 100%; box-sizing: border-box; text-align: center; font-size: 16px; }

/* coupon → card matching the checkout coupon */
.woocommerce-cart .ux-cart-coupon { margin: 0; background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 14px; padding: 16px 18px; }
.woocommerce-cart .ux-cart-coupon .coupon { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0; }
.woocommerce-cart .ux-cart-coupon .widget-title { flex: 1 1 100%; margin: 0 0 2px; font-family: var(--sg-display); font-weight: 700; font-size: 15px; color: var(--sg-text); }
.woocommerce-cart .ux-cart-coupon input#coupon_code { flex: 1 1 150px; min-width: 0; height: 46px; background: var(--sg-bg); border: 1px solid var(--sg-line-strong); border-radius: 10px; color: var(--sg-text); padding: 0 14px; font-size: 16px; }
.woocommerce-cart .ux-cart-coupon input#coupon_code::placeholder { color: var(--sg-dim); }
.woocommerce-cart .ux-cart-coupon button[name="apply_coupon"] { flex: none; height: 46px; padding: 0 20px; }

/* quantity: segmented [−|value|+] control (Flatsome .ux-quantity, its CSS dequeued) */
.woocommerce-cart .quantity.ux-quantity { display: inline-flex; align-items: stretch; height: 44px; border: 1px solid var(--sg-line-strong); border-radius: 10px; overflow: hidden; background: var(--sg-bg); }
.woocommerce-cart .ux-quantity .ux-quantity__button { -webkit-appearance: none; appearance: none; width: 42px; min-width: 42px; height: 42px; min-height: 42px; padding: 0; margin: 0; border: 0; border-radius: 0; background: var(--sg-tint); color: var(--sg-accent-ink); font-size: 19px; font-weight: 700; line-height: 1; cursor: pointer; box-shadow: none; transition: background .15s ease; }
.woocommerce-cart .ux-quantity .ux-quantity__button:hover { background: var(--sg-accent-soft); transform: none; filter: none; }
.woocommerce-cart .ux-quantity input.qty { width: 54px; height: 42px; min-height: 42px; text-align: center; border: 0; border-inline: 1px solid var(--sg-line); border-radius: 0; background: transparent; color: var(--sg-text); font-family: var(--sg-mono); font-size: 16px; padding: 0; -moz-appearance: textfield; box-shadow: none; }
.woocommerce-cart .ux-quantity input.qty:focus { outline: none; box-shadow: none; }
.woocommerce-cart .ux-quantity input.qty::-webkit-outer-spin-button,
.woocommerce-cart .ux-quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* cart items table rounding for thumbs */
.woocommerce-cart table.cart img { border-radius: 10px; }

/* mobile: sidebar full width under items (Flatsome large-7/large-5 already stack) */
@media (max-width: 760px) {
  .woocommerce-cart .cart-sidebar { gap: 14px; }
}
/* mobile: stack the cart items table into cards (WooCommerce's responsive-cart
   CSS is dequeued with Flatsome; rebuild it from the data-title attributes). */
@media (max-width: 660px) {
  .woocommerce-cart table.cart thead { display: none; }
  /* A <table> shrink-wraps to its content. Once the rows below became blocks
     nothing stretched it any more, so the cards rendered in a ~225px column
     with a dead strip of background beside them. Make the table and tbody
     block-level and full width so the cards fill the screen. */
  .woocommerce-cart table.cart,
  .woocommerce-cart table.cart tbody { display: block; width: 100%; }
  .woocommerce-cart table.cart tbody tr.cart_item { display: block; position: relative; border: 1px solid var(--sg-line); border-radius: 14px; padding: 14px 16px; margin: 0 0 12px; background: var(--sg-surface); }
  .woocommerce-cart table.cart tbody tr.cart_item td { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: auto; border: 0; border-top: 1px solid var(--sg-line); padding: 11px 0; text-align: start; }
  .woocommerce-cart table.cart tbody tr.cart_item td::before { content: attr(data-title); color: var(--sg-muted); font-size: 12.5px; font-weight: 600; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-thumbnail { display: block; border-top: 0; padding: 0 0 6px; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-thumbnail::before { display: none; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-thumbnail img { width: 92px; height: auto; margin: 0 auto; display: block; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-name { display: block; border-top: 0; text-align: center; padding-bottom: 6px; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-name::before { display: none; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-quantity { justify-content: center; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-quantity::before { display: none; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-remove { position: absolute; top: 6px; inset-inline-start: 6px; width: auto; padding: 0; border: 0; }
  .woocommerce-cart table.cart tbody tr.cart_item td.product-remove::before { display: none; }
  /* The "×" glyph is only ~9px wide — an impossible tap target on a phone.
     Grow the hit area to 40px without changing how large the mark looks. */
  .woocommerce-cart table.cart tbody tr.cart_item td.product-remove a.remove {
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px; font-size: 22px; line-height: 1; border-radius: 9999px;
  }
  .woocommerce-cart table.cart tbody tr:not(.cart_item) td.actions { display: block; border: 0; padding: 6px 0 0; }
}
a { text-decoration: none; }

/* ============================================================
   Sticky mobile buy-bar (storefront) — always-available CTA.
   ============================================================ */
.sg-buybar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 70; display: none; background: var(--sg-glass); -webkit-backdrop-filter: blur(16px) saturate(1.1); backdrop-filter: blur(16px) saturate(1.1); border-top: 1px solid var(--sg-line-strong); padding: 8px 14px calc(8px + env(safe-area-inset-bottom)); transform: translateY(135%); transition: transform .42s cubic-bezier(.2,.7,.2,1); box-shadow: 0 -14px 34px -22px var(--sg-shadow-strong); }
.sg-buybar-hook { display: flex; align-items: center; justify-content: center; gap: 7px; font-family: var(--sg-mono); font-size: 10.5px; letter-spacing: .01em; color: var(--sg-muted); margin-bottom: 7px; }
.sg-buybar-hook svg { color: var(--sg-accent-ink); }
.sg-buybar-row { display: flex; align-items: stretch; gap: 10px; max-width: 560px; margin: 0 auto; }
.sg-buybar-cta { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 50px; background: var(--sg-accent); color: var(--sg-on-accent); font-family: var(--sg-body); font-weight: 800; font-size: 16px; border-radius: 9999px; text-decoration: none; box-shadow: 0 12px 30px -12px var(--sg-accent); }
.sg-buybar-cart { position: relative; flex: none; width: 54px; min-height: 50px; display: inline-flex; align-items: center; justify-content: center; background: var(--sg-tint); border: 1px solid var(--sg-line-strong); color: var(--sg-text); border-radius: 16px; cursor: pointer; }
.sg-buybar-cart .sg-cart-count { position: absolute; top: 5px; inset-inline-start: 5px; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9999px; background: var(--sg-accent); color: var(--sg-on-accent); font-family: var(--sg-mono); font-size: 10px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
/* Footer links render at ~21px tall — fine with a mouse, fiddly with a thumb.
   Vertical padding grows the tap area to ~40px without moving anything visually
   (the surrounding lists already use gap, so the padding just fills the space). */
@media (max-width: 760px) {
	.sg footer a { display: inline-block; padding-block: 9px; }
}

/* ---------- mobile header ----------
   The desktop bar packs a wordmark, five links, a cart icon and a CTA. At 375px
   that never fit: the wordmark wrapped to two lines and the last two links
   ("שאלות", "סיטונאות") were clipped off-screen entirely — unreachable.
   Rather than squeeze everything, drop what the page already provides by
   scrolling and keep the two links that lead somewhere else. Inline styles from
   the prototype are overridden here, hence !important. */
/* ============================================================
   Reviews wall (page-reviews.php) — masonry via CSS columns.
   The tilt lives on an INNER div: the [data-rv] reveal ends in
   `transform:none!important` (.sg-rv-in), which would erase any
   rotation set on the revealed element itself.
   ============================================================ */
.sg-revwall { columns: 3 300px; column-gap: 20px; max-width: 1180px; margin: 0 auto; }
.sg-rev-card { break-inside: avoid; margin: 0 0 20px; }
.sg-rev-tilt { background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 16px; padding: 10px; box-shadow: 0 18px 44px -34px var(--sg-shadow-strong); transition: transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s ease; }
.sg-rev-card:nth-child(odd)  .sg-rev-tilt { transform: rotate(.5deg); }
.sg-rev-card:nth-child(even) .sg-rev-tilt { transform: rotate(-.45deg); }
.sg-rev-card:hover .sg-rev-tilt { transform: rotate(0) translateY(-3px); box-shadow: 0 24px 54px -30px var(--sg-shadow-strong); }
.sg-rev-tilt img { display: block; width: 100%; height: auto; border-radius: 10px; }
@media (prefers-reduced-motion: reduce) { .sg-rev-card .sg-rev-tilt { transform: none !important; transition: none; } }

/* Tablet band: seven links + the CTA no longer fit at the desktop 28px gap
   once "מי אנחנו" joined the row — at 761–900px the לרכישה pill was pushed
   off-screen left. Tighten the link gap only in that band (inline gap:28px on
   the <ul>, hence !important). */
@media (min-width: 761px) and (max-width: 900px) {
	#sg-nav nav { padding: 0 22px !important; }
	#sg-nav nav > ul { gap: 12px !important; }
	/* Eight links: even at a tight gap the CTA clips — the two long page
	   labels drop to their short forms (מעקב · אודות) in this band as well. */
	.sg-nav-long { display: none; }
	.sg-nav-short { display: inline; }
}

@media (max-width: 760px) {
	#sg-nav nav { gap: 10px !important; padding: 0 16px !important; }
	#sg-nav nav > a.sg-logo img { height: 22px !important; }
	#sg-nav nav > ul { gap: 6px !important; flex: 1 1 auto; justify-content: flex-end !important; }
	/* The four homepage anchors that used to be trimmed here are gone entirely
	   (replaced by the products dropdown), so there is nothing left to hide by
	   position — and a positional rule would now hide real pages. */
	/* and the tracking label loses its second word */
	.sg-nav-long { display: none; }
	.sg-nav-short { display: inline; }
	/* Four page-links never fit a phone. Order tracking yields: it lives in the
	   footer ("מעקב אחר הזמנה") and in every order e-mail, while ביקורות sells. */
	#sg-nav nav > ul > li.sg-nav-track-li { display: none; }
	#sg-nav nav > ul > li > a { font-size: 13px !important; white-space: nowrap; }

	/* The <ul> is a flex row with align-items:normal, so every <li> stretches to
	   the 64px bar while the links inside sit at the TOP of their li. One link
	   happened to fill the full height, which pulled the row to 64px and left
	   "התיקים" and "הצעות" visibly higher than "סיטונאות". Centre the row and
	   give every link the same 44px box. */
	#sg-nav nav > ul, #ws-nav nav > ul { align-items: center; }
	#sg-nav nav > ul > li, #ws-nav nav > ul > li { display: flex; align-items: center; }
	#sg-nav nav > ul > li > a { min-height: 44px; padding-block: 0 !important; padding-inline: 6px; justify-content: center; }
	#sg-nav nav > div { gap: 12px !important; }
	/* the header CTA duplicates the sticky buy bar + the hero buttons */
	#sg-nav nav > div > a { display: none !important; }

	/* Tap targets. The nav links render ~19px tall and the cart button 20×20 —
	   fine with a mouse, a coin-toss with a thumb. Padding grows the hit area
	   to ~44px without moving anything visually, because the row is centred
	   and already spaced with gap. */
	#sg-nav nav > ul > li > a,
	#sg-nav nav > a { display: inline-flex; align-items: center; padding-block: 12px; }
	#sg-nav nav > div > button { min-width: 44px; min-height: 44px; justify-content: center; }

	/* the wholesale header carries the same wordmark and broke the same way */
	#ws-nav nav > a.sg-logo img { height: 22px !important; }
	#ws-nav nav { gap: 10px !important; padding: 0 16px !important; }
}

/* 360px Androids: three page-links (אודות · מעקב · סיטונאות) leave the row
   4px short of fitting — shave the chrome gaps, not the labels. Must come
   after the 760px block: same specificity, later wins. */
@media (max-width: 400px) {
	#sg-nav nav { gap: 8px !important; }
	#sg-nav nav > ul > li > a { padding-inline: 4px; }
}

/* Small phones (≤359px). Nothing is left to hide — the bar is down to the two
   catalogue buttons and the cart, and all three have to stay. So the chrome
   gives up its last pixels instead: measured at 320px the cart button sat 3px
   off the left edge, and this recovers 14. */
@media (max-width: 359px) {
	#sg-nav nav { padding: 0 10px !important; gap: 6px !important; }
	#sg-nav nav > ul { gap: 4px !important; }
	#sg-nav nav > a.sg-logo img { height: 20px !important; }
	.sg-nav-droptoggle { font-size: 12.5px; gap: 3px; }
}

/* The wholesale header packs wordmark + B2B pill + "חזרה לחנות" + a WhatsApp CTA
   into 375px — 406px of content in a 369px bar. The CTA ran 34px off the LEFT
   edge, and body{overflow-x:hidden} swallowed it, so a scrollWidth check reported
   a clean page while the button was simply unreachable. Measure element rects,
   not document overflow. "חזרה לחנות" goes first: the wordmark already links home. */
@media (max-width: 430px) {
	#ws-nav nav > a[href]:not(.lum-press):not(:first-of-type) { display: none; }
	#ws-nav nav { gap: 8px !important; padding: 0 12px !important; }
}

@media (max-width: 760px) {
	.sg-buybar { display: block; }
	body.sg-buybar-on .sg-buybar { transform: translateY(0); }
	body.sg-cart-open .sg-buybar { transform: translateY(135%); }
	/* The accessibility button is fixed at bottom:14px with z-index 99990, so it
	   sat ON TOP of the ~90px buy bar and covered part of the CTA. Lift it while
	   the bar is up; the taller consent banner still wins when both are open. */
	body.sg-buybar-on #sg-a11y { bottom: 104px; transition: bottom .42s cubic-bezier(.2,.7,.2,1); }
	html.sg-consent-open body.sg-buybar-on #sg-a11y { bottom: 190px; }
	body.sg-cart-open #sg-a11y { bottom: 14px; }
}

@media (max-width: 760px) and (prefers-reduced-motion: reduce) {
	body.sg-buybar-on #sg-a11y { transition: none; }
}
@media (prefers-reduced-motion: reduce) { .sg-buybar { transition: none; } }

/* ============================================================
   WordPress block-library CSS ships:
       html :where([style*=border-color]) { border-style: solid }
   That is a SUBSTRING match against the entire style attribute. Our sticky
   headers declare `transition: background .35s ease, border-color .35s ease`
   inline — which contains the literal "border-color" — so the rule fires,
   border-style becomes solid on all four sides, and with no width declared the
   CSS initial `medium` (3px) gets painted in currentColor. Result: a 3px dark
   frame around the header on three sides (the inline border-bottom overrode
   only the bottom). Declaring the width kills it.
   ============================================================ */
#sg-nav, #ws-nav { border-width: 0 0 1px; }

/* ============================================================
   MOBILE COMFORT — tap targets and stray boxes (2026-08-01).
   Measured with getBoundingClientRect at 375px, not scrollWidth: body has
   overflow-x:hidden, which hides clipping from any overflow check.
   ============================================================ */

/* WooCommerce's cart live region is a screen-reader announcement box. Flatsome
   normally hides it, but its CSS is dequeued here, so a 1px sliver sat past the
   right edge of every page. Hide it the accessible way — still announced. */
.widget_shopping_cart_live_region {
	position: absolute !important; width: 1px; height: 1px; overflow: hidden;
	clip-path: inset(50%); white-space: nowrap; margin: -1px; padding: 0; border: 0;
}

@media (max-width: 760px) {
	/* legal + footer links rendered 36px tall; 44 is the comfortable minimum */
	.sg-legal .sg-legal-more-links a,
	.sg footer a { min-height: 44px; display: inline-flex; align-items: center; }

	/* add-to-cart buttons anywhere on the storefront */
	button.sg-add, a.sg-add { min-height: 44px; }

	/* the header logo and the wholesale WhatsApp CTA were 22px / 38px tall */
	a.sg-logo { padding-block: 11px; }
	#ws-nav nav > a.lum-press { min-height: 44px; }

	/* Inline links inside a sentence are exempt from target-size rules, but these
	   are the actual entry points to the B2B flow — give them a real area. */
	.sg a[href*="wholesale"],
	.sg-wholesale a[href^="#"]:not(.lum-press) { padding-block: 8px; display: inline-flex; align-items: center; min-height: 40px; }

	/* Hero carousel dots are 8px by design. Keep the dot, grow the touch area to
	   44px with a transparent overlay so the visual rhythm is untouched. */
	[data-sg-hero-dot] { position: relative; }
	[data-sg-hero-dot]::after { content: ""; position: absolute; inset: -18px -10px; }
}

/* ============================================================
   ORDER RECEIVED — the page after payment.
   Confirmation first, then a status track, then the receipt detail.
   ============================================================ */
.sg-ty { max-width: 960px; margin: 0 auto; }

/* ---- the confirmation itself ---- */
.sg-ty-head { text-align: center; padding: 0 0 clamp(26px,4vw,38px); }
.sg-ty-mark {
	width: 66px; height: 66px; margin: 0 auto 20px; border-radius: 50%;
	display: grid; place-items: center; color: #fff; background: var(--sg-ok);
	box-shadow: 0 0 0 8px var(--sg-ok-bg);
}
.sg-ty-mark--warn { background: var(--sg-err); box-shadow: 0 0 0 8px var(--sg-err-bg); }
.sg-ty-title {
	font-family: var(--sg-display); font-weight: 900; letter-spacing: -.025em;
	font-size: clamp(28px,4.6vw,46px); line-height: 1.06; margin: 0; color: var(--sg-text);
	text-wrap: balance;
}
.sg-ty-title span { display: block; color: var(--sg-accent-ink); }
.sg-ty-lead { margin: 14px auto 0; max-width: 52ch; color: var(--sg-muted); font-size: 15.5px; line-height: 1.65; }
.sg-ty-lead strong { color: var(--sg-text); font-weight: 700; }

.sg-ty-meta {
	display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 12px;
	margin: clamp(22px,3vw,30px) 0 0;
}
.sg-ty-meta > div {
	background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 12px;
	padding: 11px 16px; min-width: 120px;
}
.sg-ty-meta dt { font-family: var(--sg-mono); font-size: 10px; letter-spacing: .14em; color: var(--sg-dim); margin: 0 0 4px; }
.sg-ty-meta dd { margin: 0; font-size: 14.5px; font-weight: 700; color: var(--sg-text); }
.sg-ty-num { font-family: var(--sg-mono); font-variant-numeric: tabular-nums; }

/* ---- status track ---- */
.sg-ty-track {
	background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 18px;
	padding: clamp(20px,3vw,28px); box-shadow: 0 14px 34px -30px var(--sg-shadow);
}
.sg-ty-h2 { font-family: var(--sg-display); font-weight: 800; font-size: 18px; margin: 0 0 16px; color: var(--sg-text); }
.sg-ty-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4,1fr); gap: 10px; counter-reset: none; }
.sg-ty-step { position: relative; padding-top: 34px; }
/* the rail runs behind the dots */
.sg-ty-step::before {
	content: ""; position: absolute; top: 12px; inset-inline: -5px 50%; height: 2px;
	background: var(--sg-line); 
}
.sg-ty-step:first-child::before { inset-inline-start: 50%; }
.sg-ty-step.is-done::before, .sg-ty-step.is-now::before { background: var(--sg-accent-ink); }
.sg-ty-dot {
	position: absolute; top: 0; inset-inline-start: 50%; transform: translateX(50%);
	width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center;
	font-family: var(--sg-mono); font-size: 11.5px; font-weight: 700;
	background: var(--sg-bg-2); color: var(--sg-dim); border: 2px solid var(--sg-line);
}
.sg-ty-step.is-done .sg-ty-dot { background: var(--sg-accent-ink); border-color: var(--sg-accent-ink); color: #fff; }
.sg-ty-step.is-now  .sg-ty-dot { background: var(--sg-accent); border-color: var(--sg-accent-ink); color: var(--sg-on-accent); }
.sg-ty-step-t { display: block; text-align: center; font-size: 13.5px; font-weight: 700; color: var(--sg-dim); }
.sg-ty-step.is-done .sg-ty-step-t, .sg-ty-step.is-now .sg-ty-step-t { color: var(--sg-text); }
.sg-ty-step-d { display: block; text-align: center; font-size: 12px; color: var(--sg-dim); margin-top: 3px; line-height: 1.45; }
.sg-ty-eta {
	display: flex; align-items: flex-start; gap: 9px; margin: 20px 0 0; padding-top: 16px;
	border-top: 1px solid var(--sg-line); font-size: 13.5px; color: var(--sg-muted); line-height: 1.6;
}
.sg-ty-eta svg { color: var(--sg-accent-ink); flex: none; margin-top: 2px; }
.sg-ty-eta strong { color: var(--sg-text); }

/* ---- detail cards ---- */
.sg-ty-grid { display: grid; grid-template-columns: 1.25fr 1fr; gap: 16px; margin-top: 16px; align-items: start; }
.sg-ty-card {
	background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 18px;
	padding: clamp(20px,3vw,26px); box-shadow: 0 14px 34px -30px var(--sg-shadow);
}
.sg-ty-items { list-style: none; margin: 0; padding: 0; }
.sg-ty-item { display: flex; align-items: center; gap: 13px; padding: 11px 0; border-bottom: 1px solid var(--sg-line); }
.sg-ty-item:first-child { padding-top: 0; }
.sg-ty-thumb img { width: 54px; height: 54px; border-radius: 10px; object-fit: cover; display: block; background: var(--plate); }
.sg-ty-item-t { flex: 1; min-width: 0; font-size: 14px; line-height: 1.35; }
.sg-ty-item-t b { display: block; font-weight: 700; color: var(--sg-text); }
.sg-ty-item-t span { font-family: var(--sg-mono); font-size: 12px; color: var(--sg-dim); }
.sg-ty-item-p { font-family: var(--sg-mono); font-size: 14px; font-variant-numeric: tabular-nums; color: var(--sg-text); white-space: nowrap; }
.sg-ty-totals { margin: 14px 0 0; }
.sg-ty-totals > div { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; font-size: 13.5px; color: var(--sg-muted); }
.sg-ty-totals dt, .sg-ty-totals dd { margin: 0; }
.sg-ty-totals dd { font-family: var(--sg-mono); font-variant-numeric: tabular-nums; color: var(--sg-text); }
.sg-ty-totals .is-total { border-top: 1px solid var(--sg-line); margin-top: 6px; padding-top: 14px; font-size: 16px; font-weight: 800; color: var(--sg-text); }
.sg-ty-totals .is-total dd { font-family: var(--sg-display); font-weight: 900; font-size: 24px; color: var(--sg-accent-ink); }

.sg-ty-addr { font-style: normal; font-size: 15px; line-height: 1.7; color: var(--sg-text); margin: 0; }
.sg-ty-contact { list-style: none; margin: 16px 0 0; padding: 14px 0 0; border-top: 1px solid var(--sg-line); }
.sg-ty-contact li { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0; font-size: 13.5px; }
.sg-ty-contact span { color: var(--sg-dim); }
.sg-ty-contact bdi { color: var(--sg-text); font-family: var(--sg-mono); }
.sg-ty-note { margin: 14px 0 0; font-size: 13.5px; color: var(--sg-muted); line-height: 1.6; }
.sg-ty-note span { color: var(--sg-dim); }
.sg-ty-fix { margin: 14px 0 0; font-size: 12.5px; color: var(--sg-dim); line-height: 1.6; }

/* ---- help + actions ---- */
.sg-ty-help {
	display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap;
	margin-top: 16px; padding: clamp(18px,2.6vw,24px); border-radius: 18px;
	background: var(--sg-bg-2); border: 1px solid var(--sg-line);
}
.sg-ty-help h2 { margin-bottom: 6px; }
.sg-ty-help p { margin: 0; font-size: 13.5px; color: var(--sg-muted); line-height: 1.6; }
.sg-ty-help-links { display: flex; gap: 9px; flex-wrap: wrap; }
.sg-ty-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: 22px; }
.sg-ty-actions--end { margin-top: 26px; }
.sg-ty-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-height: 46px; padding: 12px 24px; border-radius: 9999px; text-decoration: none;
	font-family: var(--sg-body); font-weight: 700; font-size: 15px;
	transition: transform .2s cubic-bezier(.2,.7,.2,1), box-shadow .25s ease, border-color .2s ease, color .2s ease;
}
.sg-ty-btn:hover { transform: translateY(-2px); }
.sg-ty-btn--primary { background: var(--sg-accent); color: var(--sg-on-accent); box-shadow: 0 14px 32px -18px var(--sg-accent); }
.sg-ty-btn--ghost { border: 1px solid var(--sg-line-strong); color: var(--sg-text); }
.sg-ty-btn--ghost:hover { border-color: var(--sg-accent-ink); color: var(--sg-accent-ink); }
.sg-ty--bare { text-align: center; padding: clamp(30px,6vw,60px) 0; }
.sg-ty--failed { text-align: center; }
.sg-ty--failed .sg-ty-help { text-align: start; margin-top: 26px; }

@media (max-width: 860px) {
	.sg-ty-grid { grid-template-columns: 1fr; }
	/* Four steps across a phone gives ~70px each — the labels shred. Stack into
	   a vertical track with the rail running down the side instead. */
	.sg-ty-steps { grid-template-columns: 1fr; gap: 0; }
	.sg-ty-step { padding: 0 44px 20px 0; text-align: start; }
	.sg-ty-step:last-child { padding-bottom: 0; }
	.sg-ty-step::before { inset-inline: auto 13px; top: 26px; bottom: 4px; height: auto; width: 2px; }
	.sg-ty-step:first-child::before { inset-inline-start: auto; }
	.sg-ty-step:last-child::before { display: none; }
	.sg-ty-dot { inset-inline-start: auto; inset-inline-end: 0; transform: none; }
	.sg-ty-step-t, .sg-ty-step-d { text-align: start; }
	.sg-ty-help { flex-direction: column; align-items: stretch; }
}

/* ---- order tracking (lookup form + result) ---- */
.sg-track { max-width: 640px; }
.sg-track-result { max-width: 960px; }
.sg-ty-mark--quiet { background: var(--sg-accent); color: var(--sg-on-accent); box-shadow: 0 0 0 8px var(--sg-accent-soft); }
.sg-track-form {
	background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 18px;
	padding: clamp(20px,3vw,28px); box-shadow: 0 14px 34px -30px var(--sg-shadow);
}
.sg-track-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.sg-track-field { margin: 0; display: flex; flex-direction: column; gap: 7px; }
.sg-track-field label { font-size: 13px; font-weight: 600; color: var(--sg-muted); }
.sg-track-field input {
	height: 50px; width: 100%; box-sizing: border-box; background: var(--sg-bg);
	border: 1px solid var(--sg-line-strong); border-radius: var(--sg-radius-sm, 11px);
	color: var(--sg-text); padding: 0 15px; font-family: var(--sg-body); font-size: 16px;
	transition: border-color .2s ease, box-shadow .2s ease;
}
.sg-track-field input::placeholder { color: var(--sg-dim); }
.sg-track-field input:focus { outline: none; border-color: var(--sg-accent-ink); box-shadow: 0 0 0 3px var(--sg-accent-soft); }
.sg-track-field small { font-size: 12px; color: var(--sg-dim); line-height: 1.5; }
.sg-track-submit { width: 100%; margin-top: 18px; }
.sg-track-why {
	display: flex; align-items: flex-start; gap: 8px; margin: 16px 0 0; padding-top: 15px;
	border-top: 1px solid var(--sg-line); font-size: 12.5px; color: var(--sg-dim); line-height: 1.6;
}
.sg-track-why svg { color: var(--sg-accent-ink); flex: none; margin-top: 2px; }
.sg-track-help { margin: 18px 0 0; text-align: center; font-size: 13.5px; color: var(--sg-muted); line-height: 1.65; }
.sg-track-help a { color: var(--sg-accent-ink); font-weight: 600; }
/* WooCommerce prints its "order not found" notice above the form */
.sg-track .woocommerce-error, .sg-track .woocommerce-info {
	max-width: 640px; margin: 0 auto 18px; list-style: none;
}
@media (max-width: 600px) { .sg-track-fields { grid-template-columns: 1fr; } }


/* ============================================================
   PDP — single product page (woocommerce/single-product.php).
   Mobile-first on purpose: this is the landing page for phone ad
   traffic, so image + price + CTA must all fit the first screen.
   Per-product accent arrives inline as --ca / --ca-soft / --ca-on.
   ============================================================ */
.sg-pdp { --pdp-max: 1180px; }
.sg-pdp-buy { padding: 84px 18px 8px; }
/* minmax(0,...) + min-width:0 — the thumbnail strip is 354px of min-content
   and a plain 1fr track refuses to shrink below that, pushing the whole media
   column off a 320px screen. The strip scrolls instead. */
.sg-pdp-grid { max-width: var(--pdp-max); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
.sg-pdp-media, .sg-pdp-info { min-width: 0; }

/* media */
.sg-pdp-stage {
  position: relative; background: var(--plate); border: 1px solid var(--sg-line);
  border-radius: 20px; overflow: hidden; display: grid;
  /* stretch, NOT center — see the note above. The image must fill the grid
     area so contain can letterbox inside it; centred, it sizes to itself. */
  place-items: stretch; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr);
  /* 4/5, not a square. The first image is the bag cut-out and it is 0.79 tall
     and narrow — in a square frame `contain` left 21% of the plate empty down
     both sides. At 4/5 the cut-out fills the frame (≈1% spare) and the 5:6
     detail photos behind it spare 4%. Shape the frame to the subject; do not
     make the subject apologise for the frame. */
  aspect-ratio: 4 / 5; max-height: 44svh; padding: 0; box-sizing: border-box;
}
.sg-pdp-stage::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at 50% 42%, var(--ca-soft), transparent 68%);
}
/* Photos fill the frame, as they did before. */
.sg-pdp-stage img { position: relative; z-index: 1; width: 100%; height: 100%; min-width: 0; min-height: 0; object-fit: cover; }
/* The cut-out is the exception: contained, with room to breathe, and the drop
   shadow that makes a transparent PNG sit on the plate rather than float. */
.sg-pdp-stage img[src$="-cutout.png"] { object-fit: contain; padding: 14px; box-sizing: border-box; filter: drop-shadow(0 18px 22px rgba(60,50,28,0.26)); }
.sg-pdp-thumbs { display: flex; gap: 8px; margin-top: 10px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.sg-pdp-thumbs::-webkit-scrollbar { display: none; }
.sg-pdp-thumb { flex: none; width: 62px; height: 62px; padding: 0; border-radius: 12px; overflow: hidden; background: var(--plate); border: 1px solid var(--sg-line); cursor: pointer; transition: border-color .2s ease, transform .2s ease; }
/* contain, not cover: the first thumb is the transparent cutout, and cover
   cropped it to a meaningless patch of the middle. */
/* Same split in the rail: a photo thumbnail fills its well, the cut-out is
   contained so the whole bag is recognisable at 60px. */
.sg-pdp-thumb img { width: 100%; height: 100%; box-sizing: border-box; object-fit: cover; display: block; }
.sg-pdp-thumb img[src$="-cutout.png"] { object-fit: contain; padding: 5px; }
.sg-pdp-thumb.is-on { border-color: var(--ca); }
.sg-pdp-thumb:hover { transform: translateY(-2px); }

/* info */
.sg-pdp-eyebrow { font-family: var(--sg-mono); font-size: 11.5px; letter-spacing: .2em; color: var(--ca); margin: 0; }
.sg-pdp-title { font-family: var(--sg-display); font-weight: 900; font-size: clamp(30px, 8vw, 52px); line-height: 1.04; letter-spacing: -0.03em; margin: 8px 0 0; }
.sg-pdp-title span { color: var(--ca); }
.sg-pdp-desc { color: var(--sg-muted); font-size: 15.5px; line-height: 1.6; margin: 10px 0 0; max-width: 48ch; }
.sg-pdp-pricerow { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin: 16px 0 0; }
.sg-pdp-price { font-family: var(--sg-mono); font-weight: 700; font-size: 30px; color: var(--sg-text); }
.sg-pdp-pricenote { font-size: 13px; color: var(--sg-dim); }
.sg-pdp-cta {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px; width: 100%;
  margin: 14px 0 0; padding: 15px 26px; border: none; border-radius: 9999px; cursor: pointer;
  background: var(--sg-accent); color: var(--sg-on-accent);
  font-family: var(--sg-body); font-weight: 700; font-size: 17px;
  box-shadow: 0 14px 34px -14px var(--sg-accent);
}
.sg-pdp-trust { list-style: none; margin: 16px 0 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.sg-pdp-trust li { display: flex; align-items: flex-start; gap: 8px; font-size: 13.5px; line-height: 1.5; color: var(--sg-muted); }
.sg-pdp-trust svg { color: var(--sg-accent-ink); flex: none; margin-top: 2px; }

/* companion wallet band */
.sg-pdp-band { padding: 20px 18px 0; }
.sg-pdp-comp {
  max-width: var(--pdp-max); margin: 0 auto; display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  background: var(--ca-soft); border: 1px solid var(--sg-line); border-radius: 18px; padding: 16px;
}
/* ⚠️ A landscape box, because the wallet photograph is landscape (1040x715 =
   1.45). Squeezing it into a square with `cover` was cutting away 31% — the
   worst crop on the site. contain keeps it whole whatever the source. */
.sg-pdp-comp > img { width: 104px; height: 72px; object-fit: contain; border-radius: 12px; flex: none; background: var(--plate); }
.sg-pdp-comp-copy { flex: 1 1 190px; min-width: 0; }
.sg-pdp-comp-title { font-weight: 800; font-size: 17px; margin: 0; color: var(--sg-text); }
.sg-pdp-comp-sub { font-size: 13.5px; color: var(--sg-muted); margin: 4px 0 0; }
.sg-pdp-comp-cta { flex: none; width: 100%; padding: 13px 24px; border: none; border-radius: 9999px; background: var(--sg-text); color: var(--sg-bg); font-family: var(--sg-body); font-weight: 700; font-size: 15px; cursor: pointer; }

/* sections */
.sg-pdp-sec { max-width: var(--pdp-max); margin: 0 auto; padding: 34px 18px 0; }
.sg-pdp-h2 { font-family: var(--sg-display); font-weight: 800; font-size: clamp(21px, 5vw, 28px); letter-spacing: -0.02em; margin: 0 0 12px; }
.sg-pdp-lead { color: var(--sg-muted); font-size: 15px; line-height: 1.65; margin: 0 0 14px; max-width: 60ch; }
.sg-pdp-feats { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.sg-pdp-feats li { display: flex; align-items: flex-start; gap: 10px; font-size: 15px; color: var(--sg-muted); line-height: 1.55; }
.sg-pdp-feats svg { color: var(--ca); flex: none; margin-top: 3px; }
.sg-pdp-lic { font-family: var(--sg-mono); font-size: 11px; color: var(--sg-dim); margin: 16px 0 0; line-height: 1.7; }

.sg-pdp-shots { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.sg-pdp-shots figure { margin: 0; }
/* height:auto is required — the width/height HTML attributes (there to stop
   layout shift) act as a presentational hint that overrides aspect-ratio.
   ⚠️ 5/6, not 1/1, and contain rather than cover. Every detail shot we own is
   5:6, so the frame now matches the photograph exactly and nothing is cut;
   contain is the belt-and-braces for any future shot that is not. A square
   frame was discarding 17% of each one — including the padded straps in the
   very photo captioned "רצועות מרופדות". */
.sg-pdp-shots img { width: 100%; height: auto; aspect-ratio: 5 / 6; object-fit: contain; border-radius: 14px; display: block; background: var(--plate); }
.sg-pdp-shots figcaption { font-size: 12.5px; color: var(--sg-dim); margin-top: 7px; }

.sg-pdp-revs { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; align-items: start; }
.sg-pdp-revs img { width: 100%; height: auto; border-radius: 12px; display: block; border: 1px solid var(--sg-line); background: var(--sg-surface); }
.sg-pdp-more { margin: 14px 0 0; }
.sg-pdp-more a { display: inline-flex; align-items: center; gap: 5px; min-height: 44px; font-size: 14.5px; font-weight: 600; color: var(--sg-accent-ink); text-decoration: none; }

.sg-pdp-bundle-cta { display: inline-flex; align-items: center; gap: 6px; padding: 13px 26px; border-radius: 9999px; background: var(--sg-accent); color: var(--sg-on-accent); font-weight: 700; font-size: 15.5px; text-decoration: none; }

/* flex, not auto-fit: auto-fit counts how many tracks fit using the MAX of the
   minmax, so minmax(130px,240px) yielded a single column on a phone. Flex items
   with a 140px basis give two-up everywhere and stay capped on desktop. */
.sg-pdp-others { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
/* border-box: the card carries 12px side padding, so a content-box max-width
   of 240 measured 266 on screen and the basis overflowed a 320px phone. */
.sg-pdp-other { flex: 1 1 120px; max-width: 240px; box-sizing: border-box; }
.sg-pdp-other { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding: 16px 12px; border: 1px solid var(--sg-line); border-radius: 16px; background: var(--sg-surface); text-decoration: none; transition: transform .22s ease, border-color .22s ease; }
.sg-pdp-other:hover { transform: translateY(-3px); border-color: var(--ca); }
.sg-pdp-other img { width: 100%; max-width: 130px; height: auto; filter: drop-shadow(0 10px 14px rgba(60,50,28,0.22)); }
.sg-pdp-other-eyebrow { font-family: var(--sg-mono); font-size: 10px; letter-spacing: .16em; color: var(--ca); margin-top: 6px; }
.sg-pdp-other-title { font-weight: 800; font-size: 15px; color: var(--sg-text); }
.sg-pdp-other-price { font-family: var(--sg-mono); font-weight: 700; font-size: 14px; color: var(--sg-muted); }

/* sticky buy bar — mobile only, and only once the real CTA is off-screen */
.sg-pdp-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 70; transform: translateY(110%); transition: transform .3s cubic-bezier(.2,.7,.2,1); background: var(--sg-glass); backdrop-filter: blur(12px); border-top: 1px solid var(--sg-line); padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); }
.sg-pdp-bar.is-on { transform: translateY(0); }
.sg-pdp-bar-in { max-width: var(--pdp-max); margin: 0 auto; display: flex; align-items: center; gap: 12px; }
.sg-pdp-bar-price { font-family: var(--sg-mono); font-weight: 700; font-size: 19px; flex: none; }
.sg-pdp-bar-cta { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 13px 20px; border: none; border-radius: 9999px; background: var(--sg-accent); color: var(--sg-on-accent); font-family: var(--sg-body); font-weight: 700; font-size: 16px; cursor: pointer; }
body.sg-cart-open .sg-pdp-bar { transform: translateY(110%); }
/* The floating accessibility button lives at bottom:18px and would sit on the
   bar's CTA — same collision already fixed for the front-page buy bar. */
body.sg-pdpbar-on #sg-a11y { bottom: 104px; }
body.sg-pdpbar-on.sg-cart-open #sg-a11y { bottom: 14px; }
@media (prefers-reduced-motion: reduce) { .sg-pdp-bar { transition: none; } }

@media (min-width: 760px) {
  .sg-pdp-shots { grid-template-columns: repeat(4, 1fr); }
  .sg-pdp-revs { grid-template-columns: repeat(3, 1fr); }
  .sg-pdp-comp-cta { width: auto; }
  .sg-pdp-cta { width: auto; min-width: 260px; }
}
@media (min-width: 900px) {
  .sg-pdp-buy { padding: 116px 24px 8px; }
  .sg-pdp-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 44px; align-items: center; }
  .sg-pdp-stage { max-height: none; }
  .sg-pdp-sec, .sg-pdp-band { padding-inline: 24px; }
  .sg-pdp-sec { padding-top: 56px; }
  .sg-pdp-bar { display: none; }   /* desktop keeps the CTA in the buy block */
}


/* ============================================================
   Shop archive — "כל התיקים" (woocommerce/archive-product.php).
   ============================================================ */
.sg-shop-head { max-width: var(--pdp-max); margin: 0 auto; padding: 92px 18px 0; text-align: center; }
.sg-shop-eyebrow { font-family: var(--sg-mono); font-size: 12px; letter-spacing: .22em; color: var(--sg-accent-ink); }
.sg-shop-title { font-family: var(--sg-display); font-weight: 900; font-size: clamp(32px, 8vw, 62px); line-height: 1.04; letter-spacing: -0.03em; margin: 12px 0 0; }
.sg-shop-title span { color: var(--sg-accent-ink); }
.sg-shop-lead { color: var(--sg-muted); font-size: 15.5px; line-height: 1.65; margin: 14px auto 0; max-width: 52ch; }
.sg-shop-grid-wrap { max-width: var(--pdp-max); margin: 0 auto; padding: 26px 18px 0; }
.sg-shop-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.sg-shop-card { display: flex; flex-direction: column; background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 18px; padding: 14px 12px 12px; box-shadow: 0 18px 44px -38px var(--sg-shadow-strong); transition: transform .22s ease, border-color .22s ease; }
.sg-shop-card:hover { transform: translateY(-3px); border-color: var(--ca); }
.sg-shop-card-link { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 3px; text-decoration: none; }
.sg-shop-card-media { position: relative; display: grid; place-items: stretch; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); width: 100%; aspect-ratio: 4 / 5; border-radius: 14px; background: var(--plate); overflow: hidden; }
.sg-shop-card.is-wallet .sg-shop-card-media { aspect-ratio: 1 / 1; }
.sg-shop-card-media::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 50% 45%, var(--ca-soft), transparent 70%); }
.sg-shop-card-media img { position: relative; z-index: 1; width: 100%; height: 100%; min-width: 0; min-height: 0; box-sizing: border-box; object-fit: contain; padding: 10px; filter: drop-shadow(0 12px 16px rgba(60,50,28,0.24)); }
.sg-shop-card-eyebrow { font-family: var(--sg-mono); font-size: 10px; letter-spacing: .16em; color: var(--ca); margin-top: 10px; }
.sg-shop-card-name { font-family: var(--sg-display); font-weight: 800; font-size: 16px; color: var(--sg-text); }
.sg-shop-card-price { font-family: var(--sg-mono); font-weight: 700; font-size: 16px; color: var(--sg-text); }
.sg-shop-card-note { font-size: 11.5px; color: var(--sg-dim); }
.sg-shop-card-cta { margin-top: 11px; width: 100%; padding: 12px 16px; border: none; border-radius: 9999px; background: var(--sg-accent); color: var(--sg-on-accent); font-family: var(--sg-body); font-weight: 700; font-size: 14.5px; cursor: pointer; }
@media (min-width: 700px) { .sg-shop-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; } }
@media (min-width: 1000px) { .sg-shop-head { padding-top: 128px; } .sg-shop-grid-wrap, .sg-shop-head { padding-inline: 24px; } }


/* ============================================================
   Header products dropdown (התיקים ▾) — replaces the four
   homepage scroll anchors with real catalogue navigation.
   ============================================================ */
.sg-nav-drop { position: relative; }
.sg-nav-droptoggle {
  display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; padding: 0;
  font-family: var(--sg-body); font-size: 14px; font-weight: 500; color: var(--sg-text);
  opacity: .88; cursor: pointer; white-space: nowrap;
}
.sg-nav-droptoggle:hover { color: var(--sg-accent-ink); opacity: 1; }
.sg-nav-caret { display: flex; transition: transform .2s ease; }
.sg-nav-droptoggle[aria-expanded="true"] .sg-nav-caret { transform: rotate(180deg); }
.sg-nav-dropmenu {
  position: absolute; top: calc(100% + 10px); inset-inline-start: 50%; transform: translateX(50%);
  min-width: 244px; background: var(--sg-surface); border: 1px solid var(--sg-line);
  border-radius: 16px; padding: 8px; z-index: 95;
  box-shadow: 0 26px 60px -28px var(--sg-shadow-strong), 0 2px 8px -4px var(--sg-shadow);
  display: flex; flex-direction: column; gap: 2px;
}
/* RTL: translateX(50%) centres it correctly because the axis is mirrored. */
.sg-nav-dropmenu[hidden] { display: none; }
/* ⚠️ #sg-nav sets z-index:80 and therefore opens its OWN stacking context: any
   z-index on the panel inside it is measured against its siblings, never
   against the floating accessibility button (99990) which lives at the root.
   So the whole HEADER has to rise while the menu is open — raising the panel
   alone left the button sitting on top of a menu link. */
/* !important: the header carries z-index:80 as an INLINE style from the
   prototype, and a stylesheet rule cannot beat that. */
body.sg-navdrop-open #sg-nav { z-index: 99995 !important; }
/* A real product thumbnail, not a coloured bullet: the shopper recognises the
   bag itself, and a row of tinted dots is the single clearest tell of a menu
   nobody art-directed. */
.sg-nav-dropitem { display: flex; align-items: center; gap: 11px; padding: 8px 9px; border-radius: 12px; text-decoration: none; color: var(--sg-text); transition: background .18s ease; }
.sg-nav-dropitem:hover { background: var(--sg-tint); }
.sg-nav-dropthumb { width: 42px; height: 42px; flex: none; object-fit: contain; border-radius: 9px; background: var(--plate); padding: 3px; }
/* The offer thumbnails are 400×250 composites of two to five products. A square
   box contained them to 42×26 and the bags inside were unreadable smudges —
   same mistake as the "other offers" cards. Give them their own shape. */
.sg-nav-drop-deals .sg-nav-dropthumb { width: 60px; height: 40px; border-radius: 8px; padding: 2px; }
.sg-nav-drop-deals .sg-nav-dropmenu { min-width: 262px; }
.sg-nav-droptext { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.sg-nav-dropname { font-size: 14.5px; font-weight: 700; line-height: 1.25; }
.sg-nav-dropsub { font-family: var(--sg-mono); font-size: 11px; letter-spacing: .04em; color: var(--sg-dim); font-weight: 500; }
/* Offers: ₪896 (struck) → ₪529. The new price carries the weight and the ink
   colour, the old one recedes — otherwise two equal numbers side by side just
   read as a range. */
.sg-nav-dropprice { display: flex; align-items: center; gap: 5px; margin-top: 1px; }
.sg-nav-dropprice s { color: var(--sg-dim); text-decoration-thickness: 1px; }
.sg-nav-dropprice svg { flex: none; color: var(--sg-accent-ink); }
.sg-nav-dropprice b { font-size: 12.5px; font-weight: 700; color: var(--sg-text); }
.sg-nav-dropall { display: flex; align-items: center; justify-content: space-between; gap: 5px; margin-top: 6px; padding: 12px 13px; border-radius: 12px; border: 1px solid var(--sg-line); color: var(--sg-text); font-size: 13.5px; font-weight: 700; text-decoration: none; transition: border-color .18s ease, color .18s ease; }
.sg-nav-dropall svg { color: var(--sg-accent-ink); }
.sg-nav-dropall:hover { border-color: var(--sg-accent-ink); color: var(--sg-accent-ink); }

/* Desktop: the bar carries the pages, so the panel is products only. */
.sg-nav-dropmore { display: none; }

@media (max-width: 760px) {
  /* Anchor the panel to the bar instead of the toggle: at 320px a centred
     244px panel runs off the edge. */
  .sg-nav-drop { position: static; }
  .sg-nav-dropmenu { inset-inline: 12px auto; inset-inline-end: 12px; transform: none; min-width: 0; width: auto; top: 60px; }
  .sg-nav-droptoggle { font-size: 13px; }

  /* The bar fits the catalogue + סיטונאות and nothing else at 320px, so every
     other page moves into the panel rather than off the site. */
  #sg-nav nav > ul > li.sg-nav-reviews,
  #sg-nav nav > ul > li.sg-nav-about,
  #sg-nav nav > ul > li.sg-nav-track-li { display: none; }
  .sg-nav-dropmore { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; padding-top: 8px; border-top: 1px solid var(--sg-line); }
  .sg-nav-dropmore a { padding: 11px; border-radius: 10px; color: var(--sg-muted); font-size: 14px; font-weight: 600; text-decoration: none; }
  .sg-nav-dropmore a:hover { background: var(--sg-tint); color: var(--sg-text); }
  .sg-nav-dropmore a.is-accent { color: var(--sg-accent-ink); }
}

/* Two dropdowns (התיקים ▾ · מבצעים ▾) cost the bar about 60px, and at 375px it
   had none to give: the cart button was pushed clean off the left edge. Below
   400px סיטונאות leaves the BAR — not the site: it is rendered inside both
   panels (template-parts/nav-more.php), so it is still one tap away, while the
   two buttons that actually sell stay visible. Measured: 320–1440, no overflow.
   The cut is at 430 (not at the 401px where it merely starts to overflow) so
   every phone in portrait behaves the same way and the bar keeps a real margin
   instead of fitting by four pixels. */
@media (max-width: 430px) {
	#sg-nav nav > ul > li.sg-nav-ws { display: none; }
}


/* ============================================================
   Offer landing pages (template-offer.php) — one page per
   bundle. Mobile-first like the PDP: what is in it, what it
   costs and the add button all live in the first screen, and
   the arithmetic is proved underneath.
   Per-offer accent arrives inline as --ca / --ca-soft.
   ============================================================ */
.sg-offer { --pdp-max: 1180px; }
.sg-off-buy { padding: 84px 18px 8px; }
.sg-off-grid { max-width: var(--pdp-max); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
.sg-off-media, .sg-off-info { min-width: 0; }

/* The whole offer in one frame. Every item is a flex child with basis 0, so the
   row divides the width proportionally and can never overflow however many
   pieces an offer holds — .sg-off-stage is overflow:hidden and a cropped bag
   would look deliberate. */
/* Height comes from the contents, not from a fixed ratio. An offer holds three
   or five pieces depending which one it is, so the bags end up at a different
   natural height in each — a fixed aspect-ratio fitted the widest case and left
   the others sitting in a tall empty box. */
.sg-off-stage {
  position: relative; display: flex; align-items: center; justify-content: center;
  gap: 2%; padding: 14px 12px; min-height: 132px; max-height: 34svh;
  background: var(--plate); border: 1px solid var(--sg-line); border-radius: 20px; overflow: hidden;
}
.sg-off-stage::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at 50% 45%, var(--ca-soft), transparent 70%);
}
.sg-off-stage img { position: relative; z-index: 1; min-width: 0; width: 100%; height: 100%; object-fit: contain; }
/* ⚠️ TWO traps caught here, both silent:
   1. the class sits on the <img> itself, so a `.sg-off-stage-wallet img` rule
      matches nothing;
   2. `.sg-off-stage img` is (0,1,1) and a bare `.sg-off-stage-wallet` is only
      (0,1,0) — the element selector wins and the override never applies.
   Both together rendered the wallets as tall empty strips with a stamp-sized
   photo floating inside. Hence img.<class>, and aspect-ratio + height:auto to
   make each wallet a real square tile inside its flex track. */
.sg-off-stage img.sg-off-stage-bag { flex: 3 1 0; height: auto; max-height: 34svh; filter: drop-shadow(0 14px 18px rgba(60,50,28,0.26)); }
.sg-off-stage img.sg-off-stage-wallet {
  flex: 1.5 1 0; align-self: center; width: 100%; height: auto; aspect-ratio: 1 / 1;
  object-fit: cover; border-radius: 10px;
  box-shadow: 0 8px 16px -10px var(--sg-shadow-strong), 0 0 0 1px var(--sg-line);
}
.sg-off-stage-cap { font-family: var(--sg-mono); font-size: 11.5px; letter-spacing: .08em; color: var(--sg-dim); margin: 9px 0 0; text-align: center; }

.sg-off-badge { display: inline-block; font-family: var(--sg-mono); font-size: 11px; font-weight: 700; letter-spacing: .08em; color: var(--sg-on-accent); background: var(--sg-accent); padding: 5px 12px; border-radius: 9999px; margin-bottom: 10px; }
.sg-off-eyebrow { font-family: var(--sg-mono); font-size: 11.5px; letter-spacing: .18em; color: var(--ca); margin: 0; }
.sg-off-title { font-family: var(--sg-display); font-weight: 900; font-size: clamp(30px, 8vw, 54px); line-height: 1.04; letter-spacing: -0.03em; margin: 8px 0 0; }
.sg-off-title span { color: var(--ca); }
.sg-off-lede { color: var(--sg-muted); font-size: 15.5px; line-height: 1.6; margin: 10px 0 0; max-width: 48ch; }
.sg-off-pricerow { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin: 16px 0 0; }
.sg-off-price { font-family: var(--sg-mono); font-weight: 700; font-size: 34px; color: var(--sg-text); line-height: 1; }
.sg-off-was { font-family: var(--sg-mono); font-size: 16px; color: var(--sg-dim); text-decoration: line-through; }
.sg-off-save { font-family: var(--sg-mono); font-size: 12px; font-weight: 700; color: var(--sg-on-accent); background: var(--sg-accent); padding: 5px 11px; border-radius: 9999px; }
.sg-off-peritem { font-size: 13px; color: var(--sg-dim); margin: 7px 0 0; }

/* itemised bill */
.sg-off-bill { display: flex; flex-direction: column; gap: 8px; }
.sg-off-line { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--sg-line); border-radius: 14px; background: var(--sg-surface); text-decoration: none; color: var(--sg-text); transition: border-color .2s ease, transform .2s ease; }
a.sg-off-line:hover { border-color: var(--ca); transform: translateY(-2px); }
.sg-off-line-thumb { width: 54px; height: 54px; flex: none; border-radius: 11px; background: var(--plate); overflow: hidden; display: grid; place-items: stretch; }
.sg-off-line-thumb img { width: 100%; height: 100%; min-width: 0; min-height: 0; object-fit: contain; display: block; }
.sg-off-fit-contain img { object-fit: contain; padding: 4px; box-sizing: border-box; }
.sg-off-fit-cover img { object-fit: cover; }
.sg-off-line-copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sg-off-line-name { font-weight: 700; font-size: 15px; }
.sg-off-line-sub { font-family: var(--sg-mono); font-size: 11px; letter-spacing: .04em; color: var(--sg-dim); }
.sg-off-line-price { font-family: var(--sg-mono); font-weight: 700; font-size: 15px; color: var(--sg-muted); margin-inline-start: auto; flex: none; }

.sg-off-sum { margin-top: 6px; border: 1px solid var(--sg-line); border-radius: 14px; padding: 6px 14px; background: var(--sg-bg-2); }
.sg-off-sum-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; font-size: 14.5px; color: var(--sg-muted); }
.sg-off-sum-row + .sg-off-sum-row { border-top: 1px solid var(--sg-line); }
.sg-off-sum-row span:last-child { font-family: var(--sg-mono); font-weight: 700; }
.sg-off-sum-was { text-decoration: line-through; color: var(--sg-dim); }
.sg-off-sum-row.is-total { color: var(--sg-text); font-weight: 700; font-size: 16px; }
.sg-off-sum-row.is-save { color: var(--sg-accent-ink); font-weight: 700; }

/* the other offers */
.sg-off-others { display: flex; flex-direction: column; gap: 10px; }
.sg-off-other { display: flex; align-items: center; gap: 13px; padding: 12px 14px; border: 1px solid var(--sg-line); border-radius: 16px; background: var(--sg-surface); text-decoration: none; color: var(--sg-text); transition: border-color .2s ease, transform .2s ease; }
.sg-off-other:hover { border-color: var(--ca); transform: translateY(-2px); }
/* 16:10, matching the composite's own shape — a square box contained a 400×250
   image down to 58×36 and the bags inside it were unrecognisable. */
.sg-off-other > img { width: 88px; height: 55px; flex: none; object-fit: contain; border-radius: 12px; background: var(--ca-soft); padding: 4px; }
.sg-off-other > svg { flex: none; color: var(--ca); margin-inline-start: auto; }
.sg-off-other-copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sg-off-other-name { font-family: var(--sg-display); font-weight: 800; font-size: 16px; }
.sg-off-other-sub { font-size: 12.5px; color: var(--sg-dim); }
.sg-off-other-price { display: flex; align-items: center; gap: 5px; font-family: var(--sg-mono); font-size: 13px; }
.sg-off-other-price s { color: var(--sg-dim); font-weight: 500; text-decoration-thickness: 1px; }
.sg-off-other-price svg { flex: none; color: var(--ca); }
.sg-off-other-price b { font-weight: 700; font-size: 14.5px; color: var(--sg-text); }

.sg-off-close { text-align: center; padding-bottom: 12px; }
.sg-off-close .sg-pdp-lead { margin-inline: auto; }
.sg-off-close-cta { display: inline-flex; align-items: center; justify-content: center; gap: 9px; padding: 15px 28px; border: none; border-radius: 9999px; cursor: pointer; background: var(--sg-accent); color: var(--sg-on-accent); font-family: var(--sg-body); font-weight: 800; font-size: 16px; box-shadow: 0 14px 34px -14px var(--sg-accent); }

@media (min-width: 900px) {
  .sg-off-buy { padding: 116px 24px 8px; }
  .sg-off-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 44px; align-items: center; }
  .sg-off-stage { max-height: none; min-height: 220px; }
  .sg-off-stage img.sg-off-stage-bag { max-height: 340px; }
  .sg-off-others { flex-direction: row; }
  .sg-off-other { flex: 1 1 0; min-width: 0; }
}


/* ============================================================
   Offers index — "כל המבצעים" (page-offers.php).
   ============================================================ */
.sg-offers-wrap { max-width: var(--pdp-max, 1180px); margin: 0 auto; padding: 26px 18px 0; }
.sg-offers-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.sg-offer-card { position: relative; display: flex; flex-direction: column; background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 20px; padding: 22px 20px; }
.sg-offer-card.is-hero { border-color: var(--sg-accent-ink); background: linear-gradient(180deg, rgba(230,178,76,0.1), var(--sg-surface) 42%); }
.sg-offer-card-badge { position: absolute; top: -12px; inset-inline-end: 20px; font-family: var(--sg-mono); font-size: 11px; font-weight: 700; letter-spacing: .08em; color: var(--sg-on-accent); background: var(--sg-accent); padding: 5px 13px; border-radius: 9999px; }
.sg-offer-card-media { position: relative; display: grid; place-items: center; width: 100%; aspect-ratio: 16 / 9; border-radius: 14px; background: var(--plate); overflow: hidden; margin-bottom: 14px; }
.sg-offer-card-media::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 50% 45%, var(--ca-soft), transparent 70%); }
.sg-offer-card-media img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: contain; padding: 8px; }
.sg-offer-card-eyebrow { font-family: var(--sg-mono); font-size: 11px; letter-spacing: .16em; color: var(--ca); margin: 0; }
.sg-offer-card-title { font-family: var(--sg-display); font-weight: 800; font-size: 22px; margin: 8px 0 0; color: var(--sg-text); }
.sg-offer-card-lede { color: var(--sg-muted); font-size: 13.5px; line-height: 1.6; margin: 8px 0 0; }
.sg-offer-card-fill { flex: 1; }
.sg-offer-card-pricerow { display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap; margin-top: 16px; }
.sg-offer-card-price { font-family: var(--sg-display); font-weight: 900; font-size: 32px; line-height: 1; color: var(--sg-text); }
.sg-offer-card-was { font-size: 14px; color: var(--sg-dim); text-decoration: line-through; }
.sg-offer-card-save { margin-inline-start: auto; font-family: var(--sg-mono); font-size: 12px; font-weight: 700; color: var(--sg-on-accent); background: var(--sg-accent); padding: 4px 10px; border-radius: 9999px; }
.sg-offer-card-cta { margin-top: 15px; width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 20px; border: none; border-radius: 9999px; background: var(--sg-accent); color: var(--sg-on-accent); font-family: var(--sg-body); font-weight: 800; font-size: 15px; cursor: pointer; }
.sg-offer-card-more { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 44px; margin-top: 4px; font-size: 13.5px; font-weight: 600; color: var(--sg-accent-ink); text-decoration: none; }

.sg-offers-ladder { margin-top: clamp(22px, 3vw, 34px); }
.sg-offers-ladder-head { display: flex; align-items: center; gap: 12px; margin-bottom: 13px; font-family: var(--sg-mono); font-size: 11px; letter-spacing: .16em; color: var(--sg-muted); }
.sg-offers-ladder-head span:last-child { letter-spacing: normal; font-family: var(--sg-body); font-size: 12px; color: var(--sg-dim); }
.sg-offers-ladder-head i { flex: 1; height: 1px; background: var(--sg-line); }
.sg-offers-ladder-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.sg-offers-pair { display: flex; align-items: center; gap: 13px; background: var(--sg-surface); border: 1px solid var(--sg-line); border-radius: 16px; padding: 12px 14px; }
.sg-offers-pair-thumbs { display: flex; align-items: center; flex: none; }
.sg-offers-pair-thumbs img { width: 38px; height: 38px; border-radius: 9px; object-fit: contain; background: var(--plate); box-shadow: 0 0 0 1px var(--sg-line); }
.sg-offers-pair-thumbs img.is-wallet { object-fit: cover; margin-inline-start: -13px; box-shadow: 0 0 0 2px var(--sg-surface); }
.sg-offers-pair-copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sg-offers-pair-name { font-size: 14px; font-weight: 700; color: var(--sg-text); }
.sg-offers-pair-sub { font-family: var(--sg-mono); font-size: 11px; color: var(--sg-dim); }
.sg-offers-pair-buy { display: flex; align-items: center; gap: 10px; margin-inline-start: auto; flex: none; }
.sg-offers-pair-price { font-family: var(--sg-display); font-weight: 900; font-size: 18px; color: var(--sg-text); }
.sg-offers-pair-cta { background: var(--sg-accent); color: var(--sg-on-accent); border: none; border-radius: 9999px; padding: 11px 17px; font-family: var(--sg-body); font-weight: 700; font-size: 13px; cursor: pointer; }
.sg-offers-foot { text-align: center; margin: clamp(24px, 3vw, 34px) 0 0; font-size: 13.5px; color: var(--sg-dim); }
.sg-offers-foot a { display: inline-flex; align-items: center; gap: 5px; min-height: 44px; color: var(--sg-accent-ink); font-weight: 600; text-decoration: none; }

@media (min-width: 700px) { .sg-offers-ladder-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) { .sg-offers-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; } }
@media (min-width: 1000px) { .sg-offers-wrap { padding-inline: 24px; } }

/* Homepage bundle cards → the offer's own landing page. The buttons above them
   add straight to the cart; this is the route for someone who wants to see what
   is in the box first. 44px tall so it is a real tap target. */
.sg-bundle-more { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 44px; margin-top: 2px; font-size: 13px; font-weight: 600; color: var(--sg-accent-ink); text-decoration: none; }
.sg-bundle-more:hover { text-decoration: underline; }
