:root {
  --chat-bg: var(--neutral-80);
  --chat-color: var(--white);
  --chat-instructions-color: var(--neutral-20);
  --chat-new-message-bg: var(--neutral-70);
  --chat-new-message-textarea-color: var(--neutral-90);
  --chat-new-message-textarea-bg: var(--neutral-20);
  --chat-message-date-color: var(--neutral-40);
  --chat-message-name-color: var(--white);
}

@include theme('light') {
  --chat-bg: var(--white);
  --chat-color: var(--neutral-70);
  --chat-instructions-color: var(--neutral-70);
  --chat-new-message-bg: var(--neutral-10);
  --chat-new-message-textarea-color: var(--neutral-90);
  --chat-new-message-textarea-bg: var(--white);
  --chat-message-date-color: var(--neutral-70);
  --chat-message-name-color: var(--neutral-70);
}

.chat {
  $new-message-height: 80px;

  color: var(--chat-color);

  .no-messages {
    padding: calc(var(--line-height-03) / 2);
    color: var(--chat-instructions-color);
  }

  .first-message {
    position: absolute;
    bottom: 0;
    width: 100%;
    padding: calc(var(--line-height-03) / 2);
    color: var(--chat-instructions-color);
  }

  .chat-error {
    position: absolute;
    top: 0;
    bottom: 0;
    background-color: var(--chat-bg);
    padding: calc(var(--line-height-03) / 2);
    text-align: center;
  }

  .messages {
    position: absolute;
    inset: 0;
    bottom: $new-message-height;
    overflow-x: hidden;
    background-color: var(--chat-bg);

    li.message {
      margin: calc(var(--line-height-03) / 2);

      .date {
        font-size: var(--font-size-01);
        color: var(--chat-message-date-color);
        margin-bottom: calc(var(--line-height-03) / 2);
        text-align: right;
      }

      .message-wrapper {
        .name {
          font-size: var(--font-size-01);
          color: var(--chat-message-name-color);
          margin-bottom: var(--spacing-02);
          min-height: 16px;
        }

        .message {
          border-left: 3px solid transparent;
          font-size: var(--font-size-02);
          box-shadow: none;
          border-radius: var(--border-radius-base);
          position: relative;

          .message-content {
            padding: var(--spacing-03) var(--spacing-05);
            overflow-x: auto;
            color: var(--white);
            font-weight: bold;

            a {
              color: var(--white);
            }
          }

          .arrow {
            transform: rotate(90deg);
            right: 90%;
            top: -15px;
            border: solid;
            content: ' ';
            height: 0;
            width: 0;
            position: absolute;
            pointer-events: none;
            border-top-color: transparent !important;
            border-bottom-color: transparent !important;
            border-width: 10px;
          }
        }

        p {
          margin-bottom: calc(var(--line-height-03) / 4);

          &:last-child {
            margin-bottom: 0;
          }
        }
      }

      &:not(.self) {
        .message {
          .arrow {
            border-left-color: transparent !important;
          }
        }
      }

      &.self {
        margin-top: var(--line-height-03);

        .message-wrapper .message {
          border-left: none;
          border-right: 3px solid transparent;

          .arrow {
            left: 100%;
            right: auto;
            border-right-color: transparent !important;
          }
        }
      }
    }
  }

  .new-message {
    @extend .full-size;

    top: auto;
    height: $new-message-height;
    background-color: var(--chat-new-message-bg);
    padding: calc(var(--line-height-03) / 4);
    border-top: 1px solid var(--editor-border-color);

    textarea {
      overflow: auto;
      resize: none;
      border-radius: var(--border-radius-base);
      border: 1px solid var(--editor-border-color);
      height: 100%;
      width: 100%;
      color: var(--chat-new-message-textarea-color);
      font-size: var(--font-size-02);
      padding: calc(var(--line-height-03) / 4);
      background-color: var(--chat-new-message-textarea-bg);
    }
  }
}
