@use "mixins";

// Common styles for all media-type components across the app.
.media-inner {
  user-select: none;
  position: relative;

  video.full-media,
  img.full-media,
  img.thumbnail,
  canvas.thumbnail {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  .full-media.with-blurred-bg {
    position: relative;
    border-radius: 0 !important;
  }

  video {
    background: no-repeat 50% 50%;
    background-size: contain;
  }

  .thumbnail {
    position: absolute;
    top: 0;
    left: 0;

    &.with-blurred-bg {
      left: 50%;
      transform: translateX(-50%);
      border-radius: 0 !important;
    }
  }

  .media-loading {
    position: absolute;
  }

  &.fix-min-height {
    min-height: 5rem;
  }

  .message-media-last-progress {
    --_progress: 0%;
    --_color: var(--color-primary);

    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;

    height: 0.25rem;

    background-color: rgba(255 255 255 / 0.3);

    &::before {
      content: "";

      position: absolute;
      top: 0;
      left: 0;

      width: var(--_progress);
      height: 100%;
      border-top-right-radius: 0.125rem;
      border-bottom-right-radius: 0.125;

      background-color: var(--_color);
    }

    .theme-dark & {
      --_color: white;
    }
  }
}

.animated-close-icon {
  position: absolute;
  transform: rotate(-45deg);

  &::before,
  &::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
  }

  &::before {
    transform: rotate(90deg);
  }

  &,
  &::before,
  &::after {
    width: 1.125rem;
    height: 0.125rem;
    border-radius: 0.125rem;

    background-color: var(--color-text-secondary);

    transition: transform var(--slide-transition);
  }

  &.no-transition {
    &,
    &::before,
    &::after {
      transition: none;
    }
  }

  &.state-back {
    transform: rotate(180deg);

    &::before {
      transform: rotate(45deg) scaleX(0.75) translate(0, -0.375rem);
    }

    &::after {
      transform: rotate(-45deg) scaleX(0.75) translate(0, 0.375rem);
    }
  }
}

.overscroll-trigger {
  display: none;
  height: 1px;
}

// Used by ChatList and ContactList components
.chat-list {
  overflow-x: hidden;
  overflow-y: scroll;

  height: 100%;
  padding: 0.5rem;

  background: var(--color-background);

  /* stylelint-disable-next-line no-duplicate-selectors */
  & {
    @include mixins.adapt-padding-to-scrollbar(0.5rem);
  }

  &.forum-panel-open {
    .info {
      transform: translateX(-20%);
      opacity: 0;
    }

    .Chat[dir="rtl"] .info {
      transform: translateX(20%);
    }

    .Avatar {
      transform: scale(0.9);
    }
  }

  .scroll-container {
    position: relative;
  }

  .no-results {
    margin-top: 2rem;
    color: var(--color-text-meta);
    text-align: center;
  }

  .Avatar {
    transition: transform var(--layer-transition);

    body.no-page-transitions & {
      transition: none;
    }
  }

  .ListItem {
    &.chat-item-clickable {
      margin: 0;
    }
  }

  body.is-ios &,
  body.is-android & {
    padding-right: 0;
    padding-left: 0;

    .ListItem::after {
      opacity: 1;
      transition: opacity var(--layer-transition);
    }

    &.forum-panel-open {
      .ListItem::after {
        opacity: 0;
      }
    }
  }

  @media (min-width: 600px) {
    &.forum-panel-open .selected-forum .Avatar {
      transform: none;
    }
  }

  @media (max-width: 600px) {
    padding-right: 0;
    padding-left: 0;
  }
}

// Used by Avatar and ProfilePhoto components
.Avatar, .ProfilePhoto {
  --color-user: var(--accent-color);

  &.replies-bot-account,
  &.anonymous-forwards,
  &.saved-messages {
    --color-user: var(--color-primary);
  }

  &.deleted-account {
    --color-user: var(--color-deleted-account);
  }
}

.fab-padding-bottom {
  padding-bottom: 5rem !important;
}

.with-story-ribbon {
  --story-ribbon-height: 5.5rem;

  transform: translateY(calc(var(--story-ribbon-height) * -1));
  height: calc(100% - var(--extra-height, 0px) + var(--story-ribbon-height)) !important;

  &.open, &.closing {
    transition: transform 250ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
  }

  &.open {
    transform: translateY(0);
  }
}

// Update this value when new server colors are added
@for $i from 0 through 25 {
  .peer-color-#{$i} {
    --accent-color: var(--color-peer-#{$i}, var(--color-text));
    --bar-gradient: var(--color-peer-gradient-#{$i});
    --accent-background-color: var(--color-peer-bg-#{$i}, var(--hover-color));
    --accent-background-active-color: var(--color-peer-bg-active-#{$i}, var(--active-color));
  }
}

.peer-color-count-1,
.peer-color-count-2,
.peer-color-count-3 {
  --accent-background-color: var(--hover-color);
  --accent-background-active-color: var(--active-color);
}

.peer-color-count-2 {
  @include mixins.peer-gradient(--bar-gradient, 2);
}

.peer-color-count-3 {
  @include mixins.peer-gradient(--bar-gradient, 3);
}
