.dem-configurator {
	--dem-red: #b61716;
	--dem-gold: #ffae00;
	--dem-ink: #3f3232;
	--dem-line: #ded8d8;
	--dem-paper: #fff;
	--dem-tint: #fff8e8;
	width: 100%; flex: 0 0 100%; min-width: 0; clear: both;
	margin: 0 0 24px; color: var(--dem-ink); font: 500 14px/1.5 Montserrat, sans-serif;
	text-align: left;
}
.dem-configurator[hidden], .dem-configurator [hidden] { display: none !important; }
.dem-configurator *, .dem-configurator *::before, .dem-configurator *::after { box-sizing: border-box; }
.dem-configurator .dem-title { margin: 0 0 12px; font: 500 30px/1.1 'Bebas Neue', sans-serif; color: var(--dem-ink); }
.dem-configurator fieldset { padding: 0; margin: 0; border: 0; min-width: 0; }
.dem-configurator .dem-menu-options { display: flex; flex-wrap: wrap; gap: 8px; }
.dem-configurator .dem-menu-card { display: flex; align-items: center; gap: 10px; flex: 1 1 145px; min-height: 74px; margin: 0; padding: 13px; border: 1px solid var(--dem-line); border-radius: 15px; background: var(--dem-paper); cursor: pointer; transition: border-color .18s, background .18s; }
.dem-configurator .dem-menu-card:has(input:checked) { border-color: var(--dem-gold); background: var(--dem-tint); box-shadow: inset 0 -3px 0 var(--dem-gold); }
.dem-configurator .dem-menu-card strong { display: block; font-size: 14px; font-weight: 700; }
.dem-configurator .dem-menu-card small { display: block; margin-top: 4px; font-size: 12px; }
.dem-configurator input[type=radio] { appearance: auto; position: static; opacity: 1; width: 19px; height: 19px; flex: 0 0 19px; margin: 0; accent-color: var(--dem-red); cursor: pointer; }
.dem-configurator .dem-panel { display: grid; grid-template-rows: 0fr; opacity: 0; visibility: hidden; transition: grid-template-rows .24s ease, opacity .2s ease, visibility .24s; }
.dem-configurator .dem-panel.is-open { grid-template-rows: 1fr; opacity: 1; visibility: visible; }
.dem-configurator .dem-panel-inner { min-height: 0; overflow: hidden; }
.dem-configurator .dem-group { margin-top: 20px; padding-left: 14px; border-left: 3px solid var(--dem-gold); }
.dem-configurator .dem-group legend { display: block; width: 100%; margin-bottom: 10px; padding: 0; font-size: 14px; font-weight: 700; color: var(--dem-ink); }
.dem-configurator .dem-requirement { display: inline-block; margin-left: 5px; font-size: 11px; font-weight: 500; }
.dem-configurator select { appearance: auto; width: 100%; max-width: 100%; min-height: 48px; padding: 10px 12px; margin: 0; border: 1px solid var(--dem-line); border-radius: 8px; background: var(--dem-paper); color: var(--dem-ink); font: inherit; }
.dem-configurator .dem-choice-list { display: grid; gap: 8px; }
.dem-configurator .dem-choice { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 10px 12px; margin: 0; border: 1px solid var(--dem-line); border-radius: 8px; background: var(--dem-paper); cursor: pointer; }
.dem-configurator .dem-choice:has(input:checked) { border-color: var(--dem-red); }
.dem-configurator .dem-choice span { flex: 1; overflow-wrap: anywhere; }
.dem-configurator .dem-choice small { flex-shrink: 0; font-size: 12px; }
.dem-configurator .dem-total { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; border-top: 1px solid var(--dem-line); padding-top: 14px; margin-top: 18px; }
.dem-configurator .dem-total-price { color: var(--dem-red); font: 700 24px/1.2 Montserrat, sans-serif; }
.dem-configurator .has-error { border-color: var(--dem-red); }
.dem-configurator .dem-field-error, .dem-configurator .dem-submit-error { color: var(--dem-red); font-size: 12px; margin: 8px 0 0; }
.dem-configurator :is(input,select):focus-visible { outline: 2px solid var(--dem-red); outline-offset: 3px; }
.dem-configurator :is(.dem-menu-card,.dem-choice):has(input:focus-visible) { outline: 2px solid var(--dem-red); outline-offset: 2px; }
/* The JetWooBuilder cart widget can use a flex row for quantity and submit. */
form.cart:has(> .dem-configurator), .woocommerce-variation-add-to-cart:has(> .dem-configurator) { flex-wrap: wrap !important; min-width: 0; width: 100%; }
.dem-configurator, .dem-configurator input, .dem-configurator select { scroll-margin-top: 100px; }
@media (max-width: 480px) {
	.dem-configurator .dem-menu-card { flex-basis: 100%; min-height: 60px; }
	.dem-configurator .dem-menu-card > span { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex: 1; }
	.dem-configurator .dem-menu-card small { margin: 0; flex-shrink: 0; }
	.dem-configurator select { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) { .dem-configurator * { transition: none !important; } }

/* The theme's floating phone/cart duplicate header/footer links and cover form controls. */
@media (max-width: 767px) {
 body:has(.dem-configurator:not([hidden])) .elementor-fixed.elementor-widget-jet-blocks-cart,
 body:has(.dem-configurator:not([hidden])) .elementor-fixed.elementor-element-0b8a697 { display: none !important; }
}

.woocommerce-variation-add-to-cart:has(> .dem-configurator) > .single_add_to_cart_button { min-height: 48px; flex: 1 1 170px; }
.woocommerce-variation-add-to-cart:has(> .dem-configurator) .qib-button,
.woocommerce-variation-add-to-cart:has(> .dem-configurator) input.qty { height: 48px !important; min-height: 48px !important; min-width: 44px !important; }

/* Extra Menu Modal / Popup */
body.dem-modal-open { overflow: hidden !important; }
body.dem-modal-open .elementor-fixed { display: none !important; }

.dem-modal {
	position: fixed; inset: 0; z-index: 999999;
	display: flex; align-items: center; justify-content: center;
	padding: 20px; font-family: Montserrat, sans-serif;
}
.dem-modal[hidden] { display: none !important; }

.dem-modal-backdrop {
	position: absolute; inset: 0;
	background: rgba(26, 18, 18, 0.72);
	backdrop-filter: blur(5px);
	-webkit-backdrop-filter: blur(5px);
}

.dem-modal-dialog {
	position: relative; z-index: 2;
	width: 100%; max-width: 500px; max-height: 90vh;
	background: #fff; border-radius: 20px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
	display: flex; flex-direction: column;
	overflow: hidden;
	animation: demModalSlideUp .22s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes demModalSlideUp {
	from { opacity: 0; transform: translateY(20px) scale(0.97); }
	to { opacity: 1; transform: translateY(0) scale(1); }
}

.dem-modal-close {
	position: absolute !important; top: 14px !important; right: 14px !important;
	width: 34px !important; height: 34px !important; border-radius: 50% !important;
	border: none !important; background: #ebe6e6 !important; color: #443 !important;
	font-size: 22px !important; line-height: 1 !important;
	display: flex !important; align-items: center !important; justify-content: center !important;
	cursor: pointer !important; transition: background .15s, transform .15s !important;
	padding: 0 !important; z-index: 10 !important;
}
.dem-modal-close:hover { background: #dbd3d3 !important; color: #111 !important; transform: scale(1.06) !important; }

.dem-modal-header {
	padding: 18px 22px 14px;
	background: #faf8f5;
	border-bottom: 1px solid #ebe5e5;
}
.dem-modal-product-summary {
	display: flex; align-items: center; gap: 14px;
	padding-right: 32px;
}
.dem-modal-thumb {
	width: 58px; height: 58px; border-radius: 12px;
	object-fit: cover; flex-shrink: 0;
	border: 1px solid #e5dfdf;
}
.dem-modal-thumb[hidden] { display: none !important; }
.dem-modal-title-wrap { min-width: 0; flex: 1; }
.dem-modal-badge {
	display: inline-block; font-size: 10px; font-weight: 800;
	text-transform: uppercase; letter-spacing: 0.6px;
	color: #b61716; background: #ffebeb;
	padding: 2px 7px; border-radius: 5px; margin-bottom: 3px;
}
.dem-modal-product-name {
	margin: 0; font-size: 17px; font-weight: 700;
	line-height: 1.25; color: #2b2222;
	overflow-wrap: break-word;
}
.dem-modal-product-price-row {
	margin: 3px 0 0; font-size: 13px; color: #665;
}
.dem-modal-product-price-row strong { color: var(--dem-ink); }

.dem-modal-body {
	padding: 18px 22px;
	overflow-y: auto; -webkit-overflow-scrolling: touch;
	flex: 1; min-height: 0;
}
.dem-configurator--modal { margin: 0; }
.dem-configurator--modal .dem-title { font-size: 20px; margin-bottom: 10px; }

.dem-modal-footer {
	padding: 14px 20px;
	border-top: 1px solid #ebe5e5;
	background: #fff;
	display: flex; align-items: center; gap: 12px;
	flex-shrink: 0;
}
.dem-modal-qty-container {
	display: flex !important; align-items: center !important;
	border: 1.5px solid #ded8d8 !important; border-radius: 10px !important;
	height: 48px !important; min-height: 48px !important;
	background: #faf8f5 !important;
	overflow: hidden !important; flex-shrink: 0 !important;
}
.dem-modal-dialog .dem-modal-qty-btn {
	width: 38px !important; height: 100% !important;
	border: none !important; background: transparent !important;
	font-size: 20px !important; font-weight: 700 !important;
	color: #443 !important; cursor: pointer !important;
	display: flex !important; align-items: center !important; justify-content: center !important;
	padding: 0 !important; transition: background .12s !important;
}
.dem-modal-dialog .dem-modal-qty-btn:hover { background: #ede6d8 !important; }
.dem-modal-dialog .dem-modal-qty-input {
	width: 40px !important; height: 100% !important;
	border: none !important; background: transparent !important;
	text-align: center !important; font-weight: 700 !important;
	font-size: 16px !important; color: #222 !important;
	padding: 0 !important; -moz-appearance: textfield !important;
}
.dem-modal-dialog .dem-modal-qty-input::-webkit-inner-spin-button,
.dem-modal-dialog .dem-modal-qty-input::-webkit-outer-spin-button { display: none !important; }

.dem-modal-dialog button.dem-modal-submit-button {
	flex: 1 1 auto !important; height: 48px !important; min-height: 48px !important;
	border: none !important; border-radius: 12px !important;
	background: #b61716 !important; color: #ffffff !important;
	font-family: Montserrat, sans-serif !important; font-size: 15px !important;
	font-weight: 700 !important; text-transform: none !important;
	display: inline-flex !important; align-items: center !important;
	justify-content: center !important; gap: 8px !important;
	padding: 0 18px !important; cursor: pointer !important;
	box-shadow: 0 4px 14px rgba(182, 23, 22, 0.35) !important;
	transition: background .15s, transform .1s, box-shadow .15s !important;
}
.dem-modal-dialog button.dem-modal-submit-button:hover {
	background: #981211 !important; color: #ffffff !important;
	box-shadow: 0 6px 18px rgba(182, 23, 22, 0.45) !important;
}
.dem-modal-dialog button.dem-modal-submit-button.is-loading {
	opacity: 0.8 !important; pointer-events: none !important; cursor: wait !important;
}
.dem-modal-dialog button.dem-modal-submit-button.is-success {
	background: #1e7e34 !important; color: #ffffff !important;
	box-shadow: 0 4px 12px rgba(30, 126, 52, 0.35) !important;
}
.dem-modal-dialog button.dem-modal-submit-button span {
	color: #ffffff !important;
}
.dem-modal-dialog .dem-modal-submit-sep { opacity: 0.7 !important; }

@media (max-width: 540px) {
	.dem-modal { padding: 0; align-items: flex-end; }
	.dem-modal-dialog {
		max-height: 88vh;
		border-bottom-left-radius: 0; border-bottom-right-radius: 0;
	}
	.dem-modal-header { padding: 16px 18px 12px; }
	.dem-modal-body { padding: 14px 18px; }
	.dem-modal-footer { padding: 12px 18px 16px; }
}
