/* LAFU Product Extras: storefront. Inherits the theme's fonts and colours. */

:root {
	--lafu-pe-radius: 4px;
	--lafu-pe-gap: .375rem;
	--lafu-pe-inset: .5rem;
	--lafu-pe-text: #1a1a1a;
	--lafu-pe-bg: #ffffff;
	--lafu-pe-line: #d6d6d6;
	--lafu-pe-accent: #1d4e89;
	--lafu-pe-overlay: rgba(0, 0, 0, .45);
}

/* Badges ------------------------------------------------------------ */

.wp-block-woocommerce-product-image:has(> .lafu-pe-badges),
.wc-block-components-product-image:has(> .lafu-pe-badges),
.wp-block-woocommerce-product-gallery-large-image:has(> .lafu-pe-badges),
.wp-block-woocommerce-product-image-gallery:has(> .lafu-pe-badges),
.woocommerce ul.products li.product,
.woocommerce div.product div.images {
	position: relative;
}

.lafu-pe-badges {
	position: absolute;
	z-index: 3;
	display: flex;
	flex-direction: column;
	gap: var(--lafu-pe-gap);
	max-width: calc(100% - 2 * var(--lafu-pe-inset));
	pointer-events: none;
}

.lafu-pe-badges--top-start,
.lafu-pe-badges--top-end {
	inset-block-start: var(--lafu-pe-inset);
}

.lafu-pe-badges--bottom-start,
.lafu-pe-badges--bottom-end {
	inset-block-end: var(--lafu-pe-inset);
}

.lafu-pe-badges--top-start,
.lafu-pe-badges--bottom-start {
	inset-inline-start: var(--lafu-pe-inset);
	align-items: flex-start;
}

.lafu-pe-badges--top-end,
.lafu-pe-badges--bottom-end {
	inset-inline-end: var(--lafu-pe-inset);
	align-items: flex-end;
}

.lafu-pe-badge {
	display: inline-block;
	padding: .2em .6em;
	border-radius: var(--lafu-pe-radius);
	background: var(--lafu-pe-bg);
	color: var(--lafu-pe-fg, #fff);
	font-size: .75rem;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: .01em;
	text-transform: none;
}

/* Icons ------------------------------------------------------------- */

.lafu-pe-icon {
	flex: none;
	vertical-align: middle;
}

/* Size guide link --------------------------------------------------- */

.lafu-pe-sizeguide {
	margin: 0 0 1em;
}

.lafu-pe-sizeguide__link {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font: inherit;
	text-decoration: underline;
	text-underline-offset: .2em;
	cursor: pointer;
}

.lafu-pe-sizeguide__link:hover {
	text-decoration-thickness: 2px;
}

.lafu-pe-sizeguide__link:focus-visible,
.lafu-pe-panel__close:focus-visible,
.lafu-pe-table-wrap:focus-visible {
	outline: 2px solid var(--lafu-pe-accent);
	outline-offset: 2px;
}

/* Side panel -------------------------------------------------------- */

.lafu-pe-panel {
	position: fixed;
	inset-block: 0;
	inset-inline: auto 0;
	margin: 0;
	padding: 0;
	width: min(28rem, 100vw);
	max-width: 100vw;
	height: 100dvh;
	max-height: 100dvh;
	border: 0;
	background: var(--lafu-pe-bg);
	color: var(--lafu-pe-text);
	box-shadow: 0 0 2rem rgba(0, 0, 0, .25);
	overflow: hidden;
}

.lafu-pe-panel[open] {
	display: flex;
	flex-direction: column;
	animation: lafu-pe-slide .25s ease-out;
}

.lafu-pe-panel::backdrop {
	background: var(--lafu-pe-overlay);
}

.lafu-pe-panel__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem 1.25rem;
	border-block-end: 1px solid var(--lafu-pe-line);
}

.lafu-pe-panel__head h2 {
	margin: 0;
	font-size: 1.15rem;
	line-height: 1.3;
}

.lafu-pe-panel__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 0;
	border-radius: var(--lafu-pe-radius);
	background: none;
	color: inherit;
	cursor: pointer;
}

.lafu-pe-panel__close:hover {
	background: rgba(0, 0, 0, .06);
}

.lafu-pe-panel__body {
	padding: 1.25rem;
	overflow-y: auto;
}

.lafu-pe-table-wrap {
	overflow-x: auto;
}

.lafu-pe-table {
	width: 100%;
	border-collapse: collapse;
	font-size: .95rem;
}

.lafu-pe-table th,
.lafu-pe-table td {
	padding: .6em .75em;
	border-block-end: 1px solid var(--lafu-pe-line);
	text-align: start;
	white-space: nowrap;
}

.lafu-pe-table thead th {
	border-block-end-width: 2px;
}

.lafu-pe-table tbody th {
	font-weight: 600;
}

.lafu-pe-panel__note {
	margin: 1em 0 0;
	font-size: .9rem;
	opacity: .8;
}

@keyframes lafu-pe-slide {
	from {
		transform: translateX(1.5rem);
		opacity: 0;
	}

	to {
		transform: none;
		opacity: 1;
	}
}

[dir="rtl"] .lafu-pe-panel[open] {
	animation-name: lafu-pe-slide-rtl;
}

@keyframes lafu-pe-slide-rtl {
	from {
		transform: translateX(-1.5rem);
		opacity: 0;
	}

	to {
		transform: none;
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.lafu-pe-panel[open] {
		animation: none;
	}
}
