/* ===== WooCommerce element re-skin — matches the replica design ===== */

/* ===== Base skin for ALL classic WooCommerce buttons =====
   We opt out of WC's default (purple) :where() button styles via the
   woocommerce-block-theme-has-button-styles body class (functions.php).
   The doubled ".button.button" (specificity 0,3,0) ALSO out-ranks WC's own
   "button.button" (0,2,1) directly, so olive wins even if the opt-out is ever
   bypassed or a CSS combine/minify plugin reorders stylesheets — belt AND
   suspenders, no dependence on load order. This is the single source of truth
   for every classic WC button; more specific rules below (PDP add-to-cart,
   notices) still layer on top. */
.woocommerce .button.button,
.woocommerce input.button.button,
.woocommerce #respond input#submit,
.woocommerce-page .button.button {
    background: var(--olive);
    color: #fff;
    border: 1px solid var(--olive);
    border-radius: var(--btn-radius);
    font-family: var(--font-head);
    font-weight: 600;
    font-size: 13px;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: 12px 22px;
    line-height: 1.2;
    cursor: pointer;
    transition: background .25s ease, box-shadow .25s ease, transform .12s ease;
}
.woocommerce .button.button:hover,
.woocommerce input.button.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce-page .button.button:hover {
    background: #585b31;
    border-color: #585b31;
    color: #fff;
}
/* disabled affordance (e.g. classic "Update cart" before a change) */
.woocommerce .button.button:disabled,
.woocommerce .button.button.disabled,
.woocommerce .button.button[disabled] {
    opacity: .5;
    cursor: not-allowed;
}
/* WC's AJAX "View cart" link (a.added_to_cart) carries no .button class —
   style it as an on-brand olive text link so it never renders raw. */
.woocommerce a.added_to_cart {
    display: inline-block;
    margin-left: 12px;
    color: var(--olive);
    font-family: var(--font-head);
    font-weight: 600;
    font-size: 12px;
    letter-spacing: .04em;
    text-transform: uppercase;
    text-decoration: underline;
}
.woocommerce a.added_to_cart:hover { color: #585b31; }

/* Product titles keep their literal case ("by Air Factory", not "By") — matches Shopify. */
.pdp h1, .card .ct2 { text-transform: none; }

/* --- PDP: variation form --- */
.pdp form.cart { margin-top: 4px; }
.pdp table.variations { border-collapse: collapse; margin: 0; width: auto; }
.pdp table.variations tr, .pdp table.variations th, .pdp table.variations td { display: block; padding: 0; border: none; }
.pdp table.variations th.label { font-family: var(--font-head); font-weight: 600; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 12px; text-align: left; }
.pdp table.variations select { padding: 10px 14px; border: 1px solid #cfcfcf; border-radius: var(--btn-radius); font-family: var(--font-body); font-size: 14px; }
.pdp .reset_variations { display: none !important; }

/* swatches injected by pdp.js */
.pdp .swatches { display: flex; gap: 10px; margin: 0 0 24px; }
.pdp .swatch { min-width: 64px; padding: 11px 16px; border: 1px solid #cfcfcf; border-radius: var(--btn-radius); background: #fff; font-size: 14px; font-weight: 700; cursor: pointer; text-align: center; transition: .15s; font-family: var(--font-body); }
.pdp .swatch.on { background: #000; color: #fff; border-color: #000; }
.pdp .swatch:not(.on):hover { border-color: #000; }

/* qty stepper (buttons injected by pdp.js) */
.pdp .quantity { display: inline-flex; align-items: center; border: 1px solid #cfcfcf; border-radius: var(--btn-radius); overflow: hidden; margin: 0 0 20px; }
.pdp .quantity .qty { width: 52px; height: 46px; border: none; text-align: center; font-size: 15px; font-family: var(--font-body); font-weight: 700; -moz-appearance: textfield; }
.pdp .quantity .qty::-webkit-outer-spin-button, .pdp .quantity .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pdp .qbtn { width: 44px; height: 46px; border: none; background: #fff; font-size: 18px; cursor: pointer; color: #333; }

/* add-to-cart button */
.pdp .single_add_to_cart_button { display: flex; width: 100%; align-items: center; justify-content: center; min-height: 48px; background: var(--olive); color: #fff; border: 1px solid var(--olive); border-radius: var(--btn-radius); font-family: var(--font-head); font-weight: 600; font-size: 13px; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; transition: background .3s; }
.pdp .single_add_to_cart_button:hover { background: #585b31; }
.pdp .single_add_to_cart_button.disabled, .pdp .single_add_to_cart_button:disabled { opacity: .5; cursor: not-allowed; }

/* variation price/stock block */
.pdp .woocommerce-variation-price { display: none; } /* single price shown in header */
.pdp .woocommerce-variation-availability { margin-bottom: 12px; font-size: 13px; }
.pdp .stock.out-of-stock { color: #E22120; font-weight: 700; }
.pdp .stock.in-stock { color: var(--olive); font-weight: 700; }

/* --- archive toolbar --- */
.count .woocommerce-result-count { margin: 0; font-size: 13px; font-weight: 600; }
form.woocommerce-ordering { margin: 0; }
form.woocommerce-ordering select.orderby { border: 1px solid #cfcfcf; border-radius: var(--btn-radius); padding: 9px 30px 9px 14px; font-family: var(--font-head); font-weight: 600; font-size: 13px; background: #fff; -webkit-appearance: none; appearance: none; cursor: pointer; }

/* sidebar */
.filters label a { color: inherit; text-decoration: none; transition: color .18s; }
.filters label.active a { color: var(--olive); font-weight: 700; }
.filters label a:hover { color: var(--olive); }
/* Category tree — clean nesting via indentation (replaces the old "—" prefixes).
   Parents read a touch stronger; children step in and soften. */
.filters .fgroup label.lvl-0 { font-weight: 600; color: #232323; }
.filters .fgroup label.lvl-1 { padding-left: 16px; color: #555; }
.filters .fgroup label.lvl-2 { padding-left: 32px; color: #777; font-size: 13px; }
.filters .fgroup label.lvl-1 .ct,
.filters .fgroup label.lvl-2 .ct { font-size: 11.5px; }

/* load more (replaces numbered pagination) */
.coll-loadmore { margin-top: 36px; text-align: center; }
.load-more-btn { min-width: 180px; }
.load-more-btn.is-loading { opacity: .75; pointer-events: none; }
.load-more-btn.is-loading::after {
  content: "";
  width: 14px; height: 14px; margin-left: 10px;
  border: 2px solid rgba(255, 255, 255, .5);
  border-top-color: #fff;
  border-radius: 50%;
  display: inline-block;
  vertical-align: -2px;
  animation: uw-spin .7s linear infinite;
}

/* WC notices, kept minimal + on-palette.
   WooCommerce's own plugin CSS gives these classes padding-left:3.5em specifically
   to make room for an absolutely-positioned icon-font glyph (::before, left:1.5em).
   Our flat 18px padding below doesn't match that reserved space, so without also
   killing the glyph it renders ON TOP of the first ~2 characters of every notice
   ("Please choose…" -> "ease choose…"). We don't want an icon in this design at
   all, so disable it outright rather than trying to re-align it. */
.woocommerce-message, .woocommerce-info, .woocommerce-error { border-top: 3px solid var(--olive); background: #f7f6f2; padding: 14px 18px; margin: 0 0 20px; list-style: none; font-size: 14px; }
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before { content: none !important; }
.woocommerce-error { border-top-color: #E22120; }
.woocommerce-message a.button, .woocommerce-info a.button { float: right; background: var(--olive); color: #fff; border-radius: var(--btn-radius); padding: 6px 14px; font-size: 12px; text-transform: uppercase; font-family: var(--font-head); }

/* out-of-stock price display on archive cards */
.card .cp { font-variant-numeric: tabular-nums; }

/* ===== PDP tabs (Description | Shipping) ===== */
.tabbar button { margin-right: 4px; }

/* ===== Customer Reviews block (Shopify parity) ===== */
.uw-reviews { padding: 44px 0 30px; border-top: 1px solid #ececec; margin-top: 10px; }
.uw-reviews__title { text-align: center; font-size: 32px; margin-bottom: 30px; }
.uw-reviews__row { display: grid; grid-template-columns: 1fr 1.4fr 1fr; gap: 30px; align-items: center; max-width: 1000px; margin: 0 auto; }
.uw-reviews__summary { text-align: center; border-right: 1px solid #f9dcb8; padding-right: 20px; }
.uw-stars { font-size: 19px; letter-spacing: 2px; color: #b0b0b0; }
.uw-stars .uw-star.on { color: #b8860b; }
.uw-reviews__avg { font-weight: 700; margin-top: 6px; }
.uw-reviews__based { font-size: 13px; color: var(--muted); }
.uw-bar-row { display: flex; align-items: center; gap: 10px; margin: 4px 0; font-size: 13px; }
.uw-bar-stars { color: #b8860b; letter-spacing: 1px; min-width: 86px; }
.uw-bar-stars .dim { color: #b0b0b0; }
.uw-bar-track { flex: 1; height: 9px; background: #eee; border-radius: 5px; overflow: hidden; }
.uw-bar-fill { display: block; height: 100%; background: var(--sale); }
.uw-bar-count { min-width: 20px; text-align: right; color: #555; }
.uw-reviews__cta { text-align: center; border-left: 1px solid #f9dcb8; padding-left: 20px; }
.uw-write-review { background: #203b71; color: #fff; border: none; border-radius: 4px; padding: 11px 22px; font-family: var(--font-body); font-weight: 700; font-size: 13.5px; cursor: pointer; }
.uw-write-review:hover { background: #16294f; }
#uw-review-form { max-width: 640px; margin: 26px auto 0; }
#uw-review-form textarea, #uw-review-form input[type=text], #uw-review-form input[type=email] { width: 100%; border: 1px solid #cfcfcf; border-radius: var(--btn-radius); padding: 10px 12px; font-family: var(--font-body); }
#uw-review-form .submit, #uw-review-form input[type=submit] { background: var(--olive); color: #fff; border: 1px solid var(--olive); border-radius: var(--btn-radius); padding: 11px 24px; font-family: var(--font-head); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; cursor: pointer; }
@media (max-width: 900px) {
  .uw-reviews__row { grid-template-columns: 1fr; gap: 20px; }
  .uw-reviews__summary, .uw-reviews__cta { border: none; padding: 0; }
}
