@font-face {
  font-family: "Suisse Works";
  src: url("../assets/fonts/SuisseWorks-Regular-WebS.woff2") format("woff2"),
    url("../assets/fonts/SuisseWorks-Regular-WebS.woff") format("woff");
  font-weight: 400;
  font-style: normal;
}

@font-face {
  font-family: "TT Norms Pro Mono";
  src: url("../assets/fonts/TT_Norms_Pro_Mono_Regular.woff2") format("woff2"),
    url("../assets/fonts/TT_Norms_Pro_Mono_Regular.woff") format("woff");
  font-weight: 400;
  font-style: normal;
}

@font-face {
  font-family: "A S Therma";
  src: url("../assets/fonts/asthermaparcours-boldcondensed-webfont.woff2") format("woff2"),
    url("../assets/fonts/asthermaparcours-boldcondensed-webfont.woff") format("woff");
  font-weight: 600;
  font-style: normal;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

* {
  margin: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
}

:root {
  --black: rgb(15, 15, 15);
  --white: rgb(250, 250, 250);
  --accent-color: #00ff66;

  --font-norms: "TT Norms Pro Mono", sans-serif;
  --font-therma: "A S Therma", sans-serif;
  --font-suisse: "Suisse Works", serif;

  --header-height: 120px;

  --fs-16: clamp(0.875rem, 0.8rem + 0.16666666666666669vw, 1rem);
  --fs-20: clamp(1rem, 0.95rem + 0.25vw, 1.25rem);
  --fs-24: clamp(1.25rem, 1.2rem + 0.25vw, 1.5rem);
  --fs-28: clamp(1.5rem, 1.45rem + 0.25vw, 1.75rem);
  --fs-30: clamp(1.625rem, 1.575rem + 0.25vw, 1.875rem);
  --fs-32: clamp(1.75rem, 1.7rem + 0.25vw, 2rem);
  --fs-34: clamp(1.875rem, 1.825rem + 0.25vw, 2.125rem);
  --fs-36: clamp(2rem, 1.95rem + 0.25vw, 2.25rem);
  --fs-64: clamp(2.625rem, 2.35rem + 1.375vw, 4rem);
  --fs-104: clamp(4rem, 3.5rem + 2.5vw, 6.5rem);
  --fs-152: clamp(5rem, 4.1rem + 4.5vw, 9.5rem);
}

.page-title {
  font-family: var(--font-therma);
  font-size: var(--fs-152);
  line-height: 0.9em;
  letter-spacing: -7%;
}

.trigger-title {
  font-size: var(--fs-104);
}

.headline,
.basic h2 {
  font-family: var(--font-norms);
  font-size: var(--fs-36);
  line-height: 1.2em;
  letter-spacing: 2%;
  text-decoration: underline;
  text-underline-offset: 0;
  -webkit-text-stroke: 0.028em;
  text-decoration-thickness: 0.115em;
  text-decoration-skip-ink: none;
  text-transform: uppercase;
}

.subhead,
.filter-title,
.filter-button,
.basic h3,
.project-hover {
  font-family: var(--font-norms);
  font-size: var(--fs-28);
  line-height: 1.1em;
  letter-spacing: 3%;
  -webkit-text-stroke: 0.011em;
  text-transform: uppercase;
}

.fa-light,
.examiners,
.name,
.archive h3 {
  font-family: var(--font-norms);
  font-size: var(--fs-20);
  line-height: 1.1em;
  letter-spacing: 7%;
  text-transform: uppercase;
  -webkit-text-stroke: 0.015em;
}

.fa-heavy,
.button,
.degree,
.group-members {
  font-family: var(--font-norms);
  font-size: var(--fs-20);
  line-height: 1.5em;
  letter-spacing: 1.5%;
  -webkit-text-stroke: 0.06em;
  text-transform: uppercase;
}

.nav-link,
.page-logo,
.search-button {
  font-family: var(--font-norms);
  font-size: var(--fs-16);
  line-height: 1em;
  letter-spacing: 7%;
  -webkit-text-stroke: 0.031em;
  text-transform: uppercase;
}

.suisse {
  font-family: var(--font-suisse);
  font-weight: 400;
  letter-spacing: -3%;
  font-size: var(--fs-24);
  line-height: 1.4em;
}

html {
  /* interpolate-size: allow-keywords;
  color-scheme: dark light; */
  text-rendering: optimizeLegibility;
}

body {
  font-family: var(--font-norms);
  min-height: 100vh;
  background-color: var(--white);
  color: var(--black);
}

.dark {
  background-color: var(--black);
  color: var(--white);
}

button {
  cursor: pointer;
}

/* Helper */

.visually-hidden {
  display: none;
}

.no-scroll {
  overflow: hidden;
}

.grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
}

/* #### loader #### */

#loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: var(--white);
  z-index: 1000;
  padding: 0 0 0 0;
  display: none;
}

#loader__icon {
  position: fixed;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  width: 4rem;
  aspect-ratio: 1;
  /* border-radius: 50%; */
  opacity: 1;
  /* fill: var(--white); */
  z-index: 10;
  /* border: 2px solid black; */
  background-color: var(--black);
}

.loader__icon_animation {
  animation: loading 1s ease-in-out alternate infinite;
}

@keyframes loading {
  100% {
    opacity: 0;
  }
}

#loader__content-container {
  overflow-y: scroll;
  overflow-x: clip;
  position: relative;
  background-color: var(--white);
  height: 100%;
  z-index: 1;
}

#loader__content {
  max-width: var(--max-content-width);
  margin: 0 auto;
  padding-top: var(--gap-large);
  padding-inline: var(--page-padding);
  /* background-color: var(--white); */
  opacity: 0;
  transition: opacity 0.5s ease;
}

#loader__content.show {
  opacity: 1;
}

.close-button {
  --bg-color: var(--black);
  position: absolute;
  top: 12px;
  right: 32px;
  width: 44px;
  aspect-ratio: 1;
  border: none;
  background: transparent;
  padding: 0;
  z-index: 10;

  &::before,
  &::after {
    content: "";
    display: block;
    width: 100%;
    height: 7px;
    position: absolute;
    top: 50%;
    left: 50%;
    translate: -50% -50%;
    rotate: 45deg;
    background-color: var(--bg-color);
  }

  &::after {
    rotate: -45deg;
  }
}

/* .close-loader {
  fill: var(--black);
} */

/* Search Overlay */

.search-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background-color: var(--white);
  padding: 3rem;
  z-index: 100;
  text-align: center;
  color: var(--black);

  & .search-wrapper {
    height: 100%;
    width: 100%;
    display: grid;
    place-items: center;
  }

  & form {
    width: 100%;
  }

  & h2 {
    font-size: var(--fs-64);
    text-transform: uppercase;
    text-align: center;
    line-height: 1;
    margin-bottom: 46px;
  }
}

.search-box {
  width: 75%;
  margin: 0 auto;
  position: relative;
  display: flex;
  align-items: stretch;

  & button {
    border: none;
    background: var(--black);
    color: var(--white);
    flex: 1 auto;
    font-size: var(--fs-32);
    padding-inline: 32px;
  }
}

#search {
  display: block;
  width: 100%;
  padding: 16px 32px 8px 16px;
  font-size: var(--fs-32);
  /* text-align: center; */
  color: var(--black);
  border: none;
  border-bottom: 2px solid var(--black);
  outline: none;
  background: transparent;
  margin: 0 auto;
}

.search {
  & .subhead {
    grid-column: 2/7;
    padding-left: 128px;
    text-indent: -128px;
    margin-top: 92px;
  }
}

/* GERNERAL */

img,
picture,
svg,
video {
  display: block;
  width: 100%;
}

a {
  display: inline-block;
  text-decoration: none;
}

ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.button {
  --color: var(--black);
  --bg-color: var(--white);
  padding: 12px 12px;
  border: 0.125em solid var(--color);
  color: var(--color);
  background-color: var(--bg-color);
  white-space: nowrap;

  &:hover {
    --color: var(--white);
    --bg-color: var(--black);
  }

  &.light {
    --color: var(--white);
    --bg-color: var(--black);

    &:hover {
      --color: var(--black);
      --bg-color: var(--white);
    }
  }
}

.page-wrapper {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

.content-area {
  max-width: 1920px;
  margin: 0 auto;
  margin-bottom: 256px;
  padding-inline: 64px;

  & header {
    /* text-align: center; */
    margin: 92px auto 128px auto;
    width: 100%;

    & h1 {
      text-align: center;
      grid-column: 7/-1;
    }

    & .text {
      grid-column: 2/7;
      padding-left: 128px;
      text-indent: -128px;
      margin-top: 92px;
    }
  }
}

/* Navigation */

.page-header {
  width: 100%;
  /* max-width: 1920px; */
  padding-block: 16px;
  padding-inline: 64px;
  position: fixed;
  z-index: 100;
  top: 0;
  mix-blend-mode: difference;
}

.page-nav {
  display: flex;
  gap: 32px;
  justify-content: space-between;
  color: var(--white);
  text-transform: uppercase;
  align-items: center;
  white-space: nowrap;

  & .page-menu,
  & .main-menu {
    display: flex;
    gap: 32px;
  }

  & a,
  & button {
    color: var(--white);
  }

  & .page-menu {
    margin-left: auto;
  }

  & .main-menu a {
    padding: 12px;
    -webkit-text-stroke: 0.031em;
    letter-spacing: 7%;
  }

  & a:hover,
  & button:not(.menu-button):hover,
  & .current-menu-item a {
    text-decoration: underline;
    text-decoration-thickness: 0.125em;
    text-underline-offset: 2%;
    text-decoration-skip-ink: none;
  }
}

.search-button {
  background: none;
  border: none;
  padding: 12px;
}

.page-logo {
  padding: 12px;
}

.close-menu {
  --bg-color: var(--white);
  display: none;
  z-index: 110;
}

.menu-button {
  display: none;
  --translate: 0;
  background: none;
  border: none;
  height: 44px;
  line-height: 1;
  width: 44px;
  text-align: center;

  &::before,
  &::after,
  & span {
    display: inline-block;
    height: 18px;
    width: 7px;
    background-color: var(--white);
  }

  &::before,
  &::after {
    content: "";
    translate: 0 var(--translate);
  }

  &::after {
    translate: 0 calc(var(--translate) * -1);
  }

  & span {
    margin-inline: 3px;
  }

  &:hover {
    --translate: 3px;
  }
}

.search-overlay {
  display: none;
}

/* Page Content */

.page-content {
  flex: 1;
  width: 100%;
}

body:not(.template-home) .page-content {
  padding-top: var(--header-height);
}

/* Home / Frontpage */

.content {
  /* min-height: 100vh; */
  padding: min(15%, 265px) 0;

  &.dark {
    background-color: var(--black);
    color: var(--white);
  }

  &>div {
    max-width: 1920px;
    margin: 0 auto;
    padding-inline: 32px;
  }
}

.pov {
  & .pov-image {
    grid-column: 3/-3;

    & img {
      width: 100%;
      height: 100%;
    }
  }

  & .text {
    grid-column: 6/-3;
    padding-left: 128px;
    text-indent: -96px;
    margin-top: 10%;
  }
}

.visuals {
  & .text {
    grid-column: 7/11;
    margin-bottom: 24px;
  }

  & .marquee {
    grid-column: 4/10;
    overflow: clip;
  }

  & .row {
    --shift: -50%;
    --images: 24;
    display: flex;
    width: calc(100% / 3 * var(--images));
    animation: marquee 48s infinite linear;
  }

  & .slide {
    width: calc(100% / var(--images));
  }

  & .upper {
    /* display: none; */
  }

  & .lower {
    /* display: none; */
    --shift: calc(-50% + 100% / var(--images) * 3);
    /* flex-direction: row-reverse; */
    translate: calc(-100% + 100% / var(--images) * 3) 0;
  }

  & .parcours {
    margin-top: 15%;
    margin-bottom: 10%;
    grid-column: 3/9;
  }

  .links {
    display: flex;
    flex-wrap: wrap;
    justify-content: end;
    gap: 32px;
    grid-column: 3/10;
  }
}

.team {
  /* align-items: center; */

  & .image {
    grid-column: 2/6;
  }

  & .text {
    grid-column: 7/-2;
  }

  & h2 {
    margin-bottom: 15%;
    margin-top: 20%;
    text-align: right;
  }

  & p {
    margin-left: 32px;
  }

  & p+p {
    margin-top: 1em;
  }

  & .links {
    margin-top: 20%;
    text-align: right;
    padding-right: 64px;
  }
}

@keyframes marquee {
  to {
    translate: var(--shift) 0;
  }
}

/* Basic Page */
.basic {
  & h2 {
    margin-bottom: 1em;
  }

  & p+h2,
  & ul+h2 {
    margin-top: 2em;
  }

  & h3 {}

  & ul {
    list-style: disc;
    padding-left: 2rem;
    margin-block: 1em;
  }

  & p,
  & li {
    font-size: var(--fs-20);
    line-height: 1.4em;
  }

  & p+p {
    margin-top: 1em;
  }
}

/* Footer */

.page-footer {
  width: 100%;
  max-width: 1920px;
  padding: 24px 64px;
  /* margin-top: 128px; */
}

.footer-menu {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: space-between;
  color: var(--white);
  mix-blend-mode: difference;
  text-transform: uppercase;
  padding-inline: 10px;

  & a {
    -webkit-text-stroke: 0.031em;
    letter-spacing: 7%;
  }

  & a:hover {
    text-decoration: underline;
    text-underline-offset: 2%;
    text-decoration-skip-ink: none;
    text-decoration-thickness: 0.125em;
  }
}

.language-menu {
  position: fixed;
  bottom: 92px;
  left: 64px;
  padding-inline: 12px;
  translate: 0 50%;
  display: flex;
  gap: 8px;
  text-transform: uppercase;
  font-size: var(--fs-24);
  mix-blend-mode: difference;

  & a,
  & li {
    color: var(--white);
    -webkit-text-stroke: 0.03em;
    letter-spacing: 1.5%;
  }

  & a:hover {
    text-decoration: underline;
    text-underline-offset: 2%;
    text-decoration-skip-ink: none;
    text-decoration-thickness: 0.125em;
  }

  & .active {
    text-decoration: underline;
    text-decoration-thickness: 0.125em;
    text-underline-offset: 2%;
    text-decoration-skip-ink: none;
  }
}

.quick-link {
  font-size: var(--fs-20);
  position: fixed;
  bottom: 92px;
  right: 64px;
  translate: 0 50%;
  background-color: var(--white);
  color: var(--black);
  mix-blend-mode: difference;
  padding: 12px 12px;
  text-transform: uppercase;

  &:hover {
    mix-blend-mode: normal;
    background-color: #00ff66;
  }
}

.background-video {
  height: 100vh;
  position: relative;

  & video {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
}

.trigger-warning {
  position: fixed;
  z-index: 1000;
  inset: 0;
  display: none;
  place-items: center;

  &.visible {
    display: grid;
  }

  & .dialog-box {
    background-color: var(--white);
    border-radius: 24px;
    padding: 64px;
    max-width: 600px;
    display: flex;
    flex-direction: column;
    gap: 24px;
  }

  & p+p {
    margin-top: 1em;
  }

  & .text,
  & .dialog {
    padding-left: 64px;
  }

  & .answer {
    display: flex;
    justify-content: end;
    gap: 24px;
    margin-top: 24px;

    & .button {
      min-width: 10ch;
    }
  }

  &::before {
    content: "";
    display: block;
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.8);
    z-index: -1;
  }
}

#playpause {
  position: absolute;
  display: block;
  left: 50%;
  bottom: 64px;
  width: 44px;
  aspect-ratio: 1;
  background-color: var(--black);
  border: none;
  border-radius: 50%;
  translate: -50% 0;

  &::before,
  &::after {
    content: "";
    display: none;
    position: absolute;
    top: 50%;
    left: 50%;
    translate: -50% -50%;
  }

  &:not(.playing)::before {
    display: block;
    border: 20px solid transparent;
    border-width: 12px 0 12px 16px;
    border-left-color: var(--white);
    translate: -40% -50%;
  }

  &.playing::before,
  &.playing::after {
    display: block;
    width: 5px;
    height: 16px;
    background-color: var(--white);
    translate: calc(-50% - 6px) -50%;
  }

  &.playing::after {
    translate: calc(-50% + 6px) -50%;
  }
}

#catalogue-view {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 32px;

  & button {
    background: none;
    border: none;
    text-transform: uppercase;
    font-size: var(--fs-28);
    letter-spacing: 3%;
    line-height: 1.1em;
    -webkit-text-stroke: 0.011em;
  }

  & [aria-pressed="true"] {
    text-decoration: underline;
    text-underline-offset: 0%;
    text-decoration-skip-ink: none;
    text-decoration-thickness: 0.115em;
  }
}

.catalogue-filter {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 8px 16px;

  & .filter {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }

  & button {
    padding: 12px;
    background: none;
    border: none;

    &:hover,
    &[aria-pressed="true"] {
      text-decoration: underline;
      text-decoration-thickness: 0.115em;
      text-underline-offset: 0%;
      text-decoration-skip-ink: none;
    }
  }
}

.graduates {
  display: grid;
  /* grid-template-columns: repeat(5, 1fr); */
  grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr));
  gap: 64px 4px;
  margin-block: 128px;

  & a {
    width: 100%;
  }

  & .name {
    text-align: center;
    margin-top: 8px;
  }

  & .image {
    position: relative;
    aspect-ratio: 3/4;

    & img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
  }

  & .person {
    mix-blend-mode: darken;
  }

  &.person .project,
  &.project .person {
    display: none;
  }

  & .person-hover {
    position: absolute;
    inset: 0;
    display: none;
  }

  & .project-hover {
    position: absolute;
    inset: 0;
    display: none;
    background: var(--black);
    color: var(--white);
    place-content: center;
    text-transform: uppercase;
  }

  &.person :hover .person-hover {
    display: block;
  }

  &.project :hover .project-hover {
    display: grid;
  }
}

/* Catalogue Entry*/

.entry header {
  display: flex;
  gap: 32px;
  justify-content: space-between;
  align-items: start;
  margin: 0;

  & .examiners p {
    line-height: 1.5em;
  }
}

.above {
  min-height: calc(100vh - var(--header-height));
  grid-template-rows: auto 1fr auto auto 1fr;
  gap: 40px 0;

  & header {
    grid-column: 1/-1;
    grid-row: 1/2;
    padding-inline: 12px;
  }

  & .degree {
    white-space: nowrap;
  }

  & .portrait {
    grid-column: 2/4;
    grid-row: 3/4;
    width: 200px;
    mix-blend-mode: darken;
  }

  & .name {
    grid-column: 7/-1;
    grid-row: 3/5;
    text-align: center;
  }

  & .text {
    place-self: start;
    grid-column: 2/7;
    grid-row: 4/5;
    padding-left: 128px;
    text-indent: -128px;
  }
}

.below {
  margin-bottom: 256px;
  gap: 40px;
  /* grid-template-rows: repeat(10, auto); */

  & .headline {
    text-transform: uppercase;
    margin-bottom: 92px;
  }

  & .subhead {
    font-size: var(--fs-34);
    text-transform: uppercase;
    margin-bottom: 92px;
    text-align: right;
    text-indent: 128px;
  }

  & figure {
    width: 100%;
    padding-bottom: 64px;

    & img {
      width: 100%;
    }
  }

  & .contact {
    & li:not(:last-child) {
      margin-bottom: 48px;
    }

    & a:hover {
      color: var(--accent-color);
    }
  }

  & .gallery-image {
    padding-block: 64px;
  }

  & .portrait {
    grid-column: 1/7;
    grid-row: 1/3;
  }

  & .text {
    grid-column: 8/13;
    grid-row: 2/4;
  }

  & .group-members {
    margin-top: 24px;
    display: flex;
    gap: 1ch;

    & a:hover {
      text-decoration: underline;
      text-decoration-skip-ink: none;
      text-underline-offset: 0;
      text-decoration-thickness: 0.115em;
    }

    & span:not(:first-of-type)::before {
      content: "+ ";
    }
  }

  &.grid_a {
    & .gallery-image-1 {
      grid-column: 2/7;
      grid-row: 3/4;
    }

    & .gallery-image-2 {
      grid-column: 3/12;
      grid-row: 4/5;
    }

    & .gallery-image-3 {
      grid-column: 2/7;
      grid-row: 5/8;
    }

    & .gallery-image-4 {
      grid-column: 9/13;
      grid-row: 6/9;
    }

    & .gallery-image-5 {
      grid-column: 3/8;
      grid-row: 9/11;
    }

    & .contact {
      margin-top: 256px;
      grid-column: 8/13;
      grid-row: 10/11;
    }
  }

  &.grid_b {
    & .gallery-image-1 {
      grid-column: 1/10;
      grid-row: 9/10;
    }

    & .gallery-image-2 {
      grid-column: 7/12;
      grid-row: 4/6;
    }

    & .gallery-image-3 {
      grid-column: 2/7;
      grid-row: 7/8;
    }

    & .gallery-image-4 {
      grid-column: 3/8;
      grid-row: 10/11;
    }

    & .gallery-image-5 {
      grid-column: 1/5;
      grid-row: 3/7;
    }

    & .contact {
      grid-column: 9/13;
      grid-row: 11/12;
    }
  }
}

.next-project {
  text-align: center;
  margin-bottom: 256px;

  & h2 {
    font-size: var(--fs-36);
    text-transform: uppercase;
    margin-bottom: 64px;
  }

  & .name {
    font-size: var(--fs-30);
    text-transform: uppercase;
    line-height: 1.2em;
    letter-spacing: -0.01em;
    margin-block: 16px 64px;
  }

  & div {
    margin-top: 32px;
  }
}

/* BTS */
.bts {
  & .scrollable {
    overflow-x: hidden;
    overflow-y: clip;
  }

  & .controls {
    margin-top: 48px;
    width: 100%;
    position: relative;
    /* display: none; */
    border-bottom: 2px solid var(--black);

    & .prev,
    & .next {
      translate: 0 -50%;
      background-color: var(--white);
      border-radius: 0px;
      border: 2px solid var(--black);
      height: 44px;
      aspect-ratio: 1;
      /* padding-inline: 8px; */
      display: grid;
      place-content: center;
      font-family: var(--font-norms);
      text-transform: uppercase;
      font-size: var(--fs-24);
      line-height: 1;

      &:hover {
        background-color: var(--black);
        color: var(--white);
      }
    }

    & .prev {
      position: absolute;
      left: 0;
      top: 50%;
      display: none;
    }

    & .next {
      position: absolute;
      right: 0;
      top: 50%;
    }

    /* &::after {
      position: absolute;
      bottom: -7px;
      right: 0;
      content: "";
      border: 7px solid transparent;
      border-width: 7px 0 7px 7px;
      border-left-color: var(--black);
    } */
  }

  & .scroller {
    --shift: 0;
    translate: calc(var(--shift) * 1px) 0px;
    transition: translate 0.3s ease;
  }

  & header .text {
    grid-column: 1/7;
    /* margin-top: 64px; */
  }

  & .team {
    margin-block: 128px 265px;

    & .controls {
      display: none;
    }
  }

  & .team ul {
    --gap: 4;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr));
    row-gap: 64px;
    column-gap: calc(var(--gap) * 1px);
    background-color: var(--white);
    translate: 0 0;
  }

  & .team li {
    mix-blend-mode: darken;
  }

  & .name {
    text-align: center;
    margin: 0;
    margin-top: 8px;
  }

  & .description {
    margin-top: 128px;

    & h2 {
      grid-column: 1/6;
      margin-left: auto;
    }

    & .block {
      grid-column: 1/-1;
      margin-block: 128px;
    }

    & .text {
      grid-column: 1/6;
    }

    & .slider {
      --gap: 32;
      grid-column: 7/-1;
      /* background-color: red; */
      overflow-x: clip;
      padding-bottom: 32px;
      /* border-bottom: 2px solid var(--black); */
      position: relative;

      & ul {
        display: flex;
        width: max-content;
        column-gap: calc(var(--gap) * 1px);
        /* translate: 0 0; */
        /* column-gap: 32px; */
      }

      & li,
      & .vimeo {
        height: 560px;

        & img {
          height: 100%;
          width: auto;
        }
      }
    }
  }
}

.visuals-teaser {
  margin-block: 256px;

  gap: 64px;

  & .headline {
    grid-column: 7/-1;
    padding-left: 128px;
    text-indent: -128px;
  }

  & a {
    display: block;
  }

  & .poster {
    grid-column: 5/9;
  }

  & .button {
    grid-column: 5/9;
    margin-left: auto;
  }
}

/* VISUALS */

.visuals .header {
  margin-bottom: 256px;
  gap: 32px;

  & .headline {
    grid-column: 9/-1;
    margin: 0;
    margin-bottom: 64px;
    grid-row: 1/2;
    text-align: right;
  }

  & .text-content {
    grid-column: 9/-1;
    grid-row: 2/3;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
  }

  & .slider {
    grid-column: 1/9;
    grid-row: 2/3;

    & ul {
      display: grid;
      gap: 32px;
      grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
    }

    & li {
      width: 100%;
    }
  }
}

.visual-gallery {
  /* column-count: 4; */
  column-width: 280px;
  column-gap: 36px;

  & .visual {
    padding-block: 36px;
  }

  & a {
    display: block;
  }

  & img {
    max-width: auto;
    width: 100%;
  }
}

/* ARCHIV */
.archive-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(400px, 100%), 1fr));

  gap: 64px 4px;
  text-align: center;

  & a {
    display: block;
    filter: grayscale(1);

    &:hover {
      filter: grayscale(0);
    }
  }

  & figure {
    width: 100%;
    aspect-ratio: 1/1.25;

    & img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
  }

  & h3 {
    margin-block: 12px;
  }
}

/* SPONSORS */

.premium {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr));
  gap: 32px 64px;
  margin-bottom: 128px;
}

.standard {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(130px, 100%), 1fr));
  gap: 32px;
}

.sponsors a:hover img {
  /* scale: 1.2; */
  mix-blend-mode: difference;
}

/* PRIVACY */
.privacywire {
  text-align: center;
}

.privacywire-header {
  font-family: var(--font-norms);
  font-size: var(--fs-28);
  line-height: 1.1em;
  letter-spacing: 3%;
  -webkit-text-stroke: 0.011em;
  text-transform: uppercase;
  margin-block: 32px;
}

.privacywire-body {
  font-family: var(--font-suisse);
  font-weight: 400;
  letter-spacing: -3%;
  font-size: var(--fs-24);
  line-height: 1.4em;
  max-width: 70ch;
  margin-inline: auto;
}

.privacywire-buttons {
  margin-block: 32px;

  & button {
    font-family: var(--font-norms);
    font-size: var(--fs-20);
    line-height: 1.5em;
    letter-spacing: 1.5%;
    -webkit-text-stroke: 0.06em;
    text-transform: uppercase;

    --color: var(--black);
    --bg-color: var(--white);
    padding: 12px 12px;
    border: 0.125em solid var(--color);
    color: var(--color);
    background-color: var(--bg-color);
    white-space: nowrap;

    &:hover {
      --color: var(--white);
      --bg-color: var(--black);
    }
  }
}

/* WORDS */

.words {
  & .above {
    min-height: auto;
    margin-block: 128px;
  }

  & .below {
    grid-template-rows: auto auto auto;
  }
}

.vimeo {
  --ratio: 16/9;
  aspect-ratio: var(--ratio);
  position: relative;

  & iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
}