/**
 * Price-lock countdown widget styling.
 *
 * Minimal, theme-agnostic styling — we aim to blend into whatever
 * theme the dealer is running. Colors use dark neutrals so the
 * widget stays legible on light and dark checkout templates.
 */

.gc-price-lock-row td {
	background: #f7f7f7;
	border-top: 1px solid #e0e0e0;
}

.gc-price-lock-countdown {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	font-size: 0.9em;
	gap: 0.5em;
	padding: 0.5em 0;
}

.gc-price-lock-countdown__label {
	color: #555;
}

.gc-price-lock-countdown__timer {
	background: #e8f5e9;
	border-radius: 3px;
	color: #1b5e20;
	font-family: ui-monospace, Menlo, Monaco, Consolas, monospace;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	padding: 0.15em 0.5em;
}

.gc-price-lock-countdown.is-warning .gc-price-lock-countdown__timer {
	background: #fff3e0;
	color: #e65100;
}

.gc-price-lock-countdown.is-expired .gc-price-lock-countdown__timer {
	background: #ffebee;
	color: #b71c1c;
}

.gc-price-lock-countdown.is-expired .gc-price-lock-countdown__expired {
	color: #b71c1c;
}

/**
 * Reconfirmation block: renders above Place Order when the server
 * has flagged the lock as awaiting acknowledgement. Uses a warm
 * border + padding to visually separate it from the rest of the
 * review table.
 */
.gc-price-lock-reconfirm {
	background: #fff8e1;
	border: 1px solid #ffe082;
	border-radius: 4px;
	margin: 0.75em 0;
	padding: 0.75em 1em;
}

.gc-price-lock-reconfirm__label {
	align-items: flex-start;
	color: #3e2723;
	cursor: pointer;
	display: flex;
	font-size: 0.95em;
	gap: 0.5em;
	line-height: 1.4;
}

.gc-price-lock-reconfirm__checkbox {
	flex-shrink: 0;
	margin-top: 0.15em;
}

/**
 * Volume-pricing grid — structural guard only.
 *
 * The theme still owns the look (colour, borders, typography). The plugin
 * guarantees just one thing: the grid renders as a real, legible table on
 * every storefront. Themes commonly ship a responsive `table { display:
 * block }` reset to reflow content tables on narrow viewports, which
 * collapses this data grid into run-together text (headers and prices with
 * no columns). So we pin the table-layout display roles plus a little cell
 * padding for legibility — nothing aesthetic.
 *
 * Everything is scoped under `.gc-volume-pricing-wrap` so no other table is
 * touched and specificity beats bare-element theme resets without
 * `!important`. A wide matrix scrolls horizontally inside the wrapper.
 */
.gc-volume-pricing-wrap {
	max-width: 100%;
	margin: 1em 0;
	overflow-x: auto;
}

.gc-volume-pricing-wrap table.gc-volume-pricing {
	display: table;
	margin: 0;
}

.gc-volume-pricing-wrap table.gc-volume-pricing thead {
	display: table-header-group;
}

.gc-volume-pricing-wrap table.gc-volume-pricing tbody {
	display: table-row-group;
}

.gc-volume-pricing-wrap table.gc-volume-pricing tr {
	display: table-row;
}

.gc-volume-pricing-wrap table.gc-volume-pricing th,
.gc-volume-pricing-wrap table.gc-volume-pricing td {
	display: table-cell;
	padding: 0.4em 0.75em;
	white-space: nowrap;
}

/**
 * Dated "premium as of Jul 26" label — structural guard only.
 *
 * The theme still owns the look (colour, size, weight). The plugin
 * guarantees just one thing: the label reads as its own line rather than
 * running into the price.
 *
 * It has to be a `span`, not a block element. This markup is appended to
 * WooCommerce's price HTML via `woocommerce_get_price_html`, and themes
 * render that inside `<p class="price">` — a `div` there is invalid and
 * browsers close the paragraph early, which breaks the price's own layout.
 * So the element stays phrasing content and takes its block behaviour from
 * here.
 *
 * Without this rule the span is inline and the page reads
 * "$51.95premium as of Aug 10" with no separator at all. That is not a
 * cosmetic shortfall: a price welded to a date is misread as part of the
 * number. The label exists to say how old the premium behind the price is,
 * and an unreadable label surfaces nothing.
 *
 * `font-size` is the one non-structural property here, and it earns its
 * place: at the price's own size this reads as a second price. Left in
 * relative units so a theme scaling its price scales this with it.
 */
.gc-premium-as-of {
	display: block;
	margin-top: 0.25em;
	font-size: 0.8em;
	line-height: 1.4;
}

/**
 * "Available to order — contact us" notice — structural guard only.
 *
 * The theme still owns the look (colour, size, weight). The plugin guarantees
 * one thing: the notice reads as its own line rather than running into the
 * price.
 *
 * Same constraint, and the same reason, as `premium-staleness.css`: this
 * markup is appended to WooCommerce's price HTML via
 * `woocommerce_get_price_html`, and themes render that inside
 * `<p class="price">`, where a `div` is invalid and browsers close the
 * paragraph early — which breaks the price's own layout. So the element stays
 * phrasing content and takes its block behaviour from here.
 *
 * Without this rule the page reads "$1,299.00Available to order — contact us
 * to arrange this item." with no separator. For this notice that is worse than
 * cosmetic: it is the ONLY thing standing where the Add-to-Cart button used to
 * be (`Products\EnquiryOnlyGate` makes the product non-purchasable, so
 * WooCommerce's own template renders no control at all), so a customer who
 * cannot pick it out of the price is left on a product page with no way to buy
 * and no visible explanation.
 *
 * `font-size` is deliberately NOT reduced here, for the same reason. The
 * staleness label is an aside about a price; this is the call to action.
 */
.gc-enquiry-only {
	display: block;
	margin-top: 0.5em;
	line-height: 1.4;
}

/**
 * Freight delivery note — structural guard only.
 *
 * The theme still owns the look (colour, size, weight). The plugin guarantees
 * one thing: the delivery expectation reads as its own line under the shipping
 * option rather than running into its price.
 *
 * Same constraint, and the same reason, as `enquiry-notice.css`. The markup is
 * echoed on `woocommerce_after_shipping_rate`, which fires INSIDE the cart and
 * checkout shipping list item, immediately after the rate's own
 * `<label>…$250.00</label>`. A `div` there is not invalid the way it is inside
 * `<p class="price">`, but it is still phrasing content in a phrasing context,
 * and themes that lay the shipping row out with flex would stretch a block
 * child across the row. So the element stays a `span` and takes its block
 * behaviour from here.
 *
 * Without this rule the checkout reads "Rhino freight — curbside delivery
 * $250.00Curbside delivery on a scheduled four-hour appointment." with no
 * separator. That matters more than it looks: this sentence is the whole of
 * AC 7 — it is the only place a customer learns, before paying, that a
 * 700-pound safe arrives on a truck by appointment rather than in a parcel,
 * and a customer who cannot pick it out of the price has not been told.
 *
 * `font-size` IS reduced here, unlike the enquiry notice. That notice stands in
 * for an Add-to-Cart button and is the call to action; this one is an aside
 * about a shipping option the customer has already been given, so it reads as
 * secondary to the rate it explains.
 */
.gc-freight-note {
	display: block;
	margin-top: 0.25em;
	font-size: 0.9em;
	line-height: 1.4;
}

