@use 'sass:meta';
.mc-code-block-light :deep() {
  @include meta.load-css('highlight.js/styles/a11y-light');
}
.mc-code-block-dark :deep() {
  @include meta.load-css('highlight.js/styles/a11y-dark');
}

.mc-code-block-content {
  background: var(--mc-bg);
}

.v-enter-active,
.v-leave-active {
  transition: opacity 0.5s ease;
}

.v-enter-from,
.v-leave-to {
  opacity: 0;
}

.mc-code-block {
  margin: 1rem 0;
  overflow: hidden;
  border-radius: 14px;

  pre {
    margin: 0;
    padding: 0;
    white-space: pre-wrap; /* 允许换行 */
    word-break: break-all;
    display: block;
    code {
      display: block;
    }
  }
  pre.mermaid {
    padding: 1em;
  }
  .hljs-code {
    line-height: 0;
    * {
      line-height: 1.5;
    }
  }

  .mc-action-btn {
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .mc-code-block-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 1rem;
    .mc-code-lang {
      font-size: var(--mc-font-size);
    }
  }

  .mc-code-block-actions {
    display: flex;
    align-items: center;
    .mc-copy-btn,
    .mc-toggle-btn {
      cursor: pointer;
      border-radius: 4px;
      font-size: 18px;
    }
  }
}

.mc-code-block-light {
  border: 1px solid #d7d8da;
  code.hljs {
    padding: 1em;
  }
  background-color: #f5f5f5;
  .mc-code-lang {
    color: #252b3a;
  }
  .mc-code-block-actions {
    .mc-copy-btn,
    .mc-toggle-btn {
      color: #252b3a;
      &:hover {
        background-color: #ebebeb;
      }
    }
  }
}

.mc-code-block-dark {
  border: 1px solid #4e5057;
  code.hljs {
    padding: 1em;
  }
  background-color: #34363a;
  .mc-code-lang {
    color: #ced1db;
  }
  .mc-code-block-actions {
    .mc-copy-btn,
    .mc-toggle-btn {
      color: #ced1db;
      &:hover {
        background-color: #393a3e;
      }
      img {
        filter: brightness(1.5);
      }
    }
  }
}

.collapse-transition {
  &-enter-from,
  &-leave-to {
    opacity: 0;
  }

  &-enter-to,
  &-leave-from {
    opacity: 1;
  }

  &-enter-active,
  &-leave-active {
    transition:
      max-height 0.3s cubic-bezier(0.5, 0.05, 0.5, 0.95),
      opacity 0.3s cubic-bezier(0.5, 0.05, 0.5, 0.95);
  }
}
