* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: Arial, Helvetica, sans-serif;
  background: #ecebe6;
  color: #111;
  overflow-x: hidden;
}

a {
  color: inherit;
  text-decoration: none;
}

img,
video,
iframe {
  max-width: 100%;
}


/* =========================================================
   HEADER
========================================================= */

.site-header {
  position: absolute;

  top: 0;
  left: 0;

  width: 100%;

  z-index: 50;

  padding: 24px 28px;

  display: flex;

  justify-content: space-between;
  align-items: flex-start;

  gap: 20px;

  mix-blend-mode: multiply;
}

.logo {
  font-size: 28px;

  font-weight: 400;

  letter-spacing: -.045em;

  text-transform: uppercase;

  white-space: nowrap;

  flex: 0 1 auto;

  min-width: 0;
}

.nav {
  display: flex;

  justify-content: flex-end;

  align-items: flex-start;

  gap: 20px;

  font-size: 12px;

  font-weight: 400;

  text-transform: uppercase;

  letter-spacing: .025em;

  white-space: nowrap;

  flex: 0 1 auto;

  min-width: 0;
}

.nav a {
  position: relative;
}

.nav a::after {
  content: "";

  position: absolute;

  left: 0;
  bottom: -4px;

  width: 0;
  height: 1px;

  background: #111;

  transition: width .2s ease;
}

.nav a:hover::after {
  width: 100%;
}


/* =========================================================
   CATEGORY LANDING
========================================================= */

.category-landing {
  min-height: 100vh;

  padding:
    150px
    28px
    90px;

  display: flex;

  align-items: center;
}

.category-inner {
  width: 100%;

  max-width: 1450px;

  margin: 0 auto;
}


/* =========================================================
   CATEGORY LINKS
========================================================= */

.category-link {
  position: relative;

  display: grid;

  grid-template-columns:
    45px
    1fr;

  align-items: center;

  gap: 20px;

  padding: 22px 0;

  border-top: 1px solid #111;

  overflow: hidden;

  transition:
    padding .2s ease,
    color .2s ease;
}

.category-link:last-child {
  border-bottom: 1px solid #111;
}


/* =========================================================
   CATEGORY MEDIA
========================================================= */

.category-media {
  position: absolute;

  inset: 0;

  z-index: 0;

  overflow: hidden;

  pointer-events: none;

  background: #111;

  opacity: .35;

  transition:
    opacity .3s ease,
    transform .4s ease;
}

.category-media img,
.category-media video {
  width: 100%;
  height: 100%;

  display: block;

  object-fit: cover;

  filter:
    grayscale(.85)
    contrast(1.15)
    saturate(.6);

  transform: scale(1.03);

  transition:
    transform .5s ease,
    filter .3s ease;
}

.category-media-overlay {
  position: absolute;

  inset: 0;

  background:
    linear-gradient(
      90deg,
      rgba(0,0,0,.65),
      rgba(0,0,0,.25),
      rgba(0,0,0,.65)
    );
}


/* =========================================================
   CATEGORY TEXT
========================================================= */

.category-number,
.category-name {
  position: relative;

  z-index: 2;
}

.category-number {
  font-family: monospace;

  font-size: 11px;

  align-self: start;

  padding-top: 8px;

  opacity: .7;
}

.category-name {
  font-size:
    clamp(
      40px,
      6vw,
      90px
    );

  font-weight: 400;

  line-height: .88;

  letter-spacing: -.055em;

  text-transform: uppercase;
}


/* =========================================================
   CATEGORY HOVER
========================================================= */

.category-link:hover {
  padding-left: 14px;
  padding-right: 14px;

  color: #fff;
}

.category-link:hover .category-media {
  opacity: .9;

  transform: scale(1.01);
}

.category-link:hover .category-media img,
.category-link:hover .category-media video {
  transform: scale(1);

  filter:
    grayscale(.25)
    contrast(1.1)
    saturate(.9);
}

.category-link:hover .category-media-overlay {
  background:
    linear-gradient(
      90deg,
      rgba(0,0,0,.48),
      rgba(0,0,0,.15),
      rgba(0,0,0,.48)
    );
}


/* =========================================================
   GRAIN
========================================================= */

.category-media::after,
.media::after,
.commission-item::after {
  content: "";

  position: absolute;

  inset: 0;

  pointer-events: none;

  opacity: .12;

  background-image:
    repeating-radial-gradient(
      circle at 0 0,
      transparent 0,
      rgba(255,255,255,.35) 1px,
      transparent 2px
    );

  background-size: 4px 4px;

  mix-blend-mode: overlay;
}


/* =========================================================
   DETAIL PAGES
========================================================= */

.detail {
  padding:
    145px
    28px
    100px;
}

.detail-inner {
  max-width: 1350px;

  margin: 0 auto;
}

.back {
  display: inline-block;

  margin-bottom: 55px;

  font-family: monospace;

  font-size: 12px;

  text-transform: uppercase;

  padding-bottom: 3px;

  border-bottom: 1px solid #111;
}

.back:hover {
  opacity: .45;
}


/* =========================================================
   PROJECT TITLE
========================================================= */

.detail-title {
  font-size:
    clamp(
      38px,
      5vw,
      68px
    );

  line-height: .86;

  letter-spacing: -.055em;

  font-weight: 400;

  text-transform: uppercase;

  max-width: 1000px;

  margin-bottom: 55px;
}


/* =========================================================
   PROJECT INTRO
========================================================= */

.detail-intro {
  display: grid;

  grid-template-columns:
    180px
    1fr;

  gap: 50px;

  border-top: 1px solid #111;

  padding-top: 18px;

  margin-bottom: 70px;
}

.label {
  font-family: monospace;

  font-size: 11px;

  text-transform: uppercase;

  letter-spacing: .04em;
}

.description {
  font-size:
    clamp(
      20px,
      2.5vw,
      34px
    );

  line-height: 1;

  letter-spacing: -.035em;

  max-width: 900px;
}


/* =========================================================
   PROJECT HERO
========================================================= */

.project-hero {
  position: relative;

  width: 100%;

  margin-bottom: 12px;

  overflow: hidden;

  background: #111;

  aspect-ratio: 16 / 9;
}

.project-hero img,
.project-hero video {
  width: 100%;
  height: 100%;

  display: block;

  object-fit: cover;

  filter:
    contrast(1.05)
    saturate(.88);
}

.project-hero iframe {
  position: absolute;

  inset: 0;

  width: 100%;
  height: 100%;

  border: 0;

  display: block;
}

.project-hero::after {
  content: "";

  position: absolute;

  inset: 0;

  pointer-events: none;

  background:
    linear-gradient(
      to bottom,
      rgba(0,0,0,.04),
      transparent 60%,
      rgba(0,0,0,.12)
    );
}


/* =========================================================
   PROJECT IMAGE GRID
========================================================= */

.afrang-grid {
  display: grid;

  grid-template-columns:
    repeat(3, 1fr);

  width: 100%;

  gap: 12px;

  margin-top: 12px;
}

.afrang-image {
  position: relative;

  width: 100%;

  aspect-ratio: 16 / 10;

  overflow: hidden;

  background: #111;

  cursor: zoom-in;
}

.afrang-image img {
  width: 100%;
  height: 100%;

  display: block;

  object-fit: cover;

  filter:
    contrast(1.05)
    saturate(.9);

  transition:
    transform .35s ease,
    filter .3s ease;
}

.afrang-image:hover img {
  transform: scale(1.035);

  filter:
    contrast(1.1)
    saturate(.75);
}


/* =========================================================
   LIGHTBOX
========================================================= */

.afrang-lightbox {
  position: fixed;

  inset: 0;

  z-index: 100;

  display: flex;

  align-items: center;

  justify-content: center;

  padding: 20px;

  background:
    rgba(15,15,15,.94);

  opacity: 0;

  visibility: hidden;

  cursor: pointer;

  transition:
    opacity .25s ease,
    visibility .25s ease;
}

.afrang-lightbox.active {
  opacity: 1;

  visibility: visible;
}

.afrang-lightbox img {
  max-width: 95vw;

  max-height: 92vh;

  width: auto;
  height: auto;

  display: block;

  object-fit: contain;

  box-shadow:
    0 25px 100px
    rgba(0,0,0,.55);

  transform: scale(.96);

  transition:
    transform .3s ease;

  cursor: pointer;
}

.afrang-lightbox.active img {
  transform: scale(1);
}


/* =========================================================
   LIGHTBOX COUNTER
========================================================= */

.lightbox-counter {
  position: absolute;

  top: 25px;
  left: 28px;

  color: #ecebe6;

  font-family: monospace;

  font-size: 11px;

  letter-spacing: .04em;

  text-transform: uppercase;

  pointer-events: none;
}


/* =========================================================
   GENERAL GALLERY
========================================================= */

.gallery {
  display: grid;

  grid-template-columns:
    repeat(2, 1fr);

  gap: 24px 18px;
}

.gallery figure {
  margin: 0;
}

.gallery img {
  width: 100%;

  display: block;

  aspect-ratio: 4 / 3;

  object-fit: cover;

  filter:
    contrast(1.05)
    saturate(.9);
}

.gallery .wide {
  grid-column: 1 / -1;

  aspect-ratio: 16 / 9;
}

.gallery figcaption {
  font-family: monospace;

  font-size: 10px;

  margin-top: 8px;

  text-transform: uppercase;

  opacity: .55;
}


/* =========================================================
   COMMISSIONS GRID
========================================================= */

.commission-grid {
  display: grid;

  grid-template-columns:
    repeat(3, 1fr);

  gap: 22px 18px;

  width: 100%;
}

.commission-item {
  position: relative;

  display: block;

  aspect-ratio: 4 / 3;

  overflow: hidden;

  cursor: pointer;

  background: #111;
}

.commission-item img,
.commission-item video {
  width: 100%;
  height: 100%;

  display: block;

  object-fit: cover;

  filter:
    contrast(1.08)
    saturate(.82);

  transition:
    transform .35s ease,
    filter .35s ease;
}

.commission-item:hover img,
.commission-item:hover video {
  transform: scale(1.035);

  filter:
    contrast(1.15)
    saturate(.7);
}

.commission-overlay {
  position: absolute;

  inset: 0;

  display: flex;

  align-items: flex-end;

  justify-content: flex-start;

  padding: 18px;

  opacity: 0;

  transition:
    opacity .15s ease;

  pointer-events: none;
}

.commission-item:hover .commission-overlay {
  opacity: 1;
}

.commission-title {
  color: #111;

  background: #ecebe6;

  padding: 8px 11px 7px;

  font-size: 16px;

  line-height: .95;

  letter-spacing: -.035em;

  font-weight: 400;

  text-transform: uppercase;
}


/* =========================================================
   YOUTUBE
========================================================= */

.project-video {
  width: 100%;

  margin-top: 15px;
}

.video-wrapper {
  position: relative;

  width: 100%;

  aspect-ratio: 16 / 9;

  overflow: hidden;

  background: #111;
}

.video-wrapper iframe {
  position: absolute;

  inset: 0;

  width: 100%;
  height: 100%;

  border: 0;
}


/* =========================================================
   COCO MARIA
========================================================= */

.coco-canvas-grid {
  display: grid;

  grid-template-columns:
    repeat(3, 1fr);

  gap: 18px;

  margin-top: 90px;

  align-items: start;
}

.coco-canvas {
  width: 100%;

  aspect-ratio: 9 / 16;

  overflow: hidden;

  background: #111;

  position: relative;
}

.coco-canvas:nth-child(2) {
  margin-top: 35px;
}

.coco-canvas:nth-child(3) {
  margin-top: 70px;
}

.coco-canvas video {
  width: 100%;
  height: 100%;

  display: block;

  object-fit: cover;

  filter:
    contrast(1.08)
    saturate(.85);
}


/* =========================================================
   DETAIL FOOTER
========================================================= */

.detail-footer {
  margin-top: 110px;

  border-top: 1px solid #111;

  padding-top: 20px;

  display: flex;

  justify-content: space-between;

  font-family: monospace;

  font-size: 11px;

  text-transform: uppercase;
}


/* =========================================================
   CONTACT
========================================================= */

.contact {
  padding:
    140px
    28px;

  border-top: 1px solid #111;
}

.section-inner {
  max-width: 1350px;

  margin: 0 auto;
}

.contact-grid {
  display: grid;

  grid-template-columns:
    1fr
    2fr;

  gap: 50px;

  margin-top: 50px;
}

.contact-links {
  font-size:
    clamp(
      34px,
      4.5vw,
      65px
    );

  line-height: .92;

  letter-spacing: -.055em;

  font-weight: 400;

  text-transform: uppercase;
}

.contact-links a {
  display: block;

  width: fit-content;

  border-bottom: 1px solid #111;

  margin-bottom: 18px;

  padding-bottom: 6px;
}

.contact-links a:hover {
  opacity: .45;
}


/* =========================================================
   FOOTER
========================================================= */

footer {
  padding:
    25px
    28px;

  display: flex;

  justify-content: space-between;

  font-family: monospace;

  font-size: 10px;

  text-transform: uppercase;

  border-top: 1px solid #111;
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 800px) {

  /* -------------------------------------------------------
     HEADER
  ------------------------------------------------------- */

  .site-header {
    padding:
      18px
      20px;

    gap: 12px;

    align-items: flex-start;
  }

  .logo {
    font-size: 21px;

    letter-spacing: -.04em;

    min-width: 0;
  }

  .nav {
    gap: 10px;

    font-size: 8px;

    letter-spacing: .015em;

    min-width: 0;

    flex-shrink: 1;
  }

  .nav a {
    white-space: nowrap;
  }


  /* -------------------------------------------------------
     CATEGORY
  ------------------------------------------------------- */

  .category-landing {
    padding:
      125px
      20px
      65px;
  }

  .category-inner {
    width: 100%;
  }

  .category-link {
    grid-template-columns:
      30px
      1fr;

    gap: 8px;

    padding: 18px 0;

    min-height: 130px;
  }

  .category-link:hover {
    padding-left: 6px;

    padding-right: 6px;
  }

  .category-name {
    font-size:
      clamp(
        34px,
        9vw,
        56px
      );

    line-height: .9;
  }

  .category-number {
    font-size: 10px;
  }

  .category-media {
    opacity: .65;
  }

  .category-media img,
  .category-media video {
    filter:
      grayscale(.45)
      contrast(1.1)
      saturate(.7);
  }

  .category-media-overlay {
    background:
      linear-gradient(
        90deg,
        rgba(0,0,0,.58),
        rgba(0,0,0,.28),
        rgba(0,0,0,.58)
      );
  }

  .category-link {
    color: #fff;
  }


  /* -------------------------------------------------------
     DETAIL
  ------------------------------------------------------- */

  .detail {
    padding:
      100px
      20px
      70px;
  }

  .detail-title {
    font-size:
      clamp(
        34px,
        11vw,
        58px
      );

    margin-bottom: 42px;
  }

  .detail-intro {
    grid-template-columns: 1fr;

    gap: 22px;

    margin-bottom: 55px;
  }

  .description {
    font-size:
      clamp(
        20px,
        6vw,
        32px
      );
  }


  /* -------------------------------------------------------
     PROJECT HERO
  ------------------------------------------------------- */

  .project-hero {
    aspect-ratio: 4 / 3;

    margin-bottom: 10px;
  }


  /* -------------------------------------------------------
     GALLERY
  ------------------------------------------------------- */

  .gallery {
    grid-template-columns: 1fr;

    gap: 25px;
  }

  .gallery .wide {
    grid-column: auto;
  }


  /* -------------------------------------------------------
     PROJECT IMAGE GRID
  ------------------------------------------------------- */

  .afrang-grid {
    grid-template-columns: 1fr;

    gap: 10px;
  }

  .afrang-image {
    aspect-ratio: 16 / 10;
  }


  /* -------------------------------------------------------
     MOBILE LIGHTBOX
  ------------------------------------------------------- */

  .afrang-lightbox {
    padding: 0;

    width: 100vw;

    height: 100vh;

    height: 100dvh;

    background:
      rgba(15,15,15,.96);
  }

  .afrang-lightbox img {
    width: 100vw;

    max-width: 100vw;

    height: 100vh;

    height: 100dvh;

    max-height: 100vh;

    max-height: 100dvh;

    object-fit: contain;

    box-shadow: none;
  }

  .lightbox-counter {
    top: 18px;

    left: 20px;

    font-size: 10px;
  }


  /* -------------------------------------------------------
     COMMISSIONS
  ------------------------------------------------------- */

  .commission-grid {
    grid-template-columns: 1fr;

    gap: 14px;
  }

  .commission-overlay {
    opacity: 1;

    padding: 13px;
  }

  .commission-title {
    font-size: 15px;
  }


  /* -------------------------------------------------------
     COCO MARIA
  ------------------------------------------------------- */

  .coco-canvas-grid {
    grid-template-columns: 1fr;

    gap: 18px;

    margin-top: 60px;
  }

  .coco-canvas:nth-child(2),
  .coco-canvas:nth-child(3) {
    margin-top: 0;
  }


  /* -------------------------------------------------------
     CONTACT
  ------------------------------------------------------- */

  .contact {
    padding:
      80px
      20px;
  }

  .contact-grid {
    grid-template-columns: 1fr;

    gap: 35px;

    margin-top: 40px;
  }

  .contact-links {
    font-size:
      clamp(
        32px,
        9vw,
        55px
      );
  }


  /* -------------------------------------------------------
     FOOTER
  ------------------------------------------------------- */

  footer {
    padding:
      20px;

    gap: 12px;

    flex-wrap: wrap;
  }
}


/* =========================================================
   SMALL MOBILE
========================================================= */

@media (max-width: 420px) {

  .site-header {
    padding-left: 16px;
    padding-right: 16px;

    gap: 8px;
  }

  .logo {
    font-size: 18px;
  }

  .nav {
    gap: 7px;

    font-size: 7px;

    letter-spacing: 0;
  }

  .category-landing {
    padding-left: 16px;
    padding-right: 16px;
  }

  .detail {
    padding-left: 16px;
    padding-right: 16px;
  }

  .contact {
    padding-left: 16px;
    padding-right: 16px;
  }

  footer {
    padding-left: 16px;
    padding-right: 16px;
  }
}
