@supports (background: paint(houdini)) {
    @property --opacity {
      syntax: "<number>";
      initial-value: 0.5;
      inherits: false;
    }
  
    @property --angle {
      syntax: "<angle>";
      initial-value: 0deg;
      inherits: false;
    }
  
    @keyframes opacityChange {
      to {
        --opacity: 1;
      }
    }
  
    @keyframes rotate {
      to {
        --angle: 360deg;
      }
    }
  
    .async-action-pending button[type="submit"] {
      animation: rotate 2s ease-in-out infinite;
      
      /* Paint an image in the border */
      border-image:
        conic-gradient(
          from var(--angle),
          var(--color-accent-hue-1) 0deg 90deg,
          var(--color-accent-hue-2) 180deg 360deg
        ) 1;
      }
  }

  .async-action-pending button[type="submit"]::after, .page-state__loading::after {
    content: "";
    position: absolute;
    width: 16px;
    height: 16px;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto;
    border: 4px solid transparent;
    border-top-color: var(--color-text-default);
    border-radius: 50%;
    animation: button-loading-spinner 1s ease infinite;
}
@keyframes button-loading-spinner {
    from {
        transform: rotate(0turn);
    }

    to {
        transform: rotate(1turn);
    }
}
