.portal-icon {
    display: inline-block;
    width: 1em;
    height: 1em;
    overflow: visible;
    vertical-align: -0.125em;
    fill: currentColor;
}

.eux-appmenu-button .eux-appmenu-link .app-icon {
    justify-items: center;
    margin-bottom: 0;
    padding-left: 0;
}

.eux-appmenu-button .eux-appmenu-link .eux-appmenu-button-label {
    display: block;
    margin: 3px auto 0;
    max-width: 130px;
    white-space: normal;
}

.eux-appmenu-button .eux-appmenu-link .app-icon > .portal-icon {
    align-self: center;
    justify-self: center;
    vertical-align: 0;
}

.eux-appmenu-button .eux-appmenu-link .app-icon > .portal-icon.fa-gear {
    position: relative;
    top: -2px;
}

.eux-appmenu-button .eux-appmenu-link .app-icon > .portal-icon.fa-shield-check {
    position: relative;
    top: -4px;
}

.portal-icon.fa-fw { width: 1.25em; text-align: center; }
.portal-icon.fa-xs { font-size: .75em; }
.portal-icon.fa-sm { font-size: .875em; }
.portal-icon.fa-lg { font-size: 1.25em; }
.portal-icon.fa-xl { font-size: 1.5em; }
.portal-icon.fa-2x { font-size: 2em; }
.portal-icon.fa-3x { font-size: 3em; }
.portal-icon.fa-4x { font-size: 4em; }
.portal-icon.fa-5x { font-size: 5em; }
.portal-icon.fa-spin { animation: portal-icon-spin 2s infinite linear; }
.portal-icon.fa-pulse { animation: portal-icon-spin 1s infinite steps(8); }

@keyframes portal-icon-spin {
    from { transform: rotate(0); }
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    .portal-icon.fa-spin,
    .portal-icon.fa-pulse { animation: none; }
}

.portal-native-switch {
    width: 2.5rem;
    height: 1.25rem;
    accent-color: var(--bs-primary, #593196);
    vertical-align: middle;
}
