/* Base SVG Icon Styles */
.svg-inline--fa {
    display: inline-block;
    height: 1em;
    overflow: visible;
    vertical-align: -0.125em;
}

/* Icon Sizes */
.svg-inline--fa.fa-2x {
    font-size: 2em;
}

.svg-inline--fa.fa-3x {
    font-size: 3em;
}

.svg-inline--fa.fa-4x {
    font-size: 4em;
}

.svg-inline--fa.fa-5x {
    font-size: 5em;
}

/* Icon Colors */
.svg-inline--fa.text-primary {
    fill: var(--bs-primary);
}

.svg-inline--fa.text-secondary {
    fill: var(--bs-secondary);
}

.svg-inline--fa.text-white {
    fill: #fff;
}

/* Error States */
.svg-inline--fa.icon-error {
    width: 1em;
    height: 1em;
    background-color: #f8d7da;
    border-radius: 0.25em;
}

.svg-inline--fa.icon-missing {
    width: 1em;
    height: 1em;
    background-color: #e9ecef;
    border-radius: 0.25em;
}

/* Animation Support */
.svg-inline--fa.fa-spin {
    animation: fa-spin 2s infinite linear;
}

.svg-inline--fa.fa-pulse {
    animation: fa-spin 1s infinite steps(8);
}

@keyframes fa-spin {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* Two-tone Support */
.svg-inline--fa .fa-primary {
    fill: currentColor;
    opacity: 1;
}

.svg-inline--fa .fa-secondary {
    fill: currentColor;
    opacity: 0.4;
}
