/* cf-patches — Free-Shipping Bar
 * Three surfaces share this sheet:
 *   .cf-fsbar     floating site-wide band (fixed to the bottom, seats above the store notice)
 *   .cf-fsinline  the cart-page bar (server-rendered inside .cart_totals, white panel)
 *   CheckoutWC    the store's native side-cart/checkout bar, recoloured via its own CSS vars
 * Brand constants (match the storefront gradient, not theme-tokened): pink #d31775 -> blue #5262ac,
 * accent #9c13d1, success #1f9d55. Calibrated to the approved mockup (docs/mockups/free-shipping-bar.html).
 */

/* ── Floating site-wide band ─────────────────────────────────────────────── */
.cf-fsbar{
	position:fixed;left:0;right:0;bottom:var(--cf-fsbar-bottom,0px);z-index:99990;
	color:#fff;box-shadow:0 -4px 22px rgba(60,20,90,.20);
	background:#23252b;transition:background .45s ease,transform .35s ease;
	transform:translateY(0);
}
.cf-fsbar[hidden]{display:none}
.cf-fsbar.is-marketing{background:linear-gradient(90deg,#2a2730,#23252b)}
.cf-fsbar.is-progress{background:#201e28}
.cf-fsbar.is-unlocked{background:linear-gradient(90deg,#137a41,#1f9d55)}
.cf-fsbar__inner{
	position:relative;max-width:760px;margin:0 auto;padding:12px 20px;min-height:46px;
	display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;
}
.cf-fsbar__msg{
	position:relative;z-index:1;
	font-family:"Archivo",-apple-system,"Segoe UI",Roboto,sans-serif;font-weight:800;font-size:13px;
	letter-spacing:.03em;transition:opacity .35s ease,transform .35s ease;
}
.cf-fsbar__msg.is-swap{opacity:0;transform:translateY(6px)}
.cf-fsbar__msg .cf-amt{color:#ffd9f2}
.cf-fsbar.is-unlocked .cf-fsbar__msg{font-size:14px}
/* progress track — only in the progress state */
.cf-fsbar__prog{display:none;max-width:760px;margin:0 auto;padding:0 20px 13px;box-sizing:border-box}
.cf-fsbar.is-progress .cf-fsbar__prog{display:block}
.cf-fsbar.is-progress .cf-fsbar__inner{padding-bottom:7px}
.cf-fsbar__track{height:9px;border-radius:6px;background:rgba(255,255,255,.18);overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.25)}
.cf-fsbar__fill{
	position:relative;overflow:hidden;height:100%;width:0;border-radius:6px;
	background-image:linear-gradient(90deg,#d31775,#c05ce8,#5262ac);
	transition:width .55s cubic-bezier(.4,0,.2,1);
}
/* pulse — shimmer sweep across the fill + gentle breathe */
@keyframes cf-fsshimmer{0%{left:-45%}55%,100%{left:115%}}
@keyframes cf-fsbreathe{0%,100%{filter:brightness(1)}50%{filter:brightness(1.18)}}
.cf-fsbar.is-pulse.is-progress .cf-fsbar__fill::after{
	content:"";position:absolute;top:0;left:-45%;width:45%;height:100%;
	background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);
	animation:cf-fsshimmer 2.8s ease-in-out infinite;
}
.cf-fsbar.is-pulse.is-progress .cf-fsbar__track{animation:cf-fsbreathe 2.8s ease-in-out infinite}
/* marketing sheen sweep */
.cf-fsbar.is-mktpulse.is-marketing .cf-fsbar__inner::after{
	content:"";position:absolute;top:0;left:-45%;width:45%;height:100%;z-index:0;pointer-events:none;
	background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent);
	animation:cf-fsshimmer 3.2s ease-in-out infinite;
}
@media (prefers-reduced-motion:reduce){
	.cf-fsbar__fill::after,.cf-fsbar.is-pulse.is-progress .cf-fsbar__track,
	.cf-fsbar.is-mktpulse.is-marketing .cf-fsbar__inner::after{animation:none}
}

/* ── Cart-page inline bar (white panel, server-rendered) ─────────────────── */
.cf-fsinline-row > td{padding:6px 0 12px !important;border:0 !important;text-align:center !important;width:auto !important;float:none !important}
/* WooCommerce's responsive cart table adds a ":" label (content: attr(data-title) ": ") before
 * every <td> on mobile; our row has no data-title, so kill that pseudo-label. */
.cf-fsinline-row > td::before{content:"" !important;display:none !important}
.cf-fsinline{
	margin:0;border:1px solid #9c13d1;border-radius:10px;padding:11px 14px;
	background:#fff;box-sizing:border-box;text-align:center;
}
.cf-fsinline__t{
	font-family:"Archivo",-apple-system,"Segoe UI",Roboto,sans-serif;font-weight:700;font-size:13px;
	margin-bottom:8px;color:#23252b;text-align:center;
}
.cf-fsinline__t .cf-amt{color:#9c13d1}
.cf-fsinline__track{height:7px;border-radius:4px;background:#e6e2ee;overflow:hidden}
.cf-fsinline__fill{height:100%;background-image:linear-gradient(90deg,#d31775,#5262ac);transition:width .5s}
.cf-fsinline.is-unlocked{border-color:#57c98a;background:#e9f8ef}
.cf-fsinline.is-unlocked .cf-fsinline__t{color:#1f9d55;margin-bottom:0}

/* ── CheckoutWC native bar, recoloured to our look ──────────────────────── */
/* CheckoutWC recolour vars are printed from PHP only when that toggle is on. */
/* One-shot attention nudge when the checkout button is hovered (desktop). */
@keyframes cf-scattn{
	0%{transform:scale(1);box-shadow:0 0 0 rgba(156,19,209,0)}
	28%{transform:scale(1.035);box-shadow:0 3px 18px rgba(156,19,209,.55)}
	100%{transform:scale(1);box-shadow:0 0 0 rgba(156,19,209,0)}
}
.cf-sc-attn{animation:cf-scattn .6s ease}

/* Local Pickup selected -> free-shipping messaging is irrelevant; hide our bars.
 * body.cf-fs-pickup is set server-side and kept in sync by the JS on method change. */
body.cf-fs-pickup .cf-fsbar,
body.cf-fs-pickup .cf-fsinline{ display:none !important; }

/* Locked "Free Shipping" row: a cloned native shipping option, non-interactive (its radio is
 * disabled). "Free Shipping" is struck + muted; the padlock + "add $X to unlock" sit in a chip
 * that is NOT struck and stays legible (so only the name reads as unavailable). */
.cf-fs-locked{
	pointer-events:none !important;
	cursor:default !important;
}
.cf-fs-locked input{ cursor:default !important; opacity:.5; }
.cf-fs-locked-name{ text-decoration:line-through; color:#9d97ab; }
.cf-fs-locked-chip{
	display:inline-flex;
	align-items:center;
	gap:4px;
	margin-left:8px;
	padding:1px 9px;
	border-radius:999px;
	background:#f3eff9;
	border:1px solid #e6e2ee;
	color:#6e6a78;
	font-size:11.5px;
	font-weight:600;
	line-height:1.7;
	white-space:nowrap;
	text-decoration:none;
	vertical-align:middle;
}
.cf-fs-locked-chip .cf-amt{ color:#9c13d1; font-weight:800; text-decoration:none; }
body.cf-fs-pickup.woocommerce-checkout .cf-fs-locked{ display:none !important; }

/* Unlocked bar is a CROSSING reward: the server renders its row 'armed' (collapsed here, so
   landing already-qualified shows nothing); cf-freeship.js un-arms it only on a real crossing,
   then fades + collapses it again. */
.cf-fsinline-row.cf-fs-armed{ height:0 !important; min-height:0 !important; opacity:0 !important; overflow:hidden !important; }
.cf-fsinline-row.cf-fs-armed > td{ padding:0 !important; }
.cf-fsinline-row.cf-fs-armed .cf-fsinline{ margin:0 !important; }
.cf-fsinline-row.cf-fs-collapsing{overflow:hidden !important}
