#order-standard_cart {
	font-size: 16px;
	padding: 0px;
}

	#order-standard_cart .nav-pills .nav-item:hover {
		background: #f8f9fa;
	}
	
	#order-standard_cart .nav-pills .nav-item.active, #order-standard_cart .nav-pills .nav-item.active:hover {
		box-shadow: 0 0 0 2px #dee2e6;
		background: #f8f9fa;
	}
	
#frmProductDomain .domain-option[data-hidden=yes] {
    display: none;
}

#frmProductDomain .iradio_square-blue, #billingcycle .iradio_square-blue {
	background: none !important;
	display: none !important;
}

#order-standard_cart .select-inline {
	width: 100%;
}

#order-standard_cart .domain-check-availability {
	width: auto !important; 
	height: auto !important;
}

#order-standard_cart label {
	font-size: 1rem;
	color: #212529;
}

#order-standard_cart .domain-selection-options, #order-standard_cart .domain-input-group, #order-standard_cart .addon-promo-container .description, #order-standard_cart .addon-promo-container h3 {
    margin: 0;
	padding: 0;
}

/* Known-domain tabs (Transfer / Existing) reframe — these are not the live
   as-you-type availability search (that's the register spinner). They name a
   domain the customer already owns; stock verifies on submit. So they read as
   data-entry: labelled fields in a plain fieldset, and the action button is
   detached from the field row (not appended to it) — that detachment is the
   signal that stops the block reading like a search bar. Both tabs share this
   one grammar so they stay mutually consistent. */
#order-standard_cart .uwx-domain-known .uwx-known-fields {
	border: 0;
	margin: 0;
	padding: 0;
	min-width: 0; /* fieldset default min-width:min-content would break flex/grid shrink */
}
#order-standard_cart .uwx-domain-known .uwx-known-legend {
	float: none;
	width: auto;
	border: 0;
	margin: 0 0 1rem;
	padding: 0;
	font-size: 1rem;
	font-weight: 700;
	color: #212529;
}
#order-standard_cart .uwx-domain-known .uwx-known-label {
	display: block;
	margin-bottom: 0.35rem;
	font-size: 0.85rem;
	font-weight: 700;
	color: #6c757d;
}
#order-standard_cart .uwx-domain-known .uwx-known-action {
	margin-top: 1rem;
}
/* Desktop: action sits right-aligned under the fields, clearly its own step —
   never inline-attached to the input like the register CHECK button. */
@media (min-width: 768px) {
	#order-standard_cart .uwx-domain-known .uwx-known-action {
		text-align: right;
	}
}
/* Mobile: full-width action, consistent with stacked controls. */
@media (max-width: 767.98px) {
	#order-standard_cart .uwx-domain-known .uwx-known-action .btn {
		display: block;
		width: 100%;
	}
}

#order-standard_cart .domain-lookup-primary-loader, #order-standard_cart .domain-lookup-primary-results {
	text-align: left;
	margin: 0;
	padding: 0;
}

#order-standard_cart .transfer-eligible, #order-standard_cart .transfer-not-eligible{
    color: inherit;
    background-color: transparent;
    border: 0;
	margin: 0;
	padding: 0;
}

#order-standard_cart .addon-promo-container {
    font-size: inherit;
	margin: 0;
	box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075);
	border-radius: 15px;
	border: 0;
	padding: 1rem;
	margin-bottom: 1.5rem;
}

@media (min-width: 768px) {
	#order-standard_cart .addon-promo-container {
		padding: 1.5rem;
	}
}

#order-standard_cart .summary-container {
    margin: 0;
    padding: 0;
    min-height: 100px;
    border-radius: 0;
    background-color: transparent;
    font-size: inherit;
}

.addon-renewals .service-renewal:nth-child(even), .domain-renewals .domain-renewal:nth-child(even), .service-renewals .service-renewal:nth-child(even) {
    background-color: transparent;;
}

.domain-renewals .domain-renewal, .service-renewals .service-renewal {
    border: 0;
}
/* unlimited-next-cart addition: price line inside the billing-cycle tiles
   (v2 showed no price there — restoring it was the original fix request). */
#order-standard_cart .nav-pills .nav-item .uwx-cycle-price {
	font-weight: 700;
	font-size: 1.1rem;
	margin-bottom: .25rem;
}

/* unlimited-next-cart addition (2026-07-31): first-year coupon caption under a
   cycle tile's price. The price line above it is the PAY-TODAY, ex-VAT figure
   when an allowlisted rebase coupon is in session; this names the discount that
   produced it, so the tile no longer contradicts the cart. Deliberately quiet —
   smaller and non-bold against the price, per owner direction. The tile's <a>
   sets font-weight on the whole block, so the weight is reset explicitly here
   rather than relying on the utility class alone. */
#order-standard_cart .nav-pills .nav-item .uwx-cycle-discount {
	font-weight: 400;
	font-size: .8125rem;
	line-height: 1.3;
	margin-bottom: .25rem;
}

/* unlimited-next-cart addition (owner-directed restyle, 2026-07-19):
   checkout "Choose Account" selector — stock renders grey #f6f6f6 boxes
   with shared-border tricks and inherited blue text; bring it into the
   cart language (white rows, #e8eaef borders, rounded, green active). */
#order-standard_cart .account-select-container {
    margin: 0;
    border-right: 0;
}
#order-standard_cart .account-select-container div.account,
#order-standard_cart .account-select-container div.account:not(.border-bottom) {
    background: #fff;
    border: 1px solid #e8eaef;
    border-radius: 10px;
    padding: 1rem 1.25rem;
    margin-bottom: .75rem;
    transition: border-color .15s ease, background-color .15s ease;
}
#order-standard_cart .account-select-container div.account:hover {
    border-color: #c8cdd6;
}
#order-standard_cart .account-select-container div.account.active {
    background: #e8faec;
    border-color: #28a745;
}
#order-standard_cart .account-select-container .radio-inline {
    display: block;
    margin: 0;
    cursor: pointer;
    color: #212529;
}
#order-standard_cart .account-select-container input.account-select {
    margin-right: .5rem;
}
#order-standard_cart .account-select-container .address strong {
    color: #212529;
}
#order-standard_cart .account-select-container .address .small {
    color: #6c757d;
    line-height: 1.6;
}
/* currency chip: neutral info, not a blue BS3 label */
#order-standard_cart .account-select-container .address .label {
    display: inline-block;
    background: #f4f6f9;
    border: 1px solid #e8eaef;
    border-radius: 999px;
    color: #6c757d;
    font-size: 12px;
    font-weight: 700;
    padding: .15em .7em;
    margin-left: .35rem;
    vertical-align: middle;
}

/* unlimited-next-cart addition (owner-directed restyle, 2026-07-19):
   checkout security/fraud notice — stock floats a 2.8em padlock beside
   .8em text (huge icon, tiny copy, no vertical centering). Flex-center
   it at readable size; the template's clearfix helper becomes inert. */
#order-standard_cart .checkout-security-msg {
    display: flex;
    align-items: center;
    margin: 20px 0 0;
    padding: .9rem 1.25rem;
    font-size: 14px;
    border-radius: 10px;
}
#order-standard_cart .checkout-security-msg i {
    float: none;
    margin: 0 .8rem 0 0;
    font-size: 1.3em;
    flex: 0 0 auto;
}
#order-standard_cart .checkout-security-msg .clearfix {
    display: none;
}

/* Engine 3 curated addon suggestions. Lives inside #productAddonsContainer and
   reuses the stock .panel-addon / .panel-price look so our suggestions match
   native addons. Our rows are .uwx-recs-products (NOT stock .addon-products) so
   stock's row-bound recalc handlers don't double-fire — so we restate the flex
   layout .addon-products would have given. Unlike stock, the whole panel is NOT
   click-to-toggle (that handler is scoped to .addon-products), so the panel keeps
   a default cursor to avoid implying whole-card clickability — only the toggle
   control toggles.

   RESTYLED 2026-07-31 (owner ruling): the stock iCheck blue square read as
   "anonymous" beside the Engine 1 chips, and the panel didn't share their card
   language. The row is now a chip-shaped card (same border/radius/shadow/hover as
   .uwx-plan-chip, with the CTA-green left accent that marks it as an *additive*
   offer rather than E1's blue "step up") and the control is a CTA-green switch.

   The switch is CSS-ONLY, deliberately. The theme does ship bootstrapSwitch
   (.toggle-switch-success, used on checkout.tpl) but it is initialised ONCE on
   document.ready and is NEVER re-run for #productAddonsContainer — stock's
   cyclechange handler (standard_cart/js/base.js:1925-1944) replaces the
   container's innerHTML and then re-inits iCheck only. A bootstrapSwitch here
   would therefore render on first load and collapse to a bare checkbox after any
   billing-cycle change. CSS needs no init, so it survives every replace.

   Why the selector is `label:has(input:checked)` and NOT `input:checked ~ track`:
   base.js:1936 calls jQuery('input').iCheck() UNFILTERED after the replace, which
   wraps our input in a div.icheckbox_* EVEN THOUGH it carries .no-icheck (that
   class is only honoured by the initial init at base.js:23). Measured on dev21:
   after that wrap the input and the track are no longer siblings, so a sibling
   combinator provably breaks — while the input does stay inside the label, so
   :has() holds in both states. A .uwx-recs-on class mirrored onto the label by the
   delegated handler is the fallback for engines without :has(), so the control is
   never left with no visible checked state. The native input remains the single
   source of truth: it keeps its name/value, so the POST and recalc are unchanged
   and stock capability is intact (house rule 1). */
#order-standard_cart .uwx-recs-cart {
    margin-bottom: 1rem;
    /* Switch geometry — ONE source of truth. The text indents, the track box and
       the knob travel are all derived from these, so resizing the switch cannot
       leave the description/price indented for the old width (Codex #4).
       travel = width - height + (2 * inset) is folded into the calc below. */
    --uwx-sw-w: 40px;
    --uwx-sw-h: 22px;
    --uwx-sw-gap: .6rem;
    --uwx-sw-inset: 3px;
    --uwx-sw-indent: calc(var(--uwx-sw-w) + var(--uwx-sw-gap));
}
#order-standard_cart .uwx-recs-products {
    display: flex;
    flex-wrap: wrap;
}
/* Stock's .panel-addon centres all its text (it was built for a centred tile).
   These cards are left-reading rows like the E1 chips, so the alignment is reset
   on the panel and the body; the flex label handles its own row. */
#order-standard_cart .uwx-recs-cart .panel-addon,
#order-standard_cart .uwx-recs-cart .panel-addon .panel-body {
    text-align: left;
}
/* Description and headline align to the text column (past the switch), not the
   card edge — they sit OUTSIDE the flex label in stock's <br/>+<small> flow.
   Indent is derived from the switch tokens, never re-typed. */
#order-standard_cart .uwx-recs-cart .uwx-recs-desc {
    margin-top: .4rem;
    margin-left: var(--uwx-sw-indent);
    font-size: 14px;
    color: #6c757d;
}
/* Card shell — mirrors .uwx-plan-chip's border/radius/shadow/hover so the two
   offer surfaces read as one system. Green left accent = additive extra. */
/* The stock markup carries Bootstrap's .border-0 (border:0 !important), which no
   amount of selector specificity can beat — so the borders here are !important
   too. Deliberate and minimal: only the border declarations, and only on our own
   .uwx-recs-cart panels. Overriding in CSS keeps the shared .panel-addon markup
   (also used by the stock addon list) untouched — house rule 4. */
#order-standard_cart .uwx-recs-cart .panel-addon {
    width: 100%;
    cursor: default;
    border: 1px solid #e3e6ea !important;
    border-left: 4px solid #28a745 !important; /* CTA green — an additive offer */
    border-radius: 12px;
    box-shadow: 0 1px 2px rgba(0,0,0,.04);
    transition: box-shadow .12s ease, border-color .12s ease;
}
#order-standard_cart .uwx-recs-cart .panel-addon:hover {
    box-shadow: 0 3px 10px rgba(0,0,0,.10);
}
/* The label is the whole switch row: [track] name. Grid keeps the name from
   wrapping under the track. */
#order-standard_cart .uwx-recs-cart .panel-addon label {
    display: flex;
    align-items: center;
    gap: var(--uwx-sw-gap);
    font-weight: 700;
    font-size: 15px;
    margin-bottom: 0;
    cursor: pointer;
}
/* The name is a flex item, so it needs min-width:0 to be allowed to shrink below
   its content width — without it a long unbroken catalogue name (no spaces) would
   push the card wider than the viewport at 320-360px instead of wrapping.
   overflow-wrap is the emergency break for that same no-spaces case. */
#order-standard_cart .uwx-recs-cart .uwx-recs-name {
    min-width: 0;
    overflow-wrap: anywhere;
}
/* Hide the real checkbox without removing it from the a11y tree or the form.
   Not display:none — that would drop it from tab order and from the POST in some
   engines; clip-style hiding keeps it focusable and submitted. */
#order-standard_cart .uwx-recs-cart .uwx-recs-check {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    margin: 0;
    pointer-events: none;
}
/* Stock's post-cyclechange re-init (base.js:1936) calls jQuery('input').iCheck()
   UNFILTERED — it ignores .no-icheck — so it injects its blue square wrapper next
   to our switch and the card ends up showing TWO controls (observed on dev21).
   Collapse the injected wrapper inside our cards only; the input it now contains
   still needs to be clickable/focusable, so the wrapper is zero-sized rather than
   display:none, and the .iCheck-helper overlay it adds is dropped. Scoped to
   .uwx-recs-cart, so the stock addon list below keeps its native iCheck look. */
#order-standard_cart .uwx-recs-cart .icheckbox_square-blue,
#order-standard_cart .uwx-recs-cart .iradio_square-blue {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: 0 !important;
    padding: 0 !important;
    background: none !important;
    opacity: 0;
    overflow: hidden;
}
#order-standard_cart .uwx-recs-cart .iCheck-helper {
    display: none !important;
}
#order-standard_cart .uwx-recs-cart .uwx-recs-toggle {
    position: relative;
    flex: 0 0 auto;
    display: inline-block;
    width: var(--uwx-sw-w);
    height: var(--uwx-sw-h);
    border-radius: var(--uwx-sw-h);
    /* OFF = the theme's muted token, NOT a light grey. #ced4da measured only
       1.49:1 against the white card — below the WCAG 3:1 floor for non-text UI,
       and OFF is the state every customer sees first. #6c757d is 4.69:1 and the
       white knob reads against it at the same ratio. Never a semantic colour. */
    background: #6c757d;
    transition: background-color .15s ease;
}
#order-standard_cart .uwx-recs-cart .uwx-recs-toggle::after {
    content: "";
    position: absolute;
    top: var(--uwx-sw-inset);
    left: var(--uwx-sw-inset);
    width: calc(var(--uwx-sw-h) - (2 * var(--uwx-sw-inset)));
    height: calc(var(--uwx-sw-h) - (2 * var(--uwx-sw-inset)));
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0,0,0,.25);
    transition: transform .15s ease;
}
/* ON state. Both selectors set the same declarations: :has() for modern engines,
   the JS-mirrored class as the fallback. Kept as separate rule blocks because an
   engine that cannot parse :has() would otherwise discard the whole selector
   list — including the .uwx-recs-on arm that is meant to save it. */
#order-standard_cart .uwx-recs-cart label:has(.uwx-recs-check:checked) .uwx-recs-toggle {
    background: #28a745;
}
#order-standard_cart .uwx-recs-cart label.uwx-recs-on .uwx-recs-toggle {
    background: #28a745;
}
#order-standard_cart .uwx-recs-cart label:has(.uwx-recs-check:checked) .uwx-recs-toggle::after {
    transform: translateX(calc(var(--uwx-sw-w) - var(--uwx-sw-h)));
}
#order-standard_cart .uwx-recs-cart label.uwx-recs-on .uwx-recs-toggle::after {
    transform: translateX(calc(var(--uwx-sw-w) - var(--uwx-sw-h)));
}
/* Keyboard focus must be visible even though the input itself is clipped — the
   ring is drawn on the track. Three separately-parsed rules on purpose, weakest
   assumption last:
     1. sibling — works only while the input is UNWRAPPED (initial load);
     2. :has()  — works wrapped or not, but needs a modern engine;
     3. :focus-within — the backstop that covers the case the other two miss
        together: an engine without :has() AFTER stock's AJAX re-init has wrapped
        the input, where the sibling combinator can no longer reach the track
        (Codex #3). It is coarser than :focus-visible (it also lights up on mouse
        click) but a slightly eager ring beats no ring at all, and it only
        applies where the precise rules cannot. */
#order-standard_cart .uwx-recs-cart .uwx-recs-check:focus-visible ~ .uwx-recs-toggle,
#order-standard_cart .uwx-recs-cart .uwx-recs-check:focus-visible + .uwx-recs-toggle {
    outline: 2px solid #0056b8;
    outline-offset: 2px;
}
#order-standard_cart .uwx-recs-cart label:has(.uwx-recs-check:focus-visible) .uwx-recs-toggle {
    outline: 2px solid #0056b8;
    outline-offset: 2px;
}
#order-standard_cart .uwx-recs-cart label:focus-within .uwx-recs-toggle {
    outline: 2px solid #0056b8;
    outline-offset: 2px;
}
/* Price sits on the card like the chip's price line, not as a stock grey footer
   bar. */
#order-standard_cart .uwx-recs-cart .panel-price {
    background: none;
    border: 0;
    padding: 0 1.25rem 1rem calc(1.25rem + var(--uwx-sw-indent));
    text-align: left;
    font-weight: 700;
    font-size: 15px;
    color: inherit; /* stock dims it to muted grey; the price is not secondary */
}
/* The headline (small.text-muted) sits outside the flex label too. */
#order-standard_cart .uwx-recs-cart .panel-body > small {
    display: inline-block;
    margin-left: var(--uwx-sw-indent);
}
#order-standard_cart .uwx-recs-more-toggle {
    display: inline-block;
    font-size: 14px;
    font-weight: 700;
}

/* Engine 1 plan upsell. Lives inside #productAddonsContainer, above the Engine 3
   suggestions. Chips are ANCHOR LINKS (navigational — configure a bigger plan),
   NOT checkbox panels — styled as clickable cards, distinct from .panel-addon.
   Tier vs seat carry a subtle accent difference so the two reads apart (S5). */
#order-standard_cart .uwx-plan-upsell {
    margin-bottom: 1rem;
}
#order-standard_cart .uwx-plan-upsell__chips {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}
#order-standard_cart .uwx-plan-chip {
    flex: 1 1 240px;
    /* display/flex layout for the text+CTA row is set in the CTA block below
       (2026-07-30) — do NOT re-add display:block here, it would break the
       right-aligned button. */
    padding: .85rem 1rem;
    border: 1px solid #e3e6ea;
    border-left-width: 4px;
    border-radius: 12px;
    background: #fff;
    color: inherit;
    text-decoration: none;
    box-shadow: 0 1px 2px rgba(0,0,0,.04);
    transition: box-shadow .12s ease, border-color .12s ease;
}
#order-standard_cart .uwx-plan-chip:hover,
#order-standard_cart .uwx-plan-chip:focus {
    text-decoration: none;
    box-shadow: 0 3px 10px rgba(0,0,0,.10);
    border-color: #c9ced4;
}
/* Tier offer = "upgrade" accent; seat offer = "capacity" accent. */
#order-standard_cart .uwx-plan-chip--tier { border-left-color: #2f6fed; }
#order-standard_cart .uwx-plan-chip--seat { border-left-color: #17a589; }
#order-standard_cart .uwx-plan-chip__label {
    display: block;
    font-weight: 700;
    font-size: 15px;
}
#order-standard_cart .uwx-plan-chip__sub {
    display: block;
    margin-top: .15rem;
    font-size: 13px;
    color: #6c757d;
}
#order-standard_cart .uwx-plan-chip__name {
    display: block;
    margin-top: .35rem;
    font-size: 13px;
}
#order-standard_cart .uwx-plan-chip__price {
    display: block;
    margin-top: .25rem;
    font-weight: 700;
}
/* Coupon badge, beside the discounted price (2026-07-31). Rendered ONLY when the
   cart's coupon applies to this target product; the price string next to it is
   already the discounted one. Markup carries Bootstrap's own .badge (stock
   supplies display/padding/weight/radius/nowrap) — we add ONLY the deltas, since
   this order form ships its own custom.css and does NOT inherit the client
   theme's badge-* retokening, so .badge alone would render unstyled-grey text.
   Green is "good news" per the style intent — a discount qualifies. font-size is
   pinned rather than left at Bootstrap's 75% so it holds the 15px scale. */
#order-standard_cart .uwx-plan-chip__promo {
    margin-left: .4rem;
    background: #e8faec; /* CTA green tint (.bg-highlight) */
    color: #1c7430;      /* darkened CTA green — AA contrast on the tint */
    font-size: 12px;
    vertical-align: middle;
}
/* CTA on the right (2026-07-30, owner ruling). Deliberately the SAME shape as
   the dashboard "needs attention" rows in the client theme (.uwx-row /
   .uwx-row__main / .uwx-row__actions in unlimited-next/css/custom.css ~L640-695):
   text block left, button right, stacking on phones. The chip becomes a flex row;
   .uwx-plan-chip__main keeps the four text spans in their original block flow.
   The button is .btn.btn-success — the cart's established CTA green, same class
   as viewcart.tpl's #checkout button. NOT btn-primary: this order form has its own
   custom.css and does NOT inherit the client theme's btn-primary retokening, so
   btn-primary renders stock WHMCS slate blue here (measured rgb(51,102,153)).
   house_style reserves green for CTAs and blue for links, so no colour is declared
   in this block — overriding the class would fork the token. The axis accent stays
   on the chip's left border, which is what tells tier from seat. */
#order-standard_cart .uwx-plan-chip {
    display: flex;
    align-items: center;
    gap: .9rem;
    flex-wrap: wrap;
}
#order-standard_cart .uwx-plan-chip__main {
    flex: 1 1 auto;
    min-width: 0;   /* let long plan names wrap instead of forcing overflow */
}
#order-standard_cart .uwx-plan-chip__actions {
    flex: none;
    display: flex;
    align-items: center;
}
/* Match the dashboard rows' button metrics so cart and console read identically. */
#order-standard_cart .uwx-plan-chip__cta {
    font-size: 14px;
    padding: 5px 14px;
    white-space: nowrap;
}
/* The chip is a link, so a UA focus ring may not read on a card that also has
   its own hover shadow. Make focus explicit and independent of hover, in the
   CTA green rather than the old accent blue. */
#order-standard_cart .uwx-plan-chip:focus-visible {
    outline: 2px solid #28a745;
    outline-offset: 2px;
}
/* Phones: actions drop below the text and the button goes full width — same
   breakpoint and behaviour as .uwx-row__actions in the client theme. */
@media (max-width: 575.98px) {
    #order-standard_cart .uwx-plan-chip__main { flex: 1 1 100%; }
    #order-standard_cart .uwx-plan-chip__actions { width: 100%; }
    #order-standard_cart .uwx-plan-chip__cta {
        flex: 1 1 0;
        text-align: center;
        padding-top: 8px;
        padding-bottom: 8px;
    }
}

/* Engine 2 product cross-sell. Anchor cards (navigational — configure a separate
   product), styled like the plan chips but with a distinct accent so cross-sell
   reads apart from plan-upsell. Lives inside #productAddonsContainer, between the
   plan-upsell block and the Engine 3 addon recs. */
#order-standard_cart .uwx-xsell {
    margin-bottom: 1rem;
}
#order-standard_cart .uwx-xsell__cards {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}
#order-standard_cart .uwx-xsell-card {
    flex: 1 1 240px;
    display: block;
    padding: .85rem 1rem;
    border: 1px solid #e3e6ea;
    border-left: 4px solid #b45309;   /* amber accent — distinct from plan-upsell blue/teal */
    border-radius: 12px;
    background: #fff;
    color: inherit;
    text-decoration: none;
    box-shadow: 0 1px 2px rgba(0,0,0,.04);
    transition: box-shadow .12s ease, border-color .12s ease;
}
#order-standard_cart .uwx-xsell-card:hover,
#order-standard_cart .uwx-xsell-card:focus {
    text-decoration: none;
    box-shadow: 0 3px 10px rgba(0,0,0,.10);
    border-color: #c9ced4;
}
#order-standard_cart .uwx-xsell-card__headline {
    display: block;
    font-size: 13px;
    color: #6c757d;
}
#order-standard_cart .uwx-xsell-card__name {
    display: block;
    margin-top: .15rem;
    font-weight: 700;
    font-size: 15px;
}
#order-standard_cart .uwx-xsell-card__price {
    display: block;
    margin-top: .25rem;
    font-weight: 700;
}
#order-standard_cart .uwx-xsell-card__cta {
    display: block;
    margin-top: .35rem;
    font-size: 13px;
    font-weight: 700;
    color: #b45309;
}
#order-standard_cart .uwx-xsell-more-toggle {
    display: inline-block;
    font-size: 14px;
    font-weight: 700;
}

/* unlimited-next-cart addition (2026-07-28, owner ruling): visible running
   total on the configure step. #producttotal carries the card classes itself
   (recalctotals() replaces only its children); hidden until the first AJAX
   response lands so no empty card flashes. Deliberately NOT .summary-container
   (that class forces transparent/zero-radius/min-height for the renewals
   pages' hidden target). */
#order-standard_cart #producttotal.uwx-run-total { padding: 1rem 1.5rem; }
#order-standard_cart #producttotal.uwx-run-total:empty { display: none; }
#order-standard_cart .uwx-run-total .product-name {
    display: block;
    font-size: 1.1rem;
    font-weight: 700;
}
#order-standard_cart .uwx-run-total .product-group {
    display: block;
    color: #6c757d;
    margin-bottom: .75rem;
}
#order-standard_cart .uwx-run-total .summary-totals {
    border-top: 1px solid #e8eaef;
    margin-top: .5rem;
    padding-top: .5rem;
    color: #6c757d;
}
#order-standard_cart .uwx-run-total .total-due-today {
    border-top: 1px solid #e8eaef;
    margin-top: .5rem;
    padding-top: .75rem;
    font-size: 1.25rem;
    font-weight: 700;
}
#order-standard_cart .uwx-run-total .total-due-today .amt { float: right; }

/* Order-scoped pay-today block on a DISCOUNTED MULTI-LINE cart (2026-08-08).
   The figure is $carttotals.total — the whole order's, not this line's — so it
   is set apart from the line it sits under rather than styled identically: the
   whole block is the scope statement, and the count line below carries the
   "why is this the same on every product" answer. Same weight and rule as the
   sole-line block so it does not read as a different KIND of total; only the
   sub-line is quieter. */
#order-standard_cart .uwx-run-total .total-due-today.uwx-order-total { overflow: hidden; }
#order-standard_cart .uwx-run-total .uwx-order-total__scope {
    display: block;
    clear: both;
    font-size: .8rem;
    font-weight: 400;
    color: #6c757d;
}

/* Stock "Totals" row (the per-cycle RECURRING figure) on the review step.
   Hidden by default via the hide_cart_recurring_totals operator switch: it
   ignores one-time discounts and carries VAT on the undiscounted base, so it
   prints a figure no invoice ever carries, and it is the only VAT-inclusive
   number in this ex-VAT stack. The markup is KEPT so base.js can keep writing
   into #recurring on AJAX recalc (house rules 1/2/4) — display:none, not
   removal. The row also carries .border-top, so hiding it leaves the VAT row
   above and Total Due Today below correctly adjacent. */
#order-standard_cart .uwx-hide-recurring-totals { display: none; }

/* Suggested-domains promo badge (HOT/NEW/SALE) — upstream 8.13 layout bug.
   Stock scripts.min.js reveals the badge with jQuery .show(), which writes
   inline display:block on the .promo span (jQuery's default-display fallback),
   and stock all.min.css styles .promo.hot/.new/.sale with padding+background
   but NO display rule — so the badge renders as a full-width red bar that
   pushes the floated .actions (price + Add to Cart) onto the next line,
   "laddering" every promoted row. Reproduced on STOCK standard_cart on dev21
   2026-08-07, so this is not a fork regression. !important is required to
   beat that inline style; scoping to the group classes (only added at reveal
   time) keeps the dormant badge hidden via .w-hidden as stock intends. */
#order-standard_cart .suggested-domains .promo.hot,
#order-standard_cart .suggested-domains .promo.new,
#order-standard_cart .suggested-domains .promo.sale {
    display: inline-block !important;
}

/* Running order summary on the two renewals pages (audit cart/D3-2).
   Stock puts this in a right-hand sidebar; this fork's renewals pages are a
   full-width card grid with no sidebar column, so it sits under the list as its
   own card. Same card vocabulary as the renewal items themselves — no new
   tokens.

   These rules lived in a sibling css/cart-page.css from aa4c6bb until
   2026-08-09, and NOTHING EVER LOADED IT: common.tpl layers exactly
   standard_cart/all.min.css + this sheet, and the only cart-page.css in the
   cascade is the CLIENT theme's (includes/cart-head.tpl:13), a different file.
   So the D3-2 remedy shipped as an unstyled #orderSummary block on both
   renewals pages. Moved here — the sheet that is actually loaded — rather than
   adding a fifth line to common.tpl, whose whole point is fidelity to the live
   unlimited_cart_v2 asset stack. */
/* Card vocabulary matches the renewal cards beside it (border-0 rounded-xxl
   shadow-sm — 15px radius, whisper shadow), not the earlier one-off 12px
   bordered box; symmetric vertical margins separate it from the card grid
   above and the Continue CTA below (owner report 2026-08-14: it sat flush). */
.uwx-renewal-summary {
    max-width: 420px;
    margin: 32px auto;
    padding: 1rem 1.5rem;
    background: #fff;
    border: 0;
    border-radius: 15px;
    box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075);
}
.uwx-renewal-summary .summary-container:empty { display: none; }
.uwx-renewal-summary .loader { text-align: center; padding: 8px 0; }

/* The fragment AJAXed into #producttotal (ordersummary.tpl, renewals branch)
   is styled by STOCK only under .order-summary — a wrapper class this card
   does not carry (and must not: stock's .order-summary is the dark sidebar
   panel). Without these rules the injected .product-name /.summary-totals /
   .total-due-today rows rendered as bare inline spans — no separation, no
   emphasis, the "missing padding/alignment" reported 2026-08-14. Same values
   as the .uwx-run-total rules above (the configure step's rendering of the
   SAME fragment) so the two surfaces stay in step. */
.uwx-renewal-summary .product-name {
    display: block;
    font-size: 1.1rem;
    font-weight: 700;
}
.uwx-renewal-summary .summary-totals {
    border-top: 1px solid #e8eaef;
    margin-top: .5rem;
    padding-top: .5rem;
    color: #6c757d;
}
.uwx-renewal-summary .total-due-today {
    border-top: 1px solid #e8eaef;
    margin-top: .5rem;
    padding-top: .75rem;
    font-size: 1.25rem;
    font-weight: 700;
}
.uwx-renewal-summary .total-due-today .amt { float: right; }
