

:root{
  --ink:#152420; --ink-soft:#2C3D37;
  --paper:#F3EFE4; --paper-dim:#E9E3D3;
  --moss:#3F5B4E; --ochre:#C57C3A; --ochre-deep:#9B5F27;
  --line:rgba(21,36,32,0.14); --card:#FBF9F2;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{background:var(--paper); color:var(--ink); font-family:'IBM Plex Sans', sans-serif; line-height:1.55;}
h1,h2,h3{font-family:'Fraunces', serif; font-weight:500; letter-spacing:-0.01em; color:var(--ink);}
a{color:inherit; text-decoration:none;}
.eyebrow{font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:0.08em; text-transform:uppercase; color:var(--moss);}
.wrap{max-width:1180px; margin:0 auto; padding:0 40px;}

header{position:sticky; top:0; z-index:50; background:rgba(243,239,228,0.92); backdrop-filter:blur(6px); border-bottom:1px solid var(--line);}
nav{display:flex; align-items:center; justify-content:space-between; padding:20px 40px; max-width:1180px; margin:0 auto;}
.logo{font-family:'Fraunces', serif; font-weight:600; font-size:19px;}
.navlinks{display:flex; gap:32px; font-size:14.5px; align-items:center;}
.navlinks > a{opacity:0.82; transition:opacity .15s;}
.navlinks > a:hover, .navlinks > a.active{opacity:1;}
.navlinks > a.active{color:var(--ochre-deep);}
.navcta{font-family:'IBM Plex Mono', monospace; font-size:13px; border:1px solid var(--ink); padding:9px 18px; border-radius:2px; white-space:nowrap;}
.navcta:hover{background:var(--ink); color:var(--paper);}

.dropdown{position:relative;}
.dropdown > .drop-toggle{
  opacity:0.82; transition:opacity .15s; cursor:pointer;
  display:inline-flex; align-items:center; gap:5px; font-size:14.5px;
  background:none; border:none; color:inherit; font-family:inherit;
}
.dropdown > .drop-toggle:hover, .dropdown.active > .drop-toggle{opacity:1;}
.dropdown.active > .drop-toggle{color:var(--ochre-deep);}
.drop-toggle .caret{font-size:9px; transition:transform .2s; margin-top:1px;}
.dropdown:hover .drop-toggle .caret, .dropdown:focus-within .drop-toggle .caret{transform:rotate(180deg);}
.drop-menu{
  position:absolute; top:calc(100% + 12px); left:50%; transform:translateX(-50%) translateY(-6px);
  background:var(--card); border:1px solid var(--line); border-radius:3px;
  box-shadow:0 12px 30px rgba(21,36,32,0.12);
  min-width:240px; padding:8px; opacity:0; visibility:hidden; transition:opacity .16s, transform .16s;
  z-index:60;
}
.dropdown:hover .drop-menu, .dropdown:focus-within .drop-menu{opacity:1; visibility:visible; transform:translateX(-50%) translateY(0);}

.drop-menu::before{content:''; position:absolute; left:0; right:0; top:-14px; height:14px;}
.drop-menu a{display:block; padding:9px 12px; font-size:14px; border-radius:2px; opacity:0.9; transition:background .12s;}
.drop-menu a:hover{background:var(--paper-dim); opacity:1;}
.drop-menu a .d-sub{display:block; font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--ink-soft); margin-top:2px;}

.nav-toggle{display:none;}
.nav-toggle .nt-bars{position:relative; width:20px; height:2px; background:var(--ink); border-radius:2px;}
.nav-toggle .nt-bars::before, .nav-toggle .nt-bars::after{content:''; position:absolute; left:0; width:20px; height:2px; background:var(--ink); border-radius:2px; transition:transform .2s;}
.nav-toggle .nt-bars::before{top:-6px;}
.nav-toggle .nt-bars::after{top:6px;}
nav.nav-open .nav-toggle .nt-bars{background:transparent;}
nav.nav-open .nav-toggle .nt-bars::before{transform:translateY(6px) rotate(45deg);}
nav.nav-open .nav-toggle .nt-bars::after{transform:translateY(-6px) rotate(-45deg);}

.btn-primary{
  background:var(--ink); color:var(--paper);
  padding:14px 26px; border-radius:2px; font-size:14.5px;
  font-family:'IBM Plex Mono', monospace;
  display:inline-flex; align-items:center; gap:10px;
  border:none; cursor:pointer; transition:background .15s;
}
.btn-primary:hover{background:var(--ochre-deep);}
.btn-ghost{
  border:1px solid var(--ink); padding:14px 26px; border-radius:2px;
  font-size:14.5px; font-family:'IBM Plex Mono', monospace;
  background:none; cursor:pointer; transition:background .15s, color .15s;
}
.btn-ghost:hover{background:var(--ink); color:var(--paper);}

.section-head{padding:80px 40px 40px; border-bottom:1px solid var(--line);}
.section-head .wrap{padding:0;}
.section-head h1{font-size:clamp(38px,5vw,58px); margin:14px 0 20px; max-width:640px;}
.section-head p{font-size:17px; color:var(--ink-soft); max-width:620px;}

.browse{display:flex; gap:10px; flex-wrap:wrap; padding:24px 40px; border-bottom:1px solid var(--line);}
.browse a{font-family:'IBM Plex Mono', monospace; font-size:12.5px; border:1px solid var(--line); padding:7px 14px; border-radius:20px; color:var(--ink-soft); cursor:pointer;}
.browse a:hover, .browse a.active{border-color:var(--ink); color:var(--ink);}

.archive-grid{padding:60px 40px 100px; max-width:1240px; margin:0 auto; display:grid; grid-template-columns:repeat(3,1fr); gap:28px;}
.report-card{background:var(--card); border:1px solid var(--line); border-radius:2px; padding:32px 28px; display:flex; flex-direction:column; gap:12px; transition:background .15s, border-color .15s;}
.report-card:hover{background:#fff; border-color:var(--ink);}
.report-card .eyebrow{display:flex; justify-content:space-between; align-items:center; gap:10px;}
.report-card h3{font-size:20px; line-height:1.25;}
.report-card p{font-size:14px; color:var(--ink-soft); flex:1;}
.report-card .read{font-family:'IBM Plex Mono', monospace; font-size:12.5px; color:var(--ochre-deep); margin-top:6px;}

.back{max-width:680px; margin:36px auto 0; padding:0 40px; font-family:'IBM Plex Mono', monospace; font-size:13px; color:var(--moss);}
.article-head{max-width:680px; margin:0 auto; padding:28px 40px 40px;}
.article-head .eyebrow{display:flex; gap:16px; flex-wrap:wrap; margin-bottom:18px;}
.article-head h1{font-size:clamp(32px,4.4vw,46px); line-height:1.08; margin-bottom:18px;}
.byline{font-size:14px; color:var(--ink-soft);}

.hero-figure{max-width:900px; margin:0 auto 8px; padding:0 40px;}
.hero-figure .frame{background:var(--ink); aspect-ratio:16/9; border-radius:2px; display:flex; align-items:center; justify-content:center; color:var(--paper-dim); font-family:'IBM Plex Mono', monospace; font-size:13px; text-align:center; padding:20px;}
figcaption{max-width:680px; margin:10px auto 0; padding:0 40px; font-size:13px; color:var(--ink-soft); font-family:'IBM Plex Mono', monospace;}

article{max-width:680px; margin:0 auto; padding:48px 40px 100px;}
article p{font-size:17px; color:var(--ink); margin-bottom:22px;}
article p.lede{font-size:20px; color:var(--ink-soft); margin-bottom:34px; font-family:'Fraunces', serif; font-weight:400; line-height:1.4;}
article h2{font-size:26px; margin:48px 0 18px;}
article h3{font-size:20px; margin:36px 0 14px;}
article ul, article ol{margin:0 0 22px 22px; font-size:17px;}
article li{margin-bottom:8px;}
article blockquote{border-left:2px solid var(--ochre); padding:2px 0 2px 24px; margin:36px 0; font-family:'Fraunces', serif; font-size:22px; font-style:italic; color:var(--ink-soft); line-height:1.4;}
article figure{margin:40px -40px;}
article figure img, article figure .frame{width:100%; border-radius:2px;}
article figure .frame{background:var(--ink); aspect-ratio:16/9; display:flex; align-items:center; justify-content:center; color:var(--paper-dim); font-family:'IBM Plex Mono', monospace; font-size:13px; text-align:center; padding:20px;}
article figure figcaption{padding:0 40px; margin-top:10px;}
article figure.inline{margin:36px 0;}
article a.inline-link{color:var(--ochre-deep); text-decoration:underline; text-decoration-color:var(--line); text-underline-offset:3px;}
article code{font-family:'IBM Plex Mono', monospace; font-size:0.9em; background:var(--paper-dim); padding:1px 5px; border-radius:2px;}
article figure video{width:100%; border-radius:2px; display:block;}
article hr.fn-rule{border:none; border-top:1px solid var(--line); margin:44px 0 18px;}
article .fn-note{font-size:14px; color:var(--ink-soft);}
article .fn-note a{color:var(--ochre-deep);}
article sup a{color:var(--ochre-deep);}

.stat-row{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); margin:40px 0; border:1px solid var(--line);}
.stat-row div{background:var(--card); padding:22px 20px;}
.stat-row .stat-num{font-family:'Fraunces', serif; font-size:32px; color:var(--ochre-deep);}
.stat-row .stat-label{font-size:12.5px; color:var(--ink-soft); margin-top:4px;}

.form-wrap{max-width:640px; margin:0 auto; padding:60px 40px 100px;}
.field{margin-bottom:22px;}
.field label{display:block; font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:0.04em; text-transform:uppercase; color:var(--moss); margin-bottom:8px;}
.field input, .field select, .field textarea{
  width:100%; background:var(--card); border:1px solid var(--line); border-radius:2px;
  padding:13px 14px; font-family:'IBM Plex Sans', sans-serif; font-size:15px; color:var(--ink);
  transition:border-color .15s;
}
.field input:focus, .field select:focus, .field textarea:focus{outline:none; border-color:var(--ochre-deep);}
.field textarea{min-height:150px; resize:vertical;}
.form-status{margin-top:10px; font-size:14px; min-height:20px;}
.form-status.ok{color:var(--moss);}
.form-status.err{color:#9b2727;}

.newsletter{border-top:1px solid var(--line); padding:60px 40px; background:var(--card);}
.newsletter .wrap{display:flex; align-items:center; justify-content:space-between; gap:30px; flex-wrap:wrap;}
.newsletter h3{font-size:24px; max-width:420px;}
.newsletter .nl-note{font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--ink-soft); margin-top:8px;}
.newsletter form{display:flex; gap:10px; flex-wrap:wrap;}
.newsletter input{background:var(--paper); border:1px solid var(--line); border-radius:2px; padding:13px 14px; font-size:15px; min-width:260px; font-family:inherit;}

.nl-strip{border-top:1px solid var(--line); background:var(--paper-dim); padding:44px 40px;}
.nl-strip-in{max-width:1180px; margin:0 auto; display:flex; align-items:center; justify-content:space-between; gap:26px 48px; flex-wrap:wrap;}
.nl-strip-copy{max-width:520px;}
.nl-strip-eyebrow{font-family:'IBM Plex Mono', monospace; font-size:11.5px; letter-spacing:0.08em; text-transform:uppercase; color:var(--moss);}
.nl-strip-copy h3{font-size:22px; line-height:1.22; margin-top:8px;}
.nl-strip-copy p{margin-top:9px; font-size:14px; color:var(--ink-soft); max-width:490px;}
.nl-form{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
.nl-form input{background:var(--paper); border:1px solid var(--line); border-radius:2px; padding:12px 14px; font-size:15px; min-width:250px; font-family:inherit;}
.nl-form input:focus{outline:none; border-color:var(--moss);}
.nl-msg{flex-basis:100%; font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--moss); min-height:1em; margin-top:2px;}
.nl-msg.err{color:var(--ochre-deep);}
.nl-form-col{display:flex; flex-direction:column; gap:8px;}
.nl-privacy{font-size:11px; color:var(--ink-soft); max-width:320px; line-height:1.4;}

footer.simple{padding:50px 40px; border-top:1px solid var(--line); font-size:13px; color:var(--ink-soft); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;}
footer.rich{padding:60px 40px 40px; border-top:1px solid var(--line);}
footer.rich .foot-grid{display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:40px; padding-bottom:40px; border-bottom:1px solid var(--line); max-width:1180px; margin:0 auto;}
footer.rich .foot-grid h4{font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:0.06em; text-transform:uppercase; color:var(--moss); margin-bottom:14px;}
footer.rich .foot-grid a{display:block; font-size:14px; margin-bottom:9px; color:var(--ink-soft);}
footer.rich .foot-grid a:hover{color:var(--ink);}
footer.rich .foot-bottom{display:flex; justify-content:space-between; padding-top:24px; font-size:13px; color:var(--ink-soft); flex-wrap:wrap; gap:10px; max-width:1180px; margin:0 auto;}
.foot-note{font-family:'IBM Plex Mono', monospace; font-size:11.5px; color:var(--moss); opacity:0.8;}

@media (max-width:900px){
  nav{padding:16px 20px; flex-wrap:wrap;}
  .logo{margin-right:auto;}
  .nav-toggle{
    display:inline-flex; align-items:center; justify-content:center;
    width:42px; height:42px; margin-left:12px; padding:0;
    background:none; border:1px solid var(--line); border-radius:3px;
    cursor:pointer; color:var(--ink);
  }
  .navlinks{
    display:none; order:5; flex-basis:100%; width:100%;
    flex-direction:column; align-items:stretch; gap:0;
    margin:14px 0 2px; border-top:1px solid var(--line);
  }
  nav.nav-open .navlinks{display:flex;}
  .navlinks > a{padding:14px 2px; border-bottom:1px solid var(--line); font-size:16px; opacity:1;}
  .dropdown{border-bottom:1px solid var(--line);}
  .dropdown > .drop-toggle{width:100%; justify-content:space-between; padding:14px 2px; font-size:16px;}
  .drop-menu{
    position:static; transform:none; opacity:1; visibility:visible; display:none;
    box-shadow:none; border:none; border-radius:0; min-width:0;
    padding:2px 0 10px 12px; background:transparent;
  }
  .dropdown.sub-open .drop-menu{display:block;}
  .dropdown.sub-open .drop-toggle .caret{transform:rotate(180deg);}
  .drop-menu::before{display:none;}

  .dropdown:hover .drop-menu, .dropdown:focus-within .drop-menu{transform:none;}
  .archive-grid{grid-template-columns:1fr;}
  footer.rich .foot-grid{grid-template-columns:1fr 1fr;}
  .section-head{padding:56px 20px 32px;}
  .browse{padding:20px;}
  .nl-strip{padding:34px 20px;}
  .nl-form{width:100%;}
  .nl-form input{min-width:0; flex:1;}
}

.client-band{padding:84px 40px 96px; border-bottom:1px solid var(--line);}
.client-band .cb-head{max-width:1180px; margin:0 auto 32px;}
.client-band .cb-head h2{font-size:clamp(30px,3.6vw,40px); margin-top:14px;}
.cb-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px; max-width:1180px; margin:0 auto;}
.client-card{background:var(--card); border:1px solid var(--line); padding:34px 32px; display:block; transition:background .15s, border-color .15s;}
.client-card:hover{background:#fff; border-color:var(--ink);}
.client-card .meta{font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--moss);}
.client-card h3{font-size:21px; margin:12px 0 10px;}
.client-card p{font-size:14.5px; color:var(--ink-soft);}
.client-card .open{font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--ochre-deep); display:inline-block; margin-top:14px;}
@media (max-width:900px){
  .client-band{padding:56px 20px 60px;}
  .cb-grid{grid-template-columns:1fr;}
}

.cb-more{max-width:1180px; margin:26px auto 0; padding-top:22px; border-top:1px solid var(--line);}
.cb-more .cb-more-label{font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--moss);}
.cb-more ul{list-style:none; margin:12px 0 0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:8px 28px;}
.cb-more li{font-size:14.5px; color:var(--ink-soft);}
.cb-more li a{color:var(--ink); border-bottom:1px solid var(--line);}
.cb-more li a:hover{border-color:var(--ink);}
@media (max-width:900px){ .cb-more ul{grid-template-columns:1fr;} }

.client-card .cc-media{margin:-34px -32px 24px; aspect-ratio:21/10; overflow:hidden; border-bottom:1px solid var(--line); background:var(--paper-dim);}
.client-card .cc-media img{width:100%; height:100%; object-fit:cover; object-position:50% 42%; display:block;}
.client-card .cc-media svg{width:100%; height:100%; display:block;}

.svc-clients{max-width:1180px; margin:52px auto 0;}
.svc-clients .eyebrow{display:block; margin-bottom:18px;}
