@font-face {
  font-family: Inter;
  src: url('/inter-latin-wght.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-display: swap;
}

:root {
  --ground: #030303;
  --ink: #ebe6dd;
  --line: rgba(235, 230, 221, 0.18);
  --soft: rgba(235, 230, 221, 0.6);
  --accent: #e0531f;
  --gutter: 16px;
  --gap: 16px;
  --seam: 2px;
  --sans: 'Helvetica Neue', Helvetica, Inter, Arial, sans-serif;
  --ease: cubic-bezier(0.2, 0.8, 0.2, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { background: var(--ground); -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 72px; }
body {
  background: var(--ground);
  color: var(--ink);
  font: 300 16px/1.5 var(--sans);
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
  -webkit-tap-highlight-color: transparent;
  overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
img, video { display: block; width: 100%; height: auto; background: #0b0b0b; }
:focus-visible { outline: 1px solid var(--accent); outline-offset: 4px; }

.skip { position: fixed; left: var(--gutter); top: -64px; z-index: 60; background: var(--ink); color: var(--ground); padding: 8px 16px; }
.skip:focus { top: 16px; }

.micro { font-size: 11px; line-height: 16px; font-weight: 400; letter-spacing: 0.14em; text-transform: uppercase; }
.soft { color: var(--soft); }

/* Name and menu float over everything, never in a bar. */
.chrome {
  position: fixed;
  inset: 0 0 auto;
  z-index: 50;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 16px var(--gutter);
  mix-blend-mode: difference;
  pointer-events: none;
}
.chrome a { pointer-events: auto; color: #fff; padding: 8px 0; }
.chrome .right { justify-self: end; }
.chrome .left { justify-self: start; }
.logo { font-size: 16px; line-height: 24px; font-weight: 500; letter-spacing: -0.01em; }

/* Home */
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
h1:not(.sr) { font-size: clamp(48px, 9.2vw, 192px); line-height: 0.94; font-weight: 500; letter-spacing: -0.04em; }

.work {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: var(--seam);
  padding-top: 56px;
}
.column { display: grid; align-content: start; }
.tile { display: block; }
.frame { position: relative; overflow: hidden; background: #0b0b0b; }
.tile.full { grid-column: 1 / -1; }
.full .frame { aspect-ratio: 3 / 1; }
.tall .frame { aspect-ratio: 4 / 5; }
.wide .frame { aspect-ratio: 5 / 4; }
.frame img, .frame video { position: absolute; inset: 0; height: 100%; object-fit: cover; }
.frame.type { background: var(--ground); box-shadow: inset 0 0 0 1px var(--line); display: flex; flex-direction: column; justify-content: space-between; padding: 24px; }
.frame .value { font-size: 20vw; line-height: 0.9; font-weight: 500; letter-spacing: -0.05em; }
.caption { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 16px; padding: 12px var(--gutter) 32px; }
.caption .name { position: relative; font-size: 18px; line-height: 24px; font-weight: 500; letter-spacing: -0.01em; justify-self: start; }
.caption .name::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform 0.4s var(--ease); }
.tile:hover .caption .name::after, .tile:focus-visible .caption .name::after { transform: scaleX(1); }
.caption .kind { grid-column: 1; color: var(--soft); font-size: 13px; line-height: 20px; }
.caption .years { grid-column: 2; grid-row: 1; color: var(--soft); font-size: 13px; line-height: 24px; }

/* Case */
.case { padding: 96px var(--gutter) 0; }
.case-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0 32px; padding-top: 16px; color: var(--soft); }
.case-meta > * { padding: 4px 0; }
.case-meta a { color: var(--ink); min-height: 24px; box-shadow: inset 0 -1px 0 var(--line); transition: box-shadow 0.4s var(--ease); }
.case-meta a:hover { box-shadow: inset 0 -1px 0 var(--accent); }
.case-lead { font-size: clamp(24px, 3vw, 48px); line-height: 1.1; font-weight: 500; letter-spacing: -0.03em; max-width: 22em; padding-top: 64px; }
.case-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 64px var(--gap); padding-top: 64px; }
.facts { border-top: 1px solid var(--line); }
.facts div { display: grid; grid-template-columns: 112px minmax(0, 1fr); column-gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.facts dt { color: var(--soft); font-size: 13px; line-height: 24px; }
.body p { font-size: 18px; line-height: 28px; max-width: 34em; }
.body p + p { padding-top: 16px; }
.media { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--seam); margin: 64px calc(var(--gutter) * -1) 0; }
.media > * { grid-column: 1 / -1; }
.media .half { grid-column: span 1; }
.media .fill { position: relative; }
.media .fill img { position: absolute; inset: 0; height: 100%; object-fit: cover; }
.watch { display: block; }
.watch figcaption { padding: 12px var(--gutter); transition: color 0.4s var(--ease); }
.watch:hover figcaption { color: var(--accent); }
.next { display: block; margin-top: 64px; padding: 32px 0; border-top: 1px solid var(--line); }
.next span { display: block; }
.next .title { font-size: clamp(48px, 9.2vw, 192px); line-height: 0.94; font-weight: 500; letter-spacing: -0.04em; transition: color 0.4s var(--ease); }
.next:hover .title { color: var(--accent); }

/* Resume */
.resume { padding: 96px var(--gutter) 0; }
.resume-head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); column-gap: var(--gap); align-items: end; }
.resume-actions { display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: flex-end; }
.button { display: inline-block; padding: 12px 16px; box-shadow: inset 0 0 0 1px var(--line); transition: box-shadow 0.4s var(--ease), color 0.4s var(--ease); }
.button:hover { box-shadow: inset 0 0 0 1px var(--accent); color: var(--accent); }
.resume section { padding-top: 64px; }
.resume section > h2 { color: var(--soft); padding-bottom: 16px; }
.entry { display: grid; grid-template-columns: 136px minmax(0, 1fr); column-gap: var(--gap); padding: 16px 0; border-top: 1px solid var(--line); }
.entry .years { color: var(--soft); font-size: 13px; line-height: 24px; }
.entry h3 { font-size: 18px; line-height: 24px; font-weight: 300; }
.entry .org { color: var(--soft); }
.entry p { padding-top: 8px; max-width: 40em; }
.disciplines { display: flex; flex-wrap: wrap; gap: 0 24px; font-size: clamp(24px, 3vw, 48px); line-height: 1.2; font-weight: 500; letter-spacing: -0.03em; }

/* Footer */
.foot { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); column-gap: var(--gap); align-items: end; margin-top: 96px; padding: 32px var(--gutter); border-top: 1px solid var(--line); }
.foot .mail { font-size: clamp(24px, 4.2vw, 80px); line-height: 1; font-weight: 500; letter-spacing: -0.03em; transition: color 0.4s var(--ease); overflow-wrap: anywhere; }
.foot .mail:hover { color: var(--accent); }
.foot ul { display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: flex-end; color: var(--soft); }
.foot li > * { padding: 8px 0; display: inline-block; }
.foot li a:hover { color: var(--ink); }

.lost { min-height: 80vh; display: flex; flex-direction: column; justify-content: flex-end; padding: 120px var(--gutter) 32px; gap: 16px; }

html.js .reveal { opacity: 0; transition: opacity 0.4s var(--ease); }
html.js .reveal.is-in { opacity: 1; }

@media (max-width: 760px) {
  .resume-head, .foot { grid-template-columns: minmax(0, 1fr); row-gap: 16px; }
  .work { grid-template-columns: minmax(0, 1fr); padding-top: 56px; }
  .column { display: contents; }
  .o0 { order: 0; }
  .o1 { order: 1; }
  .o2 { order: 2; }
  .o3 { order: 3; }
  .o4 { order: 4; }
  .o5 { order: 5; }
  .o6 { order: 6; }
  .o7 { order: 7; }
  .o8 { order: 8; }
  .o9 { order: 9; }
  .full .frame { aspect-ratio: 5 / 4; }
  .frame .value { font-size: 38vw; }
  .case-grid { grid-template-columns: minmax(0, 1fr); gap: 40px; padding-top: 40px; }
  .case-lead { padding-top: 40px; }
  .resume-actions, .foot ul { justify-content: flex-start; }
  .entry { grid-template-columns: minmax(0, 1fr); row-gap: 4px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  html.js .reveal { opacity: 1; transition: none; }
}

@media print {
  @page { size: A4; margin: 14mm 15mm; }
  :root { --ground: #fff; --ink: #161616; --line: rgba(0, 0, 0, 0.16); --soft: rgba(0, 0, 0, 0.6); }
  html, body { background: #fff; color: #161616; font-size: 9.5pt; line-height: 1.38; }
  .chrome, .foot, .resume-actions, .skip { display: none; }
  .resume { padding: 0; max-width: none; }
  .resume h1 { font-size: 34pt; }
  .resume section { padding-top: 12pt; }
  .resume section > h2 { padding-bottom: 4pt; font-size: 7.5pt; }
  .disciplines { font-size: 10pt; letter-spacing: -0.01em; gap: 0 12pt; }
  .entry { grid-template-columns: 74pt minmax(0, 1fr); padding: 6pt 0; break-inside: avoid; }
  .entry h3 { font-size: 10pt; line-height: 1.3; font-weight: 400; }
  .entry .years { font-size: 8.5pt; line-height: 1.5; }
  .entry p { padding-top: 2pt; max-width: none; }
}
