/* Request a Quote: storefront. Inherits the theme's buttons, tables and form fields; adds only
   layout, states and the phone layout (safe at 390px). Override with the "Custom CSS" setting. */

.sirfq-add-to-quote,
.sirfq-loop-quote {
	margin-left: 0.5em;
}
.woocommerce ul.products li.product .sirfq-loop-quote,
.wc-block-grid__product .sirfq-loop-quote,
.wp-block-button .sirfq-loop-quote {
	margin: 0.5em 0 0;
}
/* Astra gives Add to Cart its own smaller padding: the quote button beside it matches. */
.wp-theme-astra div.product form.cart .button.sirfq-add-to-quote {
	padding: 10px 20px;
}
.sirfq-quote-only-form {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
	align-items: center;
}
.sirfq-quote-only-form .sirfq-add-to-quote {
	margin-left: 0;
}
.sirfq-add-result,
.sirfq-basket-result,
.sirfq-form-result {
	display: block;
	margin: 0.5em 0;
	font-size: 0.925em;
}
/* Themes float the cart buttons (WooCommerce's own CSS does): the add result goes on its own
   line below them, with room. Padding, not margin: clearance swallows a top margin. */
.sirfq-add-result {
	clear: both;
	margin-top: 0;
	padding-top: 0.75em;
}
.sirfq-quote-only-form .sirfq-add-result {
	flex-basis: 100%;
	margin: 0;
	padding-top: 0.25em;
}
.sirfq-add-result:empty,
.sirfq-basket-result:empty,
.sirfq-form-result:empty {
	display: none;
}
.sirfq-err {
	color: #b42318;
}
.sirfq-ok {
	color: inherit;
}
.sirfq-view-link {
	font-weight: 600;
	white-space: nowrap;
}
.sirfq-add-to-quote.loading,
.sirfq-loop-quote.loading,
.sirfq-submit.loading {
	opacity: 0.6;
	cursor: progress;
}

/* A rental's booking bar (the rentals plugin's pricing card layout): Request a quote sits beside
   Reserve, in its shape, and the add result takes a row of its own under them. */
.sib-layout-modern .sib-summary .sib-summary-actions > button.sirfq-add-to-quote {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	float: none;
	height: 40px;
	min-width: max-content;
	max-width: 100%;
	margin: 0;
	line-height: 40px;
	white-space: nowrap;
}
/* Its colours: the booking UI's own (the Calendar Styler colour), as an outline beside the filled
   Reserve. A theme or site rule that resets the bar's other buttons (transparent, no padding,
   inherited text) left it white on the light bar on the Bold style (filming triage W28), hence
   !important. */
.sib-layout-modern .sib-summary .sib-summary-actions > button.sirfq-add-to-quote {
	background-color: var(--sib-card, #fff) !important;
	color: var(--sib-accent, #10243d) !important;
	border: 1.5px solid var(--sib-accent, #10243d) !important;
	border-radius: var(--sib-radius, 4px) !important;
	padding: 0 20px !important;
}
.sib-layout-modern .sib-summary .sib-summary-actions > button.sirfq-add-to-quote:hover,
.sib-layout-modern .sib-summary .sib-summary-actions > button.sirfq-add-to-quote:focus-visible {
	background-color: rgba(var(--sib-accent-rgb, 16, 36, 61), 0.08) !important;
}
.sib-layout-modern .sib-summary .sib-summary-actions.sirfq-bar-two {
	flex: 1 1 100%;
}
.sib-layout-modern .sib-summary .sib-summary-actions > .sirfq-add-result {
	flex: 1 1 100%;
	margin: 0;
	padding: 0;
	text-align: end;
}
@media (max-width: 640px) {
	.sib-layout-modern .sib-summary .sib-summary-actions > button.sirfq-add-to-quote {
		flex: 1 1 100%;
		width: auto;
		margin: 0;
		padding: 0 16px !important;
	}
}

/* Basket */
.sirfq-basket-wrap.sirfq-busy {
	opacity: 0.6;
	pointer-events: none;
}
.sirfq-lines {
	width: 100%;
}
.sirfq-lines .product-quantity input.qty {
	width: 4.5em;
}
.sirfq-lines .sirfq-requested-price input {
	width: 7em;
	max-width: 100%;
}
.sirfq-lines .sirfq-line-rows {
	margin: 0.35em 0 0;
	font-size: 0.9em;
}
.sirfq-lines .sirfq-line-rows dt {
	float: left;
	clear: left;
	margin-right: 0.35em;
	font-weight: 600;
}
.sirfq-lines .sirfq-line-rows dd {
	margin: 0;
}
.sirfq-line-unavailable .product-name > a {
	opacity: 0.75;
}
.sirfq-line-edit {
	display: inline-block;
	margin-top: 0.35em;
	font-size: 0.9em;
}
.sirfq-edit-notice__back {
	margin-left: 0.5em;
}
.sirfq-line-warning {
	margin: 0.35em 0 0;
	color: #b42318;
	font-size: 0.9em;
}
.sirfq-note {
	display: block;
	margin-top: 0.5em;
}
.sirfq-note span {
	display: block;
	font-size: 0.85em;
}
.sirfq-note textarea {
	width: 100%;
	min-height: 2.6em;
}
/* The basket's remove (×) and the popup's close button: themes colour buttons white on their
   own button background, which these two do not have. */
.sirfq-remove.remove,
.sirfq-remove.remove:hover,
.sirfq-remove.remove:focus,
.sirfq-popup__close,
.sirfq-popup__close:hover,
.sirfq-popup__close:focus {
	color: inherit;
	background: none;
	box-shadow: none;
}
.sirfq-remove.remove:hover,
.sirfq-popup__close:hover {
	color: #b42318;
}
.sirfq-remove.remove {
	border: 0;
	background: none;
	font-size: 1.5em;
	line-height: 1;
	cursor: pointer;
	padding: 0 0.25em;
}
.sirfq-basket-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
	justify-content: flex-end;
	margin: 1em 0 2em;
}

/* Request form */
.sirfq-request-form .sirfq-fields::after {
	content: "";
	display: table;
	clear: both;
}
.sirfq-request-form textarea {
	width: 100%;
}
/* selects (country, state, a custom field's choice) are as wide as the text fields */
.sirfq-request-form .form-row select {
	display: block;
	width: 100%;
	max-width: 100%;
}
/* what the request needs: WooCommerce's notice group at the top, the fields concerned marked */
.sirfq-form-notices:empty {
	display: none;
}
.sirfq-form-notices:focus {
	outline: none;
}
.sirfq-form-notices .woocommerce-error a {
	color: inherit;
	text-decoration: underline;
}
.sirfq-request-form .form-row.woocommerce-invalid label {
	color: #b42318;
}
.sirfq-request-form .form-row.woocommerce-invalid input.input-text,
.sirfq-request-form .form-row.woocommerce-invalid select,
.sirfq-request-form .form-row.woocommerce-invalid textarea {
	border-color: #b42318;
}
/* "Use same address for billing": the box and its words on one line; ticked, the billing address hides */
.sirfq-request-form .form-row.sirfq-same-address label {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	cursor: pointer;
}
.sirfq-request-form .form-row.sirfq-same-address input[type="checkbox"] {
	flex: none;
	margin: 0;
}
.sirfq-request-form .sirfq-billing-address[hidden] {
	display: none !important;
}
.sirfq-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
.sirfq-thanks {
	margin: 1em 0;
}

/* Mini basket */
.sirfq-mini {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	text-decoration: none;
}
.sirfq-mini-count {
	display: inline-block;
	min-width: 1.6em;
	padding: 0 0.45em;
	border-radius: 1em;
	text-align: center;
	font-size: 0.8em;
	line-height: 1.6em;
}
.sirfq-mini-count {
	background: #222;
	color: #fff;
}
.sirfq-mini-count[data-count="0"] {
	opacity: 0.55;
}

/*
 * Mini basket, icon look (headers): a quote sheet in the header's text colour, sized from the
 * header's font size like WooCommerce's Mini-Cart icon (Astra: its cart icon size, set inline).
 * The sheet is drawn on the Mini-Cart icon's 32-unit grid (as tall as the cart, 2-unit strokes) in a
 * box of the same 1.5em, so the two read as a pair.
 * The badge takes the theme's accent (Astra), else the block theme's contrast colour; hidden at 0.
 * Change the size or colours with --sirfq-mini-icon-size, --sirfq-badge-bg and --sirfq-badge-color.
 */
.sirfq-mini.sirfq-mini--icon {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0;
	box-sizing: border-box;
	min-width: 40px;
	min-height: 40px;
	padding: 4px;
	color: inherit;
	line-height: 1;
	text-decoration: none;
	vertical-align: middle;
}
.sirfq-mini.sirfq-mini--icon:hover,
.sirfq-mini.sirfq-mini--icon:focus {
	color: var(--sirfq-mini-hover-color, inherit);
	text-decoration: none;
}
.sirfq-mini.sirfq-mini--icon:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
	border-radius: 4px;
}
.sirfq-mini--icon .sirfq-mini-glyph {
	position: relative;
	display: block;
	flex: none;
	width: var(--sirfq-mini-icon-size, 1.5em);
	height: var(--sirfq-mini-icon-size, 1.5em);
}
.sirfq-mini--icon .sirfq-mini-icon {
	display: block;
	width: 100%;
	height: 100%;
}
.sirfq-mini--icon .sirfq-mini-count {
	position: absolute;
	top: 6%;
	right: 4%;
	transform: translate(50%, -35%);
	box-sizing: border-box;
	width: max-content;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: 9px;
	white-space: nowrap;
	word-break: normal;
	overflow-wrap: normal;
	background: var(--sirfq-badge-bg, var(--ast-global-color-0, var(--wp--preset--color--contrast, #222)));
	color: var(--sirfq-badge-color, var(--wp--preset--color--base, #fff));
	font-size: 11px;
	font-weight: 700;
	line-height: 18px;
	text-align: center;
	opacity: 1;
}
.sirfq-mini--icon .sirfq-mini-count[data-count="0"] {
	display: none;
}
.sirfq-header-icon {
	display: flex;
	align-items: center;
}

/* Astra: inside the cart element, before the cart (desktop and mobile header) */
.ast-header-woo-cart .sirfq-header-icon--astra {
	margin-right: 0.35em;
}
.ast-header-woo-cart .sirfq-mini--icon {
	--sirfq-mini-icon-size: 1.6em; /* Astra's cart icon is 1em; its "Icon Size" setting overrides this inline */
	--sirfq-mini-hover-color: var(--ast-global-color-0, inherit);
}

/* Storefront (wide screens: left of the header cart; phones: the handheld bar) */
.site-header .sirfq-header-icon--storefront {
	display: none;
}
@media (min-width: 768px) {
	.woocommerce-active .site-header .sirfq-header-icon--storefront {
		display: flex;
		float: right;
		margin: 0 0.5em 0 0;
		padding: calc(1.618em - 10px) 0;
	}
	.woocommerce-active .site-header .storefront-primary-navigation:has(.sirfq-header-icon--storefront) .main-navigation {
		width: calc(73.9130434783% - 56px);
	}
}
.storefront-handheld-footer-bar ul li.sirfq-quote > a.sirfq-mini--icon {
	display: flex;
	width: 100%;
	height: 4.235801032em;
	text-indent: 0;
}

/* Phones */
@media (max-width: 600px) {
	.sirfq-add-to-quote,
	.sirfq-loop-quote {
		margin-left: 0;
		margin-top: 0.5em;
	}
	form.cart .sirfq-add-to-quote {
		width: 100%;
	}
	.sirfq-lines .sirfq-requested-price input,
	.sirfq-lines .product-quantity input.qty {
		width: 100%;
		max-width: 9em;
	}
	.sirfq-request-form .form-row-first,
	.sirfq-request-form .form-row-last {
		float: none;
		width: 100%;
	}
	.sirfq-basket-actions {
		justify-content: stretch;
	}
	.sirfq-basket-actions .button {
		flex: 1 1 auto;
	}
}

/* Phones and small tablets: the plugin's tables (basket, quote, change requests) stack the way
   WooCommerce's responsive tables do. WooCommerce's own rules for shop_table_responsive apply only
   inside .woocommerce or .woocommerce-page, which a plain page holding the basket or a quote link
   does not have: there the tables kept their desktop columns and ran off the screen. */
@media (max-width: 768px) {
	.sirfq table.shop_table_responsive thead,
	.sirfq table.shop_table_responsive tbody th,
	.sirfq table.shop_table_responsive tfoot th {
		display: none;
	}
	.sirfq table.shop_table_responsive,
	.sirfq table.shop_table_responsive tbody,
	.sirfq table.shop_table_responsive tfoot,
	.sirfq table.shop_table_responsive tr,
	.sirfq table.shop_table_responsive tr td {
		display: block;
		width: 100%;
		box-sizing: border-box;
	}
	.sirfq table.shop_table_responsive tr td {
		text-align: right;
	}
	.sirfq table.shop_table_responsive tr td[data-title]::before {
		content: attr(data-title) ": ";
		font-weight: 600;
		float: left;
	}
}

/* Hide price: WooCommerce's own Add to Cart where the decision refuses it (the server refuses too).
   Only inside the product's add-to-cart form: loops are handled server-side. */
.sirfq-cart-hidden form.cart .single_add_to_cart_button:not(.sirfq-add-to-quote) {
	display: none !important;
}
.sirfq-cart-hidden form.cart .sirfq-add-to-quote {
	margin-left: 0;
}

/* Quote page and My Account › Quotes */
@media (max-width: 768px) {
	/* the account menu stacks above the content there (WooCommerce's small screen) */
	.woocommerce-MyAccount-content .sirfq-quote-wrap {
		margin-block-start: 1.5em;
	}
}
.sirfq-quote-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5em 1em;
	margin-bottom: 1em;
}
.sirfq-quote-head .sirfq-quote-number {
	margin: 0;
}
.sirfq-quote-dates {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25em 1.25em;
	width: 100%;
	margin: 0;
	font-size: 0.925em;
}
.sirfq-quote-dates dt {
	font-weight: 600;
}
.sirfq-quote-dates dd {
	margin: 0 0.75em 0 0;
}
.sirfq-pill {
	display: inline-block;
	padding: 0.15em 0.7em;
	border-radius: 1em;
	background: #eef0f2;
	color: #2c3338;
	font-size: 0.85em;
	font-weight: 600;
	white-space: nowrap;
}
.sirfq-pill-sent { background: #e5effa; color: #0b4a8b; }
.sirfq-pill-accepted,
.sirfq-pill-ordered { background: #e3f4e8; color: #17603a; }
.sirfq-pill-expired,
.sirfq-pill-rejected,
.sirfq-pill-declined,
.sirfq-pill-cancelled { background: #fbeaea; color: #8a1f1f; }
.sirfq-pill-changes_requested { background: #fdf3df; color: #7a4d00; }
.sirfq-quote-lines tfoot th {
	text-align: right;
}
.sirfq-quote-lines .sirfq-line-note {
	margin: 0.35em 0 0;
	font-size: 0.9em;
	font-style: italic;
}
.sirfq-quote-message,
.sirfq-quote-terms,
.sirfq-quote-deposit {
	margin: 1em 0;
}
.sirfq-quote-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 0.75em 1em;
	margin: 1.5em 0;
}
.sirfq-action-box {
	flex: 1 1 16em;
}
.sirfq-action-box summary {
	cursor: pointer;
	padding: 0.5em 0;
	font-weight: 600;
}
.sirfq-action-box textarea,
.sirfq-message-form textarea {
	width: 100%;
}
.sirfq-claim {
	margin: 1em 0;
}
.sirfq-messages {
	margin-top: 2em;
}
.sirfq-thread {
	list-style: none;
	margin: 0 0 1em;
	padding: 0;
}
.sirfq-msg {
	margin: 0 0 0.75em;
	padding: 0.75em 1em;
	border-radius: 6px;
	background: #f6f7f7;
}
.sirfq-msg-customer {
	background: #eef5fb;
}
.sirfq-msg-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25em 0.75em;
	margin: 0 0 0.25em;
	font-size: 0.875em;
}
.sirfq-msg-body p:last-child {
	margin-bottom: 0;
}
@media (max-width: 600px) {
	.sirfq-quote-actions {
		flex-direction: column;
		align-items: stretch;
	}
	/* in a column the boxes' 16em basis would be their height */
	.sirfq-action-box {
		flex: 0 0 auto;
	}
	.sirfq-quote-actions .sirfq-accept {
		width: 100%;
	}
}

/* Request form extras and request details (v1). */
.sirfq-custom-fields .sirfq-choices {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25em 1em;
}
.sirfq-custom-fields .sirfq-choice {
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	font-weight: normal;
}
.sirfq-field .description {
	display: block;
	margin-top: 0.25em;
	font-size: 0.9em;
	opacity: 0.8;
}
.sirfq-field--files input[type="file"] {
	display: block;
	max-width: 100%;
}
.sirfq-captcha {
	margin: 1em 0;
}
.sirfq-captcha-note {
	font-size: 0.85em;
	opacity: 0.8;
}
.sirfq-request-details {
	margin-top: 2em;
}
.sirfq-answers th {
	width: 35%;
	text-align: left;
	vertical-align: top;
}
.sirfq-files {
	margin: 0.75em 0 0;
	padding-left: 1.25em;
}
.sirfq-file-size {
	font-size: 0.9em;
	opacity: 0.75;
}

/* Request a quote for this cart (v1). */
.sirfq-cart-quote {
	margin: 0.75em 0 0;
}
.sirfq-cart-quote-button {
	display: block;
	width: 100%;
	text-align: center;
}
.sirfq-cart-quote-wrap {
	max-width: 100%;
	margin: 1em 0 2em;
	display: flex;
	justify-content: flex-end;
}
.sirfq-cart-quote-wrap .sirfq-cart-quote {
	width: 100%;
	max-width: 360px;
}

/* Negotiation: per-item change requests, editing a request, what changed */
.sirfq-change-request,
.sirfq-edit-request {
	flex-basis: 100%;
}
.sirfq-asks input[type="number"],
.sirfq-edit-lines input[type="number"] {
	width: 5em;
}
.sirfq-asks .sirfq-ask-price,
.sirfq-edit-lines input[inputmode="decimal"] {
	width: 7em;
}
.sirfq-ask-note,
.sirfq-edit-lines input[type="text"]:not([inputmode]) {
	display: block;
	width: 100%;
	margin-top: 0.35em;
}
.sirfq-quote-changes {
	margin: 1em 0;
}
.sirfq-quote-changes summary {
	cursor: pointer;
	font-weight: 600;
}
.sirfq-changes {
	margin: 0.5em 0 0 1.2em;
}
.sirfq-change--removed strong {
	color: #b32d2e;
}
.sirfq-change--added strong {
	color: #1a7f37;
}

/* Quick-quote popup */
.sirfq-popup {
	width: min(36rem, calc(100vw - 2rem));
	max-height: calc(100vh - 2rem);
	padding: 1.5rem;
	border: 0;
	border-radius: 6px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25);
}
.sirfq-popup::backdrop {
	background: rgba(0, 0, 0, 0.45);
}
.sirfq-popup h2 {
	margin-top: 0;
	padding-right: 2rem;
}
.sirfq-popup__close {
	position: absolute;
	top: 0.75rem;
	right: 0.75rem;
	padding: 0.25rem 0.6rem;
	border: 0;
	background: transparent;
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
}
.sirfq-popup__product {
	font-weight: 600;
}
.sirfq-popup .form-row-first,
.sirfq-popup .form-row-last {
	width: 100%;
	float: none;
}
.sirfq-popup textarea {
	width: 100%;
}

/* Bundle and composite pages whose price is hidden: the kits' running totals and summary prices
   (Includes\Storefront\KitPrices zeroes the numbers behind them). */
.sirfq-prices-hidden .bundle_price,
.sirfq-prices-hidden .composite_price,
.sirfq-prices-hidden .summary_element_price,
.sirfq-prices-hidden .bundled_item_cart_details .price:empty,
.sirfq-prices-hidden .composited_product_details_wrapper .price:empty {
	display: none !important;
}
