.elementor-kit-777367{--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-777367 button,.elementor-kit-777367 input[type="button"],.elementor-kit-777367 input[type="submit"],.elementor-kit-777367 .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-777367 button:hover,.elementor-kit-777367 button:focus,.elementor-kit-777367 input[type="button"]:hover,.elementor-kit-777367 input[type="button"]:focus,.elementor-kit-777367 input[type="submit"]:hover,.elementor-kit-777367 input[type="submit"]:focus,.elementor-kit-777367 .elementor-button:hover,.elementor-kit-777367 .elementor-button:focus{background-color:#333333;color:#FFFFFF;}.elementor-kit-777367 e-page-transition{background-color:#FFBC7D;}.elementor-kit-777367 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-777367 a:hover{color:#666666;}.elementor-kit-777367 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-777367 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-777367 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-777367 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-777367 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-777367 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-777367 img{border-radius:0px 0px 0px 0px;}.elementor-kit-777367 label{color:#666666;}.elementor-kit-777367 input:not([type="button"]):not([type="submit"]),.elementor-kit-777367 textarea,.elementor-kit-777367 .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-777367{--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-777367 a{font-size:16px;}.elementor-kit-777367 h1{font-size:30px;}.elementor-kit-777367 h2{font-size:22px;}.elementor-kit-777367 h3{font-size:18px;}.elementor-kit-777367 h4{font-size:16px;}.elementor-kit-777367 h5{font-size:14px;}.elementor-kit-777367 h6{font-size:12px;}.elementor-kit-777367 button,.elementor-kit-777367 input[type="button"],.elementor-kit-777367 input[type="submit"],.elementor-kit-777367 .elementor-button{font-size:14px;}.elementor-kit-777367 input:not([type="button"]):not([type="submit"]),.elementor-kit-777367 textarea,.elementor-kit-777367 .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-777367{--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-777367 a{font-size:15px;}.elementor-kit-777367 h1{font-size:26px;}.elementor-kit-777367 h2{font-size:20px;}.elementor-kit-777367 h3{font-size:17px;}.elementor-kit-777367 h4{font-size:15px;}.elementor-kit-777367 h5{font-size:13px;}.elementor-kit-777367 h6{font-size:12px;}.elementor-kit-777367 button,.elementor-kit-777367 input[type="button"],.elementor-kit-777367 input[type="submit"],.elementor-kit-777367 .elementor-button{font-size:14px;}.elementor-kit-777367 input:not([type="button"]):not([type="submit"]),.elementor-kit-777367 textarea,.elementor-kit-777367 .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-777367 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-777367 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-777367 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));
	}
}

.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;
	}
}/* End custom CSS */