/*
 * WPDT block styles. Colours and spacing follow the theme through theme.json presets,
 * with neutral fallbacks so the blocks also look right in other block themes.
 */
.wpdt-search,
.wpdt-results,
.wpdt-featured,
.wpdt-terms,
.wpdt-fields {
	--wpdt-gap: var(--wp--preset--spacing--40, 1.25rem);
	--wpdt-radius: var(--wp--custom--radius, 10px);
	--wpdt-border: var(--wp--preset--color--border, rgba(0, 0, 0, 0.12));
	--wpdt-surface: var(--wp--preset--color--surface, #fff);
	--wpdt-muted: var(--wp--preset--color--muted, #5f6368);
	--wpdt-accent: var(--wp--preset--color--accent, #c2410c);
	box-sizing: border-box;
}

/* Search form */
.wpdt-search {
	display: grid;
	gap: 0.75rem;
	padding: var(--wpdt-gap);
	background: var(--wpdt-surface);
	border: 1px solid var(--wpdt-border);
	border-radius: var(--wpdt-radius);
}
.wpdt-search p { margin: 0; }
.wpdt-search label,
.wpdt-search legend { display: block; font-size: 0.85em; font-weight: 600; margin-bottom: 0.25rem; }
.wpdt-search input[type="search"],
.wpdt-search input[type="number"],
.wpdt-search select {
	width: 100%;
	min-height: 2.5rem;
	padding: 0.4rem 0.6rem;
	border: 1px solid var(--wpdt-border);
	border-radius: calc(var(--wpdt-radius) / 2);
	background: #fff;
	color: inherit;
	font: inherit;
	box-sizing: border-box;
}
.wpdt-search__main { display: grid; gap: 0.75rem; grid-template-columns: 1fr; align-items: end; }
@media (min-width: 720px) {
	.wpdt-search.is-layout-inline .wpdt-search__main { grid-template-columns: 2fr repeat(auto-fit, minmax(10rem, 1fr)) auto; }
}
.wpdt-search__submit button { width: 100%; min-height: 2.5rem; }
.wpdt-search__near { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; font-size: 0.9em; }
.wpdt-search__near label { display: inline; margin: 0; }
.wpdt-search__near select { width: auto; min-height: 2rem; }
.wpdt-search__near button { cursor: pointer; background: none; border: 1px solid var(--wpdt-border); border-radius: 999px; padding: 0.3rem 0.8rem; font: inherit; color: inherit; }
.wpdt-search__near-status { color: var(--wpdt-muted); }
.wpdt-search__filters summary { cursor: pointer; font-weight: 600; }
.wpdt-search__filter-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); margin-top: 0.75rem; }
.wpdt-search fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.wpdt-search fieldset label { font-weight: 400; display: flex; gap: 0.4rem; align-items: center; }
.wpdt-search__field--check label { font-weight: 400; display: flex; gap: 0.4rem; align-items: center; }
.wpdt-search__field--range { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; }
.wpdt-search__field--range legend { width: 100%; }
.wpdt-search__field--range input { flex: 1; min-width: 4rem; }
.wpdt-search__sort { display: flex; align-items: center; gap: 0.5rem; justify-self: end; }
.wpdt-search__sort label { margin: 0; white-space: nowrap; }
.wpdt-search__sort select { width: auto; }

/* Grid and cards */
.wpdt-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--wpdt-gap);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
}
@media (min-width: 960px) {
	.wpdt-grid { grid-template-columns: repeat(var(--wpdt-columns, 3), minmax(0, 1fr)); }
}
.wpdt-card {
	height: 100%;
	display: flex;
	flex-direction: column;
	background: var(--wpdt-surface);
	border: 1px solid var(--wpdt-border);
	border-radius: var(--wpdt-radius);
	overflow: hidden;
}
.wpdt-card.is-featured { border-color: var(--wpdt-accent); box-shadow: 0 0 0 1px var(--wpdt-accent); }
.wpdt-card__image img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.wpdt-card__body { padding: 1rem; display: grid; gap: 0.4rem; align-content: start; }
.wpdt-card__title { margin: 0; font-size: 1.1rem; line-height: 1.3; }
.wpdt-card__title a { text-decoration: none; color: inherit; }
.wpdt-card__title a:hover { text-decoration: underline; }
.wpdt-card__meta { margin: 0; font-size: 0.85em; color: var(--wpdt-muted); display: flex; flex-wrap: wrap; gap: 0.5rem; }
.wpdt-card__fields { margin: 0; font-size: 0.85em; display: grid; gap: 0.15rem; }
.wpdt-card__fields div { display: flex; gap: 0.35rem; }
.wpdt-card__fields dt { color: var(--wpdt-muted); }
.wpdt-card__fields dt::after { content: ":"; }
.wpdt-card__fields dd { margin: 0; }
.wpdt-card__excerpt { margin: 0; font-size: 0.9em; }
.wpdt-badge {
	justify-self: start;
	font-size: 0.7rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 0.15rem 0.5rem;
	border-radius: 999px;
	background: var(--wpdt-accent);
	color: #fff;
}
.wpdt-rating { color: var(--wpdt-accent); white-space: nowrap; }
.wpdt-rating__count { color: var(--wpdt-muted); }

/* Results */
.wpdt-results__count { color: var(--wpdt-muted); margin: 0 0 1rem; }
.wpdt-results__empty { padding: 2rem; text-align: center; border: 1px dashed var(--wpdt-border); border-radius: var(--wpdt-radius); }
.wpdt-pagination ul { list-style: none; padding: 0; margin: 1.5rem 0 0; display: flex; flex-wrap: wrap; gap: 0.35rem; justify-content: center; }
.wpdt-pagination a,
.wpdt-pagination span { display: block; padding: 0.4rem 0.75rem; border: 1px solid var(--wpdt-border); border-radius: calc(var(--wpdt-radius) / 2); text-decoration: none; }
.wpdt-pagination .current { background: var(--wpdt-accent); border-color: var(--wpdt-accent); color: #fff; }

/* Map */
.wpdt-map { width: 100%; border-radius: var(--wp--custom--radius, 10px); overflow: hidden; z-index: 0; background: #e5e7eb; }

/* Listing details */
.wpdt-fields { margin: 0; display: grid; gap: 0.75rem; }
.wpdt-fields__row { display: grid; grid-template-columns: minmax(8rem, 1fr) 2fr; gap: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--wpdt-border); }
.wpdt-fields__row:last-child { border-bottom: 0; }
.wpdt-fields dt { font-weight: 600; }
.wpdt-fields dd { margin: 0; }
.wpdt-fields address { font-style: normal; }
.wpdt-hours { border-collapse: collapse; }
.wpdt-hours th { text-align: left; font-weight: 400; padding-right: 1rem; color: var(--wpdt-muted); }
.wpdt-gallery { display: grid; gap: 0.5rem; grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr)); }
.wpdt-gallery img { width: 100%; height: auto; border-radius: calc(var(--wpdt-radius) / 2); }
@media (max-width: 600px) {
	.wpdt-fields__row { grid-template-columns: 1fr; gap: 0.25rem; }
}

/* Terms */
.wpdt-terms { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 11rem), 1fr)); }
@media (min-width: 960px) {
	.wpdt-terms { grid-template-columns: repeat(var(--wpdt-columns, 4), minmax(0, 1fr)); }
}
.wpdt-terms__item a {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 0.5rem;
	padding: 0.9rem 1rem;
	background: var(--wpdt-surface);
	border: 1px solid var(--wpdt-border);
	border-radius: var(--wpdt-radius);
	text-decoration: none;
	color: inherit;
	font-weight: 600;
}
.wpdt-terms__item a:hover { border-color: var(--wpdt-accent); }
.wpdt-terms__count { font-weight: 400; font-size: 0.85em; color: var(--wpdt-muted); }

/* Reviews */
.wpdt-reviews { display: grid; gap: 1.25rem; }
.wpdt-reviews__title { margin: 0; }
.wpdt-reviews__summary { display: grid; gap: 1rem; grid-template-columns: auto 1fr; align-items: center; padding: 1rem 1.25rem; background: var(--wpdt-surface); border: 1px solid var(--wpdt-border); border-radius: var(--wpdt-radius); }
@media (max-width: 600px) { .wpdt-reviews__summary { grid-template-columns: 1fr; } }
.wpdt-reviews__average { margin: 0; display: grid; gap: 0.25rem; justify-items: start; }
.wpdt-reviews__average strong { font-size: 2.5rem; line-height: 1; }
.wpdt-reviews__bars { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.3rem; font-size: 0.85rem; }
.wpdt-reviews__bars li { display: grid; grid-template-columns: 4.5rem 1fr 2rem; gap: 0.5rem; align-items: center; }
.wpdt-reviews__bar { height: 0.5rem; background: var(--wpdt-border); border-radius: 999px; overflow: hidden; }
.wpdt-reviews__bar span { display: block; height: 100%; background: var(--wpdt-accent); }
.wpdt-reviews__bar-count { color: var(--wpdt-muted); text-align: right; }
.wpdt-reviews__empty,
.wpdt-reviews__notice { color: var(--wpdt-muted); margin: 0; }
.wpdt-reviews__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.wpdt-review { padding-bottom: 1rem; border-bottom: 1px solid var(--wpdt-border); }
.wpdt-review__header { display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; align-items: baseline; }
.wpdt-review__header time { color: var(--wpdt-muted); font-size: 0.85rem; }
.wpdt-review__content > :last-child { margin-bottom: 0; }
.wpdt-review__reply { margin: 0.75rem 0 0 1rem; padding: 0.75rem 1rem; border-left: 3px solid var(--wpdt-accent); background: var(--wpdt-surface); border-radius: 0 var(--wpdt-radius) var(--wpdt-radius) 0; }
.wpdt-review__reply > :last-child { margin-bottom: 0; }
.wpdt-review__reply-label { font-weight: 600; font-size: 0.85rem; margin: 0 0 0.25rem; }
.wpdt-review__reply-form { margin-top: 0.5rem; }
.wpdt-review__reply-form summary { cursor: pointer; color: var(--wpdt-accent); }
.wpdt-reviews__form form,
.wpdt-review__reply-form form { display: grid; gap: 0.6rem; margin-top: 0.5rem; }
.wpdt-reviews__form textarea,
.wpdt-review__reply-form textarea { width: 100%; box-sizing: border-box; padding: 0.6rem 0.75rem; border: 1px solid var(--wpdt-border); border-radius: calc(var(--wpdt-radius) / 2); font: inherit; }
.wpdt-reviews__form button,
.wpdt-review__reply-form button { justify-self: start; }

/* Star input: radios run 5..1 in the markup and are shown reversed, so hover fills to the left. */
.wpdt-stars-input { border: 0; padding: 0; margin: 0; display: inline-flex; flex-direction: row-reverse; justify-content: flex-end; }
.wpdt-stars-input legend { padding: 0; margin-bottom: 0.25rem; font-weight: 600; width: 100%; }
.wpdt-stars-input input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.wpdt-stars-input label { font-size: 1.75rem; line-height: 1; padding: 0 0.1rem; cursor: pointer; color: var(--wpdt-border); }
.wpdt-stars-input label:hover,
.wpdt-stars-input label:hover ~ label,
.wpdt-stars-input input:checked ~ label { color: var(--wpdt-accent); }
.wpdt-stars-input input:focus-visible + label { outline: 2px solid var(--wpdt-accent); outline-offset: 2px; border-radius: 4px; }
.wpdt-stars .screen-reader-text,
.wpdt-reviews .screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* Submit form */
.wpdt-form { display: grid; gap: 1rem; max-width: 46rem; }
.wpdt-form__field { display: grid; gap: 0.35rem; margin: 0; }
.wpdt-form__field[hidden] { display: none; }
.wpdt-form__field > label,
.wpdt-form__field > legend { font-weight: 600; }
.wpdt-form fieldset { border: 0; padding: 0; margin: 0; }
.wpdt-form .wpdt-input { width: 100%; box-sizing: border-box; padding: 0.55rem 0.75rem; border: 1px solid var(--wpdt-border); border-radius: calc(var(--wpdt-radius) / 2); font: inherit; background: var(--wp--preset--color--base, #fff); color: inherit; }
.wpdt-form .wpdt-input--small { width: auto; max-width: 10rem; }
.wpdt-form__field--address p { margin: 0 0 0.5rem; }
.wpdt-form__field--multiselect label,
.wpdt-form__tags label { display: inline-flex; gap: 0.35rem; align-items: center; margin: 0 1rem 0.35rem 0; font-weight: 400; }
.wpdt-form__field--hours td { padding: 0.15rem 0.5rem 0.15rem 0; }
.wpdt-form__help { margin: 0; color: var(--wpdt-muted); font-size: 0.85rem; }
.wpdt-form__error { margin: 0; color: #b42318; font-size: 0.9rem; }
.wpdt-form__hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.wpdt-form__thumb,
.wpdt-gallery-input { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; }
.wpdt-form__thumb img,
.wpdt-gallery-input img { width: 80px; height: 80px; object-fit: cover; border-radius: calc(var(--wpdt-radius) / 2); }
.wpdt-gallery-input__item { display: inline-flex; flex-direction: column; align-items: center; gap: 0.25rem; }
.wpdt-notice { padding: 0.75rem 1rem; border-radius: var(--wpdt-radius); border: 1px solid var(--wpdt-border); background: var(--wpdt-surface); }
.wpdt-notice p { margin: 0; }
.wpdt-notice--success { border-color: #12b76a; }
.wpdt-notice--error { border-color: #b42318; }
.wpdt-submit .screen-reader-text,
.wpdt-dashboard .screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* Owner dashboard */
.wpdt-dashboard__table { width: 100%; border-collapse: collapse; }
.wpdt-dashboard__table th,
.wpdt-dashboard__table td { text-align: left; padding: 0.6rem 0.5rem; border-bottom: 1px solid var(--wpdt-border); vertical-align: middle; }
.wpdt-dashboard__actions { white-space: nowrap; text-align: right; }
.wpdt-dashboard__actions a + a { margin-left: 0.75rem; }
.wpdt-status { display: inline-block; font-size: 0.8rem; padding: 0.1rem 0.5rem; border-radius: 999px; background: var(--wpdt-surface); border: 1px solid var(--wpdt-border); }
.wpdt-status--publish { border-color: #12b76a; }
.wpdt-status--pending { border-color: #f79009; }
@media (max-width: 600px) {
	.wpdt-dashboard__table thead { display: none; }
	.wpdt-dashboard__table tr { display: grid; grid-template-columns: 1fr auto; padding: 0.5rem 0; border-bottom: 1px solid var(--wpdt-border); }
	.wpdt-dashboard__table td { border: 0; padding: 0.15rem 0; }
	.wpdt-dashboard__actions { text-align: left; }
}

/* Plans */
.wpdt-form__plans { display: grid; gap: 0.5rem; }
.wpdt-plan { display: grid; grid-template-columns: auto 1fr auto; gap: 0.25rem 0.6rem; align-items: center; padding: 0.75rem 1rem; border: 1px solid var(--wpdt-border); border-radius: var(--wpdt-radius); cursor: pointer; font-weight: 400; }
.wpdt-plan:has(input:checked) { border-color: var(--wpdt-accent); background: var(--wpdt-surface); }
.wpdt-plan__name { font-weight: 600; }
.wpdt-plan__price { color: var(--wpdt-muted); }
.wpdt-plan__description { grid-column: 2 / -1; color: var(--wpdt-muted); font-size: 0.9rem; }
.wpdt-dashboard__upgrade { display: inline-flex; gap: 0.35rem; margin: 0.35rem 0 0 0.75rem; align-items: center; }
.wpdt-dashboard__upgrade select { padding: 0.3rem; border: 1px solid var(--wpdt-border); border-radius: calc(var(--wpdt-radius) / 2); font: inherit; font-size: 0.85rem; }
.wpdt-dashboard__upgrade .wp-element-button { padding: 0.35rem 0.75rem; font-size: 0.85rem; }
