/* ==========================================================================
   London's Broomstick — theme stylesheet
   ========================================================================== */

:root {
	/* HSL channels — must match src/index.css (Lovable). Use as hsl(var(--token)). */
	--background: 44 38% 95%;
	--foreground: 220 40% 14%;
	--card: 42 32% 91%;
	--primary: 156 30% 21%;
	--primary-foreground: 44 42% 96%;
	--secondary: 42 30% 91%;
	--secondary-foreground: 220 40% 14%;
	--muted: 40 22% 88%;
	--destructive: 0 66% 42%;
	--destructive-foreground: 0 0% 100%;
	--muted-foreground: 200 12% 38%;
	--accent: 38 54% 42%;
	--accent-foreground: 44 44% 97%;
	--border: 38 20% 82%;
	--rosa: 344 46% 66%;
	--marigold: 40 64% 54%;
	--teal: 156 26% 32%;
	--lilac: 268 24% 76%;
	--indigo: 220 44% 15%;
	--nopal: 26 30% 30%;
	--butter: 44 40% 92%;

	--radius: 0.75rem;
	--font-display: 'Cormorant Garamond', Georgia, serif;
	--font-body: 'Karla', system-ui, sans-serif;
	--font-script: 'Italianno', 'Cormorant Garamond', cursive;

	--shadow-soft: 0 4px 20px -4px hsl(220 40% 16% / 0.16);
	--shadow-elevated: 0 14px 44px -14px hsl(220 40% 16% / 0.32);
	--shadow-glow: 0 0 60px -14px hsl(40 62% 58% / 0.5);
	--transition-smooth: cubic-bezier(0.4, 0, 0.2, 1);

	--logo-height-setting: 96px;
	--header-height: 116px;

	--btn-radius: 999px;
	--btn-height: 52px;
	--btn-padding: 0 2.2rem;
	--btn-font-size: 13px;
	--btn-font-weight: 600;
	--btn-letter-spacing: 0.2em;
	--btn-text-transform: uppercase;
	--btn-icon-padding: 0.6rem;
	--card-radius: 1rem;
	--checkout-gap: 2.5rem;
	--color-button-text: hsl(var(--accent-foreground));
	--color-primary: hsl(var(--primary));
	--color-surface: hsl(var(--card));
}

/* ---------- Reset & base ---------- */
* { box-sizing: border-box; }
html, body { max-width: 100%; overflow-x: clip; }
html { scroll-behavior: smooth; }
body:not(.home) {
	padding-top: 88px;
}
@media (min-width: 768px) {
	body:not(.home) { padding-top: 116px; }
}
body {
	margin: 0;
	background: hsl(var(--background));
	color: hsl(var(--foreground));
	font-family: var(--font-body);
	font-size: 1rem;
	font-weight: 400;
	font-style: normal;
	-webkit-font-smoothing: antialiased;
	line-height: 1.5;
}
::selection {
	background: hsl(var(--accent) / 0.25);
}
img { max-width: 100%; display: block; }
img:not(.cover-img):not(.hero-bg-img):not(.brewing-bg):not(.about-image):not(.community-image):not(.theme-product-card__image-wrap img):not(.theme-product-card__img):not(.theme-cart-item__image img):not(.theme-product-gallery__main img):not(.theme-product-thumb img):not(.site-logo-img):not(.footer-logo-img) {
	max-width: 100%;
	height: auto;
}
.theme-product-card__image-wrap img,
.theme-product-card__img,
.theme-cart-item__image img,
.theme-product-gallery__main img,
.theme-product-thumb img {
	width: 100%;
	height: 100% !important;
	object-fit: cover;
}
.site-logo-img-wrap { display: flex; align-items: center; height: var(--logo-height); }
.site-logo-img,
.footer-logo-img {
	height: 100% !important;
	width: auto !important;
	max-width: none;
	object-fit: contain;
}
.footer-logo { display: flex; align-items: center; height: 5rem; }
@media (min-width: 768px) { .footer-logo { height: 7rem; } }
.cover-img, .hero-bg-img, .brewing-bg, .about-image, .community-image {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
	object-position: center;
}
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }
input, textarea, select { font-family: inherit; font-size: 1rem; }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-display);
	font-weight: inherit;
	font-size: inherit;
	letter-spacing: -0.01em;
	margin: 0;
}
.font-script { font-family: var(--font-script); }
.text-accent { color: hsl(var(--accent)); }
.text-marigold { color: hsl(var(--marigold)); }
.text-foreground { color: hsl(var(--foreground)); }
.section-heading .font-script,
.section-heading .text-accent.font-script {
	font-family: var(--font-script);
	font-weight: 400;
	font-style: normal;
}
.section-heading .text-accent:not(.font-script) { color: hsl(var(--accent)); }
.section-heading .text-marigold.font-script { color: hsl(var(--marigold)); }

.container-wide { width: 100%; max-width: 80rem; margin: 0 auto; padding: 0 1.5rem; }
@media (min-width: 1024px) { .container-wide { padding: 0 2rem; } }

.scroll-mt { scroll-margin-top: 6rem; }

/* ---------- Reveal / scroll animations (Section 2.1) ---------- */
.reveal-item { opacity: 0; transform: translateY(28px); transition: opacity 0.7s var(--transition-smooth), transform 0.7s var(--transition-smooth); }
.reveal-item.is-visible { opacity: 1; transform: translateY(0); }
.scale-in-item { transform: scale(0.96) translateY(10px); }
.scale-in-item.is-visible { transform: scale(1) translateY(0); }
body.is-customizer .reveal-item,
body.is-customizer .scale-in-item { opacity: 1 !important; transform: none !important; }

@keyframes theme-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes theme-slide-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
.animate-fade-in { animation: theme-fade-in 0.4s var(--transition-smooth) forwards; }
.animate-slide-up { animation: theme-slide-up 0.5s var(--transition-smooth) forwards; }

@keyframes theme-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.shimmer-loading {
	background: linear-gradient(90deg, hsl(var(--muted)) 0%, hsl(var(--secondary)) 50%, hsl(var(--muted)) 100%);
	background-size: 200% 100%;
	animation: theme-shimmer 1.6s ease-in-out infinite;
}

@keyframes theme-gold-pan { 0% { background-position: 0% center; } 100% { background-position: 200% center; } }
.text-gradient-gold {
	background: linear-gradient(100deg, hsl(var(--marigold)), hsl(var(--accent)), hsl(var(--marigold)));
	background-size: 200% auto;
	-webkit-background-clip: text; background-clip: text; color: transparent;
	animation: theme-gold-pan 7s linear infinite;
}

@keyframes theme-drift { 0%, 100% { transform: translate3d(0,0,0) scale(1); } 50% { transform: translate3d(0,-14px,0) scale(1.04); } }
.animate-drift { animation: theme-drift 14s ease-in-out infinite; }

.gold-sheen { position: relative; overflow: hidden; }
.gold-sheen::after {
	content: ''; position: absolute; inset: 0;
	background: linear-gradient(110deg, transparent 35%, hsl(var(--marigold) / 0.32) 50%, transparent 65%);
	transform: translateX(-120%);
	transition: transform 0.9s var(--transition-smooth);
	pointer-events: none;
}
.gold-sheen:hover::after { transform: translateX(120%); }

@media (prefers-reduced-motion: reduce) {
	.reveal-item, .scale-in-item { transition: none; opacity: 1; transform: none; }
	.text-gradient-gold, .animate-drift, .shimmer-loading { animation: none; }
}

/* ---------- Buttons ---------- */
.theme-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
	border-radius: var(--btn-radius);
	padding: var(--btn-padding);
	min-height: var(--btn-height);
	font-family: var(--font-body);
	font-size: var(--btn-font-size);
	font-weight: var(--btn-font-weight);
	letter-spacing: var(--btn-letter-spacing);
	text-transform: var(--btn-text-transform);
	border: 1px solid transparent;
	transition: all 0.3s var(--transition-smooth);
	cursor: pointer;
}
.theme-btn-primary { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }
.theme-btn-primary:hover { transform: translateY(-2px); box-shadow: var(--shadow-elevated); }
.theme-btn-accent { background: hsl(var(--accent)); color: hsl(var(--accent-foreground)); letter-spacing: 0.24em; padding: 1rem 2.5rem; box-shadow: 0 10px 15px -3px color-mix(in srgb, hsl(var(--accent)) 30%, transparent); }
.theme-btn-accent:hover { background: hsl(var(--accent)); opacity: 0.9; transform: translateY(-2px); }
.hero-ctas .theme-btn-outline-light { letter-spacing: 0.24em; padding: 1rem 2rem; }
.theme-btn-outline { background: transparent; border-color: hsl(var(--primary)); color: hsl(var(--primary)); }
.theme-btn-outline:hover { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); transform: translateY(-2px); }
.theme-btn-outline-light { background: transparent; border-color: hsl(var(--background) / 0.5); color: hsl(var(--background)); }
.theme-btn-outline-light:hover { background: hsl(var(--background) / 0.15); }
.theme-btn-outline-gold { background: transparent; border-color: hsl(var(--marigold)); color: hsl(var(--marigold)); }
.theme-btn-outline-gold:hover { background: hsl(var(--marigold)); color: hsl(var(--indigo)); }
.theme-btn-soft { background: hsl(var(--background) / 0.7); color: hsl(var(--foreground)); border-color: hsl(var(--foreground) / 0.15); }
.theme-btn-soft:hover { background: hsl(var(--background)); }
.theme-btn-block { width: 100%; }
.hero-chevron-bounce { animation: theme-drift 1.6s ease-in-out infinite; }

/* ---------- Header ---------- */
.site-header {
	position: fixed; top: 0; left: 0; right: 0; z-index: 500;
	background: hsl(var(--indigo));
	border-bottom: 1px solid hsl(var(--marigold) / 0.25);
	box-shadow: var(--shadow-elevated);
	height: 88px;
	--logo-height: 60px;
	transition: height 0.3s var(--transition-smooth);
}
@media (min-width: 640px) {
	.site-header { --logo-height: 72px; }
}
@media (min-width: 768px) {
	.site-header { height: 116px; }
}
@media (min-width: 1024px) {
	.site-header { --logo-height: 96px; }
}
.site-header.is-solid {
	height: 64px;
	--logo-height: 44px;
}
@media (min-width: 640px) {
	.site-header.is-solid { --logo-height: 52px; }
}
@media (min-width: 768px) {
	.site-header.is-solid { height: 80px; }
}
@media (min-width: 1024px) {
	.site-header.is-solid { --logo-height: 62px; }
}
.theme-nav-dropdown__toggle::after { display: none; }
.site-nav { display: flex; align-items: center; justify-content: space-between; height: 100%; gap: 1rem; position: relative; }
.site-nav__side { display: none; align-items: center; gap: 2.2rem; flex: 1; }
@media (min-width: 1024px) { .site-nav__side { display: flex; } }
.site-nav__mobile {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	height: 100%;
	gap: 1rem;
}
@media (min-width: 1024px) { .site-nav__mobile { display: none; } }
@media (max-width: 1023px) {
	.site-logo--desktop { display: none !important; }
	.site-nav__side { display: none !important; }
}
@media (min-width: 1024px) {
	.site-logo--desktop { display: flex !important; }
	.site-logo--mobile { display: none !important; }
	.site-nav__mobile { display: none !important; }
}
.site-nav__mobile-actions { display: flex; align-items: center; gap: 0.75rem; flex-shrink: 0; }
.theme-cart-toggle--desktop { display: none; }
@media (min-width: 1024px) { .theme-cart-toggle--desktop { display: inline-flex; } }
.theme-mobile-toggle { position: relative; margin-right: -0.5rem; }
.theme-mobile-toggle__icon { display: inline-flex; }
.theme-mobile-toggle__icon--close { display: none; }
.theme-mobile-toggle.is-active .theme-mobile-toggle__icon--menu { display: none; }
.theme-mobile-toggle.is-active .theme-mobile-toggle__icon--close { display: inline-flex; }
.site-nav__side--right { justify-content: flex-end; }
.theme-nav-list, .theme-mobile-nav-list { display: flex; align-items: center; gap: 2.2rem; list-style: none; margin: 0; padding: 0; }
.theme-nav-list a, .theme-nav-link {
	position: relative;
	font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.14em;
	color: hsl(var(--background) / 0.85); background: none; border: none; padding: 0; cursor: pointer;
	transition: color 0.3s;
}
.theme-nav-list a::after, .theme-nav-link::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: -6px;
	width: 100%;
	height: 2px;
	background: hsl(var(--accent));
	transform: scaleX(0);
	transform-origin: right;
	transition: transform 0.3s var(--transition-smooth);
}
.theme-nav-list a:hover, .theme-nav-link:hover { color: hsl(var(--marigold)); }
.theme-nav-list a:hover::after, .theme-nav-link:hover::after {
	transform: scaleX(1);
	transform-origin: left;
}
.theme-nav-dropdown { position: relative; }
.theme-nav-dropdown__toggle { display: inline-flex; align-items: center; gap: 0.25rem; }
.theme-nav-dropdown__toggle svg { transition: transform 0.3s; }
.theme-nav-dropdown.is-open .theme-nav-dropdown__toggle svg { transform: rotate(180deg); }
.theme-nav-dropdown__menu {
	display: none;
	position: absolute;
	left: 0;
	top: calc(100% + 0.75rem);
	min-width: 14rem;
	max-width: calc(100vw - 2rem);
	background: hsl(var(--background));
	border: 1px solid hsl(var(--border));
	border-radius: var(--radius);
	box-shadow: var(--shadow-elevated);
	overflow: hidden;
	z-index: 60;
	animation: theme-fade-in 0.2s ease-out;
}
.theme-nav-dropdown.is-open .theme-nav-dropdown__menu { display: block; }
.theme-nav-dropdown__menu a {
	display: block;
	width: 100%;
	padding: 0.75rem 1.25rem;
	font-size: 14px;
	font-weight: 400;
	text-transform: none;
	letter-spacing: normal;
	color: hsl(var(--foreground));
	text-align: left;
}
.theme-nav-dropdown__menu a::after { display: none; }
.theme-nav-dropdown__menu a:hover { background: hsl(var(--card)); color: hsl(var(--accent)); }
.theme-mobile-nav-submenu { display: none; flex-direction: column; gap: 0.25rem; padding-left: 1rem; padding-bottom: 0.75rem; }
.theme-mobile-nav-submenu.is-open { display: flex; }
.theme-mobile-nav-submenu a {
	display: block;
	padding: 0.5rem 0;
	font-size: 14px;
	font-weight: 400;
	font-family: var(--font-body);
	text-transform: none;
	letter-spacing: normal;
	color: hsl(var(--background) / 0.8);
	border: none;
}
.theme-mobile-nav-submenu a:hover { color: hsl(var(--marigold)); }
.theme-mobile-nav-submenu a::after { display: none; }
.site-logo { display: flex; align-items: center; gap: 0.6rem; margin: 0; flex-shrink: 0; transition: transform 0.4s; }
.site-logo--mobile { height: 100%; align-items: center; gap: 0.75rem; }
@media (min-width: 1024px) { .site-logo { margin: 0 auto; } }
/* Hide rules MUST follow .site-logo { display:flex } or both logos show on tablet. */
@media (max-width: 1023px) {
	.site-logo--desktop { display: none !important; }
	.site-nav > .site-logo--desktop { display: none !important; }
}
@media (min-width: 1024px) {
	.site-logo--mobile { display: none !important; }
}
.site-logo:hover { transform: scale(1.04); }
.site-logo-text { font-family: var(--font-display); font-size: 1.5rem; color: hsl(var(--background)); display: block; line-height: var(--logo-height); }
.theme-cart-toggle {
	position: relative; display: inline-flex; align-items: center; justify-content: center;
	width: 36px; height: 36px; border-radius: 999px; border: 1px solid hsl(var(--background) / 0.4);
	background: transparent; color: hsl(var(--background)); transition: all 0.3s;
}
.theme-cart-toggle:hover { border-color: hsl(var(--marigold)); color: hsl(var(--marigold)); }
.theme-cart-count {
	position: absolute; top: -6px; right: -6px; min-width: 20px; height: 20px; padding: 0 4px;
	background: hsl(var(--accent)); color: hsl(var(--accent-foreground)); border-radius: 999px;
	font-size: 12px; font-weight: 600; display: flex; align-items: center; justify-content: center;
}
.theme-cart-count:empty { display: none; }
.theme-mobile-toggle { display: inline-flex; background: none; border: none; color: hsl(var(--background)); padding: 0.4rem; }
@media (min-width: 1024px) { .theme-mobile-toggle { display: none; } }
.theme-mobile-menu {
	display: none;
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	width: 100%;
	background: hsl(var(--indigo));
	border-top: 1px solid hsl(var(--background) / 0.15);
	box-shadow: var(--shadow-elevated);
	max-height: calc(100dvh - 64px);
	overflow-y: auto;
	overscroll-behavior: contain;
	animation: theme-fade-in 0.25s var(--transition-smooth);
}
.theme-mobile-menu.is-open { display: block; }
.theme-mobile-menu .container-wide.theme-mobile-menu__inner,
.theme-mobile-menu .theme-mobile-menu__inner {
	padding: 0.75rem 1.5rem;
}
@media (min-width: 1024px) {
	.theme-mobile-menu .container-wide.theme-mobile-menu__inner,
	.theme-mobile-menu .theme-mobile-menu__inner {
		padding-left: 2rem;
		padding-right: 2rem;
	}
}
.theme-mobile-nav-list { flex-direction: column !important; align-items: stretch !important; gap: 0; width: 100%; }
.theme-mobile-menu .theme-mobile-nav-list li { display: block; width: 100%; }
@media (max-width: 1023px) {
	.theme-mobile-nav-list,
	.theme-mobile-nav-list .menu-item { flex-direction: column; align-items: stretch; }
}
.theme-mobile-nav-list .menu-item { width: 100%; border-bottom: 1px solid hsl(var(--background) / 0.15); }
.theme-mobile-nav-list .menu-item:last-child { border-bottom: none; }
.theme-mobile-nav-list a, .theme-mobile-nav-link {
	display: block; width: 100%; padding: 1rem 0; text-align: left; color: hsl(var(--background));
	font-family: var(--font-body);
	font-size: 14px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.14em; border: none; background: none;
	cursor: pointer;
	transition: color 0.3s;
}
.theme-mobile-nav-list a:hover, .theme-mobile-nav-link:hover { color: hsl(var(--marigold)); }
.theme-mobile-nav-list a::after, .theme-mobile-nav-link::after { display: none; }
.theme-mobile-nav-dropdown__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	gap: 0.5rem;
}
.theme-mobile-nav-dropdown__toggle svg { transition: transform 0.3s; flex-shrink: 0; }
.theme-mobile-nav-dropdown__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }

/* ---------- Hero ---------- */
.hero-section { position: relative; }
.hero-media {
	position: relative;
	width: 100%;
	min-height: 100svh;
	overflow: hidden;
	background: hsl(var(--foreground));
	display: flex;
	flex-direction: column;
	align-items: stretch;
}
@supports (min-height: 100dvh) {
	.hero-media { min-height: 100dvh; }
}
.hero-overlay {
	position: absolute; inset: 0;
	background: radial-gradient(ellipse 72% 58% at 50% 48%, hsl(220 44% 10% / 0.72) 0%, hsl(220 44% 10% / 0.64) 45%, hsl(220 44% 8% / 0.56) 78%, hsl(220 44% 8% / 0.64) 100%);
}
.hero-content {
	position: relative;
	flex: 1;
	width: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 7rem 0;
	min-height: 0;
}
@media (min-width: 768px) {
	.hero-content { padding: 8rem 0; }
}
.hero-content__inner { max-width: 64rem; padding: 0 0.5rem; }
.hero-title { font-family: var(--font-display); color: hsl(var(--background)); font-size: clamp(2.6rem, 8vw, 6.5rem); line-height: 0.92; letter-spacing: -0.02em; font-weight: 400; }
.hero-title-script { font-size: 1.05em; padding-right: 0.5rem; }
.hero-subtitle { margin-top: 1.75rem; max-width: 42rem; margin-left: auto; margin-right: auto; color: hsl(var(--background) / 0.9); font-size: 1.05rem; line-height: 1.65; }
@media (min-width: 768px) { .hero-subtitle { font-size: 1.25rem; } }
.hero-ctas {
	margin-top: 2.5rem;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	width: 100%;
	text-align: center;
}
@media (min-width: 640px) { .hero-ctas { flex-direction: row; } }
.hero-ctas .theme-btn {
	width: auto;
	flex: 0 0 auto;
	align-self: center;
	margin-left: auto;
	margin-right: auto;
}
@media (min-width: 640px) {
	.hero-ctas .theme-btn { margin-left: 0; margin-right: 0; }
}
.hero-features { margin-top: 3rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.75rem 1.75rem; font-size: 14px; color: hsl(var(--background) / 0.9); }
@media (min-width: 768px) { .hero-features { font-size: 1rem; } }
.hero-features span { display: inline-flex; align-items: center; gap: 0.5rem; }
.hero-features svg { color: hsl(var(--marigold)); flex-shrink: 0; }

/* ---------- Section headers (per-section scales — Section 2.2.5) ---------- */
.eyebrow {
	display: inline-flex; align-items: center; gap: 0.5rem;
	font-size: 13px; letter-spacing: 0.32em; text-transform: uppercase; font-weight: 600;
	color: hsl(var(--accent)); margin-bottom: 0.75rem;
}
.eyebrow--light, .eyebrow--gold { color: hsl(var(--marigold)); }
.section-header { margin-bottom: 2.5rem; }
.section-header--center { text-align: center; max-width: 42rem; margin-left: auto; margin-right: auto; }
.section-subtext { margin-top: 1.25rem; color: hsl(var(--foreground) / 0.75); font-size: 1rem; line-height: 1.6; }
@media (min-width: 768px) { .section-subtext { font-size: 1.125rem; } }
.section-subtext--light { color: hsl(var(--background) / 0.8); }
.section-cta-center { text-align: center; margin-top: 3rem; }

.categories-heading, .about-section__heading { font-size: 2.25rem; line-height: 0.98; }
@media (min-width: 768px) { .categories-heading, .about-section__heading { font-size: 3.75rem; } }
@media (min-width: 1024px) { .categories-heading, .about-section__heading { font-size: 4.5rem; } }
.featured-section { padding: 4rem 0; }
@media (min-width: 768px) { .featured-section { padding: 6rem 0; } }
.featured-heading, .services-heading, .brewing-heading, .community-heading, .petmenu-heading, .journal-heading, .shop-heading, .faq-heading { font-size: 2.25rem; line-height: 0.95; }
@media (min-width: 768px) { .featured-heading, .services-heading, .brewing-heading, .community-heading, .petmenu-heading, .journal-heading, .shop-heading, .faq-heading { font-size: 3.75rem; } }
@media (min-width: 1024px) { .featured-heading, .services-heading, .brewing-heading, .community-heading, .petmenu-heading, .journal-heading, .shop-heading, .faq-heading { font-size: 4.5rem; line-height: 0.95; } }
.cta-band__title { font-size: 2.25rem; line-height: 0.98; }
@media (min-width: 768px) { .cta-band__title { font-size: 3.75rem; } }
@media (min-width: 1024px) { .cta-band__title { font-size: 4.5rem; } }

/* ---------- Categories section ---------- */
.categories-section { padding: 4rem 0; }
@media (min-width: 768px) { .categories-section { padding: 5rem 0; } }
.categories-section .section-header { margin-bottom: 2.5rem; }
@media (min-width: 768px) { .categories-section .section-header { margin-bottom: 4rem; } }
.category-tiles { display: flex; flex-wrap: wrap; justify-content: center; gap: 2rem; max-width: 72rem; margin: 0 auto; }
@media (min-width: 768px) { .category-tiles { gap: 2.5rem; } }
@media (min-width: 1024px) { .category-tiles { flex-wrap: nowrap; gap: 1.5rem; max-width: 80rem; } }
.category-tile { display: flex; flex-direction: column; align-items: center; text-align: center; flex: 1 1 220px; min-width: 0; cursor: pointer; }
@media (min-width: 1024px) { .category-tile { flex: 1 1 0; } }
.category-tile__icon-wrap {
	width: 7rem; height: 7rem; border-radius: 50%; display: flex; align-items: center; justify-content: center;
	transition: transform 0.5s var(--transition-smooth), box-shadow 0.5s var(--transition-smooth);
	margin-bottom: 1.25rem;
	box-shadow: 0 0 0 2px color-mix(in srgb, currentColor 30%, transparent);
}
@media (min-width: 768px) { .category-tile__icon-wrap { width: 9rem; height: 9rem; margin-bottom: 1.5rem; } }
@media (min-width: 1024px) { .category-tile__icon-wrap { width: 8rem; height: 8rem; } }
.category-tile__icon-wrap svg { width: 3rem; height: 3rem; transition: transform 0.5s var(--transition-smooth); }
@media (min-width: 768px) { .category-tile__icon-wrap svg { width: 3.5rem; height: 3.5rem; } }
.category-tile:hover .category-tile__icon-wrap { transform: scale(1.1); box-shadow: var(--shadow-glow); }
.category-tile:hover .category-tile__icon-wrap svg { transform: translateY(-4px) rotate(6deg); }
.cat-tile-1 { background: color-mix(in srgb, hsl(var(--primary)) 10%, transparent); color: hsl(var(--primary)); }
.cat-tile-2 { background: color-mix(in srgb, hsl(var(--accent)) 10%, transparent); color: hsl(var(--accent)); }
.cat-tile-3 { background: color-mix(in srgb, hsl(var(--marigold)) 15%, transparent); color: hsl(var(--marigold)); }
.category-tile__label { font-size: 13px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 600; margin-bottom: 0.375rem; line-height: 1.35; color: inherit; }
.category-tile__title { font-size: 1.25rem; line-height: 1.25; color: hsl(var(--foreground)); font-family: var(--font-display); font-weight: 400; }
@media (min-width: 768px) { .category-tile__title { font-size: 1.875rem; } }
@media (min-width: 1024px) { .category-tile__title { font-size: 1.5rem; } }
@media (min-width: 1280px) { .category-tile__title { font-size: 1.875rem; } }

/* ---------- Product grid & card ---------- */
.theme-product-grid {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; align-items: stretch;
}
@media (min-width: 768px) { .theme-product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; } }
.theme-featured-products__grid { grid-template-columns: repeat(1, minmax(0, 1fr)); }
@media (min-width: 640px) { .theme-featured-products__grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (min-width: 1024px) { .theme-featured-products__grid { grid-template-columns: repeat(3, minmax(0,1fr)); } }

.theme-product-card-wrap { display: flex; }
.theme-product-card-wrap[hidden],
.theme-product-card-wrap.theme-card-is-hidden { display: none !important; }
.theme-product-card { position: relative; display: flex; flex-direction: column; width: 100%; height: 100%; }
.theme-product-card__image-wrap .theme-card-link { position: absolute; inset: 0; z-index: 1; }
.theme-product-card__image-wrap {
	position: relative; aspect-ratio: 1 / 1; border-radius: 1rem; overflow: hidden; background: hsl(var(--card)); margin-bottom: 1.25rem;
}
.theme-product-card:hover .theme-product-card__image-wrap img,
.theme-product-card:hover .theme-product-card__img { transform: scale(1.04); transition: transform 0.7s var(--transition-smooth); }
.theme-product-card__title-link { transition: color 0.3s var(--transition-smooth); }
.theme-product-card:hover .theme-product-card__title-link { color: hsl(var(--primary)); }
.theme-badge { position: absolute; top: 1rem; z-index: 3; padding: 0.25rem 0.75rem; border-radius: 0.4rem; font-size: 12px; font-weight: 500; }
.theme-badge--soldout { right: 1rem; background: hsl(var(--foreground)); color: hsl(var(--background)); }
.theme-product-card__add-btn {
	position: absolute; left: 1rem; right: 1rem; bottom: 1rem; z-index: 5; pointer-events: auto;
	padding: 0.75rem 1rem; border-radius: 999px; background: hsl(var(--teal)); color: hsl(var(--background)); border: 1px solid hsl(var(--teal));
	font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 600; text-align: center;
	opacity: 0; transform: translateY(8px); transition: all 0.3s var(--transition-smooth);
}
.theme-product-card:hover .theme-product-card__add-btn { opacity: 1; transform: translateY(0); }
.theme-product-card__add-btn:hover { background: hsl(var(--background)) !important; color: hsl(var(--teal)) !important; border-color: hsl(var(--teal)) !important; }
.theme-product-card__title-link { transition: color 0.3s var(--transition-smooth); }
.theme-product-card:hover .theme-product-card__title-link { color: hsl(var(--primary)); }
.theme-product-card__info { padding: 0 0.25rem; }
.theme-product-card__cat { font-size: 12px; text-transform: uppercase; letter-spacing: 0.18em; color: hsl(var(--muted-foreground)); margin-bottom: 0.35rem; }
.theme-product-card__name { font-size: 1.05rem; font-weight: 500; line-height: 1.3; margin-bottom: 0.35rem; }
@media (min-width: 768px) { .theme-product-card__name { font-size: 1.125rem; } }
.theme-product-card__price { font-size: 1rem; color: hsl(var(--foreground) / 0.85); }
.theme-product-card__price .price del { opacity: 0.5; margin-right: 0.4rem; }

/* ---------- About ---------- */
.about-section { padding: 5rem 0; }
@media (min-width: 768px) { .about-section { padding: 7rem 0; } }
.about-copy .eyebrow { margin-bottom: 1rem; }
.about-copy .about-section__heading { margin-bottom: 1.5rem; }
.about-section .about-copy { gap: 0; }
.about-section .about-paragraph { margin: 0 0 1.25rem; }
.about-section .about-paragraph--lead { margin-bottom: 1.25rem; }
.about-section .about-stats {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1rem;
	border-top: 1px solid hsl(var(--border));
	padding-top: 1.75rem;
	padding-bottom: 0;
	margin: 0;
	max-width: 28rem;
}
.about-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: stretch; }
@media (min-width: 1024px) { .about-grid { grid-template-columns: 1fr 1fr; gap: 4rem; } }
.about-image-wrap { position: relative; border-radius: 1rem; overflow: hidden; min-height: 320px; }
.about-image-chips { position: absolute; inset-inline: 0; bottom: 0; padding: 1.25rem 1rem 1rem; display: flex; flex-wrap: wrap; gap: 0.6rem; background: linear-gradient(to top, hsl(var(--indigo) / 0.85), transparent); }
.about-chip { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.4rem 0.9rem; border-radius: 999px; font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600; border: 1px solid hsl(var(--accent) / 0.45); color: hsl(var(--accent)); background: hsl(var(--indigo) / 0.6); }
.about-section .about-copy {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0;
}
.about-section .about-paragraph { color: hsl(var(--foreground) / 0.85); line-height: 1.7; margin: 0 0 1.25rem; font-size: 1rem; font-family: var(--font-body); font-weight: 400; }
@media (min-width: 768px) { .about-section .about-paragraph:not(.about-paragraph--lead) { font-size: 1.125rem; } }
.about-section .about-paragraph--lead { font-size: 1.125rem; line-height: 1.625; }
@media (min-width: 768px) { .about-section .about-paragraph--lead { font-size: 1.25rem; line-height: 1.625; } }
.about-section .about-stat { text-align: center; }
@media (min-width: 640px) { .about-section .about-stat { text-align: left; } }
.about-section .about-stat__value { font-family: var(--font-display); font-size: 2.25rem; line-height: 1; font-weight: 400; color: hsl(var(--foreground)); }
@media (min-width: 768px) { .about-section .about-stat__value { font-size: 3rem; } }
.about-section .about-stat__label { margin-top: 0.5rem; font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; color: hsl(var(--muted-foreground)); font-family: var(--font-body); font-weight: 400; }

/* ---------- Brewing ---------- */
.brewing-section { position: relative; overflow: hidden; }
.brewing-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, hsl(var(--indigo) / 0.88) 0%, hsl(var(--indigo) / 0.78) 45%, hsl(var(--indigo) / 0.9) 100%); }
.brewing-content { position: relative; padding-top: 5rem; padding-bottom: 5rem; }
@media (min-width: 768px) { .brewing-content { padding-top: 7rem; padding-bottom: 7rem; } }
.brewing-header { max-width: 42rem; margin-bottom: 3.5rem; }
.brewing-header .section-heading,
.brewing-section .brewing-heading { color: hsl(var(--butter)); }
.brewing-section .brewing-heading .text-accent { color: hsl(var(--accent)); }
.brewing-section .brewing-kicker.eyebrow,
.brewing-section .brewing-kicker {
	color: hsl(var(--accent));
}
.brewing-header .section-subtext--light { color: hsl(var(--butter) / 0.8); }
.brewing-step__text { font-size: 15px; color: hsl(var(--butter) / 0.7); line-height: 1.6; }
.brewing-steps { display: grid; grid-template-columns: 1fr; gap: 2.5rem 2rem; }
@media (min-width: 640px) { .brewing-steps { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .brewing-steps { grid-template-columns: repeat(4, 1fr); } }
.brewing-step { border-top: 1px solid hsl(var(--accent) / 0.35); padding-top: 1.25rem; }
.brewing-step__number { font-family: var(--font-display); font-size: 1.75rem; color: hsl(var(--accent)); }
.brewing-step__title { font-size: 1.5rem; color: hsl(var(--butter)); margin: 0.75rem 0 0.5rem; }

/* ---------- Services ---------- */
.services-section { padding: 5rem 0; }
@media (min-width: 768px) { .services-section { padding: 7rem 0; } }
.services-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; max-width: 72rem; margin: 0 auto; }
@media (min-width: 640px) { .services-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 768px) { .services-grid { gap: 2rem; } }
@media (min-width: 1024px) { .services-grid { grid-template-columns: repeat(3, 1fr); } }
.service-card {
	display: flex; flex-direction: column; align-items: center; text-align: center;
	border-radius: 1rem; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); padding: 2rem;
	transition: all 0.5s var(--transition-smooth);
}
@media (min-width: 768px) { .service-card { padding: 2.5rem; } }
.service-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-elevated); }
.service-card--1:hover { border-color: hsl(var(--primary) / 0.5); }
.service-card--2:hover { border-color: hsl(var(--accent) / 0.5); }
.service-card--3:hover { border-color: hsl(var(--teal) / 0.5); }
.service-card--4:hover { border-color: hsl(var(--nopal) / 0.5); }
.service-card--5:hover { border-color: hsl(var(--marigold) / 0.5); }
.service-card--6:hover { border-color: hsl(var(--rosa) / 0.5); }
.service-card__image-wrap { position: relative; width: 8rem; height: 8rem; margin-bottom: 1.5rem; display: flex; align-items: center; justify-content: center; }
.service-card__glow { position: absolute; inset: 0; border-radius: 50%; filter: blur(24px); opacity: 0.7; }
.service-card--1 .service-card__glow { background: hsl(var(--primary) / 0.15); }
.service-card--2 .service-card__glow { background: hsl(var(--accent) / 0.15); }
.service-card--3 .service-card__glow { background: hsl(var(--teal) / 0.15); }
.service-card--4 .service-card__glow { background: hsl(var(--nopal) / 0.15); }
.service-card--5 .service-card__glow { background: hsl(var(--marigold) / 0.2); }
.service-card--6 .service-card__glow { background: hsl(var(--rosa) / 0.15); }
.service-card:hover .service-card__glow { opacity: 1; }
.service-card__image { position: relative; width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 10px 24px hsl(var(--foreground) / 0.18)); transition: transform 0.5s; }
.service-card:hover .service-card__image { transform: scale(1.05) rotate(-2deg); }
.service-card__kicker { font-size: 13px; text-transform: uppercase; letter-spacing: 0.18em; font-weight: 600; margin-bottom: 0.75rem; }
.service-card--1 .service-card__kicker, .service-card--1 .service-card__cta { color: hsl(var(--primary)); }
.service-card--2 .service-card__kicker, .service-card--2 .service-card__cta { color: hsl(var(--accent)); }
.service-card--3 .service-card__kicker, .service-card--3 .service-card__cta { color: hsl(var(--teal)); }
.service-card--4 .service-card__kicker, .service-card--4 .service-card__cta { color: hsl(var(--nopal)); }
.service-card--5 .service-card__kicker, .service-card--5 .service-card__cta { color: hsl(var(--marigold)); }
.service-card--6 .service-card__kicker, .service-card--6 .service-card__cta { color: hsl(var(--rosa)); }
.service-card__title { font-size: 1.5rem; margin-bottom: 1rem; line-height: 1.2; color: hsl(var(--foreground)); }
@media (min-width: 768px) { .service-card__title { font-size: 1.875rem; } }
.service-card__desc { font-size: 15px; color: hsl(var(--foreground) / 0.8); line-height: 1.625; max-width: 17rem; margin-bottom: 2rem; flex-grow: 1; }
.service-card__cta { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 600; margin-top: auto; background: none; border: none; }
.service-card__cta:hover { opacity: 0.8; }
.service-card__cta svg { transition: transform 0.3s; }
.service-card__cta:hover svg { transform: translateX(4px); }

/* ---------- Community ---------- */
.community-section { background: hsl(var(--secondary)); padding: 5rem 0; }
@media (min-width: 768px) { .community-section { padding: 7rem 0; } }
.community-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: center; }
@media (min-width: 1024px) { .community-grid { grid-template-columns: 1fr 1fr; gap: 4rem; } }
.community-items { margin: 2.25rem 0; display: flex; flex-direction: column; gap: 1.25rem; }
.community-item { display: flex; gap: 1rem; }
.community-item__icon { margin-top: 0.2rem; flex-shrink: 0; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: color-mix(in srgb, hsl(var(--accent)) 12%, transparent); color: hsl(var(--accent)); display: flex; align-items: center; justify-content: center; }
.community-item__title { display: block; font-family: var(--font-display); font-size: 1.25rem; line-height: 1.3; }
.community-item__text { display: block; margin-top: 0.25rem; font-size: 15px; color: hsl(var(--foreground) / 0.75); line-height: 1.6; }
.community-ctas { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.community-image-wrap { position: relative; aspect-ratio: 4/5; border-radius: 2rem; overflow: hidden; box-shadow: var(--shadow-elevated); }

/* ---------- Shop ---------- */
.shop-section { padding: 4rem 0; }
@media (min-width: 768px) { .shop-section { padding: 6rem 0; } }
.shop-header { text-align: center; margin-bottom: 3rem; }
.shop-heading { margin-bottom: 2.5rem; }
.shop-show-more-wrap:not([hidden]) { display: block; }
#theme-shop-show-more-wrap[hidden] { display: none !important; }
.shop-search-wrap { position: relative; max-width: 28rem; margin: 0 auto 2rem; }
.shop-search-wrap svg { position: absolute; left: 0; top: 50%; transform: translateY(-50%); color: hsl(var(--muted-foreground)); }
.shop-search-input { width: 100%; padding: 0.6rem 0 0.6rem 1.75rem; background: transparent; border: none; border-bottom: 1px solid hsl(var(--border)); font-size: 1rem; }
.shop-search-input:focus { outline: none; border-color: hsl(var(--foreground)); }
.shop-cat-filters { display: flex; overflow-x: auto; gap: 0.5rem; margin-bottom: 1rem; padding-bottom: 0.25rem; }
.shop-cat-filters::-webkit-scrollbar { display: none; }
.shop-cat-filters--center { justify-content: center; flex-wrap: wrap; }
@media (min-width: 768px) { .shop-cat-filters { flex-wrap: wrap; justify-content: center; overflow: visible; } }
.shop-cat-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	flex-shrink: 0; padding: 0.5rem 1.25rem; font-size: 13px; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 600;
	border-radius: 999px; border: 1px solid hsl(var(--border)); background: transparent; color: hsl(var(--foreground)); transition: all 0.3s;
}
.shop-cat-pill:hover { border-color: hsl(var(--accent)); color: hsl(var(--accent)); }
.shop-cat-pill.is-active { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); border-color: hsl(var(--primary)); }
.shop-price-filter { display: flex; flex-direction: column; align-items: center; gap: 0.75rem; }
.shop-price-toggle { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; font-size: 13px; letter-spacing: 0.18em; text-transform: uppercase; color: hsl(var(--muted-foreground)); background: none; border: none; }
.shop-price-toggle:hover { color: hsl(var(--foreground)); }
.shop-price-toggle svg.is-open { transform: rotate(180deg); }
.shop-price-panel { width: 100%; max-width: 22rem; padding: 0.5rem 0; }
.price-range-wrapper { position: relative; height: 1.5rem; margin-bottom: 0.6rem; }
.range-track-bg, .range-track-fill { position: absolute; height: 4px; top: 50%; transform: translateY(-50%); pointer-events: none; border-radius: 999px; }
.range-track-bg { left: 0; right: 0; background: hsl(var(--border)); }
.range-track-fill { background: hsl(var(--accent)); }
.range-input { position: absolute; left: 0; top: 0; width: 100%; height: 100%; margin: 0; -webkit-appearance: none; appearance: none; background: transparent; pointer-events: none; }
.range-input::-webkit-slider-thumb { -webkit-appearance: none; pointer-events: auto; width: 16px; height: 16px; border-radius: 50%; background: hsl(var(--accent)); border: 2px solid hsl(var(--background)); box-shadow: 0 1px 4px hsl(var(--foreground) / 0.25); cursor: pointer; }
.range-input::-moz-range-thumb { pointer-events: auto; width: 16px; height: 16px; border-radius: 50%; background: hsl(var(--accent)); border: 2px solid hsl(var(--background)); cursor: pointer; }
.range-input--max { z-index: 3; }
.range-input--min { z-index: 4; }
.price-range-values { display: flex; justify-content: space-between; font-size: 14px; color: hsl(var(--muted-foreground)); }
.shop-helper-text { text-align: center; font-size: 13px; letter-spacing: 0.16em; text-transform: uppercase; color: hsl(var(--muted-foreground)); margin-bottom: 1.5rem; }
.shop-empty-state { text-align: center; padding: 4rem 0; color: hsl(var(--muted-foreground)); }
#theme-shop-grid [data-shop-overflow="1"],
#theme-shop-grid .theme-card-is-hidden { display: none !important; }
#theme-pet-grid .theme-product-card-wrap {
	display: flex !important;
}
#theme-pet-grid .theme-product-card-wrap[hidden],
#theme-pet-grid .theme-product-card-wrap.theme-card-is-hidden {
	display: none !important;
}

/* ---------- Pet menu ---------- */
.petmenu-section { background: hsl(var(--secondary)); padding: 5rem 0; }
@media (min-width: 768px) { .petmenu-section { padding: 7rem 0; } }
.petmenu-disclaimer { text-align: center; font-size: 13px; letter-spacing: 0.16em; text-transform: uppercase; color: hsl(var(--muted-foreground)); margin-top: 2.5rem; max-width: 42rem; margin-left: auto; margin-right: auto; }

/* ---------- Journal preview / archive / single ---------- */
.wood-texture {
	background-color: hsl(var(--indigo));
	color: hsl(var(--background));
	background-image:
		radial-gradient(circle at 18% 24%, hsl(var(--teal) / 0.28) 0%, transparent 46%),
		radial-gradient(circle at 82% 78%, hsl(var(--marigold) / 0.14) 0%, transparent 48%),
		linear-gradient(180deg, hsl(200 34% 18%) 0%, hsl(220 44% 12%) 100%);
}
.journal-preview-section { padding: 5rem 0; }
@media (min-width: 768px) { .journal-preview-section { padding: 7rem 0; } }
.journal-preview-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) { .journal-preview-grid { grid-template-columns: repeat(3, 1fr); gap: 2.5rem; } }
.journal-preview-card__link { display: block; }
.journal-preview-card__image-wrap { position: relative; aspect-ratio: 3/2; border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow-soft); margin-bottom: 1.25rem; }
.journal-preview-card__meta { font-size: 13px; text-transform: uppercase; letter-spacing: 0.22em; color: hsl(var(--marigold)); }
.journal-preview-card__title { font-size: 1.5rem; margin-top: 0.5rem; line-height: 1.3; }
.journal-preview-card__excerpt { margin-top: 0.75rem; font-size: 15px; color: hsl(var(--background) / 0.75); line-height: 1.6; }

.journal-archive__hero { padding: 4rem 0; text-align: center; }
@media (min-width: 1024px) { .journal-archive__hero { padding: 6rem 0; } }
.journal-archive__eyebrow { font-size: 13px; text-transform: uppercase; letter-spacing: 0.3em; color: hsl(var(--marigold)); }
.journal-archive__title { margin-top: 1rem; font-size: 2.5rem; }
@media (min-width: 768px) { .journal-archive__title { font-size: 3.75rem; } }
.journal-archive__subtitle { margin-top: 1.25rem; max-width: 42rem; margin-left: auto; margin-right: auto; color: hsl(var(--background) / 0.75); line-height: 1.6; }
.journal-archive__body { padding: 3.5rem 0 5rem; }
@media (max-width: 1023px) {
	.journal-archive__body,
	.journal-single__article {
		padding-left: 1.5rem;
		padding-right: 1.5rem;
	}
}
@media (min-width: 1024px) {
	.journal-archive__body { padding-left: 2rem; padding-right: 2rem; }
}
.journal-featured { display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: center; }
@media (min-width: 768px) { .journal-featured { grid-template-columns: 1fr 1fr; gap: 3rem; } }
.journal-featured__image-wrap { position: relative; aspect-ratio: 4/3; border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow-soft); }
.journal-featured__meta { font-size: 13px; text-transform: uppercase; letter-spacing: 0.24em; color: hsl(var(--accent)); }
.journal-featured__title { margin-top: 0.75rem; font-size: 1.875rem; line-height: 1.3; }
@media (min-width: 768px) { .journal-featured__title { font-size: 2.25rem; } }
.journal-featured:hover .journal-featured__title { color: hsl(var(--accent)); }
.journal-featured__excerpt { margin-top: 1rem; color: hsl(var(--foreground) / 0.7); line-height: 1.6; }
.journal-featured__date { margin-top: 1.25rem; font-size: 14px; color: hsl(var(--muted-foreground)); }
.journal-featured__cta { margin-top: 1.5rem; display: inline-block; font-size: 14px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.2em; color: hsl(var(--accent)); }
.journal-grid { margin-top: 4rem; display: grid; grid-template-columns: 1fr; gap: 2.5rem; }
@media (min-width: 640px) { .journal-grid { grid-template-columns: 1fr 1fr; } }
.journal-card__image-wrap { position: relative; aspect-ratio: 3/2; border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow-soft); margin-bottom: 1.25rem; }
.journal-card__title { font-size: 1.375rem; line-height: 1.3; }
.journal-card:hover .journal-card__title { color: hsl(var(--accent)); }
.journal-card__excerpt { margin-top: 0.75rem; color: hsl(var(--foreground) / 0.7); line-height: 1.6; }
.journal-card__date { margin-top: 1rem; font-size: 14px; color: hsl(var(--muted-foreground)); }

.journal-single { padding: 0; background: hsl(var(--background)); }
.journal-single__article.container-wide {
	padding-top: 2.5rem;
	padding-bottom: 0;
	padding-left: 1.5rem;
	padding-right: 1.5rem;
}
@media (min-width: 1024px) {
	.journal-single__article.container-wide { padding: 4rem 2rem 0; }
}
.journal-single__header { max-width: 48rem; margin: 2.5rem auto 0; text-align: center; }
@media (min-width: 768px) { .journal-single__header { margin-top: 2.5rem; } }
.journal-single__meta { font-size: 13px; text-transform: uppercase; letter-spacing: 0.24em; color: hsl(var(--accent)); }
.journal-single__title { margin-top: 1rem; font-size: 2rem; line-height: 1.25; }
@media (min-width: 768px) { .journal-single__title { font-size: 3rem; } }
.journal-single__byline { margin-top: 1.25rem; font-size: 14px; color: hsl(var(--muted-foreground)); }
.journal-single__hero-image { position: relative; aspect-ratio: 16/9; border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow-soft); margin-top: 2.5rem; }
.journal-single__body { max-width: 42rem; margin: 3rem auto 0; display: flex; flex-direction: column; gap: 1.5rem; }
.journal-single__body h2 { font-size: 1.5rem; padding-top: 1rem; }
@media (min-width: 768px) { .journal-single__body h2 { font-size: 1.875rem; } }
.journal-single__body p { font-size: 1rem; line-height: 1.7; color: hsl(var(--foreground) / 0.8); }
@media (min-width: 768px) { .journal-single__body p { font-size: 1.125rem; } }
.journal-single__body blockquote { border-left: 2px solid hsl(var(--accent)); padding-left: 1.5rem; font-family: var(--font-display); font-style: italic; font-size: 1.25rem; color: hsl(var(--foreground) / 0.85); margin: 0; }
.journal-single__body ul { padding-left: 0.25rem; list-style: none; display: flex; flex-direction: column; gap: 0.75rem; }
.journal-single__body li { display: flex; gap: 0.75rem; color: hsl(var(--foreground) / 0.8); line-height: 1.6; }
.journal-single__body li::before { content: ''; margin-top: 0.5rem; width: 6px; height: 6px; border-radius: 50%; background: hsl(var(--accent)); flex-shrink: 0; }
.journal-single__cta-card { max-width: 42rem; margin: 3.5rem auto 0; border-radius: 1rem; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); padding: 2rem; text-align: center; }
.journal-single__cta-card h2 { font-family: var(--font-display); font-size: 1.5rem; line-height: 1.3; font-weight: 400; color: hsl(var(--foreground)); margin: 0; }
.journal-single__cta-card p { margin-top: 0.75rem; color: hsl(var(--foreground) / 0.7); line-height: 1.625; }
.journal-single__cta-buttons { margin-top: 1.5rem; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; }
.journal-single__related { padding-bottom: 5rem; padding-top: 0; }
.journal-single__related-title { font-family: var(--font-display); font-size: 1.5rem; font-weight: 400; margin-bottom: 2rem; color: hsl(var(--foreground)); }
@media (min-width: 768px) { .journal-single__related-title { font-size: 1.875rem; } }
.journal-single__related-grid { gap: 2.5rem; }
.journal-card--related { display: block; text-decoration: none; color: inherit; }
.journal-card--related .journal-card__image-wrap { border-radius: 1rem; overflow: hidden; transition: transform 0.7s var(--transition-smooth); }
.journal-card--related:hover .journal-card__image-wrap img { transform: scale(1.04); }
.journal-card--related .journal-card__title { margin-top: 1rem; font-size: 1.25rem; transition: color 0.3s; }
.journal-card--related:hover .journal-card__title { color: hsl(var(--accent)); }
.journal-single__body.entry-content > *:first-child { margin-top: 0; }

/* ---------- FAQ ---------- */
.faq-email-link {
	text-decoration: underline;
	text-underline-offset: 4px;
	text-decoration-color: hsl(var(--foreground) / 0.3);
	transition: color 0.3s, text-decoration-color 0.3s;
}
.faq-email-link:hover { color: hsl(var(--accent)); text-decoration-color: hsl(var(--accent)); }
.faq-section { padding: 5rem 0; }
@media (min-width: 768px) { .faq-section { padding: 7rem 0; } }
.faq-section .section-header { margin-bottom: 2.5rem; }
@media (min-width: 768px) { .faq-section .section-header { margin-bottom: 3.5rem; } }
.faq-section .section-subtext { color: hsl(var(--foreground) / 0.85); }
.faq-tabs { display: none; flex-wrap: wrap; justify-content: center; gap: 0.625rem; margin-bottom: 2.5rem; }
@media (min-width: 768px) { .faq-tabs { display: flex; } }
.faq-tab { padding: 0.625rem 1.25rem; border-radius: 999px; border: 1px solid; font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 600; background: transparent; transition: all 0.3s; }
.faq-tab:hover { transform: translateY(-2px); }
.faq-tab--teal { border-color: hsl(var(--teal)); color: hsl(var(--teal)); }
.faq-tab--teal.is-active { background: hsl(var(--teal)); color: hsl(var(--background)); }
.faq-tab--rosa { border-color: hsl(var(--rosa)); color: hsl(var(--rosa)); }
.faq-tab--rosa.is-active { background: hsl(var(--rosa)); color: hsl(var(--background)); }
.faq-tab--lilac { border-color: hsl(var(--lilac)); color: hsl(var(--lilac)); }
.faq-tab--lilac.is-active { background: hsl(var(--lilac)); color: hsl(var(--foreground)); }
.faq-tab--nopal { border-color: hsl(var(--nopal)); color: hsl(var(--nopal)); }
.faq-tab--nopal.is-active { background: hsl(var(--nopal)); color: hsl(var(--background)); }
.faq-tab--marigold { border-color: hsl(var(--marigold)); color: hsl(var(--marigold)); }
.faq-tab--marigold.is-active { background: hsl(var(--marigold)); color: hsl(var(--foreground)); }
.faq-panels { display: none; border-top: 1px solid hsl(var(--foreground) / 0.15); }
@media (min-width: 768px) { .faq-panels { display: block; } }
.faq-panel { display: none; }
.faq-panel.is-active { display: block; }
.faq-mobile { display: block; }
@media (min-width: 768px) { .faq-mobile { display: none; } }
.faq-mobile-group { margin-bottom: 2.5rem; text-align: center; }
.faq-mobile-group__title { display: inline-block; border-radius: 999px; padding: 0.6rem 1.25rem; font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 600; margin-bottom: 1rem; border: 1px solid; }
.faq-item { border-bottom: 1px solid hsl(var(--foreground) / 0.15); text-align: center; }
.faq-item__question { width: 100%; display: flex; align-items: center; justify-content: center; gap: 1.5rem; padding: 1.25rem 0; background: none; border: none; text-align: center; }
@media (min-width: 768px) { .faq-item__question { padding: 1.5rem 0; } }
.faq-item__question span:first-child { flex: 1; font-family: var(--font-display); font-size: 1.25rem; line-height: 1.35; text-align: center; transition: color 0.3s; }
.faq-item__question:hover span:first-child { color: hsl(var(--accent)); }
@media (min-width: 768px) { .faq-item__question span:first-child { font-size: 1.5rem; } }
.faq-item__icon { flex-shrink: 0; width: 2.25rem; height: 2.25rem; border-radius: 50%; border: 1px solid; display: flex; align-items: center; justify-content: center; transition: all 0.3s; }
.faq-panel--teal .faq-item__icon, .faq-mobile-group--teal .faq-item__icon { border-color: hsl(var(--teal)); color: hsl(var(--teal)); }
.faq-panel--teal .faq-item.is-open .faq-item__icon, .faq-mobile-group--teal .faq-item.is-open .faq-item__icon { background: hsl(var(--teal)); color: hsl(var(--background)); }
.faq-panel--rosa .faq-item__icon, .faq-mobile-group--rosa .faq-item__icon { border-color: hsl(var(--rosa)); color: hsl(var(--rosa)); }
.faq-panel--rosa .faq-item.is-open .faq-item__icon, .faq-mobile-group--rosa .faq-item.is-open .faq-item__icon { background: hsl(var(--rosa)); color: hsl(var(--background)); }
.faq-panel--lilac .faq-item__icon, .faq-mobile-group--lilac .faq-item__icon { border-color: hsl(var(--lilac)); color: hsl(var(--lilac)); }
.faq-panel--lilac .faq-item.is-open .faq-item__icon, .faq-mobile-group--lilac .faq-item.is-open .faq-item__icon { background: hsl(var(--lilac)); color: hsl(var(--foreground)); }
.faq-panel--nopal .faq-item__icon, .faq-mobile-group--nopal .faq-item__icon { border-color: hsl(var(--nopal)); color: hsl(var(--nopal)); }
.faq-panel--nopal .faq-item.is-open .faq-item__icon, .faq-mobile-group--nopal .faq-item.is-open .faq-item__icon { background: hsl(var(--nopal)); color: hsl(var(--background)); }
.faq-panel--marigold .faq-item__icon, .faq-mobile-group--marigold .faq-item__icon { border-color: hsl(var(--marigold)); color: hsl(var(--marigold)); }
.faq-panel--marigold .faq-item.is-open .faq-item__icon, .faq-mobile-group--marigold .faq-item.is-open .faq-item__icon { background: hsl(var(--marigold)); color: hsl(var(--foreground)); }
.faq-item__icon svg { transition: transform 0.3s; }
.faq-item.is-open .faq-item__icon svg { transform: rotate(180deg); }
.faq-item__answer { padding-bottom: 1.5rem; max-width: 42rem; margin: 0 auto; text-align: center; }
.faq-item__answer p { color: hsl(var(--foreground) / 0.85); line-height: 1.7; font-size: 1rem; }
@media (min-width: 768px) { .faq-item__answer p { font-size: 17px; } }

/* ---------- Final CTA ---------- */
.final-cta-section { position: relative; overflow: hidden; padding: 6rem 1rem; display: flex; align-items: center; justify-content: center; min-height: 85vh; }
.final-cta-media { position: absolute; inset: 0; z-index: 0; }
.final-cta-overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, color-mix(in srgb, hsl(var(--primary)) 80%, transparent), color-mix(in srgb, hsl(var(--primary)) 70%, transparent), color-mix(in srgb, hsl(var(--primary)) 90%, transparent)); }
.final-cta-card {
	position: relative; z-index: 1; width: 100%; max-width: 56rem; border-radius: 2rem; overflow: hidden; box-shadow: var(--shadow-elevated);
	background: linear-gradient(135deg, color-mix(in srgb, hsl(var(--background)) 96%, transparent) 0%, color-mix(in srgb, hsl(var(--secondary)) 92%, transparent) 55%, color-mix(in srgb, hsl(var(--accent)) 22%, transparent) 100%);
	padding: 3.5rem 2rem; text-align: center;
}
@media (min-width: 768px) { .final-cta-card { padding: 5rem 4rem; } }
.final-cta-card__title { color: hsl(var(--foreground)); margin-bottom: 1.5rem; }
.final-cta-card__title .font-script.text-accent { font-family: var(--font-script); color: hsl(var(--accent)); }
.final-cta-text { max-width: 34rem; margin: 0 auto 2.5rem; color: hsl(var(--foreground) / 0.85); line-height: 1.6; }
.final-cta-buttons { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.75rem; margin-bottom: 2rem; }
.final-cta-notes { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.5rem 1rem; font-size: 14px; color: hsl(var(--foreground) / 0.65); }
.final-cta-notes span { display: inline-flex; align-items: center; gap: 0.4rem; }
.final-cta-notes svg { color: hsl(var(--accent)); }
.final-cta-notes__sep { opacity: 0.4; }

/* ---------- Footer ---------- */
.site-footer { padding: 4rem 0; }
@media (min-width: 1024px) { .site-footer { padding: 5rem 0; } }
.footer-top { display: flex; flex-direction: column; gap: 1.5rem; margin-bottom: 3rem; padding-bottom: 2.5rem; border-bottom: 1px solid hsl(var(--background) / 0.15); }
@media (min-width: 640px) { .footer-top { flex-direction: row; align-items: stretch; justify-content: space-between; } }
.footer-tagline-block { max-width: 34rem; }
@media (min-width: 640px) { .footer-tagline-block { text-align: right; } }
.footer-tagline { font-family: var(--font-display); font-size: 1.5rem; }
@media (min-width: 768px) { .footer-tagline { font-size: 1.875rem; } }
.footer-description { margin-top: 0.5rem; font-size: 15px; color: hsl(var(--background) / 0.7); line-height: 1.6; }
.footer-contact-line { margin-top: 0.75rem; font-size: 14px; }
.footer-contact-line a { display: inline-flex; align-items: center; gap: 0.5rem; color: hsl(var(--background) / 0.75); }
.footer-contact-line a:hover { color: hsl(var(--marigold)); }
.footer-columns { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2.5rem; }
@media (min-width: 768px) { .footer-columns { grid-template-columns: repeat(3, 1fr); gap: 2.5rem; } }
@media (min-width: 1024px) { .footer-columns { gap: 3rem; } }
.footer-col-title { font-family: var(--font-display); font-size: 1.25rem; margin-bottom: 1.25rem; display: inline-flex; align-items: center; gap: 0.5rem; }
.footer-col-title svg { color: hsl(var(--marigold)); flex-shrink: 0; }
.footer-contact-line svg { width: 14px; height: 14px; flex-shrink: 0; }
.footer-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.footer-col a, .footer-col button { font-size: 14px; color: hsl(var(--background) / 0.7); background: none; border: none; padding: 0; text-align: left; transition: all 0.3s; }
.footer-col a:hover, .footer-col button:hover { color: hsl(var(--marigold)); transform: translateX(3px); }
.footer-disclaimer { margin-top: 3rem; font-size: 13px; color: hsl(var(--background) / 0.5); line-height: 1.6; max-width: 48rem; }
.footer-bottom { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid hsl(var(--background) / 0.15); display: flex; flex-direction: column; align-items: center; gap: 0.75rem; text-align: center; }
@media (min-width: 640px) { .footer-bottom { flex-direction: row; justify-content: space-between; } }
.footer-credit, .footer-copyright { font-size: 13px; color: hsl(var(--background) / 0.55); }
.footer-credit a { color: hsl(var(--marigold)); font-weight: 600; }
.footer-credit a:hover { text-decoration: underline; }

/* ---------- Contact modal ---------- */
.theme-modal { position: fixed; inset: 0; z-index: 900; display: none; align-items: center; justify-content: center; padding: 1.5rem; }
.theme-modal.is-open { display: flex; }
.theme-modal__overlay { position: absolute; inset: 0; background: hsl(var(--foreground) / 0.4); }
.theme-modal__panel { position: relative; z-index: 1; width: 100%; max-width: 32rem; max-height: 90vh; overflow-y: auto; background: hsl(var(--background)); border-radius: 1rem; box-shadow: var(--shadow-elevated); padding: 2rem; animation: theme-fade-in 0.3s var(--transition-smooth); }
.theme-modal__close { position: absolute; top: 1rem; right: 1rem; background: none; border: none; color: hsl(var(--muted-foreground)); padding: 0.4rem; }
.theme-modal__title { font-size: 1.75rem; }
.theme-modal__desc { margin-top: 0.5rem; color: hsl(var(--foreground) / 0.7); line-height: 1.5; }
.theme-modal__contacts { display: flex; flex-wrap: wrap; gap: 1rem; margin: 1.25rem 0; font-size: 14px; color: hsl(var(--muted-foreground)); }
.theme-modal__contacts a { display: flex; align-items: center; gap: 0.5rem; }
.theme-modal__contacts a:hover { color: hsl(var(--accent)); }
.theme-form-row--split { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 480px) { .theme-form-row--split { grid-template-columns: 1fr 1fr; } }
.theme-form-field { margin-bottom: 1rem; }
.theme-form-field label { display: block; font-size: 14px; font-weight: 500; margin-bottom: 0.35rem; }
.theme-form-field input, .theme-form-field textarea, .theme-form-field select {
	width: 100%; padding: 0.65rem 0.75rem; background: hsl(var(--background)); border: 1px solid hsl(var(--border)); border-radius: 0.4rem; font-size: 1rem;
	transition: box-shadow 0.3s;
}
.theme-form-field input:focus, .theme-form-field textarea:focus, .theme-form-field select:focus { outline: none; box-shadow: 0 0 0 2px color-mix(in srgb, hsl(var(--accent)) 40%, transparent); }
.theme-form-actions { display: flex; justify-content: flex-end; }
.theme-form-error { color: hsl(var(--destructive)); font-size: 14px; margin-top: 0.5rem; }
.theme-modal__success { text-align: center; padding: 2rem 0; }
.theme-modal__success-icon { display: inline-flex; align-items: center; justify-content: center; width: 3.5rem; height: 3.5rem; border-radius: 50%; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); margin-bottom: 1rem; }
.theme-modal__success h3 { font-size: 1.5rem; margin-bottom: 0.5rem; }
.theme-modal__success p { color: hsl(var(--muted-foreground)); font-size: 14px; }

/* ---------- Side cart drawer ---------- */
#theme-cart-overlay { position: fixed; inset: 0; z-index: 800; background: hsl(var(--foreground) / 0.2); opacity: 0; pointer-events: none; transition: opacity 0.3s; }
body.cart-open #theme-cart-overlay { opacity: 1; pointer-events: auto; }
#theme-cart-drawer {
	position: fixed; top: 0; right: 0; height: 100%; width: 100%; max-width: 28rem; background: hsl(var(--background)); z-index: 801;
	box-shadow: var(--shadow-elevated); display: flex; flex-direction: column; transform: translateX(100%); transition: transform 0.4s var(--transition-smooth);
}
body.cart-open #theme-cart-drawer { transform: translateX(0); }
#theme-cart-drawer.is-updating { opacity: 0.6; pointer-events: none; }
.theme-cart-drawer__header { display: flex; align-items: center; justify-content: space-between; padding: 1.5rem; border-bottom: 1px solid hsl(var(--border)); }
.theme-cart-drawer__header h2 { font-size: 1.25rem; font-weight: 700; }
.theme-cart-drawer__close { background: none; border: none; padding: 0.25rem; }
.theme-cart-drawer__empty { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 1.5rem; text-align: center; gap: 1rem; color: hsl(var(--muted-foreground)); }
.theme-cart-drawer__items { flex: 1; overflow-y: auto; padding: 1.5rem; display: flex; flex-direction: column; gap: 1.5rem; }
.theme-cart-item { display: flex; gap: 1rem; }
.theme-cart-item__image { width: 5rem; height: 6rem; flex-shrink: 0; overflow: hidden; background: hsl(var(--secondary)); border-radius: 0.4rem; }
.theme-cart-item__image img { width: 100%; height: 100%; object-fit: cover; }
.theme-cart-item__body { flex: 1; min-width: 0; }
.theme-cart-item__name { font-size: 14px; font-weight: 500; display: block; }
.theme-cart-item__price { font-size: 14px; color: hsl(var(--muted-foreground)); margin-top: 0.2rem; }
.theme-cart-item__variation { font-size: 12px; color: hsl(var(--muted-foreground)); margin-top: 0.15rem; }
.theme-cart-item__controls { display: flex; align-items: center; gap: 0.6rem; margin-top: 0.6rem; }
.theme-cart-item__qty-btn { width: 1.75rem; height: 1.75rem; border-radius: 0.3rem; border: 1px solid hsl(var(--border)); background: transparent; }
.theme-cart-item__qty-btn:hover { background: hsl(var(--secondary)); }
.theme-cart-item__qty { width: 1.5rem; text-align: center; font-size: 14px; }
.theme-cart-item__remove { margin-left: auto; background: none; border: none; font-size: 13px; color: hsl(var(--muted-foreground)); }
.theme-cart-item__remove:hover { color: hsl(var(--foreground)); }
.theme-cart-drawer__footer { padding: 1.5rem; border-top: 1px solid hsl(var(--border)); display: flex; flex-direction: column; gap: 1rem; }
.theme-cart-drawer__subtotal { display: flex; justify-content: space-between; font-size: 14px; }
.theme-cart-drawer__note { font-size: 13px; color: hsl(var(--muted-foreground)); }

/* Hide "View cart" injected by WooCommerce after AJAX add-to-cart. */
.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; }

/* ---------- WooCommerce add-to-cart button overrides ---------- */
.single_add_to_cart_button.button,
.add_to_cart_button.button,
a.single_add_to_cart_button,
a.add_to_cart_button {
	background-color: var(--color-primary) !important;
	color: var(--color-button-text) !important;
	border: none !important;
	border-radius: var(--btn-radius) !important;
	min-height: var(--btn-height) !important;
	padding: var(--btn-padding) !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	font-family: var(--font-body) !important;
	font-size: var(--btn-font-size) !important;
	font-weight: var(--btn-font-weight) !important;
	letter-spacing: var(--btn-letter-spacing) !important;
	text-transform: none !important;
	cursor: pointer !important;
	transition: opacity 0.2s ease !important;
}
.single_add_to_cart_button.button:hover,
.add_to_cart_button.button:hover {
	opacity: 0.85 !important;
	background-color: var(--color-primary) !important;
	color: var(--color-button-text) !important;
}
.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;
	background-color: var(--color-primary) !important;
}
/* Card compact button — overrides global rules for the smaller card CTA */
.theme-product-card .add_to_cart_button.ajax_add_to_cart {
	min-height: unset !important;
	padding: 0.75rem 1rem !important;
	background-color: hsl(var(--teal)) !important;
	border: 1px solid hsl(var(--teal)) !important;
}
.theme-product-card .add_to_cart_button.ajax_add_to_cart:hover {
	background-color: hsl(var(--background)) !important;
	color: hsl(var(--teal)) !important;
}
.single-product .single_add_to_cart_button.loading::after,
.ajax_add_to_cart.loading::after { display: none !important; }
.ajax_add_to_cart.theme-btn-loading { opacity: 0.6 !important; pointer-events: none !important; cursor: wait !important; }

/* Variation table layout: label above control (Section 11.5.1) */
.single-product .variations.shop_attributes tbody,
.single-product .variations tbody tr,
.single-product .variations tbody td { display: block; width: 100%; }
.single-product .variations tbody td.label { padding-bottom: 0.35rem; font-weight: 600; }
.single-product .variations tbody td.value { padding-top: 0; }
.theme-variations-form { position: relative; }
.theme-attr-select-hidden { /* keep in layout for WooCommerce JS — table is clipped off-screen */ }
.theme-attr-pills { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.5rem; }
.theme-attr-pill {
	padding: 0.5rem 1rem;
	border-radius: 999px;
	border: 1px solid hsl(var(--border));
	background: transparent;
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.15em;
	font-family: var(--font-body);
	transition: all 0.3s;
}
.theme-attr-pill:hover:not(.is-selected) { border-color: hsl(var(--foreground) / 0.6); }
.theme-attr-pill.is-selected { background: hsl(var(--foreground)); color: hsl(var(--background)); border-color: hsl(var(--foreground)); }
.theme-attr-pill__price { margin-left: 0.5rem; opacity: 0.7; text-transform: none; letter-spacing: normal; font-size: 12px; }

/* ---------- Single product layout (Section 11.13) ---------- */
.single-product-main { padding: 1.5rem 0 6rem; background: hsl(var(--background)); }
@media (min-width: 1024px) { .single-product-main { padding-top: 2rem; } }
.single-product-main .container-wide,
.journal-single__article.container-wide {
	position: relative;
	z-index: 1;
}
.breadcrumb-nav a { color: hsl(var(--muted-foreground)); }
.breadcrumb-nav a:hover { color: hsl(var(--foreground)); }
.breadcrumb-sep { margin: 0 0.5rem; opacity: 0.5; }
.breadcrumb-current { color: hsl(var(--foreground)); }
.breadcrumb-nav { padding: 0.75rem 0; font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; color: hsl(var(--muted-foreground)); font-family: var(--font-body); }
.theme-product-layout { display: grid; grid-template-columns: 1fr; gap: 2.5rem; margin-top: 0; padding-top: 1rem; min-width: 0; align-items: start; }
@media (min-width: 1024px) { .theme-product-layout { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 4rem; } }
.theme-product-gallery { min-width: 0; max-width: 100%; }
@media (min-width: 1024px) { .theme-product-gallery { grid-column: span 7; } }
.theme-product-info { min-width: 0; max-width: 100%; }
@media (min-width: 1024px) {
	.theme-product-info { grid-column: span 5; padding-left: 1rem; position: sticky; top: 7rem; align-self: start; }
}
.theme-product-gallery__main { position: relative; aspect-ratio: 1/1; background: hsl(var(--secondary)); overflow: hidden; border-radius: 0; }
.theme-product-gallery__img { transition: transform 0.7s var(--transition-smooth), opacity 0.7s; }
.theme-product-gallery__main:hover .theme-product-gallery__img { transform: scale(1.03); }
.theme-product-thumbnails { margin-top: 1rem; display: grid; grid-template-columns: repeat(5, 1fr); gap: 0.5rem; max-width: 100%; }
@media (min-width: 768px) { .theme-product-thumbnails { gap: 0.75rem; } }
.theme-product-thumb { position: relative; aspect-ratio: 1/1; overflow: hidden; background: hsl(var(--secondary)); border: 1px solid transparent; border-radius: 0; padding: 0; cursor: pointer; transition: border-color 0.3s; }
.theme-product-thumb img { width: 100%; height: 100%; object-fit: cover; }
.theme-product-thumb.is-active { border-color: hsl(var(--foreground)); }
.theme-product-thumb:hover:not(.is-active) { border-color: hsl(var(--foreground) / 0.4); }
.theme-product-info__cat { font-size: 13px; letter-spacing: 0.25em; text-transform: uppercase; color: hsl(var(--muted-foreground)); font-family: var(--font-body); margin: 0; }
.product-title, .theme-product-info__title { font-family: var(--font-display); font-weight: 400; font-size: 1.875rem; line-height: 1.1; margin: 0.75rem 0 1.25rem; }
@media (min-width: 768px) { .product-title, .theme-product-info__title { font-size: 2.25rem; } }
@media (min-width: 1024px) { .product-title, .theme-product-info__title { font-size: 2.75rem; } }
.theme-product-info__price,
.single-product div.product .theme-product-info__price,
.single-product div.product .theme-product-info__price .price,
.single-product div.product .theme-product-info__price ins,
.single-product div.product .theme-product-info__price del,
.theme-product-info__price .amount,
.theme-product-info__price .woocommerce-Price-amount,
.theme-product-info__price .woocommerce-Price-currencySymbol {
	font-size: 1.25rem !important;
	font-weight: 400 !important;
	font-family: var(--font-body) !important;
	font-style: normal !important;
	color: hsl(var(--foreground)) !important;
	background: none !important;
	text-decoration: none !important;
	line-height: 1.5 !important;
}
.theme-product-info__price { margin-bottom: 1.5rem; overflow-wrap: break-word; }
.theme-product-info__price .theme-product-info__size {
	margin-left: 0.5rem;
	font-size: 0.875rem !important;
	color: hsl(var(--muted-foreground)) !important;
	font-weight: 400 !important;
}
.theme-product-info__intro { font-family: var(--font-body); font-size: 1rem; line-height: 1.625; color: hsl(var(--muted-foreground)); margin: 0 0 2rem; }
.theme-product-ritual { margin-bottom: 2rem; border-radius: 0.75rem; border: 1px solid hsl(var(--accent) / 0.3); background: hsl(var(--accent) / 0.1); padding: 1.25rem; }
.theme-product-ritual__title { font-size: 13px; letter-spacing: 0.25em; text-transform: uppercase; font-family: var(--font-body); font-weight: 600; color: hsl(var(--accent)); margin: 0 0 0.5rem; }
.theme-product-ritual__text { font-size: 15px; line-height: 1.625; color: hsl(var(--foreground) / 0.85); font-family: var(--font-body); margin: 0; }
.theme-product-ritual__note { margin-top: 0.75rem; font-size: 13px; font-style: italic; color: hsl(var(--muted-foreground)); line-height: 1.6; font-family: var(--font-body); }
.theme-variation-attribute { margin-bottom: 1.5rem; }
.theme-variation-attribute__label { font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; color: hsl(var(--muted-foreground)); font-family: var(--font-body); font-weight: 400; margin: 0 0 0.75rem; }
.theme-quantity-block {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.75rem;
	margin: 1rem 0 0;
	width: 100%;
}
.theme-quantity-block__label {
	font-size: 13px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: hsl(var(--muted-foreground));
	font-family: var(--font-body);
	font-weight: 400;
	margin: 0 0 0.25rem;
	display: block;
	line-height: 1;
	width: 100%;
}
.theme-quantity-block .theme-add-to-cart-area { width: 100%; }
.single_variation_wrap .woocommerce-variation-add-to-cart .quantity,
.single_variation_wrap .quantity:not(.theme-quantity-wrapper) { display: none !important; }
.theme-stock-indicator--out { color: hsl(var(--destructive)); font-weight: 600; margin-bottom: 1rem; }
.theme-add-to-cart-area { display: flex; align-items: stretch; flex-wrap: wrap; gap: 0.75rem; margin: 0 0 0.5rem; }
.theme-add-to-cart-area--stacked { flex-direction: column; align-items: stretch; gap: 1rem; }
.theme-quantity-wrapper { display: inline-flex; align-items: center; border: 1px solid hsl(var(--border)); border-radius: 0; overflow: hidden; width: fit-content; }
.theme-qty-minus, .theme-qty-plus { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.5rem; background: transparent; border: none; color: hsl(var(--foreground)); }
.theme-qty-minus:hover, .theme-qty-plus:hover { background: hsl(var(--secondary)); }
.theme-qty-input { width: 2.75rem; text-align: center; border: none; background: transparent; font-size: 14px; font-family: var(--font-body); -moz-appearance: textfield; height: 2.5rem; }
.theme-qty-input::-webkit-outer-spin-button, .theme-qty-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.theme-product-atc-btn,
.single-product .single_add_to_cart_button.theme-product-atc-btn {
	display: block;
	width: 100%;
	background: hsl(var(--foreground)) !important;
	color: hsl(var(--background)) !important;
	border: none !important;
	border-radius: 999px !important;
	padding: 1rem 1.5rem !important;
	font-size: 12px !important;
	letter-spacing: 0.25em !important;
	text-transform: uppercase !important;
	font-family: var(--font-body) !important;
	font-weight: 500 !important;
	min-height: auto !important;
	transition: opacity 0.3s;
}
.theme-product-atc-btn:hover:not(.disabled) { opacity: 0.9; }
.theme-product-atc-btn.disabled, .theme-product-atc-btn:disabled { opacity: 0.6; cursor: not-allowed; }
.theme-product-accordions { margin-top: 2.5rem; margin-bottom: 0; border-top: 1px solid hsl(var(--border)); }
.theme-variations-form table.variations { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; opacity: 0; pointer-events: none; }
.single_variation_wrap { margin-top: 0; }
.theme-product-accordion { border-top: 1px solid hsl(var(--border)); }
.theme-product-accordion:first-child { border-top: none; }
.theme-product-accordion__toggle { width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 1.25rem 0; background: none; border: none; text-align: left; color: hsl(var(--foreground)); cursor: pointer; }
.theme-product-accordion__toggle span:first-child { font-size: 13px; letter-spacing: 0.25em; text-transform: uppercase; font-family: var(--font-body); }
.theme-product-accordion__toggle svg { transition: transform 0.3s; flex-shrink: 0; }
.theme-product-accordion__toggle.is-open svg { transform: rotate(180deg); }
.theme-product-accordion__panel { padding-bottom: 1.5rem; font-size: 15px; color: hsl(var(--muted-foreground)); line-height: 1.7; font-family: var(--font-body); }
.theme-product-accordion__panel p { margin: 0 0 0.75rem; }
.theme-product-detail-list { list-style: none; margin: 1rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.theme-product-detail-list li { display: flex; align-items: flex-start; gap: 0.75rem; font-size: 15px; color: hsl(var(--muted-foreground)); }
.theme-product-detail-list li::before { content: ''; width: 4px; height: 4px; border-radius: 50%; background: hsl(var(--foreground)); margin-top: 0.55rem; flex-shrink: 0; }
.single-product .woocommerce-variation-price { display: none; }
.single-product .woocommerce-variation-availability { display: none; }
.woocommerce-product-details__short-description,
.woocommerce-variation-description,
.posted_in { overflow-wrap: break-word; word-break: break-word; }
.variations label { font-family: var(--font-body); font-weight: 600; font-style: normal; }

.related-products-section { padding: 5rem 0 0; border-top: 1px solid hsl(var(--border)); margin-top: 2.5rem; }
.related-products-section__header { text-align: center; margin-bottom: 3rem; }
.related-products-section__kicker { font-family: var(--font-display); font-style: italic; font-size: 1rem; color: hsl(var(--muted-foreground)); margin: 0 0 0.5rem; }
.related-products-section__title { font-family: var(--font-display); font-weight: 400; font-size: 1.875rem; margin: 0; line-height: 1.1; }
@media (min-width: 768px) { .related-products-section__title { font-size: 2.25rem; } }
.related-products-section__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 1024px) { .related-products-section__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* ---------- Checkout (Section 13) ---------- */
body.woocommerce-checkout .site-main { padding-top: var(--header-height, 116px); padding-bottom: 4rem; }
/* One flat 2-column grid on the block checkout shell (no nested layout grids). */
body.woocommerce-checkout .wc-block-components-sidebar-layout.wc-block-checkout {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--checkout-gap, 2.5rem);
	align-items: start;
}
@media (min-width: 1024px) {
	body.woocommerce-checkout .wc-block-components-sidebar-layout.wc-block-checkout {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	}
}
body.woocommerce-checkout .wc-block-components-main.wc-block-checkout__main,
body.woocommerce-checkout .wc-block-components-sidebar.wc-block-checkout__sidebar {
	min-width: 0 !important;
	width: 100% !important;
	max-width: none !important;
	flex: none !important;
	position: static !important;
}
body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-main,
body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-sidebar {
	display: block !important;
}
@media (min-width: 1024px) {
	/* Avoid duplicate order summary in the form column; sidebar column holds the summary. */
	body.woocommerce-checkout .wc-block-checkout__actions .checkout-order-summary-block-fill-wrapper,
	body.woocommerce-checkout .wc-block-checkout__actions .wp-block-woocommerce-checkout-order-summary-block {
		display: none !important;
	}
}
body.woocommerce-checkout .wc-block-components-text-input input,
body.woocommerce-checkout .wc-block-components-combobox .wc-block-components-combobox-control input,
body.woocommerce-checkout .wc-block-components-textarea textarea {
	width: 100% !important;
	max-width: none !important;
	background-color: hsl(var(--background)) !important;
	border: 1px solid hsl(var(--border)) !important;
	border-radius: 0.375rem !important;
	color: hsl(var(--foreground)) !important;
	font-family: var(--font-body) !important;
	font-size: 1rem !important;
	font-weight: 400 !important;
	line-height: 1.5 !important;
	box-shadow: none !important;
}
body.woocommerce-checkout .wc-blocks-components-select__select,
body.woocommerce-checkout .wc-block-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: 0.375rem !important;
	color: hsl(var(--foreground)) !important;
	font-family: var(--font-body) !important;
	font-size: 1rem !important;
	font-weight: 400 !important;
	line-height: 1.5 !important;
	box-shadow: none !important;
	appearance: auto !important;
}
body.woocommerce-checkout .wc-blocks-components-select__container {
	border: none !important;
	background: transparent !important;
	box-shadow: none !important;
}
body.woocommerce-checkout .wc-blocks-components-select__label {
	font-family: var(--font-body) !important;
	font-size: 0.875rem !important;
	font-weight: 500 !important;
	color: hsl(var(--foreground)) !important;
}
body.woocommerce-checkout .wc-block-components-text-input input::placeholder,
body.woocommerce-checkout .wc-block-components-textarea textarea::placeholder {
	color: hsl(var(--muted-foreground)) !important;
	opacity: 1 !important;
}
body.woocommerce-checkout .wc-block-components-text-input input:focus,
body.woocommerce-checkout .wc-blocks-components-select__select:focus,
body.woocommerce-checkout .wc-block-components-select select:focus,
body.woocommerce-checkout .wc-block-components-combobox .wc-block-components-combobox-control input:focus,
body.woocommerce-checkout .wc-block-components-textarea textarea:focus {
	outline: none !important;
	box-shadow: 0 0 0 1px hsl(var(--primary)) !important;
	border-color: hsl(var(--primary)) !important;
}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button {
	background: hsl(var(--primary)) !important; color: hsl(var(--primary-foreground)) !important; border-radius: var(--btn-radius) !important;
	text-transform: uppercase; letter-spacing: 0.15em; font-size: 13px;
}
body.woocommerce-checkout .wc-block-checkout__sidebar {
	background-color: var(--color-surface, hsl(var(--card))); border-radius: var(--card-radius); padding: var(--section-padding, 2rem);
}
body.woocommerce-checkout .wc-block-components-notice-banner { grid-column: 1 / -1; }
.page-title { font-size: 2rem; margin-bottom: 2rem; }
@media (min-width: 768px) { .page-title { font-size: 2.75rem; } }
.entry-content { padding-bottom: 4rem; }

/* Scoped notice visibility (Section 14.1) */
.single-product .woocommerce-message,
.single-product .woocommerce-info { display: none; }
#theme-cart-drawer .woocommerce-message { display: none; }

/* ---------- Thank you page (Section 22.8) ---------- */
body.theme-thankyou-page { overflow-x: hidden; }
.theme-thankyou-content { max-width: 48rem; margin: 0 auto; padding: 3rem 0 5rem; text-align: center; }
.theme-thankyou-icon { display: inline-flex; align-items: center; justify-content: center; width: 4rem; height: 4rem; border-radius: 50%; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); margin-bottom: 1.5rem; }
body.theme-thankyou-page .woocommerce-order-details table { width: 100%; table-layout: fixed; }
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-order h2,
body.theme-thankyou-page .woocommerce-order-details__title { padding: 0 0 1rem 0; font-size: 1.5rem; }
body.theme-thankyou-page .woocommerce-customer-details address { max-width: 480px; overflow-wrap: break-word; margin: 0 auto; }
@media (min-width: 768px) {
	body.theme-thankyou-page .woocommerce-customer-details { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: start; }
}

/* ---------- Shop archive ---------- */
.shop-archive-main { padding: 2.5rem 0 5rem; }

/* ---------- 404 ---------- */
.theme-404__inner { min-height: 60vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding-top: 4rem; padding-bottom: 4rem; }
.theme-404__code { font-size: 4rem; margin-bottom: 1rem; }
.theme-404__title { font-size: 1.25rem; color: hsl(var(--muted-foreground)); margin-bottom: 1.5rem; }
.theme-404__link { color: hsl(var(--accent)); text-decoration: underline; }
