/* ==========================================================================
   Zyvora Perfumes — store pages (shop, product, cart, checkout, account).
   Replaces WooCommerce's default stylesheet; works with classic templates
   and the Cart / Checkout blocks.
   ========================================================================== */

/* ---------- Shared WooCommerce elements ---------- */
.woocommerce .button, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce-page .button, .wc-block-components-button:not(.is-link), .wp-element-button.wc-block-components-button {
	display: inline-flex; align-items: center; justify-content: center; gap: .6em;
	min-height: 50px; padding: .9em 1.8em; border: 1px solid var(--zv-ink); border-radius: 0;
	background: var(--zv-ink); color: var(--zv-ivory); text-decoration: none; cursor: pointer;
	font-family: var(--zv-sans); font-size: .74rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; line-height: 1.2;
	transition: background-color .3s var(--zv-ease), color .3s var(--zv-ease);
}
.woocommerce .button:hover, .woocommerce a.button:hover, .woocommerce button.button:hover,
.wc-block-components-button:not(.is-link):hover { background: var(--zv-charcoal); color: #fff; }
.woocommerce .button.alt { background: var(--zv-ink); }
.woocommerce .button:disabled, .woocommerce .button.disabled, .woocommerce button.button:disabled[disabled] { opacity: .45; cursor: not-allowed; }
.woocommerce .button.loading { opacity: .6; }
.woocommerce .button.wc-forward:not(.checkout):not(.checkout-button) { background: transparent; color: var(--zv-ink); }

.woocommerce form .form-row { margin: 0 0 16px; padding: 0; }
.woocommerce form .form-row label { display: block; margin-bottom: 6px; font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.woocommerce form .form-row .required { color: #8c2f39; text-decoration: none; }
.woocommerce form .form-row .optional { text-transform: none; letter-spacing: 0; font-weight: 400; color: var(--zv-muted); }
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce form .form-row select,
.woocommerce .quantity .qty, .woocommerce-cart table.cart td.actions .coupon .input-text, .woocommerce table.variations select {
	width: 100%; min-height: 50px; padding: 12px 14px; border: 1px solid var(--zv-line); border-radius: 0; background: #fff;
	font-size: 1rem; -webkit-appearance: none; appearance: none; transition: border-color .2s, box-shadow .2s;
}
.woocommerce form .form-row textarea { min-height: 110px; }
.woocommerce form .form-row input.input-text:focus, .woocommerce form .form-row textarea:focus, .woocommerce form .form-row select:focus,
.woocommerce .quantity .qty:focus, .woocommerce table.variations select:focus { outline: none; border-color: var(--zv-ink); box-shadow: 0 0 0 3px rgba(182, 154, 107, .25); }
.woocommerce form .form-row.woocommerce-invalid input.input-text { border-color: #9b2c2c; }
.woocommerce form .form-row-first, .woocommerce form .form-row-last { width: calc(50% - 8px); float: left; }
.woocommerce form .form-row-last { float: right; }
.woocommerce form .form-row-wide { clear: both; }
.woocommerce table.variations select, .woocommerce form .form-row select {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%2314110f'%3E%3Cpath d='m1 1 5 5 5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 14px center; padding-right: 40px;
}
.select2-container .select2-selection--single { height: 50px; border: 1px solid var(--zv-line); border-radius: 0; }
.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 48px; padding-left: 14px; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 48px; right: 8px; }
.select2-dropdown { border-color: var(--zv-line); border-radius: 0; }
.clear { clear: both; }

/* Notices */
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message, .woocommerce-info, .woocommerce-error, .wc-block-components-notice-banner {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px;
	list-style: none; margin: 0 0 24px; padding: 16px 20px; border: 1px solid var(--zv-line); border-left: 3px solid var(--zv-gold);
	background: #fff; font-size: .94rem;
}
.woocommerce-error { border-left-color: #9b2c2c; flex-direction: column; align-items: flex-start; }
.woocommerce-error li { margin: 0; }
.woocommerce-message .button, .woocommerce-info .button { order: 2; min-height: 40px; padding: .6em 1.2em; }
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before { display: none; }

/* Store pages wrapper (cart / checkout / account) */
.zv-store { padding-block: clamp(32px, 5vw, 64px) var(--zv-section); }

/* ---------- Archive ---------- */
.zv-shop-main > .zv-breadcrumb, .zv-shop-main > .woocommerce-breadcrumb { max-width: calc(var(--zv-max) + var(--zv-gutter) * 2); margin: 0 auto; padding: 24px var(--zv-gutter) 0; }
.zv-archive-head { padding: 24px 0 0; border-bottom: 1px solid var(--zv-line); }
.zv-archive-head__inner { display: grid; grid-template-columns: 1fr; gap: 32px; align-items: end; padding-bottom: 28px; }
.zv-archive-head.has-image .zv-archive-head__inner { grid-template-columns: 1.3fr 1fr; }
.zv-archive-head__title { margin: 0; font-size: clamp(2.6rem, 5.4vw, 4.6rem); font-weight: 400; }
.zv-archive-head__desc { color: var(--zv-muted); max-width: 58ch; margin-top: 1rem; }
.zv-archive-head__desc p:last-child { margin: 0; }
.zv-archive-head__media img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.zv-archive-head .zv-chips { max-width: calc(var(--zv-max) + var(--zv-gutter) * 2); margin: 0 auto; padding: 0 var(--zv-gutter) 24px; }
@media (max-width: 767px) { .zv-archive-head.has-image .zv-archive-head__inner { grid-template-columns: 1fr; } .zv-archive-head__media { display: none; } }

.zv-shop { padding-block: 32px var(--zv-section); }
.zv-shop.has-filters { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: clamp(24px, 4vw, 56px); align-items: start; }
.zv-shop__main { min-width: 0; transition: opacity .25s; }
.zv-shop__main.is-loading { opacity: .4; pointer-events: none; }

.zv-filters { position: sticky; top: calc(var(--zv-header-h) + var(--zv-admin-h) + 24px); max-height: calc(100vh - var(--zv-header-h) - var(--zv-admin-h) - 48px); overflow-y: auto; scrollbar-width: thin; padding-right: 4px; }
.zv-filters__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.zv-filters__title { font-size: 1.6rem; margin: 0; }
.zv-filters__close { display: none; }
.zv-filter { border: 0; border-top: 1px solid var(--zv-line); margin: 0; padding: 18px 0; min-width: 0; }
.zv-filter__title { float: left; width: 100%; padding: 0; margin-bottom: 12px; font-size: .7rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.zv-filter__unit { letter-spacing: 0; color: var(--zv-muted); }
.zv-filter__options { display: grid; gap: 4px; clear: both; }
.zv-filter .zv-price-range { clear: both; }
.zv-check { display: flex; align-items: center; gap: 10px; min-height: 34px; cursor: pointer; font-size: .92rem; }
.zv-check input { -webkit-appearance: none; appearance: none; width: 18px; height: 18px; margin: 0; flex: none; border: 1px solid #b9b0a5; background: #fff; display: grid; place-items: center; cursor: pointer; }
.zv-check input::after { content: ""; width: 10px; height: 10px; background: var(--zv-ink); transform: scale(0); transition: transform .2s var(--zv-ease); }
.zv-check input:checked { border-color: var(--zv-ink); }
.zv-check input:checked::after { transform: scale(1); }
.zv-check input:focus-visible { outline: 2px solid var(--zv-gold); outline-offset: 2px; }
.zv-price-range { display: flex; align-items: center; gap: 8px; }
.zv-price-range label { flex: 1; }
.zv-price-range input { width: 100%; min-height: 44px; padding: 8px 10px; border: 1px solid var(--zv-line); background: #fff; font-size: .92rem; }
.zv-filters__actions { display: grid; gap: 10px; padding-top: 20px; border-top: 1px solid var(--zv-line); }
.js .zv-filters__actions [data-zv-filters-apply] { display: none; }
.zv-filters__clear { text-align: center; font-size: .8rem; }
.zv-filters-backdrop { display: none; }

.zv-toolbar { display: flex; align-items: center; gap: 16px; padding-bottom: 20px; margin-bottom: 8px; border-bottom: 1px solid var(--zv-line); }
.zv-toolbar__results { margin: 0; font-size: .85rem; color: var(--zv-muted); }
.zv-toolbar__filter { display: none; align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; border: 1px solid var(--zv-ink); background: none; font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.zv-toolbar__count { display: grid; place-items: center; min-width: 20px; height: 20px; border-radius: 10px; background: var(--zv-ink); color: var(--zv-ivory); font-size: .66rem; }
.zv-toolbar__sort { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.zv-toolbar__sort label { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--zv-muted); }
.zv-toolbar__sort select { min-height: 44px; padding: 8px 36px 8px 12px; border: 1px solid var(--zv-line); background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%2314110f'%3E%3Cpath d='m1 1 5 5 5-5'/%3E%3C/svg%3E") no-repeat right 12px center; -webkit-appearance: none; appearance: none; font-size: .9rem; }
.zv-active-filters { list-style: none; margin: 16px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.zv-active-filters a { display: inline-flex; align-items: center; gap: 6px; padding: .4em .8em; background: var(--zv-sand); text-decoration: none; font-size: .8rem; }
.zv-active-filters a:hover { background: var(--zv-line); }
.zv-active-filters__clear { background: none !important; text-decoration: underline !important; }
.zv-shop__main ul.products { margin-top: 28px; }
.zv-load-more { display: flex; justify-content: center; margin-top: 56px; }
.has-load-more .woocommerce-pagination { display: none; }
.woocommerce-pagination { margin-top: 56px; }
.woocommerce-pagination ul.page-numbers { list-style: none; display: flex; justify-content: center; gap: 6px; margin: 0; padding: 0; border: 0; }
.woocommerce-pagination .page-numbers li { border: 0; }
.woocommerce-pagination a.page-numbers, .woocommerce-pagination span.page-numbers { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 8px; border: 1px solid var(--zv-line); text-decoration: none; }
.woocommerce-pagination span.current { background: var(--zv-ink); color: var(--zv-ivory); border-color: var(--zv-ink); }
.woocommerce-result-count, .woocommerce-ordering { display: none; }

@media (max-width: 1023px) {
	.zv-shop.has-filters { grid-template-columns: 1fr; }
	.zv-toolbar__filter { display: inline-flex; }
	.zv-filters {
		position: fixed; top: 0; bottom: 0; left: 0; z-index: 1001; width: min(380px, 90vw); max-height: none;
		background: var(--zv-ivory); padding: 20px 24px 32px; box-shadow: var(--zv-shadow);
		transform: translateX(-105%); transition: transform .5s var(--zv-ease); visibility: hidden;
	}
	.zv-filters.is-open { transform: none; visibility: visible; }
	.zv-filters__close { display: inline-grid; }
	.zv-filters-backdrop { display: block; position: fixed; inset: 0; z-index: 1000; background: rgba(20, 17, 15, .45); }
	.js .zv-filters__actions [data-zv-filters-apply] { display: inline-flex; }
	.zv-filters__actions { position: sticky; bottom: -32px; background: var(--zv-ivory); padding-bottom: 8px; }
}
@media (max-width: 479px) { .zv-toolbar { flex-wrap: wrap; } .zv-toolbar__results { order: 3; width: 100%; } .zv-toolbar__sort label { display: none; } }

/* ---------- Single product ---------- */
.single-product .zv-shop-main > .woocommerce-breadcrumb, .single-product .zv-shop-main > .zv-breadcrumb { padding-top: 20px; }
.single-product div.product { max-width: calc(var(--zv-max) + var(--zv-gutter) * 2); margin: 0 auto; padding: 20px var(--zv-gutter) 0; }
/* Gallery + summary live in their own grid so the sticky summary stops at the end of the gallery. */
.zv-pdp__top { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); column-gap: clamp(32px, 6vw, 96px); align-items: start; }
.zv-pdp__top > * { min-width: 0; }
.zv-pdp__top > .zv-pdp__gallery { position: relative; }
.zv-pdp__top > .summary { position: sticky; top: calc(var(--zv-header-h) + var(--zv-admin-h) + 24px); padding-bottom: 40px; }
@media (max-width: 899px) {
	.single-product div.product { padding-inline: 0; }
	.zv-pdp__top { grid-template-columns: minmax(0, 1fr); }
	.zv-pdp__top > .summary { position: static; padding: 24px var(--zv-gutter) 32px; }
	.single-product div.product > .zv-pdp-sections, .single-product div.product > section.related, .single-product div.product > section.upsells { padding-inline: var(--zv-gutter); }
}
.zv-pdp__gallery .zv-badges { top: 16px; left: 16px; z-index: 3; }
.woocommerce-product-gallery { position: relative; margin: 0; opacity: 1 !important; }
/* flow-root contains the floated fade slides, so the thumbnails sit below the image instead of behind it. */
.woocommerce-product-gallery__wrapper { margin: 0; display: flow-root; }
.woocommerce-product-gallery__image { background: var(--zv-sand); position: relative; overflow: hidden; }
.woocommerce-product-gallery__image img { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
.woocommerce-product-gallery__image a { display: block; cursor: zoom-in; }
.woocommerce-product-gallery__trigger {
	position: absolute; top: 16px; right: 16px; z-index: 3; width: 44px; height: 44px; border-radius: 50%;
	background: var(--zv-ivory); display: grid; place-items: center; font-size: 0; text-indent: -9999px; overflow: hidden;
}
.woocommerce-product-gallery__trigger::before {
	content: ""; width: 16px; height: 16px; text-indent: 0;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2314110f' stroke-width='1.6'%3E%3Cpath d='M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.woocommerce-product-gallery__trigger img { display: none !important; }
.woocommerce-product-gallery .flex-control-thumbs { list-style: none; margin: 10px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.woocommerce-product-gallery .flex-control-thumbs li { margin: 0; }
.woocommerce-product-gallery .flex-control-thumbs img { cursor: pointer; opacity: .55; transition: opacity .25s; aspect-ratio: 4 / 5; object-fit: cover; width: 100%; border: 1px solid transparent; }
.woocommerce-product-gallery .flex-control-thumbs img.flex-active, .woocommerce-product-gallery .flex-control-thumbs img:hover { opacity: 1; border-color: var(--zv-ink); }
.woocommerce-product-gallery .flex-direction-nav { list-style: none; margin: 0; padding: 0; }
.woocommerce-product-gallery .flex-direction-nav a { position: absolute; top: 45%; z-index: 2; width: 44px; height: 44px; display: grid; place-items: center; background: rgba(248, 244, 238, .85); font-size: 0; text-decoration: none; border-radius: 50%; }
.woocommerce-product-gallery .flex-direction-nav a::before { content: ""; width: 10px; height: 10px; border-top: 1.5px solid var(--zv-ink); border-left: 1.5px solid var(--zv-ink); }
.woocommerce-product-gallery .flex-direction-nav .flex-prev { left: 12px; }
.woocommerce-product-gallery .flex-direction-nav .flex-prev::before { transform: rotate(-45deg); margin-left: 4px; }
.woocommerce-product-gallery .flex-direction-nav .flex-next { right: 12px; }
.woocommerce-product-gallery .flex-direction-nav .flex-next::before { transform: rotate(135deg); margin-right: 4px; }
.woocommerce-product-gallery .flex-direction-nav .flex-disabled { display: none; }
@media (max-width: 899px) { .woocommerce-product-gallery .flex-control-thumbs { padding-inline: var(--zv-gutter); } }

.summary .product_title { font-size: clamp(2.4rem, 4.2vw, 3.6rem); font-weight: 400; margin: 0 0 .1em; }
.zv-pdp__eyebrow { margin-bottom: .9rem; }
.zv-pdp__descriptor { font-family: var(--zv-serif); font-style: italic; font-size: 1.3rem; color: var(--zv-gold-text); margin: 0 0 .9rem; }
.woocommerce-product-rating { display: flex; align-items: center; gap: 10px; margin-bottom: 1rem; font-size: .82rem; }
.woocommerce-product-rating .woocommerce-review-link { color: var(--zv-muted); }
.summary > .price { font-size: 1.5rem; margin: 0 0 1.2rem; }
.woocommerce-product-details__short-description { color: var(--zv-muted); font-size: 1.02rem; }
.zv-pdp__facts { margin: 1.4rem 0 .6rem; padding: 0; display: grid; gap: 10px; border-top: 1px solid var(--zv-line); padding-top: 1.2rem; }
.zv-pdp__facts div { display: grid; grid-template-columns: 110px 1fr; gap: 12px; }
.zv-pdp__facts dt { font-size: .7rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--zv-muted); padding-top: .2em; }
.zv-pdp__facts dd { margin: 0; }
.zv-pdp__notes-link { margin: .6rem 0 1.6rem; }

.summary form.cart { margin: 1.6rem 0 0; display: flex; flex-wrap: wrap; gap: 10px; }
.summary form.cart:not(.variations_form) { align-items: stretch; }
.summary form.variations_form { display: block; }
.woocommerce .quantity { display: inline-flex; }
.woocommerce .quantity .qty { width: 76px; text-align: center; padding: 0 6px; -moz-appearance: textfield; }
.woocommerce .quantity .qty::-webkit-inner-spin-button { opacity: 1; }
.single_add_to_cart_button, .zv-buy-now { flex: 1 1 180px; }
.summary .single_add_to_cart_button.button { min-height: 56px; }
.summary .zv-buy-now {
	display: inline-flex; align-items: center; justify-content: center; min-height: 56px; padding: .9em 1.8em;
	border: 1px solid var(--zv-ink); background: transparent; color: var(--zv-ink);
	font-size: .74rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; transition: background-color .3s, color .3s;
}
.summary .zv-buy-now:hover { background: var(--zv-ink); color: var(--zv-ivory); }
.summary .zv-buy-now.disabled { opacity: .45; }
.woocommerce-variation-add-to-cart { display: flex; flex-wrap: wrap; gap: 10px; }
table.variations { width: 100%; border-collapse: collapse; margin-bottom: 8px; }
table.variations th, table.variations td { display: block; padding: 0; text-align: left; border: 0; }
table.variations th label { font-size: .72rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
table.variations td { padding: 8px 0 14px; position: relative; }
.zv-swatches { display: flex; flex-wrap: wrap; gap: 8px; }
.zv-swatches .zv-option { padding: 0; border: 0; background: none; cursor: pointer; }
.zv-swatches .zv-option[aria-checked="true"] span { background: var(--zv-ink); color: var(--zv-ivory); border-color: var(--zv-ink); }
.zv-swatches .zv-option:hover span { border-color: var(--zv-ink); }
.zv-swatches .zv-option:disabled span { opacity: .4; text-decoration: line-through; }
.zv-swatches .zv-option:focus-visible { outline: 2px solid var(--zv-gold); outline-offset: 2px; }
.zv-swatches + select { position: absolute; left: 0; top: 0; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.reset_variations { display: inline-block; margin-top: 8px; font-size: .78rem; color: var(--zv-muted); }
.single_variation_wrap .woocommerce-variation-price { font-size: 1.3rem; margin-bottom: 12px; }
.woocommerce-variation-availability .stock, .summary .stock { font-size: .85rem; color: #2f6b45; margin: 0 0 12px; }
.summary .stock.out-of-stock { color: #9b2c2c; }
.zv-pdp__wish { display: inline-flex; align-items: center; gap: 10px; margin-top: 14px; border: 0; background: none; padding: 8px 0; font-size: .82rem; letter-spacing: .06em; }
.zv-pdp__wish[aria-pressed="true"] { color: #8c2f39; }
.zv-pdp__wish[aria-pressed="true"] svg path { fill: currentColor; }
.zv-trust { list-style: none; margin: 1.4rem 0 0; padding: 1.2rem 0 0; border-top: 1px solid var(--zv-line); display: grid; gap: 10px; font-size: .88rem; color: var(--zv-muted); }
.zv-trust li { display: flex; align-items: center; gap: 12px; }
.zv-trust svg { flex: none; color: var(--zv-gold-text); }
.zv-trust a { color: inherit; }
.product_meta { display: none; }

/* Story + notes pyramid */
.zv-pdp-sections { margin-top: clamp(56px, 8vw, 120px); }
.zv-pdp-story { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 7vw, 120px); padding: clamp(40px, 6vw, 88px) 0; border-top: 1px solid var(--zv-line); }
.zv-pdp-story.is-single { grid-template-columns: minmax(0, 760px); justify-content: center; }
.zv-pdp-story__title { font-size: clamp(2.2rem, 4vw, 3.4rem); font-weight: 400; }
.zv-pdp-story__text .zv-prose { color: var(--zv-muted); font-size: 1.08rem; }
.zv-pyramid { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px; }
.zv-pyramid__tier { display: grid; grid-template-columns: 120px 1fr; gap: 24px; align-items: center; }
.zv-pyramid__shape { display: block; height: 76px; background: var(--zv-sand); }
.zv-pyramid__tier--top .zv-pyramid__shape { clip-path: polygon(50% 0, 66% 100%, 34% 100%); background: var(--zv-gold-soft); }
.zv-pyramid__tier--heart .zv-pyramid__shape { clip-path: polygon(33% 0, 67% 0, 84% 100%, 16% 100%); background: var(--zv-gold); }
.zv-pyramid__tier--base .zv-pyramid__shape { clip-path: polygon(16% 0, 84% 0, 100% 100%, 0 100%); background: var(--zv-gold-text); }
.zv-pyramid__text h3 { font-size: 1.4rem; margin: 0; }
.zv-pyramid__hint { margin: 0 0 4px; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--zv-muted); }
.zv-pyramid__notes { margin: 0; font-size: 1rem; }
.zv-pdp-character { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0; border-top: 1px solid var(--zv-line); border-bottom: 1px solid var(--zv-line); }
.zv-pdp-character__item { padding: 36px clamp(16px, 3vw, 40px) 36px 0; }
.zv-pdp-character__item + .zv-pdp-character__item { padding-left: clamp(16px, 3vw, 40px); border-left: 1px solid var(--zv-line); }
.zv-pdp-character__item svg { color: var(--zv-gold-text); margin-bottom: 14px; }
.zv-pdp-character__item h3 { font-size: 1.4rem; }
.zv-pdp-character__item p { color: var(--zv-muted); margin: .6em 0 0; }
.zv-mini-dl { margin: 0; display: grid; gap: 8px; }
.zv-mini-dl div { display: flex; gap: 12px; justify-content: space-between; border-bottom: 1px dashed var(--zv-line); padding-bottom: 6px; }
.zv-mini-dl dt { color: var(--zv-muted); }
.zv-mini-dl dd { margin: 0; text-align: right; }
@media (max-width: 899px) {
	.zv-pdp-story { grid-template-columns: 1fr; }
	.zv-pdp-character__item, .zv-pdp-character__item + .zv-pdp-character__item { padding: 28px 0; border-left: 0; border-top: 1px solid var(--zv-line); }
	.zv-pdp-character__item:first-child { border-top: 0; }
	.zv-pyramid__tier { grid-template-columns: 84px 1fr; gap: 16px; }
	.zv-pyramid__shape { height: 60px; }
}
.zv-pdp-details { max-width: 860px; margin: clamp(40px, 6vw, 72px) auto 0; }
.zv-accordion { border-bottom: 1px solid var(--zv-line); }
.zv-accordion:first-child { border-top: 1px solid var(--zv-line); }
.zv-accordion summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 22px 0; cursor: pointer; font-family: var(--zv-serif); font-size: 1.4rem; }
.zv-accordion summary::-webkit-details-marker { display: none; }
.zv-accordion__icon { transition: transform .35s var(--zv-ease); }
.zv-accordion[open] .zv-accordion__icon { transform: rotate(45deg); }
.zv-accordion__body { padding: 0 0 24px; color: var(--zv-muted); }
.zv-accordion__body table.woocommerce-product-attributes { width: 100%; border-collapse: collapse; margin-top: 12px; }
.woocommerce-product-attributes th, .woocommerce-product-attributes td { text-align: left; padding: 8px 0; border-bottom: 1px dashed var(--zv-line); font-weight: 400; }
.woocommerce-product-attributes td p { margin: 0; }

/* Reviews */
.zv-pdp-reviews { max-width: 860px; margin: clamp(56px, 8vw, 104px) auto 0; }
.woocommerce-Reviews-title { font-size: clamp(2rem, 3.4vw, 2.8rem); }
.woocommerce-Reviews .commentlist { list-style: none; margin: 0 0 40px; padding: 0; }
.woocommerce-Reviews .commentlist li { padding: 24px 0; border-bottom: 1px solid var(--zv-line); }
.woocommerce-Reviews .comment_container { display: grid; grid-template-columns: 48px 1fr; gap: 16px; }
.woocommerce-Reviews .comment_container img.avatar { width: 48px; height: 48px; border-radius: 50%; }
.woocommerce-Reviews .meta { font-size: .85rem; color: var(--zv-muted); margin: 6px 0; }
.woocommerce-Reviews .meta strong { color: var(--zv-ink); }
.woocommerce-review__verified { color: #2f6b45; font-style: normal; }
.woocommerce-noreviews { color: var(--zv-muted); }
#review_form_wrapper { background: #fff; border: 1px solid var(--zv-line); padding: clamp(24px, 4vw, 40px); }
.comment-reply-title { display: block; font-family: var(--zv-serif); font-size: 1.8rem; margin-bottom: 1rem; }
.comment-form-rating label { display: block; font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; margin-bottom: 8px; }
p.stars { margin: 0 0 16px; }
p.stars span { display: inline-flex; gap: 2px; }
p.stars a { position: relative; width: 1.6em; height: 1.6em; font-size: 1.2rem; text-indent: -9999px; overflow: hidden; text-decoration: none; display: inline-block; }
p.stars a::before { content: "★"; position: absolute; inset: 0; text-indent: 0; color: var(--zv-line); display: grid; place-items: center; transition: color .15s; }
p.stars:hover a::before, p.stars.selected a.active::before, p.stars.selected a:not(.active)::before { color: var(--zv-gold); }
p.stars a:hover ~ a::before, p.stars.selected a.active ~ a::before { color: var(--zv-line); }
#review_form .comment-form-comment textarea, #review_form input[type="text"], #review_form input[type="email"] { width: 100%; padding: 12px 14px; border: 1px solid var(--zv-line); background: #fff; }
#review_form .form-submit input, #review_form .submit { min-height: 50px; padding: .9em 2em; border: 0; background: var(--zv-ink); color: var(--zv-ivory); font-size: .74rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; cursor: pointer; }

section.related.products, section.upsells.products { margin-top: var(--zv-section); padding-bottom: var(--zv-section); }
section.related > h2, section.upsells > h2 { font-size: clamp(2rem, 3.4vw, 2.8rem); margin-bottom: 40px; }

/* Sticky add to cart (mobile) */
.zv-sticky-atc {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 12px var(--zv-gutter) calc(12px + env(safe-area-inset-bottom)); background: var(--zv-ivory); border-top: 1px solid var(--zv-line);
	box-shadow: 0 -10px 30px -18px rgba(20, 17, 15, .35); transform: translateY(110%); transition: transform .45s var(--zv-ease);
}
.zv-sticky-atc.is-visible { transform: none; }
.zv-sticky-atc__info { min-width: 0; display: flex; flex-direction: column; }
.zv-sticky-atc__name { font-family: var(--zv-serif); font-size: 1.15rem; line-height: 1.1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.zv-sticky-atc__price { font-size: .85rem; color: var(--zv-muted); }
@media (min-width: 900px) { .zv-sticky-atc { display: none !important; } }

/* ---------- Cart (classic) ---------- */
.woocommerce-cart-form { margin-bottom: 40px; }
table.shop_table { width: 100%; border-collapse: collapse; font-size: .95rem; }
table.shop_table th { text-align: left; font-size: .7rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--zv-muted); padding: 12px 8px; border-bottom: 1px solid var(--zv-line); }
table.shop_table td { padding: 20px 8px; border-bottom: 1px solid var(--zv-line); vertical-align: middle; }
table.cart .product-thumbnail img { width: 84px; height: 105px; object-fit: cover; background: var(--zv-sand); }
table.cart .product-name a { font-family: var(--zv-serif); font-size: 1.3rem; text-decoration: none; }
table.cart .product-remove a { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; text-decoration: none; font-size: 1.3rem; color: var(--zv-muted); }
table.cart .product-remove a:hover { background: var(--zv-sand); color: var(--zv-ink); }
table.cart td.actions { padding-top: 24px; }
table.cart td.actions .coupon { display: flex; gap: 8px; float: left; max-width: 420px; }
table.cart td.actions .coupon label { position: absolute; left: -9999px; }
table.cart td.actions > .button { float: right; background: transparent; color: var(--zv-ink); }
.cart-collaterals { display: grid; grid-template-columns: 1fr minmax(320px, 420px); gap: 40px; }
.cart-collaterals .cross-sells { grid-column: 1; }
.cart-collaterals .cart_totals { grid-column: 2; background: #fff; border: 1px solid var(--zv-line); padding: 28px; }
.cart_totals h2 { font-size: 1.8rem; }
.cart_totals table th { width: 40%; }
.wc-proceed-to-checkout { margin-top: 20px; }
.wc-proceed-to-checkout .checkout-button { width: 100%; min-height: 56px; }
.woocommerce-shipping-calculator .shipping-calculator-button { font-size: .85rem; }
.cart-empty.woocommerce-info { justify-content: center; font-family: var(--zv-serif); font-size: 1.6rem; border: 0; background: none; }
.return-to-shop { text-align: center; }
@media (max-width: 767px) {
	.cart-collaterals { grid-template-columns: 1fr; }
	.cart-collaterals .cart_totals { grid-column: 1; }
	table.shop_table_responsive thead { display: none; }
	table.shop_table_responsive tr { display: grid; grid-template-columns: 84px 1fr; column-gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--zv-line); position: relative; }
	table.shop_table_responsive td { display: flex; justify-content: space-between; padding: 4px 0; border: 0; grid-column: 2; }
	table.shop_table_responsive td::before { content: attr(data-title); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--zv-muted); }
	table.cart td.product-thumbnail { grid-column: 1; grid-row: 1 / span 5; }
	table.cart td.product-thumbnail::before, table.cart td.product-remove::before, table.cart td.product-name::before, table.cart td.actions::before { display: none; }
	table.cart td.product-remove { position: absolute; top: 10px; right: 0; }
	table.cart td.actions { grid-column: 1 / -1; display: block; }
	table.cart td.actions .coupon { float: none; max-width: none; margin-bottom: 12px; }
	table.cart td.actions > .button { float: none; width: 100%; }
}

/* ---------- Checkout (classic) ---------- */
form.checkout { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(320px, .9fr); gap: 16px clamp(32px, 5vw, 72px); align-items: start; }
form.checkout > .woocommerce-NoticeGroup, form.checkout > .col2-set { grid-column: 1; }
form.checkout > #order_review_heading { grid-column: 2; grid-row: 1; margin: 0; font-size: 1.8rem; }
form.checkout > #order_review { grid-column: 2; grid-row: 2 / span 3; background: #fff; border: 1px solid var(--zv-line); padding: 28px; position: sticky; top: calc(var(--zv-header-h) + var(--zv-admin-h) + 24px); }
.col2-set .col-1, .col2-set .col-2 { width: 100%; float: none; }
.col2-set .col-2 { margin-top: 24px; }
.woocommerce-billing-fields h3, .woocommerce-shipping-fields h3, .woocommerce-additional-fields h3 { font-size: 1.6rem; }
#ship-to-different-address { font-family: var(--zv-sans); font-size: .95rem; }
#ship-to-different-address label { display: flex; align-items: center; gap: 10px; text-transform: none; letter-spacing: 0; font-weight: 500; }
.woocommerce-checkout-review-order-table td, .woocommerce-checkout-review-order-table th { padding: 12px 0; }
.woocommerce-checkout-review-order-table .product-total, .woocommerce-checkout-review-order-table tfoot td { text-align: right; }
.woocommerce-checkout-review-order-table .order-total { font-size: 1.15rem; }
#payment ul.payment_methods { list-style: none; margin: 20px 0; padding: 0; border-top: 1px solid var(--zv-line); }
#payment ul.payment_methods li { padding: 14px 0; border-bottom: 1px solid var(--zv-line); }
#payment ul.payment_methods li label { font-weight: 500; }
#payment .payment_box { margin-top: 10px; padding: 14px; background: var(--zv-ivory); font-size: .88rem; color: var(--zv-muted); }
#payment .payment_box p:last-child { margin: 0; }
#place_order { width: 100%; min-height: 58px; margin-top: 12px; }
.woocommerce-terms-and-conditions-wrapper { font-size: .85rem; color: var(--zv-muted); }
.woocommerce-form-coupon-toggle .woocommerce-info, .woocommerce-form-login-toggle .woocommerce-info { justify-content: flex-start; }
form.checkout_coupon { display: flex; gap: 8px; max-width: 520px; margin-bottom: 24px; }
form.checkout_coupon .form-row { flex: 1; margin: 0; }
form.checkout_coupon p:first-child { display: none; }
@media (max-width: 899px) {
	form.checkout { grid-template-columns: 1fr; }
	form.checkout > #order_review_heading, form.checkout > #order_review { grid-column: 1; grid-row: auto; position: static; }
	.woocommerce form .form-row-first, .woocommerce form .form-row-last { width: 100%; float: none; }
}

/* Order received */
.woocommerce-order-overview { list-style: none; margin: 0 0 32px; padding: 20px; display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 16px; background: #fff; border: 1px solid var(--zv-line); font-size: .78rem; text-transform: uppercase; letter-spacing: .1em; color: var(--zv-muted); }
.woocommerce-order-overview strong { display: block; margin-top: 4px; font-size: 1rem; letter-spacing: 0; text-transform: none; color: var(--zv-ink); }
.woocommerce-thankyou-order-received { font-family: var(--zv-serif); font-size: clamp(1.8rem, 3vw, 2.4rem); }

/* ---------- Cart & Checkout blocks ---------- */
.wp-block-woocommerce-cart, .wp-block-woocommerce-checkout { font-family: var(--zv-sans); }
.wc-block-components-title, .wc-block-cart__totals-title, .wc-block-components-checkout-step__title { font-family: var(--zv-serif) !important; font-weight: 500 !important; text-transform: none !important; letter-spacing: 0 !important; font-size: 1.5rem !important; }
.wc-block-components-product-name { font-family: var(--zv-serif); font-size: 1.25rem !important; text-decoration: none; }
.wc-block-components-text-input input, .wc-block-components-combobox .wc-block-components-combobox-control input, .wc-blocks-components-select .wc-blocks-components-select__select { border-radius: 0 !important; border-color: var(--zv-line) !important; background: #fff !important; }
.wc-block-components-text-input.is-active input:focus, .wc-block-components-text-input input:focus { box-shadow: 0 0 0 1px var(--zv-ink) !important; border-color: var(--zv-ink) !important; }
.wc-block-cart__submit-button, .wc-block-components-checkout-place-order-button { width: 100%; min-height: 56px; }
.wc-block-components-totals-wrapper, .wc-block-components-order-summary { border-color: var(--zv-line) !important; }
.wc-block-cart .wc-block-cart__sidebar, .wc-block-checkout__sidebar { background: #fff; border: 1px solid var(--zv-line); padding: 8px 20px 20px; }
/* On phones WooCommerce turns the checkout summary into a collapsible bar with its own borders — drop the box so no empty strip shows above it. */
.wc-block-checkout.is-mobile .wc-block-checkout__sidebar { background: none; border: 0; padding: 0; }
.wc-block-components-radio-control__option, .wc-block-components-radio-control-accordion-option { border-radius: 0 !important; }
.wc-block-components-quantity-selector { border-radius: 0 !important; }
.wc-block-components-sidebar-layout { margin-bottom: 0; }

/* ---------- My account ---------- */
.woocommerce-account .zv-store > .woocommerce { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: clamp(24px, 5vw, 64px); align-items: start; }
.woocommerce-account .zv-store > .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--zv-line); }
.woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--zv-line); }
.woocommerce-MyAccount-navigation a { display: block; padding: 14px 0; text-decoration: none; font-size: .95rem; }
.woocommerce-MyAccount-navigation .is-active a { font-weight: 600; }
.woocommerce-MyAccount-navigation .is-active a::before { content: ""; display: inline-block; width: 16px; height: 1px; background: var(--zv-gold); vertical-align: middle; margin-right: 10px; }
.woocommerce-MyAccount-content { min-width: 0; }
.woocommerce-Addresses { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.woocommerce-Address { background: #fff; border: 1px solid var(--zv-line); padding: 24px; }
.woocommerce-Address-title h2 { font-size: 1.5rem; }
.u-columns.col2-set { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 5vw, 64px); }
.u-columns .u-column1, .u-columns .u-column2 { background: #fff; border: 1px solid var(--zv-line); padding: clamp(24px, 4vw, 40px); }
.woocommerce-form-login .woocommerce-form-login__rememberme { display: flex; align-items: center; gap: 8px; margin: 8px 0 16px; text-transform: none; letter-spacing: 0; font-weight: 400; }
.woocommerce-LostPassword { font-size: .85rem; }
.woocommerce-account:not(.logged-in) .zv-store > .woocommerce { display: block; max-width: 1000px; margin-inline: auto; }
@media (max-width: 767px) {
	.woocommerce-account .zv-store > .woocommerce { grid-template-columns: 1fr; }
	.woocommerce-MyAccount-navigation ul { display: flex; overflow-x: auto; gap: 18px; border: 0; border-bottom: 1px solid var(--zv-line); }
	.woocommerce-MyAccount-navigation li { border: 0; flex: none; }
	.woocommerce-Addresses, .u-columns.col2-set { grid-template-columns: 1fr; }
}
.woocommerce-orders-table .button { min-height: 38px; padding: .5em 1em; }
