:root
{
    --default-font-size: 1rem;
}

body
{
    -webkit-text-size-adjust: 100%;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    scroll-behavior: smooth;
}

body,
html
{
    font-size: var(--default-font-size, 1rem);
}

/* --------------------------------------------- Components--------------------------------------------- */
/* Buttons */
.btn,
.btn:hover,
.btn:focus,
.btn:focus:active
{
    text-decoration: none;
}

/* --------------------------------------------Utilities ---------------------------------------------- */

/* Font Weight */
.font-weight-light
{
    font-weight: 300 !important;
}

.font-weight-normal
{
    font-weight: 400 !important;
}

.font-weight-medium
{
    font-weight: 500 !important;
}

.font-weight-semibold
{
    font-weight: 600 !important;
}

.font-weight-bold
{
    font-weight: 700 !important;
}

.font-weight-bolder
{
    font-weight: bolder !important;
}

/* Font Size */
.fs-smaller
{
    font-size: smaller !important;
}

.fs-small
{
    font-size: small !important;
}

.fs-medium
{
    font-size: medium !important;
}

.fs-large
{
    font-size: large !important;
}

.fs-larger
{
    font-size: larger !important;
}

.fs-xl
{
    font-size: x-large !important;
}

.fs-2xl
{
    font-size: xx-large !important;
}

.fs-xs
{
    font-size: xx-small !important;
}

.fs-2xs
{
    font-size: xx-small !important;
}

/* Background */
.bg-none
{
    background: none !important;
}

.bg-image-none
{
    background-image: none !important;
}

.background-repeat
{
    background-repeat: repeat !important;
}

.background-repeat-x
{
    background-repeat: repeat-x !important;
}

.background-repeat-y
{
    background-repeat: repeat-y !important;
}

.background-no-repeat
{
    background-repeat: no-repeat !important;
}

.background-cover
{
    background-size: cover !important;
}

.background-contain
{
    background-size: contain !important;
}

.background-100
{
    background-size: 100% !important;
}

.bg-bottom
{
    background-position: bottom;
}

.bg-center
{
    background-position: center;
}

.bg-left
{
    background-position: left;
}

.bg-left-bottom
{
    background-position: left bottom;
}

.bg-left-top
{
    background-position: left top;
}

.bg-right
{
    background-position: right;
}

.bg-right-bottom
{
    background-position: right bottom;
}

.bg-right-top
{
    background-position: right top;
}

.bg-top
{
    background-position: top;
}

.bg-fixed
{
    background-attachment: fixed;
}

.bg-scroll
{
    background-attachment: scroll;
}

.bg-clip-text
{
    background-clip: text;
}

.bg-clip-border
{
    background-clip: border-box;
}

.bg-clip-padding
{
    background-clip: padding-box;
}

.bg-clip-content
{
    background-clip: content-box;
}

/* Text Styles */
.text-underline
{
    text-decoration: underline !important;
}

.text-underline-under
{
    text-underline-position: under !important;
}

.text-decoration-none
{
    text-decoration: none !important;
}

.text-underline-offset-auto
{
    text-underline-offset: auto !important;
}

.text-underline-offset-1
{
    text-underline-offset: 0.0625rem;
}

.underline-offset-2
{
    text-underline-offset: 0.125rem;
}

.underline-offset-3
{
    text-underline-offset: 0.1875rem;
}

.underline-offset-4
{
    text-underline-offset: 0.25rem;
}

.underline-offset-8
{
    text-underline-offset: 0.5rem;
}

.text-balance
{
    text-wrap: balance;
}

.text-pretty
{
    text-wrap: pretty;
}

.text-nowrap
{
    text-wrap: nowrap;
}

.text-wrap
{
    white-space: normal;
}

.text-truncate
{
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.text-ellipsis
{
    text-overflow: ellipsis;
}

.text-clip
{
    text-overflow: clip;
}

.v-align-text-top
{
    vertical-align: text-top;
}

.v-align-text-bottom
{
    vertical-align: text-bottom;
}

.v-align-baseline
{
    vertical-align: baseline;
}

/* Inline/ Table Cell */
.v-align-top
{
    vertical-align: top;
}

.v-align-middle
{
    vertical-align: middle;
}

.v-align-bottom
{
    vertical-align: bottom;
}

.v-align-sub
{
    vertical-align: sub;
}

.v-align-super
{
    vertical-align: super;
}

.content-none
{
    content: none;
}

/* Borders -------------------------------------*/

/* Border Style */
.border-solid
{
    border-style: solid !important;
}

.border-dash
{
    border-style: dashed !important;
}

.border-dotted
{
    border-style: dotted !important;
}

/* Border Width */
.border-1
{
    border-width: 1px !important;
}

.border-2
{
    border-width: 2px !important;
}

.border-3
{
    border-width: 3px !important;
}

.border-4
{
    border-width: 4px !important;
}

.border-5
{
    border-width: 5px !important;
}

.border-7
{
    border-width: 7px !important;
}

.border-10
{
    border-width: 10px !important;
}

/* Border Position */
.border-right-1
{
    border-right: 1px !important;
}

.border-right-2
{
    border-right: 2px !important;
}

.border-right-3
{
    border-right: 3px !important;
}

.border-right-5
{
    border-right: 5px !important;
}

.border-right-7
{
    border-right: 7px !important;
}

.border-right-10
{
    border-right: 10px !important;
}

.border-left-1
{
    border-left: 1px !important;
}

/* Border Opacity */
.border-opacity-10
{
    --bs-border-opacity: 0.1;
}

.border-opacity-25
{
    --bs-border-opacity: 0.25;
}

.border-opacity-50
{
    --bs-border-opacity: 0.5;
}

.border-opacity-75
{
    --bs-border-opacity: 0.75;
}

/* Effects */


/* Line Height */

.lh-1
{
    line-height: 1 !important;
}

.lh-heading
{
    line-height: 1.1 !important;
}

.lh-tight
{
    line-height: 1.3 !important;
}

.lh-normal
{
    line-height: 1.5 !important;
}

.lh-loose
{
    line-height: 1.8 !important;
}

.lh-lg
{
    line-height: 2 !important;
}

/* Letter Spacing */
.tracking-tighter
{
    letter-spacing: -0.05rem;
}

.tracking-tight
{
    letter-spacing: -0.025rem;
}

.tracking-wide
{
    letter-spacing: 0.025rem;
}

.tracking-wider
{
    letter-spacing: 0.05rem;
}

.tracking-xl-wide
{
    letter-spacing: 0.09375rem;
}

.tracking-xxl-wide
{
    letter-spacing: 0.1rem;
}

.tracking-widest
{
    letter-spacing: 0.125rem;
}

/* Layout */
/* Aspect ratio */
.aspect-ratio-auto
{
    aspect-ratio: auto;
}

.aspect-ratio-5-4
{
    aspect-ratio: 5/4;
}

.aspect-ratio-6-4
{
    aspect-ratio: 6/4;
}

.aspect-ratio-16-9
{
    aspect-ratio: 16/9;
}

.aspect-ratio-21-9
{
    aspect-ratio: 21/9;
}

.aspect-ratio-9-16
{
    aspect-ratio: 9/16;
}

.aspect-ratio-4-1
{
    aspect-ratio: 4 / 1;
}

.aspect-ratio-2-1
{
    aspect-ratio: 2 / 1;
}

.aspect-ratio-1-1
{
    aspect-ratio: 1 / 1;
}

/* Position */
.position-top-0
{
    top: 0;
}

.position-top-1
{
    top: 1rem;
}

.position-top-2
{
    top: 2rem;
}

.position-top-3
{
    top: 3rem;
}

.position-bottom-0
{
    bottom: 0;
}

.position-left-0
{
    left: 0;
}

.position-right-0
{
    right: 0;
}

.position-middle
{
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* Width */
.width-fit-content
{
    width: -webkit-fit-content;
    width: -moz-fit-content;
    width: fit-content;
}

.width-max-content
{
    width: max-content;
}

.width-min-content
{
    width: min-content;
}

/* Spacing */

.row-gap-sm
{
    row-gap: 0.625rem;
}

/* -------------------------------------------- Helpers ---------------------------------------------- */

.flip-horizontally
{
    transform: rotate(180deg);
}