/* =========================================================
   FT - Quick Shop — SHOP + CATEGORY + TAG ARCHIVES (merged 1.1.1)
   ---------------------------------------------------------
   One stylesheet for every product archive. Until 2026-09-23
   this was two WPCode snippets — 4284492 (category/tag, printed
   first) and 4284456 (shop) — that mirrored each other with a
   different body class, and drifted: the footer-leak fix had to
   be made twice, a month apart, and stock labels were grey on
   /shop but red on category pages.

   How it was merged (and why nothing else moved):
   - PART 1 is 4284492 minus every rule that 4284456 also carries
     with identical declarations. What remains is archive-only:
     breadcrumb bar, filter pill, MTO toggle, category-card hide,
     and four archive-only refinements (headline max-width,
     content centring, mobile filter-nav padding, tab nowrap).
   - PART 2 is 4284456 with each mirrored selector extended to
     body.tax-product_cat / body.tax-product_tag in the same list,
     so a card rule now lives in one place for all three pages.
     Printed after PART 1, exactly as the two snippets printed.
   - Stock labels (out of stock, available on backorder): the shop's
     quiet grey uppercase now applies on every archive (Billy,
     2026-09-23). The red #c0392b archive version is gone.
   - Removed: the dead .e4261631-e4.x-line hide (footer rebuilt;
     4284492 had already dropped it on 2026-09-17).
   Cascade verified before merging: no moved rule crosses another
   rule of equal specificity on the same property and element.

   RULE OF THUMB (unchanged): anything that styles a *card* must
   carry article.ft-shop. Only true page-level rules may be scoped
   to the body classes alone.
   ========================================================= */

/* ─────────────── PART 1 — archive-only (from 4284492) ─────────────── */

/* =========================================================
   ARCHIVE PAGES CSS — Category & Tag Archives
   ---------------------------------------------------------
   Extends the Shop Page CSS (snippet 4284456) to cover
   /product-category/ and /product-tag/ archive pages.

   The shop page body has class `post-type-archive-product`
   which archive pages lack. Archives instead use:
     • body.tax-product_tag  (tag archives)
     • body.tax-product_cat  (category archives)

   Every rule below mirrors a rule from the shop snippet,
   replacing the body selector. Cornerstone renders the
   same loop layout with the same .ft-shop article class.

   ---------------------------------------------------------
   REVISION 2026-09-17
   Same footer leak that was fixed in snippet 4284456 on
   2026-08-13, never applied here. The PRODUCT TITLE and
   DESCRIPTION rules were scoped to the archive body class
   only, so they also caught the site-wide footer's
   Cornerstone .x-text-headline / .x-text-content-text-
   subheadline column headings (SHOP, LEARN, PRODUCTS,
   SERVICE) and centered them inside their grid cells on
   category/tag archive pages, while the menu links stayed
   left.

   Fixed by adding `article.ft-shop` to:
     - .x-text-headline (block, h2, and h2::after)
     - .x-text-content-text-subheadline

   Also removed the dead `.e4261631-e4.x-line` hide rule —
   the footer was rebuilt and now carries e4288302 IDs, so
   that element no longer exists.

   RULE OF THUMB (same as 4284456): anything that styles a
   *card* must carry `article.ft-shop`. Only true page-level
   rules (.site background, .woocommerce-ordering,
   .x-row-inner, filter nav, breadcrumb, MTO toggle) may be
   scoped to the body class alone.
   ========================================================= */

/* --- HIDE SHOP-ONLY ELEMENTS ON ARCHIVES ---
   The Cornerstone layout shares the Raw Content block.
   Category cards and divider are shop-page-only; the
   filter nav stays visible for navigation. */

body.tax-product_tag .ft-category-cards,
body.tax-product_cat .ft-category-cards {
  display: none !important;
}

body.tax-product_tag .ft-divider,
body.tax-product_cat .ft-divider {
  display: none !important;
}

/* Tighten up the filter nav top spacing since cards are gone */
body.tax-product_tag .ft-filter-nav,
body.tax-product_cat .ft-filter-nav {
  padding-top: 1.5rem;
}

/* Highlight the active filter link matching the current page */
body.tax-product_tag .ft-filter-link.ft-filter-link--active,
body.tax-product_cat .ft-filter-link.ft-filter-link--active {
  background: #faf8f6;
  color: #1a1a1a;
  font-weight: 400;
  padding-left: 1rem;
}

/* Active filter pill — shows current filter with × to clear */
.ft-filter-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: 'Outfit', sans-serif;
  font-size: 0.72rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  color: #1a1a1a;
  background: #ffffff;
  border: 1px solid rgba(0,0,0,0.08);
  border-radius: 20px;
  padding: 5px 10px 5px 14px;
  text-decoration: none;
  transition: border-color 0.2s ease, background 0.2s ease;
}

.ft-filter-pill:hover {
  border-color: rgba(0,0,0,0.18);
  background: #faf8f6;
}

.ft-filter-pill svg {
  width: 11px;
  height: 11px;
  color: #b5b0a8;
  flex-shrink: 0;
}

.ft-filter-pill:hover svg {
  color: #756f68;
}

.ft-filter-pill-wrap {
  padding: 0.9rem 0 0.25rem;
}

/* =========================================================
   ARCHIVE MOBILE OVERRIDES
   ---------------------------------------------------------
   Tighten the filter nav, breadcrumb, and spacing for
   archive pages where category cards are hidden.
   ========================================================= */

/* Tablets — tighten filter nav */
@media (max-width: 1024px) {
  body.tax-product_tag .ft-filter-nav,
  body.tax-product_cat .ft-filter-nav {
    padding-top: 1rem;
    padding-bottom: 1.5rem;
  }

  body.tax-product_tag .ft-filter-nav__heading,
  body.tax-product_cat .ft-filter-nav__heading {
    margin-bottom: 1.25rem;
    font-size: 1.05rem;
  }
}

/* Mobile — comprehensive tightening */
@media (max-width: 640px) {

  /* Container */
  body.tax-product_tag .ft-shop-container,
  body.tax-product_cat .ft-shop-container {
    padding: 0 1rem !important;
  }

  /* Filter nav — reduce all vertical breathing room */
  body.tax-product_tag .ft-filter-nav,
  body.tax-product_cat .ft-filter-nav {
    padding-top: 0.25rem !important;
    padding-bottom: 0.75rem !important;
  }

  

  /* --- TABS: 4-wide grid ---
     Equal-width columns keep everything symmetrical.
     Reduced font-size + letter-spacing fits on 375px.
     Each cell gets its own bottom border so the active
     underline works per-cell, not across the full row. */
  body.tax-product_tag .ft-filter-tabs,
  body.tax-product_cat .ft-filter-tabs {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    flex-wrap: nowrap !important;
    border-bottom: none !important;
    gap: 0 !important;
  }

  

  

  /* --- PILL: centered --- */
  .ft-filter-pill-wrap {
    display: flex !important;
    justify-content: center !important;
    padding: 0.6rem 0 0 !important;
  }

  .ft-filter-pill {
    font-size: 0.65rem !important;
    padding: 4px 9px 4px 11px !important;
  }

  /* --- FILTER PANELS: keep 2-col side by side ---
     The lists are short enough to sit side by side
     even on 375px. Tighter gaps + smaller type. */
  

  

  

  

  

  /* Breadcrumb — tighter top margin */
  .ft-breadcrumb-bar {
    padding: 0.5rem 1rem 0 !important;
    font-size: 0.7rem !important;
  }
}

/* Ultra-narrow (< 360px) — fall back to 2×2 grid */
@media (max-width: 359px) {
  

  
}

/* --- PAGE BACKGROUND & HIDDEN DEFAULTS --- */

/* =========================================================
   RESPONSIVE GRID
   ========================================================= */

/* Phone: 1 column */
@media (max-width: 767px) {
  
}

/* Tablet: 2 columns */
@media (min-width: 768px) and (max-width: 1199px) {
  
}

/* Desktop: 3 columns */
@media (min-width: 1200px) and (max-width: 1599px) {
  
}

/* Large: 4 columns */
@media (min-width: 1600px) {
  
}

/* --- CARD CONTAINER --- */

/* --- PRODUCT TITLE ---
   Scoped to article.ft-shop (2026-09-17): without it these
   rules also caught the footer's .x-text-headline column
   headings on category/tag archive pages. */

body.tax-product_tag article.ft-shop .x-text-headline,
body.tax-product_cat article.ft-shop .x-text-headline {
  display: block;
  text-align: center !important;
  text-decoration: none;
  margin-bottom: 0.15em;
}

/* Beige accent line below title */

/* --- DESCRIPTION ---
   .x-text-content-text-subheadline scoped to article.ft-shop
   (2026-09-17) for the same reason as the title above. */

body.tax-product_tag article.ft-shop .x-text.x-content,
body.tax-product_cat article.ft-shop .x-text.x-content {
  font-family: 'Outfit', sans-serif !important;
  font-size: 0.7rem !important;
  font-weight: 300 !important;
  color: #bbb !important;
  text-align: center;
  line-height: 1.5;
  letter-spacing: 0.02em;
  margin-bottom: 1rem;
}

/* Center the card content area + flex column to pin Quick Add to bottom */

/* =========================================================
   FORM WRAPPER — HIDDEN BY DEFAULT, REVEALED BY QUICK ADD
   ========================================================= */

/* --- HIDE VARIATION LABEL & CLEAR LINK --- */

/* --- VARIATION DROPDOWN --- */

/* Custom chevron */

/* --- STOCK LABELS --- */

/* =========================================================
   PURCHASE CONTROLS — HIDDEN UNTIL VARIATION SELECTED
   ========================================================= */

/* --- PRICE — CORMORANT ITALIC, MATCHES SHOP PAGE ---
   Updated 2026-07-26: archives kept the original Outfit
   1.05rem style after the shop page price was upgraded to
   Cormorant italic (April 2026). Unified here so shop, tag,
   and category prices all match; product pages stay 1.7rem. */

/* Guest state of the injected simple price — the "Log In to
   View Prices" link should blend with the price treatment
   instead of picking up the global pink link style.
   (Added 2026-07-26 alongside the restored simple-price JS.) */

/* --- QUANTITY CONTROLS --- */

/* --- ADD TO CART BUTTON --- */

/* --- SIMPLE PRODUCTS: BUTTON ALWAYS VISIBLE --- */

/* --- MOBILE --- */

@media (max-width: 768px) {

  

  

  
}

/* =========================================================
   BREADCRUMB BAR — Shop › Category Name
   ---------------------------------------------------------
   Injected by JS above the product grid on archive pages.
   ========================================================= */

.ft-breadcrumb-bar {
  max-width: 1400px;
  margin: 0 auto;
  padding: 0.9rem 1.5rem 0.2rem;
  display: flex;
  align-items: center;
  gap: 0.45em;
  font-family: 'Outfit', sans-serif;
  font-size: 0.78rem;
  font-weight: 300;
  letter-spacing: 0.01em;
}

.ft-bc-link {
  color: #999;
  text-decoration: none;
  transition: color 0.2s ease;
}

.ft-bc-link:hover {
  color: #1a1a1a;
}

.ft-bc-sep {
  color: #ccc;
  font-size: 0.7rem;
}

.ft-bc-current {
  color: #1a1a1a;
  font-weight: 400;
}

@media (max-width: 767px) {
  .ft-breadcrumb-bar {
    padding: 0.7rem 1rem 0;
    font-size: 0.72rem;
  }
}

/* =========================================================
   FIXES — Card text alignment
   ---------------------------------------------------------
   2026-09-17: the old `.e4261631-e4.x-line` hide rule that
   lived here was removed — that footer element no longer
   exists after the footer rebuild (IDs are now e4288302).
   ========================================================= */

/* Force center-align all card text at all widths.
   Cornerstone's m2jcqp-k sets max-width: 18em on the
   title link, causing left-align when the card is wider.
   These rules target every text element inside ft-shop
   cards with enough specificity to override Cornerstone. */

body.tax-product_tag article.ft-shop .x-text-content-text-primary,
body.tax-product_cat article.ft-shop .x-text-content-text-primary {
  text-align: center !important;
}

body.tax-product_tag article.ft-shop .x-text-headline,
body.tax-product_cat article.ft-shop .x-text-headline {
  text-align: center !important;
  max-width: none !important;
}

body.tax-product_tag article.ft-shop .x-text.x-content,
body.tax-product_cat article.ft-shop .x-text.x-content {
  text-align: center !important;
}

body.tax-product_tag article.ft-shop .x-text p,
body.tax-product_cat article.ft-shop .x-text p {
  text-align: center !important;
}

/* =========================================================
   MADE TO ORDER — labels, Quick Add state, toggle, explainer
   ---------------------------------------------------------
   Complete MTO block for the Shop Archive Pages CSS
   snippet. Elements injected by the Quick Add JS from
   window.ftMtoFlagged (MTO Archive Flagging PHP snippet).
   ========================================================= */

/* --- Card label --- */
.ft-mto-label {
  display: block;
  font-family: 'Outfit', sans-serif;
  font-size: 0.62rem;
  font-weight: 300;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #b5b0a8;
  text-align: center;
  margin: 0 0 0.5rem;
}

/* Pin the MTO label to the bottom cluster with Quick Add --
   the description absorbs height differences instead */
body.tax-product_tag article.ft-shop > article.x-div .x-text.x-content,
body.tax-product_cat article.ft-shop > article.x-div .x-text.x-content {
  flex-grow: 1;
}

/* Card open: the button says it -- drop the duplicate label */
article.ft-shop.ft-quick-add-open .ft-mto-label {
  display: none;
}

/* --- Quick Add: request-only variations ---
   State class lives on the FORM (survives Woo's
   .single_variation innerHTML re-renders). Hides the
   purchase controls, shows the view-product link. */

form.cart.ft-qa-mto-active .quantity,
form.cart.ft-qa-mto-active .single_add_to_cart_button {
  display: none !important;
}

/* MTO state: kill contradictory stock text (plugin does the
   same on product pages; Quick Add drawer needs it too) */
form.cart.ft-qa-mto-active .woocommerce-variation-availability,
form.cart.ft-qa-mto-active .stock {
  display: none !important;
}

.ft-qa-mto-link {
  display: none;
  font-family: 'Outfit', sans-serif;
  font-size: 0.7rem;
  font-weight: 400;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-align: center;
  color: #756f68;
  text-decoration: none;
  padding: 0.65rem 0;
  border: 1px solid rgba(0,0,0,0.12);
  border-radius: 10px;
  transition: border-color 0.25s ease, color 0.25s ease;
}

form.cart.ft-qa-mto-active .ft-qa-mto-link {
  display: block;
}

.ft-qa-mto-link:hover {
  border-color: #756f68;
  color: #565049;
}

/* =========================================================
   MTO EXCLUDE TOGGLE + EXPLAINER
   ---------------------------------------------------------
   Column wrap: pill row (hairline rules to a white pill)
   on top, explainer text centered beneath.
   ========================================================= */

.ft-mto-toggle-wrap {
  max-width: 1400px;
  margin: 0 auto;
  padding: 1.1rem 1.5rem 0.9rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}

/* Pill row with hairline rules on both sides */
.ft-mto-toggle-row {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 1.25rem;
}

.ft-mto-toggle-row::before,
.ft-mto-toggle-row::after {
  content: "";
  flex: 1;
  height: 1px;
  background: #e5e0db;
}

/* The pill */
.ft-mto-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: #ffffff;
  border: 1px solid rgba(0,0,0,0.1);
  border-radius: 24px;
  padding: 9px 20px;
  cursor: pointer;
  font-family: 'Outfit', sans-serif;
  font-size: 0.72rem;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #756f68;
  white-space: nowrap;
  transition: border-color 0.25s ease, color 0.25s ease;
}

.ft-mto-toggle:hover {
  border-color: rgba(0,0,0,0.22);
  color: #565049;
}

.ft-mto-toggle-box {
  display: inline-block;
  width: 15px;
  height: 15px;
  border: 1px solid #c9c4bc;
  border-radius: 4px;
  background: #ffffff;
  position: relative;
  flex-shrink: 0;
  transition: border-color 0.2s ease, background 0.2s ease;
}

.ft-mto-toggle--on {
  color: #1a1a1a;
  border-color: rgba(0,0,0,0.18);
}

.ft-mto-toggle--on .ft-mto-toggle-box {
  background: #756f68;
  border-color: #756f68;
}

.ft-mto-toggle--on .ft-mto-toggle-box::after {
  content: "";
  position: absolute;
  left: 4.5px;
  top: 1.5px;
  width: 4px;
  height: 8px;
  border: solid #ffffff;
  border-width: 0 1.5px 1.5px 0;
  transform: rotate(45deg);
}

/* Explainer beneath the pill */
.ft-mto-explainer {
  max-width: 560px;
  margin: 0;
  padding: 0;
  font-family: 'Outfit', sans-serif;
  font-size: 0.9rem;
  font-weight: 300;
  letter-spacing: 0.02em;
  line-height: 1.6;
  color: #999;
  text-align: center;
}

/* The hide itself */
.x-row-inner.ft-hide-mto article.ft-mto {
  display: none !important;
}

@media (max-width: 640px) {
  .ft-mto-toggle-wrap {
    padding: 0.9rem 1rem 0.7rem;
    gap: 0.6rem;
  }

  .ft-mto-toggle {
    font-size: 0.62rem;
    padding: 8px 14px;
    white-space: normal;
    text-align: left;
    letter-spacing: 0.08em;
  }

  .ft-mto-explainer {
    font-size: 0.9rem;
  }
}

/* ─────────────── PART 2 — shop + mirrored archive rules (from 4284456) ─────────────── */

/* =========================================================
   FT — SHOP PAGE (PRODUCT LOOP + QUICK ADD)
   ---------------------------------------------------------
   Scope:   Main shop page only, scoped via
            body.post-type-archive-product
   Purpose: Styles the Looper/Consumer-based shop page as
            a luxury editorial product grid with inline
            variation selection via Quick Add. Cards stay
            clean and editorial by default — the add-to-cart
            form is hidden until the user clicks "Quick Add",
            then quantity controls, price, and button fade in
            once a variation is selected.

   What this does:
   1. PAGE — White background, hides default WooCommerce
      sorting, grid toggle, and result count.
   2. CARD — Clean edges, subtle neutral shadow, white bg.
   3. TITLE — Cormorant Garamond italic, centered, with
      warm beige (#c4a882) accent line.
   4. DESCRIPTION — Minimized: 0.7rem, #bbb, Outfit 300.
   5. QUICK ADD TRIGGER — Beige circle-plus icon + text,
      toggles form visibility on click.
   6. DROPDOWN — Quiet pill-shaped select. Label and "Clear"
      link hidden. Custom chevron.
   7. PURCHASE CONTROLS — For variable products, quantity
      and button are hidden until a variation is selected
      (class .ft-variation-selected on the wrap), then
      fade in. For simple products, the button is always
      visible.
   8. STOCK — "In stock" hidden. Out-of-stock shows as
      minimal quiet uppercase label in muted gray.
   9. QUANTITY — Ultra-light editorial +/- glyphs, centered.
   10. BUTTON — Warm taupe, full-width, hover lift.
   11. PRICE — Cormorant Garamond italic pink (matches
       single product page treatment), centered.
   12. COLOR ACCURACY — Pure white image area and card bg.

   ---------------------------------------------------------
   REVISION 2026-08-13
   Card-only rules that were scoped to the page rather than
   to the card were leaking into the site-wide footer, which
   also uses Cornerstone .x-text-headline / subheadline
   classes. Symptom: the footer column headings (SHOP, LEARN,
   PRODUCTS, SERVICE) centered themselves inside their grid
   cells on /shop/ only, while the menu links stayed left.

   Fixed by adding `article.ft-shop` to:
     - .x-text-headline (block, h2, and h2::after)
     - .x-text-content-text-subheadline

   RULE OF THUMB for future edits to this file: anything that
   styles a *card* must carry `article.ft-shop`. Only true
   page-level rules (.site background, .woocommerce-ordering,
   .x-row-inner, filter nav) may be scoped to the body class
   alone.
   ========================================================= */

/* --- PAGE BACKGROUND & HIDDEN DEFAULTS --- */

body.post-type-archive-product .site,
body.tax-product_cat .site,
body.tax-product_tag .site {
  background-color: #ffffff;
}

body.post-type-archive-product .woocommerce-ordering,
body.tax-product_cat .woocommerce-ordering,
body.tax-product_tag .woocommerce-ordering {
  display: none;
}

body.post-type-archive-product .pl-grid-table,
body.tax-product_cat .pl-grid-table,
body.tax-product_tag .pl-grid-table {
  display: none;
}

body.post-type-archive-product .woocommerce-result-count,
body.tax-product_cat .woocommerce-result-count,
body.tax-product_tag .woocommerce-result-count {
  display: none;
}

/* =========================================================
   RESPONSIVE GRID — OVERRIDES CORNERSTONE ROW LAYOUT
   ---------------------------------------------------------
   Cornerstone's Row element uses inline flex widths that
   don't have enough breakpoints. These rules take full
   control of the product grid columns.

   Phone  (<768px):      1 column
   Tablet (768–1199px):  2 columns
   Desktop (1200–1599px): 3 columns
   Large  (1600px+):     4 columns
   ========================================================= */

body.post-type-archive-product .x-row-inner,
body.tax-product_cat .x-row-inner,
body.tax-product_tag .x-row-inner {
  display: flex !important;
  flex-wrap: wrap !important;
  column-gap: 1.5rem !important;
  row-gap: 2rem !important;
  justify-content: center !important;
  margin: 0 auto !important;
  max-width: 1400px !important;
  padding: 0 1.5rem !important;
}

body.post-type-archive-product .x-row-inner > article.ft-shop,
body.tax-product_cat .x-row-inner > article.ft-shop,
body.tax-product_tag .x-row-inner > article.ft-shop {
  flex: none !important;
  max-width: none !important;
}

/* Phone: 1 column */
@media (max-width: 767px) {
  body.post-type-archive-product .x-row-inner > article.ft-shop,
body.tax-product_cat .x-row-inner > article.ft-shop,
body.tax-product_tag .x-row-inner > article.ft-shop {
    width: 100% !important;
  }
}

/* Tablet: 2 columns */
@media (min-width: 768px) and (max-width: 1199px) {
  body.post-type-archive-product .x-row-inner > article.ft-shop,
body.tax-product_cat .x-row-inner > article.ft-shop,
body.tax-product_tag .x-row-inner > article.ft-shop {
    width: calc(50% - 0.75rem) !important;
  }
}

/* Desktop: 3 columns */
@media (min-width: 1200px) and (max-width: 1599px) {
  body.post-type-archive-product .x-row-inner > article.ft-shop,
body.tax-product_cat .x-row-inner > article.ft-shop,
body.tax-product_tag .x-row-inner > article.ft-shop {
    width: calc(33.333% - 1rem) !important;
  }
}

/* Large: 4 columns */
@media (min-width: 1600px) {
  body.post-type-archive-product .x-row-inner > article.ft-shop,
body.tax-product_cat .x-row-inner > article.ft-shop,
body.tax-product_tag .x-row-inner > article.ft-shop {
    width: calc(25% - 1.125rem) !important;
  }
}

/* --- CARD CONTAINER --- */

body.post-type-archive-product article.x-col,
body.tax-product_cat article.x-col,
body.tax-product_tag article.x-col {
  background: #ffffff;
  border: 1px solid rgba(0,0,0,0.06);
  border-radius: 0;
  box-shadow: 0 .25em 1.25em 0 rgba(54,69,79,0.05),
              0 .33em 2.5em 0 rgba(54,69,79,0.05);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* --- PRODUCT TITLE ---
   Scoped to article.ft-shop (2026-08-13): without it these
   rules also caught the footer's .x-text-headline column
   headings on the shop page. */

body.post-type-archive-product article.ft-shop .x-text-headline {
  display: block;
  text-align: center !important;
  text-decoration: none;
  margin-bottom: 0.15em;
}

body.post-type-archive-product article.ft-shop .x-text-headline h2,
body.tax-product_cat article.ft-shop .x-text-headline h2,
body.tax-product_tag article.ft-shop .x-text-headline h2 {
  font-family: 'Cormorant Garamond', serif !important;
  font-style: italic;
  font-size: 1.3rem;
  font-weight: 400;
  color: #1a1a1a;
  margin: 0;
  line-height: 1.3;
}

/* Beige accent line below title */
body.post-type-archive-product article.ft-shop .x-text-headline h2::after,
body.tax-product_cat article.ft-shop .x-text-headline h2::after,
body.tax-product_tag article.ft-shop .x-text-headline h2::after {
  content: "";
  display: block;
  width: 26px;
  height: 1px;
  background: #c4a882;
  margin: 0.3em auto 0.9em;
}

/* --- DESCRIPTION ---
   .x-text-content-text-subheadline scoped to article.ft-shop
   (2026-08-13) for the same reason as the title above. */

body.post-type-archive-product article.ft-shop .x-text.x-content,
body.post-type-archive-product article.ft-shop .x-text-content-text-subheadline,
body.tax-product_cat article.ft-shop .x-text-content-text-subheadline,
body.tax-product_tag article.ft-shop .x-text-content-text-subheadline {
  font-family: 'Outfit', sans-serif !important;
  font-size: 0.7rem !important;
  font-weight: 300 !important;
  color: #bbb !important;
  text-align: center;
  line-height: 1.5;
  letter-spacing: 0.02em;
  margin-bottom: 1rem;
}

/* Center the card content area + flex column to pin Quick Add to bottom */
body.post-type-archive-product article.ft-shop > article.x-div,
body.tax-product_cat article.ft-shop > article.x-div,
body.tax-product_tag article.ft-shop > article.x-div {
  text-align: center;
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}

/* =========================================================
   QUICK ADD TRIGGER
   ========================================================= */

.ft-quick-add-trigger {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  padding: 0 0 6px;
  border: none;
  background: none;
  margin: auto auto 0;
  font-family: 'Outfit', sans-serif;
  font-size: 0.72rem;
  font-weight: 400;
  letter-spacing: 0.05em;
  color: #b5b0a8;
  transition: color 0.25s ease;
}

.ft-quick-add-trigger:hover {
  color: #756f68;
}

/* Icon sizing */
.ft-quick-add-trigger .ft-qa-icon-open,
.ft-quick-add-trigger .ft-qa-icon-close {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
}

/* Show plus by default, hide × */
.ft-quick-add-trigger .ft-qa-icon-close {
  display: none;
}

.ft-quick-add-trigger .ft-qa-icon-open {
  display: block;
}

/* Swap icons when open */
.ft-quick-add-open .ft-quick-add-trigger .ft-qa-icon-open {
  display: none;
}

.ft-quick-add-open .ft-quick-add-trigger .ft-qa-icon-close {
  display: block;
}

/* Icon hover */
.ft-quick-add-trigger:hover svg circle,
.ft-quick-add-trigger:hover svg line {
  stroke: #756f68;
}

/* =========================================================
   FORM WRAPPER — HIDDEN BY DEFAULT, REVEALED BY QUICK ADD
   ========================================================= */

body.post-type-archive-product article.ft-shop .x-wc-add-to-cart-form,
body.tax-product_cat article.ft-shop .x-wc-add-to-cart-form,
body.tax-product_tag article.ft-shop .x-wc-add-to-cart-form {
  display: none;
  padding: 0 1.4rem 1.4rem;
  text-align: left;
}

body.post-type-archive-product article.ft-shop.ft-quick-add-open .x-wc-add-to-cart-form,
body.tax-product_cat article.ft-shop.ft-quick-add-open .x-wc-add-to-cart-form,
body.tax-product_tag article.ft-shop.ft-quick-add-open .x-wc-add-to-cart-form {
  display: block;
}

/* --- HIDE VARIATION LABEL & CLEAR LINK --- */

body.post-type-archive-product table.variations th.label,
body.tax-product_cat table.variations th.label,
body.tax-product_tag table.variations th.label {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

body.post-type-archive-product .reset_variations,
body.tax-product_cat .reset_variations,
body.tax-product_tag .reset_variations {
  display: none !important;
}

/* --- VARIATION DROPDOWN --- */

body.post-type-archive-product table.variations,
body.tax-product_cat table.variations,
body.tax-product_tag table.variations {
  width: 100%;
  border: none;
  margin-bottom: 0.5em;
}

body.post-type-archive-product table.variations tr,
body.tax-product_cat table.variations tr,
body.tax-product_tag table.variations tr {
  display: block;
  margin-bottom: 0;
}

body.post-type-archive-product table.variations td.value,
body.tax-product_cat table.variations td.value,
body.tax-product_tag table.variations td.value {
  display: block;
  width: 100%;
  padding: 0;
  border: none;
  position: relative;
}

body.post-type-archive-product table.variations select,
body.tax-product_cat table.variations select,
body.tax-product_tag table.variations select {
  width: 100%;
  height: 42px;
  padding: 0 40px 0 16px;
  font-family: 'Outfit', sans-serif;
  font-size: 0.78rem;
  font-weight: 300;
  color: #999;
  border-radius: 12px;
  border: 1px solid rgba(0,0,0,0.08);
  background: #fff;
  box-shadow: none;
  appearance: none;
  transition: border-color 0.25s ease;
}

body.post-type-archive-product table.variations select:focus,
body.tax-product_cat table.variations select:focus,
body.tax-product_tag table.variations select:focus {
  outline: none;
  border-color: rgba(58,58,58,0.4);
}

/* Custom chevron */
body.post-type-archive-product table.variations td.value::after,
body.tax-product_cat table.variations td.value::after,
body.tax-product_tag table.variations td.value::after {
  content: "";
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 12px;
  height: 12px;
  pointer-events: none;
  background-repeat: no-repeat;
  background-size: contain;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23cccccc' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
}

/* --- STOCK LABELS --- */

body.post-type-archive-product .stock.in-stock,
body.tax-product_cat .stock.in-stock,
body.tax-product_tag .stock.in-stock {
  display: none !important;
}

body.post-type-archive-product .stock.out-of-stock,
body.tax-product_cat .stock.out-of-stock,
body.tax-product_tag .stock.out-of-stock,
body.post-type-archive-product .stock.available-on-backorder,
body.tax-product_cat .stock.available-on-backorder,
body.tax-product_tag .stock.available-on-backorder {
  font-family: 'Outfit', sans-serif;
  font-size: 0.72rem;
  font-weight: 400;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #999;
  text-align: center;
  margin-top: 4px;
}

/* =========================================================
   PURCHASE CONTROLS — HIDDEN UNTIL VARIATION SELECTED
   ---------------------------------------------------------
   JS adds .ft-variation-selected to .single_variation_wrap
   when WooCommerce fires 'found_variation', removes it on
   'reset_data'. This replaces the old [style*="display: block"]
   approach which WooCommerce never actually sets.
   ========================================================= */

body.post-type-archive-product .single_variation_wrap,
body.tax-product_cat .single_variation_wrap,
body.tax-product_tag .single_variation_wrap {
  opacity: 0;
  max-height: 0;
  overflow: hidden;
  pointer-events: none;
  transition: opacity 0.35s ease, max-height 0.4s ease;
}

body.post-type-archive-product .single_variation_wrap.ft-variation-selected,
body.tax-product_cat .single_variation_wrap.ft-variation-selected,
body.tax-product_tag .single_variation_wrap.ft-variation-selected {
  opacity: 1;
  max-height: 200px;
  pointer-events: auto;
}

/* --- PRICE — CORMORANT ITALIC, MATCHES PRODUCT PAGE --- */

body.post-type-archive-product .price,
body.tax-product_cat .price,
body.tax-product_tag .price,
body.post-type-archive-product .woocommerce-variation-price .price,
body.tax-product_cat .woocommerce-variation-price .price,
body.tax-product_tag .woocommerce-variation-price .price,
body.post-type-archive-product .ft-simple-price,
body.tax-product_cat .ft-simple-price,
body.tax-product_tag .ft-simple-price {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  font-size: 1.4rem;
  color: #f58aa0;
  letter-spacing: 0.02em;
  text-align: center;
  margin-bottom: 0.5em;
}

/* Guest state of the injected simple price — the "Log In to
   View Prices" link should blend with the price treatment
   instead of picking up the global pink link style.
   (Added 2026-07-26 alongside the restored simple-price JS.) */
body.post-type-archive-product .ft-simple-price--guest a,
body.tax-product_cat .ft-simple-price--guest a,
body.tax-product_tag .ft-simple-price--guest a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid #c4a882;
}

/* --- QUANTITY CONTROLS --- */

body.post-type-archive-product input[type="number"],
body.tax-product_cat input[type="number"],
body.tax-product_tag input[type="number"] {
  -moz-appearance: textfield;
  appearance: textfield;
}

body.post-type-archive-product input[type="number"]::-webkit-inner-spin-button,
body.tax-product_cat input[type="number"]::-webkit-inner-spin-button,
body.tax-product_tag input[type="number"]::-webkit-inner-spin-button,
body.post-type-archive-product input[type="number"]::-webkit-outer-spin-button,
body.tax-product_cat input[type="number"]::-webkit-outer-spin-button,
body.tax-product_tag input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

body.post-type-archive-product .quantity,
body.tax-product_cat .quantity,
body.tax-product_tag .quantity {
  display: inline-flex;
  align-items: center;
  gap: 0;
  justify-content: center;
  width: 100%;
  margin-bottom: 0.4em;
}

body.post-type-archive-product .qty-btn,
body.tax-product_cat .qty-btn,
body.tax-product_tag .qty-btn {
  width: 28px;
  height: 28px;
  background: transparent;
  border: none;
  color: rgba(0,0,0,0.3);
  font-size: 14px;
  font-weight: 400;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: color 0.15s ease;
}

body.post-type-archive-product .qty-btn:hover,
body.tax-product_cat .qty-btn:hover,
body.tax-product_tag .qty-btn:hover {
  color: rgba(0,0,0,0.65);
}

body.post-type-archive-product .quantity input.qty,
body.tax-product_cat .quantity input.qty,
body.tax-product_tag .quantity input.qty {
  width: 36px;
  height: 28px;
  background: transparent;
  border: none;
  color: #3a3a3a;
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 500;
  text-align: center;
  padding: 0;
  margin: 0 4px;
  box-shadow: none;
}

body.post-type-archive-product .quantity input.qty:focus,
body.tax-product_cat .quantity input.qty:focus,
body.tax-product_tag .quantity input.qty:focus {
  outline: none;
  border-bottom: 1px solid rgba(0,0,0,0.25);
}

/* --- ADD TO CART BUTTON --- */

body.post-type-archive-product .single_add_to_cart_button,
body.tax-product_cat .single_add_to_cart_button,
body.tax-product_tag .single_add_to_cart_button {
  -webkit-appearance: none;
  appearance: none;
  display: block;
  width: 100%;
  height: 40px;
  background-color: #756f68;
  color: #ffffff;
  border: none;
  border-radius: 10px;
  font-family: 'Outfit', sans-serif;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: capitalize;
  box-shadow: 0 6px 16px rgba(0,0,0,0.08);
  transition:
    background-color 0.25s ease,
    transform 0.25s ease,
    box-shadow 0.25s ease;
  cursor: pointer;
}

body.post-type-archive-product .single_add_to_cart_button:hover,
body.tax-product_cat .single_add_to_cart_button:hover,
body.tax-product_tag .single_add_to_cart_button:hover {
  background-color: #847d76;
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(0,0,0,0.12);
}

body.post-type-archive-product .single_add_to_cart_button:active,
body.tax-product_cat .single_add_to_cart_button:active,
body.tax-product_tag .single_add_to_cart_button:active {
  transform: translateY(0);
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}

/* --- SIMPLE PRODUCTS: BUTTON ALWAYS VISIBLE --- */

body.post-type-archive-product .product_type_simple.add_to_cart_button,
body.tax-product_cat .product_type_simple.add_to_cart_button,
body.tax-product_tag .product_type_simple.add_to_cart_button {
  -webkit-appearance: none;
  appearance: none;
  display: block;
  width: 100%;
  height: 40px;
  background-color: #756f68;
  color: #ffffff;
  border: none;
  border-radius: 10px;
  font-family: 'Outfit', sans-serif;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: capitalize;
  box-shadow: 0 6px 16px rgba(0,0,0,0.08);
  transition:
    background-color 0.25s ease,
    transform 0.25s ease,
    box-shadow 0.25s ease;
  cursor: pointer;
}

body.post-type-archive-product .product_type_simple.add_to_cart_button:hover,
body.tax-product_cat .product_type_simple.add_to_cart_button:hover,
body.tax-product_tag .product_type_simple.add_to_cart_button:hover {
  background-color: #847d76;
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(0,0,0,0.12);
}

/* --- MOBILE --- */

@media (max-width: 768px) {

  body.post-type-archive-product .single_add_to_cart_button,
body.tax-product_cat .single_add_to_cart_button,
body.tax-product_tag .single_add_to_cart_button,
body.post-type-archive-product .product_type_simple.add_to_cart_button,
body.tax-product_cat .product_type_simple.add_to_cart_button,
body.tax-product_tag .product_type_simple.add_to_cart_button {
    height: 44px;
    font-size: 0.75rem;
  }

  body.post-type-archive-product .qty-btn,
body.tax-product_cat .qty-btn,
body.tax-product_tag .qty-btn {
    width: 32px;
    height: 32px;
    font-size: 16px;
  }

  body.post-type-archive-product .quantity input.qty,
body.tax-product_cat .quantity input.qty,
body.tax-product_tag .quantity input.qty {
    width: 44px;
    height: 32px;
    font-size: 15px;
  }
}

/* =========================================================
   PATCH — Shop Page Fixes
   ========================================================= */

/* --- Hide stray Cornerstone line element ---
   NOTE 2026-08-13: e4261631 is the FOOTER section ID, so this
   rule hides a footer element on shop pages only. Left in
   place unchanged for now — verify on /shop/ whether a footer
   divider is missing that appears site-wide. If it is, this
   rule was compensating for the headline leak fixed above and
   can be deleted. */

/* --- Force center-align card text at all widths --- */
body.post-type-archive-product article.ft-shop > article.x-div .x-text,
body.post-type-archive-product article.ft-shop > article.x-div .x-text-headline {
  text-align: center !important;
}

body.post-type-archive-product article.ft-shop > article.x-div .x-text p {
  text-align: center !important;
}

/* =========================================================
   SHOP PAGE MOBILE OVERRIDES — Filter Nav
   ========================================================= */

@media (max-width: 640px) {

  /* --- TABS: 4-wide grid --- */
  body.post-type-archive-product .ft-filter-tabs {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    border-bottom: none !important;
    gap: 0 !important;
  }

  body.post-type-archive-product .ft-filter-tab,
body.tax-product_cat .ft-filter-tab,
body.tax-product_tag .ft-filter-tab {
    padding: 0.55rem 0 !important;
    font-size: 0.6rem !important;
    letter-spacing: 0.1em !important;
    text-align: center !important;
    border-bottom: 1px solid #e5e0db !important;
    white-space: nowrap !important;
  }

  body.post-type-archive-product .ft-filter-tab--active::after,
body.tax-product_cat .ft-filter-tab--active::after,
body.tax-product_tag .ft-filter-tab--active::after {
    bottom: -1px !important;
  }

  /* --- FILTER PANELS: keep 2-col side by side --- */
  body.post-type-archive-product .ft-filter-panel,
body.tax-product_cat .ft-filter-panel,
body.tax-product_tag .ft-filter-panel {
    padding: 0.75rem 0 0.25rem !important;
  }

  body.post-type-archive-product .ft-filter-panel__columns,
body.tax-product_cat .ft-filter-panel__columns,
body.tax-product_tag .ft-filter-panel__columns {
    flex-direction: row !important;
    gap: 1.25rem !important;
    padding: 0 !important;
  }

  body.post-type-archive-product .ft-filter-group,
body.tax-product_cat .ft-filter-group,
body.tax-product_tag .ft-filter-group {
    min-width: auto !important;
    flex: 1 !important;
  }

  body.post-type-archive-product .ft-filter-group__title,
body.tax-product_cat .ft-filter-group__title,
body.tax-product_tag .ft-filter-group__title {
    font-size: 0.9rem !important;
    margin-bottom: 0.5rem !important;
    padding-bottom: 0.35rem !important;
  }

  body.post-type-archive-product .ft-filter-link,
body.tax-product_cat .ft-filter-link,
body.tax-product_tag .ft-filter-link {
    font-size: 0.78rem !important;
    padding: 0.35rem 0.5rem !important;
  }

  /* --- FILTER NAV HEADING --- */
  body.post-type-archive-product .ft-filter-nav__heading,
body.tax-product_cat .ft-filter-nav__heading,
body.tax-product_tag .ft-filter-nav__heading {
    margin-bottom: 0.75rem !important;
    font-size: 0.95rem !important;
  }

  body.post-type-archive-product .ft-filter-nav {
    padding-bottom: 0.75rem !important;
  }

  /* --- CATEGORY CARDS: tighter text positioning --- */
  body.post-type-archive-product .ft-category-card__content {
    padding: 0.75rem !important;
  }

  body.post-type-archive-product .ft-category-card__title {
    font-size: 1.15rem !important;
    margin-bottom: 0.15rem !important;
  }

  body.post-type-archive-product .ft-category-card__subtitle {
    font-size: 0.58rem !important;
  }
}

/* Ultra-narrow (< 360px) — 2×2 grid fallback */
@media (max-width: 359px) {
  body.post-type-archive-product .ft-filter-tabs,
body.tax-product_cat .ft-filter-tabs,
body.tax-product_tag .ft-filter-tabs {
    grid-template-columns: repeat(2, 1fr) !important;
  }

  body.post-type-archive-product .ft-filter-tab,
body.tax-product_cat .ft-filter-tab,
body.tax-product_tag .ft-filter-tab {
    font-size: 0.58rem !important;
  }
}
