@layer settings {
  html, body, *, *::before, *::after {
    cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='%236ab0d4'/%3E%3C/svg%3E") 8 8, auto !important;
  }
}

@layer settings {
  *, ::after, ::before {
    box-sizing: border-box;
    padding: 0;
    margin: 0;
    background: 0 0;
    text-decoration: none;
    outline: 0;
    font-family: inherit;
    font-size: inherit;
    line-height: inherit;
    font-weight: inherit;
    color: inherit;
    touch-action: manipulation;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: "onum", "kern", "liga", "clig", "calt";
  }
}

@layer settings {
  :root {
    --c-bg: hsl(0, 0%, 100%);
    --c-text: hsl(0, 0%, 0%);
    --f-family: "Inter UI", Arial, Helvetica, system-ui, sans-serif;
    --f-size: 15px;
    --f-height: 22px;
    --f-weight: 400;
    font-size: var(--f-height);
    font-family: var(--f-family);
    font-weight: var(--f-weight);
    background: var(--c-bg);
    color: var(--c-text);
    scroll-behavior: none;
  }
}

@layer settings {
  @media (max-width: 500px) {
    :root {
      --f-size: 14px;
      --f-height: 20px;
    }
  }
}

@layer settings {
  body {
    font-size: var(--f-size);
    line-height: var(--f-height);
    text-transform: uppercase;
    transition: background 150ms, color 150ms;
    scroll-behavior: none;
    padding: 20vh 0;
  }
}

@layer settings {
  body.dark-mode { overflow: hidden; }
  body { overflow-y: auto; overflow-x: hidden; }
}

@layer header {
  .header {
    padding: 1rem 1.25rem;
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    width: 100%;
    z-index: 5000;
    background: rgba(255, 255, 255, 0.5);
    border-bottom: 1px solid rgba(220, 220, 220, 0.5);
    backdrop-filter: blur(5px);
  }
  .header-inner {
    display: grid;
    width: 100%;
    grid-auto-columns: auto auto;
    justify-content: space-between;
    grid-template-areas: "info menu";
  }
}

@layer header {
  .header-info { grid-area: info; }
  .menu {
    grid-area: menu;
    display: flex;
    flex-direction: column;
    align-items: end;
  }
}

@layer header {
  @media (min-width: 700px) {
    .menu {
      grid-area: menu;
      align-items: flex-start;
      flex-direction: row;
    }
    .menu-item { margin-left: 2.5rem; }
  }
}

@layer header {
  @media (min-width: 1000px) {
    .menu-item { margin-left: 5rem; }
  }
}

@layer header {
  :is(.menu-item, .header-email, .header-title):hover { color: #696969; }
  .menu-item-current { color: #6ab0d4; }
}

@layer flickity {
  .flickity-enabled { position: relative; }
  .flickity-enabled:focus { outline: 0; }
  .flickity-viewport { overflow: hidden; position: relative; height: 100%; }
  .flickity-slider { position: absolute; width: 100%; height: 100%; }
  .flickity-enabled.is-draggable {
    -webkit-tap-highlight-color: transparent;
    user-select: none;
  }
  .flickity-enabled.is-draggable .flickity-viewport { cursor: grab; }
  .flickity-enabled.is-draggable .flickity-viewport.is-pointer-down { cursor: grabbing; }
  .flickity-button { position: absolute; border: 0; }
  .flickity-button:hover { cursor: pointer; }
  .flickity-button:focus { outline: 0; box-shadow: 0 0 0 5px #19f; }
  .flickity-button:active { opacity: 0.6; }
  .flickity-button:disabled { opacity: 0.3; cursor: auto; pointer-events: none; }
  .flickity-button-icon { fill: currentColor; }
  .flickity-prev-next-button { top: 0; bottom: 0; width: 4rem; height: 100%; }
  .flickity-prev-next-button.previous { left: 0; }
  .flickity-prev-next-button.next { right: 0; }
  .flickity-page-dots {
    position: absolute;
    width: 100%;
    bottom: -25px;
    padding: 0;
    margin: 0;
    list-style: none;
    text-align: center;
    line-height: 1;
  }
  .flickity-page-dots .dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    margin: 0 8px;
    background: #333;
    border-radius: 50%;
    opacity: 0.25;
    cursor: pointer;
  }
  .flickity-page-dots .dot.is-selected { opacity: 1; }
}

@layer project {
  .project {
    width: 100%;
    scroll-snap-align: center;
    margin-bottom: 4rem;
    pointer-events: none;
    max-height: 60vh;
  }
  .project-active { pointer-events: all; }
  .project:last-child { margin-bottom: 0; }

  .picture { display: flex; margin: 0 0.5px; transition: opacity 200ms; }
  .picture-content { margin: auto; }

  .project-mobile {
    position: absolute;
    top: 0; right: 0; left: 0; bottom: 0;
    width: 100%; height: 100%;
    z-index: 15;
    border: 0;
    display: none;
  }
}

@layer project {
  @media (hover: none) {
    .project-mobile { display: block; }
  }
}

@layer project {
  .project-image {
    display: block;
    z-index: 10;
    cursor: pointer;
    transition: filter 200ms, opacity 200ms;
    filter: saturate(20%);
    opacity: 0;
    position: static;
    max-width: 90vw;
    max-height: 60vh;
  }
  .project-image.flickity-lazyloaded { opacity: 0.9; }
  .project-active .project-caption-holder,
  .project-active .project-image.flickity-lazyloaded { opacity: 1; }
  .project-active .is-selected .project-image,
  .project-active .project-image:hover { filter: saturate(100%); }

  .project-caption-holder {
    z-index: 0;
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 0.5rem calc(5vw + 1px) 0;
    transform: translateY(100%);
    transition: opacity 200ms;
    opacity: 0;
  }
  .project-caption {
    display: flex;
    justify-content: center;
    margin: 0 auto;
    gap: 0 5vw;
  }
  .project-link { justify-self: end; text-align: right; }
}

@layer project {
  @media (max-width: 600px) {
    .project-caption { flex-direction: column; }
    .project-link { justify-self: start; text-align: left; }
  }
}

@layer project {
  .project-client { font-weight: 700; }

  .videos {
    position: fixed;
    top: 0; right: 0; bottom: 0; left: 0;
    z-index: 9999;
    display: grid;
    grid-template-rows: 4rem minmax(0, 1fr) 4rem;
    grid-template-areas: "header" "content" "footer";
    color: #fff;
    background: #111;
    opacity: 0;
    pointer-events: none;
    transition: opacity 200ms;
  }
  .dark-mode .videos { pointer-events: all; opacity: 1; }

  .videos-footer, .videos-header {
    grid-area: header;
    text-align: center;
    padding: 1.5rem 1rem;
    pointer-events: none;
  }
  .videos-footer { grid-area: footer; }

  .videos-content {
    display: flex;
    grid-area: content;
    justify-self: center;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    max-width: 90vw;
  }

  .video { display: none; }
  .video-active { display: block; }
}

@layer project {
  @media (max-width: 768px) {
    .picture {
      width: 90vw;
    }
    .project-image {
      width: 100% !important;
      height: auto !important;
      max-height: none;
    }
  }

  .videos-description {
    display: none;
    text-align: center;
    max-width: 34rem;
    padding: 0 2rem;
    line-height: 2;
  }
  .description-mode .videos-description { display: block; }
  .videos-description p + p {
    margin-top: 1.5rem;
    color: #888;
  }
}
