/* Listeo Booking Plus — service constraints frontend styles. */

.lbp-svc-blocked,
.lbp-svc-blocked:hover {
	opacity: 0.6;
	cursor: not-allowed;
}

/* -------------------------------------------------------------------
 * Frontend pricing editor — LBP per-service extras (Duration,
 * Individual service) live on a dedicated second row inside the same
 * `<td>` so the first row (incl. delete `.fm-close` button) stays
 * uncluttered.
 *
 * When the LBP extras row is present, the Core "Charge Type" dropdown
 * (`.pricing-bookable-options`) is also pulled down to share the second
 * row, grouping all per-service "configuration" fields together and
 * leaving row 1 as identity-only (Title / Description / Price / Bookable
 * toggle / Delete). Layout is reordered via CSS `:has()` + flex `order`,
 * so it's transparent to the PHP/JS markup.
 *
 * Markup (DOM order, unchanged):
 *   .pricing-list-item td                    flex container, wraps
 *     .fm-move .pricing-cover .pricing-name  identity fields
 *     .pricing-ingredients .pricing-price
 *     .pricing-bookable                      bookable toggle
 *     .pricing-bookable-options              Charge Type — moved to row 2 via order
 *     .fm-close                              delete button
 *     .lbp-pricing-extras-row                Duration + Individual service
 * ----------------------------------------------------------------- */

/* Two-column rebuild — extras now live inside `.pricing-row-right` (the
 * right column of the new grid), so the old flex-wrap row-break trickery
 * is no longer needed. The extras-row is just a stacked container with
 * Duration + Individual fields inside the column.
 *
 * The selectors below keep working for legacy theme overrides that still
 * use the single-row layout — those don't have `.pricing-row-right`, so
 * the extras still inject after `.fm-close` and these legacy fallback
 * styles take over. */

/* Duration + Individual paired as a 2-column grid — matches the
   Price+Charge Type and Allow Qty+Max Qty pair pattern in the right
   column. Top-aligned so Individual's checkbox sits in line with
   Duration's input below its label. Visual order: Individual on the
   left, Duration on the right (rendered DOM order is reversed by the
   action priorities, so we flip via `order` to keep render priorities
   intact for plugin compatibility). */
.pricing-list-item .pricing-row-right .lbp-pricing-extras-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
	gap: 14px;
	align-items: start;
	margin: 0;
	padding: 0;
	border: 0;
}
.pricing-list-item .pricing-row-right .lbp-pricing-extras-row .pricing-lbp-individual {
	order: 1;
}
.pricing-list-item .pricing-row-right .lbp-pricing-extras-row .pricing-lbp-duration {
	order: 2;
}

.pricing-list-item .pricing-row-right .lbp-pricing-extras-row .fm-input {
	width: 100%;
	margin: 0;
	padding: 0;
}

.pricing-list-item .pricing-row-right .lbp-pricing-extras-row .pricing-lbp-duration input[type="number"] {
	width: 100%;
	box-sizing: border-box;
}

@media (max-width: 1280px) {
	.pricing-list-item .pricing-row-right .lbp-pricing-extras-row {
		grid-template-columns: 1fr;
	}
}

/* Legacy fallback (single-row theme overrides without `.pricing-row-right`) */
.pricing-list-item td:not(:has(.pricing-row-right)) {
	flex-wrap: wrap;
}
.pricing-list-item td:not(:has(.pricing-row-right)):has(.lbp-pricing-extras-row)::after {
	content: "";
	flex-basis: 100%;
	width: 100%;
	height: 0;
	order: 5;
	margin: 0;
}
.pricing-list-item td:not(:has(.pricing-row-right)):has(.lbp-pricing-extras-row) .pricing-bookable-options {
	order: 6;
	flex: 0 0 auto;
	margin: 8px 0 0 auto !important;
	padding-top: 0;
	border-top: 0;
}
.pricing-list-item td:not(:has(.pricing-row-right)):has(.lbp-pricing-extras-row) .lbp-pricing-extras-row {
	order: 7;
	flex-basis: auto;
	display: flex;
	justify-content: flex-end;
	gap: 24px;
	margin: 8px 40px 10px 25px;
	padding-top: 0;
	border-top: 0;
}
.pricing-list-item td:not(:has(.pricing-row-right)):has(.lbp-pricing-extras-row) .lbp-pricing-extras-row .fm-input {
	flex: 0 0 auto;
	margin: 0;
}
.pricing-list-item td:not(:has(.pricing-row-right)):has(.lbp-pricing-extras-row) .lbp-pricing-extras-row .pricing-lbp-duration {
	max-width: 160px;
}
.pricing-list-item td:not(:has(.pricing-row-right)):has(.lbp-pricing-extras-row) .lbp-pricing-extras-row .pricing-lbp-duration input[type="number"] {
	width: 100%;
}
.pricing-list-item td .lbp-extra-label,
.pricing-list-item td .fm-input-label {
	display: inline-block;
	font-size: 11px;
	font-weight: 600;
	text-transform: uppercase;
	color: #888;
	margin: 0;
	opacity: 0.4;
	letter-spacing: 0.04em;
	line-height: 1.4;
	text-align: right;
	float: right;
	position: absolute;
	top: -15px;
	right: 0px;
}

.pricing-list-item td .lbp-pricing-extras-row .pricing-lbp-individual-row {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0;
}

.pricing-list-item td .lbp-pricing-extras-row .pricing-lbp-individual-row input[type="checkbox"] {
	margin: 0;
}

.pricing-list-item td .lbp-pricing-extras-row .pricing-lbp-individual-row label {
	margin: 0;
	
	color: #555;
	cursor: pointer;
	white-space: nowrap;
}


.lbp-defaults-notice {
	margin-left: 20px;
		margin-right: 20px;
}