/* =========================================================
   ACE USA LLC — Design tokens
   ========================================================= */
:root{
  --navy-950:#060f1f;
  --navy-900:#0b1f3a;
  --navy-850:#0e2544;
  --navy-800:#132c52;
  --navy-700:#1e3a63;
  --navy-600:#2c4c7c;

  --gold-700:#8a6b2e;
  --gold-500:#c9a15a;
  --gold-400:#d9b872;
  --gold-300:#e4c888;

  --ivory:#f3efe6;
  --ivory-dim:#cfc9ba;
  --slate:#93a0b8;
  --slate-dim:#5f6d88;

  --ink:#0b1f3a;
  --outline-border-color: rgba(243,239,230,0.35);

  --font-display:'Fraunces', 'Georgia', serif;
  --font-body:'Inter', -apple-system, sans-serif;
  --font-mono:'IBM Plex Mono', monospace;

  --container-max: 1180px;
  --edge: clamp(1.25rem, 4vw, 4rem);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--navy-900);
  color:var(--ivory);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
::selection{background:var(--gold-500);color:var(--ink);}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; scroll-behavior:auto !important;}
}

a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
:focus-visible{outline:2px solid var(--gold-400); outline-offset:3px;}

.wrap{max-width:var(--container-max); margin:0 auto; padding-left:var(--edge); padding-right:var(--edge);}

/* Texture: faint blueprint grid used behind dark sections */
.grid-texture{
  position:absolute; inset:0; pointer-events:none;
  background-image:
    linear-gradient(rgba(201,161,90,0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(201,161,90,0.06) 1px, transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse 80% 60% at 50% 20%, #000 40%, transparent 90%);
}

/* Eyebrow / kicker label */
.kicker{
  font-family:var(--font-mono);
  font-size:0.72rem;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:var(--gold-400);
  display:inline-flex;
  align-items:center;
  gap:0.6em;
  margin-bottom:1rem;
}
.kicker::before{
  content:"";
  width:26px;height:1px;
  background:var(--gold-500);
  display:inline-block;
}

h1,h2,h3,h4{font-family:var(--font-display); font-weight:600; margin:0; color:var(--ivory);}

.tracked{letter-spacing:0.14em;}
.tracked-lg{letter-spacing:0.22em;}

h2.section-title{
  font-size:clamp(1.8rem, 3.2vw, 2.75rem);
  line-height:1.15;
  max-width:820px;
}
.section-lede{
  color:var(--slate);
  font-size:1.05rem;
  max-width:640px;
  margin-top:1rem;
}

section{position:relative;}
.section-pad{padding:clamp(4rem, 8vw, 7.5rem) 0;}
.divider-hair{
  height:1px;
  width:100%;
  background:linear-gradient(90deg, transparent, rgba(201,161,90,0.35), transparent);
}

/* =========================================================
   Navbar
   ========================================================= */
.ace-nav{
  position:fixed; top:0; left:0; right:0; z-index:1000;
  padding:0.9rem 0;
  background:rgba(6,15,31,0.0);
  border-bottom:1px solid rgba(201,161,90,0);
  transition:background .35s ease, border-color .35s ease, padding .35s ease;
}
.ace-nav.scrolled{
  background:rgba(6,15,31,0.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(201,161,90,0.18);
  padding:0.6rem 0;
}
.ace-nav .wrap{display:flex; align-items:center; justify-content:space-between;}
.brand-mark{display:flex; align-items:center; gap:0.6rem; font-family:var(--font-display); letter-spacing:0.12em; font-size:1.05rem;}
.brand-mark svg,
.brand-mark img{width:34px; height:34px; object-fit:contain; flex:none;}
.nav-links{display:flex; gap:2rem; list-style:none; margin:0; padding:0;}
.nav-links a{
  font-size:0.82rem; letter-spacing:0.06em; text-transform:uppercase;
  color:var(--ivory-dim); position:relative; padding-bottom:4px;
}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:0%;
  background:var(--gold-400); transition:width .3s ease;
}
.nav-links a:hover{color:var(--ivory);}
.nav-links a:hover::after{width:100%;}
.nav-cta{
  border:1px solid var(--gold-500); color:var(--gold-300);
  padding:0.5rem 1.1rem; font-size:0.78rem; letter-spacing:0.08em; text-transform:uppercase;
  border-radius:2px; white-space:nowrap;
  transition:background .25s ease, color .25s ease;
}
.nav-cta:hover{background:var(--gold-500); color:var(--ink);}
.nav-toggle{display:none; background:none; border:0; color:var(--ivory); font-size:1.5rem;}

@media (max-width: 900px){
  .nav-links{
    position:fixed; inset:0 0 0 auto; height:100vh; width:78%; max-width:320px;
    background:var(--navy-950); flex-direction:column; padding:6rem 2rem 2rem;
    transform:translateX(100%); transition:transform .35s ease; gap:1.6rem;
    border-left:1px solid rgba(201,161,90,0.2);
  }
  .nav-links.open{transform:translateX(0);}
  .nav-toggle{display:block;}
  .nav-cta{display:none;}
}

/* =========================================================
   Hero
   ========================================================= */
.hero{
  min-height:100vh;
  display:flex; align-items:center;
  position:relative;
  padding-top:6rem;
  background:
    radial-gradient(ellipse 60% 50% at 80% 0%, rgba(201,161,90,0.10), transparent 60%),
    linear-gradient(180deg, var(--navy-950) 0%, var(--navy-900) 60%, var(--navy-900) 100%);
  overflow:hidden;
}
.hero-content{position:relative; z-index:2;}
.hero .kicker{margin-bottom:1.5rem;}
.hero h1{
  font-size:clamp(2.6rem, 6.4vw, 5.2rem);
  letter-spacing:0.05em;
  line-height:1.02;
}
.hero h1 em{
  font-style:italic; font-weight:300; color:var(--gold-300);
}
.hero-sub{
  font-size:clamp(1.05rem, 1.6vw, 1.3rem);
  color:var(--ivory-dim);
  font-style:italic;
  font-family:var(--font-display); font-weight:300;
  max-width:640px;
  margin:1.6rem 0 2.4rem;
  border-left:2px solid var(--gold-500);
  padding-left:1.1rem;
}
.hero-actions{display:flex; gap:1rem; flex-wrap:wrap; margin-bottom:3.5rem;}
.btn-ace{
  font-family:var(--font-mono); font-size:0.78rem; letter-spacing:0.1em; text-transform:uppercase;
  padding:0.95rem 1.8rem; border-radius:2px; display:inline-flex; align-items:center; gap:0.6rem;
  transition:all .25s ease; border:1px solid transparent;
}
.btn-ace-primary{background:var(--gold-500); color:var(--ink);}
.btn-ace-primary:hover{background:var(--gold-300); transform:translateY(-2px);}
.btn-ace-outline{border-color:var(--outline-border-color); color:var(--ivory);}
.btn-ace-outline:hover{border-color:var(--gold-400); color:var(--gold-300); transform:translateY(-2px);}

.hero-stats{
  display:grid; grid-template-columns:repeat(4,auto); gap:clamp(1.5rem,4vw,3.5rem);
  border-top:1px solid rgba(201,161,90,0.2); padding-top:1.75rem;
}
.hero-stats .stat-num{
  font-family:var(--font-mono); color:var(--gold-300); font-size:clamp(1.3rem,2.4vw,1.8rem); font-weight:600;
}
.hero-stats .stat-label{font-size:0.72rem; color:var(--slate); text-transform:uppercase; letter-spacing:0.08em; margin-top:0.25rem;}
@media (max-width:700px){.hero-stats{grid-template-columns:repeat(2,auto);}}

.hero-badge{
  position:absolute; right:6%; top:14%; width:min(320px, 26vw); opacity:0.9;
  object-fit:contain;
  animation:float 7s ease-in-out infinite;
}
@media (max-width: 1000px){.hero-badge{display:none;}}
@keyframes float{0%,100%{transform:translateY(0px);}50%{transform:translateY(-16px);}}

.scroll-cue{
  position:absolute; bottom:2.2rem; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:0.5rem;
  color:var(--slate); font-family:var(--font-mono); font-size:0.68rem; letter-spacing:0.15em; text-transform:uppercase;
}
.scroll-cue .line{width:1px; height:34px; background:linear-gradient(var(--gold-500), transparent); animation:pulse-line 2s ease-in-out infinite;}
@keyframes pulse-line{0%,100%{opacity:0.3;}50%{opacity:1;}}

/* =========================================================
   Founder message
   ========================================================= */
.founder{
  background:var(--navy-950);
  position:relative;
}
.founder-quote{
  font-family:var(--font-display); font-style:italic; font-weight:300;
  font-size:clamp(1.3rem, 2.6vw, 1.9rem); line-height:1.5; color:var(--ivory);
  position:relative; padding-left:2.2rem;
}
.founder-quote::before{
  content:"“"; position:absolute; left:-0.6rem; top:-1.2rem; font-size:5rem; color:var(--gold-700); font-family:var(--font-display);
}
.founder-sign{margin-top:2.2rem; display:flex; align-items:center; gap:1rem;}
.founder-sign .line{width:44px; height:1px; background:var(--gold-500);}
.founder-name{font-family:var(--font-mono); font-size:0.85rem; letter-spacing:0.05em;}
.founder-role{color:var(--slate); font-size:0.78rem;}

/* =========================================================
   Overview cards
   ========================================================= */
.overview-card{
  background:var(--navy-850); border:1px solid var(--navy-700); border-radius:4px;
  padding:2.2rem; height:100%;
  transition:border-color .25s ease, transform .25s ease;
}
.overview-card:hover{border-color:var(--gold-500); transform:translateY(-4px);}
.overview-card h3{font-size:1.25rem; margin-bottom:0.8rem; color:var(--gold-300);}
.overview-card p{color:var(--slate); font-size:0.95rem; margin:0;}

/* =========================================================
   Timeline (Historia)
   ========================================================= */
.timeline{position:relative; margin-top:3rem;}
.timeline::before{
  content:""; position:absolute; left:0; right:0; top:64px; height:1px;
  background:linear-gradient(90deg, transparent, rgba(201,161,90,0.4) 8%, rgba(201,161,90,0.4) 92%, transparent);
}
.timeline-track{display:flex; gap:0; overflow-x:auto; scroll-snap-type:x proximity; padding-bottom:1rem;}
.timeline-item{
  flex:0 0 min(320px, 82vw); scroll-snap-align:start;
  padding:0 1.6rem 0 0; position:relative;
}
.timeline-year{
  font-family:var(--font-mono); color:var(--gold-300); font-size:1.05rem; letter-spacing:0.04em;
  padding-bottom:1.6rem; position:relative;
}
.timeline-dot{
  position:absolute; left:0; top:60px; width:11px; height:11px; border-radius:50%;
  background:var(--navy-900); border:2px solid var(--gold-500);
}
.timeline-item-inner{padding-top:2.6rem;}
.timeline-item h4{font-size:1.05rem; color:var(--ivory); margin-bottom:0.6rem;}
.timeline-item ul{padding-left:1.1rem; margin:0.8rem 0 0; color:var(--slate); font-size:0.87rem;}
.timeline-item li{margin-bottom:0.35rem;}

/* =========================================================
   Values chips
   ========================================================= */
.value-chip{
  border:1px solid var(--navy-700); border-radius:999px;
  padding:0.55rem 1.3rem; font-size:0.85rem; color:var(--ivory-dim);
  display:inline-block; margin:0.3rem; transition:all .2s ease;
}
.value-chip:hover{border-color:var(--gold-500); color:var(--gold-300);}

.mv-card{
  border-top:2px solid var(--gold-500); padding-top:1.4rem;
}
.mv-card h3{font-family:var(--font-mono); font-size:0.85rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--gold-400); margin-bottom:1rem;}
.mv-card p{color:var(--ivory-dim); font-size:1.02rem; line-height:1.65;}

/* =========================================================
   Philosophy / numbered rows
   ========================================================= */
.phil-row{
  display:flex; gap:1.6rem; padding:1.7rem 0; border-bottom:1px solid var(--navy-700);
}
.phil-row:first-child{border-top:1px solid var(--navy-700);}
.phil-num{font-family:var(--font-mono); color:var(--gold-500); font-size:0.95rem; flex:0 0 44px;}
.phil-row h4{font-size:1.05rem; margin-bottom:0.4rem;}
.phil-row p{color:var(--slate); font-size:0.92rem; margin:0;}

/* =========================================================
   Process stepper
   ========================================================= */
.stepper{display:flex; gap:0; overflow-x:auto; margin-top:3rem; padding-bottom:1rem;}
.step{flex:0 0 200px; position:relative; padding-right:1.4rem;}
.step-num{
  font-family:var(--font-mono); font-size:0.75rem; color:var(--ink); background:var(--gold-500);
  width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  margin-bottom:1rem;
}
.step h4{font-size:0.95rem; margin-bottom:0.4rem; line-height:1.3;}
.step-arrow{position:absolute; right:0; top:14px; color:var(--gold-700); font-size:1.1rem;}
.step:last-child .step-arrow{display:none;}

/* =========================================================
   Divisions / Services grid
   ========================================================= */
.service-card{
  background:linear-gradient(180deg, var(--navy-850), var(--navy-800));
  border:1px solid var(--navy-700); border-radius:4px; padding:2rem; height:100%;
  position:relative; overflow:hidden;
}
.service-card::before{
  content:attr(data-index); position:absolute; right:1rem; top:0.6rem;
  font-family:var(--font-mono); font-size:2.6rem; color:rgba(201,161,90,0.08); font-weight:700;
}
.service-card h3{font-size:1.15rem; color:var(--gold-300); margin-bottom:0.75rem; position:relative;}
.service-card p{color:var(--slate); font-size:0.9rem; margin:0; position:relative;}

.sector-pill{
  border:1px solid var(--navy-700); padding:0.9rem 1.2rem; border-radius:3px;
  font-size:0.88rem; color:var(--ivory-dim); display:flex; align-items:center; gap:0.7rem;
  transition:border-color .2s ease;
}
.sector-pill:hover{border-color:var(--gold-500);}
.sector-pill .dot{width:6px; height:6px; border-radius:50%; background:var(--gold-500); flex:none;}

/* =========================================================
   Coverage map (signature element)
   ========================================================= */
.coverage-section{background:var(--navy-950);}
.coverage-wrap{display:grid; grid-template-columns:1fr 1fr; gap:3rem; align-items:center; margin-top:2.5rem;}
@media (max-width:960px){.coverage-wrap{grid-template-columns:1fr;}}
.map-canvas{position:relative; aspect-ratio:1/1; max-width:560px; margin:0 auto;}
.map-canvas svg{width:100%; height:100%; overflow:visible;}
.map-hub-label{font-family:var(--font-mono); font-size:0.62rem; fill:var(--ink);}
.map-node-label{font-family:var(--font-mono); font-size:11px; fill:var(--ivory-dim);}
.map-line{stroke:var(--gold-700); stroke-width:1; fill:none; opacity:0.55; stroke-dasharray:3 4;}
.map-node-circle{fill:var(--navy-900); stroke:var(--gold-500); stroke-width:1.6; cursor:pointer; transition:r .2s ease;}
.map-node-circle:hover{fill:var(--gold-500);}
.map-pulse{fill:var(--gold-500); opacity:0; transform-origin:center; animation:node-pulse 3s ease-out infinite;}
@keyframes node-pulse{0%{opacity:0.5; transform:scale(0.3);}80%{opacity:0;}100%{opacity:0; transform:scale(2.6);}}
.map-hub{fill:var(--gold-500);}

.coverage-list{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:0.6rem 1.5rem;}
.coverage-list li{
  font-size:0.9rem; color:var(--ivory-dim); border-bottom:1px dashed var(--navy-700); padding:0.5rem 0;
  display:flex; justify-content:space-between;
}
.coverage-list li span{color:var(--slate); font-family:var(--font-mono); font-size:0.75rem;}

/* =========================================================
   Stats band
   ========================================================= */
.stats-band{background:var(--navy-850); border-top:1px solid var(--navy-700); border-bottom:1px solid var(--navy-700);}
.stat-block{text-align:center; padding:2.4rem 1rem;}
.stat-block .num{font-family:var(--font-mono); color:var(--gold-300); font-size:clamp(1.8rem,3vw,2.6rem); font-weight:700;}
.stat-block .lbl{color:var(--slate); font-size:0.78rem; text-transform:uppercase; letter-spacing:0.06em; margin-top:0.5rem;}

/* =========================================================
   Case studies
   ========================================================= */
.case-card{
  border:1px solid var(--navy-700); border-radius:4px; overflow:hidden; background:var(--navy-850); height:100%;
}
.case-head{padding:1.8rem 2rem; border-bottom:1px solid var(--navy-700); display:flex; justify-content:space-between; align-items:flex-start; gap:1rem;}
.case-head h3{font-size:1.3rem; color:var(--gold-300);}
.case-tag{font-family:var(--font-mono); font-size:0.68rem; color:var(--ink); background:var(--gold-500); padding:0.3rem 0.6rem; border-radius:2px; white-space:nowrap;}
.case-body{padding:1.8rem 2rem;}
.case-body > p{color:var(--slate); font-size:0.92rem;}
.case-stats{display:flex; gap:1.6rem; margin:1.2rem 0 1.4rem; flex-wrap:wrap;}
.case-stats div{text-align:left;}
.case-stats .n{font-family:var(--font-mono); color:var(--gold-300); font-size:1.5rem; font-weight:700;}
.case-stats .l{color:var(--slate); font-size:0.72rem; text-transform:uppercase;}
.case-body ul{padding-left:1.1rem; color:var(--ivory-dim); font-size:0.88rem;}
.case-body li{margin-bottom:0.4rem;}

/* =========================================================
   Testimonial / client experience
   ========================================================= */
.testimonial-band{
  background:linear-gradient(180deg, var(--navy-950), var(--navy-900));
  border-top:1px solid var(--navy-700);
}
.testimonial-quote{
  font-family:var(--font-display); font-style:italic; font-weight:300;
  font-size:clamp(1.4rem,3vw,2.1rem); text-align:center; max-width:820px; margin:0 auto; color:var(--ivory);
}
.reason-list{list-style:none; padding:0; margin:2rem 0 0; columns:2; column-gap:2.5rem;}
@media (max-width:700px){.reason-list{columns:1;}}
.reason-list li{
  break-inside:avoid; font-size:0.9rem; color:var(--ivory-dim); padding:0.5rem 0 0.5rem 1.3rem; position:relative;
}
.reason-list li::before{content:"—"; position:absolute; left:0; color:var(--gold-500);}

/* =========================================================
   Team / sustainability
   ========================================================= */
.tag-grid{display:flex; flex-wrap:wrap; gap:0.5rem; margin-top:1.5rem;}
.tag-grid span{
  font-size:0.82rem; color:var(--ivory-dim); border:1px solid var(--navy-700); padding:0.5rem 1rem; border-radius:2px;
}

.commit-col h3{font-family:var(--font-mono); font-size:0.85rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--gold-400); margin-bottom:1.1rem;}
.commit-col ul{list-style:none; padding:0; margin:0;}
.commit-col li{color:var(--ivory-dim); font-size:0.92rem; padding:0.55rem 0; border-bottom:1px solid var(--navy-800);}

/* =========================================================
   CTA / contact
   ========================================================= */
.cta-section{
  background:radial-gradient(ellipse 70% 100% at 50% 100%, rgba(201,161,90,0.12), transparent 60%), var(--navy-950);
  text-align:center;
}
.cta-section h2{font-size:clamp(2rem,4.4vw,3.4rem);}
.cta-section .section-lede{margin-left:auto; margin-right:auto; text-align:center;}

.contact-grid{display:grid; grid-template-columns:1.1fr 1fr; gap:3rem; margin-top:3rem;}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr;}}
.contact-item{display:flex; gap:1rem; padding:1.1rem 0; border-bottom:1px solid var(--navy-700);}
.contact-item .ico{color:var(--gold-500); flex:none; padding-top:0.15rem;}
.contact-item .lbl{font-family:var(--font-mono); font-size:0.68rem; color:var(--slate); text-transform:uppercase; letter-spacing:0.08em;}
.contact-item .val{color:var(--ivory); font-size:0.98rem; margin-top:0.2rem;}

.contact-form label{font-family:var(--font-mono); font-size:0.7rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--slate);}
.contact-form .form-control{
  background:var(--navy-850); border:1px solid var(--navy-700); color:var(--ivory);
  border-radius:2px; padding:0.75rem 1rem; font-family:var(--font-body);
}
.contact-form .form-control:focus{background:var(--navy-850); border-color:var(--gold-500); color:var(--ivory); box-shadow:0 0 0 3px rgba(201,161,90,0.15);}
.contact-form .form-control::placeholder{color:var(--slate-dim);}

/* footer */
.ace-footer{background:var(--navy-950); border-top:1px solid var(--navy-700); padding:2.4rem 0;}
.ace-footer .wrap{display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:1rem;}
.ace-footer p{color:var(--slate-dim); font-size:0.82rem; margin:0;}
.ace-footer .foot-links a{color:var(--slate); font-size:0.82rem; margin-left:1.4rem;}
.ace-footer .foot-links a:hover{color:var(--gold-300);}

/* reveal-on-scroll */
.reveal{opacity:0; transform:translateY(24px); transition:opacity .7s ease, transform .7s ease;}
.reveal.in{opacity:1; transform:translateY(0);}

/* back to top */
.to-top{
  position:fixed; right:1.5rem; bottom:1.5rem; z-index:900;
  width:42px; height:42px; border-radius:50%; background:var(--navy-850); border:1px solid var(--gold-500);
  color:var(--gold-300); display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none; transition:opacity .3s ease, transform .3s ease;
}
.to-top.show{opacity:1; pointer-events:auto;}
.to-top:hover{transform:translateY(-3px);}

/* =========================================================
   MIXED VARIANT — alternating dark / light sections
   Scoping the palette tokens on .on-light flips every
   component (cards, borders, text, dividers) that already
   reads from the navy, ivory, slate and gold tokens below it,
   without needing separate section markup.
   ========================================================= */
.on-light{
  --navy-950:#f4f1ea;
  --navy-900:#ffffff;
  --navy-850:#f7f5ef;
  --navy-800:#efe9da;
  --navy-700:#e2d9c3;
  --navy-600:#cbbb96;

  --gold-500:#b8863c;
  --gold-400:#a97a34;
  --gold-300:#8f6526;

  --ivory:#101e36;
  --ivory-dim:#3c4a63;
  --slate:#5b6478;
  --slate-dim:#8891a0;

  --outline-border-color: rgba(16,30,54,0.28);

  background:var(--navy-900);
  color:var(--ivory);
}
.on-light .grid-texture{opacity:0.5;}
.on-light .overview-card,
.on-light .service-card,
.on-light .case-card{box-shadow:0 1px 3px rgba(16,30,54,0.05);}
.on-light .overview-card:hover{box-shadow:0 14px 28px rgba(16,30,54,0.08);}
.on-light .service-card::before{color:rgba(184,134,60,0.16);}
.on-light .btn-ace-outline:hover{background:rgba(184,134,60,0.06);}
