src/styles/components/_spinner.scss (106 lines of code) (raw):

@import '../scss-variables'; .mynah-ui-spinner-container { display: block; width: calc(var(--mynah-font-size-medium) + var(--mynah-font-size-xxlarge)); aspect-ratio: 1 / 1; position: relative; overflow: visible; --anim-speed: 2.5s; --suppress: 5%; > span.mynah-ui-spinner-logo-part { position: absolute; width: 64%; height: 64%; overflow: visible; left: 18%; top: 18%; &:not(.backdrop, .semi-backdrop) { top: calc(3 * var(--suppress)); left: calc(3 * var(--suppress)); width: calc(100% - (6 * var(--suppress))); height: calc(100% - (6 * var(--suppress))); z-index: var(--mynah-z-3); } &.backdrop { opacity: 0.25; z-index: var(--mynah-z-1); filter: blur(5px); overflow: visible; } &.semi-backdrop { top: calc(1 * var(--suppress)); left: calc(1 * var(--suppress)); width: calc(100% - (2 * var(--suppress))); height: calc(100% - (2 * var(--suppress))); z-index: var(--mynah-z-2); > .mynah-ui-spinner-logo-mask { overflow: visible; &:after { background-color: var(--mynah-color-bg); content: ''; position: absolute; width: 100%; height: 100%; opacity: 0.5; } &:before { opacity: 0.5; filter: blur(5px); } } } > .mynah-ui-spinner-logo-mask { position: absolute; -webkit-mask: center/100% no-repeat; mask: center/100% no-repeat; width: 100%; height: 100%; &.base { &::before { animation: spinner-spin-delayed var(--anim-speed) 250ms ease-in-out infinite; transform-origin: center center; content: ''; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-color: var(--mynah-color-bg); background-image: radial-gradient( 190% 140% at 140% -15%, var(--mynah-color-gradient-end), var(--mynah-bg-gradient-mid), var(--mynah-bg-gradient-mid), var(--mynah-bg-gradient-end), var(--mynah-bg-gradient-start) ); } -webkit-mask-image: var(--mynah-ui-spinner-base); mask-image: var(--mynah-ui-spinner-base); } &.text { opacity: 0.9; background-color: white; -webkit-mask-image: var(--mynah-ui-spinner-text); mask-image: var(--mynah-ui-spinner-text); } } &.backdrop { animation: opacity var(--anim-speed) 250ms linear infinite; > .mynah-ui-spinner-logo-mask:before { animation-name: spinner-spin-delayed; background-image: radial-gradient( 100% 100% at 100% 0%, var(--mynah-color-gradient-end), var(--mynah-bg-gradient-mid), var(--mynah-bg-gradient-end) ); } } &.semi-backdrop { > .mynah-ui-spinner-logo-mask:before { animation-name: spinner-spin-delayed-reverse; } } } }