/*
Copyright 2024 New Vector Ltd.

SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
*/

.contents {
  block-size: 100%;
  inline-size: 100%;
  display: flex;
  border-radius: var(--cpd-space-6x);
  contain: strict;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  scroll-snap-type: inline mandatory;
  scroll-snap-stop: always;
  /* It would be nice to use smooth scrolling here, but Firefox has a bug where
  it will not re-snap if the snapping point changes while it's smoothly
  animating to another snapping point.
  scroll-behavior: smooth; */
}

.tile.maximised .contents {
  border-radius: 0;
}

.item {
  height: 100%;
  flex-basis: 100%;
  flex-shrink: 0;
  --media-view-fg-inset: 10px;
}

.item.snap {
  scroll-snap-align: start;
}

.advance {
  appearance: none;
  cursor: pointer;
  opacity: 0;
  padding: calc(var(--cpd-space-3x) - var(--cpd-border-width-1));
  border: var(--cpd-border-width-1) solid
    var(--cpd-color-border-interactive-secondary);
  border-radius: var(--cpd-radius-pill-effect);
  background: var(--cpd-color-alpha-gray-1400);
  box-shadow: var(--small-drop-shadow);
  transition-duration: 0.1s;
  transition-property: opacity, background-color, border-color;
  position: absolute;
  z-index: 1;
  /* Center the button vertically on the tile */
  top: 50%;
  transform: translateY(-50%);
}

.advance > svg {
  display: block;
  color: var(--cpd-color-icon-on-solid-primary);
}

@media (hover) {
  .advance:hover {
    border-color: var(--cpd-color-bg-action-primary-hovered);
    background: var(--cpd-color-bg-action-primary-hovered);
  }
}

.advance:active {
  border-color: var(--cpd-color-bg-action-primary-pressed);
  background: var(--cpd-color-bg-action-primary-pressed);
}

.back {
  inset-inline-start: var(--cpd-space-1x);
}

.next {
  inset-inline-end: var(--cpd-space-1x);
}

.expand {
  appearance: none;
  cursor: pointer;
  opacity: 0;
  padding: var(--cpd-space-2x);
  border: none;
  border-radius: var(--cpd-radius-pill-effect);
  background: var(--cpd-color-alpha-gray-1400);
  box-shadow: var(--small-drop-shadow);
  transition:
    opacity 0.15s,
    background-color 0.1s;
  position: absolute;
  z-index: 1;
  --inset: 6px;
  inset-block-end: var(--inset);
  inset-inline-end: var(--inset);
}

.expand > svg {
  display: block;
  color: var(--cpd-color-icon-on-solid-primary);
}

@media (hover) {
  .expand:hover {
    background: var(--cpd-color-bg-action-primary-hovered);
  }
}

.expand:active {
  background: var(--cpd-color-bg-action-primary-pressed);
}

@media (hover) {
  .tile:hover > button {
    opacity: 1;
  }
}

.tile:has(:focus-visible) > button {
  opacity: 1;
}

.indicators {
  display: flex;
  gap: var(--cpd-space-2x);
  position: absolute;
  inset-inline-start: 0;
  inset-block-end: calc(-1 * var(--cpd-space-6x));
  width: 100%;
  justify-content: start;
  transition: opacity ease 0.15s;
  opacity: 0;
}

.indicators.show {
  opacity: 1;
}

.maximised .indicators {
  inset-block-end: calc(-1 * var(--cpd-space-4x) - 2px);
  justify-content: center;
}

.indicators > .item {
  flex-basis: 32px;
  block-size: 2px;
  transition: background-color ease 0.15s;
}

.indicators > .item[data-visible="false"] {
  background: var(--cpd-color-alpha-gray-600);
}

.indicators > .item[data-visible="true"] {
  background: var(--cpd-color-gray-1400);
}
