

/* ------------------------------------------------------------------
   Type. Neue Haas Grotesk + Canela are used when installed locally
   (as on the fauxtography site). To serve them to every visitor, drop
   licensed .woff2 files into assets/fonts/ and add a url() source to
   each @font-face below.
------------------------------------------------------------------ */
@font-face{font-family:"FX Grotesk";font-weight:700;font-style:normal;font-display:swap;
  src:local("Neue Haas Grotesk Display Pro 75 Bold"),local("NeueHaasGroteskDisplayPro-75Bd"),local("NHaasGroteskDSPro-75Bd");}
@font-face{font-family:"FX Grotesk";font-weight:500;font-style:normal;font-display:swap;
  src:local("Neue Haas Grotesk Text Pro 65 Medium"),local("NeueHaasGroteskTextPro-65Md"),local("NHaasGroteskTXPro-65Md");}
@font-face{font-family:"FX Canela";font-weight:500;font-style:normal;font-display:swap;
  src:local("Canela Medium"),local("Canela-Medium"),local("Canela Text Medium"),local("CanelaText-Medium");}

:root{
  --ink:#0b0b0b;
  --paper:#ffffff;
  --soft:#6b6b6b;
  --line:#e4e2de;
  --wash:#f0efec;
  --grotesk:"FX Grotesk","Neue Haas Grotesk Display Pro","Neue Haas Grotesk Text Pro","Neue Haas Grotesk","Helvetica Neue",Helvetica,Arial,sans-serif;
  --serif:"FX Canela","Canela","Canela Text",Georgia,"Times New Roman",serif;
  --pad:5vw;
  /* legacy aliases so existing markup keeps working */
  --fg:var(--ink); --fg-2:var(--ink); --fg-3:var(--soft);
  --bg:var(--paper); --bg-2:var(--paper); --line-2:#cfcdc9;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--paper);color:var(--ink);
  font-family:var(--serif);font-weight:500;font-size:17px;line-height:1.3;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
::selection{background:var(--ink);color:var(--paper)}

h1,h2,h3{font-family:var(--grotesk);font-weight:700;letter-spacing:-0.03em;line-height:0.88;text-transform:uppercase}

.wrap{padding:0 var(--pad)}
.mono{font-family:var(--grotesk);font-weight:700;font-size:0.76rem;letter-spacing:0.01em;text-transform:uppercase;color:var(--soft)}
.rule{height:1px;background:var(--line);border:0}

/* ---------- nav ---------- */
nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  background:rgba(255,255,255,0.94);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  transition:box-shadow .3s;
}
nav.stuck{box-shadow:0 1px 0 var(--line)}
nav .inner{
  padding:18px var(--pad);display:flex;align-items:center;justify-content:space-between;gap:24px;
}
nav .id{font-family:var(--grotesk);font-weight:700;font-size:1.05rem;letter-spacing:-0.01em;white-space:nowrap;text-transform:uppercase}
nav .id span{color:var(--soft);font-weight:500;text-transform:none;letter-spacing:0}
nav ul{display:flex;gap:26px;list-style:none;align-items:center}
nav ul a{
  font-family:var(--grotesk);font-weight:700;font-size:0.72rem;letter-spacing:0.02em;
  text-transform:uppercase;position:relative;
}
nav ul a::after{content:"";position:absolute;left:0;bottom:-4px;width:0;height:1.5px;background:currentColor;transition:width .25s ease}
nav ul a:hover::after{width:100%}
nav ul a.cta::after{display:none}
nav ul a.cta{border:1.5px solid var(--ink);padding:8px 14px}
nav ul a.cta:hover{background:var(--ink);color:var(--paper)}
@media(max-width:1180px) and (min-width:821px){nav ul{gap:16px}nav ul a{font-size:0.66rem}}
@media(max-width:820px){
  nav ul li.hide-s{display:none}
  nav .id span{display:none}
  nav .inner{padding:14px var(--pad)}
}

/* ---------- hero ---------- */
.hero{padding:clamp(130px,15vh,180px) 0 0}
.hero .kick{margin-bottom:16px}
h1.big{font-size:clamp(2.1rem,5.5vw,5.6rem)}
h1.big em{font-style:normal;color:var(--soft)}
@media(max-width:820px){h1.big br{display:none}}
.hero .dek{
  margin-top:26px;max-width:46ch;
  font-size:clamp(1.1rem,1.5vw,1.45rem);line-height:1.3;
}
.hero .dek b{font-weight:500}

/* ---------- sections ---------- */
section{padding:clamp(80px,9vw,150px) 0 0}
#contact{padding-bottom:clamp(40px,5vw,70px)}
.sechead{margin-bottom:clamp(28px,3.2vw,48px)}
.sechead h2{font-size:clamp(2.2rem,5vw,5.2rem)}
.sechead p{
  margin-top:clamp(16px,1.8vw,26px);max-width:62ch;
  font-size:clamp(1.05rem,1.3vw,1.3rem);line-height:1.3;
}
.sechead p a{border-bottom:1.5px solid var(--ink)}

/* ---------- work grid ---------- */
.grid{display:grid;grid-template-columns:1fr;gap:clamp(48px,7vw,104px)}
.card{display:block;position:relative}
.card .shot{position:relative;overflow:hidden;background:var(--wash)}
.card .shot img{
  width:100%;aspect-ratio:16/9;object-fit:contain;
  transition:transform .6s cubic-bezier(.16,1,.3,1);
}
.card:hover .shot img{transform:scale(1.03)}
.card .shot.board img{aspect-ratio:auto;transform:none}
.card:hover .shot.board img{transform:none}
.card .swatch{display:none}
.card .meta{padding:16px 0 0}
.card h3{font-size:clamp(1.6rem,2.6vw,2.6rem)}
.card .tag{
  margin-top:10px;max-width:46ch;
  font-size:clamp(1.02rem,1.2vw,1.22rem);line-height:1.3;
}
.card .num{
  display:block;margin-top:14px;
  font-family:var(--grotesk);font-weight:700;font-size:0.72rem;
  letter-spacing:0.01em;text-transform:uppercase;color:var(--soft);
}
.card .num b{font-weight:700;color:var(--ink)}
.card .go{
  display:inline-block;margin-top:16px;
  font-family:var(--grotesk);font-weight:700;font-size:0.72rem;
  letter-spacing:0.01em;text-transform:uppercase;
  border-bottom:1.5px solid transparent;transition:border-color .25s;
}
.card:hover .go{border-bottom-color:var(--ink)}
.card.feature{display:grid;grid-template-columns:1.55fr 1fr;gap:clamp(24px,3vw,56px);align-items:center}
.card.feature .meta{padding:0}
@media(max-width:820px){
  .card.feature{grid-template-columns:1fr;gap:18px}
  .card h3{font-size:clamp(1.5rem,6.4vw,2rem)}
}

/* ---------- about / services ---------- */
.two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,96px);align-items:start}
@media(max-width:820px){.two{grid-template-columns:1fr;gap:64px}}
.prose p{
  font-size:clamp(1.12rem,1.5vw,1.5rem);line-height:1.26;margin-bottom:1em;max-width:40ch;
}
.prose p:last-child{margin-bottom:0}
.prose b{font-weight:500}
.svclist{list-style:none}
.svclist li{
  padding:22px 0;border-bottom:1px solid var(--line);
  display:grid;grid-template-columns:38px 1fr;gap:0 18px;align-items:start;
}
.svclist li:first-child{padding-top:0}
.svclist li span{
  font-family:var(--grotesk);font-weight:700;font-size:0.72rem;letter-spacing:0.01em;
  text-transform:uppercase;color:var(--soft);padding-top:7px;
}
.svclist h4{
  font-family:var(--grotesk);font-weight:700;text-transform:uppercase;letter-spacing:-0.02em;
  font-size:clamp(1.15rem,1.7vw,1.5rem);line-height:1;margin-bottom:9px;
}
.svclist p{font-size:1.02rem;line-height:1.3;color:var(--soft);max-width:44ch}

.bigmail{
  display:inline-block;font-family:var(--grotesk);font-weight:700;text-transform:uppercase;
  letter-spacing:-0.03em;line-height:0.9;font-size:clamp(1.3rem,3.6vw,3.6rem);
  border-bottom:2px solid var(--ink);padding-bottom:6px;word-break:break-word;
}
.bigmail:hover{color:var(--soft);border-bottom-color:var(--soft)}

/* ---------- footer ---------- */
footer{padding:clamp(90px,10vw,150px) 0 40px}
footer .frow{
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px;
  font-family:var(--grotesk);font-weight:700;font-size:0.74rem;
  letter-spacing:0.01em;text-transform:uppercase;color:var(--soft);
}
footer .frow a{color:var(--ink);border-bottom:1.5px solid var(--ink)}
footer .disc{margin-top:34px;max-width:78ch;font-size:0.95rem;line-height:1.4;color:var(--soft)}

/* ---------- case study ---------- */
.case-hero{padding:clamp(130px,16vh,190px) 0 0}
.backlink{
  font-family:var(--grotesk);font-weight:700;font-size:0.72rem;letter-spacing:0.01em;
  text-transform:uppercase;color:var(--soft);
}
.backlink:hover{color:var(--ink)}
.case-hero h1{font-size:clamp(2.4rem,6vw,6.2rem);margin:26px 0 0}
.case-hero .tag{
  margin-top:18px;max-width:40ch;
  font-size:clamp(1.1rem,1.6vw,1.6rem);line-height:1.25;color:var(--soft);
}

.slidegrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
@media(max-width:1000px){.slidegrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.slidegrid{grid-template-columns:repeat(2,1fr)}}
.slidegrid button{
  all:unset;cursor:pointer;position:relative;display:block;
  background:var(--wash);overflow:hidden;
}
.slidegrid img{width:100%;aspect-ratio:16/9;object-fit:cover;transition:transform .6s cubic-bezier(.16,1,.3,1)}
.slidegrid button:hover img{transform:scale(1.03)}
.slidegrid button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.slidegrid .idx{
  position:absolute;left:0;bottom:0;padding:6px 10px 5px;
  font-family:var(--grotesk);font-weight:700;font-size:0.7rem;letter-spacing:0.01em;
  color:var(--ink);background:var(--paper);
  opacity:0;transform:translateY(6px);transition:opacity .25s ease,transform .25s ease;
}
.slidegrid button:hover .idx{opacity:1;transform:translateY(0)}

.dl{
  display:inline-block;font-family:var(--grotesk);font-weight:700;font-size:0.76rem;
  letter-spacing:0.01em;text-transform:uppercase;
  border:1.5px solid var(--ink);padding:13px 20px;transition:.2s;
}
.dl:hover{background:var(--ink);color:var(--paper)}

.nextprev{
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,4vw,60px);
  margin-top:clamp(80px,9vw,140px);padding:clamp(40px,5vw,70px) var(--pad) 0;
  border-top:1px solid var(--line);
}
.nextprev .l{
  font-family:var(--grotesk);font-weight:700;font-size:0.72rem;letter-spacing:0.01em;
  text-transform:uppercase;color:var(--soft);margin-bottom:12px;
}
.nextprev .t{
  font-family:var(--grotesk);font-weight:700;text-transform:uppercase;letter-spacing:-0.03em;
  line-height:0.9;font-size:clamp(1.6rem,3.4vw,3.2rem);
}
.nextprev a:hover .t{color:var(--soft)}
.nextprev a:last-child{text-align:right}
@media(max-width:640px){.nextprev{grid-template-columns:1fr;gap:30px}.nextprev a:last-child{text-align:left}}

/* ---------- lightbox ---------- */
.lb{position:fixed;inset:0;z-index:200;background:var(--paper);display:none;flex-direction:column}
.lb.on{display:flex}
.lb .bar{
  display:flex;justify-content:space-between;align-items:center;gap:20px;
  padding:16px var(--pad);flex:0 0 auto;border-bottom:1px solid var(--line);
}
.lb .bar .who{font-family:var(--grotesk);font-weight:700;font-size:0.8rem;text-transform:uppercase;letter-spacing:0.01em}
.lb .bar .who em{font-style:normal;color:var(--soft)}
.lb .bar button{
  all:unset;cursor:pointer;font-family:var(--grotesk);font-weight:700;font-size:0.72rem;
  letter-spacing:0.01em;text-transform:uppercase;padding:8px 12px;border:1.5px solid var(--ink);
}
.lb .bar button:hover{background:var(--ink);color:var(--paper)}
.lb .count{font-family:var(--grotesk);font-weight:700;font-size:0.72rem;letter-spacing:0.01em;color:var(--soft);white-space:nowrap}
.lb .stage{flex:1 1 auto;display:flex;align-items:center;justify-content:center;padding:clamp(14px,3vw,38px);position:relative;min-height:0}
.lb .stage img{max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 10px 50px rgba(0,0,0,.12)}
.lb .arrow{
  position:absolute;top:50%;transform:translateY(-50%);
  width:48px;height:48px;border:1.5px solid var(--ink);background:var(--paper);
  color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;
  font-size:16px;transition:.2s;
}
.lb .arrow:hover{background:var(--ink);color:var(--paper)}
.lb .arrow.prev{left:clamp(8px,2vw,26px)}
.lb .arrow.next{right:clamp(8px,2vw,26px)}
.lb .foot{
  flex:0 0 auto;padding:12px var(--pad) 20px;border-top:1px solid var(--line);
  display:flex;align-items:center;gap:8px;overflow-x:auto;
}
.lb .foot img{height:40px;width:auto;opacity:.4;cursor:pointer;border:1.5px solid transparent;transition:.2s;flex:0 0 auto}
.lb .foot img:hover{opacity:.85}
.lb .foot img.cur{opacity:1;border-color:var(--ink)}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(16px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}
