.elementor-kit-777781{--e-global-color-primary:#111111;--e-global-color-secondary:#666666;--e-global-color-text:#111111;--e-global-color-accent:#111111;--e-global-color-widabg:#FFFFFF;--e-global-color-widagold:#EADFC6;--e-global-color-widawash:#F7F1E3;--e-global-color-widaline:#E5E5E5;--e-global-color-widasurf:#F4F4F4;--e-global-color-widacrit:#111111;--e-global-typography-primary-font-family:"IBM Plex Sans Arabic";--e-global-typography-primary-font-size:24px;--e-global-typography-primary-font-weight:500;--e-global-typography-primary-line-height:1.4em;--e-global-typography-primary-letter-spacing:0px;--e-global-typography-secondary-font-family:"IBM Plex Sans Arabic";--e-global-typography-secondary-font-size:18px;--e-global-typography-secondary-font-weight:400;--e-global-typography-secondary-line-height:1.6em;--e-global-typography-secondary-letter-spacing:0px;--e-global-typography-text-font-family:"IBM Plex Sans Arabic";--e-global-typography-text-font-size:16px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.75em;--e-global-typography-text-letter-spacing:0px;--e-global-typography-accent-font-family:"IBM Plex Sans Arabic";--e-global-typography-accent-font-size:14px;--e-global-typography-accent-font-weight:500;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-line-height:1.6em;--e-global-typography-accent-letter-spacing:1.12px;--e-global-typography-wdaxs-font-family:"IBM Plex Sans Arabic";--e-global-typography-wdaxs-font-size:12px;--e-global-typography-wdaxs-font-weight:400;--e-global-typography-wdaxs-line-height:1.5em;--e-global-typography-wdaxs-letter-spacing:0px;--e-global-typography-wdasm-font-family:"IBM Plex Sans Arabic";--e-global-typography-wdasm-font-size:14px;--e-global-typography-wdasm-font-weight:400;--e-global-typography-wdasm-line-height:1.6em;--e-global-typography-wdasm-letter-spacing:0px;--e-global-typography-wdabase-font-family:"IBM Plex Sans Arabic";--e-global-typography-wdabase-font-size:16px;--e-global-typography-wdabase-font-weight:400;--e-global-typography-wdabase-line-height:1.75em;--e-global-typography-wdabase-letter-spacing:0px;--e-global-typography-wdamd-font-family:"IBM Plex Sans Arabic";--e-global-typography-wdamd-font-size:18px;--e-global-typography-wdamd-font-weight:400;--e-global-typography-wdamd-line-height:1.6em;--e-global-typography-wdamd-letter-spacing:0px;--e-global-typography-wdalg-font-family:"IBM Plex Sans Arabic";--e-global-typography-wdalg-font-size:24px;--e-global-typography-wdalg-font-weight:500;--e-global-typography-wdalg-line-height:1.4em;--e-global-typography-wdalg-letter-spacing:0px;--e-global-typography-wdaxl-font-family:"IBM Plex Sans Arabic";--e-global-typography-wdaxl-font-size:34px;--e-global-typography-wdaxl-font-weight:500;--e-global-typography-wdaxl-line-height:1.25em;--e-global-typography-wdaxl-letter-spacing:0px;--e-global-typography-wda2xl-font-family:"IBM Plex Sans Arabic";--e-global-typography-wda2xl-font-size:48px;--e-global-typography-wda2xl-font-weight:500;--e-global-typography-wda2xl-line-height:1.15em;--e-global-typography-wda2xl-letter-spacing:0px;background-color:#FFFFFF;color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:16px;font-weight:400;line-height:1.75em;letter-spacing:0px;}.elementor-kit-777781 button,.elementor-kit-777781 input[type="button"],.elementor-kit-777781 input[type="submit"],.elementor-kit-777781 .elementor-button{background-color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:14px;font-weight:500;text-transform:none;line-height:1.4em;letter-spacing:0px;color:#FFFFFF;border-radius:0px 0px 0px 0px;padding:16px 24px 16px 24px;}.elementor-kit-777781 button:hover,.elementor-kit-777781 button:focus,.elementor-kit-777781 input[type="button"]:hover,.elementor-kit-777781 input[type="button"]:focus,.elementor-kit-777781 input[type="submit"]:hover,.elementor-kit-777781 input[type="submit"]:focus,.elementor-kit-777781 .elementor-button:hover,.elementor-kit-777781 .elementor-button:focus{background-color:#333333;color:#FFFFFF;}.elementor-kit-777781 e-page-transition{background-color:#FFBC7D;}.elementor-kit-777781 a{color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:16px;font-weight:400;line-height:1.75em;letter-spacing:0px;}.elementor-kit-777781 a:hover{color:#666666;}.elementor-kit-777781 h1{color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:34px;font-weight:500;line-height:1.25em;letter-spacing:0px;}.elementor-kit-777781 h2{color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:24px;font-weight:500;line-height:1.4em;letter-spacing:0px;}.elementor-kit-777781 h3{color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:18px;font-weight:500;line-height:1.5em;letter-spacing:0px;}.elementor-kit-777781 h4{color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:16px;font-weight:500;line-height:1.6em;letter-spacing:0px;}.elementor-kit-777781 h5{color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:14px;font-weight:500;line-height:1.6em;letter-spacing:0px;}.elementor-kit-777781 h6{color:#111111;font-family:"IBM Plex Sans Arabic", sans-serif;font-size:12px;font-weight:500;line-height:1.5em;letter-spacing:0px;}.elementor-kit-777781 img{border-radius:0px 0px 0px 0px;}.elementor-kit-777781 label{color:#666666;}.elementor-kit-777781 input:not([type="button"]):not([type="submit"]),.elementor-kit-777781 textarea,.elementor-kit-777781 .elementor-field-textual{font-family:"IBM Plex Sans Arabic", sans-serif;font-size:16px;font-weight:400;line-height:1.6em;letter-spacing:0px;color:#111111;background-color:#FFFFFF;border-radius:0px 0px 0px 0px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1600px;}.e-con{--container-max-width:1600px;}.elementor-widget:not(:last-child){--kit-widget-spacing:24px;}.elementor-element{--widgets-spacing:24px 24px;--widgets-spacing-row:24px;--widgets-spacing-column:24px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-kit-777781{--e-global-typography-primary-font-size:24px;--e-global-typography-secondary-font-size:18px;--e-global-typography-text-font-size:16px;--e-global-typography-accent-font-size:14px;--e-global-typography-wdaxs-font-size:12px;--e-global-typography-wdasm-font-size:14px;--e-global-typography-wdabase-font-size:16px;--e-global-typography-wdamd-font-size:18px;--e-global-typography-wdalg-font-size:22px;--e-global-typography-wdaxl-font-size:30px;--e-global-typography-wda2xl-font-size:40px;font-size:16px;}.elementor-kit-777781 a{font-size:16px;}.elementor-kit-777781 h1{font-size:30px;}.elementor-kit-777781 h2{font-size:22px;}.elementor-kit-777781 h3{font-size:18px;}.elementor-kit-777781 h4{font-size:16px;}.elementor-kit-777781 h5{font-size:14px;}.elementor-kit-777781 h6{font-size:12px;}.elementor-kit-777781 button,.elementor-kit-777781 input[type="button"],.elementor-kit-777781 input[type="submit"],.elementor-kit-777781 .elementor-button{font-size:14px;}.elementor-kit-777781 input:not([type="button"]):not([type="submit"]),.elementor-kit-777781 textarea,.elementor-kit-777781 .elementor-field-textual{font-size:16px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-777781{--e-global-typography-primary-font-size:20px;--e-global-typography-secondary-font-size:17px;--e-global-typography-text-font-size:15px;--e-global-typography-accent-font-size:13px;--e-global-typography-wdaxs-font-size:12px;--e-global-typography-wdasm-font-size:13px;--e-global-typography-wdabase-font-size:15px;--e-global-typography-wdamd-font-size:17px;--e-global-typography-wdalg-font-size:20px;--e-global-typography-wdaxl-font-size:26px;--e-global-typography-wda2xl-font-size:34px;font-size:15px;}.elementor-kit-777781 a{font-size:15px;}.elementor-kit-777781 h1{font-size:26px;}.elementor-kit-777781 h2{font-size:20px;}.elementor-kit-777781 h3{font-size:17px;}.elementor-kit-777781 h4{font-size:15px;}.elementor-kit-777781 h5{font-size:13px;}.elementor-kit-777781 h6{font-size:12px;}.elementor-kit-777781 button,.elementor-kit-777781 input[type="button"],.elementor-kit-777781 input[type="submit"],.elementor-kit-777781 .elementor-button{font-size:14px;}.elementor-kit-777781 input:not([type="button"]):not([type="submit"]),.elementor-kit-777781 textarea,.elementor-kit-777781 .elementor-field-textual{font-size:16px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* ==========================================================================
   Wida design system v1: the part the Elementor kit cannot express.
   WDA-WEB-26-0001 | 2026-09-06

   Paste into Elementor > Site Settings > Custom CSS.

   Everything expressible as a kit field (colour, font, size, spacing,
   breakpoint) lives in the kit and is NOT repeated here. This file carries
   only mechanics: the hairline grid, the RTL invariants, and the scoping
   rules that stop a Latin-designed system degrading Arabic.

   Enforces domain/studio/rtl-invariants.md. Each block names its rule.
   ========================================================================== */

:root {
	/* Mirrors of the kit's global colours, for use in the mechanics below.
	   The kit remains the source of truth. If these drift from the kit, the
	   kit is right and this file is stale. */
	--wida-bg: #ffffff;
	--wida-fg: #111111;
	--wida-muted: #666666;
	--wida-line-neutral: #e5e5e5;
	--wida-line: #eadfc6;   /* the dividers are gold */
	--wida-surface: #f4f4f4;
	--wida-critical: #111111;

	/* Gold accent. LIGHT, and it does exactly two things: it draws the
	   dividers, and it highlights. It never carries text, never fills a
	   control, and never carries meaning on its own.
	     --wida-gold       1.32:1 on white. The hairline. Sits a touch stronger
	                       than the grey it replaces so the warmth registers at
	                       1px instead of reading as off-white.
	     --wida-gold-wash  1.13:1 on white. A highlighter mark behind text.
	                       #111 over it measures 16.77:1. */
	--wida-gold: #eadfc6;
	--wida-gold-wash: #f7f1e3;
	/* Founder decision 2026-09-07: the footer goes black and the mark on it
	   is gold. The hairline gold reads as cream on black, so the mark takes a
	   deeper gold that still sits in the same hue. Used for the mark on the
	   dark footer and nothing else. 7.9:1 on #111. */
	--wida-gold-mark: #c9a75c;

	/* Spacing scale. 4px base. Only these values exist. */
	--wida-1: 4px;
	--wida-2: 8px;
	--wida-3: 12px;
	--wida-4: 16px;
	--wida-6: 24px;
	--wida-8: 32px;
	--wida-12: 48px;
	--wida-16: 64px;
	--wida-24: 96px;
	--wida-32: 128px;

	/* Page edge. Logical, so it flips. */
	--wida-edge: clamp(16px, 4vw, 56px);

	/* Hairline. One value, used everywhere a division is drawn. */
	--wida-hairline: 1px solid var(--wida-line);
}

/* --------------------------------------------------------------------------
   1. Letter-spacing is a Latin-only property.

   Arabic is a connected script. Letter-spacing breaks the joins between
   letters, and the damage is invisible at desktop zoom to anyone who does
   not read Arabic. Elementor exposes a letter-spacing control on every text
   widget, so this has to be asserted rather than assumed.

   Design system section 1.3.
   -------------------------------------------------------------------------- */

html[lang^="ar"] body,
html[lang^="ar"] h1,
html[lang^="ar"] h2,
html[lang^="ar"] h3,
html[lang^="ar"] h4,
html[lang^="ar"] h5,
html[lang^="ar"] h6,
html[lang^="ar"] p,
html[lang^="ar"] li,
html[lang^="ar"] .elementor-widget-heading .elementor-heading-title,
html[lang^="ar"] .elementor-widget-text-editor,
html[lang^="ar"] .elementor-button,
html[lang^="ar"] .elementor-button .elementor-button-text,
html[lang^="ar"] .button,
html[lang^="ar"] button,
html[lang^="ar"] input[type="submit"] {
	letter-spacing: 0 !important;
}
/* !important is deliberate. Verified 2026-09-06 on the LibyanSpider build: a
   letter-spacing value set on a single heading widget is written by Elementor as
   `.elementor-<post> .elementor-element.elementor-element-<id> .elementor-heading-title`,
   which out-specifies the rule above and the widget kept its 2px. Without the
   flag this block is a wish, not an assertion. */

/* Buttons are listed explicitly because Elementor's Button widget inherits the
   Accent global typography, which on this kit is the Latin brand line and
   carries tracking. An Arabic button therefore arrives tracked even though the
   kit sets button letter-spacing to 0, and every template would otherwise have
   to pin custom typography one widget at a time. Verified 2026-09-06 on the
   single-product template's enquiry button. Woo's own `.button` and the bare
   form controls are included for the cart, checkout and account pages, which
   render through WooCommerce markup rather than through a widget. */

/* The exceptions, all guaranteed Latin or numeric. `.wida-code` carries the
   piece code (`4880`); `.wida-brand` carries a supplier brand where one is
   still shown, which by default it is not. Scoped to the element, never
   left as a bare class, per RTL invariant 10. */
span.wida-brand,
.wida-brand,
.wida-code bdi {
	letter-spacing: 0.08em !important;
	text-transform: uppercase;
}

/* The code sits quiet under the garment type. */
.wida-code {
	font-size: 11px;
	line-height: 1.5;
	color: var(--wida-muted);
}

/* Arabic has no uppercase. Never set text-transform on a heading style. */
html[lang^="ar"] h1,
html[lang^="ar"] h2,
html[lang^="ar"] h3,
html[lang^="ar"] h4 {
	text-transform: none;
}

/* --------------------------------------------------------------------------
   2. LTR islands inside Arabic prose.

   RTL invariants 2, 12, 14, 15, 17.

   Prices, SKUs, phone numbers, size labels and order references are Latin
   islands inside Arabic text. Unisolated they reorder, and an identifier
   whose parts are joined by a neutral (space, hyphen, colon, plus) fragments
   into several islands which then lay out right-to-left against each other:
   `+218 91 234 5678` paints as `5678 234 91 218 +`.

   Isolation fixes faults INSIDE an island. Keeping a whole token in ONE bdi
   is what fixes faults BETWEEN islands. Both are needed.

   Numbers are never reversed and are always Western: 1,250 not ١٬٢٥٠.
   -------------------------------------------------------------------------- */

bdi,
.wida-ltr,
.woocommerce-Price-amount,
.wida-sku,
.wida-tel,
.wida-size {
	direction: ltr;
	unicode-bidi: isolate;
	/* RTL invariant 17: an identifier must not break across a line in
	   either language. A wrapped date reads as a broken date. */
	white-space: nowrap;
}

/* A price and its currency symbol are ONE token, not two islands. */
.woocommerce-Price-amount .woocommerce-Price-currencySymbol {
	unicode-bidi: inherit;
	white-space: inherit;
}

/* --------------------------------------------------------------------------
   3. SVG inherits the document direction.

   RTL invariant 9. Text anchors flip and Latin labels reorder. Under
   direction:rtl, text-anchor:start is the RIGHT edge.
   -------------------------------------------------------------------------- */

svg {
	direction: ltr;
	unicode-bidi: isolate;
}

/* --------------------------------------------------------------------------
   4. Arabic needs roughly 25% more vertical space than Latin.

   RTL invariant 8. A container sized on an English draft clips silently in
   Arabic. Product names vary in length, so the card must grow.

   No fixed height with hidden overflow is permitted anywhere in the kit.
   -------------------------------------------------------------------------- */

.wida-card,
.wida-card__info,
ul.products li.product,
.elementor-widget-woocommerce-products li.product {
	min-block-size: auto;
	block-size: auto;
	overflow: visible;
}

/* --------------------------------------------------------------------------
   5. The hairline grid.

   Rules come from the grid gap, not from borders, which is what keeps them
   exactly 1px with no doubling at intersections and no orphan edge rule on
   the last row.

   Design system section 2.
   -------------------------------------------------------------------------- */

ul.products,
.wida-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1px;
	background: var(--wida-line);
	list-style: none;
	margin: 0;
	padding: 0;
}

ul.products > li.product,
.wida-grid > * {
	background: var(--wida-bg);
	margin: 0;
	width: auto;
}

/* The card's TYPE is inset; the photograph is not.

   The grid is deliberately full-bleed, so the images run to the edge of the
   screen and the 1px gap is the only rule. The text was inheriting that and
   sitting flush against the viewport edge as well: measured at 375px, the
   garment name's box ran to x=375 with zero padding anywhere in the chain,
   so the last glyph touched the bezel. Padding the card or the card link
   would inset the photograph too and lose the full bleed, so the inset goes
   on the text elements themselves. */
ul.products > li.product .wida-type,
ul.products > li.product .wida-code,
ul.products > li.product .price,
ul.products > li.product .woocommerce-loop-product__title {
	padding-inline: var(--wida-3);
}

ul.products > li.product .wida-type,
ul.products > li.product .woocommerce-loop-product__title {
	padding-block-start: var(--wida-3);
}

ul.products > li.product .price {
	padding-block-end: var(--wida-4);
}

@media (min-width: 768px) {
	ul.products,
	.wida-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1025px) {
	ul.products,
	.wida-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* Page edges are logical so one stylesheet serves both directions.
   The product grid runs edge to edge: the images are the page. */
.wida-edge {
	padding-inline: var(--wida-edge);
}

/* Section rule. The only division that is not a grid gap. */
.wida-rule {
	border: 0;
	border-block-start: var(--wida-hairline);
	margin-block: var(--wida-8);
}

/* --------------------------------------------------------------------------
   6. Imagery.

   Design system section 5. 2:3 matches the 1280x1920 source. Top-center
   crop keeps a face and a neckline.
   -------------------------------------------------------------------------- */

.wida-shot,
ul.products li.product a img,
.wida-gallery .shot {
	aspect-ratio: 2 / 3;
	object-fit: cover;
	object-position: top center;
	background: var(--wida-surface);
	inline-size: 100%;
	block-size: auto;
}

/* --------------------------------------------------------------------------
   7. Motion.

   Design system section 6. Opacity and transform only, and never against a
   stated preference.
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* --------------------------------------------------------------------------
   8. Validation and sold-out states are achromatic.

   Colour is never the only carrier of meaning (WCAG 1.4.1), and this system
   has no colour to spend. Weight, text and an inline-start rule carry it.
   --wida-critical is the single token to change if a functional red is ever
   approved.
   -------------------------------------------------------------------------- */

.wida-notice,
.woocommerce-error,
.woocommerce-info,
.woocommerce-message {
	border: 0;
	border-inline-start: 2px solid var(--wida-critical);
	padding-inline-start: var(--wida-4);
	padding-block: var(--wida-3);
	background: var(--wida-surface);
	color: var(--wida-fg);
}

.wida-soldout {
	color: var(--wida-muted);
	text-decoration: line-through;
}

/* --------------------------------------------------------------------------
   10. Gold: dividers and highlight. Nothing else.

   The accent is light on purpose. It complements black and white rather
   than competing with them, so it lives in the lines between things and in
   the wash behind a phrase.

   TWO uses, and the list is closed:
     1. Line dividers. The hairline grid, section rules, table rules.
        --wida-line IS the gold, so this needs no extra class.
     2. Highlight. A wash behind a word or a line, like a marker.

   NEVER:
     gold text                  it is 1.32:1, it cannot be read
     gold on a button or badge  a control needs a boundary, this has none
     a gold focus ring          focus is #111 at 18.9:1, see below
     gold carrying meaning      1.4.11: it is too light to be the only signal

   Decorative dividers and a non-meaningful highlight are exempt from the
   3:1 non-text requirement. A FORM FIELD is not: its border is a component
   boundary, so it uses --wida-muted at 5.7:1. Today's live site draws that
   border at 1.26:1, so this fixes a pre-existing failure rather than
   introducing one.
   -------------------------------------------------------------------------- */

/* Highlight. The one expressive use, and it stays behind the text. */
.wida-mark {
	background: var(--wida-gold-wash);
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
	padding: 0 0.15em;
}

/* A selected or active row, same wash. */
.wida-active {
	background: var(--wida-gold-wash);
}

/* An emphasis rule, heavier than the hairline but the same colour family. */
.wida-rule-gold {
	border: 0;
	border-block-start: 2px solid var(--wida-gold);
	margin-block: var(--wida-8);
}

/* Focus is #111, not gold. At 1.32:1 a gold ring is invisible on white and
   on the surface grey alike, and a focus ring that cannot be seen is not a
   focus ring. The offset keeps it legible over a photograph. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--wida-fg);
	outline-offset: 2px;
}

/* Form fields are components, so their boundary clears 3:1. */
input, select, textarea {
	border: 1px solid var(--wida-muted);
	border-radius: 0;
}

/* --------------------------------------------------------------------------
   11. The logo.

   One SVG per lockup, filled with currentColor, so black, white and gold are
   a colour change rather than three files. Proven identical: the supplied
   white lockup carried the same 43 paths as the black one.

   Aspect ratios are fixed and must not be altered:
     lockup    2.374 : 1
     mark      1.021 : 1
     wordmark  1.714 : 1

   The logotype is Latin only. There is no Arabic wordmark, so the mark alone
   is what carries the brand in Arabic-first contexts.
   -------------------------------------------------------------------------- */

.wida-logo {
	display: block;
	inline-size: auto;
	color: var(--wida-fg);
}

.wida-logo--lockup { block-size: clamp(34px, 4.5vw, 52px); }
.wida-logo--mark   { block-size: clamp(30px, 3.5vw, 44px); }

/* Minimum sizes. Below these the rays in the mark begin to fill in. */
.wida-logo--lockup { min-block-size: 28px; }
.wida-logo--mark   { min-block-size: 24px; }

/* Clear space: half the mark's height on every side, expressed logically. */
.wida-logo-frame { padding: calc(var(--wida-6) / 2); }

/* On photography or a dark ground the logo goes white, never grey. */
.wida-logo--invert { color: var(--wida-bg); }

/* The logo is black, or white on a dark ground. It is never gold: the
   accent is too light to hold a mark of this weight, and the mark is not
   where an accent belongs. */

/* --------------------------------------------------------------------------
   12. Navigation is a plain list, and the header is a two-row layout on phones.

   Elementor Pro's Nav Menu widget was removed on 2026-09-06 (founder
   decision). Measured: 27 KB of CSS and 24 KB of smartmenus JavaScript, on a
   launch-state shell of 546 KB against a 330 KB budget, to render four fixed
   links with no dropdown and no mega menu. `[wida_menu]` in wida-commerce
   renders the same WordPress menu through `wp_nav_menu`, so the links stay
   editable under Appearance > Menus; the layout moved here.

   No JavaScript anywhere in this section. The burger drawer the widget
   provided is replaced by putting the four links on their own row under the
   logo on phones, which reaches every destination in one tap instead of two
   and cannot break when a script fails to load.
   -------------------------------------------------------------------------- */

.wida-menu__list {
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
}

.wida-menu__list.is-row {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	column-gap: var(--wida-6);
	row-gap: var(--wida-1);
}

.wida-menu__list.is-column {
	flex-direction: column;
	row-gap: var(--wida-1);
}

.wida-menu__list > li {
	margin: 0;
}

.wida-menu a {
	display: inline-block;
	color: var(--wida-fg);
	font-size: 14px;
	line-height: 1.6;
	text-decoration: none;
	/* A transparent border rather than none, so the hover state adds colour
	   and never adds height. A menu that shifts on hover reads as a bug. */
	border-block-end: 1px solid transparent;
	/* The padding is the tap target, not decoration. Measured at 375px, the
	   four labels come to 26px of list height with no padding, which is a
	   22px target on the one row that carries every navigation on the site. */
	padding-block: var(--wida-2);
}

.wida-menu a:hover,
.wida-menu a:focus-visible {
	border-block-end-color: var(--wida-fg);
}

/* The current page is marked, and it is marked the same way hover is. The
   accent is too light to carry state on its own (1.32:1), and state carried
   by colour alone fails anyway. Section 10, and RTL invariant on meaning. */
.wida-menu .current-menu-item > a,
.wida-menu .current-menu-ancestor > a {
	border-block-end-color: var(--wida-fg);
}

/* Header. The container is `row-reverse`, so under `dir=rtl` the first child
   paints at the physical LEFT: logo, then nav, then the bag. The auto margin
   is written physically on purpose. `margin-inline-end` resolves against the
   document's RTL direction, not against the reversed flex axis, and would
   push the wrong way. This is the same class of trap as Elementor's Left and
   Right spacing controls, which are physical and do not flip (see the
   verification pass of 2026-09-06). */
.wida-header > .wida-header-logo {
	margin-right: auto;
}

.wida-header > .wida-header-nav .wida-menu__list.is-row {
	column-gap: var(--wida-6);
}

@media (max-width: 767px) {
	/* Two rows: logo and bag on the first, the four links on the second.
	   `flex-basis: 100%` is what forces the break; `order` alone would not,
	   because the container would still try to fit all three on one line and
	   at 375px the four Arabic labels plus the lockup do not fit. */
	.wida-header > .wida-header-nav {
		order: 3;
		flex-basis: 100%;
	}

	.wida-header > .wida-header-nav .wida-menu__list.is-row {
		justify-content: space-between;
		column-gap: var(--wida-3);
	}

	.wida-menu a {
		font-size: 13px;
		/* 13px at 1.6 is 21px of text; 12px each side takes the target to
		   45px, past the 44px that phone guidance asks for. The four labels
		   measure 156px inside a 343px row, so there is room to spend. */
		padding-block: var(--wida-3);
	}

	/* Footer links get a real target too. They are 14px at 1.6, so 6px each
	   side reaches 34px: short of 44, and deliberately, because raising them
	   further would space the eight categories out past the compact footer
	   the founder approved on 2026-09-06. Flagged rather than silently
	   traded away. */
	.wida-footnav .wida-menu a {
		padding-block: 6px;
	}
}

/* Footer list. 14px body, matching the founder's review of 2026-09-06. */
.wida-footnav .wida-menu a {
	padding-block: 2px;
}

/* --------------------------------------------------------------------------
   13. The WooCommerce pages with no Theme Builder template.

   Account and cart run on WooCommerce's own markup through Hello Elementor's
   bare page template. Reviewed on the live build 2026-09-06: the account
   dashboard was a browser-default bulleted list of underlined links with no
   page padding, which reads as a broken page rather than a quiet one.

   Checkout gets nothing here, and that is a finding rather than an omission:
   with no variations generated, nothing is purchasable, nothing can enter the
   cart, and WooCommerce redirects an empty cart away from checkout. The page
   is unreachable by any customer today. It is designed when the gateway and
   the variations land, against real content, not now against a guess.

   Everything below is scoped to a body class so it cannot leak into the
   Theme Builder templates, which own their own spacing.
   -------------------------------------------------------------------------- */

.woocommerce-account .site-main,
.woocommerce-cart .site-main,
.woocommerce-checkout .site-main {
	max-inline-size: 1100px;
	margin-inline: auto;
	padding-inline: var(--wida-6);
	padding-block: var(--wida-12) var(--wida-16);
}

.woocommerce-account .page-header .entry-title,
.woocommerce-cart .page-header .entry-title {
	margin-block-end: var(--wida-8);
	padding-block-end: var(--wida-4);
	border-block-end: 1px solid var(--wida-line);
}

/* Account navigation. Woo ships it as a bare <ul> and expects the theme to
   dress it; Hello Elementor does not, so without this it is bullet points. */
.woocommerce-MyAccount-navigation ul {
	margin: 0;
	padding: 0;
	list-style: none;
	border-block-start: 1px solid var(--wida-line);
}

.woocommerce-MyAccount-navigation li {
	margin: 0;
	border-block-end: 1px solid var(--wida-line);
}

.woocommerce-MyAccount-navigation a {
	display: block;
	padding-block: var(--wida-3);
	color: var(--wida-fg);
	font-size: 14px;
	text-decoration: none;
}

.woocommerce-MyAccount-navigation a:hover,
.woocommerce-MyAccount-navigation a:focus-visible {
	color: var(--wida-muted);
}

/* The current section is marked by weight and a rule, never by colour alone. */
.woocommerce-MyAccount-navigation-link.is-active > a {
	font-weight: 500;
}

.woocommerce-MyAccount-content {
	font-size: 15px;
	line-height: 1.9;
}

.woocommerce-MyAccount-content a {
	color: var(--wida-fg);
	text-underline-offset: 3px;
}

/* Hello Elementor's `.alignwide { margin-inline: -80px }`, which has no media
   query and no check that 80px of gutter exists.

   Measured on the cart at 375px: WooCommerce's cart block carries `alignwide`,
   the parent is 355px, and the block was pulled to left -80 / right +445. The
   document does not scroll, so 70px was simply clipped — and in Arabic the
   clipped side is where every line STARTS, so the empty-cart message lost its
   first word and read `مشترياتك فارغة` instead of `سلة مشترياتك فارغة`.

   Fixed globally rather than per page, because it is the theme's rule and it
   will do the same to any wide block on any page. Above 1200px the gutter
   genuinely exists and the breakout is left alone.

   Worth keeping: a negative margin that clips rather than scrolls is invisible
   to an overflow check. `document.scrollWidth` equalled the viewport the whole
   time. Compare each element's own rect against the viewport instead. */
@media (max-width: 1199px) {
	.alignwide {
		margin-inline: 0;
	}
}

/* WooCommerce's own buttons. The kit's button styling reaches Elementor
   widgets; it does not reach the buttons WooCommerce prints itself on the
   account, cart and checkout forms. Measured on the live login form at 375px:
   the primary action was `#e9e6ed` with `#515151` text, 34px tall, 3px
   corners, 700 weight. It clears text contrast and still reads as disabled,
   which is the worst state for the only control on the page. */
.woocommerce .button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce a.button,
.woocommerce-form-login__submit,
.woocommerce-Button {
	min-block-size: 44px;
	padding-inline: var(--wida-6);
	border: 0;
	border-radius: 0;
	background: var(--wida-fg);
	color: var(--wida-bg);
	font-size: 14px;
	font-weight: 500;
	line-height: 1.4;
}

.woocommerce .button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button:hover,
.woocommerce-form-login__submit:hover,
.woocommerce-Button:hover {
	background: var(--wida-muted);
	color: var(--wida-bg);
}

/* Woo's form wrappers arrive with 5px corners and a translucent border. The
   system is square and its rules are the gold hairline. */
.woocommerce form.login,
.woocommerce form.register,
.woocommerce form.checkout_coupon,
.woocommerce-form-login,
.woocommerce-form-register {
	border: 1px solid var(--wida-line);
	border-radius: 0;
	padding: var(--wida-6);
}

/* Empty cart. WooCommerce's block cart prints a 120px frowning face, masked
   in currentColor so it arrives in the brand's own black at full strength.
   It is the loudest object on the site and it appears at the one moment the
   customer has done nothing wrong. The line of type says the same thing. */
.wc-block-cart__empty-cart__title.with-empty-cart-icon::before {
	display: none;
}

.wc-block-cart__empty-cart__title {
	font-size: 18px;
	font-weight: 400;
}

/* The dotted separator is WooCommerce's default cart-page content, not a
   decision. Neutralised here so the page holds together before anyone edits
   the page content; delete the block itself at handover. */
.woocommerce-cart .wp-block-separator.is-style-dots {
	display: none;
}

/* The cross-sell strip under an empty cart is a product grid in WooCommerce's
   block markup, not the store's own card, so it needs its type aligning with
   the archive rather than restyling wholesale. */
.woocommerce-cart .wc-block-grid__product-title {
	font-size: 14px;
	font-weight: 400;
	color: var(--wida-fg);
}

.woocommerce-cart .wc-block-grid__product-price {
	font-size: 13px;
	color: var(--wida-muted);
}

/* --------------------------------------------------------------------------
   14. Sections that switch themselves on.

   Founder decision 2026-09-06: every part of the homepage and shop page with
   no data behind it is built and wired, but never reaches a customer until it
   has something to show, and appears on its own the moment the data lands.
   No placeholders, and no second build.

   wida-commerce publishes one body class per fact (`wida-has-featured`,
   `wida-has-sale`, `wida-has-brands`, `wida-has-collections`, `wida-has-prices`,
   `wida-has-colours`, `wida-has-stock`, `wida-has-sizes`). The plugin knows;
   this file hides. The layout stays in the Theme Builder where a designer can
   reach it, which is the same split the rest of this build uses.

   Measured 2026-09-06: 0 featured, 0 on sale, 0 of 157 priced, 0 brand terms,
   0 collection terms, no colour attribute, nothing purchasable. So on the day
   this ships, every rule below is hiding something.

   `display: none` and not `visibility` or opacity: an empty band must take no
   vertical space, or the page reads as broken rather than as short.
   -------------------------------------------------------------------------- */

/* The explore row falls back from collections to categories inside the
   shortcode, so it is hidden only when the store has neither. */
body:not(.wida-has-collections):not(.wida-has-categories) .wida-band--explore,
body:not(.wida-has-brands)      .wida-band--brands,
body:not(.wida-has-featured)    .wida-band--featured,
body:not(.wida-has-sale)        .wida-band--sale,
body:not(.wida-has-brands)      .wida-filter--brand,
body:not(.wida-has-collections) .wida-filter--collection,
body:not(.wida-has-colours)     .wida-filter--colour,
body:not(.wida-has-prices)      .wida-filter--price,
body:not(.wida-has-stock)       .wida-filter--stock,
body:not(.wida-has-sizes)       .wida-filter--size {
	display: none !important;
}

/* --------------------------------------------------------------------------
   15. The homepage bands, and the strips inside two of them.
   -------------------------------------------------------------------------- */

/* The hero degrades rather than breaks. Until an art-directed landscape frame
   exists — and on 2026-09-06 there was not one anywhere in the 387 images,
   every last one a portrait product shot — the hero is type on white, which
   is a deliberate composition rather than a gap. Adding a background image to
   the container in Elementor turns it into a photographic hero with no other
   change. */
.wida-hero {
	min-block-size: 46vh;
}

.wida-hero.wida-hero--photo {
	min-block-size: 78vh;
	color: var(--wida-bg);
}

.wida-band {
	padding-block: var(--wida-16);
}

.wida-band__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--wida-4);
	padding-block-end: var(--wida-4);
	border-block-end: 1px solid var(--wida-line);
}

/* Two classes, because the kit's own global link rule is
   `.elementor-kit-NNN a` (0,1,1) and beats a lone class (0,1,0): measured
   on the live homepage 2026-09-07, the link rendered at the global 16px, not
   13. Same standing rule as the brand plate below, one level up: a kit rule
   that has to beat ANOTHER kit rule that Elementor writes for us needs more
   specificity too. */
.wida-band__head .wida-band__more {
	color: var(--wida-fg);
	font-size: 13px;
	text-decoration: none;
	border-block-end: 1px solid transparent;
}

.wida-band__head .wida-band__more:hover,
.wida-band__head .wida-band__more:focus-visible {
	border-block-end-color: var(--wida-fg);
}

/* Strip cards. The proportions match the product card exactly (2:3, hairline,
   name under the image) so a collection reads as the same kind of object as a
   garment, which is what makes the homepage feel like one store rather than
   three widgets. */
.wida-strip__label {
	margin: 0 0 var(--wida-4);
	font-size: 13px;
	font-weight: 500;
}

.wida-strip__name {
	display: block;
	padding-block-start: var(--wida-3);
	font-size: 14px;
	font-weight: 400;
}

.wida-strip__link:hover .wida-strip__name,
.wida-strip__link:focus-visible .wida-strip__name {
	color: var(--wida-muted);
}

/* Brand cards: the NAME is the mark, until there are logo files.

   Founder decision 2026-09-07 — there may be no logo files for these
   suppliers, so the name does the job a logo would. That makes the card a
   typographic plate rather than a caption under an empty space: same
   proportion a logo would occupy, the name centred in it, one plate per
   brand so eighteen different labels read as one row of one kind of object.

   §12 said a brand card is a logo on the page's own ground and never in a
   box, because boxing real logos frames someone else's mark and makes a dozen
   different shapes look like a dozen mistakes. That reasoning does not apply
   to type set by us: every plate here is the same shape by construction, so
   the hairline is the store's own grid rather than a frame around a guest.

   It hands over cleanly. wida-commerce marks an imageless card `is-empty`, so
   the moment a real logo is uploaded the plate holds the logo and the name
   steps back to an accessible label. Nothing to unpick.
   -------------------------------------------------------------------------- */

/* Doubled class on purpose. wida-commerce.css sets `--wida-strip-card` on
   `.wida-strip`, which is the same specificity as `.wida-strip--brand`, and
   the plugin's stylesheet loads AFTER the kit's — so the single-class version
   of this rule lost silently and the plates came out 260px wide instead of
   180. Measured on the live shop page 2026-09-07.

   Standing rule for this build: a kit rule that has to beat a plugin rule
   needs more specificity than the plugin's, never the same. Load order is not
   ours to rely on. */
.wida-strip.wida-strip--brand {
	--wida-strip-card: 180px;
}

.wida-strip--brand .wida-strip__link {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 3 / 2;
	padding: var(--wida-3);
	border: 1px solid var(--wida-line);
	text-align: center;
}

.wida-strip--brand .wida-strip__link:hover,
.wida-strip--brand .wida-strip__link:focus-visible {
	border-color: var(--wida-muted);
}

/* No logo: the name is set as a wordmark. The supplier casing is kept rather
   than uppercased — `LUISAWANG` and `MISSLILUM` lose the word boundary that
   `LuisaWang` and `MissLilum` carry, and legibility beats the convention. */
.wida-strip--brand .wida-strip__media.is-empty + .wida-strip__name {
	padding-block-start: 0;
	font-size: 17px;
	font-weight: 500;
	line-height: 1.3;
	letter-spacing: 0.02em;
}

/* Every one of these names is Latin inside an RTL document, so each is
   isolated. Applied to all of them, not only to the ones seen to misbehave:
   a bidi fault depends on where the line breaks, so it appears on a
   customer's phone and not on the designer's screen. RTL invariants, and the
   same rule already carried by the piece code. */
.wida-strip--brand .wida-strip__name,
.wida-filter--brand .wida-filter__chip {
	direction: ltr;
	unicode-bidi: isolate;
}

/* A real logo, when one arrives: the plate holds it and the name stays for
   anyone who cannot see it. */
.wida-strip--brand .wida-strip__media:not(.is-empty) {
	display: flex;
	align-items: center;
	justify-content: center;
	inline-size: 100%;
	block-size: 100%;
}

.wida-strip--brand .wida-strip__media:not(.is-empty) + .wida-strip__name {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.wida-strip--brand .wida-strip__img {
	max-block-size: 100%;
	inline-size: auto;
	aspect-ratio: auto;
	object-fit: contain;
}

/* The archive banner's title sits in the scrimmed bottom band, not wherever
   the flex container happens to leave it. Asserted here because the container
   control did not hold it, and the whole point of the bottom gradient is that
   the type is inside it: measured 10.3:1 there against 2.95:1 at the top. */
.wida-archive-banner {
	align-items: flex-end !important;
}

/* A brand card is a logo on the page's own ground, never in a box. Boxing a
   logo puts a border around someone else's mark and makes twelve different
   shapes look like twelve different mistakes. */
.wida-strip--brand {
	--wida-strip-card: 180px;
}

.wida-strip--brand .wida-strip__img {
	aspect-ratio: 3 / 2;
	object-fit: contain;
	object-position: center;
}

.wida-strip--brand .wida-strip__name {
	text-align: center;
}

@media (max-width: 767px) {
	.wida-strip.wida-strip {
		--wida-strip-card: 62vw;
	}

	.wida-strip.wida-strip--brand {
		--wida-strip-card: 46vw;
	}

	.wida-band {
		padding-block: var(--wida-12);
	}

	/* The template sets 62vh on phones and this rule was overriding it at
	   78vh on every width, because a class pair on the element beats the
	   `--min-height` variable Elementor drives through `.e-con`. Measured at
	   375x812 on 2026-09-07: 633px, which is 78vh, not the 503 intended. */
	.wida-hero.wida-hero--photo {
		min-block-size: 62vh;
	}
}

/* --------------------------------------------------------------------------
   16. The shop filter bar.

   Chips are links, not a widget. Every combination is a real URL, so it can
   be shared on WhatsApp — which is how this store's customers pass things to
   each other — and the back button behaves. No JavaScript.

   Groups with no data render nothing at all from PHP, and section 14 hides
   them again from CSS. Two guards on purpose: the CSS one keeps the layout
   from reflowing before the markup catches up after a cache clear.
   -------------------------------------------------------------------------- */

.wida-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--wida-4) var(--wida-8);
	padding-block: var(--wida-4);
	border-block: 1px solid var(--wida-line);
}

.wida-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--wida-2) var(--wida-3);
}

.wida-filter__label {
	font-size: 12px;
	color: var(--wida-muted);
}

.wida-filter__list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wida-2);
	margin: 0;
	padding: 0;
	list-style: none;
}

.wida-filter__list > li {
	margin: 0;
}

/* The chip's own box IS the tap target: 36px here, and it sits inside a bar
   a customer will use with a thumb. */
.wida-filter__chip {
	display: inline-block;
	padding: 7px var(--wida-3);
	border: 1px solid var(--wida-line);
	color: var(--wida-fg);
	font-size: 13px;
	line-height: 1.4;
	text-decoration: none;
	background: transparent;
}

.wida-filter__chip:hover,
.wida-filter__chip:focus-visible {
	border-color: var(--wida-muted);
}

/* Selection is a filled ground, never the accent. The gold measures 1.32:1
   and cannot carry state on its own, and state carried by colour alone fails
   for anyone who cannot see the difference. `aria-pressed` carries it for
   assistive technology; the fill carries it for everyone else. */
.wida-filter__chip.is-on {
	background: var(--wida-fg);
	border-color: var(--wida-fg);
	color: var(--wida-bg);
}

.wida-filters__clear {
	margin-inline-start: auto;
	color: var(--wida-muted);
	font-size: 13px;
	text-decoration: none;
	border-block-end: 1px solid transparent;
}

.wida-filters__clear:hover,
.wida-filters__clear:focus-visible {
	color: var(--wida-fg);
	border-block-end-color: var(--wida-fg);
}

@media (max-width: 767px) {
	/* On a phone the bar becomes one scrolling row per group rather than a
	   wrapping block that can grow taller than the products it filters. */
	.wida-filters {
		flex-direction: column;
		align-items: stretch;
		gap: var(--wida-3);
	}

	.wida-filter {
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
	}

	.wida-filter__list {
		flex-wrap: nowrap;
	}

	.wida-filter__chip {
		white-space: nowrap;
	}
}

/* --------------------------------------------------------------------------
   9. Self-hosted IBM Plex Sans Arabic, 400 and 500 only.

   Replaces the four-weight third-party request. 95.7 KB against 191.6 KB
   measured 2026-09-06. Upload the four files to
   /wp-content/uploads/wida-fonts/ and keep these paths in step.

   Hierarchy is carried by size, spacing and case, not by weight.
   -------------------------------------------------------------------------- */

@font-face {
	font-family: "IBM Plex Sans Arabic";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("/wp-content/uploads/wida-fonts/plex-arabic-400-arabic.woff2") format("woff2");
	unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0898-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC;
}

@font-face {
	font-family: "IBM Plex Sans Arabic";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("/wp-content/uploads/wida-fonts/plex-arabic-400-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "IBM Plex Sans Arabic";
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url("/wp-content/uploads/wida-fonts/plex-arabic-500-arabic.woff2") format("woff2");
	unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0898-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC;
}

@font-face {
	font-family: "IBM Plex Sans Arabic";
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url("/wp-content/uploads/wida-fonts/plex-arabic-500-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* --------------------------------------------------------------------------
   17. The header stays at the top.

   Founder 2026-09-07: the menu must be reachable while scrolling. Sticky,
   not fixed, so it takes its own height in the flow and nothing has to be
   padded to sit under it. The admin bar offset is WordPress's own variable,
   so logged-in staff see it right too.
   -------------------------------------------------------------------------- */

.elementor-location-header {
	position: sticky;
	top: 0;
	z-index: 90;
}

body.admin-bar .elementor-location-header {
	top: var(--wp-admin--admin-bar--height, 32px);
}

/* --------------------------------------------------------------------------
   18. The footer is black, the type white, the mark gold and larger, and the
   categories run in two columns of four.

   Founder review 2026-09-07. The template still declares the white footer
   (gen.py is updated to match, but its redeploy is pending), so every rule
   here out-specifies the CSS Elementor writes from the template. Measured
   on the first import: Elementor's container background .elementor-kit-777781 is
   `.elementor-NNN .elementor-element.elementor-element-xxxx:not(.elementor-motion-effects-element-type-background)`,
   which is (0,4,0), so a four-class rule TIES and loses on load order. Five
   classes here, and the type rules carry `.elementor .wida-footer` for the
   same reason against the kit's own `.elementor-kit-NNN h2` and `p` rules.
   -------------------------------------------------------------------------- */

.elementor .elementor-element.wida-footer.e-con.e-parent {
	background-color: #111111;
	border-block-start-color: #2a2a2a;
	color: #ffffff;
}

.elementor .wida-footer .elementor-element.e-con.e-child {
	border-color: #2a2a2a;
}

.elementor .wida-footer .elementor-widget .elementor-heading-title,
.elementor .wida-footer .elementor-widget p,
.elementor .wida-footer .elementor-widget a,
.elementor .wida-footer .wida-menu a,
.elementor .wida-footer .elementor-widget.elementor-widget-text-editor {
	color: #ffffff;
}

/* The legal line steps back, as it did in grey on white. */
.elementor .wida-footer > .e-con.e-child:last-child .elementor-widget.elementor-widget-text-editor,
.elementor .wida-footer > .e-con.e-child:last-child .elementor-widget.elementor-widget-text-editor p {
	color: rgba(255, 255, 255, 0.7);
}

.elementor .wida-footer .wida-menu a {
	border-block-end-color: transparent;
}

.elementor .wida-footer .wida-menu a:hover,
.elementor .wida-footer .wida-menu a:focus-visible,
.elementor .wida-footer .wida-menu .current-menu-item > a {
	border-block-end-color: #ffffff;
}

.elementor .wida-footer .wida-foot-mark {
	color: var(--wida-gold-mark);
}

.elementor .wida-footer .wida-foot-mark svg {
	height: 72px;
}

/* Eight categories, four to a column. Column-major so the reading order is
   still the menu order: down the first column, then down the second. */
.elementor .wida-footer .wida-footnav .wida-menu__list.is-column {
	display: grid;
	grid-template-rows: repeat(4, auto);
	grid-auto-flow: column;
	column-gap: var(--wida-8);
	row-gap: var(--wida-1);
}

/* --------------------------------------------------------------------------
   19. The shop's categories are tabs.

   Founder 2026-09-07: the category .elementor-kit-777781 reads as tabs, the customer taps
   one and the gallery under it shows that category. The chips are still
   links to real URLs (section 16), so nothing about how they work changes;
   only how they read. The brand and size groups are off by default in
   wida-commerce 1.8.0 (`[wida_filters groups="..."]` brings them back).
   -------------------------------------------------------------------------- */

.wida-filters {
	border-block: 0;
	padding-block: 0;
}

.wida-filter--category {
	display: block;
	inline-size: 100%;
}

.wida-filter--category .wida-filter__label {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.wida-filter--category .wida-filter__list {
	gap: 0 var(--wida-6);
	border-block-end: 1px solid var(--wida-line);
}

.wida-filter--category .wida-filter__chip {
	border: 0;
	border-block-end: 2px solid transparent;
	margin-block-end: -1px;
	padding: var(--wida-3) 0;
	font-size: 14px;
	line-height: 1.4;
	background: transparent;
}

.wida-filter--category .wida-filter__chip:hover,
.wida-filter--category .wida-filter__chip:focus-visible {
	border-block-end-color: var(--wida-muted);
}

/* The open tab is the one with the rule under it; it is not filled. The
   underline is 2px black and carries the state without colour. */
.wida-filter--category .wida-filter__chip.is-on {
	background: transparent;
	color: var(--wida-fg);
	border-block-end-color: var(--wida-fg);
}

@media (max-width: 767px) {
	.wida-filter--category .wida-filter__list {
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
		gap: 0 var(--wida-4);
	}
}

/* --------------------------------------------------------------------------
   20. The product page: details at the start, photographs at the end.

   Founder 2026-09-07: "aligned to the right the product details, on the left
   the image gallery, like clothing stores". The single template stacks
   crumbs, gallery, summary and related as four full-width containers; this
   lays the middle two out as a grid on wide screens. In an RTL grid column 1
   is at the RIGHT, which is where the details go, so the DOM order (gallery
   before summary, right for phones) needs no change. The summary sticks
   under the sticky header while the photographs scroll.
   -------------------------------------------------------------------------- */

@media (min-width: 900px) {
	/* Scoped to product pages by body class, and this is not optional: the
	   homepage template is a "single-page" document and renders inside the
	   SAME `elementor-location-single` wrapper. The first import of this
	   section (2026-09-07) put the homepage hero in one column and the
	   category strip in the other. Elementor's location name says where a
	   template hangs, not what page it is. */
	body.single-product .elementor-location-single {
		display: grid;
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		column-gap: var(--wida-8);
		align-items: start;
		padding-inline: var(--wida-edge);
	}

	body.single-product .elementor-location-single > .wida-crumbs,
	body.single-product .elementor-location-single > .wida-related {
		grid-column: 1 / -1;
	}

	body.single-product .elementor .elementor-location-single > .e-con.wida-crumbs,
	body.single-product .elementor .elementor-location-single > .e-con.wida-single-summary {
		padding-inline: 0;
	}

	body.single-product .elementor .elementor-location-single > .e-con.wida-single-summary {
		grid-column: 1;
		grid-row: 2;
		position: sticky;
		top: calc(var(--wp-admin--admin-bar--height, 0px) + 88px);
		padding-block-start: 0;
	}

	body.single-product .elementor-location-single > .wida-single-gallery {
		grid-column: 2;
		grid-row: 2;
	}

	/* Two shots across inside the left column. Doubled .elementor-kit-777781 because the
	   plugin sheet sets the auto-fill grid at (0,1,0) and loads later. */
	body.single-product .wida-single-gallery .wida-gallery {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--wida-2);
	}
}

/* The summary's own typography. Type name is the title; the supplier line
   sits above it small; sizes are a row of swatches rather than a table. */
.wida-single-summary .wida-brand {
	font-size: 13px;
	color: var(--wida-muted);
}

.wida-single-summary .wida-code {
	font-size: 13px;
	color: var(--wida-muted);
}

.wida-single-summary .elementor-widget-woocommerce-product-additional-information h2 {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.wida-single-summary .shop_attributes,
.wida-single-summary .shop_attributes tbody,
.wida-single-summary .shop_attributes tr,
.wida-single-summary .shop_attributes th,
.wida-single-summary .shop_attributes td {
	display: block;
	padding: 0;
	border: 0;
	background: transparent;
	text-align: start;
}

.wida-single-summary .shop_attributes th {
	font-size: 12px;
	font-weight: 400;
	color: var(--wida-muted);
	margin-block-end: var(--wida-2);
}

.wida-single-summary .shop_attributes td p {
	margin: 0;
}

.wida-size {
	display: inline-block;
	min-inline-size: 44px;
	padding: var(--wida-2) var(--wida-3);
	margin-inline-end: var(--wida-2);
	margin-block-end: var(--wida-2);
	border: 1px solid var(--wida-line);
	font-size: 13px;
	line-height: 1.4;
	text-align: center;
	direction: ltr;
	unicode-bidi: isolate;
}

.wida-size-sep {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* --------------------------------------------------------------------------
   21. Centred titles, and the strips sized by how many cards show at once.

   Founder 2026-09-07: band titles and card names centred; the categories
   strip always shows seven cards across, the collections strip four, and a
   short collections strip sits in the middle rather than at the start.

   Card width comes from the strip viewport's own inline size (container
   query units), not from the page width: `100vw` includes the scrollbar and
   the band's edge padding, so a vw-based seventh would overflow by a card's
   worth of gap across the row. The item's 8px spacing is inside its box
   (border-box), so N cards fill the viewport exactly.

   Below 1025px seven cards would be under 110px each, too small to read a
   garment, so tablets show five and three; phones keep section 15's widths.
   -------------------------------------------------------------------------- */

.wida-band .wida-band__head {
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: var(--wida-2);
	text-align: center;
}

.wida-band .wida-band__head .elementor-widget-heading,
.wida-band .wida-band__head .elementor-heading-title {
	text-align: center;
}

.wida-strip__name {
	text-align: center;
}

.wida-strip__viewport {
	container-type: inline-size;
}

/* A strip too short to move (under three cards) is centred in its row. */
.wida-strip:not(.is-moving) .wida-strip__track {
	margin-inline: auto;
}

@media (min-width: 768px) {
	.wida-strip.wida-strip--category {
		--wida-strip-card: calc(100cqi / 5);
	}

	.wida-strip.wida-strip--collection {
		--wida-strip-card: calc(100cqi / 3);
	}
}

@media (min-width: 1025px) {
	.wida-strip.wida-strip--category {
		--wida-strip-card: calc(100cqi / 7);
	}

	.wida-strip.wida-strip--collection {
		--wida-strip-card: calc(100cqi / 4);
	}
}

@media (max-width: 767px) {
	.wida-strip.wida-strip--collection {
		--wida-strip-card: 80vw;
	}
}

/* --------------------------------------------------------------------------
   22. The shop page centred: banner title, brand label, category tabs.

   Founder 2026-09-07, after the homepage. He centred the tab row himself in
   the editor by setting the container's align-items, which shrinks the
   Shortcode widget to its content: the tabs moved to the middle and the
   hairline under them shrank to the tabs' own width. The widget is forced
   back to full width here and the LIST centres its items, so the rule spans
   the row and the tabs sit in the middle of it. Tab labels go up to 16px,
   the body size, from 14.
   -------------------------------------------------------------------------- */

.wida-archive-banner {
	justify-content: center !important;
}

.wida-archive-banner .wida-archive-title,
.wida-archive-banner .wida-archive-title .elementor-heading-title {
	text-align: center;
}

.wida-strip__label {
	text-align: center;
}

.elementor .wida-archive-page .elementor-widget.elementor-widget-shortcode {
	--container-widget-width: 100%;
	inline-size: 100%;
	max-inline-size: 100%;
}

.wida-filter--category .wida-filter__list {
	justify-content: center;
}

.wida-filter--category .wida-filter__chip {
	font-size: 16px;
}

/* The clear link is redundant beside the resting tab and sat alone at the
   far end of a centred row. */
.wida-filters .wida-filters__clear {
	display: none;
}

@media (max-width: 767px) {
	/* A scrolling row cannot start in the middle, or the first tabs are
	   unreachable off the start edge. */
	.wida-filter--category .wida-filter__list {
		justify-content: flex-start;
	}

	.wida-filter--category .wida-filter__chip {
		font-size: 15px;
	}
}

/* --------------------------------------------------------------------------
   23. The empty cart, reviewed for the first time (2026-09-07).

   WooCommerce's block draws a black sad-face icon over the empty-cart title
   and a rounded "new in store" grid with "read more" buttons. The section 13
   rule for the icon was (0,2,1) and tied the block's own rule, which loads
   later on the cart page because block styles are kept there. Three classes
   now. The grid is kept, because it is the only way back into the products
   from an empty cart, and restyled onto the hairline system; the buttons go,
   since the card itself is the link.
   -------------------------------------------------------------------------- */

.woocommerce-cart .wc-block-cart__empty-cart__title.with-empty-cart-icon::before {
	display: none;
}

.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-separator {
	display: none;
}

.woocommerce-cart .wp-block-woocommerce-empty-cart-block > .wp-block-heading {
	font-size: 20px;
	font-weight: 500;
	margin-block: var(--wida-8) var(--wida-6);
}

.woocommerce-cart .wc-block-grid__products {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1px;
	margin: 0;
	padding: 0;
	background: var(--wida-line);
}

@media (min-width: 768px) {
	.woocommerce-cart .wc-block-grid__products {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* The block sets each product to `width: 25%` for its four columns; inside a
   grid cell that made every card a quarter of its cell, 70px wide, with the
   gold ground showing through the rest. Rendered and caught 2026-09-07. */
.woocommerce-cart .wc-block-grid .wc-block-grid__products .wc-block-grid__product {
	inline-size: 100%;
	max-inline-size: none;
}

.woocommerce-cart .wc-block-grid__product {
	flex: none;
	max-width: none;
	margin: 0;
	padding: 0 0 var(--wida-4);
	border: 0;
	background: var(--wida-bg);
	text-align: start;
}

.woocommerce-cart .wc-block-grid__product-image,
.woocommerce-cart .wc-block-grid__product-image img {
	border-radius: 0;
	margin: 0;
}

.woocommerce-cart .wc-block-grid__product-title {
	font-size: 16px;
	font-weight: 500;
	text-decoration: none;
	padding: var(--wida-3) var(--wida-3) 0;
	text-align: start;
}

.woocommerce-cart .wc-block-grid__product-price {
	font-size: 14px;
	padding-inline: var(--wida-3);
	text-align: start;
}

.woocommerce-cart .wc-block-grid__product-add-to-cart {
	display: none;
}

/* --------------------------------------------------------------------------
   24. Header tools: search, account, bag (wida-commerce 1.9.0, [wida_tools]).

   Founder brief 2026-09-07 from a four-icon reference. The search field is a
   `<details>` element: no JavaScript, and it opens as a full-width bar under
   the sticky header rather than pushing the logo about.
   -------------------------------------------------------------------------- */

.wida-visually-hidden {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.wida-tools {
	display: flex;
	align-items: center;
	gap: var(--wida-2);
}

.wida-tools__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: 44px;
	block-size: 44px;
	color: var(--wida-fg);
	cursor: pointer;
	list-style: none;
}

.wida-tools__btn::-webkit-details-marker {
	display: none;
}

.wida-tools__btn svg {
	inline-size: 22px;
	block-size: 22px;
	display: block;
}

.wida-tools__btn:hover svg,
.wida-tools__btn:focus-visible svg {
	stroke-width: 1.8;
}

.wida-search {
	position: static;
}

.elementor .e-con.wida-header {
	position: relative;
}

.wida-search__form {
	position: absolute;
	inset-inline: 0;
	top: 100%;
	display: flex;
	gap: var(--wida-2);
	padding: var(--wida-3) var(--wida-edge);
	background: var(--wida-bg);
	border-block-end: 1px solid var(--wida-line);
	z-index: 5;
}

.wida-search__input {
	flex: 1;
	min-inline-size: 0;
	padding: 10px var(--wida-3);
	border: 1px solid var(--wida-line);
	background: var(--wida-bg);
	font: inherit;
	font-size: 16px;
}

.wida-search__go {
	padding: 10px var(--wida-4);
	border: 0;
	background: var(--wida-fg);
	color: var(--wida-bg);
	font: inherit;
	font-size: 14px;
	cursor: pointer;
}

/* --------------------------------------------------------------------------
   25. Newsletter band ([wida_newsletter]).

   Reference: centred line, hairline field and button side by side, legal
   line under. Stacks on phones.
   -------------------------------------------------------------------------- */

.wida-newsletter {
	max-inline-size: 600px;
	margin-inline: auto;
	padding-block: var(--wida-16);
	text-align: center;
}

.wida-newsletter__title {
	margin: 0 0 var(--wida-2);
	font-size: 20px;
	font-weight: 500;
}

.wida-newsletter__text {
	margin: 0 0 var(--wida-6);
	color: var(--wida-muted);
	font-size: 14px;
}

.wida-newsletter__notice {
	margin: 0 0 var(--wida-4);
	font-size: 14px;
}

.wida-newsletter__form {
	display: flex;
	gap: var(--wida-2);
}

.wida-newsletter__input {
	flex: 1;
	min-inline-size: 0;
	padding: 14px var(--wida-4);
	border: 1px solid var(--wida-fg);
	background: var(--wida-bg);
	font: inherit;
	font-size: 16px;
}

.wida-newsletter__button {
	padding: 14px var(--wida-6);
	border: 1px solid var(--wida-fg);
	background: var(--wida-bg);
	color: var(--wida-fg);
	font: inherit;
	font-size: 14px;
	font-weight: 500;
	cursor: pointer;
}

.wida-newsletter__button:hover,
.wida-newsletter__button:focus-visible {
	background: var(--wida-fg);
	color: var(--wida-bg);
}

.wida-newsletter__legal {
	margin: var(--wida-3) 0 0;
	font-size: 12px;
	color: var(--wida-muted);
}

.wida-newsletter__legal a {
	color: var(--wida-fg);
}

.wida-hp {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
}

@media (max-width: 767px) {
	.wida-newsletter {
		padding-block: var(--wida-12);
	}

	.wida-newsletter__form {
		flex-direction: column;
	}
}

/* --------------------------------------------------------------------------
   26. The type hierarchy, founder-approved 2026-09-07.

   One scale, desktop / phone. Headings 500, everything else 400. Template
   widgets carry their own custom sizes, so every rule here that touches a
   widget is written at (0,5,0) to beat the (0,4,0) Elementor writes per
   element; the generators carry the same numbers for the next redeploy.

     hero line            44 / 28
     page titles          34 / 26   (global H1, unchanged)
     section titles       24 / 20   (bands, brand label, cart heading)
     section links        14
     category tabs        16 / 15   (section 22, unchanged)
     strip card names     15 / 14
     product card name    16 / 15   (was the global H2 at 24 / 20)
     product card code    12, muted
     product card price   14
     product page price   18
     buttons, nav         14        (unchanged)
     footer headings      14
   -------------------------------------------------------------------------- */

.elementor .e-con.wida-hero .wida-hero__line .elementor-heading-title {
	font-size: 44px;
	line-height: 1.35;
}

.elementor .e-con.wida-band .wida-band__head .elementor-heading-title,
.wida-strip__label,
.woocommerce-cart .wp-block-woocommerce-empty-cart-block > .wp-block-heading {
	font-size: 24px;
	font-weight: 500;
	line-height: 1.4;
}

.wida-band__head .wida-band__more {
	font-size: 14px;
}

.wida-strip__name {
	font-size: 15px;
}

ul.products > li.product .wida-type,
ul.products > li.product .woocommerce-loop-product__title {
	font-size: 16px;
	font-weight: 500;
	line-height: 1.5;
}

ul.products > li.product .wida-code {
	font-size: 12px;
	color: var(--wida-muted);
}

ul.products > li.product .price,
ul.products > li.product .price .wida-price {
	font-size: 14px;
}

.wida-single-summary .wida-price {
	font-size: 18px;
}

.elementor .e-con.wida-footer .elementor-widget-heading .elementor-heading-title {
	font-size: 14px;
}

@media (max-width: 767px) {
	.elementor .e-con.wida-hero .wida-hero__line .elementor-heading-title {
		font-size: 28px;
	}

	.elementor .e-con.wida-band .wida-band__head .elementor-heading-title,
	.wida-strip__label,
	.woocommerce-cart .wp-block-woocommerce-empty-cart-block > .wp-block-heading {
		font-size: 20px;
	}

	.wida-strip__name {
		font-size: 14px;
	}

	ul.products > li.product .wida-type,
	ul.products > li.product .woocommerce-loop-product__title {
		font-size: 15px;
	}
}

/* --------------------------------------------------------------------------
   27. The purchase path on the product page (2026-09-08).

   Founder: buying happens on the site; payments and shipping are Mohamed's
   setup. So the page carries BOTH paths and wida-commerce 1.11.0 says which
   one shows, per product, through a body class: `wida-purchasable` when the
   piece has a price, is purchasable and in stock, `wida-enquiry-only`
   otherwise. The Add To Cart widget (Elementor Pro, class `wida-add-to-cart`)
   is WooCommerce's own variations form: one select per attribute, the chosen
   variation's price and availability, a quantity field and the button. No
   JavaScript of ours; WooCommerce's own handles the variation swap.

   Section 13 recorded that checkout could not be designed "against a guess";
   the first priced product landed today, so this is written against it
   (product 4878, eight variations, 450 LYD).
   -------------------------------------------------------------------------- */

/* The swap. `display: none`, so the hidden path takes no space. */
body.single-product.wida-purchasable .wida-single-summary .elementor-widget-button,
body.single-product.wida-purchasable .wida-single-summary .elementor-widget-woocommerce-product-additional-information,
body.single-product:not(.wida-purchasable) .wida-single-summary .elementor-widget-woocommerce-product-add-to-cart {
	display: none;
}

/* The price shortcode above the form prints the range for a variable
   product; the form prints the chosen variation's price. One price at a
   time: the form's wins once it can show one. */
body.single-product.wida-purchasable .wida-single-summary .wida-price {
	display: none;
}

/* The variations table as a stack of labelled controls, on the same grid as
   the swatches it replaces (section 20). Doubled .elementor-kit-777781 against Woo's own
   `table.variations` rules where they still load. */
.wida-single-summary .variations_form table.variations,
.wida-single-summary .variations_form table.variations tbody,
.wida-single-summary .variations_form table.variations tr,
.wida-single-summary .variations_form table.variations th,
.wida-single-summary .variations_form table.variations td {
	display: block;
	padding: 0;
	border: 0;
	background: transparent;
	text-align: start;
}

.wida-single-summary .variations_form table.variations tr + tr {
	margin-block-start: var(--wida-4);
}

.wida-single-summary .variations_form table.variations th.label {
	font-size: 12px;
	font-weight: 400;
	color: var(--wida-muted);
	margin-block-end: var(--wida-2);
}

.wida-single-summary .variations_form table.variations select {
	inline-size: 100%;
	max-inline-size: 320px;
	min-block-size: 44px;
	padding: var(--wida-2) var(--wida-3);
	border: 1px solid var(--wida-line);
	border-radius: 0;
	background: var(--wida-bg);
	color: var(--wida-fg);
	font: inherit;
	font-size: 14px;
}

.wida-single-summary .variations_form table.variations select:focus-visible {
	outline: 2px solid var(--wida-fg);
	outline-offset: 2px;
}

/* "Clear" is a text link WooCommerce shows once a choice exists. Muted,
   small, never a button. */
.wida-single-summary .variations_form .reset_variations {
	display: inline-block;
	margin-block-start: var(--wida-2);
	font-size: 12px;
	color: var(--wida-muted);
	text-decoration: underline;
}

/* The chosen variation: price and availability, then the cart row. */
.wida-single-summary .single_variation_wrap {
	margin-block-start: var(--wida-4);
}

.wida-single-summary .woocommerce-variation-price .price,
.wida-single-summary .woocommerce-variation-price .amount {
	font-size: 18px;
	color: var(--wida-fg);
}

.wida-single-summary .woocommerce-variation-price del .amount {
	font-size: 14px;
	color: var(--wida-muted);
}

.wida-single-summary .woocommerce-variation-availability {
	font-size: 13px;
	color: var(--wida-muted);
	margin-block-start: var(--wida-1);
}

.wida-single-summary .woocommerce-variation-availability .out-of-stock {
	color: var(--wida-critical);
}

.wida-single-summary .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wida-2);
	align-items: stretch;
	margin-block-start: var(--wida-4);
}

.wida-single-summary .woocommerce-variation-add-to-cart .quantity {
	display: flex;
}

.wida-single-summary .woocommerce-variation-add-to-cart .quantity input.qty {
	inline-size: 72px;
	min-block-size: 48px;
	padding: 0 var(--wida-2);
	border: 1px solid var(--wida-line);
	border-radius: 0;
	background: var(--wida-bg);
	color: var(--wida-fg);
	font: inherit;
	font-size: 14px;
	text-align: center;
	direction: ltr;
}

/* The button: the same object as every other button in the store. Black,
   white type, no radius, no tracking (Arabic), 48px tall so it is a target
   on a phone. Three classes against Woo's `.button` rules. */
.wida-single-summary .woocommerce-variation-add-to-cart .single_add_to_cart_button.button.alt,
.wida-single-summary .woocommerce-variation-add-to-cart .single_add_to_cart_button.button {
	flex: 1 1 200px;
	min-block-size: 48px;
	padding: var(--wida-3) var(--wida-6);
	border: 1px solid var(--wida-fg);
	border-radius: 0;
	background: var(--wida-fg);
	color: var(--wida-bg);
	font: inherit;
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0;
	text-transform: none;
	line-height: 1.2;
	cursor: pointer;
}

.wida-single-summary .woocommerce-variation-add-to-cart .single_add_to_cart_button.button:hover,
.wida-single-summary .woocommerce-variation-add-to-cart .single_add_to_cart_button.button:focus-visible {
	background: var(--wida-bg);
	color: var(--wida-fg);
}

.wida-single-summary .woocommerce-variation-add-to-cart .single_add_to_cart_button.button:focus-visible {
	outline: 2px solid var(--wida-fg);
	outline-offset: 2px;
}

/* WooCommerce disables the button until every attribute is chosen. Keep it
   visibly a button, quieter, never invisible. */
.wida-single-summary .woocommerce-variation-add-to-cart .single_add_to_cart_button.button.disabled,
.wida-single-summary .woocommerce-variation-add-to-cart .single_add_to_cart_button.button:disabled {
	opacity: 0.4;
	cursor: not-allowed;
}

/* The "added to cart" notice WooCommerce prints above the form, on the
   hairline system rather than its green bar. */
.wida-single-summary .woocommerce-message,
.wida-single-summary .woocommerce-error {
	padding: var(--wida-3) var(--wida-4);
	border: 1px solid var(--wida-line);
	border-inline-start-width: 3px;
	background: var(--wida-gold-wash);
	font-size: 13px;
}

.wida-single-summary .woocommerce-error {
	border-color: var(--wida-critical);
	background: var(--wida-bg);
}

.wida-single-summary .woocommerce-message .button {
	margin-inline-start: var(--wida-3);
	font-size: 13px;
	text-decoration: underline;
}

@media (max-width: 767px) {
	.wida-single-summary .variations_form table.variations select {
		max-inline-size: none;
	}
}

/* --------------------------------------------------------------------------
   28. Buttons WooCommerce's BLOCKS print, and the bag count (2026-09-08).

   Founder found the cart's "proceed to checkout" as black underlined text on
   a dark grey slab. Measured: the block button is `a.wc-block-components-button
   .wp-element-button` with WordPress's default #32373c fill, and the kit's
   global link colour and underline win on the anchor because nothing here
   addressed block buttons at all. Section 13 covers `.woocommerce .button`,
   which is the classic markup; the cart, checkout and mini-cart are blocks
   and carry neither `.woocommerce` nor `.button`. Same object as every other
   button in the store: black, white type, no radius, no underline, 48px.
   -------------------------------------------------------------------------- */

.wc-block-components-button.wp-element-button,
.wc-block-cart__submit-button.wp-element-button,
.wc-block-components-checkout-place-order-button.wp-element-button,
.wc-block-mini-cart__footer-actions .wc-block-components-button,
.woocommerce-cart .wp-block-button__link,
.woocommerce-checkout .wp-block-button__link,
.woocommerce-account .wp-block-button__link,
.woocommerce-cart a.wp-element-button,
.woocommerce-checkout a.wp-element-button,
.woocommerce-account a.wp-element-button,
.woocommerce-cart button.wp-element-button,
.woocommerce-checkout button.wp-element-button,
.woocommerce-account button.wp-element-button {
	min-block-size: 48px;
	padding: var(--wida-3) var(--wida-6);
	border: 1px solid var(--wida-fg);
	border-radius: 0;
	background: var(--wida-fg);
	color: var(--wida-bg);
	font: inherit;
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0;
	text-transform: none;
	text-decoration: none;
	line-height: 1.2;
	box-shadow: none;
}

.wc-block-components-button.wp-element-button:hover,
.wc-block-components-button.wp-element-button:focus-visible,
.woocommerce-cart .wp-block-button__link:hover,
.woocommerce-checkout .wp-block-button__link:hover,
.woocommerce-account .wp-block-button__link:hover,
.woocommerce-cart a.wp-element-button:hover,
.woocommerce-checkout a.wp-element-button:hover,
.woocommerce-account a.wp-element-button:hover {
	background: var(--wida-bg);
	color: var(--wida-fg);
	text-decoration: none;
}

.wc-block-components-button.wp-element-button:focus-visible {
	outline: 2px solid var(--wida-fg);
	outline-offset: 2px;
}

/* The block button's inner text span inherits the anchor colour; restate
   it so the kit's link colour cannot reach it through the anchor. */
.wc-block-components-button.wp-element-button .wc-block-components-button__text {
	color: inherit;
	text-decoration: none;
}

.wc-block-components-button.wp-element-button:disabled,
.wc-block-components-button.wp-element-button[aria-disabled="true"] {
	opacity: 0.4;
}

/* The bag count (wida-commerce 1.11.1). A small black disc on the icon's
   corner; the span is empty when the bag is empty and takes no space. */
.wida-tools__btn.wida-cart-link {
	position: relative;
}

.wida-cart-count {
	position: absolute;
	top: 4px;
	inset-inline-end: 2px;
	min-inline-size: 16px;
	block-size: 16px;
	padding: 0 4px;
	border-radius: 8px;
	background: var(--wida-fg);
	color: var(--wida-bg);
	font-size: 10px;
	font-weight: 500;
	line-height: 16px;
	text-align: center;
	direction: ltr;
	unicode-bidi: isolate;
	pointer-events: none;
}

.wida-cart-count:empty {
	display: none;
}

/* On the black footer or any dark ground the disc inverts. */
.wida-footer .wida-cart-count {
	background: var(--wida-bg);
	color: var(--wida-fg);
}

/* --------------------------------------------------------------------------
   29. The EVO Pay option on the block checkout (2026-09-08).

   The gateway's block integration passes title, description and `supports`
   and nothing else: no icon key, so WooCommerce's `woocommerce_gateway_icon`
   never reaches the block checkout and the React label prints the title
   alone. The logo therefore rides on the label as generated content, from
   the file wida-commerce 1.11.3 ships. CSS only, nothing to re-render.
   Selector is the input id WooCommerce derives from the gateway id.
   -------------------------------------------------------------------------- */

.wc-block-components-radio-control__option[for="radio-control-wc-payment-method-options-pgfep"] .wc-block-components-radio-control__label {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wida-3);
}

.wc-block-components-radio-control__option[for="radio-control-wc-payment-method-options-pgfep"] .wc-block-components-radio-control__label::after {
	content: "";
	flex: 0 0 auto;
	inline-size: 40px;
	block-size: 24px;
	background: url("/wp-content/plugins/wida-commerce/assets/img/evo-pay.svg") center / contain no-repeat;
}

.wc-block-components-radio-control__option[for="radio-control-wc-payment-method-options-pgfep"] {
	border-color: var(--wida-line);
}

/* --------------------------------------------------------------------------
   30. Founder notes of 2026-09-08 evening, after the first purchases.

   a. The grid ground is white. Section 5 drew the hairlines by showing the
      grid's gold background through a 1px gap, which paints every EMPTY cell
      gold too: a sale page with one product was one photograph beside a
      wall of cream. Each card now draws its own hairline as an outline that
      sits in the gap, so lines still meet at exactly 1px and empty cells
      are the page.
   b. The sale flash is a gold circle reading SALE in black
      (wida-commerce 1.13.0 supplies the word).
   c. The open category tab is medium weight as well as underlined.
   d. The add-to-cart bubble under the bag icon (1.13.0, [wida_tools]).
   e. The newsletter overlay (1.13.0, `<dialog>`).
   -------------------------------------------------------------------------- */

/* a. */
ul.products,
.wida-grid {
	background: var(--wida-bg);
}

ul.products > li.product,
.wida-grid > * {
	outline: 1px solid var(--wida-line);
	outline-offset: 0;
	position: relative;
}

/* b. */
ul.products > li.product .onsale,
.wida-sale {
	position: absolute;
	top: var(--wida-3);
	inset-inline-start: var(--wida-3);
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: 48px;
	block-size: 48px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--wida-gold-mark);
	color: var(--wida-fg);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.08em;
	line-height: 1;
	text-transform: uppercase;
	direction: ltr;
	unicode-bidi: isolate;
	min-inline-size: 0;
	min-block-size: 0;
}

/* c. */
.wida-filter--category .wida-filter__chip.is-on {
	font-weight: 500;
}

/* d. The bubble. Anchored under the bag; a sheet from the bottom on phones.
   Anchored at the tools' START edge on purpose: the tools sit at the start
   of the header (the right, in RTL), so a bubble hung from their end edge
   grows outward past the viewport. Measured 2026-09-08: 360px wide at
   x=1701 on a 1568px frame, the name and the checkout button cut off. */
.wida-tools {
	position: relative;
}

.wida-bubble {
	position: absolute;
	top: calc(100% + var(--wida-2));
	inset-inline-start: 0;
	z-index: 60;
	inline-size: min(360px, calc(100vw - 2 * var(--wida-4)));
	background: var(--wida-bg);
	border: 1px solid var(--wida-line);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.12);
	text-align: start;
}

.wida-bubble:not([open]) {
	display: none;
}

.wida-bubble__close {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wida-3);
	padding: var(--wida-3) var(--wida-4);
	border-block-end: 1px solid var(--wida-line);
	cursor: pointer;
	list-style: none;
	font-size: 14px;
	font-weight: 500;
}

.wida-bubble__close::-webkit-details-marker {
	display: none;
}

.wida-bubble__x {
	font-size: 14px;
	color: var(--wida-muted);
}

.wida-bubble__body {
	padding: var(--wida-4);
}

.wida-bubble__item {
	display: flex;
	gap: var(--wida-3);
	align-items: flex-start;
}

.wida-bubble__img {
	inline-size: 64px;
	block-size: 96px;
	object-fit: cover;
	object-position: top center;
	flex: 0 0 64px;
	background: var(--wida-surface);
}

.wida-bubble__text p {
	margin: 0 0 var(--wida-1);
}

.wida-bubble__name {
	font-size: 14px;
	font-weight: 500;
}

.wida-bubble__meta {
	font-size: 12px;
	color: var(--wida-muted);
}

.wida-bubble__price {
	font-size: 14px;
}

.wida-bubble__total {
	display: flex;
	justify-content: space-between;
	margin: var(--wida-4) 0 var(--wida-3);
	padding-block-start: var(--wida-3);
	border-block-start: 1px solid var(--wida-line);
	font-size: 13px;
	color: var(--wida-muted);
}

.wida-bubble__actions {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--wida-2);
	margin: 0;
}

.wida-bubble__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-block-size: 44px;
	padding: var(--wida-2) var(--wida-3);
	border: 1px solid var(--wida-fg);
	color: var(--wida-fg);
	font-size: 14px;
	font-weight: 500;
	text-decoration: none;
}

.wida-bubble__btn--primary {
	background: var(--wida-fg);
	color: var(--wida-bg);
}

.wida-bubble__btn:hover,
.wida-bubble__btn:focus-visible {
	background: var(--wida-gold-wash);
	color: var(--wida-fg);
}

.wida-bubble__continue {
	margin: var(--wida-3) 0 0;
	font-size: 12px;
	color: var(--wida-muted);
	text-align: center;
}

@media (max-width: 767px) {
	.wida-bubble {
		position: fixed;
		top: auto;
		bottom: 0;
		inset-inline: 0;
		inline-size: auto;
		border-inline: 0;
		border-block-end: 0;
		box-shadow: 0 -12px 32px rgba(0, 0, 0, 0.12);
	}
}

/* e. The newsletter overlay. */
.wida-newsletter-pop {
	inline-size: min(480px, calc(100vw - 2 * var(--wida-4)));
	padding: var(--wida-6);
	border: 1px solid var(--wida-line);
	background: var(--wida-bg);
	color: var(--wida-fg);
	text-align: center;
}

.wida-newsletter-pop::backdrop {
	background: rgba(17, 17, 17, 0.5);
}

.wida-newsletter-pop__close {
	display: flex;
	justify-content: flex-end;
	margin: 0 0 var(--wida-2);
}

.wida-newsletter-pop__close button {
	inline-size: 44px;
	block-size: 44px;
	border: 0;
	background: transparent;
	color: var(--wida-muted);
	font: inherit;
	cursor: pointer;
}

.wida-newsletter-pop .wida-newsletter {
	padding: 0;
	border: 0;
}

/* --------------------------------------------------------------------------
   31. The newsletter inside the black footer (2026-09-08).

   The founder placed `[wida_newsletter]` inside the footer container rather
   than above it, so the band inherits the footer's black ground and section
   25's black-on-white rules made the heading vanish (black on black) and the
   form sit small at the start edge. On the dark ground the band is centred,
   the type is white, the headline is the promise (1.13.1 makes it the
   title), and the controls invert: white field, white button, black type.
   Five classes against the footer's own rules and Elementor's.
   -------------------------------------------------------------------------- */

.elementor .e-con.wida-footer .wida-newsletter {
	max-inline-size: 640px;
	margin-inline: auto;
	padding: var(--wida-8) 0 var(--wida-12);
	border: 0;
	text-align: center;
	color: var(--wida-bg);
}

.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__title {
	margin: 0 0 var(--wida-2);
	color: var(--wida-bg);
	font-size: 24px;
	font-weight: 500;
	line-height: 1.4;
}

.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__text {
	margin: 0 0 var(--wida-6);
	color: rgba(255, 255, 255, 0.72);
	font-size: 15px;
}

.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__form {
	display: flex;
	justify-content: center;
	gap: var(--wida-2);
	max-inline-size: 520px;
	margin-inline: auto;
}

.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__input {
	flex: 1 1 auto;
	min-inline-size: 0;
	min-block-size: 48px;
	padding: var(--wida-2) var(--wida-4);
	border: 1px solid var(--wida-bg);
	border-radius: 0;
	background: var(--wida-bg);
	color: var(--wida-fg);
	font: inherit;
	font-size: 15px;
}

.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__input::placeholder {
	color: var(--wida-muted);
}

.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__button {
	flex: 0 0 auto;
	min-block-size: 48px;
	padding: var(--wida-2) var(--wida-6);
	border: 1px solid var(--wida-bg);
	border-radius: 0;
	background: var(--wida-bg);
	color: var(--wida-fg);
	font: inherit;
	font-size: 14px;
	font-weight: 500;
	cursor: pointer;
}

.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__button:hover,
.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__button:focus-visible {
	background: var(--wida-gold-mark);
	border-color: var(--wida-gold-mark);
}

.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__notice,
.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__legal,
.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__legal a {
	color: rgba(255, 255, 255, 0.72);
	font-size: 13px;
}

@media (max-width: 767px) {
	.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__title {
		font-size: 20px;
	}

	.elementor .e-con.wida-footer .wida-newsletter .wida-newsletter__form {
		flex-direction: column;
	}
}

/* --------------------------------------------------------------------------
   32. The contact page (wida-commerce 1.14.0, [wida_contact layout="page"]).

   Two columns on wide screens: reach us at the start, find us at the end;
   one column on phones in the same order. The page runs on Hello Elementor's
   default page template, so the width and the edge padding are set here.
   The map is a closed disclosure; opening it is what loads the embed.
   -------------------------------------------------------------------------- */

.page-id-777200 .site-main,
.wida-contact-page {
	max-inline-size: 1100px;
	margin-inline: auto;
	padding-inline: var(--wida-edge);
}

.wida-contact-page__intro {
	max-inline-size: 560px;
	margin: 0 0 var(--wida-8);
	font-size: 16px;
	color: var(--wida-muted);
}

.wida-contact-page__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wida-8);
	padding-block-end: var(--wida-12);
}

@media (min-width: 900px) {
	.wida-contact-page__grid {
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		gap: var(--wida-12);
		align-items: start;
	}
}

.wida-contact-page h2 {
	margin: 0 0 var(--wida-4);
	font-size: 18px;
	font-weight: 500;
}

.wida-contact-page__whatsapp {
	display: inline-flex;
	align-items: center;
	gap: var(--wida-2);
	min-block-size: 48px;
	padding: var(--wida-3) var(--wida-6);
	background: var(--wida-fg);
	color: var(--wida-bg);
	font-size: 14px;
	font-weight: 500;
	text-decoration: none;
}

.wida-contact-page__whatsapp:hover,
.wida-contact-page__whatsapp:focus-visible {
	background: var(--wida-bg);
	color: var(--wida-fg);
	outline: 1px solid var(--wida-fg);
}

.wida-contact-page__whatsapp svg,
.wida-contact-page__social svg,
.wida-map__toggle svg {
	inline-size: 20px;
	block-size: 20px;
	flex: 0 0 20px;
}

.wida-contact-page__number {
	margin: var(--wida-3) 0 var(--wida-6);
	font-size: 15px;
}

.wida-contact-page__number a {
	color: var(--wida-fg);
	text-decoration: none;
}

.wida-contact-page__social {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wida-2);
	margin: 0;
	padding: 0;
	list-style: none;
}

.wida-contact-page__social a {
	display: inline-flex;
	align-items: center;
	gap: var(--wida-2);
	min-block-size: 44px;
	padding: var(--wida-2) var(--wida-4);
	border: 1px solid var(--wida-line);
	color: var(--wida-fg);
	font-size: 14px;
	text-decoration: none;
}

.wida-contact-page__social a:hover,
.wida-contact-page__social a:focus-visible {
	border-color: var(--wida-fg);
}

.wida-contact-page__address,
.wida-contact-page__hours {
	margin: 0 0 var(--wida-2);
	font-size: 15px;
}

.wida-contact-page__hours {
	color: var(--wida-muted);
}

.wida-map {
	margin-block-start: var(--wida-4);
}

.wida-map__frame {
	border: 1px solid var(--wida-line);
}

.wida-map__toggle {
	display: flex;
	align-items: center;
	gap: var(--wida-2);
	min-block-size: 48px;
	padding: var(--wida-3) var(--wida-4);
	cursor: pointer;
	list-style: none;
	font-size: 14px;
	font-weight: 500;
}

.wida-map__toggle::-webkit-details-marker {
	display: none;
}

.wida-map__frame[open] .wida-map__toggle {
	border-block-end: 1px solid var(--wida-line);
}

.wida-map__embed {
	display: block;
	inline-size: 100%;
	block-size: 360px;
	border: 0;
	background: var(--wida-surface);
}

.wida-map__links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wida-4);
	margin: var(--wida-3) 0 0;
	font-size: 13px;
}

.wida-map__links a {
	color: var(--wida-fg);
	text-decoration: underline;
}

/* --------------------------------------------------------------------------
   33. Founder notes of 2026-09-15: two black-on-black buttons, the search
   bar the width of the icons, the newsletter and the store notice off centre.

   a. The kit's global link rule is `.elementor-kit-N a` (0,1,1). Both the
   WhatsApp button on the contact page and the bubble's checkout button are
   anchors styled by a single class (0,1,0), so the link rule wins: black
   type, 16px, underlined, on the black fill. Measured on /contact/ 2026-09-15:
   color #111 on background #111. Restated at (0,2,1).
   -------------------------------------------------------------------------- */

.wida-contact-page a.wida-contact-page__whatsapp {
	color: var(--wida-bg);
	font-size: 14px;
	text-decoration: none;
}

.wida-contact-page a.wida-contact-page__whatsapp:hover,
.wida-contact-page a.wida-contact-page__whatsapp:focus-visible {
	color: var(--wida-fg);
}

.wida-bubble a.wida-bubble__btn {
	color: var(--wida-fg);
	font-size: 14px;
	text-decoration: none;
}

.wida-bubble a.wida-bubble__btn--primary {
	color: var(--wida-bg);
}

.wida-bubble a.wida-bubble__btn:hover,
.wida-bubble a.wida-bubble__btn:focus-visible {
	color: var(--wida-fg);
}

/* b. The search bar. Section 24 positions the form against the header
   container, but two nearer ancestors are positioned: Elementor's widget
   wrapper (`.elementor-widget`, position relative in frontend.min.css) and,
   since section 30d, `.wida-tools` itself. Measured 2026-09-15 at 1440px:
   offsetParent `.wida-tools`, 148px wide; the open form 112px. Both are made
   static here, so the form's containing block is the header again and it
   spans the full width under it. The bubble, which 30d anchored to the
   tools, now hangs from the header's start edge instead: the tools sit
   flush with that edge, so it lands in the same place, one row lower. */

.elementor .e-con.wida-header .elementor-widget:has(.wida-tools),
.elementor .e-con.wida-header .wida-tools {
	position: static;
}

.elementor .e-con.wida-header .wida-bubble {
	top: 100%;
	inset-inline-start: var(--wida-edge);
}

/* c. The newsletter widget in the footer is 465px wide inside a 1313px row
   (measured 2026-09-15): the row container gives the widget its content
   width, so section 31's `margin-inline: auto` has nothing to centre in.
   The widget takes the row. */

.elementor .e-con.wida-footer .elementor-widget:has(.wida-newsletter) {
	inline-size: 100%;
	max-inline-size: 100%;
	flex: 1 1 100%;
}

/* d. WooCommerce's store notice (the EVO promotion bar). On pages where
   Wida_Lean drops WooCommerce's stylesheet it has no rule at all: start
   aligned, transparent, in the flow. On /contact/, where the stylesheet
   loads, it is centred, purple (#720eec, WooCommerce's default) and absolute
   over the header. One rule for every page, at (0,2,0) so it beats
   `p.demo_store`: centred, in the flow above the sticky header, the same
   purple, the dismiss link white. Colour is a one-line change here. */

.woocommerce-demo-store .woocommerce-store-notice {
	position: static;
	margin: 0;
	padding: var(--wida-2) var(--wida-edge);
	background: #720eec;
	color: #fcfbfe;
	font-size: 15px;
	line-height: 1.6;
	text-align: center;
	box-shadow: none;
	z-index: auto;
}

.woocommerce-demo-store .woocommerce-store-notice a {
	color: inherit;
	font-size: inherit;
	text-decoration: underline;
}

.woocommerce-demo-store .woocommerce-store-notice img {
	vertical-align: middle;
}/* End custom CSS */