.cbnb-photo-engine-queue {
	margin-top: 8px;
	display: grid;
	gap: 8px;
}
.cbnb-photo-engine-item {
	border: 1px solid #d9d9d9;
	border-radius: 8px;
	padding: 8px;
	background: #fff;
	font-size: 13px;
	display: grid;
	grid-template-columns: 72px minmax(0, 1fr);
	align-items: center;
	gap: 10px;
}
.cbnb-photo-engine-preview {
	width: 72px;
	height: 54px;
	border-radius: 6px;
	background: #f1f3f5;
	color: #6b7280;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	font-size: 11px;
	font-weight: 600;
}
.cbnb-photo-engine-preview img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.cbnb-photo-engine-meta {
	min-width: 0;
}
.cbnb-photo-engine-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto 28px;
	align-items: center;
	gap: 12px;
	margin-bottom: 6px;
}
.cbnb-photo-engine-row strong {
	display: block;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.cbnb-photo-engine-status {
	color: #4b5563;
	min-width: 0;
	white-space: normal;
	overflow-wrap: anywhere;
	line-height: 1.35;
}
.cbnb-photo-engine-remove {
	width: 28px;
	height: 28px;
	border: 0;
	border-radius: 50%;
	padding: 0;
	background: transparent;
	color: #6b7280;
	font: 20px/28px Arial, sans-serif;
	cursor: pointer;
}
.cbnb-photo-engine-remove:hover,
.cbnb-photo-engine-remove:focus-visible {
	background: #f3f4f6;
	color: #111827;
}
.cbnb-photo-engine-progress {
	height: 6px;
	background: #eeeeee;
	border-radius: 999px;
	overflow: hidden;
}
.cbnb-photo-engine-progress > span {
	display: block;
	height: 100%;
	width: 0;
	background: #0b7cff;
	transition: width .15s linear;
}
.cbnb-photo-engine-item.is-optimizing .cbnb-photo-engine-progress > span {
	width: 40% !important;
	background: linear-gradient(90deg, #0b7cff, #65b5ff, #0b7cff);
	animation: cbnb-photo-engine-optimizing 1.1s ease-in-out infinite;
}
.cbnb-photo-engine-item.is-done .cbnb-photo-engine-progress > span {
	background: #1f9d55;
}
.cbnb-photo-engine-item.is-background .cbnb-photo-engine-progress > span {
	width: 100% !important;
	background: #0b7cff;
}
.cbnb-photo-engine-item.is-background .cbnb-photo-engine-status {
	color: #0b5fab;
}
.cbnb-photo-engine-item.is-done .cbnb-photo-engine-status {
	color: #187744;
}
.cbnb-photo-engine-item.is-error .cbnb-photo-engine-progress > span {
	background: #d63638;
}
.cbnb-photo-engine-item.is-error .cbnb-photo-engine-status {
	color: #b42318;
}
.cbnb-photo-engine-limit {
	font-size: 12px;
	color: #555;
	margin-top: 4px;
}
.cbnb-photo-engine-dimensions {
	display: block;
	font-size: 12px;
	line-height: 1.4;
	color: #6b7280;
	margin-top: 2px;
}

@keyframes cbnb-photo-engine-optimizing {
	from { transform: translateX(-110%); }
	to { transform: translateX(260%); }
}

@media (prefers-reduced-motion: reduce) {
	.cbnb-photo-engine-item.is-optimizing .cbnb-photo-engine-progress > span {
		animation: none;
	}
}

@media (max-width: 640px) {
	.cbnb-photo-engine-item {
		grid-template-columns: 56px minmax(0, 1fr);
	}
	.cbnb-photo-engine-preview {
		width: 56px;
		height: 48px;
	}
	.cbnb-photo-engine-row {
		grid-template-columns: minmax(0, 1fr) 28px;
		gap: 8px;
	}
	.cbnb-photo-engine-status {
		grid-column: 1 / -1;
		grid-row: 2;
	}
	.cbnb-photo-engine-remove {
		grid-column: 2;
		grid-row: 1;
	}
}

/*
 * JetFormBuilder reserves a 100px preview box for every media field, which
 * leaves an empty gap on the owner listing forms whenever a gallery has no
 * photos yet. Collapse it while the field holds no preview, and keep the
 * reserved box everywhere else (profile popups use it as a placeholder).
 */
form.jet-form-builder[data-form-id="3194"] .jet-form-builder-file-upload__content:not(:has(.jet-form-builder-file-upload__file)),
form.jet-form-builder[data-form-id="3527"] .jet-form-builder-file-upload__content:not(:has(.jet-form-builder-file-upload__file)) {
	min-height: 0;
	min-width: 0;
}

/*
 * One repeater row is one cabin or one head, but the rows render as a flat
 * list: a label, its photos, then the next label. Outline each row so it is
 * obvious which photos belong to which space.
 */
.cbnb-owner-form-row--accommodations-gallery .jet-form-builder-repeater__row {
	border: 1px solid #d9d9d9;
	border-radius: 10px;
	padding: 12px 14px;
	background: #fff;
}
.cbnb-owner-form-row--accommodations-gallery .jet-form-builder-repeater__row + .jet-form-builder-repeater__row {
	margin-top: 12px;
}

/* The Galley column holds a single photo field instead of a repeater, so give
 * it the same outline to keep the three columns reading alike. */
.cbnb-owner-form-row--accommodations-gallery > .wp-block-column > .jet-form-builder-row.field-type-media-field {
	border: 1px solid #d9d9d9;
	border-radius: 10px;
	padding: 12px 14px;
	background: #fff;
}
