/**
 * PXL Menu Dynamic widget.
 *
 * Values here are lifted from the Elementor-generated CSS of the static
 * "Menu Grid 1" template (pxl-template 5249) so the dynamic cards match the
 * original design. Reference rules, for future comparison:
 *   card    .elementor-element-2d5c7ad  border 1px #DEDEDE, radius 20px,
 *                                       padding 25px 27px 35px 150px,
 *                                       hover shadow 0 8px 23.52px .48px rgba(0,0,0,.13)
 *   image   .elementor-element-d384618  97x97 circle, 2px secondary border,
 *                                       absolute left 30px, top 50% / -50%
 *   title   .elementor-element-f1e9457  20px / 26px, 600
 *   price   .elementor-element-f163b53  17px / 25px, 600, primary colour
 *   desc    .elementor-element-58552c6  14px, margin-top 10px
 *   meta    .elementor-element-e110f69  margin-top 18px (35% / 65% split)
 *   tag A   .elementor-element-e9755bf  gradient #E17603 -> #F6B339
 *   tag B   .elementor-element-e312f29  gradient #A90001 -> #ED2B2C
 */

.zmenu-grid {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zmenu-gap, 30px);
}

.zmenu-item {
	display: flex;
	/* flex-basis handles the column split; border-box keeps the gap honest. */
	box-sizing: border-box;
}

.zmenu-cols-2 > .zmenu-item {
	flex: 0 0 calc(50% - (var(--zmenu-gap, 30px) / 2));
	max-width: calc(50% - (var(--zmenu-gap, 30px) / 2));
}

.zmenu-cols-1 > .zmenu-item {
	flex: 0 0 100%;
	max-width: 100%;
}

.zmenu-card {
	position: relative;
	width: 100%;
	box-sizing: border-box;
	padding: 25px 27px 35px 150px;
	border: 1px solid var(--zmenu-border, #DEDEDE);
	border-radius: var(--zmenu-radius, 20px);
	background-color: var(--zmenu-card-bg, transparent);
	transition: background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;
}

.zmenu-card:hover {
	border-color: transparent;
	box-shadow: 0 8px 23.52px 0.48px rgba(0, 0, 0, 0.13);
}

/* No featured image: reclaim the image well so the text isn't orphaned. */
.zmenu-card--noimg {
	padding-left: 27px;
}

.zmenu-thumb {
	position: absolute;
	left: 30px;
	top: 50%;
	transform: translateY(-50%);
	width: var(--zmenu-thumb, 97px);
	height: var(--zmenu-thumb, 97px);
	border: 2px solid var(--zmenu-ring, var(--e-global-color-secondary, #F5A81C));
	border-radius: 50%;
	overflow: hidden;
	line-height: 0;
}

.zmenu-thumb img {
	width: var(--zmenu-thumb, 97px);
	height: var(--zmenu-thumb, 97px);
	object-fit: cover;
	border-radius: 50%;
	display: block;
}

.zmenu-head {
	display: flex;
	align-items: center;
}

.zmenu-title {
	margin: 0;
	font-size: var(--zmenu-title-size, 20px);
	line-height: 1.3;
	font-weight: 600;
	text-transform: none;
	color: var(--zmenu-title-color, #0C0C0C);
}

.zmenu-title a {
	color: inherit;
	text-decoration: none;
}

.zmenu-spacer {
	flex-grow: 1;
	/* Keeps a minimum breathing gap when title and price nearly collide. */
	min-width: 12px;
}

.zmenu-price {
	margin: 0;
	color: var(--zmenu-price-color, var(--e-global-color-primary, #DC0505));
	font-family: "Cerebri Sans", sans-serif;
	font-size: var(--zmenu-price-size, 17px);
	line-height: 1.45;
	font-weight: 600;
	white-space: nowrap;
}

.zmenu-desc {
	margin-top: 10px;
	font-size: 15px;
	line-height: 25px;
	color: var(--zmenu-desc-color, inherit);
}

.zmenu-desc p {
	margin: 0;
}

.zmenu-meta {
	display: flex;
	align-items: center;
	margin-top: 18px;
}

.zmenu-serving {
	width: 35%;
	color: var(--zmenu-serving-color, var(--e-global-color-text, #0C0C0C));
	font-size: 15px;
	line-height: 25px;
	font-weight: 600;
}

.zmenu-tags {
	width: 65%;
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 10px;
}

/*
 * Flat badges. The original template alternated two gradient pills
 * (#E17603 -> #F6B339 and #A90001 -> #ED2B2C); every tag is now one solid
 * brand colour instead, matching the featured/sale badges in style.css.
 */
.zmenu-tag {
	color: #FFFFFF;
	font-size: 13px;
	line-height: 30px;
	padding: 0 20px;
	border-radius: 16px;
	background-color: var(--zmenu-tag-bg, #DC0505);
}

.zmenu-empty {
	padding: 20px 0;
	font-size: 15px;
	opacity: 0.75;
}

/* Tablet and down: single column, matching the theme's 1024px breakpoint. */
@media (max-width: 1024px) {
	.zmenu-cols-2 > .zmenu-item {
		flex: 0 0 100%;
		max-width: 100%;
	}
}

/*
 * Mobile mirrors the original's stacked card: the image moves to the top and
 * the padding flips to 150px 20px 30px (see 2d5c7ad's mobile override).
 */
@media (max-width: 767px) {
	.zmenu-card,
	.zmenu-card--noimg {
		padding: 150px 20px 30px 20px;
		text-align: center;
	}

	.zmenu-card--noimg {
		padding-top: 30px;
	}

	.zmenu-thumb {
		left: 50%;
		top: 30px;
		transform: translateX(-50%);
	}

	.zmenu-head {
		flex-direction: column;
		align-items: center;
	}

	.zmenu-spacer {
		display: none;
	}

	.zmenu-price {
		margin-top: 4px;
	}

	.zmenu-meta {
		flex-direction: column;
		align-items: center;
		gap: 10px;
	}

	.zmenu-serving,
	.zmenu-tags {
		width: 100%;
	}

	.zmenu-tags {
		justify-content: center;
	}
}
