/* =============================================================================
   Evenza — Landing page design system  (landing.css)
   -----------------------------------------------------------------------------
   Loaded ONLY by index.html, AFTER styles.css. It re-palettes + re-types the
   landing page to the Evenza brand deck (the source of truth) and styles the
   renovated premium sections. Scoped with `.lp` (on <body>) so it reliably
   wins over styles.css without !important, and never touches the other 54
   pre-localized pages (which don't load this file).

   Brand deck tokens (verified, _BRAND_LOCK.md):
     Ivory #FDFBF9 · Soft Linen #F8F3ED · Warm Beige #ECE7E0 · Sand Taupe #C3B8AA
     Muted Gold #B89562 (PRIMARY ACCENT) · Olive Sage #8D8A74 (SECONDARY)
     Deep Espresso #312518 (text / dark surfaces / PRIMARY BUTTON fill)
   Type: Bodoni Moda (display) · Satoshi (body/UI) · Tajawal (Arabic)
   Rule: gold is an ACCENT (hairlines, eyebrows, icons, active) — never small
   body text on light (fails AA). Use --gold-ink for small gold text.
   ========================================================================== */

/* ---------- Self-hosted Satoshi (CSP: font-src 'self') --------------------- */
@font-face {
  font-family: 'Satoshi'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('/assets/fonts/satoshi-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Satoshi'; font-style: normal; font-weight: 500; font-display: swap;
  src: url('/assets/fonts/satoshi-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Satoshi'; font-style: normal; font-weight: 700; font-display: swap;
  src: url('/assets/fonts/satoshi-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Satoshi'; font-style: normal; font-weight: 900; font-display: swap;
  src: url('/assets/fonts/satoshi-900.woff2') format('woff2');
}
/* HERO ACCENT FONT — Moglan (the "Event" word). ✅ Commercial license PURCHASED
   2026-06-01 (Pentagonistudio / Creative Market). TODO before launch: replace
   the DEMO build below with the purchased full-version file (the demo ships an
   incomplete glyph set — only the hero word uses it, so it renders fine now).
   "Everywhere" uses Anton; the Arabic accents use Mirza + Changa — all Google
   Fonts, free for commercial use. (Greater Theory was dropped in favour of Anton.) */
@font-face {
  font-family: 'Moglan'; font-style: normal; font-weight: 400; font-display: swap;
  src: url('/assets/fonts/moglan-demo.woff2') format('woff2');
}

/* ---------- Re-palette + re-type the whole landing page -------------------- */
/* These override styles.css :root values. Because landing.css loads only on
   index.html, this brings the entire page (header, footer, JS drawer, forms)
   to the deck palette + type for consistency, in one place. */
:root {
  --ivory:        #FDFBF9;
  --warm-white:   #FFFFFF;
  --cream:        #F8F3ED;   /* Soft Linen  */
  --champagne:    #ECE7E0;   /* Warm Beige  */
  --champagne-soft:#F4EFE7;
  --sand:         #C3B8AA;   /* Sand Taupe  */
  --gold:         #B89562;   /* Muted Gold — accent / hairlines / icons       */
  --gold-ink:     #8A6A3C;   /* darker gold for small text (AA on ivory)      */
  --gold-dark:    #8A6A3C;
  --gold-deep:    #6E5631;
  --gold-soft:    #E7D9C2;
  --gold-tint:    #F5EDDF;
  --olive:        #8D8A74;   /* Olive Sage — secondary accent / muted sub     */
  --blush:        #E5C9BE;
  --vermilion:    #C43A22;   /* alert red — the "Everywhere / كل مكان" chaos word */
  --charcoal:     #312518;   /* Deep Espresso */
  --ink:          #312518;
  --espresso:     #312518;
  --espresso-700: #4A3A28;
  --text:         #312518;
  --text-muted:   #6E6456;   /* AA on ivory  */
  --text-subtle:  #6E6456;   /* darkened to meet WCAG AA (4.5:1) on linen */
  --border:       #ECE7E0;
  --border-soft:  #F2ECE2;
  --quiet-gray:   #8D8A74;

  --serif:  'Bodoni Moda', 'Tajawal', Georgia, 'Times New Roman', serif;
  --arabic: 'Tajawal', system-ui, sans-serif;
  --sans:   'Satoshi', 'Tajawal', system-ui, -apple-system, sans-serif;

  --container: 1200px;
  --r-sm: 10px; --r-md: 16px; --r-lg: 22px; --r-xl: 30px; --r-pill: 999px;
  --shadow-sm: 0 2px 10px -4px rgba(49,37,24,.18);
  --shadow-md: 0 14px 40px -18px rgba(49,37,24,.22);
  --shadow-lg: 0 30px 70px -28px rgba(49,37,24,.30);
  --ease-out: cubic-bezier(.16,1,.3,1);
}

/* ---------- Base typography for the landing page --------------------------- */
body.lp {
  font-family: var(--sans);
  background: var(--ivory);
  color: var(--text);
  font-size: 16px;
  line-height: 1.6;
}
.lp h1, .lp h2, .lp h3, .lp h4 {
  font-family: var(--sans);
  color: var(--ink);
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.18;
}
/* Type system: Satoshi (the brand body/UI face) carries ALL Latin text,
   including display headlines — at heavier weights for presence. Bodoni Moda's
   high-contrast Didone hairlines strained the eyes on screen, so it is no
   longer used on the page. Arabic always renders in Tajawal via fallback. */
.lp .hero-title,
.lp .section-head h2,
.lp .vendor-card-body h2,
.lp #foundingHeading,
.lp .lp-coming h2,
.lp .contact-title,
.lp .app-cta-text h2 {
  font-family: var(--sans);
  font-weight: 700;
  letter-spacing: -0.02em;
}
.lp .hero-title { font-weight: 800; }
/* Arabic headings render in Tajawal (Bodoni has no Arabic glyphs) — give them
   the weight they need to read as display type. */
html[lang="ar"] .lp h1,
html[lang="ar"] .lp h2,
html[lang="ar"] .lp h3 { font-weight: 800; letter-spacing: 0; line-height: 1.22; }
html[lang="ar"] .lp .hero-title { line-height: 1.18; }

.lp .grain { opacity: .1; }

/* Tooltip-free, brand-tinted text selection */
.lp ::selection { background: var(--gold-soft); color: var(--espresso); }

/* ---------- Eyebrow (gold, tracked, hairline) ------------------------------ */
.lp .eyebrow {
  font-family: var(--sans);
  text-transform: uppercase;
  letter-spacing: .2em;
  font-size: .72rem;
  font-weight: 600;
  color: var(--gold-ink);
  margin: 0 0 1rem;
  display: inline-flex;
  align-items: center;
  gap: .6rem;
}
.lp .eyebrow::before { content:''; width: 26px; height: 1.5px; background: var(--gold); display: inline-block; }
html[lang="ar"] .lp .eyebrow { letter-spacing: .04em; }

.lp .accent-word { font-style: normal; color: var(--gold-ink); white-space: nowrap; position: relative; }

/* ── Headline emphasis words (wrapped at runtime by main.js) ───────────────
   Pure typography — no underlines, no strikes.
   .hero-spark  → aspirational noun. EN: Moglan (slim luxury serif), gold, with
                  a continuous "shine" glint sweeping across. AR: Mirza, gold.
   .hero-strike → the chaos word. EN: Anton (ultra-bold condensed caps).
                  AR: Changa 800. Vermilion red = urgency / "the problem".
   (Moglan is a licensed demo build — see @font-face note; Anton/Mirza/Changa
   are free Google Fonts.) */
.lp .hero-spark {
  font-family: 'Moglan', Georgia, serif;
  font-weight: 400; font-style: normal;
  color: var(--gold-ink);  /* fallback if background-clip:text is unsupported */
  font-size: 1.12em; letter-spacing: .004em;
  white-space: nowrap;
  /* "Shine": a sharp specular glint sweeps across the gold letters every ~4.6s */
  background-image: linear-gradient(110deg,
    var(--gold-ink) 0%, var(--gold-ink) 43%, #FFF3D6 49%, #FFFFFF 50%,
    #FFF3D6 51%, var(--gold-ink) 57%, var(--gold-ink) 100%);
  background-size: 300% auto;
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: lp-hero-shine 4.6s ease-in-out infinite;
}
.lp .hero-strike {
  font-family: 'Anton', sans-serif;
  font-weight: 400;
  color: var(--vermilion);
  text-transform: uppercase; letter-spacing: 0;
  font-size: .92em;
  white-space: nowrap;
}
/* Arabic swaps the accent faces (Anton & Moglan have no Arabic glyphs) */
html[lang="ar"] .lp .hero-spark {
  font-family: 'Mirza', cursive; font-weight: 600;
  font-size: 1.22em; letter-spacing: 0;
}
html[lang="ar"] .lp .hero-strike {
  font-family: 'Changa', sans-serif; font-weight: 800;
  text-transform: none; font-size: 1em;
}
/* The shine glint also rides the Arabic "لمناسبتك" (gradient is font-agnostic). */
@keyframes lp-hero-shine {
  0%   { background-position: 160% center; }
  24%  { background-position: -60% center; }
  100% { background-position: -60% center; }
}
@media (prefers-reduced-motion: reduce) {
  .lp .hero-spark { animation: none; -webkit-text-fill-color: var(--gold-ink); }
}

/* ---------- Section rhythm + headers --------------------------------------- */
.lp section { position: relative; }
.lp .section-head { max-width: 640px; margin: 0 auto 3rem; text-align: center; }
.lp .section-head h2 {
  font-size: clamp(1.9rem, 1.2rem + 3vw, 3.1rem);
  margin: 0 0 1rem;
}
.lp .section-sub {
  color: var(--text-muted);
  font-size: 1.05rem;
  line-height: 1.7;
  margin: 0 auto;
  max-width: 58ch;
}
.lp .section-sub-tight { margin-top: .4rem; }

/* =============================================================================
   BUTTONS — deck: primary = espresso fill, gold = accent
   ========================================================================== */
.lp .btn {
  font-family: var(--sans);
  font-weight: 600;
  border-radius: var(--r-pill);
  transition: transform .25s var(--ease-out), box-shadow .25s var(--ease-out), background-color .25s, color .25s, border-color .25s;
  letter-spacing: .005em;
}
.lp .btn-lg { padding: 1.05rem 1.9rem; font-size: 1rem; }

.lp .btn-primary {
  background: var(--espresso);
  color: var(--ivory);
  box-shadow: var(--shadow-sm);
}
.lp .btn-primary::before { display: none; } /* kill styles.css gold gradient */
.lp .btn-primary:hover {
  background: var(--espresso-700);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
  color: var(--ivory);
}
.lp .btn-primary svg { stroke: currentColor; }
/* Arrow SVGs point left by default (= "forward" in RTL). Flip them in LTR so
   they point right (= "forward" in English). */
html[dir="ltr"] .lp .btn > svg:last-child { transform: scaleX(-1); }

.lp .btn-ghost,
.lp .btn-ghost-strong {
  background: transparent;
  color: var(--espresso);
  border: 1.5px solid var(--sand);
}
.lp .btn-ghost-strong { border-color: var(--espresso); }
.lp .btn-ghost:hover,
.lp .btn-ghost-strong:hover {
  background: var(--cream);
  border-color: var(--espresso);
  color: var(--espresso);
  transform: translateY(-2px);
}

/* Gold button — for use on dark espresso surfaces (matches deck dark banner) */
.lp .btn-gold {
  background: var(--gold);
  color: var(--espresso);
  border: 0;
  box-shadow: 0 10px 30px -12px rgba(184,149,98,.7);
}
.lp .btn-gold:hover { background: #C7A876; transform: translateY(-2px); color: var(--espresso); }

.lp .btn:focus-visible {
  outline: 3px solid var(--gold-dark);
  outline-offset: 2px;
}
/* Lock background scroll while a lead/vendor drawer is open (a11y). */
body.lead-drawer-open { overflow: hidden; }

/* =============================================================================
   HEADER — transparent over hero, frosted ivory on scroll
   ========================================================================== */
.lp .site-header { background: transparent; border-bottom: 1px solid transparent; transition: background .3s, box-shadow .3s, border-color .3s; }
.lp .site-header.scrolled {
  background: rgba(253,251,249,.86);
  backdrop-filter: saturate(140%) blur(14px);
  -webkit-backdrop-filter: saturate(140%) blur(14px);
  border-bottom-color: var(--border);
  box-shadow: 0 6px 24px -20px rgba(49,37,24,.5);
}
.lp .brand-word {
  font-family: var(--sans);
  font-weight: 700;
  font-size: 1.4rem;
  letter-spacing: -0.01em;
  color: var(--espresso);
}
.lp .primary-nav a {
  font-family: var(--sans);
  font-weight: 500;
  font-size: .95rem;
  color: var(--text-muted);
  position: relative;
  transition: color .2s;
}
.lp .primary-nav a:hover { color: var(--espresso); }
.lp .primary-nav a::after {
  content:''; position:absolute; inset-inline:0; bottom:-6px; height:1.5px;
  background: var(--gold); transform: scaleX(0); transform-origin: center;
  transition: transform .25s var(--ease-out);
}
.lp .primary-nav a:hover::after { transform: scaleX(1); }
.lp .lang-toggle { border: 1px solid var(--border); border-radius: var(--r-pill); color: var(--text-muted); }
.lp .lang-toggle:hover { background: var(--cream); color: var(--espresso); }
.lp .menu-btn span { background: var(--espresso); }

/* =============================================================================
   HERO
   ========================================================================== */
.lp .hero {
  position: relative;
  padding: clamp(7rem, 6rem + 6vw, 10rem) 0 clamp(3rem, 2rem + 4vw, 5rem);
  overflow: clip;
  background:
    radial-gradient(120% 90% at 85% 0%, var(--cream) 0%, rgba(248,243,237,0) 55%),
    radial-gradient(90% 70% at 0% 10%, var(--gold-tint) 0%, rgba(245,237,223,0) 50%),
    var(--ivory);
}
/* soft gold arc flourish */
.lp .hero::after {
  content:''; position:absolute; inset-inline-end:-12%; top:-18%;
  width: min(60vw, 720px); aspect-ratio: 1; border-radius: 50%;
  border: 1.5px solid rgba(184,149,98,.22);
  box-shadow: inset 0 0 0 28px rgba(184,149,98,.05);
  pointer-events: none; z-index: 0;
}
.lp .hero-content { position: relative; z-index: 2; max-width: 980px; text-align: center; margin-inline: auto; }
.lp .hero .eyebrow { justify-content: center; }
.lp .hero-title {
  font-size: clamp(2.4rem, 1.3rem + 5.2vw, 4.6rem);
  margin: 0 0 1.4rem;
  letter-spacing: -0.02em;
}
html[lang="ar"] .lp .hero-title { letter-spacing: 0; }
.lp .hero-title .line { display: inline; }
.lp .hero-sub {
  font-size: clamp(1.05rem, 1rem + .5vw, 1.3rem);
  color: var(--text-muted);
  max-width: 60ch;
  margin: 0 auto 2rem;
  line-height: 1.7;
}
.lp .hero-cta { display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.lp .hero-cta .btn-lg { font-size: 1.05rem; padding: 1.1rem 2.2rem; }
.lp .hero-trust {
  display: inline-flex; align-items: center; gap: .5rem;
  color: var(--text-muted); font-size: .95rem; margin: 0 0 1.2rem;
}
.lp .hero-trust svg { color: var(--gold-ink); flex: none; }
.lp .hero-tagline {
  display: flex; justify-content: center; align-items: center; gap: .65rem; flex-wrap: wrap;
  color: var(--text-subtle); font-size: .85rem; margin: 0 0 3rem;
}
.lp .hero-tagline .dot { color: var(--gold); }

/* Audience split — two premium cards (vendor + customer form) */
.lp .audience-blocks {
  display: grid; gap: 1.1rem; grid-template-columns: 1fr 1fr;
  max-width: 900px; margin: 0 auto 2.5rem; text-align: start;
}
.lp .audience-block {
  position: relative; padding: 1.6rem 1.5rem;
  border: 1px solid var(--border); border-radius: var(--r-lg);
  background: var(--warm-white); box-shadow: var(--shadow-sm);
  transition: transform .3s var(--ease-out), box-shadow .3s var(--ease-out), border-color .3s;
}
.lp .audience-block:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); border-color: var(--gold-soft); }
.lp .audience-block-vendor { background: linear-gradient(180deg, var(--cream), var(--warm-white)); }
.lp .audience-label {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .14em;
  padding: .3rem .6rem; border-radius: var(--r-pill); margin-bottom: .9rem;
}
.lp .audience-label-vendor { color: var(--gold-ink); background: var(--gold-tint); }
.lp .audience-label-customer { color: var(--olive); background: rgba(141,138,116,.12); }
.lp .audience-block-heading { font-size: 1.3rem; margin: 0 0 .5rem; }
.lp .audience-block-heading-sm { font-size: 1.15rem; }
.lp .audience-block-body { color: var(--text-muted); font-size: .95rem; margin: 0 0 1.1rem; line-height: 1.6; }
.lp .audience-block-cta { width: 100%; justify-content: center; }
.lp .audience-block-support { color: var(--text-subtle); font-size: .82rem; margin: .9rem 0 0; line-height: 1.55; }

/* Honest hero stats */
.lp .hero-stats {
  display: inline-flex; align-items: center; gap: clamp(1rem, 3vw, 2.4rem);
  padding: 1.1rem 1.6rem; border: 1px solid var(--border); border-radius: var(--r-lg);
  background: rgba(255,255,255,.6); backdrop-filter: blur(4px);
}
.lp .hero-stats .stat { text-align: center; }
.lp .hero-stats .stat-value { font-family: var(--sans); font-weight: 800; font-size: 1.9rem; color: var(--espresso); line-height: 1.12; }
html[lang="ar"] .lp .hero-stats .stat-value { font-family: var(--sans); font-weight: 800; }
.lp .hero-stats .stat-label { font-size: .76rem; color: var(--text-muted); margin-top: .35rem; max-width: 14ch; }
.lp .hero-stats .stat-divider { width: 1px; align-self: stretch; background: var(--border); }

.lp .hero-scroll { display: flex; flex-direction: column; align-items: center; gap: .3rem; color: var(--text-subtle); font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; margin-top: 2.6rem; }
.lp .hero-scroll svg { color: var(--gold); animation: lpbob 2.4s var(--ease-out) infinite; }
@keyframes lpbob { 0%,100%{transform:translateY(0)} 50%{transform:translateY(5px)} }

/* =============================================================================
   PROBLEM
   ========================================================================== */
.lp .lp-problem { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; background: var(--ivory); }
.lp .lp-problem-grid {
  display: grid; gap: 1rem; grid-template-columns: repeat(4, 1fr); margin-top: 2.5rem;
}
.lp .lp-pain {
  display: flex; gap: .8rem; align-items: flex-start;
  padding: 1.2rem 1.1rem; border: 1px solid var(--border); border-radius: var(--r-md);
  background: var(--warm-white);
}
.lp .lp-pain svg { color: var(--sand); flex: none; margin-top: .1rem; }
.lp .lp-pain span { font-size: .95rem; color: var(--text); line-height: 1.5; }
.lp .lp-problem-punch {
  text-align: center; margin: 2.6rem auto 0; max-width: 60ch;
  font-family: var(--sans); font-weight: 600; font-size: clamp(1.3rem, 1rem + 1.4vw, 1.9rem);
  color: var(--espresso); line-height: 1.4;
}
html[lang="ar"] .lp .lp-problem-punch { font-family: var(--sans); font-weight: 800; }
.lp .lp-problem-punch b { color: var(--gold-ink); font-weight: inherit; }

/* =============================================================================
   SOLUTION / WHY EVENZA
   ========================================================================== */
.lp .lp-solution { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; background: linear-gradient(180deg, var(--cream), var(--ivory)); }
.lp .lp-value-grid { display: grid; gap: 1.3rem; grid-template-columns: repeat(3, 1fr); margin-top: 1rem; }
.lp .lp-value {
  padding: 1.8rem 1.6rem; border: 1px solid var(--border); border-radius: var(--r-lg);
  background: var(--warm-white); box-shadow: var(--shadow-sm);
  transition: transform .3s var(--ease-out), box-shadow .3s var(--ease-out);
}
.lp .lp-value:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.lp .lp-value-icon {
  width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center;
  background: var(--gold-tint); color: var(--gold-ink); margin-bottom: 1.1rem;
}
.lp .lp-value h3 { font-size: 1.25rem; margin: 0 0 .5rem; }
.lp .lp-value p { color: var(--text-muted); font-size: .95rem; line-height: 1.65; margin: 0; }
.lp .lp-solution-cta { text-align: center; margin-top: 2.8rem; }

/* =============================================================================
   CATEGORIES — floating circular "bubbles" (gold line-icon inside, label below)
   ========================================================================== */
.lp .categories { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; }
.lp .cat-bubbles {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start;
  gap: clamp(1.6rem, 1rem + 3vw, 3rem) clamp(1.2rem, 1rem + 2vw, 2.4rem);
  max-width: 900px; margin: 0 auto;
}
.lp .cat-bubble {
  display: flex; flex-direction: column; align-items: center; gap: 1.9rem;
  width: clamp(98px, 22vw, 132px); text-align: center; text-decoration: none;
  /* Reset the old rectangular .cat-card styling inherited from styles.css —
     the anchor keeps .cat-card for analytics, but must render as a bubble. */
  background: none; border: 0; padding: 0; min-height: 0;
  box-shadow: none; border-radius: 0; overflow: visible; color: var(--text);
}
.lp .cat-card.cat-bubble:hover { transform: none; box-shadow: none; }
/* JS rides this on the scroll-driven U-wave (see landing-motion.js). */
.lp .cat-bubble .bubble-wrap { position: relative; display: block; will-change: transform; }

/* ---- The soap bubble ----------------------------------------------------- */
.lp .cat-bubble .bubble {
  position: relative; isolation: isolate;
  width: clamp(98px, 22vw, 132px); aspect-ratio: 1; border-radius: 50%;
  display: grid; place-items: center; color: var(--gold-ink);
  /* translucent pearlescent soap film + glossy highlights */
  background:
    radial-gradient(circle at 30% 24%, rgba(255,255,255,.92), rgba(255,255,255,0) 22%),
    radial-gradient(circle at 70% 74%, rgba(255,255,255,.40), rgba(255,255,255,0) 15%),
    radial-gradient(130% 130% at 50% 42%, rgba(255,255,255,.16), rgba(255,255,255,0) 55%),
    conic-gradient(from 210deg,
      rgba(232,201,225,.32), rgba(201,224,232,.28), rgba(224,232,201,.28),
      rgba(232,224,201,.34), rgba(216,201,232,.28), rgba(232,201,225,.32));
  border: 1px solid rgba(255,255,255,.65);
  box-shadow:
    0 18px 34px -16px rgba(49,37,24,.30),
    inset 0 0 22px rgba(255,255,255,.50),
    inset -8px -10px 22px rgba(184,149,98,.16),
    inset 7px 9px 18px rgba(255,255,255,.55);
  backdrop-filter: blur(2px) saturate(1.25);
  -webkit-backdrop-filter: blur(2px) saturate(1.25);
  transition: transform .35s var(--ease-out), box-shadow .35s var(--ease-out), border-color .35s;
}
/* drifting specular shine — keeps the bubble alive even at rest */
.lp .cat-bubble .bubble::after {
  content: ''; position: absolute; top: 14%; inset-inline-start: 16%;
  width: 32%; height: 26%; border-radius: 50%; z-index: 1; pointer-events: none;
  background: radial-gradient(circle at 40% 40%, rgba(255,255,255,.95), rgba(255,255,255,0) 70%);
  filter: blur(.5px); transform: rotate(-18deg);
  animation: lp-shine 7s ease-in-out infinite;
}
.lp .cat-bubble .cat-ico { position: relative; z-index: 2; width: clamp(40px, 10vw, 52px); height: clamp(40px, 10vw, 52px); object-fit: contain; }
.lp .cat-bubble .cat-label {
  font-family: var(--sans); font-weight: 600; font-size: .92rem; color: var(--text);
  line-height: 1.3; max-width: 15ch; transition: color .3s;
}
.lp .cat-bubble:hover .bubble {
  transform: scale(1.07);
  box-shadow: 0 30px 50px -18px rgba(49,37,24,.40), inset 0 0 26px rgba(255,255,255,.60), inset 7px 9px 18px rgba(255,255,255,.60);
  border-color: rgba(255,255,255,.9);
}
.lp .cat-bubble:hover .cat-label { color: var(--gold-ink); }
.lp .cat-bubble:focus-visible .bubble { outline: 3px solid var(--gold); outline-offset: 4px; }

/* Most-popular feature bubble — larger, warmer gold soap */
.lp .cat-bubble-feature .bubble-wrap, .lp .cat-bubble-feature .bubble { width: clamp(124px, 28vw, 170px); }
.lp .cat-bubble-feature .bubble {
  background:
    radial-gradient(circle at 30% 24%, rgba(255,255,255,.95), rgba(255,255,255,0) 24%),
    radial-gradient(circle at 72% 76%, rgba(255,255,255,.40), rgba(255,255,255,0) 16%),
    radial-gradient(130% 130% at 50% 45%, rgba(255,255,255,.20), rgba(255,255,255,0) 55%),
    conic-gradient(from 210deg,
      rgba(232,224,201,.50), rgba(216,201,232,.34), rgba(201,224,232,.34),
      rgba(232,201,225,.36), rgba(232,224,201,.50));
  border: 2px solid var(--gold);
  box-shadow: 0 22px 42px -16px rgba(184,149,98,.5), inset 0 0 26px rgba(255,255,255,.6), inset -8px -10px 22px rgba(184,149,98,.14);
}
.lp .cat-bubble-feature .cat-ico { width: clamp(52px, 12vw, 66px); height: clamp(52px, 12vw, 66px); }
.lp .cat-bubble-feature .cat-label { font-size: 1rem; font-weight: 700; }

/* "More" bubble — same soap film, dashed gold rim */
.lp .cat-bubble-more .bubble { border: 1.5px dashed var(--gold); }

/* tag badge on the feature bubble */
.lp .cat-bubble .cat-tag {
  position: absolute; inset-block-start: 4px; inset-inline-end: -8px; z-index: 3;
  font-size: .58rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: var(--espresso); background: var(--gold); padding: .22rem .5rem; border-radius: var(--r-pill);
  box-shadow: 0 4px 10px -4px rgba(49,37,24,.4); white-space: nowrap;
}

@keyframes lp-shine {
  0%,100% { transform: rotate(-18deg) translate(0,0) scale(1);    opacity: .9; }
  50%     { transform: rotate(-18deg) translate(16%,10%) scale(.8); opacity: .6; }
}

/* "Bubble pop" entrance — overrides the default rise reveal for the bubbles */
.lp .cat-bubble.reveal { opacity: 0; transform: scale(.4); transition: opacity .5s var(--ease-out), transform .6s cubic-bezier(.34,1.56,.64,1); }
.lp .cat-bubble.reveal.in { opacity: 1; transform: none; }

@media (max-width: 700px) {
  .lp .cat-bubble .bubble { backdrop-filter: none; -webkit-backdrop-filter: none; }
}
@media (prefers-reduced-motion: reduce) {
  .lp .cat-bubble .bubble::after { animation: none; }
  .lp .cat-bubble .bubble-wrap { transform: none !important; }
}

html[dir="ltr"] .lp .guide-card-cta svg { transform: scaleX(-1); }

.lp .categories-cta { text-align: center; margin-top: 3rem; }

/* =============================================================================
   HOW IT WORKS
   ========================================================================== */
.lp .how { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; background: linear-gradient(180deg, var(--ivory), var(--cream)); }
.lp .steps { display: grid; gap: 1.4rem; grid-template-columns: repeat(3, 1fr); counter-reset: step; }
.lp .step {
  position: relative; padding: 2rem 1.6rem 1.8rem;
  border: 1px solid var(--border); border-radius: var(--r-lg); background: var(--warm-white);
}
.lp .step-num {
  width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
  font-family: var(--sans); font-size: 1.05rem; font-weight: 700;
  color: var(--gold-ink); background: var(--gold-tint); border: 1.5px solid var(--gold-soft);
  margin-bottom: 1.1rem;
}
html[lang="ar"] .lp .step-num { font-family: var(--sans); font-weight: 800; }
.lp .step h3 { font-size: 1.2rem; margin: 0 0 .5rem; }
.lp .step p { color: var(--text-muted); font-size: .95rem; line-height: 1.65; margin: 0; }
.lp .how-cta { text-align: center; margin-top: 2.6rem; }

/* =============================================================================
   TRUST STRIP (honest — no fabricated numbers)
   ========================================================================== */
.lp .lp-trust { padding: clamp(3.5rem, 3rem + 3vw, 5.5rem) 0; }
.lp .lp-trust-grid { display: grid; gap: 1.1rem; grid-template-columns: repeat(4, 1fr); }
.lp .lp-trust-item {
  display: flex; flex-direction: column; gap: .7rem; align-items: flex-start;
  padding: 1.5rem 1.4rem; border: 1px solid var(--border); border-radius: var(--r-md);
  background: var(--warm-white);
}
.lp .lp-trust-icon { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--gold-tint); color: var(--gold-ink); }
.lp .lp-trust-item h3 { font-size: 1.02rem; margin: 0; }
.lp .lp-trust-item p { font-size: .85rem; color: var(--text-muted); line-height: 1.55; margin: 0; }

/* =============================================================================
   CITIES marquee
   ========================================================================== */
.lp .cities { padding: clamp(3.5rem, 3rem + 3vw, 5.5rem) 0; background: var(--cream); overflow: clip; }
.lp .city-marquee { margin-top: 2.2rem; overflow: hidden; }
.lp .city-marquee.cm-on { -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
/* Default = wrapped, centered, ALL cities visible (works with no-JS / reduced-motion). */
/* animation:none KILLS the legacy `city-marquee-scroll` keyframe still declared in styles.css
   (.city-marquee-track). That keyframe (a) never rendered on iOS — translateX(-50%) on a
   width:max-content box resolves wrong in WebKit — and (b) a RUNNING CSS animation overrides
   the element's inline style.transform, so it was silently overriding the JS-driven marquee
   below and freezing the row on iPad/iOS. The marquee here is JS-driven (landing-motion.js). */
.lp .city-marquee-track { display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem 0; animation: none; }
/* landing-motion.js adds .is-marquee -> single scrolling row (rAF-driven, reliable on iOS). */
.lp .city-marquee-track.is-marquee { flex-wrap: nowrap; justify-content: flex-start; width: max-content; gap: 0; will-change: transform; }
.lp .city-list { display: flex; gap: 0; }
.lp .city-list li {
  font-family: var(--sans); font-weight: 600; font-size: clamp(1.05rem, 1rem + 0.8vw, 1.5rem); color: var(--espresso);
  padding-inline: 1.4rem; position: relative; opacity: .9; white-space: nowrap;
}
html[lang="ar"] .lp .city-list li { font-family: var(--sans); font-weight: 700; }
/* City separator '·' REMOVED 2026-06-05 (founder request) — no dots between cities.
   (The gold ::before bullet in styles.css was removed in the same change.) */
/* Cities marquee scroll is JS-driven (landing-motion.js); reduced-motion / no-JS
   keep the wrapped, all-visible fallback defined above. */

/* =============================================================================
   FOUNDING OFFER (real planned offer — restyle to deck)
   ========================================================================== */
.lp .founding-offer { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; background: var(--ivory); }
.lp .founding-card {
  max-width: 720px; margin: 2rem auto 0; padding: 2.4rem 2rem;
  background: var(--warm-white); border: 1.5px solid var(--gold-soft);
  border-radius: var(--r-xl); text-align: center; box-shadow: var(--shadow-md);
}
.lp .founding-counter { font-family: var(--sans); font-weight: 800; font-size: 3.2rem; line-height: 1; color: var(--espresso); margin-bottom: .4rem; }
html[lang="ar"] .lp .founding-counter { font-family: var(--sans); font-weight: 800; }
.lp .founding-counter-sep, .lp .founding-counter-total { color: var(--gold-ink); margin: 0 .25rem; }
.lp .founding-counter-label { display: block; font-family: var(--sans); font-size: .8rem; color: var(--text-muted); margin-top: .5rem; letter-spacing: .08em; text-transform: uppercase; }
.lp .founding-bullets { list-style: none; margin: 1.8rem 0; padding: 0; text-align: start; }
.lp .founding-bullets li { padding: .8rem 0; border-bottom: 1px solid var(--border); color: var(--text); font-size: .96rem; line-height: 1.5; display: flex; gap: .6rem; }
.lp .founding-bullets li:last-child { border-bottom: 0; }
.lp .founding-bullets li::before { content:'✓'; color: var(--gold-ink); font-weight: 700; }
.lp .founding-closed { max-width: 720px; margin: 2rem auto 0; padding: 1.8rem 1.5rem; background: var(--warm-white); border: 1px solid var(--border); border-radius: var(--r-lg); text-align: center; color: var(--text-muted); }

/* =============================================================================
   COMING SOON — espresso band
   ========================================================================== */
.lp .lp-coming {
  padding: clamp(4.5rem, 3rem + 6vw, 7rem) 0; text-align: center; color: var(--ivory);
  background:
    radial-gradient(80% 120% at 50% -10%, #43331F 0%, rgba(67,51,31,0) 60%),
    var(--espresso);
  position: relative; overflow: clip;
}
.lp .lp-coming::after {
  content:''; position:absolute; inset:0; pointer-events:none;
  background: radial-gradient(60% 60% at 50% 120%, rgba(184,149,98,.28), transparent 70%);
}
.lp .lp-coming .eyebrow { color: var(--gold); justify-content: center; }
.lp .lp-coming .eyebrow::before { background: var(--gold); }
.lp .lp-coming h2 { font-size: clamp(2.2rem, 1.4rem + 4vw, 4rem); color: var(--ivory); margin: 0 0 1rem; position: relative; }
.lp .lp-coming p { color: rgba(253,251,249,.78); font-size: 1.15rem; max-width: 52ch; margin: 0 auto; position: relative; }
.lp .lp-coming .lp-coming-value { font-family: var(--sans); font-weight: 700; font-size: clamp(1.4rem,1rem+2vw,2.2rem); color: var(--gold); margin-top: 1.4rem; }
html[lang="ar"] .lp .lp-coming .lp-coming-value { font-family: var(--sans); font-weight: 700; }

/* =============================================================================
   VENDOR section
   ========================================================================== */
.lp .vendor-cta { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; background: linear-gradient(180deg, var(--cream), var(--ivory)); scroll-margin-top: 90px; }
.lp .vendor-card {
  position: relative; max-width: 900px; margin: 0 auto; padding: clamp(2rem, 1rem + 4vw, 3.4rem);
  background: var(--warm-white); border: 1px solid var(--border); border-radius: var(--r-xl);
  box-shadow: var(--shadow-md); overflow: hidden;
}
.lp .vendor-card-art { position: absolute; inset-inline-end: -60px; top: -60px; width: 280px; color: var(--gold); opacity: .5; pointer-events: none; }
.lp .vendor-card-body { position: relative; z-index: 1; }
.lp .vendor-card-body h2 { font-size: clamp(1.7rem, 1.2rem + 2vw, 2.5rem); margin: .2rem 0 1rem; }
.lp .vendor-audience-line { color: var(--text-muted); font-size: .96rem; line-height: 1.6; margin: 0 0 1rem; }
.lp .vendor-lead { color: var(--text); font-size: 1.02rem; line-height: 1.7; margin: 0 0 1.4rem; }
.lp .vendor-scarcity { background: var(--gold-tint); border: 1px solid var(--gold-soft); border-radius: var(--r-md); padding: 1.1rem 1.2rem; margin-bottom: 1.4rem; }
.lp .vendor-scarcity-badge { display: inline-block; font-size: .66rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; color: var(--espresso); background: var(--gold); padding: .25rem .6rem; border-radius: var(--r-pill); margin-bottom: .6rem; }
.lp .vendor-scarcity-headline { margin: 0 0 .3rem; color: var(--espresso); font-size: 1.05rem; }
.lp .vendor-scarcity-sub { margin: 0; color: var(--text-muted); font-size: .88rem; }
.lp .vendor-perks { list-style: none; margin: 0 0 1.6rem; padding: 0; display: grid; gap: .8rem; }
.lp .vendor-perks li { display: flex; gap: .7rem; align-items: flex-start; font-size: .95rem; color: var(--text); line-height: 1.5; }
.lp .vendor-perks svg { color: var(--gold-ink); flex: none; margin-top: .1rem; }
.lp .vendor-perks strong { color: var(--espresso); }
.lp .vendor-meta { color: var(--text-subtle); font-size: .85rem; margin: 0 0 1.4rem; line-height: 1.6; }

/* Vendor form (keep structure; reskin) */
.lp .vendor-form { display: grid; gap: 1.1rem; }
.lp .vf-row { display: grid; gap: 1.1rem; grid-template-columns: 1fr 1fr; }
.lp .vf-field { display: flex; flex-direction: column; gap: .4rem; }
.lp .vf-label { font-size: .85rem; font-weight: 600; color: var(--espresso); }
.lp .vf-label em { color: var(--gold-ink); font-style: normal; }
.lp .vendor-form input,
.lp .vendor-form select,
.lp .vendor-form textarea {
  font-family: var(--sans); font-size: .95rem; color: var(--text);
  padding: .8rem .9rem; border: 1.5px solid var(--border); border-radius: var(--r-sm);
  background: var(--ivory); width: 100%; transition: border-color .2s, box-shadow .2s;
}
.lp .vendor-form input:focus,
.lp .vendor-form select:focus,
.lp .vendor-form textarea:focus { outline: none; border-color: var(--gold-dark); box-shadow: 0 0 0 3px var(--gold-dark); }
.lp .vendor-form input:user-invalid { border-color: #C0563E; }
.lp .vf-hint { font-size: .76rem; color: var(--text-subtle); line-height: 1.4; }
.lp .vf-actions { margin-top: .4rem; }
/* Optional, collapsed details — keeps the initial vendor ask to 4 fields. */
.lp .vf-optional { border: 1px dashed var(--gold-soft); border-radius: var(--r-md); background: var(--gold-tint); padding: 0 1rem; }
.lp .vf-optional > summary {
  list-style: none; cursor: pointer; padding: .95rem .2rem; font-weight: 600;
  color: var(--gold-ink); display: flex; align-items: center; gap: .5rem;
}
.lp .vf-optional > summary::-webkit-details-marker { display: none; }
.lp .vf-optional > summary::after { content: '+'; margin-inline-start: auto; font-size: 1.3rem; font-weight: 400; line-height: 1; color: var(--gold-ink); transition: transform .25s var(--ease-out); }
.lp .vf-optional[open] > summary::after { transform: rotate(45deg); }
.lp .vf-optional .vf-row { margin-bottom: 1rem; }
.lp .vf-optional .vf-row:first-of-type { margin-top: .2rem; }
.lp .vf-submit { width: 100%; justify-content: center; }
.lp .vf-error { color: #C0563E; font-size: .88rem; margin: .6rem 0 0; }
.lp .vendor-success { text-align: center; padding: 2rem 1rem; }
.lp .vendor-success svg { color: var(--gold-ink); margin: 0 auto 1rem; }
.lp .vendor-success h3 { font-size: 1.5rem; margin: 0 0 .5rem; }
.lp .vendor-success p { color: var(--text-muted); max-width: 42ch; margin: 0 auto; }

/* =============================================================================
   GUIDES
   ========================================================================== */
.lp .guides-section { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; }
.lp .guides-grid { display: grid; gap: 1.2rem; grid-template-columns: 2fr 1fr 1fr; }
.lp .guide-card {
  display: flex; flex-direction: column; gap: .6rem; padding: 1.8rem 1.6rem;
  border: 1px solid var(--border); border-radius: var(--r-lg); background: var(--warm-white);
  transition: transform .3s var(--ease-out), box-shadow .3s var(--ease-out), border-color .3s;
}
.lp .guide-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: var(--gold-soft); }
.lp .guide-card-feature { grid-row: span 1; background: linear-gradient(180deg, var(--cream), var(--warm-white)); }
.lp .guide-card-tag { align-self: flex-start; font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--gold-ink); background: var(--gold-tint); padding: .3rem .6rem; border-radius: var(--r-pill); }
.lp .guide-card h3 { font-size: 1.15rem; margin: 0; }
.lp .guide-card p { color: var(--text-muted); font-size: .9rem; line-height: 1.6; margin: 0; flex: 1; }
.lp .guide-card-meta { display: flex; justify-content: space-between; align-items: center; gap: .8rem; margin-top: .4rem; flex-wrap: wrap; }
.lp .guide-card-time { font-size: .8rem; color: var(--text-subtle); }
.lp .guide-card-cta { display: inline-flex; align-items: center; gap: .4rem; color: var(--gold-ink); font-weight: 600; font-size: .88rem; }

/* =============================================================================
   FAQ
   ========================================================================== */
.lp .faq { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; background: var(--cream); }
.lp .faq-list { max-width: 780px; margin: 0 auto; display: grid; gap: .8rem; }
.lp .faq-item { border: 1px solid var(--border); border-radius: var(--r-md); background: var(--warm-white); overflow: hidden; }
.lp .faq-item summary {
  list-style: none; cursor: pointer; padding: 1.15rem 1.3rem; font-weight: 600; color: var(--espresso);
  font-size: 1rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem;
}
.lp .faq-item summary::-webkit-details-marker { display: none; }
.lp .faq-item summary::after { content:'+'; color: var(--gold-ink); font-size: 1.4rem; font-weight: 400; transition: transform .25s; flex: none; }
.lp .faq-item[open] summary::after { transform: rotate(45deg); }
.lp .faq-item p { padding: 0 1.3rem 1.2rem; margin: 0; color: var(--text-muted); line-height: 1.7; font-size: .95rem; }

/* =============================================================================
   FINAL CTA / APP
   ========================================================================== */
.lp .app-cta { padding: clamp(4rem, 3rem + 4vw, 6.5rem) 0; }
.lp .app-cta-inner {
  display: grid; grid-template-columns: 1.1fr .9fr; gap: 2.5rem; align-items: center;
  background:
    radial-gradient(70% 90% at 90% 0%, #43331F 0%, rgba(67,51,31,0) 55%),
    var(--espresso);
  border-radius: var(--r-xl); padding: clamp(2.2rem, 1rem + 5vw, 4rem); overflow: hidden; position: relative;
}
.lp .app-cta-text .eyebrow { color: var(--gold); }
.lp .app-cta-text .eyebrow::before { background: var(--gold); }
.lp .app-cta-text h2 { color: var(--ivory); font-size: clamp(1.8rem, 1.2rem + 3vw, 2.9rem); margin: 0 0 1rem; }
.lp .app-cta-text > p { color: rgba(253,251,249,.78); font-size: 1.05rem; line-height: 1.7; margin: 0 0 1.8rem; max-width: 46ch; }
.lp .app-cta-actions { display: flex; gap: 1rem; flex-wrap: wrap; }
.lp .app-cta .btn-ghost { color: var(--ivory); border-color: rgba(253,251,249,.35); }
.lp .app-cta .btn-ghost:hover { background: rgba(253,251,249,.1); border-color: var(--ivory); color: var(--ivory); }
.lp .phone-mock { display: flex; justify-content: center; }
.lp .phone { width: min(260px, 70vw); border-radius: 34px; padding: 10px; background: #1F160D; box-shadow: var(--shadow-lg); border: 1px solid rgba(184,149,98,.3); }
.lp .phone-shot { width: 100%; border-radius: 26px; display: block; }

/* =============================================================================
   CONTACT
   ========================================================================== */
.lp .contact-section { padding: clamp(4rem, 3rem + 4vw, 6rem) 0 clamp(5rem,4rem+3vw,7rem); }
.lp .contact-card {
  position: relative; max-width: 640px; margin: 0 auto; text-align: center;
  padding: clamp(2.2rem, 1rem + 4vw, 3.4rem); border: 1px solid var(--border);
  border-radius: var(--r-xl); background: var(--warm-white); box-shadow: var(--shadow-sm); overflow: hidden;
}
.lp .contact-art { position: absolute; inset-inline-start: -50px; bottom: -50px; width: 200px; color: var(--gold); opacity: .35; pointer-events: none; }
.lp .contact-card .eyebrow { justify-content: center; }
.lp .contact-title { font-size: clamp(1.8rem, 1.3rem + 2vw, 2.6rem); margin: 0 0 .8rem; }
.lp .contact-subtitle { color: var(--text-muted); margin: 0 auto 1.6rem; max-width: 44ch; }
.lp .contact-email {
  display: inline-flex; align-items: center; gap: .7rem; padding: .9rem 1.4rem;
  border: 1.5px solid var(--gold-soft); border-radius: var(--r-pill); background: var(--gold-tint);
  color: var(--espresso); font-weight: 600; transition: transform .25s var(--ease-out), box-shadow .25s;
}
.lp .contact-email:hover { transform: translateY(-2px); box-shadow: var(--shadow-sm); }
.lp .contact-email-icon, .lp .contact-email-arrow { color: var(--gold-ink); flex: none; }
html[dir="ltr"] .lp .contact-email-arrow { transform: scaleX(-1); }
.lp .contact-body { color: var(--text-muted); font-size: .95rem; margin: 1.4rem 0 .4rem; }
.lp .contact-trust { color: var(--text-subtle); font-size: .85rem; font-style: italic; margin: 0; }

/* =============================================================================
   FOOTER
   ========================================================================== */
.lp .site-footer { background: var(--espresso); color: rgba(253,251,249,.7); }
.lp .site-footer .brand-word { color: var(--ivory); }
.lp .footer-brand p { color: rgba(253,251,249,.6); }
.lp .footer-col h3 { color: var(--ivory); font-family: var(--sans); font-size: .8rem; text-transform: uppercase; letter-spacing: .12em; font-weight: 700; }
.lp .footer-col a { color: rgba(253,251,249,.7); transition: color .2s; }
.lp .footer-col a:hover { color: var(--gold); }
.lp .footer-bottom { border-top: 1px solid rgba(253,251,249,.12); color: rgba(253,251,249,.55); }
.lp .footer-legal a { color: rgba(253,251,249,.6); }
.lp .footer-legal a:hover { color: var(--gold); }

/* =============================================================================
   PERSISTENT CTA BAR — always available on EVERY screen size so vendor
   registration (+ customer discovery) is one tap away at any scroll position.
   ========================================================================== */
.lp .sticky-mobile-cta {
  display: flex; justify-content: center;
  position: fixed; inset-inline: 0; bottom: 0; z-index: 1100;
  padding: .6rem clamp(.7rem, 3vw, 1.2rem);
  padding-bottom: calc(.6rem + env(safe-area-inset-bottom, 0px));
  background: rgba(253,251,249,.96);
  backdrop-filter: saturate(150%) blur(14px); -webkit-backdrop-filter: saturate(150%) blur(14px);
  border-top: 1px solid var(--border);
  box-shadow: 0 -14px 34px -20px rgba(49,37,24,.55);
  transform: translateY(115%);
  transition: transform .26s var(--ease-out);
}
body.sticky-cta-visible .lp .sticky-mobile-cta,
body.lp.sticky-cta-visible .sticky-mobile-cta { transform: translateY(0); }
.lp .sticky-inner {
  display: flex; align-items: center; gap: .6rem;
  width: 100%; max-width: 760px;
}
.lp .sticky-mobile-cta .sticky-lead {
  color: var(--espresso); font-weight: 700; font-size: .95rem; white-space: nowrap;
  margin-inline-end: .4rem;
}
.lp .sticky-mobile-cta .btn { flex: 1 1 0; justify-content: center; min-height: 48px; padding-inline: .8rem; }
.lp .sticky-mobile-cta .sticky-vendor { flex: 1.25 1 0; }  /* vendor CTA gets the visual weight */
.lp .sticky-mobile-cta .btn-primary { box-shadow: none; }
/* keep the footer's last line clear of the fixed bar */
.lp .footer-bottom { padding-bottom: 4.5rem; }
@media (max-width: 600px) {
  .lp .sticky-mobile-cta .sticky-lead { display: none; }
  .lp .sticky-mobile-cta .btn { font-size: .9rem; padding-inline: .5rem; }
  .lp .sticky-mobile-cta .btn svg { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .lp .sticky-mobile-cta { transition: none; }
}

/* WhatsApp floating contact (injected by landing-motion.js ONLY when an
   official number is configured). Sits above the persistent CTA bar. */
.lp-wa-fab {
  position: fixed; inset-inline-end: 18px; bottom: 22px; z-index: 1150;
  width: 56px; height: 56px; border-radius: 50%;
  display: grid; place-items: center; color: #fff; background: #25D366;
  box-shadow: 0 12px 26px -6px rgba(37,179,90,.55), 0 4px 10px rgba(0,0,0,.16);
  transition: transform .25s var(--ease-out), bottom .25s var(--ease-out);
}
.lp-wa-fab:hover { transform: scale(1.09); color: #fff; }
.lp-wa-fab:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
body.sticky-cta-visible .lp-wa-fab { bottom: 90px; }
@media (max-width: 600px) {
  .lp-wa-fab { width: 52px; height: 52px; inset-inline-end: 14px; }
  body.sticky-cta-visible .lp-wa-fab { bottom: 98px; }
}
@media (prefers-reduced-motion: reduce) { .lp-wa-fab { transition: none; } }

/* =============================================================================
   PROBLEM-FIRST HOOK — pull the problem section above the hero VISUALLY (CSS
   order only). DOM order is unchanged, so keyboard focus + SEO still hit the
   hero + its CTAs first; only the paint order moves the pain-hook to the top.
   ========================================================================== */
.lp main { display: flex; flex-direction: column; }
.lp .lp-problem { order: -1; padding-top: clamp(5.5rem, 4.5rem + 5vw, 7.5rem); }
/* Hero is no longer the first section → drop its header-clearance top padding
   so the gap between the hook and the hero stays tight. */
.lp .hero { padding-top: clamp(2.5rem, 1.5rem + 3vw, 4.5rem); }

/* =============================================================================
   JS-injected lead drawer — light brand touch-ups (layout stays from styles.css)
   ========================================================================== */
.lp .lead-choice[aria-pressed="true"] { border-color: var(--gold); background: var(--gold-tint); color: var(--espresso); }
.lp .lead-progress-bar { background: var(--gold); }
.lp .lead-drawer-title { font-family: var(--sans); font-weight: 700; }
html[lang="ar"] .lp .lead-drawer-title { font-family: var(--sans); font-weight: 800; }

/* =============================================================================
   REVEAL (works with main.js IntersectionObserver)
   ========================================================================== */
.lp .reveal {
  opacity: 0; transform: translateY(44px) scale(.975);
  transition: opacity .8s var(--ease-out), transform .9s var(--ease-out);
}
.lp .reveal.in { opacity: 1; transform: none; }
/* Section headings travel a touch further for a cinematic "section change". */
.lp .section-head.reveal { transition-duration: .9s, 1s; }
.lp .section-head.reveal:not(.in) { transform: translateY(56px) scale(.985); }
@media (prefers-reduced-motion: reduce) {
  .lp .reveal { opacity: 1; transform: none; transition: none; }
  .lp .hero-scroll svg { animation: none; }
}

/* =============================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width: 960px) {
  .lp .lp-problem-grid { grid-template-columns: repeat(2, 1fr); }
  .lp .lp-value-grid { grid-template-columns: 1fr; }
  .lp .steps { grid-template-columns: 1fr; }
  .lp .lp-trust-grid { grid-template-columns: repeat(2, 1fr); }
  .lp .guides-grid { grid-template-columns: 1fr; }
  .lp .app-cta-inner { grid-template-columns: 1fr; text-align: center; }
  .lp .app-cta-text .eyebrow, .lp .app-cta-actions { justify-content: center; }
  .lp .app-cta-text > p { margin-inline: auto; }
  .lp .phone-mock { order: -1; }
}
@media (max-width: 600px) {
  .lp .hero { padding-top: clamp(5.5rem, 5rem + 6vw, 7rem); }
  .lp .audience-blocks { grid-template-columns: 1fr; }
  .lp .lp-problem-grid { grid-template-columns: 1fr; }
  .lp .lp-trust-grid { grid-template-columns: 1fr 1fr; }
  .lp .vf-row { grid-template-columns: 1fr; }
  .lp .hero-stats { flex-wrap: wrap; gap: 1rem 1.4rem; }
  .lp .hero-cta { flex-direction: column; align-items: stretch; }
  .lp .hero-cta .btn { width: 100%; justify-content: center; }
}

/* =============================================================================
   MOTION LAYER  (continuous ambient + scroll-reactive)
   Paired with assets/js/landing-motion.js. All of this is gated off under
   prefers-reduced-motion at the very bottom of this block.
   ========================================================================== */

/* ---- Scroll-progress bar (gold) — JS sets scaleX ------------------------- */
.lp-scroll-progress {
  position: fixed; inset-block-start: 0; inset-inline: 0; height: 3px; z-index: 1200;
  background: linear-gradient(90deg, var(--gold-deep), var(--gold) 55%, #D9BE8E);
  transform: scaleX(0); will-change: transform; pointer-events: none;
}

/* ---- Hero ambient orbs (continuous drift) -------------------------------- */
.lp-hero-fx { position: absolute; inset: 0; z-index: 0; overflow: clip; pointer-events: none; }
.lp .lp-orb {
  position: absolute; border-radius: 50%; filter: blur(46px); will-change: transform;
  background: radial-gradient(circle at 35% 35%, rgba(184,149,98,.55), rgba(184,149,98,0) 70%);
}
.lp .lp-orb-1 { width: 360px; height: 360px; inset-inline-end: 6%; top: 4%;  opacity: .55; animation: lp-orb-a 22s ease-in-out infinite; }
.lp .lp-orb-2 { width: 280px; height: 280px; inset-inline-start: 2%; top: 34%; opacity: .40; background: radial-gradient(circle at 40% 40%, rgba(141,138,116,.42), rgba(141,138,116,0) 70%); animation: lp-orb-b 28s ease-in-out infinite; }
.lp .lp-orb-3 { width: 200px; height: 200px; inset-inline-end: 24%; bottom: 6%; opacity: .35; animation: lp-orb-c 18s ease-in-out infinite; }
@keyframes lp-orb-a { 0%,100% { transform: translate3d(0,0,0) scale(1); } 50% { transform: translate3d(-4%, 7%, 0) scale(1.12); } }
@keyframes lp-orb-b { 0%,100% { transform: translate3d(0,0,0) scale(1); } 50% { transform: translate3d(6%, -5%, 0) scale(1.08); } }
@keyframes lp-orb-c { 0%,100% { transform: translate3d(0,0,0) scale(1); } 50% { transform: translate3d(3%, 6%, 0) scale(1.15); } }

/* scroll-driven arc rotation (JS sets --arc-rot) */
.lp .hero::after { transform: rotate(var(--arc-rot, 0deg)); will-change: transform; }

/* ---- Twinkles on dark espresso bands ------------------------------------- */
.lp-twinkles { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: clip; }
.lp-twinkles span {
  position: absolute; border-radius: 50%; background: var(--gold);
  box-shadow: 0 0 6px 1px rgba(184,149,98,.7); opacity: .25;
  animation: lp-twinkle 4.5s ease-in-out infinite;
}
@keyframes lp-twinkle { 0%,100% { opacity: .12; transform: scale(.7); } 50% { opacity: .9; transform: scale(1.1); } }
.lp .lp-coming .container, .lp .app-cta-text, .lp .app-cta .phone-mock { position: relative; z-index: 1; }

/* ---- Floating phone (inner element; .phone-mock is JS-parallaxed) -------- */
.lp .phone { animation: lp-float 6.5s ease-in-out infinite; will-change: transform; }
@keyframes lp-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }

/* ---- Shimmer on the brand value line (gold on espresso = safe contrast) -- */
.lp .lp-coming-value {
  background: linear-gradient(100deg, var(--gold) 20%, #E7CEA3 48%, var(--gold) 76%);
  background-size: 220% auto; -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
  animation: lp-shimmer 6s linear infinite;
}
@keyframes lp-shimmer { to { background-position: 220% center; } }

/* (Removed: CTA glow-pulse + button sheen overlay — they read as an annoying
   overlay on the CTA. Buttons keep only the clean hover lift from the buttons
   block above.) */

/* ---- 3D tilt + glare (JS sets --rx/--ry/--gx/--gy on fine pointers) ------ */
.lp .lp-tilt { transition: transform .45s var(--ease-out), box-shadow .35s var(--ease-out); transform-style: preserve-3d; }
.lp .lp-tilt:hover { transform: perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-4px); }
.lp .lp-tilt::after {
  content: ''; position: absolute; inset: 0; border-radius: inherit; z-index: 2; pointer-events: none;
  background: radial-gradient(circle at var(--gx,50%) var(--gy,50%), rgba(255,253,249,.45), transparent 45%);
  opacity: 0; transition: opacity .3s; mix-blend-mode: soft-light;
}
.lp .lp-tilt:hover::after { opacity: 1; }

/* ---- Mobile: drop the heaviest continuous GPU effects (blurred orbs +
   twinkles) so phones stay buttery; the gradient + reveals remain. --------- */
@media (max-width: 700px) {
  .lp-hero-fx, .lp-twinkles { display: none; }
}

/* ---- Reduced-motion: hard off-switch for everything above ---------------- */
@media (prefers-reduced-motion: reduce) {
  .lp-scroll-progress, .lp-hero-fx, .lp-twinkles { display: none !important; }
  .lp .hero::after { transform: none !important; }
  .lp .phone, .lp .lp-coming-value, .lp .hero-cta .btn-primary { animation: none !important; }
  .lp .lp-coming-value { -webkit-text-fill-color: var(--gold); color: var(--gold); }
  .lp .btn-primary::after, .lp .btn-gold::after { display: none !important; }
  .lp .lp-tilt:hover { transform: translateY(-4px); }
}


/* ── Founding-offer countdown (replaces the enrolled counter) ─────────────── */
.lp .founding-countdown-label { font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); margin: 0 0 .9rem; text-align: center; }
.lp .founding-countdown { display: flex; justify-content: center; gap: .6rem; margin: 0 0 1rem; }
.lp .founding-countdown .cd-unit { display: flex; flex-direction: column; align-items: center; min-width: 66px; padding: .7rem .5rem; background: var(--gold-tint); border: 1px solid var(--gold-soft); border-radius: 12px; }
.lp .founding-countdown .cd-num { font-size: 2rem; font-weight: 800; line-height: 1; color: var(--gold-ink); font-variant-numeric: tabular-nums; }
.lp .founding-countdown .cd-lbl { font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: var(--text-muted); margin-top: .35rem; }
.lp .founding-countdown-cap { font-size: .85rem; color: var(--text-muted); text-align: center; margin: 0; }
@media (max-width: 480px) { .lp .founding-countdown { gap: .4rem; } .lp .founding-countdown .cd-unit { min-width: 54px; padding: .55rem .3rem; } .lp .founding-countdown .cd-num { font-size: 1.6rem; } }