/* lwds-core.css — built 2026-09-28T05:03Z by bin/build-css.sh from assets/css/src (production base 2026-09-25 + login pages 2026-09-28). Edit the sources, not this file. */
/* Layer order — declared once (D-023). `shims` is first on purpose: an !important
   declaration in the FIRST layer beats !important in every later layer, which is the only
   way to override the parent's !important rules once the parent is layered. */
@layer shims, vendor, parent, legacy, lwds.tokens, lwds.base, lwds.components, lwds.templates, lwds.utilities;
/* Parent overrides (dated shims). Each rule undoes a parent !important that would otherwise
   win over LWDS components. Remove when parent main.css is dequeued from product pages. */
@layer shims {
  /* parent-override: .woocommerce div.product form.cart button.single_add_to_cart_button (main.css) — 7 !important declarations */
  .lws-decision .single_add_to_cart_button {
    background: var(--lws-color-action) !important;
    color: var(--lws-color-text-on-action) !important;
    border: 1px solid transparent !important;
    padding: var(--lws-space-3) var(--lws-space-6) !important;
    font-size: var(--lws-text-body-lg) !important;
    font-weight: 600 !important;
    border-radius: var(--lws-radius-control) !important;
  }
  .lws-decision .single_add_to_cart_button:hover,
  .lws-decision .single_add_to_cart_button:focus-visible {
    background: var(--lws-color-action-hover) !important;
    color: var(--lws-color-text-on-action) !important;
  }
}
@layer shims {
  /* woo-override: WooCommerce prints style="opacity:0" on .woocommerce-product-gallery and fades it in
     from wc-single-product.js. If that script cannot run (two jQuery instances on the page until
     D-024 completes), the gallery would stay invisible. Show it unconditionally. */
  .lws-gallery .woocommerce-product-gallery { opacity: 1 !important; }
}
@layer shims {
  /* snippet-override: the Code Snippets CSS (unlayered, 305–355 !important) forces
     `.woocommerce-checkout #payment .place-order { display:flex; justify-content:flex-end }`,
     `#place_order { float:none; margin:0 }` and fixed 75%/25% review-table columns. Undone on the
     LWDS checkout only. Remove when the snippet CSS is retired (migration-plan M6). */
  .lws-checkout .woocommerce-checkout-payment .place-order { display: grid !important; justify-content: stretch !important; }
  .lws-checkout .lws-order-summary__table th.product-name, .lws-checkout .lws-order-summary__table td.product-name { width: auto !important; padding-right: var(--lws-space-3) !important; }
  .lws-checkout .lws-order-summary__table th.product-total, .lws-checkout .lws-order-summary__table td.product-total { width: 1% !important; }
  .lws-checkout .lws-order-summary__table { table-layout: auto !important; }
}
@layer shims {
  /* woo-override: SelectWoo measures the native select before LWDS CSS applies and writes an inline
     width on .select2-container; the field must fill its grid cell (responsive-guidelines §1). */
  .lws-checkout .form-row .select2-container { width: 100% !important; }
  .lws-checkout .form-row .select2-container .selection { display: block !important; width: 100% !important; }
  .lws-checkout .form-row .select2-container .select2-selection--single { width: 100% !important; }
}
@layer shims {
  /* snippet-override: unprefixed `.woocommerce-customer-details` rules in the Code Snippets CSS
     force 30 px titles, 18 px addresses and a 40 px top margin with !important. Undone on LWDS order
     pages only. Remove with the snippet CSS (migration-plan M6). */
  .lws-order .woocommerce-customer-details { margin-top: var(--lws-space-4) !important; }
  .lws-order .woocommerce-customer-details .woocommerce-column__title { font-size: var(--lws-text-heading) !important; font-weight: 600 !important; margin: 0 0 var(--lws-space-2) !important; }
  .lws-order .woocommerce-customer-details address { font-size: var(--lws-text-small) !important; line-height: 1.5 !important; }
}
@layer shims {
  /* snippet-override: the Code Snippets CSS (unlayered) separates the Logout item with
     `.woocommerce-MyAccount-navigation-link--customer-logout { margin-top; padding-top; border-top }`
     by its li class, which WooCommerce's wc_get_account_menu_item_classes() still emits inside the
     LWDS navigation. In the horizontal tab strip (< 992 px) that separator breaks the row; the sidebar
     (≥ 992 px) keeps it as its own separator. Remove when the snippet CSS is retired (migration-plan M6). */
  @media (max-width: 991.98px) {
    .lws-account-nav .woocommerce-MyAccount-navigation-link--customer-logout { margin: 0 !important; padding: 0 !important; border: 0 !important; }
  }
}
@layer shims {
  /* plugin-override (Polish Round 1): Ninja Forms\x27 unlayered display stylesheet paints inputs (border, background,
     padding, font) and the submit button; matched here so the form looks like every other LWDS form. Remove if the
     form is rebuilt with the LWDS field markup. */
  .lws-main .nf-form-content input:not([type="button"]):not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
  .lws-main .nf-form-content select, .lws-main .nf-form-content textarea, .lws-main .nf-form-content .ninja-forms-field:not([type="button"]):not([type="submit"]) {
    width: 100% !important; min-height: var(--lws-control-height) !important; padding: var(--lws-space-3) var(--lws-space-4) !important; margin: 0 !important;
    border: 1px solid var(--lws-color-border-strong) !important; border-radius: var(--lws-radius-control) !important; box-shadow: none !important;
    background: var(--lws-color-surface) !important; color: var(--lws-color-text) !important; font: inherit !important; font-size: var(--lws-text-body) !important; line-height: 1.3 !important;
  }
  .lws-main .nf-form-content textarea { min-height: 120px !important; resize: vertical !important; }
  .lws-main .nf-form-content input:focus-visible, .lws-main .nf-form-content select:focus-visible, .lws-main .nf-form-content textarea:focus-visible { border-color: var(--lws-color-focus) !important; outline: none !important; box-shadow: var(--lws-shadow-focus) !important; }
  .lws-main .nf-form-content .nf-error .ninja-forms-field { border-color: var(--lws-color-danger) !important; }
  .lws-main .nf-form-content input[type="button"], .lws-main .nf-form-content input[type="submit"], .lws-main .nf-form-content .submit-container input {
    width: auto !important; min-height: var(--lws-control-height) !important; padding: var(--lws-space-3) var(--lws-space-6) !important; border: 1px solid transparent !important; border-radius: var(--lws-radius-control) !important;
    background: var(--lws-color-action) !important; color: var(--lws-color-text-on-action) !important; font: inherit !important; font-weight: 600 !important; cursor: pointer !important; box-shadow: none !important;
  }
  .lws-main .nf-form-content input[type="button"]:hover, .lws-main .nf-form-content input[type="submit"]:hover { background: var(--lws-color-action-hover) !important; }
  .lws-main .nf-form-content .nf-field-label label { font-size: var(--lws-text-label) !important; font-weight: 600 !important; }
  /* Ninja Forms "Divider" (hr) field (2026-09-23, Marriott form): its <hr class="ninja-forms-field"> matched the control
     box above and drew an empty input; it is a rule again. */
  .lws-main .nf-form-content .hr-container .nf-field-element .ninja-forms-field, .lws-main .nf-form-content .nf-field-element hr.ninja-forms-field { width: 100% !important; min-height: 0 !important; height: 0 !important; margin: var(--lws-space-2) 0 !important; padding: 0 !important; border: 0 !important; border-top: 1px solid var(--lws-color-border) !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; }
  /* plugin-override (Polish Round 1): lwm-secure-account prints an inline <style> for its change-email panel (margin,
     padding, border, radius, background); matched to the LWDS card so the panel reads as one of the account cards. */
  .lws-account .lwm-secure-email-change-panel { margin-top: 0 !important; padding: var(--lws-space-5) !important; border: 1px solid var(--lws-color-border) !important; border-radius: var(--lws-radius-card) !important; background: var(--lws-color-surface) !important; }
  .lws-account .lwm-secure-email-change-panel .button { margin-top: 0 !important; }
  /* plugin-override (Polish Round 1): TeraWallet's inline tooltip CSS centres the 280 px "Payment split" bubble on the
     info icon, which sits at the left edge of the summary card, so half of it was clipped. Anchor it to the icon's left
     edge instead and let long labels wrap. Remove if the plugin changes its tooltip. */
  .lws-checkout .woo-wallet-tooltip-content { left: 0 !important; transform: none !important; white-space: normal !important; min-width: 16rem !important; max-width: min(22rem, 80vw) !important; }
  .lws-checkout .woo-wallet-tooltip-arrow { left: 9px !important; transform: none !important; }
  .lws-checkout .woo-wallet-tooltip-row { gap: var(--lws-space-4) !important; }
  /* parent-override (Polish Round 1): unlayered rules cap #order_review at 400 px and underline #order_review_heading in
     gold; the summary card owns its width and title. Remove once the parent stylesheet is retired (known-issues M3). */
  .lws-checkout__summary .woocommerce-checkout-review-order { max-width: none !important; width: 100% !important; }
  .lws-checkout__summary .lws-card__title { border-bottom: 0 !important; padding-bottom: 0 !important; }
  /* parent-override (Polish Round 1): an unlayered rule caps .cart_totals at 480 px and floats it right, so the cart's
     summary card was narrower than its 5fr column while the checkout's filled it. Same removal condition as above. */
  .lws-cart .cart_totals { max-width: none !important; width: 100% !important; float: none !important; }
}
/* Tokens — design-tokens.md. Parent primitives are aliased, never redeclared (D-030).
   The three off-scale neutrals (300/400/800) are never aliased. */
@layer lwds.tokens {
  :root {
    /* primitives added by LWDS */
    --lws-p-indigo-800: hsl(249 63% 20%);
    --lws-p-indigo-700: hsl(249 55% 34%);
    --lws-p-blue-600: #1D4ED8;

    /* colour — surfaces and text */
    --lws-color-surface: hsl(var(--white));
    --lws-color-surface-alt: var(--neutral-50);
    --lws-color-surface-sunken: var(--neutral-100);
    --lws-color-surface-dark: hsl(var(--main-two));
    --lws-color-text: var(--neutral-900);
    --lws-color-text-muted: var(--neutral-600);
    --lws-color-text-subtle: var(--neutral-500);
    --lws-color-text-on-dark: #FFFFFF;
    --lws-color-text-on-action: var(--neutral-900);
    /* colour — action and interaction */
    --lws-color-action: var(--main-600);
    --lws-color-action-hover: var(--main-700);
    --lws-color-action-active: var(--main-800);
    --lws-color-action-subtle: var(--main-100);
    --lws-color-link: var(--lws-p-indigo-700);
    --lws-color-link-hover: var(--lws-p-indigo-800);
    --lws-color-focus: var(--lws-p-blue-600);
    --lws-color-border: var(--neutral-200);
    --lws-color-border-strong: var(--neutral-500);
    /* colour — status */
    --lws-color-success: #1E7F4F; --lws-color-success-tint: #ECF8F1;
    --lws-color-warning: #9A5B00; --lws-color-warning-tint: #FFF7E6;
    --lws-color-danger: #B42318;  --lws-color-danger-tint: #FEF3F2;
    --lws-color-info: #1D4ED8;    --lws-color-info-tint: #EEF3FF;
    /* colour — tier */

    /* space (aliases the parent --size-* scale) */
    --lws-space-1: var(--size-1); --lws-space-2: var(--size-2); --lws-space-3: var(--size-3);
    --lws-space-4: var(--size-4); --lws-space-5: var(--size-5); --lws-space-6: var(--size-6);
    --lws-space-8: var(--size-8); --lws-space-10: var(--size-10); --lws-space-12: var(--size-12);
    --lws-space-16: var(--size-16); --lws-space-24: var(--size-24);
    --lws-gutter: var(--lws-space-4);
    --lws-stack: var(--lws-space-4);
    --lws-section: var(--lws-space-12);
    --lws-measure: 70ch;
    --lws-container-max: 100%;
    --lws-header-height: 80px;

    /* type — Typography Round (2026-09-23, D-046). Reading sizes were lifted one step after the owner found the
       site hard to read: body 16 → 17–18 px, small 14 → 16 px, headings up with it. Roles keep their names, so
       every component moves at once; the parent's clamp() aliases are no longer used because their floors sat
       one step too low. Line heights live with the roles in base.css (display 1.1 · title 1.2 · heading 1.3 ·
       body-lg 1.5 · body 1.6 · small 1.5 · label 1.4 · micro 1.4). Reference feel: antavo.com blog (20/28 px
       body, 34 px h2) and loyaltylobby.com (Roboto, 16/25.6 px articles). */
    --lws-font-family: var(--heading-font);
    --lws-text-display: clamp(2.25rem, 1.75rem + 1.6vw, 3.25rem);      /* 36 → 52 px */
    --lws-text-title: clamp(1.75rem, 1.5rem + .9vw, 2.25rem);          /* 28 → 36 px */
    --lws-text-heading: clamp(1.25rem, 1.1rem + .55vw, 1.625rem);      /* 20 → 26 px */
    --lws-text-body-lg: clamp(1.1875rem, 1.1rem + .3vw, 1.25rem);      /* 19 → 20 px */
    --lws-text-body: clamp(1.0625rem, 1rem + .2vw, 1.125rem);          /* 17 → 18 px */
    --lws-text-small: 1rem;                                            /* 16 px — meta, tables, nav, footer */
    --lws-text-label: 1rem;                                            /* 16 px / 600 — form labels, tabs, badges */
    --lws-text-micro: .8125rem;                                        /* 13 px / 600 / uppercase eyebrows only */
    --lws-text-price: 1.75rem;
    --lws-text-price-lg: var(--lws-text-title);

    /* shape */
    --lws-radius-sm: .25rem; --lws-radius-control: .5rem; --lws-radius-card: .75rem;
    --lws-radius-lg: 1rem; --lws-radius-pill: 999px; --lws-radius-round: 50%;
    --lws-shadow-1: 0 1px 2px rgb(17 24 39 / 6%);
    --lws-shadow-2: 0 4px 18px rgb(17 24 39 / 6%);
    --lws-shadow-3: 0 12px 32px rgb(17 24 39 / 12%);
    --lws-shadow-focus: 0 0 0 2px var(--lws-color-surface), 0 0 0 5px var(--lws-color-focus);

    /* motion */
    --lws-duration-fast: 120ms; --lws-duration-base: 200ms; --lws-duration-slow: 320ms;
    --lws-ease-standard: cubic-bezier(.2, 0, 0, 1);
    --lws-ease-exit: cubic-bezier(.4, 0, 1, 1);

    /* z */
    --lws-z-raised: 1; --lws-z-dropdown: 100; --lws-z-sticky: 200; --lws-z-overlay: 300;
    --lws-z-drawer: 400; --lws-z-modal: 500; --lws-z-toast: 600;

    /* icon */
    --lws-icon-size-sm: 1rem; --lws-icon-size-md: 1.25rem; --lws-icon-size-lg: 1.5rem;
    /* Sprint 6 (D-041): tints for text/fills on the dark surface, control heights, shared chevron. */
    --lws-on-dark-8: rgb(255 255 255 / 8%); --lws-on-dark-10: rgb(255 255 255 / 10%); --lws-on-dark-12: rgb(255 255 255 / 12%);
    --lws-on-dark-14: rgb(255 255 255 / 14%); --lws-on-dark-15: rgb(255 255 255 / 15%); --lws-on-dark-20: rgb(255 255 255 / 20%);
    --lws-on-dark-25: rgb(255 255 255 / 25%); --lws-on-dark-40: rgb(255 255 255 / 40%); --lws-on-dark-60: rgb(255 255 255 / 60%);
    --lws-on-dark-70: rgb(255 255 255 / 70%); --lws-on-dark-75: rgb(255 255 255 / 75%); --lws-on-dark-80: rgb(255 255 255 / 80%); --lws-on-dark-85: rgb(255 255 255 / 85%);
    --lws-color-border-on-tint: rgb(17 24 39 / 8%);
    --lws-control-height-sm: 36px; --lws-control-height: 44px; --lws-control-height-lg: 52px;
    --lws-icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23111827' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  }
  @media (min-width: 768px) { :root { --lws-gutter: var(--lws-space-6); } }
  @media (min-width: 992px) { :root { --lws-section: var(--lws-space-16); } }
  @media (min-width: 1200px) { :root { --lws-container-max: 1140px; } }
  @media (min-width: 1400px) { :root { --lws-container-max: 1320px; } }
  @media (prefers-reduced-motion: reduce) {
    :root { --lws-duration-fast: 0ms; --lws-duration-base: 0ms; --lws-duration-slow: 0ms; }
  }
}
/* Base — element defaults scoped to the LWDS region (.lws-main, .lws-buybar) so the parent's
   header, footer and mobile menu on product pages are untouched. */
@layer lwds.base {
  .lws-main, .lws-buybar { font-family: var(--lws-font-family); font-size: var(--lws-text-body); line-height: 1.6; color: var(--lws-color-text); }
  .lws-main *, .lws-main *::before, .lws-main *::after, .lws-buybar *, .lws-buybar *::before, .lws-buybar *::after { box-sizing: border-box; }
  .lws-main h1, .lws-main h2, .lws-main h3, .lws-main h4 { margin: 0; line-height: 1.2; font-weight: 600; font-family: var(--lws-font-family); color: var(--lws-color-text); text-wrap: balance; }
  .lws-main h1 { font-size: var(--lws-text-display); line-height: 1.1; letter-spacing: -.01em; }
  .lws-main h2 { font-size: var(--lws-text-title); }
  .lws-main h3 { font-size: var(--lws-text-heading); line-height: 1.3; }
  .lws-main h4 { font-size: var(--lws-text-body-lg); line-height: 1.35; }
  .lws-main p, .lws-main ul, .lws-main ol, .lws-main dl, .lws-main figure, .lws-main table { margin: 0; }
  .lws-main ul, .lws-main ol { padding-inline-start: 1.25rem; }
  .lws-main img { max-width: 100%; height: auto; display: block; }
  .lws-main a { color: var(--lws-color-link); text-decoration: underline; text-decoration-thickness: from-font; text-underline-offset: .15em; transition: color var(--lws-duration-fast); }
  .lws-main a:hover { color: var(--lws-color-link-hover); }
  .lws-main button, .lws-main input, .lws-main select, .lws-main textarea { font: inherit; color: inherit; }
  .lws-main table { border-collapse: collapse; width: 100%; }
  .lws-main th { text-align: start; }
  .lws-main time, .lws-main .lws-num, .lws-main .woocommerce-Price-amount { font-variant-numeric: tabular-nums; }
  .lws-main :focus-visible, .lws-buybar :focus-visible { outline: none; box-shadow: var(--lws-shadow-focus); border-radius: var(--lws-radius-sm); }
  .lws-main ::placeholder { color: var(--lws-color-text-subtle); opacity: 1; }
  .lws-main .screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
  .lws-icon { width: var(--lws-icon-size-md); height: var(--lws-icon-size-md); flex: none; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; display: inline-block; vertical-align: middle; }
  .lws-icon--sm { width: var(--lws-icon-size-sm); height: var(--lws-icon-size-sm); }
  .lws-icon--lg { width: var(--lws-icon-size-lg); height: var(--lws-icon-size-lg); }
  /* Reading rhythm for editor content (Polish Round 1). Scoped under .lws-main so these outrank the element reset
     above (`.lws-main p { margin: 0 }`), which had silently flattened every paragraph and list in the prose. */
  /* Reading rhythm (Spacing Round, 2026-09-24): ratios measured on the owner's reference
     (neartheelevators.com — 20 px body on 35 px lines, 1.2 em between paragraphs, 1.2 em above /
     1.5 em below figures, ~2 em above / ~1.7 em below headings). Expressed in em so the rhythm
     follows the body size at every breakpoint (18 px desktop, 17 px phone). */
  .lws-prose { max-width: var(--lws-measure); line-height: 1.75; text-wrap: pretty; }
  .lws-main .lws-prose > * + * { margin-block-start: 1.2em; }
  .lws-main .lws-prose p { line-height: inherit; } /* the parent's p rule pinned paragraphs to 1.6 */
  .lws-main .lws-prose > :is(h2, h3, h4) { margin-block-start: calc(2 * var(--lws-text-body)); margin-block-end: 0; } /* body-relative, not heading-relative: 36 px desktop / 34 px phone for every level */
  .lws-main .lws-prose > :is(h2, h3, h4) + * { margin-block-start: 1em; }
  .lws-main .lws-prose > :is(h2, h3, h4):first-child { margin-block-start: 0; }
  .lws-main .lws-prose > :is(figure, img, .wp-block-image, .wp-block-embed, table, .wp-block-table) { margin-block-start: 1.2em; }
  .lws-main .lws-prose > :is(figure, img, .wp-block-image, .wp-block-embed, table, .wp-block-table) + * { margin-block-start: 1.5em; }
  .lws-prose figure { margin-inline: 0; }
  .lws-prose figcaption { margin-block-start: .5em; font-size: var(--lws-text-small); line-height: 1.5; color: var(--lws-color-text-muted); text-align: center; }
  .lws-prose blockquote { margin: 0; padding-inline-start: 1.2em; border-inline-start: 3px solid var(--lws-color-border-strong); color: var(--lws-color-text-muted); }
  .lws-prose h2 { font-size: var(--lws-text-heading); line-height: 1.3; }
  .lws-prose h3, .lws-prose h4 { font-size: var(--lws-text-body-lg); line-height: 1.35; }
  .lws-main .lws-prose ul { list-style: disc; }
  .lws-main .lws-prose ol { list-style: decimal; }
  .lws-main .lws-prose :is(ul, ol) { padding-inline-start: 1.5rem; }
  .lws-main .lws-prose li { display: list-item; margin: 0; padding-inline-start: .15rem; }
  .lws-main .lws-prose li + li { margin-block-start: .35em; }
  .lws-main .lws-prose li > :is(ul, ol) { margin-block-start: .35em; }
  .lws-prose li::marker { color: var(--lws-color-text-muted); }
  .lws-prose img { border-radius: var(--lws-radius-card); }
  .lws-prose table { font-size: var(--lws-text-small); }
  .lws-prose th, .lws-prose td { padding: var(--lws-space-2) var(--lws-space-3); border-bottom: 1px solid var(--lws-color-border); vertical-align: top; }
  .lws-text-muted { color: var(--lws-color-text-muted); }
  .lws-text-small { font-size: var(--lws-text-small); line-height: 1.5; }
  .lws-text-label { font-size: var(--lws-text-label); font-weight: 600; line-height: 1.4; }
  .lws-text-micro { font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; line-height: 1.4; }

  /* layout primitives */
  .lws-container { width: 100%; max-width: var(--lws-container-max); margin-inline: auto; padding-inline: var(--lws-gutter); }
  .lws-stack { display: flex; flex-direction: column; gap: var(--lws-stack); }
  .lws-stack--lg { gap: var(--lws-space-8); }
  .lws-stack--sm { gap: var(--lws-space-2); }
  .lws-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lws-space-2); }
  .lws-grid { display: grid; gap: var(--lws-space-4); grid-template-columns: repeat(auto-fit, minmax(var(--lws-grid-min, 16rem), 1fr)); }
  .lws-grid > * { min-width: 0; }
  .lws-split { display: grid; gap: var(--lws-space-8); align-items: start; }
  .lws-split > * { min-width: 0; }
  @media (min-width: 992px) {
    .lws-split { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--lws-space-12); }
    .lws-split__aside { position: sticky; top: calc(var(--lws-header-height) + var(--lws-admin-bar, 0px) + var(--lws-space-4)); }
  }
  .lws-main { padding-block: var(--lws-space-6) var(--lws-section); }
  @media (min-width: 992px) { .lws-main { padding-block-start: var(--lws-space-8); } }
}
/* Account area: navigation, dashboard hero, status (order) cards, store-credit card, login layout,
   wallet tabs, order updates. Shared surfaces, forms and notices live in surfaces.css, forms.css and
   notices.css (Sprint 6, D-041). */
@layer lwds.components {

  /* --- Account navigation: sticky tab strip < 992 px, sidebar ≥ 992 px --- */
  .lws-account-nav { position: sticky; top: calc(var(--lws-header-height) + var(--lws-admin-bar, 0px)); z-index: var(--lws-z-sticky); background: var(--lws-color-surface); margin-inline: calc(-1 * var(--lws-gutter)); padding-inline: var(--lws-gutter); }
  .lws-account-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--lws-space-1); overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid var(--lws-color-border); -webkit-overflow-scrolling: touch; }
  .lws-account-nav ul::-webkit-scrollbar { display: none; }
  .lws-account-nav li { margin: 0; flex: none; }
  .lws-account-nav a { display: inline-flex; align-items: center; gap: var(--lws-space-2); white-space: nowrap; min-height: 48px; padding: 0 var(--lws-space-3); color: var(--lws-color-text-muted); text-decoration: none; font-weight: 500; border-bottom: 2px solid transparent; border-radius: 0; }
  .lws-account-nav a:hover { color: var(--lws-color-text); }
  .lws-account-nav a[aria-current="page"] { color: var(--lws-color-text); border-bottom-color: var(--lws-color-action); font-weight: 600; }
  .lws-account-nav .woocommerce-MyAccount-navigation-link--customer-logout a { color: var(--lws-color-text-subtle); }
  @media (min-width: 992px) {
    .lws-account-nav { position: sticky; top: calc(var(--lws-header-height) + var(--lws-admin-bar, 0px) + var(--lws-space-4)); margin: 0; padding: 0; background: transparent; z-index: auto; }
    .lws-account-nav ul { flex-direction: column; border: 0; gap: 2px; overflow: visible; }
    .lws-account-nav a { border: 0; border-radius: var(--lws-radius-control); min-height: var(--lws-control-height); width: 100%; padding: 0 var(--lws-space-3); }
    .lws-account-nav a[aria-current="page"] { background: var(--lws-color-action-subtle); }
    .lws-account-nav a:hover { background: var(--lws-color-surface-alt); }
    .lws-account-nav .woocommerce-MyAccount-navigation-link--customer-logout { margin-top: var(--lws-space-3); padding-top: var(--lws-space-3); border-top: 1px solid var(--lws-color-border); }
  }

  /* --- Dashboard hero --- */
  .lws-account-hero { display: grid; gap: var(--lws-space-5); padding: var(--lws-space-6); border-radius: var(--lws-radius-lg); background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); }
  .lws-account-hero__body { display: flex; flex-direction: column; gap: var(--lws-space-3); min-width: 0; }
  .lws-account-hero h1 { color: inherit; }
  /* Elite membership (owner, 2026-09-25): short badge + "Valid thru Sep 23, 2027" under the greeting. */
  .lws-account-hero__elite { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lws-space-2) var(--lws-space-3); margin: 0; font-size: var(--lws-text-small); color: var(--lws-on-dark-80); }
  .lws-account-hero .lws-chip--elite { background: var(--lws-color-action); color: var(--lws-color-text-on-action); border-color: transparent; }
  .lws-account-hero .lws-chip--elite .lws-icon { width: 1em; height: 1em; }
  .lws-account-hero__kpi .lws-kpi__item { background: var(--lws-on-dark-8); }
  .lws-account-hero__kpi .lws-kpi__label { color: var(--lws-on-dark-70); }
  .lws-account-hero__kpi .lws-kpi__value, .lws-account-hero__kpi .lws-kpi__value .woocommerce-Price-currencySymbol { color: inherit; }
  @media (min-width: 992px) {
    /* Owner, Polish Round 1: heading on top, the four tiles in one row beneath it. */
    .lws-account-hero { grid-template-columns: minmax(0, 1fr); padding: var(--lws-space-8); }
    .lws-account-hero .lws-account-hero__kpi { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  }

  /* --- KPI --- */

  /* --- Status card (one order) --- */
  .lws-status { display: flex; flex-direction: column; gap: var(--lws-space-4); padding: var(--lws-space-5); border: 1px solid var(--lws-color-border); border-inline-start-width: 4px; border-radius: var(--lws-radius-card); background: var(--lws-color-surface); min-width: 0; }
  .lws-status--success { border-inline-start-color: var(--lws-color-success); }
  .lws-status--warning { border-inline-start-color: var(--lws-color-warning); }
  .lws-status--danger { border-inline-start-color: var(--lws-color-danger); }
  .lws-status--info { border-inline-start-color: var(--lws-color-info); }
  .lws-status--neutral { border-inline-start-color: var(--lws-color-border-strong); }
  .lws-status__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: var(--lws-space-3); }
  .lws-status__heading { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 16rem; }
  .lws-status__title { font-size: var(--lws-text-heading); font-weight: 600; line-height: 1.3; }
  .lws-status__title a { color: inherit; text-decoration: none; }
  .lws-status__title a:hover { text-decoration: underline; }
  .lws-status__id { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); margin: 0; }
  .lws-status__badges { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lws-space-2); }
  .lws-status__next { display: flex; gap: var(--lws-space-2); align-items: flex-start; margin: 0; padding: var(--lws-space-3); border-radius: var(--lws-radius-control); background: var(--lws-color-surface-alt); font-size: var(--lws-text-small); }
  .lws-status__next .lws-icon { color: var(--lws-color-link); margin-top: .1em; }
  .lws-status--warning .lws-status__next { background: var(--lws-color-warning-tint); } .lws-status--warning .lws-status__next .lws-icon { color: var(--lws-color-warning); }
  .lws-status--danger .lws-status__next { background: var(--lws-color-danger-tint); } .lws-status--danger .lws-status__next .lws-icon { color: var(--lws-color-danger); }
  .lws-status--success .lws-status__next .lws-icon { color: var(--lws-color-success); }
  .lws-status--neutral { color: var(--lws-color-text-muted); }
  .lws-status .lws-timeline { margin: 0; }
  .lws-status__actions:empty { display: none; }
  .lws-status--detail .lws-status__title { font-size: var(--lws-text-title); }

  /* --- Store credit card --- */
  .lws-wallet { display: flex; flex-direction: column; gap: var(--lws-space-3); padding: var(--lws-space-5); border-radius: var(--lws-radius-card); background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); min-width: 0; }
  .lws-wallet .lws-wallet__title { font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; line-height: 1.4; color: var(--lws-on-dark-70); }
  .lws-wallet .lws-wallet__balance, .lws-wallet .lws-wallet__balance .woocommerce-Price-amount { color: inherit; }
  .lws-wallet .lws-wallet__balance .woocommerce-Price-currencySymbol { color: var(--lws-on-dark-70); }
  .lws-wallet__rules { font-size: var(--lws-text-small); color: var(--lws-on-dark-80); }
  .lws-wallet__link, .lws-wallet a { color: var(--lws-color-action); font-size: var(--lws-text-small); font-weight: 600; }
  .lws-wallet--hero { padding: var(--lws-space-6); border-radius: var(--lws-radius-lg); }

  /* --- Empty state --- */
  .lws-wallet-amount--credit { color: var(--lws-color-success); font-weight: 600; }
  .lws-wallet-amount--debit { font-weight: 600; }
  .lws-account__downloads table.shop_table, .lws-account .woocommerce-table--order-downloads { display: table; width: 100%; border: 0; margin: 0; font-size: var(--lws-text-small); }
  .lws-account__downloads th, .lws-account__downloads td { display: table-cell; padding: var(--lws-space-3) var(--lws-space-2); border: 0; border-bottom: 1px solid var(--lws-color-border); background: transparent; text-align: start; }
  .lws-account__downloads .woocommerce-MyAccount-downloads-file { display: inline-flex; align-items: center; min-height: var(--lws-control-height-sm); padding: var(--lws-space-2) var(--lws-space-4); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); color: var(--lws-color-text); font-weight: 600; text-decoration: none; }

  /* --- Orders list extras --- */
  .lws-account__count { margin: 0; }
  .lws-account__order-extra { display: grid; gap: var(--lws-space-1) var(--lws-space-4); grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); margin: calc(-1 * var(--lws-space-2)) 0 0; padding: var(--lws-space-3) var(--lws-space-5); border: 1px solid var(--lws-color-border); border-top: 0; border-radius: 0 0 var(--lws-radius-card) var(--lws-radius-card); font-size: var(--lws-text-small); }
  .lws-account__order-extra dt { color: var(--lws-color-text-muted); }
  .lws-account__order-extra dd { margin: 0; }

  /* --- Order updates (customer notes) --- */
  .lws-updates { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--lws-space-3); }
  .lws-updates__item { padding-inline-start: var(--lws-space-4); border-inline-start: 2px solid var(--lws-color-border-strong); }
  .lws-updates__meta { margin: 0 0 var(--lws-space-1); font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-updates__text p { margin: 0; }
  .lws-updates__text p + p { margin-top: var(--lws-space-2); }

  /* --- Addresses --- */
  .lws-address__head h2 { font-size: var(--lws-text-heading); }
  .lws-address__body { font-style: normal; line-height: 1.6; color: var(--lws-color-text-muted); flex: 1 1 auto; }
  .lws-address .lws-button { align-self: flex-start; }


  /* --- Login --- */
  .lws-account .woocommerce-form-login, .lws-account .woocommerce-form-register, .lws-account .woocommerce-ResetPassword, .lws-account .woocommerce-EditAccountForm { border: 0; padding: 0; margin: 0; background: transparent; box-shadow: none; }
  .lws-login { display: flex; flex-direction: column; gap: var(--lws-space-6); width: 100%; max-width: 64rem; margin-inline: auto; }
  .lws-login--narrow { max-width: 32rem; }
  /* Owner, 2026-09-28: the login + register pair spans the header's content width (logo to cart). */
  .lws-login--register { max-width: none; }
  .lws-login__grid { display: grid; gap: var(--lws-space-5); grid-template-columns: minmax(0, 1fr); align-items: start; }
  @media (min-width: 768px) { .lws-login--register .lws-login__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  .lws-login__col { gap: var(--lws-space-4); }
  .lws-login__col--register { background: var(--lws-color-surface-alt); }
  /* Owner, 2026-09-28: no "(required)" on the login, register and password forms; screen readers still hear "Required". */
  .lws-login .form-row label .required { display: none; }

  /* --- Account-specific form and plugin tweaks (shared field system: forms.css) --- */
  .lws-account .lws-form .lws-card { gap: var(--lws-space-4); }
  .lws-account .lwm-change-email-button, .lws-account .lwm-secure-email-change-panel .button { align-self: flex-start; width: auto; min-height: var(--lws-control-height-sm); padding: var(--lws-space-2) var(--lws-space-4); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); color: var(--lws-color-text); font: inherit; font-size: var(--lws-text-small); font-weight: 600; line-height: 1.2; cursor: pointer; }
  .lws-account .lwm-change-email-button:hover, .lws-account .lwm-change-email-button:focus-visible { background: var(--lws-color-surface-alt); }

  /* --- Wallet page: tabs, submenu (plugin script toggles it), content --- */
  .lws-wallet-page { display: flex; flex-direction: column; gap: var(--lws-space-5); }
  .lws-wallet-tabs { display: flex; flex-wrap: nowrap; gap: var(--lws-space-1); border-bottom: 1px solid var(--lws-color-border); overflow-x: auto; scrollbar-width: none; }
  .lws-wallet-tabs::-webkit-scrollbar { display: none; }
  .lws-wallet-tabs .woo-wallet-nav-item-wrapper { position: relative; }
  .lws-wallet-tab { display: inline-flex; align-items: center; gap: var(--lws-space-2); min-height: var(--lws-control-height); padding: 0 var(--lws-space-3); color: var(--lws-color-text-muted); text-decoration: none; font-weight: 500; border-bottom: 2px solid transparent; white-space: nowrap; }
  .lws-wallet-tab:hover { color: var(--lws-color-text); }
  .lws-wallet-tab.is-active { color: var(--lws-color-text); border-bottom-color: var(--lws-color-action); font-weight: 600; }
  .lws-wallet-tabs .woo-wallet-submenu-toggle { width: 18px; height: 18px; font-size: 18px; line-height: 18px; transition: transform var(--lws-duration-fast); }
  .lws-wallet-tabs .woo-wallet-submenu-toggle.rotate { transform: rotate(180deg); }
  .lws-wallet-tabs .woo-wallet-submenu { display: none; position: absolute; top: 100%; inset-inline-start: 0; min-width: 12rem; z-index: var(--lws-z-dropdown); background: var(--lws-color-surface); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); box-shadow: var(--lws-shadow-2); overflow: hidden; }
  .lws-wallet-tabs .woo-wallet-submenu-item { display: block; padding: var(--lws-space-3) var(--lws-space-4); color: var(--lws-color-text); text-decoration: none; font-size: var(--lws-text-small); }
  .lws-wallet-tabs .woo-wallet-submenu-item:hover { background: var(--lws-color-surface-alt); }
  .lws-wallet__content { display: flex; flex-direction: column; gap: var(--lws-space-4); }
  .lws-account .woo-wallet-my-wallet-container .woo-wallet-form-wrapper, .lws-account .woo-wallet-my-wallet-container .woo-wallet-statement { max-width: 100%; }

}
/* Button — the one clickable action shape. Woo binding: .single_add_to_cart_button (shimmed in 05-shims). */
@layer lwds.components {
  .lws-button, .lws-decision .single_add_to_cart_button {
    --lws-button-bg: var(--lws-color-action); --lws-button-fg: var(--lws-color-text-on-action); --lws-button-border: transparent;
    display: inline-flex; align-items: center; justify-content: center; gap: var(--lws-space-2);
    min-height: var(--lws-control-height); padding: var(--lws-space-3) var(--lws-space-5);
    border: 1px solid var(--lws-button-border); border-radius: var(--lws-radius-control);
    background: var(--lws-button-bg); color: var(--lws-button-fg);
    font-size: var(--lws-text-body); font-weight: 600; line-height: 1.2; text-decoration: none; cursor: pointer; white-space: nowrap;
    transition: background-color var(--lws-duration-fast) var(--lws-ease-standard), box-shadow var(--lws-duration-fast) var(--lws-ease-standard), transform var(--lws-duration-fast) var(--lws-ease-standard);
  }
  .lws-button:hover, .lws-button:focus-visible { --lws-button-bg: var(--lws-color-action-hover); color: var(--lws-button-fg); }
  .lws-button:active { --lws-button-bg: var(--lws-color-action-active); transform: translateY(1px); }
  .lws-button--secondary { --lws-button-bg: transparent; --lws-button-fg: var(--lws-color-text); --lws-button-border: var(--lws-color-border-strong); }
  .lws-button--secondary:hover, .lws-button--secondary:focus-visible { --lws-button-bg: var(--lws-color-surface-alt); }
  .lws-button--sm { min-height: var(--lws-control-height-sm); padding: var(--lws-space-2) var(--lws-space-4); font-size: var(--lws-text-small); }
  .lws-button--block { display: flex; width: 100%; }
  .lws-button:disabled, .lws-button[aria-disabled="true"], .lws-decision .single_add_to_cart_button:disabled, .lws-decision .single_add_to_cart_button.disabled { opacity: .55; cursor: not-allowed; }
  .lws-decision .single_add_to_cart_button { width: 100%; min-height: var(--lws-control-height-lg); margin-block-start: var(--lws-space-2); }
  .lws-decision .single_add_to_cart_button.loading { opacity: .7; }
  .lws-button--lg { min-height: var(--lws-control-height-lg); padding: var(--lws-space-3) var(--lws-space-8); font-size: var(--lws-text-body-lg); }
  .lws-button--quiet { border-color: transparent; }
  .lws-button[aria-busy="true"] { cursor: progress; }
  .lws-button[aria-busy="true"]::after { content: ""; width: 1em; height: 1em; margin-inline-start: .5em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: lws-spin .8s linear infinite; }
  /* Icon button — one definition (header, cart, quantity); modifiers for the dark header and ghost use */
  .lws-icon-button { display: inline-flex; align-items: center; justify-content: center; gap: var(--lws-space-2); flex: none; white-space: nowrap; min-width: var(--lws-control-height); min-height: var(--lws-control-height); padding: 0 var(--lws-space-2); border: 0; border-radius: var(--lws-radius-control); background: transparent; color: inherit; font: inherit; font-size: var(--lws-text-small); font-weight: 500; text-decoration: none; cursor: pointer; }
  .lws-icon-button:hover, .lws-icon-button:focus-visible { background: var(--lws-color-surface-alt); color: inherit; }
  .lws-icon-button--on-dark:hover, .lws-icon-button--on-dark:focus-visible, .lws-icon-button--on-dark[aria-expanded="true"] { background: var(--lws-on-dark-10); color: inherit; }
}
/* Cart: line-item table (stacks into cards below 768 px), actions row, summary card (cart.js
   replaces .woocommerce-cart-form and .cart_totals, so everything hangs off WooCommerce's classes). */
@layer lwds.components {
  .lws-cart .woocommerce-notices-wrapper:empty { display: none; }
  .lws-cart__form { margin: 0; }
  .lws-cart__wrap { border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); overflow: hidden; }
  .lws-cart-table { width: 100%; border-collapse: collapse; margin: 0; border: 0; font-size: var(--lws-text-small); display: table; }
  .lws-cart-table thead { display: table-header-group; }
  .lws-cart-table tbody { display: table-row-group; width: auto; }
  .lws-cart-table tr { display: table-row; width: auto; }
  .lws-cart-table th, .lws-cart-table td { display: table-cell; width: auto; padding: var(--lws-space-4); border: 0; border-bottom: 1px solid var(--lws-color-border); background: transparent; text-align: start; vertical-align: top; }
  .lws-cart-table tbody td.lws-line__cell { vertical-align: middle; } /* quantity, price, subtotal and remove sit on the line's centre */
  .lws-cart-table thead th { font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); background: var(--lws-color-surface-alt); white-space: nowrap; }
  .lws-cart-table thead th.lws-num, .lws-cart-table td.lws-num { text-align: end; white-space: nowrap; }
  .lws-cart-table td.lws-num .woocommerce-Price-amount { font-weight: 600; font-variant-numeric: tabular-nums; }
  .lws-cart-table td.lws-num .woocommerce-Price-currencySymbol { font-size: .8em; color: var(--lws-color-text-muted); }
  .lws-cart-table .product-name::before, .lws-cart-table .product-quantity::before, .lws-cart-table .product-price::before, .lws-cart-table .product-subtotal::before { content: none; }
  .lws-line__inner { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: var(--lws-space-3); align-items: start; }
  .lws-line__thumb { width: 64px; height: 64px; border-radius: var(--lws-radius-control); overflow: hidden; background: var(--lws-color-surface-alt); }
  .lws-line__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .lws-line__body { display: flex; flex-direction: column; gap: var(--lws-space-1); min-width: 0; }
  .lws-line__title { font-size: var(--lws-text-body); font-weight: 600; line-height: 1.3; }
  .lws-line__title a { color: inherit; text-decoration: none; }
  .lws-line__title a:hover { text-decoration: underline; }
  .lws-cart-table .variation, .lws-cart-table dl.variation { display: grid; grid-template-columns: auto 1fr; gap: 2px var(--lws-space-2); margin: var(--lws-space-1) 0 0; font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-cart-table .variation dt, .lws-cart-table .variation dd, .lws-cart-table .variation p { margin: 0; display: inline; font-weight: 400; }
  .lws-cart-table .variation dt { font-weight: 500; }
  .lws-cart-table .backorder_notification { margin: var(--lws-space-1) 0 0; font-size: var(--lws-text-small); color: var(--lws-color-warning); }
  .lws-quantity--cart { display: flex; flex-direction: column; gap: 2px; }
  /* Sold-individually lines: the fixed quantity as plain text, in the weight of the price cells. */
  .lws-quantity-fixed { display: block; text-align: end; font-weight: 600; font-variant-numeric: tabular-nums; }
  .lws-cart-table .quantity { display: inline-flex; align-items: stretch; border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); overflow: hidden; background: var(--lws-color-surface); }
  .lws-cart-table .quantity input.qty { width: 3.25rem; min-height: 40px; padding: 0 var(--lws-space-1); border: 0; text-align: center; font: inherit; font-weight: 600; font-variant-numeric: tabular-nums; -moz-appearance: textfield; appearance: textfield; background: transparent; color: var(--lws-color-text); }
  .lws-cart-table .quantity input.qty::-webkit-outer-spin-button, .lws-cart-table .quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
  .lws-cart-table .quantity .lws-qty-btn { min-width: 40px; min-height: 40px; padding: 0; border: 0; border-radius: 0; background: var(--lws-color-surface-alt); color: var(--lws-color-text); cursor: pointer; }
  .lws-cart-table .quantity .lws-qty-btn:hover { background: var(--lws-color-border); }
  .lws-line__remove { color: var(--lws-color-text-muted); text-decoration: none; min-width: 40px; min-height: 40px; }
  .lws-line__remove:hover, .lws-line__remove:focus-visible { color: var(--lws-color-danger); background: var(--lws-color-danger-tint); }
  .lws-line__remove-label { display: none; }
  .lws-cart__actions-row td.actions { padding: var(--lws-space-4); border-bottom: 0; background: var(--lws-color-surface-alt); }
  /* The actions cell stays a table cell (it spans the row); the continue link floats to the start and the
     buttons sit at the end, so "Continue browsing" is left and "Update cart" is right at every width. */
  .lws-cart-table td.lws-cart__actions { text-align: end; }
  .lws-cart__actions .lws-cart__continue { float: inline-start; line-height: var(--lws-control-height); }
  .lws-cart__coupon { display: inline-flex; gap: var(--lws-space-2); align-items: center; flex-wrap: wrap; margin-inline-end: var(--lws-space-3); vertical-align: middle; }
  .lws-cart__coupon .input-text { min-height: var(--lws-control-height); padding: 0 var(--lws-space-3); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); font: inherit; width: 12rem; }
  .lws-cart__actions .button[name="update_cart"]:disabled { opacity: .5; cursor: default; }
  .lws-cart__note { margin: 0; }
  /* Summary card */
  .lws-totals { display: flex; flex-direction: column; gap: var(--lws-space-4); }
  .lws-totals__table { width: 100%; border-collapse: collapse; margin: 0; padding: 0; border: 0; box-shadow: none; background: transparent; font-size: var(--lws-text-small); display: table; } /* the parent paints .shop_table as a raised box */
  .lws-totals__table td:last-child { text-align: end; padding-inline-end: 0; }
  .lws-totals__table th:first-child, .lws-totals__table td:first-child { padding-inline-start: 0; }
  .lws-totals__table tbody { display: table-row-group; width: auto; }
  .lws-totals__table tr { display: table-row; width: auto; }
  .lws-totals__table th, .lws-totals__table td { display: table-cell; width: auto; padding: var(--lws-space-3) 0; border: 0; border-bottom: 1px solid var(--lws-color-border); background: transparent; text-align: start; vertical-align: top; }
  .lws-totals__table th { font-weight: 400; color: var(--lws-color-text-muted); }
  .lws-totals__table td { text-align: end; font-variant-numeric: tabular-nums; }
  .lws-totals__table td::before { content: none; }
  /* Owner, 2026-09-25: deductions (fees such as the Elite discount and the wallet line, coupons) read as one group —
     no rule between two consecutive deduction rows; the rule under the last one stays. */
  .lws-totals__table tr:is(.fee, .cart-discount):has(+ tr:is(.fee, .cart-discount)) > :is(th, td) { border-bottom: 0; }
  .lws-totals__table tr.order-total th, .lws-totals__table tr.order-total td { border-bottom: 0; padding-top: var(--lws-space-4); font-size: var(--lws-text-body-lg); font-weight: 700; color: var(--lws-color-text); }
  .lws-totals__table tr.order-total .woocommerce-Price-currencySymbol { font-size: .7em; color: var(--lws-color-text-muted); }
  .lws-totals__note { margin: 0; }
  .lws-totals__proceed { margin: 0; padding: 0; }
  .lws-totals__proceed .checkout-button { min-height: var(--lws-control-height-lg); margin: 0; }
  .lws-totals__facts { padding-top: var(--lws-space-3); border-top: 1px solid var(--lws-color-border); }
  .lws-totals .lws-payments { display: flex; flex-wrap: wrap; gap: var(--lws-space-2); }
  .lws-cart__empty-actions { justify-content: center; }
  /* Phones: each row becomes a card */
  @media (max-width: 767.98px) {
    .lws-cart-table thead { display: none; }
    .lws-cart-table tr.lws-line { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--lws-space-3); padding: var(--lws-space-4); border-bottom: 1px solid var(--lws-color-border); }
    .lws-cart-table tr.lws-line td { display: block; padding: 0; border: 0; }
    .lws-cart-table tr.lws-line td.product-name { grid-column: 1 / -1; }
    .lws-cart-table tr.lws-line td.product-quantity, .lws-cart-table tr.lws-line td.product-price, .lws-cart-table tr.lws-line td.product-subtotal { display: flex; flex-direction: column; gap: 2px; }
    .lws-cart-table--readonly tr.lws-line td.product-quantity::before, .lws-cart-table tr.lws-line td.product-quantity:has(.lws-quantity-fixed)::before, .lws-cart-table tr.lws-line td.product-price::before, .lws-cart-table tr.lws-line td.product-subtotal::before { position: static; left: auto; content: attr(data-title); font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); }
    .lws-cart-table tr.lws-line td.lws-num, .lws-quantity-fixed { text-align: start; }
    .lws-cart-table tr.lws-line td.product-remove { grid-column: 1 / -1; }
    .lws-line__remove { display: inline-flex; gap: var(--lws-space-1); padding: 0 var(--lws-space-2) 0 0; font-size: var(--lws-text-small); }
    .lws-line__remove-label { display: inline; }
    .lws-cart__actions-row { display: block; }
    .lws-cart__actions-row td.actions { display: block; }
  }
}
/* Checkout components: progress, express area, fields (WooCommerce form-row), SelectWoo parity,
   login prompt, order summary table, payment radio cards, terms, place order, notices, wallet. */
@layer lwds.components {
  /* --- Progress strip --- */
  .lws-progress { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--lws-space-2); list-style: none; padding: 0; margin: 0; counter-reset: p; }
  .lws-progress li { counter-increment: p; display: flex; flex-direction: column; gap: var(--lws-space-1); font-size: var(--lws-text-small); color: var(--lws-color-text-muted); min-width: 0; }
  .lws-progress li::before { content: ""; height: 4px; border-radius: var(--lws-radius-pill); background: var(--lws-color-border); }
  .lws-progress li[aria-current="step"] { color: var(--lws-color-text); font-weight: 600; }
  .lws-progress li[aria-current="step"]::before { background: var(--lws-color-action); }
  .lws-progress__name::before { content: counter(p) ". "; }
  .lws-progress li > span:not(.lws-progress__name) { font-weight: 400; }
  @media (max-width: 575.98px) { .lws-progress li > span:not(.lws-progress__name) { display: none; } }

  /* --- Express checkout (Stripe element mounts here; reserved height avoids shift, LW-023) --- */
  .lws-checkout__express:empty { display: none; }
  .lws-checkout__express { display: flex; flex-direction: column; gap: var(--lws-space-3); }
  .lws-checkout__express > div { min-height: 48px; margin: 0; }
  /* Whitespace-only (no express button rendered) still counted as a flex item (after the display: flex rule above, same specificity) and added a 24 px gap above the order table. */
  .lws-checkout__express:not(:has(> *)) { display: none; }
  .lws-checkout__express > p { display: flex; align-items: center; gap: var(--lws-space-3); margin: 0; color: var(--lws-color-text-subtle); font-size: var(--lws-text-small); }
  .lws-checkout__express > p::before, .lws-checkout__express > p::after { content: ""; flex: 1; height: 1px; background: var(--lws-color-border); }

  .lws-checkout .checkout-inline-error-message { display: flex; gap: var(--lws-space-1); align-items: center; font-size: var(--lws-text-small); color: var(--lws-color-danger); }
  .lws-checkout .form-row.woocommerce-invalid .checkout-inline-error-message::before { content: "!"; display: inline-grid; place-items: center; width: 1rem; height: 1rem; border-radius: 50%; background: var(--lws-color-danger); color: var(--lws-color-surface); font-size: .7rem; font-weight: 700; }
  .lws-checkout .form-row.create-account, .lws-checkout .form-row.form-row-first, .lws-checkout .form-row.form-row-last { width: 100%; }

  /* SelectWoo / select2 (country) to Select parity — the plugin CSS is unlayered, so match its specificity */
  .lws-checkout .select2-container .select2-selection--single { display: block; width: 100%; height: 44px; min-height: var(--lws-control-height); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); }
  .lws-checkout .select2-container .select2-selection--single .select2-selection__rendered { line-height: 42px; padding-inline: var(--lws-space-4) var(--lws-space-10); color: var(--lws-color-text); font-size: var(--lws-text-body); }
  .lws-checkout .select2-container .select2-selection--single .select2-selection__arrow { height: 42px; right: var(--lws-space-3); }
  .lws-checkout .select2-container--focus .select2-selection--single, .lws-checkout .select2-container--open .select2-selection--single { border-color: var(--lws-color-focus); box-shadow: var(--lws-shadow-focus); }
  .select2-container .select2-dropdown { border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); box-shadow: var(--lws-shadow-2); font-family: var(--lws-font-family); }
  .select2-container .select2-results__option--highlighted[aria-selected] { background: var(--lws-color-action-subtle); color: var(--lws-color-text); }
  .select2-container .select2-search--dropdown .select2-search__field { border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-sm); padding: var(--lws-space-2); }

  /* Billing grid: first last / email email / country postcode (component-specification §F) */
  .lws-checkout .woocommerce-billing-fields__field-wrapper, .lws-checkout .woocommerce-additional-fields__field-wrapper, .lws-checkout .woocommerce-account-fields { display: grid; gap: var(--lws-space-4); grid-template-columns: minmax(0, 1fr); }
  @media (min-width: 768px) {
    .lws-checkout .woocommerce-billing-fields__field-wrapper { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
    .lws-checkout .woocommerce-billing-fields__field-wrapper > .form-row-wide { grid-column: 1 / -1; }
    /* Country and postcode side by side (owner, Polish Round 1). WooCommerce's locale rules re-add form-row-wide to
       these two after any field filter, so their placement is fixed here instead. */
    .lws-checkout .woocommerce-billing-fields__field-wrapper > [id="billing_country_field"], .lws-checkout .woocommerce-billing-fields__field-wrapper > [id="billing_postcode_field"] { grid-column: auto; }
  }
  .lws-checkout .woocommerce-billing-fields > h3, .lws-checkout .woocommerce-additional-fields > h3, .lws-checkout .woocommerce-shipping-fields > h3 { font-size: var(--lws-text-heading); margin: 0 0 var(--lws-space-3); padding: 0; border: 0; }
  .lws-checkout .woocommerce-shipping-fields:empty { display: none; }
  /* Owner, 2026-09-25: billing → order notes is the same 24 px column gap as guarantee → billing. */
  .lws-checkout .woocommerce-additional-fields { margin-block-start: 0; }
  /* select2's empty .dropdown-wrapper is inline-block, so it opened a 28.8 px line box under the country field and
     left 25 px of blank space below the last billing row. As a block it has no height. */
  .lws-checkout .select2-container .dropdown-wrapper { display: block; }
  /* Owner, 2026-09-25: no "Anything we should know?" heading; the "Order notes (optional)" label names the field.
     Hidden visually only (same technique as .lws-visually-hidden), so the page outline keeps it. */
  .lws-checkout .woocommerce-additional-fields > h3 { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

  /* --- Login prompt + inline login form --- */
  .lws-checkout .woocommerce-form-login-toggle .woocommerce-info { margin: 0; }
  .lws-checkout .woocommerce-form-login-toggle .woocommerce-info::before { content: ""; width: var(--lws-icon-size-md); height: var(--lws-icon-size-md); border-radius: 50%; border: 1.5px solid var(--lws-color-info); flex: none; }
  .lws-checkout .woocommerce-form-login-toggle .showlogin { color: var(--lws-color-link); font-weight: 500; }
  .lws-checkout .woocommerce-form-login { display: grid; gap: var(--lws-space-4); padding: var(--lws-space-4); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); margin: 0; }
  .lws-checkout .woocommerce-form-login > p:first-child { margin: 0; color: var(--lws-color-text-muted); font-size: var(--lws-text-small); }
  .lws-checkout .woocommerce-form-login .form-row .button { display: inline-flex; align-items: center; justify-content: center; min-height: var(--lws-control-height); padding: var(--lws-space-3) var(--lws-space-5); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); color: var(--lws-color-text); font-weight: 600; cursor: pointer; }
  .lws-checkout .woocommerce-form-login__rememberme { display: flex; gap: var(--lws-space-2); align-items: center; font-weight: 400; font-size: var(--lws-text-small); }
  .lws-checkout .woocommerce-form-login .lost_password { font-size: var(--lws-text-small); margin: 0; }
  .lws-checkout .show-password-input { top: 50%; transform: translateY(-50%); }

  /* --- Coupon (renders only when coupons are enabled) --- */
  .lws-checkout .woocommerce-form-coupon-toggle .woocommerce-info { margin: 0; }
  .lws-checkout .woocommerce-form-coupon { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--lws-space-2); align-items: end; padding: 0; border: 0; margin: 0; }
  .lws-checkout .woocommerce-form-coupon .button { min-height: var(--lws-control-height); padding: var(--lws-space-3) var(--lws-space-4); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); font-weight: 600; cursor: pointer; }

  /* --- Order summary table --- */
  .lws-order-summary__table { width: 100%; border-collapse: collapse; font-size: var(--lws-text-small); }
  .lws-order-summary__table thead th { font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); padding: 0 0 var(--lws-space-2); border-bottom: 1px solid var(--lws-color-border); }
  .lws-order-summary__table th, .lws-order-summary__table td { padding: var(--lws-space-3) 0; vertical-align: top; text-align: start; }
  /* Parent main.css stacks every .woocommerce table.shop_table cell (display: block) below 768 px; the summary has two
     columns and stays a table on phones. Layered override, no importance needed. */
  .lws-order-summary__table { display: table; box-shadow: none; background: transparent; }
  .lws-order-summary__table tfoot tr:first-child th, .lws-order-summary__table tfoot tr:first-child td { border-top: 0; }
  .lws-checkout__items .lws-cart-table--readonly td.product-quantity { white-space: nowrap; }
  .lws-checkout__items .lws-cart-table--readonly .lws-line__inner { align-items: center; } /* name sits on the same line as x1 and the subtotal */
  .lws-line__qty { font-weight: 600; } /* the parent paints .shop_table as a raised white box */
  .lws-order-summary__table thead { display: table-header-group; width: auto; }
  .lws-order-summary__table tbody { display: table-row-group; width: auto; }
  .lws-order-summary__table tfoot { display: table-footer-group; width: auto; }
  .lws-order-summary__table tr { display: table-row; width: auto; }
  .lws-order-summary__table th, .lws-order-summary__table td { display: table-cell; width: auto; border: 0; }
  .lws-order-summary__table td::before { content: none; } /* the parent also prints data-title labels into stacked cells */
  .lws-order-summary__table td.product-total, .lws-order-summary__table tfoot td { width: 1%; }
  .lws-order-summary__table tbody td { border-bottom: 1px solid var(--lws-color-border); }
  .lws-order-summary__table td.product-name { width: 70%; font-size: var(--lws-text-body); white-space: normal; overflow-wrap: anywhere; padding-inline-end: var(--lws-space-4); }
  .lws-order-summary__table td.product-name .product-quantity { white-space: nowrap; }
  .lws-order-summary__table th:first-child, .lws-order-summary__table td:first-child { padding-inline-start: 0; }
  .lws-order-summary__name { display: inline; font-weight: 600; } /* inline so the quantity follows the name instead of dropping to its own line */
  .lws-order-summary__table .product-quantity { font-weight: 400; color: var(--lws-color-text-muted); }
  .lws-order-summary__table .variation { display: grid; grid-template-columns: auto 1fr; gap: 2px var(--lws-space-2); margin: var(--lws-space-1) 0 0; font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-order-summary__table .variation dt, .lws-order-summary__table .variation dd { margin: 0; font-weight: 400; }
  .lws-order-summary__table .variation dd p { margin: 0; display: inline; }
  .lws-order-summary__table td.product-total, .lws-order-summary__table tfoot td { text-align: end; white-space: nowrap; font-variant-numeric: tabular-nums; }
  .lws-order-summary__table thead th:last-child, .lws-order-summary__table td:last-child { text-align: end; padding-inline-end: 0; } /* header and values share one right edge */
  .lws-order-summary__table tfoot th { font-weight: 400; color: var(--lws-color-text-muted); }
  .lws-order-summary__table tfoot tr.order-total th, .lws-order-summary__table tfoot tr.order-total td { padding-top: var(--lws-space-4); border-top: 1px solid var(--lws-color-border); font-size: var(--lws-text-body-lg); font-weight: 700; color: var(--lws-color-text); }
  .lws-order-summary__table tfoot tr.order-total .woocommerce-Price-currencySymbol { font-size: .7em; color: var(--lws-color-text-muted); margin-inline-end: .1em; }
  .lws-order-summary__table tfoot tr.fee th { color: var(--lws-color-success); }
  .lws-order-summary__table .woocommerce-remove-coupon { font-size: var(--lws-text-micro); margin-inline-start: var(--lws-space-1); }

  /* Store credit partial payment row (TeraWallet) */
  .lws-order-summary__table tr.woo-wallet-partial-payment th, .lws-order-summary__table tr.partial-payment th { display: flex; align-items: center; gap: var(--lws-space-2); flex-wrap: wrap; }
  .lws-order-summary__table .partial_pay_through_wallet { width: 20px; height: 20px; accent-color: var(--lws-color-link); vertical-align: middle; }

  /* --- Payment: radio cards --- */
  .lws-checkout .woocommerce-checkout-payment { display: flex; flex-direction: column; gap: var(--lws-space-4); background: transparent; border-radius: 0; }
  .lws-checkout .wc_payment_methods { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--lws-space-3); }
  .lws-checkout .wc_payment_method { position: relative; margin: 0; padding: 0; border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); transition: border-color var(--lws-duration-fast), background-color var(--lws-duration-fast); }
  .lws-checkout .wc_payment_method:has(> input:checked) { border-color: var(--lws-color-text); box-shadow: inset 0 0 0 1px var(--lws-color-text); }
  .lws-checkout .wc_payment_method:has(> input:focus-visible) { box-shadow: var(--lws-shadow-focus); }
  .lws-checkout .wc_payment_method > input.input-radio { position: absolute; top: calc(var(--lws-space-4) + 2px); left: var(--lws-space-4); width: 20px; height: 20px; margin: 0; accent-color: var(--lws-color-link); cursor: pointer; }
  .lws-checkout .wc_payment_method > label { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lws-space-2); min-height: 56px; margin: 0; padding: var(--lws-space-4) var(--lws-space-4) var(--lws-space-4) calc(var(--lws-space-4) * 2 + 20px); font-weight: 600; cursor: pointer; }
  .lws-checkout .wc_payment_method > label img { height: 24px; width: auto; max-height: 24px; margin: 0; }
  .lws-checkout .wc_payment_method > label .stripe-icon, .lws-checkout .wc_payment_method > label .stripe-pf { height: 24px; width: auto; }
  .lws-checkout .payment_box { margin: 0; padding: 0 var(--lws-space-4) var(--lws-space-4) calc(var(--lws-space-4) * 2 + 20px); background: transparent; color: var(--lws-color-text-muted); font-size: var(--lws-text-small); }
  .lws-checkout .payment_box::before { display: none; }
  .lws-checkout .payment_box p { margin: 0 0 var(--lws-space-2); }
  .lws-checkout .payment_box .wc-stripe-upe-element, .lws-checkout .payment_box .wc-stripe-elements-field, .lws-checkout .payment_box .StripeElement { padding: var(--lws-space-3) var(--lws-space-4); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); }
  .lws-checkout .payment_box .wc-stripe-upe-element { padding: 0; border: 0; background: transparent; }
  .lws-checkout .woocommerce-checkout-payment .place-order { display: grid; gap: var(--lws-space-3); margin: 0; padding: 0; }
  .lws-checkout .woocommerce-terms-and-conditions-wrapper { display: grid; gap: var(--lws-space-3); }
  .lws-checkout .woocommerce-terms-and-conditions-wrapper .form-row { flex-direction: row; align-items: flex-start; gap: var(--lws-space-2); }
  .lws-checkout .woocommerce-terms-and-conditions-wrapper .checkbox { display: flex; gap: var(--lws-space-2); align-items: flex-start; font-weight: 400; font-size: var(--lws-text-small); }
  .lws-checkout .woocommerce-terms-and-conditions-wrapper input[type="checkbox"] { width: 20px; height: 20px; margin: .1em 0 0; flex: none; accent-color: var(--lws-color-link); }
  .lws-checkout .woocommerce-privacy-policy-text { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-checkout .place-order .button[name="woocommerce_checkout_place_order"] { width: 100%; min-height: var(--lws-control-height-lg); margin: 0; }
  .lws-checkout form.processing .place-order .button[name="woocommerce_checkout_place_order"] { opacity: .65; cursor: progress; }
  .lws-checkout .woocommerce-checkout-payment .place-order noscript { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-checkout__charge { margin: 0; }

  /* --- Notices: error summary at the top of the form (role=alert) --- */
  .lws-checkout .woocommerce-NoticeGroup { margin: 0 0 var(--lws-space-4); }
  .lws-checkout .woocommerce-NoticeGroup-checkout { grid-column: 1 / -1; }

  /* --- Loading: WooCommerce blockUI overlay --- */
  .lws-checkout .blockUI.blockOverlay { border-radius: var(--lws-radius-card); }
  .lws-checkout .blockUI.blockOverlay::before { content: ""; position: absolute; top: 50%; left: 50%; width: 28px; height: 28px; margin: -14px 0 0 -14px; border: 3px solid var(--lws-color-border); border-top-color: var(--lws-color-link); border-radius: 50%; animation: lws-spin .8s linear infinite; }
  @media (prefers-reduced-motion: reduce) { .lws-checkout .blockUI.blockOverlay::before { animation: none; } }
}

@layer lwds.components {
  /* --- What happens next (checkout) --- */
  /* Owner, 2026-09-25: "What happens after you pay" at the h3 size; stays an h2 for the heading outline. */
  .lws-checkout__pay > h2 { font-size: var(--lws-text-heading); line-height: 1.3; }
  .lws-next { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--lws-space-3); }
  @media (min-width: 576px) { .lws-next { grid-template-columns: repeat(3, 1fr); } }
  .lws-next li { display: flex; flex-direction: column; gap: var(--lws-space-1); font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-next li strong { display: flex; align-items: center; gap: var(--lws-space-2); font-size: var(--lws-text-body); color: var(--lws-color-text); }
  .lws-next li .lws-icon { color: var(--lws-color-link); }
  /* --- Payment methods strip --- */
  .lws-payments { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lws-space-2); }
  .lws-payments__method { display: inline-flex; align-items: center; min-height: 28px; padding: 0 .6em; border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-sm); background: var(--lws-color-surface); font-size: var(--lws-text-micro); font-weight: 700; letter-spacing: .04em; color: var(--lws-color-text-muted); text-transform: uppercase; }
  /* --- Summary card resets against parent table rules gated on body.woocommerce --- */
  .lws-checkout .lws-order-summary { display: flex; flex-direction: column; gap: 0; min-height: 0; padding: 0; margin: 0; }
  .lws-checkout .lws-order-summary__table { margin: 0; border: 0; }
  .lws-checkout .lws-order-summary__table th, .lws-checkout .lws-order-summary__table td { border-left: 0; border-right: 0; background: transparent; }
  .lws-checkout .lws-order-summary__table thead th, .lws-checkout .lws-order-summary__table tbody tr:first-child td { border-top: 0; }
}
/* Form chooser — [lws_form_chooser] (inc/shortcodes.php): radio cards that pick which form a page
   shows (Contact page: "Item / Service Inquiry" or "Priority Pass Compensation"). Same card
   language as the checkout payment methods. */
@layer lwds.components {
  .lws-form-chooser { display: flex; flex-direction: column; gap: var(--lws-space-6); }
  .lws-form-chooser__options { min-width: 0; margin: 0; padding: 0; border: 0; }
  .lws-form-chooser__legend { margin: 0 0 var(--lws-space-3); padding: 0; font-size: var(--lws-text-label); font-weight: 600; }
  .lws-form-chooser__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: var(--lws-space-3); }
  .lws-form-chooser__option { position: relative; display: flex; align-items: center; gap: var(--lws-space-3); min-height: 56px; margin: 0; padding: var(--lws-space-4); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); font-weight: 600; line-height: 1.3; cursor: pointer; transition: border-color var(--lws-duration-fast), box-shadow var(--lws-duration-fast); }
  .lws-form-chooser__option:hover { border-color: var(--lws-color-border-strong); }
  .lws-form-chooser__option:has(> input:checked) { border-color: var(--lws-color-text); box-shadow: inset 0 0 0 1px var(--lws-color-text); }
  .lws-form-chooser__option:has(> input:focus-visible) { box-shadow: var(--lws-shadow-focus); }
  .lws-form-chooser__option > input { flex: none; width: 20px; height: 20px; margin: 0; accent-color: var(--lws-color-link); cursor: pointer; }
  .lws-form-chooser__panel[hidden] { display: none; }
}
/* Global footer. */
@layer lwds.components {
  .lws-footer { margin-block-start: var(--lws-section); background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); font-family: var(--lws-font-family); font-size: var(--lws-text-body); line-height: 1.6; padding-block: var(--lws-space-12) var(--lws-space-8); }
  .lws-footer *, .lws-footer *::before, .lws-footer *::after { box-sizing: border-box; }
  .lws-footer a { color: inherit; text-decoration: underline; text-decoration-thickness: from-font; text-underline-offset: .15em; }
  .lws-footer a:hover { color: var(--lws-color-action); }
  .lws-footer__grid { display: grid; gap: var(--lws-space-8); grid-template-columns: minmax(0, 1fr); }
  @media (min-width: 576px) { .lws-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  @media (min-width: 992px) { .lws-footer__grid { grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); gap: var(--lws-space-10); } }
  .lws-footer h2 { margin: 0 0 var(--lws-space-3); font-size: var(--lws-text-label); font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--lws-on-dark-70); }
  .lws-footer ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--lws-space-2); font-size: var(--lws-text-small); }
  .lws-footer li { margin: 0; }
  .lws-footer ul a { text-decoration: none; }
  .lws-footer ul a:hover { text-decoration: underline; }
  .lws-identity { display: flex; flex-direction: column; gap: var(--lws-space-2); color: var(--lws-on-dark-85); font-size: var(--lws-text-small); max-width: 34rem; }
  .lws-identity strong { color: var(--lws-color-text-on-dark); font-size: var(--lws-text-body-lg); }
  .lws-footer .lws-payments { display: flex; flex-wrap: wrap; gap: var(--lws-space-2); }
  .lws-footer .lws-payments__method { display: inline-flex; align-items: center; min-height: 28px; padding: 0 .6em; border: 1px solid var(--lws-on-dark-20); border-radius: var(--lws-radius-sm); background: var(--lws-on-dark-8); color: var(--lws-on-dark-85); font-size: var(--lws-text-micro); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
  .lws-footer__note { margin: var(--lws-space-4) 0 0; color: var(--lws-on-dark-75); }
  .lws-footer__bottom { margin-block-start: var(--lws-space-8); padding-block-start: var(--lws-space-4); border-top: 1px solid var(--lws-on-dark-15); display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--lws-space-2) var(--lws-space-4); font-size: var(--lws-text-small); color: var(--lws-on-dark-75); }
}
/* Forms — one field system for every LWDS page (Sprint 6, D-041): native controls, WooCommerce
   form rows (.form-row from woocommerce_form_field and the account/login/checkout templates),
   the variations table and WCPA fields on the product page, review form, password meter. */
@layer lwds.components {
  .lws-main .lws-select, .lws-main .lws-input, .lws-main .lws-textarea,
  .lws-main .form-row .input-text, .lws-main .form-row select, .lws-main .form-row textarea,
  .lws-main .woocommerce-form-login .input-text, .lws-main .woocommerce-form-coupon .input-text,
  .lws-decision table.variations select, .lws-decision .wcpa_form_outer select.wcpa_field, .lws-decision .wcpa_form_outer input.wcpa_field[type="text"], .lws-decision .wcpa_form_outer input.wcpa_field[type="email"], .lws-decision .wcpa_form_outer input.wcpa_field[type="number"], .lws-decision .wcpa_form_outer input.wcpa_field[type="tel"], .lws-decision .wcpa_form_outer textarea.wcpa_field,
  .lws-reviews .comment-form input[type="text"], .lws-reviews .comment-form input[type="email"], .lws-reviews .comment-form textarea, .lws-reviews .comment-form select {
    width: 100%; min-height: var(--lws-control-height); padding: var(--lws-space-3) var(--lws-space-4); margin: 0;
    border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control);
    background: var(--lws-color-surface); color: var(--lws-color-text); font-size: var(--lws-text-body); line-height: 1.3; box-shadow: none;
  }
  .lws-main .lws-select, .lws-main .form-row select, .lws-decision select, .lws-reviews select { appearance: none; -webkit-appearance: none; padding-inline-end: var(--lws-space-10); background-image: var(--lws-icon-chevron); background-repeat: no-repeat; background-position: right var(--lws-space-4) center; background-size: 1.25rem; }
  .lws-main .form-row textarea, .lws-main .lws-textarea, .lws-decision textarea.wcpa_field, .lws-reviews textarea { min-height: 96px; resize: vertical; }
  .lws-main .form-row .input-text:hover, .lws-main .form-row select:hover, .lws-main .form-row textarea:hover, .lws-decision select:hover, .lws-decision input:hover, .lws-reviews textarea:hover { border-color: var(--lws-color-text); }
  .lws-main .form-row .input-text:focus-visible, .lws-main .form-row select:focus-visible, .lws-main .form-row textarea:focus-visible, .lws-decision select:focus-visible, .lws-decision input:focus-visible, .lws-reviews textarea:focus-visible { border-color: var(--lws-color-focus); }
  .lws-main .form-row .input-text[readonly] { background: var(--lws-color-surface-alt); color: var(--lws-color-text-muted); }
  /* Field: row, label, required in words, hint */
  .lws-main .form-row, .lws-field, .lws-decision table.variations td.value, .lws-reviews .comment-form > p { display: flex; flex-direction: column; gap: var(--lws-space-1); float: none; width: 100%; margin: 0; padding: 0; }
  .lws-main .form-row label, .lws-field__label, .lws-decision table.variations th.label label, .lws-decision .wcpa_form_outer label.wcpa-form-label, .lws-decision .wcpa_form_outer .wcpa_field_label, .lws-reviews .comment-form label { display: block; font-size: var(--lws-text-label); font-weight: 600; line-height: 1.4; color: var(--lws-color-text); }
  /* WooCommerce marks required fields with a colour-only asterisk; LWDS says it in words (a11y §3). */
  .lws-main .form-row label .required { font-size: 0; color: var(--lws-color-text-muted); font-weight: 400; text-decoration: none; border: 0; }
  .lws-main .form-row label .required::after { content: "(required)"; font-size: var(--lws-text-small); margin-inline-start: .25em; }
  .lws-main .form-row .optional { color: var(--lws-color-text-muted); font-weight: 400; }
  .lws-main .form-row .woocommerce-input-wrapper { display: flex; flex-direction: column; gap: var(--lws-space-1); }
  .lws-main .form-row .description, .lws-field__hint { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); font-style: normal; }
  .lws-main .form-row.woocommerce-invalid .input-text, .lws-main .form-row.woocommerce-invalid select, .lws-main .form-row.woocommerce-invalid .select2-selection { border-color: var(--lws-color-danger); }
  .lws-main .form-row.woocommerce-validated .input-text, .lws-main .form-row.woocommerce-validated select, .lws-main .form-row.woocommerce-validated .select2-selection { border-color: var(--lws-color-success); }
  /* Password fields: WooCommerce wraps them and adds a show/hide button (its icon lives in the disabled Woo stylesheet). */
  .lws-main .password-input { position: relative; display: flex; width: 100%; }
  .lws-main .password-input .input-text { padding-inline-end: var(--lws-space-12); }
  .lws-main .show-password-input { position: absolute; inset-inline-end: var(--lws-space-2); top: 50%; width: 32px; height: 32px; margin: -16px 0 0; padding: 0; border: 0; border-radius: var(--lws-radius-sm); background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6S2 12 2 12Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") center / 20px no-repeat; cursor: pointer; }
  .lws-main .show-password-input.display-password { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3l18 18M10.6 10.6a2 2 0 0 0 2.8 2.8M6.5 6.6C4 8.2 2 12 2 12s3.5 6 10 6c1.6 0 3-.3 4.2-.9M9.9 5.1A10 10 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-2.6 3.4'/%3E%3C/svg%3E"); }
  .lws-main .woocommerce-password-strength { font-size: var(--lws-text-small); padding: var(--lws-space-2) var(--lws-space-3); border-radius: var(--lws-radius-sm); background: var(--lws-color-surface-alt); }
  .lws-main .woocommerce-password-strength.short, .lws-main .woocommerce-password-strength.bad { background: var(--lws-color-danger-tint); color: var(--lws-color-danger); }
  .lws-main .woocommerce-password-strength.good { background: var(--lws-color-warning-tint); color: var(--lws-color-warning); }
  .lws-main .woocommerce-password-strength.strong { background: var(--lws-color-success-tint); color: var(--lws-color-success); }
  .lws-main .woocommerce-password-hint { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  /* Groups and actions */
  .lws-form { display: flex; flex-direction: column; gap: var(--lws-space-4); margin: 0; }
  .lws-form__row--2 { display: grid; gap: var(--lws-space-4); grid-template-columns: minmax(0, 1fr); }
  @media (min-width: 576px) { .lws-form__row--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  .lws-form__fields { display: flex; flex-direction: column; gap: var(--lws-space-4); }
  .lws-fieldset { border: 0; margin: 0; padding: 0; min-width: 0; display: flex; flex-direction: column; gap: var(--lws-space-4); }
  .lws-fieldset legend { padding: 0; margin-bottom: var(--lws-space-2); }
  .lws-form__actions, .lws-main .form-row.lws-form__actions { display: flex; flex-direction: row; flex-wrap: wrap; gap: var(--lws-space-3); margin: 0; }
  .lws-main input[type="checkbox"] { width: 20px; height: 20px; margin: 0; flex: none; accent-color: var(--lws-color-link); }
  .lws-main .woocommerce-form__input-checkbox { display: inline-block; float: none; position: static; }
  .lws-main .woocommerce-form__label-for-checkbox, .lws-main .woocommerce-form-login__rememberme { display: flex; gap: var(--lws-space-2); align-items: center; font-weight: 400; font-size: var(--lws-text-small); }
  .lws-login__submit { display: flex; flex-direction: column; gap: var(--lws-space-3); }
  .lws-main .woocommerce-form-login, .lws-main .woocommerce-form-register, .lws-main .woocommerce-ResetPassword, .lws-main .woocommerce-EditAccountForm { border: 0; padding: 0; margin: 0; background: transparent; box-shadow: none; }
  /* Variations table → stacked fields (product page) */
  .lws-decision table.variations { display: block; width: 100%; border: 0; }
  .lws-decision table.variations tbody { display: flex; flex-direction: column; gap: var(--lws-space-4); }
  .lws-decision table.variations tr { display: flex; flex-direction: column; gap: var(--lws-space-1); }
  .lws-decision table.variations th, .lws-decision table.variations td { display: block; padding: 0; border: 0; text-align: start; }
  .lws-decision table.variations th.label { padding-block-end: 0; }
  .lws-decision .reset_variations { align-self: flex-start; font-size: var(--lws-text-small); margin-block-start: var(--lws-space-1); }
  .lws-decision .reset_variations_alert { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  /* WCPA container: normal flow inside the decision panel */
  .lws-decision .wcpa_form_outer { margin: 0 0 var(--lws-space-4); width: 100%; }
  /* The parent makes form.cart and .woocommerce-variation-add-to-cart row-flex containers with wrapping; single-column grids cannot wrap sideways. */
  .lws-decision form.cart, .lws-decision .single_variation_wrap, .lws-decision .woocommerce-variation-add-to-cart { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--lws-space-4); align-items: stretch; justify-items: stretch; text-align: start; width: 100%; height: auto; max-height: none; }
  .lws-decision .single_variation_wrap { margin-block-start: var(--lws-space-4); }
  .lws-decision form.cart > template, .lws-decision form.cart > .reset_variations_alert { display: none; }
  .lws-decision .woocommerce-variation-description { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-decision .woocommerce-variation-availability { font-size: var(--lws-text-small); }
  .lws-decision .stock.in-stock { color: var(--lws-color-success); }
  .lws-decision .stock.out-of-stock { color: var(--lws-color-danger); }
}
/* Ninja Forms inside the LWDS shell (Polish Round 1): spacing, section hierarchy, labels, fields, button.
   The plugin\x27s markup and behaviour are untouched; its own stylesheet paints fields with unlayered rules,
   so the paint properties it sets are matched in 05-shims. */
@layer lwds.components {
  .lws-main .nf-form-cont { display: flex; flex-direction: column; gap: var(--lws-space-2); }
  .lws-main .nf-form-title h3, .lws-main .nf-form-title { margin: 0; font-size: var(--lws-text-title); }
  .lws-main .nf-form-fields-required { margin: 0 0 var(--lws-space-2); font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-main .nf-field-container { margin: 0 0 var(--lws-space-4); }
  .lws-main .nf-field-container.html-container { margin: var(--lws-space-4) 0 var(--lws-space-3); padding-block-start: var(--lws-space-5); border-top: 1px solid var(--lws-color-border); }
  .lws-main .nf-form-content .nf-row:first-child .nf-cell:first-child .nf-field-container.html-container:first-child,
  .lws-main .nf-form-content .nf-row:first-child .nf-cell:first-child nf-field:first-child > .nf-field-container.html-container { margin-top: 0; padding-top: 0; border-top: 0; }
  .lws-main .nf-field-container.html-container h3, .lws-main .nf-field-container.html-container h4 { margin: 0 0 var(--lws-space-2); font-size: var(--lws-text-heading); line-height: 1.3; }
  .lws-main .nf-field-container.html-container p { margin: 0 0 var(--lws-space-3); max-width: var(--lws-measure); color: var(--lws-color-text-muted); }
  .lws-main .nf-field-container.html-container p strong { color: var(--lws-color-text); }
  .lws-main .nf-field-label { margin: 0 0 var(--lws-space-1); }
  .lws-main .nf-field-label label { display: block; font-size: var(--lws-text-label); font-weight: 600; line-height: 1.4; color: var(--lws-color-text); }
  .lws-main .ninja-forms-req-symbol { color: var(--lws-color-danger); }
  .lws-main .nf-field-description { margin: var(--lws-space-1) 0 0; font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-main .nf-error-msg { margin: var(--lws-space-1) 0 0; font-size: var(--lws-text-small); color: var(--lws-color-danger); }
  .lws-main .nf-response-msg { display: flex; align-items: center; gap: var(--lws-space-3); padding: var(--lws-space-4) var(--lws-space-5); border-inline-start: 4px solid var(--lws-color-success); border-radius: var(--lws-radius-card); background: var(--lws-color-success-tint); }
  .lws-main .nf-form-errors { color: var(--lws-color-danger); font-size: var(--lws-text-small); }
  .lws-main .submit-container { margin-top: var(--lws-space-2); }
  /* The Layout add-on lays cells out as `.nf-row > nf-cells > .nf-cell` (floated, inline width); it keeps that job.
     Only the inner gutter is normalised so fields sit on the LWDS spacing scale. */
  .lws-main .nf-row .nf-cell { padding-inline: var(--lws-space-2); }
  .lws-main .nf-row .nf-cell:first-child { padding-inline-start: 0; }
  .lws-main .nf-row .nf-cell:last-child { padding-inline-end: 0; }
}
/* Global header: bar, logo, primary nav with submenus, search, actions, mobile drawer, skip link. */
@layer lwds.components {
  .lws-skip { position: absolute; inset-inline-start: var(--lws-space-4); top: -100px; z-index: calc(var(--lws-z-sticky) + 1); padding: var(--lws-space-2) var(--lws-space-4); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); color: var(--lws-color-text); font-weight: 600; text-decoration: none; }
  .lws-skip:focus-visible { top: var(--lws-space-2); box-shadow: var(--lws-shadow-focus); }
  .lws-header { position: sticky; top: 0; z-index: var(--lws-z-sticky); background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); font-family: var(--lws-font-family); box-shadow: var(--lws-shadow-2); }
  .lws-header *, .lws-header *::before, .lws-header *::after { box-sizing: border-box; }
  /* --lws-admin-bar: the WordPress toolbar above the sticky header, so sticky panels below the header clear both. */
  .admin-bar { --lws-admin-bar: 32px; }
  @media (max-width: 782px) { .admin-bar { --lws-admin-bar: 46px; } }
  .admin-bar .lws-header { top: 32px; }
  @media (max-width: 782px) { .admin-bar .lws-header { top: 46px; } }
  .lws-header__bar { display: flex; align-items: center; gap: var(--lws-space-2); min-height: var(--lws-header-height); }
  .lws-header__logo { display: inline-flex; align-items: center; gap: var(--lws-space-2); color: inherit; text-decoration: none; font-weight: 700; font-size: 1.25rem; letter-spacing: -.01em; margin-inline-end: auto; min-width: 0; }
  .lws-header__logo:hover { color: inherit; text-decoration: none; }
  .lws-header__logo-img { display: block; max-height: 40px; width: auto; height: auto; }
  .lws-header__name { display: block; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
  /* Primary nav (≥ 992 px) */
  .lws-nav { display: none; }
  .lws-nav__list { display: flex; gap: var(--lws-space-1); list-style: none; margin: 0; padding: 0; }
  .lws-nav__item { position: relative; margin: 0; }
  .lws-nav__link { display: inline-flex; align-items: center; gap: .3em; min-height: var(--lws-control-height); padding: 0 var(--lws-space-3); border: 0; border-radius: var(--lws-radius-control); background: transparent; color: inherit; text-decoration: none; font: inherit; font-weight: 500; font-size: var(--lws-text-small); opacity: .9; cursor: pointer; white-space: nowrap; }
  .lws-nav__link:hover, .lws-nav__link:focus-visible, .lws-nav__link[aria-current], .lws-nav__link[aria-expanded="true"] { background: var(--lws-on-dark-10); opacity: 1; color: inherit; }
  .lws-nav__toggle .lws-icon { transition: transform var(--lws-duration-fast) var(--lws-ease-standard); }
  .lws-nav__toggle[aria-expanded="true"] .lws-icon { transform: rotate(180deg); }
  .lws-nav__sub { position: absolute; top: calc(100% + 4px); inset-inline-start: 0; min-width: 14rem; margin: 0; padding: var(--lws-space-2); list-style: none; background: var(--lws-color-surface); color: var(--lws-color-text); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); box-shadow: var(--lws-shadow-3); display: none; z-index: var(--lws-z-dropdown); }
  .lws-nav__item.is-open .lws-nav__sub, .lws-nav__item:focus-within .lws-nav__sub { display: block; }
  /* Invisible bridge over the 4 px gap (and the header padding below the link) so the pointer can travel from the
     item to the panel without the hover state dropping and the panel closing (owner, Polish Round 1). */
  .lws-nav__sub::before { content: ""; position: absolute; inset-inline: 0; bottom: 100%; height: 16px; }
  @media (hover: hover) { .lws-nav__item:hover .lws-nav__sub { display: block; } }
  .lws-nav__sub li { margin: 0; }
  .lws-nav__sub a { display: block; padding: var(--lws-space-2) var(--lws-space-3); border-radius: var(--lws-radius-control); color: inherit; text-decoration: none; font-size: var(--lws-text-small); font-weight: 500; }
  .lws-nav__sub a:hover, .lws-nav__sub a:focus-visible, .lws-nav__sub a[aria-current] { background: var(--lws-color-surface-alt); color: var(--lws-color-text); }
  /* Search */
  .lws-header__search { display: none; align-items: center; gap: var(--lws-space-1); margin: 0; flex: 0 1 18rem; min-width: 0; }
  .lws-header__search-input { flex: 1 1 auto; min-width: 0; min-height: 40px; padding: 0 var(--lws-space-3); border: 1px solid var(--lws-on-dark-25); border-radius: var(--lws-radius-control); background: var(--lws-on-dark-10); color: inherit; font: inherit; font-size: var(--lws-text-small); }
  .lws-header__search-input::placeholder { color: var(--lws-on-dark-60); }
  .lws-header__search-input:focus-visible { border-color: var(--lws-color-action); background: var(--lws-on-dark-14); outline: none; box-shadow: none; }
  .lws-header.is-search-open .lws-header__bar { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: var(--lws-space-2); }
  .lws-header.is-search-open .lws-header__search { display: flex; grid-column: 1 / -1; padding-block: 0 var(--lws-space-3); }
  .lws-header.is-search-open .lws-nav { display: none; }
  /* Actions */
  .lws-header__actions { display: flex; align-items: center; gap: var(--lws-space-1); flex: none; }
  .lws-header__action-label { display: none; }
  .lws-header__cart { position: relative; }
  .lws-header__cart-count { position: absolute; top: 2px; inset-inline-end: 0; min-width: 18px; height: 18px; padding-inline: 5px; border-radius: var(--lws-radius-pill); background: var(--lws-color-action); color: var(--lws-color-text-on-action); font-size: 12px; font-weight: 700; line-height: 18px; text-align: center; }
  .lws-header__cart-count.is-empty { display: none; }
  /* Drawer (< 992 px) */
  .lws-drawer { position: fixed; inset: var(--lws-header-height) 0 0 0; z-index: var(--lws-z-drawer); background: var(--lws-color-surface); color: var(--lws-color-text); overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .lws-drawer[hidden] { display: none; }
  .admin-bar .lws-drawer { inset-block-start: calc(var(--lws-header-height) + 32px); }
  @media (max-width: 782px) { .admin-bar .lws-drawer { inset-block-start: calc(var(--lws-header-height) + 46px); } }
  .lws-drawer__panel { padding: var(--lws-space-4) var(--lws-gutter) var(--lws-space-12); }
  .lws-drawer__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
  .lws-drawer__list li { margin: 0; }
  .lws-drawer__list a { display: flex; align-items: center; justify-content: space-between; gap: var(--lws-space-2); min-height: var(--lws-control-height-lg); padding: 0 var(--lws-space-2); border-bottom: 1px solid var(--lws-color-border); color: var(--lws-color-text); text-decoration: none; font-weight: 500; }
  .lws-drawer__list a .lws-icon { color: var(--lws-color-text-subtle); }
  .lws-drawer__group-title { padding: var(--lws-space-4) var(--lws-space-2) var(--lws-space-1); font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); }
  .lws-drawer__group { margin-block-start: var(--lws-space-6); }
  body.lws-drawer-open { overflow: hidden; }
  @media (max-width: 575.98px) {
    .lws-header__name { white-space: normal; font-size: 1rem; line-height: 1.1; overflow: visible; }
      .lws-header__actions .lws-icon-button { min-width: 40px; padding: 0; }
    .lws-header__bar { gap: var(--lws-space-1); }
  }
  @media (min-width: 992px) {
    .lws-nav { display: block; margin-inline-end: auto; }
    .lws-header__logo { margin-inline-end: var(--lws-space-4); flex: none; }
    .lws-header__search { display: flex; }
    .lws-header__search-toggle, .lws-drawer__toggle, .lws-drawer { display: none; }
    .lws-header__action-label { display: inline; }
  }
  /* Typography Round (2026-09-23): with 16 px nav links and a 20 px logo the bar is tight between 992 and 1200 px. The
     logo no longer shrinks (it used to truncate to "Loyalty…"), the nav padding tightens, and the inline search field
     gives way to the phone-style search toggle (the field would otherwise collapse to a 40 px stub). Opening the
     search still shows the full-width row: `.lws-header.is-search-open .lws-header__search` outranks this rule. */
  @media (min-width: 992px) and (max-width: 1199.98px) {
    .lws-nav__link { padding-inline: var(--lws-space-2); }
    .lws-header__search { display: none; }
    .lws-header__search-toggle { display: inline-flex; }
  }
}
/* Price, Tier badge, Chip, Fact, Rating, Sold counter */
@layer lwds.components {
  .lws-price { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: .15em .4em; font-weight: 700; font-size: var(--lws-text-price); line-height: 1.1; font-variant-numeric: tabular-nums; color: var(--lws-color-text); }
  .lws-price .woocommerce-Price-currencySymbol { font-size: .65em; font-weight: 600; color: var(--lws-color-text-muted); margin-inline-end: .05em; }
  .lws-price--lg { font-size: var(--lws-text-price-lg); }
  .lws-price--md { font-size: var(--lws-text-body-lg); }
  /* Sale items show the sale price only (owner, Polish Round 1); the regular price stays in the markup for WooCommerce/structured data. */
  .lws-price del { display: none; }
  .lws-price ins { text-decoration: none; }
  /* Decision panel: the currency is spelled out as a prefix on the symbol (CA$300.00) instead of a note beside the price.
     Presentation only — WooCommerce's currency and symbol settings are untouched. */
  .lws-price--ca .woocommerce-Price-currencySymbol::before { content: "CA"; }
  .lws-price--ca .woocommerce-Price-currencySymbol { margin-inline-end: 0; }
  /* Owner, 2026-09-25: every amount on the cart and checkout pages (lines, totals, fees, discounts, order received)
     carries the same CA prefix as the product card and product page. */
  .lws-cart .woocommerce-Price-currencySymbol::before, .lws-checkout .woocommerce-Price-currencySymbol::before { content: "CA"; }
  .lws-price--from { display: inline-grid; gap: 0; align-items: start; }
  .lws-price__from { font-size: var(--lws-text-micro); font-weight: 500; line-height: 1.2; letter-spacing: .02em; text-transform: uppercase; color: var(--lws-color-text-muted); }
  .lws-rating--empty .lws-rating__stars { color: var(--lws-color-text-subtle); }
  .lws-chip { display: inline-flex; align-items: center; gap: .3em; padding: .1em .6em; border-radius: var(--lws-radius-pill); border: 1px solid var(--lws-color-border); background: var(--lws-color-surface-alt); color: var(--lws-color-text-muted); font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; line-height: 1.6; white-space: nowrap; text-decoration: none; }
  .lws-chip--sale { background: var(--lws-color-danger-tint); color: var(--lws-color-danger); border-color: transparent; }
  .lws-chip--link:hover, .lws-chip--link:focus-visible { border-color: var(--lws-color-border-strong); color: var(--lws-color-text); }
  .lws-fact { display: flex; align-items: flex-start; gap: var(--lws-space-2); font-size: var(--lws-text-small); line-height: 1.5; }
  .lws-fact > .lws-icon { color: var(--lws-color-text-muted); margin-top: .15em; }
  .lws-fact strong { font-weight: 600; }
  .lws-rating { display: inline-flex; align-items: center; gap: var(--lws-space-2); font-size: var(--lws-text-small); color: var(--lws-color-text); text-decoration: none; }
  .lws-rating:hover span:last-child { text-decoration: underline; }
  .lws-rating__stars { display: inline-flex; gap: 1px; color: var(--lws-color-border-strong); }
  .lws-rating__stars .lws-icon { width: 1rem; height: 1rem; }
  .lws-rating__stars .lws-icon.is-filled { fill: var(--main-800); stroke: var(--main-800); }
  .lws-sold, .lws-sold .lwm-completed-sales { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-sold .lwm-completed-sales strong { font-weight: 600; color: var(--lws-color-text); }
  .lws-sold::before { content: "·"; margin-inline-end: var(--lws-space-2); color: var(--lws-color-text-subtle); }
  .lws-fact__inline { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--lws-space-2); }
  .lws-fact__sep { color: var(--lws-color-text-subtle); }
  .lws-fact .lws-sold::before { content: none; }
  .lws-fact .lws-sold, .lws-fact .lws-sold .lwm-completed-sales { display: inline; margin: 0; }
}
/* Breadcrumb, Page header, Section, Accordion */
@layer lwds.components {
  .lws-breadcrumb ol { display: flex; flex-wrap: wrap; gap: var(--lws-space-1); list-style: none; margin: 0; padding: 0; font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-breadcrumb li + li::before { content: "›"; margin-inline-end: var(--lws-space-1); color: var(--lws-color-text-subtle); }
  .lws-breadcrumb a { color: inherit; text-decoration: none; }
  .lws-breadcrumb a:hover { text-decoration: underline; color: var(--lws-color-text); }
  .lws-breadcrumb li { margin: 0; }
  .lws-breadcrumb li:last-child { color: var(--lws-color-text); }
  .lws-page-header { display: flex; flex-direction: column; gap: var(--lws-space-2); padding-block: 0; }
  .lws-page-header__eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lws-space-2); color: var(--lws-color-text-muted); }
  .lws-page-header__lead { font-size: var(--lws-text-body-lg); color: var(--lws-color-text-muted); max-width: var(--lws-measure); }
  .lws-page-header__lead > * + * { margin-block-start: var(--lws-space-2); }
  .lws-page-header__meta { gap: var(--lws-space-3); }
  .lws-section { display: flex; flex-direction: column; gap: var(--lws-space-4); scroll-margin-top: calc(var(--lws-header-height) + var(--lws-admin-bar, 0px) + var(--lws-space-4)); padding-block-start: var(--lws-space-8); border-top: 1px solid var(--lws-color-border); }
  .lws-product__sections > .lws-section:first-of-type { border-top: 0; padding-block-start: 0; }
  .lws-section__header { display: flex; flex-direction: column; gap: var(--lws-space-1); }
  .lws-section__header.lws-cluster { flex-direction: row; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--lws-space-2) var(--lws-space-4); }
  .lws-section__header h2 { max-width: 30ch; }
  .lws-section__lead { color: var(--lws-color-text-muted); max-width: var(--lws-measure); }
  .lws-accordion { border-top: 1px solid var(--lws-color-border); }
  .lws-accordion > details { border-bottom: 1px solid var(--lws-color-border); }
  .lws-accordion summary { display: flex; align-items: center; justify-content: space-between; gap: var(--lws-space-3); min-height: var(--lws-control-height-lg); padding-block: var(--lws-space-2); font-weight: 600; cursor: pointer; list-style: none; }
  .lws-accordion summary::-webkit-details-marker { display: none; }
  .lws-accordion summary::after { content: "+"; font-size: 1.25rem; color: var(--lws-color-text-muted); flex: none; }
  .lws-accordion details[open] summary::after { content: "–"; }
  .lws-accordion__body { padding-block: 0 var(--lws-space-4); color: var(--lws-color-text-muted); }
}
/* WooCommerce notices as LWDS alerts — one definition for every LWDS page (Sprint 6, D-041).
   notices.js gives error lists a title (data-lws-title) and role="alert". */
@layer lwds.components {
  .lws-notices:empty, .lws-main .woocommerce-notices-wrapper:empty { display: none; }
  .lws-main .woocommerce-message, .lws-main .woocommerce-info, .lws-main .woocommerce-error, .lws-main .woocommerce-notice, .lws-main .wc-block-components-notice-banner { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lws-space-2) var(--lws-space-4); margin: 0 0 var(--lws-space-4); padding: var(--lws-space-4) var(--lws-space-4) var(--lws-space-4) var(--lws-space-5); list-style: none; border: 0; border-inline-start: 4px solid var(--lws-color-info); border-radius: var(--lws-radius-card); background: var(--lws-color-info-tint); color: var(--lws-color-text); font-size: var(--lws-text-body); }
  .lws-main .woocommerce-message { border-inline-start-color: var(--lws-color-success); background: var(--lws-color-success-tint); }
  .lws-main .woocommerce-error { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--lws-space-1); border-inline-start-color: var(--lws-color-danger); background: var(--lws-color-danger-tint); }
  .lws-main .woocommerce-error[data-lws-title]::before { content: attr(data-lws-title); font-weight: 600; color: var(--lws-color-danger); }
  .lws-main .woocommerce-error li, .lws-main .woocommerce-message li, .lws-main .woocommerce-info li { list-style: none; margin: 0; display: block; }
  .lws-main .woocommerce-error li a, .lws-main .woocommerce-message a, .lws-main .woocommerce-info a { color: var(--lws-color-link); }
  .lws-main .woocommerce-message .button, .lws-main .woocommerce-info .button, .lws-main .woocommerce-error .button { order: 2; margin-inline-start: auto; display: inline-flex; align-items: center; min-height: var(--lws-control-height-sm); padding: var(--lws-space-2) var(--lws-space-3); border-radius: var(--lws-radius-control); border: 1px solid var(--lws-color-border-strong); background: var(--lws-color-surface); color: var(--lws-color-text); font-weight: 600; font-size: var(--lws-text-small); text-decoration: none; }
  .lws-main .woocommerce-notices-wrapper > :last-child { margin-bottom: 0; }
}
/* Order pages: status hero, timeline (order variant), membership summary cards, WooCommerce order
   details table, customer details, cancel-order button, support card. */
@layer lwds.components {
  /* --- Status hero --- */
  .lws-order-hero { display: grid; gap: var(--lws-space-4); padding: var(--lws-space-6); border-radius: var(--lws-radius-lg); background: var(--lws-color-surface-alt); border: 1px solid var(--lws-color-border); }
  @media (min-width: 768px) { .lws-order-hero { grid-template-columns: auto minmax(0, 1fr); padding: var(--lws-space-8); } .lws-order-hero__meta { grid-column: 1 / -1; } }
  .lws-order-hero--success { background: var(--lws-color-success-tint); border-color: transparent; }
  .lws-order-hero--warning { background: var(--lws-color-warning-tint); border-color: transparent; }
  .lws-order-hero--danger { background: var(--lws-color-danger-tint); border-color: transparent; }
  .lws-order-hero--info { background: var(--lws-color-info-tint); border-color: transparent; }
  .lws-order-hero__mark { width: 56px; height: 56px; border-radius: var(--lws-radius-round); display: grid; place-items: center; background: var(--lws-color-surface); color: var(--lws-color-text); box-shadow: var(--lws-shadow-1); }
  .lws-order-hero--success .lws-order-hero__mark { color: var(--lws-color-success); }
  .lws-order-hero--warning .lws-order-hero__mark { color: var(--lws-color-warning); }
  .lws-order-hero--danger .lws-order-hero__mark { color: var(--lws-color-danger); }
  .lws-order-hero--info .lws-order-hero__mark { color: var(--lws-color-info); }
  .lws-order-hero__body { display: flex; flex-direction: column; gap: var(--lws-space-3); align-items: flex-start; min-width: 0; }
  .lws-order-hero__title { font-size: var(--lws-text-display); }
  /* Owner, 2026-09-25: from 768 px the round icon sits on the heading's row, centred on the heading text; the chip stays
     above and the lead/actions below, all in the second column (the body box is dissolved into the hero grid). */
  @media (min-width: 768px) {
    .lws-order-hero { row-gap: var(--lws-space-3); column-gap: var(--lws-space-4); }
    .lws-order-hero__body { display: contents; }
    .lws-order-hero__body > * { grid-column: 2; justify-self: start; }
    .lws-order-hero__body > .lws-chip { grid-row: 1; }
    .lws-order-hero__mark { grid-column: 1; grid-row: 2; align-self: center; }
    .lws-order-hero__title { grid-row: 2; }
    .lws-order-hero__meta { margin-block-start: var(--lws-space-1); }
  }
  .lws-order-hero__lead { font-size: var(--lws-text-body-lg); color: var(--lws-color-text-muted); max-width: var(--lws-measure); }
  /* Flex, not grid: each fact takes its natural width so the email never breaks mid-word at 768, and pairs up at 390. */
  .lws-order-hero__meta { display: flex; flex-wrap: wrap; gap: var(--lws-space-3) var(--lws-space-6); margin: 0; padding-block-start: var(--lws-space-4); border-top: 1px solid var(--lws-color-border-on-tint); }
  .lws-order-hero__meta > div { display: flex; flex: 1 1 auto; flex-direction: column; gap: 2px; min-width: 7rem; max-width: 100%; }
  .lws-order-hero__meta dt { font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); }
  .lws-order-hero__meta dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
  .lws-chip--success { background: var(--lws-color-success-tint); color: var(--lws-color-success); border-color: transparent; }
  .lws-chip--warning { background: var(--lws-color-warning-tint); color: var(--lws-color-warning); border-color: transparent; }
  .lws-chip--danger { background: var(--lws-color-danger-tint); color: var(--lws-color-danger); border-color: transparent; }
  .lws-chip--info { background: var(--lws-color-info-tint); color: var(--lws-color-info); border-color: transparent; }
  .lws-chip--neutral { background: var(--lws-color-surface-sunken); color: var(--lws-color-text-muted); border-color: transparent; }
  .lws-order-hero--success .lws-chip, .lws-order-hero--warning .lws-chip, .lws-order-hero--danger .lws-chip, .lws-order-hero--info .lws-chip { background: var(--lws-color-surface); }

  /* --- Timeline (order variant) --- */
  .lws-timeline { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--lws-space-2); }
  .lws-timeline li { display: flex; flex-direction: column; gap: var(--lws-space-1); font-size: var(--lws-text-small); color: var(--lws-color-text-subtle); min-width: 0; }
  .lws-timeline li::before { content: ""; height: 6px; border-radius: var(--lws-radius-pill); background: var(--lws-color-border); }
  .lws-timeline__name { font-weight: 600; color: var(--lws-color-text-muted); }
  .lws-timeline__meta { overflow-wrap: anywhere; }
  .lws-timeline__step--done { color: var(--lws-color-success); }
  .lws-timeline li.lws-timeline__step--done::before { background: var(--lws-color-success); }
  .lws-timeline__step--done .lws-timeline__name { color: var(--lws-color-success); }
  .lws-timeline__step--current { color: var(--lws-color-text); }
  .lws-timeline li.lws-timeline__step--current::before { background: var(--lws-color-action); }
  .lws-timeline__step--current .lws-timeline__name { color: var(--lws-color-text); }
  .lws-timeline--void li:not(.lws-timeline__step--end) { opacity: .55; }
  .lws-timeline li.lws-timeline__step--end { color: var(--lws-color-text-muted); }
  .lws-timeline li.lws-timeline__step--failed { color: var(--lws-color-text); }
  .lws-timeline li.lws-timeline__step--failed::before { background: var(--lws-color-danger); }
  .lws-timeline li.lws-timeline__step--failed .lws-timeline__name { color: var(--lws-color-danger); }
  .lws-timeline li.lws-timeline__step--failed .lws-timeline__meta a { font-weight: 600; }
  .lws-timeline li.lws-timeline__step--end::before { background: var(--lws-color-text-subtle); }
  .lws-timeline li.lws-timeline__step--end .lws-timeline__name { color: var(--lws-color-text); }
  @media (max-width: 575.98px) { .lws-timeline--order { grid-template-columns: repeat(2, 1fr); } }

  /* --- Membership summary --- */
  .lws-order-items { display: grid; gap: var(--lws-space-3); }
  .lws-order-item { display: flex; flex-direction: column; gap: var(--lws-space-3); }
  .lws-order-item__head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--lws-space-3); }
  .lws-order-item__head > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  .lws-order-item__title { font-size: var(--lws-text-heading); }
  .lws-order-item__title a { color: inherit; text-decoration: none; }
  .lws-order-item__title a:hover { text-decoration: underline; }
  .lws-order-item__facts { display: grid; gap: var(--lws-space-2); grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); }
  .lws-order-item__given, .lws-order-item__needs { display: flex; flex-direction: column; gap: var(--lws-space-1); padding: var(--lws-space-3) var(--lws-space-4); border-radius: var(--lws-radius-control); background: var(--lws-color-surface-alt); font-size: var(--lws-text-small); }
  .lws-order-item__given .wc-item-meta { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: auto 1fr; gap: 2px var(--lws-space-2); }
  .lws-order-item__given .wc-item-meta li { display: contents; }
  .lws-order-item__given .wc-item-meta p, .lws-order-item__given .wc-item-meta-label { margin: 0; display: inline; }
  .lws-order-item__given .wc-item-meta-label { color: var(--lws-color-text-muted); }
  .lws-order-item__needs ul { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--lws-space-1); }
  .lws-order-item__needs li { display: flex; gap: var(--lws-space-2); align-items: flex-start; }
  .lws-order-item__needs .lws-icon { color: var(--lws-color-success); margin-top: .15em; }
  .lws-order__notes li .lws-icon { color: var(--lws-color-link); }

  /* --- WooCommerce order details (order/order-details.php) inside the aside card --- */
  .lws-order__details .woocommerce-order-details__title, .lws-order__details .woocommerce-column__title { font-size: var(--lws-text-heading); margin: 0 0 var(--lws-space-3); }
  .lws-order__details .woocommerce-order-details { display: flex; flex-direction: column; gap: var(--lws-space-3); }
  .lws-order__details table.shop_table { display: table; width: 100%; border-collapse: collapse; margin: 0; border: 0; box-shadow: none; background: transparent; font-size: var(--lws-text-small); }
  /* Parent main.css stacks every .woocommerce table.shop_table cell (display: block) below 768 px; the order table has two columns and stays a table. Layered override, no importance needed. */
  .lws-order__details table.shop_table tbody { display: table-row-group; width: auto; }
  .lws-order__details table.shop_table tfoot { display: table-footer-group; width: auto; }
  .lws-order__details table.shop_table tr { display: table-row; width: auto; }
  .lws-order__details table.shop_table th, .lws-order__details table.shop_table td { display: table-cell; width: auto; }
  .lws-order__details table.shop_table th, .lws-order__details table.shop_table td { padding: var(--lws-space-3) 0; border: 0; border-bottom: 1px solid var(--lws-color-border); background: transparent; text-align: start; vertical-align: top; }
  .lws-order__details table.shop_table thead th { font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); padding-top: 0; }
  .lws-order__details table.shop_table td.product-name { font-size: var(--lws-text-body); font-weight: 600; }
  .lws-order__details table.shop_table td.product-name a { color: inherit; text-decoration: none; }
  .lws-order__details table.shop_table .product-quantity { font-weight: 400; color: var(--lws-color-text-muted); }
  .lws-order__details table.shop_table .wc-item-meta { list-style: none; margin: var(--lws-space-1) 0 0; padding: 0; font-size: var(--lws-text-small); font-weight: 400; color: var(--lws-color-text-muted); }
  .lws-order__details table.shop_table .wc-item-meta p { margin: 0; display: inline; }
  .lws-order__details table.shop_table td.product-total, .lws-order__details table.shop_table tfoot td { text-align: end; white-space: nowrap; font-variant-numeric: tabular-nums; }
  .lws-order__details table.shop_table tfoot th { font-weight: 400; color: var(--lws-color-text-muted); }
  .lws-order__details table.shop_table tfoot tr:last-child th, .lws-order__details table.shop_table tfoot tr:last-child td { border-bottom: 0; padding-top: var(--lws-space-4); font-size: var(--lws-text-body-lg); font-weight: 700; color: var(--lws-color-text); }
  .lws-order__details table.shop_table tfoot tr:last-child .woocommerce-Price-currencySymbol { font-size: .7em; color: var(--lws-color-text-muted); }
  .lws-order__details .woocommerce-table__product-purchase-note td { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-order__details .order-again, .lws-order__details .woocommerce-order-details .button { display: inline-flex; align-items: center; min-height: var(--lws-control-height-sm); padding: var(--lws-space-2) var(--lws-space-4); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); color: var(--lws-color-text); font-size: var(--lws-text-small); font-weight: 600; text-decoration: none; }
  .lws-order__details .woocommerce-customer-details { display: flex; flex-direction: column; gap: var(--lws-space-2); padding-top: var(--lws-space-4); border-top: 1px solid var(--lws-color-border); font-size: var(--lws-text-small); }
  .lws-order__details .woocommerce-columns { display: grid; gap: var(--lws-space-3); }
  .lws-order__details .woocommerce-column { width: auto; float: none; }
  .lws-order__details address { font-style: normal; color: var(--lws-color-text-muted); line-height: 1.5; }
  .lws-order__details .woocommerce-customer-details--email, .lws-order__details .woocommerce-customer-details--phone { display: block; color: var(--lws-color-text); }
  .lws-order-hero__mark .lws-icon { stroke-width: 2; }
  .lws-order__support { display: flex; flex-direction: column; gap: var(--lws-space-3); }
  .lws-order__support .lws-guarantee--inline, .lws-account__support .lws-guarantee--inline { padding-top: var(--lws-space-3); border-top: 1px solid var(--lws-color-border); border-radius: 0; }
  /* Order page grid (order-received, order-pay, account order view) */
  .lws-order { display: flex; flex-direction: column; gap: var(--lws-space-8); }
  .lws-order__grid { display: grid; gap: var(--lws-space-8); grid-template-columns: minmax(0, 1fr); align-items: start; }
  .lws-order__main, .lws-order__aside { min-width: 0; }
  .lws-order__section { border-top: 0; padding-block-start: 0; }
  .lws-order__section + .lws-order__section { border-top: 1px solid var(--lws-color-border); padding-block-start: var(--lws-space-8); }
  .lws-order .lws-next { margin-block-start: var(--lws-space-4); }
  @media (min-width: 992px) {
    .lws-order__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--lws-space-10); }
    .lws-order__aside { position: sticky; top: calc(var(--lws-header-height) + var(--lws-admin-bar, 0px) + var(--lws-space-4)); }
  }
}
/* Gallery (WooCommerce), Decision panel, Requirements, Benefits, Attributes, Product card, Trust, Guarantee, Alert, Buy bar */
@layer lwds.components {
  /* --- Gallery: WooCommerce product-image.php + flexslider/photoswipe --- */
  .lws-gallery .woocommerce-product-gallery { position: relative; }
  .lws-gallery .woocommerce-product-gallery__wrapper { margin: 0; }
  .lws-gallery .woocommerce-product-gallery__image { border-radius: var(--lws-radius-card); overflow: hidden; background: var(--lws-color-surface-alt); }
  .lws-gallery .woocommerce-product-gallery__image a { display: block; position: relative; overflow: hidden; }
  .lws-gallery .zoomImg { max-width: none; } /* WooCommerce zoom layer; clipped by the link above, so it cannot widen the page */
  .lws-gallery { overflow: hidden; }
  .lws-gallery .woocommerce-product-gallery__image img { width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; }
  .lws-gallery .woocommerce-product-gallery__trigger { position: absolute; top: var(--lws-space-3); right: var(--lws-space-3); z-index: var(--lws-z-raised); width: 44px; height: 44px; border-radius: var(--lws-radius-round); background: var(--lws-color-surface); box-shadow: var(--lws-shadow-2); display: grid; place-items: center; text-indent: -9999px; overflow: hidden; }
  .lws-gallery .woocommerce-product-gallery__trigger::before { content: ""; width: 12px; height: 12px; border: 2px solid var(--lws-color-text); border-radius: 50%; text-indent: 0; }
  .lws-gallery .woocommerce-product-gallery__trigger::after { content: ""; position: absolute; width: 2px; height: 8px; background: var(--lws-color-text); transform: translate(8px, 8px) rotate(-45deg); }
  .lws-gallery .flex-control-thumbs { display: flex; flex-wrap: wrap; gap: var(--lws-space-2); list-style: none; margin: var(--lws-space-3) 0 0; padding: 0; }
  .lws-gallery .flex-control-thumbs li { width: calc(25% - var(--lws-space-2) * 3 / 4); margin: 0; }
  .lws-gallery .flex-control-thumbs img { width: 100%; border-radius: var(--lws-radius-control); cursor: pointer; opacity: .6; transition: opacity var(--lws-duration-fast); }
  .lws-gallery .flex-control-thumbs img.flex-active, .lws-gallery .flex-control-thumbs img:hover { opacity: 1; }
  .lws-gallery .woocommerce-product-gallery--with-images:not(.woocommerce-product-gallery--columns-4) .woocommerce-product-gallery__image:not(:first-child) { display: none; }

  /* --- Decision panel --- */
  .lws-decision { display: flex; flex-direction: column; gap: var(--lws-space-4); }
  .lws-decision__facts { display: grid; gap: var(--lws-space-2); padding: var(--lws-space-4); border-radius: var(--lws-radius-card); background: var(--lws-color-surface-alt); }
  .lws-decision__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--lws-space-2) var(--lws-space-3); }
  .lws-decision__form { display: flex; flex-direction: column; gap: var(--lws-space-4); }
  .lws-decision__form .price, .lws-decision .woocommerce-variation-price { display: none; } /* one price (LW-012); lwds.js updates the panel price */
  .lws-decision__secure { display: flex; flex-wrap: wrap; align-items: center; gap: var(--lws-space-2) var(--lws-space-3); font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-decision__secure .lws-icon { color: var(--lws-color-success); }
  .lws-decision .woocommerce-info, .lws-decision .woocommerce-message, .lws-decision .woocommerce-error { margin: 0; }

  /* --- Requirements, Benefits, Attributes --- */
  .lws-requirements ul { list-style: none; padding: 0; display: flex; flex-direction: column; gap: var(--lws-space-3); }
  .lws-requirements li { display: grid; grid-template-columns: auto 1fr; gap: var(--lws-space-3); align-items: start; }
  .lws-requirements li .lws-icon { color: var(--lws-color-success); margin-top: .2em; }
  .lws-requirements__why { display: block; font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-benefits__groups { display: grid; gap: var(--lws-space-6); }
  @media (min-width: 576px) { .lws-benefits__groups { grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); } }
  .lws-benefits__group { display: flex; flex-direction: column; gap: var(--lws-space-3); }
  .lws-benefits__title { font-size: var(--lws-text-label); text-transform: uppercase; letter-spacing: .04em; color: var(--lws-color-text-muted); }
  .lws-benefits { list-style: none; padding: 0; display: flex; flex-direction: column; gap: var(--lws-space-2); }
  .lws-benefits li { display: flex; gap: var(--lws-space-3); align-items: flex-start; }
  .lws-benefits li .lws-icon { color: var(--lws-color-success); margin-top: .15em; }
  .lws-benefits--excluded li .lws-icon { color: var(--lws-color-text-subtle); }
  .lws-attributes .woocommerce-product-attributes { font-size: var(--lws-text-small); }
  .lws-attributes th, .lws-attributes td { padding: var(--lws-space-2) var(--lws-space-3); border-bottom: 1px solid var(--lws-color-border); vertical-align: top; }
  .lws-attributes th { font-weight: 600; color: var(--lws-color-text-muted); width: 35%; }
  .lws-attributes td p { margin: 0; }

  /* --- Product card --- */
  .lws-product-card { display: flex; flex-direction: column; border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); overflow: hidden; box-shadow: var(--lws-shadow-1); transition: box-shadow var(--lws-duration-fast), border-color var(--lws-duration-fast); }
  /* Polish 2: same hover as the family cards (elevated shadow + strong border); the View button follows. */
  .lws-product-card:hover { box-shadow: var(--lws-shadow-2); border-color: var(--lws-color-border-strong); }
  .lws-product-card__foot .lws-button--secondary { gap: .3em; }
  .lws-product-card:hover .lws-product-card__foot .lws-button--secondary { --lws-button-border: var(--lws-color-text); }
  .lws-product-card__figure { position: relative; }
  .lws-product-card__media { display: block; aspect-ratio: 16 / 10; background: var(--lws-color-surface-alt); overflow: hidden; }
  /* Top-right: the posters put the product name top-left, where the flag used to cover it. */
  .lws-product-card__flag { position: absolute; top: var(--lws-space-3); right: var(--lws-space-3); z-index: 1; box-shadow: var(--lws-shadow-1); }
  /* Product art is square with the product name in its upper half. A 16:10 window keeps 62.5% of the height;
     aligning it at 24% shows about 9%–72% of the original (owner's red box on the Kenya Airways poster, 2026-09-24).
     31% matched that one poster exactly but cut the titles of posters whose name sits higher (Hilton Gold, JetBlue,
     Wyndham); 24% keeps every product name whole across all 21 posters, with the benefit icons below cut. */
  .lws-product-card__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 24%; }
  /* Card body 20 px padding and 28 px between the title and the price/View row (owner reference: luxuryascent.com catalog card — 20 px body, 25 px above its footer). */
  .lws-product-card__body { display: flex; flex-direction: column; gap: var(--lws-space-2); padding: var(--lws-space-5); flex: 1; }
  .lws-product-card__eyebrow { font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); }
  .lws-product-card__title { font-size: var(--lws-text-body-lg); text-wrap: pretty; }
  /* TeraWallet cashback line hooked on woocommerce_shop_loop_item_title */
  .lws-product-card .on-woo-wallet-cashback { font-size: var(--lws-text-small); color: var(--lws-color-success); font-weight: 600; }
  .lws-product-card__title a { color: inherit; text-decoration: none; }
  .lws-product-card__title a:hover { text-decoration: underline; }
  .lws-product-card__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--lws-space-2); margin-block-start: auto; padding-block-start: var(--lws-space-5); }

  /* --- Trust strip, Guarantee --- */
  .lws-trust { display: grid; gap: var(--lws-space-3); grid-template-columns: repeat(2, 1fr); }
  @media (min-width: 768px) { .lws-trust { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); } }
  .lws-trust__item { display: flex; flex-direction: column; gap: var(--lws-space-1); padding: var(--lws-space-3) var(--lws-space-4); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); }
  .lws-trust__item .lws-icon { color: var(--lws-color-link); }
  .lws-trust__value { font-weight: 700; font-size: var(--lws-text-body-lg); font-variant-numeric: tabular-nums; line-height: 1.2; }
  .lws-trust__label { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); overflow-wrap: anywhere; }
  .lws-guarantee { display: flex; gap: var(--lws-space-3); align-items: flex-start; padding: var(--lws-space-4); border-radius: var(--lws-radius-card); background: var(--lws-color-success-tint); color: var(--lws-color-text); }
  .lws-guarantee .lws-icon { color: var(--lws-color-success); flex: none; margin-top: .1em; }
  .lws-guarantee--inline { padding: 0; background: transparent; font-size: var(--lws-text-small); }
  .lws-guarantee__title { font-weight: 600; }
  .lws-guarantee p { margin-block-start: var(--lws-space-1); }

  /* --- Notices (WooCommerce + snippet) as Alert --- */

  /* --- Reviews (WooCommerce single-product-reviews.php, without Woo core CSS) --- */
  /* The section header already states the count; WooCommerce's own title stays for screen readers only. */
  .lws-reviews .woocommerce-Reviews-title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .lws-reviews .commentlist { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--lws-space-3); }
  .lws-reviews .commentlist li { margin: 0; }
  .lws-reviews .comment_container { display: flex; align-items: flex-start; gap: var(--lws-space-3); padding: var(--lws-space-4); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); }
  .lws-reviews .comment_container img.avatar { flex: none; width: 48px; height: 48px; border-radius: var(--lws-radius-round); }
  .lws-reviews .comment-text { flex: 1; display: flex; flex-direction: column; gap: var(--lws-space-2); min-width: 0; }
  .lws-reviews .comment-text .meta { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); margin: 0; }
  .lws-reviews .woocommerce-review__author { font-weight: 600; color: var(--lws-color-text); }
  .lws-reviews .woocommerce-review__verified { display: inline-block; padding: .05em .5em; border-radius: var(--lws-radius-pill); background: var(--lws-color-success-tint); color: var(--lws-color-success); font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; font-style: normal; }
  .lws-reviews .description p { margin: 0; }
  .lws-main .star-rating { position: relative; display: inline-block; height: 1em; width: 5.4em; line-height: 1; font-size: 1em; letter-spacing: .08em; overflow: hidden; color: var(--main-800); }
  .lws-main .star-rating::before { content: "\2606\2606\2606\2606\2606"; position: absolute; inset: 0 auto 0 0; color: var(--lws-color-border-strong); }
  .lws-main .star-rating span { position: absolute; inset: 0 auto 0 0; overflow: hidden; padding-top: 1.5em; }
  .lws-main .star-rating span::before { content: "\2605\2605\2605\2605\2605"; position: absolute; inset: 0 auto 0 0; }
  .lws-reviews .comment-respond { margin-block-start: var(--lws-space-6); padding: var(--lws-space-4); border-radius: var(--lws-radius-card); background: var(--lws-color-surface-alt); }
  .lws-reviews .comment-reply-title { font-size: var(--lws-text-heading); font-weight: 600; display: block; margin-block-end: var(--lws-space-3); }
  .lws-reviews .comment-form { display: flex; flex-direction: column; gap: var(--lws-space-4); }
  .lws-reviews .comment-form .form-submit input[type="submit"] { display: inline-flex; align-items: center; min-height: var(--lws-control-height); padding: var(--lws-space-3) var(--lws-space-5); border: 1px solid transparent; border-radius: var(--lws-radius-control); background: var(--lws-color-action); color: var(--lws-color-text-on-action); font-weight: 600; cursor: pointer; }
  .lws-reviews .comment-form-cookies-consent { flex-direction: row; align-items: flex-start; gap: var(--lws-space-2); }
  .lws-reviews .comment-form-cookies-consent input { width: 20px; height: 20px; margin-top: .2em; }
  .lws-reviews .comment-form-rating select { max-width: 16rem; }
  .lws-reviews .comment-form-rating p.stars { display: none; } /* keep the native select (accessibility-guidelines §9) */

  /* --- Sticky buy bar --- */
  .lws-buybar { position: fixed; inset-inline: 0; bottom: 0; z-index: var(--lws-z-sticky); display: flex; align-items: center; justify-content: space-between; gap: var(--lws-space-3); padding: var(--lws-space-3) var(--lws-gutter); padding-bottom: max(var(--lws-space-3), env(safe-area-inset-bottom)); background: var(--lws-color-surface); border-top: 1px solid var(--lws-color-border); box-shadow: var(--lws-shadow-3); transform: translateY(110%); transition: transform var(--lws-duration-slow) var(--lws-ease-standard); }
  .lws-buybar.is-visible { transform: none; }
  .lws-buybar .lws-button { white-space: nowrap; flex: none; }
  .lws-buybar__facts { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  .lws-buybar__facts .lws-text-small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  @media (min-width: 992px) { .lws-buybar { display: none; } }
}
/* Quantity — labelled stepper wrapping WooCommerce's .quantity; buttons keep the parent's class names. */
@layer lwds.components {
  .lws-quantity { display: flex; flex-direction: column; align-items: flex-start; gap: var(--lws-space-1); text-align: start; }
  .lws-quantity .quantity { display: inline-flex; align-items: stretch; width: max-content; max-width: 100%; border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); overflow: hidden; background: var(--lws-color-surface); }
  .lws-quantity .quantity.hidden { display: none; }
  .lws-quantity .quantity input.qty { width: 4.5rem; min-height: var(--lws-control-height); margin: 0; padding: 0 var(--lws-space-2); border: 0; border-inline: 1px solid var(--lws-color-border); border-radius: 0; text-align: center; font-weight: 600; font-variant-numeric: tabular-nums; background: transparent; -moz-appearance: textfield; }
  .lws-quantity .quantity input.qty::-webkit-inner-spin-button, .lws-quantity .quantity input.qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
  .lws-quantity .quantity input.qty:focus-visible { box-shadow: inset var(--lws-shadow-focus); }
  .lws-quantity .lws-qty-btn { width: 44px; height: auto; min-height: var(--lws-control-height); border: 0; border-radius: 0; background: var(--lws-color-surface-alt); color: var(--lws-color-text); }
  .lws-quantity .lws-qty-btn:hover { background: var(--lws-color-surface-sunken); }
  /* Owner, 2026-09-25: a compact stepper inside the cart table (36 px high, 36 px buttons, 3 rem field); the product
     page keeps the full-size control. 36 px stays above the 24 px WCAG 2.2 minimum target. */
  .lws-cart-table .lws-quantity .quantity input.qty { width: 3rem; min-height: 36px; font-size: var(--lws-text-small); }
  .lws-cart-table .lws-quantity .lws-qty-btn { width: 36px; min-height: 36px; }
  /* WooCommerce renders the input as type=hidden when the quantity is fixed (sold individually,
     or the parent/snippet behaviour recorded as LW-011). Hide the whole control, label included. */
  .lws-quantity:has(input.qty[type="hidden"]), .lws-quantity.is-hidden { display: none; }
}
/* Storefront components: breadcrumb, archive toolbar (result count, sorting), filter panel,
   product grid, pagination, hero, family cards, steps, card/empty state on the storefront. */
@layer lwds.components {
  /* Header chips */
  .lws-chip__count { font-weight: 500; }
  .lws-chip.is-active { background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); border-color: transparent; }
  .lws-chip--remove { padding-inline-end: .5em; }
  /* Toolbar: WooCommerce result count + ordering form */
  .lws-archive__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lws-space-3); }
  .lws-archive__toolbar .woocommerce-notices-wrapper { flex: 1 1 100%; }
  .lws-archive__toolbar .woocommerce-notices-wrapper:empty { display: none; }
  .lws-archive__toolbar .woocommerce-result-count { margin: 0; font-size: var(--lws-text-small); color: var(--lws-color-text-muted); float: none; }
  .lws-archive__toolbar .woocommerce-ordering { display: flex; align-items: center; gap: var(--lws-space-2); margin: 0; float: none; }
  .lws-archive__toolbar .woocommerce-ordering::before { content: "Sort by"; font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-archive__toolbar .woocommerce-ordering select.orderby { appearance: none; -webkit-appearance: none; min-height: 40px; padding: 0 var(--lws-space-8) 0 var(--lws-space-3); border: 1px solid var(--lws-color-border-strong); border-radius: var(--lws-radius-control); background: var(--lws-color-surface) var(--lws-icon-chevron) no-repeat right var(--lws-space-3) center / 1.1rem; color: var(--lws-color-text); font: inherit; font-size: var(--lws-text-small); font-weight: 500; }
  /* Filter panel */
  .lws-filters { border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); }
  .lws-filters__summary { display: flex; align-items: center; gap: var(--lws-space-2); min-height: 48px; padding: 0 var(--lws-space-4); font-weight: 600; cursor: pointer; list-style: none; }
  .lws-filters__summary::-webkit-details-marker { display: none; }
  .lws-filters__summary::after { content: "+"; margin-inline-start: auto; font-size: 1.25rem; color: var(--lws-color-text-muted); }
  .lws-filters[open] .lws-filters__summary::after { content: "–"; }
  .lws-filters__body { display: flex; flex-direction: column; gap: var(--lws-space-5); padding: 0 var(--lws-space-4) var(--lws-space-4); border-top: 1px solid var(--lws-color-border); padding-top: var(--lws-space-4); }
  .lws-filters__active { display: flex; flex-direction: column; gap: var(--lws-space-2); }
  .lws-filters__group { border: 0; margin: 0; padding: 0; min-width: 0; display: flex; flex-direction: column; gap: var(--lws-space-2); }
  .lws-filters__title { padding: 0; margin: 0; font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); }
  .lws-filters__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
  .lws-filters__list li { margin: 0; }
  .lws-filters__list a { display: flex; align-items: center; justify-content: space-between; gap: var(--lws-space-2); min-height: 40px; padding: 0 var(--lws-space-2); border-radius: var(--lws-radius-control); color: var(--lws-color-text); text-decoration: none; font-size: var(--lws-text-small); }
  .lws-filters__list a:hover { background: var(--lws-color-surface-alt); }
  .lws-filters__list a.is-active { background: var(--lws-color-action-subtle); font-weight: 600; }
  .lws-filters__count { font-size: var(--lws-text-micro); color: var(--lws-color-text-muted); font-variant-numeric: tabular-nums; }
  .lws-filters__note { margin: 0; }
  @media (min-width: 992px) { .lws-filters__summary { pointer-events: none; } .lws-filters__summary::after { display: none; } }
  /* Product grid (WooCommerce ul.products) */
  .lws-archive ul.products, .lws-product-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--lws-space-4); grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); float: none; width: auto; }
  .lws-archive ul.products::before, .lws-archive ul.products::after { display: none; }
  .lws-archive ul.products li.product, .lws-products__item { margin: 0; padding: 0; float: none; width: auto; display: flex; min-width: 0; list-style: none; }
  .lws-archive ul.products li.product > .lws-product-card, .lws-product-grid > .lws-product-card { flex: 1 1 auto; width: 100%; }
  .lws-product-grid { grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); }
  .lws-product-card__foot .lws-button { white-space: nowrap; flex: none; }
  .lws-product-card__foot .lws-price { flex: 1 1 auto; min-width: 0; }
  /* Pagination (core woocommerce_pagination) */
  .lws-archive__after:empty { display: none; }
  .lws-archive .woocommerce-pagination { display: flex; justify-content: center; }
  .lws-archive .woocommerce-pagination ul.page-numbers { display: flex; flex-wrap: wrap; gap: var(--lws-space-1); list-style: none; margin: 0; padding: 0; border: 0; }
  .lws-archive .woocommerce-pagination li { margin: 0; border: 0; float: none; display: block; }
  .lws-archive .woocommerce-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: var(--lws-control-height); padding: 0 var(--lws-space-3); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); color: var(--lws-color-text); text-decoration: none; font-weight: 500; font-variant-numeric: tabular-nums; }
  .lws-archive .woocommerce-pagination a.page-numbers:hover { border-color: var(--lws-color-border-strong); background: var(--lws-color-surface-alt); }
  .lws-archive .woocommerce-pagination .page-numbers.current { background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); border-color: transparent; }
  .lws-archive .woocommerce-pagination .page-numbers.dots { border-color: transparent; }
  /* Home: hero, family cards, steps */
  .lws-hero { background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); padding-block: var(--lws-space-10); }
  .lws-hero__inner { display: grid; gap: var(--lws-space-8); align-items: center; }
  .lws-hero__body { display: flex; flex-direction: column; gap: var(--lws-space-4); min-width: 0; }
  .lws-hero__eyebrow { color: var(--lws-color-action); }
  .lws-hero h1 { color: inherit; font-size: clamp(2rem, 1.4rem + 2.2vw, 3.25rem); max-width: 22ch; }
  .lws-hero__lead { font-size: var(--lws-text-body-lg); color: var(--lws-on-dark-85); max-width: 60ch; }
  .lws-hero__actions { gap: var(--lws-space-3); }
  /* Polish 2: on phones the two hero buttons stack at the same width instead of one wide and one narrow. */
  @media (max-width: 575.98px) { .lws-hero__actions > .lws-button { flex: 1 1 100%; } }
  .lws-hero__secondary { --lws-button-fg: var(--lws-color-text-on-dark); --lws-button-border: var(--lws-on-dark-40); }
  .lws-hero__facts { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--lws-space-3); }
  .lws-hero__facts li { display: flex; gap: var(--lws-space-3); align-items: center; padding: var(--lws-space-4); border-radius: var(--lws-radius-card); background: var(--lws-on-dark-8); font-size: var(--lws-text-small); }
  .lws-hero__facts li > .lws-icon { color: var(--lws-color-action); flex: none; }
  .lws-hero__facts strong { font-size: var(--lws-text-body); color: var(--lws-color-text-on-dark); }
  /* Polish 2: hero padding 64 → 48 px on wide screens (40 px below) so the first section starts above the fold. */
  @media (min-width: 992px) { .lws-hero { padding-block: var(--lws-space-12); } .lws-hero__inner { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--lws-space-12); } }
  .lws-family-card { display: flex; flex-direction: column; gap: var(--lws-space-2); padding: var(--lws-space-5); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); color: var(--lws-color-text); text-decoration: none; box-shadow: var(--lws-shadow-1); transition: box-shadow var(--lws-duration-fast), border-color var(--lws-duration-fast), transform var(--lws-duration-fast); }
  /* Polish 2: hover = a 2 px lift with the elevated shadow and the strong border; no colour change. */
  .lws-family-card:hover, .lws-family-card:focus-visible { box-shadow: var(--lws-shadow-2); border-color: var(--lws-color-border-strong); color: var(--lws-color-text); text-decoration: none; transform: translateY(-2px); }
  @media (prefers-reduced-motion: reduce) { .lws-family-card:hover, .lws-family-card:focus-visible { transform: none; } }
  .lws-family-card__icon { width: 40px; height: 40px; border-radius: var(--lws-radius-control); display: grid; place-items: center; background: var(--lws-color-action-subtle); color: var(--lws-color-text); }
  .lws-family-card__title { font-size: var(--lws-text-heading); font-weight: 600; line-height: 1.25; }
  .lws-family-card__count { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-family-card__brands { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); }
  .lws-family-card__cta { display: inline-flex; align-items: center; gap: .3em; margin-block-start: auto; padding-block-start: var(--lws-space-2); font-size: var(--lws-text-small); font-weight: 600; color: var(--lws-color-link); }
  .lws-steps { counter-reset: step; list-style: none; margin: 0; padding: 0; display: grid; gap: var(--lws-space-4); grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
  .lws-steps li { display: flex; flex-direction: column; gap: var(--lws-space-2); padding: var(--lws-space-5); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); font-size: var(--lws-text-small); color: var(--lws-color-text-muted); margin: 0; }
  .lws-steps__num { width: 32px; height: 32px; border-radius: var(--lws-radius-round); display: grid; place-items: center; background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); font-weight: 700; font-variant-numeric: tabular-nums; }
  .lws-steps strong { font-size: var(--lws-text-body-lg); color: var(--lws-color-text); }
  .lws-storefront .lws-section { border-top: 0; padding-block-start: 0; }
  .lws-storefront .lws-guarantee--card { height: 100%; }
  /* Polish 2: the support card's email button sits at its natural width instead of stretching across the card. */
  .lws-home__support .lws-button { align-self: flex-start; }
}
/* Shared surfaces and data display — one definition each (Sprint 6, D-041): card, alert, empty state,
   data table, KPI, page/section headers live in navigation.css, pagination, loading states. */
@layer lwds.components {
  .lws-card { display: flex; flex-direction: column; gap: var(--lws-space-3); padding: var(--lws-space-5); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); min-width: 0; }
  .lws-card--raised { box-shadow: var(--lws-shadow-2); }
  .lws-card > p { margin: 0; }
  .lws-card .lws-card__title, .lws-card__title { display: flex; align-items: center; gap: var(--lws-space-2); font-size: var(--lws-text-heading); margin: 0; }
  .lws-alert { display: flex; gap: var(--lws-space-3); align-items: flex-start; padding: var(--lws-space-3) var(--lws-space-4); border-radius: var(--lws-radius-card); border: 1px solid transparent; background: var(--lws-color-info-tint); color: var(--lws-color-text); }
  .lws-alert > .lws-icon { flex: none; margin-top: .15em; color: var(--lws-color-info); }
  .lws-alert__body { display: flex; flex-direction: column; gap: var(--lws-space-1); min-width: 0; }
  .lws-alert__title { font-weight: 600; }
  .lws-alert--success { background: var(--lws-color-success-tint); } .lws-alert--success > .lws-icon { color: var(--lws-color-success); }
  .lws-alert--warning { background: var(--lws-color-warning-tint); } .lws-alert--warning > .lws-icon { color: var(--lws-color-warning); }
  .lws-alert--danger { background: var(--lws-color-danger-tint); } .lws-alert--danger > .lws-icon { color: var(--lws-color-danger); }
  .lws-alert--inline { background: transparent; border-color: var(--lws-color-border); }
  .lws-link { color: var(--lws-color-link); text-decoration: underline; text-underline-offset: .15em; font-weight: 500; }
  .lws-cluster--between { justify-content: space-between; }
  .lws-empty { display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--lws-space-3); padding: var(--lws-space-10) var(--lws-space-4); border: 1px dashed var(--lws-color-border-strong); border-radius: var(--lws-radius-card); }
  .lws-empty > .lws-icon { color: var(--lws-color-text-subtle); width: 2.5rem; height: 2.5rem; }
  .lws-empty h1, .lws-empty h2, .lws-empty h3 { font-size: var(--lws-text-heading); }
  .lws-empty p { max-width: 36ch; }
  .lws-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-card); background: var(--lws-color-surface); }
  .lws-table { width: 100%; border-collapse: collapse; font-size: var(--lws-text-small); }
  .lws-table th, .lws-table td { padding: var(--lws-space-3) var(--lws-space-4); border-bottom: 1px solid var(--lws-color-border); vertical-align: top; text-align: start; }
  .lws-table thead th { font-size: var(--lws-text-micro); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lws-color-text-muted); background: var(--lws-color-surface-alt); white-space: nowrap; }
  .lws-table tbody th { font-weight: 600; }
  .lws-table tbody th a { color: inherit; text-decoration: none; }
  .lws-table tbody th a:hover { text-decoration: underline; }
  .lws-table tbody tr:last-child th, .lws-table tbody tr:last-child td { border-bottom: 0; }
  .lws-table td.lws-num, .lws-table thead th.lws-num { text-align: end; white-space: nowrap; }
  .lws-table td time, .lws-table th time { white-space: nowrap; }
  .lws-table--orders td:last-child { white-space: nowrap; width: 1%; }
  .lws-table--transactions td:nth-child(2) { min-width: 14rem; }
  .lws-table td.lws-num .woocommerce-Price-currencySymbol { font-size: .8em; color: var(--lws-color-text-muted); }
  .lws-kpi { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--lws-space-3); margin: 0; }
  .lws-kpi__item { display: flex; flex-direction: column-reverse; gap: 2px; padding: var(--lws-space-3) var(--lws-space-4); border-radius: var(--lws-radius-card); background: var(--lws-color-surface-alt); min-width: 0; }
  .lws-kpi__value { margin: 0; font-weight: 700; font-size: var(--lws-text-heading); line-height: 1.2; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
  .lws-kpi__value--date { font-size: var(--lws-text-body); }
  .lws-kpi__value .woocommerce-Price-currencySymbol { font-size: .7em; color: var(--lws-color-text-muted); }
  .lws-kpi__label { font-size: var(--lws-text-small); color: var(--lws-color-text-muted); font-weight: 500; }
  .lws-kpi--wallet { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); }
  /* Pagination: WordPress paginate_links() lists and WooCommerce's .woocommerce-pagination */
  .lws-pagination, .lws-main .woocommerce-pagination { display: flex; justify-content: center; }
  .lws-pagination ul, .lws-main .woocommerce-pagination ul.page-numbers { display: flex; flex-wrap: wrap; gap: var(--lws-space-1); list-style: none; margin: 0; padding: 0; border: 0; }
  .lws-pagination li, .lws-main .woocommerce-pagination li { margin: 0; border: 0; float: none; display: block; }
  .lws-pagination .page-numbers, .lws-main .woocommerce-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: var(--lws-control-height); min-height: var(--lws-control-height); padding: 0 var(--lws-space-3); border: 1px solid var(--lws-color-border); border-radius: var(--lws-radius-control); background: var(--lws-color-surface); color: var(--lws-color-text); text-decoration: none; font-weight: 500; font-variant-numeric: tabular-nums; }
  .lws-pagination a.page-numbers:hover, .lws-main .woocommerce-pagination a.page-numbers:hover { border-color: var(--lws-color-border-strong); background: var(--lws-color-surface-alt); }
  .lws-pagination .page-numbers.current, .lws-main .woocommerce-pagination .page-numbers.current { background: var(--lws-color-surface-dark); color: var(--lws-color-text-on-dark); border-color: transparent; }
  .lws-pagination .page-numbers.dots, .lws-main .woocommerce-pagination .page-numbers.dots { border-color: transparent; }
  /* Loading states */
  .lws-skeleton { display: block; min-height: 1em; border-radius: var(--lws-radius-sm); color: transparent; background: linear-gradient(90deg, var(--lws-color-surface-alt) 25%, var(--lws-color-border) 50%, var(--lws-color-surface-alt) 75%); background-size: 200% 100%; animation: lws-shimmer 1.2s linear infinite; }
  .lws-main form.is-loading { opacity: .65; }
  .lws-main form.is-loading .lws-button { cursor: progress; }
  @keyframes lws-shimmer { to { background-position: -200% 0; } }
  @keyframes lws-spin { to { transform: rotate(360deg); } }
  @media (prefers-reduced-motion: reduce) { .lws-skeleton, .lws-button[aria-busy="true"]::after { animation: none; } }
}
/* Utilities — the only layer where !important is permitted. */
@layer lwds.utilities {
  .lws-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap !important; border: 0 !important; }
  .lws-text-center { text-align: center !important; }
}
