/* ============================================================
   wf-components — Sections 1-3 (mobile-first, RTL, self-contained)
   Tokens are namespaced --wfc-* so they never collide with the live
   Astra site. In wf-blocks they map to the theme's --wf-* tokens.
   ============================================================ */

:root {
  --wfc-primary: #8A5FAC;
  --wfc-primary-soft: #AB92BF;
  --wfc-primary-deep: #5E3D7E;
  --wfc-bg: #FFFCFA;
  --wfc-surface: #FFFFFF;
  --wfc-surface-soft: #F3F0FF;
  --wfc-text: #2A2A2A;
  --wfc-text-muted: #6B6B6B;
  --wfc-border: #E4DAED;
  --wfc-divider: rgba(42, 42, 42, 0.08);
  --wfc-radius: 16px;
  --wfc-radius-pill: 9999px;
  --wfc-shadow-sm: 0 1px 2px rgba(42, 42, 42, 0.06);
  --wfc-shadow-md: 0 4px 12px rgba(42, 42, 42, 0.08);
  --wfc-ease: cubic-bezier(0.2, 0, 0, 1);
  --wfc-font: "Assistant", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  /* unified layout rhythm — consistent side gutter + vertical spacing across blocks */
  --wfc-gutter: clamp(16px, 4vw, 22px);
  --wfc-section-y: 22px;
  --wfc-head-gap: 16px;      /* head → content */
}

/* ── Unified section headings (same across all content blocks) ── */
/* Home H1 (audit F3): visible, compact, on-brand — sits right below the hero. */
.wf-home-h1 { text-align: center; font-size: clamp(17px, 3vw, 22px); font-weight: 600; color: #5c3d7a; margin: clamp(18px, 3vw, 26px) var(--wfc-gutter) 0; line-height: 1.3; }

.wf-quicklinks__head, .wf-pc__head { text-align: center; margin: 0 var(--wfc-gutter) var(--wfc-head-gap); }
.wf-pc__badge { display: inline-block; margin: 0 0 10px; background: #f3f0ff; color: #5c3d7a; font-size: 12px; font-weight: 700; padding: 4px 14px; border-radius: 999px; }
.wf-pc.is-dark .wf-pc__badge { background: rgba(255,255,255,.16); color: #fff; }
.wf-quicklinks__title, .wf-pc__title { font-size: clamp(20px, 5.5vw, 26px); font-weight: 800; color: var(--wfc-primary-deep); margin: 0; line-height: 1.15; }
.wf-quicklinks__sub, .wf-pc__sub { font-size: clamp(14px, 3.6vw, 16px); color: var(--wfc-text-muted); margin: 6px 0 0; line-height: 1.4; }

[class^="wf-"], [class*=" wf-"] { box-sizing: border-box; }

/* ══ THE CHROME CANNOT BORROW THE THEME'S RESET ═══════════════════════════
   The product page dequeues every astra* and elementor* stylesheet, and the
   header and footer live OUTSIDE .wf-pdp — so they lost the only global
   box-sizing on the page and every padded element started measuring
   content-box. Measured on the live canary: box-sizing computed to
   content-box on <html>, <body> and a fresh <div>, and the header came apart.

   The rule above only ever covered elements whose class starts with wf-,
   which is not the logo <img>, not the <a> and <button> inside the chips, and
   not any markup a plugin drops into the header.

   Astra set exactly this globally, so on every page that still loads Astra
   this changes nothing — it only takes effect where the theme has been
   removed, which is the one place it was missing. */
*, *::before, *::after { box-sizing: border-box; }

/* The other half of what the theme was quietly providing: an image that
   cannot overflow its column, and no baseline gap under it. */
.wf-header img, .wf-footer img, .wf-anno img { max-width: 100%; }

/* The rest of what the theme was quietly providing to the chrome.
   Measured by diffing every computed style in the header, announcement bar and
   footer between a page that still loads Astra and one that does not. Three
   things were inherited rather than declared, and all three moved:

     line-height  23.1px / 26.4px  ->  normal   (chip labels grew 14px -> 18.5px)
     color        #545454          ->  black
     button font  20px / 500       ->  13.33px / 400  (the UA default for a
                                       <button>, which stops inheriting the
                                       moment nothing sets font on it)

   Declared on the chrome containers rather than on body, so this changes
   nothing on pages that still have a theme and cannot leak into .wf-pdp,
   which sets its own. */
.wf-anno, .wf-header, .wf-footer { line-height: 1.65; color: #545454; }

.wf-anno button, .wf-header button, .wf-footer button,
.wf-anno input,  .wf-header input,  .wf-footer input,
.wf-anno select, .wf-header select, .wf-footer select,
.wf-anno textarea, .wf-header textarea, .wf-footer textarea {
  font: inherit;
  color: inherit;
}

/* And links, which do not inherit colour at all — the user-agent gives every
   <a href> its own, so the mega menu came back in the browser's default blue
   the moment the theme stopped saying otherwise. Anything wanting a different
   colour still sets one; this is only the floor. */
.wf-anno a, .wf-header a, .wf-footer a { color: inherit; text-decoration: none; }

/* Text fields and buttons, which the theme had also been shaping. The search
   field lost its whole box the moment Astra went — 40px tall with 12px/16px of
   padding became auto and the user-agent's 1px/2px, so it collapsed to a bare
   input the first time anyone opened search on a product page. */
.wf-anno input[type="text"],   .wf-header input[type="text"],   .wf-footer input[type="text"],
.wf-anno input[type="search"], .wf-header input[type="search"], .wf-footer input[type="search"],
.wf-anno input[type="email"],  .wf-header input[type="email"],  .wf-footer input[type="email"],
.wf-anno input[type="tel"],    .wf-header input[type="tel"],    .wf-footer input[type="tel"] {
  height: 40px;
  padding: 12px 16px;
  border: 1px solid #e4e0ea;
  border-radius: 8px;
  background: #fff;
  width: 100%;
}

/* A default for a bare button in the chrome, and only for a bare one.
 *
 * .wf-header button is (0,1,1) and .wf-header__chip is (0,1,0), so this blanket
 * rule quietly outranked the chip that had already chosen its own radius. The
 * only visible casualty was the search control, because it is the one chip
 * rendered as a <button> — the others are links, which this never touched. One
 * square corner in a row of round ones, from a reset meant to make the chrome
 * survive losing the theme.
 *
 * :not() keeps the reset for anything genuinely unstyled while leaving every
 * component that has an opinion to keep it. */
.wf-anno button:not([class*="__chip"]):not([class*="__circ"]),
.wf-header button:not([class*="__chip"]):not([class*="__circ"]),
.wf-footer button:not([class*="__chip"]):not([class*="__circ"]) { border-radius: 5px; }
/* …except the round ones, which are round. See the ROUND-CONTROL GUARD below. */
.wf-header__circ, .wf-footer__circ,
.wf-header [class*="__circ"], .wf-footer [class*="__circ"] { border-radius: 50%; }

/* ══ ROUND-CONTROL GUARD — READ BEFORE ADDING ANY CIRCLE/BADGE ══════════
   Every round icon-button, badge or notification bubble MUST get all three:
   1. flex: none            — never shrink/grow inside a flex row
   2. box-sizing: border-box + explicit equal width/height, with min-/max-
      guards when 3rd-party CSS may inflate it
   3. absolute badges: pin ONE horizontal inset and force the opposite to
      auto — a left+right pair with width:auto stretches the element to the
      parent's full width (FunnelKit/Elementor/Astra set their own insets).
   This bug recurred on the variant selector, carousel arrows and the FK
   cart badge. Do not reintroduce it. */

/* ---------- Announcement bar (1a) ----------
   Purple-gradient strip. Mobile-first (3d <640): h34/font13. Larger modes at
   EOF (responsive header/bar modes). Collapses to 0 on scroll (.is-collapsed). */
.wf-anno {
  position: relative;
  overflow: hidden;
  height: 34px;
  background: linear-gradient(90deg, #5c3d7a, #7b5ea7);
  color: #fff;
  font-family: var(--wfc-font);
  font-size: 13px;
  direction: rtl;
  transition: height 0.25s ease;
}
.wf-anno.is-collapsed { height: 0; }
.wf-anno__inner {
  max-width: 1280px;
  margin: 0 auto;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  padding: 0 20px;
}
.wf-anno__track { position: relative; height: 22px; flex: 1; max-width: 820px; }
.wf-anno__msg {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: #fff;
  text-decoration: none;
  white-space: nowrap;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.5s ease, transform 0.5s ease;
  pointer-events: none;
}
.wf-anno__msg.is-before { transform: translateY(-8px); }
.wf-anno__msg.is-active { opacity: 1; transform: translateY(0); pointer-events: auto; }
.wf-anno__emoji { font-size: 13px; }
.wf-anno__text { font-weight: 600; }
.wf-anno__cta { opacity: 0.85; font-weight: 500; }

/* ---------- Header (1b) ----------
   4-mode responsive header. Base = mobile 3d (<640px): hamburger (right) ·
   centered logo · service+cart circs (left), h60. Modes 3c/3b/3a live in the
   "responsive header modes" section at EOF (mobile-first min-width steps). */
.wf-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: #fff;
  font-family: var(--wfc-font);
  border-bottom: 1px solid #e1e1e1;
  transition: box-shadow 0.2s ease;
}
.wf-header.is-stuck {
  position: fixed; top: 0; left: 0; right: 0; width: 100%;
  box-shadow: 0 2px 8px rgba(92, 61, 122, 0.08);
}
.wf-header-spacer { height: 0; }
.wf-header__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  height: 60px;
  padding: 0 14px;
  direction: rtl;
  transition: height 0.2s ease;
}
/* circle icon action (hamburger / service / cart on 3c-3d, all actions on 3b) */
.wf-header__circ {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* ROUND-CONTROL GUARD: fixed square with min/max, flex none, border-box */
  width: 44px;
  height: 44px;
  min-width: 44px;
  max-width: 44px;
  box-sizing: border-box;
  padding: 0;
  flex: none;
  background: #fff;
  border: 1px solid #e1e1e1;
  border-radius: var(--wfc-radius-pill);
  color: #545454;
  cursor: pointer;
  text-decoration: none;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.wf-header__circ svg { width: 32px; height: 32px; }
.wf-header__circ--cart.has-items { background: #ede6f7; border-color: #d4c4e3; color: #5c3d7a; }
.wf-header__circ:hover { background: #f3f0ff; border-color: #d4c4e3; color: #5c3d7a; }
/* labeled chip action (3a desktop; collapses to a circ on 3b via EOF modes) */
.wf-header__chip {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  height: 40px;
  padding: 0 12px;
  flex-shrink: 0;
  background: #fff;
  border: 1px solid #e1e1e1;
  border-radius: var(--wfc-radius-pill);
  color: #303030;
  font-family: var(--wfc-font);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.wf-header__chip:hover { background: #f3f0ff; border-color: #d4c4e3; color: #5c3d7a; }
/* desktop-only groups — hidden on mobile/tablet (shown >=1000px at EOF) */
.wf-header__actions, .wf-header__nav { display: none; }
.wf-header__mobile-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
/* cart count badge — inline pill inside the desktop chip; floated on circs */
.wf-header__cart-count {
  min-width: 16px;
  height: 16px;
  padding: 0 3px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #5c3d7a;
  color: #fff;
  font-size: 9px;
  font-weight: 700;
  line-height: 1;
  border-radius: var(--wfc-radius-pill);
}
.wf-header__cart-count[hidden] { display: none; }
.wf-header__circ .wf-header__cart-count { position: absolute; top: -4px; left: -4px; }
/* native FunnelKit [fk_cart_menu] inside our cart action */
.wf-header__cart--fk .fkcart-shortcode-container,
.wf-header__cart--fk a { display: inline-flex; align-items: center; justify-content: center; }
.wf-header__cart--fk .fkcart-shortcode-price { display: none; }
/* FK cart badge. FK's own rule (.fkcart-shortcode-container .fkcart-shortcode-count)
   sets right:-5px; combined with a left inset + width:auto the badge STRETCHES
   full-width (see the round-control guard at the top of this file) — so this
   3-class rule outranks FK's and pins ONE inset with the other forced to auto. */
.wf-header__cart--fk .fkcart-shortcode-count.fkcart-item-count {
  position: absolute; top: -4px; left: -4px; right: auto;
  box-sizing: border-box; flex: none;
  min-width: 19px; width: auto; max-width: 34px; height: 19px;
  padding: 0 5px; border-radius: 999px; white-space: nowrap;
  display: flex; align-items: center; justify-content: center;
  background: #5c3d7a; color: #fff; font-size: 11px; font-weight: 700; line-height: 1;
}
.wf-header__cart--fk .fkcart-item-count[data-item-count="0"] { display: none; }
/* Anchor the badge to the OUTER circle, not FK's icon wrap (which is
   position:relative in FK CSS) — so it sits on the border at the 45° corner
   instead of covering the icon. 3 classes to outrank FK's 2-class rule. */
.wf-header__cart--fk .fkcart-shortcode-container .fkcart-shortcode-icon-wrap { position: static; }
.wf-header__cart--fk .fkcart-icon-checkout { width: 20px; height: 20px; }
.wf-header__circ.wf-header__cart--fk .fkcart-item-count { position: absolute; top: -4px; left: -4px; }
/* nav (desktop only) */
.wf-header__nav-slot { display: flex; align-items: center; gap: inherit; }
.wf-header__navlink {
  padding: 7px 10px;
  border-radius: var(--wfc-radius-pill);
  color: #303030;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.15s ease, color 0.15s ease;
}
.wf-header__navlink:hover { background: #f3f0ff; color: #5c3d7a; }
.wf-header__subchip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 40px;
  padding: 0 12px;
  border-radius: var(--wfc-radius-pill);
  color: #5c3d7a;
  font-weight: 700;
  background: #f3f0ff;
  border: 1px solid #d4c4e3;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.wf-header__subchip:hover { background: #ab92bf; color: #fff; border-color: #ab92bf; }
.wf-header__subchip-ico { flex: none; box-sizing: border-box; width: 16px; height: 16px; min-width: 16px; max-width: 16px; object-fit: contain; display: block; }
.wf-header__subchip-badge {
  background: #5c3d7a;
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: var(--wfc-radius-pill);
  white-space: nowrap;
}
/* logo — centered on mobile/tablet (flex:1 between burger and actions) */
/* Mobile/tablet: the logo is absolutely centered on the SCREEN — flex
   centering drifted toward the burger because the two circles on the other
   side are wider. Desktop resets to normal flow below. */
.wf-header__logo { position: absolute; left: 50%; transform: translateX(-50%); width: max-content; max-width: 52vw; text-align: center; text-decoration: none; min-width: 0; }
.wf-header .wf-header__logo img, .wf-header .wf-header__logo-img {
  /* The header cannot win a tie it used to win by accident.
     WooCommerce ships `.woocommerce img, .woocommerce-page img { height: auto }`,
     which is (0,1,1) — the same weight as `.wf-header__logo img` — and loads
     after this file, so it won on source order alone. Astra used to sit on top
     of both; with the theme dequeued on the product page nothing did, and the
     logo rendered at its natural 500x167 inside a 73px header.
     Prefixing with .wf-header makes it (0,2,1) and settles it by weight. */
  display: inline-block; height: 40px; width: auto; vertical-align: middle;
}
.wf-header__wordmark {
  font-weight: 700;
  font-size: 20px;
  color: #5c3d7a;
  letter-spacing: -0.3px;
  white-space: nowrap;
  transition: font-size 0.2s ease;
}
/* once the mega menu is transplanted into the wf header, the Elementor
   site header (its source) is fully hidden */
html.wf-mega-consumed header.elementor-location-header { display: none !important; }

/* ---------- Smart search ---------- */
.wf-search {
  border-top: 1px solid var(--wfc-divider);
  background: var(--wfc-surface);
  padding: 10px 12px 14px;
  direction: rtl;
}
.wf-search[hidden] { display: none; }
.wf-search__form {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: var(--wfc-surface-soft);
  border: 1px solid var(--wfc-border);
  border-radius: var(--wfc-radius-pill);
  color: var(--wfc-text-muted);
}
.wf-search__input {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  font-family: var(--wfc-font);
  font-size: 16px; /* >=16px to avoid iOS zoom */
  color: var(--wfc-text);
  outline: none;
}
.wf-search__close { border: 0; background: transparent; color: var(--wfc-text-muted); cursor: pointer; display: inline-flex; padding: 2px; }
.wf-search__results { margin-top: 10px; }
.wf-search__group-title { font-size: 12px; font-weight: 700; color: var(--wfc-text-muted); margin: 10px 4px 6px; }
.wf-search__row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 6px;
  border-radius: 12px;
  text-decoration: none;
  color: var(--wfc-text);
}
.wf-search__row:hover { background: var(--wfc-surface-soft); }
.wf-search__thumb { width: 40px; height: 40px; border-radius: 8px; object-fit: cover; background: var(--wfc-surface-soft); flex: none; }
.wf-search__row-main { flex: 1; min-width: 0; }
.wf-search__row-title { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wf-search__row-meta { font-size: 12px; color: var(--wfc-text-muted); }
.wf-search__row-was { color: #b3b3b3; text-decoration: line-through; font-size: 11px; margin-inline-start: 4px; }
.wf-search__empty, .wf-search__loading { padding: 14px 6px; color: var(--wfc-text-muted); font-size: 14px; }
.wf-search__cat {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 12px; margin: 0 4px 6px 0;
  background: var(--wfc-surface-soft); border: 1px solid var(--wfc-border);
  border-radius: var(--wfc-radius-pill); text-decoration: none;
  color: var(--wfc-primary-deep); font-size: 13px; font-weight: 600;
}

/* ---------- Buttons ---------- */
.wf-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 11px 20px; border-radius: var(--wfc-radius-pill);
  font-family: var(--wfc-font); font-size: 15px; font-weight: 700;
  text-decoration: none; cursor: pointer; border: 1.5px solid transparent;
  transition: transform var(--wfc-ease) 150ms, box-shadow var(--wfc-ease) 200ms;
}
.wf-btn:hover { transform: translateY(-1px); }
.wf-btn--primary { background: var(--wfc-primary); color: #fff; }
.wf-btn--secondary { background: transparent; color: var(--wfc-primary); border-color: var(--wfc-primary); }
.wf-btn--secondary:hover { background: var(--wfc-surface-soft); }
.wf-btn--ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,0.7); }

/* ---------- Hero carousel (2) ---------- */
/* Full-bleed banner, flush to the header (no side gutter, no top gap, no radius). */
.wf-hero { font-family: var(--wfc-font); direction: rtl; padding: 0; }
.wf-hero__viewport { overflow: hidden; border-radius: 0; }
.wf-hero__dots { padding-block: 10px 4px; }
.wf-hero__track { display: flex; }
.wf-hero__slide { position: relative; flex: 0 0 100%; color: #fff; }
/* Full designed banner: image scales to width, WHOLE image visible (no crop).
   Separate mobile/desktop sources via <picture>. */
.wf-hero__pic { display: block; }
.wf-hero__img { display: block; width: 100%; height: auto; }
/* Text-only fallback (no image) */
.wf-hero__slide--noimg {
  min-height: 240px; display: flex; align-items: flex-end; padding: 22px;
  background: var(--wfc-primary-deep);
}
.wf-hero__stretch { position: absolute; inset: 0; z-index: 2; } /* whole-banner clickable (no buttons) */
/* Overlay text/CTA over the image bottom — only rendered when there is content */
.wf-hero__content {
  position: absolute; inset-inline: 0; inset-block-end: 0; z-index: 1; padding: 22px;
  background: linear-gradient(0deg, rgba(45,28,68,0.60) 0%, rgba(45,28,68,0.15) 55%, rgba(45,28,68,0) 100%);
}
.wf-hero__slide--noimg .wf-hero__content { position: static; background: none; padding: 0; }
.wf-hero__eyebrow { font-size: 13px; font-weight: 700; opacity: 0.9; margin: 0 0 4px; }
.wf-hero__title { font-size: 28px; font-weight: 800; margin: 0 0 6px; line-height: 1.1; }
.wf-hero__text { font-size: 15px; margin: 0 0 14px; opacity: 0.95; }
.wf-hero__ctas { display: flex; gap: 8px; flex-wrap: wrap; }
.wf-hero__dots { display: flex; justify-content: center; gap: 7px; margin-top: 10px; }
.wf-hero__dot { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 50%; background: var(--wfc-primary-soft); opacity: 0.45; cursor: pointer; }
.wf-hero__dot.is-active { opacity: 1; width: 22px; border-radius: var(--wfc-radius-pill); }






/* Swiper lock (watchOverflow): everything fits — hide the arrows */
.wf-pc__arrow.swiper-button-lock { display: none !important; }

/* Desktop: fixed 400px hero height (image fills and crops) */
@media (min-width: 1025px) {
  .wf-hero__slide { height: 400px; }
  .wf-hero__img { height: 400px; object-fit: cover; }
  .wf-hero__slide--noimg { min-height: 400px; }
}

/* ---------- Quick links (3) ---------- */
.wf-quicklinks { font-family: var(--wfc-font); direction: rtl; padding: var(--wfc-section-y) 0; }
.wf-quicklinks__grid { padding-inline: var(--wfc-gutter); }
/* Horizontal card: text (right, RTL) + square image (left). */
.wf-quicklinks__item {
  display: flex; align-items: center; justify-content: flex-start; gap: 10px;
  padding: 6px 10px;
  background: var(--wfc-surface); border: 1px solid var(--wfc-border);
  border-radius: var(--wfc-radius); text-decoration: none; color: var(--wfc-text);
  box-shadow: var(--wfc-shadow-sm);
  transition: transform 250ms var(--wfc-ease), box-shadow 250ms var(--wfc-ease), border-color 250ms var(--wfc-ease);
}
.wf-quicklinks__item:hover { transform: translateY(-3px); box-shadow: var(--wfc-shadow-md); border-color: var(--wfc-primary-soft); }
.wf-quicklinks__item:active { transform: translateY(-1px); }
/* per-block background color (from the editor color picker) + auto text contrast */
/* Item color paints ONLY the icon tile — the chip itself stays regular. */
.wf-quicklinks__item.has-bg .wf-quicklinks__media { background-color: var(--wf-ql-bg); }
.wf-quicklinks__text { display: flex; flex-direction: column; justify-content: center; gap: 2px; flex: 1 1 auto; min-width: 0; text-align: start; }
.wf-quicklinks__item-title { font-size: 15px; font-weight: 600; color: var(--wfc-text); line-height: 1.15; }
.wf-quicklinks__item-sub { font-size: 11px; color: var(--wfc-text-muted); line-height: 1.25; }
.wf-quicklinks__media {
  display: flex; align-items: center; justify-content: center; position: relative;
  width: 36px; height: 36px; flex: none; align-self: center;
  border-radius: 10px;   /* rounded 36×36 square */
  background: transparent; /* no gray box around the icon — clean */
  background-size: cover; background-position: center;
  overflow: hidden;
  transition: transform 300ms var(--wfc-ease);
}
.wf-quicklinks__item:hover .wf-quicklinks__media { transform: scale(1.05); }
.wf-quicklinks__placeholder { display: flex; align-items: center; justify-content: center; color: var(--wfc-primary-soft); }
.wf-quicklinks__item.is-dark .wf-quicklinks__placeholder { color: #fff; }

/* grid layout (e.g. 3×2) */
.wf-quicklinks--grid .wf-quicklinks__grid {
  display: grid;
  grid-template-columns: repeat(var(--wf-ql-cols, 2), minmax(0, 1fr));
  gap: 10px;
}
/* horizontal scroll layout (mobile rail) */
.wf-quicklinks--scroll .wf-quicklinks__grid {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 4px;
}
.wf-quicklinks--scroll .wf-quicklinks__grid::-webkit-scrollbar { display: none; }
.wf-quicklinks--scroll .wf-quicklinks__item { flex: 0 0 38%; scroll-snap-align: start; }

/* ---------- Product carousel (Swiper) ---------- */
.wf-pc { font-family: var(--wfc-font); direction: rtl; padding: var(--wfc-section-y) 0; }
.wf-pc.has-bg { background: var(--wf-pc-bg); }
.wf-pc.is-dark .wf-pc__title { color: #fff; }
.wf-pc.is-dark .wf-pc__sub { color: rgba(255,255,255,0.85); }
/* Body clips the peek HORIZONTALLY; vertical padding + negative margin let card
   shadows show fully (Swiper itself is overflow:visible so nothing is cut). */
.wf-pc__body { position: relative; overflow: hidden; padding-block: 24px; margin-block: -24px; }
.wf-pc__swiper { padding-inline: var(--wfc-gutter); }
.wf-pc__body .wf-pc__swiper { overflow: visible; }
/* Equal-height cards WITHOUT JS: the Swiper wrapper is a flex row, so stretch
   makes every slide as tall as the tallest at layout time. Doing this in JS
   (measure + pin) caused a large layout shift because it ran before images
   loaded and pinned stale heights — see carousel.js. */
.wf-pc__swiper .swiper-wrapper { align-items: stretch; }
/* Specificity, not preference.
 *
 * Swiper's own stylesheet carries `.swiper-slide { height: 100% }`, which is
 * the same weight as a bare `.wf-pc__slide { height: auto }` — so which one won
 * came down to load order, and Swiper won. A slide with height:100% and no
 * definite container height resolves to its own content, and align-items:
 * stretch does not apply to an item whose height is not auto. The result was a
 * carousel whose shortest card stayed short: 441px next to 454px, one row of
 * text less and a visible step along the bottom edge.
 *
 * Two classes beat one, so this is stable regardless of enqueue order, and the
 * card is told to fill the slide rather than merely sit in it. */
.wf-pc__swiper .wf-pc__slide { height: auto; box-sizing: border-box; align-self: stretch; }
.wf-pc__swiper .wf-pc__slide > * { height: 100%; }
.wf-pc__swiper .wf-pc__slide > .wf-card { display: flex; flex-direction: column; }
/* Desktop: fixed-width carousel cards (slidesPerView:'auto' in carousel.js).
   --wf-pc-card-w is set per carousel from data-spv (default 250px). */
@media (min-width: 1280px) {
  .wf-pc__swiper .wf-pc__slide { width: var(--wf-pc-card-w, 280px); }
}
/* No overflow → Swiper is locked (carousel.js toggles wf-pc--centered):
   center the row instead of leaving trailing space. */
.wf-pc--centered .swiper-wrapper { justify-content: center; transform: none !important; }
.wf-pc--centered .swiper-slide:last-child { margin-left: 0 !important; } /* trailing spaceBetween skews the centering */
.wf-pc__cta { margin: 24px 0 var(--wfc-head-gap); padding-inline: var(--wfc-gutter); } /* more gap carousel→button + unified side gutter */
.wf-pc__cta .wf-btn { display: flex; width: 100%; }
.wf-pc__arrow { display: none; border: 0; background: none; }
/* fallback card (no Elementor) */
.wf-pc__fallback { display: flex; flex-direction: column; gap: 6px; text-decoration: none; color: var(--wfc-text); background: #fff; border: 1px solid var(--wfc-border); border-radius: var(--wfc-radius); padding: 10px; height: 100%; }
.wf-pc__fallback-img { display: block; aspect-ratio: 1/1; border-radius: 10px; background: var(--wfc-surface-soft) center/cover no-repeat; }
.wf-pc__fallback-title { font-size: 13px; font-weight: 600; line-height: 1.2; }
.wf-pc__fallback-price { font-size: 13px; color: var(--wfc-primary-deep); }

/* ---------- Desktop refinements (reviewed later, mobile-first base) ---------- */
@media (min-width: 768px) {
  /* (header rules moved to the "responsive header modes" section at EOF) */
  /* desktop hero: <picture> serves the 1920x400 desktop source (natural height) */
  .wf-hero__title { font-size: 40px; }
  .wf-quicklinks--scroll .wf-quicklinks__item { flex-basis: 22%; }
  /* desktop: all quick-links in a single row */
  .wf-quicklinks--grid .wf-quicklinks__grid { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
  /* Carousels on desktop (product / workshops / testimonials): the first card
     aligns with the header (via slidesOffset = gutter) — no extra body indent. */
  /* extra top padding (cancelled by the negative margin, so layout is unchanged)
     gives the above-carousel arrows room inside the overflow:hidden body */
  .wf-pc__body { padding-inline: 0; padding-block: 84px 24px; margin-block: -84px -24px; }
  .wf-pc__swiper { padding-inline: 0; }
  /* Nav arrows: 46px soft-lavender circles ABOVE the carousel, inset 100px from
     the inline-end edge (left in RTL). max-width guards the width so Swiper's/
     theme insets can't stretch them. */
  .wf-pc__body > .wf-pc__arrow {
    display: flex; align-items: center; justify-content: center; flex: none;
    box-sizing: border-box; width: 46px; height: 46px; min-width: 46px; max-width: 46px; padding: 0;
    position: absolute; top: 8px; inset-inline-start: auto; z-index: 5;
    border-radius: 50%; border: 1px solid #d4c4e3; background: var(--wfc-surface-soft); color: var(--wfc-primary-deep);
    cursor: pointer; box-shadow: var(--wfc-shadow-sm);
    transition: background 150ms var(--wfc-ease), border-color 150ms var(--wfc-ease);
  }
  .wf-pc__body > .wf-pc__arrow:hover { background: #ece6fb; border-color: var(--wfc-primary-soft); }
  .wf-pc__body > .wf-pc__arrow--next { inset-inline-end: 100px; }
  .wf-pc__body > .wf-pc__arrow--prev { inset-inline-end: 158px; }
  .wf-pc__body > .wf-pc__arrow svg { width: 20px; height: 20px; flex: none; }
  .wf-pc__arrow--prev svg { transform: scaleX(-1); } /* points back (right in RTL) */
  .wf-pc__arrow.swiper-button-disabled { opacity: 0.3; cursor: default; }
  /* CTA button: capped width, centered on desktop */
  .wf-pc__cta .wf-btn { width: 100%; max-width: 240px; margin-inline: auto; }
}

/* ── Subscription unit ─────────────────────────────────────────────── */
/* Full-bleed: purple background spans 100% width (no side gutter); the inner
   content keeps a readable side padding. */
.wf-sub {
  margin: 0;
  background: var(--wf-sub-bg, #3d2a55);
  background-image: linear-gradient(160deg, rgba(255,255,255,.08), rgba(0,0,0,.14));
  color: #fff; overflow: hidden;
}
.wf-sub__inner { padding: 24px var(--wfc-gutter) 22px; }
/* 25% chip: above the title, aligned to the (RTL) start = right. */
.wf-sub__badge {
  display: inline-block; margin: 0 0 12px;
  background: rgba(255,255,255,.16); color: #fff; font-size: 12px; font-weight: 700;
  padding: 6px 12px; border-radius: var(--wfc-radius-pill); white-space: nowrap;
}
.wf-sub__head { margin-bottom: 18px; text-align: center; }
/* !important: a third-party heading rule in LiteSpeed's combined CSS wins
   over a plain class color (verified live) — the section bg is always dark. */
.wf-sub__title { font-size: clamp(24px, 7vw, 32px); font-weight: 800; line-height: 1.12; margin: 0 0 8px; color: #fff !important; }
.wf-sub__subtitle { font-size: clamp(14px, 4vw, 16px); color: rgba(255,255,255,.88) !important; margin: 0; }
/* Benefits: quick-links-style horizontal cards (icon tile + title + subtitle),
   white cards sitting on the purple block. */
.wf-sub__benefits { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.wf-sub__benefit {
  display: flex; align-items: center; gap: 9px; text-align: start;
  background: var(--wfc-surface); border: 1px solid var(--wfc-border);
  border-radius: var(--wfc-radius); padding: 6px 10px; box-shadow: var(--wfc-shadow-sm);
}
.wf-sub__benefit-media {
  display: flex; align-items: center; justify-content: center; flex: none;
  width: 38px; height: 38px; border-radius: 11px;
  background: var(--wfc-surface-soft); color: var(--wfc-primary-deep);
}
.wf-sub__benefit-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; text-align: start; }
.wf-sub__benefit-text strong { font-size: 14.5px; font-weight: 700; color: var(--wfc-text); line-height: 1.15; }
.wf-sub__benefit-text span { font-size: 11px; color: var(--wfc-text-muted); line-height: 1.25; }
.wf-sub__pick-head { font-size: clamp(16px, 4.5vw, 19px); font-weight: 700; margin: 20px 0 12px; text-align: start; color: #fff; }
/* reused product carousel — break out to the full block width so cards peek at
   the screen edge (its own slidesOffset supplies the edge gutter). */
.wf-sub__carousel { margin-inline: calc(var(--wfc-gutter) * -1); margin-top: 20px; }
.wf-sub__pick-head + .wf-sub__carousel { margin-top: 0; }
.wf-sub__carousel .wf-pc { margin: 0; }
.wf-sub__carousel .wf-pc__body { padding-inline: 0; }
.wf-sub__cta-wrap { margin-top: 20px; }
.wf-sub__cta {
  display: block; width: 100%; text-align: center; background: #fff;
  color: var(--wf-sub-bg, #3d2a55); font-size: 16px; font-weight: 800;
  padding: 16px; border-radius: var(--wfc-radius-pill); text-decoration: none;
  box-shadow: 0 6px 18px rgba(0,0,0,.16); transition: transform 150ms var(--wfc-ease);
}
.wf-sub__cta:hover { transform: translateY(-1px); }
@media (min-width: 768px) {
  /* desktop: all benefits in a single row */
  .wf-sub__benefits { gap: 12px; grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
  .wf-sub__cta { max-width: 320px; margin-inline: auto; }
}

/* ── Collections unit ──────────────────────────────────────────────── */
/* Full-bleed: light background spans 100% width (no side gutter); inner content
   keeps side padding. Framing kept as top+bottom dashed lines only (no side
   borders/radius at the screen edge). */
.wf-coll {
  margin: 0;
  background: #f4f1fb;
  border-block: 1px dashed rgba(94, 61, 126, .22);
}
.wf-coll__inner { padding: 24px var(--wfc-gutter) 20px; }
/* All home sections stack flush (no external margins) — internal padding is the
   only spacing, so backgrounds touch and there is no white gap between units. */

/* ── Promo banner ──────────────────────────────────────────────────── */
.wf-promo {
  margin-block: 0;                 /* full-bleed, no own vertical gap */
  min-height: 340px;
  background: var(--wf-promo-bg, linear-gradient(155deg, #6f6088, #3d2a55)) center / cover no-repeat;
  position: relative; color: #fff; overflow: hidden; display: flex;
}
.wf-promo::before {                /* readability overlay */
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(38,24,58,.12) 0%, rgba(38,24,58,.58) 100%);
}
.wf-promo__inner {
  position: relative; z-index: 1; width: 100%;
  padding: 22px var(--wfc-gutter) 26px;
  display: flex; flex-direction: column;
}
.wf-promo__badge {
  align-self: flex-start;          /* RTL start = right */
  background: rgba(255,255,255,.2); color: #fff; font-size: 12px; font-weight: 700;
  padding: 6px 12px; border-radius: var(--wfc-radius-pill); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
.wf-promo__content { margin-block-start: auto; align-self: flex-start; text-align: start; max-width: 480px; }
.wf-promo__title { font-size: clamp(26px, 8vw, 40px); font-weight: 800; line-height: 1.06; margin: 0 0 8px; color: #fff; }
.wf-promo__subtitle { font-size: clamp(14px, 4vw, 17px); color: rgba(255,255,255,.9); line-height: 1.45; margin: 0 0 18px; }
.wf-promo__cta {
  display: inline-block; background: #fff; color: var(--wfc-primary-deep);
  font-size: 16px; font-weight: 800; padding: 14px 30px; border-radius: var(--wfc-radius-pill);
  text-decoration: none; box-shadow: 0 6px 18px rgba(0,0,0,.18);
  transition: transform 150ms var(--wfc-ease);
}
.wf-promo__cta:hover { transform: translateY(-1px); }
@media (min-width: 768px) { .wf-promo { min-height: 420px; } }
/* Desktop: optional separate image + vertically-centered stacked texts (fixed gaps) */
@media (min-width: 1025px) {
  .wf-promo.has-img-desktop { background-image: var(--wf-promo-bg-desktop); }
  .wf-promo__inner { justify-content: center; align-items: center; gap: 16px; padding-block: 44px; }
  .wf-promo__badge { align-self: center; }
  .wf-promo__content {
    margin-block-start: 0; align-self: center; text-align: center; max-width: 640px;
    display: flex; flex-direction: column; align-items: center; gap: 16px;
  }
  .wf-promo__title, .wf-promo__subtitle { margin: 0; }
}

/* ── Workshops carousel ────────────────────────────────────────────── */
.wf-ws { padding: var(--wfc-section-y) 0; }
.wf-ws__head { text-align: start; margin: 0 var(--wfc-gutter) var(--wfc-head-gap); }
.wf-ws__title { font-size: clamp(20px, 5.5vw, 26px); font-weight: 800; color: var(--wfc-primary-deep); margin: 0 0 8px; line-height: 1.15; }
.wf-ws__sub { font-size: clamp(14px, 4vw, 16px); color: #6a6a72; margin: 0; line-height: 1.5; }
.wf-ws__body { position: relative; }
/* equal-height cards: wrapper stretches every slide to the tallest, the slide is
   a flex box, the card fills it (same robust pattern as .wf-tst — a bare
   height:100% on the card does not work against the slide's height:auto). */
.wf-ws__swiper .swiper-wrapper { align-items: stretch; }
/* NOTE: `.wf-ws__swiper` prefix is REQUIRED — Swiper's own stylesheet sets
   `.swiper-slide{height:100%}` (same 0,1,0 specificity) and loads later, so a
   bare `.wf-ws__slide{height:auto}` loses the cascade and stretch never engages. */
.wf-ws__swiper .wf-ws__slide { height: auto; display: flex; }
/* Desktop: fixed-width cards for Swiper's slidesPerView:'auto' (mirrors the
   product carousel's .wf-pc__slide rule) — without a width the slide stretches
   to the full container and only one card shows. */
@media (min-width: 1280px) {
  .wf-ws__swiper .wf-ws__slide { width: 320px; }
}
.wf-ws-card {
  display: flex; flex-direction: column; flex: 1 1 auto; height: auto;
  background: #fff; border: 1px solid var(--wfc-border); border-radius: 16px;
  overflow: hidden; text-decoration: none; box-shadow: var(--wfc-shadow-sm);
  transition: box-shadow 150ms var(--wfc-ease);
}
.wf-ws-card:hover { box-shadow: 0 10px 24px rgba(94, 61, 126, .14); }
.wf-ws-card__media { display: block; aspect-ratio: 1 / 0.6; background: #eceaf2 center / cover no-repeat; }
.wf-ws-card__body { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px 16px; flex: 1; text-align: start; }
.wf-ws-card__title { font-size: 16px; font-weight: 700; color: #2b2b30; line-height: 1.3; }
.wf-ws-card__meta { display: flex; flex-direction: column; gap: 6px; }
.wf-ws-card__row { display: flex; align-items: center; gap: 7px; font-size: 13px; color: #6a6a72; }
.wf-ws-card__row svg { flex-shrink: 0; color: var(--wfc-primary); }
.wf-ws-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 4px; }
.wf-ws-card__price { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.1; font-size: 18px; font-weight: 800; color: #2b2b30; white-space: nowrap; }
.wf-ws-card__price small { font-size: 11px; font-weight: 500; color: #6b6b74; }
.wf-ws-card__cta {
  flex-shrink: 0; background: var(--wfc-primary-deep); color: #fff; font-size: 14px;
  font-weight: 700; padding: 10px 18px; border-radius: var(--wfc-radius-pill);
}
.wf-ws__more { text-align: center; margin: 16px var(--wfc-gutter) 0; }
.wf-ws__more a { display: inline-flex; align-items: center; gap: 4px; color: var(--wfc-primary-deep); font-weight: 700; font-size: 15px; text-decoration: none; }
.wf-coll__head { text-align: center; margin-bottom: 18px; }
.wf-coll__title { font-size: clamp(20px, 5.5vw, 26px); font-weight: 800; color: var(--wfc-primary-deep); margin: 0 0 8px; line-height: 1.15; }
.wf-coll__sub { font-size: clamp(14px, 4vw, 16px); color: #6a6a72; margin: 0; line-height: 1.5; }
.wf-coll__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.wf-coll__card {
  display: flex; flex-direction: column; background: #fff; border-radius: 16px;
  overflow: hidden; text-decoration: none; box-shadow: var(--wfc-shadow-sm);
  transition: transform 150ms var(--wfc-ease), box-shadow 150ms var(--wfc-ease);
}
.wf-coll__card:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(94, 61, 126, .14); }
.wf-coll__card--static, .wf-coll__card--static:hover { cursor: default; transform: none; box-shadow: var(--wfc-shadow-sm); } /* no link, no affordance */
.wf-coll__media { display: block; aspect-ratio: 1 / 0.92; background: #eceaf2 center / cover no-repeat; }
.wf-coll__media.is-empty { display: none; } /* belt and braces for markup rendered before the renderer stopped printing it */
.wf-coll__card-body { padding: 12px 14px 14px; text-align: start; }
.wf-coll__card-title { display: block; font-size: 15px; font-weight: 700; color: #2b2b30; }
.wf-coll__card-sub { display: block; font-size: 12.5px; color: #6b6b74; margin-top: 3px; }
.wf-coll__cta-wrap { margin-top: 16px; }
/* Collections as a carousel: the product carousel's body / arrows / slide
   contract reused with the same classes, so carousel.js drives it and the
   desktop arrows are the same circles above the row. The side gutter comes
   from Swiper's slidesOffset (as on the product carousel), so the inner's
   own inline padding steps aside for the track and moves to head + CTA. */
.wf-coll--carousel .wf-coll__inner { padding-inline: 0; }
.wf-coll--carousel .wf-coll__head, .wf-coll--carousel .wf-coll__cta-wrap { padding-inline: var(--wfc-gutter); }
.wf-coll__carousel { margin-top: 4px; }
.wf-coll__swiper .wf-pc__slide > .wf-coll__card { height: 100%; }
.wf-coll__cta {
  display: block; width: 100%; text-align: center; background: #fff;
  color: var(--wfc-primary-deep); border: 1px solid rgba(94, 61, 126, .25);
  font-size: 16px; font-weight: 800; padding: 15px; border-radius: var(--wfc-radius-pill);
  text-decoration: none; transition: background 150ms var(--wfc-ease);
}
.wf-coll__cta:hover { background: #faf8ff; }
@media (min-width: 768px) {
  /* How many fit across is the block's decision now (--wf-coll-cols, set by the
     renderer). The fallback is the four this grid was fixed at, so a block
     saved before the field existed keeps the layout it was designed with. */
  .wf-coll__grid { grid-template-columns: repeat(var(--wf-coll-cols, 4), minmax(0, 1fr)); }
  .wf-coll__cta { max-width: 320px; margin-inline: auto; }
}

/* ── Collections: the icon card ─────────────────────────────────────── */
/* A card for a service rather than a product: no photograph, a drawn icon, and
   the card's own link spelled out at the bottom. The body grows so that link
   sits on the floor of every card in the row however long the text above it is
   — a row of cards whose links do not line up reads as a mistake. */
.wf-coll__card--icon .wf-coll__card-body {
  display: flex; flex-direction: column; align-items: flex-start;
  flex: 1; gap: 8px; padding: 18px;
}
.wf-coll__icon {
  /* ROUND-CONTROL GUARD — see the note at the top of this file. */
  flex: none; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; min-width: 38px; max-width: 38px; min-height: 38px; max-height: 38px;
  border-radius: var(--wfc-radius-pill);
  background: var(--wfc-surface-soft); color: var(--wfc-primary-deep);
}
.wf-coll__icon svg { display: block; }
.wf-coll__card--icon .wf-coll__card-title { font-size: 16px; }
.wf-coll__card--icon .wf-coll__card-sub { font-size: 14px; line-height: 1.55; }
.wf-coll__card-link {
  display: inline-flex; align-items: center; gap: 4px; margin-top: auto; padding-top: 6px;
  font-size: 14px; font-weight: 700; color: var(--wfc-primary);
}
.wf-coll__card-link svg { flex: none; }
.wf-coll__card:hover .wf-coll__card-link { color: var(--wfc-primary-deep); }

/* ── Split: chips and the collage ───────────────────────────────────── */
.wf-split__chips {
  display: flex; flex-wrap: wrap; gap: 8px;
  list-style: none; margin: 18px 0 0; padding: 0;
}
.wf-split__chips li {
  background: var(--wfc-surface); border: 1px solid var(--wfc-border);
  border-radius: var(--wfc-radius-pill); padding: 8px 14px;
  font-size: 14px; line-height: 1.2; color: var(--wfc-primary-deep);
}
/* Two or more pictures instead of one. The shape follows the count: three is
   the tall one beside a stacked pair, which is the arrangement the design
   drew by hand and the one that reads best beside a column of text. */
/* A stated shape for a single image. Only when the block asks for one: without
   the class the image keeps height:100% and fills the row as it always has. */
.wf-split--ratio .wf-split__col--img > img {
  height: auto;
  aspect-ratio: var(--wf-split-img-ratio, 4 / 3);
}
.wf-split__collage { display: grid; gap: 12px; aspect-ratio: 4 / 3.2; }
.wf-split__collage img {
  display: block; width: 100%; height: 100%; min-width: 0; min-height: 0;
  object-fit: cover; border-radius: var(--wfc-radius, 12px);
}
.wf-split__collage--2 { grid-template-columns: 1fr 1fr; }
.wf-split__collage--3,
.wf-split__collage--4 { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.wf-split__collage--5,
.wf-split__collage--6 { grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; aspect-ratio: 3 / 4; }
.wf-split__collage--3 > img:first-child,
.wf-split__collage--5 > img:first-child,
.wf-split__collage--6 > img:first-child { grid-row: span 2; }

/* ── Lead form ──────────────────────────────────────────────────────── */
.wf-lead__inner {
  max-width: var(--wfp-max, 1200px); margin-inline: auto;
  padding: clamp(28px, 4vw, 56px) var(--wfc-gutter);
  display: grid; grid-template-columns: 1fr; gap: clamp(20px, 3vw, 40px); align-items: start;
}
.wf-lead__title { margin: 0 0 12px; font-size: clamp(22px, 3vw, 34px); line-height: 1.15; font-weight: 700; color: var(--wfc-primary-deep); }
.wf-lead__text { font-size: 16px; line-height: 1.65; color: var(--wfc-text); }
.wf-lead__text p { margin: 0 0 12px; }
.wf-lead__text p:last-child { margin-bottom: 0; }
.wf-lead__aside {
  margin-top: 22px; display: grid; gap: 12px; justify-items: stretch;
  background: var(--wfc-surface); border: 1px solid var(--wfc-border);
  border-radius: 12px; padding: 18px;
}
.wf-lead__aside-title { font-size: 15px; font-weight: 700; }
.wf-lead__wa {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border: 1px solid var(--wfc-border); border-radius: 9px; padding: 12px 18px;
  font-size: 15px; font-weight: 700; color: var(--wfc-primary-deep);
}
.wf-lead__wa:hover { background: var(--wfc-surface-soft); }
.wf-lead__wa svg { flex: none; }
.wf-lead__mail { font-size: 14px; color: var(--wfc-text-muted); }
.wf-lead__card {
  background: var(--wfc-surface); border: 1px solid var(--wfc-border);
  border-radius: 14px; padding: clamp(18px, 2.5vw, 28px); box-shadow: var(--wfc-shadow-md);
}
/* `position` so the off-screen honeypot below is measured against the form and
   cannot reach past the edge of the page. */
.wf-lead__form { position: relative; display: grid; gap: 14px; }
/* The panel and the form swap places through the `hidden` attribute, and
   `display:grid` on the class would beat it — an element that declares a
   display value has to say what hidden means for it. */
.wf-lead__form[hidden], .wf-lead__done[hidden] { display: none; }
.wf-lead__row { display: grid; grid-template-columns: 1fr; gap: 14px; }
.wf-lead__field { display: grid; gap: 6px; font-size: 14px; font-weight: 600; }
.wf-lead__field--opt { color: var(--wfc-text-muted); }
/* Form controls, stated at a specificity that outranks the theme.
 *
 * Astra's Customizer CSS sets `height: 40px`, `line-height: 24px` and its own
 * padding on every form control, from an inline <style> that the browser sees
 * AFTER this file — so at equal specificity it won, and this block only ever
 * managed to change some of the values on some of the controls. The height was
 * the damaging one: 40px, minus 22px of padding and 2px of border, leaves a
 * 16px box for a 24px line, and the select's "בחרו נושא" was clipped by exactly
 * those 8px. The extra `.wf-lead` on each selector settles the whole set here,
 * and the height comes from the content instead of a number.
 */
.wf-lead .wf-lead__field input,
.wf-lead .wf-lead__field select,
.wf-lead .wf-lead__field textarea {
  box-sizing: border-box; width: 100%; min-height: 0;
  font-family: inherit; font-size: 15px; font-weight: 400; line-height: 1.45;
  color: var(--wfc-text); background-color: var(--wfc-surface);
  border: 1px solid #d9d9d9; border-radius: 5px; padding: 11px 12px;
}
/* One height for the single-line controls, written as the sum it actually is:
   the line box, plus the padding, plus the border, with box-sizing counting the
   last two. `height: auto` fixed the clipping but let each control fall back to
   its own intrinsic height — a date input carries a calendar button and came
   out 48px against 46 for a text field, so a row of fields no longer lined up.
   The formula lands on the same 45.75px the well-behaved fields already had,
   so nothing else moves, and it cannot clip because the line box is a term in
   it rather than a number someone has to keep in sync. */
.wf-lead .wf-lead__field input,
.wf-lead .wf-lead__field select { height: calc(1.45em + 24px); }
.wf-lead .wf-lead__field textarea { height: auto; min-height: 84px; resize: vertical; }
/* `appearance: none` takes the native arrow away, so the select draws its own —
   and on an RTL page it belongs at the left edge, which is the inline end. */
.wf-lead .wf-lead__field select {
  padding-inline-end: 36px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B6B6B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-size: 14px 14px;
  background-position: left 12px center;
}
html[dir="ltr"] .wf-lead .wf-lead__field select { background-position: right 12px center; }
.wf-lead .wf-lead__field input:focus,
.wf-lead .wf-lead__field select:focus,
.wf-lead .wf-lead__field textarea:focus {
  outline: none; border-color: var(--wfc-primary-soft);
  box-shadow: 0 0 0 3px rgba(171, 146, 191, 0.25);
}
.wf-lead__submit {
  font-family: inherit; font-size: 16px; font-weight: 700; cursor: pointer;
  background: var(--wfc-primary); color: #fff; border: none; border-radius: 9px; padding: 15px;
  transition: background 150ms var(--wfc-ease);
}
.wf-lead__submit:hover { background: var(--wfc-primary-deep); }
.wf-lead__submit[disabled] { opacity: .65; cursor: default; }
.wf-lead__err { margin: 0; font-size: 14px; font-weight: 600; color: #b3261e; }
.wf-lead__note { margin: 0; font-size: 12px; color: #999; text-align: center; }
/* The honeypot. Not display:none — a bot that skips hidden fields is exactly the
   bot this is here to catch — but clipped rather than parked off-screen: at
   left:-9999px it was still part of the layout, and the document measured
   11248px wide against a 1440 viewport. Clipping takes it out of view without
   taking it out of the box model. */
.wf-lead__hp {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%);
  white-space: nowrap; border: 0;
}
.wf-lead__done { display: grid; justify-items: center; gap: 8px; text-align: center; padding: 30px 10px; }
.wf-lead__done:focus { outline: none; }
.wf-lead__done-mark {
  /* ROUND-CONTROL GUARD */
  flex: none; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
  width: 52px; height: 52px; min-width: 52px; max-width: 52px; min-height: 52px; max-height: 52px;
  border-radius: var(--wfc-radius-pill);
  background: #e9f7ef; color: #1a8a4a; font-size: 24px;
}
.wf-lead__done-title { font-size: 19px; font-weight: 700; color: var(--wfc-primary-deep); }
.wf-lead__done-text { font-size: 15px; color: var(--wfc-text-muted); }
@media (min-width: 860px) {
  .wf-lead__inner { grid-template-columns: 1fr 1fr; }
  .wf-lead__row { grid-template-columns: 1fr 1fr; }
}

/* ── Testimonials ──────────────────────────────────────────────────── */
/* Light full-bleed section (stacks flush after other .wf-bleed blocks). */
.wf-tst { margin: 0; background: #f4f1fb; border-block: 1px dashed rgba(94, 61, 126, .22); }
.wf-tst__inner { padding: 24px 0 22px; }
.wf-tst__head { text-align: start; margin: 0 var(--wfc-gutter) var(--wfc-head-gap); }
.wf-tst__title { font-size: clamp(20px, 5.5vw, 26px); font-weight: 800; color: var(--wfc-primary-deep); margin: 0 0 8px; line-height: 1.15; }
.wf-tst__sub { font-size: clamp(14px, 4vw, 16px); color: #6a6a72; margin: 0; line-height: 1.5; }
.wf-tst__body { position: relative; }
/* equal-height cards: the flex wrapper stretches every slide to the tallest;
   the slide is itself a flex box so the card fills that stretched height.
   (A bare `.wf-tst-card{height:100%}` did NOT work — 100% resolved against the
   slide's `auto` height, so the JS height-pinning that used to cover this was
   the only thing equalising them; that JS was removed, so do it in CSS.) */
.wf-tst__swiper .swiper-wrapper { align-items: stretch; }
/* `.wf-tst__swiper` prefix REQUIRED — beats Swiper's own `.swiper-slide{height:100%}`
   (same specificity, loaded later) so the slide can be `auto` and stretch. */
.wf-tst__swiper .wf-tst__slide { height: auto; display: flex; }
/* Desktop: fixed-width cards for Swiper's slidesPerView:'auto' (mirrors the
   product carousel's .wf-pc__slide rule) — without a width the slide stretches
   to the full container and only one testimonial shows. */
@media (min-width: 1280px) {
  .wf-tst__swiper .wf-tst__slide { width: 360px; }
}
.wf-tst-card {
  display: flex; flex-direction: column; gap: 12px; flex: 1 1 auto; height: auto; box-sizing: border-box;
  background: #fff; border-radius: 16px; box-shadow: var(--wfc-shadow-sm);
  padding: 20px 18px; text-align: start;
}
.wf-tst-card__stars { display: inline-flex; gap: 3px; }
.wf-tst-star { line-height: 0; }
.wf-tst-star__svg { display: block; fill: currentColor; }
.wf-tst-star.is-on { color: #F4B740; }
.wf-tst-star.is-off { color: #e2ddec; }
.wf-tst-card__text { font-size: 15px; line-height: 1.6; color: #3a3a42; margin: 0; flex: 1; }
.wf-tst-card__name { font-size: 14px; font-weight: 700; color: var(--wfc-primary-deep); }

/* ── Instagram feed ────────────────────────────────────────────────── */
.wf-ig { padding: var(--wfc-section-y) 0; }
.wf-ig__head { text-align: center; margin: 0 var(--wfc-gutter) 16px; }
.wf-ig__title { font-size: clamp(20px, 5.5vw, 26px); font-weight: 800; color: var(--wfc-primary-deep); margin: 0 0 4px; line-height: 1.15; }
.wf-ig__handle { display: inline-flex; align-items: center; gap: 5px; font-size: 14px; color: var(--wfc-text-muted); text-decoration: none; }
.wf-ig__handle svg { color: var(--wfc-primary); }
.wf-ig__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding-inline: var(--wfc-gutter); }
.wf-ig__cell {
  display: block; aspect-ratio: 1 / 1; overflow: hidden; border-radius: 12px;
  background: var(--wfc-surface-soft); position: relative;
}
.wf-ig__img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 300ms var(--wfc-ease); }
.wf-ig__cell:hover .wf-ig__img { transform: scale(1.05); }
.wf-ig__cta-wrap { text-align: center; margin-top: 18px; padding-inline: var(--wfc-gutter); }
.wf-ig__cta {
  display: inline-flex; align-items: center; gap: 7px; background: #fff;
  color: var(--wfc-primary-deep); border: 1px solid rgba(94, 61, 126, .25);
  font-size: 15px; font-weight: 800; padding: 12px 26px; border-radius: var(--wfc-radius-pill);
  text-decoration: none; transition: background 150ms var(--wfc-ease);
}
.wf-ig__cta:hover { background: #faf8ff; }
@media (min-width: 768px) {
  .wf-ig__grid { grid-template-columns: repeat(6, 1fr); }
}

/* ── Why-us / value props (exact match to the design mockup) ───────── */
.wf-why { margin: 0; background: linear-gradient(150deg, #f5ebf2 0%, #fff 70%); }
.wf-why__inner { padding: 30px var(--wfc-gutter); }
.wf-why__title { margin: 0 0 22px; font-size: 20px; font-weight: 700; color: #5c3d7a; line-height: 1.2; text-align: center; }
.wf-why__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 18px; }
/* icon FIRST (RTL start = right), text fills to its left.
   Card wrap — mirrors the quick-links item design (surface/border/radius/shadow). */
.wf-why__item {
  display: flex; align-items: flex-start; gap: 13px;
  padding: 14px 16px;
  background: var(--wfc-surface); border: 1px solid var(--wfc-border);
  border-radius: var(--wfc-radius);
  box-shadow: var(--wfc-shadow-sm);
}
.wf-why__icon {
  flex: 0 0 42px; width: 42px; height: 42px; border-radius: 50%;
  background: #f3f0ff; color: #5c3d7a;
  display: flex; align-items: center; justify-content: center;
}
.wf-why__text { flex: 1; min-width: 0; padding-top: 2px; text-align: start; }
.wf-why__item-title { display: block; font-size: 14.5px; font-weight: 700; color: #303030; line-height: 1.25; }
.wf-why__item-desc { display: block; font-size: 12.5px; color: #707070; margin-top: 2px; line-height: 1.4; }
.wf-why__summary {
  margin: 22px 0 0; background: #fff; border: 1px solid #e8dff0;
  border-radius: 12px; padding: 14px 15px;
}
.wf-why__summary p { margin: 0; font-size: 13px; color: #5c3d7a; line-height: 1.6; text-align: center; }
@media (min-width: 768px) {
  /* desktop: all value props in a single row (icon on top, text below) */
  .wf-why__list { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 20px; }
  .wf-why__item { flex-direction: column; align-items: flex-start; gap: 10px; padding: 18px; }
  .wf-why__summary { margin-top: 24px; }
}

/* ── FAQ accordion (exact match to the design mockup) ──────────────── */
.wf-faq { margin: 0; background: #faf8fc; border-top: 1px solid #efeaf4; }
.wf-faq__inner { padding: 28px var(--wfc-gutter) 30px; }
.wf-faq__title { margin: 0 0 16px; font-size: 20px; font-weight: 700; color: #5c3d7a; line-height: 1.2; text-align: center; }
.wf-faq__list { display: flex; flex-direction: column; gap: 9px; }
.wf-faq__item { background: #fff; border: 1px solid #ece6f2; border-radius: 12px; overflow: hidden; }
.wf-faq__q {
  list-style: none; cursor: pointer;
  padding: 14px 15px; display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.wf-faq__q::-webkit-details-marker { display: none; }
.wf-faq__q::marker { content: ''; }
.wf-faq__q-text { font-size: 14px; font-weight: 700; color: #303030; line-height: 1.3; text-align: start; }
.wf-faq__chev { flex: 0 0 auto; display: flex; color: #ab92bf; transition: transform .2s ease; }
.wf-faq__item[open] .wf-faq__chev { transform: rotate(180deg); }
.wf-faq__a { padding: 0 15px 15px; font-size: 13px; color: #707070; line-height: 1.55; text-align: start; }
@media (min-width: 768px) {
  .wf-faq__list { max-width: 720px; margin-inline: auto; }
}

/* ============================================================
   Mobile menu drawer (Direction A) — right-anchored off-canvas
   ============================================================ */
html.wf-drawer-lock { overflow: hidden; }

.wf-drawer__scrim {
  position: fixed; inset: 0; z-index: 99998;
  background: rgba(30, 20, 40, .5);
  opacity: 0; pointer-events: none;
  transition: opacity .34s ease;
}
.wf-drawer-root.is-open .wf-drawer__scrim { opacity: 1; pointer-events: auto; }

.wf-drawer {
  position: fixed; top: 0; bottom: 0; right: 0; z-index: 99999;
  width: 90%; max-width: 420px;
  background: #fff; direction: rtl; color: #303030;
  font-family: var(--wfc-font);
  overflow-y: auto; -webkit-overflow-scrolling: touch;
  transform: translateX(100%);
  transition: transform .34s cubic-bezier(.32, .72, 0, 1);
  box-shadow: -14px 0 44px rgba(30, 20, 40, .22);
  overscroll-behavior: contain;
}
.wf-drawer-root.is-open .wf-drawer { transform: translateX(0); }
.wf-drawer::-webkit-scrollbar { width: 0; height: 0; }
.wf-drawer * { box-sizing: border-box; }

/* header */
.wf-drawer__head {
  display: flex; align-items: center; justify-content: space-between;
  padding: calc(16px + env(safe-area-inset-top)) 16px 10px;
}
.wf-drawer__wordmark { font-family: Georgia, "Times New Roman", serif; font-size: 23px; font-weight: 700; color: #3d2a55; }
.wf-drawer__account {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 15px 8px 13px; border-radius: 999px;
  background: #f3f0ff; color: #5c3d7a; text-decoration: none;
  font-size: 14px; font-weight: 700; max-width: 62%;
}
.wf-drawer__account:hover { background: #ece6fb; }
.wf-drawer__account-txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wf-drawer__account.is-in { background: #ede6f7; }
.wf-drawer__actions { display: flex; gap: 8px; }
.wf-drawer__btn {
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid #e8e0f0; background: #faf8fc; color: #5c3d7a;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  padding: 0;
}
.wf-drawer__btn:hover { background: #f3f0ff; }

/* section label */
.wf-mm__label { padding: 16px 16px 4px; font-size: 12px; font-weight: 700; color: #6b6b74; letter-spacing: .5px; }
.wf-mm__label--center { text-align: center; padding: 0 0 12px; }

/* quick-select chips (secondary menu) */
.wf-mm__chips { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 8px 16px 4px; }
.wf-mm__chip {
  display: flex; align-items: center; gap: 8px;
  padding: 11px 13px; border-radius: 999px; background: #f3f0ff;
  text-decoration: none; color: #3d2a55;
}
.wf-mm__chip:hover { background: #ece6fb; }
.wf-mm__chip-ico { flex: 0 0 auto; display: flex; color: #5c3d7a; }
.wf-mm__chip-txt { font-size: 14px; font-weight: 600; color: #3d2a55; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.wf-mm__rule { height: 1px; background: #ece7f2; margin: 14px 16px 0; }
/* editor-managed desktop-menu banner components inside the drawer */
.wf-mm__banners { display: flex; flex-direction: column; gap: 12px; padding: 14px 16px 2px; }

/* accordions (primary menu) */
.wf-mm__acc { padding: 0 16px; }
.wf-mm__item { border-bottom: 1px solid #f0ecf5; }
.wf-mm__acc-head {
  display: flex; align-items: center; gap: 13px; width: 100%;
  padding-block: 15px; padding-inline: 13px; cursor: pointer; /* same inset as the quick chips, both sides */
  background: none; border: 0; text-align: start; color: inherit; font-family: inherit;
}
.wf-mm__acc-ico { flex: 0 0 auto; display: flex; color: #7b5ea7; }
.wf-mm__acc-title { flex: 1; font-size: 16px; font-weight: 600; color: #303030; text-align: start; }
.wf-mm__acc-chev { flex: 0 0 auto; display: flex; color: #c3b6d6; transition: transform .25s ease; }
.wf-mm__item.is-open .wf-mm__acc-chev { transform: rotate(-90deg); }
/* Primary-menu header — hover = light pink (distinct from selected), open/active
   = dark purple + white text. The !important defends against 3rd-party button
   styles (Elementor/WooCommerce) that bleed into the page and otherwise paint
   this row black with unreadable text. Order matters: the open/active rules come
   AFTER hover so an open item stays purple while hovered. */
.wf-mm__acc-head:hover,
.wf-mm__acc-head:focus,
.wf-mm__acc-head:focus-visible {
  background: #f3f0ff !important; /* same bg as the quick chips */
  border-radius: 10px;
  color: #303030 !important;
}
.wf-mm__acc-head:active,
.wf-mm__item.is-open .wf-mm__acc-head {
  background: #5c3d7a !important;
  border-radius: 10px;
  color: #fff !important;
}
.wf-mm__acc-head:active .wf-mm__acc-title,
.wf-mm__item.is-open .wf-mm__acc-title,
.wf-mm__acc-head:active .wf-mm__acc-ico,
.wf-mm__item.is-open .wf-mm__acc-ico,
.wf-mm__acc-head:active .wf-mm__acc-chev,
.wf-mm__item.is-open .wf-mm__acc-chev { color: #fff !important; }
/* direct-link variant (top-level category with no children) */
a.wf-mm__acc-head--link { text-decoration: none; display: flex; }

.wf-mm__acc-panel { }
.wf-mm__acc-inner { background: #faf8fc; border-radius: 12px; padding: 6px 6px 8px; margin: 0 0 14px; }
.wf-mm__banner {
  display: flex; align-items: center; justify-content: center; text-align: center;
  min-height: 60px; margin: 2px 4px 8px; padding: 10px 14px; border-radius: 10px;
  background: linear-gradient(135deg, #ede6f7, #f6eef2); text-decoration: none;
}
.wf-mm__banner-txt { font-size: 13px; font-weight: 600; color: #5c3d7a; line-height: 1.3; }
.wf-mm__banner.has-img { background-size: cover; background-position: center; }
.wf-mm__banner.has-img .wf-mm__banner-txt { color: #fff; }
.wf-mm__link { display: flex; align-items: center; gap: 8px; padding: 11px 14px; font-size: 14.5px; color: #5c3d7a; text-decoration: none; border-radius: 8px; text-align: start; }
.wf-mm__link:hover { background: #f3f0ff; }
.wf-mm__note { padding: 6px 14px 4px; font-size: 12.5px; color: #8a8195; line-height: 1.5; }
.wf-mm__acc-cta { display: block; margin: 8px 14px 6px; text-align: center; background: #ab92bf; color: #fff; font-size: 14px; font-weight: 600; padding: 11px; border-radius: 9px; text-decoration: none; }
.wf-mm__acc-cta:hover { background: #9a80b0; }

/* promo banner */
.wf-mm__promo { position: relative; display: block; height: 180px; margin: 20px 16px 4px; border-radius: 16px; overflow: hidden; background: linear-gradient(135deg, #e7ddf4, #f5ebf2); text-decoration: none; }
.wf-mm__promo-deco { position: absolute; top: -18px; left: -12px; }
.wf-mm__promo-in { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 18px 18px 20px; }
.wf-mm__promo-eyebrow { font-size: 12px; font-weight: 700; color: #7b5ea7; letter-spacing: .4px; }
.wf-mm__promo-title { font-family: Georgia, "Times New Roman", serif; font-size: 26px; color: #3d2a55; margin: 3px 0 8px; }
.wf-mm__promo-pill { align-self: flex-start; background: #5c3d7a; color: #fff; font-size: 13px; font-weight: 600; padding: 8px 16px; border-radius: 999px; }

/* service card */
.wf-mm__service { margin: 14px 16px 8px; background: #f3f0ff; border: 1px solid #e2d7f0; border-radius: 14px; padding: 16px; }
.wf-mm__service-title { font-size: 15px; font-weight: 700; color: #3d2a55; }
.wf-mm__service-text { font-size: 13px; color: #7b6e88; margin: 3px 0 12px; }
.wf-mm__service-cta { display: flex; align-items: center; justify-content: center; gap: 9px; background: #6d4a8f; color: #fff; font-size: 15px; font-weight: 600; padding: 12px; border-radius: 10px; text-decoration: none; }
.wf-mm__service-cta:hover { background: #9a80b0; }

/* social */
.wf-mm__social { text-align: center; padding: 16px 18px 4px; }
.wf-mm__social-row { display: flex; justify-content: center; gap: 14px; }
.wf-mm__social-ico { width: 40px; height: 40px; border-radius: 50%; background: #f3f0ff; color: #5c3d7a; display: flex; align-items: center; justify-content: center; }
.wf-mm__social-ico:hover { background: #ece6fb; }

.wf-mm__footer { text-align: center; font-size: 12px; color: #6b6b74; padding: 18px 18px calc(28px + env(safe-area-inset-bottom)); }

/* in-drawer search */
.wf-drawer__search { padding: 10px 16px 40px; }
.wf-drawer__search-row { display: flex; align-items: center; margin-bottom: 16px; }
.wf-drawer__search-field { position: relative; flex: 1; display: flex; }
.wf-drawer__search-input { flex: 1; width: 100%; height: 46px; border: 1px solid #ab92bf; border-radius: 999px; padding: 0 16px; padding-inline-end: 44px; font-family: inherit; font-size: 15px; direction: rtl; outline: none; background: #fff; box-shadow: 0 0 0 3px rgba(171, 146, 191, .18); }
/* ROUND-CONTROL GUARD: fixed square, flex:none, ONE logical inset. */
.wf-drawer__search-clear {
  position: absolute; inset-inline-end: 9px; top: 50%; transform: translateY(-50%);
  width: 28px; height: 28px; min-width: 28px; max-width: 28px; flex: none; box-sizing: border-box;
  display: flex; align-items: center; justify-content: center; padding: 0;
  border: 0; border-radius: 999px; background: #f3f0ff; color: #5c3d7a; cursor: pointer;
}
.wf-drawer__search-clear:hover { background: #ece6fb; }
.wf-drawer__poplabel { font-size: 12px; font-weight: 700; color: #999; letter-spacing: .4px; margin-bottom: 12px; }
.wf-drawer__pops { display: flex; flex-wrap: wrap; gap: 8px; }
.wf-drawer__pop { display: inline-flex; align-items: center; padding: 9px 15px; border-radius: 999px; background: #f3f0ff; color: #5c3d7a; font-size: 14px; font-weight: 500; cursor: pointer; border: 0; }
.wf-drawer__pop:hover { background: #ece6fb; }
.wf-drawer__search-results { margin-bottom: 14px; display: flex; flex-direction: column; }
.wf-drawer__search-row { display: flex; align-items: center; gap: 10px; padding: 8px 4px; text-decoration: none; color: #303030; border-bottom: 1px solid #f3f0f7; }
.wf-drawer__search-thumb { width: 40px; height: 40px; border-radius: 8px; background: #f3f0ff; object-fit: cover; flex: 0 0 auto; }
.wf-drawer__search-rmain { display: flex; flex-direction: column; }
.wf-drawer__search-rtitle { font-size: 14px; font-weight: 600; }
.wf-drawer__search-rmeta { font-size: 13px; color: #5c3d7a; font-weight: 700; }
.wf-drawer__search-cat { display: block; padding: 10px 4px; color: #5c3d7a; font-weight: 600; text-decoration: none; }
.wf-drawer__search-loading, .wf-drawer__search-empty { padding: 12px 4px; color: #8a8195; font-size: 14px; }

/* ============================================================
   Desktop mega menu (config-driven) — nav links + hover panels.
   Renders inside .wf-header__nav, which is hidden below 1000px, so these
   base rules are effectively desktop-only (no extra media queries needed).
   Panels are absolute against the sticky .wf-header → full header width,
   flush under it ("קו 0"). Values match the Mega Menu System design spec:
   grid gap 32 / padding-block 32, panel radius 14 (bottom, full-bleed),
   shadow 0 4px 16px rgba(0,0,0,.08), border-top #f0edf5. The 100px side
   padding aligns the columns with the header's own >=1000px gutter.
   ============================================================ */
.wf-mega { display: flex; align-items: center; gap: inherit; min-width: 0; }
.wf-mega__item { display: flex; }
.wf-mega__opener { background: none; border: 0; font: inherit; color: #303030; cursor: pointer; }
/* active nav item (panel open) — design: bold deep purple + 2px bottom line */
.wf-mega__item.is-open .wf-mega__opener {
  color: #5c3d7a;
  font-weight: 700;
  background: #f3f0ff;
  box-shadow: inset 0 -2px 0 0 #5c3d7a;
}
.wf-mega__panel {
  position: absolute; top: 100%; inset-inline: 0; z-index: 998;
  display: none;
  background: var(--wf-mega-bg, #fff);
  border-top: 1px solid #f0edf5;
  border-radius: 0 0 14px 14px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
  direction: rtl; text-align: start;
  font-size: 14px; font-weight: 400;
  max-height: calc(100vh - 140px); overflow-y: auto;
}
.wf-mega__item.is-open .wf-mega__panel { display: block; }
.wf-mega__grid { display: grid; gap: 32px; padding: 32px 100px; align-items: start; max-width: calc(var(--wf-mega-max, 1400px) + 200px); margin-inline: auto; /* content cap (editor-set, default 1400px), centered; 100px gutters preserved below the cap */ }
.wf-mega__col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }

/* tag language — ONE tag per item. הכי נמכר = filled purple; מבצע = warm with
   dot; the rest soft/outline. Pills, not circles — still flex:none (guard). */
.wf-mega__tag {
  display: inline-flex; align-items: center; gap: 5px;
  flex: none; box-sizing: border-box;
  padding: 2px 8px; border-radius: 999px;
  font-size: 10px; font-weight: 600; line-height: 1.4; white-space: nowrap;
}
.wf-mega__tag--new,
.wf-mega__tag--week { background: #f3f0ff; color: #5c3d7a; border: 1px solid #d4c4e3; }
.wf-mega__tag--rec { background: #fff; color: #5c3d7a; border: 1px solid #d4c4e3; }
.wf-mega__tag--best { background: #5c3d7a; color: #fff; }
.wf-mega__tag--sale { background: #fff3e0; color: #b26a00; border: 1px solid #ffe0b2; }
.wf-mega__tag--sale::before {
  content: ''; flex: none; box-sizing: border-box;
  width: 5px; height: 5px; border-radius: 50%; background: currentColor;
}

/* 01 — link column */
.wf-mega__lc-title { font-size: 18px; font-weight: 800; color: #5c3d7a; margin-bottom: 14px; letter-spacing: .3px; } /* 800 = Assistant's heaviest real cut (no 900 exists) */
.wf-mega__lc-links { display: flex; flex-direction: column; }
.wf-mega__link {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; margin-inline: -8px; border-radius: 8px;
  font-size: 14px; color: #303030; text-decoration: none;
  transition: background .15s, color .15s;
}
.wf-mega__link:hover { color: #5c3d7a; background: #fff; }
.wf-mega__link.is-bold { font-weight: 700; color: #5c3d7a; }

/* 03 — links with description */
.wf-mega__ld { display: flex; flex-direction: column; gap: 14px; }
/* the column title inside the gapped flex column would double-space (its own
   14px margin + the 14px gap) — the gap alone matches the link-column rhythm */
.wf-mega__ld > .wf-mega__lc-title { margin-bottom: 0; }
.wf-mega__ld-item { display: block; text-decoration: none; padding: 6px 8px; margin-inline: -8px; border-radius: 8px; transition: background .15s; }
.wf-mega__ld-item:hover { background: #fff; }
.wf-mega__ld-title { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: #303030; }
.wf-mega__ld-item:hover .wf-mega__ld-title { color: #5c3d7a; }
.wf-mega__ld-desc { display: block; font-size: 12px; color: #707070; line-height: 1.5; }

/* 04·05 — quick link cards */
.wf-mega__qcards { display: flex; flex-direction: column; gap: 10px; }
.wf-mega__qcard {
  display: flex; align-items: center; gap: 12px; padding: 14px;
  background: #fff; border: 1px solid #e8e0f0; border-radius: 10px;
  text-decoration: none;
  transition: border-color .15s ease, background .15s ease;
}
.wf-mega__qcard:hover { border-color: #ab92bf; background: #faf8fc; }
/* ROUND-CONTROL GUARD: fixed 44px circle */
.wf-mega__qcard-ico {
  flex: none; box-sizing: border-box;
  width: 44px; height: 44px; min-width: 44px; max-width: 44px;
  border-radius: 50%; background: #f3f0ff; color: #5c3d7a;
  display: flex; align-items: center; justify-content: center;
}
.wf-mega__qcard-txt { flex: 1; min-width: 0; }
.wf-mega__qcard-title { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; color: #303030; }
.wf-mega__qcard-desc { display: block; font-size: 12px; color: #707070; }

/* 06 — promoted banner, large */
.wf-mega__banner {
  display: block; border-radius: 12px; overflow: hidden;
  border: 1px solid #e8e0f0; background: linear-gradient(135deg, #efeafb, #fff);
  text-decoration: none;
}
.wf-mega__banner-media {
  display: grid; place-items: center; height: 96px;
  background-image: linear-gradient(135deg, #d8c9e8, #f3f0ff);
  background-size: cover; background-position: center;
}
.wf-mega__banner-body { display: block; padding: 14px 16px; }
.wf-mega__banner-body > .wf-mega__tag { margin-bottom: 8px; }

/* circle quick-links row (3b) — scrolls only on overflow, centered otherwise.
   Circles + pills are ROUND-CONTROL guarded (fixed size, one-inset badges). */
.wf-circles { display: flex; gap: 14px; overflow-x: auto; padding: 6px var(--wfc-gutter) 2px; justify-content: safe center; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; scrollbar-width: none; direction: rtl; }
.wf-circles::-webkit-scrollbar { display: none; }
.wf-circles.is-looping { scroll-snap-type: none; }
.wf-circles__item { flex: none; width: 82px; display: flex; flex-direction: column; align-items: center; gap: 8px; text-decoration: none; scroll-snap-align: center; }
.wf-circles__circle { position: relative; flex: none; box-sizing: border-box; width: 72px; height: 72px; min-width: 72px; max-width: 72px; border-radius: 50%; border: 1px solid #e4dded; background: #f3f0ff; background-size: cover; background-position: center; overflow: hidden; transition: transform .18s ease, box-shadow .18s ease; }
.wf-circles__item:hover .wf-circles__circle { transform: translateY(-4px); box-shadow: 0 6px 14px rgba(92, 61, 122, .16); }
.wf-circles__circle .wf-mega__tag { position: absolute; top: 4px; inset-inline-end: 0; inset-inline-start: auto; background: #fff; }
.wf-circles__badge { position: absolute; bottom: 0; left: 0; right: 0; background: #3d2a55; color: #fff; font-size: 11px; font-weight: 700; text-align: center; padding: 3px 0 4px; line-height: 1; }
.wf-circles__label {
  font-size: 13px; font-weight: 700; color: #303030; text-align: center;
  /* Full item width + wrap up to 2 lines — no more ellipsis truncation. */
  white-space: normal; max-width: 100%; line-height: 1.25;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.wf-circles__item:hover .wf-circles__label { color: #5c3d7a; }
/* home-page block wrapper */
.wf-clb { padding: var(--wfc-section-y) 0; font-family: var(--wfc-font); } /* full-bleed: the gutter lives on the row so the scroll canvas is 100% wide */
.wf-clb__head { padding-inline: var(--wfc-gutter); text-align: center; }
.wf-clb__inner { min-width: 0; }
.wf-clb__head { margin: 0 0 var(--wfc-head-gap); }
.wf-clb__title { font-size: clamp(20px, 5.5vw, 26px); font-weight: 800; color: var(--wfc-primary-deep); margin: 0; line-height: 1.15; }
.wf-clb__sub { font-size: clamp(14px, 3.6vw, 16px); color: var(--wfc-text-muted); margin: 6px 0 0; line-height: 1.4; }

/* 1:1-image banners (side / top). Fixed square media — never squashed. */
.wf-mega__ib { display: flex; gap: 14px; padding: 16px; background: #fff; border: 1px solid #e8e0f0; border-radius: 12px; text-decoration: none; transition: box-shadow .15s; }
a.wf-mega__ib:hover { box-shadow: 0 2px 10px rgba(92, 61, 122, .1); }
.wf-mega__ib--side { flex-direction: row; align-items: center; }
.wf-mega__ib--top { flex-direction: column; }
.wf-mega__ib-media { box-sizing: border-box; border-radius: 10px; background: linear-gradient(135deg, #d8c9e8, #f3f0ff); background-size: cover; background-position: center; display: grid; place-items: center; }
.wf-mega__ib--side .wf-mega__ib-media { flex: none; width: 110px; min-width: 110px; max-width: 110px; aspect-ratio: 1 / 1; }
.wf-mega__ib--top .wf-mega__ib-media { width: 100%; aspect-ratio: 1 / 1; }
.wf-mega__ib-body { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; flex: 1; min-width: 0; }
.wf-mega__ib-title { font-size: 20px; font-weight: 700; color: #5c3d7a; }
.wf-mega__ib-text { font-size: 13px; color: #707070; line-height: 1.55; }
.wf-mega__ib-cta { display: inline-block; background: #303030; color: #fff; border-radius: 8px; padding: 9px 18px; font-size: 13px; font-weight: 600; margin-top: 6px; }
.wf-mega__ib--top .wf-mega__ib-cta { align-self: stretch; text-align: center; }
.wf-mega__banner-title { display: block; font-size: 15px; font-weight: 700; color: #5c3d7a; margin-bottom: 4px; }
.wf-mega__banner-text { display: block; font-size: 12px; color: #707070; line-height: 1.5; }
.wf-mega__banner-cta {
  display: inline-block; margin-top: 12px;
  background: #303030; color: #fff; border-radius: 8px;
  padding: 8px 16px; font-size: 12px; font-weight: 600;
}

/* 07 — promoted banner, compact */
.wf-mega__bc {
  display: flex; align-items: center; gap: 12px; padding: 12px;
  border-radius: 10px; border: 1px solid #e8e0f0; background: #fff;
  text-decoration: none;
  transition: border-color .15s ease;
}
.wf-mega__bc:hover { border-color: #ab92bf; }
/* ROUND-CONTROL GUARD: fixed 44px rounded-square tile */
.wf-mega__bc-ico {
  flex: none; box-sizing: border-box;
  width: 44px; height: 44px; min-width: 44px; max-width: 44px;
  border-radius: 10px; background: linear-gradient(135deg, #d8c9e8, #f3f0ff); color: #7b5ea7;
  display: flex; align-items: center; justify-content: center;
}
.wf-mega__bc-txt { flex: 1; min-width: 0; }
.wf-mega__bc-title { display: block; font-size: 13px; font-weight: 700; color: #5c3d7a; }
.wf-mega__bc-text { display: block; font-size: 12px; color: #707070; line-height: 1.4; }
.wf-mega__bc-chev { flex: none; display: flex; color: #ab92bf; }

/* 08 — joker / dynamic promo */
.wf-mega__joker { border-radius: 12px; border: 1px solid #e8e0f0; background: #fff; padding: 16px; }
.wf-mega__joker.is-filled { border-color: #ab92bf; background: #f3f0ff; }
.wf-mega__joker-head { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.wf-mega__joker-eyebrow { font-size: 10px; font-weight: 700; letter-spacing: .5px; color: #ab92bf; }
.wf-mega__joker-title { font-size: 16px; font-weight: 700; color: #5c3d7a; margin-bottom: 6px; }
.wf-mega__joker-text { font-size: 12px; color: #707070; line-height: 1.5; margin: 0; }
.wf-mega__joker.is-filled .wf-mega__joker-text { color: #7b5ea7; }
.wf-mega__joker-cta {
  display: inline-block; margin-top: 14px;
  background: #303030; color: #fff; border-radius: 8px;
  padding: 8px 16px; font-size: 12px; font-weight: 600; text-decoration: none;
}
.wf-mega__joker.is-filled .wf-mega__joker-cta { background: #ab92bf; }

/* in-column mini promo */
.wf-mega__mini { border-radius: 10px; background: #f3f0ff; border: 1px solid #e8e0f0; padding: 16px; }
.wf-mega__mini-title { font-size: 14px; font-weight: 700; color: #5c3d7a; margin-bottom: 5px; }
.wf-mega__mini-text { font-size: 12px; color: #7b5ea7; line-height: 1.5; margin: 0 0 10px; }
.wf-mega__mini-link { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 600; color: #5c3d7a; text-decoration: none; }

/* support note box */
.wf-mega__support { padding: 12px 14px; border-radius: 8px; background: #f6f2f9; font-size: 12px; color: #7b5ea7; line-height: 1.5; }

/* 09 — service / WhatsApp */
.wf-mega__service { display: flex; align-items: center; gap: 14px; padding: 16px; border-radius: 10px; border: 1px solid #e8e0f0; background: #fff; }
/* ROUND-CONTROL GUARD: fixed 44px circle */
.wf-mega__service-ico {
  flex: none; box-sizing: border-box;
  width: 44px; height: 44px; min-width: 44px; max-width: 44px;
  border-radius: 50%; background: #e8f8ee; color: #25D366;
  display: flex; align-items: center; justify-content: center;
}
.wf-mega__service-txt { flex: 1; min-width: 0; }
.wf-mega__service-title { display: block; font-size: 14px; font-weight: 600; color: #303030; }
.wf-mega__service-text { display: block; font-size: 12px; color: #707070; }
.wf-mega__service-cta {
  flex: none; display: inline-flex; align-items: center; gap: 6px;
  background: #25D366; color: #fff; border-radius: 8px;
  padding: 9px 16px; font-size: 13px; font-weight: 600; text-decoration: none;
}

/* 16·17 — panel footer strip (full-width under the grid) */
.wf-mega__footer { border-top: 1px solid #f0edf5; padding: 20px 100px 24px; }
.wf-mega__footer-links { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px 24px; margin-bottom: 20px; }
.wf-mega__footer-link { font-size: 13px; color: #707070; padding: 5px 0; text-decoration: none; }
.wf-mega__footer-link:hover { color: #5c3d7a; }
.wf-mega__footer-bottom {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 16px;
  padding-top: 18px; border-top: 1px solid #f0edf5;
}
.wf-mega__footer-address { font-size: 12px; color: #999; }
.wf-mega__footer-social { display: flex; align-items: center; gap: 16px; }
.wf-mega__footer-follow { font-size: 11px; font-weight: 700; color: #999; }
/* ROUND-CONTROL GUARD: fixed 34px circles */
.wf-mega__footer-ico {
  flex: none; box-sizing: border-box;
  width: 34px; height: 34px; min-width: 34px; max-width: 34px;
  border-radius: 50%; border: 1px solid #e8e0f0; color: #5c3d7a;
  display: flex; align-items: center; justify-content: center; text-decoration: none;
  transition: background .15s ease;
}
.wf-mega__footer-ico:hover { background: #f3f0ff; }

/* ============================================================
   Per-block custom width — full-bleed background, capped + centered content.
   The block root (.wf-bleed) stays edge-to-edge; its inner content wrapper is
   limited to --wfc-content-max and centered. Set via the dispatcher wrapper
   .wf-block--constrained (editor: "רוחב הבלוק" = מותאם).
   ============================================================ */
.wf-block--constrained .wf-sub__inner,
.wf-block--constrained .wf-promo__inner,
.wf-block--constrained .wf-coll__inner,
.wf-block--constrained .wf-ws__inner,
.wf-block--constrained .wf-why__inner,
.wf-block--constrained .wf-faq__inner,
.wf-block--constrained .wf-pc__head,
.wf-block--constrained .wf-pc__body,
.wf-block--constrained .wf-pc__cta,
.wf-block--constrained .wf-quicklinks__head,
.wf-block--constrained .wf-quicklinks__grid,
.wf-block--constrained .wf-tst__head,
.wf-block--constrained .wf-tst__swiper,
.wf-block--constrained .wf-hero__viewport,
.wf-block--constrained .wf-hero__dots,
.wf-block--constrained .wf-html__inner,
.wf-block--constrained .wf-split__inner,
.wf-block--constrained .wf-lead__inner {
  max-width: var(--wfc-content-max);
  margin-inline: auto;
}

/* Per-block "carousel full width" opt-in (editor toggle → .wf-block--carousel-full):
   pull ONLY the carousel track out to the full viewport width, leaving the
   heading / text / benefits / CTA exactly where the block's custom width put
   them (they are not touched at all). Full-bleed via 100vw is safe because the
   theme sets body{overflow-x:hidden}; the calc centres it since every carousel's
   containing block is horizontally centred. Covers all four carousel blocks:
   products + subscription (.wf-pc__body), workshops (.wf-ws__body),
   testimonials (.wf-tst__swiper). */
.wf-block--constrained.wf-block--carousel-full .wf-pc__body,
.wf-block--constrained.wf-block--carousel-full .wf-ws__body,
.wf-block--constrained.wf-block--carousel-full .wf-tst__swiper {
  width: 100vw;
  max-width: 100vw;
  margin-inline: calc(50% - 50vw);
}

/* WooCommerce's global `.woocommerce-js h2 { margin-bottom: .7em }` outranks
   the block-title rules (higher specificity) — pin our margins explicitly. */
.wf-quicklinks__title, .wf-pc__title { margin-bottom: 0 !important; }
.wf-ws__title, .wf-sub__title, .wf-coll__title, .wf-tst__title { margin-bottom: 8px !important; }
.wf-ig__title { margin-bottom: 4px !important; }
.wf-why__title { margin-bottom: 22px !important; }
.wf-faq__title { margin-bottom: 16px !important; }
@media (min-width: 1025px) {
  .wf-quicklinks__title, .wf-pc__title, .wf-ws__title, .wf-coll__title,
  .wf-tst__title, .wf-ig__title, .wf-why__title, .wf-faq__title, .wf-sub__title { margin-bottom: 10px !important; }
}

/* ── Site footer (Direction 1A "Airy Light") ───────────────────────── */
.wf-footer { font-family: var(--wfc-font); direction: rtl; background: var(--wf-footer-bg, linear-gradient(135deg, #f6f1fa 0%, #fdfcff 60%)); color: #303030; }
.wf-footer a { text-decoration: none; }
.wf-footer__content { padding: 56px 64px 40px; }
.wf-footer__grid { display: grid; grid-template-columns: 1.5fr .9fr .9fr 1.1fr; gap: 56px; }
.wf-footer__brand-col { display: flex; flex-direction: column; gap: 20px; }
.wf-footer__brand { font-size: 30px; font-weight: 700; color: #5c3d7a; letter-spacing: .5px; line-height: 1.2; }
.wf-footer__about { margin: 0; font-size: 14px; line-height: 1.7; color: #707070; max-width: 320px; }
.wf-footer__col { display: flex; flex-direction: column; gap: 14px; }
.wf-footer__col--contact { gap: 16px; }
.wf-footer__col-title { font-size: 15px; font-weight: 700; color: #5c3d7a; }
/* Anchors inside the footer name the element for the same reason the CTA does:
 * `.wf-footer a { color: inherit }` is (0,1,1) and outranks a bare component
 * class, so every one of these was drawing in the footer's inherited #303030
 * rather than the colour it asked for. The social icons are the visible one —
 * they are currentColor, and were coming out grey instead of purple.
 * (.wf-footer__contact is left as-is: it is a div in some places and an anchor
 * in others, and the colour it declares happens to equal what it inherits.) */
.wf-footer a.wf-footer__link { font-size: 14px; color: #545454; line-height: 1.5; transition: color .15s; }
.wf-footer a.wf-footer__link:hover { color: #5c3d7a; }
.wf-footer__contact { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; color: #303030; transition: color .15s; }
.wf-footer__contact--strong { font-weight: 600; }
.wf-footer__contact--muted { color: #707070; }
a.wf-footer__contact:hover { color: #5c3d7a; }
.wf-footer__ic { color: #ab92bf; flex: none; margin-top: 1px; display: inline-flex; }
.wf-footer__social-row { display: flex; gap: 12px; margin-top: 4px; }
.wf-footer a.wf-footer__social { width: 38px; height: 38px; border-radius: 999px; background: #fff; border: 1px solid #e4e0ea; display: flex; align-items: center; justify-content: center; color: #5c3d7a; transition: all .15s; }
.wf-footer a.wf-footer__social:hover { background: #5c3d7a; color: #fff; border-color: #5c3d7a; }
.wf-footer__bottom { border-top: 1px solid #ece7f2; background: var(--wf-footer-bg, #fbf9fd); font-size: 13px; color: #55555c; padding: 18px 64px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; }
.wf-footer__bottom-inner { width: 100%; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; }
.wf-block--constrained .wf-clb__inner { max-width: var(--wfc-content-max); margin-inline: auto; }
/* רוחב הבלוק = מותאם: cap the footer content, keep backgrounds full-bleed */
.wf-block--constrained .wf-footer__content,
.wf-block--constrained .wf-footer__bottom-inner,
.wf-block--constrained .wf-footer__m {
  max-width: var(--wfc-content-max);
  margin-inline: auto;
}
.wf-footer a.wf-footer__legal-link { color: #6b6b74; transition: color .15s; }
.wf-footer a.wf-footer__legal-link:hover { color: #5c3d7a; }

/* Mobile layout (<900px) */
.wf-footer__m { padding: 36px 24px 28px; background: linear-gradient(160deg, #f6f1fa 0%, #fdfcff 55%); }
.wf-footer__m .wf-footer__brand { font-size: 26px; }
.wf-footer__m .wf-footer__about { margin-top: 12px; max-width: none; }
/* `.wf-footer a` above sets `color: inherit` at (0,1,1), which beat a plain
 * `.wf-footer__cta` at (0,1,0) — so the button's text inherited the footer's
 * #303030 and sat dark-grey on dark-purple, about 1.5:1. The hover rule is
 * (0,2,0) and did win, which is why it only looked right under the pointer.
 * The element in the selector is what fixes it, not an !important. */
.wf-footer a.wf-footer__cta { margin-top: 20px; display: flex; align-items: center; justify-content: center; gap: 10px; background: #5c3d7a; color: #fff; font-weight: 700; font-size: 15px; border-radius: 10px; padding: 14px; transition: background .15s; }
.wf-footer a.wf-footer__cta:hover { background: #3d2a55; color: #fff; }
.wf-footer__acc-wrap { margin-top: 20px; border-top: 1px solid #ece7f2; }
.wf-footer__acc-btn { width: 100%; background: none; border: none; border-bottom: 1px solid #ece7f2; padding: 16px 2px; display: flex; justify-content: space-between; align-items: center; cursor: pointer; font-family: inherit; font-size: 15px; font-weight: 700; color: #303030; text-align: start; }
.wf-footer__acc-sign { color: #ab92bf; font-size: 20px; font-weight: 400; }
.wf-footer__acc-body { display: none; flex-direction: column; gap: 12px; padding: 14px 2px 18px; border-bottom: 1px solid #ece7f2; }
.wf-footer__acc-body.open { display: flex; }
.wf-footer__m-contact { margin-top: 24px; display: flex; flex-direction: column; gap: 14px; }
.wf-footer__m .wf-footer__social-row { margin-top: 24px; }
/* Names the element too, or it would no longer outrank the base rule above. */
.wf-footer__m a.wf-footer__social { width: 40px; height: 40px; }
.wf-footer__bottom--m { padding: 16px 24px; text-align: center; font-size: 12px; justify-content: center; }

/* Breakpoint: desktop layout >=900px, mobile layout below */
@media (max-width: 899.98px) { .wf-footer__d { display: none; } }
@media (min-width: 900px) { .wf-footer__m-wrap { display: none; } }

/* ============================================================
   Desktop overrides — MUST stay at the END of this file: they share
   specificity with the per-block base rules above, and the later rule
   wins. Moving them earlier silently disables them for any block whose
   base styles are defined below their position (coll/ws/tst/ig...).
   ============================================================ */
/* Desktop: block headings match the CURRENT live homepage typography -
   title 40px/600/#000, subtitle 24px/400/#545454, airy spacing.
   Purple subscription block keeps its white palette (sizes only);
   .wf-pc.is-dark keeps white via higher specificity. */
@media (min-width: 1025px) {
  .wf-quicklinks__title, .wf-pc__title, .wf-ws__title, .wf-coll__title,
  .wf-tst__title, .wf-ig__title, .wf-why__title, .wf-faq__title {
    font-size: 40px; font-weight: 600; color: #000; line-height: 1.2; margin-bottom: 10px;
  }
  .wf-quicklinks__sub, .wf-pc__sub, .wf-ws__sub, .wf-coll__sub, .wf-tst__sub, .wf-ig__sub {
    font-size: 24px; font-weight: 400; color: #545454; line-height: 1.4; margin-top: 0;
  }
  .wf-sub__title { font-size: 40px; font-weight: 600; line-height: 1.2; margin-bottom: 10px; }
  .wf-sub__subtitle { font-size: 24px; font-weight: 400; line-height: 1.4; }
  .wf-quicklinks__head, .wf-pc__head, .wf-sub__head, .wf-ws__head,
  .wf-tst__head, .wf-coll__head, .wf-ig__head {
    margin-bottom: 28px;
  }
}

/* Desktop: uniform 40px top/bottom padding on all content blocks
   (announcement/header/hero excluded - hero stays flush to the header) */
@media (min-width: 1025px) {
  .wf-quicklinks, .wf-pc, .wf-ws, .wf-ig,
  .wf-sub, .wf-coll, .wf-promo, .wf-tst, .wf-why, .wf-faq {
    padding-block: 40px;
  }
}

/* Desktop: all block section headings centered */
@media (min-width: 1025px) {
  .wf-quicklinks__head, .wf-pc__head, .wf-sub__head, .wf-ws__head, .wf-tst__head,
  .wf-coll__head, .wf-ig__head, .wf-why__title, .wf-faq__title,
  .wf-sub__pick-head {
    text-align: center;
  }
  .wf-sub__badge { display: table; margin: 0 auto 12px; }
}

/* ============================================================
   Responsive header + announcement modes (3d→3a) — desktop overrides,
   part of the end-of-file override zone (equal specificity, later wins
   over the 1a/1b base rules above). Keep AFTER the base sections.
   ============================================================ */

/* ── 3c · tablet 640-999px ── */
@media (min-width: 640px) {
  .wf-anno { height: 40px; font-size: 14px; }
  .wf-anno.is-collapsed { height: 0; }
  .wf-anno__emoji { font-size: 14px; }
  .wf-header__inner { height: 66px; padding: 0 18px; }
  .wf-header__circ { width: 44px; height: 44px; min-width: 44px; max-width: 44px; }
  .wf-header__wordmark { font-size: 22px; }
  .wf-header__cart-count { min-width: 18px; height: 18px; padding: 0 4px; font-size: 10px; }
}

/* ── 3b · small desktop 1000-1199px — circle actions + full nav ── */
@media (min-width: 1000px) {
  .wf-header__inner { height: 68px; padding: 0 100px; gap: 16px; max-width: none; }
  .wf-header__burger, .wf-header__mobile-actions { display: none; }
  .wf-header__actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
  /* actions collapse to 40px circles with title tooltips */
  .wf-header__chip { width: 40px; padding: 0; }
  .wf-header__chip-label { display: none; }
  .wf-header__chip .wf-header__cart-count { position: absolute; top: -4px; left: -4px; }
  /* active tints: logged-in account chip + non-empty cart */
  .wf-header__chip--account.is-in,
  .wf-header__chip--cart.has-items {
    background: #ede6f7; border-color: #d4c4e3; color: #5c3d7a;
  }
  .wf-header__chip.wf-header__cart--fk .fkcart-item-count { position: absolute; top: -4px; left: -4px; }
  .wf-header__nav {
    display: flex;
    align-items: center;
    gap: 30px;
    font-size: 14.5px;
    font-weight: 500;
    flex-shrink: 0;
  }
  .wf-header__nav-slot { gap: 1px; }
  .wf-header__logo { flex: 0 0 auto; text-align: start; position: static; left: auto; transform: none; width: auto; max-width: none; }
  .wf-header .wf-header__logo img, .wf-header .wf-header__logo-img { height: var(--wf-logo-h, 50px); }
}

/* ── 3a · large desktop >=1200px — labeled chips + sticky shrink 72→60 ── */
@media (min-width: 1200px) {
  /* cart total (₪) between the icon and the count — labeled-chip mode only */
  .wf-header__chip.wf-header__cart--fk.has-items .fkcart-shortcode-price {
    display: inline-block; font-size: 16px; font-weight: 700; color: #303030; white-space: nowrap;
  }
  .wf-header__chip.wf-header__cart--fk .fkcart-shortcode-icon-wrap { gap: 6px; }
  .wf-anno { height: 42px; }
  .wf-anno.is-collapsed { height: 0; }
  .wf-anno__emoji { font-size: 15px; }
  .wf-header__inner { height: 72px; padding: 0 100px; gap: 20px; }
  .wf-header__chip { width: auto; padding: 0 12px; }
  .wf-header__chip-label { display: inline; }
  /* cart chip keeps its inline count pill (spec 3a) */
  .wf-header__chip .wf-header__cart-count { position: static; min-width: 19px; height: 19px; padding: 0 5px; font-size: 11px; }
  .wf-header__chip.wf-header__cart--fk .fkcart-shortcode-count.fkcart-item-count { position: static; }
  .wf-header__nav { gap: 30px; font-size: 15px; }
  .wf-header__nav-slot { gap: 2px; }
  .wf-header__wordmark { font-size: 23px; }
  /* scrolled: header shrinks, logo eases down */
  .wf-header.is-stuck .wf-header__inner { height: 60px; }
  .wf-header.is-stuck .wf-header__wordmark { font-size: 22px; }
}

/* >=1440: the nav is centered on the PAGE via a 3-column grid with EQUAL
   side tracks (1fr auto 1fr) — no absolute/transform, so the nav never
   becomes the containing block for the mega panels (position:absolute nav
   shrank them to nav width). Below 1440 the row is too tight — the flex
   flow stays. */
@media (min-width: 1440px) {
  .wf-header__inner { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; }
  .wf-header__actions { justify-self: start; }
  .wf-header__nav { justify-self: center; }
  .wf-header__logo { justify-self: end; }
}

/* circle-links home block — desktop: centered head like the other blocks
   (must stay in the EOF override zone) */
@media (min-width: 1025px) {
  .wf-clb__head { text-align: center; }
  .wf-clb { padding-top: 40px; padding-bottom: 40px; }
}

/* circle-links row — desktop sizes (base is mobile-first; EOF override zone) */
@media (min-width: 768px) {
  .wf-circles { gap: 18px; }
  .wf-circles__item { width: 100px; }
  .wf-circles__circle { width: 88px; height: 88px; min-width: 88px; max-width: 88px; }
  .wf-circles__label { font-size: 14px; }
}

/* ══════════════════════════════════════════════════════════════
   ARCHIVE PAGE (wf-arch) — self-contained section, mobile-first.
   ══════════════════════════════════════════════════════════════ */
/* Card min-width 240px drives everything: container = 6x240 + 5 gaps + gutter,
   and each column count kicks in only when 240px cards actually fit. */
.wf-arch { font-family: var(--wfc-font); background: #fafafa; padding-bottom: 8px; --arch-cols: 2; --arch-gap: 12px; }
.wf-arch__inner { max-width: 1572px; margin: 0 auto; padding: 0 var(--wfc-gutter); }
@media (min-width: 860px)  { .wf-arch { --arch-cols: 3; --arch-gap: 20px; } }
@media (min-width: 1140px) { .wf-arch { --arch-cols: 4; } }
/* Five is the ceiling. Six fitted, but only ever inside the 1572px container,
   which made every card 238px wide — narrower than the 280px the product
   carousel settled on, and the titles and prices paid for it. At five the card
   is 290px and the row still fills the width. */
@media (min-width: 1340px) { .wf-arch { --arch-cols: 5; } }
.wf-arch__crumbs { display: flex; align-items: center; gap: 8px; padding: 16px 2px 6px; font-size: 12px; color: #999; flex-wrap: wrap; }
.wf-arch__crumbs a { color: #999; text-decoration: none; }
.wf-arch__crumbs a:hover { color: #5c3d7a; }
.wf-arch__crumb-cur { color: #5c3d7a; font-weight: 600; }

/* Full-bleed hero, flush to the header (no radius, no side borders). */
.wf-arch__hero { background: linear-gradient(120deg, #f5ebf2, #faf8fc 65%); border-bottom: 1px solid #e8dff0; overflow: hidden; }
.wf-arch__hero-in { max-width: 1572px; margin: 0 auto; padding: 0 var(--wfc-gutter); display: flex; flex-wrap: wrap; min-height: 186px; }
.wf-arch__hero .wf-arch__crumbs { padding: 0 0 8px; }
.wf-arch__hero-txt { flex: 2 1 300px; padding: 18px 0; display: flex; flex-direction: column; justify-content: center; gap: 6px; }
.wf-arch__eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .4px; color: #ab92bf; }
.wf-arch__title { font-size: clamp(28px, 5.5vw, 44px); font-weight: 700; color: #3d2a55; line-height: 1.12; margin: 0; }
.wf-arch__sub { font-size: clamp(15px, 2.2vw, 18px); color: #707070; line-height: 1.2; margin: 0; max-width: 560px; }
.wf-arch__hero-img { flex: 1 1 220px; min-height: 160px; background-size: cover; background-position: center; }
.wf-arch__plainhead { padding: 6px 0 2px; }

.wf-arch__promo { display: flex; align-items: center; gap: 16px; background: linear-gradient(120deg, #f3f0ff, #faf8fc); border: 1px solid #e8dff0; border-radius: 12px; padding: 14px 18px; margin: 40px 0; flex-wrap: wrap; }
.wf-arch__promo-ico { width: 44px; height: 44px; min-width: 44px; max-width: 44px; flex: none; box-sizing: border-box; border-radius: 12px; background: #5c3d7a; color: #fff; display: flex; align-items: center; justify-content: center; }
.wf-arch__promo-txt { flex: 1; min-width: 180px; }
.wf-arch__promo-title { font-size: 16px; font-weight: 700; color: #3d2a55; }
.wf-arch__promo-sub { font-size: 13px; color: #707070; margin-top: 2px; }
.wf-arch__promo-cta { background: #5c3d7a; color: #fff; font-weight: 700; font-size: 14px; padding: 10px 20px; border-radius: 8px; white-space: nowrap; text-decoration: none; }
.wf-arch__promo-cta:hover { background: #3d2a55; }
.wf-arch__coupon { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.wf-arch__coupon-code { display: inline-flex; align-items: center; background: #fff; border: 1.5px dashed #ab92bf; border-radius: 8px; padding: 8px 14px; font-weight: 700; color: #5c3d7a; letter-spacing: 1.5px; font-size: 15px; }
.wf-arch__coupon-btn { font-family: inherit; font-size: 14px; font-weight: 700; padding: 10px 22px; border-radius: 8px; cursor: pointer; border: 0; background: #5c3d7a; color: #fff; transition: background .15s; white-space: nowrap; }
.wf-arch__coupon-btn:hover { background: #3d2a55; }
.wf-arch__coupon-btn.is-done { background: #e9f7ef; color: #1a8a4a; cursor: default; }

.wf-arch__stars { margin: 40px 0 6px; }
.wf-arch__stars-head { display: flex; align-items: center; gap: 9px; margin-bottom: 12px; }
.wf-arch__sarrows { display: none; }
.wf-arch__stars-head h2 { font-size: 20px; font-weight: 700; color: #303030; margin: 0; }
.wf-arch__stars-note { font-size: 12px; color: #999; font-weight: 600; }
/* Mobile-first: banner on its own row, then a 100%-width peek carousel. */
.wf-arch__stars-row { display: block; }
.wf-arch__feat { position: relative; display: block; min-height: 220px; border-radius: 14px; overflow: hidden; background: #efeafb; margin-bottom: var(--arch-gap); }
.wf-arch__feat-slide { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transition: opacity .5s ease; }
.wf-arch__feat-slide.is-on { opacity: 1; }
.wf-arch__feat-shade { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(30,20,45,.78), rgba(30,20,45,.05) 55%); }
.wf-arch__feat-badge { position: absolute; top: 14px; right: 14px; background: #ab92bf; color: #fff; font-size: 12px; font-weight: 700; padding: 5px 12px; border-radius: 999px; }
.wf-arch__feat-meta { position: absolute; bottom: 0; right: 0; left: 0; padding: 16px 18px; color: #fff; }
.wf-arch__feat-meta strong { display: block; font-size: 21px; font-weight: 700; margin-bottom: 2px; }
.wf-arch__feat-meta em { font-style: normal; font-size: 14px; color: #efeafb; }
.wf-arch__stars-strip { display: flex; gap: var(--arch-gap); overflow-x: auto; padding-bottom: 6px; -webkit-overflow-scrolling: touch; scrollbar-width: none; scroll-snap-type: x mandatory; }
.wf-arch__stars-strip::-webkit-scrollbar { display: none; }
/* Star cards always match the grid card width — stacked banner rows show
   exactly --arch-cols whole cards, scrolling for the rest. */
.wf-arch__star-cell { scroll-snap-align: start; width: calc((100% - (var(--arch-cols) - 1) * var(--arch-gap)) / var(--arch-cols)); }
@media (max-width: 859px) {
  /* Mobile: ~60% card + peek (the home-carousel feel) so the scroll is obvious. */
  .wf-arch__star-cell { width: calc((100% - var(--arch-gap)) / 1.67); }
  /* TEMP (Aviram, 2026-07-26): stars strip OFF on mobile — only the rotating
     banner shows. Delete this one rule to re-enable (the peek fix above stays). */
  .wf-arch__stars-strip { display: none; }
  .wf-arch__feat { margin-bottom: 0; }
}
@media (min-width: 1140px) {
  /* Banner beside the strip: banner = 2 grid columns, strip = the rest,
     showing EXACTLY cols-2 whole cards (4 / 3 / 2 — never a partial). */
  .wf-arch__stars-row { display: grid; grid-template-columns: repeat(var(--arch-cols), 1fr); gap: var(--arch-gap); align-items: stretch; }
  .wf-arch__feat { grid-column: span 2; margin-bottom: 0; min-height: 260px; }
  .wf-arch__stars-strip { grid-column: span calc(var(--arch-cols) - 2); }
  .wf-arch__star-cell { width: calc((100% - (var(--arch-cols) - 3) * var(--arch-gap)) / (var(--arch-cols) - 2)); }
}
.wf-arch__star-cell { position: relative; flex: none; }
/* ROUND-CONTROL GUARD: fixed circle, one inset, flex none. */
.wf-arch__star-cell .wf-card { height: 100%; }
/* Inspiration mode: unified CTA under every card (grid + stars). */
/* GRID BLOWOUT GUARD: grid items default to min-width:auto, so the one-line
   (nowrap) card title forces tracks as wide as the longest product name.
   min-width:0 lets 1fr tracks stay equal and the title ellipsize. */
.wf-arch__cell { min-width: 0; position: relative; }
.wf-arch__cell .wf-card { max-width: 100%; }
.wf-arch.has-filters .wf-arch__main, .wf-arch.has-filters .wf-arch__filters { min-width: 0; }
/* Workshop mode: event date/time pill over the card. ROUND-CONTROL GUARD: one inset. */
.wf-arch__event-chip { position: absolute; top: 10px; right: 10px; left: auto; z-index: 3; background: rgba(61,42,85,.92); color: #fff; font-size: 12px; font-weight: 700; padding: 5px 13px; border-radius: 999px; pointer-events: none; white-space: nowrap; }
.wf-arch__cell-cta {
  display: block; margin-top: 8px; text-align: center;
  background: #5c3d7a; color: #fff; font-size: 14px; font-weight: 700;
  padding: 10px 14px; border-radius: 8px; text-decoration: none;
  transition: background .15s ease;
}
.wf-arch__cell-cta:hover, .wf-arch__cell-cta:focus-visible { background: #3d2a55; color: #fff; }
.wf-arch__cell-cta:focus-visible { outline: 2px solid #ab92bf; outline-offset: 2px; }
@media (min-width: 1140px) {
  .wf-arch__sarrows { display: inline-flex; gap: 8px; margin-inline-start: auto; }
  .wf-arch__sarrows[hidden] { display: none; }
  .wf-arch__sarrow {
    display: flex; align-items: center; justify-content: center; flex: none;
    box-sizing: border-box; width: 46px; height: 46px; min-width: 46px; max-width: 46px; padding: 0;
    border-radius: 50%; border: 1px solid #d4c4e3; background: var(--wfc-surface-soft, #f3f0ff); color: var(--wfc-primary-deep, #3d2a55);
    cursor: pointer; box-shadow: 0 2px 8px rgba(92,61,122,.10);
    transition: background 150ms ease, border-color 150ms ease;
  }
  .wf-arch__sarrow:hover { background: #ece6fb; border-color: #ab92bf; }
}

.wf-arch__toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin: 40px 0; padding-bottom: 14px; border-bottom: 1px solid #e8e0f0; }
.wf-arch__count { font-size: 18px; color: #707070; }
.wf-arch__count strong { color: #303030; }
.wf-arch__tools { display: flex; align-items: center; gap: 8px; }
.wf-arch__filter-btn { display: inline-flex; align-items: center; gap: 7px; font-family: inherit; font-size: 14px; font-weight: 600; padding: 8px 15px; border-radius: 7px; cursor: pointer; background: #fff; border: 1px solid #d9d9d9; color: #303030; }
.filters-open .wf-arch__filter-btn { background: #f3f0ff; border-color: #ab92bf; color: #5c3d7a; }
.wf-arch__filter-badge { background: #5c3d7a; color: #fff; font-size: 11px; font-weight: 700; min-width: 18px; height: 18px; max-width: 30px; box-sizing: border-box; flex: none; padding: 0 5px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; }
.wf-arch__sort-label { font-size: 13px; color: #707070; font-weight: 600; }
.wf-arch__sort-wrap { position: relative; }
.wf-arch__sort-wrap select { appearance: none; background: #fff; border: 1px solid #d9d9d9; border-radius: 7px; padding: 8px 14px 8px 30px; font-size: 14px; font-weight: 600; color: #303030; font-family: inherit; cursor: pointer; }

.wf-arch__layout { display: flex; gap: 26px; align-items: flex-start; margin-top: 0; flex-wrap: wrap; }
.wf-arch__filters { display: none; }
.wf-arch__filters.is-open { display: block; flex: 1 1 100%; order: -1; background: #fff; border: 1px solid #e8e0f0; border-radius: 12px; padding: 6px 18px 12px; box-shadow: 0 2px 8px rgba(92,61,122,.06); }
.wf-arch__filters-head { display: flex; justify-content: space-between; align-items: center; margin: 10px 0 6px; }
.wf-arch__filters-head h3 { font-size: 16px; font-weight: 700; color: #303030; margin: 0; }
.wf-arch__filters-head > span { display: flex; align-items: center; gap: 14px; }
.wf-arch__clear { background: none; border: 0; font-size: 13px; color: #ab92bf; font-weight: 600; cursor: pointer; font-family: inherit; padding: 0; }
.wf-arch__clear:hover { color: #5c3d7a; }
.wf-arch__filters-close { background: none; border: 0; cursor: pointer; padding: 0; color: #707070; font-size: 20px; line-height: 1; }
.wf-arch__fgroup { border-top: 1px solid #e8e0f0; padding: 14px 0; }
.wf-arch__ftitle { font-size: 14px; font-weight: 700; color: #303030; margin-bottom: 12px; }
.wf-arch__ftitle--range { display: flex; justify-content: space-between; align-items: baseline; }
.wf-arch__ftitle--range span { font-size: 13px; color: #5c3d7a; font-weight: 700; }
.wf-arch__frow { display: flex; align-items: center; gap: 10px; font-size: 14px; color: #303030; cursor: pointer; margin-bottom: 9px; }
.wf-arch__frow input { position: absolute; opacity: 0; pointer-events: none; }
.wf-arch__fbox { width: 19px; height: 19px; min-width: 19px; max-width: 19px; box-sizing: border-box; flex: none; border-radius: 5px; border: 1.5px solid #d9d9d9; background: #fff; display: flex; align-items: center; justify-content: center; transition: all .12s; }
.wf-arch__frow input:checked + .wf-arch__fbox { border-color: #5c3d7a; background: #5c3d7a; }
.wf-arch__frow input:checked + .wf-arch__fbox::after { content: ""; width: 9px; height: 5px; border: 2px solid #fff; border-top: 0; border-right: 0; transform: rotate(-45deg) translateY(-1px); }
.wf-arch__flabel { flex: 1; }
.wf-arch__fcount { font-size: 12px; color: #bbb; }
.wf-arch__fchips { display: flex; flex-wrap: wrap; gap: 8px; }
.wf-arch__fchip { font-family: inherit; font-size: 13px; font-weight: 600; padding: 7px 14px; border-radius: 999px; cursor: pointer; transition: all .12s; border: 1px solid #e1e1e1; background: #fff; color: #707070; }
.wf-arch__fchip.is-on { border-color: #ab92bf; background: #f3f0ff; color: #5c3d7a; }
.wf-arch__ptrack { position: relative; height: 4px; background: #e8e0f0; border-radius: 999px; margin: 4px 4px 14px; }
.wf-arch__ptrack span { position: absolute; top: 0; bottom: 0; right: 0; left: 0; border-radius: 999px; background: #5c3d7a; }
.wf-arch__pinputs { display: flex; gap: 10px; }
.wf-arch__pinputs input { flex: 1; accent-color: #5c3d7a; cursor: pointer; }

.wf-arch__main { flex: 1 1 100%; min-width: 280px; }
.wf-arch__grid { display: grid; grid-template-columns: repeat(var(--arch-cols), 1fr); gap: var(--arch-gap); }
.wf-arch__cell[hidden] { display: none; }
.wf-arch__empty { text-align: center; padding: 56px 20px; background: #fff; border: 1px dashed #d4c4e3; border-radius: 14px; }
.wf-arch__empty-ico { width: 64px; height: 64px; min-width: 64px; max-width: 64px; box-sizing: border-box; flex: none; border-radius: 999px; background: #f3f0ff; color: #ab92bf; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 16px; }
.wf-arch__empty-title { font-size: 19px; font-weight: 700; color: #3d2a55; margin-bottom: 6px; }
.wf-arch__empty p { font-size: 14px; color: #707070; max-width: 360px; margin: 0 auto 20px; }
.wf-arch__empty-btn { background: #5c3d7a; color: #fff; font-size: 14px; font-weight: 700; padding: 11px 26px; border-radius: 8px; border: 0; cursor: pointer; font-family: inherit; }
.wf-arch__empty-btn:hover { background: #3d2a55; }
.wf-arch__more-wrap { display: flex; justify-content: center; margin-top: 30px; }
/* JS toggles visibility via the hidden attribute; explicit display rules
   (flex/inline-flex) above would otherwise override it. */
.wf-arch [hidden] { display: none !important; }
.wf-arch__more { background: #fff; border: 1px solid #ab92bf; color: #5c3d7a; font-size: 15px; font-weight: 700; padding: 13px 40px; border-radius: 8px; cursor: pointer; font-family: inherit; }
.wf-arch__more:hover { background: #f3f0ff; color: #303030; }

/* ============ HUB PAGES (wf_hub) — HUB-01 ============ */
.wf-hub__hero { background: linear-gradient(120deg, #f5ebf2, #faf8fc 65%); border-bottom: 1px solid #e8dff0; overflow: hidden; }
.wf-hub__hero-in { max-width: 1572px; margin: 0 auto; padding: 0 var(--wfc-gutter); display: flex; flex-wrap: wrap; min-height: 210px; }
.wf-hub__hero-txt { flex: 2 1 300px; padding: 20px 0; display: flex; flex-direction: column; justify-content: center; gap: 8px; }
.wf-hub__title { font-size: clamp(28px, 5.5vw, 44px); font-weight: 700; color: #3d2a55; line-height: 1.12; margin: 0; }
.wf-hub__sub { font-size: clamp(15px, 2.2vw, 18px); color: #707070; line-height: 1.4; margin: 0; max-width: 560px; }
.wf-hub__hero-img { flex: 1 1 220px; min-height: 170px; background-size: cover; background-position: center; }
.wf-hub__inner { max-width: 1572px; margin: 0 auto; padding: 0 var(--wfc-gutter) 10px; }
.wf-hub__section { margin-top: clamp(28px, 5vw, 44px); }
.wf-hub__h2 { font-size: clamp(20px, 3.2vw, 26px); font-weight: 700; color: #3d2a55; margin: 0 0 16px; }
.wf-hub__cta { display: inline-flex; align-items: center; justify-content: center; background: #5c3d7a; color: #fff; font-size: 14px; font-weight: 700; padding: 11px 26px; border-radius: 8px; text-decoration: none; width: fit-content; }
.wf-hub__cta:hover { background: #3d2a55; color: #fff; }
/* Category / promo cards — 4 desktop, 2 mobile */
.wf-hub__cards-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.wf-hub__card { display: flex; flex-direction: column; background: #fff; border: 1px solid #eee4f4; border-radius: 14px; overflow: hidden; text-decoration: none; transition: box-shadow .15s ease; }
.wf-hub__card:hover { box-shadow: 0 6px 20px rgba(92,61,122,.13); }
.wf-hub__card-media { position: relative; display: block; aspect-ratio: 4 / 3; background: linear-gradient(120deg, #f3f0ff, #efe6f2); background-size: cover; background-position: center; }
.wf-hub__card-badge { position: absolute; top: 9px; right: 9px; left: auto; background: rgba(255,255,255,.94); color: #5c3d7a; font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; }
.wf-hub__card-body { padding: 11px 13px 13px; display: flex; flex-direction: column; gap: 3px; }
.wf-hub__card-title { font-size: 15px; font-weight: 700; color: #303030; }
.wf-hub__card-desc { font-size: 12.5px; color: #808080; line-height: 1.45; }
/* Chip links */
.wf-hub__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.wf-hub__chip { background: #fff; border: 1px solid #ab92bf; color: #5c3d7a; font-size: 13.5px; font-weight: 600; padding: 8px 18px; border-radius: 999px; text-decoration: none; }
.wf-hub__chip:hover { background: #f3f0ff; color: #3d2a55; }
/* Product grid — same column math family as the archive grid */
.wf-hub__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.wf-hub__cell { min-width: 0; }
.wf-hub__more-wrap { display: flex; justify-content: center; margin-top: 22px; }
.wf-hub__more { background: #fff; border: 1px solid #ab92bf; color: #5c3d7a; font-size: 15px; font-weight: 700; padding: 12px 38px; border-radius: 8px; text-decoration: none; }
.wf-hub__more:hover { background: #f3f0ff; color: #303030; }
/* Editorial banner */
.wf-hub__banner { position: relative; border-radius: 16px; overflow: hidden; background: linear-gradient(120deg, #3d2a55, #5c3d7a); background-size: cover; background-position: center; }
.wf-hub__banner-in { position: relative; padding: clamp(26px, 5vw, 46px); background: linear-gradient(90deg, rgba(38,24,56,.72), rgba(38,24,56,.25)); display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.wf-hub__banner-title { font-size: clamp(20px, 3.4vw, 30px); font-weight: 700; color: #fff; margin: 0; }
.wf-hub__banner-text { font-size: clamp(13.5px, 2vw, 16px); color: rgba(255,255,255,.88); margin: 0; max-width: 560px; line-height: 1.5; }
.wf-hub__banner .wf-hub__cta { background: #fff; color: #3d2a55; }
.wf-hub__banner .wf-hub__cta:hover { background: #f3f0ff; color: #3d2a55; }
/* Benefits */
.wf-hub__benefits { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.wf-hub__benefit { background: #faf8fc; border: 1px solid #eee4f4; border-radius: 12px; padding: 16px; }
.wf-hub__benefit-title { font-size: 14.5px; font-weight: 700; color: #3d2a55; margin-bottom: 4px; }
.wf-hub__benefit-text { font-size: 13px; color: #707070; line-height: 1.5; margin: 0; }
.wf-hub__notice { margin-top: 22px; font-size: 12.5px; color: #909090; border: 1px dashed #d4c4e3; border-radius: 10px; padding: 10px 14px; }
@media (min-width: 900px) {
  .wf-hub__hero-txt { padding: 30px 30px 30px 0; }
  .wf-hub__cards-grid { grid-template-columns: repeat(4, 1fr); gap: 20px; }
  .wf-hub__grid { grid-template-columns: repeat(4, 1fr); gap: 20px; }
  .wf-hub__benefits { grid-template-columns: repeat(4, 1fr); gap: 16px; }
}
@media (min-width: 1340px) {
  .wf-hub__grid { grid-template-columns: repeat(5, 1fr); }
}

.wf-arch__seo { margin: 44px 0 8px; padding: 24px 4px 8px; border-top: 1px solid #e8e0f0; }
.wf-arch__seo h2 { font-size: 18px; font-weight: 700; color: #303030; margin: 0 0 10px; }
.wf-arch__seo p { font-size: 13px; color: #707070; line-height: 1.7; margin: 0 0 10px; }
.wf-arch__seo p:last-child { margin-bottom: 0; }


@media (min-width: 900px) {
  .wf-arch__hero-txt { padding: 26px 30px; }
}
/* The filters rail appears at 5 grid columns; at 4 and below the toolbar
   'סינון' button + drawer take over. The rail occupies EXACTLY one card
   column, so the layout is filter + 4 cards and a card is the same 290px it
   is without filters. That equality is the point: turning filters on must not
   resize the product cards. */
@media (min-width: 1340px) {
  .wf-arch.has-filters .wf-arch__filter-btn { display: none; }
  .wf-arch.has-filters .wf-arch__layout { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--arch-gap); align-items: start; }
  .wf-arch.has-filters .wf-arch__filters { display: block; grid-column: span 1; position: sticky; top: 88px; }
  .wf-arch.has-filters .wf-arch__filters-close { display: none; }
  .wf-arch.has-filters .wf-arch__main { grid-column: span 4; min-width: 0; }
  .wf-arch.has-filters .wf-arch__filters { min-width: 0; }
  .wf-arch.has-filters .wf-arch__grid { grid-template-columns: repeat(4, 1fr); }
}
/* Per-archive custom card width (card_min): the column count derives from the
   available width via auto-fill. Applies from 700px; mobile keeps the default
   2-col system. Placed AFTER the has-filters rules to win either way. */
@media (min-width: 700px) {
  .wf-arch .wf-arch__grid--minw,
  .wf-arch.has-filters .wf-arch__grid--minw {
    grid-template-columns: repeat(auto-fill, minmax(var(--arch-card-min, 240px), 1fr));
  }
}

/* ------------------------------------------------------------------ *
 * The cart drawer opens from the left. Always.
 * ------------------------------------------------------------------ *
 *
 * FunnelKit decides the side from two attributes on its container —
 * data-direction and data-slider-pos — and its own rule for
 * [data-direction="rtl"][data-slider-pos="bottom-left"] is already left: 0.
 * The setting says bottom-left, so where it opened from the right those
 * attributes were not what the stylesheet expected on that page.
 *
 * Rather than chase which page loses which attribute, the side is pinned here
 * for every combination. Physical left, not inset-inline-start: the shop is
 * RTL, so a logical property would put it back on the right, which is the
 * thing being fixed.
 */
#fkcart-modal .fkcart-modal-container .fkcart-preview-ui,
#fkcart-modal .fkcart-modal-container .fkcart-quick-view-drawer {
  right: auto !important;
  left: 0 !important;
}
/* Closed, it waits off-screen to the LEFT. Without this it slides in from the
   right edge and lands on the left, which reads as a glitch rather than a
   drawer. */
#fkcart-modal .fkcart-modal-container .fkcart-preview-ui,
#fkcart-modal .fkcart-modal-container .fkcart-quick-view-drawer {
  transform: translateX(-100%);
}
#fkcart-modal.fkcart-show .fkcart-modal-container .fkcart-preview-ui,
#fkcart-modal.fkcart-show .fkcart-modal-container .fkcart-quick-view-drawer {
  transform: translateX(0) !important;
}
/* The upsell drawer sits beside the panel, so it follows it across. */
#fkcart-modal .fkcart-modal-container .fkcart-drawer {
  right: auto !important;
  left: 420px !important;
}

/* ---------- Split block: text column + image column ----------
   Column shares arrive as fr units on the inner element (--wf-split-text /
   --wf-split-img), so the gap between them is respected. The grid is RTL like
   the page, so the first track is on the right. The tracks are ordered per
   side — image share first when the image is on the right — because the fr
   values bind to track position, not to the element: moving the image into
   the first track with order:-1 alone handed it the TEXT column's share
   (measured: 60/40 rendered as 40/60). Phones stack, image first. Width / background
   / padding / corners are the shell's and arrive as inline style, same as the
   HTML block — nothing here sizes the block. */
.wf-split__inner {
  display: grid;
  grid-template-columns: var(--wf-split-text, 1fr) var(--wf-split-img, 1fr);
  gap: clamp(20px, 4vw, 48px);
  align-items: center;
  padding-inline: var(--wfc-gutter, 20px);
  box-sizing: border-box;
}
.wf-split--img-right .wf-split__inner { grid-template-columns: var(--wf-split-img, 1fr) var(--wf-split-text, 1fr); }
.wf-split--single .wf-split__inner { grid-template-columns: 1fr; }
.wf-split--img-right .wf-split__col--img { order: -1; }
.wf-split__col--text { text-align: start; }
.wf-split__title { margin: 0 0 14px; font-size: clamp(26px, 3vw, 40px); line-height: 1.15; font-weight: 700; }
.wf-split__text { font-size: 17px; line-height: 1.7; }
.wf-split__text p { margin: 0 0 12px; }
.wf-split__text p:last-child { margin-bottom: 0; }
.wf-split__btns { display: flex; flex-wrap: wrap; gap: 12px; justify-content: flex-start; margin-top: 22px; }
.wf-split__col--img img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: var(--wfc-radius, 12px); }
/* Stacking. Two triggers, same result, each column 100%:
   - the viewport is narrow (a phone), or
   - the BLOCK is narrow (the editor's 390px preview iframe, a block set to a
     small custom width, a side column) — a container query, which answers to
     the block's own width rather than the window's.
   Both selectors carry two classes on purpose: the per-side rule above
   (.wf-split--img-right .wf-split__inner) is (0,2,0) and would otherwise
   outrank a one-class mobile rule and keep image-right blocks side by side. */
.wf-split { container-type: inline-size; }
@media (max-width: 767px) {
  .wf-split .wf-split__inner, .wf-split--img-right .wf-split__inner { grid-template-columns: 1fr; gap: 20px; }
  .wf-split .wf-split__col--img { order: -1; }
  .wf-split .wf-split__col--text { text-align: start; }
}
@container (max-width: 767px) {
  .wf-split .wf-split__inner, .wf-split--img-right .wf-split__inner { grid-template-columns: 1fr; gap: 20px; }
  .wf-split .wf-split__col--img { order: -1; }
  .wf-split .wf-split__col--text { text-align: start; }
}

/* ============================================================
   The block shell (wf_block_maxwidth_wrap): block width / colour / padding /
   corners / anchor, the same on every block type. Painted on a wrapper
   OUTSIDE the block's section, so a unit's own desktop padding-block (the
   1025px rule above) shows the chosen colour and never the page. A chosen
   colour replaces the unit's own colour and its dashed dividers; a chosen
   padding replaces the unit's own vertical padding rather than adding to it.
   Content width is the separate .wf-block--constrained cap on the inner.
   ============================================================ */
.wf-shell--card { max-width: var(--wf-block-max); margin-inline: auto; box-sizing: border-box; }
.wf-shell--card.wf-shell--radius { overflow: hidden; }
.wf-shell--bg > section, .wf-shell--bg > .wf-block--constrained > section, .wf-shell--bg > .wf-block--fullbleed > section { background: transparent; border-block: 0; }
.wf-shell--pad > section, .wf-shell--pad > .wf-block--constrained > section, .wf-shell--pad > .wf-block--fullbleed > section { padding-block: 0; }
/* Content 'full' inside a narrower block: out of the card, edge to edge —
   the carousel-full technique. The card must not clip it, so corners give way. */
.wf-block--fullbleed { width: 100vw; max-width: 100vw; margin-inline: calc(50% - 50vw); }
.wf-shell--card.wf-shell--content-full { overflow: visible; }
