/**
 * buyer-dashboard.css — Buyer Dashboard Styles
 *
 * Styles for all buyer-facing views:
 *   - Dashboard layout, stats, getting started checklist
 *   - Live call widget states
 *   - Spending cap bars
 *   - Invoice summary widget
 *   - Lead list, lead card rows, lead detail
 *   - Analytics tabs + PP gate walls
 *   - Onboarding wizard (F88)
 *   - Premium overview page (F88)
 *   - Settings tabs, language selector
 *   - Staff management table
 *   - Referral dashboard
 *   - Suspended view
 *   - Cross-niche referral form
 *   - Lead outcomes form
 *   - Notification bell / toast
 *
 * All buyer views scoped to .rv-buyer-context for CSS specificity.
 * RTL: dir="rtl" on #rv-buyer-settings when ar/fa/he selected.
 * Niche-specific theming: per-niche palette is emitted as inline :root vars
 *   from rv_themes (resolvevia_build_theme_css(), DRIFT-738); no body class.
 *
 * @package ResolveVia
 * @since   1.0.0
 *
 * Schema: v2.37.39 / Migration 110 / 101 active tables
 */

/* ============================================================================
   1. LAYOUT & WRAPPERS
   ============================================================================ */

.rv-dashboard-wrap {
	max-width: 1200px;
	margin: 0 auto;
	padding: var(--rv-space-5) var(--rv-space-4);
}

.rv-dashboard-cols {
	display: grid;
	grid-template-columns: 1fr 320px;
	gap: var(--rv-space-5);
	margin-top: var(--rv-space-5);
}

@media (max-width: 900px) {
	.rv-dashboard-cols {
		grid-template-columns: 1fr;
	}
}

.rv-section {
	background: var(--rv-white);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-md);
	padding: 20px;
	margin-bottom: 20px;
}

.rv-section__header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: var(--rv-space-4);
}

.rv-section__title {
	font-size: var(--rv-font-size-md);
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-900);
	margin: 0;
}

.rv-section__view-all {
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-500);
	text-decoration: none;
}

.rv-section__view-all:hover {
	color: var(--rv-primary, #2563eb);
}

/* ============================================================================
   2. NOTICES
   ============================================================================ */

.rv-notice {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: var(--rv-space-3) var(--rv-space-4);
	border-radius: var(--rv-radius-sm);
	margin-bottom: var(--rv-space-4);
	font-size: var(--rv-font-size-base);
}

/* DRIFT-756: repointed to the global semantic tokens (dark-aware) — see the
   matching block in main.css. Border moves to the canonical accent (in-hue
   darkening) and each notice gains a dark variant. --storm -> purple,
   --invoice -> orange, --intro -> success. DRIFT-757: INFO BORDER now migrated
   to var(--rv-info) (cyan, both modes; old literal #3b82f6 removed); warning
   canonical darkened to #c2620a, auto-adopted via var(--rv-warning). */
.rv-notice--info    { background: var(--rv-info-bg);    border-left: 4px solid var(--rv-info);   color: var(--rv-info-text); }
.rv-notice--warning { background: var(--rv-warning-bg); border-left: 4px solid var(--rv-warning); color: var(--rv-warning-text); }
.rv-notice--error   { background: var(--rv-error-bg);   border-left: 4px solid var(--rv-error);   color: var(--rv-error-text); }
.rv-notice--storm   { background: var(--rv-purple-bg);  border-left: 4px solid var(--rv-purple);  color: var(--rv-purple-text); }
.rv-notice--invoice { background: var(--rv-orange-bg);  border-left: 4px solid var(--rv-orange);  color: var(--rv-orange-text); }
.rv-notice--intro   { background: var(--rv-success-bg); border-left: 4px solid var(--rv-success); }

.rv-notice__text   { flex: 1; line-height: 1.5; }
.rv-notice__action { margin-left: var(--rv-space-2); font-weight: var(--rv-weight-semibold); white-space: nowrap; text-decoration: underline; }
.rv-notice__dismiss { background: none; border: none; cursor: pointer; font-size: var(--rv-font-size-md); line-height: 1; color: inherit; padding: 0; margin-left: auto; opacity: 0.7; }
.rv-notice__dismiss:hover { opacity: 1; }

.rv-consolidated-notice .rv-notice__text { flex: 1; }

/* ============================================================================
   3. LIVE CALL WIDGET (F26)
   ============================================================================ */

.rv-widget--live-call {
	background: var(--rv-white);
	border: 2px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-mlg);
	padding: 20px;
	margin-bottom: 20px;
	transition: border-color 0.2s ease;
}

.rv-widget--live-call.rv-widget--ringing {
	border-color: var(--rv-warning);
	box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.15);
	animation: rv-pulse-ring 1.5s ease infinite;
}

.rv-widget--live-call.rv-widget--connecting {
	border-color: var(--rv-success);
	box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.15);
}

.rv-widget--live-call.rv-widget--qualified {
	border-color: #2563eb;
}

@keyframes rv-pulse-ring {
	0%, 100% { box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.15); }
	50%       { box-shadow: 0 0 0 6px rgba(245, 158, 11, 0.08); }
}

.rv-widget__badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 10px;
	border-radius: var(--rv-radius-xl);
	font-size: var(--rv-font-size-sm);
	font-weight: var(--rv-weight-semibold);
	text-transform: uppercase;
	letter-spacing: 0.5px;
}

.rv-widget__badge--idle       { background: var(--rv-gray-100); color: var(--rv-gray-500); }
.rv-widget__badge--ringing    { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
.rv-widget__badge--connecting { background: var(--rv-success-bg); color: var(--rv-success-text); }
.rv-widget__badge--qualified  { background: #dbeafe; color: #1e40af; }

.rv-widget__call-panel {
	margin-top: var(--rv-space-3);
	padding: 14px;
	background: #fafafa;
	border-radius: var(--rv-radius-sm);
	font-size: 15px;
	font-weight: var(--rv-weight-medium);
}

.rv-widget__survey-panel {
	margin-top: var(--rv-space-3);
	padding: 14px;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	border-radius: var(--rv-radius-sm);
}

.rv-widget__progress {
	height: 6px;
	background: var(--rv-gray-200);
	border-radius: var(--rv-radius-xs);
	margin-top: 10px;
	overflow: hidden;
}

.rv-widget__progress-fill {
	height: 100%;
	background: var(--rv-success);
	border-radius: var(--rv-radius-xs);
	transition: width 0.1s linear;
}

.rv-widget__feedback {
	font-size: var(--rv-font-size-smd);
	margin-top: var(--rv-space-2);
	min-height: 18px;
	color: var(--rv-gray-500);
}

/* ============================================================================
   4. STATS ROW
   ============================================================================ */

.rv-stats-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: var(--rv-space-4);
	margin-bottom: 20px;
}

.rv-stat-card {
	background: var(--rv-white);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-md);
	padding: var(--rv-space-4);
	text-align: center;
}

.rv-stat-card--highlight {
	border-color: #2563eb;
	background: #eff6ff;
}

.rv-stat-card__value {
	font-size: 28px;
	font-weight: var(--rv-weight-bold);
	color: var(--rv-gray-900);
	line-height: 1.2;
}

.rv-stat-card__label {
	font-size: var(--rv-font-size-sm);
	color: var(--rv-gray-500);
	margin-top: var(--rv-space-1);
}

.rv-stat-card__link {
	display: block;
	font-size: var(--rv-font-size-sm);
	color: #2563eb;
	margin-top: 6px;
	text-decoration: underline;
}

/* Pending Quotes page — 6-card stats bar (desktop: flex row; mobile: 2×3 grid via mobile-responsive-css.md) */
.rv-quotes-stats-bar {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	gap: var(--rv-space-3);
	margin-bottom: 20px;
	align-items: stretch;
}

.rv-quotes-stats-bar .rv-stat-card {
	flex: 1 1 80px;
	min-width: 80px;
	text-align: center;
}

/* ============================================================================
   5. GETTING STARTED CHECKLIST (F88 §88.8)
   ============================================================================ */

.rv-getting-started {
	background: var(--rv-success-bg);
	border: 1px solid #86efac;
	border-radius: var(--rv-radius-md);
	padding: 20px;
	margin-bottom: 20px;
}

.rv-getting-started__title {
	font-size: var(--rv-font-size-md);
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-success-text);
	margin: 0 0 var(--rv-space-3);
}

.rv-getting-started__list {
	list-style: none;
	padding: 0;
	margin: 0;
}

.rv-getting-started__item {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: var(--rv-space-2) 0;
	font-size: var(--rv-font-size-base);
	color: var(--rv-gray-700);
	border-bottom: 1px solid rgba(0,0,0,0.05);
}

.rv-getting-started__item:last-child { border-bottom: none; }
.rv-getting-started__item--done { color: var(--rv-gray-500); text-decoration: line-through; }
.rv-getting-started__check { font-size: var(--rv-font-size-md); width: 20px; flex-shrink: 0; }
.rv-getting-started__label { flex: 1; }
.rv-getting-started__cta { margin-left: auto; }

/* ============================================================================
   6. SPENDING CAP BARS (F27)
   ============================================================================ */

.rv-cap-bars {
	background: var(--rv-white);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-md);
	padding: var(--rv-space-4);
	margin-bottom: 20px;
}

.rv-cap-bars__niche { margin-bottom: var(--rv-space-3); }
.rv-cap-bars__niche:last-child { margin-bottom: 0; }
.rv-cap-bars__niche-label {
	font-size: var(--rv-font-size-sm);
	font-weight: var(--rv-weight-semibold);
	text-transform: uppercase;
	letter-spacing: 0.5px;
	color: var(--rv-gray-500);
	margin-bottom: var(--rv-space-2);
	/* Truncation — full name accessible via title attr */
	max-width: 200px;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

/* When hovering the label, show a subtle opacity hint that the full name is in the title tooltip */
.rv-cap-bars__niche-label[title]:hover {
	cursor: default;
	opacity: 0.85;
}

.rv-cap-bar { margin-bottom: 10px; }
.rv-cap-bar:last-child { margin-bottom: 0; }

.rv-cap-bar__header {
	display: flex;
	justify-content: space-between;
	font-size: var(--rv-font-size-sm);
	color: var(--rv-gray-700);
	margin-bottom: var(--rv-space-1);
}

.rv-cap-bar__label { font-weight: var(--rv-weight-semibold); }
.rv-cap-bar__count { color: var(--rv-gray-500); }

.rv-cap-bar__track {
	height: 8px;
	background: var(--rv-gray-200);
	border-radius: var(--rv-radius-xs);
	overflow: hidden;
}

.rv-cap-bar__fill {
	height: 100%;
	background: #2563eb;
	border-radius: var(--rv-radius-xs);
	transition: width 0.3s ease;
}

.rv-cap-bar__fill--warning { background: var(--rv-warning); }
.rv-cap-bar__fill--hit     { background: var(--rv-error); }

.rv-cap-bar__alert {
	font-size: var(--rv-font-size-sm);
	margin-top: var(--rv-space-1);
	padding: var(--rv-space-1) var(--rv-space-2);
	border-radius: var(--rv-radius-xs);
}

.rv-cap-bar__alert--warning { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
.rv-cap-bar__alert--hit     { background: var(--rv-error-bg); color: var(--rv-error-text); }

/* Multi-niche cap group container */
.rv-cap-niche-group {
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-sm);
	padding: var(--rv-space-4);
	margin-bottom: var(--rv-space-4);
	background: #fafafa;
}

.rv-cap-niche-group:last-child {
	margin-bottom: 0;
}

/* ============================================================================
   7. INVOICE SUMMARY WIDGET
   ============================================================================ */

.rv-invoice-summary { margin-bottom: var(--rv-space-4); }

.rv-invoice-summary__row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	padding: 6px 0;
	border-bottom: 1px solid var(--rv-gray-100);
	font-size: var(--rv-font-size-smd);
}

.rv-invoice-summary__row:last-child { border-bottom: none; }
.rv-invoice-summary__label { color: var(--rv-gray-500); }
.rv-invoice-summary__total { font-weight: var(--rv-weight-bold); font-size: var(--rv-font-size-md); }
.rv-invoice-summary__total--overdue  { color: var(--rv-error); }
.rv-invoice-summary__total--pending  { color: var(--rv-gray-900); }
.rv-invoice-summary__total--paid     { color: var(--rv-success); }
.rv-invoice-summary__credits { font-size: var(--rv-font-size-xs); color: var(--rv-success); margin-left: var(--rv-space-1); }
.rv-invoice-summary__credits-balance {
	display: flex;
	justify-content: space-between;
	padding: var(--rv-space-2) 0 0;
	font-size: var(--rv-font-size-smd);
}
.rv-invoice-summary__credit-amount { color: var(--rv-success); font-weight: var(--rv-weight-semibold); }
.rv-invoice-summary__actions { margin-top: var(--rv-space-3); }

/* ============================================================================
   8. TABLES (lead list, staff, outcomes, referrals)
   ============================================================================ */

.rv-table-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.rv-table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--rv-font-size-smd);
}

.rv-table__th {
	padding: 10px 12px;
	text-align: left;
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-700);
	background: var(--rv-gray-50);
	border-bottom: 2px solid var(--rv-gray-200);
	white-space: nowrap;
}

.rv-table__th--right { text-align: right; }
.rv-table__th--actions { text-align: right; }

.rv-table__td {
	padding: 10px 12px;
	border-bottom: 1px solid var(--rv-gray-100);
	color: var(--rv-gray-700);
	vertical-align: middle;
}

.rv-table__td--right  { text-align: right; }
.rv-table__td--actions { text-align: right; white-space: nowrap; }

.rv-table__row:hover .rv-table__td { background: var(--rv-gray-50); }

/* Lead card row variant (partial-lead-card.php) */
.rv-lead-card-row {
	display: grid;
	grid-template-columns: 140px 1fr 120px 100px 80px 80px 60px;
	align-items: center;
	gap: var(--rv-space-3);
	padding: 10px 0;
	border-bottom: 1px solid var(--rv-gray-100);
	font-size: var(--rv-font-size-smd);
}

@media (max-width: 800px) {
	.rv-lead-card-row { grid-template-columns: 1fr 1fr; }
	.rv-lead-card-row__date,
	.rv-lead-card-row__duration { display: none; }
}

/* ============================================================================
   9. BADGES & STATUS
   ============================================================================ */

.rv-status-badge {
	display: inline-block;
	padding: 2px 8px;
	border-radius: var(--rv-radius-lg);
	font-size: var(--rv-font-size-xs);
	font-weight: var(--rv-weight-semibold);
	text-transform: uppercase;
	letter-spacing: 0.4px;
	white-space: nowrap;
}

.rv-status-badge--claimed, .rv-status-badge--active    { background: #dbeafe; color: #1e40af; }
.rv-status-badge--working                               { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
.rv-status-badge--converted, .rv-status-badge--paid    { background: var(--rv-success-bg); color: var(--rv-success-text); }
.rv-status-badge--lost, .rv-status-badge--overdue      { background: var(--rv-error-bg); color: var(--rv-error-text); }
.rv-status-badge--disputed, .rv-status-badge--failed   { background: #fed7aa; color: #7c2d12; }
.rv-status-badge--archived, .rv-status-badge--voided   { background: var(--rv-gray-100); color: var(--rv-gray-500); }
.rv-status-badge--pending                              { background: #e0e7ff; color: #3730a3; }
.rv-status-badge--invoice                              { }

.rv-badge {
	display: inline-block;
	padding: 2px 6px;
	border-radius: var(--rv-radius-mlg);
	font-size: var(--rv-font-size-xs);
	font-weight: var(--rv-weight-semibold);
}
.rv-badge--verified    { background: var(--rv-success-bg); color: var(--rv-success-text); }
.rv-badge--recycled    { background: var(--rv-warning-bg); color: var(--rv-warning-text); } /* DRIFT-722: amber — distinct from verified green; matches --warning palette */
.rv-badge--consolidated { background: #e0e7ff; color: #3730a3; }
.rv-badge--playbook-required { font-size: var(--rv-font-size-base); background: none; border: none; }

.rv-outcome-badge {
	display: inline-block;
	padding: 2px 8px;
	border-radius: var(--rv-radius-mlg);
	font-size: var(--rv-font-size-xs);
	font-weight: var(--rv-weight-semibold);
}
.rv-outcome-badge--won, .rv-outcome-badge--converted  { background: var(--rv-success-bg); color: var(--rv-success-text); }
.rv-outcome-badge--lost                               { background: var(--rv-error-bg); color: var(--rv-error-text); }
.rv-outcome-badge--quote_sent                         { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
.rv-outcome-badge--pending                            { background: var(--rv-gray-100); color: var(--rv-gray-500); }
.rv-outcome-badge--completed                          { background: #dbeafe; color: #1e40af; }

/* ============================================================================
   10. ANALYTICS TABS
   ============================================================================ */

.rv-tab-nav {
	display: flex;
	gap: 2px;
	background: var(--rv-gray-100);
	border-radius: var(--rv-radius-md);
	padding: 3px;
	margin-bottom: 20px;
	flex-wrap: wrap;
}

.rv-tab-nav__btn {
	flex: 1;
	min-width: 80px;
	padding: 8px 14px;
	background: none;
	border: none;
	border-radius: var(--rv-radius-sm);
	font-size: var(--rv-font-size-smd);
	font-weight: var(--rv-weight-medium);
	color: var(--rv-gray-500);
	cursor: pointer;
	transition: all 0.15s;
	white-space: nowrap;
}

.rv-tab-nav__btn--active {
	background: var(--rv-white);
	color: var(--rv-gray-900);
	box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

.rv-tab-nav__btn--locked { opacity: 0.6; }
.rv-tab-nav__btn:hover:not(.rv-tab-nav__btn--active) { background: rgba(255,255,255,0.6); color: var(--rv-gray-700); }

.rv-tab-nav__lock { font-size: var(--rv-font-size-sm); margin-left: 3px; }

.rv-analytics__panel { display: none; }
.rv-analytics__panel--active { display: block; }

/* PP gate walls (Rule 136 — feature-specific) */
.rv-pp-gate {
	text-align: center;
	padding: var(--rv-space-7) var(--rv-space-6);
	background: var(--rv-gray-50);
	border: 2px dashed var(--rv-gray-200);
	border-radius: var(--rv-radius-lg);
}

.rv-pp-gate__icon { font-size: 48px; margin-bottom: var(--rv-space-4); }
.rv-pp-gate__title { font-size: var(--rv-font-size-xl); font-weight: var(--rv-weight-bold); color: var(--rv-gray-900); margin-bottom: 10px; }
.rv-pp-gate__desc  { font-size: 15px; color: var(--rv-gray-500); max-width: 400px; margin: 0 auto var(--rv-space-5); line-height: 1.6; }

/* ============================================================================
   11. ONBOARDING WIZARD (F88)
   ============================================================================ */

.rv-onboarding-wrap {
	max-width: 600px;
	margin: 40px auto;
	padding: 0 var(--rv-space-4);
}

.rv-onboarding__progress {
	margin-bottom: var(--rv-space-6);
}

.rv-onboarding__progress-text {
	font-size: var(--rv-font-size-base);
	color: var(--rv-gray-500);
	margin-bottom: var(--rv-space-2);
	text-align: center;
}

.rv-onboarding__progress-bar {
	height: 8px;
	background: var(--rv-gray-200);
	border-radius: var(--rv-radius-xs);
	overflow: hidden;
}

.rv-onboarding__progress-fill {
	height: 100%;
	background: var(--rv-primary, #2563eb);
	border-radius: var(--rv-radius-xs);
	transition: width 0.4s ease;
}

.rv-onboarding__step { display: none; }
.rv-onboarding__step--active { display: block; }
.rv-onboarding__step--hidden { display: none; }

.rv-onboarding__step-header {
	text-align: center;
	margin-bottom: 28px;
}

.rv-onboarding__step-title {
	font-size: 28px;
	font-weight: var(--rv-weight-bold);
	color: var(--rv-gray-900);
	margin-bottom: var(--rv-space-3);
}

.rv-onboarding__step-desc {
	font-size: 15px;
	color: var(--rv-gray-500);
	line-height: 1.6;
}

.rv-onboarding__bullets {
	list-style: none;
	padding: 0;
	margin: 0 0 28px;
}

.rv-onboarding__bullets li {
	padding: 10px 0;
	border-bottom: 1px solid var(--rv-gray-100);
	font-size: 15px;
	color: var(--rv-gray-700);
	display: flex;
	align-items: center;
	gap: 10px;
}

.rv-onboarding__bullets li::before {
	content: "✓";
	color: var(--rv-success);
	font-weight: var(--rv-weight-bold);
	flex-shrink: 0;
}

.rv-onboarding__step-actions {
	display: flex;
	flex-direction: column;
	gap: 10px;
	align-items: center;
	margin-top: 28px;
}

.rv-onboarding__step-header--complete {
	padding: var(--rv-space-5);
	background: var(--rv-success-bg);
	border-radius: var(--rv-radius-lg);
	border: 2px solid #86efac;
}

.rv-onboarding__complete-icon { font-size: 48px; margin-bottom: var(--rv-space-3); }

/* Stripe element container */
.rv-stripe-element-container {
	border: 1px solid var(--rv-gray-300);
	border-radius: var(--rv-radius-sm);
	padding: var(--rv-space-3);
	background: var(--rv-white);
	margin-bottom: var(--rv-space-3);
}

/* ============================================================================
   12. PREMIUM PACK OVERVIEW (F88 §88.9)
   ============================================================================ */

.rv-pp-overview-wrap {
	max-width: 900px;
	margin: 0 auto;
	padding: var(--rv-space-5) var(--rv-space-4);
}

.rv-pp-overview__section {
	margin-bottom: var(--rv-space-7);
}

.rv-pp-overview__headline {
	font-size: 32px;
	font-weight: var(--rv-weight-extrabold);
	color: var(--rv-gray-900);
	text-align: center;
	margin-bottom: var(--rv-space-3);
}

.rv-pp-overview__subheadline {
	font-size: var(--rv-font-size-lg);
	color: var(--rv-gray-500);
	text-align: center;
	line-height: 1.6;
}

.rv-pp-overview__section-title {
	font-size: var(--rv-font-size-2xl);
	font-weight: var(--rv-weight-bold);
	color: var(--rv-gray-900);
	text-align: center;
	margin-bottom: var(--rv-space-5);
}

.rv-pp-outcomes-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 20px;
}

.rv-pp-outcome-card {
	background: var(--rv-white);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-mlg);
	padding: var(--rv-space-5);
	text-align: center;
}

.rv-pp-outcome-card__icon { font-size: 36px; margin-bottom: var(--rv-space-3); }

.rv-pp-features-list {
	list-style: none;
	padding: 0;
	max-width: 500px;
	margin: 0 auto;
}

.rv-pp-features-list__item {
	display: flex;
	align-items: center;
	gap: var(--rv-space-3);
	padding: var(--rv-space-3) 0;
	font-size: 15px;
	color: var(--rv-gray-700);
	border-bottom: 1px solid var(--rv-gray-100);
}

.rv-pp-features-list__check { color: var(--rv-success); font-size: var(--rv-font-size-lg); font-weight: var(--rv-weight-bold); }

.rv-pp-tiers-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: var(--rv-space-4);
}

.rv-pp-tier-card {
	background: var(--rv-white);
	border: 2px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-mlg);
	padding: var(--rv-space-5) var(--rv-space-4);
	text-align: center;
}

.rv-pp-tier-card--team  { border-color: var(--rv-primary, #2563eb); }

.rv-pp-tier-card__name   { font-size: var(--rv-font-size-base); font-weight: var(--rv-weight-semibold); text-transform: uppercase; letter-spacing: 1px; color: var(--rv-gray-500); margin-bottom: var(--rv-space-2); }
.rv-pp-tier-card__amount { font-size: 36px; font-weight: var(--rv-weight-extrabold); color: var(--rv-gray-900); }
.rv-pp-tier-card__amount--custom { font-size: var(--rv-font-size-lg); color: var(--rv-gray-500); }
.rv-pp-tier-card__period { font-size: var(--rv-font-size-smd); color: var(--rv-gray-400); }
.rv-pp-tier-card__users  { font-size: var(--rv-font-size-sm); color: var(--rv-gray-500); margin-top: var(--rv-space-2); }

.rv-pp-demo-card {
	background: var(--rv-gray-50);
	border: 1px dashed var(--rv-gray-300);
	border-radius: var(--rv-radius-mlg);
	padding: var(--rv-space-6);
	text-align: center;
}

.rv-pp-upgrade-cta {
	text-align: center;
	padding: var(--rv-space-6) 0;
}

.rv-pp-upgrade-cta__cancel-hint {
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-400);
	margin-top: var(--rv-space-2);
}

/* ============================================================================
   13. SUSPENDED VIEW
   ============================================================================ */

.rv-suspended-wrap {
	display: flex;
	justify-content: center;
	align-items: center;
	min-height: 60vh;
	padding: var(--rv-space-6) var(--rv-space-4);
}

.rv-suspended__card {
	max-width: 520px;
	width: 100%;
	text-align: center;
}

.rv-suspended__icon    { font-size: 48px; margin-bottom: var(--rv-space-4); }
.rv-suspended__title   { font-size: 26px; font-weight: var(--rv-weight-bold); color: var(--rv-gray-900); margin-bottom: var(--rv-space-4); }
.rv-suspended__message { font-size: 15px; color: var(--rv-gray-700); line-height: 1.7; margin-bottom: 20px; }
.rv-suspended__invoice-summary {
	background: var(--rv-gray-50);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-md);
	padding: var(--rv-space-4);
	margin-bottom: var(--rv-space-4);
}

.rv-suspended__invoice-detail {
	display: flex;
	justify-content: space-between;
	margin-bottom: var(--rv-space-3);
	font-size: 15px;
	font-weight: var(--rv-weight-semibold);
}

.rv-suspended__actions {
	display: flex;
	flex-direction: column;
	gap: var(--rv-space-2);
	margin-bottom: var(--rv-space-4);
}

.rv-suspended__resume-hint {
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-500);
	line-height: 1.6;
	margin-bottom: 20px;
}

.rv-suspended__footer {
	display: flex;
	justify-content: center;
	gap: var(--rv-space-3);
	border-top: 1px solid var(--rv-gray-100);
	padding-top: var(--rv-space-4);
}

/* ============================================================================
   14. FORMS (common buyer form styles)
   ============================================================================ */

.rv-form-row {
	margin-bottom: var(--rv-space-4);
}

.rv-form-label {
	display: block;
	font-size: var(--rv-font-size-smd);
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-700);
	margin-bottom: 6px;
}

.rv-form-input {
	width: 100%;
	padding: var(--rv-space-2) var(--rv-space-3);
	border: 1px solid var(--rv-gray-300);
	border-radius: var(--rv-radius-sm);
	font-size: var(--rv-font-size-base);
	color: var(--rv-gray-900);
	background: var(--rv-white);
	box-sizing: border-box;
	transition: border-color 0.15s;
}

.rv-form-input:focus {
	outline: none;
	border-color: var(--rv-primary, #2563eb);
	box-shadow: 0 0 0 3px rgba(37,99,235,0.1);
}

.rv-form-input--lg { padding: var(--rv-space-3) var(--rv-space-4); font-size: var(--rv-font-size-md); }
.rv-form-input--sm { padding: 5px 8px; font-size: var(--rv-font-size-sm); max-width: 100px; }
.rv-form-input--number { max-width: 160px; text-align: right; }
.rv-form-input--time   { max-width: 120px; }

.rv-form-select {
	padding: var(--rv-space-2) var(--rv-space-3);
	border: 1px solid var(--rv-gray-300);
	border-radius: var(--rv-radius-sm);
	font-size: var(--rv-font-size-base);
	color: var(--rv-gray-900);
	background: var(--rv-white);
	cursor: pointer;
}

.rv-form-select--sm { padding: 5px 8px; font-size: var(--rv-font-size-sm); }

.rv-form-textarea {
	width: 100%;
	padding: var(--rv-space-2) var(--rv-space-3);
	border: 1px solid var(--rv-gray-300);
	border-radius: var(--rv-radius-sm);
	font-size: var(--rv-font-size-base);
	resize: vertical;
	box-sizing: border-box;
}

.rv-form-actions { display: flex; gap: 10px; align-items: center; margin-top: 20px; }

.rv-input-prefix-wrap {
	display: flex;
	align-items: center;
	border: 1px solid var(--rv-gray-300);
	border-radius: var(--rv-radius-sm);
	overflow: hidden;
	background: var(--rv-white);
}

.rv-input-prefix-wrap .rv-form-input {
	border: none;
	box-shadow: none;
	flex: 1;
}

.rv-input-prefix {
	padding: 0 10px;
	background: var(--rv-gray-100);
	border-right: 1px solid var(--rv-gray-300);
	font-size: var(--rv-font-size-base);
	color: var(--rv-gray-500);
	user-select: none;
}

/* Inline layout for cap field rows within a niche group */
.rv-form-row--inline {
	display: flex;
	align-items: center;
	gap: var(--rv-space-3);
	margin-bottom: 10px;
}

.rv-form-row--inline .rv-form-label {
	min-width: 130px;
	flex-shrink: 0;
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-700);
	margin: 0;
}

.rv-hint {
	font-size: var(--rv-font-size-sm);
	color: var(--rv-gray-400);
	margin-top: var(--rv-space-1);
	line-height: 1.5;
}

/* Toggle switch */
.rv-toggle-label {
	display: flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;
	font-size: var(--rv-font-size-base);
	user-select: none;
}

.rv-toggle-input { display: none; }

.rv-toggle-switch {
	width: 38px;
	height: 20px;
	background: var(--rv-gray-300);
	border-radius: var(--rv-radius-mlg);
	position: relative;
	flex-shrink: 0;
	transition: background 0.2s;
}

.rv-toggle-switch::after {
	content: '';
	position: absolute;
	top: 2px;
	left: 2px;
	width: 16px;
	height: 16px;
	background: var(--rv-white);
	border-radius: var(--rv-radius-circle);
	transition: transform 0.2s;
	box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}

.rv-toggle-input:checked + .rv-toggle-switch { background: var(--rv-primary, #2563eb); }
.rv-toggle-input:checked + .rv-toggle-switch::after { transform: translateX(18px); }

/* Checkbox */
.rv-checkbox-label {
	display: flex;
	align-items: center;
	gap: var(--rv-space-2);
	cursor: pointer;
	font-size: var(--rv-font-size-base);
}

/* ============================================================================
   14a. LEAD DETAIL PAGE LAYOUT
   ============================================================================
   DRIFT-449: GAP W9.A fix — Journey NEW-9 / JOURNEY-22 — June 2026.
   .rv-lead-detail__layout, .rv-lead-detail__main, .rv-lead-detail__sidebar
   had ZERO CSS in any file. The two-column desktop layout never rendered —
   sidebar actions (Dispute, Refer, Return) appeared below all 7 main content
   sections on every device, not just mobile. No desktop 2-column grid existed.
   Mobile fallback (block stacking = single column) worked by accident.
   Fix: 2-column grid on desktop; responsive rule in mobile-responsive-css.md
   collapses to single column at 768px (sidebar naturally falls below).
   Sticky sidebar keeps actions visible while buyer scrolls main content.
   ============================================================================ */

.rv-lead-detail-wrap {
	max-width: 1100px;
	margin: 0 auto;
	padding: 20px 16px;
}

.rv-lead-detail__layout {
	display: grid;
	grid-template-columns: 1fr 300px;
	gap: var(--rv-space-5);
	align-items: start;
	margin-top: var(--rv-space-4);
}

.rv-lead-detail__main {
	min-width: 0; /* Prevent grid blowout on long content */
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.rv-lead-detail__sidebar {
	position: sticky;
	top: 24px; /* Keep actions in view while scrolling main column */
}

/* Lead summary definition list */
.rv-definition-list {
	display: flex;
	flex-direction: column;
	gap: 0;
}

.rv-definition-list__row {
	display: flex;
	gap: var(--rv-space-3);
	padding: var(--rv-space-2) 0;
	border-bottom: 1px solid var(--rv-gray-100);
	font-size: var(--rv-font-size-base);
}

.rv-definition-list__row:last-child {
	border-bottom: none;
}

.rv-definition-list__row dt {
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-700);
	min-width: 140px;
	flex-shrink: 0;
}

.rv-definition-list__row dd {
	color: var(--rv-gray-900);
	margin: 0;
	flex: 1;
	min-width: 0;
	overflow-wrap: break-word;
}

/* Lead Triage (survey answers) */
.rv-triage-list {
	display: flex;
	flex-direction: column;
	gap: 0;
}

.rv-triage-list__row {
	display: flex;
	gap: var(--rv-space-3);
	padding: var(--rv-space-2) 0;
	border-bottom: 1px solid var(--rv-gray-100);
	font-size: var(--rv-font-size-base);
}

.rv-triage-list__row:last-child {
	border-bottom: none;
}

.rv-triage-list__row dt {
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-700);
	min-width: 140px;
	flex-shrink: 0;
}

.rv-triage-list__row dd {
	color: var(--rv-gray-900);
	margin: 0;
	flex: 1;
}

/* Call recording player */
.rv-recording-player {
	display: flex;
	flex-direction: column;
	gap: var(--rv-space-2);
}

.rv-recording-player__audio {
	width: 100%;
}

.rv-recording-player__meta {
	font-size: var(--rv-font-size-sm);
	color: var(--rv-gray-500);
	margin: 0;
}

.rv-recording-transcription {
	margin-top: var(--rv-space-3);
	padding: var(--rv-space-3);
	background: var(--rv-gray-50);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-sm);
}

.rv-recording-transcription__title {
	font-size: var(--rv-font-size-smd);
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-700);
	margin: 0 0 var(--rv-space-2);
}

.rv-recording-transcription__text {
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-700);
	line-height: 1.6;
	margin: 0;
	white-space: pre-wrap;
}

.rv-recording__unavailable {
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-400);
	margin: 0;
}

/* ZIP field */
.rv-lead-zip__field {
	display: flex;
	gap: var(--rv-space-2);
	align-items: flex-start;
	flex-wrap: wrap;
}

/* Notes list */
.rv-notes-list {
	display: flex;
	flex-direction: column;
	gap: var(--rv-space-3);
	margin-bottom: var(--rv-space-4);
}

.rv-note {
	padding: var(--rv-space-3);
	border-radius: var(--rv-radius-sm);
	border: 1px solid var(--rv-gray-200);
	background: var(--rv-white);
}

.rv-note--private {
	background: var(--rv-warning-bg);
	border-color: #fcd34d;
}

.rv-note__meta {
	display: flex;
	align-items: center;
	gap: var(--rv-space-2);
	margin-bottom: 6px;
	font-size: var(--rv-font-size-sm);
	flex-wrap: wrap;
}

.rv-note__author { font-size: var(--rv-font-size-smd); color: var(--rv-gray-900); }
.rv-note__type   { color: var(--rv-gray-500); font-style: italic; }
.rv-note__time   { color: var(--rv-gray-400); margin-left: auto; }

.rv-note__text {
	font-size: var(--rv-font-size-base);
	color: var(--rv-gray-700);
	line-height: 1.6;
}

/* Add note form */
.rv-add-note {
	display: flex;
	flex-direction: column;
	gap: var(--rv-space-2);
	margin-top: var(--rv-space-2);
}

.rv-add-note__controls {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

/* Dispute history */
.rv-dispute-history-item {
	padding: var(--rv-space-3);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-sm);
	margin-bottom: 10px;
	font-size: var(--rv-font-size-smd);
}

.rv-dispute-history-item--pending  { border-left: 4px solid var(--rv-warning); }
.rv-dispute-history-item--approved { border-left: 4px solid var(--rv-success); }
.rv-dispute-history-item--rejected { border-left: 4px solid var(--rv-error); }
.rv-dispute-history-item--resolved { border-left: 4px solid var(--rv-gray-500); }

.rv-dispute-history-item__status {
	font-weight: var(--rv-weight-bold);
	text-transform: uppercase;
	font-size: var(--rv-font-size-xs);
	letter-spacing: 0.5px;
	margin-bottom: 6px;
}

.rv-dispute-history-item__reason,
.rv-dispute-history-item__response {
	margin-bottom: 6px;
	line-height: 1.5;
}

.rv-dispute-history-item__charges {
	display: flex;
	gap: var(--rv-space-4);
	margin-bottom: 6px;
	font-variant-numeric: tabular-nums;
}

.rv-dispute-history-item__date {
	font-size: var(--rv-font-size-xs);
	color: var(--rv-gray-400);
	margin-top: var(--rv-space-1);
}

/* Lead detail breadcrumb */
.rv-breadcrumb {
	display: flex;
	align-items: center;
	gap: var(--rv-space-1);
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-500);
	margin-bottom: var(--rv-space-3);
	flex-wrap: wrap;
}

.rv-breadcrumb a { color: var(--rv-primary, #2563eb); text-decoration: none; }
.rv-breadcrumb a:hover { text-decoration: underline; }
.rv-breadcrumb__sep { color: var(--rv-gray-300); }

/* Lead detail badge group */
.rv-lead-detail__badges {
	display: flex;
	align-items: center;
	gap: var(--rv-space-2);
	flex-wrap: wrap;
}

/* Action group spacing in sidebar */
.rv-action-group {
	margin-bottom: var(--rv-space-3);
}

/* ============================================================================
   15. BUTTONS
   ============================================================================ */

.rv-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: var(--rv-space-2) var(--rv-space-4);
	border-radius: var(--rv-radius-sm);
	font-size: var(--rv-font-size-base);
	font-weight: var(--rv-weight-semibold);
	cursor: pointer;
	border: 1px solid transparent;
	text-decoration: none;
	transition: all 0.15s;
	white-space: nowrap;
}

.rv-btn--primary { background: var(--rv-primary, #2563eb); color: var(--rv-white); }
.rv-btn--primary:hover { background: var(--rv-primary-dark, #1d4ed8); }
.rv-btn--ghost   { background: transparent; border-color: var(--rv-gray-300); color: var(--rv-gray-700); }
.rv-btn--ghost:hover { background: var(--rv-gray-50); }
.rv-btn--secondary { background: var(--rv-gray-100); color: var(--rv-gray-700); border-color: var(--rv-gray-200); }
.rv-btn--secondary:hover { background: var(--rv-gray-200); }

.rv-btn--lg  { padding: var(--rv-space-3) var(--rv-space-5); font-size: 15px; }
.rv-btn--xl  { padding: 14px 32px; font-size: var(--rv-font-size-md); }
.rv-btn--sm  { padding: 5px 12px; font-size: var(--rv-font-size-sm); }
.rv-btn--xs  { padding: 3px 8px;  font-size: var(--rv-font-size-xs); }
.rv-btn--full { width: 100%; }
.rv-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ============================================================================
   16. FILTERS BAR
   ============================================================================ */

.rv-filters {
	background: var(--rv-gray-50);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-md);
	padding: 14px 16px;
	margin-bottom: var(--rv-space-4);
}

.rv-filters__row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: flex-end;
}

.rv-filter-group { display: flex; flex-direction: column; gap: var(--rv-space-1); }
.rv-filter-group--search { flex: 1; min-width: 160px; }
.rv-filter-group--actions { flex-direction: row; gap: 6px; align-items: flex-end; margin-top: auto; }
.rv-filter-group__label { font-size: var(--rv-font-size-xs); font-weight: var(--rv-weight-semibold); color: var(--rv-gray-500); text-transform: uppercase; letter-spacing: 0.5px; }
.rv-filter-group__select { max-width: 160px; }
.rv-filter-group__input { max-width: 180px; }

/* ============================================================================
   17. MODALS
   ============================================================================ */

.rv-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(0,0,0,0.5);
	z-index: 9000;
	display: none;
	align-items: center;
	justify-content: center;
	padding: var(--rv-space-4);
}

.rv-modal {
	background: var(--rv-white);
	border-radius: var(--rv-radius-lg);
	padding: 28px;
	max-width: 480px;
	width: 100%;
	position: relative;
	box-shadow: 0 20px 60px rgba(0,0,0,0.15);
}

.rv-modal__close {
	position: absolute;
	top: 16px;
	right: 16px;
	background: none;
	border: none;
	font-size: var(--rv-font-size-2xl);
	cursor: pointer;
	color: var(--rv-gray-400);
	line-height: 1;
}

.rv-modal__close:hover { color: var(--rv-gray-700); }
.rv-modal__title { font-size: var(--rv-font-size-xl); font-weight: var(--rv-weight-bold); margin-bottom: var(--rv-space-4); color: var(--rv-gray-900); }
.rv-modal__actions { display: flex; gap: 10px; margin-top: 20px; justify-content: flex-end; }

/* ============================================================================
   18. PAGINATION
   ============================================================================ */

.rv-pagination {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--rv-space-3);
	margin-top: 20px;
}

.rv-pagination__info { font-size: var(--rv-font-size-smd); color: var(--rv-gray-500); }

/* ============================================================================
   19. MISCELLANEOUS
   ============================================================================ */

.rv-muted { color: var(--rv-gray-400); }
.rv-hidden { display: none !important; }
.rv-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }

.rv-empty-state {
	text-align: center;
	padding: var(--rv-space-7) var(--rv-space-5);
	color: var(--rv-gray-500);
}

.rv-empty-state__icon { font-size: 36px; margin-bottom: var(--rv-space-3); }
.rv-empty-state__title { font-size: var(--rv-font-size-lg); font-weight: var(--rv-weight-semibold); color: var(--rv-gray-700); margin-bottom: var(--rv-space-2); }
.rv-empty-state__text  { font-size: var(--rv-font-size-base); line-height: 1.6; }

.rv-feedback {
	font-size: var(--rv-font-size-smd);
	padding: 6px 0;
	min-height: 20px;
}
.rv-feedback--error  { color: var(--rv-error); }
.rv-feedback--success { color: var(--rv-success); }

.rv-link { color: var(--rv-primary, #2563eb); text-decoration: underline; }
.rv-link:hover { color: var(--rv-primary-dark, #1d4ed8); }

.rv-spinner {
	display: inline-block;
	width: 16px;
	height: 16px;
	border: 2px solid var(--rv-gray-200);
	border-top-color: var(--rv-primary, #2563eb);
	border-radius: var(--rv-radius-circle);
	animation: rv-spin 0.7s linear infinite;
	vertical-align: middle;
	margin-right: 6px;
}

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

/* Toast notification */
.rv-toast {
	position: fixed;
	bottom: 24px;
	right: 24px;
	padding: 12px 20px;
	border-radius: var(--rv-radius-md);
	font-size: var(--rv-font-size-base);
	font-weight: var(--rv-weight-semibold);
	box-shadow: 0 4px 20px rgba(0,0,0,0.15);
	z-index: 9999;
	opacity: 0;
	transform: translateY(8px);
	transition: all 0.25s ease;
	max-width: 320px;
}

.rv-toast--visible { opacity: 1; transform: translateY(0); }
.rv-toast--success { background: #16a34a; color: var(--rv-white); }
.rv-toast--error   { background: #dc2626; color: var(--rv-white); }
.rv-toast--info    { background: #2563eb; color: var(--rv-white); }

/* Availability grid */
.rv-availability-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: var(--rv-space-3);
}

.rv-availability-day { padding: 10px; border: 1px solid var(--rv-gray-200); border-radius: var(--rv-radius-sm); }
.rv-availability-day__toggle { display: flex; align-items: center; gap: var(--rv-space-2); margin-bottom: var(--rv-space-2); }
.rv-availability-day__hours { }
.rv-availability-time-row { display: flex; align-items: center; gap: 6px; font-size: var(--rv-font-size-smd); }

/* Language selector RTL */
[dir="rtl"] .rv-form-input,
[dir="rtl"] .rv-form-textarea,
[dir="rtl"] .rv-notice__action { text-align: right; }

[dir="rtl"] .rv-table__th,
[dir="rtl"] .rv-table__td { text-align: right; }

/* ============================================================================
   19a. WHAT TO DO NEXT WIDGET (Dashboard, F30 / Schedule Assist integration)
   DRIFT-447: GAP W9.1 fix — Journey NEW-9 / JOURNEY-22 — June 2026.
   Selectors rv-wtdn-* and rv-what-to-do-next were absent from all CSS files.
   Widget rendered via buyer-views-dashboard-php.md (lines 269–424).
   Container: .rv-card.rv-dashboard-widget.rv-what-to-do-next#rv-wtdn-widget.
   Uses rv-card base box; internal structure needs dedicated rules.
   ============================================================================ */

/* Widget wrapper — uses rv-card base, no extra styles needed on container */
.rv-what-to-do-next {
	/* Container inherits from .rv-card — border, radius, shadow */
}

/* Section groupings (overdue / today / upcoming) */
.rv-wtdn-section {
	margin-bottom: var(--rv-space-3);
	padding-bottom: var(--rv-space-3);
	border-bottom: 1px solid var(--rv-gray-100);
}

.rv-wtdn-section:last-child {
	margin-bottom: 0;
	padding-bottom: 0;
	border-bottom: none;
}

/* Section heading with count badge */
.rv-wtdn-section__label {
	font-size: var(--rv-font-size-sm);
	font-weight: var(--rv-weight-bold);
	text-transform: uppercase;
	letter-spacing: 0.5px;
	margin: 0 0 var(--rv-space-2);
	display: flex;
	align-items: center;
	gap: 6px;
}

/* Color variants for priority levels */
.rv-wtdn-label--red    { color: var(--rv-error); }
.rv-wtdn-label--amber  { color: var(--rv-warning); }
.rv-wtdn-label--neutral { color: var(--rv-gray-500); }

/* Count badge next to section label */
.rv-wtdn-count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 20px;
	padding: 0 5px;
	border-radius: var(--rv-radius-mlg);
	font-size: var(--rv-font-size-xs);
	font-weight: var(--rv-weight-bold);
	background: var(--rv-gray-100);
	color: var(--rv-gray-700);
}

.rv-wtdn-label--red   .rv-wtdn-count  { background: var(--rv-error-bg); color: var(--rv-error-text); }
.rv-wtdn-label--amber .rv-wtdn-count  { background: var(--rv-warning-bg); color: var(--rv-warning-text); }

/* Item list */
.rv-wtdn-list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: var(--rv-space-2);
}

/* Single item row */
.rv-wtdn-item {
	display: flex;
	align-items: center;
	gap: var(--rv-space-2);
	flex-wrap: wrap;
	font-size: var(--rv-font-size-smd);
	padding: 6px 0;
	border-bottom: 1px solid var(--rv-gray-50);
}

.rv-wtdn-item:last-child { border-bottom: none; }

/* Caller name */
.rv-wtdn-item__name {
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-900);
	flex: 1 1 120px;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* Reminder type + time metadata */
.rv-wtdn-item__meta {
	font-size: var(--rv-font-size-sm);
	color: var(--rv-gray-500);
	flex: 2 1 160px;
}

/* Action link button */
.rv-wtdn-item__action {
	flex-shrink: 0;
	font-size: var(--rv-font-size-xs);
}

/* All-clear state */
.rv-wtdn-all-clear {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: var(--rv-space-4) var(--rv-space-2);
	gap: 6px;
	color: var(--rv-gray-700);
}

.rv-wtdn-all-clear__icon {
	font-size: var(--rv-font-size-3xl);
	line-height: 1;
}

.rv-wtdn-all-clear__sub {
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-500);
	margin: 0;
}

/* ============================================================================
   20. PRICING MODAL (Buyer Rate Card)
   ============================================================================ */

/* ── Overlay ──────────────────────────────────────────────────────────────── */

.rv-pricing-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.55);
	z-index: 9100;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--rv-space-4);
	/* JS sets display:none initially; overlay shown by toggling display:flex */
}

/* ── Modal Card ───────────────────────────────────────────────────────────── */

.rv-pricing-modal {
	background: var(--rv-white);
	border-radius: var(--rv-radius-lg);
	width: 100%;
	max-width: 600px;
	max-height: 90vh;
	display: flex;
	flex-direction: column;
	box-shadow: 0 24px 80px rgba(0, 0, 0, 0.18);
	position: relative;
	outline: none; /* focus managed programmatically */
}

/* ── Modal Header ─────────────────────────────────────────────────────────── */

.rv-pricing-modal__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 20px 24px 0;
	flex-shrink: 0;
}

.rv-pricing-modal__title {
	font-size: var(--rv-font-size-lg);
	font-weight: var(--rv-weight-bold);
	color: var(--rv-gray-900);
	margin: 0;
	line-height: 1.3;
}

.rv-pricing-modal__close {
	background: none;
	border: none;
	cursor: pointer;
	font-size: var(--rv-font-size-3xl);
	line-height: 1;
	color: var(--rv-gray-400);
	padding: var(--rv-space-1);
	border-radius: var(--rv-radius-xs);
	transition: color 0.15s, background 0.15s;
	flex-shrink: 0;
	margin-left: var(--rv-space-3);
}

.rv-pricing-modal__close:hover,
.rv-pricing-modal__close:focus-visible {
	color: var(--rv-gray-700);
	background: var(--rv-gray-100);
	outline: 2px solid var(--rv-primary, #2563eb);
	outline-offset: 2px;
}

/* ── Modal Body (scrollable) ──────────────────────────────────────────────── */

.rv-pricing-modal__body {
	overflow-y: auto;
	padding: 20px 24px;
	flex: 1;
	min-height: 0;
}

/* ── Modal Footer ─────────────────────────────────────────────────────────── */

.rv-pricing-modal__footer {
	padding: 12px 24px 20px;
	display: flex;
	justify-content: flex-end;
	flex-shrink: 0;
	border-top: 1px solid var(--rv-gray-100);
}

/* ── Section headings ─────────────────────────────────────────────────────── */

.rv-pricing-modal__section {
	margin-bottom: 28px;
}

.rv-pricing-modal__section:last-of-type {
	margin-bottom: 0;
}

.rv-pricing-modal__section-title {
	font-size: 15px;
	font-weight: var(--rv-weight-bold);
	color: var(--rv-gray-900);
	margin: 0 0 6px;
}

.rv-pricing-modal__section-desc {
	font-size: var(--rv-font-size-smd);
	color: var(--rv-gray-500);
	margin: 0 0 14px;
	line-height: 1.5;
}

.rv-pricing-modal__freshness-explainer {
	background: var(--rv-success-bg);
	border-left: 3px solid var(--rv-success);
	padding: var(--rv-space-2) var(--rv-space-3);
	border-radius: 0 4px 4px 0;
	color: var(--rv-success-text);
}

.rv-pricing-modal__subsection-title {
	font-size: var(--rv-font-size-smd);
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-700);
	margin: 18px 0 8px;
	text-transform: uppercase;
	letter-spacing: 0.5px;
}

/* ── Pricing Table ────────────────────────────────────────────────────────── */

.rv-pricing-table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--rv-font-size-base);
}

.rv-pricing-table__th {
	padding: var(--rv-space-2) var(--rv-space-3);
	text-align: left;
	font-size: var(--rv-font-size-xs);
	font-weight: var(--rv-weight-bold);
	text-transform: uppercase;
	letter-spacing: 0.5px;
	color: var(--rv-gray-500);
	background: var(--rv-gray-50);
	border-bottom: 2px solid var(--rv-gray-200);
}

.rv-pricing-table__td {
	padding: 10px 12px;
	border-bottom: 1px solid var(--rv-gray-100);
	color: var(--rv-gray-700);
	vertical-align: middle;
}

.rv-pricing-table__row:last-child .rv-pricing-table__td {
	border-bottom: none;
}

/* Alternating rows */
.rv-pricing-table__row:nth-child(even) .rv-pricing-table__td {
	background: #fafafa;
}

.rv-pricing-table__row:hover .rv-pricing-table__td {
	background: #f0f9ff;
}

/* Rate column — right-aligned, monospace */
.rv-pricing-table__th--rate,
.rv-pricing-table__td--rate {
	text-align: right;
	font-variant-numeric: tabular-nums;
	font-weight: var(--rv-weight-semibold);
	color: var(--rv-gray-900);
	white-space: nowrap;
}

/* Time window column */
.rv-pricing-table__th--window,
.rv-pricing-table__td--window {
	color: var(--rv-gray-500);
	font-size: var(--rv-font-size-sm);
}

/* Freshness badge in callback table */
.rv-freshness-badge {
	display: inline-block;
	padding: 2px 8px;
	border-radius: var(--rv-radius-mlg);
	font-size: var(--rv-font-size-sm);
	font-weight: var(--rv-weight-semibold);
}

.rv-freshness-badge--premium_plus      { background: #dbeafe; color: #1e40af; }
.rv-freshness-badge--premium           { background: #e0e7ff; color: #3730a3; }
.rv-freshness-badge--standard          { background: var(--rv-success-bg); color: var(--rv-success-text); }
.rv-freshness-badge--discounted        { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
.rv-freshness-badge--really_discounted { background: #fed7aa; color: #7c2d12; }
.rv-freshness-badge--aged              { background: #fce7f3; color: #9d174d; }
.rv-freshness-badge--clearance         { background: var(--rv-gray-100); color: var(--rv-gray-500); }

/* ── Notes Section ────────────────────────────────────────────────────────── */

.rv-pricing-notes {
	background: var(--rv-gray-50);
	border: 1px solid var(--rv-gray-200);
	border-radius: var(--rv-radius-sm);
	padding: 14px 16px;
	margin-top: var(--rv-space-5);
}

.rv-pricing-notes__list {
	margin: 0;
	padding: 0 0 0 18px;
}

.rv-pricing-notes__item {
	font-size: var(--rv-font-size-sm);
	color: var(--rv-gray-500);
	line-height: 1.6;
	margin-bottom: var(--rv-space-1);
}

.rv-pricing-notes__item:last-child {
	margin-bottom: 0;
}

/* ── "View current rates" subtle link trigger ─────────────────────────────── */

.rv-pricing-rate-link {
	font-size: var(--rv-font-size-sm);
	color: var(--rv-gray-500);
	text-decoration: underline;
	cursor: pointer;
	background: none;
	border: none;
	padding: 0;
}

.rv-pricing-rate-link:hover {
	color: var(--rv-primary, #2563eb);
}

/* ── Header row wrappers (billing + settings trigger placement) ───────────── */

.rv-billing__header-row,
.rv-settings__header-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--rv-space-3);
	margin-bottom: 20px;
	flex-wrap: wrap;
}

/* ── Single-element trigger wrappers (marketplace + dashboard) ───────────── */

.rv-marketplace__pricing-ref {
	text-align: right;
	margin-bottom: var(--rv-space-2);
}

.rv-dashboard-pricing-ref {
	margin-bottom: var(--rv-space-3);
}

/* ── Mobile ───────────────────────────────────────────────────────────────── */

@media (max-width: 600px) {
	.rv-pricing-modal {
		max-width: 100%;
		max-height: 95vh;
		border-radius: var(--rv-radius-lg) var(--rv-radius-lg) 0 0;
		align-self: flex-end;
	}

	.rv-pricing-modal-overlay {
		align-items: flex-end;
		padding: 0;
	}

	.rv-pricing-modal__header { padding: var(--rv-space-4) var(--rv-space-4) 0; }
	.rv-pricing-modal__body   { padding: var(--rv-space-4); }
	.rv-pricing-modal__footer { padding: var(--rv-space-3) var(--rv-space-4) var(--rv-space-4); }

	.rv-pricing-table__th--window,
	.rv-pricing-table__td--window { display: none; }
}

/* ── Dark mode ────────────────────────────────────────────────────────────── */

@media (prefers-color-scheme: dark) {
	.rv-pricing-modal {
		background: var(--rv-gray-800);
		color: var(--rv-gray-50);
		box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6);
	}

	.rv-pricing-modal__title { color: var(--rv-gray-50); }
	.rv-pricing-modal__footer { border-top-color: var(--rv-gray-700); }
	.rv-pricing-modal__close { color: var(--rv-gray-400); }
	.rv-pricing-modal__close:hover { color: var(--rv-gray-50); background: var(--rv-gray-700); }

	.rv-pricing-modal__section-title { color: var(--rv-gray-50); }
	.rv-pricing-modal__section-desc  { color: var(--rv-gray-400); }
	.rv-pricing-modal__freshness-explainer { background: #14532d; border-left-color: var(--rv-success); color: var(--rv-success-text); }
	.rv-pricing-modal__subsection-title { color: var(--rv-gray-300); }

	.rv-pricing-table__th { background: var(--rv-gray-900); color: var(--rv-gray-400); border-bottom-color: var(--rv-gray-700); }
	.rv-pricing-table__td { color: var(--rv-gray-300); border-bottom-color: var(--rv-gray-700); }
	.rv-pricing-table__row:nth-child(even) .rv-pricing-table__td { background: var(--rv-gray-900); }
	.rv-pricing-table__row:hover .rv-pricing-table__td { background: #1e3a5f; }
	.rv-pricing-table__th--rate,
	.rv-pricing-table__td--rate { color: var(--rv-gray-50); }
	.rv-pricing-table__td--window { color: var(--rv-gray-400); }

	.rv-pricing-notes { background: var(--rv-gray-900); border-color: var(--rv-gray-700); }
	.rv-pricing-notes__item { color: var(--rv-gray-400); }

	.rv-pricing-rate-link { color: var(--rv-gray-400); }
	.rv-pricing-rate-link:hover { color: #93c5fd; }
}
/* =============================================================================
   BUYER TOOLTIP ICON
   CSS-only contextual hint badges for buyer-facing UI.
   Rendered by rv_buyer_tooltip() in functions.php.
   Pattern adapted from .rv-tooltip-icon in analytics-css.md.
   Native browser title tooltip on hover; CSS :focus reveal for keyboard/mobile.
   aria-hidden="true" on the badge — hint text is in the parent element's context.
   ============================================================================= */

.rv-buyer-tooltip-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 15px;
    height: 15px;
    margin-left: var(--rv-space-1);
    background: var(--rv-gray-200);
    color: var(--rv-gray-500);
    border-radius: var(--rv-radius-circle);
    font-size: 10px;
    font-weight: var(--rv-weight-bold);
    cursor: default;
    vertical-align: middle;
    flex-shrink: 0;
    transition: background 0.15s, color 0.15s;
    position: relative;
}

.rv-buyer-tooltip-icon:hover,
.rv-buyer-tooltip-icon:focus {
    background: var(--rv-color-primary, #4f8ef7);
    color: var(--rv-white);
    outline: 2px solid var(--rv-color-primary, #4f8ef7);
    outline-offset: 2px;
}

.rv-buyer-tooltip-icon--warning {
    background: var(--rv-warning-bg);
    color: var(--rv-warning-text);
}

.rv-buyer-tooltip-icon--warning:hover,
.rv-buyer-tooltip-icon--warning:focus {
    background: #f59e0b;
    color: var(--rv-white);
    outline-color: #f59e0b;
}


/* ============================================================================
   DRIFT-717 — SHARED BUYER PRIMITIVES
   New, token-correct primitives reused across P0 buyer surfaces (calendar,
   pending-quotes, schedule-assist, …). End-state conventions: --rv-accent only
   (never --rv-primary), tokenized spacing/radius, neutral props via
   var(--token, light-hex) so all four light/dark states resolve from one rule.
   ============================================================================ */

/* ── Page header (rv-page-header) ──────────────────────────────────────────
   Title block + right-aligned actions. Used by calendar, pending-quotes,
   schedule-assist (rv-page-header / __title / __subtitle / __actions). */
.rv-page-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--rv-space-4);
    flex-wrap: wrap;
    margin-bottom: var(--rv-space-5);
}

.rv-page-header__title {
    min-width: 0;
}

.rv-page-header__title h1 {
    font-size: var(--rv-font-size-3xl);
    font-weight: var(--rv-weight-bold);
    color: var(--rv-text-primary, #111827);
    margin: 0;
    line-height: 1.25;
}

.rv-page-header__subtitle {
    font-size: var(--rv-font-size-base);
    color: var(--rv-text-secondary, #6b7280);
    margin: var(--rv-space-1) 0 0;
    line-height: 1.5;
}

.rv-page-header__actions {
    display: flex;
    align-items: center;
    gap: var(--rv-space-2);
    flex-shrink: 0;
    margin-inline-start: auto;
}

/* ── Button width variant (rv-btn--block) — full-width CTA ─────────────────
   (Distinct from the legacy .rv-btn--full; both mean 100% width. Collapse in
   the streamline — see CSS_STREAMLINE_BACKLOG.md item S2.) */
.rv-btn--block {
    width: 100%;
    justify-content: center;
}

@media (max-width: 768px) {
    .rv-page-header__actions {
        width: 100%;
        margin-inline-start: 0;
    }

    .rv-page-header__actions .rv-btn {
        flex: 1;
        justify-content: center;
    }
}

/* ============================================================================
   DRIFT-717 — BATCH 1: shared primitives + cross-niche-referrals + schedule-assist
   End-state conventions: --rv-accent only (never --rv-primary); tokenized
   spacing/radius/transition; neutral props via var(--token, light-hex) so all
   light/dark/forced states resolve from one rule; semantic status colors
   (success/danger/warning) are intentionally NOT niche-accent — documented and
   dark-mirrored (streamline backlog S9 covers optional --rv-danger/-success
   tokenization). Motion only for functional feedback.
   ============================================================================ */

/* ── FORM PRIMITIVES (rv-input / rv-select / rv-textarea) ─────────────────────
   Buyer-context twins of the admin-only rv-input/rv-select/rv-textarea (admin.css
   is not loaded on buyer pages). Mirror the existing .rv-form-* fields. */
.rv-input,
.rv-select,
.rv-textarea {
    width: 100%;
    padding: var(--rv-space-2) var(--rv-space-3);
    border: 1px solid var(--rv-border-color, #d1d5db);
    border-radius: var(--rv-radius-sm);
    font-size: var(--rv-font-size-base);
    color: var(--rv-text-primary, #111827);
    background: var(--rv-bg-surface, #ffffff);
    box-sizing: border-box;
    transition: border-color var(--rv-transition), box-shadow var(--rv-transition);
}

.rv-select { cursor: pointer; }
.rv-textarea { resize: vertical; min-height: 80px; }

.rv-input:focus,
.rv-select:focus,
.rv-textarea:focus {
    outline: none;
    border-color: var(--rv-accent);
    box-shadow: 0 0 0 3px var(--rv-accent-light, rgba(37, 99, 235, 0.1));
}

/* Field label / hint (rv-field-*) */
.rv-field-label {
    display: block;
    font-size: var(--rv-font-size-smd);
    font-weight: var(--rv-weight-semibold);
    color: var(--rv-text-primary, #374151);
    margin-bottom: var(--rv-space-2);
}

.rv-field-label--required::after {
    content: " *";
    color: var(--rv-error); /* semantic required marker — see backlog S9 */
}

.rv-field-hint {
    font-size: var(--rv-font-size-sm);
    color: var(--rv-text-secondary, #9ca3af);
    margin: var(--rv-space-1) 0 0;
    line-height: 1.5;
}

.rv-field-hint--required { color: var(--rv-error); }

/* Checkbox (rv-checkbox / rv-checkbox-text) — .rv-checkbox-label already exists */
.rv-checkbox {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    accent-color: var(--rv-accent);
    cursor: pointer;
}

.rv-checkbox-text {
    font-size: var(--rv-font-size-base);
    color: var(--rv-text-primary, #374151);
    line-height: 1.5;
}

/* ── BUTTON VARIANTS (--success / --danger / --link) ─────────────────────────
   Semantic, not niche-accent. Dark variants mirrored at the foot of this block. */
.rv-btn--success {
    background: #16a34a;
    color: var(--rv-white);
    border-color: #16a34a;
}
.rv-btn--success:hover { background: #15803d; border-color: #15803d; color: var(--rv-white); }

.rv-btn--danger {
    background: #dc2626;
    color: var(--rv-white);
    border-color: #dc2626;
}
.rv-btn--danger:hover { background: #b91c1c; border-color: #b91c1c; color: var(--rv-white); }

/* Ghost-danger (e.g. cancel reminder): danger text on transparent until hover */
.rv-btn--danger.rv-btn--ghost {
    background: transparent;
    color: var(--rv-error);
    border-color: transparent;
}
.rv-btn--danger.rv-btn--ghost:hover { background: var(--rv-error-bg); color: #b91c1c; }

.rv-btn--link {
    background: none;
    border: none;
    color: var(--rv-accent);
    padding: var(--rv-space-1) var(--rv-space-2);
    min-height: auto;
    text-decoration: underline;
}
.rv-btn--link:hover { color: var(--rv-accent-dark); background: none; }

/* ── BADGE VARIANTS (base .rv-badge already exists) ──────────────────────────── */
.rv-badge--niche {
    background: var(--rv-badge-bg, #dbeafe);
    color: var(--rv-accent);
}
.rv-badge--neutral {
    background: var(--rv-bg-elevated, #f3f4f6);
    color: var(--rv-text-secondary, #6b7280);
}
.rv-badge--tier {
    background: var(--rv-bg-elevated, #f3f4f6);
    color: var(--rv-text-primary, #374151);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.rv-badge--success { background: var(--rv-success-bg); color: var(--rv-success-text); }
.rv-badge--sm { padding: 1px var(--rv-space-1); font-size: 10px; }

/* ── CARD DESCRIPTION (rv-card__description) ─────────────────────────────────── */
.rv-card__description {
    font-size: var(--rv-font-size-base);
    color: var(--rv-text-secondary, #6b7280);
    line-height: 1.6;
    margin: 0 0 var(--rv-space-4);
}

/* ── EMPTY-STATE BODY-TEXT ALIAS (rv-empty-state__msg → __text) ───────────────
   Third name for the empty-state body (see backlog S4). Aliased here. */
.rv-empty-state__msg {
    font-size: var(--rv-font-size-base);
    color: var(--rv-text-secondary, #6b7280);
    line-height: 1.6;
    margin: 0 0 var(--rv-space-3);
}

/* ── STAT CARD: semantic variants + __num element ────────────────────────────
   .rv-stat-card base exists (centered card). __num is the big number (alias of
   __value); variants tint the number + a top accent rule. */
.rv-stat-card__num {
    font-size: 28px;
    font-weight: var(--rv-weight-extrabold);
    line-height: 1.2;
    color: var(--rv-text-primary, #111827);
    font-variant-numeric: tabular-nums;
    display: block;
}

.rv-stat-card--danger  { border-top: 3px solid var(--rv-error); }
.rv-stat-card--warning { border-top: 3px solid var(--rv-warning); }
.rv-stat-card--success { border-top: 3px solid var(--rv-success); }
.rv-stat-card--info    { border-top: 3px solid var(--rv-accent); }
.rv-stat-card--muted,
.rv-stat-card--neutral { border-top: 3px solid var(--rv-border-color, #e5e7eb); }

.rv-stat-card--danger  .rv-stat-card__num { color: var(--rv-error); }
.rv-stat-card--warning .rv-stat-card__num { color: var(--rv-warning-text); }
.rv-stat-card--success .rv-stat-card__num { color: var(--rv-success); }
.rv-stat-card--info    .rv-stat-card__num { color: var(--rv-accent); }

/* ── TAB BAR (rv-tab-bar/rv-tab + rv-status-tabs/rv-status-tab) ───────────────
   Signature touch: accent underline on the active tab. One visual, applied to
   both class families the views use. Distinct from the legacy segmented
   .rv-tab-nav (left untouched). */
.rv-tab-bar,
.rv-status-tabs,
.rv-cnr-history-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--rv-space-1);
    border-bottom: 1px solid var(--rv-border-color, #e5e7eb);
    margin-bottom: var(--rv-space-4);
}

.rv-tab,
.rv-status-tab {
    appearance: none;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    padding: var(--rv-space-3) var(--rv-space-4);
    min-height: 44px;
    font-size: var(--rv-font-size-base);
    font-weight: var(--rv-weight-semibold);
    color: var(--rv-text-secondary, #6b7280);
    text-decoration: none;
    cursor: pointer;
    transition: color var(--rv-transition), border-color var(--rv-transition), background-color var(--rv-transition);
}

.rv-tab:hover,
.rv-status-tab:hover {
    color: var(--rv-text-primary, #111827);
    background: var(--rv-bg-elevated, #f3f4f6);
}

.rv-tab--active,
.rv-status-tab--active,
.rv-tab[aria-selected="true"],
.rv-status-tab[aria-selected="true"] {
    color: var(--rv-accent);
    border-bottom-color: var(--rv-accent);
}

.rv-tab:focus-visible,
.rv-status-tab:focus-visible {
    outline: 2px solid var(--rv-accent);
    outline-offset: -2px;
}

.rv-tab__count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-inline-start: var(--rv-space-1);
    padding: 0 var(--rv-space-2);
    min-width: 18px;
    border-radius: var(--rv-radius-pill);
    background: var(--rv-badge-bg, #dbeafe);
    color: var(--rv-accent);
    font-size: var(--rv-font-size-xs);
    font-weight: var(--rv-weight-bold);
}

/* ── STATUS MESSAGE (rv-status-msg) ──────────────────────────────────────────── */
.rv-status-msg {
    font-size: var(--rv-font-size-smd);
    padding: var(--rv-space-2) 0;
    min-height: 20px;
    line-height: 1.5;
}
.rv-status-msg--hidden { display: none; }
.rv-status-msg--success { color: var(--rv-success); }
.rv-status-msg--danger  { color: var(--rv-error); }
.rv-status-msg--warning { color: var(--rv-warning-text); }

/* ── DROPDOWN (rv-dropdown) — small popover menu ─────────────────────────────── */
.rv-dropdown {
    background: var(--rv-bg-surface, #ffffff);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
    box-shadow: var(--rv-shadow-lg, 0 20px 60px rgba(0, 0, 0, 0.18));
    padding: var(--rv-space-1) 0;
    z-index: 1050;
    min-width: 160px;
}
.rv-dropdown--hidden { display: none; }

.rv-dropdown__item {
    display: block;
    width: 100%;
    text-align: start;
    background: none;
    border: none;
    padding: var(--rv-space-2) var(--rv-space-4);
    font-size: var(--rv-font-size-smd);
    color: var(--rv-text-primary, #374151);
    cursor: pointer;
    transition: background-color var(--rv-transition);
}
.rv-dropdown__item:hover { background: var(--rv-bg-elevated, #f3f4f6); }

/* ── CANONICAL MODAL (overlay + dialog, consumes surface tokens) ──────────────
   Scoped with :has(.rv-modal__inner) so it ONLY applies to the new __inner-based
   modals (schedule-assist) and does NOT disturb the legacy .rv-modal-as-dialog
   used by billing/marketplace/staff/suspended (those contain .rv-modal__title,
   not __inner). Full modal-convention unification is streamline backlog S3.
   Fixes the white-on-dark legacy modals by using --rv-bg-surface. */
.rv-modal--hidden { display: none !important; }

.rv-modal-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 1049;
}

.rv-modal:has(.rv-modal__inner) {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--rv-space-4);
}

.rv-modal__inner {
    width: 100%;
    max-width: 480px;
    max-height: calc(100vh - var(--rv-space-6));
    overflow-y: auto;
    background: var(--rv-bg-surface, #ffffff);
    border-radius: var(--rv-radius-lg);
    box-shadow: var(--rv-shadow-lg, 0 20px 60px rgba(0, 0, 0, 0.18));
}

.rv-modal__inner--large,
.rv-modal-inner--large { max-width: 720px; }

.rv-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--rv-space-2);
    padding: var(--rv-space-4) var(--rv-space-5);
    border-bottom: 1px solid var(--rv-border-color, #e5e7eb);
}

.rv-modal__body {
    padding: var(--rv-space-5);
    color: var(--rv-text-primary, #374151);
}

.rv-modal__footer {
    display: flex;
    gap: var(--rv-space-2);
    justify-content: flex-end;
    padding: var(--rv-space-4) var(--rv-space-5);
    border-top: 1px solid var(--rv-border-color, #e5e7eb);
}

/* ── FORM DISPLAY / HINT (schedule-assist read-only field + inline hint) ─────── */
.rv-form-display {
    padding: var(--rv-space-2) var(--rv-space-3);
    background: var(--rv-bg-elevated, #f3f4f6);
    border-radius: var(--rv-radius-sm);
    font-size: var(--rv-font-size-base);
    color: var(--rv-text-primary, #111827);
}

.rv-form-hint {
    font-size: var(--rv-font-size-sm);
    color: var(--rv-text-secondary, #9ca3af);
    margin: var(--rv-space-1) 0 0;
    line-height: 1.5;
}
.rv-form-hint--warning { color: var(--rv-warning-text); }

/* ============================================================================
   SURFACE: cross-niche-referrals (buyer-views-cross-niche-referrals.php)
   ============================================================================ */

.rv-cross-niche-wrap { margin-bottom: var(--rv-space-5); }

.rv-cnr-form-wrap { display: flex; flex-direction: column; gap: var(--rv-space-4); }

.rv-cnr-form-notice {
    padding: var(--rv-space-3) var(--rv-space-4);
    border-radius: var(--rv-radius-sm);
    border-inline-start: 4px solid var(--rv-accent);
    background: var(--rv-accent-light, #eff6ff);
    color: var(--rv-text-primary, #1e40af);
    font-size: var(--rv-font-size-base);
}

.rv-cnr-field { display: flex; flex-direction: column; }
.rv-cnr-field--consent { margin-top: var(--rv-space-1); }

.rv-cnr-consent-label {
    display: flex;
    align-items: flex-start;
    gap: var(--rv-space-2);
    cursor: pointer;
}

.rv-cnr-form-actions {
    display: flex;
    gap: var(--rv-space-2);
    margin-top: var(--rv-space-2);
}

.rv-cnr-history-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--rv-space-3);
    flex-wrap: wrap;
}

.rv-cnr-history-count {
    font-size: var(--rv-font-size-sm);
    font-weight: var(--rv-weight-semibold);
    color: var(--rv-text-secondary, #6b7280);
}

/* History table (uses the canonical .rv-table th/td element pattern) */
.rv-cnr-history-table { width: 100%; }

.rv-cnr-cell { vertical-align: top; }

.rv-cnr-public-id {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: var(--rv-font-size-sm);
    color: var(--rv-text-secondary, #6b7280);
}

.rv-cnr-caller-name { display: block; font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #111827); }
.rv-cnr-caller-city { display: block; font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); }

.rv-cnr-route { display: inline-flex; align-items: center; gap: var(--rv-space-2); flex-wrap: wrap; }
.rv-cnr-niche { font-weight: var(--rv-weight-semibold); }
.rv-cnr-niche--source { color: var(--rv-text-secondary, #6b7280); }
.rv-cnr-niche--target { color: var(--rv-accent); }
.rv-cnr-arrow { color: var(--rv-text-secondary, #9ca3af); }

.rv-cnr-hop { margin-inline-start: var(--rv-space-2); }

.rv-cnr-rejection-reason {
    margin: var(--rv-space-1) 0 0;
    font-size: var(--rv-font-size-sm);
    color: var(--rv-text-secondary, #6b7280);
    font-style: italic;
}

.rv-cnr-pending-dash { color: var(--rv-text-secondary, #9ca3af); }
.rv-cnr-approved-date { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); }

.rv-cnr-pagination { margin-top: var(--rv-space-4); }

/* ============================================================================
   SURFACE: schedule-assist (buyer-views-schedule-assist.php)
   ============================================================================ */

.rv-schedule-wrap {
    max-width: 1100px;
    margin: 0 auto;
    padding: var(--rv-space-5) var(--rv-space-4);
}

.rv-sa-summary { margin-bottom: var(--rv-space-5); }

/* Reminder groups */
.rv-sa-group { margin-bottom: var(--rv-space-5); }

.rv-sa-group__heading {
    display: flex;
    align-items: center;
    gap: var(--rv-space-2);
    font-size: 15px;
    font-weight: var(--rv-weight-bold);
    color: var(--rv-text-primary, #111827);
    margin: 0 0 var(--rv-space-3);
}
.rv-sa-group__heading--danger  { color: var(--rv-error); }
.rv-sa-group__heading--warning { color: var(--rv-warning-text); }
.rv-sa-group__heading--success { color: var(--rv-success); }

.rv-sa-group__count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    padding: 0 var(--rv-space-2);
    border-radius: var(--rv-radius-pill);
    background: var(--rv-bg-elevated, #f3f4f6);
    color: inherit;
    font-size: var(--rv-font-size-sm);
    font-weight: var(--rv-weight-bold);
}

.rv-sa-group__meta { font-size: var(--rv-font-size-sm); font-weight: var(--rv-weight-normal); color: var(--rv-text-secondary, #9ca3af); }

.rv-sa-group__list { display: flex; flex-direction: column; gap: var(--rv-space-2); }
.rv-sa-group__list--collapsed { display: none; }

/* Reminder row */
.rv-reminder-row {
    display: flex;
    align-items: flex-start;
    gap: var(--rv-space-3);
    padding: var(--rv-space-3) var(--rv-space-4);
    background: var(--rv-bg-surface, #ffffff);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
    box-shadow: var(--rv-shadow, 0 1px 4px rgba(0, 0, 0, 0.08));
}
.rv-reminder-row--overdue { border-inline-start: 3px solid var(--rv-error); }
.rv-reminder-row--snoozed { opacity: 0.7; }

/* Self-sufficient type badge (calendar.css is not loaded here) */
.rv-reminder-row__type-badge {
    flex-shrink: 0;
    padding: var(--rv-space-1) var(--rv-space-2);
    border-radius: var(--rv-radius-sm);
    background: var(--rv-badge-bg, #dbeafe);
    color: var(--rv-accent);
    font-size: var(--rv-font-size-xs);
    font-weight: var(--rv-weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    white-space: nowrap;
}

.rv-reminder-row__content { flex: 1; min-width: 0; }
.rv-reminder-row__lead { display: flex; align-items: center; gap: var(--rv-space-2); flex-wrap: wrap; }
.rv-reminder-row__city { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); }
.rv-reminder-row__time { font-size: var(--rv-font-size-smd); font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #111827); margin-top: var(--rv-space-1); font-variant-numeric: tabular-nums; }
.rv-reminder-row__notes { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); margin-top: var(--rv-space-1); line-height: 1.5; }
.rv-reminder-row__creator { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #9ca3af); margin-top: var(--rv-space-1); }
.rv-reminder-row__actions { display: flex; gap: var(--rv-space-1); flex-shrink: 0; flex-wrap: wrap; }

/* ── DARK-SPECIFIC OVERRIDES (semantic colors lightened on dark) ──────────────
   Everything else flips via the token system. Mirror for forced dark. */
@media (prefers-color-scheme: dark) {
    .rv-btn--success { background: #15803d; border-color: #15803d; }
    .rv-btn--success:hover { background: #166534; border-color: #166534; }
    .rv-btn--danger  { background: #b91c1c; border-color: #b91c1c; }
    .rv-btn--danger.rv-btn--ghost { background: transparent; color: var(--rv-error); }
    .rv-btn--danger.rv-btn--ghost:hover { background: rgba(248, 113, 113, 0.12); color: var(--rv-error-text); }
    .rv-badge--success { background: var(--rv-success-bg); color: var(--rv-success); }
    .rv-reminder-row--overdue,
    .rv-cal-event--overdue { border-inline-start-color: var(--rv-error); }
    .rv-stat-card--danger  { border-top-color: var(--rv-error); }
    .rv-stat-card--success { border-top-color: var(--rv-success); }
    .rv-stat-card--warning { border-top-color: var(--rv-warning); }
    .rv-stat-card--danger  .rv-stat-card__num { color: var(--rv-error); }
    .rv-stat-card--success .rv-stat-card__num { color: var(--rv-success); }
    .rv-stat-card--warning .rv-stat-card__num { color: var(--rv-warning); }
    .rv-sa-group__heading--danger  { color: var(--rv-error); }
    .rv-sa-group__heading--warning { color: var(--rv-warning); }
    .rv-sa-group__heading--success { color: var(--rv-success); }
    .rv-field-label--required::after,
    .rv-field-hint--required { color: var(--rv-error); }
}
html.rv-dark .rv-btn--success { background: #15803d; border-color: #15803d; }
html.rv-dark .rv-btn--danger { background: #b91c1c; border-color: #b91c1c; }
html.rv-dark .rv-btn--danger.rv-btn--ghost { background: transparent; color: var(--rv-error); }
html.rv-dark .rv-badge--success { background: var(--rv-success-bg); color: var(--rv-success); }
html.rv-dark .rv-reminder-row--overdue { border-inline-start-color: var(--rv-error); }
html.rv-dark .rv-stat-card--danger .rv-stat-card__num { color: var(--rv-error); }
html.rv-dark .rv-stat-card--success .rv-stat-card__num { color: var(--rv-success); }
html.rv-dark .rv-stat-card--warning .rv-stat-card__num { color: var(--rv-warning); }
html.rv-dark .rv-sa-group__heading--danger { color: var(--rv-error); }
html.rv-dark .rv-sa-group__heading--warning { color: var(--rv-warning); }
html.rv-dark .rv-sa-group__heading--success { color: var(--rv-success); }

/* ============================================================================
   DRIFT-717 — BATCH 2: training (rv-training-* chrome) + pending-quotes
   rv-sandbox-*/rv-team-* live in sandbox.css (loaded view-side on training).
   Same end-state conventions as Batch 1.
   ============================================================================ */

/* ── Badge color variants (training status badges: green/blue/grey) ──────────── */
.rv-badge--green { background: var(--rv-success-bg); color: var(--rv-success-text); }
.rv-badge--blue  { background: var(--rv-badge-bg, #dbeafe); color: var(--rv-accent); }
.rv-badge--grey  { background: var(--rv-bg-elevated, #f3f4f6); color: var(--rv-text-secondary, #6b7280); }

/* Badge semantic status variants (quote statuses, etc.) */
.rv-badge--info    { background: #dbeafe; color: #1e40af; }
.rv-badge--warning { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
.rv-badge--danger  { background: var(--rv-error-bg); color: var(--rv-error-text); }

/* ── Collapsible (rv-collapsible / -summary) — <details>/<summary> ──────────── */
.rv-collapsible {
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
    background: var(--rv-bg-surface, #ffffff);
}

.rv-collapsible-summary {
    list-style: none;
    cursor: pointer;
    padding: var(--rv-space-3) var(--rv-space-4);
    font-size: var(--rv-font-size-base);
    font-weight: var(--rv-weight-semibold);
    color: var(--rv-text-primary, #111827);
    transition: color var(--rv-transition);
}
.rv-collapsible-summary::-webkit-details-marker { display: none; }
.rv-collapsible-summary::before {
    content: "▸";
    display: inline-block;
    margin-inline-end: var(--rv-space-2);
    color: var(--rv-text-secondary, #6b7280);
    transition: transform var(--rv-transition);
}
.rv-collapsible[open] > .rv-collapsible-summary::before { transform: rotate(90deg); }
.rv-collapsible-summary:hover { color: var(--rv-accent); }

/* ── Convention #3 modal (training): .rv-modal-inner / -close / -overlay ──────
   The .rv-modal-overlay child is display:none (legacy rule), so dim the
   container itself. Scoped via :has(.rv-modal-inner) so legacy .rv-modal-as-
   dialog (billing/marketplace/staff/suspended) is untouched. See backlog S3. */
.rv-modal:has(.rv-modal-inner) {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--rv-space-4);
    background: rgba(0, 0, 0, 0.5);
}

.rv-modal-inner {
    width: 100%;
    max-width: 480px;
    max-height: calc(100vh - var(--rv-space-6));
    margin: auto;
    overflow-y: auto;
    background: var(--rv-bg-surface, #ffffff);
    border-radius: var(--rv-radius-lg);
    box-shadow: var(--rv-shadow-lg, 0 20px 60px rgba(0, 0, 0, 0.18));
    padding: var(--rv-space-5);
    position: relative;
}

.rv-modal-close {
    position: absolute;
    top: var(--rv-space-3);
    right: var(--rv-space-3);
    width: 32px;
    height: 32px;
    border: none;
    background: none;
    font-size: var(--rv-font-size-2xl);
    line-height: 1;
    color: var(--rv-text-secondary, #6b7280);
    cursor: pointer;
    border-radius: var(--rv-radius-sm);
    transition: background-color var(--rv-transition), color var(--rv-transition);
}
.rv-modal-close:hover { background: var(--rv-bg-elevated, #f3f4f6); color: var(--rv-text-primary, #111827); }

/* ============================================================================
   SURFACE: training (buyer-views-training.php) — rv-training-* chrome
   ============================================================================ */

.rv-training-wrap { max-width: 900px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }

.rv-training-header { margin-bottom: var(--rv-space-5); }
.rv-training-subtitle { font-size: var(--rv-font-size-base); color: var(--rv-text-secondary, #6b7280); margin: var(--rv-space-1) 0 0; }

/* Overall progress */
.rv-training-progress-overall {
    display: flex;
    align-items: center;
    gap: var(--rv-space-3);
    margin-top: var(--rv-space-4);
}
.rv-training-progress-bar-wrap {
    flex: 1;
    height: 8px;
    background: var(--rv-bg-elevated, #e5e7eb);
    border-radius: var(--rv-radius-pill);
    overflow: hidden;
}
.rv-training-progress-bar {
    height: 100%;
    background: var(--rv-accent);
    border-radius: var(--rv-radius-pill);
    transition: width 0.4s ease;
}
.rv-training-progress-label { font-size: var(--rv-font-size-smd); font-weight: var(--rv-weight-semibold); color: var(--rv-text-secondary, #6b7280); font-variant-numeric: tabular-nums; }

/* Sections + module list */
.rv-training-section { margin-bottom: var(--rv-space-6); }
.rv-training-module-list { display: flex; flex-direction: column; gap: var(--rv-space-2); }

.rv-training-module {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--rv-space-3);
    padding: var(--rv-space-4);
    background: var(--rv-bg-surface, #ffffff);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
}
.rv-training-module-info { min-width: 0; }
.rv-training-module-title { font-size: 15px; font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #111827); margin: 0; display: flex; align-items: center; gap: var(--rv-space-2); }
.rv-training-module-desc { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); margin: var(--rv-space-1) 0 0; line-height: 1.5; }
.rv-training-module-desc--locked { font-style: italic; }
.rv-training-module-duration { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #9ca3af); }
.rv-training-module-status { display: flex; flex-direction: column; align-items: flex-end; gap: var(--rv-space-1); flex-shrink: 0; }
.rv-training-locked-msg { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #9ca3af); }
.rv-training-status-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px var(--rv-space-2);
    border-radius: var(--rv-radius-pill);
    font-size: var(--rv-font-size-xs);
    font-weight: var(--rv-weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.rv-training-quiz-score { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); font-variant-numeric: tabular-nums; }

/* Module mini progress bar */
.rv-training-mini-bar {
    width: 80px;
    height: 6px;
    background: var(--rv-bg-elevated, #e5e7eb);
    border-radius: var(--rv-radius-pill);
    overflow: hidden;
}
.rv-training-mini-fill { height: 100%; background: var(--rv-accent); border-radius: var(--rv-radius-pill); }

/* PP gate inside training */
.rv-training-pp-gate {
    text-align: center;
    padding: var(--rv-space-6) var(--rv-space-5);
    background: var(--rv-bg-elevated, #f9fafb);
    border: 1px dashed var(--rv-border-color, #d1d5db);
    border-radius: var(--rv-radius-lg);
}

.rv-pp-badge { display: inline-flex; align-items: center; }

/* Training quiz modal chrome */
.rv-training-modal-title { font-size: var(--rv-font-size-lg); font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); margin: 0 0 var(--rv-space-4); }
.rv-training-step-counter { font-size: var(--rv-font-size-sm); font-weight: var(--rv-weight-semibold); color: var(--rv-text-secondary, #6b7280); }
.rv-training-step-nav { display: flex; gap: var(--rv-space-2); justify-content: space-between; margin-top: var(--rv-space-4); }
.rv-training-start-btn { margin-top: var(--rv-space-3); }

/* ============================================================================
   SURFACE: pending-quotes (buyer-views-pending-quotes.php)
   Most chrome reuses Batch 1 primitives (page-header, stat-card variants,
   tab-bar, badge--niche, empty-state__msg). Surface-specific below.
   ============================================================================ */

.rv-quotes-wrap { max-width: 1000px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }

.rv-quotes-list { display: flex; flex-direction: column; gap: var(--rv-space-3); }

/* Premium gate (feature-specific, per Rule 136) */
.rv-premium-gate {
    text-align: center;
    padding: var(--rv-space-6) var(--rv-space-5);
    background: var(--rv-bg-elevated, #f9fafb);
    border: 1px dashed var(--rv-border-color, #d1d5db);
    border-radius: var(--rv-radius-lg);
}
.rv-premium-gate__icon { font-size: 36px; margin-bottom: var(--rv-space-3); }

/* Quote row */
.rv-quote-row {
    background: var(--rv-bg-surface, #ffffff);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
    box-shadow: var(--rv-shadow, 0 1px 4px rgba(0, 0, 0, 0.08));
    padding: var(--rv-space-4);
}
.rv-quote-row__header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--rv-space-3); flex-wrap: wrap; }
.rv-quote-row__lead { display: flex; align-items: center; gap: var(--rv-space-2); flex-wrap: wrap; min-width: 0; }
.rv-quote-row__label { font-size: var(--rv-font-size-sm); font-weight: var(--rv-weight-semibold); color: var(--rv-text-secondary, #6b7280); }
.rv-quote-row__city { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); }
.rv-quote-row__status { flex-shrink: 0; }
.rv-quote-row__body { display: flex; align-items: baseline; gap: var(--rv-space-4); flex-wrap: wrap; margin-top: var(--rv-space-3); }
.rv-quote-row__amount { display: flex; flex-direction: column; }
.rv-quote-row__amount-num { font-size: var(--rv-font-size-2xl); font-weight: var(--rv-weight-extrabold); color: var(--rv-text-primary, #111827); font-variant-numeric: tabular-nums; }
.rv-quote-row__description { flex: 1; min-width: 0; font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); line-height: 1.5; }
.rv-quote-row__meta { display: flex; gap: var(--rv-space-3); flex-wrap: wrap; font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #9ca3af); margin-top: var(--rv-space-2); }
.rv-quote-row__actions { display: flex; gap: var(--rv-space-2); flex-wrap: wrap; margin-top: var(--rv-space-3); }

/* ── Dark-specific (semantic badge colors lightened) ─────────────────────────── */
@media (prefers-color-scheme: dark) {
    .rv-badge--green { background: var(--rv-success-bg); color: var(--rv-success); }
    .rv-badge--info    { background: #0c2d3f; color: #7dd3fc; }
    .rv-badge--warning { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
    .rv-badge--danger  { background: #3b0a0a; color: var(--rv-error-text); }
}
html.rv-dark .rv-badge--green { background: var(--rv-success-bg); color: var(--rv-success); }
html.rv-dark .rv-badge--info    { background: #0c2d3f; color: #7dd3fc; }
html.rv-dark .rv-badge--warning { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
html.rv-dark .rv-badge--danger  { background: #3b0a0a; color: var(--rv-error-text); }

/* ============================================================================
   DRIFT-717 — BATCH 3a: contract-signing + support (authenticated buyer pages)
   Same end-state conventions. Both load buyer-dashboard.css already.
   ============================================================================ */

/* Shared form helpers (rv-form-actions/-row/-feedback already exist) */
.rv-form-wrap { display: flex; flex-direction: column; gap: var(--rv-space-4); }
.rv-form-help { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #9ca3af); margin: var(--rv-space-1) 0 0; line-height: 1.5; }

/* ============================================================================
   SURFACE: contract-signing (buyer-views-contract-signing.php)
   ============================================================================ */

.rv-contract-wrap { max-width: 800px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }

.rv-contract-header { margin-bottom: var(--rv-space-4); }
.rv-contract-subtitle { font-size: var(--rv-font-size-base); color: var(--rv-text-secondary, #6b7280); margin: var(--rv-space-1) 0 0; }

/* Notices (semantic) */
.rv-contract-notice {
    padding: var(--rv-space-3) var(--rv-space-4);
    border-radius: var(--rv-radius-sm);
    font-size: var(--rv-font-size-base);
    margin-bottom: var(--rv-space-4);
    border-inline-start: 4px solid var(--rv-accent);
    background: var(--rv-accent-light, #eff6ff);
    color: var(--rv-text-primary, #1e40af);
}
.rv-contract-notice--info {
    border-inline-start-color: var(--rv-accent);
    background: var(--rv-accent-light, #eff6ff);
}
.rv-contract-notice--error {
    border-inline-start-color: var(--rv-error);
    background: var(--rv-error-bg);
    color: var(--rv-error-text);
}
.rv-contract-exclusivity-notice { margin-bottom: var(--rv-space-4); }

/* Scrollable contract body */
.rv-contract-content {
    max-height: 480px;
    overflow-y: auto;
    padding: var(--rv-space-5);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
    background: var(--rv-bg-surface, #ffffff);
    color: var(--rv-text-primary, #374151);
    font-size: var(--rv-font-size-base);
    line-height: 1.7;
    margin-bottom: var(--rv-space-4);
}

.rv-contract-sign-section { display: flex; flex-direction: column; gap: var(--rv-space-4); }

.rv-contract-scroll-hint {
    font-size: var(--rv-font-size-smd);
    color: var(--rv-text-secondary, #6b7280);
    font-style: italic;
    margin: 0;
}

.rv-contract-agree-row {
    display: flex;
    align-items: flex-start;
    gap: var(--rv-space-2);
    padding: var(--rv-space-3);
    background: var(--rv-bg-elevated, #f9fafb);
    border-radius: var(--rv-radius-sm);
}
.rv-contract-agree-checkbox { width: 18px; height: 18px; flex-shrink: 0; accent-color: var(--rv-accent); cursor: pointer; }

/* Signature */
.rv-contract-signature-section { display: flex; flex-direction: column; gap: var(--rv-space-2); }
.rv-contract-sig-label { font-size: var(--rv-font-size-smd); font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #374151); }

.rv-signature-canvas-wrap {
    border: 1px solid var(--rv-border-color, #d1d5db);
    border-radius: var(--rv-radius-sm);
    background: var(--rv-bg-surface, #ffffff);
    overflow: hidden;
}
.rv-signature-canvas { display: block; width: 100%; height: 160px; cursor: crosshair; touch-action: none; }
.rv-signature-canvas-actions { display: flex; gap: var(--rv-space-2); padding: var(--rv-space-2); border-top: 1px solid var(--rv-border-color, #f3f4f6); }

.rv-signature-text-wrap { display: flex; flex-direction: column; gap: var(--rv-space-2); }
.rv-contract-signature-input {
    width: 100%;
    padding: var(--rv-space-3);
    border: 1px solid var(--rv-border-color, #d1d5db);
    border-radius: var(--rv-radius-sm);
    font-size: var(--rv-font-size-xl);
    font-family: Georgia, 'Times New Roman', serif;
    color: var(--rv-text-primary, #111827);
    background: var(--rv-bg-surface, #ffffff);
}
.rv-contract-signature-input:focus { outline: none; border-color: var(--rv-accent); box-shadow: 0 0 0 3px var(--rv-accent-light, rgba(37, 99, 235, 0.1)); }

.rv-contract-success { text-align: center; padding: var(--rv-space-6) var(--rv-space-5); }
.rv-contract-redirect-notice { font-size: var(--rv-font-size-base); color: var(--rv-text-secondary, #6b7280); margin-top: var(--rv-space-3); }

/* ============================================================================
   SURFACE: support (buyer-views-support.php)
   ============================================================================ */

.rv-support-wrap { max-width: 1000px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }
.rv-support-header { margin-bottom: var(--rv-space-4); }

.rv-support-category-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--rv-space-1);
    border-bottom: 1px solid var(--rv-border-color, #e5e7eb);
    margin-bottom: var(--rv-space-4);
}

.rv-support-filters { display: flex; flex-wrap: wrap; gap: var(--rv-space-3); margin-bottom: var(--rv-space-4); align-items: center; }

.rv-support-empty { text-align: center; padding: var(--rv-space-6) var(--rv-space-5); color: var(--rv-text-secondary, #6b7280); }

/* Ticket list table */
.rv-support-table { width: 100%; border-collapse: collapse; font-size: var(--rv-font-size-base); }
.rv-support-table th {
    text-align: left;
    padding: var(--rv-space-2) var(--rv-space-3);
    font-size: var(--rv-font-size-xs);
    font-weight: var(--rv-weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--rv-text-secondary, #6b7280);
    background: var(--rv-bg-elevated, #f9fafb);
    border-bottom: 1px solid var(--rv-border-color, #e5e7eb);
}
.rv-support-table td { padding: var(--rv-space-3); border-bottom: 1px solid var(--rv-border-color, #f3f4f6); color: var(--rv-text-primary, #374151); }
.rv-ticket-row { transition: background-color var(--rv-transition); cursor: pointer; }
.rv-ticket-row:hover { background: var(--rv-bg-elevated, #f9fafb); }

/* New ticket + detail panels */
.rv-support-new-ticket,
.rv-support-ticket-detail {
    margin-top: var(--rv-space-5);
    padding: var(--rv-space-5);
    background: var(--rv-bg-surface, #ffffff);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
    box-shadow: var(--rv-shadow, 0 1px 4px rgba(0, 0, 0, 0.08));
}

.rv-ticket-detail-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--rv-space-3); flex-wrap: wrap; margin-bottom: var(--rv-space-4); }
.rv-ticket-meta { display: flex; align-items: center; gap: var(--rv-space-2); flex-wrap: wrap; }
.rv-ticket-number { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); }
.rv-ticket-tags { display: flex; gap: var(--rv-space-1); flex-wrap: wrap; }

/* Message thread */
.rv-ticket-messages { display: flex; flex-direction: column; gap: var(--rv-space-3); margin-bottom: var(--rv-space-4); }
.rv-ticket-message {
    padding: var(--rv-space-3) var(--rv-space-4);
    border-radius: var(--rv-radius-md);
    font-size: var(--rv-font-size-base);
    line-height: 1.5;
    max-width: 85%;
}
/* Sender variants: buyer = accent-tinted, self-aligned end; staff = neutral; system = centered muted */
.rv-message-sender--buyer {
    align-self: flex-end;
    background: var(--rv-badge-bg, #dbeafe);
    color: var(--rv-text-primary, #1e3a8a);
}
.rv-message-sender--staff,
.rv-message-sender--admin {
    align-self: flex-start;
    background: var(--rv-bg-elevated, #f3f4f6);
    color: var(--rv-text-primary, #374151);
}
.rv-message-sender--system {
    align-self: center;
    background: transparent;
    color: var(--rv-text-secondary, #9ca3af);
    font-size: var(--rv-font-size-sm);
    font-style: italic;
    max-width: 100%;
    text-align: center;
}

.rv-ticket-reply-form { display: flex; flex-direction: column; gap: var(--rv-space-2); margin-top: var(--rv-space-4); padding-top: var(--rv-space-4); border-top: 1px solid var(--rv-border-color, #e5e7eb); }
.rv-ticket-actions { display: flex; gap: var(--rv-space-2); flex-wrap: wrap; margin-top: var(--rv-space-3); }

.rv-ticket-closed-notice {
    padding: var(--rv-space-3) var(--rv-space-4);
    background: var(--rv-bg-elevated, #f3f4f6);
    border-radius: var(--rv-radius-sm);
    font-size: var(--rv-font-size-smd);
    color: var(--rv-text-secondary, #6b7280);
    text-align: center;
}

/* ── Dark-specific (semantic notice/message colors) ──────────────────────────── */
@media (prefers-color-scheme: dark) {
    .rv-contract-notice--error { background: #3b0a0a; color: var(--rv-error-text); }
    .rv-message-sender--buyer { color: #bfdbfe; }
}
html.rv-dark .rv-contract-notice--error { background: #3b0a0a; color: var(--rv-error-text); }
html.rv-dark .rv-message-sender--buyer { color: #bfdbfe; }

/* ============================================================================
   DRIFT-717 — BATCH P1-1: leads workflow cluster
   buyer-views-dashboard + buyer-views-leads + buyer-views-multi-niche-leads
   + partial-lead-card. All load buyer-dashboard.css. Base rv-wtdn-*/rv-cap-bar/
   rv-lead-card-row exist — only gaps/variants added here. Same conventions.
   ============================================================================ */

/* ── Dashboard shell ────────────────────────────────────────────────────────── */
.rv-buyer-dashboard-wrap { max-width: 1200px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }

.rv-banner {
    display: flex;
    align-items: center;
    gap: var(--rv-space-2);
    padding: var(--rv-space-3) var(--rv-space-4);
    border-radius: var(--rv-radius-md);
    border-inline-start: 4px solid var(--rv-accent);
    background: var(--rv-accent-light, #eff6ff);
    margin-bottom: var(--rv-space-4);
}
.rv-banner__text { font-size: var(--rv-font-size-base); color: var(--rv-text-primary, #1e40af); }
.rv-banner--warning { border-inline-start-color: var(--rv-warning); background: var(--rv-warning-bg); }
.rv-banner--warning .rv-banner__text { color: var(--rv-warning-text); }

.rv-cap-bar-wrap { margin-bottom: var(--rv-space-5); }

/* Dashboard columns (rv-dashboard-cols container assumed styled; size the children) */
.rv-dashboard-col { min-width: 0; }
.rv-dashboard-col--main { flex: 2; }
.rv-dashboard-col--side { flex: 1; }
.rv-dashboard-widget { margin-bottom: var(--rv-space-4); }

/* What-to-do-next: section + item semantic variants (base classes exist) */
.rv-wtdn-section--overdue        { border-inline-start: 3px solid var(--rv-error); padding-inline-start: var(--rv-space-3); }
.rv-wtdn-section--today          { border-inline-start: 3px solid var(--rv-warning); padding-inline-start: var(--rv-space-3); }
.rv-wtdn-section--upcoming       { border-inline-start: 3px solid var(--rv-border-color, #e5e7eb); padding-inline-start: var(--rv-space-3); }
.rv-wtdn-section--invoices,
.rv-wtdn-section--quotes-unsent  { border-inline-start: 3px solid var(--rv-accent); padding-inline-start: var(--rv-space-3); }
.rv-wtdn-section--quotes-accepted,
.rv-wtdn-section--outcomes       { border-inline-start: 3px solid var(--rv-success); padding-inline-start: var(--rv-space-3); }

.rv-wtdn-item--overdue       { border-inline-start: 2px solid var(--rv-error); }
.rv-wtdn-item--today         { border-inline-start: 2px solid var(--rv-warning); }
.rv-wtdn-item--upcoming      { border-inline-start: 2px solid var(--rv-border-color, #e5e7eb); }
.rv-wtdn-item--invoice,
.rv-wtdn-item--quote-unsent  { border-inline-start: 2px solid var(--rv-accent); }
.rv-wtdn-item--quote-accepted,
.rv-wtdn-item--outcome       { border-inline-start: 2px solid var(--rv-success); }

.rv-wtdn-label--blue { color: var(--rv-accent); }

.rv-wtdn-refresh {
    background: none;
    border: none;
    color: var(--rv-accent);
    font-size: var(--rv-font-size-smd);
    cursor: pointer;
    padding: var(--rv-space-1) var(--rv-space-2);
    border-radius: var(--rv-radius-sm);
    transition: background-color var(--rv-transition);
}
.rv-wtdn-refresh:hover { background: var(--rv-bg-elevated, #f3f4f6); }

/* Recent leads list + slide-in panels + feedback */
.rv-lead-list { display: flex; flex-direction: column; gap: var(--rv-space-2); }
.rv-call-panel,
.rv-survey-panel {
    margin-top: var(--rv-space-4);
    padding: var(--rv-space-4);
    background: var(--rv-bg-surface, #ffffff);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
    box-shadow: var(--rv-shadow, 0 1px 4px rgba(0, 0, 0, 0.08));
}
.rv-widget-feedback { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); padding: var(--rv-space-2) 0; }
.rv-badge-idle { background: var(--rv-bg-elevated, #f3f4f6); color: var(--rv-text-secondary, #9ca3af); }

/* Empty-state modifiers + CTA */
.rv-empty-state--calls,
.rv-empty-state--leads,
.rv-empty-state--multi-niche { padding: var(--rv-space-6) var(--rv-space-5); }
.rv-empty-state__cta { margin-top: var(--rv-space-3); }

/* ── Leads listing (buyer-views-leads + multi-niche-leads) ───────────────────── */
.rv-leads-wrap,
.rv-multi-niche-wrap { max-width: 1200px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }

.rv-leads-header,
.rv-leads__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--rv-space-3);
    flex-wrap: wrap;
    margin-bottom: var(--rv-space-4);
}
.rv-leads__title { font-size: var(--rv-font-size-2xl); font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); margin: 0; }
.rv-leads-count { font-size: var(--rv-font-size-smd); font-weight: var(--rv-weight-semibold); color: var(--rv-text-secondary, #6b7280); }

/* Filters panel (collapsible) */
.rv-filters-wrap { margin-bottom: var(--rv-space-4); }
.rv-filters-toggle {
    display: inline-flex;
    align-items: center;
    gap: var(--rv-space-2);
    padding: var(--rv-space-2) var(--rv-space-4);
    border: 1px solid var(--rv-border-color, #d1d5db);
    border-radius: var(--rv-radius-sm);
    background: var(--rv-bg-surface, #ffffff);
    color: var(--rv-text-primary, #374151);
    font-size: var(--rv-font-size-base);
    font-weight: var(--rv-weight-semibold);
    cursor: pointer;
    transition: border-color var(--rv-transition);
}
.rv-filters-toggle:hover { border-color: var(--rv-accent); }
.rv-filters-toggle__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 var(--rv-space-1);
    border-radius: var(--rv-radius-pill);
    background: var(--rv-accent);
    color: var(--rv-accent-text, #ffffff);
    font-size: var(--rv-font-size-xs);
    font-weight: var(--rv-weight-bold);
}
.rv-filters { display: none; margin-top: var(--rv-space-3); padding: var(--rv-space-4); background: var(--rv-bg-elevated, #f9fafb); border-radius: var(--rv-radius-md); }
.rv-filters.is-open { display: block; }
.rv-filters__row { display: flex; flex-wrap: wrap; gap: var(--rv-space-3); align-items: flex-end; }
.rv-filters-clear-all { background: none; border: none; color: var(--rv-accent); font-size: var(--rv-font-size-smd); cursor: pointer; padding: var(--rv-space-1) var(--rv-space-2); }

/* Leads tables (use the .rv-table__th/__td BEM convention) */
.rv-table__th--id { width: 1%; white-space: nowrap; }
.rv-lead-row { transition: background-color var(--rv-transition); cursor: pointer; }
.rv-lead-row:hover { background: var(--rv-bg-elevated, #f9fafb); }
.rv-lead-status-col { white-space: nowrap; }
.rv-lead-note-btn { background: none; border: none; color: var(--rv-accent); cursor: pointer; font-size: var(--rv-font-size-smd); padding: var(--rv-space-1); }
.rv-link--muted { color: var(--rv-text-secondary, #6b7280); }
.rv-multi-niche-table { width: 100%; }
.rv-leads__filters { display: flex; flex-wrap: wrap; gap: var(--rv-space-3); margin-bottom: var(--rv-space-4); }

/* Verified / niche / lead badges */
.rv-verified-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border-radius: var(--rv-radius-circle);
    background: var(--rv-success-bg);
    color: var(--rv-success-text);
    font-size: var(--rv-font-size-xs);
    font-weight: var(--rv-weight-bold);
}
.rv-niche-badge { display: inline-flex; align-items: center; padding: 1px var(--rv-space-2); border-radius: var(--rv-radius-pill); background: var(--rv-badge-bg, #dbeafe); color: var(--rv-accent); font-size: var(--rv-font-size-xs); font-weight: var(--rv-weight-semibold); }
.rv-badge--type { background: var(--rv-bg-elevated, #f3f4f6); color: var(--rv-text-secondary, #6b7280); }

/* ── Lead card (partial-lead-card) — horizontal row ─────────────────────────── */
.rv-lead-card-row__id { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); }
.rv-lead-card-row__link { font-weight: var(--rv-weight-semibold); }
.rv-lead-card-row__type { display: flex; align-items: center; gap: var(--rv-space-1); flex-wrap: wrap; }
.rv-lead-card-row__niche { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); }
.rv-lead-card-row__location { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); }
.rv-lead-card-row__status { white-space: nowrap; }
.rv-lead-card-row__actions { display: flex; gap: var(--rv-space-1); flex-wrap: wrap; }

.rv-lead-type,
.rv-lead-tier {
    display: inline-flex;
    align-items: center;
    padding: 1px var(--rv-space-2);
    border-radius: var(--rv-radius-pill);
    font-size: var(--rv-font-size-xs);
    font-weight: var(--rv-weight-semibold);
    background: var(--rv-bg-elevated, #f3f4f6);
    color: var(--rv-text-secondary, #6b7280);
}
/* High-intent tier gets the accent to draw the eye */
.rv-lead-tier--high,
.rv-lead-tier--hot { background: var(--rv-badge-bg, #dbeafe); color: var(--rv-accent); }

.rv-duration-label { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #9ca3af); font-variant-numeric: tabular-nums; }

/* ── Dark-specific (semantic colors) ─────────────────────────────────────────── */
@media (prefers-color-scheme: dark) {
    .rv-banner--warning { background: var(--rv-warning-bg); }
    .rv-banner--warning .rv-banner__text { color: var(--rv-warning-text); }
    .rv-wtdn-section--overdue, .rv-wtdn-item--overdue { border-inline-start-color: var(--rv-error); }
    .rv-wtdn-section--today, .rv-wtdn-item--today { border-inline-start-color: var(--rv-warning); }
    .rv-wtdn-section--quotes-accepted, .rv-wtdn-section--outcomes,
    .rv-wtdn-item--quote-accepted, .rv-wtdn-item--outcome { border-inline-start-color: var(--rv-success); }
    .rv-verified-badge { background: var(--rv-success-bg); color: var(--rv-success); }
}
html.rv-dark .rv-banner--warning { background: var(--rv-warning-bg); }
html.rv-dark .rv-banner--warning .rv-banner__text { color: var(--rv-warning-text); }
html.rv-dark .rv-wtdn-section--overdue, html.rv-dark .rv-wtdn-item--overdue { border-inline-start-color: var(--rv-error); }
html.rv-dark .rv-verified-badge { background: var(--rv-success-bg); color: var(--rv-success); }

/* ============================================================================
   DRIFT-717 — BATCH P1-2: billing / invoice cluster
   buyer-views-billing + invoice-detail + partial-invoice-summary + suspended.
   rv-modal--pay / __body-text extend the LEGACY convention-#1 modal additively
   (no :has() needed — they ride the existing .rv-modal dialog rule). Same conventions.
   ============================================================================ */

/* ── Shared utilities + notice/modal extensions ─────────────────────────────── */
.rv-text-muted { color: var(--rv-text-secondary, #9ca3af); }
.rv-notice__icon { flex-shrink: 0; }
.rv-notice__hint { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); margin: var(--rv-space-1) 0 0; }
.rv-modal--pay .rv-modal__title { margin-top: 0; }
.rv-modal__body-text { font-size: var(--rv-font-size-base); color: var(--rv-text-secondary, #374151); line-height: 1.6; margin: 0 0 var(--rv-space-4); }
.rv-card__header-link { font-size: var(--rv-font-size-smd); color: var(--rv-accent); text-decoration: none; }
.rv-card__header-link:hover { text-decoration: underline; }

/* Pay-now CTA (shared: invoice-detail + invoice-summary) */
.rv-pay-now-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--rv-space-2);
    padding: var(--rv-space-3) var(--rv-space-5);
    background: var(--rv-accent);
    color: var(--rv-accent-text, #ffffff);
    border: none;
    border-radius: var(--rv-radius-sm);
    font-size: 15px;
    font-weight: var(--rv-weight-semibold);
    cursor: pointer;
    text-decoration: none;
    transition: background-color var(--rv-transition);
}
.rv-pay-now-btn:hover { background: var(--rv-accent-dark); color: var(--rv-accent-text, #ffffff); }

/* ── billing (buyer-views-billing) ──────────────────────────────────────────── */
.rv-billing-wrap { max-width: 1000px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }
.rv-billing__header-row { display: flex; align-items: center; justify-content: space-between; gap: var(--rv-space-3); flex-wrap: wrap; margin-bottom: var(--rv-space-4); }
.rv-billing__title { font-size: var(--rv-font-size-2xl); font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); margin: 0; }
.rv-billing__filters { display: flex; flex-wrap: wrap; gap: var(--rv-space-3); margin-bottom: var(--rv-space-4); }

.rv-billing-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--rv-space-4); margin-bottom: var(--rv-space-5); }
.rv-billing-summary__item { padding: var(--rv-space-4); background: var(--rv-bg-surface, #ffffff); border: 1px solid var(--rv-border-color, #e5e7eb); border-radius: var(--rv-radius-md); }
.rv-billing-summary__label { font-size: var(--rv-font-size-sm); font-weight: var(--rv-weight-semibold); text-transform: uppercase; letter-spacing: 0.04em; color: var(--rv-text-secondary, #6b7280); margin-bottom: var(--rv-space-1); }
.rv-billing-summary__value { font-size: var(--rv-font-size-2xl); font-weight: var(--rv-weight-extrabold); color: var(--rv-text-primary, #111827); font-variant-numeric: tabular-nums; }
.rv-billing-summary__value--credits { color: var(--rv-success); }

.rv-payment-method { font-size: var(--rv-font-size-base); color: var(--rv-text-primary, #374151); }
.rv-billing-mode-request { margin-bottom: var(--rv-space-4); }
.rv-billing-mode-section { margin-top: var(--rv-space-5); padding: var(--rv-space-4); background: var(--rv-bg-elevated, #f9fafb); border-radius: var(--rv-radius-md); }
.rv-billing-mode-section__title { font-size: 15px; font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); margin: 0 0 var(--rv-space-2); }
.rv-billing-mode-section__current { font-size: var(--rv-font-size-base); color: var(--rv-text-secondary, #6b7280); margin: 0; }

.rv-invoices-table { width: 100%; }
.rv-invoice-row { transition: background-color var(--rv-transition); }
.rv-invoice-row:hover { background: var(--rv-bg-elevated, #f9fafb); }
.rv-invoice-row__total { font-weight: var(--rv-weight-bold); font-variant-numeric: tabular-nums; color: var(--rv-text-primary, #111827); }
.rv-invoice-row__credits { font-size: var(--rv-font-size-sm); color: var(--rv-success); font-variant-numeric: tabular-nums; }

.rv-access-denied,
.rv-access-restricted {
    max-width: 560px;
    margin: var(--rv-space-7) auto;
    padding: var(--rv-space-6) var(--rv-space-5);
    text-align: center;
    background: var(--rv-bg-surface, #ffffff);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-lg);
}

/* ── invoice-detail (buyer-views-invoice-detail) ────────────────────────────── */
.rv-invoice-detail-wrap { max-width: 860px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }
.rv-invoice-detail__header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--rv-space-4); flex-wrap: wrap; margin-bottom: var(--rv-space-5); }
.rv-invoice-detail__meta { min-width: 0; }
.rv-invoice-detail__number { font-size: var(--rv-font-size-3xl); font-weight: var(--rv-weight-extrabold); color: var(--rv-text-primary, #111827); margin: 0; font-variant-numeric: tabular-nums; }
.rv-invoice-buyer-subheader { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); margin: var(--rv-space-1) 0 0; }
.rv-invoice-detail__badges { display: flex; gap: var(--rv-space-2); flex-wrap: wrap; margin-top: var(--rv-space-2); }
.rv-invoice-detail__pdf { flex-shrink: 0; }

.rv-invoice-detail__line-items { margin-bottom: var(--rv-space-5); }
.rv-invoice-niche-group { margin-bottom: var(--rv-space-4); }
.rv-invoice-niche-group__title { font-size: var(--rv-font-size-smd); font-weight: var(--rv-weight-bold); text-transform: uppercase; letter-spacing: 0.04em; color: var(--rv-text-secondary, #6b7280); margin: 0 0 var(--rv-space-2); }
.rv-line-items-table { width: 100%; font-size: var(--rv-font-size-base); }

/* Totals block */
.rv-invoice-detail__totals { display: flex; justify-content: flex-end; }
.rv-invoice-totals { width: 100%; max-width: 320px; }
.rv-invoice-totals__row { display: flex; justify-content: space-between; gap: var(--rv-space-4); padding: var(--rv-space-2) 0; font-size: var(--rv-font-size-base); color: var(--rv-text-secondary, #374151); font-variant-numeric: tabular-nums; }
.rv-invoice-totals__row--credits { color: var(--rv-success); }
.rv-invoice-totals__row--total { border-top: 2px solid var(--rv-border-color, #e5e7eb); margin-top: var(--rv-space-1); padding-top: var(--rv-space-3); font-size: var(--rv-font-size-lg); font-weight: var(--rv-weight-extrabold); color: var(--rv-text-primary, #111827); }
.rv-invoice-detail__pay-action { margin-top: var(--rv-space-5); display: flex; justify-content: flex-end; }

/* ── invoice-summary (partial-invoice-summary) — card widget ────────────────── */
.rv-invoice-summary__body { display: flex; flex-direction: column; gap: var(--rv-space-2); }
.rv-invoice-summary__empty { font-size: var(--rv-font-size-base); color: var(--rv-text-secondary, #6b7280); margin: 0; }
.rv-invoice-summary__latest { display: flex; flex-direction: column; gap: var(--rv-space-1); }
.rv-invoice-summary__row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--rv-space-3); font-size: var(--rv-font-size-base); }
.rv-invoice-summary__row .rv-invoice-summary__label { color: var(--rv-text-secondary, #6b7280); }
.rv-invoice-summary__number { font-weight: var(--rv-weight-semibold); }
.rv-invoice-summary__row--total { font-weight: var(--rv-weight-bold); }
.rv-invoice-summary__total { font-variant-numeric: tabular-nums; color: var(--rv-text-primary, #111827); }
.rv-invoice-summary__total--paid { color: var(--rv-success); }
.rv-invoice-summary__total--overdue,
.rv-invoice-summary__total--unpaid { color: var(--rv-error); }
.rv-invoice-summary__credits { font-size: var(--rv-font-size-sm); color: var(--rv-success); }
.rv-invoice-summary__due-date { font-variant-numeric: tabular-nums; color: var(--rv-text-primary, #374151); }
.rv-invoice-summary__actions { margin-top: var(--rv-space-3); }
.rv-invoice-summary__credits-balance,
.rv-invoice-summary__prepaid-balance { font-size: var(--rv-font-size-smd); color: var(--rv-success); font-weight: var(--rv-weight-semibold); }
.rv-invoice-summary__prepaid-toggle { background: none; border: none; color: var(--rv-accent); font-size: var(--rv-font-size-smd); cursor: pointer; display: inline-flex; align-items: center; gap: var(--rv-space-1); padding: var(--rv-space-1) 0; }
.rv-prepaid-toggle-icon { transition: transform var(--rv-transition); }
.rv-invoice-summary__prepaid-toggle[aria-expanded="true"] .rv-prepaid-toggle-icon { transform: rotate(90deg); }

/* ── suspended (buyer-views-suspended) ──────────────────────────────────────── */
.rv-suspended__billing-primary { font-size: var(--rv-font-size-md); font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); }
.rv-suspended__impersonation-notice {
    margin-top: var(--rv-space-4);
    padding: var(--rv-space-3) var(--rv-space-4);
    background: var(--rv-bg-elevated, #f3f4f6);
    border-radius: var(--rv-radius-sm);
    font-size: var(--rv-font-size-smd);
    color: var(--rv-text-secondary, #6b7280);
    text-align: center;
}

/* ── Dark-specific (semantic credit/status greens + danger) ─────────────────── */
@media (prefers-color-scheme: dark) {
    .rv-billing-summary__value--credits,
    .rv-invoice-row__credits,
    .rv-invoice-totals__row--credits,
    .rv-invoice-summary__credits,
    .rv-invoice-summary__credits-balance,
    .rv-invoice-summary__prepaid-balance,
    .rv-invoice-summary__total--paid { color: var(--rv-success); }
    .rv-invoice-summary__total--overdue,
    .rv-invoice-summary__total--unpaid { color: var(--rv-error); }
}
html.rv-dark .rv-billing-summary__value--credits,
html.rv-dark .rv-invoice-row__credits,
html.rv-dark .rv-invoice-totals__row--credits,
html.rv-dark .rv-invoice-summary__credits,
html.rv-dark .rv-invoice-summary__total--paid { color: var(--rv-success); }
html.rv-dark .rv-invoice-summary__total--overdue,
html.rv-dark .rv-invoice-summary__total--unpaid { color: var(--rv-error); }

/* ============================================================================
   DRIFT-717 — BATCH P1-6: settings + onboarding-wizard
   buyer-views-settings (sectioned page) + buyer-views-onboarding-wizard.
   rv-form / rv-card / rv-btn--block / rv-text-muted already exist. Same conventions.
   ============================================================================ */

/* Buttons + text utilities */
.rv-btn--warning { background: #f59e0b; color: var(--rv-white); }
.rv-btn--warning:hover { background: #d97706; color: var(--rv-white); }
.rv-text-success { color: var(--rv-success); }
.rv-hint--rtl { text-align: right; }

/* Settings shell */
.rv-settings-wrap { max-width: 900px; margin: 0 auto; padding: var(--rv-space-5) var(--rv-space-4); }
.rv-settings__header-row { display: flex; align-items: center; justify-content: space-between; gap: var(--rv-space-3); flex-wrap: wrap; margin-bottom: var(--rv-space-4); }
.rv-settings__title { font-size: var(--rv-font-size-2xl); font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); margin: 0; }
.rv-settings__content { display: flex; flex-direction: column; gap: var(--rv-space-5); }
.rv-settings__tabs { display: flex; flex-wrap: wrap; gap: var(--rv-space-1); border-bottom: 1px solid var(--rv-border-color, #e5e7eb); margin-bottom: var(--rv-space-4); }

.rv-settings-section {
    padding: var(--rv-space-5);
    background: var(--rv-bg-surface, #ffffff);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
}
.rv-settings-section__title { font-size: var(--rv-font-size-md); font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); margin: 0 0 var(--rv-space-2); }
.rv-settings-section__subtitle { font-size: var(--rv-font-size-base); font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #374151); margin: 0 0 var(--rv-space-2); }
.rv-settings-section__desc { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); margin: 0 0 var(--rv-space-3); line-height: 1.5; }
.rv-settings-subsection__title { font-size: var(--rv-font-size-base); font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #374151); margin: var(--rv-space-3) 0 var(--rv-space-2); }
.rv-settings-section--storm-opt-out { border-inline-start: 4px solid var(--rv-warning); }

/* Cards (modifiers on the base .rv-card) */
.rv-card--agreement,
.rv-card--payment-method,
.rv-card--pp-billing,
.rv-card--preferred-gateway { padding: var(--rv-space-4); }
.rv-2fa-card,
.rv-settings-pp-billing__card {
    padding: var(--rv-space-4);
    background: var(--rv-bg-elevated, #f9fafb);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md);
}
.rv-settings-pp-billing__desc { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); margin: var(--rv-space-1) 0 0; }

/* Forms within settings */
.rv-form--call-types { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--rv-space-2); }
.rv-form-row--toggle { display: flex; align-items: center; justify-content: space-between; gap: var(--rv-space-3); }
.rv-language-form,
.rv-card-update-form { display: flex; flex-direction: column; gap: var(--rv-space-3); }
.rv-card-update-trigger { background: none; border: none; color: var(--rv-accent); font-size: var(--rv-font-size-smd); cursor: pointer; padding: var(--rv-space-1) 0; }

/* Current payment method display */
.rv-payment-method-current { display: flex; align-items: center; gap: var(--rv-space-2); }
.rv-payment-method-current__label { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); }
.rv-payment-method-current__card { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: var(--rv-font-size-base); color: var(--rv-text-primary, #111827); }

/* Agreement status (semantic) */
.rv-agreement-details { margin-top: var(--rv-space-3); }
.rv-agreement-pending-message { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); }
.rv-agreement-status {
    display: inline-flex;
    align-items: center;
    gap: var(--rv-space-1);
    padding: 2px var(--rv-space-2);
    border-radius: var(--rv-radius-pill);
    font-size: var(--rv-font-size-sm);
    font-weight: var(--rv-weight-bold);
}
.rv-agreement-status--signed { background: var(--rv-success-bg); color: var(--rv-success-text); }
.rv-agreement-status--pending { background: var(--rv-warning-bg); color: var(--rv-warning-text); }

/* Detail table */
.rv-detail-table { width: 100%; border-collapse: collapse; font-size: var(--rv-font-size-base); }
.rv-detail-table th,
.rv-detail-table td { padding: var(--rv-space-2) var(--rv-space-3); text-align: left; border-bottom: 1px solid var(--rv-border-color, #f3f4f6); }
.rv-detail-table th { color: var(--rv-text-secondary, #6b7280); font-weight: var(--rv-weight-semibold); width: 40%; }
.rv-detail-table td { color: var(--rv-text-primary, #374151); }
.rv-detail-table--settings tr:last-child th,
.rv-detail-table--settings tr:last-child td { border-bottom: none; }

/* Save feedback + storm opt-out */
.rv-save-feedback { font-size: var(--rv-font-size-smd); margin-top: var(--rv-space-2); }
.rv-save-feedback--gateway { font-weight: var(--rv-weight-semibold); }
.rv-storm-opt-out-row { display: flex; align-items: center; justify-content: space-between; gap: var(--rv-space-3); margin-top: var(--rv-space-2); }
.rv-storm-opt-out-saved { font-size: var(--rv-font-size-sm); }

/* Settings modal box (legacy convention, additive) */
.rv-modal__box {
    width: 100%;
    max-width: 480px;
    margin: auto;
    background: var(--rv-bg-surface, #ffffff);
    border-radius: var(--rv-radius-lg);
    box-shadow: var(--rv-shadow-lg, 0 20px 60px rgba(0, 0, 0, 0.18));
    padding: var(--rv-space-5);
}

/* ── onboarding-wizard gaps ─────────────────────────────────────────────────── */
.rv-onboarding__cap-hint { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #9ca3af); margin-top: var(--rv-space-1); }
.rv-onboarding__step-body { padding: var(--rv-space-4) 0; }

/* ── Dark-specific (semantic) ────────────────────────────────────────────────── */
@media (prefers-color-scheme: dark) {
    .rv-text-success { color: var(--rv-success); }
    .rv-agreement-status--signed { background: var(--rv-success-bg); color: var(--rv-success); }
    .rv-agreement-status--pending { background: var(--rv-warning-bg); color: var(--rv-warning-text); }
}
html.rv-dark .rv-text-success { color: var(--rv-success); }
html.rv-dark .rv-agreement-status--signed { background: var(--rv-success-bg); color: var(--rv-success); }
html.rv-dark .rv-agreement-status--pending { background: var(--rv-warning-bg); color: var(--rv-warning-text); }

/* ============================================================================
   DRIFT-717 — BATCH P1-8a: pricing-modal gaps (base rv-pricing-* already in this file)
   ============================================================================ */
.rv-pricing-table--callbacks { /* callbacks variant shares base table layout */ }
.rv-pricing-table__th--tier,
.rv-pricing-table__td--tier { white-space: nowrap; }
.rv-pricing-table__th--freshness,
.rv-pricing-table__td--freshness { text-align: center; }
.rv-pricing-notes__item--verified { color: var(--rv-success); font-weight: var(--rv-weight-semibold); }
.rv-pricing-modal__demand-notice {
    margin-top: var(--rv-space-3);
    padding: var(--rv-space-2) var(--rv-space-3);
    border-radius: var(--rv-radius-sm);
    background: var(--rv-accent-light, #eff6ff);
    color: var(--rv-text-primary, #1e40af);
    font-size: var(--rv-font-size-smd);
}
@media (prefers-color-scheme: dark) { .rv-pricing-notes__item--verified { color: var(--rv-success); } }
html.rv-dark .rv-pricing-notes__item--verified { color: var(--rv-success); }

/* ============================================================================
   DRIFT-717 — BATCH G: contract self-certification block
   Rendered by class-contract-signer.php into buyer-views-contract-signing.php
   (buyer dashboard) → buyer-dashboard.css. Token fallbacks; dark-mirrored.
   (rv-nda-document is already styled with its own inline font-family.)
   ============================================================================ */
.rv-self-certification {
    margin: var(--rv-space-4, 16px) 0;
    padding: var(--rv-space-4, 16px);
    background: var(--rv-bg-surface, #f9fafb);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md, 8px);
}
.rv-self-certification h4 { margin: 0 0 var(--rv-space-2, 8px); font-size: 15px; font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); }
.rv-self-certification ul { margin: 0; padding-left: var(--rv-space-5, 24px); }
.rv-self-certification li { margin-bottom: var(--rv-space-2, 8px); line-height: 1.6; color: var(--rv-text-secondary, #4b5563); }
@media (prefers-color-scheme: dark) {
    .rv-self-certification { background: var(--rv-bg-surface, #1a1d27); border-color: var(--rv-border-color, #2d3748); }
    .rv-self-certification h4 { color: var(--rv-text-primary, #e2e8f0); }
    .rv-self-certification li { color: var(--rv-text-secondary, #94a3b8); }
}
html.rv-dark .rv-self-certification { background: var(--rv-bg-surface, #1a1d27); border-color: var(--rv-border-color, #2d3748); }
html.rv-dark .rv-self-certification h4 { color: var(--rv-text-primary, #e2e8f0); }
html.rv-dark .rv-self-certification li { color: var(--rv-text-secondary, #94a3b8); }

/* ============================================================================
   DRIFT-717 — BATCH H: JS-injected buyer surfaces (runtime DOM the gap
   inventory couldn't see). Hosts: live-call-widget.js, training-playbook.js,
   account-closure.js, utils.js (notifications), pending-quotes.js,
   schedule-assist.js, contract-signer.js, zip-routing.js, buyer-tours.js.
   Buyer context → theme tokens; status tints use plain hexes + dark mirrors.
   ============================================================================ */

/* Live-call widget — real-time incoming-call alert + states */
.rv-call-alert {
    padding: var(--rv-space-4, 16px);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-left: 4px solid var(--rv-accent, #2563eb);
    border-radius: var(--rv-radius-md, 8px);
    background: var(--rv-bg-surface, #ffffff);
    margin-bottom: var(--rv-space-4, 16px);
}
.rv-state-ringing { border-left-color: var(--rv-warning); background: var(--rv-warning-bg); }
.rv-state-connecting { border-left-color: #2563eb; background: #eff6ff; }
.rv-state-qualified { border-left-color: var(--rv-success); background: var(--rv-success-bg); }
.rv-call-niche { font-weight: var(--rv-weight-bold); font-size: var(--rv-font-size-md); color: var(--rv-text-primary, #111827); margin-bottom: var(--rv-space-1, 4px); }
.rv-call-icon { font-size: var(--rv-font-size-lg); }
.rv-call-label { font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #111827); }
.rv-caller-phone { margin: var(--rv-space-2, 8px) 0 0; font-variant-numeric: tabular-nums; color: var(--rv-text-primary, #111827); }
.rv-lead-price { font-weight: var(--rv-weight-bold); color: var(--rv-text-primary, #111827); font-variant-numeric: tabular-nums; }
.rv-tier-refreshed-label { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); }

/* In-call survey */
.rv-survey-progress-wrap { margin: var(--rv-space-2, 8px) 0; }
.rv-survey-questions { margin-top: var(--rv-space-3, 12px); }
.rv-survey-question { margin-bottom: var(--rv-space-3, 12px); }
.rv-survey-question label { display: block; margin-bottom: var(--rv-space-1, 4px); font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #111827); }
.rv-survey-select { width: 100%; padding: var(--rv-space-2, 8px); border: 1px solid var(--rv-border-color, #e5e7eb); border-radius: var(--rv-radius-sm, 4px); background: var(--rv-bg-surface, #ffffff); color: var(--rv-text-primary, #111827); }
.rv-survey-unavailable { color: var(--rv-text-secondary, #6b7280); font-style: italic; }

/* Training quiz */
.rv-training-step-title { font-size: var(--rv-font-size-lg); font-weight: var(--rv-weight-bold); margin: 0 0 var(--rv-space-2, 8px); color: var(--rv-text-primary, #111827); }
.rv-training-step-body { line-height: 1.7; color: var(--rv-text-secondary, #4b5563); }
.rv-quiz-question { font-weight: var(--rv-weight-semibold); margin: var(--rv-space-4, 16px) 0 var(--rv-space-2, 8px); color: var(--rv-text-primary, #111827); }
.rv-quiz-options { display: flex; flex-direction: column; gap: var(--rv-space-2, 8px); }
.rv-quiz-option {
    display: flex;
    align-items: center;
    gap: var(--rv-space-2, 8px);
    padding: var(--rv-space-2, 8px) var(--rv-space-3, 12px);
    border: 1px solid var(--rv-border-color, #e5e7eb);
    border-radius: var(--rv-radius-md, 8px);
    cursor: pointer;
}
.rv-quiz-option:hover { border-color: var(--rv-accent, #2563eb); }
.rv-quiz-feedback { margin-top: var(--rv-space-3, 12px); font-weight: var(--rv-weight-semibold); }

/* Account-closure confirmation */
.rv-closure-confirmation { text-align: center; padding: var(--rv-space-5, 24px); }
.rv-closure-confirmation__icon { font-size: 40px; }
.rv-closure-confirmation__title { font-size: var(--rv-font-size-xl); font-weight: var(--rv-weight-bold); margin: var(--rv-space-3, 12px) 0; color: var(--rv-text-primary, #111827); }
.rv-closure-confirmation__body { color: var(--rv-text-secondary, #4b5563); margin-bottom: var(--rv-space-4, 16px); }
.rv-closure-confirmation__cancel-wrap { margin-top: var(--rv-space-3, 12px); }

/* Notifications dropdown (utils.js injects items into the bell shell) */
.rv-notification-item { padding: var(--rv-space-3, 12px); border-bottom: 1px solid var(--rv-border-color, #e5e7eb); }
.rv-notification-item__message { font-size: var(--rv-font-size-base); color: var(--rv-text-primary, #111827); line-height: 1.5; }
.rv-notification-item__time { font-size: var(--rv-font-size-sm); color: var(--rv-text-secondary, #6b7280); margin-top: var(--rv-space-1, 4px); }

/* Inline confirm (pending-quotes / schedule-assist) */
.rv-quote-inline-confirm,
.rv-reminder-inline-confirm {
    margin-top: var(--rv-space-2, 8px);
    padding: var(--rv-space-3, 12px);
    background: var(--rv-warning-bg);
    border: 1px solid #fde68a;
    border-radius: var(--rv-radius-md, 8px);
}
.rv-quote-inline-confirm__msg,
.rv-reminder-inline-confirm__msg { margin: 0 0 var(--rv-space-2, 8px); font-size: var(--rv-font-size-base); color: var(--rv-warning-text); }

/* Singletons */
.rv-contract-load-error,
.rv-wtdn-body--error { color: #b91c1c; }
.rv-tour-staff-note { font-size: var(--rv-font-size-smd); color: var(--rv-text-secondary, #6b7280); font-style: italic; }
.rv-zip-empty { color: var(--rv-text-secondary, #6b7280); font-style: italic; padding: var(--rv-space-2, 8px); }
.rv-reminder-row--completed { opacity: 0.6; text-decoration: line-through; }

/* Dark mirrors — status tints (neutrals flip via tokens) */
@media (prefers-color-scheme: dark) {
    .rv-state-ringing { background: var(--rv-warning-bg); }
    .rv-state-connecting { background: #0c2d3f; }
    .rv-state-qualified { background: var(--rv-success-bg); }
    .rv-quote-inline-confirm,
    .rv-reminder-inline-confirm { background: var(--rv-warning-bg); border-color: #5b3a00; }
    .rv-quote-inline-confirm__msg,
    .rv-reminder-inline-confirm__msg { color: var(--rv-warning-text); }
    .rv-contract-load-error,
    .rv-wtdn-body--error { color: var(--rv-error); }
}
html.rv-dark .rv-state-ringing { background: var(--rv-warning-bg); }
html.rv-dark .rv-state-connecting { background: #0c2d3f; }
html.rv-dark .rv-state-qualified { background: var(--rv-success-bg); }
html.rv-dark .rv-quote-inline-confirm,
html.rv-dark .rv-reminder-inline-confirm { background: var(--rv-warning-bg); border-color: #5b3a00; }
html.rv-dark .rv-quote-inline-confirm__msg,
html.rv-dark .rv-reminder-inline-confirm__msg { color: var(--rv-warning-text); }
html.rv-dark .rv-contract-load-error,
html.rv-dark .rv-wtdn-body--error { color: var(--rv-error); }

/* DRIFT-717 Batch H follow-up — classes the post-batch verification diff caught:
   training-quiz wrapper, question-label, and the standalone view-lead link. */
.rv-training-quiz { margin-top: var(--rv-space-4, 16px); padding: var(--rv-space-4, 16px); border: 1px solid var(--rv-border-color, #e5e7eb); border-radius: var(--rv-radius-md, 8px); }
.rv-question-label { display: block; margin-bottom: var(--rv-space-1, 4px); font-weight: var(--rv-weight-semibold); color: var(--rv-text-primary, #111827); }
.rv-view-lead-link { color: var(--rv-accent, #2563eb); text-decoration: none; font-weight: var(--rv-weight-semibold); }
.rv-view-lead-link:hover { text-decoration: underline; }
