/* ZERO_LUXURY_PALETTE_CONTRAST_AUTHORITY_V2157
 * Final semantic foreground authority for Luxury Storefront.
 * Raw palette colors remain brand tokens; readable foreground tokens decide text/icon color.
 */
.lsf-root[data-template="luxury_storefront"]{
  --lsf-on-bg:var(--lsf-contrast,#f8f1e4);
  --lsf-on-surface:var(--lsf-contrast,#f8f1e4);
  --lsf-on-primary:#111827;
  --lsf-on-accent:#111827;
  --lsf-on-icon:#111827;
  --lsf-brand-emphasis:var(--lsf-primary,#d8a642);
  --lsf-icon-readable:var(--lsf-brand-emphasis,var(--lsf-primary,#d8a642));
  --lsf-muted-readable:var(--lsf-muted,#9aa7b3);
  color:var(--lsf-on-bg)!important;
}

/* Text on ordinary background/surface. */
html body .lsf-root[data-template="luxury_storefront"] :is(
  .lsf-product,.lsf-category,.lsf-quote,.lsf-blog-card,.lsf-loyalty,.lsf-account-hero,
  .lsf-shop-sidebar,.lsf-product-info,.lsf-product-main,.lsf-cart-page-items,.lsf-cart-page-summary,
  .lsf-compare-section,.lsf-empty,.lsf-customer-nav,.lsf-customer-card-nav,.lsf-search,
  .lsf-mag-card,.lsf-mag-article,.lsf-mag-toolbar,.lsf-mag-related,.lsf-review-summary-v24,
  .lsf-mobile-filter-panel-v18,.zoc-filter-panel-v29,.lsf-price-filter-v37
){color:var(--lsf-on-surface)!important;-webkit-text-fill-color:currentColor}

html body .lsf-root[data-template="luxury_storefront"] :is(.lsf-muted,.lsf-product p,.lsf-blog-card p,.lsf-loyalty p,.lsf-footer p,.lsf-footer a,.lsf-copyright,.lsf-price-old-v41,.lsf-amazing-until-v45,.lsf-review-summary-v24 small,.lsf-review-rating-v24 output){color:var(--lsf-muted-readable)!important;-webkit-text-fill-color:currentColor}

/* Brand/emphasis text: preserve primary when AA-safe, otherwise semantic fallback. */
html body .lsf-root[data-template="luxury_storefront"] :is(
  .lsf-kicker,.lsf-price,.lsf-price-new-v41,.lsf-product-price-v41 strong,
  .lsf-brand-mark,.lsf-brand small,.lsf-benefit span,.lsf-category-media,
  .lsf-loyalty-score,.lsf-stars,.lsf-review-stars-v24,.lsf-footer h3,
  .lsf-blog-card time,.lsf-article-lead,.lsf-product-thumbs-v24 .is-users b,
  .lsf-review-rating-options-v24 button.is-filled span,.lsf-review-rating-options-v24 button.is-selected,
  .lsf-account-palette-v20 .ztv-file,.lsf-account-palette-v20 .lsf-customer-card-nav a.is-active,
  .lsf-menu a:hover,.lsf-menu a.is-active,.zoc-lsf-mobile-categories summary i
){color:var(--lsf-brand-emphasis)!important;-webkit-text-fill-color:currentColor}

/* Any control whose fill/background is the brand primary must use the computed opposite foreground. */
html body .lsf-root[data-template="luxury_storefront"] :is(
  .lsf-announcement,.lsf-btn-primary,.lsf-badge,.lsf-cart,.lsf-cta,.btn-oc,.ztv-btn,
  .lsf-sort-toolbar-v41 button.is-active,.lsf-sort-toolbar-v41 button:hover,
  .lsf-media-viewer-tabs-v24 button.is-active,.lsf-filter-chip input:checked + span,
  .lsf-mobile-filter-apply-v19,.lsf-mobile-filter-apply-v29,.zoc-lsf-results-jump,
  .lsf-assigned-slider-v48__cta,.zoc-slider-v56__cta,.sc-receipt-drop>i,
  .lsf-cart-drawer .lsf-btn-primary
){color:var(--lsf-on-primary)!important;-webkit-text-fill-color:var(--lsf-on-primary)!important}

html body .lsf-root[data-template="luxury_storefront"] .lsf-cta *,
html body .lsf-root[data-template="luxury_storefront"] .lsf-btn-primary *{color:var(--lsf-on-primary)!important;-webkit-text-fill-color:var(--lsf-on-primary)!important}

/* Generated primary circles/icons in mobile filters. */
html body .lsf-root[data-template="luxury_storefront"] :is(
  .zoc-mobile-filter-bar-v29:before,.lsf-mobile-filter-toggle-v18:after,.lsf-mobile-filter-toggle-v17:after
){color:var(--lsf-on-primary)!important;-webkit-text-fill-color:var(--lsf-on-primary)!important}

/* Iconography on palette surfaces. */
html body .lsf-root[data-template="luxury_storefront"] :is(
  .lsf-brand-mark,.lsf-category-media,.lsf-benefit span,.lsf-service-icon-v1,
  .lsf-account-icon,.lcp746-account-icon
){color:var(--lsf-icon-readable)!important;-webkit-text-fill-color:currentColor}

/* Inputs and form controls always use a foreground readable on their surface. */
html body .lsf-root[data-template="luxury_storefront"] :is(input,select,textarea){color:var(--lsf-on-surface)!important;-webkit-text-fill-color:var(--lsf-on-surface)!important}
html body .lsf-root[data-template="luxury_storefront"] :is(input,textarea)::placeholder{color:var(--lsf-muted-readable)!important;opacity:.86!important}

/* Gallery / review controls which live on palette surfaces. */
html body .lsf-root[data-template="luxury_storefront"] .lsf-product-thumbs-v24 button,
html body .lsf-root[data-template="luxury_storefront"] .lsf-media-viewer-tabs-v24 button,
html body .lsf-root[data-template="luxury_storefront"] .lsf-review-rating-options-v24 button{color:var(--lsf-on-surface)!important;-webkit-text-fill-color:currentColor}
html body .lsf-root[data-template="luxury_storefront"] .lsf-media-viewer-tabs-v24 button.is-active{color:var(--lsf-on-primary)!important;-webkit-text-fill-color:var(--lsf-on-primary)!important}

/* Account / checkout Bootstrap-ish fragments. */
html body .lsf-root[data-template="luxury_storefront"].lsf-account-palette-v20 :is(.card,.modal-content,.dropdown-menu,.table,.list-group-item,.alert:not(.alert-danger):not(.alert-success)){color:var(--lsf-on-surface)!important}
html body .lsf-root[data-template="luxury_storefront"].lsf-account-palette-v20 :is(.text-muted,small,.form-text){color:var(--lsf-muted-readable)!important}

/* Cart portal is outside .lsf-root, so V2157 runtime copies these semantic tokens. */
html body #lsf-cart-portal-v746[data-lsf-contrast-v2157]{
  --lcp-emphasis:var(--lcp-text);
  color:var(--lcp-text)!important;
}
html body #lsf-cart-portal-v746[data-lsf-contrast-v2157] :is(.lcp746-price,.lcp746-line,.lcp746-account-icon){color:var(--lcp-emphasis)!important;-webkit-text-fill-color:currentColor}
html body #lsf-cart-portal-v746[data-lsf-contrast-v2157] :is(.lcp746-action,.lcp746-account-actions a.is-primary){color:var(--lcp-on-primary)!important;-webkit-text-fill-color:var(--lcp-on-primary)!important}

/* Header/nav style variants that paint a full primary background. */
html body .lsf-root[data-template="luxury_storefront"] :is(.lsf-nav-item-style-glow_button,.lsf-nav-item-style-solid_button) .lsf-menu a:is(:hover,.is-active){color:var(--lsf-on-primary)!important;-webkit-text-fill-color:var(--lsf-on-primary)!important}

/* Safety for the latest mobile shell buttons that still had hard-coded #111. */
@media(max-width:1180px){
  html body .lsf-root[data-template="luxury_storefront"] :is(.zoc-lsf-results-jump,.lsf-mobile-filter-apply-v19,.lsf-mobile-filter-apply-v29){color:var(--lsf-on-primary)!important;-webkit-text-fill-color:var(--lsf-on-primary)!important}
}
