/*
Theme Name: ZenVortex Storefront
Theme URI: https://zenvortexglobal.com/
Author: ZENVORTEX GLOBAL LLC
Author URI: https://zenvortexglobal.com/
Description: A clean, fast, accessible WooCommerce theme built for ZENVORTEX GLOBAL LLC. Site-critical functionality (business details, legal pages, contact form, cookie consent, structured data, security) lives in the companion ZenVortex Core plugin, so none of it is lost if the theme is ever changed.
Version: 1.1.1
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: zenvortex-storefront
Tags: e-commerce, woocommerce, custom-menu, custom-logo, featured-images, translation-ready, accessibility-ready, block-styles, wide-blocks
*/

/* =====================================================================
   1. Design tokens
   ===================================================================== */

:root {
	/* Warm editorial neutrals — the palette beauty retail uses, rather
	   than flat white, so photography sits on a softer ground. */
	--zvg-cream:        #faf7f3;
	--zvg-sand:         #f0e9e1;
	--zvg-blush:        #e9ddd4;

	--zvg-ink:          #1b201e;
	--zvg-ink-soft:     #5e6b66;
	--zvg-line:         #e4ddd5;
	--zvg-line-strong:  #cfc5ba;

	--zvg-surface:      #ffffff;
	--zvg-surface-soft: var(--zvg-cream);

	--zvg-accent:       #2d6a54;
	--zvg-accent-dark:  #1f4d3d;
	--zvg-accent-soft:  #e6efea;

	--zvg-sale:         #9a3412;
	--zvg-ok:           #14532d;

	--zvg-radius:    8px;
	--zvg-radius-lg: 4px;   /* editorial look: barely-rounded cards */
	--zvg-shadow:    0 1px 2px rgba(27, 32, 30, .04), 0 14px 40px rgba(27, 32, 30, .07);

	--zvg-wrap: 1280px;
	--zvg-gap:  clamp(1rem, 2.2vw, 1.75rem);

	--zvg-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	/* Display face for headings. All system fonts — nothing is fetched
	   from Google, so there is no third-party request and no GDPR issue. */
	--zvg-display: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua",
	               Georgia, "Times New Roman", serif;
}

/* =====================================================================
   2. Base
   ===================================================================== */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	margin: 0;
	font-family: var(--zvg-font);
	font-size: 16px;
	line-height: 1.65;
	color: var(--zvg-ink);
	background: var(--zvg-surface);
	-webkit-font-smoothing: antialiased;
}

img,
svg,
video {
	max-width: 100%;
	height: auto;
	display: block;
}

a {
	color: var(--zvg-accent);
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
}

a:hover,
a:focus {
	color: var(--zvg-accent-dark);
}

h1, h2, h3, h4 {
	font-family: var(--zvg-display);
	line-height: 1.15;
	margin: 0 0 .5em;
	font-weight: 500;
	letter-spacing: -.005em;
}

h1 { font-size: clamp(2.1rem, 4.6vw, 3.6rem); }
h2 { font-size: clamp(1.55rem, 2.9vw, 2.35rem); }
h3 { font-size: 1.15rem; }
h4 { font-size: 1rem; }

p { margin: 0 0 1em; }

button,
input,
select,
textarea {
	font-family: inherit;
	font-size: 100%;
}

:focus-visible {
	outline: 2px solid var(--zvg-accent);
	outline-offset: 3px;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100000;
	background: var(--zvg-ink);
	color: #fff;
	padding: .8rem 1.2rem;
	text-decoration: none;
}

.skip-link:focus {
	left: 0;
}

/* =====================================================================
   3. Layout
   ===================================================================== */

.zvg-wrap {
	width: 100%;
	max-width: var(--zvg-wrap);
	margin-inline: auto;
	padding-inline: clamp(20px, 4vw, 40px);
}

.zvg-narrow {
	max-width: 820px;
}

.zvg-section {
	padding-block: clamp(3rem, 6vw, 5.5rem);
}

.zvg-section-tight {
	padding-block: clamp(2rem, 4vw, 3.25rem);
}

.zvg-site-main {
	min-height: 50vh;
}

.zvg-lede {
	font-size: 1.06rem;
	color: var(--zvg-ink-soft);
	max-width: 58ch;
	line-height: 1.7;
}

.zvg-eyebrow {
	text-transform: uppercase;
	letter-spacing: .16em;
	font-size: .7rem;
	font-weight: 700;
	color: var(--zvg-accent);
	margin-bottom: .85rem;
	font-family: var(--zvg-font);
}

.zvg-small {
	font-size: .85rem;
	color: var(--zvg-ink-soft);
}

.zvg-center { text-align: center; }

.zvg-rule {
	border: 0;
	border-top: 1px solid var(--zvg-line);
	margin: 0;
}

/* =====================================================================
   4. Buttons
   ===================================================================== */

.zvg-btn,
.zvg-site .button,
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	padding: .85rem 1.75rem;
	border-radius: var(--zvg-radius);
	border: 1px solid transparent;
	background: var(--zvg-ink);
	color: #fff;
	font-family: var(--zvg-font);
	font-size: .88rem;
	font-weight: 600;
	letter-spacing: .02em;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .18s ease, border-color .18s ease, color .18s ease;
}

.zvg-btn:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover {
	background: var(--zvg-accent-dark);
	color: #fff;
}

.zvg-btn-accent,
.woocommerce button.button.alt,
.woocommerce a.button.alt,
.woocommerce input.button.alt {
	background: var(--zvg-accent);
	color: #fff;
}

.zvg-btn-accent:hover,
.woocommerce button.button.alt:hover,
.woocommerce a.button.alt:hover {
	background: var(--zvg-accent-dark);
	color: #fff;
}

.zvg-btn-outline {
	background: transparent;
	color: var(--zvg-ink);
	border-color: var(--zvg-line-strong);
}

.zvg-btn-outline:hover {
	border-color: var(--zvg-ink);
	color: var(--zvg-ink);
	background: transparent;
}

.zvg-btn-light {
	background: #fff;
	color: var(--zvg-ink);
}

.zvg-btn-light:hover {
	background: var(--zvg-cream);
	color: var(--zvg-ink);
}

.zvg-btn-block { width: 100%; }
.zvg-btn-lg { padding: 1rem 2rem; font-size: .95rem; }

.woocommerce .button:disabled,
.zvg-btn:disabled {
	opacity: .45;
	cursor: not-allowed;
}

/* Text link with arrow */
.zvg-link-arrow {
	font-family: var(--zvg-font);
	font-size: .88rem;
	font-weight: 600;
	color: var(--zvg-ink);
	text-decoration: none;
	border-bottom: 1px solid var(--zvg-ink);
	padding-bottom: 2px;
}

.zvg-link-arrow:hover {
	color: var(--zvg-accent);
	border-bottom-color: var(--zvg-accent);
}

.zvg-link-arrow::after {
	content: " \2192";
}

/* =====================================================================
   5. Header
   ===================================================================== */

.zvg-announce {
	background: var(--zvg-ink);
	color: #fff;
	text-align: center;
	font-size: .8rem;
	letter-spacing: .03em;
	padding: .6rem 1rem;
}

.zvg-announce a {
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.zvg-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: var(--zvg-surface);
	border-bottom: 1px solid var(--zvg-line);
}

.zvg-header-inner {
	display: flex;
	align-items: center;
	gap: 1.5rem;
	padding-block: 1.1rem;
}

.zvg-branding {
	display: flex;
	align-items: center;
	gap: .65rem;
	flex-shrink: 0;
}

.zvg-branding a { text-decoration: none; color: var(--zvg-ink); }

.zvg-site-title {
	font-family: var(--zvg-display);
	font-weight: 500;
	font-size: 1.4rem;
	letter-spacing: .01em;
	margin: 0;
	line-height: 1.1;
}

.zvg-site-description {
	margin: 0;
	font-size: .76rem;
	color: var(--zvg-ink-soft);
}

.zvg-custom-logo-link img,
.custom-logo-link img {
	max-height: 48px;
	width: auto;
}

.zvg-nav {
	margin-left: auto;
}

.zvg-nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	gap: 1.6rem;
}

.zvg-nav li { position: relative; }

.zvg-nav a {
	text-decoration: none;
	color: var(--zvg-ink);
	font-size: .9rem;
	font-weight: 500;
	display: block;
	padding: .4rem 0;
	position: relative;
}

.zvg-nav > ul > li > a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 100%;
	bottom: 0;
	height: 1px;
	background: var(--zvg-ink);
	transition: right .2s ease;
}

.zvg-nav > ul > li > a:hover::after,
.zvg-nav > ul > li.current-menu-item > a::after,
.zvg-nav > ul > li.current_page_item > a::after {
	right: 0;
}

/* Dropdowns */
.zvg-nav .sub-menu {
	position: absolute;
	top: 100%;
	left: -1rem;
	min-width: 230px;
	background: var(--zvg-surface);
	border: 1px solid var(--zvg-line);
	box-shadow: var(--zvg-shadow);
	padding: .6rem;
	flex-direction: column;
	align-items: stretch;
	gap: 0;
	display: none;
	z-index: 60;
}

.zvg-nav li:hover > .sub-menu,
.zvg-nav li:focus-within > .sub-menu {
	display: flex;
}

.zvg-nav .sub-menu a {
	padding: .55rem .8rem;
	font-weight: 400;
}

.zvg-nav .sub-menu a::after { content: none; }

.zvg-nav .sub-menu a:hover {
	background: var(--zvg-cream);
}

.zvg-header-actions {
	display: flex;
	align-items: center;
	gap: 1.15rem;
	flex-shrink: 0;
}

.zvg-icon-link {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	text-decoration: none;
	color: var(--zvg-ink);
	font-size: .86rem;
	font-weight: 500;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
}

.zvg-icon-link:hover { color: var(--zvg-accent); }

.zvg-icon-link svg {
	width: 19px;
	height: 19px;
	stroke: currentColor;
	fill: none;
	stroke-width: 1.5;
}

.zvg-cart-count {
	min-width: 20px;
	height: 20px;
	padding: 0 6px;
	border-radius: 10px;
	background: var(--zvg-accent);
	color: #fff;
	font-size: .72rem;
	font-weight: 700;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* Slide-down search panel */
.zvg-search-panel {
	display: none;
	border-top: 1px solid var(--zvg-line);
	background: var(--zvg-cream);
	padding-block: 1.5rem;
}

.zvg-search-panel.is-open { display: block; }

.zvg-search-panel .zvg-search-form {
	max-width: 620px;
	margin-inline: auto;
}

.zvg-menu-toggle {
	display: none;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	background: transparent;
	border: 1px solid var(--zvg-line-strong);
	border-radius: var(--zvg-radius);
	cursor: pointer;
	padding: 0;
}

.zvg-menu-toggle span,
.zvg-menu-toggle span::before,
.zvg-menu-toggle span::after {
	display: block;
	width: 17px;
	height: 1.5px;
	background: var(--zvg-ink);
	position: relative;
}

.zvg-menu-toggle span::before,
.zvg-menu-toggle span::after {
	content: "";
	position: absolute;
	left: 0;
}

.zvg-menu-toggle span::before { top: -5px; }
.zvg-menu-toggle span::after  { top: 5px; }

/* =====================================================================
   6. Hero
   ===================================================================== */

.zvg-hero {
	background: var(--zvg-cream);
	border-bottom: 1px solid var(--zvg-line);
	overflow: hidden;
}

/* --- Split hero: copy beside an image --- */
.zvg-hero-split .zvg-hero-inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
	align-items: center;
	gap: clamp(2rem, 5vw, 4.5rem);
	padding-block: clamp(3rem, 6vw, 5.5rem);
}

.zvg-hero-copy { max-width: 34rem; }

.zvg-hero h1 {
	margin-bottom: .55rem;
	letter-spacing: -.015em;
}

.zvg-hero .zvg-lede {
	font-size: 1.1rem;
	margin-bottom: 0;
}

.zvg-hero-media {
	position: relative;
}

.zvg-hero-media img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--zvg-radius-lg);
}

/* Typographic fallback when no hero image has been uploaded, so the
   homepage never renders as a half-empty banner. */
.zvg-hero-figure {
	aspect-ratio: 4 / 3;
	border-radius: var(--zvg-radius-lg);
	background:
		radial-gradient(120% 90% at 78% 18%, #ffffff 0%, rgba(255,255,255,0) 58%),
		linear-gradient(150deg, var(--zvg-blush) 0%, var(--zvg-sand) 45%, var(--zvg-accent-soft) 100%);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 2rem;
}

.zvg-hero-figure span {
	font-family: var(--zvg-display);
	font-size: clamp(1.6rem, 3.2vw, 2.6rem);
	line-height: 1.25;
	color: var(--zvg-ink);
	text-align: center;
	max-width: 16ch;
	opacity: .75;
}

/* --- Full-bleed hero: image behind the copy --- */
.zvg-hero-full {
	position: relative;
	border-bottom: 0;
}

.zvg-hero-full .zvg-hero-bg {
	position: absolute;
	inset: 0;
}

.zvg-hero-full .zvg-hero-bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.zvg-hero-full .zvg-hero-bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(20, 26, 24, .68) 0%, rgba(20, 26, 24, .32) 55%, rgba(20, 26, 24, .12) 100%);
}

.zvg-hero-full .zvg-hero-inner {
	position: relative;
	z-index: 2;
	padding-block: clamp(4.5rem, 11vw, 9rem);
	max-width: 40rem;
}

.zvg-hero-full h1,
.zvg-hero-full .zvg-lede,
.zvg-hero-full .zvg-eyebrow { color: #fff; }

.zvg-hero-full .zvg-lede { opacity: .92; }

.zvg-hero-full .zvg-eyebrow { color: #b9e2d0; }

/* --- Minimal hero: centred type only --- */
.zvg-hero-minimal .zvg-hero-inner {
	padding-block: clamp(3.5rem, 8vw, 6.5rem);
	max-width: 46rem;
	margin-inline: auto;
	text-align: center;
}

.zvg-hero-minimal .zvg-lede { margin-inline: auto; }

.zvg-hero-minimal .zvg-hero-actions,
.zvg-hero-minimal .zvg-trust { justify-content: center; }

.zvg-hero-actions {
	display: flex;
	gap: .75rem;
	flex-wrap: wrap;
	margin-top: 2rem;
}

/* Trust strip sits under the hero, full width */
.zvg-trustbar {
	background: var(--zvg-surface);
	border-bottom: 1px solid var(--zvg-line);
}

.zvg-trust {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	gap: clamp(1.5rem, 5vw, 4rem);
	flex-wrap: wrap;
	justify-content: center;
	font-size: .84rem;
	color: var(--zvg-ink-soft);
	padding-block: 1.15rem;
	letter-spacing: .02em;
}

.zvg-trust li {
	display: flex;
	align-items: center;
	gap: .5rem;
}

.zvg-trust li::before {
	content: "";
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: var(--zvg-accent);
	flex-shrink: 0;
}

.zvg-hero .zvg-trust {
	justify-content: flex-start;
	padding-block: 0;
	margin-top: 2rem;
	gap: 1.5rem;
}

/* =====================================================================
   7. Sections
   ===================================================================== */

.zvg-section-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem;
	flex-wrap: wrap;
	margin-bottom: 2.25rem;
}

.zvg-section-head h2 { margin: 0; }

.zvg-section-head p {
	margin: .5rem 0 0;
	color: var(--zvg-ink-soft);
	font-size: .95rem;
	max-width: 52ch;
}

.zvg-section-head-center {
	text-align: center;
	justify-content: center;
	flex-direction: column;
	align-items: center;
}

.zvg-section-head-center p { margin-inline: auto; }

.zvg-band {
	background: var(--zvg-cream);
	border-block: 1px solid var(--zvg-line);
}

.zvg-band-sand { background: var(--zvg-sand); }

.zvg-grid {
	display: grid;
	gap: var(--zvg-gap);
}

.zvg-grid-2 { grid-template-columns: repeat(2, 1fr); }
.zvg-grid-3 { grid-template-columns: repeat(3, 1fr); }
.zvg-grid-4 { grid-template-columns: repeat(4, 1fr); }

/* --- Value / promise columns --- */
.zvg-value h3 {
	font-family: var(--zvg-font);
	font-size: .95rem;
	font-weight: 700;
	letter-spacing: .01em;
	margin-bottom: .45rem;
}

.zvg-value p {
	font-size: .92rem;
	color: var(--zvg-ink-soft);
	margin: 0;
	line-height: 1.7;
}

.zvg-value-num {
	display: block;
	font-family: var(--zvg-display);
	font-size: 1.6rem;
	color: var(--zvg-accent);
	margin-bottom: .5rem;
}

/* --- Category tiles --- */
.zvg-cat-tile {
	display: block;
	text-decoration: none;
	color: var(--zvg-ink);
	position: relative;
	overflow: hidden;
	border-radius: var(--zvg-radius-lg);
	background: var(--zvg-sand);
}

.zvg-cat-media {
	aspect-ratio: 3 / 4;
	overflow: hidden;
	background: var(--zvg-sand);
}

.zvg-cat-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .5s ease;
}

.zvg-cat-tile:hover .zvg-cat-media img { transform: scale(1.04); }

.zvg-cat-placeholder {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(155deg, var(--zvg-blush), var(--zvg-accent-soft));
	font-family: var(--zvg-display);
	font-size: 1.5rem;
	color: var(--zvg-ink);
	opacity: .55;
	padding: 1rem;
	text-align: center;
}

.zvg-cat-body {
	padding: 1rem .25rem .25rem;
}

.zvg-cat-body strong {
	display: block;
	font-family: var(--zvg-display);
	font-size: 1.2rem;
	font-weight: 500;
}

.zvg-cat-body small {
	color: var(--zvg-ink-soft);
	font-size: .82rem;
}

/* --- Editorial split (image + copy) --- */
.zvg-editorial {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(2rem, 5vw, 4rem);
	align-items: center;
}

.zvg-editorial-media img,
.zvg-editorial-figure {
	width: 100%;
	aspect-ratio: 5 / 4;
	object-fit: cover;
	border-radius: var(--zvg-radius-lg);
}

.zvg-editorial-figure {
	background: linear-gradient(150deg, var(--zvg-accent-soft), var(--zvg-blush));
}

.zvg-editorial-copy h2 { margin-bottom: .75rem; }

/* --- Newsletter --- */
.zvg-newsletter {
	background: var(--zvg-ink);
	color: #fff;
}

.zvg-newsletter h2 { color: #fff; }

.zvg-newsletter p {
	color: rgba(255, 255, 255, .78);
	max-width: 48ch;
	margin-inline: auto;
}

.zvg-newsletter .zvg-form {
	max-width: 520px;
	margin: 1.75rem auto 0;
}

.zvg-newsletter-row {
	display: flex;
	gap: .6rem;
	flex-wrap: wrap;
}

.zvg-newsletter-row input[type="email"] {
	flex: 1;
	min-width: 0;
	padding: .9rem 1rem;
	border: 1px solid rgba(255, 255, 255, .28);
	border-radius: var(--zvg-radius);
	background: rgba(255, 255, 255, .06);
	color: #fff;
	font-size: .95rem;
}

.zvg-newsletter-row input[type="email"]::placeholder { color: rgba(255, 255, 255, .5); }

.zvg-newsletter-row input[type="email"]:focus {
	border-color: #fff;
	outline: none;
}

.zvg-newsletter .zvg-form-note {
	color: rgba(255, 255, 255, .6);
	margin-top: .9rem;
	font-size: .8rem;
}

/* --- Reviews (real WooCommerce reviews only) --- */
.zvg-review {
	background: var(--zvg-surface);
	border: 1px solid var(--zvg-line);
	border-radius: var(--zvg-radius-lg);
	padding: 1.6rem;
	display: flex;
	flex-direction: column;
	gap: .8rem;
}

.zvg-review-stars {
	color: var(--zvg-accent);
	letter-spacing: .18em;
	font-size: .9rem;
}

.zvg-review blockquote {
	margin: 0;
	font-family: var(--zvg-display);
	font-size: 1.08rem;
	line-height: 1.55;
}

.zvg-review cite {
	font-style: normal;
	font-size: .82rem;
	color: var(--zvg-ink-soft);
	margin-top: auto;
}

.zvg-review cite a { color: var(--zvg-ink-soft); }

/* =====================================================================
   8. Page + post content
   ===================================================================== */

.zvg-page-head {
	padding-block: clamp(1.75rem, 4vw, 2.75rem) 0;
}

.zvg-page-head h1 { margin-bottom: .3rem; }

.zvg-breadcrumb {
	font-size: .8rem;
	color: var(--zvg-ink-soft);
	margin-bottom: 1.1rem;
	letter-spacing: .02em;
}

.zvg-breadcrumb a { color: var(--zvg-ink-soft); text-decoration: none; }
.zvg-breadcrumb a:hover { text-decoration: underline; }

.zvg-entry-content > * + * { margin-top: 1em; }

.zvg-entry-content h2 {
	margin-top: 2.4rem;
	font-size: 1.45rem;
}

.zvg-entry-content h3 {
	margin-top: 1.7rem;
	font-size: 1.1rem;
	font-family: var(--zvg-font);
	font-weight: 700;
}

.zvg-entry-content ul,
.zvg-entry-content ol {
	padding-left: 1.35rem;
}

.zvg-entry-content li { margin-bottom: .45em; }

.zvg-entry-content table {
	width: 100%;
	border-collapse: collapse;
	margin-block: 1.35rem;
	font-size: .93rem;
}

.zvg-entry-content th,
.zvg-entry-content td {
	text-align: left;
	padding: .7rem .85rem;
	border-bottom: 1px solid var(--zvg-line);
	vertical-align: top;
}

.zvg-entry-content th { background: var(--zvg-cream); }

.zvg-entry-content blockquote {
	margin: 1.6rem 0;
	padding: 1rem 1.35rem;
	border-left: 2px solid var(--zvg-accent);
	background: var(--zvg-cream);
}

.zvg-entry-content img { border-radius: var(--zvg-radius-lg); }

.zvg-policy-meta {
	font-size: .84rem;
	color: var(--zvg-ink-soft);
}

.zvg-legal-links {
	list-style: none;
	padding: 1.75rem 0 0;
	margin: 2.75rem 0 0;
	display: flex;
	gap: 1.35rem;
	flex-wrap: wrap;
	font-size: .89rem;
	border-top: 1px solid var(--zvg-line);
}

/* =====================================================================
   9. WooCommerce
   ===================================================================== */

.woocommerce-notices-wrapper:not(:empty) { margin-block: 1.25rem; }

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	border-radius: var(--zvg-radius);
	border: 1px solid var(--zvg-line);
	background: var(--zvg-cream);
	padding: .95rem 1.2rem;
	list-style: none;
	font-size: .93rem;
}

.woocommerce-message { border-color: #bfe3cc; background: #eef7f1; color: var(--zvg-ok); }
.woocommerce-error   { border-color: #f3d3ba; background: #fdf3ec; color: var(--zvg-sale); }

/* --- Product grid --- */

.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: clamp(1.25rem, 2.4vw, 2.25rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after { content: none; }

.woocommerce ul.products li.product {
	width: auto !important;
	float: none !important;
	margin: 0 !important;
	background: transparent;
	display: flex;
	flex-direction: column;
	padding: 0;
	position: relative;
	border: 0;
}

.woocommerce ul.products li.product a img {
	margin: 0 0 1rem;
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	background: var(--zvg-cream);
	border-radius: var(--zvg-radius-lg);
	transition: opacity .25s ease;
}

.woocommerce ul.products li.product:hover a img { opacity: .88; }

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--zvg-display);
	font-size: 1.08rem !important;
	font-weight: 500;
	padding: 0;
	margin: 0 0 .3rem;
	line-height: 1.35;
}

.woocommerce ul.products li.product a {
	text-decoration: none;
	color: var(--zvg-ink);
}

.woocommerce ul.products li.product .price {
	padding: 0;
	margin: 0 0 .9rem;
	color: var(--zvg-ink);
	font-family: var(--zvg-font);
	font-size: .95rem;
	font-weight: 600;
	display: block;
}

.woocommerce ul.products li.product .price del {
	color: var(--zvg-ink-soft);
	font-weight: 400;
	font-size: .88rem;
	margin-right: .4rem;
}

.woocommerce ul.products li.product .price ins {
	text-decoration: none;
	color: var(--zvg-sale);
}

.woocommerce ul.products li.product .button {
	margin: auto 0 0;
	justify-content: center;
	background: transparent;
	color: var(--zvg-ink);
	border-color: var(--zvg-line-strong);
	padding: .7rem 1.1rem;
	font-size: .84rem;
}

.woocommerce ul.products li.product .button:hover {
	background: var(--zvg-ink);
	border-color: var(--zvg-ink);
	color: #fff;
}

.woocommerce ul.products li.product .star-rating {
	margin: 0 0 .5rem;
	font-size: .8rem;
	color: var(--zvg-accent);
}

.woocommerce span.onsale {
	position: absolute;
	top: .85rem;
	left: .85rem;
	right: auto;
	margin: 0;
	background: var(--zvg-ink);
	color: #fff;
	border-radius: 2px;
	padding: .3rem .7rem;
	font-family: var(--zvg-font);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	line-height: 1.6;
	min-height: 0;
	min-width: 0;
	z-index: 2;
}

/* --- Shop toolbar --- */

.woocommerce .woocommerce-result-count,
.woocommerce .woocommerce-ordering {
	margin-bottom: 1.75rem;
	font-size: .87rem;
	color: var(--zvg-ink-soft);
}

.woocommerce .woocommerce-ordering select {
	padding: .55rem .8rem;
	border: 1px solid var(--zvg-line-strong);
	border-radius: var(--zvg-radius);
	background: #fff;
	font-size: .88rem;
}

.woocommerce nav.woocommerce-pagination ul {
	border: 0;
	display: flex;
	gap: .4rem;
	justify-content: center;
}

.woocommerce nav.woocommerce-pagination ul li { border: 0; margin: 0; }

.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	border: 1px solid var(--zvg-line);
	border-radius: var(--zvg-radius);
	padding: .55rem .9rem;
	text-decoration: none;
	color: var(--zvg-ink);
	font-size: .88rem;
}

.woocommerce nav.woocommerce-pagination ul li span.current {
	background: var(--zvg-ink);
	border-color: var(--zvg-ink);
	color: #fff;
}

/* --- Single product --- */

.woocommerce div.product { margin-top: 1.5rem; }

.woocommerce div.product div.images,
.woocommerce div.product div.summary { margin-bottom: 3rem; }

.woocommerce div.product div.images img {
	border-radius: var(--zvg-radius-lg);
	background: var(--zvg-cream);
}

.woocommerce div.product .product_title { margin-bottom: .6rem; }

.woocommerce div.product p.price,
.woocommerce div.product span.price {
	color: var(--zvg-ink);
	font-family: var(--zvg-font);
	font-size: 1.35rem;
	font-weight: 600;
	margin-bottom: 1.1rem;
}

.woocommerce div.product p.price del { color: var(--zvg-ink-soft); font-weight: 400; font-size: 1rem; }
.woocommerce div.product p.price ins { text-decoration: none; color: var(--zvg-sale); }

.woocommerce div.product form.cart { margin-bottom: 1.75rem; }
.woocommerce div.product form.cart div.quantity { margin-right: .75rem; }

.woocommerce .quantity .qty {
	width: 78px;
	padding: .75rem .5rem;
	border: 1px solid var(--zvg-line-strong);
	border-radius: var(--zvg-radius);
	text-align: center;
}

.woocommerce div.product .woocommerce-tabs ul.tabs {
	padding: 0;
	margin: 0 0 1.75rem;
	border-bottom: 1px solid var(--zvg-line);
	display: flex;
	gap: .5rem;
	flex-wrap: wrap;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before { border: 0; }

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	border: 0;
	background: transparent;
	border-radius: 0;
	margin: 0;
	padding: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { content: none; }

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	padding: .75rem 1.1rem;
	display: block;
	color: var(--zvg-ink-soft);
	font-weight: 600;
	font-size: .9rem;
	border-bottom: 2px solid transparent;
	text-decoration: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--zvg-ink);
	border-bottom-color: var(--zvg-accent);
}

.zvg-product-assurances {
	list-style: none;
	padding: 1.25rem 0 0;
	margin: 0 0 1.5rem;
	border-top: 1px solid var(--zvg-line);
	font-size: .86rem;
	color: var(--zvg-ink-soft);
	line-height: 1.7;
}

.zvg-product-assurances li { padding: .22rem 0; }
.zvg-product-assurances a { color: var(--zvg-ink-soft); }

/* --- Cart --- */

.woocommerce table.shop_table {
	border: 1px solid var(--zvg-line);
	border-radius: var(--zvg-radius-lg);
	border-collapse: separate;
	border-spacing: 0;
	overflow: hidden;
}

.woocommerce table.shop_table th {
	background: var(--zvg-cream);
	font-family: var(--zvg-font);
	font-size: .76rem;
	text-transform: uppercase;
	letter-spacing: .09em;
	color: var(--zvg-ink-soft);
	padding: .9rem 1rem;
}

.woocommerce table.shop_table td {
	padding: 1.1rem 1rem;
	border-top: 1px solid var(--zvg-line);
}

.woocommerce table.shop_table img { width: 68px; border-radius: var(--zvg-radius); }

.woocommerce-cart .cart-collaterals .cart_totals {
	border: 1px solid var(--zvg-line);
	border-radius: var(--zvg-radius-lg);
	padding: 1.6rem;
	background: var(--zvg-cream);
}

.woocommerce-cart .cart-collaterals .cart_totals h2 { font-size: 1.2rem; }

.woocommerce-cart table.cart td.actions .coupon .input-text {
	padding: .7rem .85rem;
	border: 1px solid var(--zvg-line-strong);
	border-radius: var(--zvg-radius);
	width: auto;
	min-width: 160px;
}

/* --- Checkout --- */

.woocommerce form .form-row { padding: 0; margin: 0 0 1.15rem; }

.woocommerce form .form-row label {
	font-size: .85rem;
	font-weight: 600;
	margin-bottom: .4rem;
	display: block;
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row .select2-container .select2-selection--single,
.woocommerce form .form-row select {
	padding: .78rem .9rem;
	border: 1px solid var(--zvg-line-strong);
	border-radius: var(--zvg-radius);
	font-size: .95rem;
	line-height: 1.4;
	height: auto;
	background: #fff;
}

.woocommerce-checkout #payment {
	background: var(--zvg-cream);
	border: 1px solid var(--zvg-line);
	border-radius: var(--zvg-radius-lg);
}

.woocommerce-checkout #payment div.payment_box {
	background: var(--zvg-surface);
	border-radius: var(--zvg-radius);
	font-size: .9rem;
}

.woocommerce-checkout #payment div.payment_box::before { display: none; }
.woocommerce-checkout #payment ul.payment_methods { border-bottom-color: var(--zvg-line); }

.zvg-checkout-assurance {
	background: var(--zvg-accent-soft);
	border: 1px solid #c7e4da;
	border-radius: var(--zvg-radius);
	padding: 1rem 1.2rem;
	font-size: .89rem;
	margin-bottom: 1.75rem;
}

.zvg-checkout-assurance p { margin: 0; }

/* --- Account --- */

.woocommerce-account .woocommerce-MyAccount-navigation ul {
	list-style: none;
	padding: 0;
	margin: 0;
	border: 1px solid var(--zvg-line);
	border-radius: var(--zvg-radius-lg);
	overflow: hidden;
}

.woocommerce-account .woocommerce-MyAccount-navigation li a {
	display: block;
	padding: .8rem 1.1rem;
	text-decoration: none;
	color: var(--zvg-ink);
	border-bottom: 1px solid var(--zvg-line);
	font-size: .92rem;
}

.woocommerce-account .woocommerce-MyAccount-navigation li:last-child a { border-bottom: 0; }

.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
	background: var(--zvg-cream);
	font-weight: 650;
}

/* =====================================================================
   10. Footer
   ===================================================================== */

.zvg-footer {
	background: var(--zvg-cream);
	border-top: 1px solid var(--zvg-line);
	margin-top: 0;
	padding-top: clamp(3rem, 5vw, 4.5rem);
}

.zvg-footer-grid {
	display: grid;
	grid-template-columns: 1.6fr 1fr 1fr 1.1fr;
	gap: clamp(2rem, 4vw, 3rem);
	padding-bottom: 3rem;
}

.zvg-footer h2 {
	font-family: var(--zvg-display);
	font-size: 1.3rem;
	font-weight: 500;
	text-transform: none;
	letter-spacing: 0;
	color: var(--zvg-ink);
	margin-bottom: .6rem;
}

.zvg-footer h3 {
	font-family: var(--zvg-font);
	font-size: .74rem;
	text-transform: uppercase;
	letter-spacing: .13em;
	color: var(--zvg-ink-soft);
	margin-bottom: 1rem;
	font-weight: 700;
}

.zvg-footer ul { list-style: none; padding: 0; margin: 0; }

.zvg-footer li { margin-bottom: .55rem; }

.zvg-footer a {
	color: var(--zvg-ink);
	text-decoration: none;
	font-size: .89rem;
}

.zvg-footer a:hover { color: var(--zvg-accent); text-decoration: underline; }

.zvg-footer-about p { font-size: .89rem; color: var(--zvg-ink-soft); line-height: 1.7; }

.zvg-footer-address {
	font-style: normal;
	font-size: .88rem;
	line-height: 1.8;
	color: var(--zvg-ink-soft);
	margin-top: 1rem;
}

.zvg-footer-address strong { color: var(--zvg-ink); }

.zvg-social {
	display: flex;
	gap: 1rem;
	flex-wrap: wrap;
	margin-top: 1.15rem;
	font-size: .85rem;
}

.zvg-footer-bottom {
	border-top: 1px solid var(--zvg-line);
	padding-block: 1.5rem 2.75rem;
}

.zvg-footer-bottom p { margin: .45rem 0; }

.zvg-copyright { font-size: .84rem; color: var(--zvg-ink-soft); }

.zvg-disclaimer {
	font-size: .76rem;
	color: var(--zvg-ink-soft);
	max-width: 80ch;
	line-height: 1.65;
}

/* =====================================================================
   11. Forms, 404, search, misc
   ===================================================================== */

.zvg-404 { text-align: center; padding-block: 5rem; }

.zvg-search-form {
	display: flex;
	gap: .5rem;
	width: 100%;
}

.zvg-search-form input[type="search"] {
	flex: 1;
	min-width: 0;
	padding: .8rem .95rem;
	border: 1px solid var(--zvg-line-strong);
	border-radius: var(--zvg-radius);
	font-size: .95rem;
	background: #fff;
}

.zvg-post-card {
	border: 1px solid var(--zvg-line);
	border-radius: var(--zvg-radius-lg);
	overflow: hidden;
	background: var(--zvg-surface);
}

.zvg-post-card img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; }

.zvg-post-card-body { padding: 1.4rem; }

.zvg-post-card h2 { font-size: 1.25rem; margin-bottom: .35rem; }

.zvg-post-meta { font-size: .79rem; color: var(--zvg-ink-soft); letter-spacing: .03em; }

.zvg-pagination {
	margin-top: 3rem;
	display: flex;
	gap: .5rem;
	justify-content: center;
	flex-wrap: wrap;
}

.zvg-pagination .page-numbers {
	border: 1px solid var(--zvg-line);
	border-radius: var(--zvg-radius);
	padding: .55rem .9rem;
	text-decoration: none;
	color: var(--zvg-ink);
	font-size: .88rem;
}

.zvg-pagination .page-numbers.current {
	background: var(--zvg-ink);
	border-color: var(--zvg-ink);
	color: #fff;
}

.zvg-sidebar .widget { margin-bottom: 2rem; }

.zvg-sidebar .widget-title {
	font-family: var(--zvg-font);
	font-size: .76rem;
	text-transform: uppercase;
	letter-spacing: .12em;
	color: var(--zvg-ink-soft);
}

/* =====================================================================
   12. Responsive
   ===================================================================== */

@media (max-width: 1100px) {
	.woocommerce ul.products { grid-template-columns: repeat(3, 1fr); }
	.zvg-grid-4 { grid-template-columns: repeat(2, 1fr); }
	.zvg-footer-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 900px) {
	.zvg-hero-split .zvg-hero-inner { grid-template-columns: 1fr; }
	.zvg-hero-media { order: -1; }
	.zvg-hero-media img,
	.zvg-hero-figure { aspect-ratio: 16 / 10; }
	.zvg-editorial { grid-template-columns: 1fr; }
	.zvg-editorial-media { order: -1; }
}

@media (max-width: 782px) {
	.zvg-menu-toggle { display: inline-flex; }

	.zvg-nav {
		display: none;
		order: 10;
		width: 100%;
		margin-left: 0;
		border-top: 1px solid var(--zvg-line);
		padding-top: .5rem;
	}

	.zvg-nav.is-open { display: block; }

	.zvg-nav ul { flex-direction: column; align-items: stretch; gap: 0; }

	.zvg-nav > ul > li { border-bottom: 1px solid var(--zvg-line); }

	.zvg-nav a { padding: .85rem 0; font-size: .95rem; }

	.zvg-nav > ul > li > a::after { content: none; }

	.zvg-nav .sub-menu {
		position: static;
		display: flex;
		border: 0;
		box-shadow: none;
		padding: 0 0 .5rem .9rem;
		min-width: 0;
		background: transparent;
	}

	.zvg-header-inner { flex-wrap: wrap; gap: .85rem; padding-block: .9rem; }

	.zvg-header-actions { margin-left: auto; }

	/* Meet the minimum touch target on the header links. */
	.zvg-icon-link { min-height: 44px; padding-inline: .35rem; }

	.woocommerce ul.products { grid-template-columns: repeat(2, 1fr); }

	.zvg-grid-3 { grid-template-columns: repeat(2, 1fr); }

	.woocommerce div.product div.images,
	.woocommerce div.product div.summary {
		width: 100% !important;
		float: none !important;
	}

	.woocommerce-cart .cart-collaterals .cart_totals,
	.woocommerce .cart-collaterals .cross-sells {
		width: 100% !important;
		float: none !important;
	}

	.woocommerce-checkout .col2-set .col-1,
	.woocommerce-checkout .col2-set .col-2 {
		width: 100% !important;
		float: none !important;
	}

	.zvg-hero-full .zvg-hero-bg::after {
		background: linear-gradient(180deg, rgba(20, 26, 24, .45) 0%, rgba(20, 26, 24, .72) 100%);
	}
}

@media (max-width: 560px) {
	.zvg-grid-2,
	.zvg-grid-3,
	.zvg-grid-4 { grid-template-columns: 1fr; }

	/* Products stay two-up on phones: single-column product lists make a
	   catalogue feel empty and push everything below the fold. */
	.woocommerce ul.products { grid-template-columns: repeat(2, 1fr); gap: 1.1rem; }

	.woocommerce ul.products li.product .woocommerce-loop-product__title { font-size: .96rem !important; }

	.zvg-footer-grid { grid-template-columns: 1fr; gap: 2.25rem; }

	.zvg-trust { gap: .6rem 1.4rem; font-size: .8rem; }

	.zvg-hero-actions .zvg-btn { flex: 1 1 auto; }

	.woocommerce table.shop_table_responsive tr td { text-align: right; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }

	*,
	*::before,
	*::after {
		animation-duration: .01ms !important;
		transition-duration: .01ms !important;
	}
}

@media print {
	.zvg-header,
	.zvg-footer,
	.zvg-announce,
	.zvg-consent,
	.zvg-newsletter,
	.skip-link { display: none !important; }

	body { color: #000; }
}
