/* ==========================================================================
   FABRIQSTAR — widgets.css
   Extra styling needed only inside the Elementor/WooCommerce build (the
   HTML build's tokens/layout/components/pages CSS is untouched above this
   file, so the original design stays byte-for-byte identical).
   ========================================================================== */

/* ---- Full-screen search overlay (replaces the old "go to search page" click) ---- */
.fs-search-overlay{
  position:fixed; inset:0; z-index:1200; background:var(--paper);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; transform:translateY(-12px);
  transition:opacity .45s var(--ease), transform .45s var(--ease), visibility .45s;
}
.fs-search-overlay.is-open{ opacity:1; visibility:visible; transform:none; }
.fs-search-overlay__close{
  position:absolute; top:var(--sp-4); right:var(--sp-4);
  background:none; border:none; font-size:1.6rem; color:var(--ink);
}
.fs-search-overlay .search-hero{ width:min(720px,92vw); }

/* ---- Editor-only placeholders (Elementor preview when no live data yet) ---- */
.fs-editor-placeholder{
  border:1px dashed var(--sand-line); padding:var(--sp-4); text-align:center;
  color:var(--ink-soft); font-size:.85rem;
}

/* ---- Wedding Galleries: marquee mode toggle ---- */
.insta-grid.is-marquee{
  display:flex; gap:4px; overflow:hidden; flex-wrap:nowrap;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
          mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.insta-grid.is-marquee .fs-marquee-track{
  display:flex; gap:4px; animation: fs-gallery-marquee var(--fs-marquee-speed, 32s) linear infinite;
}
.insta-grid.is-marquee a{ flex:none; width:220px; aspect-ratio:1/1; }
@keyframes fs-gallery-marquee{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
.insta-grid.is-marquee:hover .fs-marquee-track{ animation-play-state:paused; }

/* ---- Quick view / quick add loading state ---- */
.fs-loading{ position:relative; pointer-events:none; opacity:.6; }
.fs-loading::after{
  content:''; position:absolute; inset:0; margin:auto; width:18px; height:18px;
  border:2px solid var(--sand-line); border-top-color:var(--gold-deep); border-radius:50%;
  animation:fs-spin .7s linear infinite;
}
@keyframes fs-spin{ to{ transform:rotate(360deg); } }

/* ---- Out of stock badge already exists as .badge--sold; alias for WC hook output ---- */
.fs-badge-outofstock{ background:var(--ink-soft); color:var(--cream-text); }

/* ---- Single Product (WooCommerce) — keep exact product-view/gallery/opt-group
        layout from pages.css, just make sure WC's own markup wrapper doesn't
        add unexpected spacing ---- */
.fabriqstar-single-product .woocommerce-product-gallery{ display:none; } /* replaced by our .gallery markup */
.fabriqstar-single-product form.cart{ margin:0; }
.fabriqstar-single-product .variations{ display:none; } /* replaced by our swatch-row / size-row UI, kept in sync via JS */
.fabriqstar-single-product .single_variation_wrap{ display:none; }
.fabriqstar-single-product .woocommerce-message,
.fabriqstar-single-product .woocommerce-error{
  grid-column:1/-1; border:1px solid var(--sand-line); padding:1em 1.4em; margin-bottom:var(--sp-3); background:var(--paper-dim); list-style:none;
}

/* ---- Cart widget: keep pages.css .cart-page exactly, just neutralise
        WooCommerce's default table borders/shortcode wrapper spacing ---- */
.fabriqstar-cart-widget .woocommerce{ all:unset; display:contents; }
.fabriqstar-cart-widget table.shop_table{ display:none; } /* replaced entirely by our .cart-row markup */
.fabriqstar-cart-widget .cart-collaterals{ display:none; } /* replaced by our .order-summary markup */

/* ---- Checkout widget ---- */
.fs-checkout{ display:grid; grid-template-columns:1.5fr 1fr; gap:var(--sp-6); align-items:flex-start; padding-block:var(--sp-6); }
@media (max-width:960px){ .fs-checkout{ grid-template-columns:1fr; gap:var(--sp-4); } }
.fs-checkout-section{ margin-bottom:var(--sp-5); }
.fs-checkout-section h3{ margin-bottom:var(--sp-3); font-size:var(--text-lg); }
.fs-checkout-summary{ background:var(--paper-dim); padding:var(--sp-4); position:sticky; top:110px; }
.fs-checkout-summary .cart-line{ padding-block:var(--sp-2); }
.fs-checkout-summary .cart-line img{ width:56px; height:66px; }
.fs-coupon-row{ display:flex; gap:.6em; margin-top:var(--sp-3); }
.fs-coupon-row input{ flex:1; border:1px solid var(--sand-line); padding:.85em 1em; background:var(--paper); }
.fs-payment-methods{ border:1px solid var(--sand-line); }
.fs-payment-method{ padding:1em 1.2em; border-bottom:1px solid var(--sand-line); display:flex; align-items:flex-start; gap:.8em; }
.fs-payment-method:last-child{ border-bottom:none; }
.fs-payment-method input{ margin-top:.3em; accent-color:var(--gold-deep); }
.fs-payment-method label{ font-weight:600; font-size:var(--text-sm); }
.fs-payment-method .fs-payment-desc{ font-size:.82rem; color:var(--ink-soft); margin-top:.4em; font-weight:400; }
.fs-place-order{ width:100%; margin-top:var(--sp-3); height:56px; }

.fs-hidden{ display:none !important; }

/* ---- Checkout: restyle WooCommerce's own [woocommerce_checkout] shortcode
        output to match the site design, without touching its processing ---- */
.fs-checkout-wrap{ padding-block: var(--sp-6); }
.fs-checkout form.checkout.woocommerce-checkout{
  display:grid !important; grid-template-columns:1.5fr 1fr !important; gap:var(--sp-6); align-items:start;
}
.fs-checkout #customer_details{ grid-column:1 !important; grid-row:1 !important; width:auto !important; float:none !important; }
.fs-checkout #order_review_heading{ display:none !important; }

/* ---- Order Summary card: proper elevated panel with a generated heading
        (WooCommerce's own heading is hidden above; this pure-CSS heading
        avoids needing to touch the shortcode's markup at all) ---- */
.fs-checkout #order_review{
  grid-column:2 !important; grid-row:1/3 !important; position:sticky; top:110px; width:auto !important; float:none !important;
  background:var(--paper); border:1px solid var(--sand-line); border-top:3px solid var(--gold-deep);
  padding:var(--sp-5) var(--sp-4) var(--sp-4); box-shadow:var(--shadow-card);
}
.fs-checkout #order_review::before{
  content:"Order Summary"; display:block; font-family:var(--font-display); font-size:1.5rem;
  color:var(--ink); margin-bottom:var(--sp-3); padding-bottom:var(--sp-2); border-bottom:1px solid var(--sand-line);
}

.fs-checkout .col2-set, .fs-checkout .col-1, .fs-checkout .col-2{ width:auto !important; float:none !important; display:block; margin-bottom:var(--sp-4); }
.fs-checkout h3{ font-size:var(--text-lg); margin-bottom:var(--sp-3); font-family:var(--font-display); }
.fs-checkout .woocommerce-billing-fields,
.fs-checkout .woocommerce-shipping-fields,
.fs-checkout .woocommerce-additional-fields{ margin-bottom:var(--sp-5); }
.fs-checkout .form-row{ margin-bottom:var(--sp-3); }
.fs-checkout .form-row label{
  display:block; font-size:var(--text-xs); letter-spacing:.08em; text-transform:uppercase; margin-bottom:.6em; font-weight:600;
}
.fs-checkout .form-row .required{ color:var(--wine); text-decoration:none; }
.fs-checkout input.input-text,
.fs-checkout select,
.fs-checkout textarea{
  width:100% !important; border:1px solid var(--sand-line) !important; background:var(--paper);
  padding:.95em 1em; font-size:var(--text-base); font-family:var(--font-body);
  box-sizing:border-box; transition:border-color .25s;
}
.fs-checkout input.input-text:focus,
.fs-checkout select:focus,
.fs-checkout textarea:focus{ border-color:var(--gold-deep) !important; outline:none; }
.fs-checkout .select2-container .select2-selection--single{ height:auto; border:1px solid var(--sand-line); padding:.6em .5em; border-radius:0; }
.fs-checkout .select2-container--default .select2-selection--single .select2-selection__arrow{ height:100%; }

/* ---- Order review: reflow as simple flex rows — matches the cart page's
        "Order Summary" look (label left, value right, hairline dividers,
        a bigger Total row with its own top border) instead of an HTML
        table grid, which is what looked "off" before. ---- */
.fs-checkout .woocommerce-checkout-review-order-table,
.fs-checkout .woocommerce-checkout-review-order-table tbody,
.fs-checkout .woocommerce-checkout-review-order-table tfoot,
.fs-checkout .woocommerce-checkout-review-order-table tr,
.fs-checkout .woocommerce-checkout-review-order-table th,
.fs-checkout .woocommerce-checkout-review-order-table td{
  border:none !important; background:none !important; box-shadow:none !important;
}
.fs-checkout .woocommerce-checkout-review-order-table{ width:100%; margin-bottom:0; }
.fs-checkout .woocommerce-checkout-review-order-table thead{ display:none !important; }
.fs-checkout .woocommerce-checkout-review-order-table tbody,
.fs-checkout .woocommerce-checkout-review-order-table tfoot{ display:block !important; width:100%; }
.fs-checkout .woocommerce-checkout-review-order-table tr{
  display:flex !important; justify-content:space-between; align-items:flex-start; gap:1em;
  width:100%; padding-block:.7em; border-bottom:1px solid var(--sand-line) !important;
}
.fs-checkout .woocommerce-checkout-review-order-table th,
.fs-checkout .woocommerce-checkout-review-order-table td{
  display:block !important; padding:0 !important; font-size:var(--text-sm); text-align:left;
}
.fs-checkout .woocommerce-checkout-review-order-table .product-name{ font-family:var(--font-display); font-size:1.02rem; flex:1; }
.fs-checkout .woocommerce-checkout-review-order-table .product-name .product-quantity{ color:var(--ink-soft); font-family:var(--font-body); font-size:.85rem; }
.fs-checkout .woocommerce-checkout-review-order-table .product-total{ font-weight:600; white-space:nowrap; }
.fs-checkout .woocommerce-checkout-review-order-table tfoot th{ color:var(--ink-soft); font-weight:500; }
.fs-checkout .woocommerce-checkout-review-order-table tfoot td{ font-weight:600; white-space:nowrap; }
.fs-checkout .woocommerce-checkout-review-order-table tfoot tr:last-child{
  border-bottom:none !important; border-top:1px solid var(--sand-line) !important;
  padding-top:var(--sp-2); margin-top:.2em;
}
.fs-checkout .woocommerce-checkout-review-order-table tfoot tr:last-child th,
.fs-checkout .woocommerce-checkout-review-order-table tfoot tr:last-child td{
  font-family:var(--font-display); font-size:1.5rem; color:var(--ink); font-weight:500;
}

/* ---- Payment methods: proper selectable card rows, no default WC iconography ---- */
.fs-checkout #payment{ background:var(--paper-dim); border:1px solid var(--sand-line); border-radius:0; padding:0; margin-top:var(--sp-4); }
.fs-checkout ul.payment_methods{ list-style:none; margin:0; padding:0; }
.fs-checkout ul.payment_methods li.wc_payment_method{ padding:1.1em 1.3em; border-bottom:1px solid var(--sand-line); transition:background .2s; }
.fs-checkout ul.payment_methods li.wc_payment_method:last-of-type{ border-bottom:none; }
.fs-checkout ul.payment_methods li.wc_payment_method:has(input:checked){ background:var(--paper); }
.fs-checkout ul.payment_methods label{ font-weight:600; font-size:var(--text-sm); display:flex; align-items:center; gap:.7em; cursor:pointer; }
.fs-checkout ul.payment_methods label img{ height:20px; width:auto; margin-left:.3em; }
.fs-checkout ul.payment_methods input.input-radio{ accent-color:var(--gold-deep); width:16px; height:16px; flex:none; }
.fs-checkout .payment_box{ background:none !important; font-size:.85rem; color:var(--ink-soft); line-height:1.7; padding:.8em 0 .2em 1.9em; }
.fs-checkout .payment_box p{ background:none !important; margin:0 0 .6em; }
.fs-checkout .payment_box::before{ display:none !important; }

/* ---- "No payment methods" notice + coupon toggle: both use WooCommerce's
        generic .woocommerce-info class, which ships a dashicon ::before
        that renders as a broken glyph if dashicons aren't queued — replace
        with a clean bordered callout instead. ---- */
.fs-checkout .woocommerce-info{
  list-style:none; margin:0 0 var(--sp-3); padding:1.1em 1.4em;
  background:var(--paper-dim); border:1px solid var(--sand-line); border-left:3px solid var(--gold-deep);
  font-size:.85rem; color:var(--ink-soft); line-height:1.75;
}
.fs-checkout .woocommerce-info::before{ display:none !important; content:none !important; }
.fs-checkout .woocommerce-info a{ color:var(--ink); font-weight:600; text-decoration:underline; }

.fs-checkout .woocommerce-form-coupon-toggle{ margin-bottom:var(--sp-4); }
.fs-checkout .woocommerce-form-coupon-toggle .woocommerce-info{ cursor:pointer; }
.fs-checkout .checkout_coupon.woocommerce-form-coupon{
  display:flex; gap:.6em; border:1px solid var(--sand-line); padding:var(--sp-3); margin-bottom:var(--sp-4); background:var(--paper-dim);
}
.fs-checkout .checkout_coupon.woocommerce-form-coupon .form-row{ margin-bottom:0; flex:1; }
.fs-checkout .checkout_coupon.woocommerce-form-coupon .form-row-last{ flex:none; display:flex; align-items:flex-end; }
.fs-checkout .checkout_coupon .button{
  background:var(--ink); color:var(--paper); border:1px solid var(--ink); height:100%;
  padding:0 1.6em; font-size:var(--text-xs); letter-spacing:var(--tracking-wide); text-transform:uppercase; font-weight:600;
  transition:background .25s, border-color .25s;
}
.fs-checkout .checkout_coupon .button:hover{ background:var(--gold-deep); border-color:var(--gold-deep); }

.fs-checkout .woocommerce-privacy-policy-text{ font-size:.78rem; color:var(--ink-soft); line-height:1.75; margin:var(--sp-3) 0; }
.fs-checkout .woocommerce-privacy-policy-text a{ text-decoration:underline; color:var(--ink); }

.fs-checkout #payment .form-row.place-order{ padding:1.3em; }
.fs-checkout #place_order{
  width:100%; height:58px; background:var(--ink); color:var(--paper); border:1px solid var(--ink);
  font-size:var(--text-xs); letter-spacing:var(--tracking-wide); text-transform:uppercase; font-weight:600;
  transition:background .3s, border-color .3s;
}
.fs-checkout #place_order:hover{ background:var(--gold-deep); border-color:var(--gold-deep); cursor:pointer; }

.fs-checkout .woocommerce-error, .fs-checkout .woocommerce-message{
  grid-column:1/-1; list-style:none; border:1px solid var(--sand-line); border-left:3px solid var(--wine);
  padding:1em 1.4em; background:var(--paper-dim); margin-bottom:var(--sp-3); font-size:.9rem;
}
.fs-checkout .woocommerce-message{ border-left-color:var(--emerald); }
.fs-checkout .woocommerce-error::before, .fs-checkout .woocommerce-message::before{ display:none !important; }

@media (max-width:960px){
  .fs-checkout form.checkout.woocommerce-checkout{ grid-template-columns:1fr; }
  .fs-checkout #order_review{ grid-column:1; grid-row:auto; position:static; }
}

/* ---- Header widget layout fix: logo LEFT, menu CENTER, icons RIGHT (desktop only) ---- */
@media (min-width: 981px){
  .fs-header .header-inner{ grid-template-columns: auto 1fr auto; }
  .fs-header .header-inner > .logo{ order: 1; justify-self: start; }
  .fs-header .header-inner > nav{ order: 2; min-width: 0; }
  .fs-header .header-inner > nav .nav-primary{ justify-content: center; }
  .fs-header .header-inner > .header-actions{ order: 3; justify-self: end; }
}

/* ---- Pagination: paginate_links() output styled to match the button design,
        with flex-wrap so large page counts never overflow the viewport ---- */
.pagination{ flex-wrap: wrap; row-gap: .5em; }
.pagination .page-numbers{
  width:38px; height:38px; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--sand-line); font-size:var(--text-sm); text-decoration:none;
  color:var(--ink); transition:.25s; flex:none;
}
.pagination a.page-numbers:hover,
.pagination .page-numbers.current{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.pagination .page-numbers.dots{ border:none; width:auto; padding-inline:.3em; }

/* ---- Cart widget: WooCommerce's own real shipping calculator, restyled ---- */
.fs-shipping-calculator .shipping-calculator-button{
  font-size:.8rem; letter-spacing:.06em; text-transform:uppercase; font-weight:600; margin-bottom:.8em;
}
.fs-shipping-calculator .shipping-calculator-button a{ color:var(--ink); border-bottom:1px solid var(--ink); padding-bottom:.1em; }
.fs-shipping-calculator .shipping-calculator-form .form-row{ margin-bottom:var(--sp-2); }
.fs-shipping-calculator .shipping-calculator-form label{ display:block; font-size:.75rem; letter-spacing:.05em; text-transform:uppercase; margin-bottom:.5em; font-weight:600; }
.fs-shipping-calculator .shipping-calculator-form select,
.fs-shipping-calculator .shipping-calculator-form input{
  width:100%; border:1px solid var(--sand-line); background:var(--paper); padding:.8em .9em; font-size:var(--text-sm);
}
.fs-shipping-calculator .shipping-calculator-form button{
  width:100%; margin-top:.4em; height:46px; background:var(--ink); color:var(--paper); border:1px solid var(--ink);
  font-size:var(--text-xs); letter-spacing:var(--tracking-wide); text-transform:uppercase; font-weight:600;
}

/* ---- Shop by Category: mobile swipeable slider mode ---- */
@media (max-width: 760px){
  .category-grid.is-mobile-slider{
    display:flex !important; grid-template-columns:none !important;
    overflow-x:auto; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;
    padding-bottom:.6rem; scrollbar-width:none;
  }
  .category-grid.is-mobile-slider::-webkit-scrollbar{ display:none; }
  .category-grid.is-mobile-slider .category-tile{
    flex:0 0 calc((100% - (var(--fs-cat-mobile-items, 1) - 1) * var(--sp-2)) / var(--fs-cat-mobile-items, 1));
    scroll-snap-align:start;
  }
}

/* ---- Mobile Filters: off-canvas drawer (overrides components.css's plain
        display:none on mobile) — same slide-in pattern as the mobile nav
        and cart drawers, so it feels native to the rest of the site ---- */
.fs-mobile-filter-toggle{ display:none; }
@media (max-width: 900px){
  .collection-layout{ grid-template-columns: 1fr; }
  .filter-sidebar{
    display:block !important;
    position:fixed; top:0; left:0; bottom:0; width:min(320px,85vw);
    background:var(--paper); z-index:900;
    transform:translateX(-100%); transition:transform .5s var(--ease), box-shadow .5s var(--ease);
    padding:var(--sp-4); overflow-y:auto;
    box-shadow:30px 0 60px rgba(0,0,0,0);
  }
  .filter-sidebar.is-open{ transform:translateX(0); box-shadow:30px 0 60px rgba(0,0,0,.25); }
  .filter-sidebar .fs-filter-head{
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom:var(--sp-3); padding-bottom:var(--sp-2); border-bottom:1px solid var(--sand-line);
  }
  .filter-sidebar .fs-filter-head h4{ font-family:var(--font-display); font-size:1.3rem; margin:0; }
  .filter-sidebar .fs-filter-close{ background:none; border:none; font-size:1.4rem; line-height:1; color:var(--ink); }
  .fs-mobile-filter-toggle{
    display:inline-flex; align-items:center; gap:.5em;
    border:1px solid var(--ink); background:none; color:var(--ink);
    padding:.7em 1.1em; font-size:var(--text-xs); letter-spacing:var(--tracking-wide);
    text-transform:uppercase; font-weight:600; flex:none;
  }
  .fs-mobile-filter-toggle svg{ width:16px; height:16px; }
  .collection-toolbar{ flex-wrap:wrap; row-gap:.6em; }
}
@media (min-width: 901px){
  .filter-sidebar .fs-filter-head,
  .fs-filter-apply-mobile{ display:none; } /* desktop shows the sidebar inline already, no need for these */
}

/* ---- Toast should float above the sticky add-to-cart bar, not overlap it,
        when the sticky bar is visible (single product page, scrolled past
        the main info block) ---- */
body:has(.sticky-atc.is-visible) .toast{ bottom: 96px; }
@media (max-width: 600px){
  body:has(.sticky-atc.is-visible) .toast{ bottom: 84px; }
}

/* ---- Order Received / Thank You page content — same wrapper as checkout,
        but a completely different WooCommerce template (no form here).
        WooCommerce's own base stylesheet (general.css, still enqueued)
        puts default borders/backgrounds on every element here, so — same
        fix as the checkout review-order-table — reset everything first
        with !important, then re-add only what we actually want. ---- */
.fs-checkout .woocommerce-order{ grid-column:1/-1; max-width:800px; margin-inline:auto; padding-block:var(--sp-4); }
.fs-checkout .woocommerce-thankyou-order-received{
  list-style:none !important; margin:0 0 var(--sp-4) !important; padding:1.3em 1.6em !important;
  background:var(--paper-dim) !important; border:none !important; border-left:3px solid var(--emerald) !important;
  font-family:var(--font-display); font-size:1.2rem; color:var(--ink); display:block;
}
.fs-checkout .woocommerce-thankyou-order-received::before{ display:none !important; content:none !important; }

.fs-checkout ul.woocommerce-order-overview,
.fs-checkout ul.woocommerce-order-overview li{
  border:none !important; background:none !important; box-shadow:none !important;
}
.fs-checkout ul.woocommerce-order-overview{
  list-style:none !important; margin:0 0 var(--sp-5) !important; padding:0 !important;
  display:flex !important; flex-wrap:wrap; border:1px solid var(--sand-line) !important;
}
.fs-checkout ul.woocommerce-order-overview li{
  flex:1 1 25%; padding:1.2em 1.4em !important; border-right:1px solid var(--sand-line) !important;
  font-size:.78rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-soft); margin:0 !important;
}
.fs-checkout ul.woocommerce-order-overview li:last-child{ border-right:none !important; }
.fs-checkout ul.woocommerce-order-overview li strong{
  display:block; font-family:var(--font-display); font-size:1.1rem; text-transform:none;
  letter-spacing:0; color:var(--ink); margin-top:.3em;
}
.fs-checkout h2, .fs-checkout .woocommerce-order-details__title{ font-family:var(--font-display); font-size:1.4rem; margin:var(--sp-5) 0 var(--sp-3) !important; }

.fs-checkout .woocommerce-order-details table,
.fs-checkout .woocommerce-order-details table th,
.fs-checkout .woocommerce-order-details table td,
.fs-checkout .woocommerce-order-details table tr{
  border:none !important; background:none !important; box-shadow:none !important;
}
.fs-checkout .woocommerce-order-details table{ width:100% !important; border-collapse:collapse !important; margin-bottom:var(--sp-4) !important; }
.fs-checkout .woocommerce-order-details table th,
.fs-checkout .woocommerce-order-details table td{
  border-bottom:1px solid var(--sand-line) !important; padding:.85em 0 !important; font-size:var(--text-sm) !important; text-align:left !important;
}
.fs-checkout .woocommerce-order-details table tfoot tr:last-child th,
.fs-checkout .woocommerce-order-details table tfoot tr:last-child td{
  font-family:var(--font-display); font-size:1.3rem !important; border-top:1px solid var(--ink) !important; border-bottom:none !important; padding-top:var(--sp-2) !important;
}
.fs-checkout .woocommerce-customer-details{ display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-5); margin-top:var(--sp-4); }
.fs-checkout .woocommerce-customer-details address{
  font-style:normal; border:1px solid var(--sand-line) !important; background:none !important;
  padding:var(--sp-3) !important; font-size:var(--text-sm); line-height:1.8;
}
.fs-checkout .woocommerce-columns--addresses{ display:contents; }
@media (max-width:700px){ .fs-checkout .woocommerce-customer-details{ grid-template-columns:1fr; } .fs-checkout ul.woocommerce-order-overview li{ flex:1 1 50%; border-bottom:1px solid var(--sand-line); } }

/* ---- Header widget: "Transparent Over Hero" mode ---- */
.fs-header--transparent .site-header{
  position:fixed; top:0; left:0; right:0; background:transparent !important;
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important; border-bottom-color:transparent !important;
}
.fs-header--transparent .site-header .logo,
.fs-header--transparent .site-header .nav-primary > li > a,
.fs-header--transparent .site-header .icon-btn{ color:var(--paper) !important; }
.fs-header--transparent .site-header .nav-primary > li > a::after{ background:var(--paper) !important; }
.fs-header--transparent .site-header.is-scrolled{
  background:rgba(251,247,240,.92) !important;
  backdrop-filter:blur(14px) saturate(140%) !important; -webkit-backdrop-filter:blur(14px) saturate(140%) !important;
  border-bottom-color:var(--sand-line) !important;
}
.fs-header--transparent .site-header.is-scrolled .logo,
.fs-header--transparent .site-header.is-scrolled .nav-primary > li > a,
.fs-header--transparent .site-header.is-scrolled .icon-btn{ color:var(--ink) !important; }
.fs-header--transparent .site-header.is-scrolled .nav-primary > li > a::after{ background:var(--gold) !important; }

/* Logo swap: a separate (usually white) logo for the transparent state,
   swapping to the normal logo once the header solidifies on scroll. */
.fs-header--transparent .logo-img--transparent{ display:block !important; }
.fs-header--transparent .logo-img--solid{ display:none !important; }
.fs-header--transparent .site-header.is-scrolled .logo-img--transparent{ display:none !important; }
.fs-header--transparent .site-header.is-scrolled .logo-img--solid{ display:block !important; }

/* Marquee: stays hidden while transparent, only reveals once the header has
   solidified on scroll — and only if "Show Announcement Bar" is on. The
   is-scrolled class is toggled on .fs-header itself (not just .site-header)
   specifically so this descendant selector can target it regardless of the
   marquee sitting before <header> in the markup. */
.fs-header--transparent .announce{
  max-height:0 !important; opacity:0 !important; overflow:hidden !important; padding-block:0 !important;
  transition:max-height .4s var(--ease), opacity .3s, padding-block .4s var(--ease);
}
.fs-header--transparent.is-scrolled .announce{ max-height:60px !important; opacity:1 !important; padding-block:.65em 1em !important; }

/* ---- Mega menu built from Elementor repeater — reuse .mega/.mega-inner exactly ---- */
.fs-header .has-mega .mega{ /* inherited from layout.css, no overrides needed */ }

/* ---- Force-disable any Elementor "Entrance Animation" applied to the
        Hero Slideshow widget's own Elementor wrapper — the hero should
        never fade/slide/zoom in on page load, regardless of what Motion
        Effect setting is active on the widget/column/section in the
        editor. ---- */
.elementor-element:has(> .elementor-widget-container .fs-story-slideshow){
  animation:none !important; transition:none !important; transform:none !important; opacity:1 !important;
}
.elementor-element:has(> .elementor-widget-container .fs-story-slideshow) .elementor-widget-container{
  animation:none !important; transform:none !important; opacity:1 !important;
}

/* ---- Shop by Category widget: editorial showcase (sticky intro +
        two alternating stacked columns of image/text cards) ---- */
.fs-cat-showcase{ display:grid; gap:var(--sp-4); align-items:start; }
.fs-cat-showcase--intro-right{ grid-template-columns: 1.3fr 1.3fr .9fr; }
.fs-cat-showcase--intro-left{ grid-template-columns: .9fr 1.3fr 1.3fr; }
.fs-cat-showcase--no-intro{ grid-template-columns: 1fr 1fr; }

.fs-cat-showcase__intro{ position:sticky; top:110px; padding:0 var(--sp-2); margin-left:auto; max-width:340px; }
.fs-cat-showcase__intro h2{ font-size:var(--text-2xl); }
.fs-cat-showcase__intro p{ margin-top:var(--sp-3); color:var(--ink-soft); font-size:.92rem; line-height:1.75; max-width:26ch; }

.fs-cat-showcase__card{
  display: flex; align-items: flex-start; gap: var(--sp-3);
  max-width: 100% !important;
}
.fs-cat-showcase__img{ flex:0 0 130px; display:block; aspect-ratio:3/4; overflow:hidden; }
.fs-cat-showcase__img img{ width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease); }
.fs-cat-showcase__card:hover .fs-cat-showcase__img img{ transform:scale(1.05); }
.fs-cat-showcase__body{ flex:1; display:block; padding-top:.2em; text-align:left; }
.fs-cat-showcase__body h3{ font-family:var(--font-display); font-size:1.15rem; text-transform:capitalize; }
.fs-cat-showcase__body p{ display:block; color:var(--ink-soft); font-size:.82rem; line-height:1.65; margin:10px 0px !important; }
.fs-cat-showcase__link{
  display:inline-block; margin-top:.7em; font-size:.76rem; text-decoration:underline;
  text-underline-offset:.2em; font-weight:500;
}

@media (max-width:900px){
  .fs-cat-showcase{
    display:flex !important; flex-direction:column; gap:var(--sp-5) !important;
  }
  .fs-cat-showcase__card,
  .fs-cat-showcase__intro{ grid-column:auto !important; grid-row:auto !important; }
  .fs-cat-showcase__intro{ position:static; order:-1; text-align:center; margin-left:0; max-width:none; }
  .fs-cat-showcase__intro p{ margin-inline:auto; }
  .fs-cat-showcase__card{ max-width:none; }
}
@media (max-width:520px){
  .fs-cat-showcase__card{ flex-direction:column; }
  .fs-cat-showcase__img{ flex-basis:auto !important; width:100%; }
}

/* ---- Header hides completely while a #video-sec section is in view,
        regardless of transparent/solid mode or scroll position ---- */
.site-header.is-over-video{
  transform:translateY(-100%) !important; pointer-events:none !important;
}

/* ---- Shop by Category: full-width container (no max-width cap), keeps
        side padding so content doesn't touch the very edge ---- */
.fs-cat-full-width{ width:100%; padding-inline:clamp(1.25rem,4vw,3rem); }

/* ---- Shop by Category: "View All" now sits under the intro heading/desc ---- */
.fs-cat-showcase__view-all{
  display:inline-block; margin-top:var(--sp-3); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase;
  font-weight:700; border-bottom:1px solid var(--ink); padding-bottom:.2em;
}

/* ---- Split Feature widget: full-width alternating content/image rows ---- */
.fs-split-row{ width:100%; }
.fs-split-row__grid{
  display:grid; grid-template-columns:1fr 1fr; min-height:480px;
}
.fs-split-row__content{
  display:flex; flex-direction:column; justify-content:center;
  padding:var(--sp-6) clamp(1.5rem,6vw,5rem);
}
.fs-split-row__content .eyebrow{ margin-bottom:.4em; }
.fs-split-row__content h2{ margin-top:.2em; }
.fs-split-row__content p{ margin-top:var(--sp-3); max-width:44ch; line-height:1.85; }
.fs-split-row__content .btn{ margin-top:var(--sp-4); width:fit-content; }
.fs-split-row__image{ position:relative; display:block; overflow:hidden; }
.fs-split-row__image img{ width:100%; height:100%; object-fit:cover; transition:transform 1s var(--ease); }
.fs-split-row__image:hover img{ transform:scale(1.05); }
@media (max-width:900px){
  .fs-split-row__grid{ display:flex; flex-direction:column; min-height:auto; }
  .fs-split-row__image{ min-height:340px; }
}

/* ---- Featured Product Collection widget: sticky big image beside a
        scrollable list of product cards (reuses the site's real product
        card component — wishlist, Quick View/Add, badges all included) ---- */
.fs-featured-collection{ padding-block:var(--sp-6); }
.fs-featured-full-width{ width:100%; }
.fs-featured-full-width--pad-left{ padding-left:clamp(1.25rem,4vw,3rem); padding-right:0; }
.fs-featured-full-width--pad-right{ padding-right:clamp(1.25rem,4vw,3rem); padding-left:0; }
.fs-featured-collection__grid{
  display:grid; grid-template-columns:minmax(220px,260px) 1fr; gap:24px; align-items:start;
}
.fs-featured-collection__grid--image-left{ grid-template-columns:1fr minmax(220px,260px); }
.fs-featured-collection__products{
  display:flex; flex-direction:column; gap:var(--sp-4);
}
.fs-featured-collection__products .product-card{ width:100%; max-width:230px; }
.fs-featured-collection__products .product-card__frame{ aspect-ratio:4/5; }
.fs-featured-collection__products .product-card__title{ font-size:1rem; }
.fs-featured-collection__products .product-card__cat{ font-size:.62rem; }
.fs-featured-collection__products .product-card__price{ font-size:.85rem; }
.fs-featured-collection__image{
  position:sticky; top:100px; height:85vh; overflow:hidden;
}
.fs-featured-collection__image img,
.fs-featured-collection__image a{ display:block; width:100%; height:100%; }
.fs-featured-collection__image img{ object-fit:cover; transition:transform 1.2s var(--ease); }
@media (max-width:900px){
  .fs-featured-full-width--pad-left, .fs-featured-full-width--pad-right{ padding-inline:clamp(1.25rem,4vw,3rem); }
  .fs-featured-collection__grid, .fs-featured-collection__grid--image-left{ display:flex; flex-direction:column; }
  .fs-featured-collection__image{ position:static; height:60vh; margin-bottom:var(--sp-5); }
  .fs-featured-collection__products .product-card{ max-width:280px; margin-inline:auto; }
}

section.fs-wedding-galleries {
    padding-bottom: 0px !important;
}


/* ==========================================================================
   SINGLE POST widget — full premium blog template
   ========================================================================== */
.fs-single-post{ padding-bottom:var(--sp-6); }
.fs-single-post .container{ max-width:820px; }
.fs-single-post > .container:first-child{ padding-top:var(--sp-3); }

/* ---- Full-bleed hero header ---- */
.fs-post-hero{
  position:relative; height:62vh; min-height:380px; overflow:hidden;
  margin-top:var(--sp-3); margin-bottom:var(--sp-6);
}
.fs-post-hero img{ width:100%; height:100%; object-fit:cover; transition:transform 1.2s var(--ease); }
.fs-post-hero:hover img{ transform:scale(1.03); }
.fs-post-hero__overlay{
  position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding-inline:1.5rem;
  background:linear-gradient(0deg, rgba(27,21,18,.75) 0%, rgba(27,21,18,.25) 45%, rgba(27,21,18,.55) 100%);
}
.fs-post-hero__overlay .eyebrow{ color:var(--gold-light); justify-content:center; display:inline-flex; }
.fs-post-hero__title{
  color:var(--paper); font-size:clamp(1.9rem,4.5vw,3.2rem); max-width:20ch; margin-top:.4em; line-height:1.12;
}
.fs-post-hero__meta{
  margin-top:var(--sp-3); display:flex; justify-content:center; align-items:center; gap:.6em; flex-wrap:wrap;
  font-size:.8rem; letter-spacing:.04em; text-transform:uppercase; color:#EFE7D6; font-weight:600;
}
.fs-post-hero__dot{ color:var(--gold-light); }
/* If no featured image was set, still show a graceful dark header */
.fs-post-hero:not(:has(img)){ background:var(--ink); }
.fs-post-hero:not(:has(img)) .fs-post-hero__overlay{ background:none; }

/* ---- Blog content typography ---- */
.fs-single-post__body{ max-width:720px; margin-inline:auto; }
.fs-single-post__content{ font-size:17px; line-height:1.9; color:var(--ink-soft); }
.fs-single-post__content > *:first-child{ margin-top:0; }
.fs-single-post__content p{ margin-bottom:1.4em; }
.fs-single-post__content h2{ font-size:1.7rem; color:var(--ink); margin:var(--sp-5) 0 var(--sp-2); }
.fs-single-post__content h3{ font-size:1.3rem; color:var(--ink); margin:var(--sp-4) 0 var(--sp-2); }
.fs-single-post__content a{ color:var(--gold-deep); text-decoration:underline; }
.fs-single-post__content img{ width:100%; height:auto; margin-block:var(--sp-3); }
.fs-single-post__content blockquote{
  border-left:3px solid var(--gold); margin:var(--sp-4) 0; padding:.2em 0 .2em var(--sp-3);
  font-family:var(--font-display); font-style:italic; font-size:1.25rem; color:var(--ink);
}
.fs-single-post__content ul, .fs-single-post__content ol{ margin:0 0 1.4em 1.3em; }
.fs-single-post__content li{ margin-bottom:.5em; }
.fs-single-post__content figure{ margin:var(--sp-3) 0; }
.fs-single-post__content figcaption{ font-size:.8rem; color:var(--ink-soft); text-align:center; margin-top:.6em; }
.fs-single-post__content.has-drop-cap > p:first-of-type:not(:has(> strong:first-child)):not(:has(> b:first-child))::first-letter{
  font-family:var(--font-display); font-size:4.2rem; line-height:.75; float:left;
  padding:.1em .12em 0 0; color:var(--gold-deep);
}

/* ---- Tags ---- */
.fs-post-tags{ display:flex; flex-wrap:wrap; gap:.6em; margin-top:var(--sp-4); }
.fs-post-tag{
  font-size:.78rem; color:var(--ink-soft); border:1px solid var(--sand-line); padding:.5em 1em;
  transition:background .2s, color .2s, border-color .2s;
}
.fs-post-tag:hover{ background:var(--ink); color:var(--paper); border-color:var(--ink); }

/* ---- Body Measurements (optional) ---- */
.fs-measurements{
  margin-top:var(--sp-6); padding-top:var(--sp-5); border-top:1px solid var(--sand-line); text-align:center;
}
.fs-measurements .thread{ justify-content:center; max-width:120px; margin-inline:auto; margin-bottom:var(--sp-3); }
.fs-measurements h2{ font-size:1.7rem; }
.fs-measurements__desc{ margin-top:.8em; color:var(--ink-soft); font-size:.92rem; max-width:44ch; margin-inline:auto; }
.fs-measurements__row{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:var(--sp-4); margin-top:var(--sp-4);
}
.fs-measure-card{
  display:flex; flex-direction:column; align-items:center; gap:.7em;
  border:1px solid var(--sand-line); padding:var(--sp-4) var(--sp-3); transition:border-color .25s, background .25s;
}
.fs-measure-card:hover{ background:var(--paper-dim); border-color:var(--gold-deep); }
.fs-measure-card svg{ width:32px; height:32px; color:var(--gold-deep); }
.fs-measure-card__label{ font-family:var(--font-display); font-size:1.15rem; color:var(--ink); }
.fs-measure-card__btn{
  font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; font-weight:700;
  border-bottom:1px solid var(--ink); padding-bottom:.15em;
}

/* ---- Full-width image preview when the attached file is an image ---- */
.fs-measure-image{
  display:block; border:1px solid var(--sand-line); overflow:hidden; background:var(--paper-dim);
}
.fs-measure-image img{ display:block; width:100%; height:auto; max-height:82vh; object-fit:contain; transition:transform .8s var(--ease); }
.fs-measure-image:hover img{ transform:scale(1.02); }
.fs-measure-image__caption{
  display:flex; align-items:center; justify-content:space-between; gap:1em;
  padding:1em 1.4em; border-top:1px solid var(--sand-line); background:var(--paper);
}
.fs-measure-image__label{ font-family:var(--font-display); font-size:1.2rem; color:var(--ink); }
.fs-measure-image__btn{
  font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; font-weight:700;
  border-bottom:1px solid var(--ink); padding-bottom:.15em; white-space:nowrap;
}

/* ---- Author bio box ---- */
.fs-post-author{
  display:flex; gap:var(--sp-3); align-items:flex-start;
  margin-top:var(--sp-6); padding:var(--sp-4); background:var(--paper-dim); border:1px solid var(--sand-line);
}
.fs-post-author img{ border-radius:50%; flex:none; width:72px; height:72px; }
.fs-post-author__eyebrow{ font-size:.7rem; letter-spacing:.15em; text-transform:uppercase; color:var(--gold-deep); font-weight:700; }
.fs-post-author__body h3{ font-family:var(--font-display); font-size:1.2rem; margin-top:.3em; }
.fs-post-author__body p{ margin-top:.5em; font-size:.88rem; color:var(--ink-soft); line-height:1.7; }

/* ---- Prev / Next navigation ---- */
.fs-post-nav{
  display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-3); margin-top:var(--sp-5);
  border-top:1px solid var(--sand-line); padding-top:var(--sp-4);
}
.fs-post-nav__link{ display:flex; flex-direction:column; gap:.4em; padding:1em; border:1px solid var(--sand-line); transition:border-color .2s, background .2s; }
.fs-post-nav__link:hover{ border-color:var(--gold-deep); background:var(--paper-dim); }
.fs-post-nav__link--next{ text-align:right; align-items:flex-end; }
.fs-post-nav__label{ font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:var(--gold-deep); font-weight:700; }
.fs-post-nav__title{ font-family:var(--font-display); font-size:1.05rem; color:var(--ink); }

/* ---- Related posts ---- */
.fs-related-posts__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:var(--sp-4); }
.fs-related-post__img{ display:block; aspect-ratio:4/3; overflow:hidden; background:var(--sand); }
.fs-related-post__img img{ width:100%; height:100%; object-fit:cover; transition:transform 1s var(--ease); }
.fs-related-post:hover .fs-related-post__img img{ transform:scale(1.06); }
.fs-related-post__date{ display:block; margin-top:var(--sp-2); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft); }
.fs-related-post h3{ font-family:var(--font-display); font-size:1.1rem; margin-top:.4em; }

@media (max-width:760px){
  .fs-post-hero{ height:48vh; min-height:320px; }
  .fs-post-author{ flex-direction:column; align-items:center; text-align:center; }
  .fs-post-nav{ grid-template-columns:1fr; }
  .fs-post-nav__link--next{ text-align:left; align-items:flex-start; }
  .fs-related-posts__grid{ grid-template-columns:1fr; }
  .fs-measurements__row{ grid-template-columns:1fr; }
}

/* ---- Single Post: premium editorial touches ---- */
.fs-reading-progress{
  position:fixed; top:0; left:0; right:0; height:3px; background:transparent; z-index:600;
}
.fs-reading-progress span{
  display:block; height:100%; width:0%; background:var(--gold); transition:width .1s linear;
}

.fs-single-post__content blockquote{ position:relative; }
.fs-single-post__content blockquote::before{
  content:'\201C'; position:absolute; left:-.15em; top:-.25em; font-family:var(--font-display);
  font-size:2.4rem; color:var(--gold); line-height:1;
}

.fs-post-share{
  display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:1em;
  margin-top:var(--sp-4); padding-top:var(--sp-3); border-top:1px solid var(--sand-line);
}
.fs-post-share__label{ font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; font-weight:700; color:var(--ink-soft); }
.fs-post-share__icons{ display:flex; gap:.6em; }
.fs-post-share__icons a, .fs-post-share__copy{
  width:36px; height:36px; border:1px solid var(--sand-line); background:none; color:var(--ink);
  display:flex; align-items:center; justify-content:center; transition:background .2s, border-color .2s, color .2s;
}
.fs-post-share__icons a svg, .fs-post-share__copy svg{ width:15px; height:15px; }
.fs-post-share__icons a:hover, .fs-post-share__copy:hover{ background:var(--ink); border-color:var(--ink); color:var(--paper); }

.fs-post-author__avatar{ display:block; flex:none; }
.fs-post-author__avatar img{
  border-radius:50%; width:72px; height:72px; padding:3px; border:1px solid var(--gold);
}

/* ==========================================================================
   MEASUREMENT FORM widget
   ========================================================================== */
.fs-mform{ background:var(--paper); border:1px solid var(--sand-line); padding:var(--sp-4) clamp(1.25rem,4vw,2.5rem); }
.fs-mform h2{ font-size:1.6rem; }
.fs-mform__desc{ margin-top:.6em; color:var(--ink-soft); font-size:.9rem; line-height:1.7; }

.fs-mform__form{ margin-top:var(--sp-4); }
.fs-mform__row--contact{ display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-3); margin-bottom:var(--sp-3); }
.fs-mform__grid{
  display:grid; grid-template-columns:1fr 1fr; gap:1rem 1.2rem; margin:var(--sp-3) 0;
  padding-top:var(--sp-3); border-top:1px solid var(--sand-line);
}
.fs-mform__field{ display:flex; flex-direction:column; gap:.4em; }
.fs-mform__field--full{ grid-column:1/-1; margin-bottom:var(--sp-3); }
.fs-mform__field label{
  font-size:.78rem; font-weight:600; color:var(--ink); line-height:1.35;
  min-height:2.7em; display:flex; align-items:flex-end;
}
.fs-mform__field--full label{ min-height:0; }
.fs-mform__field label span{ color:var(--wine); }
.fs-mform__unit{ color:var(--ink-soft) !important; font-weight:400 !important; }
.fs-mform__field input,
.fs-mform__field textarea{
  border:1px solid var(--sand-line); background:var(--paper); padding:.7em .9em; font-size:.92rem;
  font-family:var(--font-body); box-sizing:border-box; transition:border-color .2s;
}
.fs-mform__field input:focus, .fs-mform__field textarea:focus{ border-color:var(--gold-deep); outline:none; }

.fs-mform__submit{ width:100%; margin-top:var(--sp-2); }
.fs-mform__submit:disabled{ opacity:.6; cursor:not-allowed; }
.fs-mform__status{ margin-top:1em; font-size:.85rem; min-height:1.2em; }
.fs-mform__status.is-success{ color:var(--emerald); }
.fs-mform__status.is-error{ color:var(--wine); }

@media (max-width:600px){
  .fs-mform__row--contact, .fs-mform__grid{ grid-template-columns:1fr; }
}

/* ---- Auto-injected Men/Women measurement forms (Body Measurements page) ---- */
.fs-mform-pair-wrap{ padding-block:var(--sp-6); }
.fs-mform-pair{ display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-4); align-items:start; }
@media (max-width:900px){ .fs-mform-pair{ grid-template-columns:1fr; } }

/* ==========================================================================
   ABOUT SPLIT widget — one sticky image + one content panel per widget
   instance (place several instances in a row to build a scrolling sequence)
   ========================================================================== */
.fs-about-split__block{
  display:grid; grid-template-columns:1fr 1fr; min-height:100vh;
}
.fs-about-split__block--image-right .fs-about-split__image{ order:2; }
.fs-about-split__block--image-right .fs-about-split__content{ order:1; }

.fs-about-split__image{
  position:sticky; top:0; height:100vh; overflow:hidden; align-self:start;
}
.fs-about-split__image img{ width:100%; height:100%; object-fit:cover; transition:transform 1.2s var(--ease); }
.fs-about-split__image:hover img{ transform:scale(1.03); }

.fs-about-split__content{
  padding-inline:80px;
}
.fs-about-split__panel{ position:relative; }
.fs-about-split__panel-inner{
  position:sticky; top:0; height:100vh; display:flex; flex-direction:column; justify-content:center; max-width:44ch;
}
.fs-about-split__panel .eyebrow{ margin-bottom:.5em; }
.fs-about-split__panel h2{ font-size:2.1rem; line-height:1.15; margin-bottom:.4em; }
.fs-about-split__text{ color:var(--ink-soft); line-height:1.85; font-size:1rem; }
.fs-about-split__text p{ margin-bottom:1em; }
.fs-about-split__text p:last-child{ margin-bottom:0; }

@media (max-width:900px){
  .fs-about-split__block,
  .fs-about-split__block--image-right{ display:block; min-height:0; }
  .fs-about-split__block--image-right .fs-about-split__image,
  .fs-about-split__block--image-right .fs-about-split__content{ order:0; }
  .fs-about-split__image{ position:static; height:56vh; }
  .fs-about-split__content{ padding:3rem 1.5rem; }
  .fs-about-split__panel-inner{ position:static; height:auto; max-width:none; }
}

/* ==========================================================================
   FOUNDER SECTION widget
   ========================================================================== */
.fs-founder{ display:grid; grid-template-columns:240px 1fr 1fr; gap:var(--sp-5); padding:clamp(2rem,5vw,4rem); }
.fs-founder--image-left .fs-founder__image{ order:-1; }
.fs-founder__eyebrow{ font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--gold-deep); margin-bottom:.6em; font-weight:700; }
.fs-founder__name{ font-family:var(--font-display); font-size:1.8rem; line-height:1.2; }
.fs-founder__text p{ margin-bottom:1.2em; color:var(--ink-soft); line-height:1.85; }
.fs-founder__text p:last-child{ margin-bottom:0; }
.fs-founder__divider{ height:1px; background:var(--sand-line); margin:var(--sp-4) 0 var(--sp-3); }
.fs-founder__links{ display:flex; gap:var(--sp-5); flex-wrap:wrap; }
.fs-founder__link-label{ font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-soft); margin-bottom:.35em; }
.fs-founder__link-value{ display:block; font-size:.92rem; color:var(--ink); text-decoration:underline; }
.fs-founder__image{ aspect-ratio:3/4; overflow:hidden; }
.fs-founder__image img{ width:100%; height:100%; object-fit:cover; transition:transform 1s var(--ease); }
.fs-founder__image:hover img{ transform:scale(1.04); }
@media (max-width:900px){
  .fs-founder{ grid-template-columns:1fr; padding:2rem 1.25rem; }
  .fs-founder--image-left .fs-founder__image{ order:0; }
  .fs-founder__links{ gap:var(--sp-4); }
}

/* ==========================================================================
   CTA GRID widget
   ========================================================================== */
.fs-cta-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(280px,1fr)); }
.fs-cta-grid__tile{
  position:relative; display:flex; align-items:center; justify-content:center;
  overflow:hidden; height:60vh; text-decoration:none;
}
.fs-cta-grid__tile img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease); }
.fs-cta-grid__tile:hover img{ transform:scale(1.07); }
.fs-cta-grid__overlay{ position:absolute; inset:0; background:rgba(27,21,18,.38); transition:background .3s; }
.fs-cta-grid__tile:hover .fs-cta-grid__overlay{ background:rgba(27,21,18,.5); }
.fs-cta-grid__copy{ position:relative; z-index:2; text-align:center; display:flex; flex-direction:column; align-items:center; gap:.6em; }
.fs-cta-grid__label{ font-size:.78rem; letter-spacing:.16em; text-transform:uppercase; color:var(--paper); }
.fs-cta-grid__heading{ font-family:var(--font-display); font-size:clamp(1.5rem,3vw,2.1rem); color:var(--paper); }
@media (max-width:700px){ .fs-cta-grid{ grid-template-columns:1fr; } .fs-cta-grid__tile{ height:50vh; } }

/* ==========================================================================
   BLOG GRID widget — same tile treatment as CTA Grid, but text sits
   bottom-left (matching the reference), not centered
   ========================================================================== */
.fs-blog-grid{ display:grid; grid-template-columns:repeat(2, 1fr); }
.fs-blog-grid__tile{
  position:relative; display:block; overflow:hidden; height:60vh; text-decoration:none;
}
.fs-blog-grid__tile img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease); }
.fs-blog-grid__tile:hover img{ transform:scale(1.07); }
.fs-blog-grid__overlay{ position:absolute; inset:0; background:rgba(27,21,18,.32); transition:background .3s; }
.fs-blog-grid__tile:hover .fs-blog-grid__overlay{ background:rgba(27,21,18,.46); }
.fs-blog-grid__copy{
  position:absolute; left:0; right:0; bottom:0; z-index:2;
  display:flex; flex-direction:column; align-items:flex-start; text-align:left;
  padding:1.6rem clamp(1.25rem,3vw,2.5rem);
}
.fs-blog-grid__label{ font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--paper); margin-bottom:.4em; }
.fs-blog-grid__heading{ font-family:var(--font-display); font-size:clamp(1.3rem,2.4vw,1.8rem); color:var(--paper); line-height:1.2; }
@media (max-width:700px){
  .fs-blog-grid{ grid-template-columns:1fr; }
  .fs-blog-grid__tile{ height:50vh; }
}

/* ---- Single Post: password-protected state ---- */
.fs-single-post--locked{ padding-block:var(--sp-7); }
.fs-single-post__password-form{ max-width:420px; margin-inline:auto; text-align:center; }
.fs-single-post__password-form form{ margin-top:1.2em; }
.fs-single-post__password-form label{ font-family:var(--font-display); font-size:1.3rem; display:block; margin-bottom:.8em; }
.fs-single-post__password-form input[type="password"]{
  display:block; width:100%; border:1px solid var(--sand-line); background:var(--paper);
  padding:.9em 1em; font-size:.95rem; box-sizing:border-box; margin-bottom:1em;
}
.fs-single-post__password-form input[type="password"]:focus{ border-color:var(--gold-deep); outline:none; }
.fs-single-post__password-form input[type="submit"]{
  width:100%; background:var(--ink); color:var(--paper); border:1px solid var(--ink);
  padding:.9em 1.6em; font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; font-weight:700; cursor:pointer;
  transition:background .25s, border-color .25s;
}
.fs-single-post__password-form input[type="submit"]:hover{ background:var(--gold-deep); border-color:var(--gold-deep); }

/* ---- Measurement video (plays inline, not a download) ---- */
.fs-measure-video{ display:block; }
.fs-measure-video video{ width:100%; display:block; background:#000; aspect-ratio:16/9; }
.fs-measure-video__label{
  display:block; margin-top:.6em; font-family:var(--font-display); font-size:1.15rem; color:var(--ink);
}
