@layer components {
  .tiles {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(var(--space-13), var(--track-fill)));
    gap: var(--space-6) var(--space-5);
  }

  .tiles__picker {
    display: contents;
  }

  .tile {
    position: relative;
  }

  .tile__link {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    border-radius: var(--radius-sm);
    outline: var(--space-3) solid transparent;
    color: var(--color-ink);
    -webkit-tap-highlight-color: transparent;
    -webkit-user-drag: none;
  }

  .tile__link img {
    -webkit-user-drag: none;
  }

  .tile__name {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: var(--clamp-lines);
    font: var(--type-body-sm);
    overflow-wrap: anywhere;
  }

  .tile__name--middle {
    display: flex;
    white-space: pre;
  }

  .tile__name-start {
    min-inline-size: var(--space-0);
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .tile__name-end {
    flex: none;
  }

  .tile__meta {
    margin-block-start: calc(var(--space-3) * -1);
    font: var(--type-caption);
    color: var(--color-ink-faint);
  }

  .tile .file-preview {
    transition: scale var(--dur-fast) var(--ease-spring), box-shadow var(--dur-fast) var(--ease-calm);
  }

  .tile__link:active .file-preview {
    scale: var(--press-scale);
  }

  .tile--moved .tile__link {
    animation: tile-moved var(--dur-highlight) var(--ease-calm);
  }

  .tile--failed .tile__name {
    color: var(--color-caution);
  }

  .tile--pending .tile__name {
    background-image: var(--activity-shimmer);
    background-size: var(--activity-shimmer-size) var(--size-fill);
    background-position-x: var(--activity-shimmer-start);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: tile-pending var(--dur-activity) var(--ease-breath) infinite;
  }

  @keyframes tile-pending {
    to {
      background-position-x: var(--activity-shimmer-end);
    }
  }

  @keyframes tile-moved {
    from {
      outline-color: var(--color-highlight);
      background-color: var(--color-highlight);
    }
  }

  @media (any-hover: hover) {
    .tile__link:hover .tile__name {
      color: var(--color-link);
    }
  }
}
