:root{
  --blue:#0d88d3;
  --navy:#0b3552;
  --navy-deep:#082940;
  --green:#80cc28;
  --green-deep:#5a9a14;
  --gold:#fedd0f;
  --ink:#16242e;
  --slate:#4c6272;
  --paper:#ffffff;
  --mist:#f2f6f9;
  --line:#dce6ec;
  --radius:12px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
body{
  font-family:'Source Serif 4',Georgia,serif;
  font-size:17px;line-height:1.65;
  color:var(--ink);background:var(--paper);
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4,.sans{font-family:'Archivo',Helvetica,Arial,sans-serif}
.mono{font-family:'IBM Plex Mono',ui-monospace,monospace}
img{max-width:100%;display:block}
a{color:var(--blue)}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
a:focus-visible,button:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:4px}

/* ---------- Header ---------- */
header{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.96);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.nav{display:flex;align-items:center;justify-content:space-between;height:78px}
.nav-logo img{height:54px;width:auto}
.nav-links{display:flex;gap:6px;list-style:none;align-items:center}
.nav-links a{
  font-family:'Archivo',sans-serif;font-size:14px;font-weight:600;
  letter-spacing:.02em;text-decoration:none;color:var(--slate);
  padding:9px 14px;border-radius:6px;transition:color .15s,background .15s;
}
.nav-links a:hover{color:var(--navy);background:var(--mist)}
.nav-links a[aria-current="page"]{color:var(--navy);background:var(--mist)}
.nav-links a.nav-cta{background:var(--navy);color:#fff;margin-left:8px}
.nav-links a.nav-cta:hover{background:var(--blue)}
.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:6px;padding:8px 12px;font-family:'Archivo',sans-serif;font-weight:600;font-size:14px;color:var(--navy);cursor:pointer}
@media(max-width:900px){
  .nav-toggle{display:block}
  .nav-links{
    display:none;position:absolute;top:78px;left:0;right:0;
    flex-direction:column;align-items:stretch;gap:0;
    background:#fff;border-bottom:1px solid var(--line);padding:8px 16px 16px;
    box-shadow:0 18px 30px rgba(11,53,82,.12);
  }
  .nav-links.open{display:flex}
  .nav-links a{padding:14px 10px;border-radius:8px}
  .nav-links a.nav-cta{margin:8px 0 0;text-align:center}
}

/* ---------- Buttons ---------- */
.btn{
  font-family:'Archivo',sans-serif;font-weight:700;font-size:15px;
  padding:14px 26px;border-radius:8px;text-decoration:none;display:inline-block;
  transition:transform .15s,background .15s,border-color .15s;
}
.btn:hover{transform:translateY(-1px)}
.btn-green{background:var(--green);color:var(--navy-deep)}
.btn-green:hover{background:#8fdb35}
.btn-ghost{border:1.5px solid rgba(255,255,255,.4);color:#fff}
.btn-ghost:hover{border-color:#fff}
.btn-navy{background:var(--navy);color:#fff}
.btn-navy:hover{background:var(--blue)}

/* ---------- Hero (dark) ---------- */
.hero{
  background:linear-gradient(160deg,var(--navy) 0%,var(--navy-deep) 70%);
  color:#fff;position:relative;overflow:hidden;
}
.hero-grid{
  position:relative;z-index:2;display:grid;grid-template-columns:1.25fr .75fr;
  gap:48px;align-items:center;padding:88px 0 84px;
}
.eyebrow{
  font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--green);margin-bottom:22px;
}
.hero h1{
  font-size:clamp(33px,4.8vw,54px);font-weight:750;line-height:1.08;
  letter-spacing:-.015em;margin-bottom:24px;
}
.hero h1 em{font-style:normal;color:var(--gold)}
.hero p.lede{font-size:clamp(17px,1.6vw,19.5px);max-width:56ch;color:#c8d9e6;margin-bottom:36px}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap}
.route{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.45}
.route svg{width:100%;height:100%}
@media(max-width:900px){
  .hero-grid{grid-template-columns:1fr;padding:72px 0 64px}
  .hero-emblem{order:-1;justify-self:center}
}

/* ---------- Animated logo emblem ---------- */
.hero-emblem{position:relative;width:min(300px,64vw);aspect-ratio:1;justify-self:center}
.emblem-core{
  position:absolute;inset:13%;background:#fff;border-radius:50%;
  display:grid;place-items:center;
  box-shadow:0 24px 60px rgba(0,0,0,.35), 0 0 0 8px rgba(255,255,255,.05);
  animation:floaty 6s ease-in-out infinite;
}
.emblem-core img{width:66%}
.orbit{position:absolute;border-radius:50%;pointer-events:none}
.orbit.o1{inset:6%;border:1.5px dashed rgba(128,204,40,.75);animation:spin 26s linear infinite}
.orbit.o2{inset:0;border:1.5px dashed rgba(13,136,211,.55);animation:spin 40s linear infinite reverse}
.orbit-carrier{position:absolute;inset:0;animation:spin 14s linear infinite}
.orbit-carrier .dot{
  position:absolute;top:-7px;left:calc(50% - 7px);width:14px;height:14px;
  background:var(--gold);border-radius:50%;
  box-shadow:0 0 14px rgba(254,221,15,.9);
}
.orbit-carrier.c2{animation-duration:26s;animation-direction:reverse}
.orbit-carrier.c2 .dot{width:9px;height:9px;top:6%;left:calc(50% - 4.5px);background:var(--green)}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}

/* ---------- Page hero (subpages) ---------- */
.page-hero{
  background:linear-gradient(160deg,var(--navy) 0%,var(--navy-deep) 75%);
  color:#fff;padding:66px 0 58px;position:relative;overflow:hidden;
}
.page-hero h1{font-size:clamp(30px,4vw,44px);font-weight:750;letter-spacing:-.015em;line-height:1.1;margin-bottom:14px}
.page-hero p{color:#c8d9e6;font-size:18px;max-width:62ch}

/* ---------- Stats ---------- */
.stats{background:var(--navy-deep);border-top:1px solid rgba(255,255,255,.08);color:#fff}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,.08)}
.stat{background:var(--navy-deep);padding:26px 24px}
.stat .num{font-family:'Archivo',sans-serif;font-size:30px;font-weight:750;letter-spacing:-.01em}
.stat .lbl{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#8fb0c6;margin-top:4px}
@media(max-width:840px){.stats-grid{grid-template-columns:repeat(2,1fr)}}

/* ---------- Sections ---------- */
section{padding:84px 0}
section.tint{background:var(--mist)}
.sec-head{max-width:740px;margin-bottom:44px}
.sec-head .eyebrow{color:var(--green-deep)}
.sec-head h2{font-size:clamp(26px,3.2vw,36px);font-weight:750;letter-spacing:-.015em;color:var(--navy);line-height:1.15;margin-bottom:14px}
.sec-head p{color:var(--slate);font-size:18px}

/* ---------- Cards ---------- */
.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.card{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:30px 28px;transition:border-color .18s,box-shadow .18s,transform .18s;
}
.card:hover{border-color:var(--blue);box-shadow:0 10px 30px rgba(11,53,82,.1);transform:translateY(-3px)}
.card .tag{
  font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--blue);display:block;margin-bottom:12px;
}
.card h3{font-size:18.5px;font-weight:700;color:var(--navy);margin-bottom:10px;letter-spacing:-.01em}
.card p{font-size:15.5px;color:var(--slate);line-height:1.6}
.card a.more{font-family:'Archivo',sans-serif;font-weight:700;font-size:14px;text-decoration:none;display:inline-block;margin-top:14px}
@media(max-width:960px){.card-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.card-grid{grid-template-columns:1fr}}

/* ---------- Photo bands / figures ---------- */
.figure{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);background:#fff}
.figure img{width:100%;height:100%;object-fit:cover}
.figure figcaption{
  font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--slate);
  padding:12px 16px;border-top:1px solid var(--line);
}
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:center}
.split .prose p{margin-bottom:18px}
.split .prose p:last-child{margin-bottom:0}
@media(max-width:860px){.split{grid-template-columns:1fr;gap:32px}}

/* ---------- Story timeline (About) ---------- */
.story{display:grid;gap:0;max-width:860px}
.chapter{display:grid;grid-template-columns:150px 1fr;gap:34px;padding:34px 0;border-top:1px solid var(--line)}
.chapter:first-child{border-top:none;padding-top:0}
.chapter .when{
  font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--green-deep);padding-top:6px;
}
.chapter h3{font-size:21px;font-weight:750;color:var(--navy);letter-spacing:-.01em;margin-bottom:10px}
.chapter p{color:var(--slate)}
@media(max-width:640px){.chapter{grid-template-columns:1fr;gap:8px;padding:26px 0}}

/* ---------- Product cards ---------- */
.prod-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.prod{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;transition:border-color .18s,box-shadow .18s,transform .18s;
  display:flex;flex-direction:column;
}
.prod:hover{border-color:var(--green);box-shadow:0 12px 32px rgba(11,53,82,.1);transform:translateY(-3px)}
.prod .vis{height:150px;display:grid;place-items:center;background:linear-gradient(150deg,var(--mist),#e6eff5);position:relative;overflow:hidden}
.prod .vis svg{width:84px;height:84px}
.prod .vis img{width:100%;height:100%;object-fit:cover}
.prod .body{padding:24px 24px 26px}
.prod h3{font-size:18px;font-weight:750;color:var(--navy);margin-bottom:8px;letter-spacing:-.01em}
.prod p{font-size:15px;color:var(--slate);line-height:1.6}
@media(max-width:960px){.prod-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.prod-grid{grid-template-columns:1fr}}
.gallery{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:18px}
.gallery .figure{height:280px}
.gallery .figure img{height:100%}
@media(max-width:820px){.gallery{grid-template-columns:1fr 1fr}.gallery .figure:first-child{grid-column:1/-1}}

/* ---------- Formats strip ---------- */
.chips{display:flex;flex-wrap:wrap;gap:9px}
.chip{
  font-family:'Archivo',sans-serif;font-size:14px;font-weight:600;
  padding:8px 15px;border-radius:999px;background:var(--mist);color:var(--navy);
  border:1px solid var(--line);
}
.chip.src{background:#e8f4fc;border-color:#bfe0f4}
.chip.dst{background:#eef7e2;border-color:#cfe8ab}

/* ---------- Interactive map ---------- */
.map-frame{
  background:linear-gradient(165deg,var(--navy) 0%,var(--navy-deep) 80%);
  border-radius:var(--radius);padding:26px 22px 18px;position:relative;overflow:hidden;
}
.map-frame svg.worldmap{width:100%;height:auto;display:block}
.cty{fill:#17466a;stroke:#0b3552;stroke-width:.5;transition:fill .15s;cursor:default}
.cty.source{fill:var(--blue);cursor:pointer}
.cty.deliver{fill:var(--green);cursor:pointer}
.cty.source:hover,.cty.source.active{fill:#5cc0f5}
.cty.deliver:hover,.cty.deliver.active{fill:#a5e55b}
.map-legend{display:flex;gap:22px;flex-wrap:wrap;margin-top:14px}
.map-legend span{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#c8d9e6;display:flex;align-items:center;gap:8px}
.map-legend i{width:13px;height:13px;border-radius:3px;display:inline-block}
.map-tip{
  position:absolute;pointer-events:none;z-index:5;
  background:#fff;border-radius:8px;padding:12px 15px;min-width:190px;max-width:250px;
  box-shadow:0 12px 30px rgba(0,0,0,.3);opacity:0;transform:translateY(6px);
  transition:opacity .15s,transform .15s;
}
.map-tip.show{opacity:1;transform:none}
.map-tip .t-name{font-family:'Archivo',sans-serif;font-weight:750;font-size:15px;color:var(--navy)}
.map-tip .t-role{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;margin:3px 0 6px}
.map-tip .t-role.src{color:var(--blue)}
.map-tip .t-role.dst{color:var(--green-deep)}
.map-tip .t-desc{font-size:13.5px;color:var(--slate);line-height:1.45}
.pin{fill:var(--gold)}
.pulse{fill:none;stroke:var(--gold);stroke-width:1.5;opacity:0;transform-origin:center;animation:pulse 2.6s ease-out infinite}
@keyframes pulse{0%{opacity:.9;transform:scale(.4)}80%{opacity:0;transform:scale(2.4)}100%{opacity:0}}
.traderoute{stroke:var(--gold);stroke-width:1.6;fill:none;stroke-dasharray:3 7;stroke-linecap:round;animation:dashmove 2.4s linear infinite;opacity:.85}
@keyframes dashmove{to{stroke-dashoffset:-40}}

/* ---------- CTA band ---------- */
.cta-band{
  background:linear-gradient(150deg,var(--navy),var(--navy-deep));color:#fff;
  border-radius:var(--radius);padding:52px 48px;display:flex;align-items:center;
  justify-content:space-between;gap:28px;flex-wrap:wrap;
}
.cta-band h2{font-size:clamp(23px,2.8vw,31px);font-weight:750;letter-spacing:-.015em;max-width:22ch}
@media(max-width:640px){.cta-band{padding:38px 28px}}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;max-width:880px}
.c-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:32px 30px}
.c-card h3{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--green-deep);margin-bottom:14px}
.c-card p{font-size:16.5px;line-height:1.65}
.c-card a{font-family:'Archivo',sans-serif;font-weight:600;text-decoration:none}
.c-card a:hover{text-decoration:underline}
@media(max-width:720px){.contact-grid{grid-template-columns:1fr}}

/* ---------- Footer ---------- */
footer{background:#fff;border-top:1px solid var(--line);padding:36px 0}
.foot{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.foot img{height:44px}
.foot nav{display:flex;gap:18px;flex-wrap:wrap}
.foot nav a{font-family:'Archivo',sans-serif;font-size:13.5px;font-weight:600;color:var(--slate);text-decoration:none}
.foot nav a:hover{color:var(--navy)}
.foot p{font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--slate)}

/* ---------- Reveal ---------- */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .55s ease,transform .55s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}
