@import url("fonts.css");

/* ============ TOKENS ============ */
:root{
  --gold:#E09818; --gold-bright:#F2A92A; --gold-deep:#9A6A10;
  --navy:#111923; --navy-2:#1A2533; --navy-3:#0D141D; --charcoal:#2B3543;
  --white:#fff; --off-white:#F6F7F9; --line:#E3E6EA;
  --gray-600:#5B6573; --gray-300:#AEB6C0; --gray-500:#8B95A2;

  --font-display:"Barlow Semi Condensed",system-ui,sans-serif;
  --font-body:"Inter",system-ui,sans-serif;

  --container:1200px; --container-wide:1360px;
  --gutter:clamp(1.25rem,4vw,3rem);
  --section-y:clamp(4rem,8vw,7rem);
  --radius:6px; --shadow:0 10px 30px rgba(17,25,35,.10);
}

/* ============ BASE ============ */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth; scroll-padding-top:80px; -webkit-text-size-adjust:100%}
/* Lenis momentum scroll base styles */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto !important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}
body{
  margin:0; font-family:var(--font-body); color:var(--charcoal);
  font-size:1rem; line-height:1.7; background:var(--white);
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%; display:block; height:auto}
a{color:inherit; text-decoration:none}
h1,h2,h3{font-family:var(--font-display); font-weight:700; line-height:1.08; color:var(--charcoal); margin:0}
p{margin:0 0 1rem}
.container{max-width:var(--container); margin:0 auto; padding-inline:var(--gutter)}
.container-wide{max-width:var(--container-wide); margin:0 auto; padding-inline:var(--gutter)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}
:focus-visible{outline:3px solid var(--gold); outline-offset:2px}

/* ============ TYPE HELPERS ============ */
.eyebrow{
  display:inline-block; font-family:var(--font-display); font-weight:600;
  font-size:.8125rem; letter-spacing:.14em; text-transform:uppercase; color:var(--gold);
  margin-bottom:.6rem;
}
.section-rule{width:40px; height:3px; background:var(--gold); margin-bottom:1rem; border:0}
.h2{font-size:clamp(1.9rem,3.5vw,2.75rem)}
.lead{font-size:1.125rem; color:var(--gray-600)}
.section-head{max-width:680px; margin-bottom:2.5rem}

/* ============ BUTTONS ============ */
.btn{
  display:inline-flex; align-items:center; gap:.5rem; cursor:pointer;
  font-family:var(--font-display); font-weight:600; font-size:.95rem;
  letter-spacing:.04em; text-transform:uppercase; padding:.85em 1.6em;
  border-radius:var(--radius); border:1.5px solid transparent; transition:.18s ease;
  -webkit-backdrop-filter:blur(10px) saturate(1.3); backdrop-filter:blur(10px) saturate(1.3);
}
.btn-gold{background:rgba(245,172,32,.56); color:#1a1206; box-shadow:inset 0 1px 0 rgba(255,255,255,.40); -webkit-backdrop-filter:blur(12px) saturate(2.2) brightness(1.18); backdrop-filter:blur(12px) saturate(2.2) brightness(1.18)}
.btn-gold:hover{background:rgba(252,186,54,.70); transform:translateY(-1px)}
.btn-outline{background:rgba(255,255,255,.10); border-color:rgba(255,255,255,.55); color:#fff; box-shadow:inset 0 1px 0 rgba(255,255,255,.20)}
.btn-outline:hover{background:rgba(255,255,255,.95); color:var(--navy); border-color:transparent}
.btn-ghost{background:transparent; border-color:var(--line); color:var(--charcoal)}
.btn-ghost:hover{border-color:var(--gold); color:var(--gold-deep)}
/* trailing arrow that gains a contrasting rounded chip on hover */
.btn::after{content:"\2192"; display:inline-flex; align-items:center; justify-content:center; width:1.5em; height:1.5em; line-height:1; margin-left:.1em; border-radius:5px; background:transparent; font-weight:700; transition:background .28s cubic-bezier(.22,.61,.36,1), transform .28s cubic-bezier(.22,.61,.36,1), color .28s ease}
.btn:hover::after{transform:translateX(4px)}
.btn-gold:hover::after{background:var(--navy); color:var(--gold-bright)}
.btn-outline:hover::after{background:var(--navy); color:#fff}
.btn-ghost:hover::after{background:var(--gold); color:#1a1206}
/* typewriter caret */
.type-caret{color:var(--gold); font-weight:300; animation:caret-blink 1.05s step-end infinite}
@keyframes caret-blink{50%{opacity:0}}
.arrow-link{font-weight:600; color:var(--gold-deep); display:inline-flex; align-items:center; gap:.4rem}
.arrow-link .ar{transition:transform .18s ease}
.arrow-link:hover .ar{transform:translateX(4px)}

/* ============ HEADER ============ */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:50; transition:background .25s ease,box-shadow .25s;
  background:transparent;
}
.site-header.scrolled{
  background:rgba(15,22,33,.72);
  -webkit-backdrop-filter:blur(16px) saturate(1.6);
  backdrop-filter:blur(16px) saturate(1.6);
  box-shadow:0 1px 0 rgba(255,255,255,.06), 0 10px 30px rgba(0,0,0,.26);
}
@supports not ((backdrop-filter:blur(2px)) or (-webkit-backdrop-filter:blur(2px))){
  .site-header.scrolled{background:var(--navy)}
}
.nav{display:flex; align-items:center; justify-content:space-between; height:72px}
.nav-logo img{height:48px; width:auto}
.nav-links{display:flex; align-items:center; gap:2rem; list-style:none; margin:0; padding:0}
.nav-links a{
  font-family:var(--font-display); font-weight:600; font-size:.9rem;
  letter-spacing:.04em; text-transform:uppercase; color:#fff; padding:.4rem 0; position:relative;
}
.nav-links a:not(.btn)::after{
  content:""; position:absolute; left:0; bottom:-2px; width:0; height:2px;
  background:var(--gold); transition:width .2s ease;
}
.nav-links a:not(.btn):hover::after{width:100%}
.nav-links .btn{padding:.7em 2em}
.nav-toggle{display:none; background:none; border:0; color:#fff; font-size:1.7rem; cursor:pointer}

@media (max-width:880px){
  .nav-toggle{display:block}
  .nav-links{
    position:fixed; inset:0; flex-direction:column; justify-content:center; gap:1.6rem;
    background:rgba(15,22,33,.85); -webkit-backdrop-filter:blur(22px) saturate(1.4); backdrop-filter:blur(22px) saturate(1.4);
    transform:translateX(100%); transition:transform .3s ease;
  }
  .nav-links a{font-size:1.4rem}
  .nav-links.open{transform:translateX(0)}
  .nav-close{position:absolute; top:1.4rem; right:1.6rem; font-size:2rem}
}

/* ============ HERO ============ */
.hero{position:relative; min-height:90vh; display:flex; align-items:flex-end; color:#fff; overflow:hidden}
.hero-bg{position:absolute; inset:0; z-index:0}
.hero-bg img{width:100%; height:100%; object-fit:cover}
.hero-bg::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(17,25,35,.45) 0%,rgba(17,25,35,.55) 45%,rgba(17,25,35,.82) 100%);
}
.hero-inner{position:relative; z-index:1; padding-block:clamp(6rem,14vh,9rem) clamp(3rem,8vh,5rem)}
.hero h1{font-size:clamp(2.6rem,6.5vw,4.7rem); max-width:14ch; margin:.4rem 0 .8rem; color:#fff}
.hero p{font-size:1.15rem; color:#d6dce3; max-width:46ch; margin-bottom:1.8rem}
.hero-cta{display:flex; gap:.9rem; flex-wrap:wrap}
.scroll-cue{position:absolute; left:50%; bottom:1.4rem; transform:translateX(-50%); z-index:1; color:#fff; opacity:.7; font-size:1.5rem; animation:bob 2s infinite}
@keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,8px)}}

/* ============ STATS ============ */
.stats{background:var(--navy-2); color:#fff}
.stats-grid{display:grid; grid-template-columns:repeat(4,1fr); text-align:center; padding-block:clamp(2.2rem,4vw,3rem)}
.stat .num{font-family:var(--font-display); font-weight:700; color:var(--gold); font-size:clamp(2.4rem,5vw,3.6rem); line-height:1}
.stat .num.sm{font-size:clamp(1.6rem,3.2vw,2.3rem); margin-top:.5rem}
.stat .label{font-size:.8rem; letter-spacing:.09em; text-transform:uppercase; color:var(--gray-300); margin-top:.4rem}
.stat+.stat{border-left:1px solid rgba(255,255,255,.08)}
@media (max-width:680px){
  .stats-grid{grid-template-columns:repeat(2,1fr); gap:1.8rem 0}
  .stat:nth-child(odd){border-left:0}
}

/* ============ SECTIONS ============ */
section{padding-block:var(--section-y)}
.bg-light{background:var(--off-white)}
.bg-dark{background:var(--navy); color:#fff}
.bg-dark h2,.bg-dark h3{color:#fff}
.split{display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(2rem,5vw,4rem); align-items:center}
@media (max-width:820px){.split{grid-template-columns:1fr}}
.about-map{margin:0}
.about-map img{width:100%; height:auto; display:block}
.about-map figcaption{margin-top:.8rem; text-align:center; font-family:var(--font-display); font-weight:600; font-size:.85rem; letter-spacing:.04em; text-transform:uppercase; color:var(--gray-600)}

/* tags */
.tags{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1.2rem}
.tag{font-size:.8rem; color:var(--gold-deep); background:#fbf4e6; border:1px solid #efe1c6; padding:.25rem .7rem; border-radius:4px}

/* ============ SERVICES ============ */
.cards{display:grid; grid-template-columns:repeat(3,1fr); gap:1.25rem}
@media (max-width:820px){.cards{grid-template-columns:1fr}}
.card{
  background:#fff; border:.5px solid var(--line); border-top:3px solid var(--gold);
  border-radius:0 0 var(--radius) var(--radius); padding:1.6rem; transition:.2s ease;
}
.card:hover{transform:translateY(-4px); box-shadow:var(--shadow)}
.card .ic{color:var(--gold); font-size:2rem; line-height:1}
.card h3{font-size:1.25rem; margin:.8rem 0 .5rem}
.card p{color:var(--gray-600); font-size:.95rem; margin:0}
.cap-strip{
  margin-top:2rem; padding-top:1.4rem; border-top:1px solid var(--line);
  color:var(--gray-600); font-size:.95rem; text-align:center;
}
.cap-strip b{color:var(--charcoal); font-weight:600}

/* ============ PROJECTS ============ */
.proj-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; margin-bottom:2.5rem}
@media (max-width:820px){.proj-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.proj-grid{grid-template-columns:1fr}}
.proj-card{background:var(--navy-2); border-radius:var(--radius); padding:1.3rem; border:1px solid rgba(255,255,255,.05)}
.badge{display:inline-block; background:var(--gold); color:#1a1206; font-family:var(--font-display); font-weight:600; font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; padding:.15rem .6rem; border-radius:3px}
.proj-card h3{font-size:1.15rem; margin:.7rem 0 .25rem}
.proj-card .meta{color:var(--gray-500); font-size:.9rem}

.gallery{display:grid; grid-template-columns:repeat(4,1fr); gap:.7rem}
@media (max-width:820px){.gallery{grid-template-columns:repeat(3,1fr)}}
@media (max-width:520px){.gallery{grid-template-columns:repeat(2,1fr)}}
.gallery button{padding:0; border:0; cursor:pointer; background:none; border-radius:var(--radius); overflow:hidden; position:relative}
.gallery img{aspect-ratio:1/1; object-fit:cover; width:100%; transition:transform .35s ease}
.gallery button:hover img{transform:scale(1.07)}
.gallery .cap{position:absolute; left:0; right:0; bottom:0; padding:.5rem .6rem; font-size:.75rem; color:#fff; background:linear-gradient(transparent,rgba(13,20,29,.85)); text-align:left; opacity:0; transition:opacity .2s}
.gallery button:hover .cap{opacity:1}

/* ============ CLIENTS ============ */
.clients-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(165px,1fr)); gap:1rem; max-width:1120px; margin:0 auto}
.client{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.9rem; padding:1.5rem 1rem; background:#fff; border:1px solid var(--line); border-radius:var(--radius); transition:.2s ease}
.client:hover{border-color:var(--gold); box-shadow:var(--shadow); transform:translateY(-3px)}
.client-logo{height:48px; display:flex; align-items:center; justify-content:center}
.client-logo img{max-height:48px; max-width:150px; width:auto; object-fit:contain; filter:grayscale(1); opacity:.65; transition:filter .25s ease, opacity .25s ease}
.client:hover .client-logo img{filter:none; opacity:1}
.client-name{font-family:var(--font-display); font-weight:600; font-size:.85rem; letter-spacing:.05em; text-transform:uppercase; color:var(--gray-600)}

/* ============ GLOBAL PRESENCE (refined network map) ============ */
#global.bg-global{
  --amber:#E8A11F;
  background:
    radial-gradient(1200px 620px at 78% 38%, rgba(232,161,31,.07), transparent 62%),
    linear-gradient(180deg,#0b111d 0%,#0a0f18 100%);
  color:#EAEFF7;
}
#global.bg-global .eyebrow{color:var(--amber)}
.global-head{margin-top:.4rem}
.global-head h2{font-family:var(--font-display); font-weight:700; font-size:clamp(2rem,4.2vw,2.9rem); line-height:1.05; letter-spacing:-.01em; color:#F1F5FB; max-width:18ch; margin:0 0 1rem}
.global-head h2 .accent{color:var(--amber)}
.global-head .g-sub{margin:0; color:#8B98AE; font-size:1.05rem; line-height:1.6; max-width:560px}

.global-stage{position:relative; width:100%; margin-top:1.8rem}
.global-stage-inner{position:relative; width:100%; margin:0 auto; aspect-ratio:2355 / 1402}
.hub-halo{position:absolute; left:80%; top:47%; width:min(40vw,560px); height:min(30vw,420px); transform:translate(-50%,-50%); border-radius:50%; background:radial-gradient(ellipse, rgba(232,161,31,.16), rgba(232,161,31,.05) 48%, transparent 70%); pointer-events:none; z-index:0}
.dotted-map{position:absolute; inset:0; width:100%; height:100%; object-fit:fill; z-index:1}
.global-arcs{position:absolute; inset:0; width:100%; height:100%; overflow:visible; z-index:2; pointer-events:none}
.global-markers{position:absolute; inset:0; z-index:3}

.mk{position:absolute; width:0; height:0}
.mk-dot{position:absolute; left:0; top:0; transform:translate(-50%,-50%); width:12px; height:12px; border-radius:50%; background:#0c1320; border:2.5px solid var(--amber); box-shadow:0 0 0 4px rgba(232,161,31,.10),0 0 12px 1px rgba(232,161,31,.45)}
.mk-label{position:absolute; display:inline-flex; align-items:center; gap:6px; white-space:nowrap; padding:4px 9px; border-radius:7px; background:rgba(12,19,32,.68); border:1px solid rgba(159,178,209,.15); color:#EAEFF7; font-family:var(--font-body); font-weight:600; font-size:12.5px; line-height:1; letter-spacing:.01em; -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); box-shadow:0 4px 14px rgba(0,0,0,.35)}
.mk-label::before{display:none}
.mk-label.lab-r{left:18px; top:0; transform:translateY(-50%)}
.mk-label.lab-l{right:18px; top:0; transform:translateY(-50%)}
.mk-label.lab-above{left:0; bottom:16px; transform:translate(-50%,0)}
.mk-label.lab-below{left:0; top:13px; transform:translate(-50%,0)}
.mk-hub .mk-ring{position:absolute; left:0; top:0; transform:translate(-50%,-50%); width:46px; height:46px; border-radius:50%; border:1px solid rgba(232,161,31,.30)}
.mk-hub .mk-core{position:absolute; left:0; top:0; transform:translate(-50%,-50%); width:22px; height:22px; border-radius:50%; background:radial-gradient(circle at 38% 34%, #F7D179, var(--amber) 62%); border:3px solid #0c1320; box-shadow:0 0 0 4px rgba(232,161,31,.20),0 0 22px 5px rgba(232,161,31,.55)}
.mk-hub .mk-label{right:24px; top:15px; transform:translateY(-50%); font-family:var(--font-display); font-weight:700; font-size:15.5px; letter-spacing:.02em; color:#F5F8FC; border-color:rgba(232,161,31,.35); padding:6px 12px}
.mk-hub .mk-label::before{display:none}
/* animated data-flow packets travelling Asia -> U.S., and a pulsing U.S. hub */
.global-flow{filter:drop-shadow(0 0 5px rgba(247,210,122,.85))}
.global-flow path{stroke:#F7D27A; stroke-width:5; stroke-dasharray:0 9999}
.mk-hub .mk-ring{animation:hub-ring 3.4s ease-out infinite}
.mk-hub .mk-core{animation:hub-core 3.4s ease-in-out infinite}
@keyframes hub-ring{0%{transform:translate(-50%,-50%) scale(.65); opacity:.85} 75%,100%{transform:translate(-50%,-50%) scale(2.2); opacity:0}}
@keyframes hub-core{0%,100%{box-shadow:0 0 0 4px rgba(232,161,31,.16),0 0 16px 3px rgba(232,161,31,.42)} 50%{box-shadow:0 0 0 7px rgba(232,161,31,.30),0 0 32px 9px rgba(232,161,31,.72)}}

.global-legend{display:grid; grid-template-columns:repeat(3,1fr); gap:36px; margin-top:3rem}
.global-legend .lg-rule{height:3px; width:100%; background:linear-gradient(90deg,var(--amber),rgba(232,161,31,.15)); border-radius:2px; margin-bottom:16px}
.global-legend h3{font-family:var(--font-display); font-weight:700; font-size:1.125rem; letter-spacing:.02em; color:#F1F5FB; margin:0 0 8px}
.global-legend p{margin:0; color:#8B98AE; font-size:.97rem; line-height:1.7}
@media (max-width:820px){
  .global-stage-inner{width:100%}
  .global-legend{grid-template-columns:1fr; gap:1.6rem}
}
@media (max-width:640px){
  .global-markers .mk-label{display:none}       /* rely on the legend on small screens */
  .global-markers .mk-hub .mk-label{display:inline-flex}
}

/* ============ OFFICE ============ */
.office-photos{display:grid; grid-template-columns:1fr 1fr; gap:.7rem}
.office-photos .feature{grid-column:1 / -1}
.office-photos img{border-radius:var(--radius); aspect-ratio:16/10; object-fit:cover; width:100%}
.office-info address{font-style:normal; color:var(--gray-600); font-size:1.05rem; line-height:1.9}

/* ============ CONTACT ============ */
.contact-grid{display:grid; grid-template-columns:1fr 1.1fr; gap:clamp(2rem,5vw,4rem)}
@media (max-width:820px){.contact-grid{grid-template-columns:1fr}}
.contact-info a{color:var(--gold); font-weight:500}
.contact-info .row{display:flex; gap:.8rem; align-items:flex-start; margin-bottom:1rem; color:var(--gray-300)}
.contact-info .row i{color:var(--gold); font-size:1.3rem; margin-top:.15rem}
.form{display:grid; gap:1rem}
.form .field{display:grid; gap:.35rem}
.form label{font-size:.85rem; font-weight:500; color:#cfd6df}
.form input,.form textarea{
  font-family:inherit; font-size:1rem; padding:.8rem .9rem; border-radius:var(--radius);
  border:1px solid rgba(255,255,255,.18); background:rgba(255,255,255,.04); color:#fff;
}
.form input:focus,.form textarea:focus{outline:none; border-color:var(--gold); background:rgba(255,255,255,.08)}
.form textarea{resize:vertical; min-height:120px}
.hp{position:absolute; left:-9999px}
.form-status{font-size:.95rem; min-height:1.2em}
.form-status.ok{color:#7fd99a}
.form-status.err{color:#ff9a9a}

/* ============ FOOTER ============ */
.footer{background:var(--navy-2); color:var(--gray-500); padding-block:3rem 0}
.footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:2rem}
@media (max-width:820px){.footer-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.footer-grid{grid-template-columns:1fr}}
.footer img{height:30px; margin-bottom:1rem}
.footer h4{font-family:var(--font-display); color:#fff; font-size:.85rem; letter-spacing:.08em; text-transform:uppercase; margin:0 0 .9rem}
.footer ul{list-style:none; margin:0; padding:0; line-height:2}
.footer a:hover{color:var(--gold)}
.footer .social{display:flex; gap:.8rem; font-size:1.3rem; margin-top:.3rem}
.footer-bottom{margin-top:2.5rem; border-top:1px solid rgba(255,255,255,.08); padding-block:1.1rem; font-size:.82rem; display:flex; justify-content:space-between; flex-wrap:wrap; gap:.5rem}

/* ============ LIGHTBOX ============ */
.lightbox{position:fixed; inset:0; z-index:100; background:rgba(8,12,18,.92); display:none; align-items:center; justify-content:center; padding:2rem}
.lightbox.open{display:flex}
.lightbox img{max-width:92vw; max-height:86vh; border-radius:var(--radius); width:auto; height:auto}
.lightbox .lb-close{position:absolute; top:1.2rem; right:1.6rem; color:#fff; font-size:2.2rem; background:none; border:0; cursor:pointer}
.lightbox .lb-nav{position:absolute; top:50%; transform:translateY(-50%); color:#fff; font-size:2.6rem; background:none; border:0; cursor:pointer; padding:1rem}
.lightbox .lb-prev{left:.5rem} .lightbox .lb-next{right:.5rem}

/* ============ REVEAL / SCROLL-LINKED ANIMATION ============ */
.reveal{opacity:0; transform:translateY(26px); transition:opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1)}
.reveal.in{opacity:1; transform:none}

/* Buttery, scroll-linked fade in + out where the browser supports it */
@media (prefers-reduced-motion: no-preference){
  @supports (animation-timeline: view()){
    .reveal{opacity:0; transform:none; transition:none; animation:reveal-through linear both; animation-timeline:view(); animation-range:entry 2% exit 96%}
  }
}
@keyframes reveal-through{
  0%{opacity:0; transform:translateY(30px)}
  15%{opacity:1; transform:none}
  86%{opacity:1; transform:none}
  100%{opacity:0; transform:translateY(-16px)}
}

@media (prefers-reduced-motion:reduce){
  *{animation:none !important; scroll-behavior:auto !important}
  .reveal{opacity:1 !important; transform:none !important; transition:none}
}
