*,*::before,*::after{box-sizing:border-box}
:root{
 --ink:#0D1512; --deep:#143028; --moss:#2C5A49; --sage:#93B3A4;
 --paper:#F6F4EE; --bone:#E9E4D7; --line:rgba(20,48,40,.15);
 --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
 --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Helvetica,Arial,sans-serif;
 --w:1280px; --pad:clamp(20px,5vw,56px);
}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);
 font-size:18px;line-height:1.68;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{max-width:var(--w);margin:0 auto;padding:0 var(--pad)}
.narrow{max-width:76ch}

/* ---------- type ---------- */
.d1,.d2,.d3,.d4{font-family:var(--serif);font-weight:400;letter-spacing:-.022em;margin:0}
.d1{font-size:clamp(2.5rem,5.6vw,4.4rem);line-height:1.04}
.d2{font-size:clamp(2.1rem,4.4vw,3.5rem);line-height:1.06}
.d3{font-size:clamp(1.5rem,2.5vw,2.1rem);line-height:1.14}
.d4{font-size:clamp(1.18rem,1.7vw,1.4rem);line-height:1.24}
.eyebrow{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--moss);
 font-weight:600;margin:0 0 18px}
.lead{font-size:clamp(1.06rem,1.5vw,1.28rem);line-height:1.58;color:#2A3831}
p{margin:0 0 1.05em}
.sm{font-size:17px;line-height:1.62;color:#4B5953}
.xs{font-size:15px;letter-spacing:.015em;color:#5C6B63}
strong,b{font-weight:600}
mark{background:linear-gradient(transparent 62%,rgba(147,179,164,.55) 0);color:inherit}

/* ---------- header ---------- */
header{position:fixed;inset:0 0 auto;z-index:60;transition:box-shadow .45s;padding:0}
/* The background and blur live on a pseudo-element. A backdrop-filter on the
   header itself would make it a containing block for the fixed mobile menu. */
header::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
 backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
 opacity:0;transition:opacity .45s}
header.solid::before{opacity:1}
header .bar{padding-top:18px;padding-bottom:18px;transition:padding .45s}
header.solid .bar{padding-top:10px;padding-bottom:10px}
header.solid{background:rgba(246,244,238,.94);box-shadow:0 1px 0 var(--line)}
header .bar{display:flex;align-items:center;gap:clamp(14px,3vw,38px)}
header .lg{height:78px;width:auto;transition:height .45s;cursor:pointer;flex:none}
header.solid .lg{height:62px}
nav{display:flex;gap:clamp(12px,2vw,26px);margin-left:auto;align-items:center}
nav a{font-size:14px;text-decoration:none;color:#fff;opacity:.86;cursor:pointer;
 padding:6px 0;position:relative;white-space:nowrap;transition:opacity .25s}
nav a::after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:1px;
 background:currentColor;transition:right .3s}
nav a:hover{opacity:1}nav a:hover::after{right:0}
nav a.on{opacity:1}nav a.on::after{right:0}
header.solid nav a{color:var(--ink)}
header.solid .lg{filter:none}
.cta-top{background:var(--deep);color:#fff!important;padding:9px 18px;border-radius:2px;
 font-weight:500;opacity:1!important}
.cta-top::after{display:none!important}
header:not(.solid) .cta-top{background:rgba(255,255,255,.14);
 box-shadow:inset 0 0 0 1px rgba(255,255,255,.4)}
.burger{display:none;margin-left:auto;background:none;border:0;color:#fff;font-size:22px;cursor:pointer}
header.solid .burger{color:var(--ink)}
@media(max-width:640px){header .lg{height:58px}header.solid .lg{height:50px}}
@media(max-width:940px){
 nav{position:fixed;inset:0;background:var(--deep);flex-direction:column;justify-content:flex-start;
  align-items:center;gap:22px;overflow-y:auto;overscroll-behavior:contain;
  padding:calc(96px + env(safe-area-inset-top)) 24px calc(48px + env(safe-area-inset-bottom));
  transform:translateY(-101%);visibility:hidden;
  transition:transform .5s cubic-bezier(.6,0,.2,1),visibility 0s linear .5s}
 /* Auto margins centre the links when there is room and collapse to nothing
    when there is not, so nothing is ever pushed out of reach. */
 nav a:first-of-type{margin-top:auto}
 nav a:last-of-type{margin-bottom:auto}
 body.navopen{overflow-y:hidden}
 nav.show{transform:none;visibility:visible;transition:transform .5s cubic-bezier(.6,0,.2,1),visibility 0s}
 nav a,header.solid nav a{color:#fff;font-size:22px;font-family:var(--serif)}
 .burger{display:block;position:relative;z-index:70}
 /* The open panel is dark, so the icon over it is white whatever the
    header state underneath says. */
 body.navopen .burger,body.navopen header.solid .burger{color:#fff}
}

/* ---------- hero ---------- */
.hero{position:relative;min-height:min(100svh,880px);display:flex;align-items:flex-end;background:var(--deep);overflow:hidden}
.hero .bg{position:absolute;inset:-8% 0 -8%;background-size:cover;background-position:center 42%;
 will-change:transform}
.hero .scrim{position:absolute;inset:0;
 background:linear-gradient(180deg,rgba(8,20,16,.70) 0%,rgba(8,20,16,.10) 30%,rgba(8,20,16,.50) 70%,rgba(8,20,16,.92) 100%),
 linear-gradient(96deg,rgba(8,20,16,.88) 0%,rgba(8,20,16,.62) 34%,rgba(8,20,16,.10) 66%,rgba(8,20,16,0) 100%)}
.hero .inner{position:relative;z-index:2;padding:132px 0 clamp(48px,7vh,86px);color:#fff;width:100%}
.hero .d1{max-width:17ch;color:#fff}
.hero .lead{color:#D6E2DB;max-width:52ch;margin-top:22px}
.hero .eyebrow{color:var(--sage)}
.scroll-hint{position:absolute;bottom:26px;right:var(--pad);z-index:3;color:rgba(255,255,255,.6);
 font-size:11px;letter-spacing:.2em;text-transform:uppercase;display:flex;align-items:center;gap:10px}
.scroll-hint i{display:block;width:44px;height:1px;background:currentColor;
 transform-origin:left;animation:pull 2.6s ease-in-out infinite}
@keyframes pull{0%,100%{transform:scaleX(.25)}50%{transform:scaleX(1)}}

/* ---------- buttons ---------- */
.btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 26px;border-radius:2px;
 text-decoration:none;font-size:14.5px;font-weight:500;cursor:pointer;border:1px solid transparent;
 transition:transform .3s cubic-bezier(.2,.9,.3,1),background .3s,color .3s,border-color .3s}
.btn:hover{transform:translateY(-2px)}
.btn.p{background:var(--deep);color:#fff}
.btn.p:hover{background:var(--moss)}
.btn.s{border-color:currentColor;color:var(--deep)}
.btn.s:hover{background:var(--deep);color:#fff;border-color:var(--deep)}
.hero .btn.s{color:#fff}
.hero .btn.p{background:#fff;color:var(--deep)}
.hero .btn.p:hover{background:var(--sage)}
.arrow{text-decoration:none;color:var(--moss);font-weight:500;font-size:14.5px;
 display:inline-flex;align-items:center;gap:8px;cursor:pointer;border-bottom:1px solid transparent;
 transition:gap .3s,border-color .3s}
.dark .arrow{color:var(--sage)}
.dark .arrow:hover{color:#fff}
.arrow:hover{gap:14px;border-color:currentColor}

/* ---------- sections ---------- */
section{padding:clamp(36px,5.5vh,74px) 0;position:relative;scroll-margin-top:110px}
.tight{padding:clamp(24px,3.5vh,45px) 0}
/* case-study pages read tighter than the marketing pages */
#medibank .split,#gsk .split,#cbre .split,#sap .split,#scs .split,#gymea .split,#sheldon .split,#anz .split,#presynct .split{gap:clamp(24px,3.4vw,54px)}
.dark{background:var(--deep);color:#EDF2EF}
.dark .lead,.dark p{color:#C4D6CD}
.dark .eyebrow{color:var(--sage)}
.dark .d1,.dark .d2,.dark .d3,.dark .d4{color:#fff}
.bone{background:var(--bone)}
.rule{height:1px;background:var(--line);border:0;margin:0}
.dark .rule{background:rgba(255,255,255,.16)}

/* ---------- grids ---------- */
.g2{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(24px,4vw,64px)}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.6vw,38px)}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,2.2vw,32px)}
.split{display:grid;grid-template-columns:.82fr 1.18fr;gap:clamp(28px,5vw,86px);align-items:start}
@media(max-width:900px){.g2,.g3,.g4,.split{grid-template-columns:1fr}}
@media(max-width:900px) and (min-width:600px){.g4{grid-template-columns:1fr 1fr}}

/* ---------- cards ---------- */
.card{background:#fff;border:1px solid var(--line);padding:clamp(24px,3vw,36px);
 display:flex;flex-direction:column;gap:12px;transition:transform .45s cubic-bezier(.2,.9,.3,1),box-shadow .45s}
.card:hover{transform:translateY(-4px);box-shadow:0 18px 44px -26px rgba(13,30,24,.42)}
:focus-visible{outline:2px solid var(--moss);outline-offset:3px;border-radius:2px}
.dark :focus-visible,.hero :focus-visible{outline-color:var(--sage)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--moss);outline-offset:1px}
.skip{position:absolute;left:-9999px;top:0;background:var(--deep);color:#fff;padding:12px 18px;z-index:99}
.skip:focus{left:12px;top:12px}
.card .num{font-family:var(--serif);font-size:13px;color:var(--moss);letter-spacing:.16em}
.dark .card{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14)}

/* ---------- stat ---------- */
.stat .n{font-family:var(--serif);font-size:clamp(2.6rem,5.2vw,4.2rem);line-height:.94;
 letter-spacing:-.035em;color:var(--deep)}
.dark .stat .n{color:#fff}
.stat .k{font-size:15px;font-weight:600;margin-top:14px}
.stat .src{font-size:12.5px;color:#4F5C55;margin-top:7px;line-height:1.5}
.dark .stat .src{color:var(--sage)}
.dark .step .n{color:var(--sage)}

/* ---------- work ---------- */
.work{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(16px,2vw,28px)}
@media(max-width:760px){.work{grid-template-columns:1fr}}
.proj{position:relative;overflow:hidden;background:var(--deep);cursor:pointer;
 aspect-ratio:4/3;display:block}
.proj img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.8,.2,1);
 filter:saturate(.95)}
.proj:hover img{transform:scale(1.055)}
.proj.wide{aspect-ratio:21/6}
@media(max-width:760px){.proj.wide{aspect-ratio:16/9}}
.proj .ov{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,20,16,0) 26%,rgba(8,20,16,.55) 62%,rgba(8,20,16,.90) 100%)}
.proj .t{position:absolute;left:0;right:0;bottom:0;padding:clamp(20px,2.4vw,30px);color:#fff;z-index:2}
.proj .t .k{font-size:11px;letter-spacing:.17em;text-transform:uppercase;color:var(--sage);margin-bottom:8px}
.proj .t .n{font-family:var(--serif);font-size:clamp(1.25rem,2vw,1.7rem);letter-spacing:-.02em}
.proj .t .m{font-size:13px;color:#C4D6CD;margin-top:6px;opacity:0;transform:translateY(8px);
 transition:opacity .45s,transform .45s}
.proj:hover .t .m{opacity:1;transform:none}
.proj.noimg{display:flex;align-items:flex-end;background:
 linear-gradient(150deg,#1B3B31,#0E211B)}

/* ---------- figure ---------- */
figure{margin:0}
figure img{width:100%}
figcaption{font-size:15px;color:#5C6B63;margin-top:12px;line-height:1.55}
.dark figcaption{color:var(--sage)}
.bleed{width:100vw;margin-left:calc(50% - 50vw)}

/* ---------- diagrams ---------- */
.dd{width:100%;height:auto;display:block}
.dd .ring{fill:none;stroke-width:1.2}
.dd text{font-family:var(--sans);font-size:11px;letter-spacing:.05em}
canvas.wave{width:100%;height:162px;display:block;border:1px solid var(--line);background:#fff}
.dark canvas.wave{border-color:rgba(255,255,255,.16);background:rgba(255,255,255,.03)}

/* ---------- lists ---------- */
.steps{counter-reset:s;display:grid;gap:0}
.step{display:grid;grid-template-columns:88px 1fr;gap:clamp(16px,3vw,44px);
 padding:34px 0;border-top:1px solid var(--line)}
.step:last-child{border-bottom:1px solid var(--line)}
.step .n{font-family:var(--serif);font-size:2.1rem;color:var(--moss);line-height:1;letter-spacing:-.03em}
@media(max-width:640px){.step{grid-template-columns:1fr;gap:8px}.step .n{font-size:1.4rem}}
.qa{border-top:1px solid var(--line)}
.qa details{border-bottom:1px solid var(--line)}
.qa summary{cursor:pointer;padding:24px 40px 24px 0;list-style:none;position:relative;
 font-family:var(--serif);font-size:clamp(1.08rem,1.6vw,1.3rem);letter-spacing:-.015em}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{content:"+" / "";position:absolute;right:6px;top:22px;font-size:24px;
 color:var(--moss);font-family:var(--sans);transition:transform .35s}
.qa details[open] summary::after{transform:rotate(45deg)}
.qa .a{padding:0 clamp(0px,6vw,80px) 26px 0;color:#3A4842}

/* ---------- badges ---------- */
.badges{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(24px,4vw,54px);justify-content:center}
.badges img{height:clamp(38px,4.5vw,58px);width:auto;opacity:.94}
.dark .badges img{background:#fff;padding:10px 14px;border-radius:3px;height:clamp(46px,5vw,66px);opacity:1}
.dark .badges img.ms{background:none;padding:0}
.badges img.ms{height:clamp(26px,3vw,36px)}
.mspartner{height:clamp(28px,3.2vw,38px);width:auto;max-width:100%;display:block;align-self:flex-start;flex:0 0 auto;object-fit:contain;margin:0 0 14px}
/* ---------- about page ---------- */
.abtop{display:grid;grid-template-columns:1.02fr 1fr;gap:clamp(28px,5vw,72px);align-items:center}
.abtop figure{margin:0}
.abtop img{width:100%;aspect-ratio:4/3;object-fit:cover}
.mspartner.big{height:clamp(34px,4.4vw,54px);margin:0 0 22px}
.dark .mspartner{filter:none}
.awlist{margin-top:34px;border-top:1px solid var(--line)}
.dark .awlist{border-color:rgba(255,255,255,.16)}
.awrow{display:grid;grid-template-columns:170px 1fr 250px;gap:clamp(14px,3vw,40px);
 padding:24px 0;border-bottom:1px solid var(--line);align-items:start}
.awstat{font-size:12px;letter-spacing:.17em;text-transform:uppercase;font-weight:600;color:var(--moss)}
.awstat.pend{color:#8A7B4E}
.awyr{font-size:15px;color:#5C6B63;margin-top:5px}
.awrow h3{margin:0 0 6px}
.awrow p{margin:0}
.awsrc{font-size:15px;line-height:1.55;color:#5C6B63}
.awsrc a{color:var(--moss)}
.geo{display:flex;flex-wrap:wrap;gap:10px 12px;margin:24px 0 0;padding:0;list-style:none}
.geo li{border:1px solid var(--line);padding:9px 18px;font-size:16px;letter-spacing:.01em}
.bone .geo li{border-color:rgba(20,48,40,.22);background:rgba(255,255,255,.5)}
.closer{text-align:center;max-width:62ch;margin:0 auto}
figure.portrait{margin:0;max-width:400px}
figure.portrait img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover}
.abhero{padding-top:clamp(104px,13vh,150px)}
.abtop figcaption{margin-top:10px}
.awhi{border-top:2px solid var(--moss);padding-top:16px}
.awhi .awstat{margin:0 0 8px}
.awhi h3{margin:0 0 8px}
.awhi p.sm{margin:0}
.awhi .awstat.pend{color:#8A7B4E}
.awpend{margin:30px 0 0;font-size:12px;letter-spacing:.17em;text-transform:uppercase;font-weight:600;color:#8A7B4E}
.disc{margin-top:42px;border-top:1px solid var(--line)}
.disc>summary{cursor:pointer;list-style:none;padding:18px 0;font-weight:600;color:var(--moss);display:flex;align-items:center;gap:14px}
.disc>summary::-webkit-details-marker{display:none}
.disc>summary .dx{margin-left:auto;font-size:22px;line-height:1;font-weight:400}
.disc>summary .dx::after{content:"+"}
.disc[open]>summary .dx::after{content:"\2212"}
.disc>summary:focus-visible{outline:2px solid var(--moss);outline-offset:4px}
.disc .awlist{margin-top:4px;border-top:1px solid var(--line)}
@media(max-width:900px){.abtop{grid-template-columns:1fr;gap:20px}
 figure.portrait{max-width:320px}}
@media(max-width:640px){#about .abhero{padding-top:clamp(92px,12vh,120px);padding-bottom:34px}
 #about .closer{max-width:none}}
@media(max-width:820px){.awrow{grid-template-columns:1fr;gap:8px;padding:22px 0}
 .awyr{display:inline;margin-left:10px}}
.clients{display:flex;flex-wrap:wrap;gap:clamp(18px,3.4vw,46px);align-items:center;justify-content:center;
 font-family:var(--serif);font-size:clamp(1rem,1.5vw,1.25rem);color:#5A6A62;letter-spacing:.01em}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,.7,.3,1),transform .9s cubic-bezier(.2,.7,.3,1)}
.rv.in{opacity:1;transform:none}
.rv.d1x{transition-delay:.09s}.rv.d2x{transition-delay:.18s}.rv.d3x{transition-delay:.27s}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}
 .hero .bg{transform:none!important}.scroll-hint i{animation:none}
 .view.on{animation:none}}

/* ---------- views ---------- */
.view{display:none}
.view.on{display:block;animation:fade .6s ease both}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* ---------- footer ---------- */
footer{background:var(--ink);color:#9DB2A8;padding:clamp(56px,8vh,96px) 0 34px;font-size:14.5px}
footer .cols{display:grid;grid-template-columns:1.7fr 1fr 1fr 1.2fr;gap:clamp(24px,4vw,54px)}
@media(max-width:820px){footer .cols{grid-template-columns:1fr 1fr}}
@media(max-width:520px){footer .cols{grid-template-columns:1fr}}
.fgroup{margin:0}
.fgroup>summary{list-style:none;cursor:default}
.fgroup>summary::-webkit-details-marker{display:none}
.fgroup>summary h2{margin:0 0 16px}
@media(max-width:900px){
 .fgroup{border-top:1px solid rgba(255,255,255,.11)}
 .fgroup>summary{cursor:pointer;display:flex;align-items:center;gap:12px;padding:14px 0 12px}
 .fgroup>summary h2{margin:0}
 .fgroup>summary .dx{margin-left:auto;font-size:19px;line-height:1;color:#8FA79C;font-weight:400}
 .fgroup>summary .dx::after{content:"+"}
 .fgroup[open]>summary .dx::after{content:"\2212"}
 .fgroup>summary:focus-visible{outline:2px solid var(--sage);outline-offset:3px}
 .fgroup .flinks{padding-bottom:10px}
}
footer .fh{color:#fff;font-size:11px;letter-spacing:.18em;text-transform:uppercase;margin:0 0 16px;font-weight:600}
footer a{display:block;color:#9DB2A8;text-decoration:none;margin-bottom:9px;cursor:pointer;
 transition:color .25s,transform .25s}
footer a:hover{color:#fff;transform:translateX(3px)}
footer .lg{height:78px;margin-bottom:26px}
footer .base{border-top:1px solid rgba(255,255,255,.11);margin-top:clamp(34px,5vh,58px);padding-top:22px;
 display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;font-size:12.5px;color:#75897F}

/* ---------- misc ---------- */
.note{background:#FFF7E4;border-left:2px solid #C79000;padding:16px 20px;font-size:14px;color:#5C4300;margin:26px 0}
.note b{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:5px}
/* project details panel */
.facts{border-top:1px solid var(--line);margin-top:8px}
.facts dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0;margin:0}
.facts div{border-bottom:1px solid var(--line);padding:20px 0;margin-right:34px}
.facts dt{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--moss);margin:0 0 9px}
.facts dd{margin:0;font-size:15px;line-height:1.5;color:#2A3831}
.dark .facts{border-top-color:rgba(255,255,255,.16)}
.dark .facts div{border-bottom-color:rgba(255,255,255,.13)}
.dark .facts dt{color:var(--sage)}
.dark .facts dd{color:#D6E2DB}
.tag{display:inline-block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
 border:1px solid var(--line);padding:5px 11px;color:var(--moss);border-radius:2px}
.dark .tag{border-color:rgba(255,255,255,.25);color:var(--sage)}
.quote{font-family:var(--serif);font-size:clamp(1.3rem,2.5vw,2rem);line-height:1.34;
 letter-spacing:-.02em;color:var(--deep)}
.dark .quote{color:#fff}
.banner{background:#8A4B2A;color:#fff;font-size:12.5px;padding:8px 16px;text-align:center}
.banner b{font-weight:600}

/* figure + caption */
.fig{max-width:760px;margin:0 auto}
.fig svg{width:100%;height:auto;display:block}
.fig .cap{margin-top:20px;font-size:13.5px;line-height:1.65;color:rgba(20,48,40,.62);max-width:64ch}
.dark .fig .cap{color:rgba(246,244,238,.62)}

/* data table */
.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl table{border-collapse:collapse;width:100%;min-width:520px;font-size:15px}
.tbl th,.tbl td{text-align:left;padding:14px 18px 14px 0;border-bottom:1px solid var(--line);vertical-align:baseline}
.tbl thead th{font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:rgba(20,48,40,.78);font-weight:500;padding-bottom:10px}
.tbl thead th:not(:first-child),.tbl td:not(:first-child){text-align:right;padding-right:0;padding-left:18px}
.tbl td.hi{color:var(--moss);font-weight:600}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl .xs{display:inline;color:rgba(20,48,40,.45)}

/* ==================== homepage upgrades ==================== */
/* hero wave (option 3): the generative soundscape lives in the hero */
.hero canvas.herowave{position:absolute;inset:0;width:100%;height:100%;z-index:1;display:block}
.hero.herowaved{background:radial-gradient(122% 92% at 70% 32%,#18362b 0%,var(--deep) 52%,#0b1712 100%)}
.hero.herowaved .scrim{background:
 linear-gradient(180deg,rgba(8,20,16,.52) 0%,rgba(8,20,16,0) 32%,rgba(8,20,16,.30) 100%),
 linear-gradient(96deg,rgba(8,20,16,.74) 0%,rgba(8,20,16,.34) 40%,rgba(8,20,16,0) 76%)}

/* portfolio-forward work, full-bleed hover reveal */
.pf{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(28px,4vw,64px);align-items:stretch}
.pf-list{display:flex;flex-direction:column;justify-content:center}
.pf-row{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:baseline;width:100%;
 padding:clamp(15px,1.9vw,23px) 0;border:0;border-top:1px solid var(--line);background:none;color:inherit;
 font-family:inherit;text-align:left;text-decoration:none;cursor:pointer;transition:padding-left .55s cubic-bezier(.2,.8,.2,1)}
.pf-row:last-child{border-bottom:1px solid var(--line)}
.pf-row .idx{font-family:var(--serif);font-size:13px;color:var(--moss);align-self:center}
.pf-row .nm{font-family:var(--serif);font-size:clamp(1.35rem,2.3vw,2rem);letter-spacing:-.02em;color:var(--deep);line-height:1.08;transition:color .35s}
.pf-row .mt{font-size:11.5px;letter-spacing:.02em;color:rgba(20,48,40,.75);justify-self:end;text-align:right;max-width:20ch;align-self:center}
.pf-row:hover,.pf-row:focus-visible,.pf-row.active{padding-left:14px}
.pf-row:focus-visible{outline:2px solid var(--moss);outline-offset:3px}
.pf-row:hover .nm,.pf-row:focus-visible .nm,.pf-row.active .nm{color:var(--moss)}
.pf-view{position:relative;overflow:hidden;min-height:clamp(380px,54vh,620px);background:var(--deep);align-self:stretch}
.pf-shot{position:absolute;inset:0;background-size:cover;background-position:center;
 opacity:0;transform:scale(1.045);transition:opacity .7s ease,transform 1.3s cubic-bezier(.2,.8,.2,1)}
.pf-shot.on{opacity:1;transform:none}
.pf-cover{position:absolute;inset:0;z-index:4;cursor:pointer;text-decoration:none;display:block}
.pf-go{font-style:normal;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;opacity:.9;order:3;margin-top:6px}
.pf-shot.noimg{background:linear-gradient(140deg,#1c3d32,#0b1712);display:flex;align-items:flex-end;padding:26px}
.pf-shot .lbl{color:var(--sage);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.pf-thumb{display:none}
@media(max-width:860px){
 .pf{grid-template-columns:1fr;gap:0}
 .pf-view{display:none}
 .pf-row{grid-template-columns:auto 1fr;gap:12px}
 .pf-row .mt{grid-column:1/-1;justify-self:start;text-align:left;max-width:none;margin-top:2px}
 .pf-row.active,.pf-row:hover{padding-left:0}
 .pf-thumb{display:block;grid-column:1/-1;width:100%;aspect-ratio:16/10;object-fit:cover;margin-top:12px;background:var(--deep)}
 .pf-thumb.noimg{aspect-ratio:16/10;background:linear-gradient(140deg,#1c3d32,#0b1712)}
}

/* credibility band, placed at the conversion */
.cred{display:flex;flex-wrap:wrap;gap:14px clamp(20px,3vw,40px);align-items:center;
 padding:20px clamp(20px,3vw,32px);border:1px solid rgba(255,255,255,.16);border-radius:2px;background:rgba(255,255,255,.03)}
.cred .item{font-size:14px;color:#C4D6CD;letter-spacing:.01em;line-height:1.35}
.cred .item b{color:#fff;font-weight:600}
.cred .item .u{font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--sage);display:block;margin-bottom:3px}
.cred--light{border-color:var(--line);background:#fff}
.cred--light .item{color:#3a4842}
.cred--light .item b{color:var(--deep)}
.cred--light .item .u{color:var(--moss)}

/* the person you'd work with */
.person{display:grid;grid-template-columns:.82fr 1.18fr;gap:clamp(24px,4vw,60px);align-items:start}
@media(max-width:820px){.person{grid-template-columns:1fr}}
.person .cred-line{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:22px;font-size:13px;color:rgba(20,48,40,.7)}
.dark .person .cred-line{color:#C4D6CD}
.person .cred-line span{position:relative;padding-left:16px}
.person .cred-line span:before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border:1px solid var(--moss);border-radius:50%}
.dark .person .cred-line span:before{border-color:var(--sage)}

/* ---------- scrub timeline (how we work) ---------- */
.tl .step{position:relative}
.tl .step::before{content:"";position:absolute;left:6px;top:0;bottom:0;width:2px;background:var(--line);z-index:0;transition:background .45s ease}
.tl .step .n{position:relative;padding-left:32px;transition:color .4s ease}
.tl .step .n::before{content:"";position:absolute;left:0;top:.30em;width:14px;height:14px;border-radius:50%;
 background:var(--paper);border:2px solid var(--line);z-index:2;transition:border-color .4s ease,background .4s ease,box-shadow .4s ease}
.tl .step.past::before,.tl .step.active::before{background:var(--moss)}
.tl .step.past .n::before,.tl .step.active .n::before{border-color:var(--moss);background:var(--moss)}
.tl .step.active .n{color:var(--deep)}
.tl .step.active .n::before{box-shadow:0 0 0 5px rgba(44,90,73,.14)}
.tl .step.future{opacity:.86;transition:opacity .45s ease}
@media(max-width:640px){.tl .step .n{padding-left:26px}.tl .step .n::before{width:12px;height:12px}}

/* ---------- video embed ---------- */
.vid{position:relative;width:100%;aspect-ratio:16/9;background:#0B1310;overflow:hidden}
.vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vid-note{display:flex;align-items:center;gap:10px;margin-top:16px;font-size:13px;letter-spacing:.02em;color:var(--moss)}
.dark .vid-note{color:var(--sage)}
.vid-note svg{flex:none;opacity:.85}
/* insights articles */
.art h2{margin:1.7em 0 .55em}
.art p{line-height:1.7}

/* ---------- hear it (home), 8 September 2026 ---------- */
.hear{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(28px,5vw,72px);align-items:center}
@media(max-width:900px){.hear{grid-template-columns:1fr;gap:28px}}

/* ---------- sticky section nav (evidence), 8 September 2026 ---------- */
:root{--hdr:80px}
@media(max-width:640px){:root{--hdr:70px}}
.pagenav{position:sticky;top:var(--hdr);z-index:40;background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pagenav .wrap{display:flex;gap:0 clamp(18px,2.4vw,30px);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
 -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent)}
.pagenav .wrap::-webkit-scrollbar{display:none}
.pagenav a{flex:none;font-size:13.5px;letter-spacing:.03em;text-decoration:none;color:#3A4842;padding:14px 0 12px;border-bottom:2px solid transparent;white-space:nowrap;transition:color .25s,border-color .25s}
.pagenav a b{font-family:var(--serif);font-weight:400;color:var(--moss);margin-right:7px}
.pagenav a:hover,.pagenav a.on{color:var(--deep);border-bottom-color:var(--moss)}
.pagenav a:last-child{margin-right:40px}
#evidence h2[id^="ev-"]{scroll-margin-top:calc(var(--hdr) + 78px)} /* outranks the 110px rule in css-art */

/* ---------- study entries (evidence), 8 September 2026 ---------- */
.studies{border-top:1px solid var(--line)}
.study{display:grid;grid-template-columns:190px 1fr;gap:clamp(18px,3vw,48px);padding:30px 0;border-bottom:1px solid var(--line)}
.study .st-tag{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--moss);font-weight:600;line-height:1.5}
.study .st-tag small{display:block;font-weight:400;letter-spacing:.01em;text-transform:none;color:#5C6B63;font-size:14.5px;line-height:1.45;margin-top:7px}
.study h3{margin:0 0 10px;max-width:30ch}
.study p{margin:0 0 .85em;max-width:76ch}
.study .st-limit{font-size:16.5px;line-height:1.55;color:#3A4842;padding-left:14px;border-left:2px solid var(--sage);margin-top:14px}
.study .st-limit b{color:var(--moss);font-weight:600}
.study details{margin-top:6px}
.study summary{cursor:pointer;list-style:none;font-size:14px;letter-spacing:.04em;font-weight:600;color:var(--moss);padding:6px 0;display:inline-flex;gap:10px;align-items:center}
.study summary::-webkit-details-marker{display:none}
.study summary .dx{font-size:18px;line-height:1;font-weight:400}
.study summary .dx::after{content:"+"}
.study details[open] summary .dx::after{content:"\2212"}
.study .st-more{padding:10px 0 2px;color:#3A4842}
.study .st-more p{margin:0 0 .7em;font-size:16.5px}
.study .st-src{font-size:14.5px;color:#5C6B63;line-height:1.55}
.dark .studies,.dark .study{border-color:rgba(255,255,255,.14)}
.dark .study .st-tag small,.dark .study .st-src{color:var(--sage)}
.dark .study .st-limit{color:#C4D6CD;border-left-color:rgba(156,187,171,.6)}
@media(max-width:760px){.study{grid-template-columns:1fr;gap:10px;padding:26px 0}.study h3{max-width:none}}
/* evidence page rhythm: a reference page reads tighter than a marketing page */
#evidence .study{padding:26px 0}

/* ==================== the reset, 8 September 2026 late evening ==================== */
/* hero on a project photograph, the wave over it, a wider headline */
.hero.herophoto{background:var(--deep)}
.hero.herophoto .bg{background-position:center 40%}
.hero.herophoto .scrim{background:linear-gradient(180deg,rgba(6,17,13,.62) 0%,rgba(6,17,13,.18) 34%,rgba(6,17,13,.55) 72%,rgba(6,17,13,.90) 100%),linear-gradient(96deg,rgba(6,17,13,.82) 0%,rgba(6,17,13,.42) 46%,rgba(6,17,13,.06) 100%)}
.hero.herophoto canvas.herowave{opacity:.55;mix-blend-mode:screen}
.hero.herophoto .d1{max-width:21ch}
.hero.herophoto .lead{max-width:56ch}
.hero-credit{margin-top:34px;color:rgba(255,255,255,.55)}
/* three featured projects: the first full width, then two */
.work.feat{grid-template-columns:repeat(2,1fr)}
.work.feat>.proj:first-child{grid-column:1/-1;aspect-ratio:21/9}
.work.feat .proj .t .m{font-size:16px;max-width:60ch;opacity:.94}
@media(max-width:760px){.work.feat{grid-template-columns:1fr}.work.feat>.proj:first-child{aspect-ratio:4/3}}
/* what we design: an image above each service */
.svc-card{display:flex;flex-direction:column;gap:12px;text-decoration:none;color:inherit;cursor:pointer;border-top:1px solid rgba(18,44,36,.22);padding-top:0}
.svc-card img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;margin-bottom:8px}
.svc-card .num{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--moss);font-weight:600}
.svc-card h3{margin:0}
.svc-card .arrow{margin-top:auto}
.svc-card:hover h3{color:var(--moss)}
/* a playable poster, the film loads on click */
.vid.poster{cursor:pointer}
.vid.poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.9) brightness(.82)}
.vid.poster .play{position:absolute;inset:0;width:100%;height:100%;background:linear-gradient(180deg,rgba(6,17,13,0) 40%,rgba(6,17,13,.72) 100%);border:0;color:#fff;cursor:pointer;display:flex;align-items:flex-end;gap:16px;padding:22px 24px;text-align:left;font:inherit}
.vid.poster .play-ic{flex:none;width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.14);border:1.5px solid rgba(255,255,255,.75);position:relative;backdrop-filter:blur(6px);transition:background .35s,transform .35s}
.vid.poster .play-ic::after{content:"";position:absolute;left:26px;top:20px;border-style:solid;border-width:12px 0 12px 20px;border-color:transparent transparent transparent #fff}
.vid.poster .play:hover .play-ic,.vid.poster .play:focus-visible .play-ic{background:var(--moss);transform:scale(1.06)}
.vid.poster .play-t b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(1.2rem,1.8vw,1.5rem);letter-spacing:-.02em}
.vid.poster .play-t small{display:block;font-size:13.5px;letter-spacing:.06em;text-transform:uppercase;opacity:.8;margin-top:4px}
/* Marcus, with his portrait */
.person figure.portrait{max-width:420px}
.person figure.portrait img{aspect-ratio:4/5;object-fit:cover;width:100%}
@media(max-width:820px){.person figure.portrait{max-width:300px}}
/* design teams */
.dthero{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(28px,5vw,72px);align-items:center}
@media(max-width:900px){.dthero{grid-template-columns:1fr;gap:28px}}
.dlv figure{margin:0}
.dlv img,.dlv .dlv-img{width:100%;aspect-ratio:3/2;object-fit:cover;background:#fff;border:1px solid var(--line);display:block}
.dlv .dlv-img svg{width:100%;height:100%;display:block}
.dlv figcaption{margin-top:14px;font-size:16px;line-height:1.55;color:#33433C}
.dlv figcaption b{color:var(--deep);font-weight:600}
.dlv figcaption .xs{display:block;margin-top:6px}
.stg .step{padding:22px 0}
.stg .stg-d{margin:0 0 6px;color:#2A3831}
.stg details{margin-top:4px}
.stg summary{cursor:pointer;list-style:none;font-size:14px;letter-spacing:.04em;font-weight:600;color:var(--moss);padding:4px 0;display:inline-flex;gap:10px;align-items:center}
.stg summary::-webkit-details-marker{display:none}
.stg summary .dx{font-size:18px;line-height:1;font-weight:400}
.stg summary .dx::after{content:"+"}
.stg details[open] summary .dx::after{content:"\2212"}
.stg .st-more{padding:8px 0 2px;color:#3A4842;max-width:70ch}
.stg .st-more p{margin:0 0 .6em}
.story{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,5vw,72px);align-items:center}
.story figure{margin:0}
.story img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
@media(max-width:900px){.story{grid-template-columns:1fr;gap:24px}}
.rows{border-top:1px solid var(--line);max-width:86ch}
.rows .row{padding:18px 0;border-bottom:1px solid var(--line);font-size:17px;line-height:1.6;color:#2A3831}
.rows .row b{color:var(--deep);font-weight:600}
.dark .rows{border-color:rgba(255,255,255,.16)}

.comeback{display:flex;flex-wrap:wrap;gap:26px;align-items:baseline;margin-top:42px;padding-top:26px;border-top:1px solid rgba(255,255,255,.18)}
.comeback .eyebrow{margin:0;opacity:.7}
@media(max-width:860px){#home .work.feat .proj>img,#home .work.feat>.proj:not(:first-child)>img{aspect-ratio:4/3}
#home .work.feat .proj .t{padding:14px 0 4px}}

/* home page only, 9 September 2026: project captions sit under the photograph */
#home .work.feat .proj{background:transparent;overflow:visible;aspect-ratio:auto;height:auto;text-decoration:none}
#home .work.feat .proj .t,#home .work.feat .proj .t *{text-decoration:none}
#home .work.feat .proj:hover .t .n{color:var(--moss)}
#home .work.feat>.proj:first-child{aspect-ratio:auto}
#home .work.feat .proj>img{aspect-ratio:21/9;width:100%;height:auto;object-fit:cover;display:block}
#home .work.feat>.proj:not(:first-child)>img{aspect-ratio:4/3}
#home .work.feat .proj .imgwrap{overflow:hidden;display:block;border-radius:2px}
#home .work.feat .proj .ov{display:none}
#home .work.feat .proj img{border-radius:2px}
#home .work.feat .proj .t{position:static;padding:16px 2px 0;color:var(--ink);max-width:none}
#home .work.feat .proj .t .k{color:var(--moss)}
#home .work.feat .proj .t .n{color:var(--ink)}
#home .work.feat .proj .t .m{color:rgba(13,21,18,.76);max-width:56ch}
#home .work.feat .proj:hover img{opacity:.92}
/* home hero only: the headline crosses a bright ceiling, so the mid scrim is deeper here */
#home .hero .scrim{background:linear-gradient(100deg,rgba(6,17,13,.94) 0%,rgba(6,17,13,.78) 50%,rgba(6,17,13,.10) 82%),linear-gradient(rgba(6,17,13,.50) 0%,rgba(6,17,13,.30) 34%,rgba(6,17,13,.58) 72%,rgba(6,17,13,.92) 100%)}
@media(max-width:860px){#home .hero .scrim{background:linear-gradient(rgba(6,17,13,.72) 0%,rgba(6,17,13,.58) 30%,rgba(6,17,13,.72) 70%,rgba(6,17,13,.94) 100%)}}

/* case studies, 9 September 2026: the key facts sit directly under the photograph */
.factstrip{padding-top:28px;padding-bottom:28px}
.factstrip .facts{margin-top:16px}
.factstrip .facts dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 30px;margin:0}
.factstrip .facts dl>div{margin:0}
.factstrip .facts dt{font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--moss);margin-bottom:6px}
.factstrip .facts dd{margin:0;font-size:16px;line-height:1.5}
@media(max-width:1000px){.factstrip .facts dl{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.factstrip .facts dl{grid-template-columns:1fr;gap:16px}}

/* 9 September 2026: the disclosure glyph is decorative, keep it out of the accessible name */
summary .dx::after{content:"+" / ""}
.disc[open]>summary .dx::after,.fgroup[open]>summary .dx::after,.study details[open] summary .dx::after,.stg details[open] summary .dx::after,details[open]>summary .dx::after{content:"\2212" / ""}
/* reference lists as optional depth */
.disc.src{margin-top:8px;max-width:86ch}
.disc.src>summary{padding:12px 0;font-size:14px}
.disc.src p{margin:0}

/* healthcare, 9 September 2026: the study set opens inside its disclosure */
.disc .steps{margin-top:8px}

/* Sector refinement: scoped to healthcare and education only. */
:is(#healthcare,#education) > .sector-opening{padding-top:clamp(128px,12vw,168px);padding-bottom:0}
:is(#healthcare,#education) .sector-intro{display:grid;grid-template-columns:1.1fr 1fr;gap:36px 80px;align-items:end;margin-bottom:38px}
:is(#healthcare,#education) .sector-intro .d1{max-width:17ch;font-size:clamp(2.4rem,4.6vw,4.25rem)}
:is(#healthcare,#education) .sector-intro .lead{max-width:43ch;margin:0}
:is(#healthcare,#education) figure{margin:0}
:is(#healthcare,#education) figcaption{font-size:14px;line-height:1.5;margin-top:12px;color:var(--moss)}
:is(#healthcare,#education) .sector-lead-photo img{width:100%;aspect-ratio:16/8;object-fit:cover}
:is(#healthcare,#education) > .sector-project-intro{padding-top:36px}
:is(#healthcare,#education) .sector-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}
:is(#healthcare,#education) .sector-cards .eyebrow{display:block;margin-bottom:16px}
:is(#healthcare,#education) .sector-cards .d4{margin-bottom:15px}
:is(#healthcare,#education) .sector-cards p{font-size:17px;line-height:1.6;margin:0;max-width:37ch}
:is(#healthcare,#education) .sector-section-head{max-width:780px;margin-bottom:42px}
:is(#healthcare,#education) .sector-scope{border-top:1px solid rgba(147,179,164,.35);margin:28px 0 0;padding-top:22px;font-size:16px;max-width:80ch}
:is(#healthcare,#education) .sector-story{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(30px,5vw,72px);align-items:center}
:is(#healthcare,#education) .sector-story img{width:100%;aspect-ratio:4/3;object-fit:cover}
#education:is(#healthcare,#education) .sector-story img{aspect-ratio:4/4;object-position:center}
:is(#healthcare,#education) .sector-story h2{margin-bottom:22px}
:is(#healthcare,#education) .sector-quote{font-family:var(--serif);font-size:clamp(1.5rem,2.5vw,2rem);line-height:1.35;margin:0 0 24px}
:is(#healthcare,#education) .sector-reference{max-width:1000px}
:is(#healthcare,#education) .sector-reference > .lead{margin:24px 0 30px;max-width:68ch}
:is(#healthcare,#education) .sector-depth{border-top:1px solid var(--line)}
:is(#healthcare,#education) .sector-depth > summary{list-style:none;position:relative;padding:22px 35px 22px 0;cursor:pointer;font-size:17px;font-weight:500}
:is(#healthcare,#education) .sector-depth > summary::-webkit-details-marker{display:none}
:is(#healthcare,#education) .sector-depth > summary .dx{position:absolute;right:2px;top:22px}
:is(#healthcare,#education) .sector-depth > summary:focus-visible{outline:2px solid var(--moss);outline-offset:4px}
:is(#healthcare,#education) .sector-depth-body{padding:0 0 28px}
:is(#healthcare,#education) .sector-depth-body .research-part{padding:24px 0;border-top:1px solid var(--line)}
:is(#healthcare,#education) .sector-depth-body .wrap{padding:0;max-width:none}
:is(#healthcare,#education) .sector-depth-body .split{display:block}
:is(#healthcare,#education) .sector-depth-body .rv{opacity:1;transform:none;visibility:visible}
:is(#healthcare,#education) .sector-depth-body .d1,:is(#healthcare,#education) .sector-depth-body .d2{font-size:1.6rem;max-width:none;margin-bottom:20px}
:is(#healthcare,#education) .sector-depth-body .lead{font-size:17px}
:is(#healthcare,#education) .sector-depth-body .xs{color:var(--moss)!important;font-size:14px}
:is(#healthcare,#education) .sector-depth-body .step{padding-block:20px}
:is(#healthcare,#education) .sector-depth-body p,:is(#healthcare,#education) .sector-depth-body a{overflow-wrap:anywhere}
:is(#healthcare,#education) .sector-depth-body .tbl{overflow-x:auto}
:is(#healthcare,#education) .sector-depth-body table{min-width:540px}
:is(#healthcare,#education) .sector-library-link{margin:26px 0 0}
:is(#healthcare,#education) .qa{margin:12px 0 20px!important}
@media(max-width:700px){
 :is(#healthcare,#education) .sector-intro{grid-template-columns:1fr;gap:20px;margin-bottom:28px}
 :is(#healthcare,#education) .sector-intro .lead{font-size:17px;line-height:1.6}
 :is(#healthcare,#education) .sector-lead-photo img{aspect-ratio:4/3}
 :is(#healthcare,#education) .sector-cards{grid-template-columns:1fr;gap:24px}
 :is(#healthcare,#education) .sector-cards > div + div{border-top:1px solid var(--line);padding-top:24px}
 :is(#healthcare,#education) .dark .sector-cards > div + div{border-top-color:rgba(147,179,164,.3)}
 :is(#healthcare,#education) .sector-cards .eyebrow{display:none}
 :is(#healthcare,#education) .sector-story{grid-template-columns:1fr;gap:28px}
 #education:is(#healthcare,#education) .sector-story img{aspect-ratio:4/3}
 :is(#healthcare,#education) .sector-section-head{margin-bottom:30px}
 :is(#healthcare,#education) .sector-depth > summary{font-size:16px}
 :is(#healthcare,#education) .sector-depth-body .steps{margin-top:20px!important}
}

:is(#healthcare,#education) .sector-depth > summary .dx::after{content:"+" / "";font-size:22px;line-height:1}
:is(#healthcare,#education) .sector-depth[open] > summary .dx::after{content:"\2212" / ""}
:is(#healthcare,#education) .sector-finding{border-left:2px solid var(--moss);padding:4px 0 4px 22px;margin:30px 0 6px;max-width:66ch}
:is(#healthcare,#education) .sector-finding .eyebrow{margin-bottom:10px}
:is(#healthcare,#education) .sector-finding .sm{color:rgba(13,21,18,.74);margin-top:12px}
:is(#healthcare,#education) .sector-finding .xs{color:var(--moss);margin-top:12px}

/* Evidence page: the way in, and provenance on every entry. 9 September 2026 */
#evidence .evwhy{margin-top:40px;padding-top:34px;border-top:1px solid var(--line)}
#evidence .evwhy>.eyebrow{margin:0}
#evidence .evwhy h2{margin-top:14px;max-width:22ch}
#evidence .evwhy .lead{max-width:78ch}
#evidence .evwhy-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 46px;margin-top:38px}
#evidence .evwhy-g h3{margin:0}
#evidence .evwhy-g p{margin:12px 0 0;font-size:16.5px;line-height:1.6;max-width:40ch}
#evidence .evkey{margin-top:34px;padding:26px 28px;background:rgba(147,179,164,.13);border-radius:2px}
#evidence .evkey>.eyebrow{margin:0 0 16px}
#evidence .evkey ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
#evidence .evkey li{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:baseline}
#evidence .evkey li{display:grid;grid-template-columns:216px minmax(0,1fr);gap:0 20px;align-items:baseline}
#evidence .evkey li span{font-size:15.5px;line-height:1.55;color:rgba(13,21,18,.8);max-width:62ch}
#evidence .evkey .sm{margin:18px 0 0;max-width:70ch}
.prov{display:inline-block;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;line-height:1;padding:6px 9px;border-radius:2px;white-space:nowrap;border:1px solid transparent}
.prov.pind{background:rgba(58,94,74,.12);color:#2c4a3a;border-color:rgba(58,94,74,.3)}
.prov.pindu{background:rgba(176,124,44,.14);color:#7a5313;border-color:rgba(176,124,44,.36)}
.prov.pstd{background:rgba(70,96,124,.12);color:#33506b;border-color:rgba(70,96,124,.3)}
.prov.pval{background:rgba(13,21,18,.09);color:#0d1512;border-color:rgba(13,21,18,.26)}
#evidence .st-tag .prov{margin-bottom:12px}
#evidence .card .prov{margin:0 0 12px}
#evidence .g3 .card .num+.prov{display:block;width:max-content}
#evidence .eyebrow+.prov{margin:0 0 14px}
#evidence .dark .prov.pindu{background:rgba(232,190,116,.18);color:#f0d8a8;border-color:rgba(232,190,116,.42)}
#evidence .dark .prov.pval{background:rgba(255,255,255,.12);color:#eef3ef;border-color:rgba(255,255,255,.32)}
@media(max-width:860px){
 #evidence .evwhy-g{grid-template-columns:1fr;gap:26px}
 #evidence .evkey{padding:22px 20px}
 #evidence .evkey li{display:block}
 #evidence .evkey li span{display:block;margin-top:8px}
}

/* Evidence, Codex review fixes, 9 September 2026 */
#evidence .evtopics{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}
#evidence .evtopics>.eyebrow{margin:0 0 14px}
#evidence .evtopics ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 18px}
#evidence .evtopics a{display:flex;align-items:baseline;gap:9px;text-decoration:none;color:var(--ink);font-size:16px;line-height:1.35;padding:10px 12px;border:1px solid var(--line);border-radius:2px;min-height:44px;background:var(--paper)}
#evidence .evtopics a:hover{border-color:var(--moss);color:var(--moss)}
#evidence .evtopics a:focus-visible{outline:2px solid var(--moss);outline-offset:2px}
#evidence .evtopics a b{font-family:var(--serif);font-weight:400;color:var(--moss)}
a.dl{color:var(--moss);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
a.dl:hover{color:var(--deep)}
.dark a.dl,.dark a.dl:hover{color:var(--sage)}
#evidence .ns{display:inline-block;margin-left:8px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--amberink,#7a5313);background:rgba(176,124,44,.14);border:1px solid rgba(176,124,44,.36);border-radius:2px;padding:3px 7px;white-space:nowrap}
@media(max-width:820px){
 #evidence .evtopics ul{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
 #evidence .evtopics ul{grid-template-columns:1fr;gap:8px}
 #evidence .tbl{overflow:visible}
 #evidence .tbl table{min-width:0;width:100%;display:block;border-collapse:separate}
 #evidence .tbl thead{display:none}
 #evidence .tbl tbody{display:block}
 #evidence .tbl tr{display:block;border:1px solid var(--line);border-radius:2px;padding:14px 16px 10px;margin-bottom:12px}
 #evidence .tbl td{display:flex;justify-content:flex-end;align-items:baseline;gap:12px;border:0;padding:7px 0;font-variant-numeric:tabular-nums}
 #evidence .tbl td:not(:first-child)::before{margin-right:auto}
 #evidence .tbl td:first-child{display:block;font-weight:600;padding:0 0 10px;margin-bottom:4px;border-bottom:1px solid var(--line)}
 #evidence .tbl td:not(:first-child)::before{content:attr(data-l);color:var(--moss);font-size:13px;font-weight:500;letter-spacing:.02em}
 #evidence .tbl td.hi{font-weight:700}
 #evidence .ns{margin-left:0}
}
.svc-card .svc-credit{margin:-2px 0 0;color:var(--moss);opacity:.85;line-height:1.5}

/* sector routes on the home page, 9 September 2026 */
.secroute{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 34px;margin-top:30px}
.secroute a{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;cursor:pointer;
 border-top:1px solid var(--line);padding:22px 0 4px;min-height:44px;transition:border-color .3s}
.secroute a:hover{border-top-color:var(--moss)}
.secroute .k{font-family:var(--serif);font-size:clamp(1.25rem,2vw,1.6rem);line-height:1.2}
.secroute .m{font-size:16px;line-height:1.55;color:rgba(13,21,18,.76);max-width:34ch}
.secroute .arrow{margin-top:auto;padding-top:14px}
.secroute a:hover .k{color:var(--moss)}
.secroute a:focus-visible{outline:2px solid var(--moss);outline-offset:4px}
@media(max-width:760px){.secroute{grid-template-columns:1fr;gap:0}.secroute a{padding:20px 0 6px}}

/* pictures on Who we work with and What it costs, 9 September 2026 */
#partners .g4 .card{padding-top:0;border-top:0}
#partners .aud-img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;margin-bottom:16px;border-radius:2px}
#partners .g4 .card .num{display:block;margin-bottom:8px}
#rates .costfig{margin:0}
#rates .costfig img{width:100%;aspect-ratio:21/9;object-fit:cover;display:block;border-radius:2px}
#rates .costfig figcaption{font-size:13.5px;line-height:1.5;margin-top:10px;color:var(--moss)}
@media(max-width:760px){
 #partners .aud-img{aspect-ratio:16/9}
 #rates .costfig img{aspect-ratio:4/3}
}

/* Evidence: opening photograph and the head to head chart, 9 September 2026 */
#evidence .evphoto{margin:34px 0 0}
#evidence .evphoto img{width:100%;aspect-ratio:21/9;object-fit:cover;display:block;border-radius:2px}
#evidence .evphoto figcaption{font-size:13.5px;line-height:1.55;margin-top:10px;color:var(--moss);max-width:80ch}
.hh{--hhA:#3A7A5E;--hhB:#B5843C}
.hh-legend{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;margin-bottom:26px}
.hh-key{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink)}
.hh-key::before{content:"";width:14px;height:14px;border-radius:2px;flex:none}
.hh-key.a::before{background:var(--hhA)}
.hh-key.b::before{background:var(--hhB)}
.hh-scale{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--moss);margin-left:auto}
.hh-panel+.hh-panel{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}
.hh-cap{font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--moss);margin:0 0 16px}
.hh-row{display:grid;grid-template-columns:22ch 1fr 12ch;gap:8px 22px;align-items:center;padding:9px 0}
.hh-lab{font-size:15.5px;line-height:1.35}
.hh-bars{display:grid;gap:4px}
.hh-track{display:flex;align-items:center;gap:9px;background:linear-gradient(to right,rgba(20,48,40,.07) 1px,transparent 1px) 0 0/25% 100%}
.hh-bar{height:14px;border-radius:0 3px 3px 0;flex:none}
.hh-bar.a{background:var(--hhA)}
.hh-bar.b{background:var(--hhB)}
.hh-v{font-size:13.5px;font-variant-numeric:tabular-nums;color:rgba(13,21,18,.78)}
.hh-p{font-size:13px;font-variant-numeric:tabular-nums;color:var(--moss);text-align:right}
.hh-p .ns{display:block;margin:6px 0 0}
@media(max-width:760px){
 .hh-row{grid-template-columns:1fr;gap:8px;padding:14px 0;border-bottom:1px solid var(--line)}
 .hh-lab{font-weight:600}
 .hh-p{text-align:left}
 .hh-scale{margin-left:0}
}

/* Visual pass two: inclusions and the audience cards. 9 September 2026 */
#rates .incl{display:grid;grid-template-columns:1.5fr auto 1fr;gap:20px;align-items:stretch}
#rates .incl-y{background:rgba(147,179,164,.16);border-radius:2px;padding:24px 24px 20px}
#rates .incl-o{background:rgba(13,21,18,.05)}
#rates .incl-y>.eyebrow{margin:0}
#rates .incl-y ul{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
#rates .incl-y li{font-family:var(--sans);font-size:13px;font-weight:600;background:rgba(255,255,255,.78);border:1px solid rgba(20,48,40,.16);border-radius:2px;padding:8px 12px;line-height:1}
#rates .incl-y .sm{margin:16px 0 0;max-width:46ch}
#rates .incl-a{align-self:center;font-size:24px;line-height:1;color:var(--moss)}
@media(max-width:820px){#rates .incl{grid-template-columns:1fr;gap:14px}#rates .incl-a{justify-self:center;transform:rotate(90deg)}}
#evidence .evbar{margin:0 0 22px}
#evidence .evbar-t{display:flex;gap:3px;height:13px}
#evidence .evbar-t span{display:block;border-radius:1px;min-width:10px}
#evidence .evbar-t .pind{background:#3A5E4A}
#evidence .evbar-t .pindu{background:#B07C2C}
#evidence .evbar-t .pstd{background:#46607C}
#evidence .evbar-t .pval{background:#2A3833}
#evidence .evbar-c{margin:12px 0 0;font-size:15.5px;line-height:1.6;max-width:68ch}

/* Who we work with: the audience cards carry no photograph until we hold one that
   actually shows that audience. Three of the four are gaps, listed in the status
   file. A secondary route sits under the primary one on the client card. */
#partners .card .arrow2{margin-top:10px;font-size:14px;opacity:.7}
#partners .card .arrow+.arrow2{margin-top:10px}

/* Audience cards: three licensed stock photographs and one of our own. The
   credit line keeps the distinction visible without captioning each card. */
#partners .audcredit{margin:22px 0 0;color:var(--moss);max-width:82ch}
#partners .audcredit a{color:inherit;text-decoration:underline;cursor:pointer}

/* Evidence: the opening photograph is a plate, not a banner, so the room reads. */
#evidence .evphoto.evlead{max-width:820px}
#evidence .evphoto.evlead img{aspect-ratio:3/2}
@media(max-width:820px){#evidence .evphoto.evlead img{aspect-ratio:4/3}}
/* What it costs: the inclusions read as a list, not a row of clickable chips. */
#rates .incl-y ul{display:block;margin:14px 0 0}
#rates .incl-y li{background:none;border:0;border-top:1px solid rgba(20,48,40,.15);border-radius:0;
 padding:10px 0;font-size:16px;font-weight:400;line-height:1.45;font-family:inherit}
#rates .incl-y li:first-child{border-top:0;padding-top:2px}

/* Who we work with: how we work with you, three blocks, no matrix and no timeline. */
#partners .hww{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:46px 52px;margin-top:46px}
#partners .hww>div{padding-top:24px;border-top:1px solid var(--line)}
#partners .hww h3{margin:0}
#partners .hww p{margin:15px 0 0;font-size:17px;line-height:1.62;max-width:42ch}
@media(max-width:860px){#partners .hww{grid-template-columns:1fr;gap:34px;margin-top:36px}}

/* How we work with you: one photograph per block, above the heading. */
#partners .hww-img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;border-radius:2px;margin:0 0 20px}
#partners .hww>div{padding-top:0;border-top:0}
@media(max-width:860px){#partners .hww-img{aspect-ratio:16/10;margin-bottom:16px}}

/* Moodsonic page: the experience grid, the software screenshots and the
   design-and-delivery blocks. Screenshots are wide enough to be read. */
#moodsonic .msexp>div{padding-top:22px;border-top:1px solid var(--line)}
#moodsonic .msexp h3{margin:0}
#moodsonic .msexp p{margin:12px 0 0;font-size:16.5px;line-height:1.6}
#moodsonic .msblock{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,13fr);gap:clamp(24px,4vw,56px);align-items:start}
#moodsonic .msblock>div h3{margin:0}
#moodsonic .msblock>div p{margin:14px 0 0;max-width:44ch}
#moodsonic .msshot{margin:0}
#moodsonic .msshot img{width:100%;height:auto;display:block;border-radius:6px;border:1px solid var(--line);background:#fff}
#moodsonic .msshot figcaption{font-size:13.5px;line-height:1.55;margin-top:10px;color:var(--moss);max-width:70ch}
#moodsonic .msblock:has(figure)>div{padding-top:2px}
#moodsonic .work{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
/* css-art makes the first card in any .work grid span the full row. On this page
   the three project cards are equal, so that is switched off here. */
#moodsonic .work>.proj:first-child{grid-column:auto;aspect-ratio:3/2}
/* these three frames are light, so the label needs more gradient under it than the default */
#moodsonic .work .proj .ov{background:linear-gradient(180deg,rgba(8,20,16,0) 18%,rgba(8,20,16,.42) 48%,rgba(8,20,16,.86) 100%)}
#moodsonic .work .proj .t .k{color:#CFE0D6}
@media(max-width:900px){
 #moodsonic .msblock{grid-template-columns:1fr;gap:22px}
 #moodsonic .work{grid-template-columns:1fr}
}

/* A dark-green section needs a light button: the deep-green fill disappeared into it. */
.dark .btn.p{background:#fff;color:var(--deep);border-color:#fff}
.dark .btn.p:hover{background:var(--bone);color:var(--deep)}

/* What we do: a photograph on each of the four service cards. */
#whatwedo .wwd-img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;border-radius:2px;margin:0 0 20px}
@media(max-width:760px){#whatwedo .wwd-img{aspect-ratio:16/9;margin-bottom:16px}}

/* Long-form articles: a photograph inside the reading column, with its credit. */
.art .artfig{margin:34px 0 6px}
.art .artfig img{display:block;border-radius:2px}
.art .artfig figcaption{font-size:13.5px;line-height:1.55;margin-top:10px;color:var(--moss)}
.art .artfig:has(img[style*="4/5"]){max-width:520px}

#healthcare .sector-depth-open{padding-top:0}
#healthcare .sector-depth-open .research-part:first-child{border-top:0;padding-top:0}

#well .steps .step{grid-template-columns:132px minmax(0,1fr)}
#well .step .n{font-family:var(--sans);font-size:13.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;line-height:1.5;padding-top:.55em}
#well .wellsites{list-style:none;margin:30px 0 0;padding:0;max-width:88ch}
#well .wellsites li{display:grid;grid-template-columns:216px minmax(0,1fr);gap:0 20px;align-items:baseline;border-top:1px solid var(--line);padding:16px 0}
#well .wellsites li:last-child{border-bottom:1px solid var(--line)}
#well .wellsites b{font-weight:600}
#well .wellsites span{font-size:15.5px;line-height:1.55;color:rgba(13,21,18,.8);max-width:62ch}
@media(max-width:640px){
 #well .steps .step{grid-template-columns:1fr;gap:6px}
 #well .step .n{font-size:12.5px;padding-top:0}
 #well .wellsites li{grid-template-columns:1fr;gap:6px}
 #well .wellsites span{max-width:none}
}

#well .dlv .step .n{font-family:var(--serif);font-size:2.1rem;font-weight:400;letter-spacing:-.03em;text-transform:none;padding-top:0;line-height:1}
@media(max-width:640px){#well .dlv .step .n{font-size:1.4rem}}

.steps.roles .step{grid-template-columns:minmax(0,1fr);gap:0;padding:16px 0}
.steps.roles .step h3{margin-bottom:3px}
.steps.roles .step p{margin:0;max-width:62ch}

/* =====================================================================
   ART DIRECTION PASS, 8 August 2026
   Appended after css.txt. Overrides only. No markup changes, no JS changes.
   Every rule here is a portable delta: delete this file and the site
   returns exactly to the current build.
   ===================================================================== */

:root{
  /* refined ink family: warmer paper, deeper shadow, one accent tint */
  --paper:#F7F5F0;
  --bone:#EBE6DA;
  --deep:#122C24;
  --ink:#0B1310;
  --moss:#2B5A48;
  --sage:#9CBBAB;
  --line:rgba(18,44,36,.13);
  --hair:rgba(18,44,36,.09);
  --w:1240px;
  --pad:clamp(22px,5.4vw,72px);
  /* one motion curve for the whole site */
  --ease:cubic-bezier(.22,.61,.36,1);
}

/* ---------------------------------------------------------------
   1. PAPER. A faint grain lifts flat colour into something printed.
   Fixed, non-interactive, invisible individually and felt overall.
   --------------------------------------------------------------- */
body::after{
  content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.5;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='160' height='160' filter='url(%23n)' opacity='.045'/></svg>");
  mix-blend-mode:multiply;
}
@media(prefers-reduced-motion:reduce){body::after{opacity:.35}}

::selection{background:rgba(44,90,73,.18);color:var(--ink)}

/* ---------------------------------------------------------------
   2. TYPE. Tighter optical sizing, balanced headlines, a measure
   that stays readable. The single biggest lift on the whole site.
   --------------------------------------------------------------- */
body{font-size:18.5px;line-height:1.62;letter-spacing:.002em}

.d1,.d2,.d3,.d4{text-wrap:balance}
.d1{font-size:clamp(2.65rem,5.1vw,4.15rem);line-height:1.02;letter-spacing:-.03em}
.d2{font-size:clamp(2rem,3.5vw,3rem);line-height:1.06;letter-spacing:-.028em}
.d3{font-size:clamp(1.42rem,2.1vw,1.85rem);line-height:1.16;letter-spacing:-.02em}
.d4{font-size:clamp(1.2rem,1.6vw,1.42rem);line-height:1.26;letter-spacing:-.014em}
.d2+p,.d2+.lead{margin-top:18px}

.lead{font-size:clamp(1.15rem,1.45vw,1.35rem);line-height:1.58;color:#33433C;text-wrap:pretty;max-width:60ch}
p{text-wrap:pretty}
.narrow{max-width:70ch}
.sm{font-size:17px;line-height:1.6;color:#4B5953}
.xs{font-size:15px;letter-spacing:.012em;color:#5C6B63;line-height:1.5}

/* eyebrow as an editorial kicker: a rule, then the word */
.eyebrow{
  font-size:13px;letter-spacing:.22em;font-weight:600;margin:0 0 20px;
  display:flex;align-items:center;gap:12px;
}
.eyebrow::before{content:"";width:26px;height:1px;background:currentColor;opacity:.6;flex:none}
.hero .eyebrow,.dark .eyebrow{color:var(--sage)}

/* ---------------------------------------------------------------
   3. RHYTHM. Fewer, larger intervals. Air is what reads as premium.
   --------------------------------------------------------------- */
section{padding:clamp(42px,6.25vh,84px) 0}
.tight{padding:clamp(26px,3.75vh,48px) 0}
.bone{background:var(--bone)}

/* a hairline where two light sections meet, so the page has structure */
section + section:not(.dark):not(.bone)::before{
  content:"";position:absolute;top:0;left:var(--pad);right:var(--pad);height:1px;background:var(--hair);
}

/* ---------------------------------------------------------------
   4. DARK SECTIONS. Depth instead of flat fill, and a top hairline
   so the edge reads as intentional rather than as a colour change.
   --------------------------------------------------------------- */
.dark{
  background:
    radial-gradient(120% 90% at 78% 8%,rgba(58,110,90,.30) 0%,rgba(18,44,36,0) 58%),
    linear-gradient(178deg,#153228 0%,var(--deep) 46%,#0C1F19 100%);
  color:#E6EEEA;
}
.dark::after{content:"";position:absolute;inset:0 0 auto;height:1px;background:rgba(156,187,171,.22)}
.dark p,.dark .lead{color:#BCCFC6}
.dark .sm{color:#A7BCB2}

/* ---------------------------------------------------------------
   5. HERO. The wave is the artwork, so the type gets out of its way:
   shorter measure, lighter scrim, a baseline rule under the kicker.
   --------------------------------------------------------------- */
.hero{min-height:min(100svh,880px)}
.hero .inner{padding:132px 0 clamp(56px,8vh,96px)}
.hero .d1{max-width:17ch;font-size:clamp(2.6rem,5.2vw,4.3rem);letter-spacing:-.034em}
.hero .lead{max-width:46ch;color:#CFDED7;margin-top:26px;font-size:clamp(1.15rem,1.4vw,1.32rem)}
.hero.herowaved .scrim{
  background:
    linear-gradient(180deg,rgba(6,17,13,.58) 0%,rgba(6,17,13,.04) 34%,rgba(6,17,13,.42) 100%),
    linear-gradient(98deg,rgba(6,17,13,.80) 0%,rgba(6,17,13,.36) 44%,rgba(6,17,13,0) 82%),
    radial-gradient(120% 80% at 50% 120%,rgba(6,17,13,.5),rgba(6,17,13,0) 60%);
}
.hero .btns{margin-top:38px;gap:14px}
.scroll-hint{bottom:34px;font-size:10.5px;letter-spacing:.24em;color:rgba(255,255,255,.5)}

/* ---------------------------------------------------------------
   6. BUTTONS. Squarer, quieter, with the motion in the fill.
   --------------------------------------------------------------- */
.btn{
  padding:15px 30px;border-radius:1px;font-size:15.5px;letter-spacing:.03em;font-weight:500;
  transition:background .45s var(--ease),color .45s var(--ease),border-color .45s var(--ease),transform .45s var(--ease);
}
.btn:hover{transform:none}
.btn.p{background:var(--deep)}
.btn.p:hover{background:var(--moss)}
.btn.s{border-color:rgba(18,44,36,.28);color:var(--deep);background:transparent}
.btn.s:hover{background:var(--deep);color:#fff;border-color:var(--deep)}
.hero .btn.s{border-color:rgba(255,255,255,.42);color:#fff}
.hero .btn.s:hover{background:#fff;color:var(--deep);border-color:#fff}
.cta-top{padding:10px 20px;border-radius:1px;font-size:15px;letter-spacing:.03em}

/* ---------------------------------------------------------------
   7. NAVIGATION. Smaller, wider-tracked, with a hairline rule when
   the header sets. Reads as a masthead rather than a menu bar.
   --------------------------------------------------------------- */
nav a{font-size:15.5px;letter-spacing:.04em;opacity:.88}
header.solid{background:rgba(247,245,240,.90);box-shadow:none;border-bottom:1px solid var(--hair)}
header .lg{height:74px}
header.solid .lg{height:60px}
@media(max-width:640px){header .lg{height:56px}header.solid .lg{height:50px}}

/* ---------------------------------------------------------------
   8. CARDS. The border box is the least designed element on the site.
   Replaced with a hairline rule above, flat ground, and a hover that
   moves colour rather than geometry.
   --------------------------------------------------------------- */
.card{
  background:transparent;border:0;border-top:1px solid rgba(18,44,36,.22);
  padding:26px 0 0;gap:14px;
  transition:border-color .5s var(--ease);
}
.card:hover{transform:none;box-shadow:none;border-top-color:var(--moss)}
.card .num{
  font-family:var(--sans);font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--moss);font-weight:600;
}
.dark .card{background:transparent;border:0;border-top:1px solid rgba(156,187,171,.32)}
.dark .card:hover{border-top-color:var(--sage)}
.dark .card .num{color:var(--sage)}
.g3{gap:clamp(26px,3.2vw,52px)}
.g2{gap:clamp(28px,4.4vw,72px)}

/* cards that genuinely need a container keep one, softly */
.bone .card{border-top-color:rgba(18,44,36,.26)}

/* ---------------------------------------------------------------
   9. WORK GRID. Big picture, small type, lots of air. The field's
   one consistent lesson. Overlay lightened, meta always visible.
   --------------------------------------------------------------- */
.work{gap:clamp(20px,2.4vw,40px) clamp(20px,2.4vw,36px)}
.proj{aspect-ratio:3/2}
.proj.wide{aspect-ratio:21/6}
@media(max-width:760px){.proj.wide{aspect-ratio:16/9}}
.proj img{filter:saturate(.92) contrast(1.02);transition:transform 1.4s var(--ease),filter .6s var(--ease)}
.proj:hover img{transform:scale(1.04);filter:saturate(1) contrast(1.03)}
/* three lines of type now sit in the overlay, so it has to carry further up */
.proj .ov{background:linear-gradient(180deg,rgba(6,17,13,0) 24%,rgba(6,17,13,.30) 48%,rgba(6,17,13,.66) 72%,rgba(6,17,13,.92) 100%)}
.proj .t{padding:clamp(22px,2.6vw,34px)}
.proj .t .k{font-size:13px;letter-spacing:.18em;color:var(--sage);margin-bottom:10px}
.proj .t .n{font-size:clamp(1.2rem,1.7vw,1.55rem);letter-spacing:-.024em}
.proj .t .m{opacity:.88;transform:none;font-size:15.5px;margin-top:7px;transition:opacity .5s var(--ease)}
.proj:hover .t .m{opacity:1}

/* the first project in a grid earns a wider frame */
.work > .proj:first-child{grid-column:1/-1;aspect-ratio:21/9}
@media(max-width:760px){.work > .proj:first-child{aspect-ratio:4/3}}

/* ---------------------------------------------------------------
   10. PORTFOLIO LIST on the home page. More air per row, a slower
   indent, and a hairline that lights up rather than a colour swap.
   --------------------------------------------------------------- */
.pf{gap:clamp(32px,4.6vw,80px)}
.pf-row{padding:clamp(18px,2.2vw,28px) 0;border-top-color:var(--hair)}
.pf-row:last-child{border-bottom-color:var(--hair)}
.pf-row .nm{font-size:clamp(1.3rem,2.1vw,1.85rem);letter-spacing:-.026em}
.pf-row .idx{font-size:12.5px;letter-spacing:.14em;color:rgba(18,44,36,.4)}
.pf-row .mt{font-size:13.5px;letter-spacing:.06em;text-transform:uppercase;color:rgba(18,44,36,.8)}
.pf-row:hover,.pf-row:focus-visible,.pf-row.active{padding-left:22px;border-top-color:var(--moss)}
.pf-view{min-height:clamp(400px,58vh,660px)}

/* ---------------------------------------------------------------
   11. STEPS. Numerals become a quiet column, rules get finer.
   --------------------------------------------------------------- */
.step{padding:38px 0;border-top-color:var(--hair);grid-template-columns:96px 1fr}
.step:last-child{border-bottom-color:var(--hair)}
.step .n{font-family:var(--sans);font-size:13.5px;letter-spacing:.18em;font-weight:600;color:var(--moss);padding-top:.55em}
.dark .step{border-top-color:rgba(156,187,171,.2)}
.dark .step:last-child{border-bottom-color:rgba(156,187,171,.2)}
.dark .step .n{color:var(--sage)}
/* the scrub timeline keeps its serif numerals and dots */
.tl .step .n{font-family:var(--serif);font-size:1.9rem;letter-spacing:-.03em;color:var(--moss);padding-top:0}
.dark .tl .step .n{color:var(--sage)}
.tl .step.active .n{color:var(--deep)}

/* ---------------------------------------------------------------
   12. QUOTES. A hanging mark, a longer measure, real presence.
   --------------------------------------------------------------- */
.quote{
  font-size:clamp(1.35rem,2.3vw,2.05rem);line-height:1.3;letter-spacing:-.026em;
  position:relative;padding-left:0;max-width:24ch;text-wrap:pretty;
}
.quote::before{
  content:"\201C";position:absolute;left:-.52em;top:-.06em;font-size:2.1em;line-height:1;
  color:var(--moss);opacity:.28;pointer-events:none;
}
.dark .quote::before{color:var(--sage);opacity:.4}
@media(max-width:640px){.quote::before{display:none}}

/* ---------------------------------------------------------------
   13. FACTS PANEL. Tabular, quieter labels, more generous rows.
   --------------------------------------------------------------- */
.facts{border-top-color:rgba(18,44,36,.24)}
.facts div{padding:22px 0;border-bottom-color:var(--hair)}
.facts dt{font-size:13px;letter-spacing:.2em;margin-bottom:10px}
.facts dd{font-size:16px;line-height:1.55;color:#33433C}

/* ---------------------------------------------------------------
   14. TABLES. Numerals align, headers recede, rows breathe.
   --------------------------------------------------------------- */
.tbl table{font-size:16px}
.tbl th,.tbl td{padding:16px 20px 16px 0;border-bottom-color:var(--hair)}
.tbl thead th{font-size:13px;letter-spacing:.18em}
.tbl td:not(:first-child){font-variant-numeric:tabular-nums}

/* ---------------------------------------------------------------
   15. STATS. Larger, tighter, with the label doing less shouting.
   --------------------------------------------------------------- */
.stat .n{font-size:clamp(2.8rem,5.4vw,4.4rem);letter-spacing:-.045em;line-height:.9}
.stat .k{font-size:16px;font-weight:600;margin-top:16px;letter-spacing:.01em}
.stat .src{font-size:15px;margin-top:8px}

/* ---------------------------------------------------------------
   16. CREDIBILITY BAND. Borderless, ruled, evenly spaced.
   --------------------------------------------------------------- */
.cred{border:0;border-top:1px solid rgba(156,187,171,.28);border-bottom:1px solid rgba(156,187,171,.28);
  background:none;padding:24px 0;gap:18px clamp(28px,4vw,62px)}
.cred--light{border-top-color:var(--hair);border-bottom-color:var(--hair);background:none}
.cred .item .u{font-size:12.5px;letter-spacing:.2em;margin-bottom:5px}
.cred .item{font-size:15.5px;line-height:1.4}

/* ---------------------------------------------------------------
   17. ACCORDIONS, FIGURES, FOOTER, MISC.
   --------------------------------------------------------------- */
.qa,.qa details{border-color:var(--hair)}
.qa summary{padding:26px 44px 26px 0;font-size:clamp(1.12rem,1.5vw,1.3rem);letter-spacing:-.018em}
.qa .a{color:#3E4C46}

figcaption,.fig .cap{font-size:15px;letter-spacing:.012em;color:#5C6B63;margin-top:14px}
.tag{font-size:12.5px;letter-spacing:.16em;border-radius:1px;padding:6px 12px;border-color:rgba(18,44,36,.22)}
.clients{font-size:clamp(.95rem,1.2vw,1.12rem);color:#5A6A62;gap:clamp(20px,3.6vw,52px)}
.clients.logos{gap:clamp(26px,4vw,64px);row-gap:26px}
.clients.logos img{height:clamp(24px,2.4vw,34px);width:auto;display:block}
.clients.logos img[alt="GSK"]{height:clamp(30px,3vw,42px)}
.clients.logos img[alt="SAP"]{height:clamp(30px,3vw,42px)}
.clients.logos .lg-sap{display:inline-flex;align-items:center;gap:10px}
.clients.logos .lg-sap small{font-family:var(--sans);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:#5A6A62}
@media(max-width:640px){.clients.logos img{height:24px}.clients.logos img[alt="GSK"],.clients.logos img[alt="SAP"]{height:30px}}
.note{background:#FBF3E0;border-left-width:2px;font-size:15px}

footer{background:var(--ink);padding:clamp(64px,9vh,110px) 0 36px}
footer .fh{font-size:13px;letter-spacing:.2em;margin-bottom:18px}
footer a{margin-bottom:11px;font-size:16.5px}
footer a:hover{transform:none;color:#fff;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
footer .base{font-size:14px}

.arrow{font-size:16px;letter-spacing:.035em}
.banner{background:#7E4526;font-size:13px;letter-spacing:.02em;padding:9px 16px}

/* ---------------------------------------------------------------
   18. MOTION. One curve, shorter travel, calmer entrance.
   --------------------------------------------------------------- */
.rv{transform:translateY(18px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.rv.d1x{transition-delay:.07s}.rv.d2x{transition-delay:.14s}.rv.d3x{transition-delay:.21s}
.view.on{animation:fade .5s var(--ease) both}
@media(prefers-reduced-motion:reduce){.view.on{animation:none}}

/* ---------------------------------------------------------------
   19. SMALL SCREENS. The scale has to come down or it shouts.
   --------------------------------------------------------------- */
@media(max-width:640px){
  body{font-size:17px}
  .hero .d1{font-size:clamp(2.2rem,9vw,2.9rem);max-width:16ch}
  .d2{font-size:clamp(1.7rem,7vw,2.2rem)}
  section{padding:clamp(30px,4.5vh,48px) 0}
  .eyebrow::before{width:18px}
  .card{padding-top:22px}
}

/* ---------------------------------------------------------------
   20. PORTFOLIO REVEAL. The panel was a tall column, so every
   landscape photograph was being centre-cropped to a sliver and
   scaled up. Landscape frame, gentler scale, one grade over mixed
   sources so uneven photography reads as art direction.
   --------------------------------------------------------------- */
.pf{align-items:start}
.pf-view{
  min-height:0;aspect-ratio:3/2;align-self:start;
  position:sticky;top:clamp(96px,12vh,132px);
  box-shadow:0 30px 70px -50px rgba(11,19,16,.55);
}
.pf-shot{
  background-size:cover;background-position:50% 50%;
  filter:saturate(.86) contrast(1.03) brightness(.98);
  transform:scale(1.02);
}
.pf-shot.on{transform:none}
/* one graded wash so a soft source and a sharp source sit together */
.pf-view::after{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:2;
  background:
    linear-gradient(180deg,rgba(11,25,20,.10) 0%,rgba(11,25,20,0) 38%,rgba(11,25,20,.42) 100%),
    linear-gradient(100deg,rgba(18,44,36,.22) 0%,rgba(18,44,36,0) 55%);
  mix-blend-mode:multiply;
}
/* the active project, named on the image */
.pf-view .pf-cap{
  position:absolute;left:0;right:0;bottom:0;z-index:3;padding:20px 24px 18px;color:#fff;
  display:flex;flex-direction:column;gap:4px;
  text-shadow:0 1px 16px rgba(6,17,13,.6);
}
.pf-view .pf-cap span{font-size:13px;letter-spacing:.18em;text-transform:uppercase;opacity:.85;order:1}
.pf-view .pf-cap b{font-family:var(--serif);font-size:21px;line-height:1.15;letter-spacing:-.02em;font-weight:400;order:2}
@media(max-width:860px){.pf-view::after,.pf-view .pf-cap{display:none}}

/* focal point per project, so a landscape photograph is cropped to its
   subject rather than to its middle */
.pf-shot[data-k="medibank"]{background-position:50% 42%}
.pf-shot[data-k="gsk"]{background-position:50% 58%}
.pf-shot[data-k="cbre"]{background-position:60% 50%}
.pf-shot[data-k="gymea"]{background-position:50% 55%}
.pf-shot[data-k="scs"]{background-position:50% 45%}
.pf-shot[data-k="sheldon"]{background-position:62% 50%}
.pf-shot[data-k="chevron"]{background-position:50% 40%}
.pf-shot[data-k="nswtf"]{background-position:50% 60%}
.pf-shot[data-k="presynct"]{background-position:50% 55%}

/* ---------------------------------------------------------------
   21. CLIENT AND PRESS PROOF. One moving client strip, with press
   coverage kept static so the page never carries two marquees.
   --------------------------------------------------------------- */
.pressw{max-width:1100px;margin:18px auto 0;text-align:center}
.press{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}
.press-track{display:flex;width:max-content;padding:8px 0;animation:pressScroll 44s linear infinite}
.press-track a{font-family:var(--serif);font-size:clamp(1.1rem,1.4vw,1.32rem);letter-spacing:-.012em;color:var(--deep);text-decoration:none;white-space:nowrap;margin-right:clamp(40px,5vw,76px);border-bottom:1px solid transparent;transition:color .45s var(--ease),border-color .45s var(--ease)}
.press-track a:hover,.press-track a:focus-visible{color:var(--moss);border-bottom-color:var(--sage)}
.press-track.logos{align-items:center;padding:10px 0;animation-duration:38s}
.nextblock{display:flex;justify-content:space-between;align-items:flex-end;gap:24px 40px;flex-wrap:wrap;border-top:1px solid var(--hair);padding-top:30px}
.nb-links{display:flex;gap:10px 30px;align-items:center;flex-wrap:wrap}
.nb-links .eyebrow{margin:0}
.dark .nextblock{border-top-color:rgba(156,187,171,.25)}
.btns .arrow{align-self:center}
.toc{margin:6px 0 40px;max-width:64ch}
.toc .eyebrow{margin-bottom:12px}
.toc ol{margin:0;padding-left:1.4em;columns:2;column-gap:40px}
.toc li{margin:0 0 8px;break-inside:avoid;font-size:16px;line-height:1.45}
.toc a{color:var(--deep);text-decoration:none;border-bottom:1px solid rgba(18,44,36,.25)}
.toc a:hover{color:var(--moss);border-bottom-color:var(--sage)}
h2[id^="ev-"]{scroll-margin-top:110px}
@media(max-width:640px){.toc ol{columns:1}}
.press-track.presslogos{align-items:center;padding:10px 0}
.press-track.presslogos a{border-bottom:0;margin-right:clamp(40px,4.6vw,72px);display:block}
.press-track.presslogos img{height:clamp(22px,2.2vw,30px);width:auto;display:block;opacity:.92}
.press-track.presslogos img[alt="AV Interactive"],.press-track.presslogos img[alt="AV Technology"]{height:clamp(32px,3.2vw,44px)}
.press-track.presslogos img[alt="FMJ"],.press-track.presslogos img[alt="Work Design Magazine"]{height:clamp(28px,2.8vw,38px)}
.press-track.logos img{height:clamp(26px,2.5vw,34px);width:auto;display:block;margin-right:clamp(40px,4.6vw,72px)}
.press-track.logos img[alt="GSK"],.press-track.logos img[alt="SAP"]{height:clamp(32px,3.1vw,42px)}
.press-track.logos .lg-sap{display:inline-flex;align-items:center;gap:10px;margin-right:clamp(40px,4.6vw,72px)}
.press-track.logos .lg-sap img{margin-right:0}
.press-track.logos .lg-sap small{font-family:var(--sans);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:#5A6A62}
.press:hover .press-track,.press:focus-within .press-track,.press.paused .press-track{animation-play-state:paused}
.press-pause{margin-top:10px;background:none;border:0;padding:4px 8px;font:inherit;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:rgba(18,44,36,.78);cursor:pointer}
.press-pause:hover{color:var(--moss)}
.client-proof{padding-bottom:clamp(42px,6vw,74px)}
.press-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));align-items:stretch;gap:10px;margin-top:28px}
.press-grid a{min-height:74px;display:flex;align-items:center;justify-content:center;padding:12px 10px;border:1px solid var(--hair);background:rgba(255,255,255,.42);transition:border-color .3s var(--ease),background .3s var(--ease),transform .3s var(--ease)}
.press-grid a:hover,.press-grid a:focus-visible{border-color:var(--sage);background:#fff;transform:translateY(-2px)}
.press-grid img{display:block;max-width:100%;width:auto;max-height:32px;object-fit:contain}
.press-grid img[alt="AV Interactive"],.press-grid img[alt="AV Technology"]{max-height:40px}
.press-grid img[alt="Work Design Magazine"]{max-height:38px}
@media(max-width:760px){.press-grid{display:flex;overflow-x:auto;gap:10px;margin-right:calc(var(--pad) * -1);padding:0 var(--pad) 12px 0;scroll-snap-type:x proximity;scrollbar-width:thin;touch-action:pan-x}.press-grid a{flex:0 0 142px;min-height:74px;padding:12px;scroll-snap-align:start}.press-grid img{max-height:34px}.press-grid img[alt="AV Interactive"],.press-grid img[alt="AV Technology"],.press-grid img[alt="Work Design Magazine"]{max-height:40px}}
@keyframes pressScroll{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.press{mask-image:none;-webkit-mask-image:none}.press-track{animation:none;width:auto;flex-wrap:wrap;justify-content:center;row-gap:10px}.press-track a[aria-hidden],.press-track [aria-hidden]{display:none}.press-pause{display:none}}
