/* =====================================================================
   MVLTD Glass — Cart / Order Form theme  (v2.12.0)
   ---------------------------------------------------------------------
   NON-INVASIVE OVERLAY for a verbatim copy of WHMCS `standard_cart`
   (renamed to `mvltd-cart`). This file ONLY restyles presentation —
   it changes NO field names, IDs, or JS, so the payment/gateway flow
   behaves exactly like stock standard_cart.

   Loaded once via mvltd-cart/common.tpl. It reuses the CSS variables
   defined in the main theme (templates/mvltd_suite/css/theme.css), which
   is already loaded on every page by header.tpl. Fallback values are
   provided in case the cart renders standalone.
   ===================================================================== */

:root {
  --cc-bg:        var(--mvltd-bg, #0a0a0a);
  --cc-glass:     var(--mvltd-glass, rgba(255,255,255,.06));
  --cc-glass2:    var(--mvltd-glass-strong, rgba(255,255,255,.09));
  --cc-border:    var(--mvltd-glass-border, rgba(255,255,255,.13));
  --cc-line2:     var(--mvltd-line2, rgba(255,255,255,.06));
  --cc-text:      var(--mvltd-text, #eef0ff);
  --cc-muted:     var(--mvltd-muted, #a2a6c8);
  --cc-accent:    var(--mvltd-accent, #7c5cff);
  --cc-accent2:   var(--mvltd-accent2, #00e0ff);
  --cc-ok:        var(--mvltd-ok, #3ddc84);
  --cc-warn:      var(--mvltd-warn, #ffcf5c);
  --cc-err:       var(--mvltd-err, #ff5c7c);
  --cc-info:      var(--mvltd-info, #00e0ff);
  --cc-radius:    var(--mvltd-radius, 16px);
  --cc-radius-sm: var(--mvltd-radius-sm, 11px);
  --cc-grad:      linear-gradient(120deg, var(--cc-accent), var(--cc-accent2));
}

/* ---------------------------------------------------------------------
   1. Shell / layout
   --------------------------------------------------------------------- */
#order-standard_cart,
#order-standard_cart * { box-sizing: border-box; }

#order-standard_cart {
  color: var(--cc-text);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, 'Segoe UI', Roboto, Arial, sans-serif;
}

#order-standard_cart a { color: var(--cc-accent2); }
#order-standard_cart a:hover { color: #5bd5ff; }

/* Two-column layout: sidebar + body */
#order-standard_cart .cart-sidebar { padding-right: 18px; }
#order-standard_cart .cart-body    { padding-left: 4px; }

/* Section header ("Web Hosting", "Checkout", group headline) */
#order-standard_cart .header-lined {
  border-bottom: 1px solid var(--cc-border);
  padding-bottom: 14px;
  margin-bottom: 22px;
}
#order-standard_cart .header-lined h1,
#order-standard_cart .font-size-36 {
  font-weight: 800;
  letter-spacing: -.02em;
  color: var(--cc-text);
  margin: 0 0 6px;
}
#order-standard_cart .header-lined p { color: var(--cc-muted); margin: 0; }

/* Sub-headings inside checkout ("Personal Information", "Payment Details") */
#order-standard_cart .sub-heading {
  border-bottom: 1px solid var(--cc-border);
  margin: 26px 0 18px;
  line-height: 1;
}
#order-standard_cart .sub-heading .primary-bg-color,
#order-standard_cart .sub-heading span {
  display: inline-block;
  background: var(--cc-grad) !important;
  color: #fff !important;
  padding: 8px 16px;
  border-radius: var(--cc-radius-sm) var(--cc-radius-sm) 0 0;
  font-weight: 700;
  font-size: .95rem;
}

/* ---------------------------------------------------------------------
   2. Sidebar categories (panel.card.card-sidebar + list-group)
   --------------------------------------------------------------------- */
#order-standard_cart .panel,
#order-standard_cart .card {
  background: var(--cc-glass);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius) !important;
  box-shadow: none !important;
  margin-bottom: 18px;
  overflow: hidden;
}
#order-standard_cart .panel-heading,
#order-standard_cart .card-header {
  background: transparent !important;
  border-bottom: 1px solid var(--cc-line2) !important;
  padding: 14px 18px !important;
}
#order-standard_cart .panel-title,
#order-standard_cart .card-header h3 {
  font-size: 1rem; font-weight: 700; color: var(--cc-text); margin: 0;
}
#order-standard_cart .panel-body,
#order-standard_cart .card-body { padding: 16px 18px !important; color: var(--cc-muted); }

#order-standard_cart .list-group { border-radius: 0; }
#order-standard_cart .list-group-item {
  background: transparent !important;
  border: none !important;
  border-top: 1px solid var(--cc-line2) !important;
  color: var(--cc-muted) !important;
  padding: 12px 18px !important;
  transition: background .15s ease, color .15s ease, padding-left .15s ease;
}
#order-standard_cart .list-group-item:first-child { border-top: none !important; }
#order-standard_cart .list-group-item:hover {
  background: var(--cc-glass2) !important;
  color: var(--cc-text) !important;
  padding-left: 22px !important;
}
#order-standard_cart .list-group-item.active {
  background: var(--cc-grad) !important;
  color: #fff !important;
  border: none !important;
}
#order-standard_cart .badge {
  background: var(--cc-glass2);
  color: var(--cc-text);
  border: 1px solid var(--cc-border);
  border-radius: 999px;
  font-weight: 600;
}
#order-standard_cart .card-minimise, #order-standard_cart .panel-minimise { color: var(--cc-muted); }

/* ---------------------------------------------------------------------
   3. Store product cards (products.tpl)
   --------------------------------------------------------------------- */
/* Cards size to their OWN content (no stretch-to-tallest) so the "Order Now"
   footer sits directly under the content instead of being pushed down by a
   giant void. align-items:flex-start is the key fix. */
#order-standard_cart .products .row-eq-height { display: flex; flex-wrap: wrap; align-items: flex-start; }
#order-standard_cart .products .col-md-6 { display: flex; align-items: flex-start; margin-bottom: 22px; }

#order-standard_cart .product {
  display: flex;
  flex-direction: column;
  width: 100%;
  /* size to content — no forced height, so no empty gap above "Order Now". */
  height: auto;
  align-self: flex-start;
  max-width: 420px;
  margin: 0 auto;
  background: var(--cc-glass);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid var(--cc-border);
  border-radius: var(--cc-radius);
  overflow: hidden;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
#order-standard_cart .product:hover {
  transform: translateY(-3px);
  border-color: var(--cc-accent);
  box-shadow: 0 14px 40px color-mix(in srgb, var(--mvltd-accent, #7c5cff) 22%, transparent);
}
#order-standard_cart .product > header {
  background: transparent;
  padding: 18px 20px 12px;
  border-bottom: 1px solid var(--cc-line2);
  font-size: 1.2rem;
  font-weight: 800;
  color: var(--cc-text);
}
#order-standard_cart .product > header .qty {
  display: inline-block; font-size: .72rem; font-weight: 600;
  color: var(--cc-muted); margin-left: 8px;
}
#order-standard_cart .product-desc {
  /* WHMCS's default order-form CSS floats .product-desc LEFT at ~55% width and
     the footer RIGHT — that's what made the card tall and put "Order Now" below
     (not beside) everything. Force it to un-float and be full-width so our
     flex-column card layout actually applies. */
  float: none !important;
  clear: both !important;
  width: 100% !important;
  flex: 0 0 auto;
  padding: 12px 18px;
  color: var(--cc-muted);
}
/* cap any preview image inside the product blurb so it can't balloon the card */
#order-standard_cart .product-desc img {
  max-width: 100%;
  max-height: 130px;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: var(--cc-radius-sm);
  display: block;
  margin: 8px 0;
}
#order-standard_cart .product-desc p { margin: 0 0 12px; }
#order-standard_cart .product-desc ul { list-style: none; padding: 0; margin: 0; }
#order-standard_cart .product-desc li {
  padding: 7px 0;
  border-bottom: 1px solid var(--cc-line2);
  color: var(--cc-text);
  font-size: .9rem;
}
#order-standard_cart .product-desc li:last-child { border-bottom: none; }
#order-standard_cart .product-desc .feature-value {
  font-weight: 700; color: var(--cc-accent2); margin-right: 6px;
}
#order-standard_cart .product > footer {
  /* un-float (WHMCS floats it right at ~35% width) and make it a full-width
     row so the price sits on the LEFT and "Order Now" on the RIGHT, directly
     under the description — no void, no stacking. */
  float: none !important;
  clear: both !important;
  width: 100% !important;
  margin-top: 0;
  padding: 12px 18px 14px;
  border-top: 1px solid var(--cc-line2);
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: nowrap;
}
/* price block on the left takes remaining room; button hugs its content, right */
#order-standard_cart .product > footer .product-pricing { flex: 1 1 auto; min-width: 0; text-align: left; }
#order-standard_cart .product > footer .btn-order-now,
#order-standard_cart .product > footer > a.btn {
  flex: 0 0 auto;
  white-space: nowrap;
  margin: 0 !important;
  padding: 9px 16px !important;
  font-size: .9rem !important;
}
#order-standard_cart .product-pricing {
  color: var(--cc-muted); font-size: .82rem; line-height: 1.25;
  margin: 0; padding: 0;
}
/* the "Monthly" text sits tight under the price (kill the tall <br> gaps) */
#order-standard_cart .product-pricing br { display: none; }
#order-standard_cart .product-pricing .price + br { display: none; }
#order-standard_cart .product-pricing .price {
  display: block;
  font-size: 1.7rem;
  font-weight: 800;
  background: var(--cc-grad);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  line-height: 1.1;
}
#order-standard_cart .product-pricing small { color: var(--cc-muted); }

/* ---------------------------------------------------------------------
   4. Buttons
   --------------------------------------------------------------------- */
#order-standard_cart .btn {
  border-radius: var(--cc-radius-sm);
  font-weight: 700;
  border: 1px solid transparent;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease, color .15s ease, border-color .15s ease;
}
#order-standard_cart .btn-primary,
#order-standard_cart .btn-success,
#order-standard_cart .btn-order-now,
#order-standard_cart #btnCompleteOrder,
#order-standard_cart .btn-checkout {
  background: var(--cc-grad) !important;
  color: #fff !important;
  border: none !important;
}
#order-standard_cart .btn-primary:hover,
#order-standard_cart .btn-success:hover,
#order-standard_cart .btn-order-now:hover,
#order-standard_cart #btnCompleteOrder:hover,
#order-standard_cart .btn-checkout:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 24px color-mix(in srgb, var(--mvltd-accent, #7c5cff) 4%, transparent);
  color: #fff !important;
}
#order-standard_cart .btn-default {
  background: var(--cc-glass) !important;
  border: 1px solid var(--cc-border) !important;
  color: var(--cc-text) !important;
}
#order-standard_cart .btn-default:hover {
  border-color: var(--cc-accent) !important;
  color: var(--cc-accent2) !important;
}
#order-standard_cart .btn-info {
  background: color-mix(in srgb, var(--mvltd-accent2, #00e0ff) 14%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--mvltd-accent2, #00e0ff) 35%, transparent) !important;
  color: var(--cc-accent2) !important;
}
#order-standard_cart .btn-link { color: var(--cc-accent2) !important; }
#order-standard_cart .btn-danger {
  background: rgba(255,92,124,.14) !important;
  border: 1px solid rgba(255,92,124,.35) !important;
  color: #ff7d97 !important;
}
#order-standard_cart .btn-danger:hover {
  background: var(--cc-err) !important; border-color: var(--cc-err) !important; color: #fff !important;
}

/* ---------------------------------------------------------------------
   5. Cart items (viewcart.tpl)
   --------------------------------------------------------------------- */
#order-standard_cart .cart-items,
#order-standard_cart .cart-items-header,
#order-standard_cart .item {
  color: var(--cc-text);
}
#order-standard_cart .cart-items-header {
  border-bottom: 1px solid var(--cc-border);
  padding-bottom: 10px;
  color: var(--cc-muted);
  font-weight: 700;
  text-transform: uppercase;
  font-size: .78rem;
  letter-spacing: .04em;
}
#order-standard_cart .item {
  padding: 16px 0;
  border-bottom: 1px solid var(--cc-line2);
}
#order-standard_cart .item-title { font-weight: 700; color: var(--cc-text); }
#order-standard_cart .item-domain { color: var(--cc-muted); font-size: .88rem; }
#order-standard_cart .item-group  { color: var(--cc-muted); font-size: .85rem; }
#order-standard_cart .item-price  { font-weight: 700; color: var(--cc-accent2); }
#order-standard_cart .item-qty    { color: var(--cc-muted); }
#order-standard_cart .cycle       { color: var(--cc-muted); font-size: .85rem; }

/* Continue shopping / update links */
#order-standard_cart .continue-shopping a,
#order-standard_cart .continue-shopping { color: var(--cc-muted); }

/* ---------------------------------------------------------------------
   6. Order summary box (viewcart + checkout)
   --------------------------------------------------------------------- */
#order-standard_cart .order-summary,
#order-standard_cart #orderSummary {
  background: var(--cc-glass);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border: 1px solid var(--cc-border);
  border-radius: var(--cc-radius);
  padding: 22px;
}
#order-standard_cart .order-summary h2,
#order-standard_cart .order-summary .font-size-30 {
  font-weight: 800; color: var(--cc-text); margin: 0 0 16px; font-size: 1.4rem;
}
#order-standard_cart .summary-container { color: var(--cc-muted); }
#order-standard_cart .summary-container .subtotal,
#order-standard_cart .summary-container .bordered-totals > div,
#order-standard_cart .recurring-totals {
  padding: 9px 0;
  border-bottom: 1px solid var(--cc-line2);
  font-size: .92rem;
}
#order-standard_cart .bordered-totals {
  border-top: 1px solid var(--cc-line2);
  border-bottom: 1px solid var(--cc-line2);
  margin: 6px 0;
}
#order-standard_cart .recurring-totals .cost { color: var(--cc-text); font-weight: 600; }
#order-standard_cart .total-due-today {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 16px 0 4px;
  font-weight: 800; font-size: 1.2rem; color: var(--cc-text);
}
#order-standard_cart .total-due-today .cost,
#order-standard_cart #totalDueToday {
  background: var(--cc-grad);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}

/* Promo code tabs */
#order-standard_cart .nav-tabs { border-bottom: 1px solid var(--cc-border); }
#order-standard_cart .nav-tabs > li > a,
#order-standard_cart .nav-tabs .nav-link {
  color: var(--cc-muted) !important;
  border: none !important;
  background: transparent !important;
}
#order-standard_cart .nav-tabs > li.active > a,
#order-standard_cart .nav-tabs .nav-link.active {
  color: var(--cc-text) !important;
  border-bottom: 2px solid var(--cc-accent) !important;
  background: transparent !important;
}
#order-standard_cart .promo, #order-standard_cart .promotion-code { color: var(--cc-muted); }

/* ---------------------------------------------------------------------
   7. Forms / inputs
   --------------------------------------------------------------------- */
#order-standard_cart .form-control,
#order-standard_cart .field,
#order-standard_cart select,
#order-standard_cart textarea,
#order-standard_cart input[type="text"],
#order-standard_cart input[type="email"],
#order-standard_cart input[type="tel"],
#order-standard_cart input[type="password"],
#order-standard_cart input[type="number"] {
  background: rgba(255,255,255,.04) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius-sm) !important;
  color: var(--cc-text) !important;
  box-shadow: none !important;
  padding: 11px 14px !important;
  font-size: .95rem;
  transition: border-color .18s ease, background .18s ease;
}
#order-standard_cart .form-control:focus,
#order-standard_cart .field:focus,
#order-standard_cart select:focus,
#order-standard_cart textarea:focus,
#order-standard_cart input:focus {
  outline: none !important;
  border-color: var(--cc-accent) !important;
  background: color-mix(in srgb, var(--mvltd-accent, #7c5cff) 06%, transparent) !important;
}
#order-standard_cart .form-control::placeholder,
#order-standard_cart .field::placeholder { color: var(--cc-muted); opacity: .7; }
#order-standard_cart select option { background: #141426; color: var(--cc-text); }
#order-standard_cart label,
#order-standard_cart .control-label { color: var(--cc-text); font-weight: 600; }

/* prepend-icon fields (WHMCS icon-in-field pattern) */
#order-standard_cart .prepend-icon { position: relative; }
#order-standard_cart .prepend-icon .field-icon {
  position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
  color: var(--cc-muted); z-index: 3; pointer-events: none;
}
#order-standard_cart .prepend-icon .field,
#order-standard_cart .prepend-icon .form-control { padding-left: 38px !important; }
/* the field-icon on a card layout can sit at top; keep it aligned */
#order-standard_cart .cc-input-container .prepend-icon .field-icon { top: 20px; transform: none; }

/* radios / checkboxes */
#order-standard_cart input[type="radio"],
#order-standard_cart input[type="checkbox"] { accent-color: var(--cc-accent); }
#order-standard_cart .radio-inline, #order-standard_cart .checkbox-inline { color: var(--cc-muted); }

/* ---------------------------------------------------------------------
   8. Payment / credit-card fields  (KEEP field-error-msg HIDDEN
      by default — WHMCS reveals it via .has-error / showInputError().
      Forcing it visible caused the previous false "not valid" errors.)
   --------------------------------------------------------------------- */
#order-standard_cart .cc-input-container {
  margin-top: 8px;
  padding: 18px;
  border: 1px solid var(--cc-border);
  border-radius: var(--cc-radius);
  background: rgba(255,255,255,.03);
}
#order-standard_cart .field-error-msg { display: none; color: var(--cc-err); font-size: .82rem; margin-top: 5px; }
#order-standard_cart .has-error .field-error-msg,
#order-standard_cart .form-group.has-error .field-error-msg { display: block; }
#order-standard_cart .has-error .field,
#order-standard_cart .has-error .form-control,
#order-standard_cart .form-group.has-error .field,
#order-standard_cart .form-group.has-error .form-control {
  border-color: rgba(255,92,124,.65) !important;
}
#order-standard_cart .new-card-container { margin-bottom: 4px; }
#order-standard_cart .payment-methods { accent-color: var(--cc-accent); }
#order-standard_cart .gateway-errors {
  border-radius: var(--cc-radius-sm);
  background: rgba(255,92,124,.10) !important;
  border: 1px solid rgba(255,92,124,.35) !important;
  color: #ff8a9e !important;
}
/* input-group ? popover button next to CVV */
#order-standard_cart .input-group-btn .btn,
#order-standard_cart .input-group-append .btn {
  border: 1px solid var(--cc-border) !important;
  border-left: none !important;
  background: rgba(255,255,255,.05) !important;
  color: var(--cc-muted) !important;
  border-radius: 0 var(--cc-radius-sm) var(--cc-radius-sm) 0 !important;
}
/* WHMCS utility that hides elements — must actually hide */
#order-standard_cart .w-hidden { display: none !important; }

/* ---------------------------------------------------------------------
   9. Alerts
   --------------------------------------------------------------------- */
#order-standard_cart .alert {
  border-radius: var(--cc-radius);
  border: 1px solid var(--cc-border) !important;
  padding: 14px 18px !important;
}
#order-standard_cart .alert-success { background: rgba(61,220,132,.10) !important; color: #7ee6a8 !important; border-color: rgba(61,220,132,.30) !important; }
#order-standard_cart .alert-info    { background: color-mix(in srgb, var(--mvltd-accent2, #00e0ff) 08%, transparent)  !important; color: var(--cc-accent2) !important; border-color: color-mix(in srgb, var(--mvltd-accent2, #00e0ff) 30%, transparent) !important; }
#order-standard_cart .alert-warning { background: rgba(255,207,92,.10) !important; color: #ffd97a !important; border-color: rgba(255,207,92,.30) !important; }
#order-standard_cart .alert-danger  { background: rgba(255,92,124,.10) !important; color: #ff8a9e !important; border-color: rgba(255,92,124,.35) !important; }

/* ---------------------------------------------------------------------
   10. Password strength meter
   --------------------------------------------------------------------- */
#order-standard_cart .progress {
  background: rgba(255,255,255,.06);
  border-radius: 999px;
  height: 8px;
  overflow: hidden;
  box-shadow: none;
}
#order-standard_cart .progress-bar { background: var(--cc-grad); }
#order-standard_cart .progress-bar-success { background: var(--cc-ok) !important; }

/* ---------------------------------------------------------------------
   11. Tables (config summary, invoice-style rows)
   --------------------------------------------------------------------- */
#order-standard_cart .table { color: var(--cc-muted); }
#order-standard_cart .table > thead > tr > th,
#order-standard_cart .table > tbody > tr > td,
#order-standard_cart .table > tbody > tr > th {
  border-color: var(--cc-line2) !important;
  padding: 11px 14px;
}
#order-standard_cart .table > thead > tr > th { color: var(--cc-text); border-bottom: 1px solid var(--cc-border) !important; }

/* ---------------------------------------------------------------------
   12. Responsive
   --------------------------------------------------------------------- */
@media (max-width: 767px) {
  #order-standard_cart .cart-sidebar { padding-right: 0; margin-bottom: 18px; }
  /* stack product cards full-width and keep them compact on phones */
  #order-standard_cart .products .col-md-6 { width: 100%; margin-bottom: 16px; }
  #order-standard_cart .product { max-width: 100%; }
  #order-standard_cart .product > header { font-size: 1.05rem; padding: 14px 16px 10px; }
  #order-standard_cart .product-desc { padding: 12px 16px; }
  #order-standard_cart .product-desc img { max-height: 110px; }
  #order-standard_cart .product > footer { flex-direction: column; align-items: stretch; text-align: center; gap: 10px; }
  #order-standard_cart .product-pricing .price { font-size: 1.4rem; }
  #order-standard_cart .btn-order-now { width: 100%; }

  /* cross-sell modal: near-full-width, still fits the screen with no scroll */
  .modal-dialog { max-width: 100%; padding: 10px; }
  .modal-content { max-height: calc(100vh - 20px); }
  .modal-body { padding: 12px 14px; }
  .modal-body img { max-width: 120px !important; max-height: 78px !important; }
  .modal-footer .btn { width: 100%; }
}

/* =====================================================================
   13. CORRECTIVE OVERRIDES (v2.1.0)
   ---------------------------------------------------------------------
   These fix the white / unstyled panels that come from the cart's own
   all.min.css and from the site's theme.css. Every real semantic class
   used by standard_cart's viewcart / checkout is forced onto the dark
   MVLTD Glass surface here. Also restores Bootstrap modal behaviour
   (the Remove / Empty Cart confirmations) which was rendering inline.
   ===================================================================== */

/* ---- 13a. Kill white backgrounds on ALL cart surfaces ---- */
#order-standard_cart .view-cart-items,
#order-standard_cart .view-cart-items-header,
#order-standard_cart .view-cart-tabs,
#order-standard_cart .view-cart-tabs .tab-content,
#order-standard_cart .order-summary,
#order-standard_cart .summary-container,
#order-standard_cart .secondary-cart-body,
#order-standard_cart .view-cart-promotion-code,
#order-standard_cart .panel,
#order-standard_cart .panel-body,
#order-standard_cart .well,
#order-standard_cart .card-body,
#order-standard_cart .cart-checkout-content,
#order-standard_cart .clientarea-content,
#order-standard_cart .checkout-cart-item {
  background: var(--cc-glass) !important;
  color: var(--cc-text) !important;
  border-color: var(--cc-border) !important;
}

/* Panels get the rounded glass card treatment + spacing */
#order-standard_cart .view-cart-items,
#order-standard_cart .view-cart-tabs,
#order-standard_cart .order-summary,
#order-standard_cart .panel,
#order-standard_cart .well {
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius) !important;
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  box-shadow: 0 10px 34px rgba(0,0,0,.45);
}

/* Force readable text on everything inside the cart surfaces */
#order-standard_cart .view-cart-items *,
#order-standard_cart .view-cart-items-header *,
#order-standard_cart .view-cart-tabs *,
#order-standard_cart .order-summary *,
#order-standard_cart .summary-container *,
#order-standard_cart .panel *,
#order-standard_cart .well * {
  color: var(--cc-text);
}
#order-standard_cart .view-cart-items .item-domain,
#order-standard_cart .view-cart-items .item-group,
#order-standard_cart .view-cart-items .cycle,
#order-standard_cart .order-summary .cycle,
#order-standard_cart .summary-container .cycle,
#order-standard_cart .text-muted,
#order-standard_cart small { color: var(--cc-muted) !important; }

/* ---- 13b. The blue "Product/Options  Price/Cycle" header bar ---- */
#order-standard_cart .view-cart-items-header {
  background: var(--cc-grad) !important;
  border: none !important;
  border-radius: var(--cc-radius-sm) var(--cc-radius-sm) 0 0 !important;
  color: #fff !important;
  font-weight: 700;
  letter-spacing: .3px;
  padding: 14px 18px !important;
  box-shadow: none !important;
}
#order-standard_cart .view-cart-items-header * { color: #fff !important; }
/* items panel sits flush under the header */
#order-standard_cart .view-cart-items {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
  padding: 4px 18px !important;
}

/* ---- 13c. Line items ---- */
#order-standard_cart .view-cart-items .item {
  border-bottom: 1px solid var(--cc-line2) !important;
  padding: 16px 0 !important;
  background: transparent !important;
}
#order-standard_cart .view-cart-items .item:last-child { border-bottom: none !important; }
#order-standard_cart .item-title { color: var(--cc-text) !important; font-weight: 700; }
#order-standard_cart .item-title .btn-link { color: var(--cc-accent2) !important; text-decoration: none; }
#order-standard_cart .item-price,
#order-standard_cart .item .text-right { color: var(--cc-text) !important; font-weight: 700; }

/* ---- 13d. Promo / tabs ---- */
#order-standard_cart .view-cart-tabs { padding: 6px 18px 18px !important; margin-top: 20px; }
#order-standard_cart .nav-tabs { border-bottom: 1px solid var(--cc-border) !important; }
#order-standard_cart .nav-tabs .nav-link,
#order-standard_cart .nav-tabs > li > a {
  color: var(--cc-muted) !important;
  background: transparent !important;
  border: none !important;
  border-bottom: 2px solid transparent !important;
  border-radius: 0 !important;
}
#order-standard_cart .nav-tabs .nav-link.active,
#order-standard_cart .nav-tabs > li.active > a,
#order-standard_cart .nav-tabs > li.nav-item.active > a {
  color: var(--cc-text) !important;
  background: transparent !important;
  border-bottom: 2px solid var(--cc-accent) !important;
}
#order-standard_cart .view-cart-promotion-code {
  border-radius: var(--cc-radius-sm) !important;
  padding: 10px 14px !important;
  margin-bottom: 10px;
}

/* ---- 13e. Order summary ---- */
#order-standard_cart .order-summary { padding: 20px !important; }
#order-standard_cart .order-summary h2,
#order-standard_cart .order-summary .font-size-30 { color: var(--cc-text) !important; }
#order-standard_cart .summary-container {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
}
#order-standard_cart .subtotal,
#order-standard_cart .bordered-totals,
#order-standard_cart .recurring-totals { color: var(--cc-text) !important; }
#order-standard_cart .bordered-totals {
  border-top: 1px solid var(--cc-border) !important;
  border-bottom: 1px solid var(--cc-border) !important;
}
#order-standard_cart .total-due-today,
#order-standard_cart #totalDueToday {
  background: none !important;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  background-image: var(--cc-grad) !important;
  font-weight: 800;
}

/* ---- 13f. Labels / control-labels readable ---- */
#order-standard_cart label,
#order-standard_cart .control-label,
#order-standard_cart legend { color: var(--cc-text) !important; }

/* ---- 13g. Buttons that appear in the cart ---- */
#order-standard_cart .btn-checkout,
#order-standard_cart .btn-success {
  background: var(--cc-grad) !important;
  border: none !important;
  color: #fff !important;
  font-weight: 700;
  box-shadow: 0 8px 22px color-mix(in srgb, var(--mvltd-accent, #7c5cff) 35%, transparent);
}
#order-standard_cart .btn-checkout:hover,
#order-standard_cart .btn-success:hover { filter: brightness(1.08); }
#order-standard_cart .empty-cart .btn,
#order-standard_cart .btn-default {
  background: var(--cc-glass2) !important;
  border: 1px solid var(--cc-border) !important;
  color: var(--cc-text) !important;
}
#order-standard_cart .btn-default:hover { border-color: var(--cc-accent) !important; color:#fff !important; }

/* =====================================================================
   14. BOOTSTRAP MODAL RESTORE  (Remove Item / Empty Cart confirmations)
   ---------------------------------------------------------------------
   Our site theme.css replaced Bootstrap, so the cart's all.min.css has no
   .modal positioning -> the confirm boxes were dumping inline at the very
   bottom of the page. This restores proper fixed, centered, backdropped
   modal behaviour AND themes them in MVLTD Glass. These rules are NOT
   scoped to #order-standard_cart because Bootstrap appends the backdrop to
   <body>, but they only touch .modal* elements so they're safe.
   ===================================================================== */
.modal {
  position: fixed !important;
  top: 0; left: 0;
  z-index: 1050;
  display: none;
  width: 100%; height: 100%;
  /* safety net: if the dialog ever exceeds the viewport, the whole modal can
     scroll so the Continue footer is always reachable (it won't normally,
     because .modal-content is height-capped and its body scrolls internally) */
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  transition: transform .25s ease-out;
  transform: translateY(-30px);
}
.modal.show { display: block !important; }
.modal.show .modal-dialog { transform: none; }
.modal.in { display: block !important; }              /* BS3 fallback */
.modal.in .modal-dialog { transform: none; }          /* BS3 dialog reset */
.modal.fade.in .modal-dialog { transform: none; }
.modal-open { overflow: hidden; }
.modal-dialog {
  position: relative;
  width: auto;
  /* Centre in the viewport, but never taller than the screen. When the content
     is TALLER than the viewport (short window / many toolbars) the dialog
     top-aligns instead of centring so the top isn't clipped, and the modal-body
     scrolls internally — the Continue footer stays visible either way. */
  margin: 0 auto;
  max-width: 470px;
  min-height: calc(100% - 24px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px;
  pointer-events: none;
}
.modal-content {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-height: calc(100vh - 24px);   /* fit the screen; body scrolls if needed */
  overflow: hidden;                 /* clip to the rounded card; body handles scroll */
  pointer-events: auto;
  background: #14141c !important;
  background: var(--mvltd-bg, #14141c) !important;
  /* theme-driven tint (was hardcoded purple/cyan -> never recoloured) */
  background-image: linear-gradient(180deg,
      color-mix(in srgb, var(--mvltd-accent, #7c5cff) 12%, transparent),
      color-mix(in srgb, var(--mvltd-accent2, #00e0ff) 6%, transparent)) !important;
  border: 1px solid var(--mvltd-glass-border, rgba(255,255,255,.14)) !important;
  border-radius: var(--mvltd-radius, 16px) !important;
  box-shadow: 0 24px 70px rgba(0,0,0,.65) !important;
  color: var(--mvltd-text, #eef0ff) !important;
  outline: 0;
}
.modal-header {
  flex: 0 0 auto;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 10px 18px;
  border-bottom: 1px solid var(--mvltd-glass-border, rgba(255,255,255,.12)) !important;
}
.modal-body {
  position: relative;
  flex: 1 1 auto;                   /* the ONLY scrollable region, if ever needed */
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 12px 18px;
  text-align: center;
  color: var(--mvltd-text, #eef0ff) !important;
}
/* --- COMPACT cross-sell modal (no internal scrolling) -------------------
   The default recommendation markup stacks: the "Added to Cart" summary, a
   large promo graphic (the "click here" TV), and the recommended-product card.
   Together they overflowed the height cap and forced a scrollbar. Shrink the
   promo graphic hard, tighten every vertical gap, and drop the height cap so
   the whole thing fits on screen without scrolling. --------------------- */
.modal-body img {
  max-width: 96px !important;
  max-height: 62px !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain;
  margin: 4px auto 6px !important;
  display: block;
}
/* tighten the cross-sell text/spacing */
.modal-body h1, .modal-body h2, .modal-body h3, .modal-body h4 {
  margin: 4px 0 !important;
  font-size: .95rem !important;
  line-height: 1.25 !important;
}
.modal-body p { margin: 2px 0 !important; font-size: .85rem !important; line-height: 1.3 !important; }
.modal-body hr { margin: 8px 0 !important; }
/* the "Added / product added" summary box + recommended product row: compact */
.modal-body .row, .modal-body .panel, .modal-body .well { margin-bottom: 8px !important; }
/* the "Save Even More with our On Demand System" promo heading + link block:
   pull it in tight so it doesn't add a tall gap between the summary and the
   recommendation card */
.modal-body a { display: inline-block; margin: 0 auto !important; }
/* the "Added to Cart" product summary at the very top: compact padding */
.modal-body > div:first-child,
.modal-body .product-added,
.modal-body .cart-added-summary { padding: 8px 0 !important; margin-bottom: 6px !important; }

.modal-title { color: var(--mvltd-text, #eef0ff) !important; font-weight: 800; }
.modal-footer {
  flex: 0 0 auto;                   /* footer (Continue) always visible */
  display: flex;
  align-items: center;
  padding: 10px 18px 12px;
  gap: 10px;
  border-top: 1px solid var(--mvltd-glass-border, rgba(255,255,255,.10)) !important;
}
.modal-footer.justify-content-center { justify-content: center; }
.modal .close {
  position: absolute;
  top: 10px; right: 14px;
  padding: 0;
  background: transparent !important;
  border: 0;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--mvltd-muted, #a2a6c8) !important;
  opacity: .8;
  cursor: pointer;
}
.modal .close:hover { opacity: 1; color: var(--mvltd-text, #eef0ff) !important; }
/* Modal buttons in MVLTD Glass */
.modal-footer .btn {
  min-width: 96px;
  border-radius: var(--mvltd-radius-sm, 11px);
  font-weight: 700;
  padding: 9px 18px;
}
.modal-footer .btn-primary,
.modal-footer .btn-success,
.modal-footer .btn-danger {
  background: linear-gradient(120deg, var(--mvltd-accent,#7c5cff), var(--mvltd-accent2,#00e0ff)) !important;
  border: none !important;
  color: #fff !important;
  box-shadow: 0 8px 22px color-mix(in srgb, var(--mvltd-accent, #7c5cff) 40%, transparent);
}
.modal-footer .btn-primary:hover,
.modal-footer .btn-success:hover,
.modal-footer .btn-danger:hover { filter: brightness(1.08); }
.modal-footer .btn-default,
.modal-footer .btn-secondary {
  background: rgba(255,255,255,.07) !important;
  border: 1px solid var(--mvltd-glass-border, rgba(255,255,255,.14)) !important;
  color: var(--mvltd-text, #eef0ff) !important;
}
/* Backdrop */
.modal-backdrop {
  position: fixed;
  top: 0; left: 0;
  z-index: 1040;
  width: 100vw; height: 100vh;
  background: #05060c;
}
.modal-backdrop.fade { opacity: 0; transition: opacity .2s; }
.modal-backdrop.show,
.modal-backdrop.in { opacity: .72; }

/* =====================================================================
   15. BOOTSTRAP 4 DISPLAY UTILITIES  (the site loads Bootstrap 3, but the
   standard_cart templates use Bootstrap 4 `d-*` classes). Without these:
     - the empty "checkout-error-feedback" alert (d-none) shows as a false
       "Maximum Allowed Error"
     - the mobile-only remove button (d-sm-none) shows on desktop as a red pill
     - empty recommendation placeholders (d-none) show as stray blue boxes
   These are global (not scoped) because they are generic utilities, exactly
   as Bootstrap 4 defines them, and are harmless site-wide.
   ===================================================================== */
.d-none { display: none !important; }
.d-inline { display: inline !important; }
.d-inline-block { display: inline-block !important; }
.d-block { display: block !important; }
.d-flex { display: flex !important; }
.d-inline-flex { display: inline-flex !important; }

@media (min-width: 576px) {
  .d-sm-none { display: none !important; }
  .d-sm-inline { display: inline !important; }
  .d-sm-inline-block { display: inline-block !important; }
  .d-sm-block { display: block !important; }
  .d-sm-flex { display: flex !important; }
}
@media (min-width: 768px) {
  .d-md-none { display: none !important; }
  .d-md-inline { display: inline !important; }
  .d-md-block { display: block !important; }
  .d-md-flex { display: flex !important; }
}
@media (min-width: 992px) {
  .d-lg-none { display: none !important; }
  .d-lg-block { display: block !important; }
  .d-lg-flex { display: flex !important; }
}

/* =====================================================================
   16. CHECKOUT PAGE — fixes for the white card box, error alert & summary
   ===================================================================== */

/* 16a. The false "Maximum Allowed Error" empty alert: hide when it has the
   d-none class (belt-and-suspenders with section 15 above). */
#order-standard_cart .checkout-error-feedback.d-none,
#order-standard_cart .alert.d-none,
#order-standard_cart .w-hidden { display: none !important; }

/* 16b. The credit-card input box shows WHITE on checkout because a parent
   container has a light bg. Force the whole card area onto dark glass. */
#order-standard_cart #creditCardInputFields,
#order-standard_cart .cc-input-container,
#order-standard_cart #paymentGatewayInput,
#order-standard_cart #existingCardsContainer,
#order-standard_cart .cvv-input,
#order-standard_cart #newCardInfo,
#order-standard_cart .existing-cc-grid {
  background: rgba(255,255,255,.03) !important;
  color: var(--cc-text) !important;
  border-color: var(--cc-border) !important;
}
#order-standard_cart #creditCardInputFields *,
#order-standard_cart .cc-input-container * { color: var(--cc-text); }
#order-standard_cart #creditCardInputFields .field-icon,
#order-standard_cart #creditCardInputFields .input-group-btn .btn {
  color: var(--cc-muted) !important;
  background: var(--cc-glass2) !important;
  border-color: var(--cc-border) !important;
}
/* the little "?" popover button */
#order-standard_cart .input-group-append .btn,
#order-standard_cart .input-group-btn .btn {
  background: var(--cc-glass2) !important;
  border: 1px solid var(--cc-border) !important;
  color: var(--cc-muted) !important;
  border-radius: 0 var(--cc-radius-sm) var(--cc-radius-sm) 0 !important;
}

/* 16c. Payment-method radio row + gateway output */
#order-standard_cart .payment-methods-container,
#order-standard_cart .cart-checkout-content,
#order-standard_cart #frmCheckout .panel,
#order-standard_cart #frmCheckout .well {
  background: var(--cc-glass) !important;
  border-color: var(--cc-border) !important;
  color: var(--cc-text) !important;
}

/* 16d. Personal-info / checkout section headers */
#order-standard_cart .checkout-section-header,
#order-standard_cart .cart-heading,
#order-standard_cart #checkoutFrm h2,
#order-standard_cart .field-heading { color: var(--cc-text) !important; }

/* =====================================================================
   17. ORDER-SUMMARY stray blue box (empty upgrade/recommendation slot)
   Any empty promo/recommendation placeholder that WHMCS leaves in the
   summary column renders as a raw gradient block — hide empties. */
#order-standard_cart .order-summary .promobox:empty,
#order-standard_cart .order-summary .recommendations:empty,
#order-standard_cart .order-summary .upgrade-slot:empty,
#order-standard_cart .order-summary a[href="#"]:empty,
#order-standard_cart .order-summary .summary-ad:empty { display: none !important; }

/* If the blue box is the WHMCS "cart checkout" gateway express button area
   left empty, neutralise the gradient it inherited from generic .btn/.panel */
#order-standard_cart .order-summary .view-cart-gateway-checkout:empty { display: none !important; }

/* =====================================================================
   18. REMOVE BUTTONS (v2.3.0 rewrite)
   Each cart item has TWO remove controls in the stock template:
     (a) MOBILE: <span class="visible-xs-inline d-inline d-sm-none"> ... </span>
         lives inside the .item-title column.
     (b) DESKTOP: <div class="col-sm-1 hidden-xs d-none d-sm-block"><button ...×></div>
         the trailing grid column with a × icon.
   Goal on desktop (>=576px): SHOW (b), HIDE (a). On mobile: SHOW (a), HIDE (b).
   The regression was that .d-none !important kept the desktop column hidden.
   We explicitly force the desktop column visible and the mobile span hidden. */

/* ---- DESKTOP (>= 576px) ---- */
@media (min-width: 576px) {
  /* hide the mobile inline remove span so it doesn't duplicate */
  #order-standard_cart .item .visible-xs-inline,
  #order-standard_cart .item .visible-xs,
  #order-standard_cart .item .item-title .d-sm-none { display: none !important; }

  /* FORCE the desktop remove column visible (overrides its own d-none).
     Cover every class combination the stock template uses so it can never
     stay hidden: .col-sm-1 with d-none, hidden-xs, or d-sm-block. */
  #order-standard_cart .item .col-sm-1.d-none,
  #order-standard_cart .item .col-sm-1.d-sm-block,
  #order-standard_cart .item .col-sm-1.hidden-xs,
  #order-standard_cart .item div[class*="col-sm-1"] {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    width: 8.333333% !important;
    float: right;
    text-align: center;
  }
  /* and the button inside it must be visible too */
  #order-standard_cart .item .col-sm-1 .btn-remove-from-cart {
    display: inline-block !important;
    visibility: visible !important;
    opacity: .85;
  }
}

/* ---- MOBILE (< 576px) ---- */
@media (max-width: 575px) {
  /* hide the desktop trailing-column remove; keep the inline mobile one */
  #order-standard_cart .item .col-sm-1.d-none.d-sm-block { display: none !important; }
  #order-standard_cart .item .visible-xs-inline { display: inline !important; }
}

/* ---- SHARED: make every remove button readable, not a red pill ---- */
#order-standard_cart .btn-remove-from-cart {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 4px 8px !important;
  color: var(--cc-err) !important;
  font-weight: 600;
  opacity: .85;
  transition: opacity .15s ease, color .15s ease;
}
#order-standard_cart .btn-remove-from-cart i { font-size: 1.05em; }
#order-standard_cart .btn-remove-from-cart:hover,
#order-standard_cart .btn-remove-from-cart:focus {
  color: #ff8098 !important;
  opacity: 1;
  text-decoration: none;
}

/* =====================================================================
   19. CONFIGURE / EDIT PRODUCT PAGE  (cart.php?a=confproduct)
   Template: configureproduct.tpl. Wrapper is still #order-standard_cart.
   The stock page renders several containers that were left white/unstyled:
   .secondary-cart-body, .product-info/.product-title, .field-container,
   .panel-addon cards, the additional-info fields, and the summary sidebar.
   Force them all onto the dark-glass theme. */

/* the two main columns */
#order-standard_cart .cart-body,
#order-standard_cart .secondary-cart-body,
#order-standard_cart .secondary-cart-sidebar {
  color: var(--cc-text) !important;
}

/* product name banner at top of the configure form */
#order-standard_cart .product-info {
  background: var(--cc-glass) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius) !important;
  padding: 16px 18px !important;
  margin-bottom: 18px !important;
}
#order-standard_cart .product-info .product-title,
#order-standard_cart .product-title {
  color: var(--cc-text) !important;
  font-weight: 800 !important;
  font-size: 1.25rem !important;
  margin: 0 !important;
  background: none !important;
}

/* any product thumbnail / image that ships white */
#order-standard_cart .product-info img,
#order-standard_cart .product-img,
#order-standard_cart .item-thumbnail,
#order-standard_cart .thumbnail {
  background: transparent !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius-sm) !important;
  padding: 6px !important;
  max-width: 100%;
}

/* the field group wrappers holding the billing-cycle / options / addl info */
#order-standard_cart .field-container {
  background: var(--cc-glass) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius) !important;
  padding: 16px 18px !important;
  margin-bottom: 18px !important;
}
#order-standard_cart .field-container .form-group { margin-bottom: 14px; }
#order-standard_cart .field-container label,
#order-standard_cart .secondary-cart-body label,
#order-standard_cart .secondary-cart-body p,
#order-standard_cart .field-help-text,
#order-standard_cart .form-control-static {
  color: var(--cc-text) !important;
}
#order-standard_cart .field-help-text { color: var(--cc-muted) !important; }

/* config-options + addon cards */
#order-standard_cart .product-configurable-options,
#order-standard_cart #productConfigurableOptions,
#order-standard_cart #productAddonsContainer {
  color: var(--cc-text) !important;
}
#order-standard_cart .panel-addon,
#order-standard_cart .panel.card.panel-default {
  background: var(--cc-glass) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius) !important;
}
#order-standard_cart .panel-addon .panel-body,
#order-standard_cart .panel-addon .card-body {
  background: transparent !important;
  color: var(--cc-text) !important;
}
#order-standard_cart .panel-addon-selected {
  border-color: var(--cc-accent) !important;
  box-shadow: 0 0 0 1px var(--cc-accent) inset !important;
}
#order-standard_cart .panel-addon .panel-heading,
#order-standard_cart .panel-addon .card-header {
  background: transparent !important;
  border-bottom: 1px solid var(--cc-border) !important;
  color: var(--cc-text) !important;
}

/* all form inputs / selects on the configure page -> dark glass */
#order-standard_cart .field-container .form-control,
#order-standard_cart .secondary-cart-body .form-control,
#order-standard_cart .secondary-cart-body select,
#order-standard_cart .secondary-cart-body input[type="text"],
#order-standard_cart .secondary-cart-body input[type="number"],
#order-standard_cart .secondary-cart-body input[type="password"] {
  background: rgba(255,255,255,.04) !important;
  border: 1px solid var(--cc-border) !important;
  color: var(--cc-text) !important;
}
#order-standard_cart .secondary-cart-body .form-control::placeholder { color: var(--cc-muted) !important; }

/* headline on the configure page */
#order-standard_cart .header-lined h1,
#order-standard_cart .cart-body h1,
#order-standard_cart .cart-body h2,
#order-standard_cart .secondary-cart-sidebar h2 { color: var(--cc-text) !important; }

/* validation error box on configure page */
#order-standard_cart #containerProductValidationErrors.alert-danger {
  background: rgba(255,92,124,.12) !important;
  border: 1px solid rgba(255,92,124,.4) !important;
  color: #ffb3c2 !important;
}
/* hide it while empty (w-hidden is BS/utility helper) */
#order-standard_cart .alert.w-hidden,
#order-standard_cart .w-hidden { display: none !important; }

/* =====================================================================
   20. STRAY BLUE BOX under Order Summary = the .express-checkout-buttons
   container (holds PayPal express buttons + a "- OR -" .separator). When
   the gateway renders nothing it still emits an empty box; when it DOES
   render, the PayPal button iframe sits on a default light background.
   Neutralise the container and theme the separator. */

/* container: transparent, no border/background */
#order-standard_cart .express-checkout-buttons {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
/* hide it entirely when it has no real button children */
#order-standard_cart .express-checkout-buttons:empty { display: none !important; }

/* if the only child is the "- OR -" separator (no express button), hide it */
#order-standard_cart .express-checkout-buttons > .separator:first-child:last-child {
  display: none !important;
}

/* theme the "- OR -" divider so it isn't a bright bar */
#order-standard_cart .express-checkout-buttons .separator {
  background: transparent !important;
  color: var(--cc-muted) !important;
  text-align: center;
  margin: 12px 0;
  font-size: .8rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  position: relative;
}
#order-standard_cart .express-checkout-buttons .separator::before,
#order-standard_cart .express-checkout-buttons .separator::after {
  content: "";
  display: inline-block;
  width: 34%;
  height: 1px;
  vertical-align: middle;
  margin: 0 8px;
  background: var(--cc-border);
}

/* PayPal express-button wrapper often ships a white/blue bg */
#order-standard_cart .express-checkout-buttons .paypal-buttons,
#order-standard_cart .express-checkout-buttons > div[id*="paypal"],
#order-standard_cart .express-checkout-buttons iframe {
  background: transparent !important;
}

/* the whole order-summary sidebar box should be a single dark-glass card,
   with no nested bright sub-boxes */
#order-standard_cart .order-summary,
#order-standard_cart #orderSummary {
  background: var(--cc-glass) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius) !important;
}
#order-standard_cart .order-summary .summary-container,
#order-standard_cart .order-summary .subtotal,
#order-standard_cart .order-summary .bordered-totals,
#order-standard_cart .order-summary .recurring-totals {
  background: transparent !important;
  border-color: var(--cc-border) !important;
}

/* =====================================================================
   21. DUAL CVV FIX (checkout)
   Two CVV fields exist by design:
     #inputCardCVV2  -> inside #existingCardInfo (for a SAVED card)
     #inputCardCVV   -> inside #newCardInfo / #cvv-field-container (NEW card)
   For a brand-new customer with NO saved cards, #existingCardInfo must not
   show a CVV. The gateway JS also adds .paypal_ppcpv-payment-form to the
   form and hides #existingCardInfo/#newCardInfo when the PayPal option is
   chosen. Support that here plus a data-hook set by common.tpl JS. */

/* when our JS marks the existing-card block as empty, hide it entirely */
#order-standard_cart #existingCardInfo[data-cc-empty="1"] { display: none !important; }

/* when the PayPal(_ppcpv) express flow is active, its own JS hides these;
   this is a CSS backstop so the saved-card CVV never lingers */
#order-standard_cart .paypal_ppcpv-payment-form #existingCardInfo,
#order-standard_cart .paypal_ppcpv-payment-form #newCardSaveSettings { display: none !important; }

/* tidy the CVV input group so it matches the theme (single clean field) */
#order-standard_cart #inputCardCVV,
#order-standard_cart #inputCardCVV2 {
  background: rgba(255,255,255,.04) !important;
  border: 1px solid var(--cc-border) !important;
  color: var(--cc-text) !important;
}
#order-standard_cart .cvv-field-container,
#order-standard_cart #cvv-field-container { color: var(--cc-text) !important; }

/* =====================================================================
   22. LIVE FIXES (v2.4.0) — iCheck skins, checkout white boxes, dual CVV,
   order-summary gradient block, prepend-icon inputs.
   ===================================================================== */

/* ---- 22a. iCheck radio / checkbox "black box" skins ----
   The WHMCS bundle uses the iCheck plugin which injects
   <div class="iradio_*|icheckbox_*"> wrappers whose default sprite renders as
   a black/dark square. Neutralise the sprite and draw a clean glass control.

   CRITICAL: iCheck adds <ins class="iCheck-helper"> as a TRANSPARENT overlay
   that is the actual CLICK TARGET. It MUST stay in the DOM and remain
   clickable, otherwise the radios/checkboxes cannot be toggled. We therefore
   NEVER `display:none` the <ins> — we only make it visually transparent while
   preserving its pointer/click behaviour. The decorative ::after dot/tick gets
   pointer-events:none so it never steals the click. */
#order-standard_cart div[class^="iradio"],
#order-standard_cart div[class*=" iradio"],
#order-standard_cart div[class^="icheckbox"],
#order-standard_cart div[class*=" icheckbox"] {
  background: transparent !important;
  border: 1px solid var(--cc-border) !important;
  width: 18px !important;
  height: 18px !important;
  border-radius: 50% !important;
  position: relative !important;
  box-shadow: none !important;
  cursor: pointer !important;
}
#order-standard_cart div[class^="icheckbox"],
#order-standard_cart div[class*=" icheckbox"] { border-radius: 5px !important; }
/* the sprite <ins> overlay iCheck adds is the CLICK TARGET — keep it, only
   strip its black sprite background. Do NOT hide it. */
#order-standard_cart div[class^="iradio"] > ins,
#order-standard_cart div[class*=" iradio"] > ins,
#order-standard_cart div[class^="icheckbox"] > ins,
#order-standard_cart div[class*=" icheckbox"] > ins {
  display: block !important;
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  box-shadow: none !important;
  opacity: 0 !important;      /* invisible but still receives clicks */
  cursor: pointer !important;
}
/* checked state: fill with the accent */
#order-standard_cart div[class*="iradio"].checked,
#order-standard_cart div[class*="icheckbox"].checked {
  background: var(--cc-accent) !important;
  border-color: var(--cc-accent) !important;
}
#order-standard_cart div[class*="iradio"].checked::after {
  content: ""; position: absolute; top: 4px; left: 4px;
  width: 8px; height: 8px; border-radius: 50%; background: #fff;
  pointer-events: none;   /* never intercept the click */
}
#order-standard_cart div[class*="icheckbox"].checked::after {
  content: ""; position: absolute; top: 1px; left: 5px;
  width: 6px; height: 11px; border: solid #fff; border-width: 0 2px 2px 0;
  transform: rotate(45deg);
  pointer-events: none;   /* never intercept the click */
}

/* ---- 22b. White EXISTING-ACCOUNT / pay-method box on checkout ----
   The saved-account tile + saved-card list render white. Force dark glass. */
#order-standard_cart .existing-account,
#order-standard_cart .paymethod-info,
#order-standard_cart .cc-payment-form,
#order-standard_cart .list-group.collapsable-card-body,
#order-standard_cart #existingCardInfo,
#order-standard_cart #newCardInfo,
#order-standard_cart .clientAccountSelection,
#order-standard_cart .account-selection,
#order-standard_cart .radio-tile,
#order-standard_cart .well {
  background: var(--cc-glass) !important;
  color: var(--cc-text) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius-sm) !important;
}
#order-standard_cart .paymethod-info *,
#order-standard_cart #existingCardInfo *,
#order-standard_cart #newCardInfo *,
#order-standard_cart .radio-inline,
#order-standard_cart .radio-inline * { color: var(--cc-text) !important; }
/* the selected pay-method highlight */
#order-standard_cart .paymethod-info.selected,
#order-standard_cart .cc-input-container .selected {
  border-color: var(--cc-accent) !important;
  box-shadow: 0 0 0 1px var(--cc-accent) inset !important;
}

/* ---- 22c. prepend-icon / field-icon inputs (Card Number, MM/YY, CVV) ----
   The little icon box on the left was rendering as a black square. */
#order-standard_cart .prepend-icon { position: relative; }
#order-standard_cart .prepend-icon .field-icon,
#order-standard_cart .field-icon {
  background: transparent !important;
  border: none !important;
  color: var(--cc-muted) !important;
}
#order-standard_cart .prepend-icon .field-icon i { color: var(--cc-muted) !important; }
/* the input itself sits on dark glass with room for the icon */
#order-standard_cart .prepend-icon .form-control,
#order-standard_cart #newCardInfo .form-control,
#order-standard_cart #existingCardInfo .form-control,
#order-standard_cart .cc-input-container .form-control {
  background: rgba(255,255,255,.04) !important;
  border: 1px solid var(--cc-border) !important;
  color: var(--cc-text) !important;
}
#order-standard_cart .cc-input-container .form-control::placeholder,
#order-standard_cart #newCardInfo .form-control::placeholder { color: var(--cc-muted) !important; }
/* the "?" help button next to CVV */
#order-standard_cart .cvv-help,
#order-standard_cart .input-group-addon,
#order-standard_cart .input-group-append .btn,
#order-standard_cart .input-group-btn .btn {
  background: var(--cc-glass2, rgba(255,255,255,.06)) !important;
  border: 1px solid var(--cc-border) !important;
  color: var(--cc-muted) !important;
}

/* ---- 22d. DUAL CVV clarity ----
   When a SAVED card exists, #existingCardInfo shows a CVV (for that saved
   card) and #newCardInfo shows its own CVV. That's correct WHMCS behaviour,
   but only ONE applies to the selected radio. We visually de-emphasise the
   saved-card CVV until its radio is actually checked, so it reads as one form.
   (The stock JS toggles the .checked class on the wrapper.) */
#order-standard_cart #newCardInfo { margin-top: 6px; }
#order-standard_cart #existingCardInfo .cvv-input,
#order-standard_cart #existingCardInfo .input-group { max-width: 220px; }

/* ---- 22e. Order-summary "blue gradient" block ----
   The bright block below the totals is the PayPal express button area +/or
   the big gradient Checkout button. Make the express area transparent, and
   soften the Checkout button so it's a clean pill, not a giant glowing slab. */
#order-standard_cart .order-summary .express-checkout-buttons,
#order-standard_cart .order-summary .express-checkout-buttons * {
  background: transparent !important;
  box-shadow: none !important;
}
#order-standard_cart .order-summary .express-checkout-buttons:empty { display: none !important; }
#order-standard_cart .order-summary .btn-checkout {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 12px 18px !important;
  border-radius: var(--cc-radius-sm) !important;
  box-shadow: 0 6px 18px color-mix(in srgb, var(--mvltd-accent, #7c5cff) 28%, transparent) !important;
  font-size: 1rem !important;
}
#order-standard_cart .order-summary .btn-checkout.disabled,
#order-standard_cart .order-summary .btn-checkout[disabled] {
  opacity: .5 !important;
  filter: grayscale(.2);
  cursor: not-allowed;
}

/* =====================================================================
   23. v2.6.0 LIVE FIXES  (recommendation tile, paypal readability,
       cleaner checkout button)
   Reported by user after v2.5.0:
     (a) recommendation product tile inside #recommendationsModal renders
         as a WHITE unstyled box before "Add to Cart";
     (b) the order-summary Checkout button gradient still looks "odd";
     (c) PayPal "link a new paypal account" label + instructions are
         unreadable (dark-on-dark).
   The recommendations modal is appended to <body> (OUTSIDE
   #order-standard_cart) so tile rules here are GLOBAL, exactly like the
   Section-14 modal rules. They only touch #recommendationsModal internals
   so they cannot leak into the rest of the site.
   ===================================================================== */

/* ---- 23a. Recommendation product TILE (cloned from .clonable) ---- */
#recommendationsModal .modal-body { text-align: left; }
#recommendationsModal .product-recommendations {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
#recommendationsModal .product-recommendation {
  background: rgba(255,255,255,.05) !important;
  border: 1px solid var(--mvltd-glass-border, rgba(255,255,255,.14)) !important;
  border-radius: var(--mvltd-radius-sm, 12px) !important;
  color: var(--mvltd-text, #eef0ff) !important;
  padding: 11px 14px !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  overflow: hidden;
}
#recommendationsModal .product-recommendation:hover {
  border-color: color-mix(in srgb, var(--mvltd-accent, #7c5cff) 55%, transparent) !important;
  background: rgba(255,255,255,.07) !important;
}
/* kill any nested white surfaces inside the tile */
#recommendationsModal .product-recommendation,
#recommendationsModal .product-recommendation .header,
#recommendationsModal .product-recommendation .cta,
#recommendationsModal .product-recommendation .content,
#recommendationsModal .product-recommendation .body,
#recommendationsModal .product-recommendation .expander {
  background-color: transparent !important;
}
#recommendationsModal .product-recommendation .header {
  display: flex;
  align-items: center;
  gap: 12px;
}
/* text + headings inside the tile stay readable */
#recommendationsModal .product-recommendation,
#recommendationsModal .product-recommendation * {
  color: var(--mvltd-text, #eef0ff) !important;
}
#recommendationsModal .product-recommendation .headline {
  font-weight: 700;
  font-size: 1rem;
}
#recommendationsModal .product-recommendation .tagline,
#recommendationsModal .product-recommendation .body,
#recommendationsModal .product-recommendation .setup-fee,
#recommendationsModal .product-recommendation .setup-fee small {
  color: var(--mvltd-muted, #a2a6c8) !important;
}
#recommendationsModal .product-recommendation .price,
#recommendationsModal .product-recommendation .breakdown-price {
  font-weight: 800;
  color: var(--mvltd-text, #eef0ff) !important;
}
/* the green "Add to Cart" button -> MVLTD gradient pill */
#recommendationsModal .product-recommendation .btn-add,
#recommendationsModal .product-recommendation .cta .btn {
  background: linear-gradient(120deg, var(--mvltd-accent, #7c5cff), var(--mvltd-accent2, #00e0ff)) !important;
  border: none !important;
  color: #fff !important;
  border-radius: 999px !important;
  padding: 8px 16px !important;
  font-weight: 700 !important;
  box-shadow: 0 6px 16px color-mix(in srgb, var(--mvltd-accent, #7c5cff) 30%, transparent) !important;
  white-space: nowrap;
}
#recommendationsModal .product-recommendation .btn-add:hover {
  filter: brightness(1.08);
}
#recommendationsModal .product-recommendation .btn-add .text,
#recommendationsModal .product-recommendation .btn-add .arrow,
#recommendationsModal .product-recommendation .btn-add .arrow i { color: #fff !important; }
/* the "learn more" chevron/expander */
#recommendationsModal .product-recommendation .expander i,
#recommendationsModal .product-recommendation .rotate {
  color: var(--mvltd-muted, #a2a6c8) !important;
}
/* the cta price/button column sits on the right */
#recommendationsModal .product-recommendation .cta {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: auto;
}
/* the expandable body description */
#recommendationsModal .product-recommendation .body p {
  color: var(--mvltd-muted, #a2a6c8) !important;
  margin: 8px 0 0;
}

/* ---- 23b. PayPal payment readability on checkout ---- */
/* The gateway JS appends "Link a New PayPal Account" text to
   .cc-input-container label.radio-inline and injects .payment-instructions,
   .approval-instructions, .payer-label & .payer-email inside
   #paypal_ppcpv_input_container. All must be readable on dark glass. */
#order-standard_cart #paypal_ppcpv_input_container,
#order-standard_cart #paypal_ppcpv_input_container * {
  color: var(--cc-text) !important;
}
#order-standard_cart #paypal_ppcpv_input_container .payment-instructions,
#order-standard_cart #paypal_ppcpv_input_container .approval-instructions {
  color: var(--cc-muted) !important;
  background: rgba(255,255,255,.04) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius-sm) !important;
  padding: 10px 12px !important;
  margin-top: 8px !important;
}
#order-standard_cart #paypal_ppcpv_input_container .payer-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
#order-standard_cart #paypal_ppcpv_input_container .payer-email {
  color: var(--cc-text) !important;
  font-weight: 600;
}
/* the "Link a New PayPal Account" radio label (text appended by JS) */
#order-standard_cart .cc-input-container label.radio-inline,
#order-standard_cart .cc-input-container label.radio-inline *,
#order-standard_cart .cc-payment-form .paymethod-info label,
#order-standard_cart .cc-payment-form .paymethod-info label * {
  color: var(--cc-text) !important;
}
/* the PayPal preferred-payment-method radios ("PayPal Recurring Monthly
   Payment" / "Credit/Debit Card") -> readable labels */
#order-standard_cart #paymentGatewaysContainer label.radio-inline,
#order-standard_cart #paymentGatewaysContainer label.radio-inline * {
  color: var(--cc-text) !important;
}
#order-standard_cart #paymentGatewaysContainer .small.text-muted,
#order-standard_cart #paymentGatewaysContainer p.small { color: var(--cc-muted) !important; }

/* ---- 23c. Kill the loud gradient BOX behind "$xx.xx  Total Due  USD" ----
   CORRECTION: the "odd blue gradient" the user meant is NOT the Checkout
   button (that pill looks correct and is LEFT UNCHANGED). It is the big solid
   gradient rectangle behind the total-due-today amount, which comes from the
   stock standard_cart `.total-due-today-padded` background. Here we strip that
   filled background and render the block as a clean glass panel with a
   gradient-TEXT amount, so the "$xx.xx Total Due USD" is clearly readable.
   NOTE: we intentionally do NOT touch `.btn-checkout` in this section. */
#order-standard_cart .order-summary .total-due-today,
#order-standard_cart .order-summary .total-due-today-padded,
#order-standard_cart .total-due-today.total-due-today-padded {
  background: rgba(255,255,255,.05) !important;
  background-image: none !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius-sm, 12px) !important;
  box-shadow: none !important;
  padding: 16px 18px !important;
  display: flex !important;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  -webkit-text-fill-color: initial;
}
/* the big amount ($60.96) -> gradient TEXT on the glass, not a filled block */
#order-standard_cart .order-summary .total-due-today .amt,
#order-standard_cart .order-summary .total-due-today #totalDueToday,
#order-standard_cart .order-summary .total-due-today .cost {
  background: var(--cc-grad) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  font-weight: 800;
  font-size: 1.9rem;
  line-height: 1.1;
}
/* the "Total Due USD" label text stays muted + readable */
#order-standard_cart .order-summary .total-due-today > span:not(.amt):not(#totalDueToday):not(.cost),
#order-standard_cart .order-summary .total-due-today small {
  color: var(--cc-muted) !important;
  -webkit-text-fill-color: currentColor !important;
  font-size: .95rem;
  font-weight: 600;
}

/* =====================================================================
   24. REMOVE the (non-working) "Estimate Taxes" tab from the promo area
   The promo/tax area is a Bootstrap tab set:
     <ul.nav-tabs> <li>Apply Promo Code</li> <li>Estimate Taxes</li> </ul>
     <div.tab-content> #applyPromo (promo form) + #calcTaxes (State/Country/
     Update Totals) </div>
   The user asked to remove the Estimate Taxes tab AND its State/Country/
   Update-Totals panel. We hide the 2nd tab and the #calcTaxes panel, then
   drop the now-single-tab nav bar and let the promo form stand alone with a
   clean heading feel. Purely visual / CSS — no template edit needed. */

/* hide the "Estimate Taxes" tab (it targets #calcTaxes) and its panel */
#order-standard_cart .view-cart-tabs .nav-tabs li a[href="#calcTaxes"],
#order-standard_cart .view-cart-tabs .nav-tabs .nav-link[href="#calcTaxes"],
#order-standard_cart .view-cart-tabs .nav-tabs a[aria-controls="calcTaxes"],
#order-standard_cart #calcTaxes {
  display: none !important;
}
/* the parent <li> of that tab (belt-and-suspenders) */
#order-standard_cart .view-cart-tabs .nav-tabs li:has(> a[href="#calcTaxes"]) {
  display: none !important;
}
/* only "Apply Promo Code" remains -> drop the tab bar chrome and present the
   promo form as a plain titled block */
#order-standard_cart .view-cart-tabs .nav-tabs {
  border-bottom: none !important;
  margin-bottom: 4px !important;
}
#order-standard_cart .view-cart-tabs .nav-tabs li a[href="#applyPromo"],
#order-standard_cart .view-cart-tabs .nav-tabs .nav-link[href="#applyPromo"] {
  color: var(--cc-text) !important;
  font-weight: 700 !important;
  border: none !important;
  background: transparent !important;
  padding-left: 0 !important;
  cursor: default;
  pointer-events: none;   /* it's the only tab; no need to click it */
}
#order-standard_cart .view-cart-tabs .tab-content #applyPromo {
  display: block !important;   /* always shown */
}

/* =====================================================================
   25. v2.7.0 CHECKOUT PAYMENT FIXES
   Reported issues (screenshots 19-24):
     A. PayPal "Link a New PayPal Account" radio label = white/unreadable box.
     B. Credit/Debit Card: the Card number / MM-YY / CVV / card-name inputs
        render as WHITE boxes; a stray grey box sits over the card-name field.
     C. Existing-client "Choose Account" tile is unstyled white.
     D. The SAVED card row (MasterCard-7806 / name / expiry) shows a "weird
        toggle area" — each .paymethod-info piece got its own bordered pill.
        It must read as ONE clean row with a single radio.
     E. Give "Complete Order" an obvious processing/spinner state so the user
        knows the click registered (WHMCS already adds fa-spinner via the
        spinner-on-click class; we just make it clearly visible + disabled).
   ===================================================================== */

/* ---- 25A. "Link a New PayPal Account" label -> dark glass, readable ----
   The gateway JS (paypal_ppcpv.updateNewPayMethodOption) appends the text
   "Link a New PayPal Account" (or a cloned .payer-label) into:
       .cc-input-container label.radio-inline
   and, on the CC form, into:
       .cc-payment-form .paymethod-info:not([data-paymethod-id]) label
   WHMCS core (all.min.css) renders that box with a WHITE background, and its
   CHECKED/SELECTED state turns the text white too (so it vanishes on select).
   We force dark glass + readable text in EVERY state, at high specificity. */
/* REVISED (v2.11.0): keep the gateway's own (light) box background so the
   Credit/Debit-Card fields are not affected; only fix LAYOUT + force DARK,
   readable text on that light box. NO background override here. */
#order-standard_cart .cc-input-container ul li label.radio-inline,
#order-standard_cart .cc-input-container > ul > li > label.radio-inline,
#order-standard_cart .cc-input-container label.radio-inline,
#order-standard_cart .cc-payment-form .paymethod-info:not([data-paymethod-id]),
#order-standard_cart .cc-payment-form .paymethod-info:not([data-paymethod-id]) label,
#order-standard_cart #paypal_ppcpv_input_container ~ * label.radio-inline {
  display: flex !important;
  align-items: center;
  gap: 8px;
  padding: 10px 14px !important;
  width: 100%;
  margin: 0 0 8px 0 !important;
}
/* DARK readable text in ALL states (normal / hover / focus / checked / selected)
   — the box stays its natural light colour, the text is now dark. */
#order-standard_cart .cc-input-container label.radio-inline,
#order-standard_cart .cc-input-container label.radio-inline:hover,
#order-standard_cart .cc-input-container label.radio-inline.checked,
#order-standard_cart .cc-input-container label.radio-inline.selected,
#order-standard_cart .cc-input-container label.radio-inline.active,
#order-standard_cart .cc-input-container label.radio-inline *,
#order-standard_cart .cc-input-container label.radio-inline:hover *,
#order-standard_cart .cc-input-container label.radio-inline.checked *,
#order-standard_cart .cc-payment-form .paymethod-info:not([data-paymethod-id]),
#order-standard_cart .cc-payment-form .paymethod-info:not([data-paymethod-id]) *,
#order-standard_cart .cc-payment-form .paymethod-info:not([data-paymethod-id]) label,
#order-standard_cart .cc-payment-form .paymethod-info:not([data-paymethod-id]) label * {
  color: #1a1a24 !important;
  -webkit-text-fill-color: #1a1a24 !important;   /* undo any text-clip / white fill */
  text-shadow: none !important;
}
/* the payer-label (cloned into the option once a PayPal account is approved) */
#order-standard_cart .cc-input-container label.radio-inline .payer-label,
#order-standard_cart .cc-input-container label.radio-inline .payer-label *,
#order-standard_cart .cc-input-container label.radio-inline .payer-email {
  color: #1a1a24 !important;
  -webkit-text-fill-color: #1a1a24 !important;
}

/* THE PAYPAL OPTION BOX — REVISED APPROACH (v2.11.0)
   The gateway ships a stock rule
       .paypal_ppcpv-payment-form .selected { background: #f1f1f1; }
   which paints the SELECTED PayPal option's <ul.selected> LIGHT GREY. The
   earlier fix (v2.7.1) forced that box to DARK glass — but that DARK override
   bled onto the Credit/Debit-Card fields (which are supposed to stay light),
   making the card boxes look wrong.
   REVISED per feedback: DO NOT repaint the box. Leave the gateway's own
   light/white background alone (so the card fields keep their original look)
   and INSTEAD just force the TEXT to a DARK, readable colour on that light
   box. This resolves BOTH: the PayPal label is readable, and the card fields
   are untouched.
   NOTE: we intentionally set NO background here. */
.paypal_ppcpv-payment-form .selected,
.paypal_ppcpv-payment-form .selected *,
.paypal_ppcpv-payment-form ul.selected,
.paypal_ppcpv-payment-form ul.selected label,
.paypal_ppcpv-payment-form ul.selected label *,
#order-standard_cart .cc-input-container ul.selected,
#order-standard_cart .cc-input-container ul.selected label,
#order-standard_cart .cc-input-container ul.selected label * {
  color: #1a1a24 !important;              /* dark text on the light box */
  -webkit-text-fill-color: #1a1a24 !important;
  text-shadow: none !important;
}

/* ---- 25B. New-card inputs (Card number / MM-YY / CVV / name) -> dark ---- */
#order-standard_cart #newCardInfo .form-control,
#order-standard_cart #newCardInfo input.field,
#order-standard_cart #newCardInfo input[type="tel"],
#order-standard_cart #newCardInfo input[type="text"],
#order-standard_cart #cvv-field-container .form-control,
#order-standard_cart #newCardSaveSettings .form-control,
#order-standard_cart #newCardSaveSettings input.field,
#order-standard_cart #inputDescription,
#order-standard_cart .cc-input-container input.field.form-control,
#order-standard_cart .new-card-container input.form-control {
  background: rgba(255,255,255,.05) !important;
  background-color: rgba(255,255,255,.05) !important;
  border: 1px solid var(--cc-border) !important;
  color: var(--cc-text) !important;
  -webkit-text-fill-color: var(--cc-text) !important;
  border-radius: var(--cc-radius-sm) !important;
  box-shadow: none !important;
}
#order-standard_cart #newCardInfo .form-control::placeholder,
#order-standard_cart #newCardSaveSettings .form-control::placeholder,
#order-standard_cart #inputDescription::placeholder,
#order-standard_cart .new-card-container input::placeholder {
  color: var(--cc-muted) !important;
  -webkit-text-fill-color: var(--cc-muted) !important;
}
/* the stray GREY box over the card-name = the prepend-icon field-icon box.
   Flatten it so it does not overlap the input. */
#order-standard_cart #inputDescriptionContainer .field-icon,
#order-standard_cart #newCardSaveSettings .prepend-icon .field-icon,
#order-standard_cart .new-card-container .prepend-icon .field-icon {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  width: auto !important;
}
#order-standard_cart #inputDescriptionContainer .field-icon i,
#order-standard_cart #newCardSaveSettings .prepend-icon .field-icon i {
  color: var(--cc-muted) !important;
}
/* the "save this card" toggle-switch box should sit on glass, not grey */
#order-standard_cart #inputNoStoreContainer,
#order-standard_cart #newCardSaveSettings {
  background: transparent !important;
  border: none !important;
}

/* ---- 25C. Existing-client "Choose Account" tile -> dark glass ---- */
#order-standard_cart .account-select-container .account,
#order-standard_cart .account-selection .account,
#order-standard_cart #containerExistingAccountSelect .account {
  background: rgba(255,255,255,.05) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius-sm) !important;
  color: var(--cc-text) !important;
  padding: 12px 14px !important;
  margin-bottom: 10px;
}
#order-standard_cart .account-select-container .account.active,
#order-standard_cart #containerExistingAccountSelect .account.active {
  border-color: var(--cc-accent) !important;
  box-shadow: 0 0 0 1px var(--cc-accent) inset !important;
}
#order-standard_cart .account-select-container .account,
#order-standard_cart .account-select-container .account *,
#order-standard_cart .account-select-container .address,
#order-standard_cart .account-select-container .address * {
  color: var(--cc-text) !important;
  -webkit-text-fill-color: currentColor !important;
}
#order-standard_cart .account-select-container .address .small,
#order-standard_cart .account-select-container .address small {
  color: var(--cc-muted) !important;
}
#order-standard_cart .account-select-container .label,
#order-standard_cart .account-select-container .label-info {
  background: var(--cc-grad) !important;
  color: #fff !important;
  border-radius: 999px !important;
  padding: 2px 10px !important;
}

/* ---- 25D. SAVED CARD ROW: one clean row, not a strip of pill toggles ----
   existing-paymethods.tpl emits 5 sibling .paymethod-info blocks (radio,
   icon, card name, description, expiry). Section 22b gave EACH one a border +
   glass bg -> the "weird toggle area". Here we neutralise the per-piece boxes
   and lay them out as ONE row with a single subtle container. */
#order-standard_cart #existingCardsContainer,
#order-standard_cart .existing-cc-grid {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  background: rgba(255,255,255,.05) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius-sm) !important;
  padding: 10px 12px !important;
  margin-bottom: 10px;
}
/* each individual .paymethod-info piece: NO own border / bg / pill */
#order-standard_cart #existingCardsContainer .paymethod-info,
#order-standard_cart .existing-cc-grid .paymethod-info {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 4px !important;
  margin: 0 !important;
  display: inline-flex !important;
  align-items: center;
  color: var(--cc-text) !important;
}
#order-standard_cart #existingCardsContainer .paymethod-info *,
#order-standard_cart .existing-cc-grid .paymethod-info * {
  color: var(--cc-text) !important;
  -webkit-text-fill-color: currentColor !important;
}
#order-standard_cart #existingCardsContainer .paymethod-info i,
#order-standard_cart .existing-cc-grid .paymethod-info i { color: var(--cc-accent2) !important; }
/* the radio piece keeps only the iCheck circle (no pill around it) */
#order-standard_cart #existingCardsContainer .paymethod-info.radio-inline,
#order-standard_cart .existing-cc-grid .paymethod-info.radio-inline {
  padding-right: 4px !important;
}
/* the expiry piece pushes to the right for a clean line */
#order-standard_cart #existingCardsContainer .paymethod-info:last-child,
#order-standard_cart .existing-cc-grid .paymethod-info:last-child {
  margin-left: auto !important;
  color: var(--cc-muted) !important;
}
/* the "Enter New Card Information Below" radio sits below, plain */
#order-standard_cart .cc-input-container > ul { margin-top: 4px; padding-left: 0; list-style: none; }

/* ---- 25E. "Complete Order" processing / spinner state ----
   WHMCS's bundle handles spinner-on-click (swaps the <i> to fa-spinner fa-spin)
   + disable-on-click. We make that state unmistakable on our gradient button. */
#order-standard_cart #btnCompleteOrder .fa-spinner,
#order-standard_cart #btnCompleteOrder .fa-spin { color: #fff !important; }
#order-standard_cart #btnCompleteOrder:disabled,
#order-standard_cart #btnCompleteOrder.disabled,
#order-standard_cart .btn-primary.disable-on-click:disabled {
  opacity: .72 !important;
  cursor: progress !important;
  filter: saturate(.9);
}
/* keep the button gradient while processing (BS default would grey it out) */
#order-standard_cart #btnCompleteOrder,
#order-standard_cart #btnCompleteOrder:disabled {
  background: var(--cc-grad) !important;
  border: none !important;
  color: #fff !important;
}
/* fa-spin keyframes fallback (in case the bundle CSS isn't present) */
@keyframes cc-fa-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
#order-standard_cart #btnCompleteOrder .fa-spin {
  animation: cc-fa-spin 1s linear infinite;
  display: inline-block;
}

/* =====================================================================
   26. CHECKOUT UX FIXES (v2.9.0)
   26A. "Already Registered?" login panel — inputs collapsed to width:0
        because the nested Bootstrap grid (.row/.col-sm-6) gets no width in
        this cart context. Force the revealed login panel to lay out its
        fields at full/half width so the email + password boxes are usable.
   26B. Saved-card / hosted-card "Cardholder Name" (and any card input) that
        rendered WHITE with invisible text — force dark glass + readable text.
   26C. The client-side "please correct these errors" validation box the
        common.tpl guard shows: make it unmistakably visible + readable, and
        style the per-field .cc-invalid highlight.
   ===================================================================== */

/* ---- 26A. Login sub-form ("Already Registered?") ---- */
#order-standard_cart #containerExistingUserSignin:not(.w-hidden) { display: block !important; }
#order-standard_cart #containerExistingUserSignin .row {
  display: flex !important;
  flex-wrap: wrap !important;
  width: 100% !important;
  margin-left: -12px !important;
  margin-right: -12px !important;
}
#order-standard_cart #containerExistingUserSignin .row > .col-sm-6,
#order-standard_cart #containerExistingUserSignin .row > [class*="col-"] {
  flex: 1 1 260px !important;
  width: auto !important;
  min-width: 240px !important;
  padding-left: 12px !important;
  padding-right: 12px !important;
  box-sizing: border-box !important;
}
#order-standard_cart #containerExistingUserSignin .form-group {
  display: block !important;
  width: 100% !important;
  margin-bottom: 14px !important;
}
#order-standard_cart #containerExistingUserSignin .form-group.prepend-icon {
  position: relative !important;
}
#order-standard_cart #containerExistingUserSignin input.field,
#order-standard_cart #containerExistingUserSignin input.form-control,
#order-standard_cart #containerExistingUserSignin #inputLoginEmail,
#order-standard_cart #containerExistingUserSignin #inputLoginPassword {
  display: block !important;
  width: 100% !important;
  min-height: 46px !important;
  padding: 12px 14px 12px 42px !important;   /* room for the left field-icon */
  background: rgba(255,255,255,.04) !important;
  border: 1px solid var(--cc-border) !important;
  border-radius: var(--cc-radius-sm) !important;
  color: var(--cc-text) !important;
  -webkit-text-fill-color: var(--cc-text) !important;
  box-sizing: border-box !important;
}
#order-standard_cart #containerExistingUserSignin .field-icon {
  position: absolute !important;
  left: 0 !important; top: 0 !important;
  width: 40px !important; height: 100% !important;
  display: flex !important; align-items: center !important; justify-content: center !important;
  z-index: 2 !important;
}
#order-standard_cart #containerExistingUserSignin #btnExistingLogin {
  margin-top: 6px !important;
}

/* ---- 26B. (v2.11.0) REVERTED.
   Earlier versions forced the Credit/Debit-Card inputs onto dark glass. Per
   feedback that BROKE the card fields (they worked fine originally as light
   boxes with dark text). We therefore NO LONGER override the card inputs'
   background/text here — the gateway's native rendering is left intact. */

/* ---- 26C. Client-side validation error box (shown by common.tpl guard) ---- */
#order-standard_cart .cc-validation-errors {
  display: block !important;
  background: rgba(255,92,124,.12) !important;
  border: 1px solid rgba(255,92,124,.45) !important;
  border-left: 4px solid #ff5c7c !important;
  border-radius: var(--cc-radius-sm) !important;
  color: #ffd7de !important;
  padding: 16px 18px !important;
  margin: 0 0 22px 0 !important;
  box-shadow: 0 8px 30px rgba(255,92,124,.15) !important;
  scroll-margin-top: 120px;
}
#order-standard_cart .cc-validation-errors .cc-ve-title {
  display: flex; align-items: center; gap: 9px;
  font-size: 1.02rem !important;
  font-weight: 700 !important;
  color: #ff8a9e !important;
  margin: 0 0 8px 0 !important;
}
#order-standard_cart .cc-validation-errors .cc-ve-title i { font-size: 1.1rem; }
#order-standard_cart .cc-validation-errors ul {
  margin: 0 0 0 4px !important;
  padding: 0 0 0 20px !important;
  list-style: disc !important;
}
#order-standard_cart .cc-validation-errors li {
  color: #ffe0e6 !important;
  margin: 3px 0 !important;
  line-height: 1.45 !important;
}
/* per-field invalid highlight */
#order-standard_cart .cc-invalid,
#order-standard_cart .cc-invalid.form-control,
#order-standard_cart .cc-invalid .form-control {
  border-color: #ff5c7c !important;
  box-shadow: 0 0 0 2px rgba(255,92,124,.25) !important;
}

/* ---- 26D. (v2.11.0) REMOVED.
   The PayPal ACDC card-field iframe override was removed. Per feedback the
   card fields should keep their ORIGINAL (light box / dark text) rendering;
   we no longer touch them from the theme. */

/* ==================================================================== *
 * 26E. CREDIT / DEBIT CARD FIELD VISIBILITY  (v2.12.0)                  *
 * -------------------------------------------------------------------- *
 * BUG (reported: "hidden name on credit card when adding a Google saved *
 * card / worked properly 7 revisions back"):                            *
 *   The card inputs — cardholder-name (#inputDescription), card number  *
 *   (#inputCardNumber), expiry (#inputCardExpiry) and CVV (#inputCardCVV)*
 *   — are REAL <input> elements (NOT iframes). They live inside          *
 *   #creditCardInputFields.cc-input-container. On this theme they        *
 *   inherit the global dark-theme input style:                          *
 *       color: rgb(238,240,255)  (near-white)                           *
 *       background: rgba(255,255,255,.05)  (glass)                      *
 *   The card area renders on a LIGHT panel, so near-white text on a      *
 *   near-transparent field = INVISIBLE. Google autofill uses that same  *
 *   light text colour, so an autofilled name ("Shawn i hagan") is        *
 *   invisible until the autofill row is highlighted.                    *
 *                                                                        *
 * FIX (verified live via injection): give every card <input> a solid    *
 * WHITE background with DARK text + dark -webkit-text-fill-color, and    *
 * neutralise the browser's :-webkit-autofill yellow/blue overlay so the  *
 * autofilled value stays dark-on-white and readable.                    *
 * ==================================================================== */
#order-standard_cart #creditCardInputFields input.form-control,
#order-standard_cart #creditCardInputFields input.field,
#order-standard_cart #creditCardInputFields input[type="text"],
#order-standard_cart #creditCardInputFields input[type="tel"],
#order-standard_cart .cc-input-container input.form-control,
#order-standard_cart .cc-input-container input.field,
#order-standard_cart #inputDescription,
#order-standard_cart #inputCardNumber,
#order-standard_cart #inputCardExpiry,
#order-standard_cart #inputCardCVV,
#order-standard_cart #inputCardCVV2 {
  background-color: #ffffff !important;
  color: #1a1a24 !important;
  -webkit-text-fill-color: #1a1a24 !important;
  caret-color: #1a1a24 !important;
}
/* placeholders stay a readable medium grey on the white field */
#order-standard_cart #creditCardInputFields input::placeholder,
#order-standard_cart .cc-input-container input::placeholder,
#order-standard_cart #inputDescription::placeholder {
  color: #6b6b7b !important;
  -webkit-text-fill-color: #6b6b7b !important;
  opacity: 1 !important;
}
/* Google / browser autofill: keep the value dark-on-white (the browser
   otherwise repaints the field with a pale overlay + light text). */
#order-standard_cart #creditCardInputFields input:-webkit-autofill,
#order-standard_cart #creditCardInputFields input:-webkit-autofill:hover,
#order-standard_cart #creditCardInputFields input:-webkit-autofill:focus,
#order-standard_cart #creditCardInputFields input:-webkit-autofill:active,
#order-standard_cart .cc-input-container input:-webkit-autofill,
#order-standard_cart #inputDescription:-webkit-autofill,
#order-standard_cart #inputDescription:-webkit-autofill:hover,
#order-standard_cart #inputDescription:-webkit-autofill:focus,
#order-standard_cart #inputCardNumber:-webkit-autofill,
#order-standard_cart #inputCardExpiry:-webkit-autofill,
#order-standard_cart #inputCardCVV:-webkit-autofill,
#order-standard_cart #inputCardCVV2:-webkit-autofill {
  -webkit-text-fill-color: #1a1a24 !important;
  caret-color: #1a1a24 !important;
  -webkit-box-shadow: 0 0 0 1000px #ffffff inset !important;
          box-shadow: 0 0 0 1000px #ffffff inset !important;
  transition: background-color 5000s ease-in-out 0s !important;
}
