.fw-black {
    font-weight: 800 !important;
}
.fw-bold {
    font-weight: 700 !important;
}
.fw-semibold {
    font-weight: 600 !important;
}
.fw-medium {
    font-weight: 500 !important;
}
.fw-normal {
    font-weight: 400 !important;
}
.fw-light {
    font-weight: 300 !important;
}

[class*="aspect-"] {
    position: relative;
    width: 100%;
    overflow: hidden;
}
[class*="aspect-"] img {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    -o-object-fit: cover;
    object-fit: cover;
}
[class*="aspect-"].aspect-top img {
    -o-object-position: top;
    object-position: top;
}
[class*="aspect-"].aspect-right img {
    -o-object-position: right;
    object-position: right;
}
[class*="aspect-"].aspect-contain img {
    -o-object-fit: contain;
    object-fit: contain;
}
.aspect-1by1 {
    padding-bottom: 100% !important;
}
.aspect-5by4 {
    padding-bottom: 80% !important;  /* (4 / 5 * 100) */
}
.aspect-4by5 {
    padding-bottom: 125% !important;  /* (5 / 4 * 100) */
}
.aspect-4by3 {
    padding-bottom: 75% !important;  /* ( 3 / 4 * 100) */
}
.aspect-3by4 {
    padding-bottom: 133.33% !important;  /* ( 3 / 4 * 100) */
}
.aspect-3by2 {
    padding-bottom: 66.66% !important;  /* (2 / 3 * 100) */
}
.aspect-2by3 {
    padding-bottom: 150% !important;  /* (3 / 2 * 100) */
}
.aspect-16by9 {
    padding-bottom: 56.25% !important;  /* (9 / 16 * 100) */
}
.aspect-9by16 {
    padding-bottom: 177.77% !important;  /* (16 / 9 * 100) */
}
.aspect-2by1 {
    padding-bottom: 50% !important;  /* (1 / 2 * 100) */
}
.aspect-1by2 {
    padding-bottom: 200% !important;  /* (2 / 1 * 100) */
}
.aspect-banner {
    padding-bottom: 40% !important;
}
@media(min-width: 992px) {
    .aspect-lg-1by1 {
        padding-bottom: 100%;
    }
    .aspect-lg-5by4 {
        padding-bottom: 80% !important;
    }
    .aspect-lg-4by5 {
        padding-bottom: 125% !important;
    }
    .aspect-lg-4by3 {
        padding-bottom: 75% !important;
    }
    .aspect-lg-3by4 {
        padding-bottom: 133.33% !important;
    }
    .aspect-lg-3by2 {
        padding-bottom: 66.66% !important;
    }
    .aspect-lg-2by3 {
        padding-bottom: 150% !important;
    }
    .aspect-lg-16by9 {
        padding-bottom: 56.25% !important;
    }
    .aspect-lg-9by16 {
        padding-bottom: 177.77% !important;
    }
    .aspect-lg-2by1 {
        padding-bottom: 50% !important;
    }
    .aspect-lg-1by2 {
        padding-bottom: 200% !important;
    }
}

[class*="text-truncate-"] {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
}
.text-truncate-2 {
    -webkit-line-clamp: 2;
}
.text-truncate-3 {
    -webkit-line-clamp: 3;
}
.text-truncate-4 {
    -webkit-line-clamp: 4;
}
.text-truncate-6 {
    -webkit-line-clamp: 6;
}
.text-truncate-8 {
    -webkit-line-clamp: 8;
}
@media (min-width: 992px) {
    .text-truncate-lg-2 {
        -webkit-line-clamp: 2;
    }
    .text-truncate-lg-3 {
        -webkit-line-clamp: 3;
    }
    .text-truncate-lg-4 {
        -webkit-line-clamp: 4;
    }
    .text-truncate-lg-6 {
        -webkit-line-clamp: 6;
    }
    .text-truncate-lg-8 {
        -webkit-line-clamp: 8;
    }
}

.letter-0 {
    letter-spacing: 0;
}
.letter-1 {
    letter-spacing: 1px;
}
.letter-2 {
    letter-spacing: 2px;
}
.letter-3 {
    letter-spacing: 3px;
}
.letter-4 {
    letter-spacing: 4px;
}
@media (min-width: 992px) {
    .letter-lg-1 {
        letter-spacing: 1px;
    }
    .letter-lg-2 {
        letter-spacing: 2px;
    }
    .letter-lg-3 {
        letter-spacing: 3px;
    }
    .letter-lg-4 {
        letter-spacing: 4px;
    }
}

.opacity-0 {
    opacity: 0 !important;
}
.opacity-25 {
    opacity: 0.25 !important;
}
.opacity-50 {
    opacity: 0.5 !important;
}
.opacity-75 {
    opacity: 0.75 !important;
}
.opacity-100 {
    opacity: 1 !important;
}