@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=Jost:wght@400;500;600;700&display=swap');

:root {
  --carbon: #121b22;
  --carbon-2: #1a2730;
  --chalk: #f3f4f0;
  --white: #ffffff;
  --cyan: #009dc4;
  --cyan-deep: #08778f;
  --lime: #9fd447;
  --muted: #68747a;
  --line: rgba(18, 27, 34, .22);
  --line-light: rgba(255, 255, 255, .22);
  --max: 1300px;
  --display: "Barlow Condensed", "Arial Narrow", sans-serif;
  --sans: "Jost", Futura, "Century Gothic", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--carbon);
  background: var(--chalk);
  font-family: var(--sans);
  font-size: 17px;
  line-height: 1.55;
  font-synthesis: none;
  -webkit-font-smoothing: antialiased;
}
img, video { display: block; max-width: 100%; }
a { color: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
h1, h2, h3, p { text-wrap: pretty; }
:focus-visible { outline: 3px solid var(--lime); outline-offset: 4px; }

.shell { width: min(calc(100% - 56px), var(--max)); margin-inline: auto; }
.skip-link { position: fixed; left: 20px; top: -70px; z-index: 99; padding: 10px 15px; background: var(--lime); color: var(--carbon); font-weight: 700; }
.skip-link:focus { top: 20px; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  border-bottom: 1px solid var(--line-light);
  background: rgba(18, 27, 34, .95);
  color: var(--chalk);
  backdrop-filter: blur(12px);
}
.nav { min-height: 66px; display: flex; align-items: center; justify-content: space-between; gap: 26px; }
.brand { display: inline-flex; align-items: center; gap: 12px; color: white; font-size: 14px; font-weight: 600; letter-spacing: .06em; text-decoration: none; text-transform: uppercase; }
.nav-links { display: flex; align-items: center; gap: clamp(18px, 3vw, 42px); font-family: var(--display); font-size: 14px; font-weight: 600; letter-spacing: .105em; text-transform: uppercase; }
.nav-links a { color: rgba(255,255,255,.76); text-decoration: none; border-bottom: 2px solid transparent; }
.nav-links a:hover { color: white; border-bottom-color: var(--cyan); }
.nav-links .contact-link { color: white; border-bottom-color: var(--lime); padding: 3px 0; }

.hero {
  position: relative;
  min-height: min(790px, calc(100vh - 66px));
  display: grid;
  align-items: end;
  overflow: hidden;
  background: var(--carbon);
  color: var(--chalk);
}
.hero::after { content: ""; position: absolute; width: min(26vw, 360px); aspect-ratio: 1; right: 9%; top: 23%; border: 2px solid rgba(159,212,71,.32); transform: rotate(45deg); }
.hero-grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.58fr) minmax(270px, .42fr); gap: clamp(45px, 7vw, 110px); padding: clamp(115px, 15vw, 200px) 0 70px; align-items: end; }
.eyebrow, .section-label { margin: 0 0 22px; color: var(--cyan); font-family: var(--display); font-size: 13px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.hero h1, .case-hero h1, .archive-hero h1, .archive-detail-hero h1 {
  max-width: 1050px;
  margin: 0;
  font-family: var(--display);
  font-size: clamp(64px, 9.1vw, 136px);
  font-weight: 600;
  line-height: .82;
  letter-spacing: -.025em;
  text-transform: uppercase;
}
.hero h1 span { color: var(--cyan); }
.hero-aside { max-width: 390px; padding-bottom: 6px; }
.hero-aside p { margin: 0 0 32px; color: rgba(255,255,255,.68); font-size: clamp(18px, 1.55vw, 22px); line-height: 1.48; }
.text-link { display: inline-flex; align-items: center; gap: 11px; padding-bottom: 4px; border-bottom: 2px solid currentColor; font-family: var(--display); font-size: 15px; font-weight: 600; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }
.text-link::after { content: "↘"; color: var(--lime); font-size: 20px; line-height: 1; transition: transform .2s ease; }
.text-link:hover::after { transform: translate(3px, 3px); }
.hero-meta { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: 0; padding: 18px 0 23px; border-top: 1px solid var(--line-light); }
.tag { display: inline-flex; align-items: center; color: rgba(255,255,255,.61); font-family: var(--display); font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.tag:not(:last-child)::after { content: "/"; margin: 0 16px; color: var(--lime); }

.section { padding: clamp(82px, 10vw, 145px) 0; }
.section-head { display: grid; grid-template-columns: .62fr 1.38fr; gap: 60px; margin-bottom: 64px; align-items: start; border-top: 1px solid var(--carbon); padding-top: 18px; }
.section-label { margin-top: 5px; color: var(--muted); }
.section-head h2, .statement h2, .capabilities h2, .case-copy h2, .gallery-head h2 {
  margin: 0;
  max-width: 920px;
  font-family: var(--display);
  font-size: clamp(46px, 6vw, 82px);
  font-weight: 600;
  line-height: .92;
  letter-spacing: -.015em;
  text-transform: uppercase;
}

.featured-card { display: grid; grid-template-columns: 1fr; overflow: hidden; background: var(--carbon); color: white; text-decoration: none; border-top: 6px solid var(--cyan); }
.featured-media { position: relative; width: 100%; aspect-ratio: 48 / 25; overflow: hidden; background: #050809; }
.featured-media video { width: 100%; height: 100%; object-fit: contain; }
.featured-copy { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 60px; padding: clamp(31px, 4vw, 55px); border-top: 1px solid var(--line-light); }
.number { color: var(--cyan); font-family: var(--display); font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.featured-copy h3 { margin: 3px 0 16px; font-family: var(--display); font-size: clamp(48px, 5.6vw, 78px); font-weight: 600; line-height: .9; letter-spacing: -.015em; text-transform: uppercase; }
.featured-copy p { color: rgba(255,255,255,.65); margin: 0; max-width: 570px; }
.project-arrow { align-self: end; color: var(--lime); font-size: 50px; line-height: .8; transition: transform .25s ease; }
.featured-card:hover .project-arrow { transform: translate(6px, 6px); }

.archive-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 36px 30px; margin-top: 30px; }
.archive-note { margin: 50px 0 0; }
.archive-card { --project: var(--cyan); --mat: #dcecef; display: block; border-top: 6px solid var(--project); background: transparent; text-decoration: none; }
.archive-card:nth-child(1) { --project: #22b891; --mat: #dfeee9; }
.archive-card:nth-child(2) { --project: #f1793d; --mat: #f2e4da; }
.archive-card:nth-child(3) { --project: #f04b25; --mat: #f2ded9; }
.archive-card:nth-child(4) { --project: #2d7f95; --mat: #dce8ea; }
.archive-card:nth-child(5) { --project: #009cdb; --mat: #e0f0f5; }
.archive-card:nth-child(6) { --project: #612b89; --mat: #e7ddec; }
.archive-image { display: grid; place-items: center; aspect-ratio: 16 / 11; overflow: hidden; padding: clamp(12px, 2vw, 24px); background: var(--mat); }
.archive-image img { width: 100%; height: 100%; object-fit: contain; object-position: center; transition: transform .4s cubic-bezier(.2,.7,.2,1); }
.archive-card:hover .archive-image img { transform: scale(1.016); }
.archive-copy { display: grid; grid-template-columns: 1fr auto; gap: 20px; align-items: end; padding: 17px 0 10px; }
.archive-copy h3 { margin: 1px 0 0; font-family: var(--display); font-size: clamp(34px, 3.7vw, 52px); font-weight: 600; line-height: .92; letter-spacing: -.01em; text-transform: uppercase; }
.archive-copy p { margin: 0; color: var(--muted); font-family: var(--display); font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.archive-copy > span { color: var(--project); font-size: 22px; }

.dark-section { position: relative; overflow: hidden; background: var(--carbon); color: white; }
.dark-section::before { content: ""; position: absolute; right: -90px; bottom: -180px; width: 430px; height: 430px; border: 2px solid rgba(0,157,196,.18); transform: rotate(45deg); }
.capabilities { position: relative; display: grid; grid-template-columns: .72fr 1.28fr; gap: clamp(55px, 8vw, 120px); }
.capabilities .eyebrow { color: var(--cyan); }
.cap-list { border-top: 1px solid var(--line-light); }
.cap-item { display: grid; grid-template-columns: 52px 1fr; gap: 20px; border-bottom: 1px solid var(--line-light); padding: 25px 0 27px; }
.cap-item > span { color: var(--lime); font-family: var(--display); font-size: 13px; font-weight: 600; letter-spacing: .12em; }
.cap-item h3 { margin: 0 0 6px; font-family: var(--display); font-size: 31px; font-weight: 600; line-height: 1; text-transform: uppercase; }
.cap-item p { margin: 0; max-width: 560px; color: rgba(255,255,255,.58); font-size: 16px; }

.statement { display: grid; grid-template-columns: .62fr 1.38fr; gap: 60px; align-items: start; border-top: 1px solid var(--carbon); padding-top: 18px; }
.statement-copy { max-width: 835px; }
.statement-copy p { margin: 28px 0 0; max-width: 720px; color: #49565d; font-size: clamp(18px, 2vw, 23px); }

.contact { position: relative; overflow: hidden; background: var(--cyan); color: var(--carbon); }
.contact::after { content: ""; position: absolute; width: 260px; height: 260px; right: 3%; top: -80px; border: 26px solid rgba(255,255,255,.16); transform: rotate(45deg); }
.contact .section-label { color: rgba(18,27,34,.62); }
.contact-grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 50px; }
.contact h2 { max-width: 1000px; margin: 0; font-family: var(--display); font-size: clamp(56px, 8vw, 114px); font-weight: 600; line-height: .85; letter-spacing: -.02em; text-transform: uppercase; }
.mail-link { align-self: end; display: inline-block; padding: 8px 0; border-bottom: 3px solid var(--lime); color: var(--carbon); font-family: var(--display); font-size: 17px; font-weight: 700; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }
.mail-link:hover { color: white; }

.site-footer { padding: 24px 0; border-top: 1px solid var(--line-light); background: var(--carbon); color: rgba(255,255,255,.58); font-family: var(--display); font-size: 12px; letter-spacing: .1em; text-transform: uppercase; }
.footer-row { display: flex; justify-content: space-between; gap: 25px; flex-wrap: wrap; }

/* Case studies */
.case-hero { position: relative; overflow: hidden; background: var(--carbon); color: white; padding: clamp(100px, 12vw, 170px) 0 76px; border-bottom: 6px solid var(--cyan); }
.case-hero::after { content: ""; position: absolute; width: 330px; height: 330px; right: -80px; top: 70px; border: 2px solid rgba(159,212,71,.28); transform: rotate(45deg); }
.case-hero > .shell { position: relative; z-index: 1; }
.case-hero h1 { font-size: clamp(64px, 8.5vw, 122px); }
.case-intro { display: grid; grid-template-columns: 1.27fr .73fr; gap: 80px; margin-top: 70px; }
.case-lede { margin: 0; max-width: 850px; color: rgba(255,255,255,.7); font-size: clamp(21px, 2.5vw, 32px); line-height: 1.38; }
.case-meta { margin: 0; display: grid; grid-template-columns: 1fr; gap: 17px; }
.case-meta div { padding-top: 9px; border-top: 1px solid var(--line-light); }
.case-meta dt { color: var(--cyan); font-family: var(--display); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .15em; }
.case-meta dd { margin: 4px 0 0; font-size: 15px; }

.video-stage { background: var(--carbon-2); padding: clamp(42px, 6vw, 82px) 0 clamp(76px, 9vw, 125px); }
.video-frame { position: relative; aspect-ratio: 48 / 25; overflow: hidden; background: #050809; border-top: 5px solid var(--cyan); }
.video-frame video { width: 100%; height: 100%; object-fit: contain; object-position: center; background: #050809; }
.video-toggle { position: absolute; right: 14px; bottom: 14px; display: inline-flex; align-items: center; gap: 8px; border: 1px solid rgba(255,255,255,.38); padding: 8px 12px; background: rgba(18,27,34,.84); color: white; font-family: var(--display); font-size: 13px; letter-spacing: .07em; text-transform: uppercase; cursor: pointer; }
.media-caption { display: flex; justify-content: space-between; gap: 20px; margin: 13px 0 0; color: rgba(255,255,255,.45); font-family: var(--display); font-size: 12px; letter-spacing: .09em; text-transform: uppercase; }

.case-copy { display: grid; grid-template-columns: .68fr 1.32fr; gap: clamp(55px, 8vw, 110px); }
.prose { max-width: 790px; }
.prose p { margin: 0 0 22px; color: #49565d; font-size: 19px; }
.dark-section .prose p { color: rgba(255,255,255,.67); }
.scope-list { margin: 38px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.scope-list li { display: grid; grid-template-columns: 44px 1fr; border-bottom: 1px solid var(--line); padding: 18px 0; }
.scope-list span { color: var(--cyan-deep); font-family: var(--display); font-size: 13px; font-weight: 700; letter-spacing: .1em; }

.gallery-section { padding-top: 0; }
.gallery-head { display: flex; justify-content: space-between; gap: 30px; align-items: end; margin-bottom: 34px; padding-top: 17px; border-top: 1px solid var(--carbon); }
.gallery-head p { max-width: 430px; margin: 0; color: var(--muted); }
.screen-grid { display: grid; grid-template-columns: 1.12fr .88fr; gap: 24px; align-items: start; }
.screen { overflow: hidden; border: 1px solid var(--line); background: #dce6e8; }
.screen-bar { height: 27px; display: flex; gap: 6px; align-items: center; padding-left: 12px; background: var(--carbon); border-bottom: 3px solid var(--cyan); }
.screen-bar i { width: 6px; height: 6px; background: rgba(255,255,255,.5); }
.screen-bar i:last-child { background: var(--lime); }
.screen img { width: 100%; height: auto; aspect-ratio: auto; }
.screen.tall img { height: auto; object-fit: contain; }
.screen-stack { display: grid; gap: 24px; }
.screen-wide { margin-top: 24px; }
.screen-wide img { width: 100%; height: auto; object-fit: contain; }

.next-project { display: block; background: var(--cyan); color: var(--carbon); text-decoration: none; border-top: 6px solid var(--lime); }
.next-row { min-height: 315px; display: flex; justify-content: space-between; align-items: center; gap: 40px; }
.next-row span { font-family: var(--display); font-size: 12px; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; }
.next-row h2 { margin: 9px 0 0; font-family: var(--display); font-size: clamp(52px, 7.5vw, 98px); font-weight: 600; line-height: .88; letter-spacing: -.02em; text-transform: uppercase; }
.next-arrow { font-size: 72px; }

.archive-hero { background: var(--chalk); padding: clamp(100px, 11vw, 155px) 0 78px; border-bottom: 6px solid var(--cyan); }
.archive-hero h1, .archive-detail-hero h1 { font-size: clamp(62px, 8.5vw, 120px); }
.archive-hero p { max-width: 740px; margin: 35px 0 0; color: var(--muted); font-size: 20px; }
.archive-project { padding: 84px 0; border-top: 1px solid var(--line); }
.archive-project-head { display: grid; grid-template-columns: .68fr 1.32fr; gap: 60px; margin-bottom: 38px; }
.archive-project h2 { margin: 0; font-family: var(--display); font-size: clamp(46px, 6vw, 82px); font-weight: 600; letter-spacing: -.015em; line-height: .92; text-transform: uppercase; }
.archive-project-head p { margin: 0; color: var(--muted); max-width: 620px; }
.archive-shots { display: grid; gap: 24px; }
.archive-shots img { width: 100%; border: 1px solid var(--line); background: white; }
.archive-index { padding-top: 55px; }
.archive-detail-hero { background: var(--chalk); padding: clamp(100px, 11vw, 155px) 0 78px; border-bottom: 6px solid var(--cyan); }
.archive-detail-hero p:last-child { max-width: 790px; margin: 35px 0 0; color: var(--muted); font-size: clamp(20px, 2.1vw, 27px); line-height: 1.42; }
.preserved-layout { padding-top: 50px; padding-bottom: clamp(90px, 11vw, 150px); }
.preserved-module { width: min(var(--module-width, 100%), 100%); margin: var(--space-above, 0) auto var(--space-below, 24px); }
.preserved-module img { width: 100%; height: auto; border: 1px solid var(--line); background: white; }
.preserved-module.media-collection { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 18px; align-items: start; }
.preserved-module.media-collection img { height: auto; align-self: start; object-fit: contain; }
.preserved-layout img, .screen img { cursor: zoom-in; }

.image-viewer { width: min(94vw, 1500px); max-width: none; height: min(92vh, 1000px); max-height: none; padding: 0; border: 0; overflow: hidden; background: #050809; color: white; box-shadow: 0 30px 100px rgba(0,0,0,.55); }
.image-viewer::backdrop { background: rgba(5,8,9,.86); backdrop-filter: blur(8px); }
.image-viewer-inner { display: grid; grid-template-rows: minmax(0,1fr) auto; width: 100%; height: 100%; }
.image-viewer-stage { min-height: 0; display: grid; place-items: center; padding: clamp(18px,3vw,42px); overflow: auto; }
.image-viewer img { display: block; width: auto; height: auto; max-width: 100%; max-height: 76vh; object-fit: contain; background: white; }
.image-viewer-bar { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 13px 17px; border-top: 3px solid var(--cyan); background: var(--carbon); }
.image-viewer-caption { color: rgba(255,255,255,.7); font-size: 12px; }
.image-viewer-close { flex: 0 0 auto; border: 1px solid rgba(255,255,255,.35); padding: 7px 11px; background: transparent; color: white; font: inherit; font-size: 12px; cursor: pointer; }
.image-viewer-close:hover { background: var(--lime); color: var(--carbon); }

@media (max-width: 900px) {
  .hero-grid, .section-head, .capabilities, .statement, .case-intro, .case-copy, .archive-project-head { grid-template-columns: 1fr; }
  .hero-grid { gap: 46px; }
  .hero-aside { max-width: 620px; }
  .capabilities, .statement, .case-copy { gap: 48px; }
  .screen-grid { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .shell { width: min(calc(100% - 28px), var(--max)); }
  .nav { min-height: 61px; }
  .nav-links a:not(.contact-link) { display: none; }
  .hero { min-height: auto; }
  .hero::after { width: 52vw; right: -22%; top: 25%; }
  .hero-grid { padding-top: 104px; padding-bottom: 54px; }
  .hero h1 { font-size: clamp(60px, 18vw, 86px); }
  .hero-meta { padding-bottom: 17px; }
  .tag:not(:last-child)::after { margin: 0 10px; }
  .archive-grid { grid-template-columns: 1fr; gap: 36px; }
  .section { padding: 78px 0; }
  .section-head { gap: 27px; margin-bottom: 44px; }
  .featured-copy { grid-template-columns: 1fr; gap: 28px; padding: 27px 22px 30px; }
  .project-arrow { font-size: 40px; }
  .contact-grid { grid-template-columns: 1fr; }
  .mail-link { justify-self: start; margin-top: 5px; }
  .case-hero { padding-top: 95px; }
  .case-intro { margin-top: 50px; gap: 45px; }
  .media-caption, .gallery-head, .next-row { align-items: flex-start; flex-direction: column; }
  .video-toggle { right: 8px; bottom: 8px; }
  .screen-grid, .screen-stack { gap: 14px; }
  .screen-wide { margin-top: 14px; }
  .archive-project { padding: 66px 0; }
  .preserved-module { width: 100%; }
  .preserved-module.media-collection { grid-template-columns: 1fr; }
  .image-viewer { width: calc(100vw - 16px); height: calc(100vh - 16px); }
  .image-viewer-stage { padding: 12px; }
}

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