/* 1. CORE VARIABLES */

:root {
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 0;
    --google-sans: 'Google Sans', system-ui, -apple-system, sans-serif;
    --oswald: 'Oswald', sans-serif;
    --bs-body-font-size: 1rem;
    --bs-body-font-weight: 400;
    --bs-body-line-height: 1.5;
    --bs-body-color: #212529;
    --bs-body-bg: #fff;
    --bs-primary: #0d6efd; 
    --bs-secondary: #6c757d;
    --bs-light: #f8f9fa;
    --bs-dark: #212529;
}
html {
    scroll-behavior: smooth;
    scrollbar-color: #555 #222;
    scrollbar-width: thin;
    color-scheme: dark;
}
::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}
::-webkit-scrollbar-track {
    background: #222; 
}
::-webkit-scrollbar-thumb {
    background: #555;
    border-radius: 10px;
    border: 2px solid #222;
}
::-webkit-scrollbar-thumb:hover {
    background: #777;
}
body {
    font-family: var(--google-sans);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}
h1, h2, h3, .h1, .h2, .h3, .navbar-brand {
    font-family: var(--oswald);
    font-weight: 500; 
}
.material-symbols-outlined {
    font-family: 'Material Symbols Outlined' !important;
    font-weight: normal;
    font-style: normal;
    font-size: 24px;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    display: inline-block;
    white-space: nowrap;
    word-wrap: normal;
    direction: ltr;
    -webkit-font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
    width: 24px;
    height: 24px;
    overflow: hidden;
    vertical-align: middle;
}
@media screen {
    .fonts-loaded body {
        font-family: var(--google-sans);
    }
}

/* 2. RESET & BASE */

*, *::before, *::after { 
    box-sizing: border-box; 
}
body { 
    margin: 0; 
    font-family: var(--bs-body-font-family); 
    font-size: var(--bs-body-font-size); 
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color); 
}
h1, .h1 { 
    font-size: clamp(2.5rem, 8vw + 0.5rem, 4rem) !important;
    font-weight: 500; 
    line-height: 1.2; 
    margin-top: 0; 
    margin-bottom: 0.5rem; 
}
h2, .h2 { 
    font-size: clamp(1.5rem, 5vw + 0.5rem, 3rem) !important; 
    font-weight: 500; 
    line-height: 1.3;
    margin-top: 0; 
    margin-bottom: 0.5rem; 
}
p { 
    margin-top: 0; 
    margin-bottom: 1rem; 
}

/* 3. FLEX & ALIGNMENT */

.d-flex { 
    display: flex !important; 
}
.d-inline-flex { 
    display: inline-flex !important; 
}
.flex-row { 
    flex-direction: row !important; }
.flex-column { 
    flex-direction: column !important; 
}
.flex-wrap { 
    flex-wrap: wrap !important; 
}
.justify-content-start { 
    justify-content: flex-start !important; 
}
.justify-content-end { 
    justify-content: flex-end !important; 
}
.justify-content-center { 
    justify-content: center !important; 
}
.justify-content-between { 
    justify-content: space-between !important; 
}
.align-items-start { 
    align-items: flex-start !important; 
}
.align-items-end { 
    align-items: flex-end !important; 
}
.align-items-center { 
    align-items: center !important; 
}
.align-self-center { 
    align-self: center !important; 
}
.text-center { 
    text-align: center !important; 
}
.text-end { 
    text-align: right !important; 
}

/* 4. GRID & LAYOUT */

.container, .container-fluid {
    width: 100%;
    padding-right: calc(var(--bs-gutter-x) * 0.5);
    padding-left: calc(var(--bs-gutter-x) * 0.5);
    margin-right: auto;
    margin-left: auto;
}
.row {
    display: flex;
    flex-wrap: wrap;
    margin-top: calc(-1 * var(--bs-gutter-y));
    margin-right: calc(-0.5 * var(--bs-gutter-x));
    margin-left: calc(-0.5 * var(--bs-gutter-x));
}
.col-12 { 
    flex: 0 0 auto; 
    width: 100%; 
}

/* 5. NAVBVAR & STICKY */

.sticky-top { 
    position: -webkit-sticky; 
    position: sticky; 
    top: 0; 
    z-index: 1020; 
}
.navbar { 
    position: relative; 
    display: flex; 
    flex-wrap: wrap; 
    align-items: center; 
    justify-content: space-between; 
    padding-top: 0.5rem; 
    padding-bottom: 0.5rem; 
}
.navbar-brand { 
    padding-top: 0.3125rem; 
    padding-bottom: 0.3125rem; 
    margin-right: 1rem; 
    font-size: 1.25rem; 
    text-decoration: none; 
    white-space: nowrap; 
}
.navbar > .container, .navbar > .container-fluid { 
    display: flex; 
    flex-wrap: inherit; 
    align-items: center; 
    justify-content: space-between; 
}
.navbar-nav { 
    display: flex; 
    flex-direction: column; 
    padding-left: 0; 
    margin-bottom: 0; 
    list-style: none; 
}
.navbar-nav .nav-link {
    font-family: var(--oswald);
    color: #333; 
    font-weight: 300; 
    text-decoration: none; 
    padding: 0.5rem 1rem; 
}
.collapse:not(.show) { 
    display: none; 
}
.dropdown, .dropup, .dropend, .dropstart {
    position: relative;
}
.navbar-toggler {
    border-radius: 0 !important;
    white-space: nowrap;
}
.navbar-toggler:focus {
    outline: 0;
    box-shadow: none !important;
}
.dropdown-menu {
    position: absolute;
    z-index: 1000;
    display: none;
    min-width: 10rem;
    padding: 0.5rem 0;
    margin: 0;
    font-size: 1rem;
    color: #212529;
    text-align: left;
    list-style: none;
    background-color: #fff;
    background-clip: padding-box;
    border: 1px solid rgba(0, 0, 0, 0.175);
    border-radius: 0.375rem;
}
.dropdown-menu.show {
    display: block;
}
.dropdown-item {
    display: block;
    width: 100%;
    padding: 0.25rem 1rem;
    clear: both;
    font-weight: 400;
    color: #212529;
    text-align: inherit;
    text-decoration: none;
    white-space: nowrap;
    background-color: transparent;
    border: 0;
}
.dropdown-item:hover, .dropdown-item:focus {
    color: #1e2125;
    background-color: #e9ecef;
}

/* MOBILE NAV OVERLAY ADJUSTMENT */
@media (max-width: 991.98px) {
    .navbar-collapse {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        z-index: 1050;
        background-color: #fff;
        padding: 1rem;
        box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    }
    .navbar-nav .dropdown-menu {
        position: static;
        float: none;
    }
}

@media (min-width: 992px) {
    .navbar-nav .dropdown-menu {
        position: absolute;
    }
}

/* 6. SPACING & SIZING */

.m-0 { 
    margin: 0 !important; 
}
.m-auto { 
    margin: auto !important; 
}
.mt-3, .my-3 {
     margin-top: 1rem !important; 
    }
.mb-3, .my-3 { 
    margin-bottom: 1rem !important; 
}
.mt-5, .my-5 { 
    margin-top: 3rem !important; 
}
.mb-5, .my-5 { 
    margin-bottom: 3rem !important; 
}
.p-0 { 
    padding: 0 !important; 
}
.p-3 { 
    padding: 1rem !important; 
}
.p-4 { 
    padding: 1.5rem !important; 
}
.p-5 { 
    padding: 3rem !important; 
}
.w-100 { 
    width: 100% !important; 
}
.vh-100 { 
    height: 100vh !important; 
}
.bg-light { 
    background-color: var(--bs-light) !important; 
}
.shadow-sm { 
    box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) !important; 
}

/* 7. MEDIA */

@media (min-width: 576px){ 
    .container { 
        max-width: 540px; 
    } 
}
@media (min-width: 768px){
    .container { 
        max-width: 720px; 
    }
    .col-md-6 { 
        flex: 0 0 auto; 
        width: 50%; 
    }
    .col-md-4 { 
        flex: 0 0 auto; 
        width: 33.333333%; 
    }
    .d-md-flex { 
        display: flex !important; 
    }
}
@media (min-width: 992px){
    .container { 
        max-width: 960px; 
    }
    .col-lg-3 { 
        flex: 0 0 auto; 
        width: 25%; 
    }
    .navbar-expand-lg { 
        flex-wrap: nowrap; 
        justify-content: flex-start; 
    }
    .navbar-expand-lg .navbar-nav { 
        flex-direction: row; 
    }
    .navbar-expand-lg .navbar-collapse { 
        display: flex !important; 
        flex-basis: auto; 
    }
    .navbar-expand-lg .nav-link { 
        padding-right: 0.5rem; 
        padding-left: 0.5rem; 
    }
}
@media (min-width: 1200px){ 
    .container { 
        max-width: 1140px; 
    } 
}
@media (min-width: 1400px){ 
    .container { 
        max-width: 1320px; 
    } 
}