:root{
  --ink:#0F1629;
  --navy:#1F2F56;
  --paper:#F9FAFB;
  --paper-warm:#EFF2F5;
  --teal:#3EC2EA;
  --teal-deep:#086986;
  --teal-mid:#0D82A5;
  --on-ink:#EDF1F5;
  --on-ink-dim:#9CACC2;
  --on-paper:#131A28;
  --on-paper-dim:#54627A;
  --rule-dark:rgba(158,178,204,.22);
  --rule-light:rgba(19,26,40,.14);
  --measure:65ch;
  --pad:clamp(1.25rem,5vw,5.5rem);
  --gap-sec:clamp(4.5rem,9vw,8.5rem);
  --f-disp:"Newsreader",Georgia,"Times New Roman",serif;
  --f-ui:"Archivo","Helvetica Neue",Arial,sans-serif;
  --f-mono:"DM Mono",ui-monospace,"SF Mono",Menlo,monospace;
}
*{box-sizing:border-box}
body{background:var(--ink);color:var(--on-ink);font-family:var(--f-ui);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,p,ul,ol,figure,dl,dd,div,li{margin:0}
ul{list-style:none;padding:0}
a{color:inherit}
img{display:block}

.wrap{max-width:1240px;margin:0 auto;padding-inline:var(--pad)}
.band{padding-block:var(--gap-sec)}
.band--ink{background:var(--ink);color:var(--on-ink)}
.band--navy{background:var(--navy);color:var(--on-ink)}
.band--paper{background:var(--paper);color:var(--on-paper)}
.band--paper-warm{background:var(--paper-warm);color:var(--on-paper)}

.eyebrow{display:block;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:500}
.eyebrow--dark{color:var(--teal)}
.eyebrow--light{color:var(--teal-deep)}

h2.sec{font-family:var(--f-disp);font-weight:300;font-size:clamp(2.1rem,4.6vw,3.4rem);line-height:1.08;letter-spacing:-.015em;text-wrap:balance}
.lede{font-size:clamp(1.02rem,1.5vw,1.18rem);line-height:1.65;max-width:58ch}
.on-ink .lede{color:var(--on-ink-dim)}
.on-paper .lede{color:var(--on-paper-dim)}

/* ---------- header ---------- */
.hdr{position:sticky;top:0;z-index:50;background:rgba(15,22,41,.88);-webkit-backdrop-filter:blur(14px) saturate(1.35);backdrop-filter:blur(14px) saturate(1.35);border-bottom:1px solid transparent;transition:border-color .25s}
.hdr.stuck{border-bottom-color:var(--rule-dark)}
.hdr__in{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:.85rem}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:var(--on-ink)}
.brand svg{width:34px;height:34px;color:var(--teal);flex:none}
.brand__wm{font-weight:700;font-size:.98rem;line-height:1.04;letter-spacing:-.015em}
.brand__wm span{display:block;color:var(--on-ink-dim);font-weight:500}
.nav{display:flex;gap:2rem;align-items:center}
.nav a{font-size:.86rem;text-decoration:none;color:var(--on-ink-dim);transition:color .2s}
.nav a:hover,.nav a:focus-visible{color:var(--teal)}
.btn{display:inline-block;font-family:var(--f-ui);font-size:.86rem;font-weight:600;padding:.72em 1.5em;border-radius:2px;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.btn--teal{background:var(--teal);color:var(--ink)}
.btn--teal:hover{background:#6BD3F1}
.btn--ghost{border-color:var(--rule-dark);color:var(--on-ink)}
.btn--ghost:hover{border-color:var(--teal);color:var(--teal)}
.burger{display:none;background:none;border:1px solid var(--rule-dark);border-radius:2px;color:var(--on-ink);width:40px;height:38px;cursor:pointer;align-items:center;justify-content:center}
.burger svg{width:18px;height:18px}
.mnav{border-top:1px solid var(--rule-dark);background:var(--ink)}
.mnav ul{display:flex;flex-direction:column}
.mnav a{display:block;padding:1rem var(--pad);text-decoration:none;color:var(--on-ink);border-bottom:1px solid var(--rule-dark);font-size:.95rem}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;padding-block:clamp(3.5rem,9vw,7rem) clamp(3rem,6vw,5rem)}
.hero__grid{position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(var(--rule-dark) 1px,transparent 1px),linear-gradient(90deg,var(--rule-dark) 1px,transparent 1px);
  background-size:78px 78px;opacity:.45;
  -webkit-mask-image:radial-gradient(115% 85% at 78% 6%,#000 0%,transparent 68%);
  mask-image:radial-gradient(115% 85% at 78% 6%,#000 0%,transparent 68%)}
.hero__in{position:relative}
.hero__meta{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;align-items:center;padding-bottom:1.4rem;border-bottom:1px solid var(--rule-dark);margin-bottom:clamp(2rem,4vw,3.2rem)}
.hero__meta .sep{color:var(--on-ink-dim);opacity:.5}
.hero__meta .m{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--on-ink-dim)}
h1{font-family:var(--f-disp);font-weight:300;font-size:clamp(2.6rem,7.2vw,5.6rem);line-height:1.03;letter-spacing:-.022em;max-width:16ch;text-wrap:balance}
h1 em{font-style:normal;color:var(--teal)}
.hero__sub{margin-top:clamp(1.6rem,3vw,2.2rem);max-width:52ch;font-size:clamp(1.02rem,1.6vw,1.22rem);line-height:1.6;color:var(--on-ink-dim)}
.hero__cta{margin-top:clamp(2rem,4vw,2.8rem);display:flex;flex-wrap:wrap;gap:.8rem}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--rule-dark);border-block:1px solid var(--rule-dark)}
.stat{background:var(--navy);padding:clamp(1.6rem,3vw,2.4rem) clamp(1.1rem,2vw,1.8rem);display:flex;flex-direction:column;gap:.55rem}
.stat__n{font-family:var(--f-disp);font-weight:300;font-size:clamp(2.4rem,5vw,3.6rem);line-height:1;letter-spacing:-.02em;color:var(--teal);font-variant-numeric:tabular-nums}
.stat__l{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;color:var(--on-ink-dim);line-height:1.55}

/* ---------- about ---------- */
.about{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,6vw,6rem)}
.about__col h3{font-family:var(--f-disp);font-weight:400;font-size:clamp(1.5rem,2.6vw,2rem);line-height:1.18;letter-spacing:-.012em;margin-block:.8rem 1rem;text-wrap:balance}
.about__col p{color:var(--on-paper-dim);max-width:46ch}
.about__col p+p{margin-top:1rem}
.about__place{margin-top:1.6rem;padding-top:1.1rem;border-top:1px solid var(--rule-light);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-deep)}

/* ---------- expertise ---------- */
.exp__hd{max-width:var(--measure);margin-bottom:clamp(2.5rem,5vw,3.8rem)}
.exp__hd h2{margin-block:.9rem .9rem}
.exp__list{border-top:1px solid var(--rule-dark)}
.exp__row{display:grid;grid-template-columns:minmax(200px,.95fr) 1.55fr;gap:.4rem clamp(1.5rem,4vw,4rem);padding-block:clamp(1.25rem,2.3vw,1.75rem);border-bottom:1px solid var(--rule-dark);position:relative}
.exp__row::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:0;background:var(--teal);transition:width .45s cubic-bezier(.22,1,.36,1)}
.exp__row:hover::after{width:100%}
.exp__name{font-family:var(--f-disp);font-weight:400;font-size:clamp(1.2rem,2vw,1.52rem);line-height:1.2;letter-spacing:-.01em;transition:color .25s}
.exp__row:hover .exp__name{color:var(--teal)}
.exp__desc{color:var(--on-ink-dim);max-width:58ch;font-size:.96rem}

/* ---------- selected work: sector boxes ---------- */
.work__hd{max-width:var(--measure);margin-bottom:clamp(2rem,4vw,3rem)}
.work__hd h2{margin-block:.9rem .9rem}
.sects{--sect-clamp:24rem;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:clamp(1rem,2vw,1.35rem)}
.sect{position:relative;background:#fff;border:1px solid var(--rule-light);border-top:2px solid var(--teal-mid);border-radius:2px;padding:clamp(1.25rem,2.3vw,1.65rem);display:flex;flex-direction:column;gap:.95rem}
.sect__hd{padding-bottom:.8rem;border-bottom:1px solid var(--rule-light)}
.sect__n{font-family:var(--f-disp);font-weight:400;font-size:1.1rem;line-height:1.25;letter-spacing:-.01em;color:var(--on-paper)}
.sect ul{display:flex;flex-direction:column;gap:.72rem}
/* Long lists fold down to the height of the shortest cards; the full list is
   always one click away, and is fully present when JavaScript is unavailable. */
.sect--clamped ul{max-height:var(--sect-clamp);overflow:hidden;
  -webkit-mask-image:linear-gradient(#000 68%,rgba(0,0,0,.15));mask-image:linear-gradient(#000 68%,rgba(0,0,0,.15))}
.sect__more{margin-top:auto;align-self:flex-start;background:none;border:0;cursor:pointer;
  font-family:var(--f-mono);font-size:.63rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--teal-deep);padding:.5rem 0 0;border-bottom:1px solid rgba(8,105,134,.32);
  transition:color .2s,border-color .2s}
.sect__more:hover{color:var(--teal-mid);border-bottom-color:var(--teal-mid)}
.sect__more::after{content:'';display:inline-block;width:.42em;height:.42em;margin-left:.55em;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:translateY(-.18em) rotate(45deg);transition:transform .2s}
.sect--open .sect__more::after{transform:translateY(.06em) rotate(-135deg)}
.sect li{font-size:.865rem;line-height:1.5;color:var(--on-paper-dim);padding-left:.95rem;position:relative}
.sect li::before{content:"";position:absolute;left:0;top:.6em;width:5px;height:1px;background:var(--teal-mid)}
.sect li b{color:var(--on-paper);font-weight:600;font-variant-numeric:tabular-nums}

/* ---------- founder ---------- */
.fnd{display:grid;grid-template-columns:minmax(260px,.78fr) 1.35fr;gap:clamp(2rem,5vw,4.5rem);align-items:start}
.fnd__fig{position:relative}
.fnd__fig img{width:100%;height:auto;border-radius:2px;filter:grayscale(1) contrast(1.06)}
.fnd__fig::after{content:"";position:absolute;inset:0;border-radius:2px;background:linear-gradient(150deg,rgba(31,47,86,.60),rgba(13,130,165,.32));mix-blend-mode:multiply;pointer-events:none}
.fnd__cap{margin-top:1rem;padding-top:.85rem;border-top:1px solid var(--rule-light);font-family:var(--f-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--on-paper-dim);line-height:1.7}
.fnd__cap b{display:block;color:var(--on-paper);font-weight:500}
.fnd__body h2{margin-block:.9rem 1.6rem}
.fnd__body p{color:var(--on-paper-dim);max-width:60ch}
.fnd__body p+p{margin-top:1.1rem}
.creds{margin-top:2.2rem;padding-top:1.4rem;border-top:1px solid var(--rule-light)}
.creds__l{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--on-paper-dim);margin-bottom:1rem}
.creds__row{display:flex;flex-wrap:wrap;gap:.5rem}
.cred{font-size:.8rem;font-weight:500;padding:.44em .85em;border:1px solid var(--rule-light);border-radius:2px;color:var(--on-paper);background:#fff}
.cred--edu{border-color:rgba(8,105,134,.35);color:var(--teal-deep)}

.fnd__li{display:inline-flex;align-items:center;gap:.5rem;margin-top:1rem;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-deep);text-decoration:none;border-bottom:1px solid rgba(8,105,134,.32);padding-bottom:.2rem;transition:color .2s,border-color .2s}
.fnd__li:hover,.fnd__li:focus-visible{color:var(--on-paper);border-bottom-color:var(--on-paper)}
.fnd__li svg{width:14px;height:14px;flex:none}

/* ---------- cta ---------- */
.cta{display:grid;grid-template-columns:1.4fr auto;gap:clamp(1.6rem,4vw,3rem);align-items:center}
.cta h2{margin-bottom:.9rem}

/* ---------- contact ---------- */
.ct__hd{margin-bottom:clamp(2.2rem,4vw,3.2rem);max-width:var(--measure)}
.ct__hd h2{margin-block:.9rem .9rem}
.ct{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule-dark);border:1px solid var(--rule-dark);border-radius:2px}
.ct__grp{background:var(--ink);padding:clamp(1.5rem,3vw,2.1rem);display:flex;flex-direction:column;gap:1.4rem}
.ct__list{display:flex;flex-direction:column;gap:1.4rem;margin-top:.4rem}
.ct__k{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--teal);margin-bottom:.45rem}
.ct__v{font-size:1.02rem}
.ct__v a{text-decoration:none;border-bottom:1px solid var(--rule-dark);transition:border-color .2s,color .2s}
.ct__v a:hover{color:var(--teal);border-bottom-color:var(--teal)}
.ct__addr{font-size:.9rem;color:var(--on-ink-dim);line-height:1.7;font-style:normal}

/* ---------- footer ---------- */
.ft{border-top:1px solid var(--rule-dark);padding-block:clamp(3rem,5vw,4rem) 2rem}
.ft__grid{display:grid;grid-template-columns:1.25fr .7fr .9fr 1.25fr;gap:clamp(1.8rem,4vw,3rem)}
.ft h4{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--teal);margin-bottom:1rem;font-weight:500}
.ft ul{display:flex;flex-direction:column;gap:.55rem}
.ft a{color:var(--on-ink-dim);text-decoration:none;font-size:.9rem;transition:color .2s}
.ft a:hover{color:var(--teal)}
.ft__tag{color:var(--on-ink-dim);font-size:.9rem;margin-top:1rem;max-width:24ch}
.ft__ci{font-size:.85rem;color:var(--on-ink-dim);line-height:1.65;display:flex;flex-direction:column;gap:.7rem}
.ft__ci .k{font-family:var(--f-mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;opacity:.7;display:block;margin-bottom:.15rem}
.ft__bot{margin-top:clamp(2.4rem,4vw,3.2rem);padding-top:1.4rem;border-top:1px solid var(--rule-dark);display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;justify-content:space-between;font-size:.8rem;color:var(--on-ink-dim)}

/* ---------- keyword hover-cards ---------- */
.kw{position:relative;display:inline;cursor:help;outline:none;
  text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;
  transition:text-decoration-color .15s ease-out,color .15s ease-out}
.band--ink .kw,.band--navy .kw{text-decoration-color:rgba(62,194,234,.30)}
.band--paper .kw,.band--paper-warm .kw{text-decoration-color:rgba(8,105,134,.30)}
.band--ink .kw:hover,.band--navy .kw:hover,.band--ink .kw:focus-visible,.band--navy .kw:focus-visible{text-decoration-color:var(--teal);color:var(--teal)}
.band--paper .kw:hover,.band--paper-warm .kw:hover,.band--paper .kw:focus-visible,.band--paper-warm .kw:focus-visible{text-decoration-color:var(--teal-deep);color:var(--teal-deep)}
.kw::before{content:"";position:absolute;top:-8px;bottom:-8px;left:-10px;right:-10px;z-index:5}
.kw__card{--kx:-50%;position:absolute;top:calc(100% + 11px);left:50%;z-index:60;
  width:max-content;max-width:min(300px,calc(100vw - 2.5rem));
  transform:translateX(var(--kx)) translateY(-4px);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .16s ease-out,transform .16s cubic-bezier(.22,1,.36,1),visibility .16s;
  border-radius:3px;padding:.85rem .95rem;text-align:left;white-space:normal;
  font-family:var(--f-ui);font-size:.82rem;line-height:1.5;font-weight:400;text-decoration:none;letter-spacing:0;
  -webkit-backdrop-filter:blur(14px) saturate(1.35);backdrop-filter:blur(14px) saturate(1.35)}
.kw:hover .kw__card,.kw:focus-within .kw__card{opacity:1;visibility:visible;transform:translateX(var(--kx)) translateY(0)}
.kw--flip-l .kw__card{left:0;--kx:0}
.kw--flip-r .kw__card{left:auto;right:0;--kx:0}
.band--ink .kw__card,.band--navy .kw__card{background:rgba(24,35,62,.93);border:1px solid var(--rule-dark);border-top:2px solid var(--teal);color:var(--on-ink);box-shadow:0 18px 40px -12px rgba(0,0,0,.62)}
.band--paper .kw__card,.band--paper-warm .kw__card{background:rgba(255,255,255,.95);border:1px solid var(--rule-light);border-top:2px solid var(--teal-mid);color:var(--on-paper);box-shadow:0 18px 40px -14px rgba(19,26,40,.3)}
.kw__t{display:block;font-family:var(--f-mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:.4rem}
.band--ink .kw__t,.band--navy .kw__t{color:var(--teal)}
.band--paper .kw__t,.band--paper-warm .kw__t{color:var(--teal-deep)}

/* ---------- hover lift ---------- */
@media (hover:hover) and (pointer:fine){
  .sect{will-change:transform;transition:transform .28s cubic-bezier(.22,1,.36,1),border-color .28s cubic-bezier(.22,1,.36,1)}
  .sect::after{content:"";position:absolute;inset:0;border-radius:inherit;background:rgba(19,26,40,.04);opacity:0;pointer-events:none;transition:opacity .28s cubic-bezier(.22,1,.36,1)}
  .sect:hover{transform:scale(1.012)}
  .sect:hover::after{opacity:1}
}

:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
@media (prefers-reduced-motion:reduce){
  *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
  .sect:hover{transform:none}
}

@media (max-width:1080px){
  .sects{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:980px){
  .about,.fnd,.cta{grid-template-columns:1fr}
  .ct{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(2,1fr)}
  .ft__grid{grid-template-columns:1fr 1fr}
  .fnd__fig{max-width:340px}
}
@media (max-width:760px){
  .nav{display:none}
  .burger{display:inline-flex}
  .hdr .btn--teal{display:none}
  .exp__row{grid-template-columns:1fr;gap:.5rem}
  .sects{grid-template-columns:1fr}
}
@media (max-width:520px){
  .stats{grid-template-columns:1fr}
  .ft__grid{grid-template-columns:1fr}
}

/* ---------- contact: direct-action row ---------- */
.ct__act{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:clamp(2rem,4vw,2.6rem)}
.ct__note{margin-top:1.1rem;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--on-ink-dim);line-height:1.7}

/* ---------- accessibility ---------- */
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--teal);color:var(--ink);padding:.7em 1.2em;font-weight:600;font-size:.86rem;border-radius:0 0 2px 0}
.skip:focus{left:0}
:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
html{scroll-behavior:smooth;scroll-padding-top:5rem}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ---------- print ---------- */
@media print{
  .hdr,.mnav,.burger,.hero__grid,.ct__act{display:none!important}
  body{background:#fff;color:#000}
  .band{padding-block:1.5rem}
  .kw__card{display:none}
}
