themes/olivero/css/components/comments.pcss.css
/**
 * @file
 * Comment section and individual comments.
 */

@import "../base/media-queries.pcss.css";

:root {
  --comment-indentation: var(--sp2);
  --comment-indentation--md: var(--sp4);
}

.comment--level-1 {
  border-block-start: 2px solid var(--color--gray-95);

  & ~ .comment--level-1 {
    margin-block-start: var(--sp2);
  }
}

.comments__title {
  display: flex;
  align-items: center;
  margin-block-start: 0;
}

.comments__count {
  position: relative;
  display: inline-block;
  min-width: 34px;
  margin-block-start: 0;
  margin-block-end: var(--sp0-5);
  margin-inline-start: var(--sp);
  margin-inline-end: var(--sp);
  padding-block: 0;
  padding-inline-start: 5px;
  padding-inline-end: 5px;
  text-align: center;
  color: var(--color--white);
  border-radius: 2px;
  background-color: var(--color--primary-40);
  font-size: 11px;
  line-height: 21px;

  &::after {
    position: absolute;
    inset-block-end: -7px;
    inset-inline-start: 8px;
    width: 0;
    height: 0;
    content: "";
    border-block-start: 7px solid var(--color--primary-40);
    border-inline-end: 8px solid transparent;
  }
}

.comment-form {
  padding-block-end: var(--sp2);
}

.add-comment__form {
  padding-inline-start: 0;
}

.comment {
  position: relative;
  padding-block-start: var(--sp2);
  padding-inline-start: var(--sp3);

  @media (--grid-md) {
    padding-inline-start: 0;
  }
}

.comment__text-content {
  font-size: 16px;

  & blockquote {
    font-size: 21px;
    line-height: var(--sp2);
  }

  /* Override for .field:not(:last-child) */
  &:not(:last-child) {
    margin-block-end: 0;
  }
}

.comment__links {
  margin-block: var(--sp) 0;
}

.comment__links-link {
  text-decoration: none;
  font-size: 14px;
  font-weight: bold;
  line-height: var(--sp);

  &:hover {
    text-decoration: underline;
  }
}

.add-comment__picture-wrapper {
  inset-block-start: calc(var(--line-height-base) + var(--sp0-5));
}

.add-comment__picture,
.comment__picture {
  position: absolute;
  inset-inline-start: 0;
  overflow: hidden;
  width: var(--sp2);
  height: var(--sp2);
  border-radius: 50%;
  background-color: var(--color--gray-95);

  & *:not(img) {
    display: inherit;
    width: inherit;
    height: inherit;
  }

  & img {
    width: 100%;
    height: 100%;
    object-fit: cover;

    /* @TODO: create image-style for profile's avatar to have image squared by default. */
    @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
      position: absolute;
      /* stylelint-disable csstools/use-logical */
      top: 50%;
      left: 50%;
      /* stylelint-enable csstools/use-logical */
      width: 100%;
      height: auto;
      transform: translate(-50%, -50%);
    }
  }

  @media (--grid-md) {
    inset-inline-start: calc(-1 * var(--sp5));
    width: var(--sp3);
    height: var(--sp3);
  }
}

.indented .comment__picture {
  @media (--grid-md) {
    inset-inline-start: calc(-1 * var(--sp4));
    width: var(--sp2);
    height: var(--sp2);
  }
}

.comment__meta {
  & * {
    display: inline;
  }
}

.comment__author {
  margin-inline-end: var(--sp);
  font-family: var(--font-sans);
  font-size: 16px;
  font-weight: 700;
  line-height: var(--sp);

  & a {
    text-decoration: none;
  }
}

.comment__time {
  margin: 0;
  color: var(--color-text-neutral-soft);
  font-family: var(--font-sans);
  font-size: 14px;
  line-height: var(--sp);
}

.indented {
  margin-inline-start: var(--comment-indentation);

  & > .comment:not(:last-of-type, .has-children)::before {
    position: absolute;
    inset-block-start: var(--sp2);
    inset-inline-start: calc(-1 * var(--comment-indentation) - var(--sp)); /* Comment's padding-top */
    width: 0;
    height: 100%;
    content: "";
    border-inline-start: solid 1px var(--color--gray-95);

    @media (--md) {
      inset-inline-start: calc(-1 * var(--comment-indentation--md) + var(--sp));
    }
  }

  @media (--md) {
    margin-inline-start: var(--comment-indentation--md);
  }
}

.show-hide-btn {
  margin-block-start: var(--sp2);
  margin-block-end: 0;
  margin-inline-start: var(--sp3);
  margin-inline-end: 0;
  padding-block: 0;
  padding-inline-start: 0;
  padding-inline-end: 0;
  cursor: pointer;
  color: var(--color-text-neutral-medium);
  border: 0;
  background: none;
  font-size: 14px;
  font-weight: 600;
  line-height: 18px;
  appearance: none;

  &[aria-expanded="true"]::after {
    content: "\0020 -";
  }

  &[aria-expanded="false"]::after {
    content: "\0020 +";
  }

  @media (--grid-md) {
    margin-inline-start: 0;
  }
}
