/* ============================================================
   CADRIQUE — Global Stylesheet
   Building Africa Through Global Capability
   ------------------------------------------------------------
   Type    : Century Gothic (Poppins webfont fallback)
   Palette : warm paper, deep charcoal, stone, mineral green,
             bronze, Cadrique red #E11B22 (accent only)
   ============================================================ */

/* ----------  Tokens  ---------- */
:root{
  --paper:      #F3F0EA;
  --paper-2:    #EBE7DE;
  --ink:        #161511;
  --charcoal:   #1A1916;
  --charcoal-2: #211F1B;
  --stone:      #8B8478;
  --stone-2:    #B7B0A3;
  --green:      #152A20;
  --green-2:    #1C382B;
  --bronze:     #A67F4F;
  --bronze-2:   #C79E66;
  --red:        #E11B22;
  --red-2:      #B91419;

  --fg:         var(--ink);
  --fg-soft:    #52504A;
  --bg:         var(--paper);
  --line:       rgba(22,21,17,.16);
  --line-strong:rgba(22,21,17,.32);

  --font-sans:  "Century Gothic","CenturyGothic","Poppins","Trebuchet MS",Arial,sans-serif;
  --font-serif: "Century Gothic","CenturyGothic","Poppins","Trebuchet MS",Arial,sans-serif;

  --w-max:      2280px;
  --gutter:     clamp(20px, 3.6vw, 96px);
  --sec-y:      clamp(96px, 11vw, 180px);

  --ease:       cubic-bezier(.22,.61,.21,1);
  --t-fast:     .35s;
  --t-med:      .7s;
  --t-slow:     1.1s;
}

/* ----------  Reset / base  ---------- */
*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
html:focus-within{ scroll-behavior:smooth; }
body{
  font-family:var(--font-sans);
  font-size:17px; line-height:1.7; font-weight:400;
  color:var(--fg); background:var(--bg);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{ display:block; max-width:100%; height:auto; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
::selection{ background:var(--red); color:#fff; }
:focus-visible{ outline:2px solid var(--red); outline-offset:3px; }

.skip-link{
  position:fixed; top:-60px; left:16px; z-index:300;
  background:var(--ink); color:var(--paper); padding:10px 18px;
  font-size:13px; letter-spacing:.08em; transition:top .3s var(--ease);
}
.skip-link:focus{ top:16px; }

/* ----------  Type system  ---------- */
.d1{ /* display */
  font-size:clamp(2.6rem, 6.8vw, 7rem);
  line-height:1.04; letter-spacing:-.012em; font-weight:400;
}
.d2{
  font-size:clamp(2rem, 4.4vw, 4.7rem);
  line-height:1.08; letter-spacing:-.01em; font-weight:400;
}
.d3{
  font-size:clamp(1.7rem, 3vw, 3rem);
  line-height:1.16; letter-spacing:-.008em; font-weight:400;
}
.h4{
  font-size:clamp(1.2rem, 1.6vw, 1.45rem);
  line-height:1.32; letter-spacing:-.004em; font-weight:400;
}
.serif{ font-style:normal; }
.dot{ color:inherit; }

.lead{
  font-size:clamp(1.13rem, 1.45vw, 1.55rem);
  line-height:1.58; font-weight:400; color:var(--fg);
}
.body-m{ font-size:clamp(1.0625rem, .95vw, 1.2rem); line-height:1.72; color:var(--fg-soft); }
.small{ font-size:.875rem; line-height:1.6; }

.eyebrow{
  display:flex; align-items:center; gap:14px;
  font-size:.88rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase;
  color:var(--stone);
}
.eyebrow .n{ color:var(--bronze); font-variant-numeric:tabular-nums; }

/* ----------  Layout  ---------- */
.wrap{ width:100%; max-width:var(--w-max); margin-inline:auto; padding-inline:var(--gutter); }
.sec{ padding-block:var(--sec-y); position:relative; }
.sec--flush{ padding-block:0; }
.sec-head{ display:grid; gap:26px; margin-bottom:clamp(48px, 6vw, 92px); }
.sec-head .d2{ max-width:18ch; }
.sec-head--wide .d2{ max-width:22ch; }

.grid-12{ display:grid; grid-template-columns:repeat(12,1fr); gap:clamp(18px,2.4vw,40px); }

/* dark & green section skins */
.sec--dark, .sec--green{
  --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.64);
  --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34);
  color:var(--fg);
}
.sec--dark{ background:var(--charcoal); }
.sec--green{ background:var(--green); }
.sec--paper2{ background:var(--paper-2); }
.sec--dark .eyebrow, .sec--green .eyebrow{ color:var(--stone-2); }

/* film grain for dark surfaces */
.grain::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.055; z-index:1;
  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='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.grain > *{ position:relative; z-index:2; }

/* ----------  Buttons & links  ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:14px;
  min-height:58px; padding:0 32px;
  font-size:.8rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  background:var(--ink); color:var(--paper);
  border:1px solid var(--ink);
  transition:background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease),
             color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.btn:hover{ background:var(--red); border-color:var(--red); color:#fff; }
.btn:active{ transform:translateY(1px); }
.btn--ghost{ background:transparent; color:var(--ink); border-color:var(--line-strong); }
.btn--ghost:hover{ background:var(--ink); border-color:var(--ink); color:var(--paper); }

.sec--dark .btn, .sec--green .btn, .on-dark .btn{
  background:var(--paper); color:var(--ink); border-color:var(--paper);
}
.sec--dark .btn:hover, .sec--green .btn:hover, .on-dark .btn:hover{
  background:var(--red); border-color:var(--red); color:#fff;
}
.sec--dark .btn--ghost, .sec--green .btn--ghost, .on-dark .btn--ghost{
  background:transparent; color:var(--paper); border-color:rgba(243,240,234,.38);
}
.sec--dark .btn--ghost:hover, .sec--green .btn--ghost:hover, .on-dark .btn--ghost:hover{
  background:var(--paper); border-color:var(--paper); color:var(--ink);
}

.btn .arr{ width:20px; height:10px; position:relative; flex:none; }
.btn .arr::before{ content:""; position:absolute; left:0; right:4px; top:50%; height:1.5px; background:currentColor; transition:right var(--t-fast) var(--ease); }
.btn .arr::after{ content:""; position:absolute; right:2px; top:50%; width:7px; height:7px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform:translateY(-50%) rotate(45deg); }
.btn:hover .arr::before{ right:0; }

.link-arrow{
  display:inline-flex; align-items:center; gap:12px;
  font-size:.8rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  padding-bottom:6px; border-bottom:1px solid var(--line-strong);
  transition:border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.link-arrow .arr{ width:22px; height:10px; position:relative; }
.link-arrow .arr::before{ content:""; position:absolute; left:0; right:4px; top:50%; height:1.5px; background:currentColor; transition:transform var(--t-fast) var(--ease); transform-origin:left; }
.link-arrow .arr::after{ content:""; position:absolute; right:2px; top:50%; width:7px; height:7px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform:translateY(-50%) rotate(45deg); transition:transform var(--t-fast) var(--ease); }
.link-arrow:hover{ color:var(--red); border-color:var(--red); }
.link-arrow:hover .arr::before{ transform:scaleX(1.25); }
.link-arrow:hover .arr::after{ transform:translate(3px,-50%) rotate(45deg); }

/* ----------  Header  ---------- */
.header{
  position:fixed; inset:0 0 auto 0; z-index:120;
  background:rgba(243,240,234,.95);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line); color:var(--ink);
}
.header-in{
  display:flex; align-items:center; justify-content:space-between; gap:32px;
  height:84px;
}
.brand{ display:inline-flex; align-items:center; flex:none; }
.brand img{ height:30px; width:auto; }

.nav{ display:flex; align-items:center; gap:clamp(24px,3vw,44px); margin-left:auto; }
.nav a{
  font-size:.8rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  position:relative; padding:6px 0; color:inherit; opacity:.85;
  transition:opacity var(--t-fast) var(--ease);
}
.nav a::after{
  content:""; position:absolute; left:0; bottom:0; height:1.5px; width:100%;
  background:var(--red); transform:scaleX(0); transform-origin:left;
  transition:transform var(--t-fast) var(--ease);
}
.nav a:hover{ opacity:1; }
.nav a:hover::after,.nav a[aria-current="page"]::after{ transform:scaleX(1); }
.nav a[aria-current="page"]{ opacity:1; color:var(--red); }

.header-cta{ display:flex; align-items:center; gap:26px; }
.header-cta .btn{ min-height:46px; padding:0 22px; font-size:.72rem; }


/* burger */
.burger{ display:none; flex-direction:column; justify-content:center; gap:7px; width:44px; height:44px; padding:8px; z-index:220; }
.burger span{ display:block; height:1.5px; width:100%; background:currentColor; transition:transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease); }
.menu-open .burger span:nth-child(1){ transform:translateY(8.5px) rotate(45deg); }
.menu-open .burger span:nth-child(2){ opacity:0; }
.menu-open .burger span:nth-child(3){ transform:translateY(-8.5px) rotate(-45deg); }

/* mobile overlay menu */
.menu{
  position:fixed; inset:0; z-index:200; background:var(--charcoal); color:var(--paper);
  display:flex; flex-direction:column; justify-content:flex-end;
  padding:calc(84px + 4vh) var(--gutter) 6vh;
  opacity:0; visibility:hidden; transition:opacity .45s var(--ease), visibility 0s .45s;
}
.menu-open .menu{ opacity:1; visibility:visible; transition:opacity .45s var(--ease); }
.menu-links > a{
  display:flex; align-items:baseline; gap:18px;
  font-size:clamp(2rem, 8vw, 3.2rem); font-weight:400; letter-spacing:-.005em; line-height:1.22;
  padding:10px 0; border-bottom:1px solid rgba(243,240,234,.14);
  transform:translateY(24px); opacity:0; transition:transform .6s var(--ease), opacity .6s var(--ease);
}
.menu-open .menu-links a, .menu-open .menu-sub{ transform:none; opacity:1; }
.menu-links > *:nth-child(1){ transition-delay:.08s; } .menu-links > *:nth-child(2){ transition-delay:.14s; }
.menu-links > *:nth-child(3){ transition-delay:.18s; } .menu-links > *:nth-child(4){ transition-delay:.24s; }
.menu-links > *:nth-child(5){ transition-delay:.3s; }
.menu-sub{ transform:translateY(24px); opacity:0; transition:transform .6s var(--ease), opacity .6s var(--ease); }
.menu-foot{ margin-top:5vh; display:flex; flex-wrap:wrap; gap:14px; }
.menu-foot .btn{ flex:1 1 240px; }
.menu-meta{ margin-top:26px; display:flex; flex-wrap:wrap; gap:10px 28px; color:rgba(243,240,234,.55); font-size:.8rem; letter-spacing:.1em; text-transform:uppercase; }
body.menu-open{ overflow:hidden; }


/* ----------  Nav dropdown (Solutions)  ---------- */
.nav .nav-item{ position:relative; display:flex; align-items:center; }
.nav .has-sub > a{ display:inline-flex; align-items:center; gap:9px; cursor:default; }
.menu-links .menu-head{ cursor:default; }
.nav .caret{
  width:7px; height:7px; flex:none;
  border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor;
  transform:rotate(45deg); margin-top:-4px;
  transition:transform var(--t-fast) var(--ease);
}
.nav .has-sub:hover .caret, .nav .has-sub:focus-within .caret{ transform:rotate(225deg); margin-top:2px; }
.nav .sub{
  position:absolute; top:calc(100% + 16px); left:50%;
  min-width:280px; padding:10px 0;
  background:var(--paper); color:var(--ink);
  border:1px solid rgba(22,21,17,.14); box-shadow:0 20px 44px rgba(15,14,12,.16);
  opacity:0; visibility:hidden; transform:translate(-50%, 10px);
  transition:opacity var(--t-fast) var(--ease), transform var(--t-fast) var(--ease), visibility 0s .35s;
}
.nav .sub::before{ content:""; position:absolute; left:0; right:0; top:-18px; height:18px; }
.nav .has-sub:hover .sub, .nav .has-sub:focus-within .sub{
  opacity:1; visibility:visible; transform:translate(-50%, 0); transition-delay:0s, 0s, 0s;
}
.nav .sub a{ display:block; padding:12px 26px; font-size:.68rem; color:var(--fg-soft); opacity:1; }
.nav .sub a::after{ display:none; }
.nav .sub a:hover{ color:var(--ink); background:var(--paper-2); }

/* mobile menu sub-links */
.menu-sub{
  display:flex; flex-wrap:wrap; gap:2px 26px; padding:14px 0 18px;
  border-bottom:1px solid rgba(243,240,234,.14);
}
.menu-sub a{
  display:inline-block; font-size:.72rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:rgba(243,240,234,.58); padding:6px 0; border-bottom:0; line-height:1.4;
}
.menu-sub a:hover{ color:var(--paper); }

/* ----------  Preloader  ---------- */
.loader{
  position:fixed; inset:0; z-index:400; background:var(--charcoal); color:var(--paper);
  display:flex; align-items:center; justify-content:center;
  transition:transform .75s cubic-bezier(.76,0,.24,1);
}
.loader.done{ transform:translateY(-101%); }
.loader.gone{ display:none; }
.loader .ld-mark{ display:flex; flex-direction:column; align-items:center; gap:clamp(16px,1.8vw,24px); }
.loader .ld-logo{ width:clamp(220px,28vw,440px); height:auto; opacity:0; animation:ldIn .35s ease-out .05s forwards; }
@keyframes ldIn{ to{ opacity:1; } }
@media (prefers-reduced-motion:reduce){ .loader .ld-logo{ animation:none; opacity:1; } }
html.no-js .loader{ display:none; }

/* ----------  Hero (home)  ---------- */
.hero{
  position:relative; min-height:100svh; display:flex; flex-direction:column; justify-content:flex-end;
  color:var(--paper); background:var(--charcoal); overflow:hidden;
}
.hero-slides{ position:absolute; inset:0; overflow:hidden; }
.hero-slides .slide{ position:absolute; inset:0; opacity:0; transition:opacity 1.4s var(--ease); }
.hero-slides .slide img{
  width:100%; height:100%; object-fit:cover;
  filter:saturate(.88) contrast(1.05) brightness(.78);
}
.hero-slides .slide.is-active{ opacity:1; }
.hero-slides .slide.is-active img{ animation:heroZoom 8s linear both; }
@keyframes heroZoom{ from{ transform:scale(1.03); } to{ transform:scale(1.13); } }
.hero-slides::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(to right, rgba(12,11,10,.86) 0%, rgba(12,11,10,.55) 40%, rgba(12,11,10,.14) 72%, rgba(12,11,10,.28) 100%),
    linear-gradient(to top, rgba(12,11,10,.92) 0%, rgba(12,11,10,.45) 42%, rgba(12,11,10,.16) 70%, rgba(12,11,10,.42) 100%);
}
.hero-bars{ display:flex; gap:10px; margin-top:clamp(30px,4vw,48px); }
.hero-bars span{ position:relative; width:64px; height:2px; background:rgba(243,240,234,.28); overflow:hidden; }
.hero-bars span i{ position:absolute; inset:0; background:var(--red); transform:scaleX(0); transform-origin:left; }
.hero-bars span.on i{ animation:barfill 6s linear forwards; }
@keyframes barfill{ to{ transform:scaleX(1); } }
.hero-in{ position:relative; z-index:2; padding-top:150px; }
.hero-eyebrow{
  display:flex; flex-wrap:wrap; gap:10px 26px; margin-bottom:clamp(24px,3vw,40px);
  font-size:.72rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:rgba(243,240,234,.94);
  text-shadow:0 1px 16px rgba(10,10,9,.5);
}
.hero-eyebrow .sep{ color:var(--bronze-2); opacity:1; }
.hero-eyebrow > span:not(.sep){ opacity:1; }
.hero h1{ text-shadow:0 3px 20px rgba(10,10,9,.45), 0 12px 60px rgba(10,10,9,.4); }
.t-big{
  display:block; font-weight:700; text-transform:uppercase;
  font-size:clamp(3.4rem, 10vw, 11rem); line-height:.94; letter-spacing:-.012em;
}
.t-sub{
  display:block; font-weight:400;
  font-size:clamp(1.35rem, 2.9vw, 2.9rem); line-height:1.18; letter-spacing:.002em;
  color:rgba(243,240,234,.9); margin-top:clamp(14px,1.8vw,24px);
}
.hero-sub{
  max-width:56ch; margin-top:clamp(22px,2.6vw,34px);
  font-size:clamp(1.02rem,1.3vw,1.2rem); line-height:1.66; color:rgba(243,240,234,.94);
  text-shadow:0 1px 18px rgba(10,10,9,.55);
}
.hero-cta{ display:flex; flex-wrap:wrap; gap:16px; margin-top:clamp(30px,3.4vw,46px); }
.hero-credit{
  position:absolute; right:var(--gutter); bottom:118px; z-index:2;
  font-size:.66rem; letter-spacing:.18em; text-transform:uppercase; color:rgba(243,240,234,.4);
  writing-mode:vertical-rl;
}
/* capability strip at hero base */
.hero-strip{
  position:relative; z-index:2; margin-top:clamp(40px,5vw,72px);
  border-top:1px solid rgba(243,240,234,.22);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  background:rgba(16,15,13,.36);
}
.hero-strip ol{ display:grid; grid-template-columns:repeat(4,1fr); }
.hero-strip a{
  display:flex; align-items:baseline; gap:12px; padding:22px clamp(14px,1.6vw,28px);
  border-left:1px solid rgba(243,240,234,.14);
  font-size:clamp(.92rem,1.1vw,1.08rem); font-weight:400; letter-spacing:.01em;
  transition:background var(--t-fast) var(--ease);
}
.hero-strip li:first-child a{ border-left:0; }
.hero-strip .n{ font-size:.68rem; letter-spacing:.16em; color:var(--bronze-2); font-variant-numeric:tabular-nums; }
.hero-strip a:hover{ background:rgba(243,240,234,.08); }

/* line reveal for hero headline */
.line-mask{ display:block; overflow:hidden; padding-bottom:.14em; margin-bottom:-.14em; }
.line-mask > span{ display:block; transform:translateY(112%); transition:transform 1.1s var(--ease); }
html.no-js .line-mask > span{ transform:none; }
.is-ready .line-mask > span{ transform:none; }
.line-mask:nth-child(2) > span{ transition-delay:.08s; }
.line-mask:nth-child(3) > span{ transition-delay:.16s; }

/* audience chips */
.chips{ display:flex; flex-wrap:wrap; align-items:baseline; gap:10px 0; margin-top:18px; }
.chips span{
  font-size:.74rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--fg-soft); white-space:nowrap;
}
.chips span:not(:last-child)::after{
  content:"·"; margin:0 clamp(12px,1.2vw,22px); color:var(--stone-2); font-weight:400;
}
.prin--3{ grid-template-columns:repeat(3,1fr); }
.prin--3 > div{ border-bottom:0; }


/* ----------  Stats band  ---------- */
.stats{ display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); }
.stats > div{ padding:clamp(28px,3.4vw,52px) clamp(16px,1.8vw,32px) 0; border-left:1px solid var(--line); padding-left:clamp(18px,2vw,34px); }
.stats > div:first-child{ border-left:0; padding-left:0; }
.stats .num{ font-size:clamp(2.8rem,5.6vw,5.2rem); font-weight:700; line-height:1; letter-spacing:-.01em; }
.stats .lbl{ margin-top:14px; font-size:1.02rem; line-height:1.5; color:var(--fg-soft); max-width:22ch; }

/* ----------  Corridor exchange rows  ---------- */
.xhead{ display:grid; grid-template-columns:1fr clamp(40px,5vw,72px) 1fr; gap:clamp(12px,2vw,28px); padding-bottom:16px; }
.xhead span{ font-size:.72rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--stone-2); }
.xrows{ border-top:1px solid var(--line); }
.xrow{
  display:grid; grid-template-columns:1fr clamp(40px,5vw,72px) 1fr; align-items:center;
  gap:clamp(12px,2vw,28px); padding:clamp(22px,2.8vw,36px) 0; border-bottom:1px solid var(--line);
}
.xrow p{ font-size:clamp(1.05rem,1.5vw,1.35rem); line-height:1.4; }
.xrow .to{ position:relative; height:12px; width:100%; opacity:.6; }
.xrow .to::before{ content:""; position:absolute; left:0; right:6px; top:50%; height:1.5px; background:currentColor; }
.xrow .to::after{ content:""; position:absolute; right:2px; top:50%; width:8px; height:8px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform:translateY(-50%) rotate(45deg); }

/* ----------  Product suite grid  ---------- */
.suite{ border-top:1px solid var(--line); display:grid; grid-template-columns:repeat(4,1fr); }
.suite > a{
  display:block; padding:clamp(26px,3vw,44px) clamp(16px,1.8vw,30px) clamp(26px,3vw,44px) clamp(18px,2vw,32px);
  border-left:1px solid var(--line); transition:background var(--t-fast) var(--ease);
}
.suite > a:first-child{ border-left:0; padding-left:0; }
.suite > a:hover{ background:var(--paper-2); }
.suite .k{ display:block; font-size:.66rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--bronze); margin-bottom:16px; }
.suite h3{ font-size:clamp(1.1rem,1.5vw,1.4rem); font-weight:400; letter-spacing:-.004em; }
.suite p{ font-size:1rem; line-height:1.6; color:var(--fg-soft); margin-top:10px; }

@media (max-width: 1023px){
  .stats{ grid-template-columns:1fr 1fr; gap:36px 0; }
  .stats > div:nth-child(odd){ border-left:0; padding-left:0; }
  .stats > div:nth-child(even){ padding-left:clamp(18px,3vw,34px); }
  .suite{ grid-template-columns:1fr 1fr; }
  .suite > a:nth-child(odd){ border-left:0; padding-left:0; }
  .suite > a{ border-bottom:1px solid var(--line); }
}
@media (max-width: 767px){
  .stats{ grid-template-columns:1fr 1fr; }
  .suite{ grid-template-columns:1fr; }
  .suite > a{ border-left:0; padding-left:0; }
  .xrow{ grid-template-columns:1fr; gap:8px; }
  .xrow .to{ display:none; }
  .xhead{ display:none; }
  .xrow p:last-child{ color:var(--fg-soft); font-size:1rem; }
}

/* ----------  Reveal on scroll  ---------- */
.reveal{ opacity:0; transform:translateY(30px); transition:opacity .85s var(--ease), transform .85s var(--ease); transition-delay:var(--d,0s); }
.reveal.in{ opacity:1; transform:none; }
.reveal-img{ overflow:hidden; }
.reveal-img img{ transform:scale(1.08); transition:transform 1.4s var(--ease); }
.reveal-img.in img{ transform:scale(1); }

/* ----------  Home: proposition  ---------- */
.prop-grid{ display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr); gap:clamp(40px,6vw,110px); align-items:center; }
.prop-copy p + p{ margin-top:1.2em; }
.prop-media{ position:relative; }
.prop-media img{ width:100%; aspect-ratio:1/1; object-fit:cover; }
.prop-media figcaption{ margin-top:12px; font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:var(--stone); }
.meta-row{
  margin-top:clamp(48px,6vw,80px); border-top:1px solid var(--line);
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); max-width:760px;
}
.meta-row > div{ padding:22px clamp(4px,1vw,18px) 0; border-left:1px solid var(--line); padding-left:clamp(14px,1.6vw,26px); }
.meta-row > div:first-child{ border-left:0; padding-left:0; }
.meta-row dt{ font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); margin-bottom:8px; }
.meta-row dd{ font-size:.98rem; font-weight:400; }

/* ----------  Home: capabilities  ---------- */
.caps{ border-top:1px solid var(--line); display:grid; grid-template-columns:repeat(4,1fr); }
.caps-item{ padding:clamp(28px,3vw,44px) clamp(18px,2vw,36px) 0; border-left:1px solid var(--line); position:relative; }
.caps-item:first-child{ border-left:0; padding-left:0; }
.caps-item .n{
  font-size:.72rem; letter-spacing:.2em; color:var(--bronze-2);
  font-variant-numeric:tabular-nums; display:block; margin-bottom:clamp(28px,4vw,64px);
}
.caps-item h3{ font-size:clamp(1.45rem,1.9vw,1.9rem); font-weight:400; letter-spacing:-.005em; margin-bottom:14px; }
.caps-item p{ color:var(--fg-soft); font-size:1.05rem; line-height:1.66; }
.caps-item .caps-arrow{
  position:absolute; top:clamp(30px,3.2vw,46px); right:clamp(10px,1.4vw,22px);
  width:26px; height:12px; opacity:.5;
}
.caps-item .caps-arrow::before{ content:""; position:absolute; left:0; right:5px; top:50%; height:1.5px; background:currentColor; }
.caps-item .caps-arrow::after{ content:""; position:absolute; right:2px; top:50%; width:8px; height:8px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform:translateY(-50%) rotate(45deg); }
.caps-item:last-child .caps-arrow{ display:none; }
.caps-foot{ margin-top:clamp(48px,6vw,80px); }

/* ----------  Home: portfolio gallery  ---------- */
.folio{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(20px,3vw,56px) clamp(20px,3.2vw,64px); }
.folio-card{ display:block; }
.folio-card:nth-child(even){ transform:translateY(clamp(0px,5vw,84px)); }
.folio-media{ overflow:hidden; position:relative; background:var(--paper-2); }
.folio-media img{ width:100%; aspect-ratio:4/5; object-fit:cover; transition:transform 1s var(--ease); }
.folio-card:hover .folio-media img{ transform:scale(1.05); }
.folio-body{ display:flex; align-items:baseline; gap:16px; padding-top:20px; border-top:1px solid var(--line-strong); margin-top:18px; }
.folio-body .n{ font-size:.72rem; letter-spacing:.18em; color:var(--bronze); font-variant-numeric:tabular-nums; }
.folio-body h3{ font-size:clamp(1.2rem,1.7vw,1.85rem); font-weight:400; letter-spacing:-.005em; }
.folio-body .arr{ margin-left:auto; width:26px; height:12px; position:relative; flex:none; transition:transform var(--t-fast) var(--ease); }
.folio-body .arr::before{ content:""; position:absolute; left:0; right:5px; top:50%; height:1.5px; background:currentColor; }
.folio-body .arr::after{ content:""; position:absolute; right:2px; top:50%; width:8px; height:8px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform:translateY(-50%) rotate(45deg); }
.folio-card:hover .folio-body .arr{ transform:translateX(6px); }
.folio-card p{ color:var(--fg-soft); font-size:1.05rem; line-height:1.64; margin-top:12px; max-width:46ch; }
.folio-tail{ margin-top:clamp(64px,9vw,140px); }
.folio--wide .folio-media img{ aspect-ratio:16/10; }
.folio--wide .folio-card:nth-child(even){ transform:translateY(clamp(0px,3.4vw,56px)); }

/* prev/next pager on capability pages */
.pager{
  margin-top:clamp(56px,7vw,96px); padding-top:28px;
  border-top:1px solid var(--line);
  display:flex; justify-content:space-between; align-items:baseline; gap:20px; flex-wrap:wrap;
}

/* ----------  Home: solution areas  ---------- */
.area{ display:grid; grid-template-columns:1fr 1fr; min-height:min(78vh,760px); }
.area-media{ position:relative; overflow:hidden; }
.area-media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.area-body{
  display:flex; flex-direction:column; justify-content:center; gap:22px;
  padding:clamp(56px,7vw,120px) clamp(24px,5vw,96px);
}
.area-body .eyebrow{ margin-bottom:6px; }
.area-body h3{ font-size:clamp(1.8rem,3vw,2.8rem); font-weight:400; letter-spacing:-.008em; line-height:1.1; max-width:14ch; }
.area-body p{ color:var(--fg-soft); max-width:52ch; }
.area-body .link-arrow{ margin-top:10px; align-self:flex-start; }
.area--dark{ background:var(--charcoal); }
.area--green{ background:var(--green); }
.area--dark, .area--green{
  --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.66);
  --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34);
  color:var(--fg);
}
.area--dark .eyebrow, .area--green .eyebrow{ color:var(--stone-2); }

/* ----------  Home: audiences  ---------- */
.aud-grid{ display:grid; grid-template-columns:repeat(12,1fr); gap:clamp(24px,3vw,48px); align-items:start; }
.aud-grid .sec-head{ grid-column:1 / span 12; margin-bottom:0; }
.aud-copy{ grid-column:1 / span 5; }
.aud-list{ grid-column:7 / span 6; }
.aud-list li{
  display:flex; align-items:baseline; gap:18px; padding:20px 0;
  border-bottom:1px solid var(--line); font-size:clamp(1.05rem,1.4vw,1.3rem); font-weight:400; letter-spacing:-.004em;
}
.aud-list li:first-child{ border-top:1px solid var(--line); }
.aud-list .n{ font-size:.7rem; letter-spacing:.18em; color:var(--bronze); font-variant-numeric:tabular-nums; }
/* ----------  Home: africa focus  ---------- */
.africa-grid{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(40px,6vw,110px); align-items:center; }
.africa-copy p{ max-width:54ch; }
.africa-copy p + p{ margin-top:1.2em; }
.africa-media{ position:relative; }
.africa-media img{ width:100%; aspect-ratio:4/3; object-fit:cover; }
.africa-media figcaption{ margin-top:12px; font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:rgba(243,240,234,.5); }
.africa-meta{ margin-top:clamp(40px,5vw,64px); display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); }
.africa-meta > div{ padding-top:20px; padding-right:16px; }
.africa-meta > div + div{ border-left:1px solid var(--line); padding-left:clamp(14px,1.6vw,26px); }
.africa-meta dt{ font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--stone-2); margin-bottom:6px; }
.africa-meta dd{ font-size:.95rem; font-weight:400; }

/* ----------  Home: partnership routes  ---------- */
.routes{ display:grid; grid-template-columns:1fr 1fr; }
.route{
  padding:clamp(64px,8vw,128px) clamp(24px,5vw,96px);
  display:flex; flex-direction:column; gap:22px; justify-content:space-between; min-height:520px;
}
.route .eyebrow{ margin-bottom:18px; }
.route h3{ font-size:clamp(1.8rem,2.8vw,2.7rem); font-weight:400; letter-spacing:-.008em; line-height:1.12; max-width:16ch; }
.route p{ max-width:48ch; color:var(--fg-soft); }
.route .btn{ align-self:flex-start; margin-top:26px; }
.route--dark{
  background:var(--charcoal-2);
  --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.66); --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34);
  color:var(--fg);
}
.route--dark .eyebrow{ color:var(--stone-2); }
.route--bronze{ background:var(--paper-2); }

/* ----------  CTA band  ---------- */
.cta-band{ text-align:left; padding-block:clamp(56px,6.5vw,104px); }
.cta-band .eyebrow + .d2{ margin-top:20px; }
.cta-band .cta-actions{ margin-top:clamp(24px,2.6vw,36px); }
.cta-band .d2{ max-width:18ch; }
.cta-actions{ display:flex; flex-wrap:wrap; gap:16px; margin-top:clamp(32px,4vw,52px); }

/* ----------  Footer  ---------- */
.footer{
  background:var(--ink); color:var(--paper); position:relative; overflow:hidden;
  --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.6); --line:rgba(243,240,234,.14); --line-strong:rgba(243,240,234,.3);
}
.footer-top{
  display:grid; grid-template-columns:minmax(0,1.3fr) repeat(4,minmax(0,.7fr));
  gap:clamp(32px,4vw,64px); padding-block:clamp(64px,8vw,110px) clamp(48px,6vw,80px);
}
.footer-desc{ max-width:40ch; color:var(--fg-soft); margin-top:20px; font-size:1.02rem; line-height:1.7; }
.footer h4{ font-size:.72rem; letter-spacing:.22em; text-transform:uppercase; color:var(--stone-2); margin-bottom:20px; }
.footer-col li + li{ margin-top:12px; }
.footer-col a{ font-size:.98rem; color:rgba(243,240,234,.82); transition:color var(--t-fast) var(--ease); }
.footer-col a:hover{ color:var(--red); }
.footer-col a .ext{ font-size:.7em; vertical-align:super; margin-left:4px; color:var(--bronze-2); }
.footer-legal{ border-top:1px solid var(--line); }
.footer-legal{
  display:flex; flex-wrap:wrap; align-items:center; gap:12px 32px;
  padding-block:26px; font-size:.78rem; letter-spacing:.06em; color:rgba(243,240,234,.5);
}
.footer-legal a:hover{ color:var(--red); }
.footer-legal .spacer{ flex:1; }

/* ----------  Page hero (inner pages)  ---------- */
.page-hero{
  position:relative; background:var(--charcoal); color:var(--paper); overflow:hidden;
  padding-top:clamp(150px,20vh,220px); padding-bottom:clamp(56px,8vw,110px);
  --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.66); --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34);
}
.page-hero .eyebrow{ color:var(--stone-2); margin-bottom:26px; }
.page-hero h1{ max-width:none; }
.page-hero .lead{ max-width:58ch; margin-top:28px; color:rgba(243,240,234,.8); }
.page-hero--light{
  background:var(--paper); color:var(--ink);
  --fg:var(--ink); --fg-soft:#52504A; --line:rgba(22,21,17,.16); --line-strong:rgba(22,21,17,.32);
}
.page-hero--light .eyebrow{ color:var(--stone); }
.page-hero--light .lead{ color:var(--fg-soft); }
.page-hero-media{ margin-top:clamp(48px,6vw,88px); }
.page-hero-media img{ width:100%; height:clamp(320px,52vh,760px); object-fit:cover; }
.page-hero-media figcaption{ margin-top:12px; font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:var(--stone); }

/* ----------  Sticky subnav (solutions)  ---------- */
.subnav{
  position:sticky; top:0; z-index:90; background:rgba(243,240,234,.92);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.subnav-in{ display:flex; gap:clamp(18px,3vw,40px); overflow-x:auto; scrollbar-width:none; }
.subnav-in::-webkit-scrollbar{ display:none; }
.subnav a{
  flex:none; padding:18px 0; font-size:.74rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--fg-soft); border-bottom:2px solid transparent; margin-bottom:-1px;
  transition:color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.subnav a:hover{ color:var(--ink); }
.subnav a.active{ color:var(--ink); border-color:var(--red); }

/* ----------  Solutions: capability blocks  ---------- */
.svc{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(36px,5vw,96px); padding-block:clamp(64px,8vw,120px); border-top:1px solid var(--line); }
.svc:first-of-type{ border-top:0; }
.svc-side{ display:flex; flex-direction:column; gap:20px; align-items:flex-start; }
.svc-side .n{ font-size:.78rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; }
.svc-side h3{ font-size:clamp(1.8rem,2.8vw,2.6rem); font-weight:400; letter-spacing:-.008em; line-height:1.12; max-width:14ch; }
.svc-side .flag{
  font-size:.66rem; letter-spacing:.18em; text-transform:uppercase; color:var(--paper);
  background:var(--green-2); padding:8px 12px;
}
.svc-side img{ width:100%; aspect-ratio:16/10; object-fit:cover; margin-top:14px; }
.svc-main p{ color:var(--fg-soft); max-width:60ch; }
.svc-main p + p{ margin-top:1em; }
.svc-list{ margin-top:clamp(28px,3vw,44px); display:grid; grid-template-columns:1fr 1fr; gap:0 clamp(24px,3vw,48px); }
.svc-list li{
  display:flex; align-items:baseline; gap:14px; padding:15px 0; border-bottom:1px solid var(--line);
  font-size:1rem; font-weight:400;
}
.svc-list li::before{ content:""; flex:none; width:5px; height:5px; background:var(--bronze); transform:translateY(-2px); }
.svc-note{ margin-top:26px; font-size:1.02rem; color:var(--stone); }

/* ----------  Solutions: product sections  ---------- */
.prod{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(36px,5vw,96px); padding-block:clamp(64px,8vw,120px); border-top:1px solid var(--line); align-items:start; }
.prod-media{ position:sticky; top:96px; }
.prod-media img{ width:100%; aspect-ratio:4/3.4; object-fit:cover; }
.prod-media figcaption{ margin-top:12px; font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color:var(--stone); }
.prod-body .n{ font-size:.78rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; display:block; margin-bottom:16px; }
.prod-body h3{ font-size:clamp(1.8rem,2.8vw,2.6rem); font-weight:400; letter-spacing:-.008em; line-height:1.12; margin-bottom:18px; max-width:16ch; }
.prod-body .pos{ font-size:1.1rem; line-height:1.6; margin-bottom:30px; }
.prod-cols{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,3vw,48px); }
.prod-cols h4{ font-size:.7rem; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); margin-bottom:14px; }
.prod-cols li{ padding:11px 0; border-bottom:1px solid var(--line); font-size:1.02rem; color:var(--fg-soft); }
.prod-body .btn{ margin-top:34px; }
.prod:nth-of-type(even) .prod-media{ order:2; }

/* ----------  Process (5 steps)  ---------- */
.steps{ border-top:1px solid var(--line); }
.step{
  display:grid; grid-template-columns:minmax(60px,140px) minmax(0,.9fr) minmax(0,1.1fr);
  gap:clamp(16px,3vw,56px); padding:clamp(26px,3.4vw,44px) 0; border-bottom:1px solid var(--line);
  align-items:baseline;
}
.step .n{ font-size:clamp(1.2rem,2vw,1.7rem); color:var(--bronze); font-variant-numeric:tabular-nums; font-weight:400; }
.step h3{ font-size:clamp(1.25rem,1.9vw,1.8rem); font-weight:400; letter-spacing:-.005em; }
.step p{ color:var(--fg-soft); max-width:56ch; }

/* ----------  Company page  ---------- */
.statement{ max-width:22ch; }
.two-col{ display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(36px,5vw,110px); }
.two-col .sticky-label{ position:sticky; top:120px; align-self:start; }
.two-col .copy{ max-width:52rem; }
.two-col .copy p{ color:var(--fg-soft); max-width:none; }
.two-col .copy p + p{ margin-top:1.2em; }
.two-col .copy .lead{ color:var(--fg); margin-bottom:1.2em; max-width:none; }

.mv{ display:grid; grid-template-columns:1fr 1fr; }
.mv > div{
  padding:clamp(56px,7vw,110px) clamp(24px,5vw,96px);
  display:flex; flex-direction:column; gap:26px; justify-content:space-between; min-height:420px;
}
.mv .eyebrow{ color:var(--stone-2); }
.mv h3{ font-size:clamp(1.6rem,2.4vw,2.4rem); font-weight:400; letter-spacing:-.006em; line-height:1.22; max-width:24ch; }
.mv-mission{ background:var(--green); }
.mv-vision{ background:var(--charcoal-2); }
.mv > div{ --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.66); color:var(--fg); }

.prin{ border-top:1px solid var(--line); display:grid; grid-template-columns:repeat(3,1fr); }
.prin > div{ padding:clamp(28px,3.4vw,48px) clamp(18px,2.4vw,40px); border-bottom:1px solid var(--line); border-left:1px solid var(--line); }
.prin > div:nth-child(3n+1){ border-left:0; padding-left:0; }
.prin .n{ font-size:.72rem; letter-spacing:.2em; color:var(--bronze); display:block; margin-bottom:clamp(20px,3vw,44px); font-variant-numeric:tabular-nums; }
.prin h3{ font-size:clamp(1.2rem,1.7vw,1.5rem); font-weight:400; letter-spacing:-.004em; margin-bottom:12px; }
.prin p{ font-size:1.02rem; color:var(--fg-soft); line-height:1.64; }

.diff-list li{
  display:grid; grid-template-columns:1fr; gap:10px;
  padding:clamp(22px,2.8vw,36px) 0; border-bottom:1px solid var(--line); align-items:baseline;
}
.diff-list li:first-child{ border-top:1px solid var(--line); }
.diff-list .n{ font-size:.78rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; }
.diff-list h3{ font-size:clamp(1.2rem,1.8rem,1.7rem); font-weight:400; letter-spacing:-.005em; margin-bottom:8px; }
.diff-list p{ color:var(--fg-soft); max-width:62ch; }

.geo-band{ position:relative; overflow:hidden; }
.geo-band img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.38; }
.geo-band::before{ content:""; position:absolute; inset:0; background:linear-gradient(100deg, rgba(21,42,32,.94) 30%, rgba(21,42,32,.72)); }
.geo-in{ position:relative; z-index:2; padding-block:clamp(80px,10vw,150px); }

.lead-card{
  border:1px solid var(--line); padding:clamp(28px,3.4vw,48px);
  display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(24px,4vw,64px); align-items:center;
}
.lead-card .ph{
  aspect-ratio:1/1; background:var(--paper-2); display:flex; align-items:center; justify-content:center;
}

/* ----------  Contact  ---------- */
.contact-grid{ display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(40px,6vw,120px); align-items:start; }
.contact-info{ position:sticky; top:110px; display:flex; flex-direction:column; gap:34px; }
.contact-info .d3{ max-width:14ch; }
.contact-list{ border-top:1px solid var(--line); }
.contact-list > div{ display:grid; grid-template-columns:130px 1fr; gap:18px; padding:18px 0; border-bottom:1px solid var(--line); align-items:baseline; }
.contact-list dt{ font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); }
.contact-list dd a{ border-bottom:1px solid var(--line-strong); transition:color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease); }
.contact-list dd a:hover{ color:var(--red); border-color:var(--red); }

.form{ display:grid; gap:0; border-top:1px solid var(--line-strong); }
.form fieldset{ border:0; padding:clamp(28px,3.4vw,44px) 0; border-bottom:1px solid var(--line); }
.form legend{
  font-size:.72rem; letter-spacing:.22em; text-transform:uppercase; color:var(--stone);
  padding-top:clamp(28px,3.4vw,44px); float:left; width:100%; margin-bottom:26px;
}
.form legend + *{ clear:both; }
.f-grid{ display:grid; grid-template-columns:1fr 1fr; gap:22px clamp(20px,2.4vw,36px); }
.f-field{ display:flex; flex-direction:column; gap:9px; }
.f-field--full{ grid-column:1 / -1; }
.f-field label{ font-size:.78rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--fg); }
.f-field label .req{ color:var(--red); }
.f-field label .opt{ color:var(--stone); text-transform:none; letter-spacing:.02em; font-weight:400; }
.f-field input, .f-field select, .f-field textarea{
  font:inherit; font-size:1rem; color:var(--fg);
  background:transparent; border:1px solid var(--line-strong); border-radius:0;
  padding:15px 16px; transition:border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
  -webkit-appearance:none; appearance:none; width:100%;
}
.f-field textarea{ min-height:150px; resize:vertical; }
.f-field select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23161511' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 16px center; padding-right:44px;
}
.f-field input:hover, .f-field select:hover, .f-field textarea:hover{ border-color:var(--stone); }
.f-field input:focus, .f-field select:focus, .f-field textarea:focus{ outline:none; border-color:var(--ink); background:rgba(22,21,17,.025); }
.f-field input.err, .f-field select.err, .f-field textarea.err{ border-color:var(--red); }
.f-field .hint{ font-size:.8rem; color:var(--stone); }
.f-file{
  border:1px dashed var(--line-strong); padding:22px; text-align:center; color:var(--fg-soft); font-size:.92rem;
  cursor:pointer; transition:border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.f-file:hover{ border-color:var(--stone); background:rgba(22,21,17,.02); }
.f-file input{ display:none; }
.f-file .file-name{ display:block; margin-top:6px; font-weight:500; color:var(--fg); }
.f-consent{ display:flex; gap:14px; align-items:flex-start; font-size:.88rem; color:var(--fg-soft); padding-block:26px; }
.f-consent input{ margin-top:4px; width:16px; height:16px; accent-color:var(--red); flex:none; }
.f-submit{ padding-top:10px; display:flex; align-items:center; gap:24px; flex-wrap:wrap; }
.f-msg{ font-size:.92rem; color:var(--red); }
.hp{ position:absolute; left:-9999px; opacity:0; height:0; overflow:hidden; }
.form-success{
  border:1px solid var(--line); padding:clamp(40px,6vw,72px); text-align:left; display:none;
}
.form-success.show{ display:block; }
.form-success h3{ font-size:clamp(1.5rem,2.2vw,2rem); font-weight:400; letter-spacing:-.006em; margin-bottom:14px; }
.form-success p{ color:var(--fg-soft); max-width:52ch; }

/* ----------  Legal pages  ---------- */
.legal{ max-width:820px; }
.legal h2{ font-size:1.5rem; font-weight:500; letter-spacing:-.015em; margin:2.4em 0 .7em; }
.legal p, .legal li{ color:var(--fg-soft); margin-bottom:1em; }
.legal ul{ list-style:disc; padding-left:1.3em; }
.legal .updated{ font-size:.85rem; letter-spacing:.1em; text-transform:uppercase; color:var(--stone); margin-bottom:3em; }

/* ----------  Reduced motion  ---------- */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .reveal, .reveal-img img, .line-mask > span{ opacity:1 !important; transform:none !important; transition:none !important; }
  .hero-slides .slide.is-active img, .hero-bars span.on i{ animation:none; }
  .loader{ display:none !important; }
  *,*::before,*::after{ transition-duration:.01ms !important; animation-duration:.01ms !important; }
}

/* ----------  Responsive  ---------- */
@media (max-width: 1023px){
  .nav, .header-cta .btn{ display:none; }
  .burger{ display:flex; }
  .header-in{ height:72px; }
  .prop-grid, .africa-grid, .two-col, .contact-grid{ grid-template-columns:1fr; }
  .contact-info{ position:static; }
  .two-col .sticky-label{ position:static; }
  .prop-media{ max-width:520px; }
  .caps{ grid-template-columns:1fr 1fr; }
  .caps-item{ padding:28px 0 28px 24px; border-bottom:1px solid var(--line); }
  .caps-item:nth-child(odd){ border-left:0; padding-left:0; }
  .caps-item .n{ margin-bottom:24px; }
  .aud-copy{ grid-column:1 / -1; }
  .aud-list{ grid-column:1 / -1; }
  .area{ grid-template-columns:1fr; min-height:0; }
  .area-media{ min-height:340px; }
  .area:nth-child(even) .area-media{ order:-1; } /* keep image above text */
  .routes{ grid-template-columns:1fr; }
  .route{ min-height:0; }
  .svc, .prod{ grid-template-columns:1fr; }
  .prod-media{ position:static; }
  .prod:nth-of-type(even) .prod-media{ order:0; }
  .mv{ grid-template-columns:1fr; }
  .mv > div{ min-height:0; }
  .prin{ grid-template-columns:1fr 1fr; }
  .prin > div:nth-child(3n+1){ border-left:1px solid var(--line); padding-left:clamp(18px,2.4vw,40px); }
  .prin > div:nth-child(2n+1){ border-left:0; padding-left:0; }
  .footer-top{ grid-template-columns:1fr 1fr; }
  .lead-card{ grid-template-columns:1fr; }
  .lead-card .ph{ max-width:320px; }
  .meta-row{ grid-template-columns:1fr 1fr; gap:26px 0; }
  .meta-row > div:nth-child(odd){ border-left:0; padding-left:0; }
  .meta-row > div:nth-child(even){ padding-left:clamp(14px,3vw,26px); }
}
@media (max-width: 767px){
  body{ font-size:16px; }
  .hero-strip ol{ grid-template-columns:1fr 1fr; }
  .hero-strip a{ border-top:1px solid rgba(243,240,234,.12); padding:16px 14px; }
  .hero-strip li:nth-child(odd) a{ border-left:0; }
  .hero-credit{ display:none; }
  .folio{ grid-template-columns:1fr; }
  .folio-card:nth-child(even){ transform:none; }
  .caps{ grid-template-columns:1fr; }
  .caps-item{ border-left:0; padding-left:0; }
  .step{ grid-template-columns:56px 1fr; }
  .step p{ grid-column:2; }
  .f-grid{ grid-template-columns:1fr; }
  .svc-list{ grid-template-columns:1fr; }
  .prod-cols{ grid-template-columns:1fr; }
  .prin{ grid-template-columns:1fr; }
  .prin > div{ border-left:0 !important; padding-left:0 !important; }
  .africa-meta{ grid-template-columns:1fr; gap:18px; }
  .africa-meta > div + div{ border-left:0; padding-left:0; border-top:1px solid var(--line); padding-top:18px; }
  .footer-top{ grid-template-columns:1fr; }
  .contact-list > div{ grid-template-columns:1fr; gap:6px; }
  .diff-list li{ grid-template-columns:1fr; gap:8px; }
}

/* ---------- corridor lists (mv panels) ---------- */
.mv-list{ list-style:none; margin:14px 0 0; padding:0; }
.mv-list li{ display:flex; align-items:baseline; gap:clamp(14px,1.6vw,26px); padding:clamp(13px,1.6vw,22px) 0; border-bottom:1px solid rgba(243,240,234,.16); font-size:clamp(1.15rem,1.7vw,1.7rem); letter-spacing:-.005em; color:var(--fg); }
.mv-list li .n{ font-size:.72rem; letter-spacing:.18em; color:var(--bronze); font-variant-numeric:tabular-nums; flex:none; }
.mv-list li:first-child{ border-top:1px solid rgba(243,240,234,.16); }
.mv--corridor{ position:relative; }
.mv-bridge{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); z-index:2; pointer-events:none; }
@media (max-width:1023px){ .mv-bridge{ display:none; } }

/* ---------- platform map rows (home) ---------- */
.syslist{ margin-top:34px; border-top:1px solid var(--line); }
.syslist > div{ display:grid; grid-template-columns:minmax(160px,230px) 1fr; gap:18px; padding:16px 0; border-bottom:1px solid var(--line); align-items:baseline; }
.syslist dt{ font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); }
.syslist dd{ color:var(--fg-soft); font-size:1.05rem; }

/* ---------- contact enquiry routes ---------- */
.route-list{ list-style:none; margin:14px 0 0; padding:0; border-top:1px solid var(--line); }
.route-list a{ display:flex; justify-content:space-between; align-items:center; padding:14px 2px; border-bottom:1px solid var(--line); transition:color var(--t-fast) var(--ease); }
.route-list a:hover{ color:var(--red); }

@media (max-width:860px){
  .syslist > div{ grid-template-columns:1fr; gap:6px; }
}

/* ---------- applications index (division pages) ---------- */
.app-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--line-strong); }
.app-list li{ display:flex; align-items:baseline; gap:clamp(20px,3vw,56px); padding:clamp(20px,2.8vw,38px) 0; border-bottom:1px solid var(--line); }
.app-list .n{ font-size:.72rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; flex:none; }
.app-list .t{ font-size:clamp(1.5rem,2.7vw,2.7rem); font-weight:400; letter-spacing:-.008em; line-height:1.15; }

/* ---------- integrated platform (home) ---------- */
.platform-grid{ display:grid; grid-template-columns:minmax(0,.58fr) minmax(0,1.42fr); gap:clamp(32px,4.5vw,80px); align-items:start; }
.plat-grid{ margin-top:clamp(30px,3.5vw,52px); position:relative; display:grid; grid-template-columns:1fr 1fr; }
.plat-cell{ position:relative; display:flex; flex-direction:column; min-height:clamp(180px,15vw,250px);
  padding:clamp(24px,2.4vw,40px) clamp(22px,2.2vw,40px) clamp(30px,3vw,48px);
  border-top:1px solid var(--line-strong); }
.plat-cell:nth-child(odd){ padding-left:0; }
.plat-cell:nth-child(even){ border-left:1px solid var(--line); }
.plat-top{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:clamp(24px,3vw,46px); }
.plat-top .n{ font-size:.72rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; }
.plat-arr{ font-size:1rem; color:var(--stone); transition:transform var(--t-fast) var(--ease), color var(--t-fast) var(--ease); }
.plat-cell h3{ font-size:clamp(1.35rem,1.8vw,2rem); font-weight:400; letter-spacing:-.005em; transition:color var(--t-fast) var(--ease); }
.plat-cell p{ margin-top:14px; color:var(--fg-soft); font-size:1.02rem; line-height:1.62; max-width:40ch; }
.plat-cell:hover h3{ color:var(--red); }
.plat-cell:hover .plat-arr{ color:var(--red); transform:translate(3px,-3px); }
.plat-core{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); z-index:2;
  background:var(--paper-2); padding:12px 22px; pointer-events:none; display:flex; align-items:center; }
.plat-core img{ height:30px; width:auto; display:block; }
@media (max-width:1023px){ .platform-grid{ grid-template-columns:1fr; } }
@media (max-width:767px){
  .plat-grid{ grid-template-columns:1fr; }
  .plat-core{ display:none; }
  .plat-cell{ min-height:0; }
  .plat-cell:nth-child(even){ border-left:0; padding-left:0; }
  .plat-cell{ padding-right:0; }
}

/* ---------- process flow wave (home) ---------- */
.flow{ position:relative; margin-top:clamp(24px,3vw,44px); display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(18px,2.5vw,40px); }
.flow-line{ position:absolute; inset:0; width:100%; height:100%; z-index:0; overflow:visible; pointer-events:none; }
.flow-line path{ stroke:var(--bronze); stroke-width:1; opacity:.6; transition:stroke-dashoffset 2s var(--ease) .2s; }
.flow-step{ position:relative; z-index:1; }
.flow .node{
  width:clamp(48px,4.2vw,64px); aspect-ratio:1/1; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  border:1px solid rgba(166,127,79,.35); color:rgba(166,127,79,.55);
  background:var(--charcoal); font-size:.7rem; letter-spacing:.12em; font-variant-numeric:tabular-nums;
  transition:border-color .8s var(--ease), color .8s var(--ease);
}
.flow.in .node{ border-color:var(--bronze); color:var(--bronze); }
.flow.in .flow-step:nth-of-type(2) .node{ transition-delay:.5s; }
.flow.in .flow-step:nth-of-type(3) .node{ transition-delay:1s; }
.flow.in .flow-step:nth-of-type(4) .node{ transition-delay:1.5s; }
.flow-step h3{ margin-top:22px; font-size:clamp(1.25rem,1.9vw,1.8rem); font-weight:400; letter-spacing:-.005em; }
.flow-step p{ margin-top:12px; color:var(--fg-soft); font-size:1.02rem; line-height:1.62; max-width:30ch; }
@media (min-width:1024px){
  .flow-step:nth-of-type(1){ margin-top:clamp(66px,7vw,112px); }
  .flow-step:nth-of-type(2){ margin-top:clamp(44px,4.7vw,75px); }
  .flow-step:nth-of-type(3){ margin-top:clamp(22px,2.3vw,38px); }
}
@media (max-width:1023px){
  .flow{ grid-template-columns:1fr 1fr; gap:clamp(28px,4vw,44px); }
}
@media (max-width:767px){
  .flow{ grid-template-columns:1fr; gap:34px; }
  .flow-line{ display:none; }
  .flow-step{ display:grid; grid-template-columns:60px 1fr; gap:2px 20px; align-items:start; }
  .flow .node{ grid-row:1 / span 2; width:52px; }
  .flow-step h3{ margin-top:0; grid-column:2; }
  .flow-step p{ grid-column:2; }
}

/* ---------- app-list sublines ---------- */
.app-list .t-wrap{ display:flex; flex-direction:column; gap:10px; min-width:0; }
.app-list .sub{ font-size:.72rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--stone); line-height:2; }

/* ---------- resources: filter + data rows ---------- */
.res-filter{ margin-top:clamp(28px,3vw,44px); width:min(420px,100%); background:transparent; border:0; border-bottom:1px solid var(--line-strong); padding:12px 2px; font:inherit; font-size:1rem; color:var(--fg); border-radius:0; }
.res-filter:focus{ outline:0; border-color:var(--red); }
.res-filter::placeholder{ color:var(--stone); text-transform:uppercase; font-size:.78rem; letter-spacing:.16em; }
.rg-block{ margin-top:clamp(40px,5vw,64px); }
.rg-block > h3{ font-size:clamp(1.3rem,1.8vw,1.7rem); font-weight:400; letter-spacing:-.004em; }
.data-head, .data-row{ display:grid; grid-template-columns:minmax(150px,1.1fr) minmax(90px,.55fr) minmax(110px,.65fr) minmax(0,1.9fr); gap:clamp(12px,1.6vw,28px); align-items:baseline; padding:14px 0; border-bottom:1px solid var(--line); }
.data-head--ca, .data-row--ca{ grid-template-columns:minmax(170px,1fr) minmax(110px,.6fr) minmax(0,2.1fr); }
.data-head{ margin-top:18px; border-bottom:1px solid var(--line-strong); padding-bottom:10px; }
.data-head span{ font-size:.66rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--stone); }
.dc-name{ font-size:1.02rem; }
a.dc-name{ transition:color var(--t-fast) var(--ease); }
a.dc-name:hover{ color:var(--red); }
a.dc-name .ext{ font-size:.72em; margin-left:6px; color:var(--stone); }
.dc-num{ color:var(--fg-soft); font-variant-numeric:tabular-nums; font-size:.95rem; }
.dc-prod{ color:var(--fg-soft); font-size:1rem; line-height:1.6; }
@media (max-width:767px){
  .data-head{ display:none; }
  .data-row, .data-row--ca{ grid-template-columns:1fr 1fr; gap:6px 16px; padding:16px 0; }
  .dc-name{ grid-column:1 / -1; }
  .dc-prod{ grid-column:1 / -1; }
}

/* ---------- footer continent silhouettes ---------- */
.footer{ position:relative; overflow:hidden; }
.footer::before, .footer::after{
  content:""; position:absolute; z-index:0; pointer-events:none; opacity:.05;
  background-repeat:no-repeat; background-size:contain;
}
.footer::before{ background-image:url("../assets/map-canada.svg"); width:clamp(320px,36vw,700px); height:clamp(320px,36vw,700px); left:clamp(-40px,-1.5vw,-10px); bottom:-22%; opacity:.1; }
.footer::after{ background-image:url("../assets/map-africa.svg"); width:clamp(280px,28vw,540px); height:clamp(280px,28vw,540px); right:clamp(-50px,-2.4vw,-14px); top:4%; }
.footer .wrap{ position:relative; z-index:1; }

/* ---------- supply chain journey (products) ---------- */
.chain{ list-style:none; margin-top:clamp(40px,5vw,64px); padding:0; }
.chain li{ position:relative; display:grid; grid-template-columns:clamp(56px,5vw,72px) 1fr; gap:clamp(20px,3vw,48px); padding-bottom:clamp(36px,4.5vw,64px); }
.chain li:last-child{ padding-bottom:0; }
.chain li::before{ content:""; position:absolute; left:calc(clamp(48px,4.2vw,60px) / 2); top:0; bottom:0; width:1px; background:var(--line-strong); }
.chain li:first-child::before{ top:clamp(24px,2.1vw,30px); }
.chain li:last-child::before{ bottom:auto; height:clamp(24px,2.1vw,30px); }
.chain .c-node{ width:clamp(48px,4.2vw,60px); aspect-ratio:1/1; border-radius:50%; border:1px solid var(--bronze); color:var(--bronze); display:flex; align-items:center; justify-content:center; font-size:.72rem; letter-spacing:.14em; font-variant-numeric:tabular-nums; background:var(--paper); position:relative; z-index:1; }
.chain h3{ font-size:clamp(1.35rem,1.9vw,1.9rem); font-weight:400; letter-spacing:-.005em; padding-top:clamp(8px,1vw,14px); }
.chain p{ margin-top:10px; color:var(--fg-soft); max-width:64ch; line-height:1.66; }
@media (max-width:767px){ .chain li{ grid-template-columns:52px 1fr; gap:16px; } }

/* ---------- red brand accents ---------- */
.eyebrow{ position:relative; padding-bottom:12px; }
.eyebrow::after{ content:""; position:absolute; left:0; bottom:0; width:28px; height:2px; background:var(--red); }
::selection{ background:var(--red); color:#fff; }
.btn--ghost:hover{ background:var(--red); border-color:var(--red); color:#fff; }

/* ---------- sector platform (products) ---------- */
.sector-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,1.6vw,26px); margin-top:clamp(36px,4.5vw,60px); }
.sector-card{ position:relative; display:block; overflow:hidden; background:var(--charcoal); }
.sector-card img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:brightness(.6); transition:filter .5s var(--ease), transform .8s var(--ease); }
.sector-card:hover img{ filter:brightness(.3); transform:scale(1.04); }
.sector-card .sc-in{ position:relative; z-index:1; display:flex; flex-direction:column; min-height:clamp(230px,21vw,320px); padding:clamp(18px,1.8vw,30px); color:#F3F0EA; }
.sector-card .sc-n{ font-size:.74rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; }
.sector-card h3{ margin-top:8px; font-size:clamp(1rem,1.3vw,1.4rem); font-weight:700; letter-spacing:.08em; text-transform:uppercase; max-width:16ch; }
.sector-card ul{ list-style:none; margin-top:14px; opacity:0; transform:translateY(6px); transition:opacity .45s var(--ease), transform .45s var(--ease); }
.sector-card ul li{ font-size:.85rem; line-height:1.8; color:rgba(243,240,234,.85); }
.sector-card:hover ul{ opacity:1; transform:none; }
.sector-card .sc-x{ margin-top:auto; display:inline-flex; align-items:center; gap:10px; font-size:.72rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; }
.sector-card:hover .sc-x{ color:#fff; }
@media (max-width:1023px){ .sector-grid{ grid-template-columns:1fr 1fr; } .sector-card:nth-child(3):last-child{ grid-column:1 / -1; } .sector-card ul{ opacity:1; transform:none; } }
@media (max-width:767px){ .sector-grid{ grid-template-columns:1fr; } .sector-card .sc-in{ min-height:0; } }

/* sector detail sections */
.sys-grid{ margin-top:clamp(34px,4vw,54px); display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:clamp(26px,3vw,44px) clamp(22px,2.6vw,40px); }
.sys h3{ font-size:.82rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; padding-bottom:12px; border-bottom:1px solid var(--line-strong); }
.sys ul{ list-style:none; margin-top:12px; }
.sys li{ color:var(--fg-soft); font-size:1.02rem; line-height:1.9; }

/* chain on dark */
.chain--dark .c-node{ background:var(--charcoal); }
.chain--dark li::before{ background:rgba(243,240,234,.25); }

/* sourcing band */
.sourcing{ position:relative; overflow:hidden; background:var(--charcoal); }
.sourcing, .sourcing .pager{ --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.66); --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34); color:var(--fg); }
.sourcing .eyebrow{ color:var(--stone-2); }
.sourcing .wrap{ position:relative; z-index:1; }
.sourcing::before{ content:""; position:absolute; inset:0; background:url("../assets/map-world.svg") no-repeat center 62%/min(1300px,115%); opacity:.07; pointer-events:none; }
.regions{ display:flex; flex-wrap:wrap; align-items:baseline; }
.regions span{ font-size:clamp(1.15rem,1.8vw,1.8rem); letter-spacing:.06em; text-transform:uppercase; white-space:nowrap; }
.regions span:not(:last-child)::after{ content:"\00b7"; margin:0 clamp(14px,1.9vw,32px); color:var(--bronze); }

/* ghost button on dark/green bands */
.sec--dark .btn--ghost, .sec--green .btn--ghost, .sourcing .btn--ghost{ color:#F3F0EA; border-color:rgba(243,240,234,.42); }

/* current division highlighted in dropdown + mobile menu */
.sub a[aria-current="page"], .menu-sub a[aria-current="page"]{ color:var(--red); }

/* ---------- corridor exchange (home) ---------- */
.corridor-x{ background:linear-gradient(90deg, var(--green) 0 50%, var(--charcoal-2) 50% 100%); }
.corridor-x{ --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.66); --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34); color:var(--fg); }
.corridor-x .eyebrow{ color:var(--stone-2); }
.cx-in{ max-width:var(--w-max); margin:0 auto; padding:clamp(56px,7vw,110px) clamp(24px,5vw,96px); }
.cx-heads{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,5vw,96px); margin-bottom:clamp(36px,4.5vw,64px); }
.cx-heads h3{ margin-top:16px; font-size:clamp(1.5rem,2.2vw,2.2rem); font-weight:400; letter-spacing:-.006em; }
.cx-heads > div:last-child{ padding-left:clamp(12px,2.4vw,44px); }
.cx-rows{ border-top:1px solid var(--line); }
.xrow2{ display:flex; align-items:baseline; gap:clamp(16px,1.8vw,30px); padding:clamp(18px,2.3vw,32px) 0; border-bottom:1px solid var(--line); }
.xrow2 .xl, .xrow2 .xr{ font-size:clamp(1.1rem,1.6vw,1.65rem); letter-spacing:-.005em; }
.xrow2 .xl{ flex:none; max-width:44%; }
.xrow2 .xr{ flex:none; text-align:left; }
.xline{ flex:1; height:1px; background:rgba(166,127,79,.55); transform:scaleX(0); transform-origin:left; transition:transform 1.1s var(--ease); transition-delay:calc(var(--d, 0s) + .25s); align-self:center; }
.xrow2.in .xline{ transform:scaleX(1); }
.xarw{ flex:none; width:9px; height:9px; border-top:2px solid var(--red); border-right:2px solid var(--red); transform:rotate(45deg); margin-left:-14px; align-self:center; opacity:0; transition:opacity .5s var(--ease); transition-delay:calc(var(--d, 0s) + 1.15s); }
.xrow2.in .xarw{ opacity:1; }
@media (max-width:767px){
  .corridor-x{ background:var(--green); }
  .cx-heads{ grid-template-columns:1fr; gap:26px; margin-bottom:26px; }
  .cx-heads > div:last-child{ padding-left:0; }
  .xrow2{ flex-wrap:wrap; gap:8px 12px; }
  .xline{ display:none; }
  .xarw{ opacity:1; transform:rotate(45deg); margin:0; transition:none; }
}

/* ---------- sector accordion (products) ---------- */
.acc-list{ border-top:1px solid var(--line-strong); }
.acc{ border-bottom:1px solid var(--line); }
.acc summary{ list-style:none; cursor:pointer; display:flex; align-items:baseline; gap:clamp(16px,2vw,34px); padding:clamp(20px,2.4vw,32px) 0; }
.acc summary::-webkit-details-marker{ display:none; }
.acc summary .n{ font-size:.72rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; flex:none; }
.acc summary .acc-t{ font-size:clamp(1.3rem,1.9vw,1.9rem); letter-spacing:-.005em; transition:color var(--t-fast) var(--ease); }
.acc summary .acc-tag{ margin-left:auto; color:var(--fg-soft); font-size:1rem; max-width:40ch; text-align:right; }
.acc summary .acc-x{ flex:none; position:relative; width:16px; height:16px; align-self:center; }
.acc summary .acc-x::before, .acc summary .acc-x::after{ content:""; position:absolute; left:0; right:0; top:50%; height:1.5px; background:var(--fg); transition:transform .3s var(--ease); }
.acc summary .acc-x::after{ transform:rotate(90deg); }
.acc[open] summary .acc-x::after{ transform:rotate(0); }
.acc summary:hover .acc-t, .acc[open] summary .acc-t{ color:var(--red); }
.acc-body{ padding:6px 0 clamp(30px,3.6vw,48px) clamp(34px,4.5vw,72px); }
.acc-body .sys-grid{ margin-top:clamp(10px,1.4vw,20px); }
@media (max-width:1023px){ .acc summary .acc-tag{ display:none; } .acc-body{ padding-left:0; } }

/* ---------- geo positioning strip (home) ---------- */
.geo-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,1.6vw,26px); }
.geo-card{ background:var(--paper); padding:clamp(32px,3.6vw,56px) clamp(26px,2.8vw,48px); }
.geo-mark{ display:block; height:clamp(44px,4vw,60px); width:auto; filter:invert(1); opacity:.55; margin-bottom:clamp(20px,2.4vw,32px); }
.geo-mark--wide{ height:clamp(38px,3.4vw,52px); }
.geo-card h3{ font-size:clamp(1.45rem,2vw,2.05rem); font-weight:400; letter-spacing:-.006em; margin-bottom:14px; }
.geo-card p{ font-size:1.02rem; color:var(--fg-soft); line-height:1.64; }
@media (max-width:1023px){ .geo-grid{ grid-template-columns:1fr; } }

/* four-sector grid */

/* ---------- home: sector index + 3-up solutions ---------- */
.sector-index{ list-style:none; margin:0; padding:0; border-top:1px solid var(--line-strong); }
.sector-index a{ display:grid; grid-template-columns:56px minmax(0,1fr) minmax(0,1.05fr) 40px; align-items:center; gap:clamp(16px,2.6vw,48px); padding:clamp(28px,3.4vw,52px) 0; border-bottom:1px solid var(--line-strong); color:inherit; }
.sector-index .si-n{ font-size:.72rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; }
.sector-index .si-t{ font-size:clamp(2rem,3.8vw,3.6rem); font-weight:400; letter-spacing:-.014em; line-height:1.02; transition:color var(--t-fast) var(--ease), transform .55s var(--ease); }
.sector-index .si-d{ font-size:1.05rem; color:var(--fg-soft); line-height:1.62; max-width:40ch; }
.sector-index .si-arr{ justify-self:end; width:30px; height:12px; position:relative; transition:transform var(--t-fast) var(--ease); }
.sector-index .si-arr::before{ content:""; position:absolute; left:0; right:5px; top:50%; height:1.5px; background:currentColor; }
.sector-index .si-arr::after{ content:""; position:absolute; right:2px; top:50%; width:8px; height:8px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform:translateY(-50%) rotate(45deg); }
.sector-index a:hover .si-t{ color:var(--red); transform:translateX(10px); }
.sector-index a:hover .si-arr{ transform:translateX(8px); color:var(--red); }
@media (max-width:767px){
  .sector-index a{ grid-template-columns:40px minmax(0,1fr) 30px; row-gap:10px; }
  .sector-index .si-d{ grid-column:2; }
  .sector-index .si-arr{ grid-column:3; grid-row:1; }
}
.folio--3{ grid-template-columns:repeat(3,1fr); gap:clamp(20px,2.6vw,44px); }
.folio--3 .folio-card:nth-child(even){ transform:none; }
.folio--3 .folio-media img{ aspect-ratio:4/5; }
@media (max-width:1023px){ .folio--3{ grid-template-columns:1fr 1fr; } .folio--3 .folio-card:last-child{ grid-column:1 / -1; } .folio--3 .folio-card:last-child .folio-media img{ aspect-ratio:16/9; } }
@media (max-width:767px){ .folio--3{ grid-template-columns:1fr; } .folio--3 .folio-card:last-child .folio-media img{ aspect-ratio:4/5; } }

/* ---------- hero v2: full-viewport takeover ---------- */
.hero--v2{ min-height:100svh; display:flex; flex-direction:column; padding-top:84px; }
.hero--v2 .hero-slides .slide img{ filter:saturate(.9) contrast(1.04) brightness(.86); }
.hero--v2 .hero-slides .slide{ transition:opacity 2.8s cubic-bezier(.4,0,.2,1); }
.hero--v2 .hero-slides .slide.is-active img{ animation:none; }
.hero--v2 .hero-slides::after{
  background:
    linear-gradient(to right, rgba(12,11,10,.78) 0%, rgba(12,11,10,.42) 46%, rgba(12,11,10,.08) 78%, rgba(12,11,10,.2) 100%),
    linear-gradient(to top, rgba(12,11,10,.9) 0%, rgba(12,11,10,.38) 40%, rgba(12,11,10,.08) 68%, rgba(12,11,10,.3) 100%);
}
.hero--v2 .hero-in{ flex:1; display:flex; flex-direction:column; justify-content:flex-end; padding-top:clamp(28px,4.5vh,56px); padding-bottom:clamp(36px,5.5vh,72px); }
.hero--v2 .t-big{ font-size:clamp(2.6rem, 8.4vw, 9rem); line-height:.92; letter-spacing:-.018em; }
.hero-row{ display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(24px,4vw,72px); align-items:end; margin-top:clamp(22px,3vh,40px); }
.hero--v2 .t-sub{ margin-top:0; max-width:16ch; }
.hero--v2 .hero-sub{ margin-top:0; max-width:46ch; }
.hero--v2 .hero-cta{ margin-top:clamp(22px,2.6vw,34px); }
@media (max-width:1023px){
  .hero--v2{ padding-top:72px; }
  .hero-row{ grid-template-columns:1fr; align-items:start; }
  .hero--v2 .t-sub{ max-width:none; }
}
@media (max-width:767px){
  .hero--v2 .t-big{ font-size:clamp(2.4rem, 12vw, 4.2rem); }
    }

/* ---------- adaptive header: transparent over heroes, light/dark by section ---------- */
.header{ background:transparent; border-bottom:0; -webkit-backdrop-filter:none; backdrop-filter:none; color:var(--paper);
  transition:background .5s var(--ease), color .5s var(--ease), border-color .5s var(--ease); }
.header.is-light{ background:rgba(243,240,234,.94); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); border-bottom-color:var(--line); color:var(--ink); }
.header.is-dark{ background:var(--hdr-bg, rgba(26,25,22,.88)); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); border-bottom-color:rgba(243,240,234,.12); color:var(--paper); }
.header.is-clear, .header:not(.is-light):not(.is-dark){ background:transparent; border-bottom:0; box-shadow:none; }
.header:not(.is-light) .nav a{ opacity:.92; }
.header:not(.is-light) .header-cta .btn{ background:var(--paper); color:var(--ink); border-color:var(--paper); }
.header:not(.is-light) .header-cta .btn:hover{ background:var(--red); border-color:var(--red); color:#fff; }
.menu-open .header{ background:transparent; border-bottom:0; -webkit-backdrop-filter:none; backdrop-filter:none; color:var(--paper); }
.menu-open .header .header-cta .btn{ background:var(--paper); color:var(--ink); border-color:var(--paper); }

/* ---------- large monitors: cap and centre the measure, type unchanged ---------- */
@media (min-width:1920px){
  :root{ --w-max:1840px; --gutter:clamp(40px,2.6vw,72px); }
  .lead, .body-m, .hero-sub, .folio-card p, .prin p, .sector-index .si-d, .page-hero .lead, .footer-desc, .cta-band .body-m, .sec-head p, .cp-edit .copy p, .cp-edit .big, .cp-hero-side p, .cp-hero-lead, .cp-model .copy p, .cp-focus p, .cp-who p, .cp-prin p, .pd-edit .big, .pd-edit .copy p, .pd-hero-copy .sub, .pd-hero-copy .lead, .pd-cap p, .pd-stop p, .pd-path-note, .pd-sec p, .pd-prin p, .ad-over p, .ad-intro, .ad-cap p, .ad-step p, .ad-hero-copy .lead, .ea p, .dz-tile p, .c3-why p, .spec-item p, .cover p, .why-item p, .app-card p, .pair p, .dz-flow-item p, .rs-inst p, .rs-hero .lead, .dz-lead, .dz-sub, .bh-block .lead, .bh-block p, .stat-l, .elev p, .dz-flow-item p, .contact-info p, .who-item p{ max-width:76ch !important; }
  .d2, .sec-head .d2, .cta-band .d2{ max-width:26ch !important; }
  .d3{ max-width:24ch !important; }
  .dz-tile h3, .cp-focus h3, .ad-cap h3{ max-width:none !important; }
  .two-col .sticky-label .d3{ max-width:18ch !important; }
  .brand img{ height:34px; }
  .header-in{ height:92px; }
  .hero--v2{ padding-top:92px; }
}
@media (min-width:2400px){
  :root{ --w-max:2360px; --gutter:clamp(48px,2.8vw,96px); }
  .lead, .body-m, .hero-sub, .folio-card p, .prin p, .sector-index .si-d, .page-hero .lead, .footer-desc, .cta-band .body-m, .sec-head p, .cp-edit .copy p, .cp-edit .big, .cp-hero-side p, .cp-hero-lead, .cp-model .copy p, .cp-focus p, .cp-who p, .cp-prin p, .pd-edit .big, .pd-edit .copy p, .pd-hero-copy .sub, .pd-hero-copy .lead, .pd-cap p, .pd-stop p, .pd-path-note, .pd-sec p, .pd-prin p, .ad-over p, .ad-intro, .ad-cap p, .ad-step p, .ad-hero-copy .lead, .ea p, .dz-tile p, .c3-why p, .spec-item p, .cover p, .why-item p, .app-card p, .pair p, .dz-flow-item p, .rs-inst p, .rs-hero .lead, .dz-lead, .dz-sub, .bh-block .lead, .bh-block p, .stat-l, .elev p, .dz-flow-item p, .contact-info p, .who-item p{ max-width:88ch !important; }
  .d2, .sec-head .d2, .cta-band .d2{ max-width:28ch !important; }
  .d3{ max-width:26ch !important; }
  .two-col .sticky-label .d3{ max-width:20ch !important; }
  .brand img{ height:38px; }
  .header-in{ height:104px; }
  .hero--v2{ padding-top:104px; }
  .footer-top img[alt="Cadrique"]{ height:40px !important; }
}

/* ---------- home sectors: hover-reveal index with media panel ---------- */
.sx{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(32px,5vw,96px); align-items:start; }
.sx .sector-index a{ grid-template-columns:56px minmax(0,1fr) 40px; align-items:start; padding:clamp(24px,2.8vw,40px) 0; }
.sx .si-n{ padding-top:.9em; transition:color var(--t-fast) var(--ease); }
.sx .si-body{ display:flex; flex-direction:column; gap:10px; min-width:0; }
.sx .si-d{ max-width:52ch; }
.sx .si-arr{ margin-top:1.1em; }
.si-tags{ display:flex; flex-wrap:wrap; gap:6px 14px; max-height:0; opacity:0; overflow:hidden; transition:max-height .6s var(--ease), opacity .5s var(--ease), margin .6s var(--ease); }
.si-tags span{ font-size:.7rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--stone); white-space:nowrap; }
.si-tags span:not(:last-child)::after{ content:""; display:inline-block; width:3px; height:3px; border-radius:50%; background:var(--red); margin:0 0 3px 14px; }
.sx li.is-active .si-tags{ max-height:80px; opacity:1; margin-top:6px; }
.sx li.is-active .si-t, .sx li.is-active .si-n{ color:var(--red); }
.sx li.is-active .si-t{ transform:translateX(10px); }
.sx li.is-active .si-arr{ transform:translateX(8px); color:var(--red); }
.sx-media{ position:sticky; top:124px; aspect-ratio:4/5; overflow:hidden; background:var(--charcoal); }
.sx-media figure{ position:absolute; inset:0; margin:0; opacity:0; transform:scale(1.05); transition:opacity .9s var(--ease), transform 1.6s var(--ease); }
.sx-media figure img{ width:100%; height:100%; object-fit:cover; display:block; }
.sx-media figure.is-on{ opacity:1; transform:none; }
.sx-media::after{ content:""; position:absolute; inset:auto 0 0 0; height:38%; background:linear-gradient(to top, rgba(12,11,10,.62), rgba(12,11,10,0)); pointer-events:none; }
@media (max-width:1023px){
  .sx{ grid-template-columns:1fr; }
  .sx-media{ display:none; }
  .si-tags, .sx li .si-tags{ max-height:none; opacity:1; margin-top:6px; }
}
@media (max-width:767px){
  .sx .sector-index a{ grid-template-columns:40px minmax(0,1fr) 30px; }
  .sx .si-d{ grid-column:auto; }
}

/* ---------- sector pages: What We Cover grid + application sub-lines ---------- */
.cover{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(20px,2.6vw,44px); border-top:1px solid var(--line-strong); }
.cover > div{ padding-top:clamp(22px,2.4vw,34px); }
.cover .n{ display:block; font-size:.72rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; margin-bottom:clamp(18px,2.4vw,36px); }
.cover h3{ font-size:clamp(1.15rem,1.5vw,1.45rem); font-weight:400; letter-spacing:-.004em; margin-bottom:12px; }
.cover p{ font-size:1.02rem; color:var(--fg-soft); line-height:1.64; max-width:30ch; }
@media (max-width:1023px){ .cover{ grid-template-columns:1fr 1fr; } }
@media (max-width:600px){ .cover{ grid-template-columns:1fr; } }
.app-list .sub--text{ text-transform:none; letter-spacing:0; font-weight:400; font-size:1.02rem; color:var(--fg-soft); line-height:1.6; }
.page-hero .cta-actions .btn{ background:var(--paper); color:var(--ink); border-color:var(--paper); }
.page-hero .cta-actions .btn:hover{ background:var(--red); border-color:var(--red); color:#fff; }

/* ---------- Why Cadrique: editorial 2x2 with ghost numerals ---------- */
.why{ display:grid; grid-template-columns:1fr 1fr; border-top:1px solid var(--line-strong); }
.why-item{ position:relative; overflow:hidden; padding:clamp(34px,4vw,64px) clamp(22px,3vw,56px) clamp(34px,4vw,64px) 0; border-bottom:1px solid var(--line); }
.why-item:nth-child(even){ border-left:1px solid var(--line); padding-left:clamp(22px,3vw,56px); }
.why-n{ position:absolute; right:clamp(8px,1.4vw,22px); top:clamp(6px,.8vw,14px); font-size:clamp(5rem,9vw,9.5rem); line-height:1; font-weight:700; letter-spacing:-.05em; color:var(--bronze); opacity:.13; pointer-events:none; font-variant-numeric:tabular-nums; }
.why-item h3{ position:relative; font-size:clamp(1.4rem,2vw,1.95rem); font-weight:400; letter-spacing:-.006em; margin-bottom:14px; max-width:16ch; }
.why-item p{ position:relative; color:var(--fg-soft); max-width:40ch; line-height:1.66; }
.why-item::after{ content:""; position:absolute; left:0; bottom:-1px; height:2px; width:0; background:var(--red); transition:width .7s var(--ease); }
.why-item:hover::after{ width:100%; }
@media (max-width:767px){ .why{ grid-template-columns:1fr; } .why-item, .why-item:nth-child(even){ border-left:0; padding-left:0; padding-right:0; } }

/* ---------- How We Build: specification cards ---------- */
.spec{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,1.6vw,26px); }
.spec-item{ position:relative; display:flex; flex-direction:column; background:var(--paper); border:1px solid var(--line); min-height:0; padding:clamp(24px,2.4vw,34px) clamp(22px,2.4vw,36px) clamp(26px,2.6vw,38px); transition:transform .5s var(--ease), box-shadow .5s var(--ease); }
.spec-item::before{ content:""; position:absolute; left:0; top:-1px; height:3px; width:0; background:var(--red); transition:width 1.1s var(--ease) .25s; }
.spec-item.in::before{ width:100%; }
.spec-item:hover{ transform:translateY(-4px); box-shadow:0 22px 44px rgba(22,21,17,.08); }
.spec-k{ font-size:.7rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); margin-bottom:0; padding-bottom:clamp(16px,1.8vw,26px); font-variant-numeric:tabular-nums; }
.spec-item h3{ font-size:clamp(1.35rem,1.9vw,1.85rem); font-weight:400; letter-spacing:-.006em; margin-bottom:12px; }
.spec-item p{ color:var(--fg-soft); font-size:1.02rem; line-height:1.64; max-width:34ch; }
@media (max-width:1023px){ .spec{ grid-template-columns:1fr; } .spec-item{ min-height:0; } .spec-k{ margin-bottom:0; padding-bottom:18px; } }

/* =================== per-page signatures =================== */
/* split hero (light pages) */
.hero-split{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(32px,5vw,96px); align-items:end; }
.hero-fig{ margin:0; }
.hero-fig img{ width:100%; aspect-ratio:4/5; object-fit:cover; display:block; }
.hero-fig figcaption, .plan-frame figcaption{ margin-top:12px; font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:var(--stone); display:flex; gap:14px; }
.hero-fig figcaption .n, .plan-frame figcaption .n{ color:var(--red); font-weight:700; }
.hero-fig--small{ max-width:360px; justify-self:end; }
@media (max-width:1023px){ .hero-split{ grid-template-columns:1fr; align-items:start; } .hero-fig--small{ max-width:none; justify-self:stretch; } .hero-fig--small img{ aspect-ratio:16/10; } }

/* buildings: blueprint hero + plan frame */
.page-hero--bp{ overflow:visible; }
.page-hero--bp::before{ content:""; position:absolute; inset:0; pointer-events:none; opacity:.55;
  background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px); background-size:72px 72px;
  -webkit-mask-image:linear-gradient(to bottom, rgba(0,0,0,.9), transparent 92%); mask-image:linear-gradient(to bottom, rgba(0,0,0,.9), transparent 92%); }
.page-hero--bp .wrap{ position:relative; }
.plan-frame{ position:relative; margin:0; padding:16px; }
.plan-frame img{ width:100%; aspect-ratio:4/5; object-fit:cover; display:block; }
.plan-frame::before, .plan-frame::after{ content:""; position:absolute; width:30px; height:30px; border:2px solid var(--ink); }
.plan-frame::before{ left:0; top:0; border-right:0; border-bottom:0; }
.plan-frame::after{ right:0; bottom:46px; border-left:0; border-top:0; }
.plan-frame figcaption{ padding:0 16px; }
.floors{ border-top:3px solid var(--ink); border-bottom:3px solid var(--ink); }
.floor{ display:grid; grid-template-columns:clamp(72px,8vw,120px) minmax(0,1fr) minmax(0,1.2fr); gap:clamp(16px,2.4vw,40px); align-items:center; padding:clamp(22px,2.6vw,38px) 0; border-top:1px solid var(--line); transition:background var(--t-fast) var(--ease); }
.floor:first-child{ border-top:0; }
.floor .n{ font-size:clamp(2rem,3.6vw,3.4rem); font-weight:700; color:var(--bronze); opacity:.45; line-height:1; letter-spacing:-.03em; font-variant-numeric:tabular-nums; transition:opacity var(--t-fast) var(--ease), color var(--t-fast) var(--ease); }
.floor h3{ font-size:clamp(1.3rem,1.9vw,1.85rem); font-weight:400; letter-spacing:-.006em; }
.floor p{ color:var(--fg-soft); font-size:1.02rem; line-height:1.64; max-width:46ch; }
.floor:hover{ background:rgba(22,21,17,.025); }
.floor:hover .n{ opacity:1; color:var(--red); }
@media (max-width:767px){ .floor{ grid-template-columns:56px 1fr; } .floor p{ grid-column:2; } }
.skyline{ position:relative; display:grid; grid-template-columns:repeat(5,1fr); gap:clamp(10px,1.6vw,26px); align-items:end; }
.skyline::after{ content:""; position:absolute; left:0; right:0; bottom:118px; height:2px; background:var(--ink); }
.sky{ display:flex; flex-direction:column; justify-content:flex-end; }
.sky .bar{ position:relative; width:100%; height:calc(var(--h) * 2.8px); max-height:34vh; background:var(--charcoal); transform-origin:bottom; transform:scaleY(0); transition:transform 1.1s var(--ease) var(--d,0s); }
.sky .bar::before{ content:""; position:absolute; left:0; right:0; top:0; height:4px; background:var(--red); }
.sky.in .bar{ transform:scaleY(1); }
.sky .lbl{ height:118px; padding-top:16px; }
.sky .lbl h3{ font-size:clamp(.95rem,1.2vw,1.25rem); font-weight:400; }
.sky .lbl p{ font-size:.82rem; color:var(--fg-soft); margin-top:6px; line-height:1.5; }
@media (max-width:767px){ .skyline{ grid-template-columns:1fr; gap:0; } .skyline::after, .sky .bar{ display:none; } .sky .lbl{ height:auto; padding:16px 0; border-top:1px solid var(--line); } }

/* energy: pulse hero, circuit rail, cells, loads */
.page-hero--pulse{ padding-bottom:clamp(56px,8vw,110px); }
.pulse-line{ position:absolute; left:0; right:0; bottom:clamp(8px,4vh,40px); width:100%; height:120px; z-index:0; opacity:.75; pointer-events:none; }
.pulse-line path{ fill:none; stroke:var(--bronze); stroke-width:1.5; stroke-dasharray:3200; stroke-dashoffset:3200; }
.is-ready .pulse-line path{ animation:pulsedraw 3.4s var(--ease) .5s forwards; }
@keyframes pulsedraw{ to{ stroke-dashoffset:0; } }
.page-hero--pulse .wrap{ position:relative; z-index:1; }
.rail{ position:relative; display:grid; grid-template-columns:repeat(var(--n,5),1fr); gap:clamp(16px,2vw,32px); padding-top:38px; }
.rail::before{ content:""; position:absolute; left:0; right:0; top:8px; height:1px; background:var(--line-strong); }
.rail > div{ position:relative; }
.rail > div::before{ content:""; position:absolute; left:0; top:-37px; width:17px; height:17px; border-radius:50%; border:1px solid var(--bronze); background:var(--paper-2); }
.rail > div::after{ content:""; position:absolute; left:8px; top:-20px; width:1px; height:20px; background:var(--line-strong); }
.rail .n{ display:block; font-size:.72rem; letter-spacing:.2em; color:var(--bronze); margin-bottom:14px; font-variant-numeric:tabular-nums; }
.rail h3{ font-size:clamp(1.15rem,1.5vw,1.45rem); font-weight:400; margin-bottom:10px; }
.rail p{ font-size:1.02rem; color:var(--fg-soft); line-height:1.62; max-width:28ch; }
.rail--circuit > div::before{ border-radius:0; background:var(--charcoal); }
.sec--dark .rail::before, .sec--dark .rail > div::after{ background:rgba(243,240,234,.28); }
@media (max-width:1023px){ .rail{ grid-template-columns:1fr 1fr; row-gap:48px; } }
@media (max-width:600px){ .rail{ grid-template-columns:1fr; } }

/* healthcare: clinic hero, plan, wards */
.page-hero--clinic{ background:#EAEDE7; }
.clinic-mark{ position:relative; display:block; width:38px; aspect-ratio:1/1; margin-bottom:clamp(22px,2.6vw,36px); pointer-events:none; }
.clinic-mark::before, .clinic-mark::after{ content:""; position:absolute; background:var(--red); }
.clinic-mark::before{ left:50%; top:0; bottom:0; width:2px; transform:translateX(-50%); }
.clinic-mark::after{ top:50%; left:0; right:0; height:2px; transform:translateY(-50%); }
.plan{ display:grid; grid-template-columns:1fr 1fr; border:2px solid var(--ink); outline:1px solid var(--ink); outline-offset:5px; }
.room{ position:relative; padding:clamp(30px,3.2vw,56px) clamp(26px,3vw,48px); border-right:2px solid var(--ink); border-bottom:2px solid var(--ink); min-height:clamp(200px,20vw,300px); }
.room:nth-child(2n){ border-right:0; } .room:nth-last-child(-n+2){ border-bottom:0; }
.room .tag{ position:absolute; top:14px; left:16px; font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); font-variant-numeric:tabular-nums; }
.room .tag b{ color:var(--red); margin-right:8px; }
.room h3{ margin-top:clamp(18px,2vw,30px); font-size:clamp(1.3rem,1.9vw,1.85rem); font-weight:400; margin-bottom:12px; }
.room p{ color:var(--fg-soft); font-size:1.02rem; line-height:1.64; max-width:40ch; }
.room::after{ content:""; position:absolute; right:-2px; bottom:26%; width:2px; height:52px; background:var(--paper); }
.room:nth-child(2n)::after{ display:none; }
@media (max-width:767px){ .plan{ grid-template-columns:1fr; } .room{ border-right:0; } .room::after{ display:none; } .room:nth-last-child(-n+2){ border-bottom:2px solid var(--ink); } .room:last-child{ border-bottom:0; } }
.wards{ display:grid; grid-template-columns:repeat(5,1fr); gap:clamp(12px,1.6vw,26px); }
.ward{ border-top:2px solid var(--ink); padding-top:18px; }
.ward::before{ content:"+"; display:block; color:var(--red); font-weight:700; font-size:1.2rem; line-height:1; margin-bottom:16px; }
.ward h3{ font-size:clamp(1rem,1.3vw,1.3rem); font-weight:400; }
.ward p{ font-size:.85rem; color:var(--fg-soft); margin-top:6px; line-height:1.5; }
@media (max-width:1023px){ .wards{ grid-template-columns:repeat(3,1fr); } } @media (max-width:600px){ .wards{ grid-template-columns:1fr 1fr; } }

/* capital: green hero + term sheet */
.page-hero--green{ background:var(--green); }
.sheet{ border-top:2px solid var(--ink); }
.sheet-h, .sheet-r{ display:grid; grid-template-columns:72px minmax(0,.9fr) minmax(0,1.3fr); gap:clamp(16px,2.4vw,40px); }
.sheet-h{ padding:14px 0; font-size:.68rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); border-bottom:1px solid var(--line-strong); }
.sheet-r{ padding:clamp(22px,2.6vw,38px) 0; border-bottom:1px solid var(--line); align-items:start; }
.sheet-r .n{ font-size:.78rem; letter-spacing:.2em; color:var(--bronze); padding-top:.45em; font-variant-numeric:tabular-nums; }
.sheet-r h3{ font-size:clamp(1.2rem,1.7vw,1.6rem); font-weight:400; letter-spacing:-.005em; }
.sheet-r p{ color:var(--fg-soft); line-height:1.64; max-width:60ch; }
@media (max-width:767px){ .sheet-h{ display:none; } .sheet-r{ grid-template-columns:44px 1fr; } .sheet-r p{ grid-column:2; } }

/* development: dotted site hero, milestones, gantt */
.page-hero--dots{ background-color:var(--charcoal); background-image:radial-gradient(rgba(243,240,234,.16) 1px, transparent 1.5px); background-size:28px 28px; }
.hero-milestones{ display:flex; justify-content:space-between; align-items:center; margin-top:clamp(36px,4.5vw,64px); position:relative; padding-top:18px; font-size:.7rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:rgba(243,240,234,.66); max-width:62ch; }
.hero-milestones::before{ content:""; position:absolute; left:0; right:0; top:0; height:1px; background:rgba(243,240,234,.3); }
.hero-milestones span{ position:relative; }
.hero-milestones span::before{ content:""; position:absolute; left:0; top:-22px; width:7px; height:7px; background:var(--bronze); transform:rotate(45deg); }
.hero-milestones span:last-child::before{ background:var(--red); }
.gantt{ border-top:2px solid var(--ink); }
.g-head, .g-row{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,2fr); gap:clamp(16px,2.4vw,40px); }
.g-head{ padding:14px 0; font-size:.68rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); border-bottom:1px solid var(--line-strong); }
.g-head .scale{ display:flex; justify-content:space-between; }
.g-row{ align-items:center; padding:clamp(18px,2.2vw,30px) 0; border-bottom:1px solid var(--line); }
.g-row h3{ font-size:clamp(1.1rem,1.5vw,1.4rem); font-weight:400; }
.g-row p{ font-size:1rem; color:var(--fg-soft); margin-top:6px; line-height:1.55; max-width:44ch; }
.g-track{ position:relative; height:14px; background:repeating-linear-gradient(90deg, var(--line) 0 1px, transparent 1px calc(100% / 12)); }
.g-bar{ position:absolute; top:0; bottom:0; left:calc((var(--s) - 1) * 100% / 12); width:calc(var(--l) * 100% / 12); background:var(--charcoal); transform:scaleX(0); transform-origin:left; transition:transform 1s var(--ease) var(--d,0s); }
.g-bar::after{ content:""; position:absolute; right:0; top:0; bottom:0; width:3px; background:var(--red); }
.g-row.in .g-bar{ transform:scaleX(1); }
@media (max-width:767px){ .g-head, .g-row{ grid-template-columns:1fr; } .g-head > span:first-child{ display:none; } }

/* advisory: memo */
.page-hero--memo .memo-lead{ border-left:2px solid var(--red); padding-left:clamp(16px,2vw,28px); }
.memo{ border-top:2px solid var(--ink); }
.memo-row{ display:grid; grid-template-columns:clamp(120px,16vw,220px) minmax(0,1fr); gap:clamp(20px,3vw,56px); padding:clamp(28px,3.4vw,52px) 0; border-bottom:1px solid var(--line); }
.memo-k{ font-size:.7rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); padding-top:.6em; }
.memo-row .d3{ max-width:18ch; }
.memo-row .lead, .memo-row .body-m{ max-width:62ch; }
@media (max-width:767px){ .memo-row{ grid-template-columns:1fr; gap:12px; } }

.app-list .side{ margin-left:auto; flex:none; text-align:right; font-size:.72rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--stone); max-width:34ch; line-height:1.9; }
.app-list .side-k{ display:block; font-weight:400; letter-spacing:.2em; color:var(--bronze); font-size:.64rem; }
@media (max-width:767px){ .app-list li{ flex-wrap:wrap; } .app-list .side{ margin-left:0; flex-basis:100%; text-align:left; padding-left:calc(.72rem + 2ch + 20px); } }

/* energy: one-line diagram */
.oneline{ position:relative; padding-top:clamp(34px,4vw,56px); }
.ol-bus{ position:relative; height:2px; background:rgba(243,240,234,.16); }
.ol-bus::before{ content:""; position:absolute; inset:0; background:var(--bronze); transform:scaleX(0); transform-origin:left; transition:transform 1.6s var(--ease) .2s; }
.ol-bus.in::before{ transform:scaleX(1); }
.ol-bus::after, .ol-bus > i{ display:none; }
.ol-end{ position:absolute; top:-30px; font-size:.68rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--bronze-2); }
.ol-end::after{ content:""; position:absolute; top:24px; width:10px; height:10px; border-radius:50%; background:var(--bronze); }
.ol-end--l{ left:0; } .ol-end--l::after{ left:0; }
.ol-end--r{ right:0; } .ol-end--r::after{ right:0; }
.ol-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(18px,2.4vw,40px); margin-top:clamp(44px,5vw,72px); }
.ol-item{ position:relative; padding-top:clamp(22px,2.4vw,32px); border-top:1px solid rgba(243,240,234,.18); }
.ol-tap{ position:absolute; left:0; top:calc(-1 * clamp(44px,5vw,72px) - 1px); width:1px; height:clamp(44px,5vw,72px); background:var(--bronze); transform:scaleY(0); transform-origin:top; transition:transform .8s var(--ease) var(--d,0s); }
.ol-tap::after{ content:""; position:absolute; left:-4px; bottom:-5px; width:9px; height:9px; background:var(--charcoal); border:1px solid var(--bronze); }
.ol-item.in .ol-tap{ transform:scaleY(1); }
.ol-role{ display:block; font-size:.68rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--bronze-2); margin-bottom:clamp(18px,2vw,28px); font-variant-numeric:tabular-nums; }
.ol-item h3{ font-size:clamp(1.25rem,1.7vw,1.7rem); font-weight:400; letter-spacing:-.005em; margin-bottom:12px; }
.ol-item p{ color:var(--fg-soft); font-size:1.02rem; line-height:1.64; max-width:30ch; }
@media (max-width:1023px){ .ol-grid{ grid-template-columns:1fr 1fr; row-gap:48px; } .ol-grid .ol-item:nth-child(n+3) .ol-tap{ display:none; } }
@media (max-width:600px){ .ol-grid{ grid-template-columns:1fr; } .ol-tap{ display:none; } .ol-bus{ display:none; } .oneline{ padding-top:0; } }

/* ---------- 3x3 architecture devices ---------- */
.xs{ display:flex; align-items:center; gap:clamp(14px,2vw,28px); flex-wrap:wrap; padding:clamp(16px,1.8vw,24px) 0; border-bottom:1px solid var(--line); font-size:.7rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; }
.xs-k{ color:var(--ink); }
.xs-x{ color:var(--red); font-size:1rem; line-height:1; }
.xs-links{ display:flex; flex-wrap:wrap; gap:clamp(14px,2vw,32px); }
.xs-links a{ color:var(--stone); position:relative; padding:4px 0; transition:color var(--t-fast) var(--ease); }
.xs-links a::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:1.5px; background:var(--red); transform:scaleX(0); transform-origin:left; transition:transform var(--t-fast) var(--ease); }
.xs-links a:hover{ color:var(--ink); } .xs-links a:hover::after{ transform:scaleX(1); }
.who{ display:grid; grid-template-columns:repeat(3,1fr); gap:0 clamp(20px,3vw,56px); border-top:1px solid var(--line-strong); }
.who-item{ display:flex; align-items:baseline; gap:18px; padding:clamp(20px,2.4vw,34px) 0; border-bottom:1px solid var(--line); }
.who-item .n{ font-size:.72rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; flex:none; }
.who-item h3{ font-size:clamp(1.05rem,1.4vw,1.35rem); font-weight:400; letter-spacing:-.004em; }
@media (max-width:1023px){ .who{ grid-template-columns:1fr 1fr; } } @media (max-width:600px){ .who{ grid-template-columns:1fr; } }
.spec--4{ grid-template-columns:repeat(4,1fr); }
.spec--4 .spec-item{ min-height:0; padding:clamp(22px,2.2vw,30px) clamp(22px,2.2vw,32px) clamp(24px,2.4vw,32px); }
.spec--4 .spec-k{ margin-bottom:0; padding-bottom:clamp(14px,1.5vw,22px); }
.spec--4 .spec-item h3{ font-size:clamp(1.1rem,1.28vw,1.35rem); line-height:1.3; margin-bottom:10px; text-wrap:balance; }
.spec--4 .spec-item p{ line-height:1.6; }
@media (max-width:1023px){ .spec--4{ grid-template-columns:1fr 1fr; } } @media (max-width:600px){ .spec--4{ grid-template-columns:1fr; } }
.cross{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,1.6vw,26px); }
.cross-item{ display:block; padding:clamp(24px,2.6vw,38px) clamp(20px,2.2vw,32px); border:1px solid var(--line-strong); color:inherit; transition:border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease); }
.cross-item .n{ display:block; font-size:.7rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--red); margin-bottom:14px; }
.cross-item p{ color:var(--fg-soft); font-size:1.02rem; line-height:1.62; }
.cross-item:hover{ border-color:var(--ink); background:var(--paper-2); }
@media (max-width:767px){ .cross{ grid-template-columns:1fr; } }
.cta-band .reg{ margin-top:clamp(32px,4vw,56px); max-width:72ch; font-size:.8rem; line-height:1.6; color:rgba(243,240,234,.55); border-top:1px solid rgba(243,240,234,.16); padding-top:18px; }
.footer-reg{ font-size:.78rem; line-height:1.6; color:rgba(243,240,234,.5); max-width:92ch; padding-bottom:22px; }
.sky .lbl{ height:72px; }
.skyline::after{ bottom:72px; }

/* scope note (MECE boundary) */
.scope{ display:grid; grid-template-columns:clamp(72px,8vw,120px) minmax(0,1fr); gap:clamp(16px,2.4vw,40px); margin-top:clamp(36px,4.5vw,64px); padding-top:clamp(18px,2vw,28px); border-top:1px solid var(--line-strong); }
.scope-k{ font-size:.68rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--red); padding-top:.3em; }
.scope p{ font-size:1.02rem; line-height:1.66; color:var(--fg-soft); max-width:70ch; }
.sec--dark .scope{ border-top-color:rgba(243,240,234,.22); }
.why-item:last-child:nth-child(odd){ grid-column:1 / -1; }
.why-item:last-child:nth-child(odd) p{ max-width:60ch; }

/* home corridor v2: two-sided ledger through one centre line */
.corridor2{ position:relative; }
.corridor2::before{ content:""; position:absolute; left:50%; top:clamp(44px,5vw,72px); bottom:0; width:1px; background:var(--line-strong); transform:translateX(-50%); }
.c2-head, .c2-row{ position:relative; display:grid; grid-template-columns:minmax(0,1fr) clamp(96px,10vw,150px) minmax(0,1fr); align-items:center; gap:clamp(12px,2vw,32px); }
.c2-head{ padding-bottom:clamp(28px,3.4vw,48px); }
.c2-head .c2-l, .c2-head .c2-r{ font-size:clamp(1.25rem,1.9vw,1.9rem); font-weight:400; letter-spacing:-.006em; }
.c2-head .eyebrow{ display:block; margin-bottom:16px; }
.c2-mark{ display:flex; justify-content:center; align-items:center; background:var(--paper); padding:10px 0; position:relative; z-index:1; }
.c2-mark img{ height:22px; width:auto; }
.c2-row{ padding:clamp(18px,2.2vw,30px) 0; border-top:1px solid var(--line); }
.c2-row:last-child{ border-bottom:1px solid var(--line); }
.c2-l{ text-align:right; } .c2-r{ text-align:left; }
.c2-row .c2-l, .c2-row .c2-r{ font-size:clamp(1.05rem,1.5vw,1.45rem); letter-spacing:-.004em; }
.c2-node{ justify-self:center; width:9px; height:9px; background:var(--paper); border:1.5px solid var(--red); transform:rotate(45deg); position:relative; z-index:1; transition:background var(--t-fast) var(--ease); }
.c2-row:hover .c2-node{ background:var(--red); }
@media (max-width:767px){
  .corridor2::before{ display:none; }
  .c2-head, .c2-row{ grid-template-columns:1fr; gap:6px; }
  .c2-mark{ display:none; }
  .c2-l, .c2-head .c2-l{ text-align:left; }
  .c2-node{ display:none; }
  .c2-row .c2-r{ color:var(--fg-soft); font-size:.95rem; }
  .c2-row .c2-r::before{ content:"\2192  "; color:var(--red); }
  .c2-head .c2-r{ margin-top:18px; }
}
.c2-head .c2-l .eyebrow::after{ left:auto; right:0; }

/* =================== DOSSIER PAGE SYSTEM (sectors + solutions) =================== */
.dz-hero{ position:relative; min-height:86svh; display:flex; flex-direction:column; justify-content:flex-end; color:var(--paper); background:var(--charcoal); overflow:hidden; padding-top:84px; }
.dz-bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:saturate(.9) brightness(.82); }
.dz-hero::before{ content:""; position:absolute; inset:0; background:linear-gradient(to top, rgba(12,11,10,.92) 0%, rgba(12,11,10,.55) 45%, rgba(12,11,10,.15) 75%, rgba(12,11,10,.35) 100%); }
.dz-hero-in{ position:relative; z-index:1; padding-top:clamp(64px,10vh,120px); padding-bottom:clamp(40px,6vh,72px); }
.dz-hero .eyebrow{ color:rgba(243,240,234,.78); }
.dz-h1{ font-size:clamp(2.6rem,6.2vw,6.4rem); line-height:.98; letter-spacing:-.02em; font-weight:400; margin-top:26px; max-width:14ch; }
.dz-lead{ margin-top:clamp(22px,2.6vw,34px); max-width:58ch; font-size:clamp(1.05rem,1.35vw,1.3rem); line-height:1.6; color:rgba(243,240,234,.92); }
.dz-answers{ margin-top:18px; font-size:.78rem; letter-spacing:.06em; color:rgba(243,240,234,.6); max-width:60ch; padding-left:14px; border-left:2px solid var(--red); }
.dz-index{ position:relative; z-index:1; border-top:1px solid rgba(243,240,234,.2); background:rgba(12,11,10,.55); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.dz-index-in{ display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; padding-block:14px; font-size:.68rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; }
.dz-chapters{ display:flex; gap:clamp(14px,2vw,32px); flex-wrap:wrap; }
.dz-chapters a{ color:rgba(243,240,234,.78); display:inline-flex; gap:8px; align-items:baseline; transition:color var(--t-fast) var(--ease); }
.dz-chapters a .n{ color:var(--bronze-2); font-weight:400; }
.dz-chapters a:hover{ color:#fff; }
.dz-cross{ display:flex; gap:clamp(12px,1.6vw,24px); align-items:center; }
.dz-cross .x{ color:var(--red); font-size:1rem; }
.dz-cross a{ color:rgba(243,240,234,.78); } .dz-cross a:hover{ color:#fff; }
/* chapters */
.dz-ch{ padding-block:clamp(72px,9vw,140px); position:relative; }
.dz-ch--paper2{ background:var(--paper-2); }
.dz-ch--dark{ background:var(--charcoal); color:var(--paper); --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.68); --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34); }
.dz-ch--green{ background:var(--green); color:var(--paper); --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.68); --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34); }
.dz-ch--clinic{ background:#EAEDE7; }
.dz-grid{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,2.1fr); gap:clamp(32px,5vw,96px); align-items:start; }
.dz-aside{ position:sticky; top:124px; }
.dz-n{ display:block; font-size:clamp(2.4rem,4vw,3.6rem); line-height:1; color:var(--bronze); font-variant-numeric:tabular-nums; letter-spacing:-.03em; }
.dz-aside h2{ margin-top:18px; font-size:clamp(1.5rem,2.2vw,2.2rem); font-weight:400; letter-spacing:-.008em; }
.dz-aside p{ margin-top:12px; color:var(--fg-soft); font-size:1.02rem; line-height:1.6; max-width:28ch; }
.dz-aside::after{ content:""; display:block; width:28px; height:2px; background:var(--red); margin-top:22px; }
.dz-statement{ font-size:clamp(1.35rem,2.1vw,2.1rem); line-height:1.3; letter-spacing:-.008em; max-width:30ch; }
.dz-facts{ margin-top:clamp(32px,4vw,56px); border-top:1px solid var(--line-strong); }
.dz-fact{ display:grid; grid-template-columns:clamp(72px,8vw,110px) minmax(0,1fr); gap:clamp(16px,2vw,32px); padding:clamp(16px,2vw,24px) 0; border-bottom:1px solid var(--line); }
.dz-fact dt{ font-size:.68rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--red); padding-top:.35em; }
.dz-fact dd{ color:var(--fg-soft); line-height:1.62; max-width:58ch; }
/* typographic strip */
.dz-strip{ display:flex; flex-wrap:wrap; gap:clamp(12px,1.6vw,28px) 0; align-items:baseline; margin-top:clamp(20px,2.6vw,40px); }
.dz-word{ font-size:clamp(1.6rem,3.4vw,3.4rem); line-height:1.1; letter-spacing:-.014em; font-weight:400; }
.dz-word + .dz-word::before{ content:""; display:inline-block; width:9px; height:9px; background:var(--red); transform:rotate(45deg); margin:0 clamp(16px,2vw,34px); vertical-align:middle; }
.dz-strip--seq .dz-word + .dz-word::before{ width:22px; height:1.5px; transform:none; background:var(--red); margin-bottom:.35em; }
/* bounds */
.dz-bounds{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,72px); }
.dz-bounds h3{ font-size:.7rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--stone); padding-bottom:14px; border-bottom:1px solid var(--line-strong); margin-bottom:6px; }
.dz-bounds ul{ list-style:none; }
.dz-bounds li{ padding:14px 0 14px 28px; border-bottom:1px solid var(--line); position:relative; font-size:clamp(1rem,1.25vw,1.15rem); line-height:1.5; }
.dz-yes li::before{ content:""; position:absolute; left:0; top:22px; width:10px; height:10px; background:var(--red); }
.dz-no li{ color:var(--fg-soft); } .dz-no li::before{ content:""; position:absolute; left:0; top:26px; width:12px; height:1.5px; background:var(--stone); }
.dz-no li a{ display:inline-block; margin-left:10px; font-size:.68rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--red); border-bottom:1px solid currentColor; }
@media (max-width:767px){ .dz-bounds{ grid-template-columns:1fr; } }
/* engage */
.dz-engage-h{ font-size:clamp(1.8rem,3vw,3rem); line-height:1.12; letter-spacing:-.012em; font-weight:400; max-width:18ch; }
.dz-ways{ display:flex; flex-wrap:wrap; align-items:center; gap:clamp(12px,1.6vw,26px); margin-top:clamp(30px,3.4vw,48px); padding-top:22px; border-top:1px solid var(--line); font-size:.7rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; }
.dz-ways span{ color:var(--fg-soft); font-weight:400; }
.dz-ways a{ color:var(--fg); border-bottom:1px solid var(--red); padding-bottom:3px; }
.dz-reg{ margin-top:clamp(30px,3.4vw,48px); font-size:.8rem; line-height:1.6; color:var(--fg-soft); max-width:72ch; }
.dz-ch--green .btn, .dz-ch--dark .btn{ background:var(--paper); color:var(--ink); border-color:var(--paper); } .dz-ch--green .btn:hover, .dz-ch--dark .btn:hover{ background:var(--red); border-color:var(--red); color:#fff; }
.dz-ch--green .dz-n, .dz-ch--dark .dz-n{ color:var(--bronze-2); }
/* buildings: schedule */
.dz-schedule{ border-top:2px solid var(--ink); }
.dz-sch-h, .dz-sch-r{ display:grid; grid-template-columns:72px minmax(0,.9fr) minmax(0,1.4fr) minmax(0,.9fr); gap:clamp(14px,2vw,32px); }
.dz-sch-h{ padding:14px 0; font-size:.66rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--stone); border-bottom:1px solid var(--line-strong); }
.dz-sch-r{ padding:clamp(22px,2.6vw,36px) 0; border-bottom:1px solid var(--line); align-items:start; }
.dz-sch-r .n{ font-size:.78rem; letter-spacing:.16em; color:var(--bronze); font-variant-numeric:tabular-nums; padding-top:.4em; }
.dz-sch-r h3{ font-size:clamp(1.15rem,1.6vw,1.5rem); font-weight:400; }
.dz-sch-r p{ color:var(--fg-soft); font-size:1.02rem; line-height:1.62; }
.dz-sch-r .q{ font-size:.82rem; letter-spacing:.02em; color:var(--ink); padding-left:14px; border-left:2px solid var(--red); align-self:start; }
@media (max-width:767px){ .dz-sch-h{ display:none; } .dz-sch-r{ grid-template-columns:48px 1fr; } .dz-sch-r p, .dz-sch-r .q{ grid-column:2; } }
/* energy: chevron flow */
.dz-flow{ display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.dz-flow-item{ position:relative; padding:clamp(24px,2.6vw,40px) clamp(20px,2vw,30px) clamp(28px,3vw,44px) clamp(30px,3vw,46px); background:rgba(243,240,234,.05); border:1px solid rgba(243,240,234,.14); clip-path:polygon(0 0, calc(100% - 22px) 0, 100% 50%, calc(100% - 22px) 100%, 0 100%, 22px 50%); }
.dz-flow-item:first-child{ clip-path:polygon(0 0, calc(100% - 22px) 0, 100% 50%, calc(100% - 22px) 100%, 0 100%); padding-left:clamp(20px,2vw,30px); }
.dz-flow-item .v{ display:block; font-size:.7rem; font-weight:700; letter-spacing:.24em; text-transform:uppercase; color:var(--bronze-2); margin-bottom:clamp(22px,3vw,44px); }
.dz-flow-item h3{ font-size:clamp(1.1rem,1.5vw,1.45rem); font-weight:400; margin-bottom:10px; }
.dz-flow-item p{ color:var(--fg-soft); font-size:1rem; line-height:1.65; }
@media (max-width:1023px){ .dz-flow{ grid-template-columns:1fr 1fr; } } @media (max-width:600px){ .dz-flow{ grid-template-columns:1fr; } .dz-flow-item, .dz-flow-item:first-child{ clip-path:none; padding-left:clamp(20px,2vw,30px); } }
/* healthcare: tiles */
.dz-tiles{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(18px,2vw,32px); }
.dz-tile{ position:relative; overflow:hidden; background:var(--paper); border:1px solid var(--line-strong); padding:clamp(32px,3.6vw,60px); min-height:clamp(190px,18vw,260px); display:flex; flex-direction:column; justify-content:flex-end; }
.dz-tile .ghost{ position:absolute; right:14px; top:2px; font-size:clamp(5rem,9vw,9rem); line-height:1; font-weight:700; letter-spacing:-.05em; color:var(--green); opacity:.08; }
.dz-tile .plus{ position:absolute; left:clamp(32px,3.6vw,60px); top:clamp(24px,2.6vw,40px); color:var(--red); font-weight:700; font-size:1.3rem; line-height:1; }
.dz-tile h3{ position:relative; font-size:clamp(1.2rem,1.7vw,1.65rem); font-weight:400; line-height:1.3; margin-bottom:18px; max-width:22ch; }
.dz-tile p{ position:relative; color:var(--fg-soft); font-size:1.02rem; line-height:1.75; max-width:46ch; }
@media (max-width:767px){ .dz-tiles{ grid-template-columns:1fr; } }
/* capital: ledger + orbit */
.dz-ledger{ border-top:2px solid var(--ink); }
.dz-ledger-r{ display:grid; grid-template-columns:clamp(72px,9vw,130px) minmax(0,1fr); gap:clamp(16px,2.4vw,40px); padding:clamp(22px,2.6vw,36px) 0; border-bottom:1px solid var(--line); align-items:start; }
.dz-ledger-r .big{ font-size:clamp(2rem,3.4vw,3.2rem); line-height:1; color:var(--bronze); font-variant-numeric:tabular-nums; letter-spacing:-.03em; }
.dz-ledger-r h3{ font-size:clamp(1.2rem,1.7vw,1.6rem); font-weight:400; margin-bottom:8px; }
.dz-ledger-r p{ color:var(--fg-soft); line-height:1.62; max-width:64ch; }
/* development: route */
.dz-route{ position:relative; padding-left:clamp(28px,3vw,44px); }
.dz-route::before{ content:""; position:absolute; left:7px; top:12px; bottom:12px; width:1px; background:var(--line-strong); }
.dz-gate{ position:relative; padding:0 0 clamp(34px,4vw,56px) 0; }
.dz-gate:last-child{ padding-bottom:0; }
.dz-gate-mark{ position:absolute; left:calc(-1 * clamp(28px,3vw,44px) + 2px); top:6px; width:11px; height:11px; background:var(--paper-2); border:1.5px solid var(--red); transform:rotate(45deg); }
.dz-gate:last-child .dz-gate-mark{ background:var(--red); }
.dz-gate-k{ display:block; font-size:.68rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--red); margin-bottom:10px; }
.dz-gate h3{ font-size:clamp(1.2rem,1.7vw,1.6rem); font-weight:400; margin-bottom:8px; }
.dz-gate p{ color:var(--fg-soft); line-height:1.62; max-width:60ch; }
/* advisory: decision brief */
.dz-brief{ border-top:2px solid var(--ink); }
.dz-brief-h, .dz-brief-r{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.9fr) minmax(0,1.3fr); gap:clamp(14px,2vw,32px); }
.dz-brief-h{ padding:14px 0; font-size:.66rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--stone); border-bottom:1px solid var(--line-strong); }
.dz-brief-r{ padding:clamp(22px,2.6vw,36px) 0; border-bottom:1px solid var(--line); align-items:start; }
.dz-brief-r .d{ font-size:clamp(1.15rem,1.6vw,1.5rem); line-height:1.3; letter-spacing:-.006em; }
.dz-brief-r h3{ font-size:.72rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--bronze); padding-top:.5em; }
.dz-brief-r p{ color:var(--fg-soft); font-size:1.02rem; line-height:1.62; }
@media (max-width:767px){ .dz-brief-h{ display:none; } .dz-brief-r{ grid-template-columns:1fr; gap:8px; } }
/* responsive */
@media (max-width:1023px){ .dz-grid{ grid-template-columns:1fr; gap:28px; } .dz-aside{ position:static; } .dz-hero{ min-height:72svh; } }
@media (max-width:767px){ .dz-index-in{ font-size:.62rem; } .dz-cross{ display:none; } .dz-word{ font-size:clamp(1.4rem,7vw,2.2rem); } }

/* capital: orbit (computed positions) */
.dz-orbit{ position:relative; width:min(100%,640px); aspect-ratio:1/1; margin:clamp(10px,2vw,30px) auto 0; }
.dz-orbit-svg{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.dz-orbit-svg .ring{ fill:none; stroke:var(--line-strong); stroke-width:.35; }
.dz-orbit-svg .ring--outer{ stroke:var(--line); stroke-dasharray:1.2 1.2; }
.dz-orbit-svg line{ stroke:var(--line-strong); stroke-width:.3; }
.dz-orbit-core{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:34%; aspect-ratio:1/1; border-radius:50%; background:var(--ink); color:var(--paper); display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; font-size:clamp(.95rem,1.4vw,1.3rem); line-height:1.25; padding:6%; z-index:2; }
.dz-orbit-core .k{ font-size:.6rem; font-weight:700; letter-spacing:.24em; text-transform:uppercase; color:var(--bronze-2); margin-bottom:10px; }
.dz-orbit-node{ position:absolute; transform:translate(-50%,-50%); z-index:1; }
.dz-orbit-node > span{ display:block; width:clamp(118px,15vw,168px); text-align:center; font-size:clamp(.76rem,.95vw,.9rem); line-height:1.35; background:var(--paper); padding:10px 10px; border:1px solid var(--line-strong); }
.dz-ch--paper2 .dz-orbit-node > span{ background:var(--paper-2); }
@media (max-width:600px){ .dz-orbit{ display:none; } }

/* ---------- marketing pages: page-specific pieces ---------- */
.elev{ margin-top:clamp(36px,4.5vw,64px); border-top:3px solid var(--ink); border-bottom:3px solid var(--ink); }
.elev-band{ display:grid; grid-template-columns:clamp(72px,8vw,120px) minmax(0,1fr) minmax(0,1.1fr); gap:clamp(16px,2.4vw,40px); align-items:center; padding:clamp(24px,3vw,44px) 0; border-top:1px solid var(--line); }
.elev-band:first-child{ border-top:0; }
.elev-band:nth-child(odd){ background:linear-gradient(90deg, rgba(22,21,17,.025), transparent 60%); }
.elev-band .n{ font-size:clamp(2.2rem,4vw,3.8rem); line-height:1; font-weight:700; letter-spacing:-.03em; color:var(--bronze); opacity:.45; font-variant-numeric:tabular-nums; }
.elev-band h3{ font-size:clamp(1.4rem,2.2vw,2.2rem); font-weight:400; letter-spacing:-.01em; }
.elev-band p{ font-size:clamp(1rem,1.2vw,1.15rem); color:var(--fg-soft); line-height:1.6; max-width:40ch; }
.elev-band:hover .n{ opacity:1; color:var(--red); }
@media (max-width:767px){ .elev-band{ grid-template-columns:56px 1fr; } .elev-band p{ grid-column:2; } }
.pitch3{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(16px,2.4vw,40px); margin-bottom:clamp(40px,5vw,72px); }
.pitch3 h3{ font-size:clamp(1.5rem,2.4vw,2.4rem); font-weight:400; letter-spacing:-.01em; padding-top:18px; border-top:2px solid var(--ink); }
@media (max-width:767px){ .pitch3{ grid-template-columns:1fr; } }
.pull{ font-size:clamp(1.5rem,2.6vw,2.6rem); line-height:1.25; letter-spacing:-.01em; max-width:30ch; }
.pull--light{ color:var(--paper); }
.sec--green .dz-word, .sec--dark .dz-word{ color:var(--paper); }
.sec--green .dz-strip, .sec--paper2 .dz-strip{ margin-top:clamp(36px,4.5vw,64px); }
.orbit-grid{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(32px,5vw,96px); align-items:center; }
@media (max-width:1023px){ .orbit-grid{ grid-template-columns:1fr; } }
.pairs{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(14px,1.6vw,26px); margin-top:clamp(32px,4vw,56px); }
.pair{ background:var(--paper); border:1px solid var(--line); padding:clamp(26px,3vw,44px); }
.pair .n{ display:block; font-size:.72rem; letter-spacing:.2em; color:var(--bronze); margin-bottom:clamp(20px,2.6vw,40px); font-variant-numeric:tabular-nums; }
.pair h3{ font-size:clamp(1.3rem,1.9vw,1.9rem); font-weight:400; letter-spacing:-.008em; margin-bottom:10px; }
.pair p{ color:var(--fg-soft); line-height:1.6; max-width:40ch; }
@media (max-width:767px){ .pairs{ grid-template-columns:1fr; } }
.route-grid{ display:grid; grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr); gap:clamp(32px,5vw,96px); align-items:start; }
.route-grid .d2{ position:sticky; top:124px; }
@media (max-width:1023px){ .route-grid{ grid-template-columns:1fr; } .route-grid .d2{ position:static; } }
.dz-ways{ margin-top:clamp(30px,3.4vw,48px); }
.cta-band .dz-ways a{ color:var(--paper); }
.cta-band .dz-ways span{ color:rgba(243,240,234,.6); }

/* ---------- corridor v3: two worlds, one line ---------- */
.corridor3{ position:relative; }
.c3{ position:relative; display:grid; grid-template-columns:1fr 1fr; }
.c3-side{ position:relative; overflow:hidden; padding:clamp(64px,8vw,130px) clamp(24px,5vw,96px); color:var(--paper); --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.68); --line:rgba(243,240,234,.16); --line-strong:rgba(243,240,234,.34); }
.c3-world{ background:var(--charcoal); }
.c3-africa{ background:var(--green); }
.c3-map{ position:absolute; right:-8%; bottom:-14%; width:78%; opacity:.08; filter:invert(1); pointer-events:none; }
.c3-map--afr{ right:auto; left:-6%; bottom:-8%; width:60%; }
.c3-in{ position:relative; z-index:1; max-width:560px; }
.c3-world .c3-in{ margin-left:auto; padding-right:clamp(24px,4vw,72px); }
.c3-africa .c3-in{ padding-left:clamp(24px,4vw,72px); }
.c3-side .eyebrow{ color:var(--stone-2); }
.c3-side h3{ font-size:clamp(1.5rem,2.3vw,2.3rem); font-weight:400; letter-spacing:-.008em; margin-top:18px; }
.c3-list{ list-style:none; margin:clamp(28px,3.4vw,48px) 0 0; padding:0; border-top:1px solid var(--line-strong); }
.c3-list li{ display:flex; align-items:baseline; gap:18px; padding:clamp(14px,1.8vw,22px) 0; border-bottom:1px solid var(--line); font-size:clamp(1.05rem,1.5vw,1.45rem); letter-spacing:-.004em; }
.c3-list .n{ font-size:.7rem; letter-spacing:.2em; color:var(--bronze-2); font-variant-numeric:tabular-nums; flex:none; }
.c3-link{ position:absolute; left:50%; top:50%; width:0; height:0; z-index:3; }
.c3-line{ position:absolute; left:0; top:0; width:clamp(200px,26vw,420px); height:1px; transform:translate(-50%,-50%); background:repeating-linear-gradient(90deg, var(--red) 0 9px, transparent 9px 18px); animation:c3flow 1.6s linear infinite; }
.c3-line::before, .c3-line::after{ content:""; position:absolute; top:50%; width:9px; height:9px; border-top:1.5px solid var(--red); border-right:1.5px solid var(--red); }
.c3-line::after{ right:-1px; transform:translateY(-50%) rotate(45deg); }
.c3-line::before{ left:-1px; transform:translateY(-50%) rotate(-135deg); }
@keyframes c3flow{ to{ background-position:18px 0; } }
.c3-mark{ position:absolute; left:0; top:0; transform:translate(-50%,-50%); width:clamp(72px,7vw,96px); height:clamp(72px,7vw,96px); border-radius:50%; background:var(--paper); display:flex; align-items:center; justify-content:center; box-shadow:0 0 0 12px rgba(243,240,234,.07), 0 18px 40px rgba(0,0,0,.25); }
.c3-mark img{ height:15px; width:auto; }
.c3-stats{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(18px,2.4vw,36px) clamp(18px,2.4vw,40px); margin-top:clamp(28px,3.4vw,48px); }
.c3-stat{ border-top:1px solid var(--line-strong); padding-top:16px; }
.stat-n, .stat-w{ display:block; line-height:1; letter-spacing:-.03em; color:var(--paper); font-variant-numeric:tabular-nums; }
.stat-n{ font-size:clamp(2.4rem,4.4vw,4.4rem); }
.stat-w{ font-size:clamp(1.5rem,2.4vw,2.4rem); letter-spacing:-.01em; padding-top:.35em; }
.stat-l{ display:block; margin-top:12px; font-size:1.02rem; line-height:1.5; color:var(--fg-soft); max-width:24ch; }
@media (max-width:1023px){ .c3{ grid-template-columns:1fr; } .c3-link{ display:none; } .c3-world .c3-in, .c3-africa .c3-in{ margin-left:0; padding:0; max-width:none; } }
@media (max-width:600px){ .c3-stats{ grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce){ .c3-line{ animation:none; } }

.pitch3 p{ margin-top:14px; font-size:1.02rem; color:var(--fg-soft); line-height:1.62; max-width:34ch; }
.sec--paper2 .pair{ background:var(--paper); }
.sec--paper2 .dz-orbit-node > span{ background:var(--paper-2); }
.sec .dz-orbit-node > span{ background:var(--paper); }
.dz-flow{ margin-top:clamp(32px,4vw,56px); }
.dz-tiles{ margin-top:clamp(32px,4vw,56px); }
.dz-brief, .sheet, .cover, .plan, .why, .steps, .chain, .app-list, .memo, .rail{ margin-top:clamp(32px,4vw,56px); }
.route-grid .dz-route{ margin-top:0; }
/* reveal safety is in JS; CSS fallback for no-js */
html.no-js .reveal, html.no-js .reveal-img{ opacity:1; transform:none; }

.c3-list--rich li{ display:grid; grid-template-columns:auto minmax(0,1fr); align-items:start; gap:16px; }
.c3-list--rich .n{ padding-top:.5em; }
.c3-list--rich h4{ font-size:clamp(1.02rem,1.3vw,1.25rem); font-weight:400; letter-spacing:-.004em; }
.c3-list--rich p{ margin-top:6px; font-size:1rem; line-height:1.55; color:var(--fg-soft); max-width:44ch; }
.c3-foot{ padding-block:clamp(56px,7vw,100px) clamp(24px,3vw,40px); text-align:left; }
.c3-foot .d3{ max-width:16ch; }
.stat-w{ padding-top:.1em; }

.elev{ margin-top:clamp(28px,3.5vw,48px); }
.skyline, .wards, .dz-tiles, .cover, .why, .spec, .app-list{ margin-top:clamp(32px,4vw,56px); }
.sec--paper2 .dz-tile{ background:var(--paper); }

/* ---------- buildings: title-block hero + image-led application cards ---------- */
.bh{ position:relative; min-height:88svh; display:flex; align-items:flex-end; padding-top:84px; background:var(--charcoal); }
.bh-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:saturate(.92) brightness(.9); }
.bh::before{ content:""; position:absolute; inset:0; background:linear-gradient(to top, rgba(12,11,10,.35), rgba(12,11,10,0) 55%, rgba(12,11,10,.25)); }
.bh-wrap{ position:relative; z-index:1; }
.bh-block{ background:var(--paper); color:var(--ink); max-width:640px; padding:clamp(28px,3.2vw,48px) clamp(24px,3vw,44px) clamp(22px,2.4vw,32px); margin-bottom:calc(-1 * clamp(48px,7vw,110px)); box-shadow:0 30px 60px rgba(0,0,0,.18); }
.bh-block .eyebrow{ color:var(--stone); }
.bh-block .d1{ margin-top:22px; font-size:clamp(2.4rem,4.6vw,4.6rem); }
.bh-block .lead{ margin-top:22px; max-width:48ch; }
.bh-meta{ display:flex; flex-wrap:wrap; gap:clamp(14px,2vw,32px); margin-top:clamp(24px,2.8vw,40px); padding-top:16px; border-top:1px solid var(--line-strong); font-size:.64rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--stone); }
.bh-meta span:first-child{ color:var(--red); }
.bh-after{ padding-top:calc(clamp(48px,7vw,110px) + clamp(56px,7vw,100px)); }
.apps5{ display:grid; grid-template-columns:repeat(5,1fr); gap:clamp(14px,1.6vw,26px); margin-top:clamp(32px,4vw,56px); }
.app-card{ display:block; color:inherit; }
.app-media{ overflow:hidden; background:var(--paper-2); }
.app-media img{ width:100%; aspect-ratio:4/5; object-fit:cover; display:block; transition:transform 1s var(--ease); }
.app-card:hover .app-media img{ transform:scale(1.05); }
.app-card h3{ margin-top:16px; padding-top:14px; border-top:1px solid var(--line-strong); font-size:clamp(1.05rem,1.3vw,1.3rem); font-weight:400; transition:color var(--t-fast) var(--ease); }
.app-card:hover h3{ color:var(--red); }
.app-card p{ margin-top:8px; font-size:1rem; color:var(--fg-soft); line-height:1.55; }
@media (max-width:1023px){ .apps5{ grid-template-columns:repeat(3,1fr); } .bh{ min-height:70svh; } .bh-block{ margin-bottom:-40px; } .bh-after{ padding-top:calc(40px + 64px); } }
@media (max-width:600px){ .apps5{ grid-template-columns:1fr 1fr; } .bh-block{ padding:24px 20px 18px; } }

.sec--paper2 .dz-tiles{ margin-top:clamp(28px,3.5vw,48px); }
.sec .apps5, .sec .why, .sec .cover, .sec .elev{ }
.two-col .copy p + p{ margin-top:1.1em; }
.bh-block{ padding-bottom:clamp(28px,3.2vw,48px); }

/* ---------- Energy applications: image panels (.eapps) ---------- */
.eapps{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.4vw,22px); margin-top:clamp(32px,4vw,56px); }
.ea{ position:relative; display:block; color:#fff; overflow:hidden; background:var(--charcoal); isolation:isolate; }
.ea img{ width:100%; aspect-ratio:3/4; object-fit:cover; display:block; transition:transform 1.2s var(--ease); }
.ea::after{ content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(to top, rgba(22,21,17,.9) 0%, rgba(22,21,17,.5) 36%, rgba(22,21,17,0) 66%); }
.ea-k{ display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.ea-n{ font-size:.68rem; letter-spacing:.22em; color:var(--paper); opacity:.85; font-variant-numeric:tabular-nums; line-height:1; }
.ea-body{ position:absolute; left:0; right:0; bottom:0; z-index:2; padding:clamp(18px,1.8vw,28px); }
.ea-rule{ display:block; width:28px; height:1px; background:var(--red); transition:width .7s var(--ease); }
.ea h3{ font-size:clamp(1.1rem,1.35vw,1.4rem); font-weight:400; line-height:1.2; color:#fff; }
.ea p{ margin-top:10px; font-size:1rem; line-height:1.55; color:rgba(243,240,234,.78); max-width:30ch; }
.ea:hover img{ transform:scale(1.06); }
.ea:hover .ea-rule{ width:48px; }
@media (max-width:1023px){ .eapps{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .eapps{ grid-template-columns:1fr; } .ea img{ aspect-ratio:4/3; } }

/* ---------- Capital & Partnerships (.cp-*) ---------- */
.dz-sub{ margin-top:18px; max-width:62ch; font-size:clamp(.95rem,1.05vw,1.05rem); line-height:1.65; color:rgba(243,240,234,.72); }
.cp-edit{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:clamp(32px,5vw,96px); margin-top:clamp(32px,4vw,56px); align-items:start; }
.cp-edit .big{ font-size:clamp(1.5rem,2.5vw,2.4rem); line-height:1.25; letter-spacing:-.012em; font-weight:400; max-width:22ch; }
.cp-edit .copy p{ color:var(--fg-soft); max-width:52ch; }
.cp-edit .copy p + p{ margin-top:1.1em; }
.cp-focus{ display:grid; grid-template-columns:repeat(4,1fr); margin-top:clamp(32px,4vw,56px); border-top:1px solid var(--line-strong); border-bottom:1px solid var(--line-strong); }
.cp-focus > div{ padding:clamp(26px,2.8vw,44px) clamp(20px,2.2vw,36px) clamp(30px,3vw,48px); border-left:1px solid var(--line); }
.cp-focus > div:first-child{ border-left:0; padding-left:0; }
.cp-focus .n{ display:block; font-size:.72rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; margin-bottom:clamp(36px,4.5vw,72px); }
.cp-focus h3{ font-size:clamp(1.15rem,1.45vw,1.45rem); font-weight:400; line-height:1.25; margin-bottom:14px; max-width:16ch; }
.cp-focus p{ font-size:1.02rem; line-height:1.65; color:var(--fg-soft); max-width:30ch; }
.cp-model{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(36px,6vw,120px); align-items:center; }
.cp-model .copy{ margin-top:clamp(22px,2.6vw,36px); }
.cp-model .copy p{ color:rgba(243,240,234,.78); max-width:48ch; }
.cp-model .copy p + p{ margin-top:1.1em; }
.cp-chain{ display:flex; flex-direction:column; max-width:560px; margin-inline:auto; width:100%; }
.cp-tier{ border:1px solid rgba(243,240,234,.3); padding:clamp(18px,2vw,28px) clamp(20px,2.4vw,32px); text-align:center; color:var(--paper); }
.cp-tier .k{ display:block; font-size:.68rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:rgba(243,240,234,.62); }
.cp-tier .v{ display:block; margin-top:8px; font-size:clamp(.95rem,1.1vw,1.1rem); line-height:1.5; }
.cp-tier .v i{ font-style:normal; color:var(--bronze-2); padding:0 .45em; }
.cp-tier--core{ background:var(--paper); color:#161511; border-color:var(--paper); }
.cp-tier--core img{ height:22px; width:auto; display:block; margin:0 auto 12px; }
.cp-tier--core .k{ color:#8A857B; }
.cp-tier--core .v{ color:#55524B; }
.cp-tier--core .v i{ color:#A67F4F; }
.cp-link{ position:relative; height:clamp(26px,3vw,40px); width:1px; background:rgba(243,240,234,.45); margin:0 auto; }
.cp-link::after{ content:""; position:absolute; left:50%; bottom:0; width:7px; height:7px; border-right:1px solid rgba(243,240,234,.8); border-bottom:1px solid rgba(243,240,234,.8); transform:translate(-50%,0) rotate(45deg); }
.cp-tier--end{ border-style:dashed; }
@media (max-width:1023px){ .cp-model{ grid-template-columns:1fr; } .cp-chain{ margin-inline:0; } .cp-focus{ grid-template-columns:1fr 1fr; } .cp-focus > div:nth-child(3){ border-left:0; padding-left:0; } .cp-focus > div:nth-child(-n+2){ border-bottom:1px solid var(--line); } .cp-edit{ grid-template-columns:1fr; } }
@media (max-width:600px){ .cp-focus{ grid-template-columns:1fr; } .cp-focus > div{ border-left:0; padding-left:0; border-bottom:1px solid var(--line); } .cp-focus > div:last-child{ border-bottom:0; } }
.cp-who{ display:grid; grid-template-columns:repeat(5,1fr); gap:clamp(12px,1.4vw,22px); margin-top:clamp(32px,4vw,56px); }
.cp-who > div{ background:var(--paper); border:1px solid var(--line); padding:clamp(22px,2.2vw,32px) clamp(18px,1.8vw,26px) clamp(24px,2.4vw,34px); display:flex; flex-direction:column; }
.cp-who .n{ font-size:.68rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; margin-bottom:clamp(22px,2.6vw,40px); }
.cp-who h3{ font-size:clamp(1.02rem,1.15vw,1.2rem); font-weight:400; line-height:1.3; margin-bottom:12px; }
.cp-who p{ font-size:1rem; line-height:1.6; color:var(--fg-soft); }
@media (max-width:1100px){ .cp-who{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:700px){ .cp-who{ grid-template-columns:1fr 1fr; } }
@media (max-width:480px){ .cp-who{ grid-template-columns:1fr; } }
.cp-prin{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,4vw,64px) clamp(32px,5vw,96px); margin-top:clamp(32px,4vw,56px); }
.cp-prin > div{ border-left:2px solid var(--red); padding-left:clamp(18px,2vw,30px); }
.cp-prin h3{ font-size:clamp(1.25rem,1.7vw,1.7rem); font-weight:400; letter-spacing:-.006em; margin-bottom:12px; }
.cp-prin p{ color:var(--fg-soft); line-height:1.65; max-width:44ch; }
@media (max-width:700px){ .cp-prin{ grid-template-columns:1fr; } }

/* ---------- Capital & Partnerships: editorial cover hero ---------- */
.cp-hero{ background:var(--paper); padding-top:calc(84px + clamp(48px,7vw,110px)); }
.cp-h1{ font-size:clamp(2.8rem,7.2vw,7.8rem); line-height:.96; letter-spacing:-.025em; font-weight:400; margin-top:28px; }
.cp-hero-row{ display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(28px,5vw,96px); margin-top:clamp(32px,4.5vw,64px); padding-top:clamp(24px,3vw,40px); border-top:1px solid var(--line-strong); align-items:start; }
.cp-hero-lead{ font-size:clamp(1.2rem,1.8vw,1.75rem); line-height:1.35; letter-spacing:-.01em; max-width:26ch; }
.cp-hero-side p{ color:var(--fg-soft); max-width:50ch; line-height:1.7; }
.cp-hero-side .btn{ margin-top:24px; }
.cp-hero-fig{ margin:clamp(40px,6vw,96px) 0 0; height:clamp(320px,58vh,660px); background:var(--charcoal); }
.cp-hero-fig img{ width:100%; height:100%; object-fit:cover; object-position:center 40%; display:block; }
.cp-hero-cap{ display:flex; gap:14px; align-items:center; padding:14px 0 0; font-size:.68rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); }
.cp-hero-cap b{ color:var(--red); font-weight:700; }
@media (max-width:767px){ .cp-hero-row{ grid-template-columns:1fr; } .cp-hero{ padding-top:calc(72px + 40px); } }

/* ---------- LinkedIn icon links ---------- */
.li-link{ display:inline-flex; align-items:center; gap:10px; }
.li-link svg{ width:20px; height:20px; display:block; }
.contact-list .li-link svg{ width:22px; height:22px; }

/* ---------- Project Development (.pd-*) ---------- */
.pd-hero{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); min-height:86svh; padding-top:84px; background:var(--paper); }
.pd-hero-copy{ display:flex; flex-direction:column; justify-content:center; padding:clamp(48px,6vw,96px) clamp(32px,4vw,72px) clamp(48px,6vw,96px) var(--gutter); }
.pd-h1{ font-size:clamp(2.6rem,5.2vw,5.6rem); line-height:.98; letter-spacing:-.022em; font-weight:400; margin-top:26px; max-width:11ch; }
.pd-hero-copy .lead{ margin-top:clamp(22px,2.6vw,34px); max-width:32ch; }
.pd-hero-copy .sub{ margin-top:18px; max-width:54ch; color:var(--fg-soft); line-height:1.7; }
.pd-hero-copy .btn{ margin-top:30px; align-self:flex-start; }
.pd-hero-fig{ position:relative; margin:0; min-height:420px; background:var(--charcoal); }
.pd-hero-fig img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.pd-ticker{ display:grid; grid-template-columns:repeat(5,1fr); border-top:1px solid var(--line-strong); border-bottom:1px solid var(--line-strong); background:var(--paper-2); }
.pd-ticker span{ padding:16px clamp(18px,2vw,30px); font-size:.7rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); border-left:1px solid var(--line); display:flex; gap:12px; }
.pd-ticker span:first-child{ border-left:0; padding-left:var(--gutter); }
.pd-ticker b{ color:var(--bronze); font-weight:700; }
@media (max-width:1023px){ .pd-hero{ grid-template-columns:1fr; min-height:0; } .pd-hero-fig{ min-height:52vw; } .pd-ticker{ grid-template-columns:1fr 1fr; } .pd-ticker span{ border-top:1px solid var(--line); } .pd-ticker span:nth-child(odd){ border-left:0; padding-left:var(--gutter); } }
.pd-edit{ display:grid; grid-template-columns:repeat(12,1fr); gap:clamp(20px,2.4vw,40px); margin-top:clamp(32px,4vw,56px); }
.pd-edit .big{ grid-column:1 / span 8; font-size:clamp(1.6rem,3vw,3rem); line-height:1.18; letter-spacing:-.015em; font-weight:400; max-width:20ch; }
.pd-edit .copy{ grid-column:6 / span 7; margin-top:clamp(8px,2vw,32px); }
.pd-edit .copy p{ color:var(--fg-soft); max-width:56ch; }
.pd-edit .copy p + p{ margin-top:1.1em; }
@media (max-width:767px){ .pd-edit .big, .pd-edit .copy{ grid-column:1 / -1; } }
.pd-caps{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(14px,1.6vw,26px); margin-top:clamp(32px,4vw,56px); }
.pd-cap{ display:flex; flex-direction:column; background:var(--paper); border:1px solid var(--line); padding:clamp(24px,2.4vw,36px) clamp(20px,2vw,30px) clamp(22px,2.2vw,30px); }
.pd-cap .n{ font-size:.7rem; letter-spacing:.2em; color:var(--bronze); font-variant-numeric:tabular-nums; margin-bottom:clamp(22px,2.6vw,40px); }
.pd-cap h3{ font-size:clamp(1.1rem,1.4vw,1.4rem); font-weight:400; line-height:1.25; margin-bottom:12px; }
.pd-cap p{ font-size:1.02rem; line-height:1.65; color:var(--fg-soft); }
.pd-cap .aim{ margin-top:auto; padding-top:clamp(20px,2.4vw,34px); display:flex; flex-direction:column; gap:8px; font-size:.9rem; line-height:1.5; }
.pd-cap .aim b{ font-size:.64rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); }
.pd-cap .aim span{ border-top:1px solid var(--line-strong); padding-top:10px; }
@media (max-width:1023px){ .pd-caps{ grid-template-columns:1fr 1fr; } } @media (max-width:600px){ .pd-caps{ grid-template-columns:1fr; } }
.pd-path{ position:relative; margin-top:clamp(40px,5vw,72px); display:grid; grid-template-columns:repeat(5,1fr); gap:clamp(16px,2vw,32px); }
.pd-path::before{ content:""; position:absolute; left:0; right:0; top:22px; height:1px; background:rgba(243,240,234,.2); }
.pd-path::after{ content:""; position:absolute; left:0; top:22px; height:1px; width:0; background:var(--red); transition:width 2.2s var(--ease) .2s; }
.pd-path.in::after{ width:100%; }
.pd-stop{ position:relative; padding-top:52px; }
.pd-stop .dot{ position:absolute; left:0; top:16px; width:13px; height:13px; border-radius:50%; background:var(--charcoal); border:1px solid rgba(243,240,234,.6); z-index:1; }
.pd-stop:first-child .dot{ background:var(--red); border-color:var(--red); }
.pd-stop .n{ display:block; font-size:.68rem; letter-spacing:.22em; color:var(--bronze-2); font-variant-numeric:tabular-nums; margin-bottom:12px; }
.pd-stop h3{ font-size:clamp(1.25rem,1.8vw,1.8rem); font-weight:400; letter-spacing:-.008em; margin-bottom:12px; color:var(--paper); }
.pd-stop p{ font-size:1.02rem; line-height:1.62; color:rgba(243,240,234,.72); max-width:26ch; }
.pd-path-note{ margin-top:clamp(36px,4.5vw,64px); padding-top:clamp(22px,2.6vw,36px); border-top:1px solid rgba(243,240,234,.16); font-size:clamp(1.1rem,1.5vw,1.5rem); line-height:1.35; max-width:40ch; color:var(--paper); }
@media (max-width:1023px){ .pd-path{ grid-template-columns:1fr; gap:0; } .pd-path::before{ left:6px; right:auto; top:0; bottom:0; width:1px; height:auto; } .pd-path::after{ display:none; } .pd-stop{ padding:0 0 32px 40px; } .pd-stop .dot{ top:4px; } }
.pd-sectors{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(16px,2vw,32px); margin-top:clamp(32px,4vw,56px); }
.pd-sec{ display:block; color:inherit; }
.pd-sec figure{ margin:0; overflow:hidden; background:var(--paper-2); }
.pd-sec img{ width:100%; aspect-ratio:4/3; object-fit:cover; display:block; transition:transform 1.1s var(--ease); }
.pd-sec:hover img{ transform:scale(1.05); }
.pd-sec h3{ margin-top:20px; font-size:clamp(1.3rem,1.8vw,1.8rem); font-weight:400; letter-spacing:-.008em; }
.pd-sec p{ margin-top:10px; color:var(--fg-soft); line-height:1.62; max-width:40ch; font-size:1.02rem; }
.pd-sec .more{ display:inline-flex; align-items:center; gap:10px; margin-top:16px; font-size:.72rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--ink); transition:color var(--t-fast) var(--ease); }
.pd-sec .more .arr{ width:20px; height:10px; position:relative; }
.pd-sec .more .arr::before{ content:""; position:absolute; left:0; right:4px; top:50%; height:1.5px; background:currentColor; }
.pd-sec .more .arr::after{ content:""; position:absolute; right:2px; top:50%; width:7px; height:7px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform:translateY(-50%) rotate(45deg); }
.pd-sec:hover .more{ color:var(--red); }
@media (max-width:767px){ .pd-sectors{ grid-template-columns:1fr; } }
.pd-prin{ margin-top:clamp(32px,4vw,56px); border-top:1px solid var(--line-strong); }
.pd-prin > div{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(20px,4vw,80px); padding:clamp(22px,2.6vw,36px) 0; border-bottom:1px solid var(--line); align-items:baseline; }
.pd-prin h3{ font-size:clamp(1.3rem,1.9vw,1.9rem); font-weight:400; letter-spacing:-.008em; }
.pd-prin p{ color:var(--fg-soft); line-height:1.65; max-width:56ch; }
@media (max-width:600px){ .pd-prin > div{ grid-template-columns:1fr; gap:10px; } }

/* ---------- Advisory (.ad-*) ---------- */
.ad-hero{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); min-height:82svh; padding-top:84px; background:var(--charcoal); color:var(--paper); }
.ad-hero-copy{ display:flex; flex-direction:column; justify-content:flex-end; padding:clamp(48px,6vw,96px) clamp(32px,4vw,72px) clamp(48px,6vw,80px) var(--gutter); }
.ad-hero .eyebrow{ color:rgba(243,240,234,.7); }
.ad-h1{ font-size:clamp(3.4rem,9vw,10rem); line-height:.92; letter-spacing:-.03em; font-weight:400; margin-top:24px; }
.ad-hero-copy .lead{ margin-top:clamp(22px,2.6vw,34px); max-width:36ch; color:rgba(243,240,234,.9); }
.ad-hero-copy .btn{ margin-top:30px; align-self:flex-start; }
.ad-hero-fig{ position:relative; margin:0; min-height:420px; overflow:hidden; background:var(--green); }
.ad-hero-fig img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; filter:grayscale(1) contrast(1.08) brightness(.9); }
.ad-hero-fig::after{ content:""; position:absolute; inset:0; background:var(--green); mix-blend-mode:multiply; opacity:.78; }
.ad-hero-fig::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:1px; background:var(--red); z-index:1; }
@media (max-width:1023px){ .ad-hero{ grid-template-columns:1fr; min-height:0; } .ad-hero-fig{ min-height:48vw; order:-1; } }
.ad-over{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,72px); margin-top:clamp(32px,4vw,56px); }
.ad-over p{ color:var(--fg-soft); line-height:1.75; font-size:clamp(1.02rem,1.1vw,1.15rem); max-width:50ch; }
.ad-over p:first-child{ color:var(--fg); font-size:clamp(1.15rem,1.5vw,1.5rem); line-height:1.45; }
@media (max-width:767px){ .ad-over{ grid-template-columns:1fr; } }
.ad-caps{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:rgba(243,240,234,.18); border:1px solid rgba(243,240,234,.18); margin-top:clamp(40px,5vw,72px); }
.ad-cap{ position:relative; background:var(--charcoal); padding:clamp(24px,2.4vw,36px) clamp(22px,2.4vw,36px) clamp(26px,2.6vw,40px); display:flex; flex-direction:column; min-height:0; overflow:hidden; transition:background .6s var(--ease); }
.ad-cap::before{ content:""; position:absolute; left:0; top:0; height:3px; width:0; background:var(--red); transition:width .7s var(--ease); }
.ad-cap:hover{ background:var(--green); }
.ad-cap:hover::before{ width:100%; }
.ad-cap .k{ display:inline-flex; align-items:center; gap:12px; font-size:.68rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; color:var(--bronze-2); margin-bottom:0; padding-bottom:clamp(22px,2.6vw,40px); }
.ad-cap .k::before{ content:""; width:22px; height:1px; background:var(--bronze-2); transition:width .5s var(--ease), background .5s var(--ease); }
.ad-cap:hover .k::before{ width:40px; background:var(--red); }
.ad-cap h3{ margin-top:0; font-size:clamp(1.35rem,1.9vw,1.95rem); font-weight:400; line-height:1.15; letter-spacing:-.01em; color:var(--paper); max-width:14ch; }
.ad-cap p{ margin-top:14px; font-size:1.02rem; line-height:1.62; color:rgba(243,240,234,.7); max-width:34ch; }
@media (max-width:1023px){ .ad-caps{ grid-template-columns:1fr 1fr; } } @media (max-width:600px){ .ad-caps{ grid-template-columns:1fr; } .ad-cap{ min-height:0; } }
.ad-steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(20px,2.6vw,44px); margin-top:clamp(32px,4vw,56px); }
.ad-step .big{ display:block; font-size:clamp(2.6rem,4.6vw,4.8rem); line-height:1; letter-spacing:-.03em; color:var(--bronze); font-variant-numeric:tabular-nums; }
.ad-step h3{ margin-top:18px; padding-top:16px; border-top:1px solid var(--line-strong); font-size:clamp(1.2rem,1.6vw,1.6rem); font-weight:400; }
.ad-step p{ margin-top:10px; color:var(--fg-soft); line-height:1.62; max-width:28ch; font-size:1.02rem; }
@media (max-width:1023px){ .ad-steps{ grid-template-columns:1fr 1fr; } } @media (max-width:520px){ .ad-steps{ grid-template-columns:1fr; } }
.ad-intro{ margin-top:22px; max-width:60ch; color:var(--fg-soft); font-size:clamp(1.02rem,1.1vw,1.15rem); line-height:1.7; }
.ad-who{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(32px,6vw,120px); align-items:start; }
.ad-who-copy{ position:sticky; top:120px; }
.ad-who-copy .ad-intro{ margin-top:22px; }
.ad-who-list{ border-top:1px solid var(--line-strong); }
.ad-row{ position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.9fr); gap:clamp(16px,2.6vw,48px); align-items:baseline; padding:clamp(22px,2.6vw,36px) 0 clamp(22px,2.6vw,36px) clamp(18px,2vw,32px); border-bottom:1px solid var(--line); }
.ad-row::before{ content:""; position:absolute; left:0; top:50%; width:0; height:2px; background:var(--red); transform:translateY(-50%); transition:width .45s var(--ease); }
.ad-row:hover::before{ width:12px; }
.ad-row .t{ font-size:clamp(1.3rem,1.9vw,1.9rem); line-height:1.2; letter-spacing:-.01em; color:var(--ink); transition:color var(--t-fast) var(--ease); }
.ad-row:hover .t{ color:var(--red); }
.ad-row .d{ font-size:1.02rem; line-height:1.55; color:var(--fg-soft); }
@media (max-width:900px){ .ad-who{ grid-template-columns:1fr; } .ad-who-copy{ position:static; } .ad-row{ grid-template-columns:1fr; gap:6px; } }

/* ---------- Home hero: video slides ---------- */
.hero-slides .slide video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; opacity:0; transition:opacity .9s var(--ease); }
.hero--v2 .hero-slides .slide video{ filter:saturate(.92) contrast(1.03) brightness(.9); }
.hero-slides .slide.is-playing video{ opacity:1; }
.hero-slides .slide.is-playing img{ animation:none; }
@media (prefers-reduced-motion:reduce){ .hero-slides .slide video{ display:none; } }

/* ---------- Home corridor: why Africa points ---------- */
.c3-points{ list-style:none; margin:clamp(28px,3.4vw,48px) 0 0; padding:0; border-top:1px solid var(--line-strong); }
.c3-points li{ display:grid; grid-template-columns:minmax(96px,.3fr) minmax(0,1fr); gap:clamp(14px,2vw,28px); padding:clamp(14px,1.6vw,22px) 0; border-bottom:1px solid var(--line); }
.c3-points b{ font-size:.68rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--bronze-2); padding-top:.35em; }
.c3-points span{ font-size:1.02rem; line-height:1.6; color:rgba(243,240,234,.8); max-width:46ch; }

/* ---------- Resources: polish ---------- */
.rs-hero{ background:var(--charcoal); color:var(--paper); position:relative; overflow:hidden; padding-top:calc(84px + clamp(48px,7vw,110px)); padding-bottom:clamp(56px,7vw,110px); }
.rs-hero .eyebrow{ color:rgba(243,240,234,.7); }
.rs-hero .d1{ color:var(--paper); }
.rs-hero .d1{ margin-top:26px; }
.rs-hero .lead{ margin-top:clamp(24px,2.8vw,40px); color:rgba(243,240,234,.82); max-width:52ch; }
.rs-map{ position:absolute; right:clamp(-60px,-3vw,-20px); top:50%; transform:translateY(-50%); height:135%; width:auto; opacity:.22; pointer-events:none; filter:invert(1); }
.rs-meta{ display:flex; flex-wrap:wrap; gap:clamp(24px,4vw,64px); margin-top:clamp(32px,4vw,56px); padding-top:clamp(20px,2.4vw,32px); border-top:1px solid rgba(243,240,234,.2); }
.rs-meta div{ display:flex; flex-direction:column; gap:6px; }
.rs-meta .k{ font-size:.66rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:rgba(243,240,234,.55); }
.rs-meta .v{ font-size:clamp(1.5rem,2.4vw,2.4rem); line-height:1; letter-spacing:-.02em; }
.rs-inst{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line-strong); border:1px solid var(--line-strong); }
.rs-inst > div{ background:var(--paper); padding:clamp(24px,2.6vw,40px) clamp(20px,2.2vw,32px) clamp(26px,2.8vw,44px); display:flex; flex-direction:column; position:relative; transition:background .5s var(--ease); }
.rs-inst > div:hover{ background:var(--paper-2); }
.rs-inst .k{ font-size:.66rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--bronze); margin-bottom:clamp(22px,2.6vw,40px); }
.rs-inst h3{ font-size:clamp(1.15rem,1.5vw,1.5rem); font-weight:400; line-height:1.25; }
.rs-inst h3 a{ color:inherit; transition:color var(--t-fast) var(--ease); }
.rs-inst h3 a:hover{ color:var(--red); }
.rs-inst p{ margin-top:10px; font-size:1.02rem; line-height:1.6; color:var(--fg-soft); max-width:34ch; }
.rs-inst .ext{ font-size:.7em; vertical-align:super; margin-left:4px; color:var(--bronze); }
@media (max-width:1023px){ .rs-inst{ grid-template-columns:1fr 1fr; } } @media (max-width:600px){ .rs-inst{ grid-template-columns:1fr; } }
.rs-regions{ display:flex; flex-wrap:wrap; gap:10px; margin-top:clamp(22px,2.6vw,36px); }
.rs-regions a{ padding:10px 18px; border:1px solid var(--line-strong); border-radius:999px; font-size:.74rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--fg-soft); transition:all .4s var(--ease); }
.rs-regions a:hover{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
#africa-data .rg-block h3{ font-size:clamp(1.3rem,1.9vw,1.9rem); font-weight:400; letter-spacing:-.008em; padding-top:clamp(28px,3.4vw,48px); display:flex; align-items:baseline; gap:16px; }
#africa-data .rg-block h3::before{ content:""; width:28px; height:2px; background:var(--red); flex:none; transform:translateY(-.35em); }

/* ---------- Home hero: location stamp ---------- */
.hero-loc{ position:absolute; z-index:3; right:var(--gutter); top:calc(84px + 26px); display:flex; align-items:center; gap:14px; font-size:.68rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:rgba(243,240,234,.88); text-shadow:0 1px 8px rgba(10,10,9,.5); }
.hero-loc::before{ content:""; order:2; width:28px; height:1px; background:var(--red); }
.hero-loc-t{ order:3; display:inline-block; transition:opacity .5s var(--ease), transform .5s var(--ease); }
.hero-loc.is-swapping .hero-loc-t{ opacity:0; transform:translateY(6px); }
@media (max-width:767px){ .hero-loc{ top:auto; bottom:18px; right:auto; left:var(--gutter); } }

/* ---------- Home corridor: why Africa strip (full width under the split) ---------- */
.c3-why{ position:relative; background:var(--green); color:var(--paper); border-top:1px solid rgba(243,240,234,.16); }
.c3-why-in{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; padding-block:clamp(36px,4.5vw,64px); }
.c3-why-in > div{ padding:0 clamp(18px,2.4vw,40px); border-left:1px solid rgba(243,240,234,.16); }
.c3-why-in > div:first-child{ border-left:0; padding-left:0; }
.c3-why b{ display:block; font-size:.68rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--bronze-2); margin-bottom:14px; }
.c3-why p{ font-size:1.02rem; line-height:1.62; color:rgba(243,240,234,.8); max-width:30ch; }
@media (max-width:900px){ .c3-why-in{ grid-template-columns:1fr 1fr; row-gap:28px; } .c3-why-in > div:nth-child(3){ border-left:0; padding-left:0; } }
@media (max-width:520px){ .c3-why-in{ grid-template-columns:1fr; } .c3-why-in > div{ border-left:0; padding-left:0; } }

/* ---------- 34-inch ultrawide and 5K ---------- */
@media (min-width:3000px){
  :root{ --w-max:2600px; --gutter:clamp(64px,3vw,120px); }
  .lead, .body-m, .hero-sub, .folio-card p, .prin p, .sector-index .si-d, .page-hero .lead, .footer-desc, .cta-band .body-m, .sec-head p, .cp-edit .copy p, .cp-edit .big, .cp-hero-side p, .cp-hero-lead, .cp-model .copy p, .cp-focus p, .cp-who p, .cp-prin p, .pd-edit .big, .pd-edit .copy p, .pd-hero-copy .sub, .pd-hero-copy .lead, .pd-cap p, .pd-stop p, .pd-path-note, .pd-sec p, .pd-prin p, .ad-over p, .ad-intro, .ad-cap p, .ad-step p, .ad-hero-copy .lead, .ea p, .dz-tile p, .c3-why p, .spec-item p, .cover p, .why-item p, .app-card p, .pair p, .dz-flow-item p, .rs-inst p, .rs-hero .lead, .dz-lead, .dz-sub, .bh-block .lead, .bh-block p, .stat-l, .elev p, .dz-flow-item p, .contact-info p, .who-item p{ max-width:92ch !important; }
  .d2, .sec-head .d2, .cta-band .d2{ max-width:30ch !important; }
}
.flow-sec{ padding-block:clamp(64px,7vw,120px); }
.flow-sec .sec-head{ margin-bottom:clamp(20px,2.6vw,40px); }

/* ---------- Built Environment hero on phones: image band, then card ---------- */
@media (max-width:600px){
  .bh{ min-height:0; display:block; padding-top:72px; }
  .bh-img{ position:relative; display:block; height:64vw; min-height:240px; }
  .bh::before{ display:none; }
  .bh-wrap{ padding-inline:0; }
  .bh-block{ max-width:none; margin:0; box-shadow:none; padding:28px var(--gutter) 30px; }
  .bh-block .d1{ margin-top:18px; font-size:clamp(2.1rem,9.6vw,2.7rem); }
  .bh-block .lead{ margin-top:16px; font-size:1.05rem; }
  .bh-block .body-m{ font-size:.98rem; }
  .bh-block .cta-actions{ margin-top:24px !important; }
  .bh-block .btn{ width:100%; justify-content:space-between; padding:0 20px; font-size:.72rem; letter-spacing:.12em; white-space:nowrap; }
  .bh-after{ padding-top:clamp(40px,8vw,56px); }
}

/* ---------- mobile menu: cleaner list ---------- */
.menu{ justify-content:flex-start; padding:calc(72px + 4vh) var(--gutter) 5vh; overflow:auto; }
.menu-links > a{ font-size:clamp(1.45rem,5.6vw,1.9rem); line-height:1.2; padding:16px 0; gap:0; border-bottom:1px solid rgba(243,240,234,.12); }
.menu-links > a.menu-head{ font-size:.64rem; font-weight:700; letter-spacing:.24em; text-transform:uppercase; color:rgba(243,240,234,.5); padding:30px 0 8px; border-bottom:0; cursor:default; }
.menu-sub{ display:block; padding:0; border-bottom:0; }
.menu-sub a{ display:flex; align-items:center; justify-content:space-between; font-size:clamp(1.15rem,4.6vw,1.45rem); font-weight:400; letter-spacing:-.005em; text-transform:none; color:rgba(243,240,234,.9); padding:12px 0; border-bottom:1px solid rgba(243,240,234,.12); line-height:1.25; }
.menu-sub a::after{ content:""; width:8px; height:8px; border-top:1px solid rgba(243,240,234,.45); border-right:1px solid rgba(243,240,234,.45); transform:rotate(45deg); flex:none; }
.menu-sub a[aria-current="page"]{ color:var(--red); }
.menu-foot{ margin-top:34px; }
.menu-foot .btn{ width:100%; }
.menu-meta{ margin-top:18px; font-size:.72rem; }

/* ---------- numbering discipline: numerals only for real sequences ---------- */
/* Unordered sets lose the numeral and take the house rule instead. */
.sector-index .si-n,
.c3-list .n,
.why-item .why-n,
.cover .n,
.elev-band .n,
.cp-focus .n, .cp-who .n,
.pd-cap .n,
.spec--4 .spec-k{
  font-size:0 !important; letter-spacing:0 !important; line-height:0 !important;
  -webkit-text-stroke:0 !important; color:transparent !important;
}
.sector-index .si-n::before,
.c3-list .n::before,
.why-item .why-n::before,
.cover .n::before,
.elev-band .n::before,
.cp-focus .n::before, .cp-who .n::before,
.pd-cap .n::before,
.spec--4 .spec-k::before{
  content:""; display:block; width:22px; height:1px; background:var(--red);
}
.why-item .why-n::before, .cover .n::before, .cp-focus .n::before, .cp-who .n::before,
.pd-cap .n::before, .spec--4 .spec-k::before{ margin-bottom:clamp(14px,1.6vw,22px); }
.sector-index .si-n::before{ margin-top:1.1em; }
.c3-list .n::before{ margin-top:.65em; }
.elev-band .n::before{ margin-top:.5em; }
/* Energy application panels already carry the rule inside .ea-k */
.ea-n{ display:none; }
/* Healthcare focus tiles: drop the oversized ghost numerals */
.dz-tile .ghost{ display:none; }


/* Toronto hero: keep the full CN Tower in frame on wide windows */
.hero-slides .slide[data-city="Toronto"] img,
.hero-slides .slide[data-city="Toronto"] video{ object-position:50% 0%; }

/* Solution cards: one consistent, muted editorial grade across the row */
.folio--3 .folio-media img{ filter:saturate(.82) contrast(1.04) brightness(.98); }

/* ============ BOLD PASS (home page, scoped by body.bold) ============ */
/* 1. Headlines carry weight. */
.bold .d2{ font-weight:700; font-size:clamp(2.3rem,5vw,5.4rem); line-height:1.02; letter-spacing:-.022em; }
.bold .d3{ font-weight:700; font-size:clamp(1.9rem,3.4vw,3.4rem); line-height:1.1; letter-spacing:-.016em; }
.bold .geo-card h3{ font-weight:700; letter-spacing:-.012em; }
.bold .sector-index .si-t{ font-weight:700; font-size:clamp(2.2rem,4.2vw,4rem); letter-spacing:-.02em; }
.bold .folio-body h3{ font-weight:700; font-size:clamp(1.3rem,1.8vw,2rem); letter-spacing:-.012em; }
.bold .c3-side h3{ font-weight:700; }
.bold .prop-copy .lead{ font-weight:700; }
/* 2. Photography a notch darker and harder, as one set. */
.bold .folio-media img, .bold .sx-media img, .bold .prop-media img{ filter:saturate(.74) contrast(1.1) brightness(.92); }
/* 3. The red block. One per page, at the close. */
.sec--red{
  background:var(--red); color:var(--paper);
  --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.86); --line:rgba(243,240,234,.24); --line-strong:rgba(243,240,234,.44); --stone-2:rgba(243,240,234,.74);
}
.sec--red .eyebrow{ color:rgba(243,240,234,.8); }
.sec--red .eyebrow::after{ background:var(--paper); }
.sec--red .body-m{ color:rgba(243,240,234,.9); }
.sec--red .btn{ background:var(--paper); color:var(--red); border-color:var(--paper); }
.sec--red .btn:hover{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.sec--red .btn--ghost{ background:transparent; color:var(--paper); border-color:rgba(243,240,234,.62); }
.sec--red .btn--ghost:hover{ background:var(--paper); color:var(--red); border-color:var(--paper); }
.sec--red.grain::before, .sec--red.grain::after{ opacity:.35; }
.sec--red ::selection{ background:var(--ink); color:#fff; }
/* header over the red block: tint follows the section, wordmark goes white */
.header.is-red .brand img{ filter:brightness(0) invert(1); }
.header.is-red{ border-bottom-color:rgba(255,255,255,.18); }

/* home: light band between the green panel and the red close, so red never sits on green */
.bold .c3-why{ background:var(--paper-2); color:var(--ink); border-top:0; }
.bold .c3-why-in > div{ border-left-color:var(--line-strong); }
.bold .c3-why b{ color:var(--bronze); }
.bold .c3-why p{ color:var(--fg-soft); }

/* home: positioning strip inverted. Charcoal cards on the light band, maps in brand red. */
.bold .geo-card{
  background:var(--charcoal); color:var(--paper); --fg:#F3F0EA; --fg-soft:rgba(243,240,234,.72);
  position:relative; overflow:hidden;
  transition:transform .55s var(--ease), box-shadow .55s var(--ease);
}
.bold .geo-card:hover{ transform:translateY(-4px); box-shadow:0 26px 48px rgba(22,21,17,.18); }
.bold .geo-card h3{ color:var(--paper); }
.bold .geo-card p{ color:rgba(243,240,234,.72); }
.bold .geo-mark{
  display:block; width:92px; height:72px; margin-bottom:clamp(28px,3vw,44px);
  background:var(--red);
  -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat;
  -webkit-mask-position:left center; mask-position:left center;
  -webkit-mask-size:contain; mask-size:contain;
}
.bold .geo-mark--wide{ width:150px; }
/* the legacy icon rule inverts/tints the old grey images; masked marks must take the red as-is */
.bold .geo-mark{ filter:none; opacity:1; mix-blend-mode:normal; }

/* bold pass, site-wide: hero headings carry weight; card photography graded as one set */
.bold .d1, .bold .ad-h1, .bold .pd-h1, .bold .dz-h1, .bold .cp-h1{ font-weight:700; letter-spacing:-.024em; }
.bold .app-media img, .bold .ea img, .bold .pd-sec img{ filter:saturate(.74) contrast(1.1) brightness(.92); }

/* over the red band the active nav item must not be red on red */
.header.is-red .nav a[aria-current="page"],
.header.is-red .nav .has-sub > a[aria-current="page"]{ color:var(--paper); }
.header.is-red .nav a[aria-current="page"]::after,
.header.is-red .nav a[aria-current="page"]::before{ background:var(--paper); border-color:var(--paper); }
.header.is-red .nav a:hover{ color:var(--paper); }
.header.is-red .nav a:hover::after{ background:var(--paper); }
.header.is-red .header-cta .btn{ background:var(--paper); color:var(--red); border-color:var(--paper); }
.header.is-red .header-cta .btn:hover{ background:var(--ink); color:var(--paper); border-color:var(--ink); }

/* ============ PER-PAGE BOLD MOVES (one attitude, eight expressions) ============ */

/* Built Environment: the opportunity is a charcoal statement under the paper title card; the four
   coverage bands carry display-scale titles. */
.p-buildings .bh-after .d3{ font-size:clamp(2.2rem,4.4vw,4.6rem); max-width:12ch !important; }
.p-buildings .elev-band h3{ font-size:clamp(1.8rem,3vw,3.1rem); font-weight:700; letter-spacing:-.02em; }
.p-buildings .elev-band p{ font-size:1.05rem; }

/* Energy: the value chain reads by its verbs. Generate / Store / Distribute & Protect / Optimize at
   display scale, the category names demoted to kickers. */
.p-energy .dz-flow-item .v{ font-size:clamp(1.7rem,3vw,3rem); font-weight:700; letter-spacing:-.022em; text-transform:none; color:var(--paper); line-height:1; margin-bottom:clamp(18px,2.4vw,34px); }
.p-energy .dz-flow-item h3{ font-size:.74rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--bronze-2); margin-bottom:12px; }
.p-energy .cta-band .d2{ color:var(--red); }

/* Healthcare: the green page. Focus tiles sit as paper cards on the green ground. */
.p-healthcare .sec--green .dz-tile{ background:var(--paper); border-color:transparent; color:var(--ink); }
.p-healthcare .sec--green .dz-tile h3{ color:var(--ink); font-weight:700; }
.p-healthcare .sec--green .dz-tile p{ color:#52504A; }
.p-healthcare .sec--green .dz-tile .plus{ color:var(--red); }

/* Capital & Partnerships: the counterparties row inverts to charcoal cards. */
.p-capital .cp-who > div{ background:var(--charcoal); color:var(--paper); border-color:transparent; }
.p-capital .cp-who h3{ color:var(--paper); font-weight:700; }
.p-capital .cp-who p{ color:rgba(243,240,234,.72); }
.p-capital .cp-who .n::before{ background:var(--red); }

/* Project Development: the five gates carry oversized bronze numerals. A sequence, so numbers stay. */
.p-development .pd-stop .n{ font-size:clamp(3rem,6vw,6.4rem); font-weight:700; letter-spacing:-.035em; line-height:.9; color:var(--red); margin-bottom:14px; }
.p-development .pd-stop h3{ font-weight:700; font-size:clamp(1.3rem,1.9vw,1.9rem); }

/* Advisory: the four-step approach reads as four bold words. */
.p-advisory .ad-step .big{ font-weight:700; color:var(--red); }
.p-advisory .ad-step h3{ font-size:clamp(1.7rem,2.6vw,2.6rem); font-weight:700; letter-spacing:-.02em; border-top-width:2px; }

/* About: mission and vision at statement scale. */
.p-about .mv h3{ font-size:clamp(1.9rem,3.2vw,3.4rem); font-weight:700; letter-spacing:-.02em; line-height:1.12; max-width:20ch; }
.p-about .mv-mission, .p-about .mv-vision{ padding-block:clamp(72px,9vw,140px); justify-content:flex-start; gap:clamp(28px,3vw,44px); }

/* Resources: the institutions become a charcoal ledger. */
.p-resources .sec--dark .rs-inst{ background:rgba(243,240,234,.18); border-color:rgba(243,240,234,.22); }
.p-resources .sec--dark .rs-inst > *{ background:var(--charcoal); }
.p-resources .sec--dark .rs-inst .k{ color:var(--bronze-2); }
.p-resources .sec--dark .rs-inst h3{ font-weight:700; color:var(--paper); }
.p-resources .sec--dark .rs-inst h3 a{ color:var(--paper); }
.p-resources .sec--dark .rs-inst h3 a:hover{ color:var(--red); }
.p-resources .sec--dark .rs-inst p{ color:rgba(243,240,234,.7); }


/* ---------- DEVICE PASS: readable label floor on phones and small tablets ---------- */
/* Tracked uppercase kickers sit at .6–.68rem (10–11px) on desktop by design; below 1024px they get a 12px floor.
   Numerals hidden with font-size:0 (sector-index, why, cover, elev, cp, pd-cap, spec--4) are deliberately excluded. */
@media (max-width:1023px){
  .app-list .side-k, .bh-meta, .pd-cap .aim b, .africa-meta dt, .data-head span, .dz-brief-h, .dz-sch-h,
  .rs-inst .k, .rs-meta .k, .suite .k, .svc-side .flag, .ad-cap .k, .c3-points b, .c3-why b, .contact-list dt,
  .cp-hero-cap, .cp-tier .k, .dz-fact dt, .dz-gate-k, .dz-no li a, .g-head, .meta-row dt, .ol-end, .ol-role,
  .prod-media figcaption, .room .tag, .scope-k, .sheet-h, .syslist dt, .menu-links > a.menu-head, .hero-loc{
    font-size:.76rem;
  }
}
/* Footer regulatory line ran to 116ch on 27-inch; hold it to a readable measure. */
.footer-reg{ max-width:80ch; }
/* Phone hero: give the city stamp its own room below the buttons (it sat 13px under them on iPhone mini). */
@media (max-width:767px){ .hero--v2 .hero-in{ padding-bottom:76px; } .hero-loc{ bottom:24px; } }
/* Stacked corridor (tablet/phone): keep the paper mark, centred on the horizontal seam between the two panels. */
@media (max-width:1023px){
  .c3-link{ display:block; position:relative; left:auto; top:auto; width:0; height:0; justify-self:center; z-index:3; }
}
/* Mask sources live in the stylesheet (relative to css/), not in a variable: Safari does not reliably resolve url() through var() for masks. */
.bold .geo-mark--ca{ -webkit-mask-image:url(../assets/map-canada.svg); mask-image:url(../assets/map-canada.svg); }
.bold .geo-mark--af{ -webkit-mask-image:url(../assets/map-africa.svg); mask-image:url(../assets/map-africa.svg); }
.bold .geo-mark--wd{ -webkit-mask-image:url(../assets/map-world.svg); mask-image:url(../assets/map-world.svg); }
/* Mobile menu: current page in red with a short red rule; its group heading lifts to paper. */
.menu-links > a[aria-current="page"]:not(.menu-head){ color:var(--red); }
.menu-links > a[aria-current="page"]:not(.menu-head)::before{ content:""; display:inline-block; width:22px; height:2px; background:var(--red); margin-right:14px; vertical-align:middle; }
.menu-sub a[aria-current="page"]{ color:var(--red); }
.menu-sub a[aria-current="page"]::after{ border-color:var(--red); }
.menu-links > a.menu-head.is-here{ color:var(--paper); }
