@layer components.root {
  [aria-busy="true"]:not(
      input,
      select,
      textarea,
      html,
      progress,
      [aria-describedby]
    ) {
    position: relative;

    &::before {
      animation: spin 0.7s linear infinite;
      border-color: transparent currentColor currentColor;
      border-radius: 50%;
      border-style: solid;
      border-width: 3px;
      content: "";
      display: inline-block;
      block-size: 1em;
      opacity: 0.5;
      vertical-align: -0.14em;
      inline-size: 1em;
    }

    &:not(button.button):not(:empty) {
      &::before {
        margin-inline-end: 0.5em;
      }
    }
  }

  @keyframes spin {
    to {
      transform: rotate(1turn);
    }
  }
}
