/* Kandeel Developments — OOH campaign concept ("Where Capital Meets Capital")
   Derived from the Kandeel Series site stylesheet (kandeel-series-site/src/styles.css):
   same tokens, fonts, wordmark, barcode, footer and Arabic gloss patterns, trimmed
   to a single-page layout, plus a billboard component (.bb).
   Brand system: OFFICIAL Kandeel Developments brand book (2024).
   Palette (exact): Cod Gray #151515 · Kumera #935726 · Soft Amber #CFC4B1
                    (primaries) · Tango #F27A21 · Dawn Pink #F2E8E5 (secondaries).
   Type: Larken (primary serif) -> Fraunces stand-in; Nohemi (secondary sans)
         -> Plus Jakarta Sans stand-in. */

:root {
  /* Official palette */
  --cod: #151515;     /* Cod Gray — primary */
  --kumera: #935726;  /* Kumera — primary */
  --amber: #CFC4B1;   /* Soft Amber — primary */
  --tango: #F27A21;   /* Tango — secondary, single accent only */
  --dawn: #F2E8E5;    /* Dawn Pink — secondary */

  /* Derived tones (mixes of the official palette, no new hues) */
  --k-gold: color-mix(in srgb, var(--kumera) 45%, var(--amber));

  --ink: var(--cod);
  --ink-2: color-mix(in srgb, var(--cod) 96%, var(--amber));
  --ink-3: color-mix(in srgb, var(--cod) 92%, var(--amber));
  --cream: var(--amber);
  --cream-dim: rgba(207, 196, 177, .62);
  --cream-faint: rgba(207, 196, 177, .14);
  --accent: var(--amber);
  --serif: "Fraunces", "Larken", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --sans: "Plus Jakarta Sans", "Nohemi", "Helvetica Neue", sans-serif;
  --mono: var(--sans);
  --arabic: "Readex Pro", "Geeza Pro", "Segoe UI", Tahoma, sans-serif; /* stand-in for GE Dinar Two / Forma DJR Arabic, per MFZ */
  --gutter: clamp(1.25rem, 5vw, 5.5rem);
  --ease: cubic-bezier(.2, .7, .1, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--ink);
  color: var(--cream);
  font-family: var(--sans);
  font-size: clamp(1rem, .35vw + .9rem, 1.15rem);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
a { color: inherit; }
::selection { background: var(--cream); color: var(--ink); }

.mono {
  font-family: var(--mono);
  font-weight: 500;
  font-size: .7rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  font-variant-numeric: tabular-nums;
}

/* ---------- Wordmark (real logo file) ---------- */
.wordmark { display: inline-flex; flex-direction: column; align-items: center; gap: .45em; text-decoration: none; color: var(--cream); line-height: 1; }
.wordmark__logo { display: block; height: 1.05rem; width: auto; }
.wordmark--lg .wordmark__logo { height: clamp(1.8rem, 3.4vw, 2.7rem); }

/* ---------- Barcode — Kandeel's signature graphic element ----------
   Vertical bars of varying width/height, derived from the letters of KANDEEL. */
.barcode { display: inline-flex; align-items: flex-end; gap: 2px; height: .95rem; color: var(--accent); flex: none; }
.barcode i { display: block; width: 2px; height: 100%; background: currentColor; }
.barcode i:nth-child(1) { width: 4px; }                 /* K */
.barcode i:nth-child(2) { width: 1px; height: 72%; }    /* A */
.barcode i:nth-child(3) { width: 3px; }                 /* N */
.barcode i:nth-child(4) { width: 5px; height: 86%; }    /* D */
.barcode i:nth-child(5) { width: 1px; height: 58%; }    /* E */
.barcode i:nth-child(6) { width: 2px; height: 58%; }    /* E */
.barcode i:nth-child(7) { width: 3px; height: 40%; }    /* L */
.barcode--lg { height: 1.6rem; gap: 3px; }
.barcode--lg i { transform: scaleX(1.4); transform-origin: left; margin-right: 1px; }
.barcode--tango { color: var(--tango); }
.label { color: var(--cream-dim); margin: 0 0 1.75rem; }
.label::before { content: ""; display: inline-block; width: 2.5rem; height: 1px; background: currentColor; vertical-align: middle; margin-right: 1rem; opacity: .6; }

/* Film grain */
.grain {
  position: fixed; inset: -50%; z-index: 90; pointer-events: none; opacity: .07;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: grain 1.2s steps(6) infinite;
}
@keyframes grain {
  0% { transform: translate(0, 0); } 20% { transform: translate(-3%, 2%); } 40% { transform: translate(2%, -3%); }
  60% { transform: translate(-2%, -1%); } 80% { transform: translate(3%, 3%); } 100% { transform: translate(0, 0); }
}

/* ---------- Hero — Execution A's photograph, full-bleed, text set into its shadow ---------- */
.hero {
  position: relative; min-height: 100vh; min-height: 100svh;
  display: grid; grid-template-columns: minmax(0, 1fr);
  overflow: hidden; isolation: isolate;
}
.hero__copy {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; justify-content: space-between; gap: 3rem;
  padding: clamp(2rem, 5vh, 3.5rem) var(--gutter) clamp(2rem, 6vh, 4rem);
}
.hero__top { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; opacity: 0; animation: fadeIn 1.4s ease .3s forwards; }
.hero__top .wordmark__logo { height: clamp(1.3rem, 2.2vw, 1.9rem); }
.hero__kicker { color: var(--cream-dim); margin: 0; text-align: right; }
.hero__kicker span { color: var(--cream); }
/* keep the type inside the photograph's shadow side */
.hero__copy > div { max-width: 60rem; }
.hero__title {
  font-family: var(--serif); font-weight: 600; font-variation-settings: "opsz" 144;
  font-size: clamp(2.4rem, 6.4vw, 7.6rem); line-height: .92; letter-spacing: -.012em; text-transform: uppercase;
  margin: 0; color: var(--amber);
}
.hero__title span { display: block; white-space: nowrap; opacity: 0; animation: fadeUp 1.6s var(--ease) forwards; }
.hero__title span:nth-child(1) { animation-delay: .6s; }
.hero__title span:nth-child(2) { animation-delay: .85s; }
.hero__title-ar {
  font-family: var(--arabic); font-weight: 300; font-size: clamp(1.1rem, 2vw, 1.7rem); line-height: 1.5; letter-spacing: 0;
  margin: 1.4rem 0 0; color: var(--cream-dim); text-align: left;
  opacity: 0; animation: fadeUp 1.4s var(--ease) 1.2s forwards;
}
.hero__id { display: flex; align-items: center; gap: 1rem; margin: 0; color: var(--cream-dim); opacity: 0; animation: fadeUp 1.4s var(--ease) 1.5s forwards; }
.hero__id b { color: var(--cream); font-weight: 600; }
.hero__id-ar { display: block; font-family: var(--arabic); font-weight: 300; letter-spacing: 0; text-transform: none; font-size: .85rem; color: rgba(207,196,177,.5); margin-top: .5rem; text-align: left; opacity: 0; animation: fadeUp 1.4s var(--ease) 1.7s forwards; }
.hero__media { position: absolute; inset: 0; z-index: 0; margin: 0; overflow: hidden; }
.hero__media img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 52%;
  filter: grayscale(1) contrast(1.15) brightness(.78);
  transform: scale(1.08); animation: heroPush 14s var(--ease) forwards;
}
.hero__media::before { content: ""; position: absolute; inset: 0; z-index: 1; background: color-mix(in srgb, var(--kumera) 70%, var(--amber)); opacity: .55; mix-blend-mode: color; pointer-events: none; }
.hero__media::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background:
    radial-gradient(circle at 51% 58%, rgba(242,122,33,.4) 0, transparent 12vw),
    linear-gradient(90deg, var(--ink) 0%, rgba(21,21,21,.82) 30%, rgba(21,21,21,.3) 55%, rgba(21,21,21,0) 70%),
    linear-gradient(to top, var(--ink) 0%, rgba(21,21,21,0) 32%),
    linear-gradient(to bottom, rgba(21,21,21,.6) 0%, rgba(21,21,21,0) 18%);
}
.hero__credit { position: absolute; z-index: 3; right: var(--gutter); bottom: clamp(1.4rem, 4vh, 2.4rem); margin: 0; font-size: .58rem; letter-spacing: .24em; color: rgba(207,196,177,.7); padding-left: .8rem; border-left: 1px solid var(--tango); }
@keyframes heroPush { to { transform: scale(1); } }
@keyframes fadeUp { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes fadeIn { to { opacity: 1; } }

/* ---------- Section shell ---------- */
.sec { padding: clamp(6rem, 15vh, 10rem) var(--gutter); border-top: 1px solid var(--cream-faint); }
.sec--alt { background: var(--ink-2); }
.sec__inner { max-width: 1400px; margin: 0 auto; }
.sec__head { margin: 0 0 clamp(2.5rem, 6vh, 4rem); }
.sec__title { font-family: var(--serif); font-weight: 300; font-variation-settings: "opsz" 144; font-size: clamp(2rem, 4.2vw, 3.8rem); line-height: 1.05; margin: 0; letter-spacing: -.015em; }

/* ---------- Concept ---------- */
.concept__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2.4fr); gap: 3rem; max-width: 1400px; margin: 0 auto; }
.concept__lead {
  font-family: var(--serif); font-weight: 300; font-variation-settings: "opsz" 96;
  font-size: clamp(1.6rem, 3.2vw, 2.9rem); line-height: 1.18; margin: 0; letter-spacing: -.01em; max-width: 30ch;
}
.concept__text { max-width: 58ch; color: var(--cream-dim); margin: 2.2rem 0 0; }
.lines { list-style: none; margin: 3rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--cream-faint); }
.lines li { padding: 1.4rem 1.5rem 0 0; display: flex; flex-direction: column; gap: .6rem; }
.lines li + li { padding-left: 1.5rem; border-left: 1px solid var(--cream-faint); }
.lines span { color: var(--cream-dim); font-size: .6rem; }
.lines b { font-family: var(--serif); font-weight: 400; font-size: clamp(1rem, 1.3vw, 1.2rem); line-height: 1.35; }

/* ---------- Billboard component (.bb) ----------
   Each execution is its own composition, sized by its own width (container units),
   so the same markup renders as a site card and as the 1:1 artwork composited
   into the mockups. Real HTML text — nothing is baked into the generated images.
   Image treatment follows the Series site: grayscale pulled toward a brand tint with
   mix-blend-mode: color, directional gradients that fall away to Cod Gray, so type
   sits in a dark area of the photograph itself rather than on a bolted-on panel. */
.bb { container-type: inline-size; position: relative; aspect-ratio: 3 / 1; background: var(--cod); overflow: hidden; color: var(--amber); isolation: isolate; }
.bb--wide { aspect-ratio: 16 / 9; }
.bb__bg { position: absolute; inset: 0; z-index: 0; margin: 0; }
.bb__bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.bb__bg::before { content: ""; position: absolute; inset: 0; z-index: 1; mix-blend-mode: color; pointer-events: none; }
.bb__bg::after { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; }
.bb__logo { position: absolute; z-index: 3; display: block; height: auto; }
.bb__head {
  position: absolute; z-index: 3; margin: 0; font-family: var(--serif); font-weight: 600; font-variation-settings: "opsz" 144;
  line-height: .93; letter-spacing: -.01em; text-transform: uppercase; color: var(--amber);
}
.bb__head span { display: block; white-space: nowrap; }
.bb__id { position: absolute; z-index: 3; display: flex; align-items: center; margin: 0; font-family: var(--sans); font-weight: 500; letter-spacing: .2em; text-transform: uppercase; color: var(--cream-dim); white-space: nowrap; }
.bb__id b { color: var(--amber); font-weight: 600; }
.bb .barcode { color: var(--tango); }

/* ===== Execution A — full-bleed low-angle hero, headline in the shadow of the neighbouring tower ===== */
.bb--a .bb__bg img { object-position: 50% 64%; filter: grayscale(1) contrast(1.18) brightness(.8); }
.bb--a .bb__bg::before { background: color-mix(in srgb, var(--kumera) 70%, var(--amber)); opacity: .55; }
.bb--a .bb__bg::after {
  background:
    radial-gradient(circle at 51% 46%, color-mix(in srgb, var(--tango) 55%, transparent) 0, transparent 9cqw),
    linear-gradient(90deg, var(--cod) 0%, rgba(21,21,21,.86) 26%, rgba(21,21,21,.42) 46%, rgba(21,21,21,0) 60%),
    linear-gradient(0deg, rgba(21,21,21,.75) 0%, rgba(21,21,21,0) 34%);
}
.bb--a .bb__logo { left: 3.6cqw; top: 3.4cqw; width: 15cqw; }
.bb--a .bb__head { left: 3.6cqw; top: 50%; transform: translateY(-58%); font-size: 5.7cqw; }
.bb--a .bb__id { left: 3.6cqw; right: 3.6cqw; bottom: 2.9cqw; gap: 1.1cqw; font-size: .98cqw; }
.bb--a .bb__id .barcode { height: 1.5cqw; gap: .2cqw; }
.bb--a .bb__id::after { content: ""; flex: 1; height: 1px; margin-left: 1.4cqw; background: linear-gradient(90deg, var(--tango), transparent 70%); opacity: .8; }
.bb--a.bb--wide .bb__bg img { object-position: 50% 56%; }
.bb--a.bb--wide .bb__bg::after {
  background:
    radial-gradient(circle at 51% 64%, color-mix(in srgb, var(--tango) 55%, transparent) 0, transparent 14cqw),
    linear-gradient(90deg, var(--cod) 0%, rgba(21,21,21,.84) 30%, rgba(21,21,21,.35) 52%, rgba(21,21,21,0) 64%),
    linear-gradient(0deg, rgba(21,21,21,.85) 0%, rgba(21,21,21,0) 40%);
}
.bb--a.bb--wide .bb__logo { left: 5cqw; top: 5cqw; width: 22cqw; }
.bb--a.bb--wide .bb__head { left: 5cqw; top: auto; bottom: 14cqw; transform: none; font-size: 6.6cqw; }
.bb--a.bb--wide .bb__id { left: 5cqw; right: 5cqw; bottom: 5cqw; font-size: 1.45cqw; gap: 1.6cqw; letter-spacing: .16em; }
.bb--a.bb--wide .bb__id .barcode { height: 2.2cqw; gap: .3cqw; }

/* ===== Execution B — the facade as texture; the fins and the barcode rhyme ===== */
.bb--b .bb__bg img { object-position: 50% 40%; transform: scaleX(-1); filter: grayscale(1) contrast(1.3) brightness(.72); }
.bb--b .bb__bg::before { background: color-mix(in srgb, var(--kumera) 55%, var(--amber)); opacity: .4; }
.bb--b .bb__bg::after {
  background:
    linear-gradient(270deg, var(--cod) 0%, rgba(21,21,21,.9) 30%, rgba(21,21,21,.45) 50%, rgba(21,21,21,0) 64%),
    linear-gradient(0deg, rgba(21,21,21,.55) 0%, rgba(21,21,21,0) 30%);
}
.bb--b .bb__mark { position: absolute; z-index: 3; left: 3.6cqw; bottom: 3cqw; display: flex; align-items: flex-end; gap: 1.6cqw; }
.bb--b .bb__mark .barcode { height: 15cqw; gap: .9cqw; }
.bb--b .bb__mark .barcode i { box-shadow: 0 0 2cqw rgba(0,0,0,.35); }
.bb--b .bb__mark .barcode i:nth-child(1) { width: 1.8cqw; } .bb--b .bb__mark .barcode i:nth-child(2) { width: .45cqw; }
.bb--b .bb__mark .barcode i:nth-child(3) { width: 1.3cqw; } .bb--b .bb__mark .barcode i:nth-child(4) { width: 2.2cqw; }
.bb--b .bb__mark .barcode i:nth-child(5) { width: .45cqw; } .bb--b .bb__mark .barcode i:nth-child(6) { width: .9cqw; }
.bb--b .bb__mark .barcode i:nth-child(7) { width: 1.3cqw; }
.bb--b .bb__rule { position: absolute; z-index: 3; left: 3.6cqw; right: 3.6cqw; bottom: 3cqw; height: 1px; background: linear-gradient(90deg, var(--tango) 0%, rgba(242,122,33,.25) 45%, var(--tango) 100%); }
.bb--b .bb__logo { right: 3.6cqw; top: 3.4cqw; width: 14cqw; }
.bb--b .bb__head { right: 3.6cqw; bottom: 6.6cqw; text-align: right; font-size: 4.7cqw; }
.bb--b .bb__head em { font-style: italic; font-weight: 400; color: var(--dawn); text-transform: none; letter-spacing: -.005em; }
.bb--b .bb__id { right: 3.6cqw; bottom: 4cqw; font-size: .9cqw; transform: translateY(50%); background: var(--cod); padding-left: 1.2cqw; }
.bb--b.bb--wide .bb__bg img { object-position: 50% 32%; }
.bb--b.bb--wide .bb__bg::after {
  background:
    linear-gradient(270deg, var(--cod) 0%, rgba(21,21,21,.88) 34%, rgba(21,21,21,.3) 58%, rgba(21,21,21,0) 70%),
    linear-gradient(0deg, rgba(21,21,21,.65) 0%, rgba(21,21,21,0) 34%);
}
.bb--b.bb--wide .bb__mark { left: 5cqw; bottom: 5cqw; }
.bb--b.bb--wide .bb__mark .barcode { height: 27cqw; }
.bb--b.bb--wide .bb__rule { left: 5cqw; right: 5cqw; bottom: 5cqw; }
.bb--b.bb--wide .bb__logo { right: 5cqw; top: 5cqw; width: 22cqw; }
.bb--b.bb--wide .bb__head { right: 5cqw; bottom: 10cqw; font-size: 6.6cqw; }
.bb--b.bb--wide .bb__id { right: 5cqw; bottom: 5cqw; font-size: 1.35cqw; letter-spacing: .15em; padding-left: 1.6cqw; }

/* ===== Execution C — blue hour, a portrait column of the lit tower set into its own blurred night ===== */
.bb--c .bb__bg img { object-position: 50% 45%; transform: scale(1.25); filter: blur(1.2cqw) grayscale(.5) brightness(.62); }
.bb--c .bb__bg::before { background: var(--kumera); opacity: .6; }
.bb--c .bb__bg::after { background: linear-gradient(90deg, rgba(21,21,21,.92) 0%, rgba(21,21,21,.55) 55%, rgba(21,21,21,.2) 100%); }
.bb--c .bb__col { position: absolute; z-index: 3; top: 0; bottom: 0; right: 9cqw; width: 26cqw; margin: 0; overflow: hidden; box-shadow: -3cqw 0 5cqw rgba(0,0,0,.55); }
.bb--c .bb__col img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 32%; filter: grayscale(.45) saturate(.8) contrast(1.06) brightness(.95); }
.bb--c .bb__col::before { content: ""; position: absolute; inset: 0; z-index: 1; background: color-mix(in srgb, var(--kumera) 60%, var(--amber)); mix-blend-mode: color; opacity: .55; }
.bb--c .bb__col::after { content: ""; position: absolute; inset: 0; z-index: 2; background: linear-gradient(0deg, rgba(21,21,21,.55), transparent 28%); }
.bb--c .bb__col-rule { position: absolute; z-index: 4; top: 0; bottom: 0; right: 35cqw; width: 1px; background: linear-gradient(transparent, var(--tango) 30%, var(--tango) 70%, transparent); }
.bb--c .bb__logo { left: 3.6cqw; top: 3.4cqw; width: 15cqw; }
.bb--c .bb__head { left: 3.6cqw; top: 50%; transform: translateY(-50%); font-size: 6.6cqw; }
.bb--c .bb__head span:last-child { color: var(--dawn); }
.bb--c .bb__id { left: 3.6cqw; bottom: 2.9cqw; gap: 1.1cqw; font-size: .98cqw; }
.bb--c .bb__id .barcode { height: 1.5cqw; gap: .2cqw; }
.bb--c .bb__time { position: absolute; z-index: 4; right: 2.4cqw; top: 50%; transform: translateY(-50%) rotate(180deg); writing-mode: vertical-rl; white-space: nowrap; margin: 0; font-family: var(--sans); font-weight: 500; font-size: .8cqw; letter-spacing: .3em; text-transform: uppercase; color: var(--cream-dim); }
.bb--c.bb--wide .bb__col { right: 8cqw; width: 36cqw; }
.bb--c.bb--wide .bb__col-rule { right: 44cqw; }
.bb--c.bb--wide .bb__logo { left: 5cqw; top: 5cqw; width: 22cqw; }
.bb--c.bb--wide .bb__head { left: 5cqw; top: auto; bottom: 14cqw; transform: none; font-size: 7.6cqw; }
.bb--c.bb--wide .bb__id { left: 5cqw; bottom: 5cqw; font-size: 1.05cqw; gap: 1.2cqw; letter-spacing: .15em; }
.bb--c.bb--wide .bb__id .barcode { height: 2.2cqw; gap: .3cqw; }
.bb--c.bb--wide .bb__time { right: 3cqw; font-size: 1.1cqw; }

/* ---------- Variants ---------- */
.variants { display: grid; grid-template-columns: 1fr; gap: clamp(3rem, 7vh, 5rem); }
.variant { margin: 0; }
.variant .bb { box-shadow: 0 0 0 1px var(--cream-faint), 0 2.5rem 5rem -2rem rgba(0,0,0,.7); }
.exec-img { position: relative; overflow: hidden; box-shadow: 0 0 0 1px var(--cream-faint), 0 2.5rem 5rem -2rem rgba(0,0,0,.7); }
.exec-img img { display: block; width: 100%; height: auto; }
.variant figcaption { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 1rem 3rem; margin-top: 1.6rem; padding-top: 1.2rem; border-top: 1px solid var(--cream-faint); }
.variant__tag { display: flex; flex-direction: column; gap: .4rem; }
.variant__tag b { color: var(--cream); font-weight: 500; }
.variant__tag span { color: var(--cream-dim); }
.variant__note { margin: 0; color: var(--cream-dim); font-size: .98rem; max-width: 56ch; }
.variant__note-ar { display: block; font-family: var(--arabic); font-weight: 300; letter-spacing: 0; text-align: right; font-size: .9rem; line-height: 1.8; color: rgba(207,196,177,.5); margin-top: .5rem; }
.variants--pair { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(1.5rem, 3vw, 3rem); margin-top: clamp(3rem, 7vh, 5rem); }
.variants--pair figcaption { grid-template-columns: 1fr; }

/* ---------- Execution blocks: one 3:1 board large, the 16:9 panel offset beside its note ---------- */
.exec + .exec { margin-top: clamp(5rem, 12vh, 8rem); padding-top: clamp(3rem, 7vh, 4.5rem); border-top: 1px solid var(--cream-faint); }
.exec__head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: end; gap: 1.5rem 2.5rem; margin-bottom: clamp(1.8rem, 4vh, 2.6rem); }
.exec__num { font-family: var(--serif); font-weight: 300; font-size: clamp(3rem, 6vw, 5.5rem); line-height: .8; letter-spacing: 0; text-transform: none; color: var(--tango); }
.exec__line { margin: 0; font-family: var(--serif); font-weight: 400; font-size: clamp(1.3rem, 2.2vw, 2rem); line-height: 1.15; }
.exec__line-ar { margin: .4rem 0 0; font-family: var(--arabic); font-weight: 300; font-size: clamp(.9rem, 1.2vw, 1.1rem); color: var(--cream-dim); text-align: left; }
.exec__tag { color: var(--cream-dim); padding-left: .9rem; border-left: 1px solid var(--tango); }
.variant .exec__fmt { display: flex; grid-template-columns: none; flex-wrap: wrap; justify-content: space-between; gap: .4rem 2rem; margin-top: 1rem; color: var(--cream); }
.exec__fmt b { font-weight: 500; }
.exec__fmt span { color: var(--cream-dim); }
.exec__row { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; margin-top: clamp(2.5rem, 6vh, 4rem); }
.exec__row .variant__note { padding-bottom: 3rem; }

/* ---------- In-context mockups ---------- */
.mock { margin: 0 0 clamp(3rem, 8vh, 5.5rem); }
.mock:last-child { margin-bottom: 0; }
.mock__frame { position: relative; overflow: hidden; aspect-ratio: 2720 / 1536; background: var(--ink-3); }
.mock__frame img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.04); transition: transform 2.8s var(--ease); }
.mock.is-in .mock__frame img { transform: scale(1); }
.mock__frame::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 1px rgba(207,196,177,.08); pointer-events: none; }
.mock figcaption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6rem 2rem; margin-top: 1.2rem; padding-left: .9rem; border-left: 1px solid var(--tango); color: var(--cream); }
.mock figcaption span { color: var(--cream-dim); }

/* ---------- Footer (identical pattern to the Series site) ---------- */
.foot { background: var(--ink-2); border-top: 1px solid var(--cream-faint); padding: clamp(4rem, 10vh, 6rem) var(--gutter) 2.5rem; }
.foot__inner { max-width: 1400px; margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 2fr); gap: 3rem; align-items: start; }
.foot__brand { display: flex; flex-direction: column; align-items: flex-start; gap: 1.6rem; }
.foot__brand .barcode { color: var(--amber); }
.foot__tag { margin: 0; font-family: var(--serif); font-weight: 300; font-size: clamp(1.1rem, 1.6vw, 1.4rem); color: var(--cream); }
.foot__tags { display: flex; flex-direction: column; gap: .35rem; }
.foot__tag-ar { margin: 0; font-family: var(--arabic); font-weight: 300; font-size: clamp(.82rem, 1vw, .95rem); letter-spacing: 0; color: var(--cream-dim); text-align: right; }
.foot__contact { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; margin: 0; }
.foot__contact dt { color: var(--cream-dim); font-size: .6rem; margin-bottom: .6rem; }
.foot__contact dd { margin: 0; font-size: .95rem; line-height: 1.6; }
.foot__contact a { text-decoration: none; border-bottom: 1px solid var(--cream-faint); transition: border-color .3s, color .3s; }
.foot__contact a:hover { color: var(--dawn); border-color: var(--k-gold); }
.foot__contact .hot { font-family: var(--serif); font-weight: 400; font-size: 1.6rem; letter-spacing: .04em; border: 0; }
.fine { margin: 4.5rem auto 0; max-width: 1400px; width: 100%; color: rgba(207,196,177,.32); font-size: .56rem; line-height: 1.9; letter-spacing: .14em; padding-top: 1.6rem; border-top: 1px solid var(--cream-faint); }

/* ---------- Arabic gloss layer (same pattern as the Series site) ---------- */
.gloss-h-ar {
  display: block; font-family: var(--arabic); font-weight: 300; letter-spacing: 0; text-align: right;
  font-size: clamp(1rem, 1.6vw, 1.5rem); line-height: 1.5; color: var(--cream-dim); margin: .8rem 0 0; max-width: 46rem;
}
.gloss-p-ar {
  display: block; font-family: var(--arabic); font-weight: 300; letter-spacing: 0; text-align: right;
  font-size: clamp(.84rem, .3vw + .78rem, .96rem); line-height: 1.85; color: rgba(207, 196, 177, .5); margin: .9rem 0 0; max-width: 46rem;
}
.lines .lines__ar { font-family: var(--arabic); font-weight: 300; letter-spacing: 0; text-transform: none; font-size: .85rem; color: var(--cream-dim); }

/* ---------- Reveal system ---------- */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity 1.2s var(--ease), transform 1.2s var(--ease); }
.reveal.is-in { opacity: 1; transform: none; }
.no-js .reveal { opacity: 1; transform: none; }

/* ---------- Responsive ---------- */
@media (max-width: 1100px) {
  .variants--pair { grid-template-columns: 1fr; }
  .lines { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lines li:nth-child(3) { padding-left: 0; border-left: 0; }
}
@media (max-width: 900px) {
  .hero__media img { object-position: 62% 52%; }
  .hero__media::after { background: linear-gradient(to bottom, rgba(21,21,21,.75) 0%, rgba(21,21,21,.35) 40%, rgba(21,21,21,.55) 70%, var(--ink) 100%); }
  .concept__grid { grid-template-columns: 1fr; gap: 1rem; }
  .lines { grid-template-columns: 1fr; }
  .lines li, .lines li + li { padding: 1.2rem 0; border-left: 0; border-bottom: 1px solid var(--cream-faint); }
  .variant figcaption { grid-template-columns: 1fr; }
  .exec__head { grid-template-columns: auto minmax(0, 1fr); }
  .exec__tag { grid-column: 1 / -1; }
  .exec__row { grid-template-columns: 1fr; }
  .exec__row .variant__note { padding-bottom: 0; }
  .foot__inner { grid-template-columns: 1fr; }
  .foot__contact { grid-template-columns: 1fr; gap: 1.4rem; }
}
@media (max-width: 520px) {
  .hero__top { flex-direction: column; align-items: flex-start; }
  .hero__kicker { text-align: left; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-delay: 0s !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  .grain { animation: none; }
  html { scroll-behavior: auto; }
}
