/* Mercy Booking Widget — scoped under .mb-widget / .mb-modal so it survives
   theme resets (input{border:none} etc). Loaded at wp_enqueue_scripts
   priority 20 to also win same-specificity cascade ties against theme CSS
   printed at the default priority.

   Brand colors are NOT declared here: the plugin prints the saved branding
   as --mb-* custom properties on these roots (see mercy_booking_inline_css
   and inline_branding_css). Declaring defaults in this file too would
   override the saved colors whenever this file is inlined after that
   block, so every rule below uses var(--mb-x, fallback) instead. */

/* ---- Hard reset for controls, so theme/page-builder globals for
   button / input / select / textarea can't leak in (pill shapes, uppercase
   text, text shadows, odd heights). Component rules further down set the
   intended look; this only neutralises what a theme might add. ---- */

/* :where() keeps these resets at zero specificity, so every component rule
   below (.mb-next-btn, .mb-input, …) still wins on the properties it sets. */
:where(.mb-widget, .mb-modal, .mb-portal) :where(button, input[type="submit"], .button) {
	-webkit-appearance: none !important;
	appearance: none !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: auto !important;
	text-align: center !important;
	color: var(--mb-text, #0A1330) !important;
	font-family: inherit !important;
	line-height: 1.2 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	text-shadow: none !important;
	text-decoration: none !important;
	box-shadow: none !important;
	background-image: none !important;
	min-height: 0 !important;
	height: auto !important;
	margin: 0 !important;
	white-space: nowrap !important;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease !important;
}

:where(.mb-widget, .mb-modal, .mb-portal) :where(input, select, textarea) {
	font-family: inherit !important;
	font-size: 14px !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	box-shadow: none !important;
	min-height: 0 !important;
	height: auto !important;
	margin: 0 !important;
	line-height: normal !important;
	color: var(--mb-text, #0A1330) !important;
	background-image: none !important;
}

:where(.mb-widget, .mb-modal, .mb-portal) :where(input[type="checkbox"], input[type="radio"]) {
	-webkit-appearance: auto !important;
	appearance: auto !important;
	width: 16px !important;
	height: 16px !important;
	accent-color: var(--mb-primary, #0B1A4D) !important;
}

.mb-widget {
	box-sizing: border-box !important;
	max-width: 480px !important;
	width: 100% !important;
	margin: 0 auto !important;
	padding: 24px !important;
	background: var(--mb-bg, #fff) !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	border-radius: 20px !important;
	box-shadow: 0 18px 40px rgba(10, 19, 48, 0.12) !important;
	font-family: inherit !important;
	color: var(--mb-text, #0A1330) !important;
}

.mb-widget *, .mb-modal *, .mb-portal * {
	box-sizing: border-box !important;
}

.mb-account-row {
	text-align: right !important;
	margin-bottom: 14px !important;
	padding-bottom: 12px !important;
	border-bottom: 1px solid var(--mb-border, #E3E6F0) !important;
}

.mb-account-link {
	font-size: 12px !important;
	font-weight: 700 !important;
	color: var(--mb-primary, #0B1A4D) !important;
	text-decoration: none !important;
}

.mb-account-link:hover {
	text-decoration: underline !important;
}

.mb-toggle-row {
	display: flex !important;
	gap: 6px !important;
	margin-bottom: 16px !important;
	background: var(--mb-bg-soft, #F6F7FB) !important;
	border-radius: 999px !important;
	padding: 4px !important;
}

.mb-toggle-btn {
	flex: 1 1 0 !important;
	padding: 10px 12px !important;
	border: none !important;
	background: transparent !important;
	border-radius: 999px !important;
	cursor: pointer !important;
	font-weight: 600 !important;
	font-size: 14px !important;
	color: var(--mb-muted, #5B6478) !important;
	transition: background 0.15s ease, color 0.15s ease !important;
}

.mb-toggle-btn.is-active {
	background: var(--mb-primary, #0B1A4D) !important;
	color: #fff !important;
}

.mb-step {
	margin-bottom: 18px !important;
}

.mb-step label {
	display: block !important;
	font-weight: 600 !important;
	font-size: 13px !important;
	margin-bottom: 6px !important;
	color: var(--mb-text, #0A1330) !important;
}

.mb-sublabel {
	font-size: 12px !important;
	color: var(--mb-muted, #5B6478) !important;
	margin-bottom: 4px !important;
}

.mb-input {
	display: block !important;
	width: 100% !important;
	padding: 11px 14px !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	border-radius: 10px !important;
	background: #fff !important;
	font-size: 14px !important;
	color: var(--mb-text, #0A1330) !important;
	margin-bottom: 8px !important;
}

.mb-input:focus {
	outline: none !important;
	border-color: var(--mb-primary, #0B1A4D) !important;
	box-shadow: 0 0 0 3px rgba(33, 62, 250, 0.15) !important;
}

.mb-field-row {
	display: flex !important;
	gap: 10px !important;
	align-items: flex-start !important;
}

.mb-field-row .mb-input {
	flex: 1 1 0 !important;
}

.mb-field-col {
	flex: 1 1 0 !important;
}

.mb-swap-btn {
	flex: 0 0 auto !important;
	width: 42px !important;
	height: 42px !important;
	color: var(--mb-primary, #0B1A4D) !important;
	border-radius: 10px !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	background: var(--mb-bg-soft, #F6F7FB) !important;
	cursor: pointer !important;
	font-size: 16px !important;
}

/* Quick-select chips: visible by default as soon as they're rendered.
   Hidden (via the `hidden` attribute set from JS) only when no preset
   locations are configured — never hidden by CSS on its own, which was
   the root cause of the "chips are not visible" bug: nothing was actually
   populating/showing this row on page load. */
.mb-chip-row {
	display: flex !important;
	flex-wrap: wrap !important;
	gap: 6px !important;
	margin-top: 2px !important;
	margin-bottom: 8px !important;
}

.mb-chip-row[hidden] {
	display: none !important;
}

.mb-chip {
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	background: var(--mb-bg-soft, #F6F7FB) !important;
	color: var(--mb-primary, #0B1A4D) !important;
	border-radius: 999px !important;
	padding: 6px 12px !important;
	font-size: 12px !important;
	cursor: pointer !important;
	font-weight: 600 !important;
}

.mb-chip:hover {
	background: var(--mb-primary, #0B1A4D) !important;
	color: #fff !important;
}

.mb-stops-block {
	margin-top: 10px !important;
	padding: 12px !important;
	background: var(--mb-bg-soft, #F6F7FB) !important;
	border-radius: 10px !important;
}

.mb-stops-block[hidden] {
	display: none !important;
}

.mb-stop-row {
	display: flex !important;
	gap: 8px !important;
	margin-bottom: 8px !important;
}

.mb-remove-stop-btn {
	flex: 0 0 auto !important;
	border: none !important;
	background: transparent !important;
	color: #b3261e !important;
	cursor: pointer !important;
	font-size: 12px !important;
	font-weight: 600 !important;
}

.mb-add-stop-btn {
	border: 1px dashed var(--mb-primary, #0B1A4D) !important;
	background: transparent !important;
	color: var(--mb-primary, #0B1A4D) !important;
	border-radius: 8px !important;
	padding: 8px 12px !important;
	cursor: pointer !important;
	font-weight: 600 !important;
	font-size: 13px !important;
}

.mb-vehicle-grid {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: 10px !important;
}

.mb-vehicle-card {
	display: flex !important;
	flex-direction: column !important;
	gap: 4px !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	background: #fff !important;
	border-radius: 14px !important;
	padding: 12px !important;
	cursor: pointer !important;
	text-align: left !important;
}

.mb-vehicle-card.is-selected {
	border-color: var(--mb-primary, #0B1A4D) !important;
	box-shadow: 0 0 0 2px rgba(33, 62, 250, 0.2) !important;
}

.mb-vehicle-price {
	font-size: 18px !important;
	font-weight: 700 !important;
	color: var(--mb-primary, #0B1A4D) !important;
}

.mb-vehicle-meta {
	font-size: 12px !important;
	color: var(--mb-muted, #5B6478) !important;
}

.mb-pet-col label {
	display: flex !important;
	align-items: center !important;
	gap: 6px !important;
	font-size: 13px !important;
}

.mb-next-btn, .mb-pay-btn {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 100% !important;
	min-height: 46px !important;
	padding: 0 18px !important;
	border: none !important;
	border-radius: 999px !important;
	background: var(--mb-primary, #0B1A4D) !important;
	color: #fff !important;
	font-weight: 700 !important;
	font-size: 14px !important;
	cursor: pointer !important;
	margin-top: 6px !important;
}

.mb-next-btn:focus-visible, .mb-pay-btn:focus-visible {
	outline: none !important;
	box-shadow: 0 0 0 3px rgba(33, 62, 250, 0.25) !important;
}

.mb-next-btn:hover, .mb-pay-btn:hover {
	background: var(--mb-primary-dark, #071230) !important;
}

.mb-summary {
	background: var(--mb-bg-soft, #F6F7FB) !important;
	border-radius: 10px !important;
	padding: 12px !important;
	font-size: 13px !important;
	margin-bottom: 10px !important;
	line-height: 1.6 !important;
}

.mb-loading, .mb-error {
	font-size: 13px !important;
	color: var(--mb-muted, #5B6478) !important;
}

.mb-error {
	color: #b3261e !important;
}

/* -------- Coupon field (contact step) -------- */

.mb-coupon-block {
	margin: 4px 0 14px !important;
}

.mb-coupon-block .mb-field-row {
	align-items: stretch !important;
}

.mb-coupon-apply-btn {
	flex: 0 0 auto !important;
	padding: 0 18px !important;
	border-radius: 999px !important;
	border: 1px solid var(--mb-primary, #0B1A4D) !important;
	background: #fff !important;
	color: var(--mb-primary, #0B1A4D) !important;
	font-weight: 600 !important;
	cursor: pointer !important;
}

.mb-coupon-apply-btn:hover {
	background: var(--mb-bg-soft, #F6F7FB) !important;
}

.mb-coupon-apply-btn:disabled {
	opacity: 0.6 !important;
	cursor: default !important;
}

.mb-coupon-status {
	font-size: 13px !important;
	margin: 6px 0 0 !important;
}

.mb-logged-in-as {
	font-size: 13px !important;
	margin: -4px 0 12px !important;
	color: var(--mb-muted, #5B6478) !important;
	background: var(--mb-bg-soft, #F8F6EF) !important;
	border: 1px solid var(--mb-border, #E5E1D2) !important;
	border-radius: 8px !important;
	padding: 8px 12px !important;
}

.mb-logged-in-as[hidden],
.mb-contact-fields[hidden] {
	display: none !important;
}

.mb-coupon-status--ok {
	color: var(--mb-primary-dark, #071230) !important;
}

.mb-coupon-status--error {
	color: #b3261e !important;
}

.mb-summary-coupon {
	color: var(--mb-primary-dark, #071230) !important;
}

.mb-summary-total {
	display: inline-block !important;
	margin-top: 4px !important;
}

/* -------- Payment modal -------- */

.mb-modal-overlay {
	position: fixed !important;
	inset: 0 !important;
	background: rgba(0, 0, 0, 0.5) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	z-index: 100000 !important;
	padding: 16px !important;
}

.mb-modal-overlay[hidden] {
	display: none !important;
}

.mb-modal {
	position: relative !important;
	background: #fff !important;
	border-radius: 20px !important;
	padding: 52px 24px 24px !important;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.25) !important;
	max-width: 420px !important;
	width: 100% !important;
	max-height: 90vh !important;
	overflow-y: auto !important;
	font-family: inherit !important;
}

.mb-modal-close {
	position: absolute !important;
	top: 12px !important;
	right: 12px !important;
	width: 32px !important;
	height: 32px !important;
	padding: 0 !important;
	border: none !important;
	border-radius: 50% !important;
	background: var(--mb-bg-soft, #F6F7FB) !important;
	font-size: 20px !important;
	line-height: 1 !important;
	cursor: pointer !important;
	color: var(--mb-muted, #5B6478) !important;
}

.mb-modal-close:hover {
	background: var(--mb-border, #E3E6F0) !important;
	color: var(--mb-text, #0A1330) !important;
}

.mb-modal-panel h3 {
	font-size: 17px !important;
	font-weight: 700 !important;
	color: var(--mb-primary, #0B1A4D) !important;
	margin: 0 0 14px !important;
	line-height: 1.3 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
}

.mb-tabs {
	display: flex !important;
	gap: 6px !important;
	margin-bottom: 14px !important;
}

.mb-tab-btn {
	flex: 1 1 0 !important;
	padding: 8px !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	background: #fff !important;
	border-radius: 999px !important;
	cursor: pointer !important;
	font-size: 13px !important;
	font-weight: 600 !important;
}

.mb-tab-btn.is-active {
	background: var(--mb-primary, #0B1A4D) !important;
	color: #fff !important;
	border-color: var(--mb-primary, #0B1A4D) !important;
}

.mb-auth-tab-panel[hidden] {
	display: none !important;
}

#mb-payment-element {
	margin-bottom: 14px !important;
}

.mb-payment-method-grid {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: 10px !important;
	margin: 14px 0 !important;
}

.mb-payment-method-btn {
	display: flex !important;
	flex-direction: column !important;
	align-items: center !important;
	gap: 4px !important;
	padding: 18px 12px !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	background: #fff !important;
	border-radius: 14px !important;
	cursor: pointer !important;
	text-align: center !important;
	transition: border-color 0.15s ease, background 0.15s ease !important;
}

.mb-payment-method-btn:hover,
.mb-payment-method-btn:focus-visible {
	border-color: var(--mb-primary, #0B1A4D) !important;
	background: var(--mb-bg-soft, #F6F7FB) !important;
}

.mb-payment-method-btn:disabled {
	opacity: 0.6 !important;
	cursor: not-allowed !important;
}

.mb-payment-method-icon {
	font-size: 26px !important;
	line-height: 1 !important;
}

.mb-payment-method-btn strong {
	font-size: 14px !important;
	color: var(--mb-text, #0A1330) !important;
}

.mb-payment-method-desc {
	font-size: 11px !important;
	color: var(--mb-muted, #5B6478) !important;
	line-height: 1.4 !important;
}

/* -------- Entry step --------
   The three primary actions a customer can take here, replacing the old
   two-level Rides/Deliveries + Book Now/Schedule toggle: a single tap
   decides both bookingKind and whenMode and jumps to the service step. */

.mb-entry-step[hidden],
.mb-package-when-step[hidden] {
	display: none !important;
}

.mb-entry-grid {
	display: flex !important;
	flex-direction: column !important;
	gap: 10px !important;
}

.mb-entry-card {
	display: flex !important;
	align-items: center !important;
	gap: 14px !important;
	width: 100% !important;
	padding: 14px !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	border-radius: 16px !important;
	background: var(--mb-bg, #fff) !important;
	cursor: pointer !important;
	text-align: left !important;
	transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease !important;
}

.mb-entry-card:hover,
.mb-entry-card:focus-visible {
	border-color: var(--mb-primary, #0B1A4D) !important;
	box-shadow: 0 6px 18px rgba(33, 62, 250, 0.14) !important;
	transform: translateY(-1px) !important;
	outline: none !important;
}

.mb-entry-icon-tile {
	position: relative !important;
	flex: 0 0 auto !important;
	width: 48px !important;
	height: 48px !important;
	border-radius: 13px !important;
	background: var(--mb-primary, #0B1A4D) !important;
	color: #fff !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
}

.mb-entry-icon-tile svg {
	width: 26px !important;
	height: 26px !important;
}

.mb-entry-badge {
	position: absolute !important;
	bottom: -5px !important;
	right: -5px !important;
	width: 19px !important;
	height: 19px !important;
	border-radius: 50% !important;
	background: #fff !important;
	border: 2px solid var(--mb-primary, #0B1A4D) !important;
	color: var(--mb-primary, #0B1A4D) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
}

.mb-entry-badge svg {
	width: 10px !important;
	height: 10px !important;
}

.mb-entry-copy {
	display: flex !important;
	flex-direction: column !important;
	gap: 2px !important;
	min-width: 0 !important;
}

.mb-entry-title {
	font-size: 15px !important;
	font-weight: 700 !important;
	color: var(--mb-text, #0A1330) !important;
	line-height: 1.3 !important;
}

.mb-entry-desc {
	font-size: 12px !important;
	color: var(--mb-muted, #5B6478) !important;
	line-height: 1.4 !important;
}

.mb-entry-chevron {
	margin-left: auto !important;
	flex: 0 0 auto !important;
	font-size: 22px !important;
	color: var(--mb-muted, #5B6478) !important;
}

.mb-entry-back {
	display: inline-flex !important;
	align-items: center !important;
	gap: 4px !important;
	border: none !important;
	background: transparent !important;
	color: var(--mb-primary, #0B1A4D) !important;
	font-weight: 600 !important;
	font-size: 13px !important;
	cursor: pointer !important;
	padding: 0 !important;
	margin-bottom: 12px !important;
}

.mb-entry-back:hover {
	text-decoration: underline !important;
}

.mb-entry-subgrid {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: 10px !important;
	margin-top: 10px !important;
}

.mb-entry-subcard {
	display: flex !important;
	flex-direction: column !important;
	align-items: center !important;
	text-align: center !important;
	gap: 4px !important;
	padding: 18px 10px !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	border-radius: 14px !important;
	background: var(--mb-bg, #fff) !important;
	cursor: pointer !important;
	transition: border-color .15s ease, background .15s ease !important;
}

.mb-entry-subcard:hover,
.mb-entry-subcard:focus-visible {
	border-color: var(--mb-primary, #0B1A4D) !important;
	background: var(--mb-bg-soft, #F6F7FB) !important;
	outline: none !important;
}

/* -------- Service chooser --------
   One pill per service of the chosen kind (rides or package), then One Way /
   Round Trip (rides only). Which kind, and whether it's ASAP or scheduled,
   was already decided on the entry step above. */

.mb-service-step .mb-toggle-row {
	margin-bottom: 10px !important;
}

.mb-service-step .mb-toggle-row:last-child {
	margin-bottom: 0 !important;
}

.mb-kind-row[hidden],
.mb-service-block[hidden],
.mb-service-hint[hidden] {
	display: none !important;
}

.mb-service-block {
	margin: 4px 0 12px !important;
}

.mb-svc-pills {
	display: flex !important;
	flex-wrap: wrap !important;
	gap: 6px !important;
}

.mb-svc-pill {
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	background: var(--mb-bg, #fff) !important;
	color: var(--mb-text, #0A1330) !important;
	border-radius: 999px !important;
	padding: 8px 13px !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	cursor: pointer !important;
	white-space: normal !important;
	text-align: left !important;
	transition: background .15s ease, border-color .15s ease, color .15s ease !important;
}

.mb-svc-pill:hover {
	border-color: var(--mb-primary, #0B1A4D) !important;
	background: var(--mb-bg-soft, #F6F7FB) !important;
}

.mb-svc-pill:focus-visible {
	outline: none !important;
	box-shadow: 0 0 0 3px rgba(33, 62, 250, 0.2) !important;
}

.mb-svc-pill.is-selected {
	background: var(--mb-primary, #0B1A4D) !important;
	border-color: var(--mb-primary, #0B1A4D) !important;
	color: #fff !important;
}

.mb-service-hint {
	margin: 8px 0 0 !important;
}

.mb-summary-service {
	display: inline-block !important;
	font-size: 11px !important;
	font-weight: 700 !important;
	text-transform: uppercase !important;
	letter-spacing: .04em !important;
	color: var(--mb-primary, #0B1A4D) !important;
	margin-bottom: 2px !important;
}

/* -------- Address suggestions (Places API New) -------- */

.mb-field-row,
.mb-field-wrap {
	position: relative !important;
}

.mb-suggest {
	position: absolute !important;
	z-index: 30 !important;
	left: 0 !important;
	right: 0 !important;
	top: 100% !important;
	margin-top: -4px !important;
	background: #fff !important;
	border: 1px solid var(--mb-border, #E3E6F0) !important;
	border-radius: 12px !important;
	box-shadow: 0 14px 34px rgba(10, 19, 48, 0.14) !important;
	padding: 6px !important;
	max-height: 280px !important;
	overflow-y: auto !important;
}

.mb-suggest[hidden] {
	display: none !important;
}

.mb-field-row .mb-suggest {
	right: 52px !important;
}

.mb-suggest-item {
	display: flex !important;
	flex-direction: column !important;
	align-items: flex-start !important;
	gap: 1px !important;
	width: 100% !important;
	padding: 8px 10px !important;
	border: none !important;
	border-radius: 8px !important;
	background: transparent !important;
	text-align: left !important;
	white-space: normal !important;
	cursor: pointer !important;
	line-height: 1.35 !important;
}

.mb-suggest-item strong {
	font-size: 13px !important;
	font-weight: 600 !important;
	color: var(--mb-text, #0A1330) !important;
}

.mb-suggest-item span {
	font-size: 12px !important;
	color: var(--mb-muted, #5B6478) !important;
}

.mb-suggest-item:hover,
.mb-suggest-item.is-active {
	background: var(--mb-bg-soft, #F6F7FB) !important;
}

/* -------- Route status under drop-off -------- */

.mb-route-status {
	display: flex !important;
	align-items: center !important;
	flex-wrap: wrap !important;
	gap: 8px !important;
	margin: 4px 0 8px !important;
	padding: 9px 12px !important;
	border-radius: 10px !important;
	font-size: 13px !important;
	line-height: 1.45 !important;
}

.mb-route-status[hidden] {
	display: none !important;
}

.mb-route-status--loading {
	background: var(--mb-bg-soft, #F6F7FB) !important;
	color: var(--mb-muted, #5B6478) !important;
}

.mb-route-status--error {
	background: #FDECEC !important;
	border: 1px solid #F5C2C0 !important;
	color: #8A1F1A !important;
}

.mb-route-retry {
	padding: 5px 12px !important;
	border: 1px solid #8A1F1A !important;
	border-radius: 999px !important;
	background: #fff !important;
	color: #8A1F1A !important;
	font-size: 12px !important;
	font-weight: 700 !important;
	cursor: pointer !important;
}

/* -------- Package delivery mode -------- */

#mb-trip-type-row[hidden],
#mb-extras-ride[hidden],
#mb-extras-package[hidden] {
	display: none !important;
}

select.mb-input {
	-webkit-appearance: none !important;
	appearance: none !important;
	padding-right: 36px !important;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%235C6660' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
	background-repeat: no-repeat !important;
	background-position: right 12px center !important;
	background-size: 12px 8px !important;
	cursor: pointer !important;
}

.mb-hint {
	font-size: 12px !important;
	line-height: 1.5 !important;
	color: var(--mb-muted, #5B6478) !important;
	margin: 2px 0 10px !important;
}

.mb-input.is-invalid {
	border-color: #b3261e !important;
	box-shadow: 0 0 0 3px rgba(179, 38, 30, 0.15) !important;
}

/* -------- Responsive: tablet / mobile -------- */

@media (max-width: 600px) {
	.mb-widget {
		padding: 18px !important;
		border-radius: 10px !important;
	}

	.mb-vehicle-grid {
		grid-template-columns: 1fr !important;
	}

	.mb-toggle-btn, .mb-tab-btn {
		font-size: 13px !important;
		padding: 10px 8px !important;
	}

	.mb-payment-method-grid {
		grid-template-columns: 1fr !important;
	}
}

@media (max-width: 420px) {
	/* Two-column field rows (date/time, phone/email) stack; the pickup row
	   keeps its swap button beside the input — a full-width swap bar reads
	   like a primary action, which it isn't. */
	.mb-field-row {
		flex-wrap: wrap !important;
	}

	.mb-field-row .mb-field-col,
	.mb-field-row > .mb-input:not(#mb-pickup) {
		flex: 1 1 100% !important;
	}

	.mb-field-row > #mb-pickup {
		flex: 1 1 0 !important;
		min-width: 0 !important;
	}

	.mb-swap-btn {
		width: 42px !important;
		height: 42px !important;
	}

	.mb-stop-row {
		flex-wrap: wrap !important;
	}

	.mb-modal {
		padding: 50px 18px 18px !important;
		max-height: 100vh !important;
		border-radius: 10px !important;
	}

	.mb-modal-overlay {
		padding: 0 !important;
	}

	.mb-tabs {
		flex-wrap: wrap !important;
	}
}

/* Larger touch targets on touch devices so buttons/chips/inputs are easy to tap. */
@media (pointer: coarse) {
	.mb-chip, .mb-svc-pill, .mb-toggle-btn, .mb-tab-btn, .mb-add-stop-btn, .mb-swap-btn {
		min-height: 38px !important;
	}

	.mb-entry-card {
		min-height: 64px !important;
	}

	.mb-entry-subcard {
		min-height: 64px !important;
	}

	.mb-next-btn, .mb-pay-btn {
		min-height: 46px !important;
	}
}
