/* ==========================================================================
   Lusail Corp — site stylesheet

   DIRECTION: editorial and typographic.
   Type and white space carry the page. Photography appears only where it is
   genuinely strong, as a deliberate full-width plate with a caption beneath
   it — never as a dark scrim with text dropped on top. Cutout product shots
   are shown as contained stills on their own white, because that is what
   they are.

   COLOUR: the deep navy is not a background colour. It anchors the footer and
   sets the type colour; everything else is gold on white and pale grey.
   ========================================================================== */

:root{
  --navy:#030C2B;          /* footer, and the colour all type is set in */
  --gold:#D3A750;
  --gold-deep:#8A6A24;      /* gold that passes contrast on paper */
  --gold-soft:#E3C68E;      /* gold that reads on the footer */

  --paper:#FFFFFF;
  --stone:#F2F1F0;
  --ink:#030C2B;
  --ink-2:#4A5268;
  --ink-3:#6E7488;
  --line:#D0CECC;
  --sand:#F9F4EA;          /* warm band, used by the values section */
  --line-2:#B6B3B0;

  --on-dark:#F4F5F8;
  --on-dark-2:#A7AEC2;
  --line-dark:rgba(255,255,255,.16);

  --display:"Marcellus","Optima","Candara",Georgia,serif;
  --body:"IBM Plex Sans","Segoe UI",system-ui,-apple-system,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;

  /* one type scale, one size per role */
  --t-display:clamp(2.1rem, min(5.2vw, 7.6vh), 4.5rem);
  --t-h1:clamp(2.2rem, 4.6vw, 3.6rem);
  --t-h2:clamp(1.7rem, 3vw, 2.5rem);
  --t-h3:clamp(1.3rem, 2.2vw, 1.75rem);
  --t-lede:clamp(1.05rem, 1.35vw, 1.2rem);
  --t-micro:.73rem;

  --head-h:78px;
  --wrap:1180px;
  --gutter:clamp(20px,5vw,56px);
  --band:clamp(68px,9vw,132px);

  color-scheme:light;
}

html[lang="ar"]{
  --display:"Noto Kufi Arabic",Tahoma,sans-serif;
  --body:"IBM Plex Sans Arabic",Tahoma,sans-serif;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
}

body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--body);font-size:1rem;line-height:1.68;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%}
svg{max-width:100%}
a{color:inherit}
p{margin:0}
h1,h2,h3,h4{margin:0;font-weight:400;line-height:1.08;text-wrap:balance}
h1,h2,h3{font-family:var(--display);letter-spacing:.002em}
html[lang="ar"] h1,html[lang="ar"] h2,html[lang="ar"] h3{font-weight:500;line-height:1.38;letter-spacing:0}
:focus-visible{outline:2px solid var(--gold-deep);outline-offset:3px;border-radius:2px}

.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}
.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.skip:focus{
  position:fixed;inset-inline-start:0;top:0;width:auto;height:auto;clip-path:none;overflow:visible;
  background:var(--gold);color:#0A1020;padding:12px 18px;z-index:100;
}

/* ---------- micro label: one face, one size, everywhere ----------------- */

.micro,.eyebrow,.crumb,.count,.op-meta,.site-foot h4,
.idx .n,.idx .meta,.stats dt,.caps .n,.aside dt,.factstrip dt,
.mini .n,.role .meta,.chip em,.pillar .n{
  font-family:var(--mono);
  font-size:var(--t-micro);
  font-weight:500;
  letter-spacing:.13em;
  text-transform:uppercase;
  line-height:1.5;
}
html[lang="ar"] .eyebrow,html[lang="ar"] .crumb,html[lang="ar"] .count,
html[lang="ar"] .op-meta,html[lang="ar"] .site-foot h4,html[lang="ar"] .idx .meta,
html[lang="ar"] .stats dt,html[lang="ar"] .aside dt,html[lang="ar"] .factstrip dt,
html[lang="ar"] .role .meta{
  font-family:var(--body);letter-spacing:0;text-transform:none;font-size:.85rem;
}

.eyebrow{color:var(--gold-deep);display:block;margin-bottom:22px}
.eyebrow::before{content:"";display:block;width:28px;height:1px;background:var(--gold);margin-bottom:14px}

/* ---------- buttons and links ------------------------------------------ */

.btn{
  display:inline-flex;align-items:center;gap:.6em;
  font:500 .94rem/1 var(--body);padding:1.05em 1.6em;border-radius:2px;
  text-decoration:none;border:1px solid transparent;cursor:pointer;
  transition:background .2s,color .2s,border-color .2s;
}
.btn-gold{background:var(--gold);color:#0A1020}
.btn-gold:hover{background:#B98C34;color:#fff}
.btn-ink{border-color:var(--line-2);color:var(--ink)}
.btn-ink:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.btn-line{border-color:var(--line-dark);color:var(--on-dark)}
.btn-line:hover{border-color:var(--gold-soft);color:var(--gold-soft)}

.lede{font-size:var(--t-lede);color:var(--ink-2);max-width:56ch;line-height:1.6}
.prose{color:var(--ink-2);max-width:62ch;display:grid;gap:1.15em;font-size:1.02rem}
.prose strong{color:var(--ink);font-weight:600}

.section{padding-block:var(--band)}
.section.stone{background:var(--stone)}
.section.tight{padding-block:clamp(48px,6vw,84px)}

.sec-head{margin-bottom:clamp(34px,5vw,58px)}
.sec-head h2{font-size:var(--t-h2);max-width:22ch}
.sec-head .lede{margin-top:18px}
.sec-head.row{
  display:flex;justify-content:space-between;align-items:flex-start;
  gap:clamp(24px,4vw,56px);flex-wrap:wrap;
}
.sec-head.row > div{flex:1 1 28ch}
.sec-head.row > .lede{flex:1 1 30ch;max-width:44ch;padding-top:.4em}
.sec-head.row > .btn{flex:none;align-self:flex-end}

/* ==========================================================================
   Header — light, so the page opens on paper rather than a dark slab
   ========================================================================== */

.site-head{
  position:sticky;top:0;z-index:40;background:var(--paper);
  border-bottom:1px solid var(--line);
}
.head-row{display:flex;align-items:center;gap:clamp(18px,3vw,40px);height:var(--head-h)}
.brand{display:flex;align-items:center;flex:none;text-decoration:none}
.brand img{height:46px;width:auto}
.nav{display:flex;gap:clamp(16px,2.2vw,32px);margin-inline-start:auto}
.nav a{
  text-decoration:none;font-size:.95rem;color:var(--ink-2);
  padding-block:8px;position:relative;transition:color .2s;
}
.nav a:hover{color:var(--ink)}
.nav a[aria-current="page"]{color:var(--ink)}
.nav a[aria-current="page"]::after{
  content:"";position:absolute;inset-inline:0;bottom:0;height:1.5px;background:var(--gold);
}
.head-tools{display:flex;align-items:center;gap:12px}
.lang{
  background:none;border:1px solid var(--line-2);color:var(--ink);
  font:500 .88rem/1 "Noto Kufi Arabic",var(--body);
  padding:.62em .9em;border-radius:2px;cursor:pointer;transition:border-color .2s;
}
html[lang="ar"] .lang{font-family:var(--body)}
.lang:hover{border-color:var(--ink)}
.head-tools .btn{padding:.72em 1.15em}
.menu-btn{display:none;background:none;border:0;color:var(--ink);padding:8px;cursor:pointer}

@media (max-width:1040px){ .head-tools .btn{display:none} }
@media (max-width:880px){
  .nav{
    display:none;position:absolute;top:var(--head-h);inset-inline:0;background:var(--paper);
    flex-direction:column;gap:0;padding:4px var(--gutter) 22px;border-bottom:1px solid var(--line);
  }
  .nav.open{display:flex}
  .nav a{padding:16px 0;border-bottom:1px solid var(--line);font-size:1.06rem}
  .nav a[aria-current="page"]::after{display:none}
  .menu-btn{display:block}
  .head-tools{margin-inline-start:auto}
  .brand img{height:40px}
}

/* mega menu, on paper */
.mega{
  position:absolute;inset-inline:0;top:100%;background:var(--paper);
  border-bottom:1px solid var(--line);box-shadow:0 20px 40px rgba(3,12,43,.10);z-index:39;
}
.mega-in{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));
  gap:clamp(20px,3vw,40px);padding-block:34px 38px;align-items:start;
}
/* sector names run to one or two lines, so the title block reserves two.
   That keeps every rule — and every company list under it — on one line. */
.mega-sec{
  display:flex;align-items:flex-start;
  min-height:58px;   /* two lines of 1.16rem/1.25 plus the 11px padding */
  font-family:var(--display);font-size:1.16rem;line-height:1.25;color:var(--ink);
  text-decoration:none;padding-bottom:11px;margin-bottom:13px;border-bottom:1px solid var(--line);
}
.mega-sec:hover{color:var(--gold-deep)}
.mega-col ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.mega-col li a{text-decoration:none;font-size:.93rem;color:var(--ink-2);transition:color .18s,padding .18s;display:block}
.mega-col li a:hover{color:var(--ink);padding-inline-start:5px}
@media (max-width:880px){ .mega{display:none!important} }

/* ==========================================================================
   Openers — typographic, on paper. No text over photographs anywhere.
   ========================================================================== */

.opener{padding-block:clamp(54px,7vw,104px) clamp(40px,5vw,64px)}
.opener h1{font-size:var(--t-h1);max-width:19ch}
.opener .lede{margin-top:24px}
.opener .op-meta{margin-top:26px;color:var(--ink-3)}
.opener .op-meta a{color:var(--gold-deep);text-decoration:none}
.opener .op-meta a:hover{text-decoration:underline}
.crumb{color:var(--gold-deep);margin-bottom:20px;display:block}

.hero{padding-block:clamp(44px,5vw,88px) clamp(36px,4vw,64px)}
.hero h1{font-size:var(--t-display);max-width:16ch}
.hero .lede{margin-top:30px;max-width:52ch}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:40px}

/* ==========================================================================
   Photographic plate — a full-width image with its caption underneath.
   The picture is allowed to be a picture; nothing is written on top of it.
   ========================================================================== */

.plate{margin:0}
.plate img{width:100%;height:auto;aspect-ratio:21/9;object-fit:cover;background:var(--stone)}

/* contained product still, kept on its own white */
.still{margin:0;background:#fff;border:1px solid var(--line)}
.still img{width:100%;height:auto;aspect-ratio:1;object-fit:contain;padding:clamp(14px,2.4vw,30px)}

/* ==========================================================================
   The sector index — a list you read, not a carousel you operate
   ========================================================================== */

.idx{border-top:1px solid var(--line-2)}
.idx a{
  display:grid;
  grid-template-columns:3.5rem minmax(0,1fr) auto 1.6rem;
  gap:clamp(14px,2.4vw,32px);
  align-items:baseline;
  padding:clamp(24px,3vw,38px) 0;
  border-bottom:1px solid var(--line);
  text-decoration:none;
  transition:background .25s;
}
.idx a:hover{background:var(--stone)}
.idx .n{color:var(--gold-deep);align-self:start;padding-top:.45em}
.idx h3{font-size:var(--t-h3);transition:color .2s}
.idx a:hover h3{color:var(--gold-deep)}
.idx .sub{color:var(--ink-2);font-size:.98rem;margin-top:7px;max-width:52ch}
.idx .meta{color:var(--ink-3);white-space:nowrap}
.idx .go{
  justify-self:end;color:var(--gold-deep);font-size:1.15rem;line-height:1;
  transition:transform .25s;align-self:center;
}
.idx a:hover .go{transform:translateX(5px)}
html[dir="rtl"] .idx a:hover .go{transform:translateX(-5px)}
html[dir="rtl"] .idx .go{scale:-1 1}

@media (max-width:720px){
  .idx a{grid-template-columns:2.6rem minmax(0,1fr) 1.2rem;gap:12px}
  .idx .meta{grid-column:2;white-space:normal;margin-top:9px}
  .idx .go{grid-column:3;grid-row:1}
}

/* ==========================================================================
   Figures row
   ========================================================================== */

.stats{border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.stats .wrap{margin:0;display:grid;grid-template-columns:repeat(4,1fr)}
.stats > .wrap > div{
  padding:clamp(24px,3vw,34px) clamp(16px,2vw,28px);
  border-inline-start:1px solid var(--line);display:grid;gap:8px;align-content:start;
}
.stats > .wrap > div:first-child{border-inline-start:0;padding-inline-start:0}
.stats > .wrap > div:last-child{padding-inline-end:0}
.stats dd{
  margin:0;font-family:var(--display);font-size:clamp(1.5rem,2.4vw,2.1rem);
  line-height:1.05;color:var(--ink);
}
html[lang="ar"] .stats dd{font-weight:500;font-size:clamp(1.15rem,1.9vw,1.55rem)}
.stats dt{color:var(--gold-deep)}
@media (max-width:820px){
  .stats > .wrap{grid-template-columns:repeat(2,1fr)}
  .stats > .wrap > div:nth-child(odd){border-inline-start:0;padding-inline-start:0}
  .stats > .wrap > div:nth-child(even){padding-inline-end:0}
  .stats > .wrap > div:nth-child(n+3){border-top:1px solid var(--line)}
}

/* ==========================================================================
   Two-column editorial layouts
   ========================================================================== */

.split{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(36px,7vw,104px);align-items:start}
@media (max-width:860px){ .split{grid-template-columns:1fr} }

.statement{font-family:var(--display);font-size:var(--t-h2);line-height:1.22;max-width:24ch}
html[lang="ar"] .statement{font-weight:500;line-height:1.55}
.split .prose{margin-top:26px}

.facts{margin:0;display:grid;border-top:1px solid var(--line-2)}
.facts > div{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:16px 0;border-bottom:1px solid var(--line)}
.facts dt{color:var(--ink-2);font-size:.94rem}
.facts dd{margin:0;font-family:var(--display);font-size:1.32rem;text-align:end}
html[lang="ar"] .facts dd{font-weight:500;font-size:1.1rem}

.aside{border-top:2px solid var(--gold);padding-top:24px;display:grid;gap:22px}
.aside h3{font-size:1.24rem}
.aside dl{margin:0;display:grid;gap:15px}
.aside dt{color:var(--ink-3)}
.aside dd{margin:3px 0 0;font-size:.99rem}
.aside .btn{justify-self:start}

/* numbered capability list */
.caps{list-style:none;margin:0;padding:0;display:grid;border-top:1px solid var(--line-2)}
.caps li{
  padding:20px 0;border-bottom:1px solid var(--line);
  display:grid;grid-template-columns:3.5rem minmax(0,1fr);gap:clamp(14px,2vw,28px);align-items:baseline;
}
.caps .n{color:var(--gold-deep)}
.caps b{font-weight:600;display:block;font-size:1.06rem}
.caps span{color:var(--ink-2);font-size:.97rem;display:block;margin-top:4px;max-width:58ch}

/* the four things the group provides — same component as the values, so the
   two four-up grids on the site share one alignment and one hover */
/* small company list inside an aside */
.mini{list-style:none;margin:0;padding:0;display:grid}
.mini li + li{border-top:1px solid var(--line)}
.mini a{display:grid;grid-template-columns:2.4rem minmax(0,1fr);gap:12px;padding:15px 0;text-decoration:none;align-items:baseline}
.mini .n{color:var(--gold-deep)}
.mini b{display:block;font-weight:600;transition:color .2s}
.mini em{font-style:normal;color:var(--ink-2);font-size:.92rem}
.mini a:hover b{color:var(--gold-deep)}

/* ==========================================================================
   Company index — filter chips over a typographic list
   ========================================================================== */

.filters{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:24px}
.chip{
  all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:.6em;
  padding:.62em 1.05em;border:1px solid var(--line-2);border-radius:2px;
  font:500 .9rem/1 var(--body);color:var(--ink-2);
  transition:border-color .2s,background .2s,color .2s;
}
.chip em{opacity:.6;letter-spacing:.06em}
.chip:hover{border-color:var(--ink);color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.chip:focus-visible{outline:2px solid var(--gold-deep);outline-offset:2px}
.count{color:var(--ink-3);margin-bottom:26px;display:block}
.empty{color:var(--ink-2);padding:40px 0}
.idx a[hidden]{display:none}

/* ==========================================================================
   Careers
   ========================================================================== */

.roles{border-top:1px solid var(--line-2)}
.role{
  border-bottom:1px solid var(--line);display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr) auto;
  gap:20px;align-items:baseline;padding:22px 0;text-decoration:none;transition:background .25s;
}
.role:hover{background:var(--stone)}
.role h3{font-size:1.18rem;font-family:var(--display);transition:color .2s}
.role:hover h3{color:var(--gold-deep)}
.role .meta{color:var(--ink-3)}
.role .go{color:var(--gold-deep);font-size:.9rem;font-weight:500;white-space:nowrap;font-family:var(--body);text-transform:none;letter-spacing:0}
@media (max-width:760px){
  .role{grid-template-columns:1fr auto;gap:8px 16px}
  .role h3{grid-column:1/-1}
  .role .go{grid-column:2;grid-row:2}
}

/* ==========================================================================
   Contact
   ========================================================================== */

.channels{margin:30px 0 0;display:grid;gap:20px}
.channels > div{display:grid;gap:3px}
.channels dt{color:var(--ink-3)}
.channels dd{margin:0;font-size:1.05rem}
.channels a{text-decoration:none;border-bottom:1px solid var(--line-2)}
.channels a:hover{border-color:var(--ink)}

form{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px;align-content:start}
.field{display:grid;gap:8px}
.field.full{grid-column:1/-1}
label{font-size:.9rem;color:var(--ink-2)}
input,select,textarea{
  font:inherit;color:var(--ink);background:var(--paper);
  border:1px solid var(--line-2);border-radius:2px;padding:.9em .95em;width:100%;
  transition:border-color .2s;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ink)}
textarea{min-height:140px;resize:vertical}
.form-end{grid-column:1/-1;display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.status{color:var(--gold-deep);font-size:.94rem}
.status.err{color:#A3341A}
/* Honeypot. Off-screen rather than display:none, and out of the tab order.
   A person never reaches it, so anything in it came from a bot. */
.hp{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

@media (max-width:560px){ form{grid-template-columns:1fr} }

/* ==========================================================================
   CTA + footer
   ========================================================================== */

.cta{border-top:1px solid var(--line-2)}
.cta .wrap{padding-block:clamp(52px,6vw,86px);display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap}
.cta h2{font-size:var(--t-h2);max-width:18ch}
.cta p{color:var(--ink-2);margin-top:12px;max-width:44ch}

.site-foot{background:var(--navy);color:var(--on-dark);padding-block:clamp(52px,6vw,78px) 30px}
.foot-grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:32px}
@media (max-width:900px){ .foot-grid{grid-template-columns:1fr 1fr} }
@media (max-width:540px){ .foot-grid{grid-template-columns:1fr} }
.site-foot .brand img{height:46px}
.foot-blurb{margin-top:18px;color:var(--on-dark-2);font-size:.93rem;max-width:32ch}
.site-foot h4{color:var(--gold);margin:0 0 16px}
.site-foot ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.site-foot ul a,.site-foot ul span{font-size:.94rem;color:var(--on-dark-2)}
.site-foot ul a{text-decoration:none;transition:color .2s}
.site-foot ul a:hover{color:#fff}
.legal{
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  margin-top:clamp(42px,5vw,64px);padding-top:24px;border-top:1px solid var(--line-dark);
  color:var(--on-dark-2);font-size:.85rem;
}

/* a phone does not need every link repeated under the page */
@media (max-width:640px){
  .site-foot{padding-block:36px 24px}
  .foot-grid{gap:22px}
  .foot-links,.foot-blurb{display:none}
  .site-foot .brand img{height:38px}
  .site-foot h4{margin-bottom:10px}
  .legal{margin-top:26px;padding-top:18px;font-size:.8rem;gap:8px}
}

/* ==========================================================================
   Hero — type on one side, a photograph on the other
   The ground is a soft warm wash rather than flat white. Nothing here is
   derived from the logo, so the opening survives a rebrand.
   ========================================================================== */

.hero{
  position:relative;overflow:hidden;
  display:grid;align-content:center;
  background:
    radial-gradient(120% 90% at 88% 18%, rgba(211,167,80,.13) 0%, rgba(211,167,80,0) 58%),
    radial-gradient(90% 80% at 0% 100%, rgba(3,12,43,.05) 0%, rgba(3,12,43,0) 60%),
    linear-gradient(175deg, var(--stone) 0%, var(--paper) 46%);
  border-bottom:1px solid var(--line);
}
.hero .wrap{
  position:relative;z-index:2;
  display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);
  gap:clamp(30px,5vw,76px);align-items:center;
}
.hero h1{max-width:14ch}

/* the hero photograph sits beside the type, never behind it */
.hero-shot{position:relative}
.hero-shot img{
  width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;
  background:var(--stone);
}
/* header + hero is exactly one screen, so the whole opening is visible
   without scrolling. As a grid item the wrap needs an explicit width or it
   shrinks to its text and its auto margins push the copy off the gutter. */
@media (min-width:821px){
  .hero{min-height:calc(100vh - var(--head-h))}
  @supports (height:100svh){ .hero{min-height:calc(100svh - var(--head-h))} }
  .hero-shot img{max-height:calc(100svh - var(--head-h) - 180px)}
}
.hero > .wrap{width:100%}

@media (max-width:820px){
  .hero{min-height:0}
  .hero .wrap{grid-template-columns:1fr;gap:32px}
  .hero-shot img{aspect-ratio:4/3;max-height:none}
  .hero h1{max-width:none}
}

/* ==========================================================================
   Sector marquee — cards that keep moving
   Two identical halves inside one track; the track slides exactly -50% and
   restarts, so the loop is seamless. The second half is aria-hidden so a
   screen reader hears each sector once.

   WCAG 2.2.2 wants a way to stop motion that runs longer than five seconds,
   so this pauses on hover, on keyboard focus, and from a real button, and
   does not move at all under prefers-reduced-motion.
   ========================================================================== */

.marquee{position:relative;overflow:hidden;padding-block:6px 4px}
.marquee::before,.marquee::after{
  content:"";position:absolute;top:0;bottom:0;width:clamp(28px,7vw,110px);z-index:2;pointer-events:none;
}
.marquee::before{inset-inline-start:0;background:linear-gradient(to right,var(--paper),rgba(255,255,255,0))}
.marquee::after{inset-inline-end:0;background:linear-gradient(to left,var(--paper),rgba(255,255,255,0))}
html[dir="rtl"] .marquee::before{background:linear-gradient(to left,var(--paper),rgba(255,255,255,0))}
html[dir="rtl"] .marquee::after{background:linear-gradient(to right,var(--paper),rgba(255,255,255,0))}

.track{display:flex;width:max-content;gap:clamp(14px,1.6vw,22px)}
@media (prefers-reduced-motion:no-preference){
  .track{animation:slide var(--speed,46s) linear infinite}
  html[dir="rtl"] .track{animation-direction:reverse}
}
@keyframes slide{ from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* pointing at the cards, or tabbing into them, stops the motion */
.marquee:hover .track,
.marquee:focus-within .track{animation-play-state:paused}

.mcard{
  flex:none;width:clamp(250px,25vw,330px);
  text-decoration:none;display:flex;flex-direction:column;
  transition:transform .35s cubic-bezier(.2,.7,.3,1);
}
.mcard:hover{transform:translateY(-6px)}

.mcard .pic{
  position:relative;aspect-ratio:4/3;overflow:hidden;background:#fff;
}
.mcard .pic img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .7s cubic-bezier(.2,.7,.3,1);
}
.mcard:hover .pic img{transform:scale(1.06)}

/* the index sits on the image as a small paper chip */
/* scoped to the picture: a card without one puts its number in the body, and
   this rule was absolutely positioning that copy on top of the title */
.mcard .pic .n{
  position:absolute;inset-inline-start:0;top:0;z-index:2;
  background:var(--paper);color:var(--gold-deep);
  padding:8px 12px 7px;
}

.mcard .body{
  padding:18px 0 0;display:grid;gap:8px;flex:1;align-content:start;
  border-top:1px solid var(--line);transition:border-color .3s;
}
.mcard:hover .body{border-color:var(--gold)}
.mcard h3{font-size:1.32rem;transition:color .25s}
.mcard:hover h3{color:var(--gold-deep)}
.mcard .meta{color:var(--gold-deep)}
.mcard .sub{color:var(--ink-2);font-size:.94rem;line-height:1.55}
.mcard .go{
  margin-top:6px;display:inline-flex;align-items:center;gap:.5em;
  color:var(--ink);font-size:.9rem;font-weight:500;
}
.mcard .go::after{content:"→";transition:transform .3s}
html[dir="rtl"] .mcard .go::after{content:"←"}
.mcard:hover .go::after{transform:translateX(5px)}
html[dir="rtl"] .mcard:hover .go::after{transform:translateX(-5px)}

/* Reduced motion: no animation, no clones, just a grid that wraps. */
@media (prefers-reduced-motion:reduce){
  .marquee{overflow:visible}
  .marquee::before,.marquee::after{display:none}
  .track{width:auto;flex-wrap:wrap;animation:none}
  .track [aria-hidden="true"]{display:none}
  .mcard{width:clamp(220px,30%,320px);flex:1 1 260px}
}

/* ==========================================================================
   Values — numbered cards on a warm band
   The number is set large and very pale so it reads as a structural marker
   rather than a heading, and each card is capped with a gold hairline.
   ========================================================================== */

.values{background:var(--sand);border-block:1px solid var(--line)}
.values .sec-head{margin-bottom:clamp(32px,4.5vw,52px)}

/* the second line of the heading carries a gold block, so the section has
   one deliberate moment of colour and the rest stays quiet */
.mark{
  background:var(--gold);color:#0A1020;
  padding:.04em .3em .1em;
  box-decoration-break:clone;-webkit-box-decoration-break:clone;
}

.vgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.6vw,22px)}
.vgrid.two{grid-template-columns:repeat(2,1fr)}
@media (max-width:1000px){ .vgrid,.vgrid.two{grid-template-columns:repeat(2,1fr)} }
@media (max-width:600px){ .vgrid,.vgrid.two{grid-template-columns:1fr} }

.vcard{
  background:#fff;border:1px solid var(--line);border-top:2px solid var(--gold);
  padding:clamp(22px,2.4vw,30px) clamp(20px,2.2vw,28px) clamp(26px,2.8vw,34px);
  display:grid;gap:10px;align-content:start;position:relative;
  transition:transform .25s,box-shadow .25s;
}
.vcard:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(3,12,43,.08)}
.vcard h3{transition:color .25s}
.vcard:hover h3{color:var(--gold-deep)}
.vcard .n{
  font-family:var(--display);font-size:clamp(2.4rem,3.4vw,3.2rem);line-height:1;
  color:var(--gold);opacity:.26;margin-bottom:4px;letter-spacing:.01em;
}
.vcard h3{font-size:1.16rem}
.vcard p{color:var(--ink-2);font-size:.96rem;line-height:1.6}

/* ==========================================================================
   Components introduced with the real content
   ========================================================================== */

.section.sand{background:var(--sand)}
.lede-2{margin-top:16px}
.lead-para{font-size:var(--t-lede);color:var(--ink);max-width:58ch;line-height:1.55}

/* three-up variant of the numbered cards, for six-item sets */
.vgrid.three{grid-template-columns:repeat(3,1fr)}
@media (max-width:1000px){ .vgrid.three{grid-template-columns:repeat(2,1fr)} }
@media (max-width:600px){ .vgrid.three{grid-template-columns:1fr} }

/* a ticked list, for the growth section */
.micro-head{
  font-family:var(--mono);font-size:var(--t-micro);font-weight:500;
  letter-spacing:.13em;text-transform:uppercase;color:var(--gold-deep);
  padding-bottom:16px;border-bottom:1px solid var(--line-2);
}
html[lang="ar"] .micro-head{font-family:var(--body);letter-spacing:0;text-transform:none;font-size:.85rem}
.ticks{list-style:none;margin:0;padding:0;display:grid}
.ticks li{
  display:grid;grid-template-columns:24px minmax(0,1fr);gap:18px;align-items:start;
  padding:16px 0;border-bottom:1px solid var(--line);
  color:var(--ink-2);font-size:.99rem;
}
.ticks svg{
  width:24px;height:24px;margin-top:2px;
  fill:none;stroke:var(--gold-deep);stroke-width:1.3;
  stroke-linecap:square;stroke-linejoin:miter;
  transition:stroke .25s;
}
.ticks li:hover svg{stroke:var(--ink)}

/* vision / mission, side by side */
.vm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(16px,2vw,26px)}
@media (max-width:820px){ .vm-grid{grid-template-columns:1fr} }

/* vision and mission are the two claims the Group makes about itself, so they
   are panels that respond rather than flat blocks of text */
.vm{
  position:relative;background:var(--paper);
  padding:clamp(28px,3vw,44px) clamp(24px,2.6vw,38px) clamp(32px,3.2vw,48px);
  border-top:1px solid var(--line-2);
  transition:transform .35s cubic-bezier(.2,.7,.3,1),box-shadow .35s;
}
.vm::before{
  content:"";position:absolute;inset-inline-start:0;top:-1px;height:2px;width:0;
  background:var(--gold);transition:width .55s cubic-bezier(.2,.7,.3,1);
}
.vm:hover::before{width:100%}
.vm:hover{transform:translateY(-5px);box-shadow:0 16px 38px rgba(3,12,43,.07)}
.vm h2{
  font-size:clamp(1.4rem,2.2vw,1.85rem);line-height:1.22;
  margin-bottom:18px;max-width:22ch;transition:color .3s;
}
.vm:hover h2{color:var(--gold-deep)}
.vm p{color:var(--ink-2);max-width:48ch}

/* activity / value tags */
.tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.tags li{
  border:1px solid var(--line-2);padding:.65em 1.1em;
  font-size:.93rem;color:var(--ink-2);border-radius:2px;
  transition:border-color .2s,color .2s;
}
.tags li:hover{border-color:var(--gold);color:var(--ink)}
.tags.big li{font-family:var(--display);font-size:1.12rem;color:var(--ink);padding:.7em 1.3em}

/* a portrait figure beside body copy */
.port-fig{margin:0}
.port-fig img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;background:var(--stone)}

/* the closing call to action carries two buttons */
.cta-actions{display:flex;gap:12px;flex-wrap:wrap}

/* a sector with no company yet */
.soon{font-size:.93rem;color:var(--ink-3);font-style:italic}
/* a sector card with no photograph: solid sand, its number set large, so it
   reads as a deliberate card rather than a failed image */
.mcard.plain{background:var(--sand);border:1px solid var(--line)}
.mcard.plain .body{padding:clamp(22px,2.4vw,30px) clamp(18px,2vw,24px) clamp(24px,2.6vw,32px);border-top:0}
.mcard.plain .n{
  display:block;font-family:var(--display);font-size:clamp(2rem,3vw,2.6rem);
  line-height:1;color:var(--gold);opacity:.45;margin-bottom:10px;
}
.mcard.plain:hover{border-color:var(--gold)}


/* two-column running text, used where a section is pure reading */
.prose.cols{
  max-width:none;display:block;
  columns:2;column-gap:clamp(30px,4vw,72px);
}
.prose.cols p{margin-bottom:1.15em;break-inside:avoid}
@media (max-width:760px){ .prose.cols{columns:1} }

/* a lead statement that runs the full measure above the columns */
.wide-statement{
  font-family:var(--display);font-size:clamp(1.9rem,3.6vw,3rem);
  line-height:1.16;max-width:20ch;margin-bottom:clamp(28px,3.5vw,44px);
}
html[lang="ar"] .wide-statement{font-weight:500;line-height:1.45}

/* ==========================================================================
   Sector accordion — each sector opens to show the companies inside it
   ========================================================================== */

.acc{border-top:1px solid var(--line-2)}
.acc-item{border-bottom:1px solid var(--line)}

.acc-btn{
  all:unset;box-sizing:border-box;cursor:pointer;width:100%;
  display:grid;grid-template-columns:3.5rem minmax(0,1fr) auto 1.6rem;
  gap:clamp(14px,2.4vw,32px);align-items:baseline;
  padding:clamp(24px,3vw,36px) 0;
  transition:background .25s;
}
.acc-btn:hover{background:var(--stone)}
.acc-btn:focus-visible{outline:2px solid var(--gold-deep);outline-offset:-3px}
.acc-btn .n{color:var(--gold-deep);align-self:start;padding-top:.45em}
.acc-btn h3{font-size:var(--t-h3);transition:color .2s}
.acc-btn:hover h3{color:var(--gold-deep)}
.acc-btn .sub{color:var(--ink-2);font-size:.98rem;margin-top:7px;max-width:52ch;display:block}
.acc-btn .meta{color:var(--ink-3);white-space:nowrap}

/* the plus becomes a minus when the row is open */
.plus{position:relative;width:18px;height:18px;justify-self:end;align-self:center}
.plus::before,.plus::after{
  content:"";position:absolute;left:50%;top:50%;background:var(--ink);
  transition:transform .3s cubic-bezier(.4,0,.2,1);
}
.plus::before{width:16px;height:1.5px;transform:translate(-50%,-50%)}
.plus::after{width:1.5px;height:16px;transform:translate(-50%,-50%)}
.acc-item.open .plus::after{transform:translate(-50%,-50%) scaleY(0)}
.acc-item.open .acc-btn h3{color:var(--gold-deep)}

.acc-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.4,0,.2,1)}
.acc-item.open .acc-panel{grid-template-rows:1fr}
.acc-panel > div{overflow:hidden}
.acc-inner{padding:4px 0 clamp(30px,3.5vw,44px) calc(3.5rem + clamp(14px,2.4vw,32px))}
html[dir="rtl"] .acc-inner{padding-inline:calc(3.5rem + clamp(14px,2.4vw,32px)) 0}
@media (max-width:720px){
  .acc-btn{grid-template-columns:2.6rem minmax(0,1fr) 1.2rem;gap:12px}
  .acc-btn .meta{grid-column:2;white-space:normal;margin-top:9px}
  .plus{grid-column:3;grid-row:1}
  .acc-inner{padding-inline:0}
}

/* a company card that works with or without a photograph */
.cocards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:clamp(14px,1.6vw,22px)}
.cocard{
  background:var(--paper);border:1px solid var(--line);border-top:2px solid var(--gold);
  text-decoration:none;display:flex;flex-direction:column;
  transition:transform .3s cubic-bezier(.2,.7,.3,1),box-shadow .3s;
}
.cocard:hover{transform:translateY(-4px);box-shadow:0 14px 32px rgba(3,12,43,.07)}
.cocard .pic{aspect-ratio:4/3;overflow:hidden;background:var(--sand)}
.cocard .pic img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.cocard:hover .pic img{transform:scale(1.05)}
.cocard .body{padding:20px clamp(16px,1.8vw,22px) 22px;display:grid;gap:7px;flex:1;align-content:start}
.cocard h4{font-family:var(--display);font-size:1.22rem;transition:color .25s}
.cocard:hover h4{color:var(--gold-deep)}
.cocard .role{color:var(--gold-deep)}
.cocard p{color:var(--ink-2);font-size:.93rem;line-height:1.55}
.cocard .go{
  margin-top:auto;padding-top:12px;display:inline-flex;align-items:center;gap:.5em;
  color:var(--ink);font-size:.89rem;font-weight:500;
}
.cocard .go::after{content:"→";transition:transform .3s}
html[dir="rtl"] .cocard .go::after{content:"←"}
.cocard:hover .go::after{transform:translateX(5px)}
html[dir="rtl"] .cocard:hover .go::after{transform:translateX(-5px)}
.acc-empty{color:var(--ink-2);font-size:.98rem;max-width:56ch}

/* ==========================================================================
   Four different section treatments, so no two pages repeat a layout
   ========================================================================== */

/* ---------- 1. steps: a process read left to right ---------------------- */

.steps{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line-2)}
.step{
  position:relative;padding:clamp(26px,3vw,40px) clamp(20px,2.4vw,34px) clamp(30px,3.4vw,46px) 0;
}
.step + .step{padding-inline-start:clamp(20px,2.4vw,34px)}
.step::before{
  content:"";position:absolute;inset-inline-start:0;top:-1px;height:2px;width:0;
  background:var(--gold);transition:width .6s cubic-bezier(.2,.7,.3,1);
}
.step:hover::before{width:100%}
.step .n{
  display:block;font-family:var(--display);font-size:clamp(2rem,3vw,2.7rem);
  line-height:1;color:var(--line-2);margin-bottom:18px;transition:color .3s;
}
.step:hover .n{color:var(--gold)}
.step h3{font-size:clamp(1.3rem,2vw,1.6rem);margin-bottom:12px}
.step p{color:var(--ink-2);font-size:.96rem;max-width:34ch}
@media (max-width:860px){
  .steps{grid-template-columns:repeat(2,1fr)}
  .step:nth-child(odd){padding-inline-start:0}
  .step:nth-child(n+3){border-top:1px solid var(--line)}
}
@media (max-width:540px){
  .steps{grid-template-columns:1fr}
  .step,.step + .step{padding-inline:0;border-top:1px solid var(--line)}
  .steps{border-top:0}
}

/* ---------- 2. definition list: term left, meaning right ---------------- */

.deflist{margin:0;border-top:1px solid var(--line-2)}
.deflist > div{
  display:grid;grid-template-columns:3.5rem minmax(0,10fr) minmax(0,13fr);
  gap:clamp(16px,3vw,44px);align-items:baseline;
  padding:clamp(20px,2.4vw,30px) 0;border-bottom:1px solid var(--line);
  transition:background .25s;
}
.deflist > div:hover{background:var(--stone)}
.deflist .n{color:var(--gold-deep)}
.deflist dt{font-family:var(--display);font-size:clamp(1.15rem,1.7vw,1.4rem);transition:color .25s}
.deflist > div:hover dt{color:var(--gold-deep)}
.deflist dd{margin:0;color:var(--ink-2);font-size:.99rem;max-width:56ch}
@media (max-width:760px){
  .deflist > div{grid-template-columns:2.6rem minmax(0,1fr);gap:8px 14px}
  .deflist dd{grid-column:2}
}

/* ---------- 3. icon rows: who we want to hear from ---------------------- */

.plines{display:grid;grid-template-columns:repeat(2,1fr);gap:0 clamp(28px,4vw,64px);border-top:1px solid var(--line-2)}
@media (max-width:820px){ .plines{grid-template-columns:1fr} }
.pline{
  display:grid;grid-template-columns:40px minmax(0,1fr);gap:clamp(14px,2vw,24px);
  align-items:start;padding:clamp(22px,2.6vw,32px) 0;border-bottom:1px solid var(--line);
}
.pline svg{
  width:30px;height:30px;margin-top:3px;
  fill:none;stroke:var(--gold-deep);stroke-width:1.2;stroke-linecap:square;stroke-linejoin:miter;
  transition:stroke .25s;
}
.pline:hover svg{stroke:var(--ink)}
.pline h3{font-size:1.18rem;margin-bottom:8px;transition:color .25s}
.pline:hover h3{color:var(--gold-deep)}
.pline p{color:var(--ink-2);font-size:.95rem;max-width:42ch}

/* ---------- 4. product blocks: two things, given room ------------------- */

.prods{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(20px,3vw,48px)}
@media (max-width:700px){ .prods{grid-template-columns:1fr} }
.prod{border-top:2px solid var(--gold);padding-top:clamp(20px,2.4vw,28px)}
.prod h3{font-size:clamp(1.6rem,2.6vw,2.1rem);margin-bottom:12px}
.prod p{color:var(--ink-2);max-width:40ch}

/* ---------- careers: a row of images so the page is not all type --------
   These three are PLACEHOLDERS. Replace the files at
   site-assets/img/careers-a|b|c.jpg, keep the names, and nothing else
   needs to change. */
.imgrow{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,1.6vw,20px)}
@media (max-width:760px){
  .imgrow{grid-template-columns:1fr 1fr}
  .imgrow figure:nth-child(3){grid-column:1/-1}
}
.imgrow figure{margin:0;overflow:hidden;background:var(--stone)}
.imgrow img{
  width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;display:block;
  transition:transform .7s cubic-bezier(.2,.7,.3,1);
}
.imgrow figure:hover img{transform:scale(1.04)}

/* ---------- a section asked to fit one screen ---------------------------
   Used where a list would otherwise run past the fold on a laptop. The
   numbers are set so the whole section clears 720px, the shortest desktop
   height worth designing for. */
.section.fit{padding-block:clamp(32px,3.5vw,64px)}
.section.fit .sec-head{margin-bottom:clamp(16px,1.8vw,32px)}
.section.fit .deflist > div{padding:clamp(14px,1.8vw,22px) 0}
.section.fit .deflist dt{font-size:clamp(1.05rem,1.5vw,1.3rem)}
.section.fit .deflist dd{font-size:.96rem;line-height:1.5}

/* ---------- careers: what we value, as icons ---------------------------- */

.vals{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-2)}
.val{
  display:grid;gap:14px;align-content:start;
  padding:clamp(24px,3vw,34px) clamp(20px,2.4vw,34px) clamp(26px,3vw,38px) 0;
  border-bottom:1px solid var(--line);
}
.val:not(:nth-child(3n+1)){padding-inline-start:clamp(20px,2.4vw,34px)}
.val svg{
  width:30px;height:30px;fill:none;stroke:var(--gold-deep);stroke-width:1.2;
  stroke-linecap:square;stroke-linejoin:miter;transition:stroke .25s;
}
.val:hover svg{stroke:var(--ink)}
.val h3{font-size:1.1rem;transition:color .25s}
.val:hover h3{color:var(--gold-deep)}
@media (max-width:820px){ .vals{grid-template-columns:repeat(2,1fr)}
  .val:not(:nth-child(3n+1)){padding-inline-start:0}
  .val:nth-child(even){padding-inline-start:clamp(20px,2.4vw,34px)}
}
@media (max-width:520px){ .vals{grid-template-columns:1fr}
  .val,.val:nth-child(even){padding-inline-start:0}
}

/* ---------- the group at a glance, as one quiet line --------------------
   A boxed four-up gave "Multiple" and "One" the weight of real figures,
   which they are not. This states the same facts and gets out of the way. */
.ribbon{
  margin:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
}
.ribbon .wrap{
  display:flex;flex-wrap:wrap;align-items:baseline;
  gap:10px clamp(20px,3vw,44px);padding-block:clamp(16px,1.8vw,22px);
}
.ribbon div{display:flex;align-items:baseline;gap:.55em}
.ribbon dd{margin:0;font-family:var(--display);font-size:1.12rem;color:var(--ink)}
html[lang="ar"] .ribbon dd{font-weight:500;font-size:1rem}
.ribbon dt{color:var(--ink-3)}

/* ---------- company page: facts as a strip, not stacked in the aside -----
   The aside was carrying an image, three facts and a button while the copy
   beside it ran a few short paragraphs, so the right column was two and a
   half times the height of the left. The facts come out into a full-width
   strip and the two columns even up. */

.factstrip{
  display:grid;grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--line-2);margin-top:clamp(32px,4vw,52px);
}
.factstrip > div{
  display:grid;gap:8px;align-content:start;
  padding:clamp(18px,2.2vw,26px) clamp(18px,2.2vw,28px) clamp(20px,2.4vw,30px) 0;
  border-bottom:1px solid var(--line);
}
.factstrip > div + div{
  padding-inline-start:clamp(18px,2.2vw,28px);
  border-inline-start:1px solid var(--line);
}
.factstrip dt{color:var(--ink-3)}
.factstrip dd{margin:0;font-family:var(--display);font-size:clamp(1.05rem,1.5vw,1.28rem);line-height:1.25}
html[lang="ar"] .factstrip dd{font-weight:500;font-size:1.02rem}
@media (max-width:700px){
  .factstrip{grid-template-columns:1fr}
  .factstrip > div,.factstrip > div + div{padding-inline:0;border-inline-start:0}
}

/* the company aside is now just the picture and the one action */
.co-aside{display:grid;gap:22px;align-content:start}
.co-aside .btn{justify-self:start}

/* a company whose copy has no picture beside it gets the full measure */
.co-solo{max-width:64ch}

/* the accordion card: the role reads as a line of text, not a stack of
   uppercase mono that wraps to four lines in a narrow card */
.cocard .role{
  font-family:var(--body);font-size:.84rem;letter-spacing:0;text-transform:none;
  color:var(--gold-deep);
}
.cocards{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));max-width:900px}

/* beside body copy the square still runs taller than the text it sits next
   to; 4:3 evens the two columns. The image is contained, so nothing crops. */
.co-aside .still img{aspect-ratio:4/3}

/* beside a company's copy the portrait ran far taller than the text; the 4:3
   crop keeps the two columns close in height */
.co-aside .port-fig img{aspect-ratio:4/3}
