/**
 * Walcott Radio — Customer-Facing Theme Standard
 * ============================================================================
 *
 * THE standardized theme for all customer-facing pages: colors, typography,
 * and the site-wide PRICE treatment. The human-readable spec and the per-page
 * conformance audit live in the internal docs (STYLE_REFERENCE,
 * THEME_CONFORMANCE_AUDIT).
 *
 * Relationship to design-tokens.css:
 *   csr-includes/css/design-tokens.css (edited by the dashboard module
 *   layout.design_tokens) is the LEGACY header/nav token system with the old
 *   navy/amber palette. It stays in place for the header templates that
 *   consume it. THIS file carries the 2026 redesign palette (`--wrt-*`
 *   prefix, no collisions) and should be referenced by all NEW / redesigned
 *   customer-facing surfaces. Long-term the legacy tokens migrate here.
 *
 * FONTS (load once per page — pages must include this Google Fonts link):
 *   <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Poppins:wght@700;800&family=Barlow+Semi+Condensed:wght@500;600;700;800&display=swap" rel="stylesheet">
 *   - Body / UI copy, buttons, labels:  Inter (400–800)        --wrt-font-body
 *   - Headings (h1–h3, card titles):    Poppins (700/800)      --wrt-font-heading
 *   - Prices, display numerals:         Barlow Semi Condensed  --wrt-font-display
 *   - RETIRED for these roles: Bebas Neue, Open Sans price style, Segoe UI
 *     system stack. Barlow is numerals-only — never body copy, and since
 *     1.6.0 no longer headings.
 *
 * PRICE OUTPUT — THE standard markup, use everywhere a price renders:
 *   <span class="wr-price"><span class="cur">$</span>599.95</span>
 *   - single baseline, tabular figures, de-emphasized `$` (~0.68em / wt 500)
 *   - NO superscript cents, ever
 *   - sale/now price = .wr-price--sale (red); was price = .wr-price--was
 *   - size by context: PDP hero clamp(44px,6vw,58px); tier/section 27–34px;
 *     card/list 26–34px; add-on/line-item ~22px. The `.cur` em-ratio holds
 *     at every size, so only font-size needs setting per context.
 *   Page-scoped price classes (e.g. .pv3-price) may keep their own names but
 *   MUST match these values — treat this file as the reference implementation.
 *
 * @version 1.8.0 (2026-10-30) .wr-rbm rebate module (coupon_stub / tear_off)
 *   1.7.1
 *   1.7.1 (2026-10-29) Strip kicker wraps instead of truncating ("Mail-in r…"
 *         seen in the dashboard preview at 336px); .wr-rebate-wrap caps the
 *         standalone card at 720px on the special-offer page.
 *   1.7.0 (2026-10-29) REBATE CARDS (.wr-rebate, .wr-rebate-strip) for the
 *         manufacturer mail-in rebate system (csr-includes/rebates/). Four
 *         ROLE modifiers, no new tokens: --savings (cash back: red tint
 *         surface, the one place a red savings chip appears off the buy
 *         button), --success (free product by mail: the free-gift role, so
 *         "free by mail" and "free in your cart" read as siblings),
 *         --reward (gift card: gold with dark text) and --neutral (other).
 *         The after-rebate price is .wr-price in INK, never red — red stays
 *         the sale price. Native <details> strip, one line closed. See
 *         STYLE_REFERENCE.md § Rebate cards. Additive; nothing changed.
 *   1.6.0 (2026-10-22) HEADING FACE: --wrt-font-heading (Poppins 700/800) for
 *         h1–h3 and card titles, per Jason's call on the Galaxy CB mockup.
 *         Headings had been Barlow Semi Condensed on the brand page, learn
 *         hub and checkout, and Inter on the product page and B2B pages —
 *         three answers to one question. Barlow is now numerals and prices
 *         ONLY (--wrt-font-display, unchanged). Pages add Poppins:wght@700;800
 *         to their Google Fonts link. Additive; nothing else changed.
 *   1.5.0 (2026-10-22) DARK PAGE ROLES, for a page whose WHOLE surface is dark
 *         (the B2B pages' `theme: dark`), not just a band on a light page:
 *         --wrt-dark-card (a card that floats on --wrt-dark-panel the way a
 *         white card floats on --wrt-surface), --wrt-text-on-dark-muted (the
 *         third ink level, as --wrt-text-muted is on white), --wrt-border-on-
 *         dark-soft (row rules inside a dark card) and --wrt-green-on-dark
 *         (--wrt-green-text is 2.6:1 on --wrt-dark-card; this is 7.7:1).
 *         Additive; nothing changed. Red fills stay --wrt-red everywhere.
 *   1.4.0 (2026-10-21) --wrt-red-on-dark #FF4A5C: the red for TEXT on the dark
 *         surfaces. #CF1C3C is tuned for white — on --wrt-dark it reaches only
 *         3.6:1, below AA for normal text — so a red eyebrow, accent line or
 *         icon on a dark band needs a lifted red. Text and icons ONLY: a
 *         button on a dark band keeps the standard --wrt-red fill, where the
 *         white label is what has to pass. Added for the B2B hero's two-tone
 *         headline (Galaxy CB successor page). Additive; nothing changed.
 *   1.3.1 (2026-10-13) --wrt-blue-tint: pale selection-blue surface for an
 *         informational notice on a light section ("your shipping was
 *         re-quoted"), the blue counterpart of --wrt-red-tint. Added for
 *         checkout v2's shipping step. Additive; nothing changed.
 *   1.3.0 (2026-10-09) COLLECTION-CARD BADGES + "REPLACED BY" STRIP (.wr-badge--disc /
 *         --sale / --new, .wr-pill--most-popular, .wr-rep). Added for the brand
 *         collection page (manufacturers_rc.php) and placed here because the
 *         category and search listings need the same card vocabulary. No new
 *         tokens: Discontinued takes the dark refusal surface (same reasoning as
 *         .wr-fit--no), Sale the buy-path red, New the selection blue, and the
 *         replacement strip the success role. See STYLE_REFERENCE.md
 *         § Collection-card badges.
 *   1.2.0 (2026-09-29) FITMENT VERDICT BADGE (.wr-fit / --fits / --unknown / --no),
 *         a three-state role added for the vehicle finder and needed unchanged by
 *         the category page, which is why it lives here rather than page-scoped.
 *         No new tokens: it composes the existing success, neutral and dark-panel
 *         roles. The decision worth carrying is that "does not fit" is NOT red —
 *         red belongs to the buy path and must stay the most prominent red on the
 *         page, so the refusal takes the dark surface instead.
 *         See docs/STYLE_REFERENCE.md § Fitment verdict states.
 *   1.1.0 (2026-08-25) DARK-SURFACE ROLES. The B2B landing page system needs
 *         content sitting ON the dark bands (hero, capability band, footer),
 *         a role the palette had tokens for the background of but not the
 *         foreground. Adds --wrt-text-on-dark / --wrt-text-on-dark-dim /
 *         --wrt-border-on-dark, plus --wrt-red-tint for the pale red chip
 *         behind accent icons on light sections. No existing values changed —
 *         these are additive, and the B2B pages consume the existing
 *         --wrt-dark / --wrt-dark-panel surfaces rather than forking a second
 *         near-black. See docs/STYLE_REFERENCE.md § Dark surfaces.
 *   1.0.0 (2026-07-24) — initial standard: 2026 palette tokens +
 *         Barlow Semi Condensed price component (handoff: typography_and_price)
 */

:root {
    /* ------------------------------------------------------------------
       2026 CUSTOMER-FACING PALETTE  (--wrt- = "walcott radio theme")
       ------------------------------------------------------------------ */
    /* Action / buy funnel — red is THE single action color (Add to Cart,
       checkout, savings, urgency). Never use it as a big background band. */
    --wrt-red:        #CF1C3C;
    --wrt-red-hover:  #B01730;

    /* Navigation / links / selection / promo bar — blue */
    --wrt-blue:        #3968BA;
    --wrt-blue-hover:  #2F5AA0;
    --wrt-link-hover:  #2B4F8E;

    /* Reward / ratings */
    --wrt-gold:      #FCB002;
    --wrt-gold-deep: #9A6B00;   /* gold text on white (contrast-safe), labor/service labels */

    /* Dark surfaces */
    --wrt-dark:        #0C0D0F; /* header band */
    --wrt-dark-panel:  #16181B; /* module headers, cart bar */
    --wrt-ink:         #191A1C; /* primary text */
    --wrt-dark-hover:  #2F3135;

    /* Text */
    --wrt-text:           #191A1C;
    --wrt-text-secondary: #55585E;
    --wrt-text-muted:     #8A8E94;
    --wrt-text-faint:     #9CA0A6;

    /* Text / borders ON the dark surfaces above. Dim is the dark-surface
       equivalent of --wrt-text-secondary: body copy that must recede without
       dropping below 4.5:1 on --wrt-dark. */
    --wrt-text-on-dark:     #FFFFFF;
    --wrt-text-on-dark-dim: #9B9DA8;
    --wrt-border-on-dark:   rgba(255,255,255,.14);
    /* A WHOLE page in dark (B2B `theme: dark`), not a band on a light page:
       the card that floats on --wrt-dark-panel, the third ink level, the row
       rule inside such a card, and the success colour that still passes there
       (--wrt-green-text reaches only 2.6:1 on --wrt-dark-card). */
    --wrt-dark-card:            #1B1D21;
    --wrt-text-on-dark-muted:   #8A8D98;
    --wrt-border-on-dark-soft:  rgba(255,255,255,.08);
    --wrt-green-on-dark:        #4CC38A;
    /* Red as TEXT or an icon on --wrt-dark / --wrt-dark-panel. The action red
       only reaches 3.6:1 there; this lifts it to ~5.9:1. Never a button fill. */
    --wrt-red-on-dark:      #FF4A5C;

    /* Pale red chip behind accent icons on light sections. Red as a *tint*
       is not the buy-path red — never use it for a CTA fill. */
    --wrt-red-tint:       #FDEAEE;
    /* Pale selection-blue surface for an informational notice on a light
       section (e.g. "shipping re-quoted for your new address"). Dark text. */
    --wrt-blue-tint:      #EBF0F8;

    /* Borders / surfaces */
    --wrt-border:        #E1E3E7;
    --wrt-border-soft:   #E7E9ED;
    --wrt-surface:       #F0F1F3; /* tiles, section header rows, qty buttons */
    --wrt-surface-hover: #F7F8F9;
    --wrt-page-bg:       #E9EBED; /* grey page — white cards float on it */

    /* Success (in-stock, included, free-gift) */
    --wrt-green:        #1F8A5B;
    --wrt-green-text:   #1F6B3B;
    --wrt-green-bg:     #F0FAF3;
    --wrt-green-border: #DCF0E2;

    /* ------------------------------------------------------------------
       TYPOGRAPHY
       ------------------------------------------------------------------ */
    --wrt-font-body:    'Inter', system-ui, sans-serif;
    /* Headings: h1–h3, section titles, card titles. 800 for h1/h2, 700 for
       h3. Tight tracking (-.03em at display sizes) — Poppins is wide. */
    --wrt-font-heading: 'Poppins', 'Inter', system-ui, sans-serif;
    /* Prices and display numerals only — not headings (since 1.6.0). */
    --wrt-font-display: 'Barlow Semi Condensed', 'Inter', sans-serif;

    /* ------------------------------------------------------------------
       SHAPE / ELEVATION
       ------------------------------------------------------------------ */
    --wrt-radius-card:  16px;
    --wrt-radius-inner: 12px;
    --wrt-radius-thumb: 10px;
    --wrt-shadow-card:  0 1px 2px rgba(8,8,8,.04), 0 18px 40px -20px rgba(8,8,8,.18);
}

/* ==========================================================================
   PRICE COMPONENT — the reference implementation.
   <span class="wr-price"><span class="cur">$</span>599.95</span>
   ========================================================================== */
.wr-price {
    font-family: var(--wrt-font-display);
    font-weight: 700;
    line-height: 1;
    font-feature-settings: "tnum" 1;
    font-variant-numeric: tabular-nums;
    color: var(--wrt-ink);
}
.wr-price .cur {
    font-size: .68em;
    font-weight: 500;
    vertical-align: .06em;
    margin-right: .03em;
}
.wr-price--sale { color: var(--wrt-red); }
.wr-price--was  { color: var(--wrt-text-muted); text-decoration: line-through; font-weight: 500; }

/* ==========================================================================
   FITMENT VERDICT BADGE — vehicle fitment state on a product card or row.
   <span class="wr-fit wr-fit--fits">Fits your vehicle</span>

   THREE STATES, NOT TWO, and that is the whole point of the component. Absence
   of fitment data is NOT a refusal, so "not confirmed" must read as neutral
   rather than negative — coverage is partial, and a neutral product outnumbers
   both other states in every category today.

   RED IS NOT USED FOR "DOES NOT FIT". Red belongs to the buy path (per the
   color-role model, it stays the single most prominent red on the page), and
   spending it on a negative state would put the loudest color in the palette on
   the products a customer should ignore. The dark surface carries the refusal
   instead: authoritative, legible, and unmistakably not a call to action.
   ========================================================================== */
.wr-fit {
    display: inline-block;
    font-family: var(--wrt-font-body);
    font-size: 11.5px;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
    line-height: 1.25;
    padding: 5px 9px;
    border-radius: 999px;
    border: 1px solid transparent;
}
/* Success role, shared with in-stock / included / free-gift. */
.wr-fit--fits {
    background: var(--wrt-green-bg);
    border-color: var(--wrt-green-border);
    color: var(--wrt-green-text);
}
/* Neutral. Deliberately quiet: this is the majority state, not a warning. */
.wr-fit--unknown {
    background: #F0F1F3;
    border-color: var(--wrt-border);
    color: var(--wrt-text-secondary);
}
/* Refusal. Dark, never red — see the note above. */
.wr-fit--no {
    background: var(--wrt-dark-panel);
    border-color: var(--wrt-dark-panel);
    color: var(--wrt-text-on-dark);
}

/* ==========================================================================
   COLLECTION-CARD BADGES — product cards on brand / category / search listings.
   <span class="wr-badge wr-badge--sale">Sale</span>
   <span class="wr-badge wr-badge--disc">Discontinued</span>
   <span class="wr-pill--most-popular">Most popular</span>

   Discontinued is the dark refusal pill (same reasoning as .wr-fit--no): it
   must never borrow the buy-path red. Sale is the only red badge and appears
   only on buyable items. Gold always carries dark text.
   ========================================================================== */
.wr-badge {
    display: inline-block;
    font-family: var(--wrt-font-body);
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
    line-height: 1.25;
    padding: 5px 9px;
    border-radius: 6px;
    color: #fff;
}
.wr-badge--sale { background: var(--wrt-red); }
.wr-badge--new  { background: var(--wrt-blue); }
.wr-badge--disc { background: var(--wrt-ink); border-radius: 999px; }
.wr-pill--most-popular {
    display: inline-block;
    font-family: var(--wrt-font-body);
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
    line-height: 1.25;
    padding: 5px 9px;
    border-radius: 999px;
    background: var(--wrt-gold);
    color: var(--wrt-ink);
}

/* ==========================================================================
   "REPLACED BY" STRIP — the sellable successor of a discontinued product.
   <div class="wr-rep">
     <div class="wr-rep__row">
       <a class="wr-rep__img" href="…"><img …></a>
       <div class="wr-rep__body">
         <div class="wr-rep__kicker">Replaced by</div>
         <a class="wr-rep__model" href="…">MODEL</a>
         <div class="wr-rep__name">Name</div>
         <div class="wr-rep__meta"><span class="wr-price wr-rep__price">…</span><a class="wr-rep__cta">View →</a></div>
       </div>
     </div>
   </div>
   Success role throughout. Port of the PDP's .pv3-replacement-card (which now
   uses the same tokens). .wr-rep--none is the neutral "no direct replacement".
   ========================================================================== */
.wr-rep {
    background: var(--wrt-green-bg);
    border: 1px solid var(--wrt-green-border);
    border-left: 4px solid var(--wrt-green);
    border-radius: 10px;
    padding: 10px 12px;
    font-family: var(--wrt-font-body);
}
.wr-rep__row { display: flex; gap: 10px; align-items: center; }
.wr-rep__img { flex: 0 0 52px; width: 52px; height: 52px; background: #fff; border-radius: 8px; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.wr-rep__img img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; }
.wr-rep__body { flex: 1 1 auto; min-width: 0; }
.wr-rep__kicker { font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wrt-green); margin-bottom: 2px; }
.wr-rep__model { display: block; font-size: 14px; font-weight: 700; color: var(--wrt-ink); text-decoration: none; }
.wr-rep__model:hover { color: var(--wrt-blue); }
.wr-rep__name { font-size: 12px; color: var(--wrt-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wr-rep__meta { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-top: 4px; }
.wr-rep__price { font-size: 17px; }
.wr-rep__cta { font-size: 12.5px; font-weight: 700; color: var(--wrt-blue); white-space: nowrap; text-decoration: none; }
.wr-rep__cta:hover { text-decoration: underline; }
.wr-rep__alts { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--wrt-green-border); }
.wr-rep__alts-label { font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wrt-text-secondary); }
.wr-rep__alt { display: inline-flex; align-items: baseline; gap: 6px; padding: 3px 8px; background: #fff; border: 1px solid var(--wrt-green-border); border-radius: 999px; font-size: 12px; font-weight: 700; color: var(--wrt-ink); text-decoration: none; }
.wr-rep__alt:hover { border-color: var(--wrt-blue); color: var(--wrt-blue); }
.wr-rep__alt-price { font-family: var(--wrt-font-display); font-weight: 600; color: var(--wrt-text-secondary); font-variant-numeric: tabular-nums; }
.wr-rep--none { background: var(--wrt-surface); border: 1px solid var(--wrt-border); font-size: 13px; font-weight: 600; color: var(--wrt-text-secondary); }
.wr-rep--none a { color: var(--wrt-blue); font-weight: 700; text-decoration: none; }

/* ==========================================================================
   REBATE CARDS — manufacturer mail-in rebates (csr-includes/rebates/).
   <details class="wr-rebate-strip wr-rebate-strip--savings">
     <summary class="wr-rebate-strip__row">…one line…</summary>
     <div class="wr-rebate-strip__body"><div class="wr-rebate wr-rebate--savings">…</div></div>
   </details>

   ROLE, not type, drives the color — every rebate kind maps onto an existing
   role so nothing new has to be learned:
     --savings  cash back / multi-buy   red TINT surface (--wrt-red-tint), red
                kicker. The after-rebate figure is .wr-price in INK: red is the
                SALE price, and a number the customer only sees after mailing a
                form must not borrow it.
     --success  free product / bonus    the free-gift role (green bg/border/text)
     --reward   gift card               gold surface, dark text — gold never
                carries white text
     --neutral  other                   --wrt-surface, secondary text
   The download button is the LINK role (blue), not red — getting a form is
   not the buy path. The "fulfilled by <brand>, not Walcott Radio" line is
   part of the component on purpose: it is what keeps a rebate question from
   becoming a support ticket about us.
   ========================================================================== */
.wr-rebate {
    --wrr-bg: var(--wrt-surface); --wrr-border: var(--wrt-border); --wrr-accent: var(--wrt-text-secondary);
    background: var(--wrr-bg); border: 1px solid var(--wrr-border); border-left: 4px solid var(--wrr-accent);
    border-radius: 10px; padding: 12px 14px; font-family: var(--wrt-font-body); color: var(--wrt-ink);
}
.wr-rebate--savings { --wrr-bg: var(--wrt-red-tint); --wrr-border: #F2C9CF; --wrr-accent: var(--wrt-red); }
.wr-rebate--success { --wrr-bg: var(--wrt-green-bg); --wrr-border: var(--wrt-green-border); --wrr-accent: var(--wrt-green); }
.wr-rebate--reward  { --wrr-bg: #FFF6DC; --wrr-border: #F3DFA3; --wrr-accent: var(--wrt-gold); }
.wr-rebate--neutral { --wrr-accent: var(--wrt-text-muted); }
.wr-rebate__head { display: flex; align-items: flex-start; gap: 10px; }
.wr-rebate__ico { flex: 0 0 auto; font-size: 20px; line-height: 1.1; }
.wr-rebate__headtext { flex: 1 1 auto; min-width: 0; }
.wr-rebate__kicker { font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--wrr-accent); }
.wr-rebate--reward .wr-rebate__kicker { color: var(--wrt-gold-deep); }
.wr-rebate--neutral .wr-rebate__kicker { color: var(--wrt-text-secondary); }
.wr-rebate__title { font-size: 15px; font-weight: 700; line-height: 1.3; margin-top: 2px; }
.wr-rebate__ends { flex: 0 0 auto; font-size: 11px; font-weight: 800; color: var(--wrt-red); white-space: nowrap; padding-top: 2px; }
.wr-rebate__figure { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-top: 10px; }
.wr-rebate__after { font-size: 30px; }
.wr-rebate__figure-note { font-size: 12.5px; color: var(--wrt-text-secondary); }
.wr-rebate__reward { display: flex; align-items: center; gap: 12px; margin-top: 10px; }
.wr-rebate__reward-img { flex: 0 0 56px; width: 56px; height: 56px; object-fit: contain; background: #fff; border-radius: 8px; }
.wr-rebate__reward-name { font-family: var(--wrt-font-display); font-weight: 700; font-size: 22px; line-height: 1.05; color: var(--wrt-ink); }
.wr-rebate__reward-value { font-size: 12.5px; color: var(--wrt-text-secondary); margin-top: 2px; }
.wr-rebate__explain { margin: 10px 0 0; font-size: 13.5px; line-height: 1.55; color: var(--wrt-text-secondary); }
.wr-rebate__steps { margin: 10px 0 0; padding: 0 0 0 20px; font-size: 13px; line-height: 1.5; color: var(--wrt-text-secondary); }
.wr-rebate__steps li { margin: 3px 0; }
.wr-rebate__steps b { color: var(--wrt-ink); font-weight: 700; }
.wr-rebate__terms { margin-top: 10px; font-size: 12.5px; line-height: 1.5; color: var(--wrt-text-secondary); }
.wr-rebate__terms a { color: var(--wrt-blue); }
.wr-rebate__deadline { margin-top: 8px; font-size: 12.5px; font-weight: 600; color: var(--wrt-text-secondary); }
.wr-rebate__actions { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; margin-top: 12px; }
.wr-rebate__btn {
    display: inline-flex; align-items: center; gap: 7px; padding: 9px 14px; border-radius: 10px;
    background: var(--wrt-blue); color: #fff !important; font-size: 13.5px; font-weight: 700; text-decoration: none !important; line-height: 1.2;
}
.wr-rebate__btn:hover { background: var(--wrt-blue-hover); }
.wr-rebate__btn-ico { font-size: 14px; }
.wr-rebate__btn--quiet { background: transparent; color: var(--wrt-blue) !important; padding: 9px 2px; }
.wr-rebate__btn--quiet:hover { background: transparent; text-decoration: underline !important; }
.wr-rebate__fulfilled { margin-top: 10px; font-size: 11.5px; line-height: 1.45; color: var(--wrt-text-muted); }

/* The one-line strip (buy column). Closed = exactly one row; the body is the
   full card. <details> so it works without JS and the marker is ours. */
.wr-rebate-strip { --wrr-bg: var(--wrt-surface); --wrr-border: var(--wrt-border); --wrr-accent: var(--wrt-text-secondary); font-family: var(--wrt-font-body); }
.wr-rebate-strip--savings { --wrr-bg: var(--wrt-red-tint); --wrr-border: #F2C9CF; --wrr-accent: var(--wrt-red); }
.wr-rebate-strip--success { --wrr-bg: var(--wrt-green-bg); --wrr-border: var(--wrt-green-border); --wrr-accent: var(--wrt-green-text); }
.wr-rebate-strip--reward  { --wrr-bg: #FFF6DC; --wrr-border: #F3DFA3; --wrr-accent: var(--wrt-gold-deep); }
.wr-rebate-strip__row {
    display: flex; flex-wrap: nowrap; align-items: center; gap: 10px; cursor: pointer; list-style: none;
    border: 1px solid var(--wrr-border); background: var(--wrr-bg); border-radius: 10px; padding: 9px 12px;
    font-size: 13px; color: var(--wrt-ink); user-select: none;
}
.wr-rebate-strip__row::-webkit-details-marker { display: none; }
.wr-rebate-strip__row:hover { filter: brightness(.985); }
.wr-rebate-strip__ico { flex: 0 0 auto; font-size: 16px; line-height: 1; }
/* The kicker WRAPS rather than truncates: "Mail-in r…" beside a price is
   worse than a second line. Figure + "Details" stay on the first line. */
.wr-rebate-strip__text { flex: 1 1 auto; min-width: 0; line-height: 1.3; font-size: 13.5px; }
.wr-rebate-strip__text strong { color: var(--wrr-accent); font-weight: 800; }
.wr-rebate-strip__ends { margin-left: 8px; font-size: 11.5px; font-weight: 700; color: var(--wrt-red); }
.wr-rebate-strip__figure { flex: 0 0 auto; display: inline-flex; align-items: baseline; gap: 6px; white-space: nowrap; }
.wr-rebate-strip__figure .wr-price { font-size: 20px; }
.wr-rebate-strip__after, .wr-rebate-strip__value { font-size: 11.5px; font-weight: 600; color: var(--wrt-text-secondary); }
.wr-rebate-strip__value { font-size: 13px; font-weight: 800; color: var(--wrr-accent); }
.wr-rebate-strip__more { flex: 0 0 auto; font-size: 12px; font-weight: 700; color: var(--wrt-blue); }
.wr-rebate-strip__more::after { content: " ▾"; font-size: 10px; }
.wr-rebate-strip[open] .wr-rebate-strip__more::after { content: " ▴"; }
.wr-rebate-strip[open] .wr-rebate-strip__row { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.wr-rebate-strip__body .wr-rebate { border-top: 0; border-radius: 0 0 10px 10px; }
.wr-rebate-strip + .wr-rebate-strip { margin-top: 8px; }
/* Standalone placement (special-offer page): the card is a reading column,
   not a banner — cap it and centre it inside a full-width wrap. */
.wr-rebate-wrap .wr-rebate { max-width: 720px; margin: 0 auto; }

/* ---------------------------------------------------------------------------
   Rebate module — "Mail in rebate form redesign" handoff (2026-10-30)
   wr_rebate_module_html() in csr-includes/rebates/rebates_runtime.php 1.1.0
   .wr-rbm--coupon_stub  (1a) red perforated stub left, white body
   .wr-rbm--tear_off     (1c) grey tile, white ticket stub right
   Cash-back rebates only; opt-in via layout.product_page › rebate_module.
   Deliberate, recorded deviations from the role rules above (see
   STYLE_REFERENCE § Rebate module): the 1a stub is a red band and the 1a
   download button is red — the module IS the buy-path offer, and the
   after-rebate price stays ink in both.
   --------------------------------------------------------------------------- */
.wr-rbm { position: relative; display: flex; font-family: var(--wrt-font-body); color: var(--wrt-ink); border-radius: 14px; margin: 0 0 24px; box-sizing: border-box; }
/* No overflow:hidden on the root — the How-it-works popover escapes it; the stubs clip themselves. */
.wr-rbm *, .wr-rbm *::before, .wr-rbm *::after { box-sizing: border-box; }
.wr-rbm__body { flex: 1 1 auto; min-width: 0; }
.wr-rbm__cur { font-size: .5em; font-weight: 600; vertical-align: top; position: relative; top: .2em; margin-right: .04em; }
.wr-rbm__cents { font-size: .5em; font-weight: 600; vertical-align: top; position: relative; top: .18em; }
.wr-rbm__net { font-family: var(--wrt-font-display); font-weight: 700; font-variant-numeric: tabular-nums lining-nums; letter-spacing: -.01em; line-height: 1; color: var(--wrt-ink); white-space: nowrap; }
.wr-rbm__was { font-family: var(--wrt-font-display); font-weight: 500; font-variant-numeric: tabular-nums; color: var(--wrt-text-muted); text-decoration: line-through; text-decoration-color: var(--wrt-text-faint); white-space: nowrap; }
.wr-rbm__dates { font-size: 13px; color: var(--wrt-text-muted); }
.wr-rbm__fine { font-size: 12px; line-height: 1.5; color: var(--wrt-text-faint); }
.wr-rbm__fine a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.wr-rbm__fine a:hover { color: var(--wrt-text-secondary); }
.wr-rbm__link { font-size: 13px; font-weight: 600; color: var(--wrt-blue); text-decoration: none; white-space: nowrap; }
.wr-rbm__link:hover { text-decoration: underline; }
.wr-rbm__btn { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 20px; border-radius: 8px; font-family: var(--wrt-font-body); font-size: 14.5px; font-weight: 700; letter-spacing: .01em; text-decoration: none; white-space: nowrap; border: 0; cursor: pointer; transition: background-color .15s, transform .12s; }
.wr-rbm__btn:active { transform: translateY(1px); }
.wr-rbm__btn-ico { font-size: 17px; line-height: 1; }
.wr-rbm__actions { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 20px; }
/* How it works — native <details>, popover panel */
.wr-rbm__how { position: relative; }
.wr-rbm__howbtn { list-style: none; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; font-size: 14.5px; font-weight: 600; color: var(--wrt-ink); user-select: none; -webkit-user-select: none; }
.wr-rbm__howbtn::-webkit-details-marker { display: none; }
.wr-rbm__howbtn::marker { content: ''; }
.wr-rbm__chev { display: inline-block; font-size: 11px; transition: transform .18s; color: var(--wrt-text-muted); }
.wr-rbm__how[open] .wr-rbm__chev { transform: rotate(180deg); }
.wr-rbm__howpanel { position: absolute; left: 0; top: calc(100% + 10px); z-index: 30; min-width: 520px; max-width: calc(100vw - 48px); padding: 18px 20px; border-radius: 12px; box-shadow: 0 10px 30px rgba(25, 26, 28, .12), 0 1px 3px rgba(25, 26, 28, .08); }
.wr-rbm__steps { counter-reset: rbm; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.wr-rbm__steps li { counter-increment: rbm; font-size: 13.5px; line-height: 1.45; color: var(--wrt-text-secondary); padding-top: 34px; position: relative; }
.wr-rbm__steps li b { display: block; color: var(--wrt-ink); font-weight: 700; margin-bottom: 2px; }
.wr-rbm__steps li::before { content: counter(rbm); position: absolute; left: 0; top: 0; width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-family: var(--wrt-font-display); font-weight: 700; font-size: 14px; background: var(--wrt-ink); color: #fff; }
.wr-rbm__terms { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--wrt-border-soft); font-size: 12.5px; line-height: 1.5; color: var(--wrt-text-muted); }

/* ---- 1a Coupon stub ----------------------------------------------------- */
.wr-rbm--coupon_stub { background: #fff; border: 1px solid var(--wrt-border); }
.wr-rbm--coupon_stub .wr-rbm__stub { flex: 0 0 260px; background: var(--wrt-red); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 32px 20px; position: relative; border-radius: 13px 0 0 13px; overflow: hidden; }
.wr-rbm--coupon_stub .wr-rbm__stub::after { content: ''; position: absolute; top: 0; bottom: 0; right: -1px; width: 0; border-right: 2px dashed rgba(255, 255, 255, .55); }
.wr-rbm--coupon_stub .wr-rbm__stub-kicker { font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; opacity: .9; margin-bottom: 10px; }
.wr-rbm--coupon_stub .wr-rbm__stub-amt { font-family: var(--wrt-font-display); font-weight: 700; font-size: 92px; line-height: .9; letter-spacing: -.02em; font-variant-numeric: lining-nums; }
.wr-rbm--coupon_stub .wr-rbm__stub-cur { font-size: .5em; vertical-align: top; position: relative; top: .14em; margin-right: .02em; }
.wr-rbm--coupon_stub .wr-rbm__stub-sub { margin-top: 10px; font-size: 13px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.wr-rbm--coupon_stub .wr-rbm__body { padding: 28px 32px 24px; display: flex; flex-direction: column; gap: 20px; }
.wr-rbm--coupon_stub .wr-rbm__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 28px; }
.wr-rbm--coupon_stub .wr-rbm__lead { flex: 1 1 auto; min-width: 0; }
.wr-rbm--coupon_stub .wr-rbm__meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.wr-rbm--coupon_stub .wr-rbm__save { display: inline-block; background: var(--wrt-red-tint); color: var(--wrt-red); font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 4px 9px; border-radius: 5px; }
.wr-rbm--coupon_stub .wr-rbm__title { margin: 0 0 8px; font-family: var(--wrt-font-body); font-size: 24px; line-height: 1.2; font-weight: 700; letter-spacing: -.01em; color: var(--wrt-ink); }
.wr-rbm--coupon_stub .wr-rbm__text { margin: 0; font-size: 15px; line-height: 1.55; color: var(--wrt-text-secondary); max-width: 52ch; }
.wr-rbm--coupon_stub .wr-rbm__pricecol { flex: 0 0 auto; text-align: right; padding-top: 2px; }
.wr-rbm--coupon_stub .wr-rbm__was { font-size: 18px; margin-bottom: 2px; }
.wr-rbm--coupon_stub .wr-rbm__net { font-size: 48px; }
.wr-rbm--coupon_stub .wr-rbm__pernote { font-size: 12.5px; color: var(--wrt-text-muted); margin-top: 6px; }
.wr-rbm--coupon_stub .wr-rbm__btn { background: var(--wrt-red); color: #fff; }
.wr-rbm--coupon_stub .wr-rbm__btn:hover { background: var(--wrt-red-hover); color: #fff; }
.wr-rbm--coupon_stub .wr-rbm__howpanel { background: var(--wrt-surface); }
.wr-rbm--coupon_stub .wr-rbm__ends { margin-left: auto; font-size: 13.5px; color: var(--wrt-text-secondary); display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.wr-rbm--coupon_stub .wr-rbm__ends b { color: var(--wrt-ink); font-weight: 700; }
.wr-rbm--coupon_stub .wr-rbm__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--wrt-red); }
.wr-rbm--coupon_stub .wr-rbm__fine { padding-top: 14px; border-top: 1px solid var(--wrt-border-soft); }

/* ---- 1c Tear-off ticket ------------------------------------------------- */
.wr-rbm--tear_off { background: var(--wrt-surface); border: 1px solid var(--wrt-border-soft); }
.wr-rbm--tear_off .wr-rbm__body { padding: 28px 32px 26px; display: flex; flex-direction: column; gap: 22px; }
.wr-rbm--tear_off .wr-rbm__chips { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 12px; }
.wr-rbm__chip { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 6px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; line-height: 1; }
.wr-rbm__chip--outline { border: 1.5px solid var(--wrt-ink); color: var(--wrt-ink); }
.wr-rbm__chip--save { background: var(--wrt-red); color: #fff; }
.wr-rbm--tear_off .wr-rbm__dates { margin-left: 4px; }
.wr-rbm--tear_off .wr-rbm__pricerow { display: flex; align-items: flex-end; gap: 28px; flex-wrap: wrap; }
.wr-rbm--tear_off .wr-rbm__pricecol { flex: 0 0 auto; }
.wr-rbm--tear_off .wr-rbm__was { font-size: 16px; margin-bottom: 4px; }
.wr-rbm--tear_off .wr-rbm__net--xl { font-size: 88px; }
.wr-rbm--tear_off .wr-rbm__pertext { flex: 1 1 260px; min-width: 0; font-size: 17px; line-height: 1.4; color: var(--wrt-ink); padding-bottom: 12px; max-width: 34ch; }
.wr-rbm--tear_off .wr-rbm__accent { color: var(--wrt-red); font-weight: 700; }
.wr-rbm--tear_off .wr-rbm__pertext-sub { display: block; margin-top: 8px; font-size: 13.5px; line-height: 1.5; color: var(--wrt-text-muted); }
.wr-rbm--tear_off .wr-rbm__btn { background: var(--wrt-ink); color: #fff; }
.wr-rbm--tear_off .wr-rbm__btn:hover { background: var(--wrt-red); color: #fff; }
.wr-rbm--tear_off .wr-rbm__howbtn { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--wrt-text-faint); }
.wr-rbm--tear_off .wr-rbm__howpanel { background: #fff; border: 1px solid var(--wrt-border); }
.wr-rbm--tear_off .wr-rbm__actions .wr-rbm__fine { flex-basis: 100%; }
.wr-rbm--tear_off .wr-rbm__stub { flex: 0 0 340px; position: relative; background: #fff; border-left: 2px dashed var(--wrt-border); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 26px; padding: 32px 24px; text-align: center; border-radius: 0 13px 13px 0; overflow: hidden; }
.wr-rbm__notch { position: absolute; left: -13px; width: 24px; height: 24px; border-radius: 50%; background: var(--wrt-surface); border: 1px solid var(--wrt-border-soft); }
.wr-rbm__notch--top { top: -13px; }
.wr-rbm__notch--bottom { bottom: -13px; }
.wr-rbm--tear_off .wr-rbm__stamp { transform: rotate(-6deg); border: 3px solid var(--wrt-red); color: var(--wrt-red); border-radius: 10px; padding: 10px 22px 12px; display: inline-flex; flex-direction: column; align-items: center; line-height: .95; }
.wr-rbm--tear_off .wr-rbm__stub-amt { font-family: var(--wrt-font-display); font-weight: 700; font-size: 64px; letter-spacing: -.02em; font-variant-numeric: lining-nums; }
.wr-rbm--tear_off .wr-rbm__stub-cur { font-size: .5em; vertical-align: top; position: relative; top: .12em; }
.wr-rbm--tear_off .wr-rbm__stamp-word { font-family: var(--wrt-font-display); font-weight: 700; font-size: 26px; letter-spacing: .22em; text-transform: uppercase; margin-top: 2px; padding-left: .22em; }
.wr-rbm--tear_off .wr-rbm__countdown-label { font-size: 11.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--wrt-text-muted); }
.wr-rbm--tear_off .wr-rbm__countdown-days { margin-top: 4px; font-family: var(--wrt-font-display); font-size: 28px; font-weight: 700; color: var(--wrt-ink); }

/* ---- Responsive --------------------------------------------------------- */
@media (max-width: 900px) {
  .wr-rbm { flex-direction: column; }
  .wr-rbm--coupon_stub .wr-rbm__stub { flex-basis: auto; padding: 22px 20px; border-radius: 13px 13px 0 0; }
  .wr-rbm--coupon_stub .wr-rbm__stub::after { top: auto; right: 0; left: 0; bottom: -1px; width: auto; height: 0; border-right: 0; border-bottom: 2px dashed rgba(255, 255, 255, .55); }
  .wr-rbm--coupon_stub .wr-rbm__stub-amt { font-size: 64px; }
  .wr-rbm--coupon_stub .wr-rbm__body { padding: 22px 20px 20px; }
  .wr-rbm--coupon_stub .wr-rbm__top { flex-direction: column; gap: 14px; }
  .wr-rbm--coupon_stub .wr-rbm__pricecol { text-align: left; }
  .wr-rbm--coupon_stub .wr-rbm__ends { margin-left: 0; }
  .wr-rbm--tear_off .wr-rbm__body { padding: 22px 20px 20px; }
  .wr-rbm--tear_off .wr-rbm__net--xl { font-size: 64px; }
  .wr-rbm--tear_off .wr-rbm__stub { flex-basis: auto; border-left: 0; border-top: 2px dashed var(--wrt-border); flex-direction: row; justify-content: space-around; padding: 20px; border-radius: 0 0 13px 13px; }
  .wr-rbm__notch { left: auto; top: -13px; }
  .wr-rbm__notch--top { left: -13px; }
  .wr-rbm__notch--bottom { right: -13px; bottom: auto; }
  .wr-rbm__howpanel { position: static; min-width: 0; margin-top: 12px; box-shadow: none; }
  .wr-rbm__steps { grid-template-columns: 1fr; gap: 12px; }
  .wr-rbm__steps li { padding-top: 0; padding-left: 36px; }
  .wr-rbm__btn { width: 100%; justify-content: center; }
}
