/*
 * The shop plugins' markup (WooCommerce, the room booking plugin, the
 * appointment plugin) on the site tokens. Enqueued only on shop pages and on
 * pages that hold a commerce artup/service block. Plugin markup is never
 * forked: this sheet maps the custom properties onto buttons, inputs,
 * notices, prices and calendar cells, and every rule is scoped under a
 * plugin's own class so it cannot reach the rest of the site. No remote
 * assets: fonts and colours come from the theme.
 */

/* -- buttons ---------------------------------------------------------------- */

.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.wc-block-components-button,
.wc-block-components-checkout-place-order-button,
.wp-block-woocommerce-product-collection .wp-block-button__link,
.hbfwc-filter-button,
button.hbfwc-ajax-rest-btn,
.hbfwc-button__popup,
.bookacti-booking-form input.bookacti-submit-form,
.bookacti-booking-form .bookacti-submit-form,
.bookacti-booking-form button {
  min-height: 44px;
  padding: 0.5rem 1.4rem;
  border: 0;
  border-radius: var(--artup-radius-button);
  background: var(--artup-accent);
  color: var(--artup-on-accent);
  font: inherit;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.wc-block-components-button:hover,
button.hbfwc-ajax-rest-btn:hover,
.bookacti-booking-form input.bookacti-submit-form:hover {
  filter: brightness(0.92);
}

/* -- inputs ----------------------------------------------------------------- */

.woocommerce input[type="text"],
.woocommerce input[type="email"],
.woocommerce input[type="tel"],
.woocommerce input[type="number"],
.woocommerce input[type="password"],
.woocommerce select,
.woocommerce textarea,
.wc-block-components-text-input input,
.wc-block-components-select select,
.wc-block-components-textarea,
.hbfwc-date-form-compact input,
input.hbfgwc-with-buttons,
.availability-filter__dates input,
.availability-filter__room select,
.bookacti-booking-form input[type="text"],
.bookacti-booking-form input[type="email"],
.bookacti-booking-form input[type="tel"],
.bookacti-booking-form input[type="number"],
.bookacti-booking-form select {
  min-height: 44px;
  padding: 0.4rem 0.7rem;
  border: 1px solid var(--artup-line);
  border-radius: var(--artup-radius);
  background: var(--artup-surface);
  color: var(--artup-ink);
  font: inherit;
}

.woocommerce label,
.wc-block-components-text-input label,
.availability-filter__dates label,
.bookacti-booking-form label {
  font-weight: 600;
}

/* -- the focus ring takes the text-safe accent ------------------------------- */

.woocommerce :focus-visible,
.wc-block-components-button:focus-visible,
.wc-block-components-text-input input:focus-visible,
.hbfwc-single-product__wrapper :focus-visible,
.availability-filter__dates :focus-visible,
.bookacti-booking-form :focus-visible,
.daterangepicker :focus-visible {
  outline: 3px solid var(--artup-accent-text);
  outline-offset: 2px;
}

/* -- notices ------------------------------------------------------------------ */

.woocommerce .woocommerce-message,
.woocommerce .woocommerce-info,
.woocommerce .woocommerce-error,
.wc-block-components-notice-banner {
  padding: 0.9rem 1.1rem;
  border: 1px solid var(--artup-line);
  border-left: 4px solid var(--artup-accent);
  border-radius: var(--artup-radius);
  background: var(--artup-soft);
  color: var(--artup-ink);
}

/* -- prices and product grids -------------------------------------------------- */

.woocommerce .price,
.woocommerce ul.products li.product .price,
.wc-block-components-product-price,
.hbfwc-room__rate {
  color: var(--artup-ink);
  font-weight: 600;
}

.woocommerce .price del,
.wc-block-components-product-price del {
  color: var(--artup-muted);
  font-weight: 400;
}

.woocommerce ul.products,
.wc-block-product-template {
  display: grid;
  gap: var(--artup-gap);
  list-style: none;
  margin: 0;
  padding: 0;
}

.woocommerce ul.products li.product {
  margin: 0;
  float: none;
  width: auto;
}

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

@media (max-width: 820px) {
  .woocommerce ul.products[class*="columns-"] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 520px) {
  .woocommerce ul.products[class*="columns-"] { grid-template-columns: 1fr; }
}

.woocommerce ul.products li.product img,
.wp-block-woocommerce-product-collection img {
  width: 100%;
  height: auto;
  border-radius: var(--artup-radius);
}

/* -- cart and checkout ----------------------------------------------------------- */

.wc-block-cart,
.wc-block-checkout {
  max-width: 100%;
  min-width: 0;
}

.wc-block-cart .wc-block-cart__totals-title,
.wc-block-checkout .wc-block-components-title {
  font-family: var(--artup-font-headings);
}

/* -- room booking: filter, results, cart ------------------------------------------ */

.hbfwc-single-product__wrapper,
.availability-filter__dates,
.availability-filter__room,
.availability-filter__output {
  max-width: 100%;
  min-width: 0;
}

.availability-filter__dates,
.availability-filter__room {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

#hbfwc-cart__mini {
  padding: 1rem;
  border: 1px solid var(--artup-line);
  border-radius: var(--artup-radius);
  background: var(--artup-soft);
}

.hbfwc-minus-button,
.hbfwc-plus-button {
  min-width: 44px;
  min-height: 44px;
  border: 1px solid var(--artup-line);
  border-radius: var(--artup-radius-button);
  background: var(--artup-surface);
  color: var(--artup-ink);
  cursor: pointer;
}

/* -- calendars: booking dates and appointment slots ---------------------------------- */

.daterangepicker {
  border: 1px solid var(--artup-line);
  border-radius: var(--artup-radius);
  background: var(--artup-surface);
  color: var(--artup-ink);
  font-family: var(--artup-font-body);
}

.daterangepicker td.available:hover {
  background: var(--artup-soft);
}

.daterangepicker td.active,
.daterangepicker td.active:hover,
.daterangepicker td.in-range {
  background: var(--artup-accent);
  color: var(--artup-on-accent);
}

/* Days of the adjacent month ("off") can be bookable: only disabled days are struck. */
.daterangepicker td.off {
  color: var(--artup-muted);
}

.daterangepicker td.disabled {
  color: var(--artup-muted);
  text-decoration: line-through;
}

.bookacti-booking-form .fc-toolbar {
  gap: 0.5rem;
}

.bookacti-booking-form .fc-button {
  min-height: 44px;
  border: 0;
  border-radius: var(--artup-radius-button);
  background: var(--artup-accent);
  color: var(--artup-on-accent);
  font: inherit;
}

.bookacti-booking-form .fc-event {
  border-radius: var(--artup-radius);
  background: var(--artup-accent);
  color: var(--artup-on-accent);
}

.bookacti-booking-form .bookacti-picked-events-list {
  padding: 0.75rem 1rem;
  border: 1px solid var(--artup-line);
  border-radius: var(--artup-radius);
  background: var(--artup-soft);
}
