:root{
  --ink:#16232C;
  --ink-soft:#2A3B44;
  --paper:#ECE9E0;
  --paper-2:#E2DED2;
  --card:#F7F5EF;
  --ochre:#C97C3B;
  --ochre-dark:#A8642C;
  --sage:#57755B;
  --sage-dark:#405A44;
  --clay:#A64B3A;
  --line:#D2CBB9;
  --line-dark:#3A4D57;
  --shadow: 0 12px 30px -12px rgba(22,35,44,.25);
  --radius: 2px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'IBM Plex Sans', sans-serif;
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:'Fraunces', serif;
  font-weight:600;
  line-height:1.1;
  margin:0;
  letter-spacing:-.01em;
}
a{color:inherit;}
.mono{font-family:'IBM Plex Mono', monospace;}
.eyebrow{
  font-family:'IBM Plex Mono', monospace;
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ochre-dark);
  display:flex;
  align-items:center;
  gap:.6em;
}
.eyebrow::before{
  content:"";
  width:22px;height:1px;
  background:var(--ochre-dark);
  display:inline-block;
}
.section-dark .eyebrow, .hero .eyebrow{color:#E0B183;}
.section-dark .eyebrow::before, .hero .eyebrow::before{background:#E0B183;}
.wrap{max-width:1180px;margin:0 auto;padding:0 32px;}
img{max-width:100%;display:block;}

/* ===== Skip link / a11y ===== */
.skip-link{
  position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:10px 16px;z-index:999;
}
.skip-link:focus{left:8px;top:8px;}
:focus-visible{outline:2px solid var(--ochre-dark);outline-offset:3px;}

/* ===== Header ===== */
header{
  position:sticky;top:0;z-index:100;
  background:rgba(236,233,224,.94);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.header-bar{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 0;
  gap:24px;
}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);}
.brand-mark{
  width:42px;height:42px;flex:0 0 auto;
  border-radius:50%;
  object-fit:contain;
}
.brand-text{display:flex;flex-direction:column;line-height:1.15;}
.brand-text strong{font-family:'Fraunces',serif;font-weight:600;font-size:1.02rem;}
.brand-text span{font-family:'IBM Plex Mono',monospace;font-size:.64rem;letter-spacing:.06em;color:var(--ink-soft);text-transform:uppercase;}

nav.primary{display:flex;align-items:center;gap:24px;}
nav.primary a{
  font-size:.85rem;text-decoration:none;color:var(--ink-soft);
  position:relative;padding:4px 0;
  white-space:nowrap;
}
nav.primary a::after{
  content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--ochre-dark);
  transition:width .2s ease;
}
nav.primary a:hover::after, nav.primary a.current::after{width:100%;}
nav.primary a.current{color:var(--ink);font-weight:500;}

.lang-switch{display:flex;gap:2px;border:1px solid var(--line-dark);border-radius:20px;padding:2px;background:var(--card);}
.lang-switch button{
  border:none;background:transparent;font-family:'IBM Plex Mono',monospace;
  font-size:.72rem;letter-spacing:.05em;padding:6px 11px;border-radius:20px;cursor:pointer;color:var(--ink-soft);
}
.lang-switch button.active{background:var(--ink);color:#fff;}
.nav-toggle{display:none;background:none;border:1px solid var(--line-dark);border-radius:4px;padding:8px 10px;cursor:pointer;}
.nav-toggle span, .nav-toggle span::before, .nav-toggle span::after{
  content:"";display:block;width:18px;height:2px;background:var(--ink);position:relative;
}
.nav-toggle span::before{position:absolute;top:-6px;}
.nav-toggle span::after{position:absolute;top:6px;}

/* ===== Hero ===== */
.hero{
  background:var(--ink);
  color:#EFEAE0;
  padding:96px 0 80px;
  position:relative;
  overflow:hidden;
}
.hero .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center;position:relative;z-index:2;}
.hero h1{
  font-size:clamp(2.2rem,4.2vw,3.4rem);
  color:#fff;
  margin-top:18px;
  max-width:15ch;
}
.hero p.lede{
  margin-top:22px;max-width:46ch;color:#C9CDD1;font-size:1.06rem;
}
.hero .cta-row{display:flex;gap:14px;margin-top:34px;flex-wrap:wrap;}
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:13px 22px;
  font-size:.88rem;font-weight:500;
  text-decoration:none;
  border-radius:2px;
  border:1px solid transparent;
  cursor:pointer;
  font-family:'IBM Plex Sans',sans-serif;
  transition:transform .15s ease, background .2s ease;
}
.btn:hover{transform:translateY(-1px);}
.btn-primary{background:var(--ochre);color:#1A1005;}
.btn-primary:hover{background:#DB8B49;}
.btn-ghost{border-color:rgba(239,234,224,.4);color:#EFEAE0;}
.btn-ghost:hover{border-color:#EFEAE0;}
.btn-outline-dark{border-color:var(--line-dark);color:var(--ink);}
.btn-outline-dark:hover{border-color:var(--ink);background:var(--card);}

.compass-wrap{position:relative;display:flex;align-items:center;justify-content:center;}
.compass-wrap svg{width:100%;max-width:420px;height:auto;}
.hero-noise{
  position:absolute;inset:0;
  background:
    radial-gradient(600px 400px at 85% 10%, rgba(201,124,59,.16), transparent 60%),
    radial-gradient(500px 400px at 10% 90%, rgba(87,117,91,.18), transparent 60%);
  z-index:1;
}
.hero-file-no{
  position:absolute;top:28px;right:32px;
  font-family:'IBM Plex Mono',monospace;font-size:.7rem;color:#8B94A0;
  letter-spacing:.05em;
  z-index:2;
}

/* Page hero variant (sub-pages: image-style placeholder instead of compass) */
.hero.hero-page .wrap{grid-template-columns:1.15fr .85fr;}
.hero-visual{
  border:1.5px dashed rgba(239,234,224,.35);
  background:repeating-linear-gradient(135deg, rgba(239,234,224,.05) 0 10px, transparent 10px 20px);
  min-height:280px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  color:#C9CDD1;text-align:center;padding:24px;border-radius:2px;
}
.hero-visual .ic{width:34px;height:34px;opacity:.75;}
.hero-visual .cap{font-family:'IBM Plex Mono',monospace;font-size:.68rem;letter-spacing:.03em;max-width:26ch;line-height:1.5;}
.hero-flag{
  display:inline-flex;align-items:center;gap:8px;
  font-family:'IBM Plex Mono',monospace;font-size:.7rem;letter-spacing:.06em;
  color:#E0B183;text-transform:uppercase;margin-top:6px;
}

/* ===== Section basics ===== */
section{padding:88px 0;}
section.tight{padding:64px 0;}
.section-head{max-width:640px;margin-bottom:48px;}
.section-head.center{max-width:680px;margin-left:auto;margin-right:auto;text-align:center;}
.section-head.center .eyebrow{justify-content:center;}
.section-head.center .eyebrow::before{display:none;}
.section-head h2{font-size:clamp(1.6rem,2.6vw,2.2rem);margin-top:14px;}
.section-head p{margin-top:16px;color:var(--ink-soft);font-size:1.02rem;}
.section-alt{background:var(--card);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.section-dark{background:var(--ink);color:#EFEAE0;}
.section-dark .section-head p{color:#B9C0C6;}

/* ===== Mission / who we are ===== */
.mission-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;}
.mission-grid p{color:var(--ink-soft);margin-top:14px;}
.fact-list{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:14px;}
.fact-list li{
  display:grid;grid-template-columns:120px 1fr;gap:16px;
  padding-bottom:14px;border-bottom:1px solid var(--line);
  font-size:.92rem;
}
.fact-list .k{font-family:'IBM Plex Mono',monospace;font-size:.72rem;color:var(--ochre-dark);letter-spacing:.04em;padding-top:2px;}

/* ===== Dimensions (dossier grid) ===== */
.dossier{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
.dossier-item{background:var(--paper);padding:30px 26px;min-height:230px;display:flex;flex-direction:column;gap:14px;}
.dossier-item .num{font-family:'IBM Plex Mono',monospace;font-size:.75rem;color:var(--ochre-dark);}
.dossier-item .ic{width:34px;height:34px;color:var(--sage-dark);}
.dossier-item h3{font-size:1.08rem;font-weight:600;}
.dossier-item p{font-size:.88rem;color:var(--ink-soft);margin:0;}
@media (min-width:701px){.dossier-item:nth-child(4n+1){background:var(--card);}}

/* ===== Photo cards (real field photographs) ===== */
.photo-card{
  border:1px solid var(--line);
  background:var(--card);
  overflow:hidden;
  display:flex;flex-direction:column;
  border-radius:2px;
}
.photo-card img{
  width:100%;height:auto;display:block;
  aspect-ratio:16 / 9;object-fit:cover;
  background:var(--line);
}
.photo-card figcaption{
  padding:14px 16px;
  font-family:'IBM Plex Mono',monospace;font-size:.72rem;
  color:var(--ink-soft);line-height:1.6;
}
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
/* Galerie ne comptant qu'une seule photographie : elle est centrée et élargie. */
.gallery-grid--single{grid-template-columns:minmax(0,760px);justify-content:center;}

/* ===== Illustration cards (custom vector illustrations, not photos) ===== */
.illus-card{border:1px solid var(--line);background:var(--card);overflow:hidden;display:flex;flex-direction:column;}
.illus-card img{width:100%;height:auto;display:block;}
.illus-card figcaption{padding:14px 16px;font-family:'IBM Plex Mono',monospace;font-size:.74rem;color:var(--ink-soft);line-height:1.5;}
.illus-note{
  margin-top:18px;font-size:.85rem;color:var(--ink-soft);
  border-left:2px solid var(--ochre);padding-left:14px;max-width:70ch;
}

/* ===== Presence / locations (home summary cards) ===== */
.loc-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.loc-card{
  background:var(--card);border:1px solid var(--line);padding:32px;
  display:flex;flex-direction:column;gap:12px;
}
.loc-card .tag{font-family:'IBM Plex Mono',monospace;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--sage-dark);}
.loc-card h3{font-size:1.3rem;}
.loc-card p{color:var(--ink-soft);font-size:.94rem;margin:0;}
.loc-card ul{margin:8px 0 0;padding-left:18px;color:var(--ink-soft);font-size:.9rem;}
.loc-card .btn{margin-top:10px;align-self:flex-start;}

/* ===== Partners ===== */
.partner-row{
  display:grid;grid-template-columns:280px 1fr;gap:40px;
  align-items:center;
  padding:28px 0;border-bottom:1px solid var(--line);
}
.partner-row:last-child{border-bottom:none;}
.partner-row .p-name{font-family:'Fraunces',serif;font-weight:600;font-size:1.2rem;}
.partner-row .p-tag{font-family:'IBM Plex Mono',monospace;font-size:.68rem;color:var(--ochre-dark);letter-spacing:.05em;text-transform:uppercase;display:block;margin-bottom:8px;}
.partner-row p{color:var(--ink-soft);font-size:.94rem;margin:0;}

/* ===== Impact / donor CTA ===== */
.impact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:10px;}
.impact-cell{background:var(--paper);padding:30px 26px;}
.impact-cell .big{font-family:'Fraunces',serif;font-size:2.1rem;font-weight:600;color:var(--ochre-dark);}
.impact-cell .lbl{font-size:.86rem;color:var(--ink-soft);margin-top:6px;}

.donor-cta{
  margin-top:56px;
  background:var(--sage);
  color:#F3F1E8;
  padding:48px 44px;
  display:grid;grid-template-columns:1.3fr auto;gap:32px;align-items:center;
}
.donor-cta h3{font-size:1.5rem;color:#fff;max-width:20ch;}
.donor-cta p{color:#E1E8DF;margin-top:10px;font-size:.94rem;}
.donor-cta .btn-primary{background:#F3F1E8;color:var(--sage-dark);}
.donor-cta .btn-primary:hover{background:#fff;}

/* ===== How your support works (numbered process) ===== */
.process-row{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;margin-top:44px;}
.process-step{position:relative;padding-top:20px;border-top:2px solid var(--ochre);}
.process-step .pn{font-family:'IBM Plex Mono',monospace;font-size:.75rem;color:var(--ochre-dark);}
.process-step h4{font-size:1.05rem;margin-top:10px;}
.process-step p{font-size:.9rem;color:var(--ink-soft);margin-top:8px;}

/* ===== Trust / legal ===== */
.trust-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:32px;}
.trust-card{border-top:2px solid var(--ochre);padding-top:16px;}
.trust-card h4{font-size:1rem;font-weight:600;}
.trust-card p{font-size:.88rem;color:var(--ink-soft);margin-top:8px;}

/* ===== Stat strip (sub-pages) ===== */
.stat-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
.stat-cell{background:var(--card);padding:26px 24px;}
.stat-cell .big{font-family:'Fraunces',serif;font-size:1.8rem;font-weight:600;color:var(--sage-dark);}
.stat-cell .lbl{font-size:.84rem;color:var(--ink-soft);margin-top:6px;}

/* ===== Team / office block ===== */
.office-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;}
.office-grid p{color:var(--ink-soft);margin-top:14px;}

/* ===== Cross-link cards (bottom of subpages) ===== */
.crosslink{
  display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:10px;
}
.crosslink a{
  background:var(--paper);padding:34px 30px;text-decoration:none;color:var(--ink);
  display:flex;flex-direction:column;gap:8px;transition:background .2s ease;
}
.crosslink a:hover{background:var(--card);}
.crosslink .tag{font-family:'IBM Plex Mono',monospace;font-size:.68rem;color:var(--ochre-dark);letter-spacing:.06em;text-transform:uppercase;}
.crosslink h4{font-size:1.15rem;}
.crosslink p{font-size:.88rem;color:var(--ink-soft);margin:0;}

/* ===== Contact / footer ===== */
footer{background:var(--ink);color:#C9CDD1;padding:64px 0 30px;}
.foot-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid var(--line-dark);}
.foot-brand{display:flex;flex-direction:column;gap:4px;}
.foot-brand-top{display:flex;align-items:center;gap:12px;}
.foot-brand-top img{width:40px;height:40px;border-radius:50%;}
.foot-brand p{color:#9BA4AC;font-size:.88rem;margin-top:14px;max-width:36ch;}
footer h5{font-family:'IBM Plex Mono',monospace;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:#E0B183;margin-bottom:14px;}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:10px;}
footer a{color:#C9CDD1;text-decoration:none;font-size:.88rem;}
footer a:hover{color:#fff;}
footer .foot-note{font-family:'IBM Plex Mono',monospace;font-size:.72rem;color:#7C858D;margin-top:2px;}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:24px;flex-wrap:wrap;gap:10px;}
.foot-bottom span{font-family:'IBM Plex Mono',monospace;font-size:.72rem;color:#7C858D;}

.contact-form{display:grid;gap:14px;margin-top:8px;}
.contact-form label{font-size:.8rem;font-family:'IBM Plex Mono',monospace;color:var(--ink-soft);}
.contact-form input, .contact-form textarea{
  width:100%;padding:12px 14px;border:1px solid var(--line-dark);background:var(--card);
  font-family:'IBM Plex Sans',sans-serif;font-size:.94rem;border-radius:2px;color:var(--ink);
}
.contact-form textarea{resize:vertical;min-height:110px;}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;}

@media (max-width: 980px){
  .mission-grid, .loc-grid, .contact-grid, .office-grid, .crosslink{grid-template-columns:1fr;}
  .dossier{grid-template-columns:repeat(2,1fr);}
  .gallery-grid{grid-template-columns:repeat(2,1fr);}
  .gallery-grid--single{grid-template-columns:minmax(0,760px);}
  .impact-grid, .stat-strip{grid-template-columns:1fr;}
  .process-row{grid-template-columns:1fr;gap:24px;}
  .trust-grid{grid-template-columns:1fr;gap:24px;}
  .foot-grid{grid-template-columns:1fr 1fr;}
  .donor-cta{grid-template-columns:1fr;text-align:left;}
  .hero .wrap, .hero.hero-page .wrap{grid-template-columns:1fr;}
  .compass-wrap{order:-1;max-width:260px;margin:0 auto 20px;}
  .hero-visual{order:-1;}
  .partner-row{grid-template-columns:1fr;gap:10px;}
}
@media (max-width: 680px){
  nav.primary{position:fixed;top:71px;left:0;right:0;bottom:0;overflow-y:auto;background:var(--paper);flex-direction:column;align-items:flex-start;padding:20px 24px;border-bottom:1px solid var(--line);gap:16px;display:none;}
  nav.primary.open{display:flex;}
  .nav-toggle{display:block;}
  .dossier{grid-template-columns:1fr;}
  .gallery-grid{grid-template-columns:1fr;}
  .foot-grid{grid-template-columns:1fr;}
  .wrap{padding:0 20px;}
  section{padding:64px 0;}
}
