
:root{--ink:#071527;--navy:#0C2340;--navy2:#0F2A44;--line:rgba(255,255,255,.10);--emer:#008A5A;--emerL:#2FB985;--emerT:rgba(47,185,133,.12);
 --text:#E7EDF3;--body:#C9D4DF;--mut:#9DB0C2;--disp:'Space Grotesk',system-ui,sans-serif;--serif:'Inter',system-ui,sans-serif;--mono:'JetBrains Mono',ui-monospace,monospace}
*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}
body{font-family:var(--serif);color:var(--body);background:var(--ink);line-height:1.65;font-size:17px;-webkit-font-smoothing:antialiased;overflow-x:hidden}
.wrap{max-width:1160px;margin:0 auto;padding:0 30px}.narrow{max-width:760px;margin:0 auto;padding:0 30px}
a{color:var(--emerL);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3,h4,.disp{font-family:var(--disp);color:#fff;font-weight:700;line-height:1.08;letter-spacing:-.01em}
h1{font-size:clamp(2.2rem,4.4vw,3.3rem);margin-bottom:.5em}h2{font-size:clamp(1.5rem,2.6vw,2rem);margin-bottom:.5em}h3{font-size:1.18rem;margin-bottom:.35em}
p{margin-bottom:1.05em;max-width:68ch}
.eyebrow,.tag{font-family:var(--mono);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--emerL);margin-bottom:1rem;display:block}
.eyebrow .num,.tag .num{color:var(--mut)}
.lead,.standfirst{font-size:1.28rem;line-height:1.5;color:#dfe7ef;max-width:60ch}
.muted{color:var(--mut)}.small{font-size:.95rem}
section{position:relative;padding:84px 0;border-top:1px solid var(--line)}section.first{border-top:none}section.alt{background:var(--navy)}
.ticks{position:relative}.ticks::before,.ticks::after{content:"";position:absolute;width:12px;height:12px;border-color:var(--emerL);opacity:.55}
.ticks::before{top:10px;left:10px;border-left:1.5px solid;border-top:1.5px solid}.ticks::after{bottom:10px;right:10px;border-right:1.5px solid;border-bottom:1.5px solid}

header{position:sticky;top:0;z-index:100;background:rgba(7,21,39,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
nav{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:74px;flex-wrap:wrap}
.brand img{height:26px;display:block}
.nlinks{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.nlinks a{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.nlinks a .nn{color:var(--emerL);opacity:.8;margin-right:2px}
.nlinks a:hover{color:#fff;text-decoration:none}.nlinks a.active{color:var(--emerL)}
.nlinks a.cta{background:var(--emer);color:#fff;padding:10px 16px;border-radius:4px}.nlinks a.cta:hover{background:var(--emerL);color:var(--ink)}

.btn{display:inline-block;font-family:var(--mono);font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;background:var(--emer);color:#fff;padding:13px 22px;border-radius:4px;transition:.2s}
.btn:hover{background:var(--emerL);color:var(--ink);text-decoration:none}
.btn-ghost{background:transparent;border:1px solid var(--line);color:#fff}.btn-ghost:hover{border-color:var(--emerL);color:var(--emerL);background:transparent}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:1.4em}

/* hero */
.hero{min-height:88vh;display:flex;align-items:center;overflow:hidden;background:radial-gradient(1100px 700px at 78% 30%,rgba(47,185,133,.10),transparent 60%),var(--ink)}
.hero .grid{position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:64px 64px;opacity:.32;mask-image:radial-gradient(circle at 70% 40%,#000,transparent 75%)}
.ghost{position:absolute;left:0;right:0;bottom:-2.5vw;text-align:center;font-family:var(--disp);font-weight:700;font-size:22vw;line-height:.8;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.05);white-space:nowrap;pointer-events:none;user-select:none}
.hero .wrap{position:relative;z-index:3;display:grid;grid-template-columns:1.1fr .9fr;gap:36px;align-items:center;width:100%}
.hero-content{max-width:660px}.hero h1{max-width:18ch}
.hero .after{font-size:1.1rem;max-width:58ch;color:var(--body)}
.hero .prac{font-family:var(--mono);font-size:.82rem;letter-spacing:.06em;color:var(--emerL);text-transform:uppercase;margin:1.2em 0}
.hero-visual svg{width:100%;max-width:500px;margin-left:auto;display:block;filter:drop-shadow(0 0 30px rgba(47,185,133,.15))}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes spinr{to{transform:rotate(-360deg)}}@keyframes pulse{0%,100%{opacity:.6}50%{opacity:1}}
.ring-a{transform-box:fill-box;transform-origin:center;animation:spin 90s linear infinite}.ring-b{transform-box:fill-box;transform-origin:center;animation:spinr 60s linear infinite}.core{animation:pulse 3.5s ease-in-out infinite}
.rot{transform-box:fill-box;transform-origin:center;animation:spin 40s linear infinite}

/* grids & cards */
.two{display:grid;grid-template-columns:1fr 1fr;gap:22px}.three{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.card{position:relative;display:block;background:linear-gradient(180deg,var(--navy),var(--navy2));border:1px solid var(--line);border-radius:8px;padding:30px 28px;transition:.25s;color:var(--body)}
a.card:hover{border-color:var(--emerL);transform:translateY(-3px);text-decoration:none}
.card h3{margin-bottom:.4em}.card p{font-size:1rem;margin-bottom:0}
.numbered{font-family:var(--mono);font-size:.72rem;color:var(--mut);letter-spacing:.14em;display:block;margin-bottom:.9em;text-transform:uppercase}

.score{display:flex;flex-wrap:wrap;gap:16px 40px;align-items:baseline}
.score .n{font-family:var(--disp);font-size:2.1rem;font-weight:700;color:var(--emerL)}.score .l{color:var(--mut);font-size:.95rem;margin-left:.4em}
.context{font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--mut);margin-bottom:1em}
.orgrow{display:flex;flex-wrap:wrap;gap:12px 32px;align-items:center}
.orgrow span{font-family:var(--disp);font-weight:600;color:#7f93a6;font-size:1.05rem}
.blocklabel{font-family:var(--mono);font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--mut);margin-bottom:.9em}
.proof{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:16px 30px}
.proof li{padding-left:22px;position:relative;font-size:1.02rem;color:var(--body)}
.proof li:before{content:"";position:absolute;left:0;top:.62em;width:8px;height:8px;background:var(--emerL);border-radius:2px}
.sstrip{display:flex;flex-wrap:wrap;gap:10px}
.sstrip span{font-family:var(--mono);font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:#fff;border:1px solid var(--line);border-radius:20px;padding:7px 15px}

/* sector badges */
.badges{display:flex;flex-wrap:wrap;justify-content:center;gap:18px}
.badge{flex:1 1 calc(20% - 18px);min-width:190px;max-width:262px;text-align:left;padding:22px 20px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,var(--navy),var(--navy2))}
.badge .emblem{position:relative;width:80px;height:80px;margin:0 0 16px;display:flex;align-items:center;justify-content:center}
.badge .emblem svg.ringwrap{position:absolute;inset:0}
.badge .emblem .ico{width:28px;height:28px;color:var(--emerL);position:relative;z-index:2}
.badge h3{font-size:1.08rem}.badge p{color:var(--body);font-size:.9rem;line-height:1.55}
.ico{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* team */
.team{display:grid;grid-template-columns:repeat(2,1fr);gap:30px}
.member{display:grid;grid-template-columns:130px 1fr;gap:22px;align-items:start;background:linear-gradient(180deg,var(--navy),var(--navy2));border:1px solid var(--line);border-radius:8px;padding:26px}
.member .ph{width:130px;height:130px;border-radius:6px;object-fit:cover;filter:grayscale(1) contrast(1.05);border:1px solid var(--line)}
.member .hole{width:130px;height:130px;border-radius:6px;background:rgba(255,255,255,.03);border:1px dashed rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:700;color:#4f6377;font-size:1.6rem}
.member h3{margin-bottom:.15em}.member .role{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--emerL);margin-bottom:.8em}
.member p{font-size:1rem;margin-bottom:.7em}

/* map */
.map-wrap{border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,var(--navy),var(--ink));padding:14px}
.map-wrap svg{width:100%;height:auto;display:block}
.citylist{display:none;flex-wrap:wrap;gap:8px 18px;margin-top:14px;font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:#fff}

/* article */
.article{padding:70px 0}
.article .rubric{font-family:var(--mono);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--emerL);margin-bottom:1.1rem}
.article h1{max-width:20ch}.article .standfirst{margin-bottom:1.2em}
.article .meta{font-family:var(--mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;margin-bottom:2em}
.article h2{margin:1.5em 0 .45em;font-size:1.4rem}.article p{font-size:1.08rem;line-height:1.72;color:#dfe7ef}
.article p:first-of-type{}
.article .note{color:var(--mut);font-style:italic;font-size:1rem;border-top:1px solid var(--line);padding-top:1.2em;margin-top:2em}
.related{margin-top:2em;font-family:var(--mono);font-size:.78rem;letter-spacing:.06em}.related a{margin-right:16px}

/* forms */
input,textarea{background:rgba(255,255,255,.04);color:#fff;border:1px solid var(--line)!important;border-radius:4px}
input:focus,textarea:focus{outline:none;border-color:var(--emerL)!important}
label{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}

footer{position:relative;border-top:1px solid var(--line);padding:70px 0 40px;overflow:hidden;background:var(--ink)}
.footghost{position:absolute;left:0;right:0;bottom:-1.5vw;text-align:center;font-family:var(--disp);font-weight:700;font-size:16vw;line-height:.8;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.04);white-space:nowrap;pointer-events:none}
footer .cols{position:relative;z-index:2;display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:28px}
footer img{height:24px;margin-bottom:14px}
footer .fh{font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--mut);margin-bottom:14px}
footer a{display:block;color:#aebccb;font-size:.92rem;margin-bottom:9px;font-family:var(--disp)}footer a:hover{color:var(--emerL);text-decoration:none}
footer .legal{position:relative;z-index:2;border-top:1px solid var(--line);margin-top:40px;padding-top:22px;font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--mut);display:flex;gap:8px 18px;flex-wrap:wrap}
footer .legal a{display:inline;margin:0;font-family:var(--mono);color:#9fb0c0}

/* photography */
.photo{position:relative;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:var(--navy)}
.photo img{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(1) contrast(1.05)}
.photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,21,39,.10),rgba(7,21,39,.55));pointer-events:none}
.photo.visual img{filter:none}.photo.visual::after{background:linear-gradient(180deg,rgba(7,21,39,0),rgba(7,21,39,.35))}
.photo .cap{position:absolute;left:18px;bottom:14px;z-index:2;font-family:var(--mono);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:#cfe7dc}
.band{height:440px}
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:stretch}
.split .photo{min-height:420px}
.statement{font-family:var(--disp);font-size:clamp(1.45rem,2.5vw,2rem);color:#fff;font-weight:600;line-height:1.22;max-width:24ch;margin:1.6em 0 1.2em}
.houseline{border:1px solid var(--line);border-left:2px solid var(--emerL);background:rgba(255,255,255,.03);padding:24px 28px;border-radius:6px;max-width:72ch}
.houseline .lbl{font-family:var(--mono);font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--emerL);margin-bottom:.7em}
.houseline p{margin:0;max-width:none;color:#dfe7ef}
.steps4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media(max-width:980px){.steps4{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.steps4{grid-template-columns:1fr}.band{height:280px}}

/* ===== motion system ===== */
#boot{position:fixed;inset:0;z-index:9999;background:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;transition:opacity .6s ease,visibility .6s}
#boot.out{opacity:0;visibility:hidden}
.boot-sq{width:44px;height:44px;border:1.5px solid var(--emerL);animation:sq 1s steps(1) infinite}
@keyframes sq{50%{background:rgba(47,185,133,.35)}}
.boot-txt{font-family:var(--mono);letter-spacing:.34em;color:var(--emerL);font-size:.78rem}
.boot-bar{width:210px;height:2px;background:rgba(255,255,255,.12);overflow:hidden}
.boot-bar i{display:block;height:100%;width:0;background:var(--emerL);animation:load 1.7s ease forwards}
@keyframes load{to{width:100%}}

.hero .grid{animation:drift 60s linear infinite}
@keyframes drift{to{background-position:64px 64px}}
.beam{position:absolute;top:-20%;height:140%;width:1px;background:linear-gradient(180deg,transparent,rgba(47,185,133,.55),transparent);opacity:.45;transform:rotate(22deg);pointer-events:none;animation:sweep 22s linear infinite}
.beam.b2{animation-duration:31s;animation-delay:-12s;opacity:.3}
.beam.b3{animation-duration:27s;animation-delay:-5s;opacity:.22;background:linear-gradient(180deg,transparent,rgba(255,255,255,.35),transparent)}
@keyframes sweep{from{left:-10%}to{left:110%}}
.particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.particles svg{width:100%;height:100%}
.pf1{animation:float 38s ease-in-out infinite alternate}.pf2{animation:float 52s ease-in-out infinite alternate-reverse}
@keyframes float{from{transform:translate(0,0)}to{transform:translate(-26px,18px)}}
.ticker{position:relative;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(255,255,255,.02);overflow:hidden;white-space:nowrap}
.ticker .track{display:inline-block;padding:11px 0;font-family:var(--mono);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--mut);animation:tick 70s linear infinite}
.ticker .track span{margin:0 34px}.ticker .track b{color:var(--emerL);font-weight:500}
@keyframes tick{to{transform:translateX(-50%)}}
.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
.card,.badge,.member{transition:border-color .25s,transform .25s,box-shadow .25s,opacity .7s ease}
a.card:hover,.badge:hover{box-shadow:0 0 0 1px rgba(47,185,133,.35),0 18px 40px rgba(0,0,0,.35)}
.nlinks a{position:relative}.nlinks a:not(.cta)::after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:1px;background:var(--emerL);transition:width .25s}.nlinks a:not(.cta):hover::after,.nlinks a.active::after{width:100%}
.core{animation:pulse 3.5s ease-in-out infinite}
/* mobile overlay menu */
.menubtn{display:none;font-family:var(--mono);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:#fff;background:transparent;border:1px solid var(--line);padding:9px 14px;border-radius:4px;cursor:pointer}
.overlay{position:fixed;inset:0;z-index:200;background:rgba(7,21,39,.97);display:none;flex-direction:column;justify-content:center;padding:40px 30px}
.overlay.open{display:flex}
.overlay a{font-family:var(--disp);font-size:clamp(1.6rem,6vw,2.4rem);font-weight:700;color:#fff;padding:12px 0;border-bottom:1px solid var(--line)}
.overlay a:hover{color:var(--emerL);text-decoration:none}
.overlay .close{position:absolute;top:22px;right:26px;font-family:var(--mono);font-size:.72rem;letter-spacing:.2em;color:var(--mut);cursor:pointer;background:none;border:none}
.overlay .idx{font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;color:var(--emerL);margin-right:14px;font-weight:400}
@media(max-width:980px){.nlinks{display:none}.menubtn{display:inline-block}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

@media(max-width:980px){.hero .wrap{grid-template-columns:1fr}.hero-visual{display:none}.split{grid-template-columns:1fr}.split .photo{min-height:260px}}
@media(max-width:860px){.two,.three,.team,.proof,footer .cols{grid-template-columns:1fr}.nlinks{gap:14px}.citylist{display:flex}}
@media(max-width:640px){body{font-size:17px}.member{grid-template-columns:96px 1fr}.member .ph,.member .hole{width:96px;height:96px}.ghost{font-size:30vw}}
