/* =========================================================
   BASE — reset + element defaults
   ========================================================= */
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--f-body);
  font-size:var(--fs-body);
  line-height:1.6;
  color:var(--c-slate-700);
  background:var(--c-paper);
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:var(--c-navy-900);text-decoration:none;}
ul,ol{padding-left:1.2em;}
h1,h2,h3,h4{
  font-family:var(--f-display);
  color:var(--c-navy-950);
  line-height:1.12;
  margin:0 0 .5em;
  font-weight:600;
}
h1{font-size:var(--fs-h1);}
h2{font-size:var(--fs-h2);}
h3{font-size:var(--fs-h3);}
p{margin:0 0 1em;}
table{width:100%;border-collapse:collapse;}
button{font-family:inherit;}

:focus-visible{
  outline:3px solid var(--c-bronze-500);
  outline-offset:2px;
}

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

.container{max-width:var(--maxw); margin:0 auto; padding:0 1.5rem;}
.visually-hidden{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap;
}
.skip-link{
  position:absolute; left:-999px; top:0; background:var(--c-navy-950); color:#fff;
  padding:.6em 1em; z-index:200;
}
.skip-link:focus{left:1rem; top:1rem;}

main{display:block;}
section{padding:clamp(3rem,6vw,6rem) 0;}
.section-tight{padding:clamp(2rem,4vw,3.5rem) 0;}

.eyebrow{
  font-size:var(--fs-eyebrow); text-transform:uppercase; letter-spacing:.12em;
  color:var(--c-bronze-500); font-weight:700; display:flex; align-items:center; gap:.6em;
  margin-bottom:.8em;
}
.eyebrow::before{content:''; width:22px; height:2px; background:var(--c-bronze-500); display:inline-block;}

.lede{font-size:1.2rem; color:var(--c-slate-500); max-width:640px;}

/* Truss-line signature divider: an engineering motif (zig-zag bracing)
   used between sections instead of a generic straight <hr>. */
.truss{
  width:100%; height:18px; margin:0; border:0;
  background-image: repeating-linear-gradient(135deg, var(--c-line) 0 2px, transparent 2px 22px),
                     repeating-linear-gradient(45deg, var(--c-line) 0 2px, transparent 2px 22px);
  background-position: 0 0, 0 0;
  opacity:.7;
}

.btn{
  display:inline-flex; align-items:center; gap:.5em; padding:.85em 1.6em;
  font-weight:600; font-size:.95rem; border-radius:var(--radius); border:1px solid transparent;
  cursor:pointer; transition:transform var(--t-fast) var(--ease), background var(--t-fast);
  white-space:nowrap;
}
.btn:hover{transform:translateY(-1px);}
.btn-primary{background:var(--c-bronze-500); color:var(--c-navy-950);}
.btn-primary:hover{background:var(--c-bronze-400);}
.btn-ghost{background:transparent; border-color:rgba(255,255,255,.4); color:#fff;}
.btn-ghost:hover{border-color:#fff;}
.btn-outline{background:transparent; border-color:var(--c-navy-900); color:var(--c-navy-900);}
.btn-outline:hover{background:var(--c-navy-900); color:#fff;}
.btn-sm{padding:.5em 1em; font-size:.85rem;}

.card{
  background:#fff; border:1px solid var(--c-line); border-radius:var(--radius);
  padding:1.6rem; box-shadow:var(--shadow-sm);
}

.badge{
  display:inline-block; font-size:.72rem; font-weight:700; letter-spacing:.05em;
  text-transform:uppercase; padding:.3em .7em; border-radius:99px;
}
.badge-open{background:var(--c-success-bg); color:var(--c-success);}
.badge-closing{background:var(--c-warn-bg); color:var(--c-warn);}
.badge-closed{background:#EDEAE2; color:var(--c-slate-500);}
/* Project status taxonomy badges (see Sections 9.1 / 15.2 of content blueprint) */
.badge-completed{background:var(--c-success-bg); color:var(--c-success);}
.badge-ongoing{background:#E3EEF8; color:var(--c-navy-700);}
.badge-awarded{background:var(--c-warn-bg); color:var(--c-warn);}
.badge-advisory{background:#EFE9F6; color:#5B3F88;}
.badge-pppfacilitation{background:#FDEFE3; color:#A05A1E;}
.badge-pipeline{background:#EDEAE2; color:var(--c-slate-500);}

.grid{display:grid; gap:var(--gap);}
.grid-2{grid-template-columns:repeat(2,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-4{grid-template-columns:repeat(4,1fr);}
@media (max-width:900px){
  .grid-3,.grid-4{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:600px){
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}
}
