/**
 * Dynamic Delivery — checkout UI (FlanFudge theme tokens when available).
 */

/* Delivery is a cart fee only — hide WooCommerce shipping line in order summary */
html.dd-dynamic-delivery-active .wp-block-woocommerce-checkout-order-summary-shipping-block,
body.dd-dynamic-delivery-active .wp-block-woocommerce-checkout-order-summary-shipping-block,
html.dd-dynamic-delivery-active .wp-block-woocommerce-cart-order-summary-shipping-block,
body.dd-dynamic-delivery-active .wp-block-woocommerce-cart-order-summary-shipping-block,
body.dd-dynamic-delivery-active .wc-block-components-totals-shipping,
body.dd-dynamic-delivery-active .woocommerce-shipping-totals,
body.dd-dynamic-delivery-active tr.shipping,
body.dd-dynamic-delivery-active #shipping_method {
	display: none !important;
}

/* Hide "Shipping options" step — delivery fee is set by Dynamic Delivery */
html.dd-dynamic-delivery-active .wc-block-components-checkout-step:has( .wc-block-checkout__shipping-option ),
body.dd-dynamic-delivery-active .wc-block-components-checkout-step:has( .wc-block-checkout__shipping-option ),
html.dd-dynamic-delivery-active fieldset.wc-block-checkout__shipping-option,
body.dd-dynamic-delivery-active fieldset.wc-block-checkout__shipping-option,
body.dd-dynamic-delivery-active .wc-block-checkout__shipping-option,
body.flanfudge-shop.woocommerce-checkout.dd-dynamic-delivery-active .wc-block-components-checkout-step:has( .wc-block-checkout__shipping-option ) {
	display: none !important;
}

/* Order received — hide placeholder "Free shipping" when GPS delivery was used */
body.dd-order-has-dynamic-delivery.woocommerce-order-received tr.shipping,
body.dd-order-has-dynamic-delivery.woocommerce-order-received .woocommerce-table--order-details tr.shipping,
body.dd-order-has-dynamic-delivery.woocommerce-order-received .shop_table.order_details tr.shipping,
body.dd-order-has-dynamic-delivery.woocommerce-order-received li.woocommerce-order-overview__shipping,
body.dd-order-has-dynamic-delivery.woocommerce-order-received .wc-block-components-totals-shipping,
body.dd-order-has-dynamic-delivery.woocommerce-order-received .wp-block-woocommerce-order-confirmation-totals-block .wc-block-components-totals-shipping,
body.flanfudge-shop.woocommerce-order-received.dd-order-has-dynamic-delivery .wc-block-components-totals-shipping,
body.flanfudge-shop.woocommerce-order-received.dd-order-has-dynamic-delivery tr.shipping {
	display: none !important;
}

/* Tight fit when mounted after block checkout address step content */
.wc-block-components-checkout-step__content + .dd-delivery-box,
.wc-block-checkout__shipping-address + .dd-delivery-box {
	margin-top: 0;
}

body.flanfudge-shop.woocommerce-checkout .wc-block-components-checkout-step__content + .dd-delivery-box {
	margin-top: 20px;
}

.wc-block-components-checkout-step__content:has( + .dd-delivery-box ) {
	margin-bottom: 0;
	padding-bottom: 0;
}

.dd-delivery-box {
	margin: 0 0 1rem;
	padding: 1.25rem 1.5rem;
	border: 1px solid var(--ff-border, #e8e4dc);
	border-radius: var(--ff-radius-xl, 12px);
	background: var(--ff-card, #faf8f4);
}

.dd-delivery-box__title {
	margin: 0 0 0.5rem;
	font-size: 1.125rem;
	color: var(--ff-foreground, #2e3b25);
}

.dd-delivery-box__intro {
	margin: 0 0 1rem;
	font-size: var(--ff-text-sm, 0.875rem);
	color: var(--ff-muted-fg, #4a5a52);
}

.dd-delivery-box__search {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
}

.dd-delivery-box__field {
	position: relative;
	flex: 1 1 auto;
	min-width: 0;
}

.dd-delivery-box__input {
	width: 100%;
	min-height: 42px;
	padding: 0.5rem 0.875rem;
	border: 1px solid var(--ff-border, #d8d3c8);
	border-radius: var(--ff-radius-xl, 999px);
	font-size: var(--ff-text-sm, 0.9375rem);
	font-family: inherit;
	background: var(--ff-card, #fff);
	color: var(--ff-foreground, #2e3b25);
	box-sizing: border-box;
}

.dd-delivery-box__input:focus {
	outline: none;
	border-color: var(--ff-foreground, #2e3b25);
	box-shadow: 0 0 0 3px rgb(31 42 36 / 0.08);
}

.dd-delivery-box__input.is-searching {
	background-image: linear-gradient(90deg, transparent, rgba(46, 59, 37, 0.06), transparent);
	background-size: 200% 100%;
	animation: dd-input-shimmer 1.2s ease-in-out infinite;
}

@keyframes dd-input-shimmer {
	0% {
		background-position: 200% 0;
	}
	100% {
		background-position: -200% 0;
	}
}

.dd-delivery-box__suggestions {
	position: absolute;
	z-index: 50;
	top: calc(100% + 4px);
	left: 0;
	right: 0;
	margin: 0;
	padding: 0.35rem 0;
	list-style: none;
	max-height: 220px;
	overflow-y: auto;
	border: 1px solid var(--ff-border, #e0ddd6);
	border-radius: var(--ff-radius, 10px);
	background: var(--ff-card, #fff);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

.dd-delivery-box__suggestion {
	padding: 0.55rem 0.875rem;
	font-size: var(--ff-text-sm, 0.875rem);
	color: var(--ff-foreground, #2e3b25);
	cursor: pointer;
}

.dd-delivery-box__suggestion:hover,
.dd-delivery-box__suggestion:focus {
	background: var(--ff-mist, #f3f0e8);
}

.dd-delivery-box__suggestion--empty {
	color: var(--ff-muted-fg, #6b7280);
	cursor: default;
}

.dd-delivery-box__suggestion--empty:hover {
	background: transparent;
}

/* GPS button — no WooCommerce .button class (avoids hidden icon / wrong colours) */
.dd-delivery-box__gps {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	flex: 0 0 42px;
	width: 42px !important;
	height: 42px !important;
	min-width: 42px;
	min-height: 42px;
	margin: 0;
	padding: 0 !important;
	border: 1px solid var(--ff-foreground, #1f2a24) !important;
	border-radius: 50% !important;
	background: var(--ff-foreground, #1f2a24) !important;
	color: var(--ff-cream, #faf8f4) !important;
	box-shadow: none !important;
	font-size: 0 !important;
	line-height: 0 !important;
	text-indent: 0 !important;
	overflow: visible !important;
	cursor: pointer;
	transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
	-webkit-appearance: none;
	appearance: none;
}

.dd-delivery-box__gps:hover,
.dd-delivery-box__gps:focus-visible {
	background: var(--ff-olive-soft, #2e3b25) !important;
	border-color: var(--ff-olive-soft, #2e3b25) !important;
	color: var(--ff-cream, #faf8f4) !important;
	outline: none;
	box-shadow: 0 0 0 3px rgb(31 42 36 / 0.12) !important;
}

.dd-delivery-box__gps:disabled {
	opacity: 0.7;
	cursor: wait;
}

.dd-delivery-box__gps-icon {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	pointer-events: none;
}

.dd-delivery-box__gps-svg {
	display: block !important;
	width: 20px !important;
	height: 20px !important;
	fill: currentColor;
	color: inherit;
}

.dd-delivery-box__gps.is-loading .dd-delivery-box__gps-icon {
	display: none !important;
}

.dd-delivery-box__spinner {
	display: none;
	width: 18px;
	height: 18px;
	border: 2px solid rgba(255, 255, 255, 0.35);
	border-top-color: currentColor;
	border-radius: 50%;
	animation: dd-spin 0.7s linear infinite;
}

.dd-delivery-box__gps.is-loading .dd-delivery-box__spinner {
	display: inline-block !important;
}

@keyframes dd-spin {
	to {
		transform: rotate(360deg);
	}
}

/* FlanFudge shop — beat WooCommerce / block checkout button resets */
body.flanfudge-shop .dd-delivery-box__gps,
body.flanfudge-shop.woocommerce-checkout .dd-delivery-box__gps,
body.flanfudge-shop.woocommerce-cart .dd-delivery-box__gps {
	background: var(--ff-foreground) !important;
	color: var(--ff-cream) !important;
	border-color: var(--ff-foreground) !important;
}

body.flanfudge-shop .dd-delivery-box__gps:hover,
body.flanfudge-shop.woocommerce-checkout .dd-delivery-box__gps:hover,
body.flanfudge-shop.woocommerce-cart .dd-delivery-box__gps:hover {
	background: var(--ff-olive-soft) !important;
	border-color: var(--ff-olive-soft) !important;
}

body.flanfudge-shop .dd-delivery-box__input {
	border-radius: var(--ff-radius-xl);
}

.dd-delivery-box__msg {
	margin: 0.75rem 0 0;
	font-size: var(--ff-text-sm, 0.875rem);
}

.dd-delivery-box__msg--error {
	color: #b42318;
}

.dd-delivery-box__msg--success {
	color: #1e7a3b;
}

.dd-delivery-summary {
	margin-top: 1rem;
	font-size: 0.9375rem;
}

.dd-delivery-summary__distance {
	margin: 0 0 0.35rem;
	color: var(--ff-foreground, #2e3b25);
}

.dd-delivery-summary__fee {
	margin: 0;
	color: var(--ff-foreground, #2e3b25);
}

.dd-delivery-summary__error {
	margin: 0;
	color: #b42318;
	font-weight: 600;
}

.dd-delivery-box__map {
	margin-top: 1rem;
	height: 220px;
	width: 100%;
	border-radius: var(--ff-radius, 10px);
	overflow: hidden;
	border: 1px solid var(--ff-border, #e0ddd6);
}

/* Map markers + animated store → customer route */
.dd-map-marker {
	background: transparent;
	border: 0;
}

.dd-map-marker__pin {
	display: block;
	width: 26px;
	height: 26px;
	border-radius: 50% 50% 50% 0;
	transform: rotate( -45deg );
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.22);
}

.dd-map-marker--store .dd-map-marker__pin {
	background: var(--ff-foreground, #1f2a24);
	border: 2px solid var(--ff-cream, #faf8f4);
}

.dd-map-marker--customer .dd-map-marker__pin {
	background: #3d7a52;
	border: 2px solid #fff;
}

.leaflet-overlay-pane path.dd-delivery-route__line {
	animation: dd-route-dash 1.1s linear infinite;
}

@keyframes dd-route-dash {
	to {
		stroke-dashoffset: -22;
	}
}

.dd-delivery-route__arrow-wrap {
	background: transparent;
	border: 0;
}

.dd-delivery-route__arrow {
	display: block;
	width: 0;
	height: 0;
	border-top: 6px solid transparent;
	border-bottom: 6px solid transparent;
	border-left: 11px solid #3d7a52;
	filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.15));
}

@media (prefers-reduced-motion: reduce) {
	.leaflet-overlay-pane path.dd-delivery-route__line {
		animation: none;
	}
}

@media (max-width: 640px) {
	.dd-delivery-box {
		padding: 1rem;
	}

	.dd-delivery-box__search {
		flex-wrap: nowrap;
	}

	.dd-delivery-box__gps {
		flex: 0 0 42px;
	}

	.dd-delivery-box__map {
		height: 180px;
	}
}
