@import url('../tools/x-truncate.css');

@custom-selector :--c-app-card
  .c-app-card;

@custom-selector :--c-app-card__title
  .c-app-card__title;

@custom-selector :--c-app-card__desc
  .c-app-card__desc;

@custom-selector :--c-app-card__types
  .c-app-card__types;

@custom-selector :--c-app-card__flags
  .c-app-card__flags;

@custom-selector :--c-app-card__repo
  .c-app-card__repo;

@custom-selector :--c-app-card__link
  .c-app-card__link;



/* Layout */
:--c-app-card {
  display: flex;
  flex-direction: column;

  text-align: center;

  &:where(a) {
    color: inherit;

    &:hover {
      text-decoration: none;
    }
  }
}
:--c-app-card__types {
  flex-grow: 1;
}



/* Title */
:--c-app-card__title > .icon {
  vertical-align: middle;
}


/* Desc */
:--c-app-card__desc {
    @mixin truncate--many-lines;
}



/* Types */
:--c-app-card__types {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;

  /* To achieve `height: min-content` and `space-around` */
  margin-block: auto;
  flex-grow: 0;

  &:where(ul) {
    padding-inline-start: 0;
  }
}
:--c-app-card__types > :where(li, div, p) {
  display: inline;
}
:--c-app-card__types > :not(:last-child)::after {
  content: "•";
  display: inline;
  margin-inline: 0.25em;
}



/* Flags */
:--c-app-card__flags {
  display: flex;
  flex-direction: row;
  justify-content: space-between;

  &:where(ul) {
    list-style: none;
    padding-inline-start: 0;
    margin-block: unset;
  }
}
:--c-app-card__flags:not(:--c-app-card__types ~ *) {
  /* To fill parent with this item, but keep text aligned to bottom */
  flex-grow: 1;
  align-items: end;
}
:--c-app-card__flags > :--c-app-card__repo {
  margin-left: auto;
}



/* Links */
/* IMPORTANT: IF you CAN put `c-app-card` on an `<a>`, THEN ignore this class */
/* HACK: IF you can NOT put `c-app-card` on an `<a>`, THEN
        add an `<a class="c-app-card__link">Open</a>` within the component */

/* To stretch a child link atop the entire card */
:--c-app-card:has(:--c-app-card__link) {
  position: relative;
}
:--c-app-card__link {
  position: absolute;
  user-select: none;
  color: transparent !important;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}
