:root{
  --navy:#173a64;
  --navy-light:#1f6fb2;
  --gold:#418fde;
  --gold-light:#8fc1ec;
  --cream:#f4f8fb;
  --text:#1c2733;
  --muted:#5b6472;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
.topbar{
  background:#08152a;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  padding:.3rem 5%;
  gap:.6rem;
  flex-wrap:wrap;
}
body{
  font-family:'Georgia','Times New Roman',serif;
  color:var(--text);
  background:var(--cream);
  line-height:1.7;
}
header{
  position:relative;
  background:
    radial-gradient(circle at 12% 18%, rgba(143,193,236,.12) 0, transparent 45%),
    radial-gradient(circle at 88% 75%, rgba(143,193,236,.10) 0, transparent 40%),
    linear-gradient(135deg,var(--navy),var(--navy-light));
  background-size:cover;
  color:#fff;
  padding:2.2rem 5% 1.4rem;
  text-align:center;
  border-bottom:4px solid var(--gold);
  overflow:hidden;
}
header::before{
  content:"";
  position:absolute;
  inset:0;
  background-image:radial-gradient(rgba(255,255,255,.16) 1px, transparent 1.4px);
  background-size:26px 26px;
  opacity:.35;
  pointer-events:none;
}
header > *{position:relative;z-index:1;}
.book-menu-btn{
  position:relative;
  flex:0 0 auto;
  align-self:center;
  z-index:2;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.4rem;
  width:auto;
  height:auto;
  margin:.2rem .35rem .2rem .45rem;
  padding:.32rem .55rem;
  background:rgba(8,21,42,.35);
  border:1px solid var(--gold-light);
  border-radius:4px;
  cursor:pointer;
  color:#fff;
  transition:background .2s;
  font-family:Arial,sans-serif;
  font-size:.72rem;
  font-weight:bold;
  letter-spacing:.04em;
  white-space:nowrap;
}
.book-menu-btn:hover,
.book-menu-btn[aria-expanded="true"]{background:var(--gold);}
.book-menu-icon{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:4px;
  width:15px;
  flex-shrink:0;
}
.book-menu-icon span{
  display:block;
  height:2px;
  background:#fff;
  border-radius:1px;
  transform-origin:center;
  transition:transform .25s, opacity .2s;
}
body.book-open .book-menu-icon span:nth-child(1){transform:translateY(6px) rotate(45deg);}
body.book-open .book-menu-icon span:nth-child(2){opacity:0;}
body.book-open .book-menu-icon span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
header a.crest-link{text-decoration:none;}
header .crest{
  font-size:2.4rem;
  letter-spacing:.3em;
  color:var(--gold-light);
  font-weight:bold;
}
header h1{
  font-size:1.9rem;
  margin-top:.5rem;
  font-weight:normal;
  letter-spacing:.04em;
  color:#fff;
}
header p.subtitle{
  margin-top:.7rem;
  font-size:1.1rem;
  color:var(--gold-light);
  font-style:italic;
}
nav{
  background:var(--navy);
  position:sticky;
  top:0;
  z-index:100;
  box-shadow:0 2px 8px rgba(0,0,0,.25);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.4rem;
  flex-wrap:wrap;
  padding:0;
}
nav ul{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  list-style:none;
  flex:1 1 auto;
}
.nav-tools{
  position:fixed;
  right:1.15rem;
  bottom:1.15rem;
  z-index:200;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:.4rem;
  margin:0;
  width:auto;
  padding:.55rem .6rem;
  background:rgba(23,58,100,.95);
  border:1px solid rgba(143,193,236,.4);
  border-radius:8px;
  box-shadow:0 10px 28px rgba(8,21,42,.3);
}
.lang-switch{
  display:flex;
  align-items:center;
  gap:.3rem;
  padding:0;
  font-family:Arial, sans-serif;
  font-size:.8rem;
}
.lang-switch button{
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  background:none;
  border:1px solid var(--gold);
  color:#e8e8e8;
  padding:.3rem .6rem;
  border-radius:3px;
  cursor:pointer;
  font-size:.8rem;
  font-family:Arial, sans-serif;
  transition:background .2s, color .2s;
}
.lang-flag{
  width:18px;
  height:12px;
  border-radius:1px;
  flex-shrink:0;
  box-shadow:0 0 0 1px rgba(255,255,255,.15);
}
.lang-switch button:hover{
  background:var(--gold);
  color:#fff;
}
.lang-switch button.active-lang{
  background:var(--gold-light);
  color:var(--navy);
  font-weight:bold;
  border-color:var(--gold-light);
}
html[data-lang="en"] .fr{display:none;}
html[data-lang="fr"] .en{display:none;}
html:not([data-lang]) .en{display:none;}
.site-switch-btn{
  display:flex;
  align-items:center;
  padding:0;
  font-family:Arial, sans-serif;
}
.site-switch-btn a{
  background:var(--gold);
  color:#fff;
  text-decoration:none;
  font-size:.8rem;
  font-weight:bold;
  letter-spacing:.03em;
  padding:.4rem .8rem;
  border-radius:3px;
  white-space:nowrap;
  transition:background .2s;
}
.site-switch-btn a:hover{background:var(--gold-light);color:var(--navy);}
.sticky-admission a{
  background:#fff;
  color:var(--navy);
  border:1px solid var(--gold-light);
}
.nav-tools-toggle{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:1.75rem;
  height:1.75rem;
  padding:0 .45rem;
  background:none;
  border:1px solid var(--gold);
  color:#e8e8e8;
  border-radius:3px;
  cursor:pointer;
  font-family:Arial, sans-serif;
  font-size:.85rem;
  font-weight:bold;
  line-height:1;
}
.nav-tools-toggle:hover{
  background:var(--gold);
  color:#fff;
}
.nav-tools.is-minimized{
  padding:.4rem;
  gap:0;
}
.nav-tools.is-minimized > :not(.nav-tools-toggle){
  display:none !important;
}
nav ul li a{
  display:block;
  padding:.85rem 1.1rem;
  color:#e8e8e8;
  text-decoration:none;
  font-family:Arial, sans-serif;
  font-size:.85rem;
  letter-spacing:.03em;
  transition:background .2s, color .2s;
}
nav ul li a:hover{
  background:var(--gold);
  color:#fff;
}
nav ul li a.active{
  background:var(--gold-light);
  color:var(--navy);
  font-weight:bold;
}
main{max-width:1000px;margin:0 auto;padding:0 5%;}
section{padding:3.2rem 0;}
h2{
  color:var(--navy);
  font-size:1.7rem;
  margin-bottom:.3rem;
  border-left:5px solid var(--gold);
  padding-left:.8rem;
}
h2 + .quote{
  margin:1rem 0 1.4rem .9rem;
  font-style:italic;
  color:var(--muted);
}
h3{
  color:var(--navy-light);
  font-size:1.2rem;
  margin:1.6rem 0 .6rem;
}
h4{
  color:var(--navy);
  font-size:1rem;
  margin:1.3rem 0 .4rem;
  text-transform:uppercase;
  letter-spacing:.04em;
  font-family:Arial, sans-serif;
}
p{margin-bottom:1rem;text-align:justify;}
ul.content-list{margin:.5rem 0 1.2rem 1.4rem;}
ul.content-list li{margin-bottom:.45rem;}
.highlight-box{
  background:#fff;
  border:1px solid #d4e3f3;
  border-left:5px solid var(--navy);
  padding:1.4rem 1.6rem;
  margin:1.4rem 0;
  border-radius:2px;
}
.signers{
  background:var(--navy);
  color:#eee;
  padding:1.4rem 1.6rem;
  border-radius:4px;
  font-family:Arial, sans-serif;
  font-size:.92rem;
  margin:1.4rem 0;
  text-align:center;
}
.signers strong{color:var(--gold-light);}
.curriculum-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:1.4rem;
  margin-top:1.4rem;
}
.curriculum-card{
  background:#fff;
  border:1px solid #d4e3f3;
  border-top:4px solid var(--gold);
  padding:1.3rem 1.4rem;
  border-radius:3px;
}
.curriculum-card h4{margin-top:0;}
.curriculum-card ul{margin:.4rem 0 0 1.1rem;font-size:.95rem;}
.curriculum-card ul li{margin-bottom:.4rem;}
.partners-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:1.4rem;
  margin-top:1rem;
}
.partner-card{
  background:#fff;
  border:1px solid #d4e3f3;
  padding:1.3rem 1.4rem;
  border-radius:3px;
}
.partner-card a{color:var(--navy-light);text-decoration:none;font-weight:bold;}
.partner-card a:hover{text-decoration:underline;}
.timeline{margin-top:1.2rem;}
.timeline-item{
  background:#fff;
  border:1px solid #d4e3f3;
  border-left:5px solid var(--navy-light);
  padding:1.1rem 1.4rem;
  margin-bottom:1rem;
  border-radius:2px;
}
.timeline-item h4{margin-top:0;color:var(--gold);}
.committee-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:1.2rem;
  margin-top:1.2rem;
}
.committee-card{
  background:#fff;
  border:1px solid #d4e3f3;
  padding:1.1rem 1.3rem;
  border-radius:3px;
}
.committee-card h4{margin-top:0;color:var(--navy);}
.committee-card p{font-size:.92rem;margin-bottom:0;}
table.admin-table{
  width:100%;
  border-collapse:collapse;
  margin-top:1.2rem;
  font-family:Arial, sans-serif;
  font-size:.92rem;
}
table.admin-table td{
  padding:.5rem .8rem;
  border-bottom:1px solid #d4e3f3;
}
.contact-box{
  background:var(--navy);
  color:#fff;
  padding:1.8rem 2rem;
  border-radius:4px;
  margin-top:1.4rem;
  text-align:center;
}
.contact-box a{color:var(--gold-light);text-decoration:none;}
.contact-box a:hover{text-decoration:underline;}
.btn{
  display:inline-block;
  margin-top:1rem;
  background:var(--gold);
  color:#fff;
  padding:.7rem 1.6rem;
  border-radius:3px;
  text-decoration:none;
  font-family:Arial, sans-serif;
  font-weight:bold;
  font-size:.9rem;
}
.btn:hover{background:var(--navy-light);}
.home-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:1.4rem;
  margin-top:1.8rem;
}
.home-card{
  background:#fff;
  border:1px solid #d4e3f3;
  border-top:4px solid var(--gold);
  padding:1.4rem 1.5rem;
  border-radius:3px;
  text-decoration:none;
  color:var(--text);
  display:block;
  transition:transform .15s, box-shadow .15s;
}
.home-card:hover{
  transform:translateY(-3px);
  box-shadow:0 6px 16px rgba(0,0,0,.12);
}
.home-card h3{margin-top:0;color:var(--navy);}
.home-card p{margin-bottom:0;font-size:.92rem;color:var(--muted);text-align:left;}
.caps{font-weight:bold;color:var(--navy);}
.page-nav-footer{
  display:flex;
  justify-content:space-between;
  gap:.8rem;
  flex-wrap:wrap;
  margin-top:2rem;
  padding-top:1.5rem;
  border-top:1px solid #d4e3f3;
  font-family:Arial, sans-serif;
  font-size:.9rem;
}
.page-nav-footer a{
  display:inline-block;
  background:var(--navy);
  color:#fff;
  text-decoration:none;
  font-weight:bold;
  padding:.55rem 1.15rem;
  border-radius:3px;
}
.page-nav-footer a:hover{
  background:var(--navy-light);
  color:#fff;
  text-decoration:none;
}
footer{
  background:var(--navy);
  color:#bbb;
  text-align:center;
  padding:1.8rem 5%;
  font-size:.85rem;
  font-family:Arial, sans-serif;
}
footer strong{color:var(--gold-light);}
footer .footer-address{
  margin-top:.9rem;
  padding-top:.9rem;
  border-top:1px solid rgba(255,255,255,.15);
  line-height:1.6;
}
footer .footer-address a{color:var(--gold-light);text-decoration:none;}
footer .footer-address a:hover{text-decoration:underline;}

/* ===== Rich footer (brand / quick links / contact) ===== */
footer:has(.footer-grid){text-align:left;}
.footer-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:2.5rem;
  width:100%;
  margin-bottom:1.2rem;
  text-align:left;
  align-items:start;
  padding-bottom:1.4rem;
  border-bottom:1px solid rgba(255,255,255,.15);
}
.footer-col h4{
  color:var(--gold-light);
  font-size:.75rem;
  letter-spacing:.07em;
  text-transform:uppercase;
  margin:0 0 .8rem;
  line-height:1.3;
}
.footer-brand p{color:#c7d4e0;}
.footer-col p{margin-bottom:.6rem;line-height:1.6;}
.footer-col p:last-child{margin-bottom:0;}
.footer-links ul{list-style:none;}
.footer-links li{margin-bottom:.5rem;}
.footer-links a, .footer-contact a{color:#c7d4e0;text-decoration:none;}
.footer-links a:hover, .footer-contact a:hover{color:var(--gold-light);text-decoration:underline;}
.footer-bottom{text-align:center;padding-top:.2rem;font-size:.78rem;color:#9fb3c8;}
@media (max-width:760px){
  .footer-grid{grid-template-columns:1fr;text-align:center;}
  nav{padding:.15rem .5rem .35rem;justify-content:center;}
  .nav-tools{right:.7rem;bottom:.7rem;width:auto;}
}

/* ===== Hero banner ===== */
.hero{
  position:relative;
  width:100vw;
  max-width:100vw;
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
  padding:3rem 0 2.5rem;
}
.hero-inner{
  width:100%;
  max-width:none;
  margin:0 auto;
  padding:0 clamp(1.5rem, 5vw, 4.5rem);
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(280px,1fr);
  gap:clamp(2rem, 5vw, 5rem);
  align-items:center;
}
.hero-carousel{
  display:flex;
  align-items:center;
  gap:.65rem;
}
.hero-carousel .hero-slides{flex:1;min-width:0;}
.hero-arrow{
  flex-shrink:0;
  width:44px;
  height:44px;
  border-radius:50%;
  border:1px solid #d4e3f3;
  background:#fff;
  color:var(--navy);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  box-shadow:0 4px 14px rgba(23,58,100,.12);
  transition:background .2s, color .2s, box-shadow .2s;
  z-index:2;
  pointer-events:auto;
}
.hero-arrow:hover{background:var(--gold);color:#fff;box-shadow:0 6px 18px rgba(23,58,100,.22);}
.hero-arrow svg{pointer-events:none;}
.hero-pause .icon-play{display:none;}
.hero-pause.is-paused .icon-pause{display:none;}
.hero-pause.is-paused .icon-play{display:block;}
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
@media (max-width:760px){
  .hero-arrow{width:36px;height:36px;}
  .hero-carousel{gap:.4rem;}
}
.hero-text h2{border-left:none;padding-left:0;font-size:clamp(1.65rem,2.4vw,2.5rem);margin-bottom:.8rem;line-height:1.25;}
.hero-text p{font-size:clamp(1rem,1.15vw,1.12rem);max-width:62ch;}
.hero-cta{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:1rem;}
.hero-cta .btn{margin-top:0;}
.hero-cta .btn-outline{
  display:inline-block;
  padding:.7rem 1.6rem;
  border:2px solid var(--navy);
  color:var(--navy);
  border-radius:3px;
  text-decoration:none;
  font-family:Arial, sans-serif;
  font-weight:bold;
  font-size:.9rem;
  transition:background .2s, color .2s;
}
.hero-cta .btn-outline:hover{background:var(--navy);color:#fff;}
.hero-art{display:flex;justify-content:center;align-items:center;}
.hero-art-stack{
  position:relative;
  width:100%;
  max-width:min(480px,42vw);
  margin:0 auto;
  aspect-ratio:1;
}
.hero-art-panel{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  opacity:0;
  visibility:hidden;
  transform:scale(.96) translateX(16px);
  transition:opacity 1.2s ease, transform 1.2s ease, visibility 1.2s;
  pointer-events:none;
}
.hero-art-panel.active{
  opacity:1;
  visibility:visible;
  transform:scale(1) translateX(0);
  pointer-events:auto;
  animation:hero-art-in 1.4s ease forwards;
}
@keyframes hero-art-in{
  from{opacity:0;transform:scale(.97) translateX(20px);}
  to{opacity:1;transform:scale(1) translateX(0);}
}
.hero-art-panel svg{width:100%;max-width:100%;height:auto;}

/* ===== Hero text slideshow ===== */
.hero-slides{position:relative;min-height:220px;}
.hero-slide{
  display:none;
  opacity:0;
}
.hero-slide.active{
  display:block;
  animation:hero-slide-in 1.4s ease forwards;
}
@keyframes hero-slide-in{
  from{opacity:0;transform:translateX(-24px);}
  to{opacity:1;transform:translateX(0);}
}
.hero-dots{
  display:flex;
  gap:.5rem;
  margin-top:1.6rem;
}
.hero-dot{
  width:10px;
  height:10px;
  border-radius:50%;
  border:none;
  background:#d4e3f3;
  cursor:pointer;
  padding:0;
  transition:background .2s, transform .2s;
}
.hero-dot:hover{transform:scale(1.2);}
.hero-dot.active{background:var(--gold);width:26px;border-radius:5px;}
@media (max-width:760px){
  .hero-dots{justify-content:center;}
}

/* orbiting globe animation used in hero art */
@keyframes orbit-spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
@keyframes orbit-spin-rev{from{transform:rotate(360deg);}to{transform:rotate(0deg);}}
@keyframes pulse-dot{0%,100%{opacity:.4;}50%{opacity:1;}}
@keyframes dash-flow{to{stroke-dashoffset:-24;}}
@keyframes timeline-fill{from{width:0;}to{width:100%;}}
@keyframes ring-pulse{0%,100%{transform:scale(1);opacity:.55;}50%{transform:scale(1.4);opacity:.15;}}
.orbit-ring{transform-origin:center;animation:orbit-spin 18s linear infinite;}
.orbit-ring-rev{transform-origin:center;animation:orbit-spin-rev 24s linear infinite;}
.orbit-dot{animation:pulse-dot 3s ease-in-out infinite;}
.anim-dash{stroke-dasharray:5 7;animation:dash-flow 1.8s linear infinite;}
.anim-ring-pulse{transform-origin:center;animation:ring-pulse 2.4s ease-in-out infinite;}
@keyframes africa-route-draw{
  0%,4%{stroke-dashoffset:1;opacity:.15;}
  8%,18%{stroke-dashoffset:0;opacity:1;}
  22%,100%{stroke-dashoffset:0;opacity:.12;}
}
.africa-route{
  fill:none;
  stroke:#2ea8c9;
  stroke-width:2;
  stroke-linecap:round;
  stroke-dasharray:1;
  stroke-dashoffset:1;
}
.africa-route-1{animation:africa-route-draw 10s ease infinite 0s;}
.africa-route-2{animation:africa-route-draw 10s ease infinite 2s;}
.africa-route-3{animation:africa-route-draw 10s ease infinite 4s;}
.africa-route-4{animation:africa-route-draw 10s ease infinite 6s;}
.africa-route-5{animation:africa-route-draw 10s ease infinite 8s;}
.africa-route-label{font-family:Arial,sans-serif;font-size:8px;fill:#173a64;}

@media (max-width:760px){
  .hero-inner{grid-template-columns:1fr;text-align:center;padding:0 1.25rem;}
  .hero-text p{max-width:none;margin-left:auto;margin-right:auto;}
  .hero-cta{justify-content:center;}
  .hero-art-stack{max-width:min(320px,88vw);}
}

/* ===== Card icons ===== */
.card-icon{
  width:38px;
  height:38px;
  margin-bottom:.6rem;
  color:var(--gold);
}
.card-icon path, .card-icon circle, .card-icon rect, .card-icon line, .card-icon polyline{
  vector-effect:non-scaling-stroke;
}

/* ===== Partner / trust badge row ===== */
.partners-band{
  background:#fff;
  border-top:1px solid #d4e3f3;
  border-bottom:1px solid #d4e3f3;
  padding:1.6rem 0;
  margin:1rem 0 2rem;
  text-align:center;
}
.partners-band p{
  font-family:Arial, sans-serif;
  font-size:.75rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--muted);
  margin-bottom:1rem;
}
.badge-row{
  display:flex;
  justify-content:center;
  flex-wrap:wrap;
  gap:.7rem;
}
.badge{
  font-family:Arial, sans-serif;
  font-size:.78rem;
  font-weight:bold;
  letter-spacing:.04em;
  color:var(--navy);
  background:var(--cream);
  border:1px solid #d4e3f3;
  border-radius:20px;
  padding:.45rem 1.1rem;
}

/* ===== Media / video showcase ===== */
.media-card{
  position:relative;
  border-radius:6px;
  overflow:hidden;
  background:var(--navy);
  aspect-ratio:16/9;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:default;
  box-shadow:0 10px 28px rgba(11,31,58,.25);
}
.media-card svg.media-bg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}
.play-button{
  position:relative;
  z-index:2;
  width:64px;
  height:64px;
  border-radius:50%;
  background:rgba(143,193,236,.92);
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 4px 18px rgba(0,0,0,.35);
  transition:transform .2s;
}
.media-card:hover .play-button{transform:scale(1.08);}
.play-button svg{width:24px;height:24px;fill:var(--navy);margin-left:2px;}
.media-caption{
  position:absolute;
  left:0; right:0; bottom:0;
  z-index:2;
  padding:.9rem 1.2rem;
  background:linear-gradient(to top, rgba(11,31,58,.85), transparent);
  color:#fff;
  font-family:Arial, sans-serif;
  font-size:.85rem;
  text-align:left;
}
.media-caption strong{display:block;color:var(--gold-light);font-size:.95rem;margin-bottom:.15rem;}
.media-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:1.4rem;
  margin-top:1.2rem;
}

/* ===== Interactive hero (tilt / parallax) ===== */
.hero-art{cursor:grab;}
.hero-art:active{cursor:grabbing;}
.hero-art .tilt-inner{
  position:relative;
  display:inline-block;
  width:100%;
  transition:transform .15s ease-out;
  transform-style:preserve-3d;
  will-change:transform;
}
.orbit-dot{cursor:pointer;}
.orbit-dot:hover{r:7;}

/* ===== Map marker hover tooltip ===== */
.map-hotspot{
  position:absolute;
  width:36px;
  height:36px;
  margin-left:-18px;
  margin-top:-18px;
  border-radius:50%;
  cursor:pointer;
  z-index:5;
}
.map-tooltip{
  position:absolute;
  width:230px;
  transform:translate(-50%, -100%) translateY(-16px);
  background:#fff;
  border:1px solid #d4e3f3;
  border-radius:6px;
  box-shadow:0 12px 28px rgba(23,58,100,.2);
  padding:.85rem 1rem;
  font-family:Arial, sans-serif;
  font-size:.76rem;
  line-height:1.55;
  color:var(--text);
  text-align:left;
  opacity:0;
  visibility:hidden;
  transition:opacity .18s ease, visibility .18s ease;
  z-index:10;
}
.map-tooltip strong{
  display:block;
  color:var(--navy);
  font-size:.82rem;
  margin-bottom:.35rem;
}
.map-tooltip a{color:var(--navy-light);text-decoration:none;}
.map-tooltip a:hover{text-decoration:underline;}
.map-hotspot:hover + .map-tooltip,
.map-tooltip:hover{
  opacity:1;
  visibility:visible;
}

/* ===== Photo gallery / archive ===== */
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:1.8rem;
  margin-top:1.6rem;
}
.photo-frame{
  background:#fff;
  padding:.6rem .6rem 1rem;
  border-radius:4px;
  box-shadow:0 6px 18px rgba(23,58,100,.12), 0 1px 3px rgba(23,58,100,.08);
  transition:transform .25s ease, box-shadow .25s ease;
  text-align:center;
}
.photo-frame:nth-child(odd){transform:rotate(-1.2deg);}
.photo-frame:nth-child(even){transform:rotate(1.2deg);}
.photo-frame:hover{
  transform:translateY(-6px) rotate(0deg) scale(1.03);
  box-shadow:0 16px 34px rgba(23,58,100,.22);
  z-index:2;
}
.photo-frame img{
  width:100%;
  display:block;
  border-radius:2px;
  filter:saturate(1.02);
}
.photo-frame figcaption{
  font-family:Arial, sans-serif;
  font-size:.78rem;
  color:var(--muted);
  margin-top:.6rem;
  line-height:1.4;
}
.photo-frame figcaption strong{display:block;color:var(--navy);font-size:.85rem;margin-bottom:.15rem;}

/* ===== Partner logo strip ===== */
.logo-strip{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:2.2rem;
  flex-wrap:wrap;
  margin-top:1rem;
}
.logo-strip img{
  height:48px;
  width:auto;
  filter:grayscale(.15);
  opacity:.92;
  transition:transform .2s, opacity .2s;
}
.logo-strip img:hover{transform:scale(1.08);opacity:1;}

/* ===== Africa continent art ===== */
.africa-map-pin{
  transition:transform .2s;
  transform-origin:center;
}
.africa-map-pin:hover{transform:scale(1.3);}
.continent-fill{
  fill:url(#africaGradient);
  opacity:.18;
}

/* ===== Book menu overlay ===== */
body.book-open{overflow:hidden;}
.book-overlay{
  position:fixed;
  inset:0;
  z-index:400;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:1.1rem;
  background:rgba(8,21,42,.62);
  opacity:0;
  pointer-events:none;
  transition:opacity .35s ease;
}
.book-overlay.is-open{
  opacity:1;
  pointer-events:auto;
}
.book-spread{
  position:relative;
  display:grid;
  grid-template-columns:minmax(230px,32%) 1fr;
  width:min(1180px,calc(100vw - 2rem));
  height:min(840px,calc(100vh - 2rem));
  background:#f4ead6;
  border-radius:3px 10px 10px 3px;
  box-shadow:
    -10px 0 0 #10243f,
    10px 0 0 #10243f,
    0 0 0 1px rgba(255,255,255,.12),
    0 28px 70px rgba(8,21,42,.5);
  transform:perspective(1800px) rotateY(-88deg) scale(.92);
  transform-origin:left center;
  transition:transform .7s cubic-bezier(.16,.84,.32,1);
  overflow:hidden;
}
.book-overlay.is-open .book-spread{
  transform:none;
  overflow:hidden;
}
.book-spread::before{
  content:"";
  position:absolute;
  left:32%;
  top:0;
  bottom:0;
  width:36px;
  margin-left:-18px;
  background:linear-gradient(90deg,rgba(40,24,8,.22),rgba(255,255,255,.18) 45%,rgba(40,24,8,.16));
  pointer-events:none;
  z-index:4;
}
.book-page{
  position:relative;
  display:flex;
  flex-direction:column;
  min-width:0;
  min-height:0;
  background:
    linear-gradient(90deg,rgba(80,50,20,.07),transparent 42px),
    #f7f1e3;
}
.book-page-left{
  border-right:1px solid rgba(80,50,20,.12);
  background:
    linear-gradient(90deg,rgba(80,50,20,.1),transparent 36px),
    #efe6d4;
}
.book-page-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.6rem;
  padding:1rem 1.15rem .75rem;
  border-bottom:1px solid rgba(80,50,20,.12);
  flex-shrink:0;
}
.book-page-head h2{
  margin:0;
  font-size:1.05rem;
  color:var(--navy);
  letter-spacing:.04em;
}
.book-page-kicker{
  display:block;
  font-family:Arial,sans-serif;
  font-size:.68rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted);
  margin-bottom:.15rem;
}
.book-close,
.book-back-toc{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:2rem;
  height:2rem;
  padding:0 .45rem;
  background:none;
  border:1px solid rgba(23,58,100,.28);
  color:var(--navy);
  border-radius:3px;
  cursor:pointer;
  font-family:Arial,sans-serif;
  font-size:.95rem;
  font-weight:bold;
}
.book-close:hover,
.book-back-toc:hover{background:var(--navy);color:#fff;border-color:var(--navy);}
.book-back-toc{display:none;font-size:.78rem;font-weight:bold;letter-spacing:.04em;}
.book-head-actions{
  display:flex;
  align-items:center;
  gap:.45rem;
  flex-shrink:0;
}
.book-lang-switch{
  display:flex;
  align-items:center;
  gap:.25rem;
}
.book-lang-switch button{
  display:inline-flex;
  align-items:center;
  gap:.3rem;
  background:#fff;
  border:1px solid rgba(23,58,100,.22);
  color:var(--navy);
  padding:.22rem .45rem;
  border-radius:3px;
  cursor:pointer;
  font-family:Arial,sans-serif;
  font-size:.72rem;
  letter-spacing:.03em;
}
.book-lang-switch button:hover{border-color:var(--gold);}
.book-lang-switch button.active-lang{
  background:var(--navy);
  color:#fff;
  border-color:var(--navy);
  font-weight:bold;
}
.book-toc{
  list-style:none;
  overflow:auto;
  padding:.5rem 0 1.2rem;
  flex:1;
  min-height:0;
}
.book-toc-item{
  display:block;
  width:100%;
  text-align:left;
  background:none;
  border:0;
  border-left:3px solid transparent;
  padding:.55rem 1.15rem;
  cursor:pointer;
  color:var(--navy);
  font:inherit;
  font-size:.92rem;
  line-height:1.35;
}
.book-page-right .book-page-head > div{flex:1;min-width:0;}
.book-toc-item:hover{background:rgba(255,255,255,.45);}
.book-toc-item.is-active{
  border-left-color:var(--gold);
  background:rgba(255,255,255,.7);
  font-weight:bold;
}
.book-page-right{
  position:relative;
  z-index:2;
  overflow:hidden;
}
.book-sheet{
  position:relative;
  flex:1;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  perspective:1800px;
}
.book-sheet::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:5;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(30,16,4,.22),transparent 55%);
  opacity:0;
}
.book-sheet.is-flipping::after{
  animation:paperShade 1.25s ease;
}
.book-page-content{
  flex:1;
  overflow:auto;
  padding:1.1rem 1.4rem 1.8rem 1.7rem;
  color:var(--text);
  min-height:0;
}
.book-page-content section{padding:0 0 1.5rem;}
.book-page-content section:last-child{padding-bottom:0;}
.book-page-content h2,
.book-page-content h3{color:var(--navy);}
.book-page-content img,
.book-page-content svg,
.book-page-content iframe{max-width:100%;height:auto;}
.book-placeholder{
  min-height:60%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  color:var(--muted);
  padding:2rem 1rem;
  font-style:italic;
}
.book-external{
  max-width:28rem;
  margin:2.5rem auto;
  text-align:center;
  padding:1.6rem 1.4rem;
  background:#fff;
  border:1px solid #d7e4f0;
  border-left:4px solid var(--gold);
}
.book-external .btn{margin-top:.6rem;}
.book-leaf{
  position:absolute;
  inset:0;
  z-index:6;
  transform-origin:left center;
  transform-style:preserve-3d;
  pointer-events:none;
  visibility:hidden;
}
.book-leaf.is-flipping{
  visibility:visible;
  animation:paperFlipPage 1.25s ease-in-out forwards;
}
.book-overlay[data-flip="curl"] .book-leaf{
  transform-origin:top right;
  transform-style:flat;
}
.book-overlay[data-flip="curl"] .book-leaf.is-flipping{
  animation:paperFlipCurl 1.3s ease-in-out forwards;
}
.book-overlay[data-flip="slide"] .book-leaf{
  transform-origin:center;
  transform-style:flat;
}
.book-overlay[data-flip="slide"] .book-leaf.is-flipping{
  animation:paperFlipSlide 1.2s ease-in-out forwards;
}
.book-overlay[data-flip="fade"] .book-leaf{
  transform-origin:center;
  transform-style:flat;
}
.book-overlay[data-flip="fade"] .book-leaf.is-flipping{
  animation:paperFlipFade 1.1s ease forwards;
}
.book-leaf-front,
.book-leaf-back{
  position:absolute;
  inset:0;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  overflow:hidden;
}
.book-leaf-front{
  padding:1.1rem 1.4rem 1.8rem 1.7rem;
  background:
    linear-gradient(90deg,rgba(80,50,20,.08),transparent 36px),
    #f7f1e3;
  box-shadow:4px 0 12px rgba(20,10,0,.14);
  transform:rotateY(0deg);
}
.book-leaf-back{
  background:
    linear-gradient(90deg,rgba(70,42,12,.2),#e7d9bf 16%,#efe4ce);
  transform:rotateY(180deg);
}
.book-overlay[data-flip="curl"] .book-leaf-back,
.book-overlay[data-flip="slide"] .book-leaf-back,
.book-overlay[data-flip="fade"] .book-leaf-back{display:none;}
@keyframes paperFlipPage{
  0%{transform:rotateY(0deg) scale(1);}
  45%{transform:rotateY(-88deg) scale(.86);}
  100%{transform:rotateY(-180deg) scale(.82);}
}
@keyframes paperFlipCurl{
  0%{transform:rotate(0) scale(1);clip-path:inset(0 0 0 0);}
  55%{transform:rotate(-7deg) scale(.97);clip-path:inset(0 28% 0 0);}
  100%{transform:rotate(-12deg) scale(.94);clip-path:inset(0 100% 0 0);opacity:0;}
}
@keyframes paperFlipSlide{
  0%{transform:translateX(0);}
  100%{transform:translateX(-100%);}
}
@keyframes paperFlipFade{
  0%{opacity:1;}
  100%{opacity:0;}
}
@keyframes paperShade{
  0%{opacity:.28;}
  55%{opacity:.1;}
  100%{opacity:0;}
}
.book-flip-styles{
  flex-shrink:0;
  padding:.55rem 1.05rem .85rem;
  border-top:1px solid rgba(80,50,20,.12);
}
.book-flip-style-btns{
  display:flex;
  flex-wrap:wrap;
  gap:.3rem;
  margin-top:.3rem;
}
.book-flip-style-btns button{
  background:#fff;
  border:1px solid rgba(23,58,100,.22);
  color:var(--navy);
  border-radius:3px;
  padding:.22rem .5rem;
  cursor:pointer;
  font-family:Arial,sans-serif;
  font-size:.72rem;
  letter-spacing:.03em;
}
.book-flip-style-btns button:hover{border-color:var(--gold);}
.book-flip-style-btns button.is-active{
  background:var(--navy);
  color:#fff;
  border-color:var(--navy);
}
@media (prefers-reduced-motion:reduce){
  .book-leaf.is-flipping{animation-duration:.01s;}
  .book-sheet.is-flipping::after{animation:none;}
}
.book-page-content .hero{
  width:100%;
  max-width:100%;
  margin:0 0 1rem;
  padding:0;
}
.book-page-content .hero-inner{
  grid-template-columns:1fr;
  padding:0;
  gap:1rem;
}
.book-page-content .hero-art-stack,
.book-page-content .hero-art,
.book-page-content .hero-arrow,
.book-page-content .hero-pause,
.book-page-content .hero-dots,
.book-page-content .hero-carousel > .hero-arrow-prev,
.book-page-content .hero-carousel > .hero-arrow-next{display:none !important;}
.book-page-content .hero-slide{display:block !important;}
.book-page-content .hero-slide[hidden]{display:none !important;}
.book-page-content .hero-slide:not(.active){display:none !important;}
html.book-embed header,
html.book-embed nav,
html.book-embed footer,
html.book-embed .nav-tools,
html.book-embed .book-menu-btn,
html.book-embed .book-overlay{display:none !important;}
html.book-embed body{background:#f7f1e3;}
html.book-embed main{width:100%;max-width:none;margin:0;padding:1rem 1.2rem 2rem;}
@media (max-width:780px){
  .book-overlay{padding:.45rem;}
  .book-spread{
    grid-template-columns:1fr;
    height:calc(100vh - .9rem);
    width:calc(100vw - .9rem);
    border-radius:8px;
    transform-origin:center;
  }
  .book-spread::before{
    left:0;right:0;top:auto;bottom:auto;width:auto;height:18px;margin:0;
    background:linear-gradient(#efe6d4,rgba(40,24,8,.12),#f7f1e3);
  }
  .book-overlay.is-open .book-spread.is-reading .book-page-left{display:none;}
  .book-overlay.is-open .book-spread.is-reading .book-back-toc{display:inline-flex;}
  .book-page-left{max-height:100%;}
}

