/* ============================================================
   Glowshop — Dawn-inspired storefront styles
   Font: EarlSans (brand) / Assistant (fallback)
   Palette: text #2B2727 · green #00524F · footer #121212 · gold #EFA83C
   ============================================================ */

/* ---------- Fonts ---------- */
@font-face {
	font-family: 'EarlSans';
	src: url('../fonts/earlsans-400.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: 'EarlSans';
	src: url('../fonts/earlsans-700.woff2') format('woff2');
	font-weight: 700;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: 'EarlSans';
	src: url('../fonts/earlsans-200.woff2') format('woff2');
	font-weight: 200;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: 'Assistant';
	src: url('../fonts/assistant-400.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: 'Assistant';
	src: url('../fonts/assistant-700.woff2') format('woff2');
	font-weight: 700;
	font-style: normal;
	font-display: swap;
}

/* ---------- Variables / base ---------- */
:root {
	--gs-text: #2b2727;
	--gs-text-soft: rgba(43, 39, 39, 0.75);
	--gs-bg: #ffffff;
	--gs-green: #00524f;
	--gs-green-dark: #014721;
	--gs-footer: #121212;
	--gs-gold: #efa83c;
	--gs-sale-green: #17752f;
	--gs-border: #e6e2e2;
	--gs-width: 1200px;
	--gs-font: 'EarlSans', 'Assistant', -apple-system, 'Segoe UI', sans-serif;
	--gs-radius-card: 10px;
	--gs-radius-pill: 40px;
}

html {
	font-size: 62.5%;
	box-sizing: border-box;
}
*, *::before, *::after { box-sizing: inherit; }

body {
	margin: 0;
	background: var(--gs-bg);
	color: var(--gs-text-soft);
	font-family: var(--gs-font);
	font-size: 1.5rem;
	font-weight: 400;
	line-height: 1.8;
	letter-spacing: 0.06rem;
	-webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }
ul { margin: 0; padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
button {
	font-family: inherit;
	font-size: inherit;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
	color: inherit;
	letter-spacing: inherit;
}
h1, h2, h3, h4, h5, h6 { color: var(--gs-text); font-weight: 400; margin: 0; }

.page-width {
	max-width: var(--gs-width);
	margin: 0 auto;
	padding-left: 5rem;
	padding-right: 5rem;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}
.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--gs-green);
	color: #fff;
	padding: 8px 16px;
	z-index: 999;
}
.skip-link:focus { left: 0; }

/* ---------- Announcement bar ---------- */
.gs-announce {
	background: var(--gs-green);
	min-height: 56px;
	display: flex;
	justify-content: center;
	align-items: center;
}
.gs-announce-link {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 15px;
	color: #fff;
	font-weight: 700;
	font-size: 1.6rem;
	line-height: 1.3;
	text-align: center;
	padding: 8px 16px;
	text-transform: capitalize;
}
.gs-announce-link .gs-announce-icon { display: block; flex: 0 0 auto; }
.gs-announce-link:hover .gs-announce-text { text-decoration: underline; }

/* ---------- Header ---------- */
.gs-header-wrapper {
	background: #fff;
	position: sticky;
	top: 0;
	z-index: 60;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.gs-header-wrapper.is-hidden { transform: translateY(-102%); box-shadow: none; }

.gs-header { position: relative; background: #fff; }
.gs-header-inner {
	display: grid;
	grid-template-areas: 'heading search icons';
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	padding-top: 12px;
	padding-bottom: 8px;
	gap: 0 2rem;
}
.gs-header-heading { grid-area: heading; justify-self: start; min-width: 240px; }
.gs-header-logo { display: inline-block; line-height: 0; }
.gs-header-logo img { width: 240px; height: auto; max-width: none; }
.gs-header-burger { display: none; }

.gs-header-search--desk { grid-area: search; justify-self: center; width: 600px; max-width: 44vw; }
.gs-searchform { position: relative; display: flex; }
.gs-search-input {
	width: 100%;
	height: 44px;
	border: 1px solid rgba(43, 39, 39, 0.55);
	border-radius: var(--gs-radius-pill);
	background: #fff;
	padding: 0 4.6rem 0 2rem;
	font-family: inherit;
	font-size: 1.5rem;
	color: var(--gs-text);
	outline: none;
	appearance: none;
	-webkit-appearance: none;
	box-shadow: none;
}
.gs-search-input::placeholder { color: rgba(43, 39, 39, 0.6); }
.gs-search-input:focus { border-color: var(--gs-text); }
.gs-search-submit {
	position: absolute;
	right: 4px;
	top: 50%;
	transform: translateY(-50%);
	width: 40px;
	height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--gs-text);
}

.gs-header-icons {
	grid-area: icons;
	justify-self: end;
	display: flex;
	align-items: center;
	gap: 4px;
}
.gs-localization--desk {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0;
	margin-right: 10px;
}
.gs-loc-block { position: relative; }
.gs-loc-btn {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 1.4rem;
	color: var(--gs-text);
	padding: 2px 0;
	white-space: nowrap;
}
.gs-loc-btn svg { transition: transform 0.2s; }
.gs-loc-btn[aria-expanded='true'] svg { transform: rotate(180deg); }
.gs-loc-list {
	position: absolute;
	top: calc(100% + 4px);
	right: 0;
	background: #fff;
	border: 1px solid var(--gs-border);
	border-radius: 8px;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
	padding: 6px 0;
	min-width: 180px;
	z-index: 80;
}
.gs-loc-item {
	display: block;
	padding: 6px 14px;
	font-size: 1.3rem;
	color: var(--gs-text-soft);
	white-space: nowrap;
}
.gs-loc-item:last-child { font-weight: 700; color: var(--gs-text); }

.gs-header-icon {
	position: relative;
	width: 44px;
	height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: #292929;
}
.gs-header-icon svg { display: block; }
.gs-header-icon:hover { color: var(--gs-green); }
.gs-header-icon--cart { color: #2b2727; }
.gs-header-icon--cart svg { width: 24px; height: 24px; }
.gs-cart-count {
	position: absolute;
	bottom: 6px;
	right: 5px;
	min-width: 15px;
	height: 15px;
	padding: 0 3px;
	border-radius: 8px;
	background: var(--gs-green);
	color: #fff;
	font-size: 1rem;
	line-height: 15px;
	text-align: center;
	visibility: hidden;
}
.gs-cart-count.has-items { visibility: visible; }
.gs-mob-search { display: none; }

/* Nav row + mega menu */
.gs-nav { padding-top: 2px; }
.gs-menu {
	display: flex;
	flex-wrap: wrap;
	margin-left: -12px;
}
.gs-menu > li { position: static; }
.gs-menu-link {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 12px;
	font-size: 1.4rem;
	line-height: 1.3;
	color: var(--gs-text-soft);
	text-decoration: none;
}
.gs-menu-link:hover { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; color: var(--gs-text); }
.gs-menu-link svg { margin-top: 2px; }

.gs-mega {
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	background: #fff;
	border-top: 1px solid var(--gs-border);
	border-bottom: 1px solid var(--gs-border);
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.06);
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
	z-index: 70;
}
.gs-menu > li.is-open .gs-mega,
.gs-menu > li.has-mega:hover .gs-mega {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.gs-mega-list {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: 2rem;
	padding-top: 24px;
	padding-bottom: 30px;
}
.gs-mega-col-title {
	display: inline-block;
	font-size: 1.4rem;
	font-weight: 700;
	color: var(--gs-text);
	margin-bottom: 10px;
}
.gs-mega-col-title:hover { text-decoration: underline; }
.gs-mega-sub li a {
	display: block;
	padding: 4px 0;
	font-size: 1.3rem;
	color: var(--gs-text-soft);
}
.gs-mega-sub li a:hover { text-decoration: underline; color: var(--gs-text); }

/* ---------- Mobile drawer ---------- */
.gs-drawer { position: fixed; inset: 0; z-index: 200; }
.gs-drawer-overlay {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.45);
	opacity: 0;
	transition: opacity 0.3s;
}
.gs-drawer.is-open .gs-drawer-overlay { opacity: 1; }
.gs-drawer-panel {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: min(88vw, 360px);
	background: #fff;
	transform: translateX(-100%);
	transition: transform 0.3s ease;
	overflow-y: auto;
	padding-bottom: 30px;
}
.gs-drawer.is-open .gs-drawer-panel { transform: translateX(0); }
.gs-drawer-head { padding: 10px 14px; }
.gs-drawer-close {
	width: 44px; height: 44px;
	display: flex; align-items: center; justify-content: center;
	color: var(--gs-text);
}
.gs-drawer-menu { border-top: 1px solid var(--gs-border); }
.gs-drawer-link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 14px 18px;
	font-size: 1.5rem;
	color: var(--gs-text);
	border-bottom: 1px solid rgba(230, 226, 226, 0.6);
	text-align: left;
}
.gs-drawer-acc svg { transition: transform 0.25s; }
.gs-drawer-acc[aria-expanded='true'] svg { transform: rotate(180deg); }
.gs-drawer-sub {
	overflow: hidden;
	max-height: 0;
	transition: max-height 0.35s ease;
	background: #faf9f8;
}
#gs-mobile-drawer .gs-drawer-sub .gs-drawer-sublink { padding-left: 32px; font-size: 1.4rem; }
#gs-mobile-drawer .gs-drawer-sub .gs-drawer-sub .gs-drawer-sublink { padding-left: 46px; }
.gs-drawer-utility { padding: 18px; border-top: 1px solid var(--gs-border); margin-top: 14px; }
.gs-drawer-utility .gs-drawer-link { border-bottom: 0; padding: 8px 0; gap: 10px; }
.gs-drawer-loc { display: flex; flex-direction: column; gap: 4px; margin-top: 10px; }
.gs-drawer-loc-item { font-size: 1.3rem; color: var(--gs-text-soft); }

/* ---------- Search modal (mobile) ---------- */
.gs-search-modal { position: fixed; inset: 0; z-index: 210; }
.gs-search-modal-overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.5); opacity: 0; transition: opacity 0.25s; }
.gs-search-modal.is-open .gs-search-modal-overlay { opacity: 1; }
.gs-search-modal-content {
	position: relative;
	background: #fff;
	padding: 18px 20px;
	display: flex;
	gap: 10px;
	align-items: center;
	transform: translateY(-8px);
	transition: transform 0.25s;
}
.gs-search-modal.is-open .gs-search-modal-content { transform: translateY(0); }
.gs-search-modal-content .gs-searchform { flex: 1; }
.gs-search-modal-close { width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; }

/* ---------- Sections common ---------- */
.gs-section { margin-top: 15px; margin-bottom: 15px; }
.gs-section-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 14px;
}
.gs-section-head--center { justify-content: center; margin-bottom: 22px; }
.gs-section-title {
	font-size: 2.4rem;
	line-height: 1.15;
	color: var(--gs-text);
}
.gs-viewall {
	font-size: 1.4rem;
	color: var(--gs-text);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.gs-btn-dark {
	display: inline-block;
	background: var(--gs-text);
	color: #fff;
	font-size: 1.4rem;
	line-height: 1;
	padding: 14px 30px;
	border-radius: var(--gs-radius-pill);
	transition: opacity 0.2s;
}
.gs-btn-dark:hover { opacity: 0.85; }
.gs-center { text-align: center; margin-top: 26px; }
.gs-empty { padding: 40px 0; color: var(--gs-text-soft); }

/* ---------- Cookbook banner ---------- */
.gs-cookbook { margin-top: 4px; }
.gs-cookbook-link { display: block; }
.gs-cookbook-link img { width: 100%; }

/* ---------- Hero slideshow ---------- */
.gs-hero { margin-top: 4px; }
.gs-hero-viewport { position: relative; overflow: hidden; }
.gs-hero-track {
	display: flex;
	transition: transform 0.5s ease;
}
.gs-hero-slide { flex: 0 0 100%; min-width: 100%; }
.gs-hero-link { display: block; }
.gs-hero-link img { width: 100%; aspect-ratio: 2000 / 863.6; object-fit: cover; }
.gs-hero-controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 14px;
	padding: 10px 0 4px;
}
.gs-hero-btn {
	width: 40px; height: 40px;
	display: flex; align-items: center; justify-content: center;
	color: var(--gs-text);
}
.gs-hero-dots { display: flex; align-items: center; gap: 8px; }
.gs-hero-dot .dot {
	display: block;
	width: 9px; height: 9px;
	border-radius: 50%;
	background: transparent;
	border: 1px solid var(--gs-text);
	transition: background 0.2s;
}
.gs-hero-dot.is-active .dot { background: var(--gs-text); }
.gs-hero-pause { width: 28px; }

/* ---------- Square teasers ---------- */
.gs-teaser-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
}
.gs-teaser { display: block; overflow: hidden; }
.gs-teaser img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	transition: transform 0.4s ease;
}
.gs-teaser:hover img { transform: scale(1.03); }

/* ---------- Rich text promo ---------- */
.gs-richtext { margin-top: 30px; margin-bottom: 39px; }
.gs-richtext-inner { text-align: center; max-width: 780px; }
.gs-richtext-title {
	font-size: 3rem;
	line-height: 1.15;
	margin-bottom: 14px;
}
.gs-richtext-text p { margin: 0 0 18px; }
.gs-richtext-text strong { color: var(--gs-text); }

/* ---------- Category circles ---------- */
.gs-cats { margin-top: 20px; }
.gs-cat-grid {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: 14px;
	text-align: center;
}
.gs-cat-media {
	display: block;
	margin: 0 auto 8px;
	width: 100%;
	max-width: 160px;
	border-radius: 50%;
	overflow: hidden;
}
.gs-cat-media img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	transition: transform 0.35s ease;
}
.gs-cat:hover .gs-cat-media img { transform: scale(1.05); }
.gs-cat-link {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 1.5rem;
	line-height: 1.35;
	color: var(--gs-text);
}
.gs-cat-link .gs-arrow { display: inline-flex; }
.gs-cat-link:hover { text-decoration: underline; }

/* ---------- Treat yourself carousel ---------- */
.gs-treat { margin-top: 20px; }
.gs-treat-heading {
	text-align: center;
	font-size: 1.6rem;
	font-weight: 700;
	color: var(--gs-text);
	margin-bottom: 18px;
}
.gs-treat-wrap { position: relative; display: flex; align-items: center; gap: 6px; }
.gs-treat-track {
	display: flex;
	gap: 12px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}
.gs-treat-track::-webkit-scrollbar { display: none; }
.gs-treat-item {
	flex: 0 0 auto;
	scroll-snap-align: start;
	text-align: center;
	display: flex;
	flex-direction: column;
}
.gs-treat-media { background: #fff; margin-bottom: 8px; }
.gs-treat-media img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
}
.gs-treat-title {
	font-size: 1.4rem;
	line-height: 1.4;
	color: var(--gs-text);
	font-weight: 400;
	min-height: 40px;
}
.gs-treat-title a:hover { text-decoration: underline; }
.gs-treat-rating { display: flex; align-items: center; justify-content: center; gap: 5px; margin: 2px 0; }
.gs-treat-count { font-size: 1.2rem; color: var(--gs-text-soft); }
.gs-treat-price { margin: 4px 0 8px; font-size: 1.5rem; }
.gs-treat-sale { color: var(--gs-sale-green); font-weight: 700; }
.gs-treat-reg { color: var(--gs-text-soft); margin-left: 4px; }
.gs-treat-var { margin-bottom: 8px; }
.gs-treat-select {
	width: 100%;
	max-width: 200px;
	height: 40px;
	border: 1px solid var(--gs-border);
	border-radius: 8px;
	background: #fff;
	font-family: inherit;
	font-size: 1.3rem;
	padding: 0 10px;
	color: var(--gs-text);
}
.gs-treat-btn {
	display: inline-block;
	background: var(--gs-green);
	color: #fff;
	font-size: 1.4rem;
	line-height: 1;
	padding: 13px 26px;
	border-radius: var(--gs-radius-pill);
	width: 100%;
	max-width: 220px;
	margin: 0 auto;
	transition: opacity 0.2s;
}
.gs-treat-btn:hover { opacity: 0.88; }
.gs-treat-btn.is-soldout { background: rgba(0, 82, 79, 0.5); cursor: default; }
.gs-treat-btn.is-added { opacity: 0.85; cursor: default; }
.gs-treat-btn.is-loading { opacity: 0.72; cursor: progress; }
.gs-card-btn--var.is-loading, .gs-card-btn--var.is-added { opacity: 0.8; }
/* WC core appends a generic "View cart" link after any AJAX add-to-cart button it is handed.
   It is unstyled (#333 square block, content-box padding -> wider than the card) and wrecks
   the card layout. The theme shows its own feedback + updates the header badge instead. */
.gs-treat-item .added_to_cart,
.gs-card .added_to_cart,
.gs-card-actions .added_to_cart { display: none !important; }
.gs-treat-dots { display: flex; justify-content: center; gap: 8px; margin-top: 14px; }
.gs-dot {
	width: 9px; height: 9px;
	border-radius: 50%;
	background: #d9d5d5;
	transition: background 0.2s;
}
.gs-dot.is-active { background: var(--gs-text); }

/* ---------- Generic slider arrows ---------- */
.gs-slider-wrap { position: relative; }
.gs-slider-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 40px; height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--gs-text);
	z-index: 5;
}
.gs-slider-arrow--prev { left: -46px; }
.gs-slider-arrow--next { right: -46px; }

/* ---------- Product cards ---------- */
.gs-grid {
	display: grid !important;
	gap: 12px;
	grid-template-columns: repeat(4, 1fr);
}
.gs-grid::before, .gs-grid::after { content: none !important; }
.gs-slider {
	display: flex !important;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	grid-template-columns: none;
}
.gs-slider::-webkit-scrollbar { display: none; }
.gs-slider .gs-card-col {
	flex: 0 0 calc((100% - 60px) / 5.5);
	min-width: 180px;
	scroll-snap-align: start;
}

.gs-card {
	position: relative;
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--gs-border);
	border-radius: var(--gs-radius-card);
	overflow: hidden;
	height: 100%;
}
.gs-card-media { position: relative; }
.gs-card-imglink { display: block; overflow: hidden; }
.gs-card-img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	background: #fff;
	transition: opacity 0.3s ease;
}
.gs-card-img--hover {
	position: absolute;
	inset: 0;
	opacity: 0;
}
.gs-card-imglink:hover .gs-card-img--hover { opacity: 1; }
.gs-card-badge {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 3;
}
.gs-badge {
	display: inline-block;
	background: #fff;
	border: 1px solid rgba(43, 39, 39, 0.25);
	border-radius: var(--gs-radius-pill);
	color: var(--gs-text);
	font-size: 1.2rem;
	letter-spacing: 0.1rem;
	line-height: 1;
	padding: 6px 12px;
}
.gs-badge--pdp { border-color: rgba(43, 39, 39, 0.35); }
.gs-card-info {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 12px 14px 14px;
	text-align: left;
}
.gs-card-title {
	font-size: 1.5rem;
	font-weight: 500;
	line-height: 1.4;
	color: var(--gs-text);
}
.gs-card-title a { display: block; color: var(--gs-text); }
.gs-card-title a:hover { text-decoration: underline; }
.gs-card-rating {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 4px;
}
.gs-stars { display: inline-flex; gap: 1px; }
.gs-star { position: relative; display: inline-flex; color: #d8d4d4; }
.gs-stars--gold .gs-star { color: var(--gs-gold); }
.gs-stars--black .gs-star { color: #4c4848; }
.gs-star.is-full svg { color: inherit; }
.gs-star.is-full path { fill: currentColor; }
.gs-star.is-half { color: #d8d4d4; }
.gs-star.is-half::after {
	content: '';
	position: absolute;
	inset: 0;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l2.9 6.6 7.1.7-5.4 4.8 1.6 7-6.2-3.7-6.2 3.7 1.6-7L2 9.3l7.1-.7z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l2.9 6.6 7.1.7-5.4 4.8 1.6 7-6.2-3.7-6.2 3.7 1.6-7L2 9.3l7.1-.7z'/%3E%3C/svg%3E") center / contain no-repeat;
	clip-path: inset(0 50% 0 0);
}
.gs-stars--gold .gs-star.is-half::after { background: var(--gs-gold); }
.gs-stars--black .gs-star.is-half::after { background: #4c4848; }
.gs-stars-count { font-size: 1.2rem; color: var(--gs-text-soft); }
.gs-card-price { margin-top: 4px; font-size: 1.5rem; color: var(--gs-text); }
.gs-price-regular { color: var(--gs-text-soft); margin-right: 6px; font-weight: 400; }
.gs-price-current.is-sale { font-weight: 400; }
.gs-card-actions { margin-top: auto; padding-top: 10px; }
.gs-card-btn {
	display: block;
	width: 100%;
	text-align: center;
	background: var(--gs-green);
	color: #fff;
	font-size: 1.4rem;
	line-height: 1;
	padding: 13px 10px;
	border-radius: var(--gs-radius-pill);
	transition: opacity 0.2s;
}
.gs-card-btn:hover { opacity: 0.88; color: #fff; }
.gs-card-btn.is-soldout { background: rgba(0, 82, 79, 0.45); cursor: default; }
.gs-card-var { display: flex; flex-direction: column; gap: 6px; }
.gs-card-varselect {
	width: 100%;
	height: 40px;
	border: 1px solid var(--gs-border);
	border-radius: 8px;
	background: #fff;
	font-family: inherit;
	font-size: 1.3rem;
	padding: 0 8px;
	color: var(--gs-text);
}

/* ---------- Recipes ---------- */
.gs-recipes { margin-top: 27px; margin-bottom: 27px; }
.gs-recipe-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 24px;
}
.gs-recipe-title { font-size: 2rem; line-height: 1.25; margin-bottom: 8px; }
.gs-recipe-title a:hover { text-decoration: underline; }
.gs-recipe-excerpt { margin: 0; font-size: 1.4rem; color: var(--gs-text-soft); }

/* ---------- Join / Host cards ---------- */
.gs-joinhost { margin-top: 20px; }
.gs-joinhost-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 12px;
}
.gs-joinhost-card {
	background: #f7f6f5;
	border-radius: var(--gs-radius-card);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}
.gs-joinhost-media { display: block; }
.gs-joinhost-media img { width: 100%; object-fit: cover; }
.gs-joinhost-link {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 18px 16px;
	font-size: 1.5rem;
	color: var(--gs-text);
}
.gs-joinhost-link:hover { text-decoration: underline; }

/* ---------- Sign Up floating button ---------- */
.gs-signup-fab {
	position: fixed;
	left: 20px;
	bottom: 20px;
	z-index: 90;
	width: 76px;
	height: 76px;
	border-radius: 50%;
	background: var(--gs-green);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.5rem;
	font-weight: 700;
	text-align: center;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.22);
	transition: transform 0.2s;
}
.gs-signup-fab:hover { transform: scale(1.05); color: #fff; }

/* ---------- Footer ---------- */
.gs-footer {
	margin-top: 30px;
	background: var(--gs-footer);
	color: rgba(255, 255, 255, 0.85);
}
.gs-footer-top { padding-top: 36px; padding-bottom: 24px; }
.gs-footer-grid {
	display: grid;
	grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr);
	gap: 50px;
	/* Menu columns are much shorter than the brand block -> centre them so the
	   footer does not leave a large void under the right-hand columns. */
	align-items: center;
}
.gs-footer-brand img { max-width: 285px; width: 100%; }
.gs-footer-heading {
	color: var(--gs-gold);
	font-size: 1.2rem;
	font-weight: 600;
	letter-spacing: 0.23rem;
	text-transform: uppercase;
	margin: 4px 0 18px;
}
.gs-footer-links li { margin-bottom: 10px; }
.gs-footer-links a { font-size: 1.4rem; line-height: 1.75; color: rgba(255, 255, 255, 0.76); }
.gs-footer-links a:hover { color: #fff; text-decoration: underline; }
.gs-footer-bottom { border-top: 1px solid rgba(255, 255, 255, 0.12); padding: 22px 0; }
.gs-footer-bottom-grid {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}
.gs-footer-loc { display: flex; gap: 14px; flex-wrap: wrap; }
.gs-footer-loc-block { position: relative; display: flex; flex-direction: column; gap: 6px; }
.gs-footer-loc-label { font-size: 1.3rem; color: rgba(255, 255, 255, 0.75); }
.gs-loc-btn--footer {
	border: 1px solid rgba(255, 255, 255, 0.55);
	border-radius: var(--gs-radius-pill);
	color: #fff;
	font-size: 1.4rem;
	padding: 10px 16px;
	min-width: 200px;
	justify-content: space-between;
}
.gs-footer-loc-block .gs-loc-list {
	top: auto;
	bottom: calc(100% + 4px);
	right: auto;
	left: 0;
	background: #1d1d1d;
	border-color: rgba(255, 255, 255, 0.2);
}
.gs-footer-loc-block .gs-loc-item { color: rgba(255, 255, 255, 0.8); }
.gs-footer-payment { display: flex; gap: 6px; flex-wrap: wrap; }
.gs-pay-icon { height: 24px; width: auto; display: block; }
.gs-footer-copyright {
	border-top: 1px solid rgba(255, 255, 255, 0.12);
	padding: 12px 0 14px;
}
.gs-footer-copyright .page-width {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	flex-wrap: wrap;
	gap: 4px 8px;
	text-align: left;
}
.gs-copyright-text { font-size: 1.2rem; color: rgba(255, 255, 255, 0.75); }
.gs-policies { display: flex; flex-wrap: wrap; gap: 4px 0; margin-left: 6px; }
.gs-policies li { display: flex; align-items: center; }
.gs-policies li + li::before {
	content: '';
	display: inline-block;
	width: 3px; height: 3px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.6);
	margin: 0 8px;
}
.gs-policies a { font-size: 1.2rem; color: rgba(255, 255, 255, 0.85); }
.gs-policies a:hover { text-decoration: underline; }

/* ---------- Collection / shop page ---------- */
.gs-page-wrap { padding-top: 28px; padding-bottom: 40px; }
.gs-page-title { font-size: 3rem; line-height: 1.15; }
.gs-collection { padding-top: 28px; padding-bottom: 46px; }
.gs-collection-title { font-size: 4rem; line-height: 1.1; margin-bottom: 22px; }
.gs-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
	margin-bottom: 22px;
}
.gs-toolbar-filters {
	display: flex;
	align-items: center;
	gap: 6px 14px;
	flex-wrap: wrap;
	max-width: 62%;
}
.gs-toolbar-label { font-weight: 700; color: var(--gs-text); font-size: 1.4rem; }
.gs-filter { position: relative; }
.gs-filter-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 1.4rem;
	color: var(--gs-text-soft);
	padding: 6px 2px;
}
.gs-filter-btn:hover { color: var(--gs-text); }
.gs-filter-panel {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	background: #fff;
	border: 1px solid var(--gs-border);
	border-radius: 10px;
	box-shadow: 0 8px 22px rgba(0, 0, 0, 0.1);
	padding: 10px 0;
	min-width: 240px;
	max-height: 320px;
	overflow-y: auto;
	z-index: 40;
}
.gs-filter-link { display: block; padding: 7px 16px; font-size: 1.4rem; color: var(--gs-text-soft); }
.gs-filter-link:hover { background: #f6f5f4; color: var(--gs-text); }
.gs-toolbar-sort { display: flex; align-items: center; gap: 10px; }
.gs-sort-select {
	height: 40px;
	border: 0;
	background: transparent;
	font-family: inherit;
	font-size: 1.4rem;
	color: var(--gs-text);
	cursor: pointer;
}
.gs-toolbar-count { font-size: 1.4rem; color: var(--gs-text-soft); }

.gs-pagination { margin-top: 34px; display: flex; justify-content: center; }
.gs-pagination .nav-links { display: flex; gap: 6px; align-items: center; }
.gs-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 38px;
	height: 38px;
	padding: 0 8px;
	border: 1px solid var(--gs-border);
	border-radius: var(--gs-radius-pill);
	font-size: 1.4rem;
	color: var(--gs-text);
}
.gs-pagination .page-numbers.current {
	background: var(--gs-text);
	border-color: var(--gs-text);
	color: #fff;
}
.gs-pagination .page-numbers:hover { border-color: var(--gs-text); }

/* ---------- PDP ---------- */
.gs-pdp { padding-top: 26px; padding-bottom: 40px; }
.gs-pdp-grid {
	display: grid;
	grid-template-columns: minmax(0, 58%) minmax(0, 42%);
	gap: 34px;
	align-items: start;
}
.gs-pdp-gallery { position: sticky; top: 90px; }
.gs-pdp-main {
	border: 1px solid var(--gs-border);
	border-radius: var(--gs-radius-card);
	overflow: hidden;
	background: #fff;
}
.gs-pdp-main img { width: 100%; aspect-ratio: 1 / 1; object-fit: contain; }
.gs-pdp-thumbs {
	display: flex;
	gap: 8px;
	margin-top: 10px;
	overflow-x: auto;
	scrollbar-width: none;
}
.gs-pdp-thumbs::-webkit-scrollbar { display: none; }
.gs-pdp-thumb {
	width: 72px;
	height: 72px;
	border: 1px solid var(--gs-border);
	border-radius: 8px;
	overflow: hidden;
	padding: 0;
	background: #fff;
	flex: 0 0 auto;
}
.gs-pdp-thumb img { width: 100%; height: 100%; object-fit: contain; }
.gs-pdp-thumb.is-active { border-color: var(--gs-text); }

.gs-pdp-info { padding-top: 6px; }
.gs-pdp-title { font-size: 3.4rem; line-height: 1.15; margin-bottom: 10px; }
.gs-pdp-rating { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.gs-pdp-reviews-link { font-size: 1.4rem; color: var(--gs-text); text-decoration: underline; text-underline-offset: 3px; }
.gs-pdp-sku { margin: 0 0 8px; font-size: 1.4rem; color: var(--gs-text-soft); }
.gs-pdp-price {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 1.8rem;
	color: var(--gs-text);
	margin-bottom: 6px;
}
.gs-pdp-price .gs-price { display: flex; align-items: baseline; gap: 8px; font-size: 1.8rem; }
.gs-pdp-price s { color: rgba(43, 39, 39, 0.55); font-size: 1.6rem; }
.gs-pdp-shipping { margin: 0 0 10px; font-size: 1.3rem; }
.gs-pdp-shipping a { text-decoration: underline; text-underline-offset: 2px; }
.gs-pdp-installments { margin: 0 0 16px; font-size: 1.4rem; color: var(--gs-text-soft); }
.gs-shopmark {
	font-weight: 700;
	color: #5a31f4;
	font-size: 1.6rem;
	letter-spacing: 0.01em;
}
.gs-pdp-qty-row { margin-bottom: 6px; }
.gs-pdp-qty-label { font-size: 1.3rem; color: var(--gs-text-soft); }
.gs-pdp-controls { display: flex; flex-direction: column; gap: 12px; }
.gs-qty {
	display: inline-flex;
	align-items: center;
	border: 1px solid rgba(43, 39, 39, 0.55);
	border-radius: var(--gs-radius-pill);
	width: 150px;
	height: 46px;
	overflow: hidden;
}
.gs-qty-btn {
	width: 44px;
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--gs-text);
}
.gs-qty-input {
	width: 58px;
	height: 100%;
	border: 0;
	text-align: center;
	font-family: inherit;
	font-size: 1.5rem;
	color: var(--gs-text);
	background: transparent;
	-moz-appearance: textfield;
	appearance: textfield;
}
.gs-qty-input::-webkit-outer-spin-button,
.gs-qty-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.gs-pdp-variations { display: flex; flex-direction: column; gap: 10px; }
.gs-pdp-variations table { border-collapse: collapse; }
.gs-pdp-variations .label { font-size: 1.3rem; padding: 0 10px 0 0; color: var(--gs-text-soft); }
.gs-pdp-variations select {
	height: 44px;
	border: 1px solid rgba(43, 39, 39, 0.55);
	border-radius: 10px;
	background: #fff;
	font-family: inherit;
	font-size: 1.4rem;
	padding: 0 10px;
	color: var(--gs-text);
	min-width: 220px;
}
.gs-pdp-variations .reset_variations { font-size: 1.2rem; text-decoration: underline; }
.gs-pdp-variations .woocommerce-variation-price { margin-bottom: 4px; }
.gs-buy-btn {
	display: block;
	width: 100%;
	background: var(--gs-text);
	color: #fff;
	font-size: 1.6rem;
	line-height: 1;
	padding: 17px 20px;
	border-radius: var(--gs-radius-pill);
	transition: opacity 0.2s;
}
.gs-buy-btn:hover { opacity: 0.86; color: #fff; }
.gs-buy-btn:disabled { opacity: 0.5; cursor: default; }
.gs-pdp-desc { margin-top: 26px; font-size: 1.5rem; }
.gs-pdp-desc h2, .gs-pdp-desc h3, .gs-pdp-desc h4 { font-size: 1.6rem; font-weight: 700; margin: 18px 0 6px; color: var(--gs-text); }
.gs-pdp-desc p { margin: 0 0 10px; }
.gs-pdp-desc ul { list-style: disc; padding-left: 20px; margin: 0 0 12px; }
.gs-pdp-desc li { margin-bottom: 4px; }
.gs-pdp-note { font-size: 1.3rem; color: var(--gs-text-soft); }
.gs-pdp-reviews { margin-top: 34px; }
.gs-pdp-reviews .gs-section-title { font-size: 2.8rem; margin-bottom: 14px; }
.gs-review-list { display: grid; gap: 14px; }
.gs-review {
	border: 1px solid var(--gs-border);
	border-radius: var(--gs-radius-card);
	padding: 14px 16px;
}
.gs-review-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; flex-wrap: wrap; }
.gs-review-author { color: var(--gs-text); font-size: 1.5rem; }
.gs-review-date { font-size: 1.2rem; color: var(--gs-text-soft); margin-left: auto; }
.gs-review-body { font-size: 1.4rem; }

/* ---------- Generic pages ---------- */
.gs-prose { max-width: 780px; }
.gs-prose h2 { font-size: 2.2rem; margin: 22px 0 8px; }
.gs-prose p { margin: 0 0 12px; }
.gs-prose a { text-decoration: underline; text-underline-offset: 2px; }
.gs-prose ul { list-style: disc; padding-left: 20px; margin: 0 0 12px; }
.gs-prose img { border-radius: 8px; }

/* WooCommerce core page fallbacks (cart/checkout/account) */
.woocommerce-message, .woocommerce-info, .woocommerce-error {
	background: #f6f5f4;
	border-left: 3px solid var(--gs-green);
	padding: 12px 16px;
	margin: 0 0 20px;
	list-style: none;
	font-size: 1.4rem;
}
.woocommerce-error { border-color: #b81c23; }

/* hidden helper */
[hidden] { display: none !important; }

/* ============================================================
   Responsive
   ============================================================ */
@media screen and (max-width: 1289px) {
	.gs-slider-arrow--prev { left: -8px; }
	.gs-slider-arrow--next { right: -8px; }
	.gs-slider .gs-card-col { flex-basis: calc((100% - 48px) / 4.4); }
}

@media screen and (max-width: 989px) {
	.page-width { padding-left: 2rem; padding-right: 2rem; }

	.gs-announce { min-height: 0; }
	.gs-announce-link { font-size: 1.2rem; gap: 10px; padding: 7px 12px; line-height: 1.35; }

	.gs-header-inner {
		grid-template-areas: 'drawer heading icons';
		grid-template-columns: auto 1fr auto;
		padding-top: 6px;
		padding-bottom: 4px;
		gap: 0 8px;
	}
	.gs-header-burger {
		grid-area: drawer;
		width: 44px; height: 44px;
		display: flex;
		align-items: center;
		justify-content: center;
		color: var(--gs-text);
	}
	.gs-header-heading { justify-self: center; min-width: 0; }
	.gs-header-logo img { width: 190px; max-width: 100%; }
	.gs-header-search--desk { display: none; }
	.gs-localization--desk { display: none; }
	.gs-header-icon--account { display: none; }
	.gs-mob-search { display: inline-flex; }
	.gs-header-icons { gap: 0; }
	.gs-header-icon { width: 38px; height: 44px; }

	.gs-nav { display: none; }

	.gs-section-title { font-size: 2rem; }
	.gs-teaser-grid {
		display: flex;
		gap: 10px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
	}
	.gs-teaser-grid::-webkit-scrollbar { display: none; }
	.gs-teaser { flex: 0 0 62%; scroll-snap-align: start; }
	.gs-teaser:last-child { display: block; }
	.gs-richtext-title { font-size: 2.4rem; }
	.gs-cat-grid { grid-template-columns: repeat(2, 1fr); gap: 20px 10px; }
	.gs-treat-heading { font-size: 1.5rem; }
	.gs-grid { grid-template-columns: repeat(2, 1fr); }
	.gs-slider .gs-card-col { flex-basis: calc((100% - 12px) / 1.6); min-width: 0; }
	.gs-recipe-grid { grid-template-columns: 1fr 1fr; gap: 18px 12px; }
	.gs-joinhost-grid { grid-template-columns: 1fr; }
	.gs-slider-arrow--prev { left: -6px; }
	.gs-slider-arrow--next { right: -6px; }

	.gs-collection-title { font-size: 3rem; }
	.gs-toolbar-filters { max-width: 100%; }

	.gs-pdp-grid { grid-template-columns: 1fr; gap: 20px; }
	.gs-pdp-gallery { position: static; }
	.gs-pdp-title { font-size: 2.8rem; }

	.gs-footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 34px 40px; }
	.gs-footer-brand { grid-column: 1 / -1; }
	.gs-footer-brand img { max-width: 240px; }
	.gs-signup-fab { width: 64px; height: 64px; font-size: 1.3rem; left: 14px; bottom: 14px; }
}

@media screen and (max-width: 749px) {
	.gs-hero-link img { aspect-ratio: 2000 / 863.6; object-fit: cover; }
	.gs-richtext-inner { text-align: center; }
	.gs-treat-track { gap: 10px; }
	.gs-footer-bottom-grid { flex-direction: column; align-items: flex-start; }
	.gs-footer-copyright .page-width { flex-direction: column; gap: 4px; }
	.gs-policies { margin-left: 0; justify-content: center; }
}

/* Footer brand contact block (mirrored from reference site) */
.gs-footer-about { margin: 14px 0 0; font-size: 1.4rem; line-height: 1.6; color: rgba(255, 255, 255, 0.75); max-width: 34ch; }
.gs-footer-contact { margin-top: 18px; display: grid; gap: 10px; }
.gs-footer-contact p { margin: 0; display: flex; align-items: center; gap: 10px; color: rgba(255, 255, 255, 0.88); }
.gs-footer-contact a { color: inherit; text-decoration: none; }
.gs-footer-contact a:hover { text-decoration: underline; }
.gs-footer-contact svg { flex: 0 0 auto; }

/* Mobile footer: single column grid, prevent long-email overflow */
@media screen and (max-width: 749px) {
	.gs-footer-grid { grid-template-columns: 1fr; }
	.gs-footer-contact p { flex-wrap: wrap; }
	.gs-footer-contact a { overflow-wrap: anywhere; }
	.gs-footer-about { overflow-wrap: anywhere; }
}
/* hidden attribute must always win over CSS display */
[hidden] { display: none !important; }

/* Larger header action icons (user feedback: cart icon too small) */
.gs-header-icon svg { width: 23px; height: 23px; }
.gs-header-icon--cart svg { width: 28px; height: 28px; }

/* Footer bottom: payment icons right-aligned after removing country/language selector */
.gs-footer-bottom-grid { justify-content: flex-end; }

/* Checkout block: tidy order summary (image | name | price) */
.wc-block-components-order-summary .wc-block-components-order-summary-item {
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr) auto;
	gap: 12px;
	align-items: start;
}
.wc-block-components-order-summary .wc-block-components-order-summary-item__image {
	width: 64px;
}
.wc-block-components-order-summary .wc-block-components-order-summary-item__image img {
	width: 64px !important;
	height: 64px;
	object-fit: cover;
	display: block;
}
.wc-block-components-order-summary .wc-block-components-product-name {
	font-weight: 600;
	line-height: 1.35;
}
.wc-block-components-order-summary .wc-block-components-product-metadata {
	display: none;
}

/* Cart & checkout blocks must escape the prose column */
body.woocommerce-checkout .gs-prose,
body.woocommerce-cart .gs-prose,
.gs-prose:has(.wp-block-woocommerce-checkout),
.gs-prose:has(.wp-block-woocommerce-cart) { max-width: none; }

/* PDP variations: label on its own line + full-width control (Dawn-style) */
.gs-pdp-variations { width: 100%; gap: 0; }
.gs-pdp-variations table.variations,
.gs-pdp-variations table.variations tbody { display: block; width: 100%; margin: 0; }
.gs-pdp-variations table.variations tr { display: flex; flex-direction: column; align-items: stretch; gap: 8px; width: 100%; }
.gs-pdp-variations table.variations th.label {
	display: block;
	width: 100%;
	min-width: 0;
	padding: 0;
	font-size: 1.4rem;
	font-weight: 400;
	line-height: 1.2;
	color: var(--gs-text-soft);
	text-align: left;
}
.gs-pdp-variations table.variations td.value {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
	width: 100%;
	min-width: 0;
	padding: 0;
}
.gs-pdp-variations table.variations td.value select {
	flex: 0 0 auto;
	width: 100%;
	max-width: 100%;
	min-width: 0;
	height: 46px;
	padding: 0 32px 0 14px;
	border-radius: 10px;
	font-size: 1.4rem;
}
.gs-pdp-variations table.variations th.label,
.gs-pdp-variations table.variations td.value { background: transparent; }
.gs-pdp-variations table.variations td.value .reset_variations { align-self: flex-start; font-size: 1.2rem; color: var(--gs-text-soft); }
/* WC toggles the clear link with inline visibility; collapse it when hidden so it adds no gap */
.gs-pdp-variations table.variations td.value .reset_variations[style*="hidden"] { display: none !important; }
.gs-pdp-variations .single_variation_wrap { display: none !important; }

/* PDP buy box: attribute row first, quantity directly below, then buttons */
.gs-pdp-controls { gap: 18px; }
.gs-pdp-field { display: flex; flex-direction: column; gap: 8px; width: 100%; min-width: 0; }
.gs-pdp-field-label { margin: 0; font-size: 1.4rem; line-height: 1.2; color: var(--gs-text-soft); }

/* ---------- Re-assert theme button colours on hover/focus ----------
   Storefront prints its button palette as an INLINE <style> in <head>, i.e. AFTER this file, so
   `button:hover { background-color:#d5d5d5; color:#333 }` (0,1,1 — same specificity as
   `.gs-treat-btn:hover`, but later in the cascade) wins and repaints our pills grey on hover.
   Bumping specificity with the element selector (0,2,1) puts the theme colours back. */
button.gs-treat-btn,
button.gs-treat-btn:hover,
button.gs-treat-btn:focus,
button.gs-treat-btn:active,
button.gs-card-btn,
button.gs-card-btn:hover,
button.gs-card-btn:focus,
button.gs-card-btn:active { background-color: var(--gs-green); border-color: var(--gs-green); color: #fff; }

button.gs-buy-btn,
button.gs-buy-btn:hover,
button.gs-buy-btn:focus,
button.gs-buy-btn:active { background-color: var(--gs-text); border-color: var(--gs-text); color: #fff; }
