/**
 * Theme styles.
 *
 * Only markup without a source equivalent (WooCommerce/WordPress output) and
 * functional state rules live here. All source elements keep their compiled
 * utility classes from app.css.
 */

/* -------------------------------------------------------------------------
 * 1. Build-gap utilities (source utility classes missing from the build)
 * ---------------------------------------------------------------------- */
.duration-\[900ms\] {
	transition-duration: 900ms;
}
.duration-\[1200ms\] {
	transition-duration: 1200ms;
}
.duration-\[1400ms\] {
	transition-duration: 1400ms;
}
.ease-\[cubic-bezier\(0\.22\2c 0\.61\2c 0\.36\2c 1\)\] {
	transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
}
.theme-featured-headline {
	font-size: min(10rem, 9.5vw);
}

/* Hidden attribute must win over utility display classes. */
[hidden] {
	display: none !important;
}

/* -------------------------------------------------------------------------
 * 2. Header, announcement bar and mobile menu
 * ---------------------------------------------------------------------- */
.site-logo-img {
	height: var(--logo-height) !important;
	width: auto !important;
	display: block;
}
.site-logo-text {
	line-height: var(--logo-height);
	display: block;
}

.site-header {
	top: 0;
}
body.theme-announcement-visible .site-header {
	top: 36px;
}
/* Hero sits flush under the fixed header: the wrapper owns the offset so no
   margin can collapse and open a gap. */
/* The hero butts directly against the fixed header. The offset is applied to
   the hero itself (not as padding on the wrapper) and is measured at runtime so
   no gap can appear, whatever the header or announcement height is. */
.theme-hero-wrap {
	padding-top: 0;
}
.theme-hero-wrap > [data-hero] {
	margin-top: var(--theme-hero-offset, 6rem);
}
@media (min-width: 1024px) {
	.theme-hero-wrap > [data-hero] {
		margin-top: var(--theme-hero-offset, 7rem);
	}
}

.theme-nav-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.theme-nav-list li a {
	font-size: 0.875rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	font-family: var(--font-body);
	font-weight: 500;
	transition: color 0.3s;
}
.theme-nav-list li a:hover {
	opacity: 0.8;
}

.theme-mega {
	display: none;
}
@media (min-width: 1024px) {
	.theme-mega.is-open {
		display: block;
	}
}
.theme-mega-columns {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.theme-mega-columns.is-single {
	grid-template-columns: repeat(1, minmax(0, 1fr));
}

.theme-mobile-menu {
	top: 96px;
	opacity: 0;
	transform: translateY(-0.5rem);
	pointer-events: none;
}
body.theme-announcement-visible .theme-mobile-menu {
	top: 132px;
}
.theme-mobile-menu.is-open {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}
body.menu-open {
	overflow: hidden;
}
[data-mobile-menu-toggle] .theme-burger-line:first-child {
	transform: translateY(-5px);
}
[data-mobile-menu-toggle].is-open .theme-burger-line:first-child {
	transform: translateY(-50%) rotate(45deg);
}
[data-mobile-menu-toggle].is-open .theme-burger-line:last-child {
	width: 1.5rem;
	transform: translateY(-50%) rotate(-45deg);
}

/* -------------------------------------------------------------------------
 * 3. Motion: hero carousel, scroll reveals, parallax
 * ---------------------------------------------------------------------- */
.hero-slide {
	opacity: 0;
	transition: opacity 1.2s cubic-bezier(0.25, 0.4, 0.25, 1);
}
.hero-slide img,
.hero-slide.is-active {
	opacity: 1;
}
.hero-slide:not(.is-active) {
	opacity: 0;
}
.hero-slide.is-active {
	animation: theme-hero-fade 1.2s cubic-bezier(0.25, 0.4, 0.25, 1) both;
}
@keyframes theme-hero-fade {
	from {
		opacity: 0;
		transform: scale(1.03);
	}
	to {
		opacity: 1;
		transform: scale(1);
	}
}
.hero-panel {
	display: none;
}
.hero-panel.is-active {
	display: block;
	animation: theme-hero-panel 0.7s cubic-bezier(0.25, 0.4, 0.25, 1) both;
}
@keyframes theme-hero-panel {
	from {
		opacity: 0;
		translate: 0 24px;
	}
	to {
		opacity: 1;
		translate: 0 0;
	}
}

.reveal {
	opacity: 0;
	translate: 0 40px;
	transition: opacity 0.9s cubic-bezier(0.25, 0.4, 0.25, 1),
		translate 0.9s cubic-bezier(0.25, 0.4, 0.25, 1);
	will-change: opacity, translate;
}
.reveal.is-visible {
	opacity: 1;
	translate: 0 0;
}
body.is-customizer .reveal,
.no-js .reveal {
	opacity: 1;
	translate: 0 0;
}
[data-parallax-from] {
	will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
	.reveal {
		opacity: 1;
		translate: 0 0;
		transition: none;
	}
	.hero-slide,
	.hero-slide.is-active,
	.hero-panel.is-active {
		animation: none;
	}
	[data-parallax-from] {
		transform: none !important;
	}
}

/* Product card image hover (source framer-motion whileHover) */
.theme-product-card img.theme-card-img {
	transition: transform 1s cubic-bezier(0.25, 0.4, 0.25, 1);
	display: block;
}
.theme-product-card:hover img.theme-card-img {
	transform: scale(1.04);
}
.theme-product-card img {
	display: block;
}

/* -------------------------------------------------------------------------
 * 4. Dialogs, dropdowns and the colour wheel
 * ---------------------------------------------------------------------- */
[data-dialog][hidden],
#theme-search-dialog[hidden],
#theme-color-dialog[hidden] {
	display: none;
}
[data-dropdown-list][hidden] {
	display: none;
}
.theme-dropdown {
	list-style: none;
	margin: 0;
	padding: 0;
}
.theme-dropdown li button > svg.hidden {
	display: none;
}

.theme-vertical-range {
	writing-mode: vertical-lr;
	-webkit-appearance: slider-vertical;
	background: linear-gradient(to bottom, #fff, #000);
}
.theme-vertical-range::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 10px;
	height: 10px;
	border-radius: 9999px;
	background: hsl(var(--foreground));
}

.theme-contact-select {
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235c1626' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1rem center;
	background-size: 16px;
}

/* -------------------------------------------------------------------------
 * 5. Side cart
 * ---------------------------------------------------------------------- */
#theme-cart-drawer {
	opacity: 0;
	transform: translateY(24px);
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.8s var(--transition-smooth), transform 0.8s var(--transition-smooth),
		visibility 0.8s;
}
body.cart-open #theme-cart-drawer {
	opacity: 1;
	transform: none;
	visibility: visible;
	pointer-events: auto;
}
body.cart-open {
	overflow: hidden;
}

#theme-cart-overlay {
	position: fixed;
	inset: 0;
	z-index: 40;
	background: hsl(var(--foreground) / 0.3);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s ease, visibility 0.3s ease;
}
body.cart-open #theme-cart-overlay {
	opacity: 1;
	visibility: visible;
}

#theme-cart-drawer.is-updating > * {
	opacity: 0.6;
	pointer-events: none;
}

.theme-cart-count:empty {
	display: none;
}

/* -------------------------------------------------------------------------
 * 6. WooCommerce shared
 * ---------------------------------------------------------------------- */
.single_add_to_cart_button.button:disabled,
.single_add_to_cart_button.button.disabled,
.add_to_cart_button.button:disabled,
.add_to_cart_button.button.disabled {
	cursor: not-allowed !important;
	opacity: 0.4 !important;
	pointer-events: none !important;
}
.single_add_to_cart_button.button:disabled:hover,
.single_add_to_cart_button.button.disabled:hover,
.add_to_cart_button.button:disabled:hover,
.add_to_cart_button.button.disabled:hover {
	opacity: 0.4 !important;
}

.woocommerce-page a.added_to_cart.wc-forward,
.single-product a.added_to_cart.wc-forward,
body a.added_to_cart.wc-forward {
	display: none !important;
}

.ajax_add_to_cart.theme-btn-loading {
	opacity: 0.6 !important;
	pointer-events: none !important;
	cursor: wait !important;
}
.single-product .single_add_to_cart_button.loading::after,
.ajax_add_to_cart.loading::after {
	display: none !important;
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	list-style: none;
	margin: 0 0 1.5rem;
	padding: 1rem 1.25rem;
	border: 1px solid hsl(var(--border));
	border-radius: 0.5rem;
	background: hsl(var(--secondary));
	color: hsl(var(--foreground));
	font-family: var(--font-body);
	font-size: 0.875rem;
}
.woocommerce-error {
	border-color: hsl(var(--destructive) / 0.5);
	color: hsl(var(--destructive));
}
.single-product .woocommerce-message,
.single-product .woocommerce-info {
	display: none;
}
#theme-cart-drawer .woocommerce-message {
	display: none;
}

.woocommerce-pagination {
	margin-top: 3rem;
}
.woocommerce-pagination ul {
	display: flex;
	gap: 0.75rem;
	justify-content: center;
	list-style: none;
	margin: 0;
	padding: 0;
}
.woocommerce-pagination ul li a,
.woocommerce-pagination ul li span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.5rem;
	height: 2.5rem;
	border: 1px solid hsl(var(--border));
	font-family: var(--font-body);
	font-size: 0.875rem;
}
.woocommerce-pagination ul li span.current,
.woocommerce-pagination ul li a:hover {
	background: hsl(var(--primary));
	color: hsl(var(--primary-foreground));
	border-color: hsl(var(--primary));
}

/* Price markup inside cards and product info */
.theme-product-card .price,
.theme-product-card .woocommerce-Price-amount {
	font-family: var(--font-body);
	font-size: 13px;
	color: hsl(var(--foreground));
}
.theme-product-info .price {
	display: inline-flex;
	gap: 0.5rem;
	align-items: baseline;
}
.theme-product-info .price del {
	opacity: 0.6;
	font-size: 0.8em;
}
.theme-product-info .price ins {
	text-decoration: none;
}

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

/* -------------------------------------------------------------------------
 * 7. Single product
 * ---------------------------------------------------------------------- */
.single-product .theme-product-layout,
.single-product .theme-product-gallery,
.single-product .theme-product-info {
	min-width: 0;
	max-width: 100%;
}
.single-product .theme-product-thumbnails {
	flex-wrap: wrap;
	max-width: 100%;
}
.single-product .theme-add-to-cart-area {
	display: flex;
	align-items: stretch;
	flex-wrap: wrap;
	gap: 0.75rem;
	flex-direction: column;
}
.single-product .theme-add-to-cart-area > div {
	width: 100%;
}
.single-product .single_add_to_cart_button {
	flex: 1 1 auto;
	min-width: 160px;
}
.single-product .woocommerce-product-details__short-description,
.single-product .woocommerce-variation-description,
.single-product .posted_in {
	overflow-wrap: break-word;
	word-break: break-word;
}
.single-product .variations tbody,
.single-product .variations tbody tr,
.single-product .variations tbody td {
	display: block;
	width: 100%;
}
.single-product .variations tbody td.label {
	padding-bottom: 0.25rem;
}
.single-product .variations tbody td.value {
	padding-top: 0;
}
.theme-attr-select-hidden {
	display: none !important;
}
.theme-variations-hidden {
	display: none !important;
}
.single-product .single_variation_wrap {
	display: block !important;
}
.single-product .single_variation_wrap .woocommerce-variation {
	display: none;
}
.theme-product-description p + p {
	margin-top: 1rem;
}
.theme-product-thumb img {
	display: block;
}
input.theme-qty-input::-webkit-outer-spin-button,
input.theme-qty-input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
input.theme-qty-input {
	-moz-appearance: textfield;
}

/* Form fields rendered by WooCommerce (no source markup) */
.single-product .variations select,
.woocommerce .form-row input.input-text,
.woocommerce .form-row select,
.woocommerce form .form-row textarea {
	width: 100%;
	background: hsl(var(--background));
	border: 1px solid hsl(var(--border));
	border-radius: 0.5rem;
	padding: 0.75rem 1rem;
	font-family: var(--font-body);
	font-size: 0.875rem;
	color: hsl(var(--foreground));
}
.single-product .variations select:focus,
.woocommerce .form-row input.input-text:focus,
.woocommerce .form-row select:focus {
	outline: none;
	border-color: hsl(var(--primary));
}

/* -------------------------------------------------------------------------
 * 8. Inner pages + checkout / cart / account / thank you
 * ---------------------------------------------------------------------- */
.theme-page-main {
	padding-top: 8rem;
	padding-bottom: 4rem;
}
body .theme-page-main.theme-page-main {
	min-width: 0;
}
.page-title {
	font-family: var(--font-display);
	font-weight: 400;
	font-size: clamp(2rem, 4vw, 3rem);
	line-height: 1.1;
	margin: 0 0 2rem;
	color: hsl(var(--foreground));
}
.entry-content > * + * {
	margin-top: 1rem;
}

body.woocommerce-checkout .woocommerce,
body.woocommerce-cart .woocommerce,
body.woocommerce-account .woocommerce {
	width: 100%;
	max-width: none;
}

body.woocommerce-checkout .wc-block-checkout,
body.woocommerce-cart .wc-block-cart {
	display: block;
	font-family: var(--font-body);
	color: hsl(var(--foreground));
}
body.woocommerce-checkout .wc-block-checkout__main,
body.woocommerce-checkout .wc-block-checkout__sidebar,
body.woocommerce-cart .wc-block-cart__main,
body.woocommerce-cart .wc-block-cart__sidebar {
	min-width: 0;
	width: 100%;
	max-width: none;
}
@media (min-width: 768px) {
	body.woocommerce-checkout
		.wc-block-components-sidebar-layout.wc-block-checkout.is-large,
	body.woocommerce-cart .wc-block-components-sidebar-layout.wc-block-cart.is-large {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: var(--checkout-gap, 2rem);
		align-items: start;
	}
	body.woocommerce-checkout
		.wc-block-components-sidebar-layout:not(.is-large) {
		display: flex;
		flex-direction: column;
	}
}

body.woocommerce-checkout .wc-block-components-text-input input,
body.woocommerce-checkout .wc-block-components-select select,
body.woocommerce-checkout .wc-block-components-textarea textarea,
body.woocommerce-checkout .wc-blocks-components-select__select {
	width: 100% !important;
	max-width: none !important;
	background-color: hsl(var(--background)) !important;
	border: 1px solid hsl(var(--border)) !important;
	border-radius: calc(var(--radius) - 2px) !important;
	color: hsl(var(--foreground)) !important;
	font-family: var(--font-body) !important;
	font-size: 0.875rem !important;
}
body.woocommerce-checkout .wc-block-components-text-input input:focus,
body.woocommerce-checkout .wc-block-components-select select:focus,
body.woocommerce-checkout .wc-block-components-textarea textarea:focus {
	outline: none !important;
	border-color: hsl(var(--primary)) !important;
	box-shadow: 0 0 0 1px hsl(var(--primary)) !important;
}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button,
body.woocommerce-checkout .wc-block-components-button {
	background-color: hsl(var(--primary)) !important;
	color: hsl(var(--primary-foreground)) !important;
	border: 1px solid hsl(var(--primary)) !important;
	border-radius: calc(var(--radius) - 2px) !important;
	font-family: var(--font-body) !important;
	font-size: 0.75rem !important;
	letter-spacing: 0.24em !important;
	text-transform: uppercase !important;
	font-weight: 500 !important;
}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button:hover,
body.woocommerce-checkout .wc-block-components-button:hover {
	background-color: hsl(var(--background)) !important;
	color: hsl(var(--primary)) !important;
}
body.woocommerce-checkout .wc-block-checkout__sidebar {
	background-color: hsl(var(--secondary) / 0.4);
	border-radius: var(--radius);
	padding: 2rem;
}
body.woocommerce-checkout .wc-block-components-title,
body.woocommerce-checkout .wc-block-checkout__sidebar .wc-block-components-title {
	font-family: var(--font-display) !important;
	font-weight: 400 !important;
	color: hsl(var(--foreground)) !important;
	line-height: 1.08 !important;
}
body.woocommerce-checkout .wc-block-components-notice-banner,
body.woocommerce-checkout .wc-block-components-notice-banner.is-error,
body.woocommerce-checkout .wc-block-components-notice-banner.is-info {
	border: 1px solid hsl(var(--border)) !important;
	border-radius: 0.5rem !important;
	background: hsl(var(--secondary)) !important;
	color: hsl(var(--foreground)) !important;
	font-family: var(--font-body) !important;
	grid-column: 1 / -1;
}
body.woocommerce-checkout .wc-block-cart-items {
	border-color: hsl(var(--border)) !important;
}
body.woocommerce-checkout .wc-block-cart-items__row {
	border-color: hsl(var(--border)) !important;
}

body.theme-thankyou-page {
	overflow-x: hidden;
}
body.theme-thankyou-page .woocommerce-order {
	font-family: var(--font-body);
}
body.theme-thankyou-page .woocommerce-order h2,
body.theme-thankyou-page .woocommerce-order-details__title,
body.theme-thankyou-page .woocommerce-column__title {
	font-family: var(--font-display);
	font-weight: 400;
	font-size: 1.5rem;
	padding: 0 0 1rem 0;
	color: hsl(var(--foreground));
}
body.theme-thankyou-page .woocommerce-order-overview {
	display: flex;
	flex-wrap: wrap;
	gap: 1.5rem;
	list-style: none;
	margin: 0 0 2rem;
	padding: 0;
	border: 0;
}
body.theme-thankyou-page .woocommerce-order-overview li {
	border: 1px solid hsl(var(--border));
	padding: 1rem 1.25rem;
	font-size: 0.75rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}
body.theme-thankyou-page .woocommerce-order-details table {
	width: 100%;
	table-layout: fixed;
	border-collapse: collapse;
}
body.theme-thankyou-page .woocommerce-order-details th,
body.theme-thankyou-page .woocommerce-order-details td {
	border-bottom: 1px solid hsl(var(--border));
	padding: 0.75rem 0;
	font-size: 0.875rem;
}
body.theme-thankyou-page .woocommerce-order-details tfoot th {
	text-align: left;
}
body.theme-thankyou-page .woocommerce-order-details tfoot td {
	text-align: right;
}
body.theme-thankyou-page .woocommerce-customer-details {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
	margin-top: 2rem;
}
body.theme-thankyou-page .woocommerce-customer-details address {
	max-width: 480px;
	overflow-wrap: break-word;
	border: 1px solid hsl(var(--border));
	padding: 1.25rem;
	font-size: 0.875rem;
	font-style: normal;
}

/* Classic cart / account tables (fallback markup) */
.woocommerce table.shop_table {
	width: 100%;
	border-collapse: collapse;
	border: 1px solid hsl(var(--border));
	font-family: var(--font-body);
	font-size: 0.875rem;
}
.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
	border-bottom: 1px solid hsl(var(--border));
	padding: 0.75rem;
	text-align: left;
}
.woocommerce .button,
.woocommerce button.button.alt {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: hsl(var(--primary));
	color: hsl(var(--primary-foreground));
	border: 1px solid hsl(var(--primary));
	border-radius: calc(var(--radius) - 2px);
	padding: 0.75rem 1.5rem;
	font-family: var(--font-body);
	font-size: 0.75rem;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	transition: background-color 0.3s, color 0.3s;
}
.woocommerce .button:hover,
.woocommerce button.button.alt:hover {
	background: hsl(var(--background));
	color: hsl(var(--primary));
}

/* Our story: breathing room between the portrait and the copy on small screens */
@media (max-width: 1023px) {
	.theme-brand-story-copy {
		margin-top: 2.5rem;
	}
}
