/* ============================================================
   RPL CONSTRUCTION — Design System
   "The Blueprint" : ink, bone, technical annotation
   ============================================================ */

/* ---------- Tokens ---------- */
:root{
  --ink:#0C0E12;
  --ink-2:#12151C;
  --ink-3:#1B202B;
  --ink-4:#252B38;

  --paper:#F4F2ED;
  --paper-2:#EAE6DE;
  --paper-3:#DED9CF;

  --brand:#2A62AE;
  --brand-lt:#5C93DE;
  --brand-dk:#173F72;
  --sand:#BFB4A1;
  --hi:#FFC24B;

  --t-on-dark:#F4F2ED;
  --t-on-dark-mute:rgba(244,242,237,.62);
  --t-on-light:#0C0E12;
  --t-on-light-mute:rgba(12,14,18,.62);

  --line-d:rgba(244,242,237,.14);
  --line-l:rgba(12,14,18,.13);

  --ff-display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --ff-body:"Inter","Helvetica Neue",Arial,sans-serif;
  --ff-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  --gut:clamp(20px,5vw,72px);
  --maxw:1440px;
  --sec:clamp(72px,10vw,150px);

  --ease:cubic-bezier(.22,1,.36,1);
  --ease-io:cubic-bezier(.65,.05,.36,1);
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body,h1,h2,h3,h4,h5,p,figure,blockquote,dl,dd,ul,ol{margin:0;padding:0}
ul,ol{list-style:none}
img,svg,video{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--brand-lt);outline-offset:3px}

html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
}

body{
  font-family:var(--ff-body);
  background:var(--ink);
  color:var(--t-on-dark);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
body.nav-open{overflow:hidden}

/* ---------- Layout ---------- */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gut)}
.wrap-wide{width:100%;max-width:1760px;margin-inline:auto;padding-inline:var(--gut)}
.sec{padding-block:var(--sec);position:relative}
.sec-tight{padding-block:clamp(56px,7vw,100px)}
.paper{background:var(--paper);color:var(--t-on-light)}
.paper-2{background:var(--paper-2);color:var(--t-on-light)}
.ink{background:var(--ink);color:var(--t-on-dark)}
.ink-2{background:var(--ink-2);color:var(--t-on-dark)}

/* blueprint grid overlay */
.grid-bg{position:relative;isolation:isolate}
.grid-bg::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:linear-gradient(var(--line-d) 1px,transparent 1px),
                   linear-gradient(90deg,var(--line-d) 1px,transparent 1px);
  background-size:clamp(60px,7vw,110px) clamp(60px,7vw,110px);
  -webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 40%,#000 20%,transparent 78%);
  mask-image:radial-gradient(ellipse 80% 70% at 50% 40%,#000 20%,transparent 78%);
  opacity:.55;
}
.paper .grid-bg::before,.grid-bg.on-light::before{
  background-image:linear-gradient(var(--line-l) 1px,transparent 1px),
                   linear-gradient(90deg,var(--line-l) 1px,transparent 1px);
}

/* ---------- Type ---------- */
.d1,.d2,.d3,.d4{
  font-family:var(--ff-display);
  font-weight:800;
  line-height:.93;
  letter-spacing:-.035em;
  text-wrap:balance;
}
.d1{font-size:clamp(3rem,8.6vw,8.4rem)}
.d2{font-size:clamp(2.1rem,4.3vw,4.05rem)}
.d3{font-size:clamp(1.75rem,3vw,2.7rem);line-height:1.02}
.d2-sm{font-family:var(--ff-display);font-weight:800;line-height:1.02;letter-spacing:-.03em;font-size:clamp(1.6rem,2.9vw,2.75rem);text-wrap:balance}
.d4{font-size:clamp(1.35rem,2vw,1.9rem);line-height:1.08;letter-spacing:-.025em;font-weight:700}

.eyebrow{
  font-family:var(--ff-mono);
  font-size:.72rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-weight:500;
  display:inline-flex;align-items:center;gap:.75em;
  color:var(--brand-lt);
}
.paper .eyebrow,.eyebrow.dark{color:var(--brand)}
.eyebrow::before{
  content:"";width:clamp(22px,3vw,46px);height:1px;background:currentColor;opacity:.6;flex:none;
}
.eyebrow.no-rule::before{display:none}

.lead{font-size:clamp(1.05rem,1.35vw,1.28rem);line-height:1.6;color:var(--t-on-dark-mute)}
.paper .lead,.lead.dark{color:var(--t-on-light-mute)}
.body-txt{color:var(--t-on-dark-mute);font-size:1.0rem;line-height:1.75}
.paper .body-txt{color:var(--t-on-light-mute)}
.body-txt p+p{margin-top:1.1em}

.mono{font-family:var(--ff-mono);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase}
.num-tag{
  font-family:var(--ff-mono);font-size:.7rem;letter-spacing:.18em;
  color:var(--brand-lt);
}
.paper .num-tag{color:var(--brand)}

.sec-head{display:grid;gap:clamp(18px,2.4vw,30px);max-width:900px}
.sec-head.center{margin-inline:auto;text-align:center}
.sec-head.center .eyebrow{justify-content:center}

.rule{height:1px;background:var(--line-d);border:0;width:100%}
.paper .rule{background:var(--line-l)}

/* ---------- Buttons ---------- */
.btn{
  --bg:var(--brand);--fg:#fff;
  position:relative;display:inline-flex;align-items:center;gap:.85em;
  font-family:var(--ff-mono);font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;font-weight:500;
  padding:1.15em 1.9em;background:var(--bg);color:var(--fg);
  border:1px solid transparent;cursor:pointer;overflow:hidden;
  transition:color .45s var(--ease),border-color .45s var(--ease);
}
.btn span{position:relative;z-index:2}
.btn svg{position:relative;z-index:2;width:15px;height:15px;flex:none;transition:transform .45s var(--ease)}
.btn::after{
  content:"";position:absolute;inset:0;z-index:1;background:var(--ink);
  transform:scaleY(0);transform-origin:bottom;transition:transform .45s var(--ease);
}
.btn:hover::after{transform:scaleY(1)}
.btn:hover{color:#fff}
.btn:hover svg{transform:translateX(4px)}
.btn-ghost{--bg:transparent;--fg:var(--t-on-dark);border-color:var(--line-d)}
.btn-ghost::after{background:var(--paper)}
.btn-ghost:hover{color:var(--ink);border-color:var(--paper)}
.paper .btn-ghost{--fg:var(--ink);border-color:var(--line-l)}
.paper .btn-ghost::after{background:var(--ink)}
.paper .btn-ghost:hover{color:var(--paper);border-color:var(--ink)}
.btn-light{--bg:var(--paper);--fg:var(--ink)}
.btn-light::after{background:var(--brand)}
.btn-light:hover{color:#fff}

.link-arrow{
  display:inline-flex;align-items:center;gap:.7em;
  font-family:var(--ff-mono);font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;
  padding-bottom:.5em;border-bottom:1px solid var(--line-d);
  transition:border-color .4s var(--ease),color .4s var(--ease);
}
.paper .link-arrow{border-color:var(--line-l)}
.link-arrow svg{width:14px;height:14px;transition:transform .4s var(--ease)}
.link-arrow:hover{color:var(--brand-lt);border-color:var(--brand-lt)}
.paper .link-arrow:hover{color:var(--brand);border-color:var(--brand)}
.link-arrow:hover svg{transform:translateX(5px)}

/* ---------- Header ---------- */
.site-head{
  position:fixed;inset:0 0 auto;z-index:200;
  transition:background .5s var(--ease),border-color .5s var(--ease),backdrop-filter .5s;
  border-bottom:1px solid transparent;
}
.site-head.solid{background:rgba(12,14,18,.86);backdrop-filter:blur(14px);border-bottom-color:var(--line-d)}
.site-head.hide{transform:translateY(-100%);transition:transform .45s var(--ease),background .5s var(--ease)}
.head-in{display:flex;align-items:center;justify-content:space-between;gap:24px;height:clamp(70px,7vw,92px)}
.brand{display:flex;align-items:center;gap:12px;flex:none}
.brand img{height:clamp(30px,3.4vw,42px);width:auto}
.brand-txt{display:none}

.nav{display:none}
@media (min-width:1060px){
  .nav{display:flex;align-items:center;gap:clamp(20px,2.3vw,38px)}
  .nav a{
    font-family:var(--ff-mono);font-size:.73rem;letter-spacing:.15em;text-transform:uppercase;
    color:var(--t-on-dark-mute);position:relative;padding-block:6px;transition:color .35s var(--ease);
  }
  .nav a::after{
    content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:var(--brand-lt);
    transform:scaleX(0);transform-origin:right;transition:transform .4s var(--ease);
  }
  .nav a:hover,.nav a[aria-current="page"]{color:var(--t-on-dark)}
  .nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1);transform-origin:left}
}
.head-cta{display:none}
@media (min-width:1060px){.head-cta{display:inline-flex;padding:.95em 1.5em}}

.burger{
  display:inline-flex;flex-direction:column;justify-content:center;gap:6px;
  width:46px;height:46px;background:transparent;border:1px solid var(--line-d);cursor:pointer;
  align-items:center;transition:border-color .35s;
}
.burger:hover{border-color:var(--brand-lt)}
.burger i{display:block;width:18px;height:1.5px;background:var(--paper);transition:transform .4s var(--ease),opacity .3s}
body.nav-open .burger i:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
body.nav-open .burger i:nth-child(2){opacity:0}
body.nav-open .burger i:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}
@media (min-width:1060px){.burger{display:none}}

/* Mobile drawer */
.drawer{
  position:fixed;inset:0;z-index:190;background:var(--ink);
  display:flex;flex-direction:column;justify-content:center;
  padding:calc(clamp(70px,7vw,92px) + 24px) var(--gut) 40px;
  clip-path:inset(0 0 100% 0);transition:clip-path .7s var(--ease);
  visibility:hidden;
}
body.nav-open .drawer{clip-path:inset(0 0 0 0);visibility:visible}
.drawer ul{display:grid;gap:clamp(4px,1vw,10px)}
.drawer li{overflow:hidden}
.drawer a{
  display:flex;align-items:baseline;gap:16px;
  font-family:var(--ff-display);font-weight:800;letter-spacing:-.03em;
  font-size:clamp(2rem,9vw,3.6rem);line-height:1.12;
  transform:translateY(105%);transition:transform .7s var(--ease),color .3s;
}
body.nav-open .drawer a{transform:translateY(0)}
.drawer li:nth-child(1) a{transition-delay:.10s}
.drawer li:nth-child(2) a{transition-delay:.16s}
.drawer li:nth-child(3) a{transition-delay:.22s}
.drawer li:nth-child(4) a{transition-delay:.28s}
.drawer li:nth-child(5) a{transition-delay:.34s}
.drawer li:nth-child(6) a{transition-delay:.40s}
.drawer li:nth-child(7) a{transition-delay:.46s}
.drawer a:hover{color:var(--brand-lt)}
.drawer a i{font-style:normal;font-family:var(--ff-mono);font-size:.7rem;letter-spacing:.16em;color:var(--brand-lt);flex:none}
.drawer-foot{margin-top:auto;padding-top:36px;border-top:1px solid var(--line-d);display:flex;flex-wrap:wrap;gap:18px 32px;justify-content:space-between}
.drawer-foot a{font-family:var(--ff-mono);font-size:.75rem;letter-spacing:.12em;color:var(--t-on-dark-mute);transform:none}
.drawer-foot a:hover{color:var(--paper)}

/* ---------- Hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;isolation:isolate}
.hero-media{position:absolute;inset:0;z-index:-2}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.6s var(--ease)}
.hero-slide.active{opacity:1}
.hero-slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:transform 7s linear}
.hero-slide.active img{transform:scale(1.12)}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(12,14,18,.78) 0%,rgba(12,14,18,.35) 32%,rgba(12,14,18,.55) 64%,rgba(12,14,18,.95) 100%);
}
.hero-media::before{
  content:"";position:absolute;inset:0;z-index:1;
  background-image:linear-gradient(90deg,rgba(244,242,237,.07) 1px,transparent 1px);
  background-size:clamp(70px,8.33vw,150px) 100%;
}
.hero-in{position:relative;z-index:2;padding-bottom:clamp(24px,4vw,54px);padding-top:clamp(104px,16vw,180px);margin-top:auto}
.hero-tag{display:flex;align-items:center;gap:14px;margin-bottom:clamp(20px,2.5vw,30px)}
.hero h1{
  font-family:var(--ff-display);font-weight:800;letter-spacing:-.042em;line-height:.9;
  font-size:clamp(3.1rem,10.5vw,10rem);text-transform:none;
}
.hero h1 .ln{display:block;overflow:hidden}
.hero h1 .ln>span{display:block;transform:translateY(102%);animation:rise 1.05s var(--ease) forwards}
.hero h1 .ln:nth-child(1)>span{animation-delay:.15s}
.hero h1 .ln:nth-child(2)>span{animation-delay:.26s}
.hero h1 .ln:nth-child(3)>span{animation-delay:.37s}
@keyframes rise{to{transform:translateY(0)}}
.hero h1 em{font-style:normal;color:var(--brand-lt)}
.hero-sub{
  margin-top:clamp(18px,3vw,34px);max-width:520px;
  opacity:0;animation:fade .9s var(--ease) .6s forwards;
}
@keyframes fade{to{opacity:1}}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:clamp(26px,3vw,38px);opacity:0;animation:fade .9s var(--ease) .75s forwards}

.hero-bar{
  position:relative;z-index:2;border-top:1px solid var(--line-d);
  opacity:0;animation:fade .9s var(--ease) .9s forwards;
}
.hero-bar-in{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(16px,3vw,42px);padding-block:clamp(14px,1.6vw,20px);justify-content:space-between}
.hero-bar dl{display:flex;flex-wrap:wrap;gap:clamp(18px,3.4vw,54px)}
.hero-bar div{display:flex;flex-direction:column;gap:3px}
.hero-bar dt{font-family:var(--ff-mono);font-size:.63rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(244,242,237,.45)}
.hero-bar dd{font-family:var(--ff-mono);font-size:.8rem;letter-spacing:.05em;color:var(--paper)}
.hero-bar dd a:hover{color:var(--brand-lt)}
.scroll-cue{display:none;align-items:center;gap:10px;font-family:var(--ff-mono);font-size:.63rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(244,242,237,.5)}
.scroll-cue i{display:block;width:1px;height:26px;background:linear-gradient(var(--brand-lt),transparent);animation:cue 1.8s var(--ease-io) infinite}
@media (min-width:760px){.scroll-cue{display:flex}}
@keyframes cue{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* page hero (interior) */
.phero{position:relative;min-height:clamp(440px,64vh,660px);display:flex;align-items:flex-end;overflow:hidden;isolation:isolate}
.phero-media{position:absolute;inset:0;z-index:-2}
.phero-media img{width:100%;height:100%;object-fit:cover}
.phero-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,14,18,.82) 0%,rgba(12,14,18,.42) 40%,rgba(12,14,18,.92) 100%)}
.phero-media::before{content:"";position:absolute;inset:0;z-index:1;background-image:linear-gradient(90deg,rgba(244,242,237,.06) 1px,transparent 1px);background-size:clamp(70px,8.33vw,150px) 100%}
.phero-in{position:relative;z-index:2;padding-block:clamp(120px,14vw,150px) clamp(40px,5vw,64px);width:100%}
.phero h1{font-family:var(--ff-display);font-weight:800;letter-spacing:-.04em;line-height:.92;font-size:clamp(2.6rem,7vw,6.2rem);margin-top:clamp(16px,2vw,24px)}
.phero .lead{margin-top:clamp(18px,2vw,26px);max-width:640px}
.crumb{display:flex;gap:10px;align-items:center;font-family:var(--ff-mono);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(244,242,237,.5)}
.crumb a:hover{color:var(--brand-lt)}

/* ---------- Reveal ---------- */
[data-rv]{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
[data-rv].in{opacity:1;transform:none}
[data-rv="clip"]{opacity:1;transform:none;clip-path:inset(0 0 100% 0);transition:clip-path 1.1s var(--ease)}
[data-rv="clip"].in{clip-path:inset(0 0 0 0)}
[data-rv="fade"]{transform:none}
[data-rv-d="1"]{transition-delay:.09s}
[data-rv-d="2"]{transition-delay:.18s}
[data-rv-d="3"]{transition-delay:.27s}
[data-rv-d="4"]{transition-delay:.36s}
[data-rv-d="5"]{transition-delay:.45s}
[data-rv-d="6"]{transition-delay:.54s}

/* ---------- Marquee ---------- */
.marq{overflow:hidden;border-block:1px solid var(--line-d);padding-block:clamp(14px,1.8vw,22px);background:var(--ink-2)}
.marq-track{display:flex;gap:clamp(28px,4vw,60px);width:max-content;animation:marq 38s linear infinite}
.marq:hover .marq-track{animation-play-state:paused}
@keyframes marq{to{transform:translateX(-50%)}}
.marq-item{display:flex;align-items:center;gap:clamp(28px,4vw,60px);font-family:var(--ff-display);font-weight:700;font-size:clamp(1.1rem,2vw,1.9rem);letter-spacing:-.02em;color:rgba(244,242,237,.5);white-space:nowrap}
.marq-item b{font-weight:700;color:var(--paper)}
.marq-item::after{content:"";width:6px;height:6px;background:var(--brand-lt);flex:none;transform:rotate(45deg)}

/* ---------- Stats ---------- */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line-l)}
@media (min-width:900px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--paper);color:var(--t-on-light);padding:clamp(26px,3.4vw,44px) clamp(20px,2.4vw,32px);display:grid;gap:8px}
.ink .stat,.ink-2 .stat{background:var(--ink);color:var(--t-on-dark)}
.stat b{font-family:var(--ff-display);font-weight:800;font-size:clamp(2.4rem,5vw,4rem);line-height:1;letter-spacing:-.045em;display:block}
.stat b em{font-style:normal;color:var(--brand)}
.stat>span{font-family:var(--ff-mono);font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--t-on-light-mute)}
.ink .stat>span{color:var(--t-on-dark-mute)}
.ink .stat b em,.ink-2 .stat b em{color:var(--brand-lt)}

/* ---------- Split feature ---------- */
.split{display:grid;gap:clamp(32px,5vw,80px);align-items:center}
@media (min-width:960px){.split{grid-template-columns:1fr 1fr}.split.wide-l{grid-template-columns:1.15fr .85fr}.split.wide-r{grid-template-columns:.85fr 1.15fr}}
.split .media{position:relative}
.split .media img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/5}
.split .media.tall img{aspect-ratio:3/4}
.split .media.wide img{aspect-ratio:4/3}
.media-tag{
  position:absolute;left:0;bottom:0;background:var(--brand);color:#fff;
  font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;
  padding:.9em 1.4em;
}
.media-stack{position:relative}
.media-stack .b{position:absolute;width:46%;right:-6%;bottom:-9%;border:6px solid var(--paper);box-shadow:0 30px 60px rgba(0,0,0,.25)}
.ink .media-stack .b,.ink-2 .media-stack .b{border-color:var(--ink)}
.media-stack .b img{aspect-ratio:1/1}

/* ---------- Sector explorer ---------- */
.sectors{position:relative;isolation:isolate;background:var(--ink)}
.sectors-bg{position:absolute;inset:0;z-index:-1;overflow:hidden}
.sectors-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.06);transition:opacity .9s var(--ease),transform 1.4s var(--ease)}
.sectors-bg img.on{opacity:.34;transform:scale(1)}
.sectors::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(12,14,18,.94),rgba(12,14,18,.55))}
.sector-list{border-top:1px solid var(--line-d)}
.sector-row{
  display:flex;align-items:center;gap:clamp(14px,2.5vw,32px);
  padding-block:clamp(20px,3vw,34px);border-bottom:1px solid var(--line-d);
  position:relative;cursor:default;transition:padding-left .5s var(--ease);
}
@media (min-width:760px){.sector-row:hover{padding-left:clamp(12px,2vw,32px)}}
.sector-row .n{font-family:var(--ff-mono);font-size:.7rem;letter-spacing:.18em;color:rgba(244,242,237,.4);flex:none;transition:color .4s}
.sector-row h3{
  font-family:var(--ff-display);font-weight:800;letter-spacing:-.035em;line-height:1;
  font-size:clamp(1.7rem,4.6vw,3.4rem);flex:none;transition:color .4s var(--ease);
}
.sector-row p{flex:1;font-size:.93rem;color:rgba(244,242,237,.5);display:none;max-width:420px}
@media (min-width:1100px){.sector-row p{display:block}}
.sector-row .go{margin-left:auto;flex:none;width:44px;height:44px;border:1px solid var(--line-d);display:grid;place-items:center;transition:background .4s var(--ease),border-color .4s,transform .4s var(--ease)}
.sector-row .go svg{width:15px;height:15px;transition:transform .4s var(--ease)}
.sector-row:hover .n{color:var(--brand-lt)}
.sector-row:hover .go{background:var(--brand);border-color:var(--brand)}
.sector-row:hover .go svg{transform:translateX(3px)}

/* ---------- Cards ---------- */
.cards{display:grid;gap:1px;background:var(--line-l)}
@media (min-width:800px){.cards.c3{grid-template-columns:repeat(3,1fr)}.cards.c2{grid-template-columns:repeat(2,1fr)}}
.card{
  background:var(--paper);color:var(--t-on-light);padding:clamp(28px,3.4vw,52px);
  display:grid;gap:clamp(14px,1.6vw,20px);align-content:start;position:relative;
  transition:background .5s var(--ease),color .5s var(--ease);
}
.ink .card,.ink-2 .card{background:var(--ink);color:var(--t-on-dark)}
.card .ic{width:44px;height:44px;color:var(--brand);margin-bottom:4px}
.card .ic svg{width:100%;height:100%;stroke-width:1.2}
.card h3{font-family:var(--ff-display);font-weight:700;font-size:clamp(1.15rem,1.7vw,1.5rem);letter-spacing:-.02em;line-height:1.15}
.card p{font-size:.94rem;line-height:1.7;color:var(--t-on-light-mute)}
.ink .card p,.ink-2 .card p{color:var(--t-on-dark-mute)}
.card .n{position:absolute;top:clamp(20px,2.4vw,32px);right:clamp(20px,2.4vw,32px);font-family:var(--ff-mono);font-size:.68rem;letter-spacing:.18em;color:var(--brand);opacity:.5}

/* value cards (dark, hover lift) */
.vcard{
  background:var(--ink-2);padding:clamp(26px,3vw,42px);display:grid;gap:14px;align-content:start;
  border:1px solid var(--line-d);position:relative;overflow:hidden;
  transition:border-color .5s var(--ease),transform .5s var(--ease);
}
.vcard::before{content:"";position:absolute;left:0;top:0;width:100%;height:2px;background:var(--brand);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease)}
.vcard:hover{border-color:rgba(92,147,222,.4);transform:translateY(-5px)}
.vcard:hover::before{transform:scaleX(1)}
.vcard h3{font-family:var(--ff-display);font-weight:700;font-size:1.3rem;letter-spacing:-.02em}
.vcard p{font-size:.92rem;line-height:1.72;color:var(--t-on-dark-mute)}
.vcard .ic{width:34px;height:34px;color:var(--brand-lt)}
.grid-3{display:grid;gap:clamp(14px,1.6vw,22px)}
@media (min-width:720px){.grid-3{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1080px){.grid-3{grid-template-columns:repeat(3,1fr)}}
.grid-2{display:grid;gap:clamp(14px,1.6vw,22px)}
@media (min-width:760px){.grid-2{grid-template-columns:repeat(2,1fr)}}

/* ---------- Project cards ---------- */
.proj-grid{display:grid;gap:clamp(18px,2.4vw,34px)}
@media (min-width:760px){.proj-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1180px){.proj-grid.p3{grid-template-columns:repeat(3,1fr)}}
.proj{position:relative;display:block;overflow:hidden;background:var(--ink-2);isolation:isolate;align-self:start}
.proj-img{position:relative;overflow:hidden;aspect-ratio:4/3}
.proj.tall .proj-img{aspect-ratio:3/4}
.proj-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease),filter .8s var(--ease);filter:saturate(.92)}
.proj:hover .proj-img img{transform:scale(1.07);filter:saturate(1)}
.proj-img::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(12,14,18,0) 18%,rgba(12,14,18,.45) 52%,rgba(12,14,18,.94) 100%);transition:opacity .6s}
.proj-body{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:clamp(20px,2.4vw,32px);display:grid;gap:10px}
.proj-cat{font-family:var(--ff-mono);font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:#8FBAF0}
.proj h3{font-family:var(--ff-display);font-weight:700;font-size:clamp(1.2rem,1.9vw,1.7rem);letter-spacing:-.025em;line-height:1.1;color:var(--paper)}
.proj-more{display:inline-flex;align-items:center;gap:.6em;font-family:var(--ff-mono);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(244,242,237,.7);opacity:0;transform:translateY(8px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.proj:hover .proj-more{opacity:1;transform:none}
.proj-more svg{width:13px;height:13px}
.proj-badge{position:absolute;top:0;left:0;z-index:3;background:var(--brand);color:#fff;font-family:var(--ff-mono);font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;padding:.75em 1.15em}

/* ---------- Testimonials ---------- */
.tslider{position:relative;overflow:hidden}
.ttrack{display:flex;transition:transform .8s var(--ease)}
.tslide{flex:0 0 100%;padding-inline:2px}
.tquote{
  font-family:var(--ff-display);font-weight:500;letter-spacing:-.025em;line-height:1.28;
  font-size:clamp(1.25rem,2.8vw,2.3rem);text-wrap:balance;
}
.tquote::before{content:"\201C"}
.tquote::after{content:"\201D"}
.tmeta{margin-top:clamp(22px,3vw,34px);display:flex;align-items:center;gap:14px}
.tmeta .ln{width:34px;height:1px;background:var(--brand);flex:none}
.tmeta b{font-family:var(--ff-mono);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;font-weight:500}
.tmeta span{font-family:var(--ff-mono);font-size:.7rem;letter-spacing:.1em;color:var(--t-on-light-mute)}
.ink .tmeta span,.ink-2 .tmeta span{color:var(--t-on-dark-mute)}
.tnav{display:flex;align-items:center;gap:12px;margin-top:clamp(28px,3.4vw,44px)}
.tnav button{width:48px;height:48px;border:1px solid var(--line-l);background:transparent;display:grid;place-items:center;cursor:pointer;transition:background .4s var(--ease),border-color .4s,color .4s}
.ink .tnav button,.ink-2 .tnav button{border-color:var(--line-d)}
.tnav button:hover{background:var(--brand);border-color:var(--brand);color:#fff}
.tnav button svg{width:15px;height:15px}
.tcount{font-family:var(--ff-mono);font-size:.72rem;letter-spacing:.16em;margin-left:8px;color:var(--t-on-light-mute)}
.ink .tcount,.ink-2 .tcount{color:var(--t-on-dark-mute)}

/* ---------- Process (numbered) ---------- */
.process{display:grid;gap:1px;background:var(--line-l)}
@media (min-width:900px){.process{grid-template-columns:repeat(3,1fr)}}
.pstep{background:var(--paper);color:var(--t-on-light);padding:0;overflow:hidden;display:grid;grid-template-rows:auto 1fr}
.pstep .ph{position:relative;aspect-ratio:16/10;overflow:hidden}
.pstep .ph img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease)}
.pstep:hover .ph img{transform:scale(1.05)}
.pstep .ph b{position:absolute;left:0;bottom:0;background:var(--ink);color:var(--paper);font-family:var(--ff-mono);font-size:.7rem;letter-spacing:.2em;padding:.85em 1.3em}
.pstep .pb{padding:clamp(24px,2.8vw,40px);display:grid;gap:14px;align-content:start}
.pstep h3{font-family:var(--ff-display);font-weight:700;font-size:clamp(1.3rem,2vw,1.8rem);letter-spacing:-.025em}
.pstep p{font-size:.93rem;line-height:1.72;color:var(--t-on-light-mute)}

/* ---------- Team ---------- */
.team-grid{display:grid;gap:clamp(14px,1.8vw,26px)}
@media (min-width:600px){.team-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:940px){.team-grid{grid-template-columns:repeat(4,1fr)}}
@media (min-width:1460px){.team-grid{grid-template-columns:repeat(5,1fr)}}
.member{position:relative;overflow:hidden;background:var(--ink-2);border:1px solid var(--line-d)}
.member .ph{aspect-ratio:3/4;overflow:hidden;position:relative;background:var(--ink-3)}
.member .ph img{width:100%;height:100%;object-fit:cover;object-position:center top;filter:grayscale(1) contrast(1.05);transition:filter .7s var(--ease),transform 1.1s var(--ease)}
.member:hover .ph img{filter:grayscale(0);transform:scale(1.04)}
.member .mb{padding:clamp(18px,2vw,26px);display:grid;gap:8px}
.member h3{font-family:var(--ff-display);font-weight:700;font-size:1.25rem;letter-spacing:-.02em}
.member .role{font-family:var(--ff-mono);font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;color:var(--brand-lt)}
.member .bio{font-size:.86rem;line-height:1.68;color:var(--t-on-dark-mute)}

/* ---------- Accreditations ---------- */
.accreds{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line-l)}
@media (min-width:640px){.accreds{grid-template-columns:repeat(3,1fr)}}
@media (min-width:1000px){.accreds{grid-template-columns:repeat(5,1fr)}}
.accred{background:var(--paper);display:grid;place-items:center;padding:clamp(24px,3vw,40px);min-height:130px}
.accred img{max-height:70px;width:auto;object-fit:contain;filter:grayscale(1);opacity:.62;transition:filter .5s var(--ease),opacity .5s var(--ease)}
.accred:hover img{filter:grayscale(0);opacity:1}


/* ---------- Image band ---------- */
.band{position:relative;overflow:hidden;isolation:isolate}
.band img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block}
@media (min-width:760px){.band img{aspect-ratio:21/9}}
.band .media-tag{z-index:2}
.band::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(12,14,18,0) 42%,rgba(12,14,18,.72) 100%);pointer-events:none}
.band-cap{
  position:absolute;left:0;bottom:0;z-index:2;padding:clamp(16px,2vw,26px) clamp(18px,2.4vw,32px);
  font-family:var(--ff-mono);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--paper);
  text-shadow:0 1px 8px rgba(12,14,18,.7);
}

/* ---------- Before / after ---------- */
.ba{display:grid;gap:clamp(12px,1.6vw,24px)}
@media (min-width:820px){.ba{grid-template-columns:repeat(2,1fr)}}
.ba figure{position:relative;margin:0;overflow:hidden;background:var(--ink-2)}
.ba img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform 1.1s var(--ease)}
.ba figure:hover img{transform:scale(1.04)}
.ba figcaption{
  position:absolute;top:0;left:0;z-index:2;
  font-family:var(--ff-mono);font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;
  padding:.8em 1.2em;background:var(--ink);color:var(--paper);
}
.ba figure.after figcaption{background:var(--brand);color:#fff}
.ba-strip{display:grid;gap:clamp(12px,1.6vw,24px);grid-template-columns:repeat(2,1fr)}
@media (min-width:820px){.ba-strip{grid-template-columns:repeat(3,1fr)}}
.ba-strip img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}

/* ---------- Gallery ---------- */
.gal{display:grid;gap:clamp(10px,1.2vw,18px);grid-template-columns:repeat(2,1fr)}
.gal button{border:0;padding:0;background:var(--ink-2);cursor:zoom-in;overflow:hidden;position:relative;aspect-ratio:4/3;display:block}
.gal button:nth-child(3n+1){grid-column:span 2;aspect-ratio:16/10}
@media (min-width:820px){
  .gal{grid-template-columns:repeat(3,1fr)}
  .gal button:nth-child(3n+1){grid-column:span 2;grid-row:span 2;aspect-ratio:auto;height:100%}
}
.gal img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease),opacity .5s}
.gal button:hover img{transform:scale(1.05)}
.gal button::after{content:"";position:absolute;inset:0;background:rgba(42,98,174,0);transition:background .4s}
.gal button:hover::after{background:rgba(42,98,174,.18)}

.lb{position:fixed;inset:0;z-index:300;background:rgba(8,10,13,.96);display:none;place-items:center;padding:clamp(16px,4vw,56px)}
.lb.open{display:grid}
.lb img{max-width:100%;max-height:82vh;object-fit:contain;width:auto}
.lb-close,.lb-prev,.lb-next{position:absolute;width:52px;height:52px;border:1px solid var(--line-d);background:rgba(12,14,18,.6);display:grid;place-items:center;cursor:pointer;color:var(--paper);transition:background .35s,border-color .35s}
.lb-close:hover,.lb-prev:hover,.lb-next:hover{background:var(--brand);border-color:var(--brand)}
.lb-close{top:clamp(14px,3vw,32px);right:clamp(14px,3vw,32px)}
.lb-prev{left:clamp(10px,2vw,28px);top:50%;transform:translateY(-50%)}
.lb-next{right:clamp(10px,2vw,28px);top:50%;transform:translateY(-50%)}
.lb svg{width:18px;height:18px}
.lb-count{position:absolute;bottom:clamp(14px,3vw,30px);left:50%;transform:translateX(-50%);font-family:var(--ff-mono);font-size:.72rem;letter-spacing:.18em;color:rgba(244,242,237,.6)}

/* ---------- Spec table ---------- */
.spec{display:grid;gap:0;border-top:1px solid var(--line-d)}
.spec div{display:grid;grid-template-columns:1fr;gap:4px;padding-block:clamp(14px,1.6vw,20px);border-bottom:1px solid var(--line-d)}
@media (min-width:560px){.spec div{grid-template-columns:150px 1fr;gap:20px;align-items:baseline}}
.spec dt{font-family:var(--ff-mono);font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(244,242,237,.45)}
.spec dd{font-size:.98rem;color:var(--paper)}
.paper .spec{border-color:var(--line-l)}
.paper .spec div{border-color:var(--line-l)}
.paper .spec dt{color:var(--t-on-light-mute)}
.paper .spec dd{color:var(--ink)}

/* ---------- CTA band ---------- */
.cta-band{position:relative;overflow:hidden;isolation:isolate;background:var(--brand)}
.cta-band::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background-image:linear-gradient(rgba(255,255,255,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.09) 1px,transparent 1px);
  background-size:clamp(60px,7vw,110px) clamp(60px,7vw,110px);
}
.cta-band .wrap{position:relative;z-index:1}
.cta-in{display:grid;gap:clamp(26px,3.4vw,44px);align-items:center}
@media (min-width:960px){.cta-in{grid-template-columns:1.2fr auto}}
.cta-band h2{font-family:var(--ff-display);font-weight:800;letter-spacing:-.035em;line-height:.96;font-size:clamp(2rem,4.6vw,4.2rem);color:#fff}
.cta-band p{color:rgba(255,255,255,.8);margin-top:16px;max-width:520px}
.cta-actions{display:flex;flex-wrap:wrap;gap:14px}

/* ---------- Contact ---------- */
.offices{display:grid;gap:1px;background:var(--line-d)}
@media (min-width:820px){.offices{grid-template-columns:repeat(2,1fr)}}
.office{background:var(--ink);color:var(--t-on-dark);padding:clamp(28px,3.4vw,52px);display:grid;gap:clamp(16px,2vw,24px);align-content:start}
.office h3{font-family:var(--ff-display);font-weight:800;font-size:clamp(1.5rem,2.6vw,2.2rem);letter-spacing:-.03em;text-transform:capitalize}
.office dl{display:grid;gap:14px}
.office dl>div{display:grid;gap:3px}
.office dt{font-family:var(--ff-mono);font-size:.63rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(244,242,237,.42)}
.office dd{font-size:.98rem;color:var(--paper)}
.office dd a:hover{color:var(--brand-lt)}

.form{display:grid;gap:clamp(14px,1.6vw,20px)}
.form .row{display:grid;gap:clamp(14px,1.6vw,20px)}
@media (min-width:700px){.form .row.two{grid-template-columns:repeat(2,1fr)}}
.field{display:grid;gap:8px}
.field label{font-family:var(--ff-mono);font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(244,242,237,.5)}
.field input,.field select,.field textarea{
  background:transparent;border:0;border-bottom:1px solid var(--line-d);
  padding:.85em 0;color:var(--paper);font-size:1rem;transition:border-color .4s var(--ease);
  border-radius:0;-webkit-appearance:none;appearance:none;
}
.field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F4F2ED' stroke-width='1.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 2px center;background-size:18px}
.field select option{background:var(--ink-2);color:var(--paper)}
.field textarea{resize:vertical;min-height:120px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-bottom-color:var(--brand-lt)}
.field input::placeholder,.field textarea::placeholder{color:rgba(244,242,237,.28)}
.form-note{font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.12em;color:rgba(244,242,237,.4);line-height:1.7}

/* ---------- Footer ---------- */
.site-foot{background:var(--ink-2);border-top:1px solid var(--line-d);position:relative;overflow:hidden}
.foot-top{display:grid;gap:clamp(34px,4vw,60px);padding-block:clamp(56px,7vw,96px)}
@media (min-width:960px){.foot-top{grid-template-columns:1.4fr 1fr 1fr}}
.foot-brand img{height:46px;width:auto;margin-bottom:22px}
.foot-brand p{max-width:340px;font-size:.92rem;line-height:1.75;color:var(--t-on-dark-mute)}
.foot-col h4{font-family:var(--ff-mono);font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(244,242,237,.42);margin-bottom:20px}
.foot-col ul{display:grid;gap:11px}
.foot-col a{font-size:.94rem;color:var(--t-on-dark-mute);transition:color .35s,padding-left .35s var(--ease)}
.foot-col a:hover{color:var(--paper);padding-left:6px}
.foot-col address{font-style:normal;font-size:.92rem;line-height:1.8;color:var(--t-on-dark-mute)}
.foot-col address strong{color:var(--paper);font-weight:500;display:block;font-family:var(--ff-mono);font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;margin-bottom:6px}
.foot-col address a:hover{color:var(--paper)}
.socials{display:flex;gap:10px;margin-top:26px}
.socials a{width:42px;height:42px;border:1px solid var(--line-d);display:grid;place-items:center;transition:background .4s var(--ease),border-color .4s,color .4s}
.socials a:hover{background:var(--brand);border-color:var(--brand);color:#fff}
.socials svg{width:16px;height:16px}
.foot-bot{border-top:1px solid var(--line-d);padding-block:26px;display:flex;flex-wrap:wrap;gap:16px 30px;justify-content:space-between;align-items:center}
.foot-bot p,.foot-bot a{font-family:var(--ff-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(244,242,237,.4)}
.foot-bot a:hover{color:var(--paper)}
.foot-badge{display:flex;align-items:center;gap:14px}
.foot-badge img{height:52px;width:auto;opacity:.85}
.foot-badge span{font-family:var(--ff-mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(244,242,237,.45);line-height:1.6;max-width:170px}

/* huge wordmark in footer */
.foot-mark{padding-bottom:clamp(10px,2vw,26px);overflow:hidden}
.foot-mark span{
  display:block;font-family:var(--ff-display);font-weight:800;letter-spacing:-.05em;line-height:.8;
  font-size:clamp(1.9rem,8.3vw,8.2rem);color:transparent;
  -webkit-text-stroke:1px rgba(244,242,237,.16);
  white-space:nowrap;
}

/* ---------- Misc ---------- */
.skip{position:absolute;left:-9999px;top:0;z-index:999;background:var(--brand);color:#fff;padding:14px 20px;font-family:var(--ff-mono);font-size:.75rem}
.skip:focus{left:0}
.prose h2{font-family:var(--ff-display);font-weight:800;letter-spacing:-.03em;font-size:clamp(1.5rem,2.6vw,2.1rem);line-height:1.08;margin-top:1.6em;margin-bottom:.6em}
.prose h3{font-family:var(--ff-display);font-weight:700;font-size:clamp(1.2rem,1.8vw,1.45rem);letter-spacing:-.02em;margin-top:1.5em;margin-bottom:.5em}
.prose p{margin-bottom:1.1em}
.prose>*:first-child{margin-top:0}
.hl{color:var(--brand-lt)}
.paper .hl{color:var(--brand)}
.pull{
  border-left:2px solid var(--brand);padding-left:clamp(18px,2.4vw,32px);
  font-family:var(--ff-display);font-weight:500;letter-spacing:-.02em;line-height:1.3;
  font-size:clamp(1.1rem,1.9vw,1.6rem);
}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tag{font-family:var(--ff-mono);font-size:.63rem;letter-spacing:.16em;text-transform:uppercase;padding:.6em 1em;border:1px solid var(--line-d);color:var(--t-on-dark-mute)}
.paper .tag{border-color:var(--line-l);color:var(--t-on-light-mute)}
.center{text-align:center}
.mt-l{margin-top:clamp(34px,4.5vw,64px)}
.mt-m{margin-top:clamp(22px,3vw,40px)}
.mt-s{margin-top:clamp(14px,2vw,24px)}
.mw-680{max-width:680px}
.mw-780{max-width:780px}
