/* ============================================================
 * SMILE HUNTER — Global Brand Layer
 *
 * Phase 1: typography (Montserrat), brand colors, lowercase, base elements.
 * Applies on top of Woodmart parent + Woodmart Child existing styles.
 *
 * Why separate file (not style.css):
 * - easy to disable in functions.php with single line if something breaks
 * - separated from product-specific tweaks
 * - clear scope for upcoming page templates
 * ============================================================ */

/* skip-to-content (a11y) — прихований, зʼявляється при фокусі з клавіатури */
.sh-skip-link {
	position: absolute; left: 8px; top: -48px; z-index: 100000;
	background: var(--sh-ebony); color: #fff;
	padding: 10px 16px; border-radius: 0 0 10px 10px;
	font-size: 14px; font-weight: 600; text-decoration: none;
	transition: top .15s ease;
}
.sh-skip-link:focus { top: 0; outline: 2px solid #fff; outline-offset: -4px; }
#sh-main:focus { outline: none; }

/* ===== brand palette (CSS variables) ===== */
:root {
	--sh-floral:     #FEFAF1;
	--sh-ebony:      #657060;
	--sh-ebony-dark: #525B4E;
	--sh-ash:        #B8C5BC;
	--sh-ash-soft:   #DBE2DC;
	--sh-lion:       #B48B5F;
	--sh-lion-dark:  #97744B;
	--sh-lion-soft:  #E8D8BC;
	--sh-timber:     #D3D0C8;
	--sh-ink:        #1A1A1A;
	--sh-muted:      #6B6B6B;
	--sh-line:       rgba(26, 26, 26, .1);
}

/* ===== typography: Montserrat (без !important — щоб icon fonts працювали) =====
 * Раніше я форсував Montserrat на .woocommerce *, .wd-products-element * через
 * !important. Це ламало icon fonts (dashicons, Font Awesome, Woodmart icons),
 * бо їх font-family перебивався на Montserrat — а Montserrat не має гліфів
 * для іконок, тож вони показувались як пусті квадрати.
 *
 * Зараз — без !important. Inheritance природньо передає Montserrat
 * звичайному тексту. Icon font rules (font-family: dashicons / fontawesome /
 * woodmart-icons) перебивають через специфічність на конкретних селекторах.
 */
html, body, input, textarea, select, button, optgroup {
	font-family: 'Montserrat', system-ui, -apple-system, sans-serif;
}
body h1, body h2, body h3, body h4, body h5, body h6,
body p, body a, body label,
body .elementor-widget-text-editor,
body .elementor-heading-title,
body .elementor-button,
body .entry-title,
body .product-title,
body .woocommerce a,
body .woocommerce p,
body .woocommerce h1, body .woocommerce h2,
body .woocommerce h3, body .woocommerce h4,
body .woocommerce h5, body .woocommerce h6,
body .woocommerce button {
	font-family: 'Montserrat', system-ui, -apple-system, sans-serif;
}

/* ===== lowercase by default + exceptions ===== */
body {
	background: var(--sh-floral);
	color: var(--sh-ink);
	text-transform: lowercase;
}

/* preserve case: inputs, technical/brand names, dates, emails, admin bar, explicit class */
input,
textarea,
select option,
.preserve-case,
.preserve-case *,
[type="email"],
[type="tel"],
[type="number"],
[type="password"],
[type="search"],
.user-email,
.email-address,
abbr,
code,
.brand-name {
	text-transform: none !important;
}

#wpadminbar,
#wpadminbar * {
	text-transform: none !important;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
}

/* ===== headings ===== */
h1, h2, h3 { font-weight: 800; letter-spacing: -0.025em; line-height: 1.08; }
h4, h5, h6 { font-weight: 700; letter-spacing: -0.02em; line-height: 1.2; }

h1 { font-size: 32px; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
@media (min-width: 1024px) {
	h1 { font-size: 44px; }
	h2 { font-size: 34px; }
	h3 { font-size: 24px; }
}

/* ===== links ===== */
a {
	color: var(--sh-ink);
	transition: color .15s;
}
a:hover { color: var(--sh-ebony); }

/* ===== buttons (universal) ===== */
.button,
button[type="submit"],
.elementor-button,
.wd-buttons .btn,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce .button.alt,
.woocommerce-page .button,
.single_add_to_cart_button {
	background: var(--sh-ebony) !important;
	color: var(--sh-floral) !important;
	font-family: 'Montserrat', sans-serif !important;
	font-weight: 600 !important;
	font-size: 13px !important;
	letter-spacing: 0.01em !important;
	border-radius: 999px !important;
	border: 0 !important;
	padding: 12px 24px !important;
	transition: background .15s !important;
}
.button:hover,
button[type="submit"]:hover,
.elementor-button:hover,
.wd-buttons .btn:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.single_add_to_cart_button:hover {
	background: var(--sh-ebony-dark) !important;
	color: var(--sh-floral) !important;
}

/* ===== forms (universal) ===== */
input[type="text"],
input[type="email"],
input[type="tel"],
input[type="number"],
input[type="password"],
input[type="search"],
input[type="url"],
textarea,
select {
	border: 1.5px solid var(--sh-timber);
	background: white;
	padding: 12px 18px;
	border-radius: 14px;
	font-size: 14px;
	color: var(--sh-ink);
	outline: none;
	transition: border-color .15s;
}
input:focus,
textarea:focus,
select:focus {
	border-color: var(--sh-ebony);
}

/* ===== placeholders (universal) =====
 * Баланс: достатньо контрастний щоб не зливався з фоном, але світліший і легший
 * за реальний введений текст. Entered text у нас #1A1A1A weight 500+, placeholder
 * #8A8A8A weight 400 (lighter) — чітка різниця за вагою і кольором.
 * opacity: 1 — щоб Firefox/Safari не накладали свій fade зверху.
 */
input::placeholder,
textarea::placeholder,
select::placeholder,
.sh-checkout input::placeholder,
.sh-checkout textarea::placeholder,
.sh-cart input::placeholder,
.sh-cart textarea::placeholder {
	color: #9A9A9A !important;
	opacity: 1 !important;
	font-weight: 400 !important;
}
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
	color: #9A9A9A !important;
	opacity: 1 !important;
	font-weight: 400 !important;
}
input::-moz-placeholder,
textarea::-moz-placeholder {
	color: #9A9A9A !important;
	opacity: 1 !important;
	font-weight: 400 !important;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
	color: #9A9A9A !important;
	opacity: 1 !important;
	font-weight: 400 !important;
}

/* ===== WooCommerce notices — GLOBAL brand styling =====
 * За замовчуванням WC рендерить нотіси як темно-сірі блоки з ::before bullet
 * (галочка/хрестик через FontAwesome або вбудовану піктограму, яка в нас не
 * завантажена — звідси "☐" у кошику). Робимо брендовий вигляд:
 *   - card з border-radius 14px, нашою палітрою, тінню
 *   - тип-специфічна ліва смуга (acent border-left)
 *     • error → червонуватий (ягідний для уваги, але не "веб 1.0 крик")
 *     • message → ebony (підтвердження дії, success)
 *     • info → ash (нейтрально)
 *   - icon emoji на місці ::before (без font-icon залежностей)
 *   - lowercase усе одно стосується тексту нотісу
 *
 * Перебиваємо локальні правила Woodmart і WC. Старі правила в checkout.css
 * лишаємо — вони більш специфічні і нічого не зламають.
 */
html body .woocommerce-notices-wrapper {
	margin: 0 0 16px;
}
html body .woocommerce-notices-wrapper:empty { display: none; }

html body .woocommerce-error,
html body .woocommerce-message,
html body .woocommerce-info,
html body .woocommerce-noreviews,
html body .woocommerce > .woocommerce-error,
html body .woocommerce > .woocommerce-message,
html body .woocommerce > .woocommerce-info {
	background: var(--sh-floral) !important;
	color: var(--sh-ink) !important;
	border: 1px solid var(--sh-timber) !important;
	border-radius: 14px !important;
	box-shadow: none !important;
	padding: 14px 18px !important;
	font-family: 'Montserrat', sans-serif !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 1.5 !important;
	margin: 0 0 16px !important;
	list-style: none !important;
	display: flex !important;
	align-items: flex-start !important;
	gap: 12px !important;
	text-transform: lowercase !important;
}
html body .woocommerce-error li,
html body .woocommerce-message li,
html body .woocommerce-info li {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}
html body .woocommerce-error a,
html body .woocommerce-message a,
html body .woocommerce-info a {
	color: var(--sh-ebony-dark) !important; /* ebony на ash-soft/tint = 3.94:1; ebony-dark = 5.4:1 */
	text-decoration: underline !important;
	font-weight: 600 !important;
}
html body .woocommerce-error a:hover,
html body .woocommerce-message a:hover,
html body .woocommerce-info a:hover {
	color: var(--sh-ebony-dark) !important;
}

/* Тип-специфічні акценти — м'яка тонована картка (бренд-ідіома, без бутстрап-
 * бару зліва). Семантику несе колір рамки/фону + emoji-іконка нижче. */
html body .woocommerce-error {
	background: #F8ECE9 !important;          /* теплий рожевий tint */
	border-color: #D9A6A0 !important;
}
html body .woocommerce-message {
	background: var(--sh-ash-soft) !important; /* шавлієвий — як банер набору */
	border-color: var(--sh-ash) !important;
}
html body .woocommerce-info {
	background: #F6EFDD !important;           /* кремово-золотий — як gift-note */
	border-color: var(--sh-lion) !important;
}

/* ВАЖЛИВО: прибираємо вбудовані ::before/::after від WC (іконки, які не
 * рендеряться без font-icon і виглядають як квадратики ☐). Натомість додаємо
 * власну emoji-іконку через ::before. */
html body .woocommerce-error::before,
html body .woocommerce-message::before,
html body .woocommerce-info::before,
html body .woocommerce-error::after,
html body .woocommerce-message::after,
html body .woocommerce-info::after,
html body .woocommerce-notices-wrapper .woocommerce-error::before,
html body .woocommerce-notices-wrapper .woocommerce-message::before,
html body .woocommerce-notices-wrapper .woocommerce-info::before {
	content: none !important;
	display: none !important;
	background: none !important;
	border: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	width: auto !important;
	height: auto !important;
}

/* Brand icon — emoji через flex-блок перед текстом
 * Окрема ::before з власним позиціонуванням (попередній ::before вище ми
 * вимкнули content:none). Тут — заново вмикаємо тільки для smile-notices. */
html body .woocommerce-notices-wrapper .woocommerce-error::before {
	content: '⚠️' !important;
	display: inline-flex !important;
	align-items: center;
	flex-shrink: 0;
	font-size: 18px;
	line-height: 1.4;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	color: inherit !important;
	width: auto !important;
	height: auto !important;
	border: 0 !important;
	position: static !important;
}
html body .woocommerce-notices-wrapper .woocommerce-message::before {
	content: '✓' !important;
	display: inline-flex !important;
	align-items: center;
	flex-shrink: 0;
	font-size: 18px;
	font-weight: 700;
	color: var(--sh-ebony) !important;
	line-height: 1.4;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	width: auto !important;
	height: auto !important;
	border: 0 !important;
	position: static !important;
}
html body .woocommerce-notices-wrapper .woocommerce-info::before {
	content: 'ℹ︎' !important;
	display: inline-flex !important;
	align-items: center;
	flex-shrink: 0;
	font-size: 18px;
	color: var(--sh-lion) !important;
	line-height: 1.4;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	width: auto !important;
	height: auto !important;
	border: 0 !important;
	position: static !important;
}

/* Кнопки всередині нотісу (наприклад "Переглянути кошик" у woocommerce-message) */
html body .woocommerce-error .button,
html body .woocommerce-message .button,
html body .woocommerce-info .button {
	margin-left: auto !important;
	flex-shrink: 0;
	font-size: 12px !important;
	padding: 8px 16px !important;
}

/* ===== WC star rating — replace font-icon with Unicode stars =====
 * WC за замовчуванням рендерить .star-rating з font-family: 'star' (вбудований
 * woocommerce.woff). У нашій збірці цей font нестабільно завантажується — стає
 * квадратиками. Замінюємо на Unicode ★ і вираховуємо заповнення через width %
 * на foreground span (HTML структура WC: <span style="width:80%">5 of 5</span>).
 *
 * Зберігаємо WC HTML — просто перебиваємо font і color. accessibility-текст
 * "5 of 5 stars" лишається у DOM (screen readers ОК).
 */
html body .star-rating {
	font-family: system-ui, -apple-system, "Segoe UI", sans-serif !important;
	color: var(--sh-timber) !important;
	font-size: 14px !important;
	letter-spacing: 1px !important;
	width: 5.4em !important;
	height: auto !important;
	line-height: 1 !important;
	position: relative !important;
	overflow: hidden !important;
	display: inline-block !important;
}
html body .star-rating::before {
	content: '★★★★★' !important;
	color: var(--sh-timber) !important;
	font-family: system-ui, -apple-system, "Segoe UI", sans-serif !important;
	font-weight: normal !important;
	float: none !important;
	position: absolute !important;
	left: 0 !important;
	top: 0 !important;
	width: 100% !important;
}
html body .star-rating span {
	color: var(--sh-lion) !important;
	font-family: system-ui, -apple-system, "Segoe UI", sans-serif !important;
	float: left !important;
	position: relative !important;
	overflow: hidden !important;
	top: 0 !important;
	left: 0 !important;
	padding-top: 0 !important;
	height: auto !important;
}
html body .star-rating span::before {
	content: '★★★★★' !important;
	font-family: system-ui, -apple-system, "Segoe UI", sans-serif !important;
	font-weight: normal !important;
	color: var(--sh-lion) !important;
	float: none !important;
	position: absolute !important;
	left: 0 !important;
	top: 0 !important;
	white-space: nowrap !important;
}

/* Star rating всередині product comments / reviews */
.commentlist .star-rating,
.woocommerce-product-rating .star-rating,
.products .star-rating {
	display: inline-block !important;
}

/* ===== 404 page ===== */
.sh-404 {
	padding: 60px 0 80px;
	text-align: center;
	background: var(--sh-floral);
	min-height: 60vh;
}
@media (min-width: 1024px) { .sh-404 { padding: 96px 0 120px; } }
.sh-404 .container {
	max-width: 600px;
	margin: 0 auto;
	padding: 0 16px;
}
.sh-404-emoji { font-size: 64px; line-height: 1; margin-bottom: 16px; }
@media (min-width: 1024px) { .sh-404-emoji { font-size: 96px; margin-bottom: 24px; } }
.sh-404-code {
	font-size: 80px;
	font-weight: 800;
	letter-spacing: -0.04em;
	line-height: 1;
	color: var(--sh-ebony);
	margin-bottom: 14px;
}
@media (min-width: 1024px) { .sh-404-code { font-size: 128px; } }
.sh-404-title {
	font-size: 28px;
	font-weight: 800;
	letter-spacing: -0.02em;
	color: var(--sh-ink);
	margin: 0 0 14px;
}
@media (min-width: 1024px) { .sh-404-title { font-size: 40px; } }
.sh-404-lead {
	font-size: 15px;
	line-height: 1.6;
	color: var(--sh-muted);
	margin: 0 0 28px;
}
.sh-404-cta {
	display: flex;
	gap: 10px;
	justify-content: center;
	flex-wrap: wrap;
	margin-bottom: 32px;
}
.sh-404-btn {
	display: inline-block;
	padding: 13px 26px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none !important;
	transition: background .15s, color .15s, border-color .15s;
}
.sh-404-btn-primary {
	background: var(--sh-ebony) !important;
	color: var(--sh-floral) !important;
}
.sh-404-btn-primary:hover { background: var(--sh-ebony-dark) !important; }
.sh-404-btn-ghost {
	background: transparent !important;
	color: var(--sh-ink) !important;
	border: 1.5px solid var(--sh-ink);
}
.sh-404-btn-ghost:hover {
	background: var(--sh-ink) !important;
	color: var(--sh-floral) !important;
}
.sh-404-help {
	font-size: 13px;
	color: var(--sh-muted);
}
.sh-404-help a { color: var(--sh-ebony); text-decoration: underline; }

/* ===== Thank you page (order received) ===== */
.sh-thankyou {
	padding: 32px 0 80px;
	background: var(--sh-floral);
}
@media (min-width: 1024px) { .sh-thankyou { padding: 56px 0 120px; } }
.sh-thankyou .container {
	max-width: 800px;
	margin: 0 auto;
	padding: 0 12px;
}
@media (min-width: 700px)  { .sh-thankyou .container { padding: 0 20px; } }
@media (min-width: 1024px) { .sh-thankyou .container { padding: 0 40px; } }

.sh-ty-hero, .sh-ty-failed, .sh-ty-empty {
	text-align: center;
	padding: 24px 0 32px;
}
.sh-ty-hero .emoji, .sh-ty-failed .emoji, .sh-ty-empty .emoji {
	font-size: 64px;
	line-height: 1;
	margin-bottom: 16px;
}
.sh-ty-hero h1, .sh-ty-failed h1, .sh-ty-empty h1 {
	font-size: 32px;
	font-weight: 800;
	letter-spacing: -0.025em;
	color: var(--sh-ink);
	margin: 0 0 14px;
}
@media (min-width: 1024px) {
	.sh-ty-hero h1, .sh-ty-failed h1, .sh-ty-empty h1 { font-size: 44px; }
}
.sh-ty-hero .lead, .sh-ty-failed p, .sh-ty-empty p {
	font-size: 15px;
	line-height: 1.6;
	color: var(--sh-muted);
	margin: 0 auto;
	max-width: 56ch;
}

/* META row — 4 mini-cards */
.sh-ty-meta {
	display: grid;
	gap: 10px;
	margin: 24px 0 32px;
	grid-template-columns: 1fr 1fr;
}
@media (min-width: 700px) { .sh-ty-meta { grid-template-columns: repeat(4, 1fr); gap: 14px; } }
.sh-ty-meta-item {
	background: white;
	border: 1px solid var(--sh-timber);
	border-radius: 14px;
	padding: 14px 16px;
	text-align: left;
}
.sh-ty-meta-label {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.12em;
	color: var(--sh-muted);
	text-transform: uppercase;
	margin-bottom: 4px;
}
.sh-ty-meta-value {
	font-size: 15px;
	font-weight: 700;
	color: var(--sh-ink);
}

/* Items list */
.sh-ty-items { margin-bottom: 32px; }
.sh-ty-items h2,
.sh-ty-cta h2 {
	font-size: 20px;
	font-weight: 800;
	letter-spacing: -0.02em;
	margin: 0 0 14px;
	color: var(--sh-ink);
}
.sh-ty-item {
	display: grid;
	grid-template-columns: 56px 1fr auto;
	gap: 14px;
	align-items: center;
	padding: 14px 16px;
	background: white;
	border: 1px solid var(--sh-timber);
	border-radius: 14px;
	margin-bottom: 10px;
}
.sh-ty-item-photo {
	width: 56px;
	height: 56px;
	border-radius: 10px;
	background: var(--sh-ash-soft);
	overflow: hidden;
}
.sh-ty-item-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sh-ty-item-name { font-size: 14px; font-weight: 700; color: var(--sh-ink); margin-bottom: 2px; }
.sh-ty-item-qty { font-size: 12px; color: var(--sh-muted); }
.sh-ty-item-total { font-size: 14px; font-weight: 700; white-space: nowrap; }

/* Address blocks */
.sh-ty-address {
	display: grid;
	gap: 16px;
	margin-bottom: 32px;
}
@media (min-width: 768px) { .sh-ty-address { grid-template-columns: 1fr 1fr; } }
.sh-ty-address-block {
	background: var(--sh-ash-soft);
	border-radius: 14px;
	padding: 18px 20px;
}
.sh-ty-address-block h3 {
	font-size: 11px !important;
	font-weight: 700 !important;
	letter-spacing: 0.16em !important;
	text-transform: uppercase !important;
	color: var(--sh-ebony-dark) !important;
	margin: 0 0 8px !important;
}
.sh-ty-address-block address {
	font-style: normal;
	font-size: 13px;
	line-height: 1.55;
	color: var(--sh-ink);
}

/* CTA section */
.sh-ty-cta {
	padding: 28px 0;
	text-align: center;
	border-top: 1px solid var(--sh-line);
}
.sh-ty-cta p {
	font-size: 15px;
	color: var(--sh-muted);
	max-width: 50ch;
	margin: 0 auto 22px;
}
.sh-ty-hero .cta, .sh-ty-cta .cta, .sh-ty-failed .cta, .sh-ty-empty .cta {
	display: flex;
	gap: 10px;
	justify-content: center;
	flex-wrap: wrap;
	margin-top: 18px;
}
.sh-ty-btn {
	display: inline-block;
	padding: 13px 26px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none !important;
	transition: background .15s, color .15s, border-color .15s;
}
.sh-ty-btn-primary {
	background: var(--sh-ebony) !important;
	color: var(--sh-floral) !important;
}
.sh-ty-btn-primary:hover { background: var(--sh-ebony-dark) !important; }
.sh-ty-btn-ghost {
	background: transparent !important;
	color: var(--sh-ink) !important;
	border: 1.5px solid var(--sh-ink);
}
.sh-ty-btn-ghost:hover {
	background: var(--sh-ink) !important;
	color: var(--sh-floral) !important;
}

/* ===== Thank you: smile-бонуси earned banner ===== */
.sh-ty-smile-earned {
	display: flex;
	align-items: center;
	gap: 18px;
	background: var(--sh-floral);
	border: 1.5px solid var(--sh-ebony);
	border-radius: 16px;
	padding: 22px 24px;
	margin: 0 0 32px;
}
.sh-ty-smile-earned-icon {
	font-size: 40px;
	line-height: 1;
	flex-shrink: 0;
}
.sh-ty-smile-earned-body {
	flex: 1 1 auto;
	min-width: 0;
}
.sh-ty-smile-earned-label {
	font-size: 12px;
	letter-spacing: 0.04em;
	color: var(--sh-muted);
	text-transform: lowercase;
	margin-bottom: 2px;
}
.sh-ty-smile-earned-value {
	font-size: 28px;
	font-weight: 800;
	letter-spacing: -0.02em;
	color: var(--sh-ink);
	line-height: 1;
	margin-bottom: 6px;
}
.sh-ty-smile-earned-hint {
	font-size: 12px;
	color: var(--sh-muted);
	line-height: 1.4;
}
.sh-ty-smile-earned-hint a {
	color: var(--sh-ebony);
	text-decoration: underline;
}
@media (max-width: 600px) {
	.sh-ty-smile-earned { flex-direction: column; align-items: flex-start; gap: 10px; padding: 18px 20px; }
	.sh-ty-smile-earned-icon { font-size: 32px; }
	.sh-ty-smile-earned-value { font-size: 24px; }
}

/* ===== Thank you: share block ===== */
.sh-ty-share {
	background: white;
	border: 1px solid var(--sh-timber);
	border-radius: 16px;
	padding: 24px;
	margin: 32px 0;
	text-align: center;
}
.sh-ty-share-head h2 {
	font-size: 18px !important;
	font-weight: 800 !important;
	margin: 0 0 6px !important;
	text-transform: lowercase;
}
.sh-ty-share-head p {
	font-size: 13px;
	color: var(--sh-muted);
	margin: 0 0 18px;
	max-width: 40ch;
	margin-left: auto;
	margin-right: auto;
}
.sh-ty-share-buttons {
	display: flex;
	gap: 10px;
	justify-content: center;
	flex-wrap: wrap;
}
.sh-ty-share-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 18px;
	border-radius: 999px;
	border: 1.5px solid var(--sh-timber);
	background: white;
	color: var(--sh-ink) !important;
	text-decoration: none !important;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: border-color .15s, background .15s, color .15s;
	text-transform: lowercase;
}
.sh-ty-share-btn:hover {
	border-color: var(--sh-ebony);
	background: var(--sh-floral);
}
.sh-ty-share-btn svg {
	width: 18px;
	height: 18px;
	flex-shrink: 0;
}
.sh-ty-share-btn-copy.is-copied {
	border-color: var(--sh-ebony);
	background: var(--sh-ebony);
	color: var(--sh-floral) !important;
}

/* ===== Thank you: social proof / follow ===== */
.sh-ty-social {
	text-align: center;
	padding: 28px 0 8px;
	margin-top: 18px;
}
.sh-ty-social-head h2 {
	font-size: 18px !important;
	font-weight: 800 !important;
	margin: 0 0 6px !important;
	text-transform: lowercase;
}
.sh-ty-social-head p {
	font-size: 13px;
	color: var(--sh-muted);
	margin: 0 0 18px;
	max-width: 42ch;
	margin-left: auto;
	margin-right: auto;
}
.sh-ty-social-buttons {
	display: flex;
	gap: 10px;
	justify-content: center;
	flex-wrap: wrap;
}
.sh-ty-social-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 18px;
	border-radius: 999px;
	border: 1.5px solid var(--sh-ink);
	background: transparent;
	color: var(--sh-ink) !important;
	text-decoration: none !important;
	font-size: 13px;
	font-weight: 600;
	transition: background .15s, color .15s;
	text-transform: lowercase;
}
.sh-ty-social-btn:hover {
	background: var(--sh-ink);
	color: var(--sh-floral) !important;
}
.sh-ty-social-btn svg {
	width: 18px;
	height: 18px;
	flex-shrink: 0;
}

/* ===== Search results page (search.php) ===== */
.sh-search-page {
	padding: 24px 0 80px;
	background: var(--sh-floral);
}
.sh-search-page .container {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 12px;
}
@media (min-width: 700px)  { .sh-search-page .container { padding: 0 20px; } }
@media (min-width: 1024px) { .sh-search-page .container { padding: 0 40px; } }

.sh-search-page .sh-crumbs {
	font-size: 12px;
	color: var(--sh-muted);
	margin-bottom: 24px;
}
.sh-search-page .sh-crumbs a { color: var(--sh-muted); text-decoration: none; }
.sh-search-page .sh-crumbs a:hover { color: var(--sh-ink); }
.sh-search-page .sh-crumbs .sep { margin: 0 8px; opacity: .5; }
.sh-search-page .sh-crumbs .here { color: var(--sh-ink); font-weight: 500; }

.sh-search-page .eyebrow {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.18em;
	color: var(--sh-ebony-dark);
	margin-bottom: 12px;
	text-transform: uppercase;
}
.sh-search-header { margin-bottom: 32px; max-width: 700px; }
.sh-search-header h1 {
	font-size: 32px;
	font-weight: 800;
	letter-spacing: -0.025em;
	margin: 0 0 8px;
	color: var(--sh-ink);
}
@media (min-width: 1024px) { .sh-search-header h1 { font-size: 44px; } }
.sh-search-count {
	font-size: 13px;
	color: var(--sh-muted);
	margin: 0 0 18px;
}
.sh-search-form {
	display: flex;
	gap: 10px;
	align-items: center;
}
.sh-search-form input[type="search"] {
	flex: 1;
	border: 1.5px solid var(--sh-timber);
	background: white;
	padding: 13px 18px;
	border-radius: 999px;
	font-size: 14px;
	color: var(--sh-ink);
	outline: none;
	font-family: 'Montserrat', sans-serif;
}
.sh-search-form input:focus { border-color: var(--sh-ebony); }
.sh-search-form button {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	border: 0;
	background: var(--sh-ebony);
	color: var(--sh-floral);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background .15s;
}
.sh-search-form button:hover { background: var(--sh-ebony-dark); }
.sh-search-form button svg { width: 22px; height: 22px; }

.sh-search-list {
	display: grid;
	gap: 14px;
	max-width: 800px;
}
.sh-search-list-item {
	display: block;
	background: white;
	border: 1px solid var(--sh-timber);
	border-radius: 14px;
	padding: 18px 20px;
	text-decoration: none !important;
	color: var(--sh-ink) !important;
	transition: border-color .15s;
}
.sh-search-list-item:hover { border-color: var(--sh-ebony); }
.sh-search-list-item h3 {
	font-size: 16px;
	font-weight: 700;
	margin: 0 0 6px;
}
.sh-search-list-item p {
	font-size: 13px;
	color: var(--sh-muted);
	margin: 0;
	line-height: 1.5;
}

.sh-search-empty {
	padding: 56px 16px;
	text-align: center;
}
.sh-search-empty .emoji { font-size: 56px; margin-bottom: 14px; }
.sh-search-empty h2 {
	font-size: 22px !important;
	margin: 0 0 8px !important;
	color: var(--sh-ink) !important;
}
.sh-search-empty p {
	color: var(--sh-muted);
	margin: 0 0 22px;
}
.sh-search-empty-btn {
	display: inline-block;
	background: var(--sh-ebony) !important;
	color: var(--sh-floral) !important;
	padding: 12px 24px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none !important;
}
.sh-search-empty-btn:hover { background: var(--sh-ebony-dark) !important; }

.sh-search-pagination {
	margin-top: 32px;
	display: flex;
	justify-content: center;
}

/* ===== text selection ===== */
::selection { background: var(--sh-ebony); color: var(--sh-floral); }

/* ===== logo replacement =====
 * Заміна вбудованого logo350ebony.png на наш бренд-PNG через CSS-trick.
 * Альтернатива — завантажити PNG через WP Admin → Woodmart Theme Settings → Header → Logo.
 * Якщо віддаси перевагу admin-варіанту — приберемо цей блок.
 */
.whb-main-header .site-logo img,
.whb-mobile-header .site-logo img,
.footer-container .site-logo img,
.site-logo img {
	content: url('../img/smile-hunter-logo-black.png');
	width: auto !important;
	height: 50px !important;
	max-height: 50px !important;
}
/* На mobile логотип header — розмір контролюється у блоці Mobile header tweaks нижче. */
/* footer logo is on dark background — use white variant */
.footer-container.color-scheme-dark .site-logo img,
.main-footer .site-logo img {
	content: url('../img/smile-hunter-logo-white.png');
}

/* ============================================================
 * Scroll-reveal (класи додає assets/js/reveal.js; без JS усе видиме)
 * ============================================================ */
.sh-reveal {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity .55s ease, transform .55s cubic-bezier(.22, .61, .36, 1);
	will-change: opacity, transform;
}
.sh-reveal.is-in {
	opacity: 1;
	transform: none;
	will-change: auto;
}
@media (prefers-reduced-motion: reduce) {
	.sh-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* ============================================================
 * Smile Hunter promo banner (custom, rendered via wp_body_open)
 * ============================================================ */
/* Прибрати зайвий відступ від Woodmart header banner (ми його вимкнули в
   functions.php; body-клас header-banner-enabled інакше додає margin-top:60px). */
body.header-banner-enabled .website-wrapper,
.website-wrapper { margin-top: 0 !important; }
.header-banner { display: none !important; } /* страховка, якщо опція знову увімкнеться */

/* ============================================================
 * WooCommerce notices — глобальний брендовий стиль (усі сторінки).
 * checkout.css стилізує лише .sh-checkout-нотиси; верхній
 * .woocommerce-notices-wrapper рендериться ПОЗА ним → був дефолтний
 * (woodmart) вигляд. Тут — єдиний брендовий стиль для cart/checkout/
 * account/shop і будь-яких глобальних нотисів.
 * ============================================================ */
.woocommerce-notices-wrapper .woocommerce-error,
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce > .woocommerce-error,
.woocommerce > .woocommerce-message,
.woocommerce > .woocommerce-info,
ul.woocommerce-error,
.woocommerce-message,
.woocommerce-info {
	display: block !important;
	background: var(--sh-floral) !important;
	border: 1px solid var(--sh-timber) !important;
	border-radius: 14px !important;
	padding: 14px 18px !important;
	margin: 0 0 16px !important;
	font-size: 13px !important;
	line-height: 1.45 !important;
	color: var(--sh-ink) !important;
	list-style: none !important;
	box-shadow: none !important;
	font-weight: 400 !important;
}
/* тип-специфічна тонована картка (без бутстрап-бару зліва; висока специфічність —
 * щоб перебити базовий блок вище). семантику несе фон+рамка+emoji-іконка. */
body .woocommerce-notices-wrapper ul.woocommerce-error,
body .woocommerce > ul.woocommerce-error,
body ul.woocommerce-error { background: #F8ECE9 !important; border-color: #D9A6A0 !important; color: var(--sh-ink) !important; }
body .woocommerce-notices-wrapper .woocommerce-message,
body .woocommerce > .woocommerce-message,
body .woocommerce-message { background: var(--sh-ash-soft) !important; border-color: var(--sh-ash) !important; }
body .woocommerce-notices-wrapper .woocommerce-info,
body .woocommerce > .woocommerce-info,
body .woocommerce-info { background: #F6EFDD !important; border-color: var(--sh-lion) !important; }
.woocommerce-error li,
.woocommerce-message li,
.woocommerce-info li { margin: 0 !important; padding: 0 !important; list-style: none !important; }
/* прибрати дефолтну WC/woodmart ::before-іконку (висока специфічність) */
html body .woocommerce-error::before,
html body .woocommerce-message::before,
html body .woocommerce-info::before,
html body .woocommerce-notices-wrapper .woocommerce-error::before,
html body .woocommerce-notices-wrapper .woocommerce-message::before,
html body .woocommerce-notices-wrapper .woocommerce-info::before { display: none !important; content: none !important; }
/* кнопки-лінки всередині нотисів (напр. «переглянути кошик») — у бренд */
.woocommerce-message .button,
.woocommerce-error .button,
.woocommerce-info .button {
	float: none !important;
	margin: 8px 0 0 !important;
	padding: 8px 16px !important;
	border-radius: 999px !important;
	background: var(--sh-ebony) !important;
	color: var(--sh-floral) !important;
	font-size: 12px !important;
	box-shadow: none !important;
}

.sh-promo-bar {
	background: var(--sh-ebony);
	color: var(--sh-floral);
	text-align: center;
	padding: 7px 16px;
	font-size: 12px;
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: 0.01em;
}
.sh-promo-bar .sh-promo-inner {
	max-width: 1400px;
	margin: 0 auto;
}
.sh-promo-bar strong { font-weight: 700; }
.sh-promo-bar a {
	color: var(--sh-floral) !important;
	text-decoration: underline;
}
.sh-promo-bar a:hover {
	/* лишаємо floral (ash давав 2.9:1 на ebony) + густіше підкреслення як аффорданс */
	color: var(--sh-floral) !important;
	text-decoration-thickness: 2px;
	text-underline-offset: 2px;
}
.sh-promo-bar .sh-promo-sep { opacity: .6; padding: 0 4px; }
@media (max-width: 600px) {
	.sh-promo-bar { font-size: 11px; padding: 7px 12px; }
	/* Крапка лишається — візуально розділяє "доставка від 1000 грн" і
	 * "у вас є X smile-бонусів". Без неї на телефоні ці два повідомлення
	 * зливаються в один рядок без візуальної ієрархії. */
	.sh-promo-bar .sh-promo-sep {
		display: inline;
		padding: 0 6px;
	}
}

/* ============================================================
 * Page background — Floral everywhere (override Woodmart wrappers)
 *
 * Woodmart parent style.css ставить:
 *   :root { --wd-main-bgcolor: #FFF }
 *   .website-wrapper { background: var(--wd-main-bgcolor) }
 *   .main-page-wrapper { background: var(--wd-main-bgcolor) }
 * Це робить content area білим попри наш Floral body. Перебиваємо.
 * ============================================================ */
:root {
	--wd-main-bgcolor: #FEFAF1 !important;
}
body,
.website-wrapper,
.main-page-wrapper,
.content-layout-wrapper,
.site-content,
.content-area,
#main,
#primary,
body.home,
body.page-template-default,
body.page,
body.single-product,
body.archive,
body.woocommerce-page,
body.woocommerce-cart,
body.woocommerce-checkout,
body.woocommerce-account {
	background-color: var(--sh-floral) !important;
}

/* ============================================================
 * Sticky footer fix + override user's flex CSS that broke layout
 *
 * Problem 1: justify-content: space-between in user's custom CSS pushes
 *   children apart, creating empty space between content and footer.
 * Problem 2: overflow: hidden in user's CSS clips child sections that use
 *   the 100vw trick (`margin-left: calc(50% - 50vw)`).
 *
 * Fix: proper sticky footer (flex-start + flex-grow on middle), and
 *   overflow: visible so 100vw sections render correctly.
 * ============================================================ */
/* Sticky footer на body level — після DOM-move (functions.php → wp_footer JS)
 * footer стає прямим child body. body тут flex-column, content grow'ить, footer
 * автоматично притискається до низу viewport (sticky). */
html, body {
	min-height: 100vh;
}
body {
	display: flex !important;
	flex-direction: column !important;
	min-height: 100vh !important;
}
body > .website-wrapper {
	flex: 1 1 auto !important;
	display: flex !important;
	flex-direction: column !important;
	overflow: visible !important;
	height: auto !important;
}
body > .website-wrapper > .main-page-wrapper {
	flex: 1 1 auto !important;
}
/* Footer (після DOM-move) — прямий child body, не grow, не shrink. */
body > .sh-footer {
	flex: 0 0 auto !important;
}

/* AGRESSIVE GLOBAL zero-out для .main-page-wrapper.
 * Woodmart parent style-elementor.css:5886 ставить:
 *   .main-page-wrapper { margin-top: -40px; padding-top: 40px; min-height: 50vh }
 * Це pull'ить контент догори ПОВЕРХ нашого header (бо header position:relative,
 * без z-index не пробивається). Як результат — на cart/checkout сторінках
 * header взагалі не видно.
 *
 * Скидаємо margin-top: 0 ГЛОБАЛЬНО на всіх сторінках. min-height і padding теж
 * нульові — щоб не плодити phantom space до footer.
 */
html body .main-page-wrapper {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	min-height: 0 !important;
}
body.home .sh-front,
body.page-id-896 .sh-front {
	margin-bottom: 0 !important;
	padding-bottom: 0 !important;
}
/* AGRESSIVE zero-out усіх wrappers на home — там Woodmart parent додає
 * 40px margin-bottom на .site-content, padding на .row, container etc.
 * Це і є той самий "10-15px" gap між контентом і footer. */
body.home .site-content,
body.page-id-896 .site-content,
body.home .content-area,
body.page-id-896 .content-area,
body.home .post-wrap,
body.page-id-896 .post-wrap,
body.home .post-wrapper,
body.page-id-896 .post-wrapper,
body.home #main,
body.page-id-896 #main,
body.home #primary,
body.page-id-896 #primary,
body.home .container,
body.page-id-896 .container,
body.home .row,
body.page-id-896 .row,
body.home .row > div,
body.page-id-896 .row > div {
	margin-bottom: 0 !important;
	padding-bottom: 0 !important;
	border-bottom: 0 !important;
}

/* На home — footer "виплигає" нагору на 2px і повну ширину viewport, щоб
 * накрити будь-який залишковий gap від parent wrappers. */
body.home .sh-footer,
body.page-id-896 .sh-footer {
	margin-top: -2px !important;
}

/* ============================================================
 * HEADER overrides (Woodmart Header Builder)
 * ============================================================ */

/* promo bar (top bar) — Ebony with Floral text, compact height */
.whb-header .whb-top-bar,
.whb-header .whb-top-bar > .whb-row,
.whb-header .whb-top-bar .whb-column,
.whb-header .whb-top-bar-inner,
.whb-top-bar.whb-text-element,
.whb-top-bar.whb-flex-row {
	background-color: var(--sh-ebony) !important;
	color: var(--sh-floral) !important;
	border: 0 !important;
	min-height: 0 !important;
	height: auto !important;
}
.whb-header .whb-top-bar > .whb-row {
	padding-top: 6px !important;
	padding-bottom: 6px !important;
	min-height: 0 !important;
}
.whb-header .whb-top-bar .whb-column {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	min-height: 0 !important;
}
.whb-header .whb-top-bar,
.whb-header .whb-top-bar *,
.whb-header .whb-top-bar .info-box-content,
.whb-header .whb-top-bar p,
.whb-header .whb-top-bar a,
.whb-header .whb-top-bar .text-block,
.whb-header .whb-top-bar .text-block *,
.whb-header .whb-top-bar .html-block,
.whb-header .whb-top-bar .html-block * {
	color: var(--sh-floral) !important;
	font-size: 12px !important;
	font-weight: 500 !important;
	line-height: 1.4 !important;
}
.whb-header .whb-top-bar strong,
.whb-header .whb-top-bar b {
	font-weight: 700 !important;
}

/* main header — Floral bg, thin bottom border */
.whb-header,
.whb-main-header,
.whb-main-header > .whb-row,
.whb-main-header-inner,
.whb-mobile-header {
	background-color: var(--sh-floral) !important;
	box-shadow: none !important;
}

/* === Приховуємо Woodmart's shipping progress bar глобально ===
 * У нас своя реалізація (на cart, checkout) і робить це акуратніше.
 * Woodmart дублює "додайте товарів до кошика ще на X грн для безкоштовної доставки".
 */
.wd-shipping-progress-bar,
.wd-free-progress-bar,
.shipping-progress-bar-wrapper {
	display: none !important;
}

/* === ОДНА тонка лінія під ВСІМ хедером === */
/* Прибираємо борри з ВСІХ вкладених контейнерів хедера */
html body .whb-header,
html body .whb-top-bar,
html body .whb-main-header,
html body .whb-main-header > .whb-row,
html body .whb-main-header-inner,
html body .whb-main-header-inner > .whb-row,
html body .whb-mobile-header,
html body .whb-row,
html body .whb-col-left,
html body .whb-col-center,
html body .whb-col-right,
html body .wd-header-nav-side {
	border-bottom: 0 !important;
	border-top: 0 !important;
	box-shadow: none !important;
}
/* Та одну лінію залишаємо тільки на найбільш зовнішньому контейнері */
html body .whb-header {
	border-bottom: 1px solid var(--sh-timber) !important;
	/* Прибираємо 40px margin-bottom — лого "стикалось" з контентом нижче.
	 * Woodmart parent (style.css:4549) дає .whb-header { margin-bottom: 40px }. */
	margin-bottom: 0 !important;
}
/* Прибираємо ::before / ::after декоративні смуги які Woodmart любить */
.whb-header::before,
.whb-header::after,
.whb-main-header::before,
.whb-main-header::after,
.whb-top-bar::before,
.whb-top-bar::after {
	display: none !important;
	content: none !important;
	background: none !important;
	border: 0 !important;
}

/* main header full-width row — no horizontal padding */
.whb-main-header > .whb-row,
.whb-main-header-inner > .whb-row,
.whb-top-bar > .whb-row {
	max-width: 100% !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
}
.whb-main-header .whb-col-left { padding-left: 0 !important; }
.whb-main-header .whb-col-right { padding-right: 0 !important; }

/* main header layout: nav LEFT · logo CENTER · tools RIGHT */
@media (min-width: 1024px) {
	.whb-main-header > .whb-row {
		display: flex !important;
		align-items: center !important;
	}
	.whb-main-header .whb-col-left {
		order: 1 !important;
		flex: 1 1 0 !important;
		justify-content: flex-start !important;
		text-align: left !important;
		padding-left: 0 !important;
	}
	.whb-main-header .whb-col-center {
		order: 2 !important;
		flex: 0 0 auto !important;
		justify-content: center !important;
		text-align: center !important;
	}
	.whb-main-header .whb-col-right {
		order: 3 !important;
		flex: 1 1 0 !important;
		justify-content: flex-end !important;
		text-align: right !important;
		padding-right: 0 !important;
	}
	/* nav menu wrapper — auto width, no text-right, prevent column stretching */
	.whb-main-header .whb-col-left .wd-header-nav,
	.whb-main-header .whb-col-left .wd-header-main-nav,
	.whb-main-header .whb-col-left .wd-header-nav.text-right,
	.whb-main-header .whb-col-left .wd-design-1 {
		width: auto !important;
		max-width: none !important;
		text-align: left !important;
		margin-left: 0 !important;
		padding-left: 0 !important;
		flex: 0 0 auto !important;
		justify-content: flex-start !important;
	}
	.whb-main-header .whb-col-left .wd-nav-main,
	.whb-main-header .whb-col-left ul.menu {
		margin-left: 0 !important;
		padding-left: 0 !important;
		justify-content: flex-start !important;
	}
	.whb-main-header .whb-col-left .wd-nav-main > li:first-child,
	.whb-main-header .whb-col-left ul.menu > li:first-child {
		margin-left: 0 !important;
		padding-left: 0 !important;
	}
	/* tools (search/account/cart icons) — make sure they're visible */
	.whb-main-header .whb-col-right .wd-tools-element,
	.whb-main-header .whb-col-right .wd-header-search,
	.whb-main-header .whb-col-right .wd-header-my-account,
	.whb-main-header .whb-col-right .wd-header-cart {
		display: inline-flex !important;
		visibility: visible !important;
		opacity: 1 !important;
	}
}

/* promo bar (top bar) — force visible even at custom heights */
.whb-header .whb-top-bar {
	display: flex !important;
	visibility: visible !important;
	opacity: 1 !important;
}
.whb-header .whb-top-bar > .whb-row {
	min-height: 36px !important;
}

/* navigation links — DEFAULT state
 * ВАЖЛИВО про NO-SHIFT HOVER:
 * Раніше hover змінював font-weight 500 → 700, через що ширина тексту
 * збільшувалась на кілька пікселів і пункти меню "скакали". Тепер імітуємо
 * жирність через text-shadow (без зміни font-weight), бо stroke-шар поверх
 * букв робить їх візуально товстішими, але не змінює фактичну ширину.
 *
 * Альтернатива — preallocate ширину через ::after { content: attr(data-text);
 * font-weight: 700; visibility: hidden } — але це вимагає атрибут data-text,
 * якого Woodmart не генерує.
 */
.whb-header .wd-nav-main > li > a,
.whb-header .wd-nav > li > a,
.whb-header .menu-item > a,
.menu-mobile .menu-item > a {
	color: var(--sh-ink) !important;
	font-weight: 500 !important;
	font-size: 14px !important;
	letter-spacing: 0.01em;
	text-decoration: none !important;
	box-shadow: none !important;
	text-shadow: 0 0 0 transparent;
	transition: text-shadow .15s ease, color .15s ease;
}
/* HOVER — імітуємо жирність через text-shadow stroke, БЕЗ зміни font-weight */
html body .whb-header .wd-nav-main > li:hover > a,
html body .whb-header .wd-nav-main > li > a:hover,
html body .whb-header .wd-nav > li:hover > a,
html body .whb-header .menu-item:hover > a,
html body .whb-header .menu-item > a:hover,
html body .menu-mobile .menu-item:hover > a,
html body .menu-mobile .menu-item > a:hover {
	color: var(--sh-ink) !important;
	font-weight: 500 !important;
	text-shadow: 0.4px 0 0 currentColor, -0.4px 0 0 currentColor;
	background: transparent !important;
}
/* ACTIVE — поточна сторінка: те саме (stroke shadow, font-weight 500) */
html body .whb-header .wd-nav-main > li.current-menu-item > a,
html body .whb-header .wd-nav-main > li.current-menu-parent > a,
html body .whb-header .wd-nav-main > li.current-menu-ancestor > a,
html body .whb-header .wd-nav-main > li.current_page_item > a,
html body .whb-header .menu-item.current-menu-item > a,
html body .whb-header .menu-item.current-menu-parent > a,
html body .whb-header .menu-item.current-menu-ancestor > a,
html body .menu-mobile .menu-item.current-menu-item > a {
	color: var(--sh-ink) !important;
	font-weight: 500 !important;
	text-shadow: 0.4px 0 0 currentColor, -0.4px 0 0 currentColor;
}

/* === Woodmart Header Builder inline-стилі ===
 * Woodmart рендерить inline <style> з правилом:
 *   .wd-offsets-calculated .menu-item .nav-link-text { color: #676f60; }
 * Це таргетить дочірній <span class="nav-link-text"> всередині <a>, тому
 * наш color на <a> інхеритом не діє. Перебиваємо безпосередньо на span. */
html body .whb-header .menu-item .nav-link-text,
html body .wd-offsets-calculated .whb-header .menu-item .nav-link-text {
	color: var(--sh-ink) !important;
	text-shadow: 0 0 0 transparent;
	transition: text-shadow .15s ease;
}
/* hover на .nav-link-text — той самий stroke shadow trick */
html body .whb-header .menu-item:hover .nav-link-text,
html body .whb-header .menu-item > a:hover .nav-link-text,
html body .wd-offsets-calculated .whb-header .menu-item:hover .nav-link-text,
html body .wd-offsets-calculated .whb-header .menu-item > a:hover .nav-link-text {
	color: var(--sh-ink) !important;
	font-weight: 500 !important;
	text-shadow: 0.4px 0 0 currentColor, -0.4px 0 0 currentColor;
}
/* active page на .nav-link-text */
html body .whb-header .menu-item.current-menu-item .nav-link-text,
html body .whb-header .menu-item.current-menu-parent .nav-link-text,
html body .whb-header .menu-item.current-menu-ancestor .nav-link-text,
html body .wd-offsets-calculated .whb-header .menu-item.current-menu-item .nav-link-text,
html body .wd-offsets-calculated .whb-header .menu-item.current-menu-parent .nav-link-text,
html body .wd-offsets-calculated .whb-header .menu-item.current-menu-ancestor .nav-link-text {
	color: var(--sh-ink) !important;
	font-weight: 500 !important;
	text-shadow: 0.4px 0 0 currentColor, -0.4px 0 0 currentColor;
}
/* Прибрати підкреслення / тіні / лінії, які Woodmart parent додає під посиланнями меню */
.whb-header .wd-nav-main > li > a::before,
.whb-header .wd-nav-main > li > a::after,
.whb-header .menu-item > a::before,
.whb-header .menu-item > a::after {
	display: none !important;
	content: none !important;
	background: none !important;
}

/* main header — fixed height 70px */
.whb-main-header > .whb-row,
.whb-main-header-inner > .whb-row,
.whb-sticked .whb-main-header > .whb-row {
	min-height: 70px !important;
}

/* tools icons (search, account, cart) — force show */
.whb-header .wd-tools-element,
.whb-header .wd-tools-element > a,
.whb-header .wd-header-search,
.whb-header .wd-header-my-account,
.whb-header .wd-header-cart,
.whb-header .wd-header-mini-cart,
.whb-header [class*="wd-tools-"] {
	display: inline-flex !important;
	visibility: visible !important;
	opacity: 1 !important;
}
.whb-header .wd-tools-element,
.whb-header .wd-tools-icon,
.whb-header .wd-tools-icon::before,
.whb-header .wd-tools-icon::after {
	color: var(--sh-ink) !important;
}

/* Replace Woodmart icon-font glyphs with inline SVG backgrounds.
 * Reason: woodmart-font.woff loads inconsistently in our build, so icons
 * render as empty squares. SVG backgrounds always work regardless of fonts. */
.whb-header .wd-header-search .wd-tools-icon,
.whb-header .wd-header-my-account .wd-tools-icon,
.whb-header .wd-header-cart .wd-tools-icon,
.whb-header .wd-header-wishlist .wd-tools-icon,
.whb-header .wd-header-mobile-nav .wd-tools-icon,
.whb-header .wd-tools-element.wd-event-hover .wd-tools-icon,
.whb-header .wd-burger-icon,
.whb-header .wd-burger-icon::before,
.whb-header .wd-burger-icon::after,
.whb-header .wd-header-burger .wd-tools-icon {
	font-size: 0 !important; /* hide any remaining text */
	width: 22px !important;
	height: 22px !important;
	display: inline-block !important;
	background-repeat: no-repeat !important;
	background-position: center !important;
	background-size: 22px 22px !important;
}
.whb-header .wd-header-search .wd-tools-icon::before,
.whb-header .wd-header-search .wd-tools-icon::after,
.whb-header .wd-header-my-account .wd-tools-icon::before,
.whb-header .wd-header-my-account .wd-tools-icon::after,
.whb-header .wd-header-cart .wd-tools-icon::before,
.whb-header .wd-header-cart .wd-tools-icon::after,
.whb-header .wd-header-wishlist .wd-tools-icon::before,
.whb-header .wd-header-wishlist .wd-tools-icon::after,
.whb-header .wd-header-mobile-nav .wd-tools-icon::before,
.whb-header .wd-header-mobile-nav .wd-tools-icon::after,
.whb-header .wd-burger-icon::before,
.whb-header .wd-burger-icon::after,
.whb-header .wd-header-burger .wd-tools-icon::before,
.whb-header .wd-header-burger .wd-tools-icon::after {
	content: none !important; /* remove parent's font glyphs */
}
.whb-header .wd-header-search .wd-tools-icon {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231A1A1A' stroke-width='1.7'><circle cx='11' cy='11' r='7'/><path d='m20 20-3.5-3.5'/></svg>") !important;
}
.whb-header .wd-header-my-account .wd-tools-icon {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231A1A1A' stroke-width='1.7'><circle cx='12' cy='8' r='4'/><path d='M4 20c1.5-4 5-6 8-6s6.5 2 8 6'/></svg>") !important;
}
.whb-header .wd-header-cart .wd-tools-icon {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231A1A1A' stroke-width='1.7'><path d='M3 6h18l-2 12H5L3 6zm5 0V4a4 4 0 0 1 8 0v2'/></svg>") !important;
}
/* BURGER (mobile) — три горизонтальні лінії */
.whb-header .wd-header-mobile-nav .wd-tools-icon,
.whb-header .wd-burger-icon,
.whb-header .wd-header-burger .wd-tools-icon {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231A1A1A' stroke-width='1.9' stroke-linecap='round'><path d='M4 7h16M4 12h16M4 17h16'/></svg>") !important;
}

/* ===== Mobile header tweaks =====
 * 1. Логотип по центру
 * 2. WP admin-bar (логінений користувач) перекриває mobile nav / search panel —
 *    зсуваємо панель на 46px (mobile admin bar height).
 */
/* ============================================================
 * MOBILE HEADER — full rebuild
 * ============================================================
 * Структура:
 *   .whb-mobile-header
 *     .whb-row (flex container)
 *       .whb-col-left   — burger
 *       .whb-col-center — logo
 *       .whb-col-right  — search/account/cart
 *
 * Принципи:
 *   1. Row min-height: 56px (touch-friendly, компактний — не 70px)
 *   2. Усі 3 col центровані по vertical (align-items: center)
 *   3. Logo — img height 32px з natural aspect-ratio (ніяких min-height, що стискає)
 *   4. Side cols фіксованої ширини щоб center був справжній viewport center
 */
@media (max-width: 1024px) {
	.whb-mobile-header,
	.whb-mobile-header > .whb-row,
	.whb-mobile-header-inner,
	.whb-mobile-header-inner > .whb-row {
		min-height: 56px !important;
		max-height: 56px !important;
		height: 56px !important;
	}
	/* Grid 3-col: auto 1fr auto — side cols тільки за контентом, center займає
	 * усю решту простору. Це гарантує що центр буде ШИРОКИЙ, а лого не
	 * стискатиметься. Раніше Woodmart flex розподіляв equal 1/3 → лого був
	 * у вузькій колонці і виглядав сплющеним.
	 */
	.whb-mobile-header > .whb-row,
	.whb-mobile-header-inner > .whb-row {
		display: grid !important;
		grid-template-columns: auto 1fr auto !important;
		align-items: center !important;
		padding: 0 12px !important;
		gap: 12px !important;
	}
	.whb-mobile-header .whb-col-left,
	.whb-mobile-header .whb-col-right {
		display: flex !important;
		align-items: center !important;
		width: auto !important;
		min-width: 0 !important;
		max-width: none !important;
		flex: 0 0 auto !important;
	}
	.whb-mobile-header .whb-col-left { justify-content: flex-start !important; }
	.whb-mobile-header .whb-col-right {
		justify-content: flex-end !important;
		gap: 12px !important;
	}
	.whb-mobile-header .whb-col-center {
		display: flex !important;
		align-items: center !important;
		justify-content: center !important;
		min-width: 0 !important;
		max-width: none !important;
		width: 100% !important;
		text-align: center !important;
	}
	.whb-mobile-header .site-logo,
	.whb-mobile-header .site-logo a {
		display: inline-flex !important;
		align-items: center !important;
		justify-content: center !important;
		line-height: 1 !important;
		margin: 0 !important;
	}
	/* Логотип — KEY FIX:
	 *   - height auto + max-height 32px → natural aspect-ratio тримається
	 *   - НЕ ставимо min-height (це стискало img коли natural wider за max-width)
	 *   - max-width 180px → не виходить за межі center col на вузьких screen
	 */
	.whb-mobile-header .site-logo img {
		display: block !important;
		height: auto !important;
		max-height: 32px !important;
		width: auto !important;
		max-width: 180px !important;
		object-fit: contain !important;
		min-height: 0 !important;
		min-width: 0 !important;
	}
	/* Side icons — однаковий розмір 22×22, без зайвих відступів */
	.whb-mobile-header .wd-tools-icon,
	.whb-mobile-header .wd-burger-icon,
	.whb-mobile-header .wd-header-mobile-nav .wd-tools-icon {
		width: 22px !important;
		height: 22px !important;
		background-size: 22px 22px !important;
	}
}

/* ===== Mobile nav drawer (бургер) — брендова стилізація =====
 * Woodmart рендерить .wd-mobile-nav з default стилями. Перебиваємо search input,
 * кнопку search submit і items під наш бренд.
 */
.wd-mobile-nav,
.wd-side-hidden,
.wd-mobile-nav-content,
.wd-side-hidden-content {
	background: var(--sh-floral) !important;
}
/* Search form у бургер drawer та popup-search на desktop —
 * один input з лупою-іконкою ВСЕРЕДИНІ (через background-image),
 * без окремої кнопки submit. Це чистіший UI: користувач починає
 * вводити → autocomplete з'являється під input. */
.wd-mobile-nav .wd-search-form,
.wd-side-hidden .wd-search-form,
.wd-mobile-nav .searchform,
.wd-side-hidden .searchform,
.wd-popup-search .wd-search-form,
.wd-popup-search .searchform,
body.elementor-page .wd-popup-search .wd-search-form {
	padding: 14px 16px !important;
	margin: 0 !important;
	background: var(--sh-floral) !important;
	display: block !important;
	position: relative !important;
}

.wd-mobile-nav .wd-search-form input[type="text"],
.wd-mobile-nav .wd-search-form input[type="search"],
.wd-side-hidden input[type="text"],
.wd-side-hidden input[type="search"],
.wd-mobile-nav .searchform input.s,
.wd-mobile-nav .searchform input[name="s"],
.wd-popup-search input[type="text"],
.wd-popup-search input[type="search"],
.wd-popup-search .searchform input.s,
.wd-popup-search .searchform input[name="s"],
.wd-popup-search input.wd-search-form-input {
	display: block !important;
	width: 100% !important;
	border: 1.5px solid var(--sh-timber) !important;
	background: white url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B6B6B' stroke-width='1.7'><circle cx='11' cy='11' r='7'/><path d='m20 20-3.5-3.5'/></svg>") no-repeat !important;
	background-position: 16px center !important;
	background-size: 18px 18px !important;
	padding: 13px 18px 13px 46px !important;          /* left padding під іконку */
	border-radius: 999px !important;
	font-size: 14px !important;
	color: var(--sh-ink) !important;
	outline: none !important;
	box-shadow: none !important;
	font-family: 'Montserrat', sans-serif !important;
	font-weight: 500 !important;
	text-transform: lowercase !important;
	min-width: 0 !important;
}
.wd-mobile-nav .wd-search-form input:focus,
.wd-side-hidden input:focus,
.wd-popup-search input:focus {
	border-color: var(--sh-ebony) !important;
}
/* Placeholder — lowercase і темно-сірий */
.wd-mobile-nav .wd-search-form input::placeholder,
.wd-side-hidden input::placeholder,
.wd-popup-search input::placeholder {
	color: #6B6B6B !important;
	opacity: 1 !important;
	text-transform: lowercase !important;
	font-weight: 400 !important;
}

/* Окрема submit-кнопка не потрібна — пошук autocomplete-driven.
 * Ховаємо повністю щоб не дублювала лупу. */
.wd-mobile-nav .wd-search-form button,
.wd-mobile-nav .wd-search-form input[type="submit"],
.wd-side-hidden .wd-search-form button,
.wd-side-hidden .searchform button,
.wd-side-hidden .searchform input[type="submit"],
.wd-popup-search button[type="submit"],
.wd-popup-search .searchform button,
.wd-popup-search input[type="submit"],
.wd-search-icon-submit {
	display: none !important;
}
.wd-mobile-nav .wd-search-form button .btn-text,
.wd-mobile-nav .wd-search-form button span,
.wd-side-hidden .wd-search-form button span,
.wd-side-hidden .searchform .screen-reader-text {
	display: none !important;
}

/* Dropdown с результатами пошуку — наш стиль */
.wd-popup-search .wd-dropdown-results,
.wd-mobile-nav .wd-dropdown-results,
.wd-side-hidden .wd-dropdown-results,
.wd-search-results {
	background: white !important;
	border: 1.5px solid var(--sh-timber) !important;
	border-radius: 18px !important;
	margin-top: 8px !important;
	box-shadow: 0 8px 24px rgba(26, 26, 26, .06) !important;
	padding: 8px !important;
}
.wd-search-results .product-image-link,
.wd-search-results .product-element-top {
	border-radius: 12px;
}
.wd-search-results .post-title,
.wd-search-results .product-title {
	font-size: 14px !important;
	font-weight: 600 !important;
	color: var(--sh-ink) !important;
}

/* Підказка "почніть вводити текст..." */
.wd-popup-search .wd-empty-search,
.wd-popup-search .wd-search-cats-empty,
.wd-side-hidden .wd-empty-search {
	color: var(--sh-muted) !important;
	font-size: 13px !important;
	padding: 14px 18px !important;
	text-transform: lowercase !important;
}

/* Mobile nav menu items — typography і відступи */
.wd-mobile-nav ul.menu li,
.wd-side-hidden ul.menu li,
.menu-mobile li {
	font-family: 'Montserrat', sans-serif !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	text-transform: lowercase !important;
}
.wd-mobile-nav ul.menu a,
.wd-side-hidden ul.menu a,
.menu-mobile a {
	color: var(--sh-ink) !important;
	padding: 14px 20px !important;
	border-bottom: 1px solid var(--sh-line) !important;
}
.wd-mobile-nav ul.menu a:hover,
.wd-side-hidden ul.menu a:hover {
	background: var(--sh-ash-soft) !important;
}

/* WP admin bar offset для відкритого mobile nav drawer / search dropdown.
 * Без цього перші пункти меню чи search-input ховаються під .wpadminbar. */
body.admin-bar .wd-mobile-nav,
body.admin-bar .wd-side-hidden,
body.admin-bar .whb-search-form,
body.admin-bar .wd-search-full-screen,
body.admin-bar .wd-popup-search,
body.admin-bar .menu-mobile {
	padding-top: 46px !important;
}
@media (min-width: 783px) {
	body.admin-bar .wd-mobile-nav,
	body.admin-bar .wd-side-hidden,
	body.admin-bar .whb-search-form,
	body.admin-bar .wd-search-full-screen,
	body.admin-bar .wd-popup-search,
	body.admin-bar .menu-mobile {
		padding-top: 32px !important;
	}
}

/* hide text labels next to icons (мій аккаунт / 0 ₴ / etc.) — leave icons only */
.whb-header .wd-tools-element .wd-tools-text,
.whb-header .wd-tools-element .wd-tools-info {
	display: none !important;
}

/* SVG fallback styling if some icons are SVG-based */
.whb-header .wd-tools-icon svg {
	display: inline-block !important;
	width: 22px !important;
	height: 22px !important;
	fill: var(--sh-ink) !important;
	stroke: currentColor !important;
}
.whb-header .wd-tools-icon::before {
	font-size: 22px !important;
	line-height: 1 !important;
}

/* cart bubble (count) — Lion bg, Floral number text, visible */
.whb-header .wd-cart-number,
.whb-header [class*="cart-number"],
.whb-header .wd-tools-count,
.whb-header .wd-header-cart .wd-tools-element__count,
.whb-header .wd-header-cart .count {
	background-color: var(--sh-lion) !important;
	color: var(--sh-ink) !important; /* floral на lion = 2.96:1; ink = 5.5:1 */
	font-size: 10px !important;
	font-weight: 700 !important;
	visibility: visible !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-width: 18px !important;
	height: 18px !important;
	padding: 0 4px !important;
	border-radius: 999px !important;
	line-height: 1 !important;
	font-family: 'Montserrat', sans-serif !important;
}

/* mobile menu drawer */
.wd-mobile-menu,
.menu-mobile,
.wd-side-hidden,
.menu-opened .wd-side-hidden {
	background-color: var(--sh-floral) !important;
}
.menu-mobile .menu-item a,
.wd-side-hidden a {
	color: var(--sh-ink) !important;
	text-transform: lowercase !important;
}

/* ============================================================
 * SH FOOTER — наш кастомний footer.php
 *
 * ВАЖЛИВО про "білі смуги зверху, ліворуч, праворуч":
 * Woodmart loads .website-wrapper з overflow:hidden + .main-page-wrapper з
 * margin-top: -40px + padding-top: 40px. Залежно від теми ще можуть бути
 * border-radius / inset shadow / padding-bottom — все це створює ефект "рамки"
 * навколо контенту. Footer width: 100% бере ширину БАТЬКА (.website-wrapper)
 * а не viewport, тому з боків і зверху проступає body background.
 *
 * Рішення: робимо footer "виплигнутим" з parent через 100vw trick:
 *   width: 100vw + margin-left: calc(50% - 50vw)
 * — footer тепер завжди займає повну ширину viewport незалежно від parent.
 *
 * Це ж саме покриває білі смуги зверху і знизу — компенсуємо потенційний
 * box-shadow/border parent'а через `margin-top: -1px` (нейтралізує rounding).
 * ============================================================ */
.sh-footer {
	background: var(--sh-ink);
	color: rgba(254, 250, 241, 0.7);
	padding: 40px 0 20px;
	position: relative;
	z-index: 2;
	/* 100vw trick — footer завжди на повну ширину viewport */
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	/* -1px нейтралізує піксельні rounding-gap між parent і footer */
	margin-top: -1px;
	margin-bottom: 0;
}
@media (min-width: 1024px) {
	.sh-footer { padding-top: 56px; }
}
/* Прибираємо box-shadow / border / radius з parent wrappers — інакше між
 * останньою секцією і footer'ом видно "обрамлення". */
html body .website-wrapper,
html body .main-page-wrapper,
html body .content-layout-wrapper {
	box-shadow: none !important;
	border: 0 !important;
	border-radius: 0 !important;
}
/* Нульова обгортка для main-page-wrapper в усіх напрямках, окрім контентного top */
html body .main-page-wrapper {
	padding-bottom: 0 !important;
	margin-bottom: 0 !important;
}
/* Якщо Woodmart має boxed layout — прибираємо горизонтальні margins на website-wrapper
 * (зустрічається в опції "wrapper-boxed"). */
html body.wrapper-boxed .website-wrapper,
html body .website-wrapper {
	margin-left: 0 !important;
	margin-right: 0 !important;
	max-width: none !important;
	/* clip кліпає 100vw-футер так само як hidden, але НЕ робить wrapper
	 * scroll-container'ом — інакше position: sticky всередині (ліва колонка
	 * на сторінці товару) не працює. hidden — фолбек для старих браузерів. */
	overflow-x: hidden !important;
	overflow-x: clip !important;
}

/* Safari: clip на предку змушує скрол субдерева на main thread → sticky
 * «підсумок» тремтить. На кошику горизонтальних оверфлоу-секцій немає
 * (marquee живе на головній) — знімаємо кліп точково. */
@media (min-width: 1024px) {
	body.woocommerce-cart .website-wrapper {
		overflow-x: visible !important;
	}
}
/* (на мобільному кліп лишається: там у кошику є прихований 29px-оверфлоу,
 * а sticky-колонки все одно немає — одна колонка) */
@media (min-width: 1024px) {
	.sh-footer { padding: 56px 0 28px; }
}
.sh-footer .container {
	max-width: 1400px;
	margin: 0 auto;
	padding: 0 12px; /* зрівняли з рештою сайту (12 → 20 → 40) */
}
@media (min-width: 700px)  { .sh-footer .container { padding: 0 20px; } }
@media (min-width: 1024px) { .sh-footer .container { padding: 0 40px; } }

/* newsletter band у футері (D2C lead capture) */
.sh-footer-news { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; padding: 0 0 28px; margin-bottom: 28px; border-bottom: 1px solid rgba(255,255,255,.12); }
.sh-footer-news-text { flex: 1 1 280px; }
.sh-footer-news-text h4 { font-size: 18px; font-weight: 800; margin: 0 0 4px; color: #fff; }
.sh-footer-news-text p { font-size: 13px; margin: 0; color: rgba(255,255,255,.7); }
.sh-footer-news-form { display: flex; gap: 8px; flex: 1 1 320px; max-width: 440px; }
.sh-footer-news-form input { flex: 1 1 auto; min-width: 0; padding: 12px 16px; border-radius: 999px; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.06); color: #fff; font: inherit; }
.sh-footer-news-form input::placeholder { color: rgba(255,255,255,.5); }
.sh-footer-news-form input:focus { outline: none; border-color: #fff; }
.sh-footer-news-form button { flex: 0 0 auto; padding: 12px 22px; border-radius: 999px; border: 0; background: #fff; color: var(--sh-ebony); font-size: 14px; font-weight: 700; cursor: pointer; transition: background .15s ease; }
.sh-footer-news-form button:hover { background: var(--sh-floral); }
.sh-footer-news-form button:disabled { opacity: .6; cursor: default; }
.sh-footer-news-msg { flex: 1 1 100%; font-size: 13px; margin-top: 2px; }
.sh-footer-news-msg.is-success { color: #c7e6bf; }
.sh-footer-news-msg.is-error { color: #f0b8b8; }
.sh-news-coupon {
	display: inline-block; margin-left: 4px;
	padding: 3px 12px; border-radius: 8px;
	background: rgba(255,255,255,.14); border: 1px dashed rgba(255,255,255,.55);
	color: #fff; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
	font-size: 13px; vertical-align: middle;
}

/* нещодавно переглянуті (recently-viewed.js) */
.sh-recently { padding: 40px 0; background: var(--sh-floral); }
.sh-recently-inner { max-width: 1400px; margin: 0 auto; padding: 0 16px; }
@media (min-width: 700px)  { .sh-recently-inner { padding: 0 20px; } }
@media (min-width: 1024px) { .sh-recently-inner { padding: 0 40px; } }
.sh-recently-title { font-size: 22px; font-weight: 800; letter-spacing: -0.02em; margin: 0 0 18px; color: var(--sh-ink); }
@media (min-width: 1024px) { .sh-recently-title { font-size: 28px; } }
.sh-recently-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
@media (min-width: 768px) { .sh-recently-grid { grid-template-columns: repeat(4, 1fr); gap: 20px; } }
.sh-rv-card { display: flex; flex-direction: column; }
.sh-rv-img { aspect-ratio: 3/4; border-radius: 16px; overflow: hidden; background: var(--sh-ash-soft); margin-bottom: 12px; }
.sh-rv-img img { width: 100%; height: 100%; object-fit: cover; }
.sh-rv-name { font-size: 14px; font-weight: 600; line-height: 1.3; margin-bottom: 2px; }
.sh-rv-price { font-size: 14px; font-weight: 700; color: var(--sh-ink); margin-bottom: 10px; }
.sh-rv-price del, .sh-rv-price del .amount { color: var(--sh-muted); font-weight: 600; text-decoration: line-through; margin-right: 6px; }
.sh-rv-price ins, .sh-rv-price ins .amount { text-decoration: none; color: var(--sh-ink); font-weight: 700; }

/* Footer columns — повний reset padding/margin щоб усе вирівнялось з brand col.
 * Без цього ul має browser-default padding-left 40px і пункти меню "відсуваються"
 * правіше за brand-блок. */
html body .sh-footer .col,
html body .sh-footer .col ul,
html body .sh-footer .col h4 {
	padding-left: 0 !important;
	padding-right: 0 !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}
.sh-footer .top {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 28px;
	margin-bottom: 32px;
}
@media (min-width: 768px) {
	.sh-footer .top {
		grid-template-columns: 1.4fr 1fr 1fr 1fr;
		gap: 36px;
	}
}
.sh-footer .brand { grid-column: 1 / -1; }
@media (min-width: 768px) {
	.sh-footer .brand { grid-column: auto; }
}
.sh-footer .brand-logo-img {
	display: block;
	height: 36px;
	width: auto;
	margin-bottom: 14px;
}
.sh-footer .brand p {
	font-size: 12px;
	line-height: 1.55;
	max-width: 32ch;
	color: rgba(254, 250, 241, 0.7);
}
.sh-footer .col h4 {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: var(--sh-floral);
	margin-bottom: 12px;
}
.sh-footer .col ul {
	list-style: none !important;
	padding: 0 !important;
	margin: 0 !important;
}
.sh-footer .col li {
	padding: 4px 0 !important;
	margin: 0 !important;
	line-height: 1.35 !important;
	list-style: none !important;
}
.sh-footer .col li::before,
.sh-footer .col li::marker {
	display: none !important;
	content: none !important;
}
.sh-footer .col a {
	display: inline-block;
	padding: 0 !important;
	margin: 0 !important;
	font-size: 13px;
	line-height: 1.5;
	color: rgba(254, 250, 241, 0.7);
	text-decoration: none;
	transition: color .15s;
}
.sh-footer .col a:hover { color: var(--sh-floral); }
.sh-footer .bottom {
	border-top: 1px solid rgba(254, 250, 241, 0.12);
	padding-top: 20px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	font-size: 11px;
}
@media (min-width: 768px) {
	.sh-footer .bottom {
		flex-direction: row;
		justify-content: space-between;
		align-items: center;
	}
}
.sh-footer .socials { display: flex; gap: 10px; }
.sh-footer .socials a {
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: rgba(254, 250, 241, 0.08);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--sh-floral);
}
.sh-footer .socials a:hover { background: var(--sh-ebony); }
.sh-footer .socials svg { width: 14px; height: 14px; }

/* ============================================================
 * FOOTER overrides (Woodmart footer) — AGGRESSIVE
 * ============================================================ */
.footer-container,
.footer-container *,
body .footer-container,
body footer.footer-container,
.footer-container .container,
.footer-container .container-fluid,
.main-footer,
.main-footer .container,
.bottom-bar,
.bottom-bar .container,
.copyrights-wrapper,
.copyrights-wrapper .container,
body.woocommerce-page .footer-container,
body.home .footer-container,
.color-scheme-dark .footer-container,
.color-scheme-light .footer-container {
	background-color: var(--sh-ink) !important;
	border-color: rgba(254, 250, 241, 0.12) !important;
}
.footer-container,
.footer-container p,
.footer-container span,
.footer-container li,
.footer-container div,
.copyrights-wrapper,
.copyrights-wrapper p {
	color: rgba(254, 250, 241, 0.7) !important;
}
.footer-container a {
	color: rgba(254, 250, 241, 0.7) !important;
}
.footer-container a:hover {
	color: var(--sh-floral) !important;
}

/* keep footer logo image displayed (don't tint it) */
.footer-container .site-logo img,
.footer-container .brand-logo-img {
	background: transparent !important;
}

/* footer headings */
.main-footer h1, .main-footer h2, .main-footer h3,
.main-footer h4, .main-footer h5, .main-footer h6,
.main-footer .widgettitle,
.footer-container .widget-title {
	color: var(--sh-floral) !important;
	font-size: 13px !important;
	font-weight: 700 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.1em !important;
	margin-bottom: 14px !important;
}

/* footer text + links */
.main-footer,
.main-footer p,
.main-footer li,
.main-footer span,
.copyrights-wrapper,
.copyrights-wrapper p {
	color: rgba(254, 250, 241, 0.7) !important;
	font-size: 13px !important;
}
.main-footer a,
.copyrights-wrapper a {
	color: rgba(254, 250, 241, 0.7) !important;
	text-decoration: none !important;
	transition: color .15s !important;
}
.main-footer a:hover,
.copyrights-wrapper a:hover {
	color: var(--sh-floral) !important;
}

/* social icons in footer — Floral floating buttons on dark */
.footer-container .wd-social-icons > a,
.footer-container .social-icon,
.main-footer .wd-social-icons > a {
	background: rgba(254, 250, 241, 0.08) !important;
	color: var(--sh-floral) !important;
	border: 0 !important;
}
.footer-container .wd-social-icons > a:hover,
.main-footer .wd-social-icons > a:hover {
	background: var(--sh-ebony) !important;
	color: var(--sh-floral) !important;
}

/* horizontal lines in footer */
.copyrights-wrapper {
	border-top: 1px solid rgba(254, 250, 241, 0.12) !important;
}

/* ============================================================
 * Phase 2+ overrides (page-specific) will be added below
 * ============================================================ */

/* ===== Toast notification (cart add/remove confirmation) ===== */
.sh-cart-toast {
	position: fixed;
	bottom: 24px;
	left: 50%;
	transform: translateX(-50%) translateY(20px);
	background: var(--sh-ebony); /* бренд-зелений замість чорного */
	color: var(--sh-floral);
	padding: 12px 20px;
	border-radius: 999px;
	font-size: 14px;
	font-weight: 600;
	text-transform: lowercase;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
	opacity: 0;
	transition: opacity .25s ease, transform .25s ease;
	z-index: 9999;
	pointer-events: none;
	max-width: 90vw;
	text-align: center;
}
/* мобайл: липка CTA-панель PDP перекривала тост на bottom:24 */
@media (max-width: 1023px) {
	.sh-cart-toast { bottom: 100px; }
}
.sh-cart-toast.is-visible {
	opacity: 1;
	transform: translateX(-50%) translateY(0);
}

/* ============================================================
 * рухома стрічка брендів-партнерів («нам довіряють») — рух на сайті
 * ============================================================ */
.sh-marquee-section { padding: 30px 0; background: var(--sh-floral); text-align: center; overflow: hidden; }
.sh-marquee-bleed { width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); max-width: 100vw; }
.sh-marquee-eyebrow {
	font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase;
	color: var(--sh-ebony); margin-bottom: 22px;
}
.sh-marquee {
	position: relative; overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
/* тривалість підібрана під 3 копії прогону в групі (≈ та сама швидкість пікс/с) */
.sh-marquee-track { display: flex; width: max-content; animation: sh-marquee 120s linear infinite; will-change: transform; }
/* прокрутка НЕ паузиться на hover — лише сам логотип кольоровіє (нижче) */
.sh-marquee-group { display: flex; align-items: center; flex: 0 0 auto; }
.sh-marquee-item {
	display: inline-flex; align-items: center; white-space: nowrap;
	padding: 0 26px;
	font-size: 24px; font-weight: 800; letter-spacing: -0.01em;
	color: var(--sh-ink);
}
/* логотипи брендів — приглушені ч/б, кольоровіють під курсором */
.sh-marquee-logo {
	height: 28px; width: auto; max-width: 150px; object-fit: contain;
	display: block;
	opacity: .55; filter: grayscale(1);
	transition: opacity .2s ease, filter .2s ease;
}
.sh-marquee-logo:hover { opacity: 1; filter: grayscale(0); }
@media (max-width: 767px) { .sh-marquee-logo { height: 30px; max-width: 160px; } .sh-marquee-section { padding: 24px 0 34px; } }
@media (min-width: 768px) { .sh-marquee-item { padding: 0 34px; } .sh-marquee-logo { height: 34px; max-width: 180px; } }
/* безшовний цикл: трек = 2 однакові групи, зсув рівно на одну групу (−50%) */
@keyframes sh-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) {
	.sh-marquee-track { animation: none; flex-wrap: wrap; justify-content: center; row-gap: 8px; }
	.sh-marquee-group:nth-child(2) { display: none; }
}

/* ============================================================
 * про нас пишуть (press / медіа)
 * ============================================================ */
.sh-press { padding: 48px 0; background: var(--sh-floral); }
@media (min-width: 1024px) { .sh-press { padding: 72px 0; } }
.sh-press-head { text-align: center; margin-bottom: 28px; }
.sh-press-head .eyebrow {
	display: block; font-size: 11px; font-weight: 700; letter-spacing: .16em;
	text-transform: uppercase; color: var(--sh-ebony); margin-bottom: 10px;
}
.sh-press-head h2 { font-size: 28px; font-weight: 800; letter-spacing: -0.025em; margin: 0; }
@media (min-width: 1024px) { .sh-press-head h2 { font-size: 36px; } }
.sh-press-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (min-width: 768px) { .sh-press-grid { grid-template-columns: repeat(5, 1fr); gap: 16px; } }
.sh-press-card {
	position: relative; display: flex; flex-direction: column; gap: 8px;
	background: #fff; border: 1px solid var(--sh-timber); border-radius: 16px;
	padding: 20px 18px; text-decoration: none; color: var(--sh-ink);
	transition: transform .15s, box-shadow .15s, border-color .15s;
}
.sh-press-card:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgba(26,26,26,.07); border-color: var(--sh-ash); }
.sh-press-outlet { font-size: 18px; font-weight: 800; letter-spacing: -0.01em; }
.sh-press-title { font-size: 12.5px; line-height: 1.45; color: var(--sh-muted); }
.sh-press-arr { position: absolute; top: 14px; right: 14px; font-size: 14px; color: var(--sh-ebony); opacity: .6; }

/* ============================================================
 * lifestyle band («ритуал, що пасує до вашого життя») — спільний блок,
 * рендериться wmc_lifestyle_section() на головній і перед футером на інших.
 * ============================================================ */
.sh-lifestyle-band { width: 100%; background: var(--sh-floral); padding: 56px 0; }
@media (min-width: 1024px) { .sh-lifestyle-band { padding: 80px 0; } }
.sh-lifestyle-inner { max-width: 1400px; margin: 0 auto; padding: 0 16px; box-sizing: border-box; }
@media (min-width: 700px)  { .sh-lifestyle-inner { padding: 0 20px; } }
@media (min-width: 1024px) { .sh-lifestyle-inner { padding: 0 40px; } }
.sh-lifestyle-band .head { margin-bottom: 28px; max-width: 56ch; }
.sh-lifestyle-band .eyebrow { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; font-weight: 700; color: var(--sh-ebony); margin-bottom: 14px; }
.sh-lifestyle-band h2 { font-size: 28px; font-weight: 800; letter-spacing: -0.025em; line-height: 1.05; margin: 0 0 8px; }
@media (min-width: 1024px) { .sh-lifestyle-band h2 { font-size: 40px; } }
.sh-lifestyle-band .lead { font-size: 14px; color: var(--sh-muted); margin: 0; }
@media (min-width: 1024px) { .sh-lifestyle-band .lead { font-size: 16px; } }
.sh-lifestyle-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
@media (min-width: 768px) { .sh-lifestyle-grid { grid-template-columns: repeat(4, 1fr); gap: 20px; } }
.sh-lifestyle-card { display: flex; flex-direction: column; }
.sh-lifestyle-card .img-wrap { aspect-ratio: 4/5; border-radius: 18px; overflow: hidden; margin-bottom: 14px; background: var(--sh-ash-soft); }
.sh-lifestyle-card .img-wrap img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sh-lifestyle-card h3 { font-size: 17px; font-weight: 800; letter-spacing: -0.02em; margin: 0 0 6px; }
.sh-lifestyle-card p { font-size: 13px; color: var(--sh-muted); line-height: 1.5; margin: 0; }
/* нещодавно переглянуті — тіло-лінк + кнопка додавання */
.sh-rv-link { display: flex; flex-direction: column; text-decoration: none; color: var(--sh-ink); }
/* generic-колаж компонентів набору (кросел, нещодавні, будь-де) */
.sh-collage { position: absolute; inset: 0; display: grid; gap: 4px; padding: 4px; background: var(--sh-ash-soft); }
.sh-collage-2 { grid-template-columns: 1fr 1fr; }
.sh-collage-3, .sh-collage-4 { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.sh-collage-3 .sh-collage-cell:nth-child(3) { grid-column: 1 / -1; } /* 4 льодяники: банка знизу */
.sh-collage-cell { position: relative; overflow: hidden; border-radius: 10px; background: #fff; }
.sh-collage-cell img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* обгортки-контейнери — positioning context для absolute-колажу */
.sh-cart.cross-sell .pcard .img-wrap, .sh-product .pcard .img-wrap, .sh-rv-img { position: relative; }

/* ============================================================
 * hover-друге-фото в product-картках (більше «руху» на десктопі).
 * Друге фото лежить поверх першого і проявляється при наведенні —
 * як на сторінці категорій. На тач-екранах (немає hover) ховаємо.
 * Базове правило глобальне; тригери :hover — у кожному блоці.
 * ============================================================ */
.sh-hover-2nd {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
	opacity: 0; transition: opacity .45s ease;
	pointer-events: none;
}
.sh-rv-card:hover .sh-hover-2nd { opacity: 1; }
@media (hover: none) { .sh-hover-2nd { display: none; } }

/* назва + бейдж смаку в один рядок (бейдж переноситься, якщо не влазить) */
.sh-rv-namerow, .pcard-namerow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.sh-rv-namerow .sh-rv-name, .pcard-namerow .name { margin: 0; }
/* бейдж смаку (variable quick-add): «вишня», «sweet mint · 60 чищень».
   Стиль як свотчі в категоріях: біла пігулка + кольорова крапка (--dot) + назва. */
.pcard-variant, .sh-rv-variant {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 3px 10px;
	border-radius: 999px;
	border: 1px solid var(--sh-timber);
	background: #fff;
	color: var(--sh-ink);
	font-size: 11px;
	font-weight: 600;
	line-height: 1.5;
	white-space: nowrap;
}
.sh-flavor-dot {
	width: 11px; height: 11px; border-radius: 50%;
	background: var(--dot, var(--sh-timber));
	display: inline-block; flex-shrink: 0;
	border: 1px solid rgba(0, 0, 0, .06);
}
/* єдиний вигляд із кроселами — filled green */
.sh-rv-add {
	margin-top: auto; text-align: center; cursor: pointer; text-decoration: none;
	background: var(--sh-ebony); border: 1px solid var(--sh-ebony); color: var(--sh-floral);
	padding: 9px 14px; border-radius: 999px; font-size: 12px; font-weight: 700;
	transition: background .15s, color .15s, border-color .15s;
}
.sh-rv-add:hover, .sh-rv-add.added { background: var(--sh-ebony-dark); color: var(--sh-floral); border-color: var(--sh-ebony-dark); }

/* ============================================================
 * WooCommerce нотифікації (помилки/повідомлення) — у бренд-стилі, не на всю ширину
 * ============================================================ */
.woocommerce-notices-wrapper { max-width: 1100px; margin-left: auto; margin-right: auto; }
.woocommerce-error, .woocommerce-message, .woocommerce-info {
	list-style: none !important; margin: 0 auto 16px !important; padding: 14px 18px !important;
	border-radius: 14px !important; border: 1px solid var(--sh-timber); background: #fff;
	font-size: 14px; line-height: 1.5; box-shadow: none !important;
	display: flex; align-items: center; gap: 10px;
}
.woocommerce-error::before, .woocommerce-message::before, .woocommerce-info::before { display: none !important; }
/* відтінки вирівняні з блоками вище — щоб незалежно від каскаду вигляд один */
.woocommerce-error { background: #F8ECE9; border-color: #D9A6A0; color: var(--sh-ink); }
.woocommerce-message { background: var(--sh-ash-soft); border-color: var(--sh-ash); color: var(--sh-ebony-dark); }
.woocommerce-info { background: #F6EFDD; border-color: var(--sh-lion); color: var(--sh-ebony-dark); }
.woocommerce-error .button, .woocommerce-message .button, .woocommerce-info .button { margin-left: auto; }

/* ============================================================
 * Instagram-фід (головна, під «нещодавно переглянуті»)
 * ============================================================ */
.sh-instagram { padding: 48px 0; background: var(--sh-floral); }
@media (min-width: 1024px) { .sh-instagram { padding: 72px 0; } }
.sh-instagram-inner { max-width: 1400px; margin: 0 auto; padding: 0 16px; box-sizing: border-box; text-align: center; }
@media (min-width: 1024px) { .sh-instagram-inner { padding: 0 40px; } }
.sh-instagram-head { margin-bottom: 24px; }
.sh-instagram-head .eyebrow { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; font-weight: 700; color: var(--sh-ebony); display: block; margin-bottom: 8px; }
.sh-instagram-head h2 { font-size: 28px; font-weight: 800; letter-spacing: -0.025em; margin: 0; }
@media (min-width: 1024px) { .sh-instagram-head h2 { font-size: 36px; } }
.sh-instagram-head h2 a { color: var(--sh-ink); text-decoration: none; }
.sh-instagram-feed { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
@media (min-width: 768px) { .sh-instagram-feed { grid-template-columns: repeat(6, 1fr); gap: 14px; } }
/* реальна стрічка від плагіна сама керує сіткою — знімаємо наш grid */
.sh-instagram-feed--plugin { display: block; }
.sh-ig-cell { aspect-ratio: 1; border-radius: 14px; background: var(--sh-ash-soft); display: flex; align-items: center; justify-content: center; color: var(--sh-ebony); transition: background .2s; }
.sh-ig-cell:hover { background: var(--sh-ash); }
.sh-ig-cell svg { width: 30px; height: 30px; opacity: .5; }
.sh-instagram-feed img { width: 100%; height: 100%; object-fit: cover; border-radius: 14px; display: block; }
.sh-instagram-cta { display: inline-block; margin-top: 22px; font-size: 14px; font-weight: 600; color: var(--sh-ebony); text-decoration: none; border: 1px solid var(--sh-ink); padding: 11px 22px; border-radius: 999px; }
.sh-instagram-cta:hover { background: var(--sh-ebony); color: var(--sh-floral); border-color: var(--sh-ebony); }

/* ============================================================
 * LEGACY ELEMENTOR KIT SHIM
 * Elementor Kit (.elementor-kit-14) глобально стилізував кнопки і h3
 * на всьому сайті. Kit CSS більше не вантажиться (perf: Elementor знятий
 * з не-builder сторінок) — переносимо ЄДИНІ живі правила сюди, щоб
 * вигляд не змінився. Специфічність і значення збережені 1:1.
 * ============================================================ */
.elementor-kit-14 button,
.elementor-kit-14 input[type="button"],
.elementor-kit-14 input[type="submit"],
.elementor-kit-14 .elementor-button {
	background-color: #676F60;
	border-radius: 16px;
}

.elementor-kit-14 h3 {
	font-size: 17px;
}


/* мобайл: щільніші секції соц-доказів і спільних блоків */
@media (max-width: 767px) {
	.sh-press { padding: 30px 0; }
	.sh-instagram { padding: 30px 0; }
	.sh-lifestyle-band { padding: 30px 0; }
	.sh-footer { padding: 40px 0 24px; }
}


/* ============================================================
 * PROPER NOUNS — винятки з глобального lowercase (body).
 * Дані користувача і власні назви показуємо як введено:
 * імена, міста, вулиці, відділення НП, «Apple Pay» у назві оплати.
 * <address> покриває адресні блоки в акаунті, view-order і thank-you;
 * input/textarea — щоб введене ім'я не виглядало приниженим у формах.
 * ============================================================ */
address,
input,
textarea,
select,
.sh-view-order-total-row .value,
.sh-np-card address,
.sh-order-ttn,
.sh-view-order-ttn-row,
.woocommerce-customer-details address {
	text-transform: none;
}
