/* Harmony White Space: WooCommerce markup in the design's tokens (WooCommerce's own stylesheet is switched off). */

#site-main { min-height: 50vh; }
.hws-woo__body { margin-top: var(--s12); }

/* Notices */
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message, .woocommerce-info, .woocommerce-error {
  list-style: none; margin: var(--s6) 0; padding: var(--s4) var(--s6);
  background: var(--surface); border-inline-start: 2px solid var(--action); color: var(--text); font-size: var(--t-small);
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s3);
}
.woocommerce-error { border-color: var(--error); }
.woocommerce-error li { list-style: none; }

/* Buttons: every WooCommerce button looks like .btn */
.button, button.button, a.button, input.button, .single_add_to_cart_button, #place_order, .checkout-button, .woocommerce-Button {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; padding: 0 30px;
  background: var(--action); color: #fff; border: 1px solid var(--action); border-radius: 0;
  font-family: var(--f-ui); font-size: var(--t-ui); letter-spacing: .01em; cursor: pointer; text-decoration: none;
}
.button:hover, .single_add_to_cart_button:hover, #place_order:hover, .checkout-button:hover { background: var(--action-hover); border-color: var(--action-hover); }
.button:disabled, .button.disabled { opacity: .45; cursor: not-allowed; }
.added_to_cart { margin-inline-start: var(--s3); color: var(--action); }

/* Fields */
.woocommerce form .form-row { margin: 0 0 var(--s4); }
.woocommerce form .form-row label { display: block; margin-bottom: 6px; font-size: var(--t-small); color: var(--text); }
.input-text, .woocommerce select, .woocommerce textarea, .qty, .variations select, .woocommerce-ordering select {
  width: 100%; min-height: 48px; padding: 0 14px; border: 1px solid var(--border); border-radius: 0; background: #fff;
  font-family: var(--f-ui); font-size: var(--t-ui); color: var(--text);
}
.woocommerce textarea { min-height: 120px; padding-top: 12px; }
.input-text:focus, .woocommerce select:focus, .qty:focus { outline: 2px solid var(--action); outline-offset: 1px; }
.required { color: var(--error); text-decoration: none; border: 0; }

/* Product page cart form */
form.cart { display: flex; flex-wrap: wrap; gap: var(--s3); margin: var(--s6) 0 var(--s3); }
form.cart .quantity .qty { width: 92px; text-align: center; }
form.cart .single_add_to_cart_button { flex: 1; }
.variations { width: 100%; border-collapse: collapse; margin-bottom: var(--s3); }
.variations th, .variations td { display: block; text-align: start; padding: 0 0 6px; }
.variations .label label { font-size: var(--t-small); color: var(--text); }
.reset_variations { font-size: var(--t-small); color: var(--body); }
.single_variation_wrap { width: 100%; }
.woocommerce-variation-add-to-cart { display: flex; gap: var(--s3); }
.woocommerce-variation-price .price { font-size: var(--t-ui); }
.stock { font-size: var(--t-small); color: var(--body); }
.woocommerce-product-attributes { width: 100%; border-collapse: collapse; }
.woocommerce-product-attributes th, .woocommerce-product-attributes td { text-align: start; padding: 8px 0; border-bottom: 1px solid var(--border); font-weight: 400; }
.woocommerce-product-attributes th { color: var(--text); width: 40%; }
.woocommerce-product-attributes td p { margin: 0; }

/* Shop loop extras */
.woocommerce-result-count { margin: var(--s6) 0 var(--s4); font-size: var(--t-small); color: var(--body); }
.woocommerce-ordering select { border: 0; min-height: 44px; padding: 0 8px; background: none; cursor: pointer; }
.woocommerce-pagination ul { display: flex; gap: var(--s2); list-style: none; padding: 0; margin: var(--s12) 0 0; justify-content: center; }
.woocommerce-pagination .page-numbers { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; justify-content: center; border: 1px solid var(--border); color: var(--text); }
.woocommerce-pagination .page-numbers.current { border-color: var(--action); color: var(--action); }
.card__img img { width: 100%; height: 100%; object-fit: cover; }
.card__img.nobg img { object-fit: contain; }

/* Cart */
.shop_table { width: 100%; border-collapse: collapse; font-size: var(--t-small); }
.shop_table th { text-align: start; font-weight: 400; color: var(--body); padding: 10px 8px; border-bottom: 1px solid var(--border); }
.shop_table td { padding: 16px 8px; border-bottom: 1px solid var(--border); vertical-align: middle; color: var(--text); }
.shop_table .product-thumbnail img { width: 96px; height: auto; background: var(--surface); }
.shop_table .product-name a { font-family: var(--f-display); font-size: var(--t-name); color: var(--text); }
.shop_table .product-remove a.remove { display: inline-flex; width: 36px; height: 36px; align-items: center; justify-content: center; color: var(--body); font-size: 22px; text-decoration: none; }
.shop_table .actions .coupon { display: inline-flex; gap: var(--s2); }
.shop_table .actions .coupon .input-text { width: 180px; }
.cart-collaterals { margin-top: var(--s8); display: flex; justify-content: flex-end; }
.cart_totals { width: min(100%, 460px); border: 1px solid var(--border); padding: var(--s6); }
.cart_totals h2, #order_review_heading, .woocommerce-billing-fields h3, .woocommerce-additional-fields h3, .woocommerce-column__title {
  font-family: var(--f-display); font-weight: 400; font-size: var(--t-name); color: var(--text); margin: 0 0 var(--s4);
}
.cart_totals .checkout-button { width: 100%; margin-top: var(--s4); }
.cart-empty { font-size: var(--t-sub); color: var(--body); }
.return-to-shop { margin-top: var(--s6); }

/* Checkout */
.woocommerce-checkout .col2-set { display: grid; gap: var(--s8); }
@media (min-width: 1024px) {
  form.checkout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 0 var(--s12); align-items: start; }
  form.checkout > .col2-set { grid-column: 1; grid-row: 1 / span 3; }
  form.checkout > #order_review_heading, form.checkout > #order_review { grid-column: 2; }
  form.checkout > #order_review { border: 1px solid var(--border); padding: var(--s6); }
}
#payment .payment_methods { list-style: none; padding: 0; margin: var(--s4) 0; }
#payment .payment_methods li { padding: var(--s3) 0; border-bottom: 1px solid var(--border); }
#payment .payment_box { font-size: var(--t-small); color: var(--body); padding: var(--s2) 0; }
#place_order { width: 100%; margin-top: var(--s4); }
.woocommerce-terms-and-conditions-wrapper { font-size: var(--t-small); color: var(--body); }

/* Account */
@media (min-width: 900px) {
  .woocommerce-account .hws-woo__body > .woocommerce { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: var(--s12); }
}
.woocommerce-MyAccount-navigation ul { list-style: none; padding: 0; margin: 0; }
.woocommerce-MyAccount-navigation a { display: flex; min-height: 44px; align-items: center; color: var(--body); border-bottom: 1px solid var(--border); }
.woocommerce-MyAccount-navigation .is-active a { color: var(--action); }
.woocommerce-form-login, .woocommerce-form-register { max-width: 460px; }
.u-columns.col2-set { display: grid; gap: var(--s12); }
@media (min-width: 900px) { .u-columns.col2-set { grid-template-columns: 1fr 1fr; } }

/* The side-cart plugin's floating basket duplicates the header cart */
.xoo-wsc-basket { display: none !important; }

/* Saved pieces: hearts on cards sit where the design's .save button sits */
.card { position: relative; }
.card .hw-save { position: absolute; top: 10px; right: 10px; z-index: 1; }
.buy .hw-save--text { margin-top: var(--s3); }
[data-hw-count][hidden] { display: none; }

/* Page content from the editor or Elementor, inside the design */
.hws-content { padding-bottom: var(--s16); }
.hws-content > * + * { margin-top: var(--s4); }
.hws-content h2, .hws-content h3 { font-family: var(--f-display); font-weight: 400; color: var(--text); }
.hws-content p, .hws-content li { color: var(--body); line-height: 1.7; }
.policy article.hws-content { padding-bottom: 0; }

/* Forms placed by shortcode (Contact Form 7 or the page's own form) */
.hws-form input:not([type=checkbox]):not([type=radio]):not([type=submit]), .hws-form select, .hws-form textarea {
  width: 100%; min-height: 48px; padding: 0 14px; border: 1px solid var(--border); border-radius: 0; background: #fff;
  font-family: var(--f-ui); font-size: var(--t-ui); color: var(--text);
}
.hws-form textarea { min-height: 120px; padding-top: 12px; }
.hws-form label { display: block; margin: var(--s4) 0 6px; font-size: var(--t-small); color: var(--text); }
.hws-form input[type=submit], .hws-form button[type=submit] {
  width: 100%; min-height: 52px; margin-top: var(--s6); background: var(--action); color: #fff; border: 1px solid var(--action);
  font-family: var(--f-ui); font-size: var(--t-ui); cursor: pointer;
}
.hws-form .wpcf7-not-valid-tip { color: var(--error); font-size: .875rem; }
.hws-form .wpcf7-response-output { margin: var(--s4) 0 0; padding: var(--s3) var(--s4); border: 1px solid var(--border); font-size: var(--t-small); }

/* Another plugin floats WooCommerce's result count and sorting; keep them in the flow so the grid starts at the left edge. */
.woocommerce-result-count, .woocommerce-ordering { float: none; }
ul#products { clear: both; }

/* Home · rooms: four across on desktop, two on phones (tiles from the approved design) */
.rooms { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 28px; list-style: none; padding: 0; }
.rooms .tile img { height: clamp(180px, 17vw, 260px); }
@media (max-width: 1023px) { .rooms { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { .rooms .tile img { height: 150px; } }

/* Home · visit: the feature with its photo on the right */
@media (min-width: 1024px) { .feature--flip { grid-template-columns: 1fr 65%; } .feature--flip .feature__img { order: 2; } }
.feature .visit-rows { margin-top: 20px; }

/* Product photos fit their box: the whole piece shows, never cropped */
.card__img img { object-fit: contain; }
.gallery-main, .gallery-main img, .thumbs img { background: var(--surface); }
.gallery-main img, .thumbs img { object-fit: contain; }

/* 1.3.0 · Elementor: a container or column holding Harmony sections adds no width limit, padding or gap;
   the sections carry the design's own. A padding set by hand in Elementor still wins. */
.e-con:has(> .elementor-widget[data-widget_type^="hws-"]),
.e-con:has(> .e-con-inner > .elementor-widget[data-widget_type^="hws-"]) {
  --content-width: 100%; --container-max-width: 100%; --width: 100%;
  --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px;
  --gap: 0px; --row-gap: 0px; --column-gap: 0px; --widgets-spacing: 0px; --widgets-spacing-row: 0px; --widgets-spacing-column: 0px;
}
.elementor-section:has(.elementor-widget[data-widget_type^="hws-"]) > .elementor-container { max-width: none; }
.elementor-column:has(.elementor-widget[data-widget_type^="hws-"]) > .elementor-widget-wrap { padding: 0; }
.elementor-widget[data-widget_type^="hws-"] { width: 100%; margin-bottom: 0; }

/* 1.4.0 · Cards: the gallery photo (the piece in a room) fades in on hover; size under the name when known */
.card__img { position: relative; overflow: hidden; }
.card .card__img img.card__alt { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; object-fit: cover; opacity: 0; transition: opacity .35s var(--ease); }
@media (hover: hover) { .card .card__img:hover img.card__alt.is-ready { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .card .card__img img.card__alt { transition: none; } }
.card .dims { display: block; margin-top: 2px; font-size: .8125rem; color: var(--body); font-variant-numeric: lining-nums tabular-nums; }

/* Product page: dimensions and lead time beside the price */
.buy .spec { grid-template-columns: 110px 1fr; margin-top: 16px; font-size: var(--t-small); }

/* Shop the room: the pieces in the photo, one per line */
.look { list-style: none; padding: 0; margin: 24px 0 0; border-top: 1px solid var(--border); }
.look li { border-bottom: 1px solid var(--border); }
.look a { display: grid; grid-template-columns: 64px 1fr auto; gap: 16px; align-items: center; min-height: 44px; padding: 10px 0; color: inherit; text-decoration: none; }
.look img { width: 64px; height: 64px; object-fit: contain; background: var(--surface); }
.look .name { font-size: 1.125rem; }
.look a:hover .name { color: var(--action); }
.look .price { white-space: nowrap; }

/* WhatsApp, one tap away (not in the cart or checkout) */
.wa-float { position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 30; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: var(--action); color: #fff; box-shadow: 0 6px 20px rgba(14, 72, 108, .22); transition: background-color .2s var(--ease); }
.wa-float:hover { background: var(--action-hover); }
/* It sits inside the footer, where the live store's kit override makes links inherit the footer's grey: keep the icon white. */
.site-footer a.wa-float, .site-footer a.wa-float:hover { color: #fff; }
.wa-float:focus-visible { outline: 2px solid var(--action); outline-offset: 3px; }
.wa-float .icon { font-size: 26px; }

/* A long word or link in a feature's text wraps instead of widening the page */
.feature__text { min-width: 0; overflow-wrap: break-word; }

/* Contact: the three direct routes wrap on small phones (320px) */
.via { flex-wrap: wrap; gap: 8px 40px; }
