@import url("https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500;600&display=swap");

:root{
  --navy-900:#0E1B2C;--navy-800:#16243B;--navy-700:#22334E;
  --slate-500:#5A6B82;--slate-400:#7B8899;--slate-300:#A7B1BF;
  --slate-200:#DDE2E9;--slate-100:#EDF0F4;--slate-50:#F7F8FA;
  --harbour-700:#245A76;--harbour-600:#2F6F8F;--harbour-500:#3C86A8;
  --harbour-200:#BFD8E2;--harbour-100:#E4EFF3;
  --border-inverse:#2A3B57;--text-inverse-muted:#A9B7C8;

  --gutter:72px;
  --max:1200px;
  --section:96px;
  --section-tight:56px;

  --display-xl:60px;--display-l:46px;--display-m:34px;
  --heading-l:26px;--heading-m:21px;--heading-s:18px;
  --body-l:19px;--body-m:16.5px;--body-s:14.5px;
  --caption:12.5px;

  --ease:cubic-bezier(.2,.6,.2,1);
  --ui:color 180ms var(--ease),background-color 180ms var(--ease),border-color 180ms var(--ease);
}

*,*::before,*::after{box-sizing:border-box}

html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-behavior:smooth;overscroll-behavior-y:none}

body{
  margin:0;background:var(--slate-50);color:var(--navy-700);overscroll-behavior-y:none;
  font-family:"Instrument Sans","Helvetica Neue",Arial,sans-serif;
  font-size:var(--body-m);line-height:1.68;
}

h1,h2,h3{color:var(--navy-900);font-weight:600;margin:0;text-wrap:pretty}
p{margin:0;text-wrap:pretty}
img{display:block;max-width:100%;height:auto}

a{color:var(--harbour-700);text-decoration:none;border-bottom:1px solid var(--harbour-200);transition:var(--ui)}
a:hover{color:var(--harbour-600);border-bottom-color:var(--harbour-600)}
a.plain{border-bottom:none}

:focus-visible{outline:2px solid var(--harbour-500);outline-offset:2px}
::selection{background:var(--harbour-200);color:var(--navy-900)}

.skip{position:absolute;left:-9999px;top:0;background:#fff;color:var(--navy-900);padding:12px 18px;z-index:50}
.skip:focus{left:var(--gutter)}

.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}

/* ---------- masthead ---------- */

.masthead{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--slate-200)}
.masthead .bar{max-width:var(--max);margin:0 auto;padding:20px var(--gutter) 0;display:flex;flex-wrap:wrap;align-items:stretch;justify-content:space-between;gap:0 32px}
.mark{display:inline-flex;flex:0 0 auto;padding-bottom:20px;border-bottom:none}
.mark img{width:225px;height:auto;max-width:100%;display:block}
.nav{display:flex;align-items:stretch;gap:24px}
.nav a{display:flex;align-items:center;padding:0 2px 20px;font-size:15px;color:var(--slate-500);border-bottom:2px solid transparent}
.nav a:hover{color:var(--navy-900)}
.nav a[aria-current]{color:var(--navy-900);font-weight:500;border-bottom-color:var(--harbour-600)}
.menu-btn{display:none}

/* ---------- hero and page titles ---------- */

.page-title{background:linear-gradient(100deg,#101E33 0%,var(--navy-800) 45%,#25405F 100%);color:var(--slate-50);padding:56px 0}
.page-title h1{color:#fff;font-size:var(--display-l);line-height:1.08;letter-spacing:-.026em;max-width:26ch}

.hero{background:var(--navy-800);color:var(--slate-50);padding:96px 0 72px;overflow:hidden}
/* The hero photograph reaches 96px past the container on the right — the only element on the
   site allowed out of the 1200px rail. On a wide window it simply runs wider than its column;
   on a narrow one the overhang is clipped by the section. */
.hero .split{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:72px;align-items:stretch}
.hero .bleed{--bleed:96px;max-width:none;margin-right:calc(-1 * var(--bleed));width:calc(100% + var(--bleed))}
.hero h1{color:#fff;font-size:var(--display-xl);line-height:1.04;letter-spacing:-.028em;max-width:20ch;margin-bottom:20px}
.hero .lede{font-size:var(--body-l);line-height:1.62;color:var(--text-inverse-muted);max-width:52ch;margin-bottom:40px}
.hero img{width:100%;height:100%;min-height:380px;object-fit:cover;object-position:34% center;border-radius:10px}
.actions{display:flex;flex-wrap:wrap;gap:12px}

/* ---------- buttons ---------- */

.btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font:500 16px/1.2 inherit;padding:16px 28px;border-radius:4px;border:1px solid transparent;cursor:pointer;transition:var(--ui);border-bottom:1px solid transparent}
.btn-accent{background:var(--harbour-600);color:#fff}
.btn-accent:hover{background:var(--harbour-700);color:#fff}
.btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.32)}
.btn-ghost:hover{background:#fff;color:var(--navy-900);border-color:#fff}
.btn-inverse{background:#fff;color:var(--navy-900)}
.btn-inverse:hover{background:var(--harbour-100);color:var(--navy-900)}

.arrow-link{display:inline-flex;align-items:center;gap:16px;border-bottom:none;font-size:17px;font-weight:500;color:var(--navy-900)}
.arrow-link .chip{width:44px;height:44px;flex:0 0 auto;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--harbour-200);background:var(--harbour-100);color:var(--harbour-700);transition:var(--ui),transform 180ms var(--ease)}
.arrow-link:hover{color:var(--navy-900)}
.arrow-link:hover .chip{background:var(--harbour-600);color:#fff;transform:translateX(2px)}
.arrow-link.on-navy{color:#fff}
.arrow-link.on-navy .chip{border-color:rgba(255,255,255,.32);background:transparent;color:var(--harbour-200)}
.arrow-link.on-navy:hover .chip{background:rgba(255,255,255,.14);color:#fff}

/* ---------- sections ---------- */

.band{padding:var(--section) 0}
.band-page{background:var(--slate-50)}
.band-card{background:#fff;border-top:1px solid var(--slate-200)}
.band-navy{background:var(--navy-800);color:var(--slate-50)}
.band-navy h2,.band-navy h3{color:#fff}
.band-deep{background:var(--navy-900);color:var(--slate-50);padding:96px 0}
/* A closing band with no supporting line stays thin: heading and button on one row. */
.band-thin{background:var(--navy-900);color:var(--slate-50);padding:var(--section-tight) 0}
.band-thin .wrap{display:flex;flex-wrap:wrap;gap:24px 40px;align-items:center;justify-content:space-between}
.band-thin h2{color:#fff;font-size:var(--heading-l);line-height:1.22;letter-spacing:-.016em;margin:0}
.band-deep h2{color:#fff}

h2.display{font-size:var(--display-l);line-height:1.08;letter-spacing:-.026em}
h2.section-title{font-size:var(--display-m);line-height:1.14;letter-spacing:-.02em}
h2.sub{font-size:var(--heading-l);line-height:1.22;letter-spacing:-.016em}
h3.sub{font-size:var(--heading-m);line-height:1.3;letter-spacing:-.012em}

.measure{max-width:62ch}
.stack{display:flex;flex-direction:column}
.stack-5{gap:16px}.stack-6{gap:20px}.stack-7{gap:24px}.stack-8{gap:32px}.stack-9{gap:40px}.stack-11{gap:72px}.stack-12{gap:96px}

/* Same column ratio and gap as the hero, so this image starts on the hero image's left edge. */
.two-col{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:72px;align-items:center}
.two-col img{width:100%;aspect-ratio:3 / 2;object-fit:cover;border-radius:10px}

/* sticky intro + scrolling content */
.split-page{display:grid;grid-template-columns:0.8fr 1.25fr;gap:96px;align-items:start}
.aside{position:sticky;top:96px}
.intro{border-left:3px solid var(--harbour-600);padding-left:24px;max-width:34ch}
.intro-quiet{color:var(--slate-500);border-left-color:transparent}

/* ---------- figures, cards, lists ---------- */

.glance{background:#fff;border-top:1px solid var(--slate-200);border-bottom:1px solid var(--slate-200);padding:var(--section-tight) 0}
.eyebrow{font-size:13.5px;font-weight:500;color:var(--harbour-700)}
.figures{display:grid;grid-template-columns:repeat(4,1fr);gap:40px;margin-top:32px}
.figure .value{font-size:44px;line-height:1;letter-spacing:-.03em;font-weight:600;color:var(--navy-900)}
.figure .label{margin-top:12px;font-size:var(--body-s);line-height:1.6;color:var(--slate-500)}

.cards-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:32px}
.cards-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:32px}
.card{background:#fff;border:1px solid var(--slate-200);border-radius:6px;box-shadow:0 1px 2px rgba(14,27,44,.05);overflow:hidden;display:flex;flex-direction:column;transition:var(--ui),box-shadow 180ms var(--ease)}
.card:hover{border-color:var(--slate-300);box-shadow:0 4px 14px -4px rgba(14,27,44,.14)}
.card .body{padding:32px;display:flex;flex-direction:column;gap:16px}
.card h3{font-size:var(--heading-m);letter-spacing:-.012em}
.card p{font-size:var(--body-s);line-height:1.6;color:var(--slate-500)}
.card img{width:100%;aspect-ratio:16 / 7;object-fit:cover;border-bottom:1px solid var(--slate-200)}
.service-card{background:#fff;border:1px solid var(--slate-200);border-radius:6px;padding:28px;display:flex;flex-direction:column;gap:12px}
.service-card h3{font-size:var(--heading-s);letter-spacing:-.01em}
.service-card p{font-size:var(--body-s);line-height:1.6;color:var(--slate-500)}

.sectors{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:32px}
.sectors img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:10px}
.sectors .name{border-top:1px solid var(--slate-200);margin-top:16px;padding-top:16px;font-size:var(--heading-s);letter-spacing:-.01em;font-weight:500;color:var(--navy-900)}

.quotes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:56px;margin-top:32px}
blockquote{margin:0;font-size:var(--body-l);line-height:1.62;letter-spacing:-.012em;color:var(--navy-900)}
figure.quote{margin:0;display:flex;flex-direction:column;gap:20px;border-left:3px solid var(--harbour-600);padding-left:24px}
figcaption{font-size:var(--body-s);color:var(--slate-500)}
figcaption b{font-weight:500;color:var(--navy-700)}

.panel{background:var(--slate-100);border-radius:6px;padding:24px;max-width:62ch}
.tag{display:inline-block;white-space:nowrap;font-size:var(--caption);font-weight:500;color:var(--harbour-700);background:var(--harbour-100);border:1px solid var(--harbour-200);border-radius:3px;padding:6px 10px;line-height:1;margin-bottom:20px}
.panel ul{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:0 32px}
.panel ul.single{grid-template-columns:1fr}
.panel li{font-size:var(--body-s);line-height:1.6;padding:12px 0}
.panel li+li{border-top:1px solid var(--slate-200)}
.panel ul:not(.single) li:nth-child(2){border-top:none}
.detail{margin:0;display:grid;grid-template-columns:auto 1fr;gap:12px 32px;font-size:var(--body-s);line-height:1.6}
.detail dt{color:var(--slate-400);white-space:nowrap}
.detail dd{margin:0;color:var(--navy-700)}
.panel ul.numbered li{display:flex;gap:12px;align-items:flex-start;padding:16px 0}
.count{width:26px;height:26px;flex:0 0 auto;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:var(--caption);font-weight:500;color:var(--harbour-700);background:#fff;border:1px solid var(--harbour-200)}

.article{border-top:1px solid var(--slate-200);padding-top:24px;display:flex;flex-direction:column;gap:20px}
.article img{width:100%;aspect-ratio:21 / 9;object-fit:cover;border-radius:10px}

.principles{display:grid;grid-template-columns:1fr 1fr;gap:24px 32px}
.principles h3{font-size:var(--heading-s);letter-spacing:-.01em}
.principles p{font-size:var(--body-s);line-height:1.6;color:var(--slate-500)}
.principles .count{width:30px;height:30px;background:var(--harbour-100);margin-bottom:4px}

/* ---------- how we work ---------- */

.method{display:flex;flex-direction:column;gap:20px}
.stage{appearance:none;background:none;border:none;padding:0;text-align:left;cursor:pointer;font:inherit;display:flex;flex-direction:column;gap:12px;color:inherit}
.stage .rail{position:relative;height:2px;display:block;width:100%;background-color:var(--border-inverse);background-image:linear-gradient(var(--harbour-600),var(--harbour-600));background-repeat:no-repeat;background-size:0 100%;transition:background-size 220ms linear}
.stage .rail span{display:none}
.stage[aria-current] .rail{background-size:100% 100%;transition:background-size 4200ms linear}
.stage .name{font-size:var(--heading-m);line-height:28px;letter-spacing:-.012em;font-weight:600;color:rgba(255,255,255,.5);transition:color 280ms var(--ease)}
.stage[aria-current] .name{color:#fff}

/* ---------- accordion ---------- */

.accordion{border-top:1px solid var(--slate-200)}
.accordion details{border-bottom:1px solid var(--slate-200)}
.accordion summary{cursor:pointer;list-style:none;padding:20px 0;display:flex;align-items:center;justify-content:space-between;gap:24px;font-size:var(--heading-m);letter-spacing:-.012em;font-weight:600;color:var(--navy-900)}
.accordion summary::-webkit-details-marker{display:none}
.accordion summary:hover{color:var(--harbour-700)}
.accordion summary .sign{flex:0 0 auto;width:26px;height:26px;border-radius:999px;border:1px solid var(--harbour-200);background:var(--harbour-100);color:var(--harbour-700);display:inline-flex;align-items:center;justify-content:center;transition:var(--ui),transform 180ms var(--ease)}
.accordion details[open] summary .sign{background:var(--harbour-600);color:#fff;border-color:var(--harbour-600);transform:rotate(180deg)}
.accordion .content{padding:0 0 24px;display:flex;flex-direction:column;gap:20px}
.results{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px}
.results li{padding-left:16px;position:relative}
.results li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:1px;background:var(--harbour-600)}

/* ---------- case studies ---------- */

.case{border-top:1px solid var(--slate-200);padding-top:40px;display:grid;grid-template-columns:1.1fr 1fr;gap:56px;align-items:start}
.case img{width:100%;aspect-ratio:3 / 2;object-fit:cover;border-radius:10px}
.case dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:8px 20px;font-size:var(--body-s);line-height:1.6}
.case dt{color:var(--slate-400)}
.case dd{margin:0}

/* ---------- terms ---------- */

.contents{position:sticky;top:96px;display:flex;flex-direction:column;gap:12px}
.contents .label{font-size:var(--caption);color:var(--slate-400)}
.contents a{font-size:var(--body-s);color:var(--slate-500);border-bottom:none;display:flex;gap:12px}
.contents a:hover{color:var(--navy-900)}
.contents a span{color:var(--slate-400);min-width:1.2em}
.clause{scroll-margin-top:96px}
.clause+.clause{margin-top:40px;padding-top:40px;border-top:1px solid var(--slate-200)}
.clause h2{font-size:var(--heading-m);line-height:1.3;letter-spacing:-.012em;margin-bottom:16px}
.clause p{margin-bottom:16px;max-width:62ch}
.clause ul{margin:0 0 16px;padding-left:24px;max-width:62ch}
.clause li{margin-bottom:8px}

/* ---------- contact ---------- */

.reach .key{font-size:var(--caption);color:var(--slate-400);margin-bottom:8px}
.reach .email{display:flex;gap:16px;align-items:flex-start;font-size:var(--heading-m);line-height:1.3;letter-spacing:-.012em;overflow-wrap:anywhere}
.reach .email svg{flex:0 0 auto;margin-top:7px;color:var(--harbour-700)}

/* ---------- footer ---------- */

.site-foot{background:var(--navy-900);color:var(--slate-50);padding:72px 0 32px}
.site-foot .inner{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.site-foot .top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid var(--border-inverse)}
.site-foot .mark img{width:273px;height:auto}
.site-foot p{font-size:var(--body-s);line-height:1.6;color:var(--text-inverse-muted);max-width:32ch}
.site-foot .lines{display:flex;flex-direction:column;gap:4px;font-size:var(--body-s)}
.site-foot .lines a{color:var(--harbour-200);border-bottom:none}
.site-foot .lines a:hover{color:#fff}
.site-foot .lines span{color:var(--text-inverse-muted)}
.site-foot .col{display:flex;flex-direction:column;gap:12px}
.site-foot .col b{font-size:13.5px;font-weight:500;color:#fff}
.site-foot .col a{font-size:var(--body-s);color:var(--text-inverse-muted);border-bottom:none}
.site-foot .col a:hover{color:#fff}
.site-foot .base{margin-top:24px;display:flex;flex-wrap:wrap;gap:8px 24px;align-items:baseline;justify-content:space-between}
.site-foot .base p,.site-foot .base a{font-size:var(--caption);color:var(--slate-400);border-bottom:none;max-width:none}
.site-foot .base a:hover{color:#fff}

/* ---------- 404 ---------- */

.notfound{min-height:60vh;display:flex;flex-direction:column;justify-content:center;gap:20px;align-items:flex-start}

/* ---------- narrow screens ---------- */

@media (max-width:1024px){
  :root{--gutter:40px;--section:72px;--section-tight:48px;--display-xl:48px;--display-l:38px;--display-m:30px}
  .figures,.sectors{grid-template-columns:repeat(2,1fr)}
  .cards-3{grid-template-columns:repeat(2,1fr)}
  .quotes{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px}
  .split-page{gap:56px}
}

@media (max-width:760px){
  :root{--gutter:24px;--section:56px;--section-tight:40px;
    --display-xl:34px;--display-l:28px;--display-m:23px;
    --heading-l:21px;--heading-m:18px;--body-l:17px}
  .hero{padding:56px 0 48px}
  .hero .split,.two-col,.split-page,.case,.cards-2,.cards-3,.quotes{grid-template-columns:1fr;gap:32px}
  .hero .bleed{--bleed:0px;margin-right:0;width:100%}
  .hero img{height:auto;min-height:0;aspect-ratio:3 / 2}
  .hero h1,.page-title h1{max-width:none}
  .figure .value{font-size:32px}
  .aside,.contents{position:static}
  .panel ul{grid-template-columns:1fr}
  .detail{grid-template-columns:1fr;gap:0}
  .detail dt{margin-top:12px}
  .detail dt:first-child{margin-top:0}
  .detail dd{margin-top:2px}
  .panel ul:not(.single) li:nth-child(2){border-top:1px solid var(--slate-200)}
  .principles{grid-template-columns:1fr}
  .case img{order:-1}
  .quotes{gap:32px}

  .masthead .bar{padding:16px var(--gutter);align-items:center}
  .mark{padding-bottom:0}
  .mark img{width:203px}
  .menu-btn{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:5px;min-width:44px;min-height:44px;background:none;border:none;padding:0;cursor:pointer}
  .menu-btn i{display:block;height:1.5px;width:22px;background:var(--navy-900);transition:width 180ms var(--ease)}
  .menu-btn i:nth-child(2){width:16px}
  .menu-btn[aria-expanded="true"] i:nth-child(2){width:22px}
  .nav{display:none;flex-basis:100%;flex-direction:column;padding:4px 0 12px;gap:0}
  .masthead.open .nav{display:flex}
  .nav a{min-height:48px;padding:0 0 0 16px;font-size:17px;border-bottom:none;border-left:2px solid transparent}
  .nav a[aria-current]{border-left-color:var(--harbour-600)}

  .site-foot{padding:56px 0 32px}
  .site-foot .top{grid-template-columns:1fr 1fr;gap:32px}
  .site-foot .brand{grid-column:1 / -1}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition-duration:1ms !important;animation-duration:1ms !important}
  .stage .name{color:#fff}
  .stage .rail{background-size:100% 100%}
}
