/* ── landing.css — the 2026-09-02 redesign: five chapters, one peak ──────────────────────────
 * Loaded AFTER styles.css, which keeps the header, footer, contact form, FAQ and buttons. This
 * file owns the five chapters and overrides two things globally: the ground (one paper tone,
 * no alternating bands) and the display face (Amiri for headlines and big numerals).
 * RTL-RULES.md binds: logical properties only, mirrored transform origins, reduced motion CLAMPS.
 */
:root {
	--paper: #f7f5ef;
	--paper-2: #efece4;
	--paper-line: #e3ded2;
	--disp: 'Dubai', 'IBM Plex Sans Arabic', 'Segoe UI', sans-serif; /* was Amiri; his call 2026-09-02: Dubai Font */
	--ease-out: cubic-bezier(.2, .7, .2, 1);
}
html[lang='ar'] body, body { background: var(--paper); }
.disp { font-family: var(--disp); font-weight: 700; }
html[lang='en'] .disp { font-family: 'Newsreader', Georgia, serif; font-weight: 500; letter-spacing: -.01em; }
/* the sign-in door: a quiet button beside «ابدأ الآن» on desktop, an entry in the burger menu under
   the nav breakpoint (styles.css collapses .nav at 940px) */
.nav-login { display: none; }
@media (max-width: 940px) { .head-cta .btn-login { display: none; } .nav-login { display: block; } }
/* the header sits on paper now */
.site-head { background: color-mix(in srgb, var(--paper) 88%, transparent); }
/* Lenis owns the scroll, and it stamps `lenis` on <html> itself (and strips any other `lenis-*`
   class, which is why the flag is Lenis's own). styles.css sets scroll-behavior: smooth on <html>;
   with Lenis moving the window every frame that makes the browser ease each frame a second time,
   which is a stutter — it MUST be off while Lenis runs. */
html.lenis, html.lenis body { height: auto; }
html.lenis { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
.lightbox img { max-width: min(96vw, 1800px); max-height: 92vh; }

/* ── chapters ───────────────────────────────────────────────────────────────── */
.ch { padding-block: clamp(56px, 9vw, 120px); }
.ch-in { display: grid; grid-template-columns: minmax(150px, 1fr) minmax(0, 4fr); gap: clamp(20px, 4vw, 56px); align-items: start; }
.ch-mark { position: sticky; top: 92px; font-family: var(--font-lat); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--vl-gold-ink); direction: ltr; text-align: start; }
html[lang='ar'] .ch-mark { direction: rtl; font-family: var(--font-ar); font-size: 13px; letter-spacing: 0; }
.ch-mark b { display: block; font-family: var(--disp); font-size: 34px; line-height: 1; color: var(--vl-navy); font-weight: 700; margin-block-end: 8px; }
.ch-mark::after { content: ''; display: block; width: 44px; height: 1px; background: var(--vl-gold); margin-block-start: 12px; }
.ch h2 { font-family: var(--disp); font-weight: 700; font-size: clamp(30px, 4.2vw, 50px); line-height: 1.25; text-wrap: balance; margin: 0 0 14px; }
.ch .lead { font-size: 17px; line-height: 1.85; color: var(--vl-slate); max-width: 60ch; }
.ch-in > * { min-width: 0; }
@media (max-width: 860px) { .ch-in { grid-template-columns: minmax(0, 1fr); } .ch-mark { position: static; } }

/* ── 1 · the claim ──────────────────────────────────────────────────────────── */
.claim { padding-block: clamp(32px, 5vw, 64px) clamp(32px, 4vw, 56px); }
.claim-in { max-width: 980px; }
/* on a wide screen the claim is TWO columns — the headline and, beside it, the case file rising into
   frame — so the fold is never half empty (his 1900px screenshot, 2026-09-02) */
.claim-grid { display: grid; grid-template-columns: 1fr; gap: 40px; }
@media (min-width: 1100px) {
	.claim-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: clamp(24px, 4vw, 64px); align-items: end; max-width: 1480px; }
	.claim-in { max-width: none; padding-block-end: 8px; }
	.rise { margin-block-start: 0 !important; }
	.rise .frame { border-radius: 12px; border-block-end: 1px solid var(--paper-line); box-shadow: 0 30px 70px -30px rgba(21, 75, 105, .4); }
	.rise::after { display: none; }
}
.claim .eyebrow { margin-block-end: 18px; }
.claim h1 { font-family: var(--disp); font-weight: 700; font-size: clamp(38px, 6.6vw, 84px); line-height: 1.22; color: var(--vl-ink); margin: 0; text-wrap: balance; }
.claim h1 .w { display: inline-block; }
.claim .sub { font-family: var(--disp); font-weight: 400; font-size: clamp(19px, 2.3vw, 27px); line-height: 1.6; color: var(--vl-slate); max-width: 34ch; margin: 22px 0 0; }
.claim .cta { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; margin-block-start: 34px; }
.claim .cta .btn-gold { font-size: 16px; padding: 14px 26px; }
.claim .cta a.quiet { color: var(--vl-navy); font-weight: 600; text-decoration: none; border-block-end: 1px solid var(--vl-gold); padding-block-end: 2px; }
.claim .cta a.quiet:hover, .claim .cta a.quiet:focus-visible { border-color: var(--vl-navy); outline: none; }
.facts { display: flex; flex-wrap: wrap; gap: 0; margin-block-start: 40px; border-block: 1px solid var(--paper-line); }
@media (min-width: 1100px) { .claim .wrap:has(.facts) { max-width: 1480px; } }
.facts div { flex: 1 1 180px; padding: 16px 22px; border-inline-end: 1px solid var(--paper-line); }
.facts div:last-child { border-inline-end: 0; }
.facts b { display: block; font-family: var(--disp); font-weight: 700; font-size: 34px; line-height: 1.1; color: var(--vl-navy); }
.facts span { font-size: 13px; color: var(--vl-muted); }
/* the dashboard rises into frame under the claim — visible at rest, only its offset is scrubbed */
.rise { margin-block-start: 48px; position: relative; max-width: 1480px; }
.rise .frame { border: 1px solid var(--paper-line); border-block-end: 0; border-radius: 12px 12px 0 0; overflow: hidden; background: #fff; box-shadow: 0 -20px 60px -30px rgba(21, 75, 105, .35); transform: translateY(6%) scale(.985); transform-origin: 50% 100%; }
.rise img { display: block; width: 100%; height: auto; }
.rise::after { content: ''; position: absolute; inset-inline: 0; inset-block-end: 0; height: 120px; background: linear-gradient(to bottom, transparent, var(--paper)); pointer-events: none; }

/* ── 2 · the peak: «يوم في المكتب» ───────────────────────────────────────────── */
.peak { background: var(--vl-navy-deep); color: #e9ebee; }
.peak .track { position: relative; }
.peak .pin { position: relative; min-height: 100vh; min-height: 100dvh; display: grid; align-content: center; padding-block: 48px; }
.peak .pin > .wrap { max-width: 1520px; }
.peak-grid { display: grid; grid-template-columns: minmax(230px, 1fr) minmax(0, 4.3fr); gap: clamp(20px, 3vw, 48px); align-items: center; }
.peak-grid > div { min-width: 0; }
.peak-head .eyebrow { color: var(--vl-gold); }
.peak-head h2 { font-family: var(--disp); font-weight: 700; font-size: clamp(28px, 3.2vw, 40px); line-height: 1.25; color: #fff; margin: 0 0 10px; }
.peak-head > p { color: #b9c3cf; font-size: 14.5px; line-height: 1.75; max-width: 34ch; margin: 0 0 18px; }
.rail { list-style: none; margin: 0; padding: 0; position: relative; border-inline-start: 1px solid rgba(255, 255, 255, .18); }
/* the gold line grows with the scroll — continuous feedback, not five jumps */
.rail::before { content: ''; position: absolute; inset-inline-start: -1px; inset-block-start: 0; width: 1px; height: var(--rail-p, 0%); background: var(--vl-gold); transition: height .12s linear; }
.rail li { position: relative; padding: 7px 0; padding-inline-start: 18px; color: #8f9bab; cursor: pointer; transition: color .25s var(--ease-out); }
.rail li:focus-visible { outline: 2px solid var(--vl-gold); outline-offset: 2px; border-radius: 4px; }
.rail li::before { content: ''; position: absolute; inset-inline-start: -4.5px; inset-block-start: 15px; width: 8px; height: 8px; border-radius: 50%; background: #3b4a5c; transition: background .25s, transform .25s; }
.rail li time { display: block; font-family: var(--font-lat); font-size: 11.5px; letter-spacing: .1em; color: var(--vl-gold); direction: ltr; unicode-bidi: isolate; text-align: start; }
.rail li b { display: block; font-size: 15px; font-weight: 600; color: inherit; line-height: 1.35; }
/* the caption sits in its own box UNDER the rail with a fixed height, so a longer caption never
   moves the rail or the screen — the reflow was half of what read as «not smooth» */
.cap { position: relative; min-height: 8.2em; margin-block-start: 16px; padding-block-start: 12px; border-block-start: 1px solid rgba(255, 255, 255, .12); }
.cap p { position: absolute; inset: 12px 0 0 0; margin: 0; font-size: 13.5px; line-height: 1.7; color: #dfe5ec; opacity: 0; transition: opacity .35s var(--ease-out); }
.cap p.on { opacity: 1; }
.rail li.on { color: #fff; }
.rail li.on::before { background: var(--vl-gold); transform: scale(1.35); }

.stage { position: relative; width: 100%; max-width: calc((100vh - 150px) * 1.596); margin-inline: auto; aspect-ratio: 3000 / 1880; border-radius: 12px; overflow: hidden; background: #0b1a25; border: 1px solid rgba(255, 255, 255, .12); box-shadow: 0 50px 100px -40px rgba(0, 0, 0, .75); cursor: zoom-in; will-change: transform; }
.stage:focus-visible { outline: 2px solid var(--vl-gold); outline-offset: 4px; }
.stage img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top; opacity: 0; will-change: opacity, transform; }
.stage img.on, .stage img:first-child { opacity: 1; }
.stage .tag { position: absolute; inset-block-start: 14px; inset-inline-start: 14px; background: var(--vl-gold); color: #1a1a1a; font-weight: 700; font-size: 13px; padding: 6px 12px; border-radius: 999px; box-shadow: 0 6px 18px rgba(0, 0, 0, .3); }
.stage .tag time { font-family: var(--font-lat); direction: ltr; unicode-bidi: isolate; margin-inline-end: 6px; font-weight: 600; }
/* under 900px the peak is a swipe strip, not a pin */
@media (max-width: 899px) {
	.peak .pin { min-height: 0; padding-block: 48px; }
	.peak-grid { grid-template-columns: minmax(0, 1fr); }
	.rail { display: none; }
	.strip { display: flex; width: 100%; max-width: 100%; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; padding-block-end: 8px; -webkit-overflow-scrolling: touch; }
	.strip > figure { flex: 0 0 88%; scroll-snap-align: center; margin: 0; }
	.cap { display: none; }
	.strip img { width: 100%; height: auto; border-radius: 8px; border: 1px solid rgba(255, 255, 255, .12); display: block; }
	.strip figcaption { color: #dfe5ec; font-size: 14px; line-height: 1.6; margin-block-start: 10px; }
	.strip figcaption time { display: block; font-family: var(--font-lat); color: var(--vl-gold); font-size: 12px; letter-spacing: .1em; direction: ltr; text-align: start; }
	.stage { display: none; }
}
@media (min-width: 900px) { .strip { display: none; } }

/* ── 3 · the docket ─────────────────────────────────────────────────────────── */
/* the docket takes the whole wrap: the chapter mark sits above the list, and the figure gets the
   wider column — a 430px thumbnail beside nineteen rows read as «small» (his review) */
#docket .ch-in { grid-template-columns: 1fr; }
#docket .ch-mark { position: static; margin-block-end: 6px; }
.docket-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(420px, 1.45fr); gap: clamp(24px, 4vw, 64px); align-items: start; }
.docket { list-style: none; margin: 8px 0 0; padding: 0; counter-reset: dk; border-block-start: 1px solid var(--paper-line); }
.docket li { counter-increment: dk; display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; gap: 14px; align-items: baseline; padding: 13px 8px; border-block-end: 1px solid var(--paper-line); cursor: pointer; transition: background .2s; }
.docket li::before { content: counter(dk, arabic-indic); font-family: var(--disp); font-weight: 700; font-size: 26px; color: var(--vl-gold-ink); line-height: 1; }
html[lang='en'] .docket li::before { content: counter(dk, decimal-leading-zero); font-size: 22px; }
.docket li b { display: block; font-size: 17px; font-weight: 600; color: var(--vl-ink); }
.docket li span { display: block; font-size: 14px; color: var(--vl-slate); line-height: 1.6; }
.docket li em { font-style: normal; font-size: 12px; color: var(--vl-muted); white-space: nowrap; }
.docket li:hover, .docket li:focus-within, .docket li.on { background: var(--paper-2); }
.docket-fig { position: sticky; top: 96px; }
.docket-fig .shot { border: 1px solid var(--paper-line); border-radius: 12px; overflow: hidden; background: #fff; aspect-ratio: 3000 / 1880; position: relative; cursor: zoom-in; box-shadow: 0 30px 60px -36px rgba(21, 75, 105, .45); }
.docket-fig .shot:focus-visible { outline: 2px solid var(--vl-navy); outline-offset: 4px; }
.docket-fig .shot img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top; opacity: 0; transition: opacity .25s var(--ease-out); }
.docket-fig .shot img.on { opacity: 1; }
.docket-fig figcaption { font-size: 13px; color: var(--vl-muted); margin-block-start: 8px; min-height: 1.6em; }
.docket-ai { display: flex; gap: 14px; align-items: center; margin-block-start: 22px; padding: 14px 16px; border: 1px solid var(--paper-line); border-radius: 10px; background: #fff; }
.docket-ai .vlai { flex: 0 0 auto; }
.docket-ai p { margin: 0; font-size: 14px; line-height: 1.7; color: var(--vl-slate); }
.docket-ai b { color: var(--vl-ink); }
@media (max-width: 860px) { .docket-grid { grid-template-columns: 1fr; } .docket-fig { position: static; order: -1; } .docket li { grid-template-columns: 44px minmax(0, 1fr); } .docket li em { display: none; } }

/* ── 4 · the signature: the letterhead ──────────────────────────────────────── */
.lh-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(300px, 3fr); gap: clamp(24px, 5vw, 72px); align-items: start; }
.lh-field { margin-block-start: 22px; }
.lh-field label { display: block; font-size: 13px; font-weight: 600; color: var(--vl-ink); margin-block-end: 6px; }
.lh-field input { width: 100%; font: inherit; font-size: 18px; padding: 12px 14px; border: 1px solid var(--vl-line); border-radius: 8px; background: #fff; color: var(--vl-ink); }
.lh-field input:focus { outline: none; border-color: var(--vl-navy); box-shadow: 0 0 0 4px var(--vl-focus-ring); }
.lh-field small { display: block; font-size: 12px; color: var(--vl-muted); margin-block-start: 6px; }
.sheet { position: relative; background: #fff; aspect-ratio: 1 / 1.3; max-width: 640px; margin-inline: auto; border: 1px solid var(--paper-line); box-shadow: 0 30px 60px -30px rgba(21, 75, 105, .35); padding: clamp(18px, 4vw, 36px); display: flex; flex-direction: column; font-size: 12.5px; color: var(--vl-slate); }
.sheet .band { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; padding-block-end: 12px; border-block-end: 2px solid var(--vl-gold); }
.sheet .band .nm { font-family: var(--disp); font-weight: 700; font-size: clamp(18px, 3vw, 26px); color: var(--vl-navy); line-height: 1.2; }
.sheet .band .nm small { display: block; font-family: var(--font-ar); font-weight: 400; font-size: 11px; color: var(--vl-muted); margin-block-start: 3px; }
html[lang='en'] .sheet .band .nm small { font-family: var(--font-lat); }
.sheet .band .lg { width: 40px; height: 40px; border-radius: 50%; background: var(--vl-navy); display: grid; place-items: center; color: var(--vl-gold); font-family: var(--disp); font-weight: 700; font-size: 20px; }
.sheet .title { font-family: var(--disp); font-weight: 700; font-size: 18px; color: var(--vl-ink); margin-block: 20px 6px; }
.sheet .kv { display: grid; grid-template-columns: auto 1fr; gap: 4px 14px; font-size: 12px; }
.sheet .kv b { color: var(--vl-ink); font-weight: 600; }
.sheet .lines { margin-block-start: 16px; border-block-start: 1px solid var(--paper-line); }
.sheet .lines div { display: flex; justify-content: space-between; padding: 6px 0; border-block-end: 1px solid var(--paper-line); }
.sheet .lines div:last-child { font-weight: 700; color: var(--vl-ink); }
.sheet .n { font-family: var(--font-lat); direction: ltr; unicode-bidi: isolate; font-variant-numeric: tabular-nums; }
.sheet .foot { margin-block-start: auto; padding-block-start: 12px; border-block-start: 1px solid var(--paper-line); display: flex; justify-content: space-between; align-items: flex-end; font-size: 10.5px; color: var(--vl-muted); }
.sheet .stamp { width: 88px; height: 88px; border: 2px solid var(--vl-gold-ink); border-radius: 50%; display: grid; place-items: center; text-align: center; font-family: var(--disp); font-weight: 700; font-size: 11px; color: var(--vl-gold-ink); padding: 8px; transform: rotate(-8deg); transform-origin: 50% 50%; opacity: .85; }
.sheet .stamp.press { animation: lh-press .38s var(--ease-out); }
@keyframes lh-press { 0% { transform: rotate(-8deg) scale(1.25); opacity: 0; } 60% { transform: rotate(-8deg) scale(.96); opacity: 1; } 100% { transform: rotate(-8deg) scale(1); opacity: .85; } }
@media (max-width: 860px) { .lh-grid { grid-template-columns: 1fr; } }

/* ── the ledger (migration + security facts) ────────────────────────────────── */
.ledger { display: grid; grid-template-columns: 1fr 1fr; gap: 0 clamp(24px, 5vw, 72px); margin-block-start: 34px; }
.ledger dl { margin: 0; border-block-start: 1px solid var(--paper-line); }
.ledger dl > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: baseline; padding: 12px 0; border-block-end: 1px solid var(--paper-line); }
.ledger dt { font-size: 14.5px; color: var(--vl-slate); }
.ledger dt b { color: var(--vl-ink); font-weight: 600; }
.ledger dd { margin: 0; font-family: var(--disp); font-weight: 700; font-size: 24px; color: var(--vl-navy); white-space: nowrap; }
.ledger dd.t { font-family: var(--font-ar); font-size: 13px; font-weight: 600; color: var(--vl-gold-ink); }
html[lang='en'] .ledger dd.t { font-family: var(--font-lat); }
.ledger h3 { font-family: var(--disp); font-weight: 700; font-size: 22px; margin: 0 0 10px; }
@media (max-width: 760px) { .ledger { grid-template-columns: 1fr; gap: 28px; } }

/* ── 5 · the offer as ONE table ─────────────────────────────────────────────── */
.offer { overflow-x: auto; margin-block-start: 28px; }
.offer table { width: 100%; border-collapse: collapse; min-width: 640px; }
.offer th, .offer td { padding: 12px 14px; text-align: start; border-block-end: 1px solid var(--paper-line); vertical-align: top; font-size: 14.5px; }
.offer thead th { border-block-end: 2px solid var(--vl-navy); vertical-align: bottom; }
.offer thead th.t { font-family: var(--disp); font-weight: 700; font-size: 24px; color: var(--vl-ink); }
.offer thead th.t small { display: block; font-family: var(--font-ar); font-weight: 400; font-size: 12.5px; color: var(--vl-muted); margin-block-start: 4px; }
html[lang='en'] .offer thead th.t small { font-family: var(--font-lat); }
.offer thead th.pop { background: var(--paper-2); }
/* the tag is an element INSIDE the cell — a pseudo hung above the row was clipped by the table's
   scroller, and an attr()-less copy on the price row drew an empty gold bar (his 2026-09-02 report) */
.offer .pop-tag { display: block; width: max-content; font-family: var(--font-ar); font-size: 11px; font-weight: 600; background: var(--vl-gold); color: #1a1a1a; padding: 3px 9px; border-radius: 999px; margin-block-end: 8px; }
html[lang='en'] .offer .pop-tag { font-family: var(--font-lat); }
.offer td.pop { background: var(--paper-2); }
.offer .price { font-family: var(--disp); font-weight: 700; font-size: 36px; color: var(--vl-navy); line-height: 1; }
.offer .price small { display: block; font-family: var(--font-ar); font-weight: 400; font-size: 12px; color: var(--vl-muted); margin-block-start: 6px; }
html[lang='en'] .offer .price small { font-family: var(--font-lat); }
.offer td.row-l { color: var(--vl-slate); }
.offer td .yes { color: var(--vl-green); font-weight: 700; }
.offer td .no { color: var(--vl-faint); }
.offer tfoot td { border-block-end: 0; padding-block-start: 18px; }
.offer .btn { width: 100%; justify-content: center; }
.terms-strip { margin-block-start: 22px; }

/* ── motion guards ──────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
	.rise .frame { transform: none; }
	.claim h1 .w { opacity: 1 !important; transform: none !important; }
	.stage img { position: static; opacity: 1 !important; height: auto; transform: none !important; }
	.stage { aspect-ratio: auto; display: grid; gap: 10px; }
	.rail li span { max-height: none; opacity: 1; }
	.sheet .stamp.press { animation: none; }
	.peak .pin { min-height: 0; }
}
