/*
 * FYI Design System — Readability Repairs v1.0.14
 * Foreground colors ONLY. Do not change backgrounds, gradients, opacity,
 * geometry, graphic artwork, variations, buttons or layout.
 * This stylesheet is disabled on Patch Notes and can be disabled in
 * Appearance > FYI Design System > Readable text.
 */
body.fyi-ds-active.fyi-ds-contrast {
  --fyi-contrast-light: var(--fyi-color-text, #FAF7FF);
  --fyi-contrast-muted: #D8D1E0;
  --fyi-contrast-highlight: #9DE0E6;
  --fyi-contrast-dark: #201629;
  --fyi-contrast-link-on-light: #2E0055;
}

/* Product-page recommendation section headings previously inherited near-black
   from WooCommerce/Blocksy despite sitting on a very dark FYI background. */
body.fyi-ds-active.fyi-ds-contrast.single-product .fyi-merch-section .fyi-merch-inner > :is(h2,h3),
body.fyi-ds-active.fyi-ds-contrast.single-product :is(.fyi-complete-the-fit,.fyi-you-may-like) :is(h2,h3),
body.fyi-ds-active.fyi-ds-contrast.single-product :is(.woocommerce-tabs,.related.products,.upsells.products) :is(h2,h3) {
  color: var(--fyi-contrast-light) !important;
}
/* The linked merchandise has its own dark card background. */
body.fyi-ds-active.fyi-ds-contrast.single-product .fyi-merch-section li.product :is(.woocommerce-loop-product__title,.price,.woocommerce-Price-amount) {
  color: var(--fyi-contrast-light) !important;
}
body.fyi-ds-active.fyi-ds-contrast.single-product .fyi-merch-section li.product :is(.price,.woocommerce-Price-amount) {
  color: var(--fyi-contrast-highlight) !important;
}
/* Same product text on dark product detail/tab content. */
body.fyi-ds-active.fyi-ds-contrast.single-product .woocommerce :is(.woocommerce-tabs,.product .summary) :is(h2,h3,h4,dt,strong,th),
body.fyi-ds-active.fyi-ds-contrast.single-product .woocommerce-tabs :is(.woocommerce-Tabs-panel,.panel) > p {
  color: var(--fyi-contrast-light) !important;
}

/* The orders/downloads/account content column has a dark-purple background.
   This does NOT target the WHITE customer-account navigation/sidebar. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account .woocommerce-MyAccount-content :is(h1,h2,h3,h4),
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account .woocommerce-MyAccount-content :is(.woocommerce-orders-table,.woocommerce-table--order-details,.woocommerce-table--customer-details) :is(th,td,caption,.woocommerce-orders-table__header,.woocommerce-orders-table__cell),
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account .woocommerce-MyAccount-content :is(.woocommerce-Addresses,.woocommerce-Address,.woocommerce-customer-details) :is(h2,h3,address),
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account .woocommerce-MyAccount-content :is(.woocommerce-pagination,.woocommerce-MyAccount-dashboard) :is(p,strong) {
  color: var(--fyi-contrast-light) !important;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account .woocommerce-MyAccount-content :is(.woocommerce-orders-table,.woocommerce-table--order-details,.woocommerce-table--customer-details) :is(a:not(.button),.woocommerce-Price-amount),
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account .woocommerce-MyAccount-content .woocommerce-MyAccount-dashboard a:not(.button) {
  color: var(--fyi-contrast-highlight) !important;
}
/* Woo account notices in this theme are LIGHT cards. Their white notice text
   was effectively invisible; dark ink gives high contrast with the existing
   gray/white notice background. Button labels are deliberately excluded. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account :is(.woocommerce-info,.woocommerce-Message,.woocommerce-message,.woocommerce-error),
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account :is(.woocommerce-info,.woocommerce-Message,.woocommerce-message,.woocommerce-error) :is(p,span,strong,em,small,b):not(:is(a.button *,a.woocommerce-button *,button *)),
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account :is(.woocommerce-info,.woocommerce-Message,.woocommerce-message,.woocommerce-error) :is(a:not(.button):not(.woocommerce-button)) {
  color: var(--fyi-contrast-dark) !important;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account :is(.woocommerce-info,.woocommerce-Message,.woocommerce-message,.woocommerce-error)::before {
  color: #285B67 !important;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account :is(.woocommerce-info,.woocommerce-Message,.woocommerce-message,.woocommerce-error) a:not(.button):not(.woocommerce-button) {
  color: var(--fyi-contrast-link-on-light) !important;
  text-decoration: underline;
}
/* WooCommerce and blocks buttons already use white on dark purple; do not
   restyle their foreground when inside a notice. */

/* FYI Store Tools breadcrumbs: the plugin previously hard-coded gray #55515E
   and #5B5363, illegible on the dark theme background. */
body.fyi-ds-active.fyi-ds-contrast nav.woocommerce-breadcrumb.fyi-breadcrumbs,
body.fyi-ds-active.fyi-ds-contrast nav.woocommerce-breadcrumb.fyi-breadcrumbs :is(.delimiter,.fyi-breadcrumb-current) {
  color: var(--fyi-contrast-muted) !important;
}
body.fyi-ds-active.fyi-ds-contrast nav.woocommerce-breadcrumb.fyi-breadcrumbs a {
  color: var(--fyi-contrast-highlight) !important;
}
/* Header and footer remain under their own design system styling. Existing
   light-background inputs, account sidebars, and product photographs retain
   their current foreground/background treatment. */


/* FYI Design System v1.0.8 — archive pagination readability.
   Correct faint page numbers (e.g. 2) and NEXT/PREV labels on the dark
   Featured Designs/catalog background. Preserve the existing active page,
   buttons, borders, spacing, backgrounds and pagination behavior. */
body.fyi-ds-active.fyi-ds-contrast :is(.ct-pagination, .woocommerce-pagination) a:not(.current):not([aria-current="page"]),
body.fyi-ds-active.fyi-ds-contrast :is(.ct-pagination, .woocommerce-pagination) :is(a.page-numbers, a.next, a.prev):not(.current):not([aria-current="page"]),
body.fyi-ds-active.fyi-ds-contrast .ct-pagination :is(.page-numbers:not(.current),.next,.prev) {
  color: var(--fyi-contrast-highlight, #9DE0E6) !important;
}
/* Some pagination links use an inner text span instead of inheriting color. */
body.fyi-ds-active.fyi-ds-contrast :is(.ct-pagination, .woocommerce-pagination) a:not(.current):not([aria-current="page"]) :is(span,small,strong) {
  color: inherit !important;
}
/* Keyboard focus should be clearly visible without recoloring the buttons. */
body.fyi-ds-active.fyi-ds-contrast :is(.ct-pagination, .woocommerce-pagination) a:focus-visible {
  outline: 2px solid var(--fyi-contrast-highlight, #9DE0E6);
  outline-offset: 3px;
}

/* FYI 1.0.10 — readability of the light notices used across the whole shop.
 * The wishlist "Your Wishlist is currently empty" notification is a light
 * gray WooCommerce banner. The global dark-theme text color inherited into
 * this banner was nearly white on near-white (the customer's screenshot).
 * Standard WooCommerce and Woo Blocks notices are light/near-white by design.
 * Change ONLY foreground text and icons. Do not change notice backgrounds,
 * borders, padding, positions, button backgrounds or underlying page colors.
 */
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-info,
  .woocommerce-message,
  .woocommerce-error,
  .woocommerce-Message,
  .wc-block-components-notice-banner
) {
  color:var(--fyi-contrast-dark, #201629) !important;
  --theme-text-color:var(--fyi-contrast-dark, #201629);
  --theme-link-initial-color:var(--fyi-contrast-link-on-light, #2E0055);
}

/* Themes (including Blocksy + companion) may independently color the nested
 * message text, preventing it from inheriting the corrected parent color.
 * Exclude button descendants: those must keep their own contrasting labels.
 */
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-info,
  .woocommerce-message,
  .woocommerce-error,
  .woocommerce-Message,
  .wc-block-components-notice-banner
) :is(p,span,strong,small,b,em,li):not(
  .button,.wp-element-button,.woocommerce-button,.wc-block-components-button
):not(:where(
  .button *, .wp-element-button *, .woocommerce-button *,
  .wc-block-components-button *
)) {
  color:var(--fyi-contrast-dark, #201629) !important;
}
/* Message links have sufficient contrast against their light backgrounds. */
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-info,
  .woocommerce-message,
  .woocommerce-error,
  .woocommerce-Message,
  .wc-block-components-notice-banner
) a:not(.button):not(.wp-element-button):not(.woocommerce-button):not(.wc-block-components-button) {
  color:var(--fyi-contrast-link-on-light, #2E0055) !important;
  text-decoration:underline;
}
/* A styled action control inside a light notice keeps its original text
 * color; inner label spans follow the *button*, not the surrounding notice. */
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-info,.woocommerce-message,.woocommerce-error,
  .woocommerce-Message,.wc-block-components-notice-banner
) :is(a.button,button.button,.wp-element-button,.woocommerce-button,.wc-block-components-button) :is(span,strong,small) {
  color:inherit !important;
}
/* WooCommerce's ::before info/error symbols can also inherit nearly-white. */
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-info,
  .woocommerce-message,
  .woocommerce-error,
  .woocommerce-Message
)::before {
  color:#285B67 !important;
}

/* Blocksy Pro's Wishlist sometimes uses a standalone message wrapper.
 * This rule is isolated to the exact /wishlist/ page (added body class in PHP)
 * rather than recoloring entire wishlist lists or product cards. */
body.fyi-ds-active.fyi-ds-contrast.fyi-ds-wishlist :is(
  .ct-wishlist-empty-message,
  .ct-wishlist-notice,
  .ct-wishlist-message,
  .wishlist-empty-message
) {
  color:var(--fyi-contrast-dark, #201629) !important;
}
body.fyi-ds-active.fyi-ds-contrast.fyi-ds-wishlist :is(
  .ct-wishlist-empty-message,
  .ct-wishlist-notice,
  .ct-wishlist-message,
  .wishlist-empty-message
) :is(p,span,strong,small):not(:where(a *,button *)) {
  color:var(--fyi-contrast-dark, #201629) !important;
}


/* ============================================================================
 * FYI 1.0.12 — storefront-wide foreground contrast, checkout and gateway shells
 * ============================================================================
 * This opt-in file uses ONLY text/link/icon colors and input placeholder colors.
 * Keep the existing page/card/form backgrounds, shadows and payment behavior.
 * Third-party cross-origin payment iframes (Stripe, PayPal etc.) are deliberately
 * untouched: their inside text must be themed through the payment provider.
 * The bespoke /patch-notes/ page is excluded by FYI Design System.
 */
body.fyi-ds-active.fyi-ds-contrast {
  --fyi-contrast-form-ink:#201629;
  --fyi-contrast-form-placeholder:#595166;
  --fyi-contrast-dark-copy:#F3EFF9;
  --fyi-contrast-secondary-copy:#D8D1E0;
  --fyi-contrast-bright-link:#9DE0E6;
}

/* WooCommerce CHECKOUT: restore readable copy on the dark existing payment,
 * review-order, address and checkout-terms panels. Do NOT color inputs here. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-checkout :is(
  .woocommerce-checkout-review-order,
  .woocommerce-checkout-payment,
  #payment,
  .woocommerce-terms-and-conditions-wrapper,
  .woocommerce-privacy-policy-text
) {
  color:var(--fyi-contrast-dark-copy) !important;
  --theme-text-color:var(--fyi-contrast-dark-copy);
  --theme-link-initial-color:var(--fyi-contrast-bright-link);
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-checkout :is(
  .woocommerce-checkout-review-order,
  .woocommerce-checkout-payment,
  #payment,
  .woocommerce-terms-and-conditions-wrapper,
  .woocommerce-privacy-policy-text
) :is(p,label,legend,dt,dd,th,td,small,strong,em,li):not(:where(
  .woocommerce-info *, .woocommerce-message *, .woocommerce-error *,
  .woocommerce-Message *, .wc-block-components-notice-banner *,
  .button *, .wp-element-button *, .woocommerce-button *,
  .wc-block-components-button *, .select2-container *,
  .woocommerce-input-wrapper *, .form-row input *, .form-row select *,
  .form-row textarea *
)) {
  color:var(--fyi-contrast-dark-copy) !important;
}

/* Actual payment method labels, text and descriptions hosted in WooCommerce's
 * OWN document, including the top-level PayPal option and pay-later message.
 * Disabled controls retain the gateway's disabled behavior and opacity. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-checkout :is(
  #payment .wc_payment_method,
  #payment .payment_methods,
  #payment .payment_box,
  .woocommerce-checkout-payment .payment_method_paypal,
  .woocommerce-checkout-payment .payment_method_ppcp-gateway,
  .woocommerce-checkout-payment .payment_method_woocommerce_payments,
  .woocommerce-checkout-payment .payment_method_stripe
) :is(label,p,small,span,strong,em,li):not(:where(
  .button *, button *, .woocommerce-info *,
  .woocommerce-message *, .woocommerce-error *,
  .select2-container *, .StripeElement *,
  .wc-stripe-elements-field *
)) {
  color:var(--fyi-contrast-dark-copy) !important;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-checkout :is(
  #payment,
  .woocommerce-checkout-payment,
  .woocommerce-privacy-policy-text
) a:not(:is(.button,.wp-element-button,.woocommerce-button,.wc-block-components-button)) {
  color:var(--fyi-contrast-bright-link) !important;
  text-decoration:underline;
  text-underline-offset:2px;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-checkout :is(
  .ppcp-messages,
  .ppcp-pay-later-message,
  .woocommerce-paypal-payments__message,
  .woocommerce-paypal-payments__pay-later-messaging,
  #ppcp-messages,
  [data-pp-message]
) {
  color:var(--fyi-contrast-secondary-copy) !important;
}
/* Standard checkout block payment controls where text is native DOM, not an
 * embedded payment iframe. Protect light fields and notice banners. */
body.fyi-ds-active.fyi-ds-contrast :is(.wc-block-checkout,.wc-block-cart) :is(
  .wc-block-components-radio-control__label,
  .wc-block-components-radio-control__description,
  .wc-block-components-payment-method-label,
  .wc-block-components-payment-method-description,
  .wc-block-components-checkout-step__description,
  .wc-block-components-totals-item__label,
  .wc-block-components-totals-item__value,
  .wc-block-components-order-summary-item__description
):not(:where(.wc-block-components-notice-banner *)) {
  color:var(--fyi-contrast-dark-copy) !important;
}
body.fyi-ds-active.fyi-ds-contrast :is(.wc-block-checkout,.wc-block-cart)
  a:not(.wc-block-components-button):not(.wp-element-button):not(:where(.wc-block-components-notice-banner *)) {
  color:var(--fyi-contrast-bright-link) !important;
}

/* Payment methods implemented as accessible native buttons or labels in dark
 * shell components; omit [aria-disabled] and disabled form controls. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-checkout :is(
  .wc-payment-method-selector,
  .payment-methods-list,
  .payment-method-selector
) :is(label,span,p):not(:where([aria-disabled="true"] *,[disabled] *,button *)) {
  color:var(--fyi-contrast-dark-copy) !important;
}

/* WHITE/LIGHT background inputs. Since the Design System already sets a pale
 * background, ensure actual input text, selected value, placeholders and the
 * Select2 dropdown are readable; do not affect native payment-provider iframe. */
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-checkout,.woocommerce-cart,.woocommerce-account,
  .woocommerce .product .summary,.wpforms-container,.elementor-form
) :is(
  input:not([type]),input[type="text"],input[type="email"],input[type="tel"],
  input[type="number"],input[type="password"],input[type="search"],
  textarea,select,
  .select2-container--default .select2-selection__rendered,
  .select2-search__field
) {
  color:var(--fyi-contrast-form-ink) !important;
  -webkit-text-fill-color:var(--fyi-contrast-form-ink);
}
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-checkout,.woocommerce-cart,.woocommerce-account,
  .wpforms-container,.elementor-form
) :is(input,textarea)::placeholder {
  color:var(--fyi-contrast-form-placeholder) !important;
  opacity:1;
}
/* WooCommerce Select2 result popup sits outside the checkout container. The
 * standard popup is light, so use dark foreground as in native form fields. */
body.fyi-ds-active.fyi-ds-contrast :is(
  .select2-container--default .select2-results__option,
  .select2-container--default .select2-search__field,
  .select2-container--default .select2-selection__rendered
) {
  color:var(--fyi-contrast-form-ink) !important;
}

/* Form labels and help/error messages above dark page panels. Native field
 * contents stay dark, as specified separately above. */
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-checkout,.woocommerce-account,
  .wpforms-container,.elementor-form
) :is(
  .woocommerce-form-row > label,
  .form-row > label,
  .wpforms-field-label,.wpforms-field-sublabel,
  .elementor-field-label,.woocommerce-form__label,
  .woocommerce-input-wrapper + .description,
  .woocommerce-password-hint,.woocommerce-password-strength
):not(:where(.woocommerce-info *,.woocommerce-message *,
  .woocommerce-error *,.wc-block-components-notice-banner *)) {
  color:var(--fyi-contrast-dark-copy) !important;
}

/* Text in dark product tabs, shipping estimates, and general cart/account
 * content (not the product images, light form inputs, or light notifications). */
body.fyi-ds-active.fyi-ds-contrast.single-product :is(
  .woocommerce-product-details__short-description,
  .woocommerce-Tabs-panel,
  .product_meta,
  .woocommerce-variation-description
) :is(p,li,span,small,strong):not(:where(.button *)) {
  color:var(--fyi-contrast-dark-copy) !important;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart :is(
  .cart_totals,.woocommerce-cart-form,.shipping,
  .woocommerce-shipping-destination,.woocommerce-shipping-calculator
) :is(p,label,li,small,strong,th,td):not(:where(
  .woocommerce-info *,.woocommerce-message *,.woocommerce-error *,
  .button *, .select2-container *
)) {
  color:var(--fyi-contrast-dark-copy) !important;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-account .woocommerce-MyAccount-content
  :is(p,li,dt,dd,small):not(:where(
  .woocommerce-info *,.woocommerce-message *,.woocommerce-error *,
  .button *,input *,select *,textarea *
)) {
  color:var(--fyi-contrast-dark-copy) !important;
}

/* Category results and secondary UI elements on the dark catalogue backdrop. */
body.fyi-ds-active.fyi-ds-contrast :is(
  .woocommerce-result-count,.ct-results-count,
  .woocommerce-products-header__description,
  .woocommerce-product-category-description
) {
  color:var(--fyi-contrast-dark-copy) !important;
}
/* Visibly disabled states stay disabled; do not override pointer events,
 * disabled/aria-disabled, animations, gateway eligibility or checkout logic. */


/* ==========================================================================
 * FYI 1.0.13 — Classic WooCommerce cart: links and action text on dark panels
 * ==========================================================================
 * A product's name and variation, the cart's "Change address" action, and
 * remove controls are links/content. Prior revisions only colored table td's
 * and p's: the theme's link-specific foreground won over those declarations.
 * Color only the named dark-surface elements. Retain backgrounds, product
 * thumbnails, quantity field colors, coupon inputs, totals and interactions.
 */

/* Product name and actual item link: the screenshot showed near-black ink
 * against the existing deep-purple cart table. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .woocommerce-cart-form table.shop_table td.product-name,
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .woocommerce-cart-form table.shop_table td.product-name > a,
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .woocommerce-cart-form table.shop_table td.product-name a:not(.button) {
  color:var(--fyi-contrast-dark-copy,#F3EFF9) !important;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .woocommerce-cart-form table.shop_table td.product-name a:not(.button):is(:hover,:focus-visible) {
  color:var(--fyi-contrast-bright-link,#9DE0E6) !important;
}

/* Variation metadata lives in dl.variation dt/dd, which may be set by
 * different Blocksy/WooCommerce selectors. Use a muted BUT light foreground. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .woocommerce-cart-form td.product-name :is(dl.variation,dl.variation dt,dl.variation dd,
  dl.variation dd p,.wc-item-meta,.wc-item-meta li,.wc-item-meta p,
  .product-variation,.variation-name,.variation-value) {
  color:var(--fyi-contrast-secondary-copy,#D8D1E0) !important;
}

/* The shipping calculator link can say "Change address" or "Calculate
 * shipping" depending on Blocksy/WooCommerce version. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .cart_totals :is(a.shipping-calculator-button,.shipping-calculator-button,
  .woocommerce-shipping-calculator > a:not(.button)),
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .cart_totals .woocommerce-shipping-calculator a:not(.button) {
  color:var(--fyi-contrast-bright-link,#9DE0E6) !important;
  text-decoration:underline;
  text-underline-offset:3px;
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .cart_totals :is(a.shipping-calculator-button,.shipping-calculator-button):is(:hover,:focus-visible) {
  color:var(--fyi-contrast-light,#FAF7FF) !important;
}

/* "Remove item" is a small link/icon in the cart table, not an image.
 * Keep its original hit-area, action and hover effect. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .woocommerce-cart-form :is(td.product-remove a.remove,td.product-remove a.remove > span,
  td.product-remove a.remove svg,td.product-remove a.remove svg path) {
  color:var(--fyi-contrast-secondary-copy,#D8D1E0) !important;
  --theme-icon-color:var(--fyi-contrast-secondary-copy,#D8D1E0);
}
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .woocommerce-cart-form td.product-remove a.remove:is(:hover,:focus-visible) {
  color:var(--fyi-contrast-bright-link,#9DE0E6) !important;
}

/* "Update cart" starts DISABLED until a quantity changes. The earlier
 * hard-coded dimmed text and opacity produced nearly unreadable lettering.
 * This only lifts visible contrast; the disabled attribute, business logic,
 * hover/click behavior and button background remain unchanged. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart
  .woocommerce-cart-form button[name="update_cart"]:is(:disabled,[disabled],.disabled) {
  color:#FAF7FF !important;
  -webkit-text-fill-color:#FAF7FF;
  opacity:.78 !important;
}

/* Cart account and shipping data may have regular links; scope them to the
 * dark totals surface, never the pale coupon/quantity fields or notice bars. */
body.fyi-ds-active.fyi-ds-contrast.woocommerce-cart .cart_totals
  :is(.woocommerce-shipping-destination,.woocommerce-shipping-methods) a:not(.button) {
  color:var(--fyi-contrast-bright-link,#9DE0E6) !important;
}


/* ==========================================================================
 * FYI 1.0.14 — SINGLE-PRODUCT action/variant text on dark backgrounds
 * ==========================================================================
 * Existing selected color/size menus have PALE surfaces and intentionally
 * retain their dark labels. These rules only brighten action links on the
 * dark product summary backdrop; they do not change product variants,
 * thumbnail images, gallery selection states, buttons or purchasing logic.
 */

/* WooCommerce's variation-reset action is a normal clickable link once the
 * shopper selects a color/size. Its default gray becomes unreadable here. */
body.fyi-ds-active.fyi-ds-contrast.single-product
  .product .summary :is(
    .reset_variations,
    a.reset_variations,
    .ct-variation-reset,
    a.ct-variation-reset
  ) {
  color:var(--fyi-contrast-bright-link,#9DE0E6) !important;
  -webkit-text-fill-color:var(--fyi-contrast-bright-link,#9DE0E6);
  text-decoration:underline;
  text-underline-offset:3px;
}
body.fyi-ds-active.fyi-ds-contrast.single-product
  .product .summary :is(.reset_variations,.ct-variation-reset):is(:hover,:focus-visible) {
  color:var(--fyi-contrast-light,#FAF7FF) !important;
  -webkit-text-fill-color:var(--fyi-contrast-light,#FAF7FF);
}

/* Size guides and wishlist calls-to-action are links on the SAME dark summary,
 * not light form fields. Cover familiar Blocksy and TI Wishlist markup while
 * avoiding sitewide button recoloring or unintended header icon changes. */
body.fyi-ds-active.fyi-ds-contrast.single-product
  .product .summary :is(
    .ct-size-guide a,
    a.ct-size-guide,
    .ct-product-size-guide a,
    a.ct-product-size-guide,
    a.size-guide,
    a.size-guide-link,
    a.fyi-size-guide,
    .tinvwl_add_to_wishlist_button,
    .tinvwl_add_to_wishlist_button .tinvwl_add_to_wishlist-text,
    a.tinvwl_add_to_wishlist_button,
    .ct-product-add-to-wishlist,
    .ct-product-add-to-wishlist a,
    a.ct-product-add-to-wishlist
  ) {
  color:var(--fyi-contrast-bright-link,#9DE0E6) !important;
  --theme-link-initial-color:var(--fyi-contrast-bright-link,#9DE0E6);
}
body.fyi-ds-active.fyi-ds-contrast.single-product
  .product .summary :is(
    .tinvwl_add_to_wishlist_button,
    .ct-product-add-to-wishlist,
    .ct-product-size-guide a,
    .ct-size-guide a
  ):is(:hover,:focus-visible) {
  color:var(--fyi-contrast-light,#FAF7FF) !important;
}

/* The wishlist heart in many integrations is an icon font or SVG. Match its
 * foreground to the readable link without touching its size or hit target. */
body.fyi-ds-active.fyi-ds-contrast.single-product
  .product .summary :is(.tinvwl_add_to_wishlist_button,.ct-product-add-to-wishlist)
  :is(.tinvwl-icon-heart,.ct-icon-container,svg) {
  color:var(--fyi-contrast-bright-link,#9DE0E6) !important;
  --theme-icon-color:var(--fyi-contrast-bright-link,#9DE0E6);
}

/* Obvious keyboard location for variation reset & wishlist without altering
 * WooCommerce's existing click/change/remove behavior. */
body.fyi-ds-active.fyi-ds-contrast.single-product
  .product .summary :is(
    a.reset_variations,
    a.ct-variation-reset,
    a.tinvwl_add_to_wishlist_button,
    .ct-product-add-to-wishlist a
  ):focus-visible {
  outline:2px solid var(--fyi-contrast-bright-link,#9DE0E6);
  outline-offset:3px;
}
