:root {
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
}

::selection {
    background-color: var(--light-gray);
}

html {
    scroll-behavior: smooth;
}

.cursor-is-loading {
    cursor: progress !important;
}


/* Global font stylings */

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, h6 {
    font-weight: 700;
    margin-bottom: 1rem;
    color: var(--dark-gray);
}

h1, .h1 {
    font-size: 2.875rem;
}

h2, .h2 {
    font-size: 1.5rem;
}

p, ul, ol, figcaption.image-caption {
    font-size: var(--font-size-small);
    color: var(--darker-gray);
}

small {
    font-size: var(--font-size-tiny);
}

a {
    color: var(--medium-gray);
    text-decoration: none;
    transition: color .3s ease;
}

.page-link {
    font-weight: 700;
    color: var(--dark-gray);
    display: inline;

    .page-link__title {
        text-underline-offset: 3px;
        text-decoration-thickness: 3px;
    }

    &:hover {
        color: var(--dark-gray);

        .page-link__title {
            line-height: 115%;
            text-decoration: underline;
        }
    }
}

/* Global layout stylings */

.frame p:last-of-type,
.frame ul li:last-of-type,
.frame ol li:last-of-type {
    margin-bottom: 0;
}

.container {
    padding-right: var(--bs-gutter-x);
    padding-left: var(--bs-gutter-x);
}

.content-container {
    margin-left: auto;
    margin-right: auto;
    width: 100%;
    max-width: 100%;

    header {
        padding-right: 2.5rem;
    }
}

.main-wrapper {
    max-width: 2000px;
    min-height: 100dvh;
    margin: 0 auto;
    padding-top: 66px;
    background-color: #fff;
}

.frame:not(:last-of-type) {
    margin-bottom: 3rem;
}

/* Button stylings */
.btn {
    --bs-btn-padding-x: 1.5rem;
    --bs-btn-padding-y: 0.7rem;
    --bs-btn-font-size: var(--font-size-base);
    --bs-btn-font-weight: 400;
    --bs-btn-line-height: 1.5;
    --bs-btn-color: var(--lighter-gray);
    --bs-btn-bg: transparent;
    --bs-btn-border-width: 1px;
    --bs-btn-border-color: transparent;
    --bs-btn-border-radius: 0;
}

.btn-primary {
    --bs-btn-color: var(--lighter-gray);
    --bs-btn-bg: var(--black-gray);
    --bs-btn-border-color: var(--black-gray);
    --bs-btn-hover-color: #000;
    --bs-btn-hover-bg: var(--medium-dark-gray);
    --bs-btn-hover-border-color: #d5d6d8;
    --bs-btn-focus-shadow-rgb: 49, 132, 253;
    --bs-btn-active-color: #000;
    --bs-btn-active-bg: #C7CCD3;
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: #0d6efd;
    --bs-btn-disabled-border-color: #0d6efd;
}

.btn-secondary {
    --bs-btn-color: var(--dark-gray);
    --bs-btn-bg: #fff;
    --bs-btn-border-color: var(--medium-dark-gray);
    --bs-btn-hover-color: var(--dark-gray);
    --bs-btn-hover-bg: #fff;
    --bs-btn-hover-border-color: var(--dark-gray);
    --bs-btn-focus-shadow-rgb: 49, 132, 253;
    --bs-btn-active-color: var(--dark-gray);
    --bs-btn-active-bg: var(--medium-dark-gray);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: #0d6efd;
    --bs-btn-disabled-border-color: #0d6efd;
}

/* Image caption stylings */

figcaption.image-caption {
    margin-top: 0.75rem;
}

/* Table stylings */

.table:not(figure.table) {
    --bs-table-bg: white;
    --bs-table-border-color: var(--light-gray);
    --bs-table-color: var(--darker-gray);
    margin-bottom: 0;

    /* Hide the first cell in table head by pseudoelement */
    thead {
        tr:first-of-type {
            th:first-of-type {
                position: relative;

                &:after {
                    content: '';
                    position: absolute;
                    top: -1px;
                    left: -1px;
                    width: calc(100% + 1px);
                    height: calc(100% + 1px);
                    background-color: #fff;
                }
            }
        }
    }

    th, td {
        padding: 1.325rem;
    }

    p:last-of-type {
        margin-bottom: 0;
    }

    td[colspan]:not(:only-child) {
        text-align: center;
    }

    td[rowspan] {
        vertical-align: middle;
    }

    td[rowspan]:not(:first-of-type) {
        text-align: center;
    }

    td:has(+ td[rowspan]) {
        vertical-align: middle;
    }

    td:has(.cell-highlight), th:has(.cell-highlight) {
        background-color: var(--main-gray);
    }

    .cell-highlight {
        font-weight: 700;
        color: var(--dark-gray);
    }
}

figure.border-bottom-table {

    .table {

        thead {
            tr:first-of-type {
                th:first-of-type {
                    &:after {
                        display: none;
                    }
                }
            }
        }

        tr {
            padding: 1.5rem 0;
            border-top: unset;
            display: block;

            th, td {
                width: 100%;
                display: block;
                border-width: 0 0;
                font-weight: 400;
                vertical-align: baseline;
                padding: 0 1.325rem 0 0;
            }

            th:first-of-type,
            td:first-of-type {
                padding: 0 0 1.325rem 0;
            }

            th:not(:first-of-type),
            td:not(:first-of-type) {
                padding-top: 0.25rem;
                padding-bottom: 0.25rem;
            }

            th:last-of-type,
            td:last-of-type {
                padding-bottom: 0;
            }

            @media screen and (min-width: 768px) {
                display: table-row;

                th, td {
                    padding: 1.325rem;
                    width: auto;
                    max-width: 33.33%;
                    display: table-cell;

                    &:first-of-type {
                        padding: 1.325rem 1.325rem 1.325rem 0;
                    }

                    &:last-of-type {
                        padding: 1.325rem 0 1.325rem 1.325rem;
                    }
                }
            }
        }
    }
}


/* Breakpoint stylings */

@media screen and (min-width:576px) {
    .container {
        padding-left: 0;
        padding-right: 0;
    }

    .content-container {
        max-width: 540px;
    }
}

@media screen and (min-width:768px) {
    .container:not(.content-container) {
        max-width: 672px;
    }

    .content-container {
        max-width: 556px;
    }

    h1, h2, h3, h4, h5, h6,
    .h1, .h2, .h3, .h4, .h5, .h6 {
        margin-bottom: 1.5rem;
    }

    h1, .h1 {
        font-size: 3.75rem;
    }

    h2, .h2 {
        font-size: 2rem;
    }

    p, ul, ol, figcaption.image-caption {
        font-size: var(--font-size-base);
    }

    .page-link {
        .page-link__title {
            text-underline-offset: 5px;
        }
    }
}

@media screen and (min-width:992px) {
    .container:not(.content-container) {
        max-width: 672px;
    }

    .content-container {
        max-width: 556px;
    }
}

@media screen and (min-width:1200px) {

    .main-wrapper {
        padding-top: 0;
    }

    .container:not(.content-container) {
        max-width: 1088px;
    }

    .content-container {
        max-width: 714px;
    }

    .frame.frame-default {
        margin-bottom: 4rem;
    }
}

@media screen and (min-width:1400px) {
    .container:not(.content-container) {
        max-width: 1280px;
    }

    .content-container {
        max-width: 1050px;
    }
}

@media screen and (min-width:1792px) {
    .container:not(.content-container) {
        max-width: 1600px;
    }
}
