/* Layout: harbour-dark hero with a Hamburg→Dakar meridian chart, then light ruled sections; 1200px measure, 12-col feel via grid. */
:root{
  --paper:#F2F4F1; --surface:#FFFFFF; --ink:#0F1F27; --muted:#56646B; --line:#D3DAD7;
  --accent:#9C6A10; --accent-ink:#FFFFFF; --sea:#1D5560;
  --band:#0D1D24; --band-2:#13282F; --band-ink:#EEF2F0; --band-muted:#94A6AB; --band-line:#2A3F47; --signal:#E3AA3E;
  --mark-bg:#0F1F27; --mark-fg:#F2F4F1;
  --f-display:"Archivo","Arial Narrow",Arial,sans-serif;
  --f-body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  --s-1:.8125rem; --s0:1rem; --s1:1.1875rem; --s2:1.5rem; --s3:2.125rem; --s4:clamp(2.25rem,5.2vw,4.25rem);
  --max:1200px; --r:4px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#0A1317; --surface:#101C21; --ink:#E5EBE9; --muted:#93A3A8; --line:#22343B;
  --accent:#E3AA3E; --accent-ink:#0A1317; --sea:#79B9C3;
  --band:#060D10; --band-2:#0C181D; --band-ink:#EEF2F0; --band-muted:#8EA0A5; --band-line:#1F3239; --signal:#E3AA3E;
  --mark-bg:#E5EBE9; --mark-fg:#0A1317; color-scheme:dark}}
:root[data-theme="dark"]{
  --paper:#0A1317; --surface:#101C21; --ink:#E5EBE9; --muted:#93A3A8; --line:#22343B;
  --accent:#E3AA3E; --accent-ink:#0A1317; --sea:#79B9C3;
  --band:#060D10; --band-2:#0C181D; --band-ink:#EEF2F0; --band-muted:#8EA0A5; --band-line:#1F3239; --signal:#E3AA3E;
  --mark-bg:#E5EBE9; --mark-fg:#0A1317; color-scheme:dark}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:var(--s0);line-height:1.6;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:60;background:var(--band)}
a{color:inherit}
:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:2px}
.wrap{max-width:var(--max);margin-inline:auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
@media(min-width:700px){.wrap{padding-left:max(32px,env(safe-area-inset-left,0px));padding-right:max(32px,env(safe-area-inset-right,0px))}}
h1,h2,h3{font-family:var(--f-display);font-stretch:116%;line-height:1.05;letter-spacing:-.01em;text-wrap:balance;margin:0}
p{margin:0}
.eyebrow{font-family:var(--f-mono);font-size:var(--s-1);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);display:flex;gap:.6em;align-items:center}
.eyebrow::before{content:"";width:22px;height:2px;background:currentColor}
.lede{font-size:var(--s1);color:var(--muted);max-width:60ch}

/* ---------- header ---------- */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:var(--band);color:var(--band-ink);border-bottom:1px solid var(--band-line)}
.top .wrap{display:flex;align-items:center;gap:16px;height:68px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0}
.brand svg{width:38px;height:38px;flex:none}
.brand .wm{display:flex;flex-direction:column;line-height:1}
.brand b{font-family:var(--f-display);font-stretch:125%;font-weight:800;font-size:1.05rem;letter-spacing:.04em}
.brand small{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.32em;color:var(--band-muted);margin-top:5px}
.nav{display:flex;gap:2px;margin-left:auto}
.nav a{text-decoration:none;font-size:.86rem;padding:8px 7px;white-space:nowrap;border-radius:var(--r);color:var(--band-muted);transition:color .2s}
.nav a:hover{color:var(--band-ink)}
.lang{display:flex;border:1px solid var(--band-line);border-radius:var(--r);overflow:hidden}
.lang button{all:unset;cursor:pointer;font-family:var(--f-mono);font-size:.75rem;padding:6px 9px;color:var(--band-muted)}
.lang button[aria-pressed="true"]{background:var(--band-ink);color:var(--band)}
.lang button:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}
.cta-top{font-weight:600;font-size:.9rem;text-decoration:none;padding:9px 16px;border-radius:var(--r);background:var(--signal);color:#0A1317;white-space:nowrap}
.menu-btn{all:unset;display:none;cursor:pointer;width:40px;height:40px;place-items:center;border:1px solid var(--band-line);border-radius:var(--r)}
.menu-btn span{display:block;width:18px;height:2px;background:var(--band-ink);box-shadow:0 6px 0 var(--band-ink),0 -6px 0 var(--band-ink)}
@media(max-width:1280px){
  .nav,.cta-top{display:none}
  .menu-btn{display:grid;margin-left:auto}
  .top.open .nav{display:flex;flex-direction:column;position:absolute;left:0;right:0;top:68px;background:var(--band);padding:8px max(16px,env(safe-area-inset-left,0px)) 16px;border-bottom:1px solid var(--band-line)}
  .top.open .nav a{padding:12px 4px;font-size:1rem;color:var(--band-ink);border-bottom:1px solid var(--band-line)}
}
@media(max-width:420px){.brand small{letter-spacing:.2em}.lang button{padding:6px 7px}}

/* ---------- hero ---------- */
.hero{background:var(--band);color:var(--band-ink);overflow:hidden;position:relative}
.hero::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 119px,var(--band-line) 119px 120px);opacity:.35;pointer-events:none}
.hero > .wrap{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:48px;align-items:center;padding-block:72px 64px}
.hero .eyebrow{color:var(--signal)}
.hero h1{font-size:var(--s4);font-weight:800;margin:20px 0 24px}
.hero h1 em{font-style:normal;color:var(--signal)}
.hero .lede{color:var(--band-muted)}
.btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.btn{display:inline-flex;align-items:center;gap:10px;font-weight:600;text-decoration:none;padding:14px 22px;border-radius:var(--r);border:1px solid transparent;transition:transform .2s,background .2s}
.btn:hover{transform:translateY(-1px)}
.btn.primary{background:var(--signal);color:#0A1317}
.btn.ghost{border-color:var(--band-line);color:var(--band-ink)}
.btn.ghost:hover{background:var(--band-2)}
.btn svg{width:16px;height:16px}
.chart{width:100%;max-width:440px;justify-self:end}
.chart svg{width:100%;height:auto;display:block}
.chart .grid line{stroke:var(--band-line);stroke-width:1}
.chart .lbl{font-family:var(--f-mono);font-size:10px;fill:var(--band-muted)}
.chart .city{font-family:var(--f-display);font-stretch:118%;font-weight:700;font-size:15px;fill:var(--band-ink);letter-spacing:.04em}
.chart .coord{font-family:var(--f-mono);font-size:10.5px;fill:var(--band-muted)}
.chart .route{fill:none;stroke:var(--signal);stroke-width:2;stroke-dasharray:6 6;animation:march 1.6s linear infinite}
.chart .dist{font-family:var(--f-mono);font-size:11px;fill:var(--signal)}
.chart .node{fill:var(--signal)}
.chart .ring{fill:none;stroke:var(--signal);stroke-width:1.2;transform-box:fill-box;transform-origin:center;animation:pulse 2.8s ease-out infinite}
@keyframes march{to{stroke-dashoffset:-24}}
@keyframes pulse{0%{transform:scale(1);opacity:.9}100%{transform:scale(2.6);opacity:0}}
@media(prefers-reduced-motion:reduce){.chart .route,.chart .ring{animation:none}html{scroll-behavior:auto}.btn:hover{transform:none}}
@media(max-width:860px){.hero > .wrap{grid-template-columns:1fr;padding-block:48px}.chart{justify-self:start;max-width:380px}}

/* facts strip */
.facts{position:relative;z-index:1;background:var(--band-2);color:var(--band-ink);border-top:1px solid var(--band-line)}
.facts .wrap{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.fact{padding:22px 20px 22px 0;display:flex;flex-direction:column;gap:4px;min-width:0}
.fact + .fact{padding-left:20px;border-left:1px solid var(--band-line)}
.fact span{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--band-muted)}
.fact b{font-weight:500;font-size:.98rem}
@media(max-width:860px){.facts .wrap{grid-template-columns:repeat(2,minmax(0,1fr))}.fact:nth-child(3){padding-left:0;border-left:0}.fact:nth-child(n+3){border-top:1px solid var(--band-line)}}
@media(max-width:480px){.facts .wrap{grid-template-columns:1fr}.fact,.fact + .fact{padding-left:0;border-left:0}.fact + .fact{border-top:1px solid var(--band-line)}}

/* ---------- sections ---------- */
section.block{padding-block:96px}
.head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 64px;align-items:end;margin-bottom:56px}
.head h2{font-size:var(--s3);font-weight:800;margin-top:14px}
@media(max-width:860px){.head{grid-template-columns:1fr}section.block{padding-block:72px}}

/* domains */
.domains{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.dom{background:var(--surface);padding:32px 28px 28px;display:flex;flex-direction:column;gap:14px;min-width:0;transition:background .25s}
.dom:hover{background:var(--paper)}
.dom .ico{width:40px;height:40px;color:var(--sea)}
.dom h3{font-size:1.25rem;font-weight:700}
.dom p{color:var(--muted);font-size:.95rem}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:8px}
.tags li{list-style:none;font-family:var(--f-mono);font-size:.72rem;padding:4px 8px;border:1px solid var(--line);border-radius:2px;color:var(--ink)}
.tags{padding-left:0;margin-bottom:0}
@media(max-width:980px){.domains{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.domains{grid-template-columns:1fr}}

/* energy */
.energy{background:var(--surface);border-block:1px solid var(--line)}
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;counter-reset:s}
.step{position:relative;padding:28px 24px 0 0;min-width:0}
.step::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--line)}
.step::after{content:"";position:absolute;top:-5px;left:0;width:12px;height:12px;border-radius:50%;background:var(--surface);border:2px solid var(--accent)}
.step .n{font-family:var(--f-mono);font-size:.78rem;color:var(--accent);letter-spacing:.1em}
.step h3{font-size:1.4rem;font-weight:800;margin:8px 0 10px}
.step p{color:var(--muted);font-size:.95rem}
.tech{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:56px;padding-top:28px;border-top:1px solid var(--line);align-items:baseline}
.tech .k{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.tech span:not(.k){font-family:var(--f-display);font-stretch:112%;font-weight:600;font-size:1.05rem}
.tech span:not(.k)+span::before{content:"/";color:var(--line);margin-right:28px;margin-left:-14px}
@media(max-width:860px){.steps{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:40px}}
@media(max-width:520px){.steps{grid-template-columns:1fr}}

/* trading */
.elements{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px}
.el{aspect-ratio:1/1.08;max-width:100%;border:1.5px solid var(--ink);border-radius:2px;padding:10px;display:flex;flex-direction:column;background:var(--surface);transition:transform .25s,border-color .25s;min-width:0}
.el:hover{transform:translateY(-3px);border-color:var(--accent)}
.el .z{font-family:var(--f-mono);font-size:.72rem;color:var(--muted)}
.el .sym{font-family:var(--f-display);font-stretch:100%;font-weight:800;font-size:clamp(1.5rem,3vw,2.2rem);line-height:1;margin:auto 0 6px}
.el .nm{font-size:.74rem;color:var(--muted);line-height:1.2;overflow-wrap:anywhere}
.el.au{border-color:var(--accent)} .el.au .sym{color:var(--accent)}
@media(max-width:980px){.elements{grid-template-columns:repeat(4,minmax(0,1fr))}}
.lists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;margin-top:40px}
.list h3{font-family:var(--f-mono);font-stretch:100%;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-bottom:14px}
.list ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px}
.list li{padding:8px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:.92rem}
@media(max-width:700px){.lists{grid-template-columns:1fr}}
.note{margin-top:28px;font-size:.85rem;color:var(--muted);display:flex;gap:10px;align-items:flex-start;max-width:80ch}
.note svg{flex:none;width:18px;height:18px;margin-top:2px;color:var(--sea)}

/* approach */
.approach{background:var(--band);color:var(--band-ink)}
.approach .eyebrow{color:var(--signal)}
.approach .lede{color:var(--band-muted)}
.principles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--band-line);border:1px solid var(--band-line)}
.pr{background:var(--band);padding:36px 32px;display:grid;grid-template-columns:auto 1fr;gap:6px 20px;min-width:0}
.pr svg{grid-row:span 2;width:28px;height:28px;color:var(--signal);margin-top:2px}
.pr h3{font-size:1.25rem;font-weight:700}
.pr p{color:var(--band-muted);font-size:.96rem}
@media(max-width:760px){.principles{grid-template-columns:1fr}.pr{padding:28px 20px}}

/* group */
.axis{display:grid;grid-template-columns:minmax(0,1fr) 120px minmax(0,1fr);align-items:stretch}
.co{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:32px;display:flex;flex-direction:column;gap:12px;min-width:0}
.co .city{font-family:var(--f-mono);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.co h3{font-size:1.35rem;font-weight:800}
.co p{color:var(--muted)}
.co address{font-style:normal;font-family:var(--f-mono);font-size:.82rem;margin-top:auto;padding-top:16px;border-top:1px solid var(--line)}
.link{display:grid;place-items:center;position:relative}
.link::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:2px dashed var(--accent)}
.link span{position:relative;background:var(--paper);font-family:var(--f-mono);font-size:.75rem;padding:6px 8px;color:var(--accent);text-align:center;line-height:1.3}
@media(max-width:860px){.axis{grid-template-columns:1fr;grid-template-rows:auto 64px auto}.link::before{left:50%;right:auto;top:0;bottom:0;border-top:0;border-left:2px dashed var(--accent)}}
.leader{margin-top:40px;display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:center;padding:28px 32px;border:1px solid var(--line);border-radius:var(--r)}
.mono-av{width:64px;height:64px;border-radius:50%;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-family:var(--f-display);font-stretch:118%;font-weight:800;font-size:1.25rem;letter-spacing:.04em}
.leader b{font-family:var(--f-display);font-stretch:112%;font-size:1.2rem;font-weight:700;display:block}
.leader p{color:var(--muted);font-size:.95rem;margin-top:4px}
@media(max-width:520px){.leader{grid-template-columns:1fr;padding:24px 20px}}

/* contact */
.contact{background:var(--surface);border-top:1px solid var(--line)}
.cgrid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:64px}
.cgrid h2{font-size:var(--s3);font-weight:800;margin:14px 0 18px}
.cinfo{margin-top:36px;display:grid;gap:20px}
.cinfo div{display:grid;gap:4px}
.cinfo span{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.cinfo b{font-weight:500}
.copy{all:unset;cursor:pointer;font-family:var(--f-mono);font-size:.72rem;color:var(--accent);margin-left:10px;border-bottom:1px solid currentColor}
form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.f{display:grid;gap:6px;min-width:0}
.f.full{grid-column:1/-1}
label{font-size:.82rem;font-weight:500}
input,select,textarea{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
textarea{min-height:140px;resize:vertical}
form .btn{justify-self:start;background:var(--ink);color:var(--paper);border:0;cursor:pointer;font-size:1rem}
.sent{grid-column:1/-1;font-size:.9rem;padding:12px 14px;border-left:3px solid var(--accent);background:var(--paper)}
@media(max-width:860px){.cgrid{grid-template-columns:1fr;gap:40px}}
@media(max-width:520px){form{grid-template-columns:1fr}}

/* footer */
footer{background:var(--band);color:var(--band-muted);font-size:.85rem}
footer .wrap{padding-block:48px 32px;display:grid;gap:32px}
.frow{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px;align-items:flex-start}
footer .brand{color:var(--band-ink)}
.imp{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px 32px;padding-top:24px;border-top:1px solid var(--band-line)}
.imp div{display:grid;gap:2px}
.imp span{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase}
.imp b{font-weight:400;color:var(--band-ink)}
.legal{display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between;font-size:.78rem}
.legal a{color:var(--band-muted)}

/* markets */
.markets{background:var(--surface);border-bottom:1px solid var(--line)}
.mgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:start}
.map{margin:0;max-width:520px;width:100%}
.map svg{width:100%;height:auto;display:block}
.map .grid line{stroke:var(--line);stroke-width:1}
.map .lbl{font-family:var(--f-mono);font-size:10px;fill:var(--muted)}
.map .city{font-family:var(--f-display);font-stretch:118%;font-weight:700;font-size:14px;fill:var(--ink);letter-spacing:.04em}
.map .city.sm{font-size:11px;fill:var(--accent)}
.map .rt{fill:none;stroke:var(--sea);stroke-width:1.2;opacity:.45;transition:opacity .2s,stroke-width .2s,stroke .2s}
.map .dot{fill:var(--surface);stroke:var(--sea);stroke-width:1.8;transition:fill .2s,stroke .2s}
.map .mk.base .rt{stroke:var(--accent);opacity:.9;stroke-width:1.8;stroke-dasharray:5 5;animation:march 1.6s linear infinite}
.map .mk.base .dot{fill:var(--accent);stroke:var(--accent)}
.map .mk.on .rt{stroke:var(--accent);opacity:1;stroke-width:2.4}
.map .mk.on .dot{fill:var(--accent);stroke:var(--accent)}
.map .hub{fill:var(--ink)} .map .hub-ring{fill:none;stroke:var(--ink);stroke-width:1.2;transform-box:fill-box;transform-origin:center;animation:pulse 2.8s ease-out infinite}
@media(prefers-reduced-motion:reduce){.map .mk.base .rt,.map .hub-ring{animation:none}}
.regions{display:grid;gap:28px;min-width:0}
.region h3{font-family:var(--f-mono);font-stretch:100%;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-bottom:10px}
.ctry{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line)}
.ctry li{display:flex;align-items:center;gap:12px;padding:11px 8px 11px 0;border-bottom:1px solid var(--line);cursor:default;outline:none;min-width:0;transition:background .2s}
.ctry li:nth-child(odd){padding-right:16px}
.ctry li .iso{font-family:var(--f-mono);font-size:.72rem;color:var(--muted);width:24px;flex:none}
.ctry li .nm{font-weight:500;overflow-wrap:anywhere}
.ctry li .badge{margin-left:auto;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent);padding:3px 7px;border-radius:2px;white-space:nowrap}
.ctry li:hover,.ctry li:focus-visible,.ctry li.on{background:var(--paper)}
.ctry li:hover .iso,.ctry li.on .iso,.ctry li:focus-visible .iso{color:var(--accent)}
.kpis{display:flex;flex-wrap:wrap;gap:12px 32px;padding-top:20px;border-top:1px solid var(--line)}
.kpi{display:flex;align-items:baseline;gap:8px}
.kpi b{font-family:var(--f-display);font-stretch:112%;font-weight:800;font-size:1.6rem;font-variant-numeric:tabular-nums}
.kpi span{font-size:.85rem;color:var(--muted);max-width:34ch;line-height:1.35}
.src{font-size:.8rem;color:var(--muted);margin-top:4px}
.src a{color:var(--sea)}
@media(max-width:900px){.mgrid{grid-template-columns:1fr;gap:40px}}
@media(max-width:440px){.ctry{grid-template-columns:1fr}.ctry li:nth-child(odd){padding-right:8px}}

/* aero */
.aero{background:var(--band);color:var(--band-ink)}
.aero .eyebrow{color:var(--signal)} .aero .lede{color:var(--band-muted)}
.pills{display:flex;flex-wrap:wrap;gap:10px;margin:-24px 0 48px}
.pill{display:inline-flex;align-items:center;gap:8px;font-size:.85rem;padding:8px 14px;border:1px solid var(--band-line);border-radius:999px;color:var(--band-ink)}
.pill i{width:8px;height:8px;border-radius:50%;background:var(--signal);flex:none}
.pill.pending i{background:transparent;border:1.5px solid var(--signal)}
.agrid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:56px;align-items:start}
.agrid h3.k,.regs .k{font-family:var(--f-mono);font-stretch:100%;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--band-muted);font-weight:500;margin-bottom:14px}
.chain{list-style:none;margin:0;padding:0;border-top:1px solid var(--band-line)}
.chain li{display:grid;grid-template-columns:88px minmax(0,1fr);gap:16px;padding:16px 0;border-bottom:1px solid var(--band-line)}
.chain .code{font-family:var(--f-mono);font-weight:500;font-size:.85rem;color:var(--signal);padding-top:2px}
.chain b{font-family:var(--f-display);font-stretch:112%;font-weight:700;font-size:1.05rem;display:block}
.chain p{color:var(--band-muted);font-size:.93rem;margin-top:2px}
.plats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.plat{border:1px solid var(--band-line);border-radius:var(--r);padding:16px 14px;display:flex;flex-direction:column;gap:8px;background:var(--band-2);min-width:0}
.plat svg{width:56px;height:36px;color:var(--signal)}
.plat b{font-family:var(--f-display);font-stretch:112%;font-weight:700;font-size:1rem}
.plat span{font-size:.84rem;color:var(--band-muted);line-height:1.4}
.params{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 0;padding:0;list-style:none}
.params li{font-family:var(--f-mono);font-size:.74rem;padding:5px 10px;border:1px solid var(--band-line);border-radius:2px}
.case{margin-top:24px;padding:20px 22px;border-left:3px solid var(--signal);background:var(--band-2)}
.case .k{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--signal)}
.case b{display:block;font-family:var(--f-display);font-stretch:112%;font-size:1.15rem;margin:6px 0 8px}
.case p{color:var(--band-muted);font-size:.93rem}
.regs{margin-top:56px;padding-top:28px;border-top:1px solid var(--band-line);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 56px;align-items:start}
.regs ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--band-line);border:1px solid var(--band-line)}
.regs li{background:var(--band);padding:14px 16px;display:grid;gap:2px;min-width:0}
.regs li b{font-weight:600;font-size:.95rem}
.regs li span{font-size:.82rem;color:var(--band-muted)}
.regs .rule{font-family:var(--f-display);font-stretch:108%;font-weight:600;font-size:1.25rem;line-height:1.3;text-wrap:balance}
@media(max-width:980px){.agrid,.regs{grid-template-columns:1fr;gap:40px}}
@media(max-width:560px){.plats{grid-template-columns:1fr}.plat{flex-direction:row;align-items:center;flex-wrap:wrap}.plat span{flex-basis:100%}.chain li{grid-template-columns:64px minmax(0,1fr)}.regs ul{grid-template-columns:1fr}}
.sub{margin-top:16px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 24px;align-items:center;padding:22px 32px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.sub .city{font-family:var(--f-mono);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);grid-row:span 2}
.sub b{font-family:var(--f-display);font-stretch:112%;font-weight:800;font-size:1.2rem}
.sub p{color:var(--muted);font-size:.95rem}
@media(max-width:620px){.sub{grid-template-columns:1fr;padding:20px}.sub .city{grid-row:auto}}

/* Country names remain visible on the map in the selected language. */
.map .country-labels{pointer-events:none}
.map .country-label{font-family:var(--f-body);font-size:12.5px;font-weight:600;fill:var(--ink);stroke:var(--surface);stroke-width:4px;stroke-linejoin:round;paint-order:stroke fill}
.map .country-leader{fill:none;stroke:var(--muted);stroke-width:1;opacity:.7}
.map .country-label.base{fill:var(--accent)}

/* Rural electrification: project evidence and service offer. */
.rural{background:var(--surface);border-bottom:1px solid var(--line)}
.r-feature{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:stretch}
.r-photo{margin:0;min-width:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.r-photo-open{all:unset;display:block;width:100%;cursor:zoom-in;line-height:0}
.r-photo-open:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}
.r-photo img{display:block;width:100%;height:260px;object-fit:cover}
.r-photo-main{display:flex;flex-direction:column}
.r-photo-main .r-photo-open{flex:1;display:flex}
.r-photo-main img{height:100%;min-height:390px;object-fit:cover}
.r-photo figcaption{font-size:.82rem;color:var(--muted);padding:14px 18px;line-height:1.5}
.r-services{display:grid;gap:25px;padding:6px 0}
.r-services article{display:grid;grid-template-columns:36px 1fr;gap:14px;border-bottom:1px solid var(--line);padding-bottom:24px}
.r-services article:last-child{border:0;padding-bottom:0}
.r-num{font-family:var(--f-mono);font-size:.8rem;color:var(--accent);padding-top:4px}
.r-services h3{font-size:1.35rem;margin-bottom:12px}
.r-services p{font-size:.96rem;color:var(--muted)}
.r-gallery-head{margin:48px 0 22px}.r-gallery-head h3{font-size:1.5rem}
.r-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.r-gallery .r-photo:first-child img{object-position:center 58%}
.r-credit{font-size:.82rem;color:var(--muted);max-width:100ch;margin-top:18px}
.r-video{display:grid;grid-template-columns:190px 1fr;gap:40px;background:var(--band);color:var(--band-ink);padding:36px;margin-top:48px;border-radius:var(--r)}
.r-video .eyebrow{color:var(--signal);font-size:.72rem;margin-bottom:14px}
.r-video h3{font-size:1.75rem;max-width:30ch}
.r-video-symbol{display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;color:var(--signal);background:var(--band-2);border:1px solid var(--band-line);border-radius:var(--r);gap:14px;min-height:190px}
.r-video-symbol svg{width:85px;height:85px}.r-video-symbol span{font-family:var(--f-mono);letter-spacing:.18em;font-size:.85rem}
.r-video-text{color:var(--band-muted);margin:16px 0 22px;max-width:66ch}.r-video-note{font-size:.78rem;color:var(--band-muted);margin-top:14px}
.r-contact{display:flex;align-items:center;justify-content:space-between;gap:28px;border-top:1px solid var(--line);margin-top:40px;padding-top:32px}
.r-contact h3{font-size:1.35rem;margin-bottom:10px}.r-contact p{color:var(--muted);max-width:64ch;font-size:.94rem}.r-contact .btn{background:var(--ink);color:var(--paper);flex:none;font-size:.9rem}
.r-lightbox{border:1px solid var(--line);padding:42px 16px 16px;max-width:94vw;max-height:94dvh;background:var(--surface);color:var(--ink);border-radius:var(--r)}
.r-lightbox::backdrop{background:rgba(0,0,0,.85)}.r-lightbox figure{margin:0}.r-lightbox img{display:block;max-width:86vw;max-height:76dvh;width:auto;height:auto;object-fit:contain}.r-lightbox figcaption{font-size:.84rem;padding:12px 0 0}.r-lightbox-close{position:absolute;right:6px;top:3px;background:none;color:var(--ink);border:0;font-size:1.8rem;width:36px;height:36px;cursor:pointer}
@media(max-width:980px){.r-feature{grid-template-columns:1fr;gap:28px}.r-photo-main img{min-height:0;height:auto;max-height:540px;aspect-ratio:16/10}.r-contact{align-items:flex-start;flex-direction:column}}
@media(max-width:620px){.r-gallery{grid-template-columns:1fr}.r-gallery .r-photo img{height:auto;max-height:400px;object-fit:cover}.r-gallery .r-photo:first-child img{height:370px;object-position:center 65%}.r-video{grid-template-columns:1fr;gap:24px;padding:24px}.r-video-symbol{min-height:120px;flex-direction:row}.r-video h3{font-size:1.5rem}.r-contact .btn{width:100%;justify-content:center;font-size:.86rem;padding-inline:14px}}

/* DOCC SAS: local industrial capability within the electrification offer. */
.docc{background:var(--paper);border-bottom:1px solid var(--line)}
.docc-feature{display:grid;grid-template-columns:1.05fr 1fr;gap:44px;align-items:center}
.docc-main-photo img{height:auto;aspect-ratio:1.12;object-fit:cover}
.docc-intro .eyebrow{font-size:.72rem;margin-bottom:18px}
.docc-intro h3{font-size:1.85rem;margin-bottom:20px}
.docc-intro p{color:var(--muted);font-size:.97rem}
.docc-eco{border-left:3px solid var(--accent);padding-left:20px;margin:24px 0}
.docc-eco h4{font-family:var(--f-display);font-size:1.08rem;line-height:1.3;margin:0 0 9px}
.docc-intro .btn{background:var(--ink);color:var(--paper);font-size:.92rem}
.docc-intro .docc-inquiry-note{font-size:.8rem;margin-top:14px}
.docc-evidence{display:grid;grid-template-columns:1.2fr 1fr;margin-top:44px;border:1px solid var(--line);background:var(--surface)}
.docc-need{padding:32px}.docc-need h3{font-size:1.2rem}
.docc-number{display:block;font-family:var(--f-display);font-size:clamp(2.5rem,5vw,4rem);letter-spacing:-.035em;line-height:1.1;color:var(--accent);margin:20px 0 3px}
.docc-unit{display:block;font-size:1.1rem;font-weight:600}
.docc-need p{font-size:.85rem;color:var(--muted);margin-top:18px;max-width:60ch}
.docc-reference{padding:32px;border-left:1px solid var(--line)}
.docc-reference .eyebrow{font-size:.68rem}.docc-client{display:block;font-family:var(--f-display);font-size:1.8rem;margin:10px 0}
.docc-reference p:not(.eyebrow){font-size:.86rem;color:var(--muted)}
.docc-range-k{margin-top:26px}.docc-range{display:block;font-size:1.3rem;margin:8px 0}
.docc-gallery-heading{display:grid;grid-template-columns:1fr 1.3fr;gap:36px;margin:46px 0 24px;align-items:start}
.docc-gallery-heading h3{font-size:1.5rem}.docc-gallery-heading p{color:var(--muted);font-size:.94rem}
.docc-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.docc-gallery img{height:380px;object-fit:cover}
.docc-gallery .docc-visit-photo img{object-position:center 20%}
.docc-rural-link{display:block;max-width:var(--max);margin:32px auto 0;padding:0 32px;font-weight:600;color:var(--accent);font-size:.95rem}
.docc-group a{display:block;color:var(--accent);font-size:.85rem;margin-top:10px}
@media(max-width:980px){.docc-feature{grid-template-columns:1fr;gap:28px}.docc-main-photo img{aspect-ratio:16/10;max-height:500px}.docc-gallery img{height:320px}}
@media(max-width:620px){.docc-evidence,.docc-gallery,.docc-gallery-heading{grid-template-columns:1fr}.docc-reference{border-left:0;border-top:1px solid var(--line)}.docc-gallery-heading{gap:15px}.docc-need,.docc-reference{padding:24px}.docc-gallery img{height:330px}.docc-intro h3{font-size:1.6rem}.docc-rural-link{padding-inline:16px}.docc-intro .btn{padding-inline:16px}}

/* Original company identities: restrained sizing, proportions and clear space. */
.top .brand{padding-block:3px;flex:none}
.brand .official-brand-logo{display:block;width:160px;min-width:140px;height:auto;max-height:68px;object-fit:contain}
footer .brand .official-brand-logo{width:215px;max-height:none}
.company-logo,.engineering-company-logo{display:block;height:auto;object-fit:contain;object-position:left center;flex:none;align-self:start;margin:4px 0 18px;max-width:100%}
.engineering-company-logo{width:170px;min-width:140px}
.company-logo{background:#fff;padding:12px;border-radius:2px;box-sizing:content-box;width:140px;max-height:105px}
.company-logo-wide{width:170px;max-height:85px}
.company-logo-docc{width:88px;max-height:90px;padding:10px}
.docc-section-logo{margin:0 0 20px}
.sub .company-logo{grid-column:1/-1}
.docc-certifications{margin-top:42px;padding-top:32px;border-top:1px solid var(--line)}
.cert-heading{display:grid;grid-template-columns:1fr 1.3fr;gap:32px;align-items:start;margin-bottom:24px}
.cert-heading h3{font-size:1.5rem}.cert-heading p{color:var(--muted);font-size:.94rem}
.cert-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.cert-card{background:var(--surface)}
.cert-card img{width:100%;height:auto;object-fit:contain;aspect-ratio:1.42;background:#fff}
.cert-card figcaption{font-weight:600;font-size:.85rem}
.cert-scope{margin-top:20px;font-size:.88rem;color:var(--muted)}
.cert-scope summary{cursor:pointer;color:var(--ink);font-weight:500;padding:5px 0}
.cert-scope p{margin-top:10px;font-family:var(--f-mono);font-size:.78rem;line-height:1.8;overflow-wrap:anywhere}
.cert-terms{font-size:.82rem;color:var(--muted);margin-top:18px;max-width:95ch}
.cert-download{background:var(--ink);color:var(--paper);font-size:.88rem;margin-top:20px;padding:12px 18px}
.cert-file-note{color:var(--muted);font-size:.78rem;margin-top:10px}
@media(max-width:620px){.cert-grid,.cert-heading{grid-template-columns:1fr}.cert-heading{gap:14px}.cert-download{max-width:100%;font-size:.82rem}}
@media(max-width:520px){.top .wrap{gap:10px}.top .brand .official-brand-logo{width:140px}.top .lang button{padding-inline:7px}}

.sub.with-company-logo{grid-template-columns:160px minmax(0,1fr);align-items:center;gap:24px}
.sub.with-company-logo>.company-logo{grid-column:auto;align-self:center;justify-self:center;margin:0}
.sub-copy{display:grid;gap:8px;min-width:0}.sub-copy .city{grid-row:auto}
@media(max-width:620px){.sub.with-company-logo{grid-template-columns:1fr;gap:18px}.sub.with-company-logo>.company-logo{justify-self:start}}

/* Relationships: compact, distinct categories with original logos. */
.partners{background:var(--paper);border-top:1px solid var(--line)}
.partners .head{margin-bottom:36px}
.partner-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:38px}
.partner-category h3{font-size:1.25rem;margin-bottom:8px}
.partner-category-note{font-size:.85rem;color:var(--muted);margin-bottom:20px}
.partner-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.partner-tile{display:flex;flex-direction:column;gap:8px;text-decoration:none;min-width:0}
.partner-logo-pad{height:100px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px}
.partner-logo-pad img{display:block;width:100%;height:100%;object-fit:contain;max-width:148px;max-height:68px}
.partner-tile b{font-family:var(--f-body);font-size:.9rem;font-weight:600;margin-top:3px;line-height:1.3}
.partner-tile b span{font-size:.78rem;color:var(--muted)}
.partner-role{font-size:.78rem;color:var(--muted);line-height:1.45}
.partner-tile:hover b,.partner-official-link:hover{color:var(--accent)}
.partner-association{display:grid;grid-template-columns:180px minmax(0,1fr) auto;align-items:center;gap:28px;margin-top:32px;padding-top:28px;border-top:1px solid var(--line)}
.partner-association-logo{display:grid;place-items:center;background:#fff;padding:12px;border:1px solid var(--line);border-radius:var(--r)}
.partner-association-logo img{display:block;width:146px;height:auto;max-width:100%}
.partner-association .eyebrow{font-size:.68rem;margin-bottom:10px}
.partner-association h3{font-size:1.2rem}
.partner-association-note{font-size:.88rem;color:var(--muted);margin-top:8px}
.partner-official-link{font-size:.85rem;font-weight:500;line-height:1.5;max-width:18ch}
@media(max-width:980px){.partner-columns{grid-template-columns:1fr;gap:30px}.partner-logo-pad{height:110px}.partner-association{grid-template-columns:150px minmax(0,1fr)}.partner-official-link{grid-column:2;max-width:none}.partner-association-logo{grid-row:span 2}}
@media(max-width:520px){.partner-tiles{gap:10px}.partner-logo-pad{padding:10px;height:86px}.partner-role{font-size:.73rem}.partner-tile b{font-size:.82rem}.partner-association{grid-template-columns:115px minmax(0,1fr);gap:14px}.partner-association-logo{padding:10px}.partner-association .eyebrow{font-size:.61rem;letter-spacing:.06em}.partner-association h3{font-size:1.05rem}.partner-association-note{font-size:.8rem}.partner-official-link{font-size:.8rem}}

/* ---- Ajouts site déployé : formulaire, pages légales ---- */
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.form-legal{grid-column:1/-1;font-size:.8rem;color:var(--muted);margin-top:-4px}
.form-legal a{color:var(--accent)}
.sent.err{border-left-color:#B3412E}
form .btn[disabled]{opacity:.6;cursor:wait}
.skip{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--signal);color:#0A1317;padding:10px 14px;border-radius:var(--r);font-weight:600;text-decoration:none}
.skip:focus{left:16px}
.legal-page{padding-block:72px 96px}
.legal-page .wrap{max-width:860px}
.legal-page h1{font-size:var(--s3);font-weight:800;margin:14px 0 32px}
.legal-page h2{font-size:1.25rem;font-weight:700;margin:40px 0 12px}
.legal-page p,.legal-page li{color:var(--muted);max-width:75ch}
.legal-page p+p{margin-top:12px}
.legal-page ul{padding-left:1.2em}
.legal-page address{font-style:normal;color:var(--ink);line-height:1.7}
.legal-page a{color:var(--accent)}
.legal-page .todo{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--ink);padding:1px 6px;border-radius:2px}
.legal-page .back{display:inline-block;margin-top:48px;font-weight:600;color:var(--accent)}
.top .nav-simple{margin-left:auto;display:flex;gap:16px}
.top .nav-simple a{color:var(--band-muted);text-decoration:none;font-size:.9rem}
.top .nav-simple a:hover{color:var(--band-ink)}
