/* 09 — RÉALISATIONS (pellicule + vignettes) */

.c-works {
  background-color: var(--c-bg-3);
  padding-block-end: 0;
}

/* PELLICULE */

.c-filmstrip {
  position: relative;
  background-color: var(--c-bg-1);
  border-block: var(--line) solid var(--c-border);
}

.c-filmstrip__perfs {
  --perf-step: 26px;

  display: block;
  height: 18px;
  background-color: var(--c-bg-1);
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='24'%3E%3Crect x='6' y='5' width='20' height='14' rx='4' fill='%231A1A1E'/%3E%3C/svg%3E");
  background-repeat: repeat-x;
  background-position: center;
  background-size: var(--perf-step) 100%;
}

.c-filmstrip__perfs:first-child {
  border-block-end: var(--line) solid var(--c-border);
}

.c-filmstrip__perfs:last-child {
  border-block-start: var(--line) solid var(--c-border);
}

/* PISTE */

.c-filmstrip__track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 66%;
  gap: var(--space-4);
  list-style: none;
  margin: 0;
  padding: var(--space-5) var(--gutter);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
}

@supports (mask-image: linear-gradient(#000, #000)) {
  .c-filmstrip__track {
    mask-image: linear-gradient(to right,
        transparent 0,
        #000 var(--gutter),
        #000 calc(100% - var(--gutter)),
        transparent 100%);
  }
}

.c-filmstrip__track::-webkit-scrollbar {
  display: none;
}

.c-work {
  --work-accent: var(--c-accent-1);

  scroll-snap-align: center;
}

.c-work--print {
  --work-accent: var(--c-accent-2);
}

/* VIGNETTE */

.c-work__link {
  display: block;
  height: 100%;
}

.c-work__media {
  position: relative;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background-color: var(--c-bg-3);
  margin-block-end: var(--space-4);
}

.c-work__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--dur-slow) var(--ease-out);
}

.c-work__link:hover .c-work__media img,
.c-work__link:focus-visible .c-work__media img {
  transform: scale(1.04);
}

.c-work__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background-color: var(--work-accent);
  opacity: 0;
  mix-blend-mode: multiply;
  transition: opacity var(--dur-base) var(--ease-out);
}

.c-work__link:hover .c-work__media::after,
.c-work__link:focus-visible .c-work__media::after {
  opacity: 0.35;
}

.c-work__media--empty {
  border: var(--line) dashed var(--c-border-hi);
}

.c-work__meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-4);
  padding-block-end: var(--space-2);
  border-block-end: var(--line) solid var(--c-border);
  margin-block-end: var(--space-3);
}

.c-work__index {
  font-family: var(--ff-mono);
  font-size: var(--fs-xs);
  letter-spacing: var(--ls-wide);
  color: var(--work-accent);
  font-variant-numeric: tabular-nums;
}

.c-work__year {
  font-family: var(--ff-mono);
  font-size: var(--fs-xs);
  letter-spacing: var(--ls-wide);
  color: var(--c-text-dim);
  font-variant-numeric: tabular-nums;
}

.c-work__title {
  font-family: var(--ff-body);
  font-weight: var(--fw-medium);
  font-size: var(--fs-base);
  line-height: 1.3;
  color: var(--c-text);
  margin-block-end: var(--space-1);
  transition: color var(--dur-base) var(--ease-out);
}

.c-work__link:hover .c-work__title,
.c-work__link:focus-visible .c-work__title {
  color: var(--work-accent);
}

.c-work__desc {
  font-family: var(--ff-body);
  font-size: var(--fs-sm);
  line-height: 1.4;
  color: var(--c-text-dim);
}

.c-works__empty {
  padding: var(--space-16) var(--gutter);
  text-align: center;
  color: var(--c-text-dim);
}

/* PALIERS */

@media (min-width: 768px) {
  .c-filmstrip__track {
    grid-auto-columns: 32%;
    gap: var(--space-5);
    padding-block: var(--space-5);
  }
}

@media (min-width: 1200px) {
  .c-filmstrip__perfs {
    --perf-step: 34px;
    height: 24px;
  }

  .c-filmstrip__track {
    grid-auto-flow: row;
    grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
    gap: var(--space-6);
    mask-image: none;
    padding: var(--space-6) var(--gutter);
    overflow-x: visible;
    max-width: calc(var(--container) + var(--gutter) * 2);
    margin-inline: auto;
  }
}

@media (min-width: 1920px) {
  .c-filmstrip__track {
    gap: var(--space-8);
    padding-block: var(--space-8);
  }
}