:root{--paper:#F3F1EC;--paper-2:#E9E6DF;--ink:#121212;--ink-2:#3A3A38;--mute:#77746D;--rule:#CFCBC2;--gold:#A8842C;--acc:#C9971F;--acc-ink:#8A6510;--night:#141413;}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:72px}
body{font-family:'Archivo',system-ui,sans-serif;background:var(--paper);color:var(--ink);font-size:17px;line-height:1.55;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
.wrap{max-width:1360px;margin:0 auto;padding:0 40px}
.lbl{font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.num{font-variant-numeric:tabular-nums}
h1,h2,h3{font-weight:700;letter-spacing:-.025em;line-height:1.02;text-wrap:balance}
p{text-wrap:pretty}

/* nav */
nav{position:sticky;top:0;z-index:50;background:var(--paper);border-bottom:1px solid var(--ink)}
nav .wrap{display:flex;align-items:center;justify-content:space-between;height:72px}
.nav-brand{display:flex;align-items:center;gap:.8rem;text-decoration:none}
.nav-mark{height:40px;width:auto}
.nav-word{font-weight:700;font-size:.95rem;letter-spacing:.02em}
.nav-word span{font-weight:500;color:var(--mute)}
.nav-links{display:flex;align-items:center;gap:2rem;list-style:none}
.nav-links a{text-decoration:none;font-size:.9rem;font-weight:500}
.nav-links a:hover{text-decoration:underline;text-underline-offset:4px}
.nav-links a.active{text-decoration:underline;text-underline-offset:4px}
.nav-cta{background:var(--ink);color:var(--paper)!important;padding:.6rem 1.1rem;text-decoration:none!important}
.nav-cta{background:var(--acc)!important;color:var(--ink)!important;font-weight:700!important}.nav-cta:hover{background:var(--ink)!important;color:var(--paper)!important}
.nav-burger{display:none;background:none;border:1px solid var(--ink);width:44px;height:44px;font-size:1.2rem;cursor:pointer}
#lang-toggle{background:var(--ink)!important;border-color:var(--ink)!important;border-radius:0!important}

/* hero */
.hero{display:grid;grid-template-columns:7fr 5fr;border-bottom:1px solid var(--ink);min-height:calc(100dvh - 72px)}
.hero-text{padding:64px clamp(24px,4.5vw,72px) 48px;display:flex;flex-direction:column;justify-content:space-between;gap:48px}
.hero h1{font-size:clamp(2.8rem,6.2vw,6.4rem);font-weight:800}
.hero-sub{font-size:1.2rem;color:var(--ink-2);max-width:34ch;margin-top:28px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:36px}
.btn{display:inline-block;padding:1rem 1.4rem;font-weight:600;font-size:.95rem;text-decoration:none;border:1px solid var(--ink);transition:background .2s,color .2s}
.btn-dark{background:var(--ink);color:var(--paper)}.btn-gold{background:var(--acc);border-color:var(--acc);color:var(--ink);font-weight:700}.btn-gold:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.btn-dark:hover{background:var(--acc);border-color:var(--acc);color:var(--ink)}
.btn-line:hover{background:var(--ink);color:var(--paper)}
.hero-facts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink)}
.hero-facts div{padding:18px 16px 0 0}
.hero-facts div+div{padding-left:16px;border-left:1px solid var(--rule)}
.hero-facts b{display:block;font-size:2.4rem;font-weight:700;letter-spacing:-.03em;line-height:1}
.hero-facts span{font-size:.85rem;color:var(--ink-2)}
.hero-photo{position:relative;border-left:1px solid var(--ink);overflow:hidden;background:var(--night)}
.hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-photo figcaption{position:absolute;left:0;bottom:0;background:var(--paper);padding:.5rem .8rem;font-size:.75rem;border-top:1px solid var(--ink);border-right:1px solid var(--ink)}

/* sections */
section{border-bottom:1px solid var(--ink)}
.sec{padding:96px 0}
.sec-head{display:grid;grid-template-columns:4fr 8fr;gap:40px;margin-bottom:56px;align-items:start}.sec-head>.lbl{padding-top:.9rem}
.sec-head h2{font-size:clamp(2rem,3.8vw,3.4rem)}
.sec-head p{font-size:1.1rem;color:var(--ink-2);max-width:52ch;align-self:end}

/* audiences */
.aud{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink)}
.aud article{padding:28px 24px 36px 0}
.aud article+article{padding-left:24px;border-left:1px solid var(--rule)}
.aud h3{font-size:1.45rem;margin-bottom:14px}
.aud p{color:var(--ink-2);font-size:.98rem}

/* services list */
.svc{border-top:1px solid var(--ink)}
.svc-row{display:grid;grid-template-columns:4fr 5fr 3fr;gap:40px;padding:28px 0;border-bottom:1px solid var(--rule)}
.svc-row h3{font-size:1.6rem}
.svc-row p{color:var(--ink-2)}
.svc-row ul{list-style:none;font-size:.9rem;color:var(--mute)}
.svc-row li+li{margin-top:4px}

/* work */
.work{background:var(--night);color:var(--paper)}
.work .sec-head p{color:#B9B5AC}
.work .lbl{color:#9A968D}
.cases{display:grid;grid-template-columns:repeat(12,1fr);gap:24px}
.case{grid-column:span 6;text-decoration:none;color:inherit;display:block}
.case.wide{grid-column:span 7}.case.narrow{grid-column:span 5}
.case figure{overflow:hidden;aspect-ratio:4/3;background:#222}
.case.wide figure,.case.narrow figure{aspect-ratio:auto;height:440px}
.case img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.case:hover img{transform:scale(1.03)}
.case-meta{display:flex;justify-content:space-between;gap:16px;border-top:1px solid #3a3935;margin-top:16px;padding-top:12px}
.case h3{font-size:1.7rem;margin:6px 0 10px}
.case p{color:#C9C5BC;max-width:52ch}
.case-go{font-size:.85rem;font-weight:600;white-space:nowrap}
.case:hover .case-go{color:var(--acc)}.case-go::after{content:" \2192";display:inline-block;transition:transform .25s}.case:hover .case-go::after{transform:translateX(4px)}
.more{margin-top:56px;border-top:1px solid #3a3935;padding-top:20px;display:flex;gap:28px;flex-wrap:wrap;align-items:baseline}
.more a{color:var(--paper);font-weight:500}
.more a:hover{color:var(--acc)}

/* countries */
.ctry{width:100%;border-collapse:collapse;border-top:1px solid var(--ink)}
.ctry th{text-align:left;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:600;padding:12px 16px 12px 0;border-bottom:1px solid var(--ink)}
.ctry td{padding:18px 16px 18px 0;border-bottom:1px solid var(--rule);vertical-align:top}
.ctry td:first-child{font-weight:700;font-size:1.25rem;width:26%}
.ctry td:nth-child(2){width:18%;color:var(--ink-2)}
.ctry td:last-child{color:var(--ink-2)}
.also{margin-top:28px;color:var(--ink-2)}

/* clients */
.clients{padding:40px 0}
.clients .wrap{display:grid;grid-template-columns:180px 1fr;gap:32px;align-items:center}
.logos{display:flex;flex-wrap:wrap;align-items:center;gap:28px 44px}
.logos img{height:30px;width:auto;max-width:110px;object-fit:contain;filter:grayscale(1);opacity:.75;transition:filter .2s,opacity .2s}
.logos img:hover{filter:none;opacity:1}

/* contact */
.contact{display:grid;grid-template-columns:5fr 7fr;gap:64px}
.contact h2{font-size:clamp(2.2rem,4.4vw,4rem)}
.contact .lede{font-size:1.1rem;color:var(--ink-2);margin:24px 0 40px;max-width:40ch}
.cd{border-top:1px solid var(--rule);padding:14px 0}
.cd a{text-decoration:none;font-size:1.15rem;font-weight:600}
.cd a:hover{color:var(--acc)}
form{display:grid;grid-template-columns:1fr 1fr;gap:20px 20px;border-top:1px solid var(--ink);padding-top:24px}
.ff{display:flex;flex-direction:column;gap:6px}
.ff.full{grid-column:1/-1}
.fl{font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.fi,.f-select,.fta{font:inherit;font-size:1rem;background:transparent;border:0;border-bottom:1px solid var(--ink);padding:10px 0;color:var(--ink);border-radius:0}
.fta{min-height:110px;resize:vertical}
.fi:focus,.f-select:focus,.fta:focus{outline:none;border-bottom:2px solid var(--gold)}
form .btn{grid-column:1/-1;justify-self:start;cursor:pointer;font:inherit;font-weight:600}
[data-fs-success]{font-size:1.3rem;font-weight:600;padding:24px 0}
[data-fs-error]{color:#9b2c1f;font-size:.85rem}

/* footer */
footer{padding:32px 0 48px}
footer .wrap{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;font-size:.85rem;color:var(--mute)}
footer nav{position:static;border:0;background:none;display:flex;gap:20px}
footer a{text-decoration:none}
footer a:hover{color:var(--ink)}

.fi:focus,.f-select:focus,.fta:focus{border-bottom-color:var(--acc)!important}:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

@media(max-width:1000px){
 .hero{grid-template-columns:1fr;min-height:0}
 .hero-text{padding:48px 24px 32px}
 .hero-photo{min-height:60vw;border-left:0;border-top:1px solid var(--ink)}
 .sec-head,.contact{grid-template-columns:1fr;gap:20px}
 .aud{grid-template-columns:1fr 1fr}
 .aud article:nth-child(3){padding-left:0;border-left:0}
 .aud article{border-top:1px solid var(--rule)}
 .svc-row{grid-template-columns:1fr;gap:10px}
 .case,.case.wide,.case.narrow{grid-column:1/-1}
 .case.wide figure,.case.narrow figure{height:auto;aspect-ratio:4/3}
 .clients .wrap{grid-template-columns:1fr}
}
@media(max-width:820px){
 .wrap{padding:0 20px}
 .nav-burger{display:block}
 .nav-links{display:none;position:absolute;top:72px;left:0;right:0;background:var(--paper);flex-direction:column;align-items:stretch;gap:0;border-bottom:1px solid var(--ink)}
 .nav-links.open{display:flex}
 .nav-links li{border-top:1px solid var(--rule)}
 .nav-links li a{display:block;padding:16px 20px}
 .nav-word span{display:none}
 .sec{padding:64px 0}
 .aud{grid-template-columns:1fr}
 .aud article,.aud article+article{padding:24px 0;border-left:0}
 .hero-facts b{font-size:1.8rem}
 .ctry td:nth-child(2){display:none}
 .ctry th:nth-child(2){display:none}
 form{grid-template-columns:1fr}
}

.hl{font-weight:700;color:var(--ink)}.dark .hl,.work .hl{color:#fff}.case .kpi{display:block;color:var(--acc);font-weight:700;font-size:.9rem;letter-spacing:.02em;margin-bottom:8px}
.mark{background:linear-gradient(var(--acc),var(--acc)) 0 90%/0 .16em no-repeat;animation:mark 1s .5s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes mark{to{background-size:100% .14em}}
.hero-facts b{color:var(--acc-ink);font-size:3.4rem}
#progress{position:fixed;top:0;left:0;height:3px;width:100%;background:var(--acc);transform-origin:0 50%;transform:scaleX(0);z-index:60}
.aud article{cursor:pointer;position:relative;transition:background .25s}
.aud article:hover{background:var(--paper-2)}
.aud .go{display:inline-block;margin-top:18px;font-size:.85rem;font-weight:700;color:var(--acc-ink)}
.aud .go::after{content:" \2192";display:inline-block;transition:transform .25s}
.aud article:hover .go::after{transform:translateX(4px)}
.svc-row{cursor:pointer;transition:padding .3s}
.svc-row h3::before{content:"+";display:inline-block;width:1.1em;color:var(--acc-ink);font-weight:500;transition:transform .3s}
.svc-row.open h3::before{transform:rotate(45deg)}
.svc-row p,.svc-row ul{display:none}
.svc-row.open p,.svc-row.open ul{display:block;animation:fade .35s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.ctry tbody tr{cursor:pointer;transition:background .2s}
.ctry tbody tr:hover{background:var(--paper-2)}
.ctry tbody tr:hover td:first-child{color:var(--acc-ink)}
.ctry td:last-child a{text-decoration:none}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.chip{font:inherit;font-size:.85rem;font-weight:500;padding:.5rem .9rem;border:1px solid var(--ink);background:none;cursor:pointer}
.chip[aria-pressed=true]{background:var(--acc);border-color:var(--acc);color:var(--ink)}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}.mark{animation:none;background-size:100% .14em}}

/* inner pages */
.phead{border-bottom:1px solid var(--ink)}
.phead .wrap{display:grid;grid-template-columns:7fr 5fr;gap:40px;padding-top:88px;padding-bottom:72px;align-items:end}
.phead h1{font-size:clamp(2.6rem,5.6vw,5.6rem);font-weight:800;margin-top:20px}
.phead p.sub{font-size:1.2rem;color:var(--ink-2);max-width:40ch}
.band{background:var(--night);color:var(--paper);border-bottom:1px solid var(--ink)}
.band .wrap{display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap;padding-top:72px;padding-bottom:72px}
.band h2{font-size:clamp(2rem,4vw,3.6rem);max-width:18ch}
.band .btn-line{border-color:var(--paper);color:var(--paper)}
.band .btn-line:hover{background:var(--paper);color:var(--ink)}
.person{display:grid;grid-template-columns:5fr 7fr;gap:64px;align-items:start}
.person figure{aspect-ratio:4/5;overflow:hidden;background:var(--paper-2)}
.person img{width:100%;height:100%;object-fit:cover;object-position:top}
.person blockquote{font-size:clamp(1.5rem,2.4vw,2.2rem);font-weight:600;letter-spacing:-.02em;line-height:1.2;border-left:4px solid var(--acc);padding-left:24px;margin:20px 0 32px}
.person p{color:var(--ink-2);margin-bottom:16px;max-width:60ch}
.principles{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink)}
.principles div{padding:28px 24px 8px 0}
.principles div+div{padding-left:24px;border-left:1px solid var(--rule)}
.principles h3{font-size:1.4rem;margin-bottom:12px}
.principles p{color:var(--ink-2)}
.svc-detail{border-top:1px solid var(--ink)}
.svc-detail article{display:grid;grid-template-columns:4fr 5fr 3fr;gap:40px;padding:40px 0;border-bottom:1px solid var(--rule)}
.svc-detail h2{font-size:2rem}
.svc-detail .kpi{color:var(--acc-ink);font-weight:700;font-size:.9rem;margin-bottom:10px}
.svc-detail p{color:var(--ink-2)}
.svc-detail ul{list-style:none;color:var(--ink-2)}
.svc-detail li{padding:8px 0;border-bottom:1px solid var(--rule)}
.svc-detail li:first-child{border-top:1px solid var(--rule)}
.steps{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink)}
.steps div{padding:28px 24px 8px 0}
.steps div+div{padding-left:24px;border-left:1px solid var(--rule)}
.steps h3{font-size:1.25rem;margin-bottom:10px}
.steps p{color:var(--ink-2);font-size:.97rem}
.work-list .case{grid-column:span 6}
.more-list{border-top:1px solid #3a3935;margin-top:64px}
.more-list a{display:grid;grid-template-columns:3fr 6fr 2fr;gap:24px;padding:22px 0;border-bottom:1px solid #3a3935;text-decoration:none;color:var(--paper);align-items:baseline}
.more-list a:hover h3,.more-list a:hover .case-go{color:var(--acc)}
.more-list h3{font-size:1.4rem}
.more-list p{color:#C9C5BC}
.more-list .case-go{text-align:right}
@media(max-width:1000px){
 .phead .wrap,.person,.svc-detail article{grid-template-columns:1fr;gap:20px}
 .principles,.steps{grid-template-columns:1fr 1fr}
 .principles div:nth-child(3),.steps div:nth-child(3){padding-left:0;border-left:0}
 .more-list a{grid-template-columns:1fr;gap:6px}
 .more-list .case-go{text-align:left}
}
@media(max-width:820px){
 .phead .wrap{padding-top:56px;padding-bottom:48px}
 .principles,.steps{grid-template-columns:1fr}
 .principles div,.principles div+div,.steps div,.steps div+div{padding:20px 0;border-left:0;border-top:1px solid var(--rule)}
}
.hero>*,.case-meta>*{min-width:0}
.hero h1{overflow-wrap:break-word}
.case-meta{flex-wrap:wrap}
@media(max-width:820px){.hero h1{font-size:clamp(2.2rem,10.5vw,3.4rem)}}

/* hero slideshow */
.slides img{opacity:0;transition:opacity 1.2s ease,transform 6s ease;transform:scale(1.04)}
.slides img.on{opacity:1;transform:scale(1)}
.slides figcaption{display:flex;align-items:center;gap:16px}
.dots{display:flex;gap:6px}
.dots button{width:18px;height:3px;border:0;padding:0;background:var(--rule);cursor:pointer}
.dots button.on{background:var(--acc);width:32px}
/* logo corridor */
.clients{padding:28px 0;overflow:hidden}
.corridor{overflow:hidden;-webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.track{display:flex;align-items:center;gap:64px;width:max-content;animation:corridor 38s linear infinite}
.corridor:hover .track{animation-play-state:paused}
.track img{height:34px;width:auto;max-width:120px;object-fit:contain;filter:grayscale(1);opacity:.7;transition:filter .25s,opacity .25s,transform .25s}
.track img:hover{filter:none;opacity:1;transform:scale(1.08)}
@keyframes corridor{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.track{animation:none;flex-wrap:wrap}}
/* map */
.map{display:grid;grid-template-columns:7fr 5fr;gap:48px;border-top:1px solid var(--ink);padding-top:32px}
.map-svg{position:relative}
#africa{width:100%;height:auto;display:block}
#africa path{fill:var(--paper-2);stroke:var(--paper);stroke-width:.8;transition:fill .2s}
#africa path:hover{fill:var(--rule)}
#africa path.on{fill:var(--acc);cursor:pointer;opacity:.75}
#africa path.on:hover,#africa path.sel{opacity:1;fill:var(--acc-ink)}
#africa path:focus{outline:none;stroke:var(--ink);stroke-width:1.5}
.map-tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--paper);font-size:.8rem;font-weight:600;padding:.35rem .6rem;white-space:nowrap}
.map-list{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 28px}
.map-list button{font:inherit;font-size:.85rem;font-weight:500;padding:.45rem .8rem;border:1px solid var(--ink);background:none;cursor:pointer}
.map-list button.sel{background:var(--acc);border-color:var(--acc);font-weight:700}
.map-detail{border-top:1px solid var(--ink);padding-top:20px;min-height:170px;animation:fade .35s ease}
.map-detail h3{font-size:2rem;margin:6px 0 12px}
.map-detail p{color:var(--ink-2);margin-bottom:14px}
.map-detail .case-go{font-weight:700;color:var(--acc-ink);text-decoration:none}
@media(max-width:1000px){.map{grid-template-columns:1fr}}
nav .wrap,#nav .wrap{max-width:none!important;padding:0 clamp(20px,2.5vw,40px)!important}
.slides{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--paper)}
.slide-col{position:relative;overflow:hidden;background:var(--night)}
.slide-col img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.slide-col .cap{position:absolute;left:0;bottom:0;background:var(--paper);padding:.45rem .75rem;font-size:.75rem;font-weight:500;border-top:1px solid var(--ink);border-right:1px solid var(--ink);z-index:2}
.slides figcaption{position:absolute;right:0;bottom:0;left:auto;background:var(--paper);padding:.6rem .8rem;border-top:1px solid var(--ink);border-left:1px solid var(--ink);border-right:0;z-index:3}
#africa path.acc{fill:#3F8F5A;opacity:.7;cursor:pointer}
#africa path.acc:hover,#africa path.acc.sel{opacity:1;fill:#2C6B42}
.map-list button.acc{border-color:#3F8F5A;color:#2C6B42}
.map-list button.acc.sel{background:#3F8F5A;border-color:#3F8F5A;color:#fff}
.acc-l{color:#2C6B42!important}
.legend{display:flex;gap:20px;flex-wrap:wrap;font-size:.85rem;font-weight:500;margin-bottom:22px}
.legend span{display:flex;align-items:center;gap:8px}
.legend i{width:14px;height:14px;display:inline-block}
.k-on{background:var(--acc)}.k-acc{background:#3F8F5A}
@media(max-width:600px){.slides{grid-template-columns:1fr}.slide-col+.slide-col{display:none}}
html,body{overflow-x:clip}
#lang-toggle{margin-left:1.5rem!important;color:#FEFCF8}
.nav-burger,#burger{color:var(--ink)!important;font-family:'Archivo',sans-serif!important;-webkit-text-fill-color:var(--ink)}
@media(max-width:820px){
 nav .nav-word span,#nav .nav-word span{display:block!important;font-size:.72rem;font-weight:500;letter-spacing:.02em;color:var(--mute)}
 nav .nav-word,#nav .nav-word{line-height:1.15;font-size:.9rem!important}
 .nav-mark,#nav .nav-mark{height:34px!important}
 #lang-toggle{margin:0 10px 0 auto!important}
}
nav .wrap,#nav .wrap{justify-content:flex-start!important}nav .nav-links,#nav .nav-links{margin-left:auto}
.clients-rev .track{animation-direction:reverse}
