/* rv_cart.css -- the re-themed cart page (checkout/cart_next.tpl) and its item list (cart_ajax_next.tpl), ONE stylesheet
   (docs/retheme-rules.md rules 20 / 23, written 2026-10-01). RV Theme tokens only (rv_theme.css). Everything is scoped to .rv-cart;
   the dialogs carry .rv-dialog (they live on <body>). */

.rv-cart { color:var(--txt); }
.rv-cart .card + .card { margin-top:14px; }
.rv-cart .card > h3 { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.rv-cart .card > h3 .rv-head-tools { display:flex; gap:8px; flex-wrap:wrap; font-size:12px; font-weight:600; }
.rvtheme.rv-cart .card > h3 .rv-head-tools .btn { width:auto; padding:6px 12px; font-size:12px; }

/* page messages (.rvtheme.rv-cart on these: rv_theme.css gives every button and .rowmsg its own layout, and a bare .rv-cart rule lost to it) */
.rvtheme.rv-cart .rv-msg.rowmsg { display:flex; align-items:flex-start; gap:10px; margin:0 0 14px; }
.rv-cart .rv-msg > span { flex:1 1 auto; }
.rv-cart .rv-msg a { color:inherit; text-decoration:underline; }
.rvtheme.rv-cart .rv-msg-x { flex:none; width:auto; min-width:0; margin:0; background:none; border:0; color:inherit; font-size:20px; line-height:1; cursor:pointer; padding:0 2px; opacity:.7; }
.rv-cart .rv-msg-x:hover { opacity:1; }
/* returned-eCheck banner (RVECheckRecovery::bannerHtml, themed form) */
.rv-cart .rv-echeck-recovery { margin:0 0 14px; line-height:1.55; }
.rv-cart .rv-echeck-recovery .btn { margin-top:8px; }

/* Quick Order. The theme's .card clips (overflow:hidden), which hid the suggestion list under the next card (Russell 2026-10-01: one row showing): this
   card lets it overflow and stacks above the cards after it. */
.rvtheme.rv-cart .card.rv-card-qo { overflow:visible; z-index:30; }
.rv-cart .rv-qo { position:relative; }
.rv-cart .rv-qo-msg { margin:0 0 10px; font-size:13px; line-height:1.4; color:var(--muted); }
.rv-cart .rv-qo-msg.is-err { color:#fca5a5; }
.rv-cart .rv-qo-msg[hidden] { display:none; }
.rv-cart .rv-qo-grid { display:grid; gap:10px; }
@media (min-width:860px) { .rv-cart .rv-qo-grid.is-staff { grid-template-columns:1.1fr 1.15fr 1.35fr 1.1fr; align-items:start; } }
.rv-cart .rv-qo-box { position:relative; padding:10px 12px; background:var(--panel); border:1px solid var(--line); border-radius:12px; }
.rv-cart .rv-qo-box.is-entry { background:rgba(99,102,241,.12); border-color:var(--accent); }
.rv-cart .rv-qo-box > label { display:block; margin:0 0 6px; color:var(--muted); font-size:12px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.rv-cart .rv-qo-row { display:flex; gap:8px; align-items:center; }
.rv-cart .rv-qo-row > input[type=text] { flex:1 1 auto; min-width:0; }
.rv-cart .rv-qo-row > select { flex:1 1 0; min-width:0; }
.rvtheme.rv-cart .rv-qo-row > select#rv-disc-type { flex:1 1 92px; min-width:92px; }
.rvtheme.rv-cart .rv-qo-row > select#rv-disc-sign { flex:0 0 58px; min-width:58px; width:58px; }
.rvtheme.rv-cart .rv-qo-row > input#rv-disc-pct { flex:none; width:64px; }
.rv-cart .rv-qo-row > input.rv-qty { flex:none; }
.rvtheme.rv-cart .rv-qo-box .btn { width:auto; flex:none; white-space:nowrap; }
.rv-cart #rv-customerinfo { margin-top:8px; font-size:12.5px; line-height:1.5; color:var(--muted); }
.rv-cart #rv-customerinfo b { color:var(--txt); }
.rv-cart #rv-customerinfo a { display:inline-block; margin:0 0 6px; padding:5px 10px; border:1px solid var(--line2); border-radius:8px; color:var(--txt); font-size:12px; font-weight:600; text-decoration:none; float:none; }
.rv-cart #rv-customerinfo[hidden] { display:none; }

/* suggestion list (rv_suggest.js) */
.rv-cart .rv-suggest { position:absolute; left:0; right:0; z-index:50; margin:6px 0 0; padding:6px; list-style:none; background:var(--bg2); color:var(--txt); border:1px solid var(--line2); border-radius:12px;
  box-shadow:0 14px 34px rgba(0,0,0,.5); max-height:min(70vh, 640px); overflow-y:auto; font-size:14px; line-height:1.4; }   /* tall enough for the whole 16-row answer on a desktop, like the old box */
.rv-cart .rv-suggest[hidden] { display:none; }
.rv-cart .rv-suggest li { padding:9px 12px; border-radius:8px; cursor:pointer; }
.rv-cart .rv-suggest li[aria-selected="true"] { color:#fff; background:rgba(34,211,238,.16); box-shadow:inset 3px 0 0 var(--accent2); }
.rv-cart .rv-suggest li b { font-weight:700; }
.rv-cart .rv-pill { float:right; margin-left:12px; padding:1px 9px; border:1px solid currentColor; border-radius:999px; font-size:11px; font-style:normal; font-weight:700; line-height:1.5; }
.rv-cart .rv-pill.is-off { color:var(--bad); } .rv-cart .rv-pill.is-disc { color:var(--warn); }
.rv-cart .rv-qo-box:has(.rv-suggest:not([hidden])) { z-index:5; }

/* the two slots + the estimator, on one grid */
.rv-cart .rv-cart-grid { display:grid; gap:14px; grid-template-columns:1fr; }
@media (min-width:860px) { .rv-cart .rv-cart-grid { grid-template-columns:minmax(0,1fr) 360px; align-items:start; } .rv-cart .rv-cart-grid > #rv-slot-items { grid-column:1 / -1; } }
.rv-cart #rv-cart-loading { margin:0 0 14px; color:var(--muted); }
.rv-cart #rv-cart-loading[hidden] { display:none; }
.rv-cart.rv-busy #rv-slot-items > *, .rv-cart.rv-busy #rv-slot-totals > * { opacity:.5; pointer-events:none; transition:opacity .15s; }


.rv-cart .rv-weight { margin-top:8px; color:var(--muted); font-size:12.5px; cursor:help; }
.rv-cart .rv-checkout { display:flex; flex-direction:column; gap:10px; margin-top:14px; }
.rv-cart .rv-checkout .btn.primary { width:100%; padding:13px 16px; font-size:15px; }
.rv-cart .rv-secure { display:inline-flex; align-items:center; gap:6px; color:var(--muted); font-size:12.5px; text-decoration:none; }
.rv-cart .rv-secure:hover { color:var(--txt); }
.rv-cart .rv-secure svg { width:16px; height:16px; color:var(--good); }
/* coupon / voucher / reward */
.rv-cart .rv-disc-pick { display:grid; gap:6px; margin:12px 0 0; }
.rv-cart .rv-disc-pick label { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--txt); cursor:pointer; }
.rv-cart .rv-disc-pick input { width:auto; margin:0; accent-color:var(--accent); }
.rv-cart .rv-discount { margin-top:10px; padding:10px; background:var(--panel); border:1px solid var(--line); border-radius:10px; }
.rv-cart .rv-discount[hidden] { display:none; }
.rv-cart .rv-discount label { display:block; margin:0 0 6px; color:var(--muted); font-size:12px; font-weight:600; }
.rv-cart .rv-discount .rv-qo-row input[type=text] { flex:1 1 auto; min-width:0; }
.rvtheme.rv-cart .rv-discount .btn { width:auto; flex:none; }

/* shipping estimate (page-level) */
.rv-cart #rv-cart-estimate[hidden] { display:none; }
.rv-cart .rv-est-fields { display:grid; gap:8px; grid-template-columns:minmax(0,1fr) 140px; align-items:center; }
.rv-cart .rv-est-fields .rv-flagwrap { min-width:0; }
.rv-cart .rv-est-fields .rv-flagwrap > select { width:100%; }
.rv-cart .rv-est-fields .rv-fieldmsg { grid-column:1 / -1; }
.rv-cart .rv-est-actions { margin-top:10px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.rvtheme.rv-cart .rv-est-actions .btn { width:auto; }
.rv-cart .rv-est-actions .btn.is-busy { opacity:.6; cursor:progress; }
.rv-cart .rv-est-hint { color:var(--muted); font-size:12.5px; line-height:1.5; margin:8px 0 0; }
/* express wallet buttons, inside the estimator (Russell 2026-08-30: under the country box, not below the whole box) */
.rv-cart #rv-cart-wallets { margin-top:14px; padding-top:12px; border-top:1px solid var(--line); }
.rv-cart #rv-cart-wallets[hidden] { display:none; }
.rv-cart #rv-cart-wallets .rv-wallets-lab { margin:0 0 8px; color:var(--muted); font-size:12px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.rv-cart .rv-wallets-row { display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.rv-cart .rv-wallets-row #AmazonPayButton { text-align:left !important; width:150px; max-width:150px; min-height:40px; }   /* the Amazon module writes text-align:right inline */
.rv-cart .rv-wallets-row > div:empty:not(#AmazonPayButton) { display:none; }   /* not Amazon's: it draws inside a shadow root, which :empty still counts as empty (it was hidden, 0x0) */
.rv-cart .rv-wallets-row #AmazonPayButton { width:150px !important; height:40px; overflow:hidden; }
/* The wallet module's own buttons are plain <button>s styled inline; the theme's general button look (small uppercase, padding) overrode them, so the
   Venmo label sat small and low (Russell 2026-10-01). Give them back their own look: the brand box, centered, normal case. */
#rv-cart-page #wallet-express-venmo-btn, #rv-cart-page #wallet-express-applepay-btn { display:flex !important; align-items:center; justify-content:center; width:100% !important; height:100% !important;
  min-width:0; margin:0; padding:0 !important; border:0 !important; border-radius:6px !important; box-shadow:none !important; text-transform:none !important; letter-spacing:normal !important; line-height:1 !important; }
#rv-cart-page #wallet-express-venmo-btn:not([style*="display:none"]):not([style*="display: none"]) { background:#3D95CE !important; color:#fff !important; font-family:inherit; font-size:17px !important; font-weight:800 !important; font-style:italic; }
#rv-cart-page #wallet-express-venmo-btn[style*="display:none"], #rv-cart-page #wallet-express-venmo-btn[style*="display: none"], #rv-cart-page #wallet-express-applepay-btn[style*="display:none"], #rv-cart-page #wallet-express-applepay-btn[style*="display: none"] { display:none !important; }

/* wishlist card (uses the same list rows) */
.rv-cart #rv-cart-wishlist[hidden] { display:none; }
.rv-cart .rv-row.is-wish { grid-template-columns:72px minmax(0,1fr) 110px 118px 150px 40px; grid-template-areas:"img name model price act rm"; }
.rv-cart .rv-c-act { grid-area:act; text-align:right; }
.rvtheme.rv-cart .rv-c-act .btn { width:auto; padding:7px 12px; font-size:12.5px; white-space:nowrap; }
.rv-cart .rv-wish-note { display:block; margin-top:6px; font-size:12px; }
.rv-cart .rv-wish-note.is-ok { color:var(--good); } .rv-cart .rv-wish-note.is-err { color:var(--bad); }
@media (max-width:700px) { .rv-cart .rv-row.is-wish { grid-template-columns:64px minmax(0,1fr) 40px; grid-template-areas:"img name rm" "img model rm" "img price rm" "img act rm"; } .rv-cart .rv-c-act { text-align:left; } }

/* the Model / Serial Number card's look moved to rv_models.css (shared with My Account, 2026-10-02) */

/* dialogs (the base look is in rv_theme.css, the ONE source: rv_dialog.js and the checkout popups use it too) */
dialog.rv-dialog h3 { margin:0 0 10px; font-size:16px; font-weight:800; }
dialog.rv-dialog .field { margin:0 0 12px; }
dialog.rv-dialog .field > label { display:block; margin:0 0 6px; color:var(--muted); font-size:12px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
dialog.rv-dialog .rv-linkbox { display:flex; align-items:center; gap:8px; }
dialog.rv-dialog .rv-linkbox code { flex:1 1 auto; min-width:0; overflow-wrap:anywhere; padding:8px 10px; background:var(--panel); border:1px solid var(--line); border-radius:8px; font-size:12.5px; color:var(--txt); }
dialog.rv-dialog .rv-linkbox .btn { flex:none; width:auto; padding:7px 12px; font-size:12.5px; }
dialog.rv-dialog .btn { width:auto; }
dialog.rv-dialog .hint { display:block; margin-top:6px; color:var(--muted); font-size:12px; line-height:1.5; }
dialog.rv-lightbox { padding:10px; width:auto; }
dialog.rv-lightbox .rv-zoom-img { display:block; max-width:min(90vw, 700px); max-height:80vh; border-radius:10px; background:#fff; }
dialog.rv-dbg { line-height:1.6; font-size:14px; }
dialog.rv-dbg .rv-dbg-head { margin:0 0 4px; padding:12px 14px; border:1px solid var(--line2); border-radius:10px; background:rgba(2,6,18,.35); }
dialog.rv-dbg .rv-dbg-note { color:var(--muted); font-size:13px; }
dialog.rv-dbg .rv-dbg-chip { display:inline-block; margin:6px 6px 0 0; padding:6px 12px !important; border-radius:8px; border:1px solid var(--line2); font-size:13px; font-weight:700; background:rgba(2,6,18,.35) !important; color:var(--muted) !important; }
dialog.rv-dbg .rv-dbg-chip a { color:inherit !important; text-decoration:underline; }
dialog.rv-dbg .rv-dbg-on { background:var(--good) !important; border-color:var(--good); color:#06281d !important; }
dialog.rv-dbg .rv-dbg-block { background:rgba(248,113,113,.12) !important; border-color:var(--bad); color:var(--bad) !important; }
/* shipping quotes */
dialog.rv-quotepop .rv-quote-lead { margin:0 0 10px; color:var(--muted); font-size:13px; }
dialog.rv-quotepop .rv-quote-list { display:grid; gap:6px; max-height:60vh; overflow-y:auto; }
dialog.rv-quotepop .rv-quote-row { text-transform:none; letter-spacing:normal; font-weight:400; color:var(--txt); display:grid; grid-template-columns:20px minmax(0,1fr) auto; gap:10px; align-items:start; padding:10px 12px; border:1px solid var(--line); border-radius:10px; cursor:pointer; }
dialog.rv-quotepop .rv-quote-row:has(input:checked) { border-color:var(--good); background:rgba(52,211,153,.08); }
dialog.rv-quotepop .rv-quote-row input { width:20px; height:20px; margin:1px 0 0; accent-color:var(--good); }
dialog.rv-quotepop .rv-quote-main b { display:block; font-size:14px; }
dialog.rv-quotepop .rv-quote-svc { display:block; color:var(--txt); font-size:12.5px; font-weight:600; }
dialog.rv-quotepop .rv-quote-eta { display:block; color:var(--muted); font-size:12.5px; }
dialog.rv-quotepop .rv-quote-tip { display:block; color:var(--muted); font-size:11.5px; line-height:1.45; margin-top:3px; }
dialog.rv-quotepop .rv-quote-cost { font-weight:800; white-space:nowrap; display:flex; align-items:center; gap:8px; }
dialog.rv-quotepop .rv-quote-q { width:22px; height:22px; min-width:0; padding:0; margin:0; border:1px solid var(--line2); border-radius:50%; background:var(--panel); color:var(--accent2); font-size:12px; font-weight:800; line-height:1; cursor:pointer; flex:none; }
dialog.rv-quotepop .rv-quote-q[aria-expanded="true"] { background:rgba(34,211,238,.16); border-color:var(--accent2); }
dialog.rv-quotepop .rv-quote-tip { grid-column:2 / -1; }
dialog.rv-quotepop .rv-quote-tip[hidden] { display:none; }
dialog.rv-quotepop .rv-quote-actions { margin-top:14px; display:flex; justify-content:flex-end; }
