/* Ring Hot Water: shared utilities for the Elementor build.
   Section / widget styling lives in Elementor; this file holds only
   cross-cutting rules Elementor controls cannot express. */

:root {
	--rhw-ink: #121315;
	--rhw-paper: #fbfaf7;
	--rhw-sand: #f3f0ea;
	--rhw-stone: #e6e1d8;
	--rhw-mist: #6f6c66;
	--rhw-ember: #e8622a;
	--rhw-ember-dark: #c94f1c;
	--rhw-ember-soft: #fdeee6;
}

body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
::selection { background: var(--rhw-ember); color: #fff; }

/* Serif emphasis words inside headlines: <span class="rhw-serif">word</span> */
.rhw-serif {
	font-family: "Instrument Serif", ui-serif, Georgia, serif;
	font-style: italic;
	font-weight: 400;
	letter-spacing: -0.01em;
	padding-bottom: 0.06em; /* clear italic descenders */
}
.rhw-muted { color: rgba(255, 255, 255, 0.6); }

/* Eyebrow label: short ember rule before the text (add class rhw-eyebrow to a Heading widget) */
.rhw-eyebrow .elementor-heading-title { display: inline-flex; align-items: center; gap: 12px; }
.rhw-eyebrow .elementor-heading-title::before { content: ""; width: 24px; height: 1px; background: var(--rhw-ember); flex: none; }
.rhw-eyebrow.rhw-light .elementor-heading-title::before { background: var(--rhw-ember); }

/* Client marquee (container with class rhw-marquee > container rhw-marquee-track) */
.rhw-marquee { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 15%, #000 85%, transparent); mask-image: linear-gradient(90deg, transparent, #000 15%, #000 85%, transparent); }
.rhw-marquee-track { width: max-content !important; flex-wrap: nowrap !important; animation: rhw-marquee 40s linear infinite; }
.rhw-marquee-track > * { flex: none !important; width: auto !important; }
@keyframes rhw-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* Image zoom on hover inside link cards (class rhw-zoom on the container) */
.rhw-zoom { overflow: hidden; }
.rhw-zoom .rhw-zoom-bg, .rhw-zoom img { transition: transform 1.2s cubic-bezier(.2,.7,.2,1); }
.rhw-zoom:hover .rhw-zoom-bg, .rhw-zoom:hover img { transform: scale(1.05); }

/* Product images on sand tiles */
.rhw-multiply img { mix-blend-mode: multiply; }

/* Reviews: clamp quote length */
.rhw-clamp-5 .elementor-widget-container p,
.rhw-clamp-5 p { display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden; }

/* Hide scrollbars on horizontal rails */
.rhw-no-scrollbar { scrollbar-width: none; }
.rhw-no-scrollbar::-webkit-scrollbar { display: none; }

/* Elementor nav menu: no underline jump, pill hover on dropdown */
.elementor-nav-menu--dropdown { border-radius: 16px; overflow: hidden; }

/* Menu cart pill */
.rhw-cart .elementor-menu-cart__toggle .elementor-button { border-radius: 999px; }

@media (prefers-reduced-motion: reduce) {
	.rhw-marquee-track { animation: none; }
	.rhw-zoom .rhw-zoom-bg, .rhw-zoom img { transition: none; }
}

/* ---------- WooCommerce pages rendered by shortcodes (cart, checkout, account) ---------- */
.woocommerce .button, .woocommerce button.button, .woocommerce a.button, .woocommerce input.button,
.woocommerce #respond input#submit, .woocommerce-page .button {
	border-radius: 999px !important;
	background: var(--rhw-ink);
	color: #fff;
	font-weight: 500;
	padding: 0.85em 1.6em;
	border: 0;
	transition: background-color .3s;
}
.woocommerce .button:hover, .woocommerce button.button:hover, .woocommerce a.button:hover { background: var(--rhw-ink-soft, #2a2b2e); color: #fff; }
.woocommerce .button.alt, .woocommerce button.button.alt, .woocommerce a.button.alt,
.woocommerce #place_order, .woocommerce a.checkout-button {
	background: var(--rhw-ember) !important; color: #fff !important;
	box-shadow: 0 8px 24px -10px rgba(232, 98, 42, .7);
}
.woocommerce .button.alt:hover, .woocommerce #place_order:hover, .woocommerce a.checkout-button:hover { background: var(--rhw-ember-dark) !important; }
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection, .woocommerce-cart table.cart td.actions .coupon .input-text {
	border: 1px solid var(--rhw-stone); border-radius: 12px; background: #fff; padding: .7em .9em; min-height: 46px;
}
.woocommerce table.shop_table { border: 1px solid var(--rhw-stone); border-radius: 22px; overflow: hidden; background: #fff; border-collapse: separate; }
.woocommerce table.shop_table th, .woocommerce table.shop_table td { border-color: var(--rhw-stone); }
.woocommerce-cart .cart-collaterals .cart_totals, .woocommerce-checkout #order_review { background: var(--rhw-sand); border-radius: 22px; padding: 24px; }
.woocommerce-info, .woocommerce-message, .woocommerce-error { border-radius: 16px; border-top-color: var(--rhw-ember); background: #fff; }
.woocommerce-info::before, .woocommerce-message::before { color: var(--rhw-ember); }
.woocommerce span.onsale { background: var(--rhw-ember); border-radius: 999px; min-height: 0; min-width: 0; padding: 4px 12px; line-height: 1.6; }
.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.woocommerce-MyAccount-navigation a { display: block; padding: 10px 16px; border-radius: 999px; background: var(--rhw-sand); color: var(--rhw-ink); }
.woocommerce-MyAccount-navigation .is-active a { background: var(--rhw-ink); color: #fff; }
.woocommerce-price-suffix { font-size: 12px; color: var(--rhw-mist); font-weight: 400; }
.woocommerce .star-rating span::before { color: var(--rhw-ember); }

/* ---------- Shop archive (Elementor template) ---------- */
.rhw-shop-filters ul { list-style: none; margin: 0; padding: 0; }
.rhw-shop-filters .product-categories li { margin: 0; padding: 0; font-size: 14px; line-height: 1.4; color: var(--rhw-mist); }
.rhw-shop-filters .product-categories li a { display: inline-block; padding: 5px 0; color: var(--rhw-ink); }
.rhw-shop-filters .product-categories li a:hover, .rhw-shop-filters .product-categories .current-cat > a { color: var(--rhw-ember); }
.rhw-shop-filters .product-categories .current-cat > a { font-weight: 600; }
.rhw-shop-filters .product-categories .children { padding-left: 14px; border-left: 1px solid var(--rhw-stone); margin: 2px 0 6px; }
.rhw-shop-filters .count { font-size: 12px; color: var(--rhw-mist); }
.rhw-shop-filters .widget_price_filter .ui-slider .ui-slider-range,
.rhw-shop-filters .widget_price_filter .ui-slider .ui-slider-handle { background: var(--rhw-ember); }
.rhw-shop-filters .widget_price_filter .price_slider_wrapper .ui-widget-content { background: var(--rhw-stone); }
.rhw-shop-filters .widget_price_filter .button { padding: .6em 1.2em; font-size: 13px; }
.rhw-shop-filters .widget_price_filter .price_label { font-size: 13px; color: var(--rhw-mist); }
.rhw-shop-filters .wc-brand-list-layered-nav-product_brand li, .rhw-shop-filters .woocommerce-widget-layered-nav-list__item { padding: 4px 0; font-size: 14px; }
.rhw-shop-toolbar .woocommerce-result-count { margin: 0; font-size: 14px; color: var(--rhw-mist); }
.rhw-shop-toolbar .woocommerce-ordering { margin: 0; }
.rhw-shop-toolbar select.orderby { border: 1px solid var(--rhw-stone); border-radius: 999px; background: #fff; padding: 9px 36px 9px 16px; font-size: 14px; font-weight: 500; color: var(--rhw-ink); }
.elementor-widget-woocommerce-archive-description img { display: none; }
.elementor-widget-woocommerce-archive-description h1, .elementor-widget-woocommerce-archive-description h2,
.elementor-widget-woocommerce-archive-description h3 { font-size: 20px; line-height: 1.3; color: var(--rhw-ink); margin: 0 0 .5em; }
.elementor-widget-woocommerce-archive-description span[style*="color"] { color: inherit !important; }
.elementor-widget-woocommerce-archive-description p { margin: 0 0 .8em; }

/* ---------- Long-form content: posts + product description ---------- */
.rhw-prose h2, .rhw-product-tabs .woocommerce-Tabs-panel h2 { font-size: 30px; line-height: 1.2; letter-spacing: -0.02em; font-weight: 500; color: var(--rhw-ink); margin: 1.6em 0 .5em; }
.rhw-prose h3, .rhw-product-tabs .woocommerce-Tabs-panel h3 { font-size: 22px; line-height: 1.3; font-weight: 500; color: var(--rhw-ink); margin: 1.4em 0 .4em; }
.rhw-prose p, .rhw-prose ul, .rhw-prose ol { margin: 0 0 1.1em; }
.rhw-prose a, .rhw-product-tabs .woocommerce-Tabs-panel a { color: var(--rhw-ember); text-decoration: underline; text-underline-offset: 3px; }
.rhw-prose img, .rhw-product-tabs img { border-radius: 16px; height: auto; max-width: 100%; }
.rhw-prose blockquote { border-left: 2px solid var(--rhw-ember); margin: 1.5em 0; padding: .2em 0 .2em 1.2em; color: var(--rhw-ink); font-size: 1.1em; }
.rhw-prose table { width: 100%; border-collapse: collapse; font-size: 15px; }
.rhw-prose th, .rhw-prose td { border-bottom: 1px solid var(--rhw-stone); padding: 10px 8px; text-align: left; }
.rhw-product-tabs .woocommerce-tabs ul.tabs { padding: 0 !important; margin: 0 0 32px !important; border-bottom: 1px solid var(--rhw-stone); }
.rhw-product-tabs .woocommerce-tabs ul.tabs li { border: 0 !important; background: transparent !important; margin: 0 4px 0 0 !important; border-radius: 0 !important; }
.rhw-product-tabs .woocommerce-tabs ul.tabs li::before, .rhw-product-tabs .woocommerce-tabs ul.tabs li::after { display: none !important; }
.rhw-product-tabs .woocommerce-tabs ul.tabs li a { padding: 0 20px 16px !important; }
.rhw-product-tabs .woocommerce-tabs ul.tabs li.active { box-shadow: inset 0 -2px 0 var(--rhw-ember); }
.rhw-product-tabs .woocommerce-Tabs-panel { max-width: 860px; }
.rhw-product-tabs table.shop_attributes { border-radius: 16px; }

/* Single product: add to cart row + gallery */
.rhw-atc form.cart { display: flex; gap: 10px; flex-wrap: wrap; align-items: stretch; margin: 0 !important; }
.rhw-atc .quantity .qty { min-height: 56px; width: 90px; }
.rhw-atc .single_add_to_cart_button { flex: 1 1 200px; min-height: 56px; box-shadow: 0 8px 24px -10px rgba(232,98,42,.7); }
.rhw-gallery .flex-viewport, .rhw-gallery .woocommerce-product-gallery__image { background: var(--rhw-sand); border-radius: 28px; }
.rhw-gallery .woocommerce-product-gallery__image img { mix-blend-mode: multiply; }
.rhw-gallery .flex-control-thumbs li img { background: var(--rhw-sand); border-radius: 14px; mix-blend-mode: multiply; opacity: .6; }
.rhw-gallery .flex-control-thumbs li img.flex-active, .rhw-gallery .flex-control-thumbs li img:hover { opacity: 1; }
.rhw-wishlist .yith-wcwl-add-to-wishlist { margin: 0; font-size: 14px; }
.rhw-wishlist a { color: var(--rhw-ink); }
.elementor-widget-woocommerce-product-stock .stock.out-of-stock { color: var(--rhw-ember) !important; }
.rhw-atc .stock { display: none; }
.rhw-wishlist .yith-wcwl-add-to-wishlist, .rhw-wishlist .yith-add-to-wishlist-button-block { text-align: left; justify-content: flex-start; }
.elementor-widget-woocommerce-product-short-description * { text-align: left !important; }
.rhw-price { border-top: 1px solid var(--rhw-stone); }
.rhw-wishlist .elementor-shortcode > div, .rhw-wishlist .yith-add-to-wishlist-button-block { display: flex; justify-content: flex-start !important; margin: 0 !important; }
.rhw-product-tabs .woocommerce-Tabs-panel h1 span, .rhw-product-tabs .woocommerce-Tabs-panel h2 span, .rhw-product-tabs .woocommerce-Tabs-panel h3 span,
.rhw-product-tabs .woocommerce-Tabs-panel h4 span, .rhw-product-tabs .woocommerce-Tabs-panel strong span { color: inherit !important; }
.rhw-product-tabs .woocommerce-Tabs-panel h1, .rhw-product-tabs .woocommerce-Tabs-panel h2, .rhw-product-tabs .woocommerce-Tabs-panel h3, .rhw-product-tabs .woocommerce-Tabs-panel h4 { color: var(--rhw-ink) !important; }

/* ---------- Ninja Forms (contact + service request) ---------- */
.rhw-form .nf-form-content { padding: 0; max-width: none; }
.rhw-form .nf-form-fields-required { display: none; }
.rhw-form nf-fields-wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.rhw-form nf-field:has(textarea), .rhw-form nf-field:has(.listradio-container), .rhw-form nf-field:has(.submit-container) { grid-column: 1 / -1; }
.rhw-form .nf-field-container { margin-bottom: 16px; }
.rhw-form .nf-field-label label { font-size: 14px; font-weight: 400; color: var(--rhw-mist); margin-bottom: 6px; }
.rhw-form .ninja-forms-field:not([type=submit]):not([type=radio]) { border: 0 !important; border-radius: 12px !important; background: var(--rhw-sand) !important; min-height: 48px; padding: 12px 16px !important; font-size: 15px; color: var(--rhw-ink); }
.rhw-form textarea.ninja-forms-field { min-height: 120px !important; height: 120px; }
.rhw-form .ninja-forms-field:focus { outline: 2px solid var(--rhw-ink); }
.rhw-form input[type=submit].ninja-forms-field, .rhw-form .submit-wrap input { background: var(--rhw-ember) !important; color: #fff !important; border: 0 !important; border-radius: 999px !important; padding: 16px 32px !important; font-size: 15px !important; font-weight: 500; cursor: pointer; box-shadow: 0 8px 24px -10px rgba(232,98,42,.7); }
.rhw-form input[type=submit]:hover { background: var(--rhw-ember-dark) !important; }
.rhw-form .listradio-wrap ul { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.rhw-form .listradio-wrap li { margin: 0 !important; }
.rhw-form .listradio-wrap input[type=radio] { position: absolute; opacity: 0; }
.rhw-form .listradio-wrap label { display: inline-block; padding: 9px 16px; border-radius: 999px; background: var(--rhw-sand); color: var(--rhw-ink); font-size: 14px; cursor: pointer; margin: 0 !important; }
.rhw-form .listradio-wrap label.nf-checked-label, .rhw-form .listradio-wrap input:checked + label { background: var(--rhw-ink); color: #fff; }
.rhw-form .listradio-wrap label::before, .rhw-form .listradio-wrap label::after { display: none !important; }
.rhw-form .nf-response-msg { padding: 24px; border-radius: 22px; background: var(--rhw-sand); }
.rhw-form .nf-error-msg { font-size: 13px; color: var(--rhw-ember); }
/* dark variant */
.rhw-form-dark .nf-field-label label { color: rgba(255,255,255,.6); }
.rhw-form-dark .ninja-forms-field:not([type=submit]):not([type=radio]) { background: rgba(255,255,255,.05) !important; color: #fff; box-shadow: inset 0 0 0 1px rgba(255,255,255,.15); }
.rhw-form-dark .ninja-forms-field:focus { outline: 2px solid rgba(255,255,255,.5); }
.rhw-form-dark .listradio-wrap label { background: rgba(255,255,255,.05); color: rgba(255,255,255,.8); box-shadow: inset 0 0 0 1px rgba(255,255,255,.15); }
.rhw-form-dark .listradio-wrap label.nf-checked-label, .rhw-form-dark .listradio-wrap input:checked + label { background: #fff; color: var(--rhw-ink); }
.rhw-form-dark .nf-response-msg { background: rgba(255,255,255,.05); color: #fff; }
.rhw-map iframe { border-radius: 28px; }
@media (max-width: 767px) { .rhw-form nf-fields-wrap { grid-template-columns: 1fr; } }
.rhw-form .nf-form-title { display: none; }

/* Legacy page content (old editor HTML) inside the generic page template */
.rhw-legacy span[style*="color"] { color: inherit !important; }
.rhw-legacy span[style*="font-size"] { font-size: inherit !important; }
.rhw-legacy h1, .rhw-legacy h2, .rhw-legacy h3, .rhw-legacy h4 { color: var(--rhw-ink); }
.rhw-legacy img.alignleft { float: left; margin: 0 24px 16px 0; }
.rhw-legacy img.alignright { float: right; margin: 0 0 16px 24px; }
.rhw-legacy::after { content: ""; display: table; clear: both; }
.rhw-legacy .woocommerce { font-size: 16px; }
.rhw-details { border-bottom: 1px solid var(--rhw-stone); padding: 14px 0; } .rhw-details summary { cursor: pointer; font-weight: 500; color: var(--rhw-ink); font-size: 18px; } .rhw-details[open] summary { color: var(--rhw-ember); margin-bottom: 8px; }

/* ---------- QC round 1 ---------- */
.elementor-widget-heading .elementor-heading-title, .elementor-widget-theme-archive-title .elementor-heading-title { text-wrap: balance; }

/* Sub-category chips (archive header) */
.rhw-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.rhw-chips a { display: inline-block; padding: 10px 20px; border-radius: 999px; border: 1px solid var(--rhw-stone); background: #fff; color: var(--rhw-ink); font-size: 14px; font-weight: 500; line-height: 1.2; white-space: nowrap; transition: border-color .2s; }
.rhw-chips a:hover { border-color: var(--rhw-ink); color: var(--rhw-ink); }
.rhw-chips a.is-active { background: var(--rhw-ink); border-color: var(--rhw-ink); color: #fff; }
@media (max-width: 767px) { .rhw-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 -20px; padding: 0 20px; } .rhw-chips::-webkit-scrollbar { display: none; } .rhw-chips a { padding: 8px 16px; } }

/* Wishlist heart on product cards */
.rhw-card-wish { position: absolute !important; top: 12px; right: 12px; z-index: 3; width: auto !important; }
.rhw-card-wish .yith-wcwl-add-to-wishlist { margin: 0; }
.rhw-card-wish a, .rhw-card-wish .yith-wcwl-add-to-wishlist-button { display: grid !important; place-items: center; width: 36px; height: 36px; border-radius: 999px; background: rgba(255,255,255,.9); color: var(--rhw-ink); font-size: 0 !important; padding: 0 !important; box-shadow: none; }
.rhw-card-wish a:hover { color: var(--rhw-ember); }
.rhw-card-wish svg, .rhw-card-wish i { width: 16px !important; height: 16px !important; font-size: 16px !important; margin: 0 !important; }
.rhw-card-wish .yith-wcwl-add-to-wishlist-button__label, .rhw-card-wish span:not(.yith-wcwl-icon) { display: none !important; }

/* Product gallery: vertical thumbnails on the left (design) */
@media (min-width: 768px) {
	.rhw-gallery .woocommerce-product-gallery { display: flex; flex-direction: row-reverse; gap: 16px; align-items: flex-start; }
	.rhw-gallery .woocommerce-product-gallery .flex-viewport { flex: 1 1 auto; min-width: 0; }
	.rhw-gallery .woocommerce-product-gallery .flex-control-thumbs { flex: 0 0 80px; display: flex; flex-direction: column; gap: 12px; margin: 0 !important; max-height: 640px; overflow-y: auto; scrollbar-width: none; }
	.rhw-gallery .woocommerce-product-gallery .flex-control-thumbs li { width: 80px !important; float: none !important; margin: 0 !important; }
	.rhw-gallery .woocommerce-product-gallery__trigger { right: 16px; top: 16px; }
}
.rhw-gallery .flex-control-thumbs li img { border-radius: 16px; }

/* Sticky add-to-cart bar (product pages) */
.rhw-sticky-bar { position: fixed !important; left: 0; right: 0; bottom: 0; z-index: 40; transform: translateY(110%); transition: transform .5s cubic-bezier(.2,.7,.2,1); box-shadow: 0 -10px 30px -20px rgba(18,19,21,.35); }
.rhw-sticky-bar.is-visible { transform: translateY(0); }
body.elementor-editor-active .rhw-sticky-bar { position: relative !important; transform: none; }

/* Footer newsletter (Ninja form id 3) */
.rhw-newsletter .nf-form-content { padding: 0; }
.rhw-newsletter nf-fields-wrap { display: flex; gap: 6px; align-items: center; background: rgba(255,255,255,.05); border-radius: 999px; padding: 6px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.1); max-width: 440px; }
.rhw-newsletter nf-field:first-child { flex: 1 1 auto; }
.rhw-newsletter .nf-field-container { margin: 0 !important; }
.rhw-newsletter .nf-field-label, .rhw-newsletter .nf-form-fields-required, .rhw-newsletter .nf-form-title { display: none; }
.rhw-newsletter input[type=email] { background: transparent !important; border: 0 !important; color: #fff !important; padding: 0 16px !important; min-height: 44px; font-size: 14px; box-shadow: none !important; }
.rhw-newsletter input[type=email]::placeholder { color: rgba(255,255,255,.4); }
.rhw-newsletter input[type=submit] { background: var(--rhw-ember) !important; color: #fff !important; border: 0 !important; border-radius: 999px !important; padding: 12px 22px !important; font-size: 14px !important; font-weight: 500; cursor: pointer; }
.rhw-newsletter .nf-response-msg { color: rgba(255,255,255,.8); font-size: 14px; }
.rhw-newsletter .nf-error-msg { color: #f6a37f; font-size: 12px; padding-left: 16px; }
.rhw-check { display: inline-flex; align-items: center; gap: 12px; font-size: 15px; color: var(--rhw-ink); }
.rhw-check span { width: 20px; height: 20px; border-radius: 6px; border: 1px solid var(--rhw-stone); background: #fff; display: grid; place-items: center; transition: all .2s; }
.rhw-check:hover span { border-color: var(--rhw-mist); }
.rhw-check.is-on span { background: var(--rhw-ink); border-color: var(--rhw-ink); }
.rhw-check.is-on span::after { content: ""; width: 10px; height: 6px; border: 2px solid #fff; border-top: 0; border-right: 0; transform: rotate(-45deg) translate(1px, -1px); }
