:root {
    --select-arrow: url("data:image/svg+xml,%3Csvg width='24' height='15' viewBox='0 0 24 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M3.27047 3.12752C3.6482 2.72461 4.28103 2.7042 4.68394 3.08193L12 9.94073L19.3161 3.08193C19.719 2.7042 20.3518 2.72461 20.7295 3.12752C21.1073 3.53044 21.0869 4.16327 20.6839 4.541L12 12.6822L3.31606 4.541C2.91315 4.16327 2.89274 3.53044 3.27047 3.12752Z' fill='%235F86AF'/%3E%3C/svg%3E%0A");
}

/* State classes */

.is-hidden {
    display: none;
}

/* Specific classes */

.styles-scripts {
    display: none;
}

*[data-obfuscated-link] {
    cursor: pointer;
}

/* VISIBILITY */

.mobile-only {
    display: block;
}

.mobile-tablet-only {
    display: block;
}

.tablet-only {
    display: none;
}

.tablet-desktop-only {
    display: none;
}

.desktop-only {
    display: none;
}

/* DISPLAY */

.text-left {
    text-align: left;
}

.text-right {
    text-align: right;
}

.text-center {
    text-align: center;
}

.text-justify {
    text-align: justify;
}

.break {
    flex-basis: 100%;
    height: 0;
}

.break-word span {
    display: block;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    letter-spacing: inherit;
}

/* SPACING */

.content-width {
    width: var(--content-width);
    margin: 0 auto;
    box-sizing: border-box;
}

.content-width .content-width {
    margin-left: 0;
    margin-right: 0;
    width: 100%;
}

/* SIZING */

.img-responsive {
    width: 100%;
    height: auto;
}

/* CUSTOM SELECT */

select {
    -webkit-appearance: none;
    -moz-appearance: none;
}

.select-container:has(select) {
    position: relative;
}

.select-container:has(select):after {
    content: '';

    position: absolute;
    top: 3rem;
    right: 1.25rem;

    display: block;
    width: 1.5rem;
    height: .875rem;

    transform-origin: center center;

    background-image: var(--select-arrow);

    transition: transform var(--transition-time, .25s);
}

.select-container:has(select:focus):after {
    transform: rotateX(180deg);
}

/* CUSTOM CHECKBOXES / RADIO */

.custom-checkbox {
    position: absolute;
    clip: rect(1px, 1px, 1px, 1px);
    padding: 0;
    border: 0;
    height: 1px;
    width: 1px;
    overflow: hidden;
}

.custom-checkbox ~ label {
    --checkbox-color: var(--primary);
    --checkbox-background: var(--white);
    --checkbox-size: 1.25rem;
    --checkbox-radius: var(--checkbox-size);
    --border-width: .125rem;
    --inner-offset: .125rem;
}

.checkbox + .checkbox {
    margin-top: var(--checkbox-size);
}

.custom-checkbox:focus ~ label {
    text-decoration: underline;
}

.custom-checkbox ~ label {
    user-select: none;
}

.custom-checkbox:checked ~ label:after {
    opacity: 1;
}

.custom-checkbox + label {
    position: relative;
    display: flex;
    margin-left: 1rem;
    gap: calc(var(--checkbox-size) / 2);
    align-items: center;
    font-size: .75rem;
    line-height: .938rem;
    padding-right: 0;
    cursor: pointer;
    text-align: left;
}

.custom-checkbox + label:before {
    content: '';
    position: relative;
    z-index: 1;
    display: block;
    box-sizing: border-box;
    width: var(--checkbox-size);
    min-width: var(--checkbox-size);
    height: var(--checkbox-size);
    border-radius: var(--checkbox-radius);
    border: var(--border-width) solid var(--checkbox-color);
    transition: box-shadow var(--transition-time);
    box-shadow: inset 0 0 0 var(--inner-offset) var(--checkbox-background);
}

.custom-checkbox + label:after {
    content: '';
    position: absolute;
    z-index: 0;
    display: block;
    box-sizing: border-box;
    width: var(--checkbox-size);
    min-width: var(--checkbox-size);
    height: var(--checkbox-size);
    border-radius: var(--checkbox-radius);
    background: var(--checkbox-color);
    opacity: 0;
    transition: opacity var(--transition-time);
}

/* BACKGROUNDS */

.bg-to-edge > *,
.bg-to-edge__mobile > *,
.bg-to-edge__desktop > * {
    position: relative;
}

.bg-to-edge,
.bg-to-edge__mobile,
.bg-to-edge__desktop {
    position: relative;
}

.bg-to-edge:before,
.bg-to-edge__mobile:before,
.bg-to-edge__desktop:before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    display: block !important;
    background-color: inherit;
}

.bg-to-edge__desktop:before {
    display: none !important;
}

.bg-to-edge__right:before {
    right: calc((100vw - 100%) * -1);
    left: 50%;
}

.bg-to-edge__left:before {
    left: calc((100vw - 100%) * -1);
    right: 50%;
}

/* OVERLAY */

.has-dark-overlay {
    --overlay-opacity: 0.2;
    
    position: relative;
}

.has-dark-overlay:before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    display: block;
    background-color: hsla(0, 0%, 0%, var(--overlay-opacity));
}