/* Cart shortcode [ohoche_cart] — layout per design reference */

/* ——— Pin the cart footer (sum + checkout button + payment icons) to the very
   bottom of the popup, even with only a few items. The cart lives inside an
   Elementor popup: e-con.e-parent → e-con-inner → widget-shortcode →
   .elementor-shortcode → .ohoche-cart. We flow the popup's full height down
   that wrapper chain so the items area can grow and push the footer down.
   (Requires the Elementor popup itself to be full-height — a side drawer.) */
/* Clamp the popup itself to the viewport: with many items the dialog used to
   grow taller than the screen (#68). Constraining it here gives the wrapper
   chain a real height, so the items list scrolls INSIDE the cart instead. */
.elementor-popup-modal:has(.ohoche-cart) .dialog-widget-content {
	max-height: 100dvh !important;
	display: flex !important;
	flex-direction: column !important;
	overflow: hidden !important;
}

.elementor-popup-modal:has(.ohoche-cart) .dialog-message,
.elementor-popup-modal:has(.ohoche-cart) .dialog-message > .elementor {
	height: 100% !important;
	min-height: 0 !important;
	display: flex !important;
	flex-direction: column !important;
	overflow: hidden !important;
}

.e-con.e-parent:has(.ohoche-cart) {
	flex: 1 1 auto !important;
	min-height: 100% !important;
}

.e-con:has(.ohoche-cart) > .e-con-inner,
.elementor-widget-shortcode:has(.ohoche-cart),
.elementor-widget-shortcode:has(.ohoche-cart) > .elementor-widget-container,
.elementor-shortcode:has(> .ohoche-cart) {
	height: 100% !important;
	min-height: 0 !important;
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
}

.ohoche-cart {
	position: relative !important;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 36px 32px !important;
	background: #ffffff !important;
	box-sizing: border-box !important;
	font-family: "Gilroy", sans-serif !important;
	color: #403e3c !important;
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
	max-height: 100dvh !important;
}

/* Push the footer to the bottom of the flex column as a fallback for cases
   where the items list is short and doesn't itself grow to fill. */
.ohoche-cart__footer {
	margin-top: auto !important;
}

/* Desktop: give the cart a minimum height so it always looks full and the
   footer group (sum + checkout button + payment icons) sits at the bottom,
   even with a single item. The flex column distributes the 700px, so the
   items area grows and the footer stays pinned to the bottom. */
@media (min-width: 601px) {
	.ohoche-cart {
		/* Never let the 700px minimum push the cart past a short viewport. */
		min-height: min(700px, calc(100dvh - 48px)) !important;
	}
}

/* Make the whole filled cart a flex column so the items list can take the
   remaining height and scroll, while header + upsell + footer stay visible. */
.ohoche-cart__inner,
.ohoche-cart__filled {
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
	min-height: 0 !important;
}

/* ——— Filled ——— */
/* Keep header, upsell and footer at their natural size; only items scroll. */
.ohoche-cart__header,
.ohoche-cart__upsell,
.ohoche-cart__footer {
	flex: 0 0 auto !important;
}

.ohoche-cart__header {
	margin-bottom: 20px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
}

.ohoche-cart__close {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	box-sizing: border-box !important;
	width: 32px !important;
	height: 32px !important;
	min-width: 32px !important;
	max-width: 32px !important;
	min-height: 32px !important;
	max-height: 32px !important;
	flex: 0 0 32px !important;
	padding: 0 !important;
	margin: 0 !important;
	border: 0 !important;
	border-width: 0 !important;
	border-style: none !important;
	border-color: transparent !important;
	border-radius: 50% !important;
	background: transparent !important;
	background-color: transparent !important;
	background-image: none !important;
	color: #aaaaaa !important;
	cursor: pointer !important;
	box-shadow: none !important;
	outline: none !important;
	text-decoration: none !important;
	text-shadow: none !important;
	font-size: 0 !important;
	line-height: 0 !important;
	letter-spacing: 0 !important;
	word-spacing: 0 !important;
	text-transform: none !important;
	vertical-align: middle !important;
	-webkit-appearance: none !important;
	appearance: none !important;
	transition: color 0.15s ease !important;
}

.ohoche-cart__close:hover,
.ohoche-cart__close:focus,
.ohoche-cart__close:active {
	background: transparent !important;
	background-color: transparent !important;
	color: #403e3c !important;
	transform: none !important;
	box-shadow: none !important;
	border: 0 !important;
	outline: none !important;
}

.ohoche-cart__close svg {
	display: block !important;
	width: 16px !important;
	height: 16px !important;
	flex-shrink: 0 !important;
	pointer-events: none !important;
}

.ohoche-cart__empty-header {
	display: flex !important;
	justify-content: flex-end !important;
	margin-bottom: 8px !important;
}

.ohoche-cart__title {
	margin: 0 !important;
	font-size: 24px !important;
	font-weight: 700 !important;
	color: #403e3c !important;
	display: inline-flex !important;
	align-items: center !important;
	gap: 8px !important;
}

.ohoche-cart__badge {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-width: 22px !important;
	height: 22px !important;
	padding: 0 6px !important;
	border-radius: 999px !important;
	background: #6fa57c !important;
	color: #ffffff !important;
	font-size: 12px !important;
	font-weight: 700 !important;
	line-height: 1 !important;
}

.ohoche-cart__badge--muted {
	background: #e8e8e8 !important;
	color: #ffffff !important;
}

.ohoche-cart__items {
	list-style: none !important;
	margin: 0 0 24px !important;
	padding: 0 6px 0 0 !important;
	display: flex !important;
	flex-direction: column !important;
	gap: 16px !important;
	/* Grow to fill available space so the footer is always at the bottom. */
	flex: 1 1 auto !important;
	min-height: 0 !important;
	overflow-y: auto !important;
	overscroll-behavior: contain !important;
	scrollbar-width: thin !important;
	scrollbar-color: #c9c9c9 transparent !important;
}

.ohoche-cart__items::-webkit-scrollbar {
	width: 8px !important;
}

.ohoche-cart__items::-webkit-scrollbar-track {
	background: transparent !important;
}

.ohoche-cart__items::-webkit-scrollbar-thumb {
	background: #c9c9c9 !important;
	border-radius: 999px !important;
}

.ohoche-cart__items::-webkit-scrollbar-thumb:hover {
	background: #b0b0b0 !important;
}

.ohoche-cart__item {
	display: grid !important;
	grid-template-columns: 80px 1fr auto !important;
	gap: 12px !important;
	align-items: stretch !important;
	min-height: 100px !important;
}

.ohoche-cart__item-thumb img {
	width: 80px !important;
	height: 100px !important;
	object-fit: cover !important;
	border-radius: 12px !important;
	display: block !important;
}

/* Distribute the product info across the full height of the card. */
.ohoche-cart__item-main {
	display: flex !important;
	flex-direction: column !important;
	justify-content: space-between !important;
	min-width: 0 !important;
}

.ohoche-cart__item-title {
	font-size: 14px !important;
	font-weight: 600 !important;
	color: #403e3c !important;
	line-height: 1.35 !important;
	margin-bottom: 6px !important;
}

.ohoche-cart__item-price-row {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: center !important;
	gap: 8px !important;
	font-size: 14px !important;
}

.ohoche-cart__price {
	font-weight: 700 !important;
	color: #403e3c !important;
}

.ohoche-cart__price .woocommerce-Price-amount {
	font-weight: inherit !important;
	color: inherit !important;
}

.ohoche-cart__price--sale,
.ohoche-cart__price--sale .woocommerce-Price-amount {
	color: #6fa57c !important;
}

.ohoche-cart__price--old,
.ohoche-cart__price--old .woocommerce-Price-amount {
	color: #b0b0b0 !important;
	font-weight: 400 !important;
	text-decoration: line-through !important;
}

.ohoche-cart__discount {
	display: inline-flex !important;
	align-items: center !important;
	padding: 2px 6px !important;
	border-radius: 6px !important;
	background: #6fa57c !important;
	color: #ffffff !important;
	font-size: 11px !important;
	font-weight: 700 !important;
}

.ohoche-cart__item-meta {
	margin-top: 6px !important;
	font-size: 12px !important;
	color: #9a9a9a !important;
}

.ohoche-cart__item-actions {
	display: flex !important;
	flex-direction: column !important;
	align-items: flex-end !important;
	justify-content: space-between !important;
	gap: 10px !important;
}

.ohoche-cart__qty {
	display: inline-flex !important;
	align-items: center !important;
	gap: 0 !important;
	background: #f3f3f3 !important;
	border-radius: 999px !important;
	padding: 4px 6px !important;
}

.ohoche-cart__qty-btn {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 28px !important;
	height: 28px !important;
	border: 0 !important;
	border-radius: 50% !important;
	background: #ffffff !important;
	color: #403e3c !important;
	font-size: 16px !important;
	line-height: 1 !important;
	cursor: pointer !important;
	padding: 0 !important;
	box-shadow: none !important;
}

.ohoche-cart__qty-btn:hover,
.ohoche-cart__qty-btn:focus,
.ohoche-cart__qty-btn:active {
	background: #ffffff !important;
	color: #403e3c !important;
	transform: none !important;
	box-shadow: none !important;
}

.ohoche-cart__qty-val {
	min-width: 22px !important;
	text-align: center !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	color: #403e3c !important;
}

.ohoche-cart__remove {
	width: 22px !important;
	height: 22px !important;
	font-size: 18px !important;
	line-height: 1 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	color: #c4c4c4 !important;
	cursor: pointer !important;
	box-shadow: none !important;
}

.ohoche-cart__remove:hover,
.ohoche-cart__remove:focus,
.ohoche-cart__remove:active {
	color: #9a9a9a !important;
	background: transparent !important;
	transform: none !important;
}

.ohoche-cart__item--removing {
	opacity: 0.35 !important;
	pointer-events: none !important;
	transition: opacity 0.15s ease !important;
}

/* Upsell */
.ohoche-cart__upsell {
	margin-bottom: 24px !important;
}

.ohoche-cart__upsell-head {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	margin-bottom: 12px !important;
}

.ohoche-cart__upsell-title {
	font-size: 14px !important;
	font-weight: 600 !important;
	color: #403e3c !important;
}

.ohoche-cart__upsell-nav {
	display: flex !important;
	gap: 8px !important;
}

.ohoche-cart__upsell-arrow {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 36px !important;
	height: 36px !important;
	border-radius: 50% !important;
	border: 0 !important;
	padding: 0 !important;
	font-size: 18px !important;
	line-height: 1 !important;
	cursor: pointer !important;
	background: #6fa57c !important;
	color: #ffffff !important;
	box-shadow: none !important;
	transition: background 0.15s ease, color 0.15s ease !important;
	user-select: none !important;
	-webkit-user-select: none !important;
}

.ohoche-cart__upsell-arrow.is-disabled {
	background: #f0f0f0 !important;
	color: #b6b6b6 !important;
	cursor: default !important;
	pointer-events: none !important;
}

.ohoche-cart__upsell-arrow:not(.is-disabled):hover,
.ohoche-cart__upsell-arrow:not(.is-disabled):focus {
	background: #5f966d !important;
	color: #ffffff !important;
	transform: none !important;
}

.ohoche-cart__upsell-viewport {
	overflow-x: auto !important;
	overflow-y: hidden !important;
	-webkit-overflow-scrolling: touch !important;
	scrollbar-width: none !important;
	margin: 0 -4px !important;
	padding: 0 4px !important;
}

.ohoche-cart__upsell-viewport::-webkit-scrollbar {
	display: none !important;
}

.ohoche-cart__upsell-track {
	display: flex !important;
	gap: 12px !important;
	padding-bottom: 4px !important;
}

.ohoche-cart__upsell-card {
	flex: 0 0 88% !important;
	max-width: 88% !important;
	display: grid !important;
	grid-template-columns: auto minmax(0, 1fr) auto !important;
	column-gap: 12px !important;
	align-items: stretch !important;
	background: #f6f6f6 !important;
	border-radius: 18px !important;
	padding: 12px !important;
	box-sizing: border-box !important;
}

.ohoche-cart__upsell-thumb {
	display: block !important;
}

/* Upsell thumb + name are links to the product page */
a.ohoche-cart__upsell-thumb,
a.ohoche-cart__upsell-name {
	text-decoration: none !important;
	cursor: pointer !important;
}

a.ohoche-cart__upsell-name:hover,
a.ohoche-cart__upsell-name:focus {
	color: #6fa57c !important;
}

.ohoche-cart__upsell-thumb img {
	width: 80px !important;
	height: 100px !important;
	object-fit: cover !important;
	border-radius: 12px !important;
	display: block !important;
}

.ohoche-cart__upsell-info {
	display: flex !important;
	flex-direction: column !important;
	justify-content: space-between !important;
	gap: 6px !important;
	min-width: 0 !important;
}

.ohoche-cart__upsell-name {
	font-size: 13px !important;
	font-weight: 600 !important;
	color: #403e3c !important;
	line-height: 1.3 !important;
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
}

.ohoche-cart__upsell-prices {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: center !important;
	gap: 6px !important;
	font-size: 13px !important;
}

.ohoche-cart__upsell-add {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	justify-self: end !important;
	align-self: center !important;
	width: 120px !important;
	height: 44px !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 999px !important;
	background: #f4d77a !important;
	color: #403e3c !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	cursor: pointer !important;
	box-shadow: none !important;
	white-space: nowrap !important;
	box-sizing: border-box !important;
}

.ohoche-cart__upsell-add:hover,
.ohoche-cart__upsell-add:focus,
.ohoche-cart__upsell-add:active {
	background: #efd166 !important;
	color: #403e3c !important;
	transform: none !important;
	box-shadow: none !important;
}

/* Footer */
.ohoche-cart__footer {
	border-top: 0 !important;
	padding-top: 8px !important;
}

.ohoche-cart__total-row {
	display: flex !important;
	justify-content: space-between !important;
	align-items: center !important;
	margin-bottom: 16px !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	color: #403e3c !important;
}

.ohoche-cart__total-row .woocommerce-Price-amount {
	font-weight: 700 !important;
	color: #403e3c !important;
}

.ohoche-cart__checkout {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 100% !important;
	height: 56px !important;
	padding: 0 20px !important;
	border-radius: 999px !important;
	background: #f4d77a !important;
	color: #403e3c !important;
	font-size: 15px !important;
	font-weight: 700 !important;
	text-decoration: none !important;
	box-sizing: border-box !important;
	box-shadow: none !important;
	border: 0 !important;
}

.ohoche-cart__checkout:hover,
.ohoche-cart__checkout:focus,
.ohoche-cart__checkout:active {
	background: #efd166 !important;
	color: #403e3c !important;
	text-decoration: none !important;
	transform: none !important;
	box-shadow: none !important;
}

.ohoche-cart__payments {
	display: flex !important;
	justify-content: center !important;
	margin-top: 16px !important;
}

/* Single pre-rendered strip: Visa / Mastercard / Apple Pay / G Pay / mono */
.ohoche-cart__payments-img {
	display: block !important;
	width: 330px !important;
	max-width: 100% !important;
	height: auto !important;
	margin: 0 auto !important;
	object-fit: contain !important;
}

/* Empty — illustration + typography like mockup (not a full-page screenshot) */
.ohoche-cart__empty {
	text-align: center !important;
}

.ohoche-cart__empty-visual {
	margin: 0 auto 24px !important;
}

.ohoche-cart__empty-img {
	width: 240px !important;
	height: 240px !important;
	max-width: 100% !important;
	object-fit: contain !important;
	display: block !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

.ohoche-cart__empty-title {
	margin: 0 0 12px !important;
	font-size: 18px !important;
	font-weight: 700 !important;
	color: #403e3c !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 8px !important;
	flex-wrap: wrap !important;
}

.ohoche-cart__empty-text {
	margin: 0 0 24px !important;
	font-size: 14px !important;
	line-height: 1.45 !important;
	color: #403e3c !important;
	max-width: 320px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

.ohoche-cart__btn--catalog {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 400px !important;
	max-width: 100% !important;
	height: 56px !important;
	padding: 0 32px !important;
	border-radius: 999px !important;
	background: #7da082 !important;
	color: #ffffff !important;
	font-size: 15px !important;
	font-weight: 700 !important;
	text-decoration: none !important;
	border: 0 !important;
	box-shadow: none !important;
	box-sizing: border-box !important;
}

.ohoche-cart__btn--catalog:hover,
.ohoche-cart__btn--catalog:focus,
.ohoche-cart__btn--catalog:active {
	background: #6d9272 !important;
	color: #ffffff !important;
	text-decoration: none !important;
	transform: none !important;
	box-shadow: none !important;
}

/* ——— Mobile adaptation ——— */
@media (max-width: 600px) {
	.ohoche-cart {
		padding: 24px 16px !important;
		max-height: calc(100dvh - 32px) !important;
	}

	.ohoche-cart__upsell-card {
		flex-basis: 90% !important;
		max-width: 90% !important;
		column-gap: 10px !important;
		padding: 10px !important;
		border-radius: 16px !important;
	}

	.ohoche-cart__upsell-thumb img {
		width: 56px !important;
		height: 56px !important;
	}

	.ohoche-cart__upsell-name {
		font-size: 12px !important;
		-webkit-line-clamp: 2 !important;
	}

	.ohoche-cart__upsell-prices {
		font-size: 12px !important;
		gap: 6px !important;
	}

	.ohoche-cart__upsell-add {
		width: 80px !important;
		height: 36px !important;
		font-size: 12px !important;
	}

	.ohoche-cart__upsell-arrow {
		width: 32px !important;
		height: 32px !important;
		font-size: 16px !important;
	}

	.ohoche-cart__btn--catalog {
		width: 100% !important;
	}

	.ohoche-cart__empty-img {
		width: 180px !important;
		height: 180px !important;
	}
}

@media (max-width: 380px) {
	.ohoche-cart__upsell-card {
		flex-basis: 92% !important;
		max-width: 92% !important;
		column-gap: 8px !important;
	}

	.ohoche-cart__upsell-thumb img {
		width: 50px !important;
		height: 50px !important;
	}

	.ohoche-cart__upsell-add {
		padding: 7px 12px !important;
		font-size: 11px !important;
	}
}
