/* ════════════════════════════════════════════════════════════════════
 * TGP CHECKOUT v3 — clean monochrome design (May 2026)
 * ────────────────────────────────────────────────────────────────────
 * Loaded only on the actual checkout page (NOT on order-received) by
 * tgp-buyer-ui.php. Everything is scoped to `.tgp-co-v2` (we kept the
 * v2 class name for template stability — the visual is v3).
 *
 * v3 design language (vs the v2 purple gradients):
 *   • Pure monochrome — black/white/gray, no saturated accents.
 *   • Single CTA colour: WHITE button with BLACK text (Apple Pay style).
 *   • Subtle borders only — 1px @ 6-10% white, no purple ring lights.
 *   • Emerald (#10b981) used ONLY for "applied", "secure", "complete"
 *     status indicators. Errors stay red.
 *   • Tighter typography, more whitespace, less gradient noise.
 *
 * Top of file also hides the legacy WC default coupon notice
 * ("Have a coupon? Click here to enter your code") at body level so
 * even if a 3rd-party plugin re-attaches it after our remove_action,
 * the user never sees the duplicate.
 * ════════════════════════════════════════════════════════════════════ */

/* ─── BODY-LEVEL DARK BACKGROUND ────────────────────────────────── */
/* Goal: every pixel of the checkout page (header → footer) sits on
 * a deep dark background.
 *
 * Strategy:
 *   1. Paint <html> AND <body> dark — covers any white "fallback"
 *      area that shows when content is shorter than the viewport.
 *   2. Force EVERY theme/page wrapper transparent so the dark body
 *      shows through. This includes Astra's `#page` / `#content`,
 *      Hello Elementor's `<main>` / `<article>`, the WC widget
 *      wrappers, AND every Elementor container that ISN'T inside a
 *      header or footer template (those keep their original styling
 *      so the Sonaar nav + footer don't go transparent).            */

/* v3.6.2: PITCH BLACK body + nuclear fixed-overlay strategy.
 *
 * The user kept reporting "background still grey" because Elementor
 * paints individual sections with their own background-color (often
 * inherited from a global theme color or an inline `--bg-color`
 * variable). Even when we strip those, a stray wrapper sometimes
 * keeps a non-transparent fill.
 *
 * The bullet-proof solution: paint `body::before` as a fixed-layer
 * charcoal gradient (slightly lighter than #000, still deep) AND keep
 * wrappers transparent so the layer shows through (`z-index: -1`).
 *
 * We also force `color-scheme: dark` so native UI (scrollbars, form
 * controls) renders dark.                                          */
html.woocommerce-checkout,
html:has(body.woocommerce-checkout) {
  min-height: 100% !important;
  height: auto !important;
  max-height: none !important;
  background-color: #060608 !important;
  background-image: none !important;
  overflow-x: hidden !important;
  overflow-y: visible !important;
}

/* v3.8.17 — Document is the only vertical scroller; html/body must not be scrollports. */

html.woocommerce-checkout,
html:has(body.woocommerce-checkout),
body.woocommerce-checkout {
  color-scheme: dark !important;
}

body.woocommerce-checkout {
  background-color: transparent !important;
  background-image: none !important;
  /* Canvas is body::before (position:fixed). `fixed` here hurts scroll perf / chaining. */
  background-attachment: scroll !important;
  background-repeat: no-repeat !important;
  color: #fafafa !important;
  position: relative !important;
  overflow-x: hidden !important;
  overflow-y: visible !important;
  height: auto !important;
  max-height: none !important;
  overscroll-behavior-y: auto !important;
}

/* v3.7.19: no ::before on html (wallet stacking). Body::before = canvas. */
body.woocommerce-checkout::before {
  content: "" !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  min-height: 100vh !important;
  background-color: #030304 !important;
  background-image:
    radial-gradient(ellipse 115% 72% at 50% -10%, rgba(255, 255, 255, 0.075) 0%, transparent 55%),
    linear-gradient(168deg, #161616 0%, #0b0b0c 46%, #040404 100%) !important;
  background-repeat: no-repeat !important;
  background-size: cover !important;
  z-index: -1 !important;
  pointer-events: none !important;
  display: block !important;
}

/* v3.9.0 — Theme header must stay above checkout main (esp. short “gate” pages) so
 * `a[href="#login"]` / cart in the header receive clicks. Popup Login modal uses
 * z-index 999999+ when `.active` — still above the header. */
body.woocommerce-checkout [data-elementor-type="header"],
body.woocommerce-checkout .elementor-location-header,
body.woocommerce-checkout header.site-header,
body.woocommerce-checkout #masthead,
body.woocommerce-checkout .site-header {
  position: relative !important;
  z-index: 200000 !important;
}

/* Pull main content below the raised header stacking context on gate checkout */
@supports selector(:has(*)) {
  body.woocommerce-checkout:has(.tgp-co-v2--gate) #content,
  body.woocommerce-checkout:has(.tgp-co-v2--gate) main,
  body.woocommerce-checkout:has(.tgp-co-v2--gate) .site-content,
  body.woocommerce-checkout:has(.tgp-co-v2--gate) .site-main {
    position: relative !important;
    z-index: 0 !important;
  }
}

/* ── v3.6.8: Theme wrapper backgrounds — force transparent ────────
 *
 * The Hello Elementor theme (and most others) wraps content in
 * #page > main > #content / #primary > article > .entry-content.
 * These wrappers can carry a background-color from the theme
 * stylesheet (not inline — so JS can't strip them). They sit ON
 * TOP of the body and the ::before overlay, meaning their lighter
 * grey background shows through and overrides our #111.
 *
 * Fix: force every wrapper that could sit between <body> and the
 * Elementor content to be transparent so the #111 body shows.
 *
 * Elementor Columns/Sections: even after clearing the Section
 * background in the Elementor editor, the COLUMN inside it may
 * still have a background set. If you have cleared only the
 * Section, also clear the Column: click the column → Style →
 * Background → remove colour. This rule handles it in CSS too.  */
body.woocommerce-checkout #page,
body.woocommerce-checkout #wrapper,
body.woocommerce-checkout #content,
body.woocommerce-checkout #primary,
body.woocommerce-checkout .content-area,
body.woocommerce-checkout main,
body.woocommerce-checkout #main,
body.woocommerce-checkout .site-main,
body.woocommerce-checkout .site-content,
body.woocommerce-checkout .site-inner,
body.woocommerce-checkout .entry-content,
body.woocommerce-checkout article.type-page,
body.woocommerce-checkout .hentry,
body.woocommerce-checkout .elementor-section-wrap,
body.woocommerce-checkout .elementor-inner,
/* Elementor column (the one the user may have forgotten to clear) */
body.woocommerce-checkout .elementor-column,
body.woocommerce-checkout .elementor-column-wrap,
/* Common theme wrappers */
body.woocommerce-checkout .ast-container,
body.woocommerce-checkout .ast-row,
body.woocommerce-checkout .fl-builder-content,
body.woocommerce-checkout .page-content,
body.woocommerce-checkout .wp-site-blocks,
body.woocommerce-checkout .is-root-container {
  background:       transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

/* Apply same transparent treatment to the cart page */
body.woocommerce-cart #page,
body.woocommerce-cart #wrapper,
body.woocommerce-cart #content,
body.woocommerce-cart #primary,
body.woocommerce-cart .content-area,
body.woocommerce-cart main,
body.woocommerce-cart #main,
body.woocommerce-cart .site-main,
body.woocommerce-cart .site-content,
body.woocommerce-cart .site-inner,
body.woocommerce-cart .entry-content,
body.woocommerce-cart article.type-page,
body.woocommerce-cart .hentry,
body.woocommerce-cart .elementor-section-wrap,
body.woocommerce-cart .elementor-inner,
body.woocommerce-cart .elementor-column,
body.woocommerce-cart .elementor-column-wrap,
body.woocommerce-cart .ast-container,
body.woocommerce-cart .ast-row,
body.woocommerce-cart .page-content,
body.woocommerce-cart .wp-site-blocks,
body.woocommerce-cart .is-root-container {
  background:       transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

/* ── v3.6.5: Inline background stripping REMOVED (v3.7.21) — it broke
 * PayPal + Google Pay. Elementor grey is handled by transparency +
 * wrapper rules below.                                                     */

/* v3.6: NUCLEAR — every Elementor section / container / column / widget
 * INSIDE <main> on the checkout page is forced transparent. We also
 * zero-out the CSS variables Elementor inlines on individual sections
 * so a `--bg-color: #1a1a1a` declaration on a section block can't
 * fight us. Header and footer Elementor docs are excluded so the
 * Sonaar nav + footer keep their styling.                          */
body.woocommerce-checkout main [class*="elementor"]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]),
body.woocommerce-checkout #content [class*="elementor"]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]),
body.woocommerce-checkout main .e-con,
body.woocommerce-checkout main .e-con-inner,
body.woocommerce-checkout main .e-con-full,
body.woocommerce-checkout #content .e-con,
body.woocommerce-checkout #content .e-con-inner,
body.woocommerce-checkout #content .e-con-full {
  background-color: transparent !important;
  background-image: none !important;
  --bg-color: transparent !important;
  --background-color: transparent !important;
  --e-section-bg-color: transparent !important;
  --e-global-color-background: transparent !important;
}

/* :has() fallback — paint EVERY ancestor chain of `.tgp-co-v2` transparent
 * (except the page header/footer). This catches a few wrappers that
 * don't have the elementor class on them. */
@supports selector(:has(*)) {
  body.woocommerce-checkout :is(div, section, main, article, aside):has(.tgp-co-v2):not([data-elementor-type="header"]):not([data-elementor-type="footer"]):not(.tgp-co-v2) {
    background-color: transparent !important;
    background-image: none !important;
    --bg-color: transparent !important;
    --background-color: transparent !important;
    --e-section-bg-color: transparent !important;
    --e-global-color-background: transparent !important;
  }
}

/* Theme-level wrappers (Astra, Hello Elementor, WP defaults,
 * GeneratePress, OceanWP — common WC themes). */
body.woocommerce-checkout #page,
body.woocommerce-checkout .site,
body.woocommerce-checkout .site-wrapper,
body.woocommerce-checkout #content,
body.woocommerce-checkout main,
body.woocommerce-checkout main#main,
body.woocommerce-checkout .site-main,
body.woocommerce-checkout .site-content,
body.woocommerce-checkout .entry-content,
body.woocommerce-checkout .entry,
body.woocommerce-checkout article.page,
body.woocommerce-checkout article.post,
body.woocommerce-checkout .ast-container,
body.woocommerce-checkout .ast-row,
body.woocommerce-checkout .ast-primary-header-bar,
body.woocommerce-checkout .ast-content,
body.woocommerce-checkout #primary,
body.woocommerce-checkout #secondary,
body.woocommerce-checkout .container,
body.woocommerce-checkout .container-fluid,
body.woocommerce-checkout .page-header,
body.woocommerce-checkout .page-content,
body.woocommerce-checkout .inside-article,
body.woocommerce-checkout .grid-container,
body.woocommerce-checkout .content-area,
body.woocommerce-checkout .hfeed,
body.woocommerce-checkout .post-inner,
body.woocommerce-checkout .single-content,
body.woocommerce-checkout #wpadminbar + #page,
/* FSE / block themes */
body.woocommerce-checkout .wp-site-blocks,
body.woocommerce-checkout .is-root-container {
  background-color: transparent !important;
  background-image: none !important;
  color: inherit !important;
}

/* Elementor wrappers — ONLY the ones that aren't inside a `header`
 * or `footer` Theme Builder location. The `[data-elementor-type]`
 * attribute is on the outermost Elementor wrapper for each location
 * (header / footer / single-page / single-post / wp-page / wp-post /
 * archive / popup / etc.). We exclude header & footer so the
 * site-wide Sonaar nav keeps its dark theme intact and doesn't
 * leak transparent through to the body.                             */
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]),
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .elementor-section,
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .elementor-container,
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .elementor-column,
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .elementor-widget-wrap,
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .elementor-widget,
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .elementor-element,
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .e-con,
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .e-con-inner,
body.woocommerce-checkout [data-elementor-type]:not([data-elementor-type="header"]):not([data-elementor-type="footer"]) .elementor-widget-wp-widget-woocommerce_checkout {
  background-color: transparent !important;
  background-image: none !important;
}

/* Belt-and-braces — also target `<main>`'s Elementor descendants
 * regardless of `[data-elementor-type]` (some setups omit the attr
 * on inner containers). */
body.woocommerce-checkout main .elementor-section,
body.woocommerce-checkout main .elementor-container,
body.woocommerce-checkout main .elementor-column,
body.woocommerce-checkout main .elementor-widget-wrap,
body.woocommerce-checkout main .elementor-widget,
body.woocommerce-checkout main .elementor-element,
body.woocommerce-checkout main .e-con,
body.woocommerce-checkout main .e-con-inner,
body.woocommerce-checkout #content .elementor-section,
body.woocommerce-checkout #content .elementor-container,
body.woocommerce-checkout #content .elementor-column,
body.woocommerce-checkout #content .elementor-widget-wrap,
body.woocommerce-checkout #content .elementor-widget,
body.woocommerce-checkout #content .e-con,
body.woocommerce-checkout #content .e-con-inner {
  background-color: transparent !important;
  background-image: none !important;
}

/* v3.7.20: Let `.tgp-co-v2` set typography; do not force WC wrapper grey
 * (it sat on white cards and washed text). */
body.woocommerce-checkout form.checkout.woocommerce-checkout { color: inherit !important; }

/* ─── BODY-LEVEL DEFENSIVE HIDES ────────────────────────────────── */
/* These selectors are intentionally NOT scoped under .tgp-co-v2 — the
 * default WC coupon notice renders OUTSIDE our form (inside a sibling
 * `<div class="woocommerce-form-coupon-toggle">`) so a scoped rule
 * wouldn't reach it. Limited to `body.woocommerce-checkout` so it
 * cannot affect any other page. */
body.woocommerce-checkout .woocommerce-form-coupon-toggle,
body.woocommerce-checkout > .woocommerce-form-coupon-toggle,
body.woocommerce-checkout .woocommerce > .woocommerce-form-coupon-toggle,
body.woocommerce-checkout form.checkout_coupon,
body.woocommerce-checkout .woocommerce-info > .showcoupon,
body.woocommerce-checkout > .woocommerce-info:not(.woocommerce-message):not(.woocommerce-error) {
  display: none !important;
}

/* Re-show success / error notices that we don't want hidden */
body.woocommerce-checkout > .woocommerce-message,
body.woocommerce-checkout > .woocommerce-error {
  display: block !important;
}

/* Belt: hide ANY reward-points checkout banner that's still rendering
 * OUTSIDE our `.tgp-co-v2` wrapper (e.g. when functions.php hasn't been
 * deployed yet, or another plugin re-attached the old hook). The banner
 * we want is now re-hooked to `woocommerce_review_order_before_payment`
 * which renders INSIDE `.tgp-co-v2 #payment` — anything outside is
 * either the legacy raw DOM or a duplicate.                              */
body.woocommerce-checkout > .woocommerce-reward-points-text-container,
body.woocommerce-checkout > .woocommerce > .woocommerce-reward-points-text-container,
body.woocommerce-checkout .entry-content > .woocommerce-reward-points-text-container,
body.woocommerce-checkout .site-main > .woocommerce-reward-points-text-container,
body.woocommerce-checkout main > .woocommerce-reward-points-text-container {
  display: none !important;
}


/* v3.7.27: Do not flat-paint `#page` / wrappers #000 — that hid the gradient.
 * Transparent wrappers + `body::before` (critical CSS + rules above). */
body.woocommerce-checkout :is(.woocommerce, .woocommerce-checkout, form.checkout, .tgp-co-v2-form, .tgp-co-v2, .tgp-co-v2__grid, .tgp-co-v2__main, .tgp-co-v2__summary, .tgp-co-v2__summary-sticky) {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

/* v3.7.29 — Remove double top chrome (theme + Elementor section padding). */
body.woocommerce-checkout #primary,
body.woocommerce-checkout #content,
body.woocommerce-checkout .content-area,
body.woocommerce-checkout .site-main,
body.woocommerce-checkout .site-content,
body.woocommerce-checkout article.page .entry-content,
body.woocommerce-checkout .page-content {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
body.woocommerce-checkout form.checkout.tgp-co-v2-form {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* v3.8.17 — Nested overflow:auto on Elementor/theme wrappers → “double scroll” / iOS pan fights */
body.woocommerce-checkout form.checkout.tgp-co-v2-form,
body.woocommerce-checkout .tgp-co-v2__grid {
  overflow: visible !important;
  min-height: 0 !important;
}
@supports selector(:has(*)) {
  body.woocommerce-checkout main .e-con:has(.tgp-co-v2),
  body.woocommerce-checkout main .e-con-inner:has(.tgp-co-v2),
  body.woocommerce-checkout main .elementor-section:has(.tgp-co-v2),
  body.woocommerce-checkout #content .e-con:has(.tgp-co-v2),
  body.woocommerce-checkout #content .elementor-section:has(.tgp-co-v2) {
    overflow-x: hidden !important;
    overflow-y: visible !important;
    max-height: none !important;
    min-height: 0 !important;
    height: auto !important;
  }
}

body.woocommerce-checkout .woocommerce-notices-wrapper {
  margin-top: 6px !important;
}
@supports selector(:has(*)) {
  body.woocommerce-checkout main .e-con-inner:has(.tgp-co-v2),
  body.woocommerce-checkout main .e-con:has(.tgp-co-v2):not([data-elementor-type="header"]):not([data-elementor-type="footer"]),
  body.woocommerce-checkout main .elementor-section:has(.tgp-co-v2):not([data-elementor-type="header"]):not([data-elementor-type="footer"]),
  body.woocommerce-checkout main .elementor-widget-wrap:has(.tgp-co-v2) {
    padding-top: 0 !important;
    margin-top: 0 !important;
  }
}

/* ─── ROOT TOKENS (page chrome on gradient canvas — header, steps) ─── */
.tgp-co-v2 {
  --co-surface: rgba(255, 255, 255, 0.06);
  --co-surface-2: rgba(255, 255, 255, 0.08);
  --co-surface-3: rgba(255, 255, 255, 0.10);
  --co-border: rgba(255, 255, 255, 0.12);
  --co-border-strong: rgba(255, 255, 255, 0.18);
  --co-text: #fafafa;
  --co-text-2: #e5e5e5;
  --co-text-3: #a3a3a3;
  --co-text-4: #737373;
  --co-accent: #ffffff;
  --co-accent-soft: rgba(255, 255, 255, 0.06);
  --co-accent-border: rgba(255, 255, 255, 0.18);
  --co-success: #10b981;
  --co-success-soft: rgba(16, 185, 129, 0.10);
  --co-success-border: rgba(16, 185, 129, 0.30);
  --co-error: #ef4444;
  --co-radius: 12px;
  --co-radius-sm: 8px;
  --co-shadow: 0 1px 0 rgba(0, 0, 0, 0.04), 0 12px 32px rgba(0, 0, 0, 0.22);
  --co-shadow-sm: 0 1px 0 rgba(0, 0, 0, 0.06), 0 8px 24px rgba(0, 0, 0, 0.14);

  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  color: var(--co-text);
  display: flex;
  flex-direction: column;
  gap: 18px;
  margin: 0 auto;
  /* Top: keep tight under theme header — back link row adds its own padding (v3.7.77). */
  padding: 0 clamp(12px, 4vw, 22px) 0;
  box-sizing: border-box;
  max-width: 1200px;
  width: 100%;
  letter-spacing: -0.005em;
}

/* Thin row above Checkout title — return link only (no extra wrapper top padding). */
.tgp-co-v2__back-strip {
	margin: 0 !important;
}
.tgp-co-v2__back-cart-link {
	display: inline-flex !important;
	align-items: center !important;
	gap: 8px !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	letter-spacing: 0 !important;
	line-height: 1.35 !important;
	color: var(--co-text-3) !important;
	text-decoration: none !important;
	border: none !important;
	background: transparent !important;
	transition: color 140ms ease, opacity 140ms ease !important;
	box-shadow: none !important;
	margin: 0 !important;
	padding: 6px 0 !important;
}
.tgp-co-v2__back-cart-link:hover {
	color: var(--co-text) !important;
	opacity: 1 !important;
}

/* v3.7.24: All checkout sections use Ghost-Coins style dark surface. */
.tgp-co-v2__card,
.tgp-co-v2__summary-card,
.tgp-co-v2__sidecard--coupon {
  --co-surface: rgba(255, 255, 255, 0.04);
  --co-surface-2: rgba(255, 255, 255, 0.06);
  --co-surface-3: rgba(255, 255, 255, 0.10);
  --co-border: rgba(255, 255, 255, 0.10);
  --co-border-strong: rgba(255, 255, 255, 0.16);
  --co-text: #fafafa;
  --co-text-2: #d4d4d8;
  --co-text-3: #a1a1aa;
  --co-text-4: #6b7280;
  --co-shadow-sm: 0 1px 0 rgba(255, 255, 255, 0.03), 0 12px 30px rgba(0, 0, 0, 0.44);
  color: var(--co-text);
  color-scheme: dark !important;
}

.tgp-co-v2__card,
.tgp-co-v2__summary-card {
  background:
    radial-gradient(circle at 100% 0%, rgba(255, 255, 255, 0.065), transparent 62%),
    radial-gradient(circle at 12% 88%, rgba(255, 255, 255, 0.02), transparent 55%),
    var(--co-surface) !important;
}

.tgp-co-v2 #payment { color-scheme: dark !important; }

/* ─── HEADER ───────────────────────────────────────────────────── */
.tgp-co-v2__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
  padding: 4px 0;
}

.tgp-co-v2__header-text { min-width: 0; }

.tgp-co-v2__title {
  margin: 0;
  font-size: clamp(24px, 3vw, 30px);
  font-weight: 700;
  letter-spacing: -0.03em;
  color: var(--co-text);
  font-family: 'Inter', sans-serif;
  line-height: 1.1;
}

.tgp-co-v2__sub {
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--co-text-3);
  line-height: 1.5;
  font-weight: 500;
}

/* Step pills — minimal monochrome */
.tgp-co-v2__steps {
  list-style: none;
  margin: 0;
  padding: 4px;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  background: var(--co-surface);
  border: 1px solid var(--co-border);
  border-radius: 999px;
}

.tgp-co-v2__steps li {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 5px 14px 5px 6px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  color: var(--co-text-3);
  letter-spacing: 0;
}

.tgp-co-v2__steps-num {
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.05);
  color: var(--co-text-3);
  font-size: 10.5px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.tgp-co-v2__steps li.is-done { color: var(--co-success); }
.tgp-co-v2__steps li.is-done .tgp-co-v2__steps-num {
  background: var(--co-success-soft);
  color: var(--co-success);
}

.tgp-co-v2__steps li.is-active { color: var(--co-text); background: rgba(255, 255, 255, 0.06); }
.tgp-co-v2__steps li.is-active .tgp-co-v2__steps-num {
  background: var(--co-text);
  color: #0a0a0a;
}

/* Mobile summary toggle removed — keep selector hidden if stale markup/cache. */
.tgp-co-v2__mobile-summary-toggle { display: none !important; }

/* ─── GRID ─────────────────────────────────────────────────────── */
/* v3.8.16: Outer stack is flex — checkout form only (login lives inside Account card).
 * The form itself is a real two-column grid (replaces display:contents — Safari often broke scroll ancestry). */
.tgp-co-v2__grid {
  display: flex;
  flex-direction: column;
  gap: 18px;
  align-items: stretch;
  min-width: 0;
}

/* Empty POST target for checkout login fields — display:none removes any scroll/interaction oddities. */
.tgp-co-v2-screen-reader-form {
  display: none !important;
}

.tgp-co-v2-form--inner-grid.checkout,
form.checkout.tgp-co-v2-form--inner-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 430px;
  gap: 18px;
  align-items: start;
  width: 100%;
  min-width: 0;
}

/* When WC's checkout AJAX rejects a submission (e.g. "Please read and accept
 * the terms…"), it `$('form.checkout').prepend(notice)` — so the notice
 * becomes the FIRST grid item. With our 1fr / 430px grid that pushed
 * `.__main` into the right column and forced `.__summary` to a new row,
 * leaving an empty left half. Force any directly-prepended WC notice (the
 * div, the legacy ul, or the NoticeGroup wrapper) to span BOTH columns. */
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-NoticeGroup,
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-NoticeGroup-checkout,
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-notices-wrapper,
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-error,
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-info,
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-message,
form.checkout.tgp-co-v2-form--inner-grid > ul.woocommerce-error,
form.checkout.tgp-co-v2-form--inner-grid > ul.woocommerce-info,
form.checkout.tgp-co-v2-form--inner-grid > ul.woocommerce-message {
  grid-column: 1 / -1 !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 0 4px !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  list-style: none !important;
}
/* Inner notice element gets its own padded chip surface. */
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-NoticeGroup .woocommerce-error,
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-NoticeGroup .woocommerce-info,
form.checkout.tgp-co-v2-form--inner-grid > .woocommerce-NoticeGroup .woocommerce-message {
  margin: 0 0 12px !important;
}

.tgp-co-v2__main {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

/* ─── CARD ─────────────────────────────────────────────────────── */
/* v3.8.15: overflow:hidden on large cards trapped vertical pan on iOS (scroll stuck).
 * Corners still read cleanly from surface + border; payment/login override anyway. */
.tgp-co-v2__card {
  background: var(--co-surface);
  border: 1px solid var(--co-border);
  border-radius: var(--co-radius);
  box-shadow: var(--co-shadow-sm);
  overflow: visible;
  transition: border-color 160ms ease;
}

/* v3.7.17: Payment stacks PayPal + Google Pay; bottom iframe/shadow extends past the box. */
.tgp-co-v2__card--payment {
  overflow: visible !important;
}

/* Login card — legacy hook if markup still uses wrapper */
.tgp-co-v2__card--login {
  overflow: visible !important;
}

.tgp-co-v2__account-login-wrap .tgp-co-v2__checkout-login {
  padding: 0;
}

/* ─── Checkout login — optional dropdown (toggle + panel) ─ */
.tgp-co-v2__checkout-login {
  padding: 0;
}
.tgp-co-v2__checkout-login-dropdown {
  border: 1px solid var(--co-border);
  border-radius: var(--co-radius-sm);
  background: rgba(0, 0, 0, 0.22);
  overflow: hidden;
}
.tgp-co-v2__checkout-login-toggle {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100% !important;
  margin: 0 !important;
  min-height: 44px !important;
  padding: 12px 14px !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: var(--co-text) !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  text-align: left !important;
  cursor: pointer !important;
  box-shadow: none !important;
  transition: background-color 140ms ease !important;
}
.tgp-co-v2__checkout-login-toggle:hover,
.tgp-co-v2__checkout-login-toggle:focus-visible {
  background: rgba(255, 255, 255, 0.05) !important;
  outline: none !important;
}
.tgp-co-v2__checkout-login-toggle:focus-visible {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.18) !important;
}
.tgp-co-v2__checkout-login-toggle-text {
  flex: 1;
  min-width: 0;
}
.tgp-co-v2__checkout-login-toggle-chev {
  flex-shrink: 0;
  display: flex;
  color: var(--co-text-3);
  transition: transform 180ms ease;
}
.tgp-co-v2__checkout-login-dropdown.is-open .tgp-co-v2__checkout-login-toggle-chev {
  transform: rotate(180deg);
  color: var(--co-text-2);
}
.tgp-co-v2__checkout-login-panel {
  padding: 16px 16px 18px;
  border-top: 1px solid var(--co-border);
}
.tgp-co-v2__checkout-login-panel[hidden] {
  display: none !important;
}
.tgp-co-v2__checkout-login-panel-hint {
  margin: 0 0 16px;
  padding-top: 0;
  font-size: 12px;
  line-height: 1.55;
  font-weight: 500;
  color: var(--co-text-3);
}
.tgp-co-v2__checkout-login-form {
  display: flex;
  flex-direction: column;
  gap: 0;
}
/* Stack label + input with gap so theme / `woocommerce.css` `.form-row { margin !important }`
   cannot collapse label–input spacing (was visually “stuck together”). */
.tgp-co-v2__checkout-login-form .woocommerce-form-row.form-row-wide,
.tgp-co-v2__checkout-login-form p.form-row.form-row-wide {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 12px !important;
  margin: 0 0 22px !important;
  padding: 0 !important;
}
.tgp-co-v2__checkout-login-form .form-row:not(.tgp-co-v2__checkout-login__actions):not(.form-row-wide) {
  margin: 0 0 18px !important;
  padding: 0 !important;
}
.tgp-co-v2__checkout-login-form label {
  display: block !important;
  margin: 0 !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--co-text-3) !important;
  line-height: 1.45 !important;
}
.tgp-co-v2__checkout-login-form input.input-text {
  width: 100% !important;
  box-sizing: border-box !important;
  height: 44px !important;
  margin: 0 !important;
  padding: 0 14px !important;
  border-radius: var(--co-radius-sm) !important;
  border: 1px solid var(--co-border-strong) !important;
  background: rgba(0, 0, 0, 0.35) !important;
  color: var(--co-text) !important;
  font-size: 14px !important;
  font-family: 'Inter', sans-serif !important;
}
.tgp-co-v2__checkout-login-form input.input-text:focus {
  outline: none !important;
  border-color: rgba(255, 255, 255, 0.42) !important;
}
.tgp-co-v2__checkout-login__actions {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 16px !important;
  margin: 18px 0 0 !important;
}
.tgp-co-v2__checkout-login__actions .woocommerce-form-login__rememberme {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
  color: var(--co-text-2) !important;
  margin: 0 !important;
}
.tgp-co-v2__checkout-login__submit {
  width: 100% !important;
  margin: 0 !important;
  min-height: 46px !important;
  border-radius: var(--co-radius-sm) !important;
  background: var(--co-accent) !important;
  color: #0a0a0a !important;
  border: 0 !important;
  font-weight: 700 !important;
  font-size: 13.5px !important;
  cursor: pointer !important;
}
.tgp-co-v2__checkout-login__submit:hover {
  opacity: 0.94 !important;
}
.tgp-co-v2__checkout-login__lost {
  margin: 18px 0 0 !important;
  text-align: center !important;
  font-size: 12.5px !important;
}
.tgp-co-v2__checkout-login__lost a {
  color: var(--co-text-3) !important;
  text-decoration: underline !important;
  text-underline-offset: 3px !important;
}
.tgp-co-v2__checkout-login__lost a:hover {
  color: var(--co-text) !important;
}

/* ─── Checkout gate: account required (no guest / no checkout signup) ─ */
.tgp-co-v2--gate {
  max-width: 560px;
}

.tgp-co-v2__gate-layout {
  display: flex;
  flex-direction: column;
  gap: 14px;
  width: 100%;
  min-width: 0;
}

.tgp-co-v2__card--gate-reason {
  padding: 20px 22px 22px;
}

.tgp-co-v2__gate-reason-top {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}

.tgp-co-v2__gate-reason-icon {
  flex-shrink: 0;
  width: 46px;
  height: 46px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--co-success-soft);
  border: 1px solid var(--co-success-border);
  color: var(--co-success);
}

.tgp-co-v2__gate-reason-copy {
  min-width: 0;
}

.tgp-co-v2__gate-reason-title {
  margin: 0 0 8px;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--co-text);
  font-family: 'Inter', sans-serif;
  line-height: 1.25;
}

.tgp-co-v2__gate-reason-lead {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--co-text-3);
  font-weight: 500;
}

.tgp-co-v2__gate-points {
  margin: 16px 0 0;
  padding: 0 0 0 18px;
  color: var(--co-text-2);
  font-size: 13px;
  line-height: 1.5;
  font-weight: 500;
}

.tgp-co-v2__gate-points li {
  margin: 0 0 8px;
  padding-left: 4px;
}

.tgp-co-v2__gate-points li:last-child {
  margin-bottom: 0;
}

.tgp-co-v2__gate-notice {
  padding: 14px 16px;
  border-radius: var(--co-radius-sm);
  border: 1px solid var(--co-border);
  background: rgba(0, 0, 0, 0.28);
}

.tgp-co-v2__gate-notice-text {
  margin: 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--co-text-2);
  font-weight: 500;
}

.tgp-co-v2__card--gate-fallback .tgp-co-v2__gate-fallback-body {
  padding: 20px 22px 22px;
}

.tgp-co-v2__gate-fallback-text {
  margin: 0 0 16px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--co-text-3);
}

.tgp-co-v2__gate-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 16px;
  padding: 4px 2px 8px;
}

.tgp-co-v2__gate-actions-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--co-text-3);
}

.tgp-co-v2__gate-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 20px;
  border-radius: 999px;
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: -0.01em;
  text-decoration: none !important;
  transition: opacity 140ms ease, transform 140ms ease, border-color 140ms ease, background 140ms ease;
  box-sizing: border-box;
}

/* Gate “Create account” uses <button> so hash routers / WC do not swallow #register */
button.tgp-co-v2__gate-btn {
  margin: 0;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  border-style: solid;
  border-width: 1px;
}

.tgp-co-v2__gate-btn--primary {
  background: var(--co-accent);
  color: #0a0a0a !important;
  border: 1px solid var(--co-accent-border);
}

.tgp-co-v2__gate-btn--primary:hover {
  opacity: 0.94;
}

.tgp-co-v2__gate-btn--secondary {
  background: rgba(255, 255, 255, 0.06);
  color: var(--co-text) !important;
  border: 1px solid var(--co-border-strong);
}

.tgp-co-v2__gate-btn--secondary:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.22);
}

/**
 * Gate “Create account” is a native `<button>` — Hello / Elementor / WC often
 * set global `button` / `.button` (full width, theme primary bg, square radius).
 * Scoped + !important so our pill secondary style wins.
 */
html body.woocommerce-checkout .tgp-co-v2--gate .tgp-co-v2__gate-register-row button.tgp-co-v2__gate-register-popup,
html body.woocommerce-checkout .tgp-co-v2--gate .tgp-co-v2__gate-register-row button.tgp-co-v2__gate-btn--secondary.tgp-co-v2__gate-register-popup {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  max-width: 100% !important;
  min-width: min(200px, 100%) !important;
  min-height: 44px !important;
  height: auto !important;
  padding: 0 20px !important;
  margin: 0 !important;
  border-radius: 999px !important;
  border: 1px solid var(--co-border-strong) !important;
  background: rgba(255, 255, 255, 0.06) !important;
  background-image: none !important;
  color: var(--co-text) !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.25 !important;
  text-transform: none !important;
  text-decoration: none !important;
  box-shadow: none !important;
  filter: none !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  cursor: pointer !important;
  box-sizing: border-box !important;
  transition: opacity 140ms ease, border-color 140ms ease, background 140ms ease !important;
}

html body.woocommerce-checkout .tgp-co-v2--gate .tgp-co-v2__gate-register-row button.tgp-co-v2__gate-register-popup:hover,
html body.woocommerce-checkout .tgp-co-v2--gate .tgp-co-v2__gate-register-row button.tgp-co-v2__gate-register-popup:focus-visible {
  background: rgba(255, 255, 255, 0.1) !important;
  border-color: rgba(255, 255, 255, 0.22) !important;
  color: var(--co-text) !important;
  opacity: 1 !important;
  transform: none !important;
  box-shadow: none !important;
}

html body.woocommerce-checkout .tgp-co-v2--gate .tgp-co-v2__gate-register-row button.tgp-co-v2__gate-register-popup:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.35) !important;
  outline-offset: 2px !important;
}

/* Register CTA below embedded checkout login — Popup Login uses `.popup-login-open` + `data-tab`. */
.tgp-co-v2__gate-register-row {
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--co-border);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  text-align: center;
}

.tgp-co-v2__gate-register-row--spaced {
  margin-top: 22px;
  padding-top: 0;
  border-top: none;
}

.tgp-co-v2__gate-register-label {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--co-text-3);
}

.tgp-co-v2__gate-register-row .tgp-co-v2__gate-btn {
  min-width: min(200px, 100%);
  justify-content: center;
}

.tgp-co-v2__card--account .tgp-co-v2__card-body.tgp-co-v2__account-login-wrap {
  padding: 16px 20px 20px;
}

.tgp-co-v2__card-hd {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 16px 20px;
  border-bottom: 1px solid var(--co-border);
}

.tgp-co-v2__card-num {
  width: 24px;
  height: 24px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid var(--co-border-strong);
  color: var(--co-text-2);
  font-size: 11px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-variant-numeric: tabular-nums;
}

.tgp-co-v2__card-hd-text { min-width: 0; }
.tgp-co-v2__card-hd-text h2 {
  margin: 0;
  font-size: 14.5px;
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--co-text);
  font-family: 'Inter', sans-serif;
}
.tgp-co-v2__card-hd-text p {
  margin: 2px 0 0;
  font-size: 12.5px;
  color: var(--co-text-3);
  line-height: 1.5;
  font-weight: 500;
}
.tgp-co-v2__card-hd-text p strong { color: var(--co-text); font-weight: 600; }

.tgp-co-v2__card-secure {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--co-success);
  background: var(--co-success-soft);
  border: 1px solid var(--co-success-border);
  border-radius: 999px;
  white-space: nowrap;
}

.tgp-co-v2__card-body { padding: 18px 20px 20px; }

.tgp-co-v2__card--account .tgp-co-v2__card-hd { border-bottom: 0; }

/* ─── FORM FIELDS — v3.6.4: reliable 2-column grid ──────────────
 *
 * Previous versions used `display:contents` to flatten the WC
 * wrapper divs into the parent grid — this is unreliable in some
 * browser/plugin combos and causes the "full-width + dead space"
 * issue. v3.6.4 drops that approach entirely.
 *
 * New strategy: let the outer wrappers be normal block elements,
 * but make .woocommerce-billing-fields__field-wrapper (the direct
 * parent of every .form-row) its own 2-column grid. Result:
 *
 *   ┌─────────────────────┬─────────────────────┐
 *   │ First name          │ Last name            │
 *   ├─────────────────────┴─────────────────────┤
 *   │ Company (optional)                         │
 *   │ Country / Region                           │
 *   │ Street address                             │
 *   │ Apartment / Suite (optional)               │
 *   ├─────────────────────┬─────────────────────┤
 *   │ City                │ State               │
 *   │ Postcode / ZIP      │ Phone               │
 *   ├─────────────────────┴─────────────────────┤
 *   │ Email                                      │
 *   └────────────────────────────────────────────┘
 */

/* Outer col2-set + col divs — just block containers, no grid. */
.tgp-co-v2__fields {
  display: block !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}

.tgp-co-v2__fields .col-1,
.tgp-co-v2__fields .col-2 {
  display: block !important;
  width: auto !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

.tgp-co-v2__fields .woocommerce-billing-fields,
.tgp-co-v2__fields .woocommerce-shipping-fields,
.tgp-co-v2__fields .woocommerce-additional-fields {
  display: block !important;
  width: auto !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* THE GRID LIVES HERE — direct parent of every .form-row. */
.tgp-co-v2__fields .woocommerce-billing-fields__field-wrapper,
.tgp-co-v2__fields .woocommerce-shipping-fields__field-wrapper,
.tgp-co-v2__fields .woocommerce-additional-fields__field-wrapper {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 14px !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  float: none !important;
  background: transparent !important;
  border: 0 !important;
}

.tgp-co-v2__fields h3,
.tgp-co-v2__fields .woocommerce-billing-fields > h3,
.tgp-co-v2__fields .woocommerce-billing-fields__field-wrapper > h3,
.tgp-co-v2__fields .woocommerce-shipping-fields > h3,
.tgp-co-v2__fields .woocommerce-additional-fields > h3 {
  display: none !important;
}

.tgp-co-v2 .woocommerce-additional-fields,
.tgp-co-v2 .woocommerce-additional-fields h3,
.tgp-co-v2 #order_comments_field,
.tgp-co-v2-form #order_comments_field { display: none !important; }

/* Each form-row is a flex column (label → input → hint). */
.tgp-co-v2 .form-row,
.tgp-co-v2-form .form-row {
  width: auto !important;
  float: none !important;
  display: flex !important;
  flex-direction: column !important;
  margin: 0 !important;
  padding: 0 !important;
  gap: 6px !important;
  min-width: 0 !important;
}

/* Full-width: span both columns. Target by ID (definitive) AND
 * by the WC class `form-row-wide` (fallback for custom fields). */
.tgp-co-v2 .form-row.form-row-wide,
.tgp-co-v2 .form-row.notes,
.tgp-co-v2 .form-row#billing_company_field,
.tgp-co-v2 .form-row#billing_country_field,
.tgp-co-v2 .form-row#billing_address_1_field,
.tgp-co-v2 .form-row#billing_address_2_field,
.tgp-co-v2 .form-row#billing_email_field,
.tgp-co-v2 .form-row#shipping_company_field,
.tgp-co-v2 .form-row#shipping_country_field,
.tgp-co-v2 .form-row#shipping_address_1_field,
.tgp-co-v2 .form-row#shipping_address_2_field {
  grid-column: 1 / -1 !important;
}

/* Half-width: one column each. These auto-pair: first+last,
 * city+state, postcode+phone. */
.tgp-co-v2 .form-row.form-row-first,
.tgp-co-v2 .form-row.form-row-last,
.tgp-co-v2 .form-row#billing_first_name_field,
.tgp-co-v2 .form-row#billing_last_name_field,
.tgp-co-v2 .form-row#billing_phone_field,
.tgp-co-v2 .form-row#billing_city_field,
.tgp-co-v2 .form-row#billing_state_field,
.tgp-co-v2 .form-row#billing_postcode_field,
.tgp-co-v2 .form-row#shipping_first_name_field,
.tgp-co-v2 .form-row#shipping_last_name_field,
.tgp-co-v2 .form-row#shipping_city_field,
.tgp-co-v2 .form-row#shipping_state_field,
.tgp-co-v2 .form-row#shipping_postcode_field {
  grid-column: auto !important;
}

.tgp-co-v2 .form-row label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--co-text-3);
  margin: 0 !important;
  font-family: 'Inter', sans-serif;
  line-height: 1.2;
}

.tgp-co-v2 .form-row label .required,
.tgp-co-v2 .form-row label abbr[title="required"] {
  color: var(--co-error);
  text-decoration: none;
  border: 0;
  margin-left: 2px;
}

.tgp-co-v2 .form-row.woocommerce-invalid label { color: var(--co-error); }

.tgp-co-v2 .form-row .woocommerce-input-wrapper {
  width: 100% !important;
  display: block;
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* INPUTS — neutral surface, white focus ring */
.tgp-co-v2 .form-row input.input-text,
.tgp-co-v2 .form-row input[type="text"],
.tgp-co-v2 .form-row input[type="email"],
.tgp-co-v2 .form-row input[type="tel"],
.tgp-co-v2 .form-row input[type="url"],
.tgp-co-v2 .form-row input[type="password"],
.tgp-co-v2 .form-row input[type="number"],
.tgp-co-v2 .form-row textarea,
.tgp-co-v2 .form-row select {
  width: 100% !important;
  background: var(--co-surface-2) !important;
  background-color: var(--co-surface-2) !important;
  border: 1px solid var(--co-border-strong) !important;
  border-radius: var(--co-radius-sm) !important;
  padding: 10px 14px !important;
  height: auto !important;
  min-height: 40px !important;
  color: var(--co-text) !important;
  -webkit-text-fill-color: var(--co-text) !important;
  caret-color: var(--co-text) !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13.5px !important;
  font-weight: 500 !important;
  letter-spacing: -0.005em !important;
  outline: none !important;
  box-shadow: none !important;
  transition: border-color 140ms ease, background 140ms ease;
}

.tgp-co-v2 .form-row textarea {
  resize: vertical !important;
  min-height: 84px !important;
  line-height: 1.5 !important;
}

.tgp-co-v2 .form-row input:focus,
.tgp-co-v2 .form-row textarea:focus,
.tgp-co-v2 .form-row select:focus {
  border-color: rgba(255, 255, 255, 0.45) !important;
  background: var(--co-surface-3) !important;
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.08) !important;
}

.tgp-co-v2 .form-row input::placeholder,
.tgp-co-v2 .form-row textarea::placeholder { color: var(--co-text-4) !important; opacity: 1 !important; }

.tgp-co-v2 .form-row.woocommerce-invalid input.input-text,
.tgp-co-v2 .form-row.woocommerce-invalid select {
  border-color: rgba(239, 68, 68, 0.50) !important;
}

.tgp-co-v2 .form-row .woocommerce-error,
.tgp-co-v2 .form-row .woocommerce-error-message {
  font-size: 11.5px;
  color: var(--co-error);
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
}

.tgp-co-v2 .woocommerce-privacy-policy-text {
  font-size: 11.5px !important;
  color: var(--co-text-3) !important;
  line-height: 1.55 !important;
  margin: 0 0 8px !important;
}
.tgp-co-v2 .woocommerce-privacy-policy-text a { color: var(--co-text) !important; text-decoration: underline !important; text-underline-offset: 2px !important; text-decoration-color: rgba(255, 255, 255, 0.30) !important; }

/* ─── COUNTRY / STATE (Select2) ──────────────────────────────── */
.tgp-co-v2 select.select2-hidden-accessible {
  position: absolute !important;
  clip: rect(0 0 0 0) !important;
  height: 1px !important;
  width: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  border: 0 !important;
}

.tgp-co-v2 .select2,
.tgp-co-v2 .select2.select2-container,
.tgp-co-v2 .select2-container--default {
  width: 100% !important;
  min-height: 40px !important;
  background: transparent !important;
}

.tgp-co-v2 .select2-container--default .select2-selection--single,
.tgp-co-v2 .select2-container--default .select2-selection {
  width: 100% !important;
  height: 40px !important;
  min-height: 40px !important;
  background: var(--co-surface-2) !important;
  border: 1px solid var(--co-border-strong) !important;
  border-radius: var(--co-radius-sm) !important;
  padding: 0 !important;
  outline: none !important;
  box-shadow: none !important;
  display: flex !important;
  align-items: center !important;
  font-family: 'Inter', sans-serif !important;
}

.tgp-co-v2 .select2-container--default .select2-selection--single:focus,
.tgp-co-v2 .select2-container--default.select2-container--focus .select2-selection {
  border-color: rgba(255, 255, 255, 0.40) !important;
  background: var(--co-surface-3) !important;
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.06) !important;
}

.tgp-co-v2 .select2-container--default .select2-selection__rendered {
  width: 100% !important;
  padding: 0 36px 0 14px !important;
  line-height: 38px !important;
  height: 38px !important;
  color: var(--co-text) !important;
  font-size: 13.5px !important;
  font-weight: 500 !important;
  font-family: 'Inter', sans-serif !important;
  background: transparent !important;
}

.tgp-co-v2 .select2-container--default .select2-selection__placeholder { color: var(--co-text-4) !important; }

.tgp-co-v2 .select2-container--default .select2-selection__arrow {
  position: absolute !important;
  top: 50% !important;
  right: 12px !important;
  transform: translateY(-50%) !important;
  height: 16px !important;
  width: 16px !important;
  background: transparent !important;
  border: 0 !important;
}

.tgp-co-v2 .select2-container--default .select2-selection__arrow b {
  border: 0 !important;
  background: transparent !important;
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  position: absolute !important;
  inset: 0 !important;
  pointer-events: none !important;
}

.tgp-co-v2 .select2-container--default .select2-selection__arrow b::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 14px 14px !important;
}

.tgp-co-v2 .select2-container--default .select2-selection__clear {
  margin-right: 18px !important;
  color: var(--co-text-3) !important;
  font-size: 18px !important;
}

/* Dropdown panel — at <body> level; not scoped */
body .select2-dropdown,
body .select2-container--default .select2-dropdown {
  background: #15151a !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-radius: 10px !important;
  box-shadow: 0 24px 56px rgba(0, 0, 0, 0.60) !important;
  overflow: hidden !important;
  margin-top: 4px !important;
}

body .select2-container--default .select2-search--dropdown .select2-search__field {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 8px !important;
  padding: 8px 10px !important;
  color: #fafafa !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  outline: none !important;
}

body .select2-container--default .select2-results__option {
  padding: 9px 14px !important;
  color: #d4d4d8 !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  background: transparent !important;
}

body .select2-container--default .select2-results__option--highlighted[aria-selected],
body .select2-container--default .select2-results__option--highlighted {
  background: rgba(255, 255, 255, 0.08) !important;
  color: #fafafa !important;
}

body .select2-container--default .select2-results__option[aria-selected="true"] {
  background: rgba(255, 255, 255, 0.04) !important;
  color: #fafafa !important;
}

/* ─── COUPON CARD ────────────────────────────────────────────── */
.tgp-co-v2__card--coupon { padding: 0; }

.tgp-co-v2__coupon-toggle {
  width: 100%;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) 16px;
  gap: 12px;
  align-items: center;
  padding: 14px 18px;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
  font-family: 'Inter', sans-serif;
  color: var(--co-text);
  margin: 0;
  border-radius: var(--co-radius);
  transition: background 140ms ease;
}

.tgp-co-v2__coupon-toggle:hover { background: rgba(255, 255, 255, 0.02); }

.tgp-co-v2__coupon-toggle-icon {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: var(--co-accent-soft);
  border: 1px solid var(--co-border-strong);
  color: var(--co-text-2);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.tgp-co-v2__coupon-toggle-text {
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--co-text);
}

.tgp-co-v2__coupon-toggle-chev {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--co-text-3);
  transition: transform 200ms ease;
}

.tgp-co-v2__coupon-toggle[aria-expanded="true"] .tgp-co-v2__coupon-toggle-chev { transform: rotate(180deg); }

.tgp-co-v2__coupon-body[hidden] { display: none !important; }
.tgp-co-v2__coupon-body {
  padding: 0 18px 16px;
  border-top: 1px solid var(--co-border);
  margin-top: 0;
}

.tgp-co-v2__coupon-form {
  margin-top: 14px;
  display: flex;
  gap: 8px;
  align-items: stretch;
}

.tgp-co-v2__coupon-form input {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  background: var(--co-surface-2);
  border: 1px solid var(--co-border-strong);
  border-radius: var(--co-radius-sm);
  padding: 10px 14px;
  color: var(--co-text);
  font-family: 'Inter', sans-serif;
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  outline: none;
  transition: border-color 140ms ease, background 140ms ease;
}

.tgp-co-v2__coupon-form input:focus {
  border-color: rgba(255, 255, 255, 0.40);
  background: var(--co-surface-3);
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.06);
}

.tgp-co-v2__coupon-form input::placeholder {
  color: var(--co-text-4);
  text-transform: none;
  letter-spacing: 0;
  font-weight: 500;
}

.tgp-co-v2__coupon-apply {
  flex-shrink: 0;
  padding: 0 18px;
  background: var(--co-text);
  color: #0a0a0a;
  border: 0;
  border-radius: var(--co-radius-sm);
  font-family: 'Inter', sans-serif;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: opacity 140ms ease, transform 140ms ease;
  white-space: nowrap;
}

.tgp-co-v2__coupon-apply:hover { opacity: 0.88; }
.tgp-co-v2__coupon-apply:disabled { opacity: 0.5; cursor: wait; transform: none; }

.tgp-co-v2__coupon-msg {
  margin: 10px 0 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--co-text-3);
}
.tgp-co-v2__coupon-msg.is-success { color: var(--co-success); }
.tgp-co-v2__coupon-msg.is-error { color: var(--co-error); }

.tgp-co-v2 form.checkout_coupon,
.tgp-co-v2 .woocommerce-form-coupon-toggle,
.tgp-co-v2 .woocommerce-info .showcoupon,
.tgp-co-v2 .checkout_coupon_toggle { display: none !important; }

/* ─── PAYMENT ─────────────────────────────────────────────────── */
.tgp-co-v2__payment-body { padding: 18px 20px 22px; }

/* Payment card — modest bottom air (wallet stack no longer needs 120px reserve). */
.tgp-co-v2__card--payment .tgp-co-v2__card-body.tgp-co-v2__payment-body {
  padding-top: 8px !important;
  padding-bottom: 28px !important;
}

/* Plugin hooks occasionally print empty spacer nodes above #order_review. */
.tgp-co-v2__payment-body > *:empty:not(#order_review) {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  max-height: 0 !important;
  overflow: hidden !important;
  border: 0 !important;
}

.tgp-co-v2 .tgp-co-v2__card--payment #payment {
  padding-bottom: 12px !important;
}

/* ── FREE ORDER NOTICE (when WC's needs_payment() returns false,
 *    e.g. all-coins redemption, 100% coupons). WC's payment.php
 *    template skips `<ul class="payment_methods">` when the cart
 *    total is 0. Without the notice the section reads as broken
 *    ("payment methods don't appear"). The CSS-only solution uses
 *    `:has()` so the message appears and disappears as the user
 *    adjusts coupons / coins, with no JS required.
 *
 *    Browser support note: :has() is supported in all evergreen
 *    desktop browsers as of 2026. The notice is purely a UX nicety;
 *    the place-order button still works without it. */
@supports selector(:has(*)) {
  /* Free-order success notice — replaces the empty payment list. */
  .tgp-co-v2__payment-body:not(:has(ul.payment_methods))::before,
  .tgp-co-v2__payment-body:has(ul.payment_methods:empty)::before {
    content: "✓  Your Ghost Coins cover the total — no payment needed. Click PLACE ORDER below to confirm." !important;
    display: block !important;
    padding: 16px 18px !important;
    margin: 0 0 14px !important;
    background:
      linear-gradient(180deg, rgba(16, 185, 129, 0.16), rgba(16, 185, 129, 0.06)) !important;
    border: 1px solid rgba(16, 185, 129, 0.36) !important;
    border-radius: 12px !important;
    color: #d1fae5 !important;
    font-family: 'Inter', sans-serif !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    line-height: 1.45 !important;
    letter-spacing: -0.005em !important;
  }

  /* Place Order button goes EMERALD when the order is free. Visual
   * continuity with the green notice + clear "this is the action"
   * affordance.                                                    */
  .tgp-co-v2__payment-body:not(:has(ul.payment_methods)) #place_order,
  .tgp-co-v2__payment-body:has(ul.payment_methods:empty) #place_order,
  .tgp-co-v2__card--payment:not(:has(ul.payment_methods)) #place_order,
  .tgp-co-v2__card--payment:has(ul.payment_methods:empty) #place_order {
    background: linear-gradient(180deg, #10b981 0%, #059669 100%) !important;
    background-color: #10b981 !important;
    color: #ffffff !important;
    border: 0 !important;
    box-shadow: 0 8px 24px rgba(16, 185, 129, 0.25) !important;
    text-shadow: none !important;
    font-weight: 800 !important;
  }
  .tgp-co-v2__payment-body:not(:has(ul.payment_methods)) #place_order:hover,
  .tgp-co-v2__payment-body:has(ul.payment_methods:empty) #place_order:hover {
    background: linear-gradient(180deg, #059669 0%, #047857 100%) !important;
    background-color: #059669 !important;
    color: #ffffff !important;
    opacity: 1 !important;
    transform: translateY(-1px) !important;
  }
}

.tgp-co-v2 #payment {
  background: transparent !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

.tgp-co-v2 #payment ul.payment_methods,
.tgp-co-v2 .wc_payment_methods,
.tgp-co-v2 .payment_methods {
  list-style: none !important;
  margin: 0 0 8px !important;
  padding: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  border-bottom: 0 !important;
}

.tgp-co-v2 #payment ul.payment_methods > li {
  margin: 0 !important;
  padding: 0 !important;
  background: var(--co-surface-2) !important;
  border: 1px solid var(--co-border-strong) !important;
  border-radius: var(--co-radius-sm) !important;
  list-style: none !important;
  /* v3.7.15: MUST be visible — overflow:hidden clips PayPal Advanced Card /
   * Google Pay iframes and makes fields untypeable / white dead zones. */
  overflow: visible !important;
  transition: border-color 140ms ease, background 140ms ease;
}

.tgp-co-v2 #payment ul.payment_methods > li:hover {
  border-color: rgba(0, 0, 0, 0.14) !important;
}

.tgp-co-v2 #payment ul.payment_methods > li.tgp-pm-selected,
.tgp-co-v2 #payment ul.payment_methods > li:has(input.input-radio:checked),
.tgp-co-v2 #payment ul.payment_methods > li:has(input[type="radio"]:checked) {
  border-color: rgba(0, 0, 0, 0.32) !important;
  background: var(--co-surface-3) !important;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;
}

.tgp-co-v2 #payment ul.payment_methods > li > input[type="radio"],
.tgp-co-v2 #payment ul.payment_methods > li > input.input-radio {
  position: absolute !important;
  opacity: 0 !important;
  pointer-events: none !important;
  width: 1px !important;
  height: 1px !important;
}

.tgp-co-v2 #payment ul.payment_methods > li > label,
.tgp-co-v2 #payment ul.payment_methods > li > label.payment_method {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 14px 16px !important;
  margin: 0 !important;
  cursor: pointer !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13.5px !important;
  font-weight: 600 !important;
  color: var(--co-text) !important;
  letter-spacing: -0.005em !important;
  position: relative !important;
}

.tgp-co-v2 #payment ul.payment_methods > li > label::before {
  content: "" !important;
  width: 18px !important;
  height: 18px !important;
  border-radius: 999px !important;
  border: 2px solid rgba(0, 0, 0, 0.22) !important;
  background: transparent !important;
  flex-shrink: 0 !important;
  transition: border-color 140ms ease, background 140ms ease;
  display: inline-block !important;
}

.tgp-co-v2 #payment ul.payment_methods > li.tgp-pm-selected > label::before,
.tgp-co-v2 #payment ul.payment_methods > li:has(input.input-radio:checked) > label::before,
.tgp-co-v2 #payment ul.payment_methods > li:has(input[type="radio"]:checked) > label::before {
  border-color: var(--co-text) !important;
  background:
    radial-gradient(circle, var(--co-text) 38%, transparent 42%) !important;
}

.tgp-co-v2 #payment ul.payment_methods > li > label img,
.tgp-co-v2 #payment ul.payment_methods > li > label .wc-payment-method-image {
  max-height: 22px !important;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  vertical-align: middle !important;
  display: inline-block !important;
  background: #fff !important;
  border-radius: 4px !important;
  padding: 2px 4px !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.20) !important;
}

.tgp-co-v2 #payment ul.payment_methods > li .payment_box {
  margin: 0 !important;
  padding: 14px 16px 16px !important;
  background: var(--co-surface-2) !important;
  border-top: 1px solid var(--co-border) !important;
  border-radius: 0 !important;
  font-size: 12.5px !important;
  color: var(--co-text-2) !important;
  line-height: 1.55 !important;
}
.tgp-co-v2 #payment ul.payment_methods > li .payment_box::before { display: none !important; }
.tgp-co-v2 #payment ul.payment_methods > li .payment_box p { margin: 0 0 8px !important; }
.tgp-co-v2 #payment ul.payment_methods > li .payment_box p:last-child { margin-bottom: 0 !important; }
.tgp-co-v2 #payment ul.payment_methods > li .payment_box a { color: var(--co-text) !important; text-decoration: underline !important; text-underline-offset: 2px !important; }

/* Gateway native inputs: dark fields + light text. */
.tgp-co-v2 #payment .payment_box label,
.tgp-co-v2 #payment #stripe-payment-data label {
  color: var(--co-text-3) !important;
}

.tgp-co-v2 #payment .payment_box input.input-text,
.tgp-co-v2 #payment .payment_box input[type="text"],
.tgp-co-v2 #payment .payment_box input[type="email"],
.tgp-co-v2 #payment .payment_box input[type="tel"],
.tgp-co-v2 #payment .payment_box input[type="url"],
.tgp-co-v2 #payment .payment_box input[type="password"],
.tgp-co-v2 #payment .payment_box input[type="number"],
.tgp-co-v2 #payment .payment_box select,
.tgp-co-v2 #payment .payment_box textarea {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  background: var(--co-surface-2) !important;
  background-color: var(--co-surface-2) !important;
  color: var(--co-text) !important;
  -webkit-text-fill-color: var(--co-text) !important;
  caret-color: var(--co-text) !important;
  border: 1px solid var(--co-border-strong) !important;
  border-radius: var(--co-radius-sm) !important;
  padding: 10px 14px !important;
  min-height: 40px !important;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
  font-size: 13.5px !important;
  font-weight: 500 !important;
  outline: none !important;
  box-shadow: none !important;
}

.tgp-co-v2 #payment .payment_box input:focus,
.tgp-co-v2 #payment .payment_box select:focus,
.tgp-co-v2 #payment .payment_box textarea:focus {
  border-color: rgba(255, 255, 255, 0.40) !important;
  background: var(--co-surface-3) !important;
  background-color: var(--co-surface-3) !important;
  color: var(--co-text) !important;
  -webkit-text-fill-color: var(--co-text) !important;
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.06) !important;
}

.tgp-co-v2 #payment .payment_box input::placeholder,
.tgp-co-v2 #payment .payment_box textarea::placeholder {
  color: var(--co-text-4) !important;
  opacity: 1 !important;
}

.tgp-co-v2 #payment .payment_box input:-webkit-autofill,
.tgp-co-v2 #payment .payment_box input:-webkit-autofill:hover,
.tgp-co-v2 #payment .payment_box input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--co-text) !important;
  caret-color: var(--co-text) !important;
  box-shadow: 0 0 0 1000px var(--co-surface-2) inset !important;
}

/* v3.7.20: Do NOT style .StripeElement — breaks Stripe UPE + PRB / wallets. */

/* ── EXPRESS / SMART PAYMENT BUTTONS — overflow-safe clamps ─────
 *
 * PayPal / Apple Pay / Google Pay inject buttons (often in iframes)
 * that can exceed the payment column width. v3.3: clamp with
 * width/max-width 100% on known wrappers. v3.7.16: do NOT clip the
 * payment column horizontally — that hid Stripe Payment Request + wallets. */

/* v3.5: Payment area — let gateways grow; v3.7.16: overflow visible so
 * Stripe PRB / PayPal wallets are not clipped. */
.tgp-co-v2 aside.tgp-co-v2__summary,
.tgp-co-v2 .tgp-co-v2__summary-sticky,
.tgp-co-v2 .tgp-co-v2__payment-body,
.tgp-co-v2 .tgp-co-v2__payment-wrap,
.tgp-co-v2 #order_review {
  overflow-x: visible !important;
  overflow-y: visible !important;
  max-width: 100% !important;
  max-height: none !important;
  height: auto !important;
}

@supports selector(:has(*)) {
  body.woocommerce-checkout main .elementor-column:has(.tgp-co-v2),
  body.woocommerce-checkout main .elementor-widget-container:has(.tgp-co-v2),
  body.woocommerce-checkout main .elementor-widget:has(.tgp-co-v2),
  body.woocommerce-checkout main .e-con-inner:has(.tgp-co-v2),
  body.woocommerce-checkout main .e-con:has(.tgp-co-v2):not([data-elementor-type="header"]):not([data-elementor-type="footer"]) {
    overflow: visible !important;
    max-height: none !important;
  }
}
/* v3.7.15: #payment must not clip wallet/card iframes (horizontal clip
 * caused untypeable PayPal Advanced + mis-placed GPay). */
.tgp-co-v2 #payment {
  overflow: visible !important;
  max-width: 100% !important;
  max-height: none !important;
  height: auto !important;
}

/* iframes inside payment — only cap width; gateway controls height. */
.tgp-co-v2 #payment iframe,
.tgp-co-v2 .payment_box iframe {
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* Smart-button wrappers — PayPal / Google Pay / Apple Pay ONLY.
 * v3.7.15: do NOT include #stripe-payment-data or generic payment-request —
 * forcing display/min-height on Stripe breaks card fields and relocates
 * wallets visually into the wrong gateway.
 * v3.7.82: removed min-height + vertical margin — they clipped / spaced wallet
 * stacks vs what PayPal/Stripe SDKs expect (matches default WC behaviour). */
.tgp-co-v2 .ppplus-container,
.tgp-co-v2 [id^="paypal-button-"],
.tgp-co-v2 [class*="paypal-checkout-button"],
.tgp-co-v2 .smart-payment-buttons {
  max-width: 100% !important;
  width: 100% !important;
  min-width: 0 !important;
  height: auto !important;
  max-height: none !important;
  display: block !important;
  box-sizing: border-box !important;
}
/* v3.7.81: Do NOT use min-height:0 on `.paypal-buttons`. Our `.place-order` is a flex
 * column; min-height:0 lets this item shrink below its stacked iframe content and clips
 * the second funding button (Google Pay / Apple Pay). Default WC checkout has no such rule. */
.tgp-co-v2 #payment .paypal-buttons,
.tgp-co-v2 .paypal-buttons {
  flex-shrink: 0 !important;
  min-height: min-content !important;
}

/* v3.7.16: removed [id*="gpay"] / aggressive iframe min-heights — they hit
 * Stripe internals and broke the card + Stripe Payment Request (Google Pay). */

/* Stripe Payment Request (Google Pay / Apple Pay) — layout-neutral width only. */
.tgp-co-v2 #payment .wc-stripe-payment-request-wrapper {
  max-width: 100% !important;
  width: 100% !important;
  box-sizing: border-box !important;
  clear: both !important;
}

/* PayPal smart button — tight stack with terms + GPay (full rules in end block). */
.tgp-co-v2 #payment .paypal-buttons {
  margin: 0 0 6px !important;
}

/* v3.7.14: do NOT put overflow:hidden or background:transparent on
 * `.payment_box` globally — it clips PayPal hosted card fields and makes
 * them look "white / untypeable". Styling stays on the WC selector block
 * above only. */

/* v3.7.11: DO NOT hide PPCP express rows/buttons here.
 * Old rules (`.place-order ~ *` and `.ppcp-button-*`) caused PayPal /
 * GooglePay to disappear entirely after payment-method selection.
 * Visibility is now controlled ONLY by gateway eligibility + SDK.
 * We only collapse truly-empty placeholders elsewhere. */

/* PLACE ORDER — white pill, black text (Apple Pay style).
 * Flex + `order`: wallets BEFORE terms (fixes dead gap WITHOUT moving DOM nodes).
 * v3.7.83: tight vertical rhythm — no huge bottom pad / top margin around wallet stack. */
.tgp-co-v2 #payment .place-order {
  padding: 0 0 12px !important;
  margin: 0 !important;
  overflow: visible !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 4px !important;
}
/* Wallet rows must never flex-shrink (pairs with v3.7.81 `.paypal-buttons` min-height). */
.tgp-co-v2 #payment .place-order > .paypal-buttons,
.tgp-co-v2 #payment .place-order > .wc-stripe-payment-request-wrapper,
.tgp-co-v2 #payment .place-order > .smart-payment-buttons {
  flex-shrink: 0 !important;
}
.tgp-co-v2 #payment .place-order > * {
  order: 99 !important;
}
.tgp-co-v2 #payment .place-order > noscript {
  order: 0 !important;
}
.tgp-co-v2 #payment .place-order > .paypal-buttons,
.tgp-co-v2 #payment .place-order > .wc-stripe-payment-request-wrapper,
.tgp-co-v2 #payment .place-order > .smart-payment-buttons {
  order: 2 !important;
  margin-top: 0 !important;
}
/* Stripe/PayPal often wrap the widget in an extra DIV — pull that up with wallets. */
@supports selector(:has(*)) {
  .tgp-co-v2 #payment .place-order > div:has(.wc-stripe-payment-request-wrapper, .paypal-buttons, .smart-payment-buttons) {
    order: 2 !important;
    margin-top: 0 !important;
    flex-shrink: 0 !important;
    min-height: min-content !important;
  }
}
.tgp-co-v2 #payment .place-order > .woocommerce-terms-and-conditions-wrapper {
  order: 4 !important;
}
.tgp-co-v2 #payment .place-order > #place_order,
.tgp-co-v2 #payment .place-order > button#place_order,
.tgp-co-v2 #payment .place-order > input#place_order {
  order: 6 !important;
}

/* Stripe PRB in .place-order — compact vertical rhythm */
.tgp-co-v2 #payment .place-order .wc-stripe-payment-request-wrapper {
  margin: 0 0 4px !important;
}

.tgp-co-v2 #place_order,
.tgp-co-v2 button#place_order,
.tgp-co-v2 input#place_order,
.tgp-co-v2 .place-order .button,
.tgp-co-v2 .place-order button[type="submit"] {
  width: 100% !important;
  padding: 14px 22px !important;
  background: var(--co-text) !important;
  color: #0a0a0a !important;
  border: 0 !important;
  border-radius: var(--co-radius-sm) !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 14.5px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  cursor: pointer !important;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.04), 0 8px 16px rgba(0, 0, 0, 0.40) !important;
  transition: opacity 140ms ease !important;
  text-transform: none !important;
  height: auto !important;
  min-height: 50px !important;
}

.tgp-co-v2 #place_order:hover { opacity: 0.92 !important; }
.tgp-co-v2 #place_order:disabled { opacity: 0.55; cursor: wait; }

.tgp-co-v2 .woocommerce-terms-and-conditions-wrapper {
  margin: 0 !important;
  padding: 6px 9px !important;
  background: rgba(255, 255, 255, 0.02) !important;
  border: 1px solid var(--co-border) !important;
  border-radius: var(--co-radius-sm) !important;
}
/* v3.7.40: no extra gap under terms before express buttons (.place-order). */
.tgp-co-v2 #payment .place-order .woocommerce-terms-and-conditions-wrapper {
  margin-bottom: 0 !important;
}
.tgp-co-v2 #payment .place-order .woocommerce-terms-and-conditions-wrapper .form-row:last-child {
  margin-bottom: 0 !important;
}
.tgp-co-v2 .woocommerce-terms-and-conditions-wrapper p { margin: 0 0 3px !important; font-size: 10.5px !important; color: var(--co-text-3) !important; line-height: 1.28 !important; }
.tgp-co-v2 .woocommerce-terms-and-conditions-wrapper a { color: var(--co-text) !important; text-decoration: underline !important; }

.tgp-co-v2 .woocommerce-form__label-for-checkbox {
  display: flex !important; align-items: flex-start !important; gap: 6px !important;
  font-size: 10.5px !important;
  color: var(--co-text-2) !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  font-weight: 400 !important;
  cursor: pointer !important;
  line-height: 1.5 !important;
}
.tgp-co-v2 .woocommerce-form__input-checkbox { margin: 2px 0 0 !important; accent-color: var(--co-text) !important; flex-shrink: 0 !important; }

/* ─── SONAAR REVIEW LICENSES — defensive hide ──────────────────
 * Sonaar Music Pro renders <div class="woocommerce-checkout-review-order
 * e-checkout__order_review"><h3>Review Licenses</h3>...</div> on
 * `woocommerce_review_order_before_payment`. The PHP `remove_action`
 * in functions.php (init priority 99) is the primary kill — these CSS
 * rules are belt-and-braces for the case where the theme isn't deployed.
 *
 * Important: `.woocommerce-checkout-review-order` is ALSO our own
 * summary wrapper, so we cannot hide the bare class. We anchor on the
 * Elementor-style `.e-checkout__order_review` class which Sonaar adds
 * uniquely to its panel. To be extra safe we also hide any element
 * inside the payment area whose first child <h3> says "Review
 * Licenses" via the `:has()` selector (Chrome/Safari/FF 121+). */
.tgp-co-v2 .e-checkout__order_review,
.tgp-co-v2-form .e-checkout__order_review,
.tgp-co-v2__payment-body .e-checkout__order_review,
#payment .e-checkout__order_review,
body.woocommerce-checkout .e-checkout__order_review {
  display: none !important;
}

/* Modern :has() fallback — matches any review-order block whose direct
 * <h3> contains "Review Licenses". Hidden behind @supports so older
 * browsers ignore it. */
@supports selector(:has(*)) {
  /* Never target our payment column #order_review (class includes
   * .tgp-co-v2__payment-wrap) — hiding it nukes #payment and all wallets. */
  body.woocommerce-checkout .woocommerce-checkout-review-order:not(.tgp-co-v2__payment-wrap):has(> h3) {
    display: none !important;
  }
  /* But keep showing OUR own summary which uses the same outer class —
   * we tag ours with `.tgp-co-v2__totals` so this re-show wins. */
  body.woocommerce-checkout .tgp-co-v2__totals.woocommerce-checkout-review-order {
    display: block !important;
  }
}

/* ─── RIGHT SUMMARY ──────────────────────────────────────────── */
/* v3.3: the right column now stacks several distinct sections (Ghost
 * Coins · Order Summary · Coupon · Payment · Trust). The wrapper
 * `.tgp-co-v2__summary-sticky` is therefore a transparent FLEX
 * container — each block (`.tgp-co-v2__summary-card`,
 * `.tgp-co-v2__sidecard`, `.tgp-co-v2__card`) brings its own
 * border/background. Position is no longer `sticky` because the
 * column's content is now taller than the viewport on desktop. */
.tgp-co-v2__summary { min-width: 0; }

.tgp-co-v2__summary-sticky {
  position: static;
  top: auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
}

/* Inner ORDER SUMMARY card — visually the "summary" block itself
 * (items + totals). This is the new wrapper that was previously
 * baked into `.tgp-co-v2__summary-sticky`. */
.tgp-co-v2__summary-card {
  background: var(--co-surface);
  border: 1px solid var(--co-border);
  border-radius: var(--co-radius);
  padding: 16px 18px;
  box-shadow: var(--co-shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Ghost-Coins slot: no PHP output for guests / missing plugin → `:empty`
 * hides the wrapper; logged-in users get `.tgp-ghc-card-v2` inside. */
.tgp-co-v2__sidecard-slot--ghc:empty { display: none !important; }
.tgp-co-v2__sidecard-slot--ghc { margin: 0; }

.tgp-co-v2__summary-hd {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  margin: 0;
  padding: 0 0 4px;
}

.tgp-co-v2__summary-hd h2 {
  margin: 0;
  font-size: 14px;
  font-weight: 700;
  color: var(--co-text);
  letter-spacing: -0.015em;
  font-family: 'Inter', sans-serif;
}

.tgp-co-v2__summary-count {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--co-text-3);
}

.tgp-co-v2__items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  /*
   * v3.8.5: Do NOT trap line items in max-height + overflow:auto — that nested
   * scroll region steals wheel / trackpad deltas first → “double scroll” on desktop.
   * Let the order summary grow; the page is the only vertical scroller.
   */
  max-height: none;
  overflow: visible;
}

.tgp-co-v2__item {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tgp-co-v2__item-thumb {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  border-radius: 6px;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--co-border);
}
.tgp-co-v2__item-thumb img,
.tgp-co-v2__item-thumb .tgp-co-v2__item-img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  margin: 0 !important;
  border-radius: 0 !important;
}

.tgp-co-v2__item-info { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.tgp-co-v2__item-name {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--co-text);
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tgp-co-v2__item-by { font-size: 11px; color: var(--co-text-3); }
.tgp-co-v2__item-price { font-size: 12.5px; font-weight: 700; color: var(--co-text); white-space: nowrap; font-variant-numeric: tabular-nums; }
.tgp-co-v2__item-price bdi,
.tgp-co-v2__item-price .amount { color: inherit !important; font-weight: inherit !important; }

/* Totals */
.tgp-co-v2__totals {
  margin: 0;
  padding: 14px 0 0;
  border-top: 1px solid var(--co-border);
}

.tgp-co-v2__totals table.shop_table {
  width: 100% !important;
  border: 0 !important;
  border-collapse: collapse !important;
  background: transparent !important;
  margin: 0 !important;
}

.tgp-co-v2__totals table.shop_table thead,
.tgp-co-v2__totals table.shop_table tbody,
.tgp-co-v2__totals table.shop_table .cart_item,
.tgp-co-v2__totals table.shop_table .product-name,
.tgp-co-v2__totals table.shop_table .product-total { display: none !important; }

.tgp-co-v2__totals table.shop_table tfoot { display: table-row-group !important; }
.tgp-co-v2__totals table.shop_table tfoot tr { display: table-row !important; }

.tgp-co-v2__totals table.shop_table tfoot th,
.tgp-co-v2__totals table.shop_table tfoot td {
  padding: 6px 0 !important;
  border: 0 !important;
  background: transparent !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
  color: var(--co-text-2) !important;
  text-align: left !important;
}
.tgp-co-v2__totals table.shop_table tfoot td {
  text-align: right !important;
  color: var(--co-text) !important;
  font-weight: 600 !important;
  font-variant-numeric: tabular-nums !important;
}

.tgp-co-v2__totals table.shop_table tfoot tr.order-total th,
.tgp-co-v2__totals table.shop_table tfoot tr.order-total td {
  font-size: 17px !important;
  font-weight: 800 !important;
  color: var(--co-text) !important;
  padding-top: 14px !important;
  letter-spacing: -0.02em !important;
}

.tgp-co-v2__totals table.shop_table tfoot tr.order-total {
  border-top: 1px solid var(--co-border-strong) !important;
}

.tgp-co-v2__totals .woocommerce-Price-amount,
.tgp-co-v2__totals .amount { color: inherit !important; font-weight: inherit !important; }

.tgp-co-v2__totals tr.cart-discount th,
.tgp-co-v2__totals tr.cart-discount td { color: var(--co-success) !important; font-weight: 600 !important; }
.tgp-co-v2__totals tr.cart-discount .woocommerce-remove-coupon {
  color: var(--co-text-3) !important;
  margin-left: 6px !important;
  text-decoration: none !important;
  font-size: 11px !important;
}

/* v3.3: trust badges now sit standalone in the right column (no
 * longer the bottom of the summary card). Keep them visually quiet
 * so they don't compete with Payment above. */
.tgp-co-v2__trust {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0;
  padding: 6px 6px 0;
  border-top: 0;
}

.tgp-co-v2__trust-item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 10.5px;
  font-weight: 600;
  color: var(--co-text-3);
  letter-spacing: 0;
}

.tgp-co-v2__trust-item svg { color: var(--co-text-4); flex-shrink: 0; }

/* ─── SIDE-CARDS (right column extras) ───────────────────────────
 * The Coupon and Ghost Coins blocks now live in the summary aside,
 * directly below the totals. They are styled as flat side-cards
 * (slimmer than the main left-column cards) so the column doesn't
 * feel cramped. */
.tgp-co-v2__sidecard,
.tgp-co-v2__sidecard-slot {
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

/* v3.8.19 — Coupon card: subtle emerald frame so “discount code” reads as its own affordance */
.tgp-co-v2__sidecard--coupon {
  border: 1px solid rgba(16, 185, 129, 0.38) !important;
  border-radius: var(--co-radius-sm) !important;
  background:
    linear-gradient(152deg, rgba(16, 185, 129, 0.09) 0%, transparent 46%),
    radial-gradient(ellipse 125% 95% at 100% -5%, rgba(16, 185, 129, 0.065), transparent 52%),
    rgba(255, 255, 255, 0.038) !important;
  box-shadow:
    inset 3px 0 0 0 rgba(16, 185, 129, 0.82),
    0 1px 0 rgba(16, 185, 129, 0.14),
    0 10px 34px rgba(0, 0, 0, 0.34) !important;
  /* v3.7.41: visible so WC AJAX coupon notices wrap instead of clipping. */
  overflow: visible !important;
  min-width: 0 !important;
}

/* Level-reward coupon hint (checkout + cart) — centered in coupon card / strip */
.tgp-co-v2__reward-coupon-banner,
.tgp-cart-v3__reward-coupon-banner {
  box-sizing: border-box !important;
  width: 100% !important;
  margin: 0 0 12px !important;
  padding: 12px 12px 14px !important;
  text-align: center !important;
  border-radius: var(--co-radius-sm) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  background: rgba(255, 255, 255, 0.03) !important;
  position: relative !important;
}

.tgp-co-v2__reward-coupon-line,
.tgp-cart-v3__reward-coupon-line {
  margin: 0 0 4px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  line-height: 1.45 !important;
  color: var(--co-text) !important;
}

.tgp-co-v2__reward-coupon-sub,
.tgp-cart-v3__reward-coupon-sub {
  margin: 0 0 12px !important;
  font-size: 11.5px !important;
  line-height: 1.4 !important;
  color: var(--co-text-3) !important;
}

.tgp-co-v2__level-coupon-btn,
.tgp-cart-v3__level-coupon-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  margin: 0 auto !important;
  min-height: 40px !important;
  padding: 0 18px !important;
  position: relative !important;
}

.tgp-co-v2__reward-coupon-banner.is-loading,
.tgp-cart-v3__reward-coupon-banner.is-loading {
  opacity: 0.78 !important;
  pointer-events: none !important;
}

@keyframes tgp-coupon-spin {
  to { transform: rotate(360deg); }
}

.tgp-co-v2__level-coupon-btn.is-loading::after,
.tgp-cart-v3__level-coupon-btn.is-loading::after,
.tgp-co-v2__coupon-apply.is-loading::after {
  content: "" !important;
  display: inline-block !important;
  width: 14px !important;
  height: 14px !important;
  border-radius: 50% !important;
  border: 2px solid rgba(255, 255, 255, 0.35) !important;
  border-top-color: rgba(255, 255, 255, 0.95) !important;
  animation: tgp-coupon-spin 0.65s linear infinite !important;
  flex-shrink: 0 !important;
}

/* WC `apply_coupon` HTML — sits above the toggle; must wrap in narrow aside. */
.tgp-co-v2__coupon-msg-wrap {
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 0 8px !important;
  padding: 0 !important;
}

.tgp-co-v2__coupon-msg-wrap .woocommerce-error,
.tgp-co-v2__coupon-msg-wrap .woocommerce-message {
  margin: 0 !important;
  padding: 0 !important;
  font-size: 12.5px !important;
  line-height: 1.45 !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  hyphens: auto !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  position: relative !important;
}

/* AJAX `apply_coupon` HTML: kill WC star/absolute ::before icons — they collide
 * with our border radius + narrow aside padding. Use border-accent cards instead. */
.tgp-co-v2__coupon-msg-wrap ul.woocommerce-error {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
  background: transparent !important;
  border: none !important;
}

.tgp-co-v2__coupon-msg-wrap ul.woocommerce-error::before,
.tgp-co-v2__coupon-msg-wrap ul.woocommerce-error > li::before,
.tgp-co-v2__coupon-msg-wrap ul.woocommerce-message::before,
.tgp-co-v2__coupon-msg-wrap ul.woocommerce-message > li::before,
.tgp-co-v2__coupon-msg-wrap .woocommerce-message::before {
  display: none !important;
  content: none !important;
}

/* Beat `.tgp-co-v2 .woocommerce-error li { padding: 0 }` for injected WC markup */
.tgp-co-v2 .tgp-co-v2__coupon-msg-wrap ul.woocommerce-error > li {
  margin: 0 !important;
  padding: 11px 13px !important;
  box-sizing: border-box !important;
  width: 100% !important;
  font-size: inherit !important;
  line-height: inherit !important;
  color: var(--co-text-2) !important;
  background: rgba(248, 113, 113, 0.08) !important;
  border: 1px solid rgba(248, 113, 113, 0.38) !important;
  border-radius: var(--co-radius-sm) !important;
  border-left-width: 4px !important;
  border-left-color: var(--co-error) !important;
}

.tgp-co-v2 .tgp-co-v2__coupon-msg-wrap ul.woocommerce-message {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
  background: transparent !important;
  border: none !important;
}

.tgp-co-v2 .tgp-co-v2__coupon-msg-wrap ul.woocommerce-message > li {
  margin: 0 !important;
  padding: 11px 13px !important;
  box-sizing: border-box !important;
  width: 100% !important;
  color: var(--co-success) !important;
  background: rgba(16, 185, 129, 0.09) !important;
  border: 1px solid rgba(16, 185, 129, 0.32) !important;
  border-radius: var(--co-radius-sm) !important;
  border-left-width: 4px !important;
  border-left-color: var(--co-success) !important;
}

.tgp-co-v2__coupon-msg-wrap .woocommerce-message:not(ul) {
  padding: 11px 13px !important;
  margin: 0 !important;
  color: var(--co-success) !important;
  background: rgba(16, 185, 129, 0.09) !important;
  border: 1px solid rgba(16, 185, 129, 0.32) !important;
  border-radius: var(--co-radius-sm) !important;
  border-left-width: 4px !important;
  border-left-color: var(--co-success) !important;
}

/* Coupon toggle inside the sidecard — smaller padding than main column. */
.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-toggle {
  width: 100% !important;
  display: grid !important;
  grid-template-columns: 22px minmax(0, 1fr) 14px !important;
  gap: 10px !important;
  align-items: center !important;
  padding: 11px 14px !important;
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  outline: 0 !important;
  cursor: pointer !important;
  text-align: left !important;
  font-family: 'Inter', sans-serif !important;
  color: var(--co-text) !important;
  margin: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  text-shadow: none !important;
  appearance: none !important;
  -webkit-appearance: none !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-toggle:hover {
  background: rgba(16, 185, 129, 0.075) !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-toggle-icon {
  width: 22px !important;
  height: 22px !important;
  border-radius: 6px !important;
  background: rgba(16, 185, 129, 0.13) !important;
  border: 1px solid rgba(16, 185, 129, 0.42) !important;
  color: rgba(209, 250, 229, 0.95) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-toggle-text {
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  color: var(--co-text) !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-toggle-chev {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: var(--co-text-3) !important;
  transition: transform 200ms ease !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-toggle[aria-expanded="true"] .tgp-co-v2__coupon-toggle-chev {
  transform: rotate(180deg) !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-body[hidden] { display: none !important; }
.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-body {
  padding: 0 14px 14px !important;
  border-top: 1px solid rgba(16, 185, 129, 0.22) !important;
  margin-top: 0 !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-form {
  margin-top: 12px !important;
  display: flex !important;
  gap: 6px !important;
  align-items: stretch !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-form input {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  width: 100% !important;
  background: var(--co-surface-2) !important;
  border: 1px solid var(--co-border-strong) !important;
  border-radius: 6px !important;
  padding: 7px 10px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: var(--co-text) !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  outline: none !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-form input:focus {
  border-color: var(--co-accent-border) !important;
  background: var(--co-surface-3) !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-apply {
  padding: 0 12px !important;
  background: var(--co-text) !important;
  background-image: none !important;
  color: #0a0a0a !important;
  border: 0 !important;
  outline: 0 !important;
  border-radius: 6px !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 11.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.02em !important;
  cursor: pointer !important;
  white-space: nowrap !important;
  text-shadow: none !important;
  box-shadow: none !important;
  appearance: none !important;
  -webkit-appearance: none !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-apply:hover {
  background: #ffffff !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-msg {
  margin: 8px 0 0 !important;
  font-size: 11.5px !important;
  line-height: 1.4 !important;
  color: var(--co-text-3) !important;
  min-height: 0 !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}

.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-msg.is-success { color: var(--co-success) !important; }
.tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-msg.is-error   { color: var(--co-error) !important; }

/* v3.7.41: narrow summary column — stack Apply under input so messages get full width. */
@media (max-width: 520px) {
  .tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-form,
  .tgp-co-v2__coupon-form {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 8px !important;
  }
  .tgp-co-v2__sidecard--coupon .tgp-co-v2__coupon-apply,
  .tgp-co-v2__coupon-apply {
    width: 100% !important;
    min-height: 44px !important;
    padding-top: 10px !important;
    padding-bottom: 10px !important;
  }
}

/* ─── GHOST COINS BANNER (right summary column) ──────────────── */
/* The reward-points plugin renders <div class="tgp-ghc-card-v2 …">…</div>
 * inside `.tgp-co-v2__sidecard-slot--ghc` via the
 * `tgp_co_v2_render_ghost_coins` action. v3 monochrome, compact. */
.tgp-ghc-card-v2,
.tgp-co-v2 .woocommerce-reward-points-text-checkout,
.tgp-co-v2__sidecard-slot--ghc .tgp-ghc-card-v2 {
  margin: 0 !important;
  padding: 14px 16px !important;
  background:
    radial-gradient(circle at 100% 0%, rgba(255, 255, 255, 0.045), transparent 65%),
    rgba(255, 255, 255, 0.025) !important;
  border: 1px solid var(--co-border-strong) !important;
  border-radius: var(--co-radius-sm) !important;
  color: var(--co-text-2) !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
  position: relative !important;
  overflow: hidden !important;
  float: none !important;
  width: auto !important;
}

/* v3.6: removed the left accent bar — card reads cleaner without it. */
.tgp-ghc-card-v2::before {
  content: none !important;
  display: none !important;
}

.tgp-ghc-card-v2__main {
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* v3.6: badge styles preserved for safety — but the markup no
 * longer outputs a `__badge` element on cart/checkout, so they
 * don't apply. They stay here in case a partial deploy is in
 * effect.                                                          */

/* Modern hexagon level badge — same SVG hexagon that the my-points
 * hub uses. The plugin's old PNG `<img>` is hidden; the level number
 * sits centered on top of the SVG via z-index. */
.tgp-ghc-card-v2__badge,
.tgp-ghc-card-v2__badge--icon {
  position: relative !important;
  width: 38px !important;
  height: 38px !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  flex-shrink: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: visible !important;
  padding: 0 !important;
  box-shadow: none !important;
}

.tgp-ghc-card-v2__badge .tgp-ghc-card-v2__badge-shape {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.40)) !important;
}

.tgp-ghc-card-v2__badge img {
  display: none !important;
}

.tgp-ghc-card-v2__badge-num {
  position: relative !important;
  z-index: 1 !important;
  font-size: 13px !important;
  font-weight: 800 !important;
  color: #fafafa !important;
  letter-spacing: -0.02em !important;
  font-variant-numeric: tabular-nums !important;
  line-height: 1 !important;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35) !important;
}

.tgp-ghc-card-v2__info {
  flex: 1 1 auto;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
}

.tgp-ghc-card-v2__balance-row {
  display: flex !important;
  align-items: baseline !important;
  gap: 6px !important;
  flex-wrap: wrap !important;
}

.tgp-ghc-card-v2__balance-num {
  font-size: 16px !important;
  font-weight: 800 !important;
  color: var(--co-text) !important;
  letter-spacing: -0.02em !important;
  font-variant-numeric: tabular-nums !important;
  line-height: 1 !important;
}

.tgp-ghc-card-v2__balance-meta {
  display: inline-flex !important;
  align-items: baseline !important;
  gap: 5px !important;
  font-size: 10.5px !important;
  color: var(--co-text-3) !important;
  font-weight: 600 !important;
}

.tgp-ghc-card-v2__balance-label {
  font-size: 9.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--co-text-3) !important;
}

.tgp-ghc-card-v2__balance-value {
  color: var(--co-text-2) !important;
  font-weight: 600 !important;
  font-size: 10.5px !important;
}

.tgp-ghc-card-v2__balance-sentence {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  display: inline-flex !important;
  flex-wrap: wrap !important;
  align-items: baseline !important;
  gap: 4px 6px !important;
}

/* Makes the numeric balance read as “what you have available”, not an abstract figure */
.tgp-ghc-card-v2__balance-sentence::before {
  content: "You have " !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  color: var(--co-text-2) !important;
  letter-spacing: 0 !important;
}

.tgp-ghc-card-v2__balance-tail {
  display: inline !important;
  font-size: 10.5px !important;
  color: var(--co-text-3) !important;
  font-weight: 600 !important;
}

.tgp-ghc-card-v2__balance-worth {
  color: var(--co-text-2) !important;
  font-weight: 600 !important;
  font-size: 10.5px !important;
}

.tgp-ghc-card-v2__earn-eur {
  font-weight: 600 !important;
  color: inherit !important;
  opacity: 0.92 !important;
}

.tgp-ghc-card-v2__earn-pill {
  margin-left: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  justify-content: flex-end !important;
  gap: 3px 6px !important;
  padding: 2px 8px !important;
  background: var(--co-success-soft) !important;
  border: 1px solid var(--co-success-border) !important;
  border-radius: 999px !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  color: var(--co-success) !important;
  font-variant-numeric: tabular-nums !important;
  white-space: normal !important;
  line-height: 1.28 !important;
  max-width: min(100%, 360px) !important;
  text-align: right !important;
}

.tgp-ghc-card-v2__progress {
  height: 3px !important;
  width: 100% !important;
  background: rgba(255, 255, 255, 0.06) !important;
  border-radius: 999px !important;
  overflow: hidden !important;
  margin: 2px 0 0 !important;
}

.tgp-ghc-card-v2__progress-fill {
  display: block !important;
  height: 100% !important;
  background: linear-gradient(90deg, var(--co-text) 0%, var(--co-text-2) 100%) !important;
  border-radius: 999px !important;
  transition: width 600ms cubic-bezier(0.4, 0, 0.2, 1) !important;
}

.tgp-ghc-card-v2__progress-meta {
  font-size: 10.5px !important;
  color: var(--co-text-3) !important;
  margin: 2px 0 0 !important;
  line-height: 1.4 !important;
}

.tgp-ghc-card-v2__progress-meta strong { color: var(--co-text) !important; font-weight: 700 !important; }
.tgp-ghc-card-v2__progress-meta span { color: var(--co-text-2) !important; font-weight: 600 !important; }
.tgp-ghc-card-v2__progress-meta--max { color: var(--co-success) !important; }
.tgp-ghc-card-v2__progress-meta--max svg { color: var(--co-success) !important; }

.tgp-ghc-card-v2__redeem {
  border-top: 1px solid var(--co-border) !important;
  padding-top: 8px !important;
  margin: 0 !important;
}

/* ── REDEMPTION FORM v2 — modern compact layout ─────────────────
 *
 * Markup (rendered by the rewards plugin's get_redemption_form()):
 *
 *   .tgp-ghc-redeem-v2  [data-tgp-ghc-redeem][data-max="N"]
 *     ├─ .woocommerce-reward-points-redemption-form-container
 *     │   ├─ .woocommerce-reward-points-redemption-text   (verbose,
 *     │   │      hidden — duplicates the balance-row above)
 *     │   ├─ .tgp-ghc-redeem-v2__row
 *     │   │   ├─ .tgp-ghc-redeem-v2__input-wrap
 *     │   │   │   ├─ .tgp-ghc-redeem-v2__input  (number)
 *     │   │   │   └─ .tgp-ghc-redeem-v2__max    (button)
 *     │   │   └─ .tgp-ghc-redeem-v2__btn        ("Redeem Now")
 *     │   ├─ .tgp-ghc-redeem-v2__hint           ("Min N · Max N")
 *     │   └─ .tgp-ghc-redeem-v2__remove         (hidden until applied)
 *     └─ .tgp-ghc-redeem-v2__success            (hidden until applied;
 *          plugin toggles `style="display: none"` — DO NOT use
 *          !important on `display` here or it'll always be visible.)
 */

.tgp-ghc-redeem-v2 {
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}

/* v3.5: HARD reset of the original plugin CSS (woocommerce-reward-
 * points-public.css line 255-261) which sets `float: right; width:
 * 30%` on form-container and success-container, AND
 * `float: left; width: 60%` on the earn container — that was the
 * cause of the broken cart layout where the success-container
 * floated alongside the form-container.                            */
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-container,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-success-container,
.tgp-ghc-card-v2 .woocommerce-reward-points-earning-text-container,
.tgp-ghc-card-v2 .woocommerce-reward-points-level-container,
.woocommerce-reward-points-text-cart .woocommerce-reward-points-redemption-form-container,
.woocommerce-reward-points-text-cart .woocommerce-reward-points-redemption-success-container,
.woocommerce-reward-points-text-checkout .woocommerce-reward-points-redemption-form-container,
.woocommerce-reward-points-text-checkout .woocommerce-reward-points-redemption-success-container {
  float: none !important;
  width: auto !important;
  max-width: 100% !important;
  text-align: left !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  display: block;
}

/* Verbose "You have X coins worth Y" preamble — the balance-row above
 * the redeem form already shows the same numbers more cleanly. */
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-text {
  display: none !important;
}

/* Tiny prompt above the redeem row. */
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-container::before {
  content: "Redeem coins" !important;
  display: block !important;
  font-size: 9.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: var(--co-text-3) !important;
  margin: 0 0 6px !important;
}

/* v3.6: SEGMENTED CONTROL — [ input | MAX | Redeem ] joined as a
 * single pill with thin internal dividers. NO gaps anywhere. The
 * outer `.tgp-ghc-redeem-v2__row` is the bordered shell; the three
 * children sit edge-to-edge.                                      */
.tgp-ghc-redeem-v2__row,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-inputs {
  display: flex !important;
  gap: 0 !important;
  align-items: stretch !important;
  flex-wrap: nowrap !important;
  margin: 0 !important;
  padding: 0 !important;
  background: var(--co-surface-3) !important;
  border: 1px solid var(--co-border-strong) !important;
  border-radius: 9px !important;
  overflow: hidden !important;
  height: 40px !important;
  width: 100% !important;
}
.tgp-ghc-redeem-v2__row:focus-within,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-inputs:focus-within {
  border-color: rgba(255, 255, 255, 0.45) !important;
}

/* Number input — flexes to fill, no border (the row provides one). */
.tgp-ghc-redeem-v2__input,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-points {
  flex: 1 1 0 !important;
  min-width: 0 !important;
  width: 100% !important;
  height: 100% !important;
  padding: 0 12px !important;
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  color: var(--co-text) !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  outline: none !important;
  box-shadow: none !important;
  -moz-appearance: textfield !important;
  -webkit-appearance: none !important;
  appearance: none !important;
  font-variant-numeric: tabular-nums !important;
  letter-spacing: 0 !important;
  text-align: left !important;
  margin: 0 !important;
}
.tgp-ghc-redeem-v2__input::-webkit-outer-spin-button,
.tgp-ghc-redeem-v2__input::-webkit-inner-spin-button,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-points::-webkit-outer-spin-button,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-points::-webkit-inner-spin-button {
  -webkit-appearance: none !important;
  appearance: none !important;
  margin: 0 !important;
}
.tgp-ghc-redeem-v2__input::placeholder,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-points::placeholder {
  color: var(--co-text-4) !important;
  font-weight: 500 !important;
  font-size: 12.5px !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

/* MAX button — middle segment. Thin vertical dividers via
 * border-left on both MAX and the Redeem CTA. */
.tgp-ghc-redeem-v2__max {
  flex: 0 0 auto !important;
  width: auto !important;
  height: 100% !important;
  padding: 0 14px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  background-image: none !important;
  border: 0 !important;
  border-left: 1px solid var(--co-border-strong) !important;
  border-radius: 0 !important;
  color: var(--co-text-2) !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 10.5px !important;
  font-weight: 800 !important;
  letter-spacing: 0.10em !important;
  cursor: pointer !important;
  white-space: nowrap !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  text-shadow: none !important;
  box-shadow: none !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  text-transform: uppercase !important;
  outline: none !important;
  margin: 0 !important;
}
.tgp-ghc-redeem-v2__max:hover {
  background: rgba(255, 255, 255, 0.10) !important;
  color: var(--co-text) !important;
}
.tgp-ghc-redeem-v2__max:active {
  background: rgba(255, 255, 255, 0.14) !important;
}

/* v3.6.2: Redeem button — right segment of the pill. Restyled
 * from the previous stark white-on-black to a subtle EMERALD
 * accent (savings / positive action) with bright text. The
 * button now reads as part of the segmented control rather than
 * an aggressive standalone CTA.                                  */
.tgp-ghc-redeem-v2__btn,
.tgp-ghc-card-v2 a.woocommerce-reward-points-redemption-form-button,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-button.btn,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-button.button,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-button {
  flex: 0 0 auto !important;
  height: 100% !important;
  padding: 0 16px !important;
  background:
    linear-gradient(180deg, rgba(16, 185, 129, 0.20) 0%, rgba(16, 185, 129, 0.10) 100%) !important;
  background-color: rgba(16, 185, 129, 0.16) !important;
  background-image: none !important;
  color: #6ee7b7 !important;
  border: 0 !important;
  border-left: 1px solid rgba(16, 185, 129, 0.30) !important;
  border-radius: 0 !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 12.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  cursor: pointer !important;
  white-space: nowrap !important;
  text-decoration: none !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  text-transform: none !important;
  text-shadow: none !important;
  box-shadow: none !important;
  width: auto !important;
  min-width: 0 !important;
  line-height: 1 !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  margin: 0 !important;
  transition: background-color 140ms ease, color 140ms ease, border-color 140ms ease;
}
.tgp-ghc-redeem-v2__btn::after,
.tgp-ghc-card-v2 a.woocommerce-reward-points-redemption-form-button::after,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-button::after {
  content: "\2192" !important; /* → arrow */
  display: inline-block !important;
  margin-left: 2px !important;
  font-weight: 600 !important;
  color: inherit !important;
  transform: translateY(-0.5px) !important;
}
.tgp-ghc-redeem-v2__btn:hover,
.tgp-ghc-card-v2 a.woocommerce-reward-points-redemption-form-button:hover,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-button:hover {
  background-color: rgba(16, 185, 129, 0.30) !important;
  color: #d1fae5 !important;
  border-left-color: rgba(16, 185, 129, 0.50) !important;
  text-decoration: none !important;
}
.tgp-ghc-redeem-v2__btn:active,
.tgp-ghc-card-v2 a.woocommerce-reward-points-redemption-form-button:active {
  background-color: rgba(16, 185, 129, 0.40) !important;
  color: #ecfdf5 !important;
}

/* Hint line ("Min · Max"). */
.tgp-ghc-redeem-v2__hint,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-text-below {
  display: block !important;
  font-size: 10.5px !important;
  color: var(--co-text-3) !important;
  margin: 6px 0 0 !important;
  line-height: 1.4 !important;
  font-weight: 500 !important;
}

/* Remove-link — visibility tied to the wrapper's `data-tgp-ghc-applied`
 * attribute (set by checkout-saas.js based on the success container's
 * actual visibility). Defaults to `display: none`. */
/* Remove-coins link — hidden by default, shown as a compact red pill
 * when data-tgp-ghc-applied="true". All sizing is explicit to prevent
 * any inheritance from the GHC card blowing it up.                  */
.tgp-ghc-redeem-v2__remove,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-text-remove-points {
  display: none !important;
  font-size: 12px !important;
  line-height: 1 !important;
  color: var(--co-text-3) !important;
  margin: 6px 0 0 !important;
  text-decoration: underline !important;
  text-underline-offset: 2px !important;
  align-items: center !important;
  gap: 4px !important;
  width: auto !important;
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  font-weight: 600 !important;
}

/* When applied — hide the input control, show remove button */
.tgp-ghc-redeem-v2[data-tgp-ghc-applied="true"] .tgp-ghc-redeem-v2__row,
.tgp-ghc-redeem-v2[data-tgp-ghc-applied="true"] .woocommerce-reward-points-redemption-form-inputs {
  display: none !important;
}

.tgp-ghc-redeem-v2[data-tgp-ghc-applied="true"] .tgp-ghc-redeem-v2__remove,
.tgp-ghc-redeem-v2[data-tgp-ghc-applied="true"] .woocommerce-reward-points-redemption-text-remove-points,
.tgp-ghc-card-v2 [data-tgp-ghc-applied="true"] .woocommerce-reward-points-redemption-text-remove-points {
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  padding: 5px 10px !important;
  background: rgba(248, 113, 113, 0.10) !important;
  border: 1px solid rgba(248, 113, 113, 0.28) !important;
  border-radius: 6px !important;
  color: #fca5a5 !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  line-height: 1 !important;
  text-decoration: none !important;
  cursor: pointer !important;
  margin-top: 6px !important;
  max-height: 28px !important;
  box-sizing: border-box !important;
  transition: background 120ms ease, border-color 120ms ease;
}
/* Icon span inside the link (explicit markup — no ::before tricks) */
.tgp-ghc-redeem-v2__remove .tgp-ghc-remove-icon,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-text-remove-points .tgp-ghc-remove-icon {
  font-size: 14px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  color: inherit !important;
  flex-shrink: 0 !important;
}
/* Label span */
.tgp-ghc-redeem-v2__remove .tgp-ghc-remove-label,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-text-remove-points .tgp-ghc-remove-label {
  font-size: 11.5px !important;
  font-weight: 600 !important;
  line-height: 1 !important;
  color: inherit !important;
}
/* Hide any native text nodes / i icons from old plugin markup */
.tgp-ghc-redeem-v2__remove i,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-text-remove-points i {
  display: none !important;
}
/* No ::before — the × is in the explicit <span class="tgp-ghc-remove-icon"> */
.tgp-ghc-redeem-v2__remove::before,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-text-remove-points::before {
  content: none !important;
  display: none !important;
}
.tgp-ghc-redeem-v2__remove:hover,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-text-remove-points:hover {
  background: rgba(248, 113, 113, 0.20) !important;
  border-color: rgba(248, 113, 113, 0.50) !important;
  color: #fca5a5 !important;
  text-decoration: none !important;
}

/* v3.6.7 SUCCESS STATE.
 * The success container is ALWAYS hidden. The remove button + the
 * "Ghost Coins −X.XX€" row that WC adds to the order totals are
 * sufficient to communicate that coins are applied. Showing the
 * success container was causing a large empty green box when the
 * plugin's AJAX replaced the GHC HTML with fresh markup (the text
 * span was empty, only the CSS ::before ✓ rendered, taking up full
 * card height). Hiding it entirely removes the regression.        */
.tgp-ghc-redeem-v2__success,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-success-container,
.woocommerce-reward-points-text-checkout .woocommerce-reward-points-redemption-success-container,
.woocommerce-reward-points-text-cart .woocommerce-reward-points-redemption-success-container,
/* Also hide when applied — prevents any accidental show via JS .show() */
.tgp-ghc-redeem-v2[data-tgp-ghc-applied="true"] .tgp-ghc-redeem-v2__success,
.tgp-ghc-redeem-v2[data-tgp-ghc-applied="true"] .woocommerce-reward-points-redemption-success-container,
.tgp-ghc-card-v2 [data-tgp-ghc-applied="true"] .woocommerce-reward-points-redemption-success-container {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* v3.5: "Change Redemption" link is REMOVED from the markup
 * (see class-woocommerce-reward-points-public.php → get_redemption_form())
 * — these defensive hides are belt-and-braces in case an older copy
 * of the plugin is still on disk. */
.tgp-ghc-redeem-v2__change,
.woocommerce-reward-points-redemption-form-trigger,
a.woocommerce-reward-points-redemption-form-trigger,
.tgp-ghc-card-v2 a.woocommerce-reward-points-redemption-form-trigger,
.tgp-ghc-card-v2 .woocommerce-reward-points-redemption-form-trigger {
  display: none !important;
  visibility: hidden !important;
  width: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
  font-size: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ─── WC NOTICES ─────────────────────────────────────────────── */
/* v3.8.20: Royal Elementor Addons uses flex row on ul.woocommerce-error → <li> tiles in one row (overlap).
 * Force vertical stack everywhere notices appear inside checkout chrome. */
.tgp-co-v2 .woocommerce-notices-wrapper,
.tgp-co-v2-form > .woocommerce-notices-wrapper {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 12px !important;
  margin: 0 0 14px !important;
  width: 100% !important;
  min-width: 0 !important;
}

.tgp-co-v2 .woocommerce-error,
.tgp-co-v2 .woocommerce-info,
.tgp-co-v2 .woocommerce-message {
  display: block !important;
  flex-direction: unset !important;
  flex-wrap: unset !important;
  align-items: stretch !important;
  justify-content: flex-start !important;
  width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  background: var(--co-surface) !important;
  border: 1px solid var(--co-border-strong) !important;
  border-left: 3px solid var(--co-text) !important;
  border-radius: var(--co-radius-sm) !important;
  padding: 12px 16px !important;
  margin: 0 !important;
  font-size: 12.5px !important;
  color: var(--co-text-2) !important;
  list-style: none !important;
  box-shadow: none !important;
}
.tgp-co-v2 .woocommerce-error { border-left-color: var(--co-error) !important; color: var(--co-error) !important; }
.tgp-co-v2 .woocommerce-message { border-left-color: var(--co-success) !important; color: var(--co-success) !important; }

.tgp-co-v2 .woocommerce-error li,
.tgp-co-v2 .woocommerce-info li,
.tgp-co-v2 .woocommerce-message li {
  display: block !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 6px 0 !important;
  list-style: none !important;
  box-sizing: border-box !important;
  float: none !important;
}
.tgp-co-v2 .woocommerce-error li:first-child,
.tgp-co-v2 .woocommerce-message li:first-child,
.tgp-co-v2 .woocommerce-info li:first-child { padding-top: 0 !important; }
.tgp-co-v2 .woocommerce-error li:last-child,
.tgp-co-v2 .woocommerce-message li:last-child,
.tgp-co-v2 .woocommerce-info li:last-child { padding-bottom: 0 !important; }
.tgp-co-v2 .woocommerce-error li + li,
.tgp-co-v2 .woocommerce-message li + li,
.tgp-co-v2 .woocommerce-info li + li {
  border-top: 1px solid rgba(248, 113, 113, 0.22) !important;
}
.tgp-co-v2 .woocommerce-message li + li,
.tgp-co-v2 .woocommerce-info li + li {
  border-top-color: rgba(255, 255, 255, 0.08) !important;
}

.tgp-co-v2 .woocommerce-error a,
.tgp-co-v2 .woocommerce-info a,
.tgp-co-v2 .woocommerce-message a { color: var(--co-text) !important; }

/* v3.8.22 — WC “notice functions” may emit div OR ul; ::before icon stays absolute → kills first glyph unless cleared */
.tgp-co-v2 .woocommerce-error::before,
.tgp-co-v2 .woocommerce-message::before,
.tgp-co-v2 .woocommerce-info::before,
.tgp-co-v2 ul.woocommerce-error > li::before,
.tgp-co-v2 ul.woocommerce-message > li::before,
.tgp-co-v2 ul.woocommerce-info > li::before {
  display: none !important;
  content: none !important;
  position: static !important;
  width: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: 0 !important;
  line-height: 0 !important;
}

.tgp-co-v2 .blockUI.blockOverlay {
  background: rgba(10, 10, 10, 0.65) !important;
  backdrop-filter: blur(2px) !important;
  border-radius: var(--co-radius) !important;
}

@media (max-width: 1200px) and (min-width: 1025px) {
  .tgp-co-v2-form--inner-grid.checkout,
  form.checkout.tgp-co-v2-form--inner-grid {
    grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
    gap: 16px;
  }
}

/* ─── RESPONSIVE ─────────────────────────────────────────────── */
@media (max-width: 1024px) {
  body.woocommerce-checkout #page {
    overflow-x: hidden !important;
  }

  .tgp-co-v2__grid {
    gap: 14px !important;
  }

  .tgp-co-v2-form--inner-grid.checkout,
  form.checkout.tgp-co-v2-form--inner-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 14px !important;
  }

  .tgp-co-v2__summary-sticky { position: static; top: auto; }

  /* Match desktop flow: Account + Billing first, then summary column */
  .tgp-co-v2__main { order: 1; min-width: 0; }
  .tgp-co-v2__summary { order: 2; min-width: 0; }
  #tgp-co-v2-summary-card { scroll-margin-top: 88px; }
}

@media (max-width: 720px) {
  .tgp-co-v2__fields {
    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
    gap: 12px !important;
  }
  /* Every form-row spans all 6 cols. */
  .tgp-co-v2 .form-row { grid-column: 1 / -1 !important; }
}

@media (max-width: 640px) {
  .tgp-co-v2__header {
    flex-direction: column;
    align-items: stretch;
    gap: 14px;
  }
  .tgp-co-v2__steps {
    width: 100%;
    flex-wrap: wrap;
    justify-content: space-between;
  }
  .tgp-co-v2__title {
    font-size: clamp(20px, 6vw, 26px) !important;
  }
}

@media (max-width: 540px) {
  .tgp-co-v2 { gap: 12px; }
  .tgp-co-v2__header { gap: 12px; }
  .tgp-co-v2__steps { padding: 3px; }
  .tgp-co-v2__steps li { padding: 4px 10px 4px 4px; font-size: 11px; }
  .tgp-co-v2__steps-num { width: 18px; height: 18px; font-size: 10px; }

  .tgp-co-v2__card-hd { padding: 14px 16px; grid-template-columns: 24px minmax(0, 1fr) auto; }
  .tgp-co-v2__card-body:not(.tgp-co-v2__payment-body) { padding: 14px 16px 16px; }
  /* Payment card — bottom air for wallets (trimmed v3.7.43; JS still nudges .place-order). */
  .tgp-co-v2__card--payment .tgp-co-v2__card-body.tgp-co-v2__payment-body {
    padding: 10px 14px 28px !important;
  }
  .tgp-co-v2 #payment .place-order {
    padding-bottom: 12px !important;
  }
  .tgp-co-v2__fields { grid-template-columns: 1fr !important; }
  .tgp-co-v2 .form-row.form-row-first,
  .tgp-co-v2 .form-row.form-row-last,
  .tgp-co-v2 .form-row { grid-column: 1 / -1 !important; }
}

/* ════════════════════════════════════════════════════════════════
 * v3.7.10 — FINAL OVERRIDES (pinned at end of file)
 * Applies even if form-checkout.php template is NOT deployed.
 * ════════════════════════════════════════════════════════════════ */

/* ── PayPal SDK ──
 * v3.7.10 (revised): DO NOT clip .paypal-buttons height — that hid
 * the actual PayPal button when the user selected the PayPal radio.
 * We only make backgrounds transparent and collapse :empty
 * placeholders. The PayPal button can be any height; the SDK will
 * draw it correctly.                                                */
/* v3.7.12: removed generic payment-widget overrides from final block.
 * Gateway widgets are now fully controlled by the payment plugin. */

/* ── WC notices — align with checkout column; defeat theme/plugin flex-row on ul (see v3.8.20) ── */
body.woocommerce-checkout .woocommerce-notices-wrapper {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 12px !important;
  max-width: 1200px !important;
  width: 100% !important;
  margin: 16px auto !important;
  padding-left: clamp(12px, 4vw, 22px) !important;
  padding-right: clamp(12px, 4vw, 22px) !important;
  box-sizing: border-box !important;
}

body.woocommerce-checkout > .woocommerce-error,
body.woocommerce-checkout > .woocommerce-info,
body.woocommerce-checkout > .woocommerce-message,
body.woocommerce-checkout main .woocommerce-error,
body.woocommerce-checkout main .woocommerce-info,
body.woocommerce-checkout main .woocommerce-message {
  display: block !important;
  flex-direction: unset !important;
  flex-wrap: unset !important;
  align-items: stretch !important;
  justify-content: flex-start !important;
  max-width: 1200px !important;
  width: 100% !important;
  margin: 16px auto !important;
  padding: 12px 18px !important;
  box-sizing: border-box !important;
  font-size: 13px !important;
  border-radius: 8px !important;
  list-style: none !important;
}

body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-error,
body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-message,
body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-info {
  margin: 0 !important;
}

body.woocommerce-checkout .woocommerce-error li,
body.woocommerce-checkout .woocommerce-info li,
body.woocommerce-checkout .woocommerce-message li {
  display: block !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 6px 0 !important;
  list-style: none !important;
  box-sizing: border-box !important;
  float: none !important;
}
body.woocommerce-checkout .woocommerce-error li:first-child,
body.woocommerce-checkout .woocommerce-message li:first-child,
body.woocommerce-checkout .woocommerce-info li:first-child {
  padding-top: 0 !important;
}
body.woocommerce-checkout .woocommerce-error li:last-child,
body.woocommerce-checkout .woocommerce-message li:last-child,
body.woocommerce-checkout .woocommerce-info li:last-child {
  padding-bottom: 0 !important;
}
body.woocommerce-checkout .woocommerce-error li + li {
  border-top: 1px solid rgba(248, 113, 113, 0.22) !important;
}
body.woocommerce-checkout .woocommerce-message li + li,
body.woocommerce-checkout .woocommerce-info li + li {
  border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
}

body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-error::before,
body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-message::before,
body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-info::before,
body.woocommerce-checkout > .woocommerce-error::before,
body.woocommerce-checkout > .woocommerce-message::before,
body.woocommerce-checkout > .woocommerce-info::before,
body.woocommerce-checkout main .woocommerce-error::before,
body.woocommerce-checkout main .woocommerce-message::before,
body.woocommerce-checkout main .woocommerce-info::before,
body.woocommerce-checkout .woocommerce-notices-wrapper ul.woocommerce-error > li::before,
body.woocommerce-checkout .woocommerce-notices-wrapper ul.woocommerce-message > li::before,
body.woocommerce-checkout .woocommerce-notices-wrapper ul.woocommerce-info > li::before,
body.woocommerce-checkout > ul.woocommerce-error::before,
body.woocommerce-checkout > ul.woocommerce-message::before,
body.woocommerce-checkout > ul.woocommerce-info::before,
body.woocommerce-checkout main ul.woocommerce-error::before,
body.woocommerce-checkout main ul.woocommerce-message::before,
body.woocommerce-checkout main ul.woocommerce-info::before,
body.woocommerce-checkout main ul.woocommerce-error > li::before,
body.woocommerce-checkout main ul.woocommerce-message > li::before,
body.woocommerce-checkout main ul.woocommerce-info > li::before {
  display: none !important;
  content: none !important;
  position: static !important;
  width: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: 0 !important;
  line-height: 0 !important;
}
body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-error::after,
body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-message::after,
body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-info::after,
body.woocommerce-checkout .woocommerce-notices-wrapper ul.woocommerce-error::after,
body.woocommerce-checkout .woocommerce-notices-wrapper ul.woocommerce-message::after,
body.woocommerce-checkout .woocommerce-notices-wrapper ul.woocommerce-info::after {
  display: none !important;
  content: none !important;
}

/* Extra specificity vs theme inline / Elementor (notice may be div.woocommerce-message only) */
html body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-message::before,
html body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-error::before,
html body.woocommerce-checkout .woocommerce-notices-wrapper .woocommerce-info::before {
  display: none !important;
  content: none !important;
}

@media (max-width: 768px) {
  body.woocommerce-checkout > .woocommerce-error,
  body.woocommerce-checkout > .woocommerce-info,
  body.woocommerce-checkout > .woocommerce-message,
  body.woocommerce-checkout main .woocommerce-error,
  body.woocommerce-checkout main .woocommerce-info,
  body.woocommerce-checkout main .woocommerce-message {
    margin: 12px 16px !important;
    font-size: 12.5px !important;
  }
  body.woocommerce-checkout .woocommerce-notices-wrapper {
    margin: 12px auto !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
}


/* v3.7.25: PayPal Advanced card fields are white by SDK/theme; force dark text */
.tgp-co-v2 #payment li.payment_method_ppcp-credit-card-gateway .payment_box input,
.tgp-co-v2 #payment li.payment_method_ppcp-credit-card-gateway .payment_box select,
.tgp-co-v2 #payment li.payment_method_ppcp-credit-card-gateway .payment_box textarea {
  color: #0a0a0a !important;
  -webkit-text-fill-color: #0a0a0a !important;
  caret-color: #0a0a0a !important;
}
.tgp-co-v2 #payment li.payment_method_ppcp-credit-card-gateway .payment_box input::placeholder,
.tgp-co-v2 #payment li.payment_method_ppcp-credit-card-gateway .payment_box textarea::placeholder {
  color: #6b7280 !important;
}

/* v3.7.29: Stripe `.payment_box` — air under hosted fields + wallets */
.tgp-co-v2 #payment li.payment_method_stripe .payment_box {
  padding-bottom: 48px !important;
  overflow: visible !important;
}
.tgp-co-v2 #payment li.payment_method_stripe .wc-stripe-payment-request-wrapper {
  margin: 10px 0 20px !important;
  overflow: visible !important;
}

/* Wallet stack defaults (Stripe PRB mounts in `.place-order` when gateway radio differs) */
.tgp-co-v2 #payment .paypal-buttons + .woocommerce-terms-and-conditions-wrapper,
.tgp-co-v2 #payment .paypal-buttons ~ .woocommerce-privacy-policy-text {
  margin-top: 0 !important;
}
.tgp-co-v2 #payment .wc-stripe-payment-request-wrapper,
.tgp-co-v2 #payment .smart-payment-buttons {
  margin-top: 0 !important;
  margin-bottom: 4px !important;
  overflow: visible !important;
}

/* v3.7.79 — PPCP wallets: `common.css` `.ppcp-button-apm { height:45px; overflow:hidden }`
 * clips hosted buttons. PayPal SDK also stacks PayPal+GPay inside `.paypal-buttons` — keep
 * that stack visible and give it bottom air (v3.7.78 targeted IDs only; funding buttons
 * often live only under `.place-order`). */
.tgp-co-v2 #payment .place-order .ppcp-button-apm {
  height: auto !important;
  min-height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  line-height: normal !important;
  flex-shrink: 0 !important;
}
/* PayPal JS stacks multiple iframes (PayPal + Google Pay funding). Do not let flex shrink clip. */
.tgp-co-v2 #payment .place-order .paypal-buttons {
  gap: 8px !important;
  padding-bottom: 4px !important;
  min-height: min-content !important;
  flex-shrink: 0 !important;
}
.tgp-co-v2 #payment .place-order .paypal-buttons > div,
.tgp-co-v2 #payment .place-order .paypal-buttons > span {
  overflow: visible !important;
  max-height: none !important;
  flex-shrink: 0 !important;
}

/* v3.7.31 — PPCP PayPal: white band under yellow button = iframe stack on light host;
 * paint wrappers dark + remove inter-iframe spacing. */
.tgp-co-v2 #payment li[class*="ppcp"] .payment_box,
.tgp-co-v2 #payment li.payment_method_paypal .payment_box {
  background: var(--co-surface-2) !important;
}
.tgp-co-v2 #payment .paypal-buttons {
  background: #0b0b0d !important;
  background-color: #0b0b0d !important;
  padding: 0 0 6px !important;
  margin: 0 0 4px !important;
  border-radius: 10px !important;
  min-height: min-content !important;
  flex-shrink: 0 !important;
  overflow: visible !important;
  /* v3.7.40: line-height:0 + font-size:0 caused a persistent sub-pixel / baseline
   * gap under PayPal's iframe stack (read as a white band on dark UI). */
  line-height: normal !important;
  font-size: 12px !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  /* Tight stack; v3.7.83 trimmed excess vertical air */
  gap: 8px !important;
}
.tgp-co-v2 #payment .paypal-buttons > div,
.tgp-co-v2 #payment .paypal-buttons > span {
  background: transparent !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: normal !important;
  flex: 0 0 auto !important;
}
.tgp-co-v2 #payment .paypal-buttons iframe {
  display: block !important;
  margin: 0 auto !important;
  vertical-align: bottom !important;
  background-color: transparent !important;
  max-height: none !important;
}

/* Collapse hook spacers between terms and `woocommerce_review_order_before_submit`. */
.tgp-co-v2 #payment .place-order > *:empty:not(input):not(noscript) {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  max-height: 0 !important;
  overflow: hidden !important;
  border: 0 !important;
}

/* ═══ v3.8.0 — billing SelectWoo dropdown parent clip / offset fixes ═══ */
.tgp-co-v2__card--billing {
  overflow: visible !important;
}

/* Checkout login card (WC form-login inside custom chrome) */
.tgp-co-v2__card--login.tgp-co-v2__login-card {
  overflow: visible !important;
}
/* Full inline form is always shown — hide legacy WC “Returning customer?” strip if it still loads. */
.tgp-co-v2__login-card .woocommerce-form-login-toggle {
  display: none !important;
}
.tgp-co-v2__login-card .woocommerce-form-login-toggle .woocommerce-message,
.tgp-co-v2__login-card .woocommerce-info {
  margin: 0 0 10px !important;
  padding: 10px 12px !important;
  font-size: 13px !important;
}
/* WC notice ::before uses WooCommerce icon font — without loaded fonts it becomes a blue square. */
.tgp-co-v2__login-card .woocommerce-info::before,
.tgp-co-v2__login-card .woocommerce-message::before,
.tgp-co-v2__login-card .woocommerce-error::before {
  content: none !important;
  display: none !important;
}
.tgp-co-v2__login-card .woocommerce-form-login {
  margin: 0 !important;
  padding: 12px !important;
  border-radius: var(--co-radius-sm, 10px) !important;
  border: 1px solid var(--co-border) !important;
  background: rgba(0, 0, 0, 0.25) !important;
}

/* Level reward coupon button */
.tgp-co-v2__level-coupon-wrap {
  margin-top: 10px !important;
}
.tgp-co-v2__level-coupon-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  padding: 10px 12px !important;
  border-radius: 10px !important;
  border: 1px solid var(--co-border-strong) !important;
  background: rgba(255, 255, 255, 0.06) !important;
  color: var(--co-text) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
}
.tgp-co-v2__level-coupon-btn:disabled {
  opacity: 0.55 !important;
  cursor: wait !important;
}

@media (max-width: 1024px) {
  /* Mobile: Ghost Coins card → minimal (no heavy panel background) */
  .tgp-co-v2__sidecard-slot--ghc .tgp-ghc-card-v2 {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 4px 0 8px !important;
  }
}

/* Coupon error HTML — stay inside viewport on narrow phones */
.tgp-co-v2__coupon-msg,
.tgp-co-v2__coupon-msg-wrap,
.tgp-co-v2__sidecard--coupon .woocommerce-error {
  max-width: 100% !important;
  box-sizing: border-box !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}
@media (max-width: 540px) {
  .tgp-co-v2__coupon-msg-wrap .woocommerce-error {
    font-size: 11.5px !important;
    padding: 10px 12px !important;
  }
}

/* Notices below fixed header on mobile checkout */
@media (max-width: 782px) {
  body.woocommerce-checkout .woocommerce-notices-wrapper {
    margin-top: calc(env(safe-area-inset-top, 0px) + clamp(48px, 12vw, 76px)) !important;
  }
}
