: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-new-message-textarea-border: var(--editor-border-color);
  --chat-new-message-border: var(--editor-border-color);
  --chat-message-date-color: var(--neutral-40);
  --chat-message-name-color: var(--white);
}

.ide-redesign-main {
  --chat-bg: var(--bg-dark-primary);
  --chat-color: var(--content-primary);
  --chat-instructions-color: var(--content-primary-dark);
  --chat-new-message-bg: var(--bg-dark-primary);
  --chat-new-message-textarea-color: var(--content-primary-dark);
  --chat-new-message-textarea-bg: var(--bg-dark-primary);
  --chat-message-date-color: var(--content-secondary-dark);
  --chat-message-name-color: var(--content-secondary-dark);
  --chat-date-align: center;
}

@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-new-message-textarea-border: var(--editor-border-color);
  --chat-new-message-border: var(--editor-border-color);
  --chat-message-date-color: var(--neutral-70);
  --chat-message-name-color: var(--neutral-70);

  .ide-redesign-main {
    --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-new-message-textarea-border: var(--editor-border-color);
    --chat-new-message-border: var(--white);
    --chat-message-date-color: var(--neutral-70);
    --chat-message-name-color: var(--neutral-70);
    --chat-date-align: center;
  }
}

.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: var(--chat-date-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(--chat-new-message-border);

    textarea {
      overflow: auto;
      resize: none;
      border-radius: var(--border-radius-base);
      border: 1px solid var(--chat-new-message-textarea-border);
      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);
    }
  }
}

.chat-empty-state-placeholder {
  display: flex;
  justify-content: center;
  flex-direction: column;
  text-align: center;
  height: 100%;
  gap: var(--spacing-06);
  padding: var(--spacing-02);

  .chat-empty-state-icon {
    padding: var(--spacing-08);
    font-size: var(--font-size-08);
    height: 80px;
    width: 80px;
    border-radius: 50%;
    display: inline-block;
    line-height: 32px;
    background-color: var(--bg-light-secondary);

    .material-symbols {
      font-size: 32px;
    }
  }

  .chat-empty-state-title {
    font-size: var(--font-size-02);
    line-height: var(--line-height-02);
    font-weight: bold;
  }

  .chat-empty-state-body {
    font-size: var(--font-size-02);
    line-height: var(--line-height-02);
    color: var(--content-secondary);
  }
}

.chat-message-redesign {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-01);

  .message-row {
    display: flex;
    align-items: flex-end;
    gap: var(--spacing-03);
  }

  .message-avatar,
  .message-avatar-placeholder {
    flex: 0 0 24px;
  }

  .message-avatar .avatar {
    width: 24px;
    height: 24px;
    line-height: 24px;
    border-radius: 50%;
    text-align: center;
    color: var(--white);
    text-transform: uppercase;
  }

  .message-author,
  .message-container {
    flex: 1 1 auto;
    max-width: calc(100% - 24px - var(--spacing-03));
  }

  .message-container {
    display: flex;
    justify-content: flex-start;
  }

  .message-author {
    color: var(--chat-message-name-color);
    font-size: var(--font-size-01);
    line-height: var(--line-height-01);
  }

  .message-content {
    background-color: var(--bg-light-secondary);
    border-radius: var(--border-radius-large);
    padding: var(--spacing-03) var(--spacing-04);
    width: fit-content;
    max-width: 100%;
    overflow-x: auto;

    p {
      margin: 0;
    }
  }

  .message-container.message-from-self {
    justify-content: flex-end;

    .message-content {
      background-color: var(--bg-accent-03);
    }

    &:not(.first-row-in-message) .message-content {
      border-top-right-radius: var(--border-radius-base);
    }

    &:not(.last-row-in-message) .message-content {
      border-bottom-right-radius: var(--border-radius-base);
    }
  }

  .message-container:not(.message-from-self) {
    &:not(.first-row-in-message) .message-content {
      border-top-left-radius: var(--border-radius-base);
    }

    &:not(.last-row-in-message) .message-content {
      border-bottom-left-radius: var(--border-radius-base);
    }
  }
}

.chat-panel {
  display: flex;
  flex-direction: column;
  height: 100%;

  .chat-wrapper {
    flex: 1 1 auto;
    position: relative;
  }
}
