﻿/* Scope everything so it **only** styles inside .bs-scope */
.bs-scope *,
.bs-scope *::before,
.bs-scope *::after {
    box-sizing: border-box;
}

.bs-scope {
    font-family: system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
}

/* Vars (scoped) */
.bs-scope {
    --bs-body-font-size: 1rem;
    --bs-body-line-height: 1.5;
    --bs-body-color: #212529;
    --bs-body-bg: #fff;
    --bs-border-width: 1px;
    --bs-border-style: solid;
    --bs-border-color: #dee2e6;
    --bs-border-radius: 0.375rem;
    --bs-primary: #0d6efd;
    --bs-danger: #dc3545;
    --bs-focus-ring-width: .25rem;
    --bs-focus-ring-color: rgba(13,110,253,.25);
    --bs-card-bg: #fff;
    --bs-card-spacer-y: 1rem;
    --bs-card-spacer-x: 1rem;
    --bs-card-border-color: rgba(0,0,0,.125);
    --bs-card-box-shadow: 0 1px 3px rgba(0,0,0,.05);
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 0;
    --bs-form-control-color: #212529;
    --bs-form-control-bg: #fff;
    --bs-form-control-border-color: #ced4da;
    --bs-form-control-border-radius: .375rem;
    --bs-form-control-padding-y: .375rem;
    --bs-form-control-padding-x: .75rem;
    --bs-form-control-font-size: 1rem;
    --bs-form-control-line-height: 1.5;
}

    /* Card */
    .bs-scope .card {
        position: relative;
        display: flex;
        flex-direction: column;
        min-width: 0;
        word-wrap: break-word;
        background-color: var(--bs-card-bg);
        background-clip: border-box;
        border: var(--bs-border-width) var(--bs-border-style) var(--bs-card-border-color);
        border-radius: var(--bs-border-radius);
        box-shadow: var(--bs-card-box-shadow);
        margin-bottom: 1rem;
    }

    .bs-scope .card-body {
        flex: 1 1 auto;
        padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
    }

    /* Grid (subset) */
    .bs-scope .row {
        --bs-gutter-x: 1.5rem;
        --bs-gutter-y: 0;
        display: flex;
        flex-wrap: wrap;
        margin-top: calc(-1 * var(--bs-gutter-y));
        margin-right: calc(-.5 * var(--bs-gutter-x));
        margin-left: calc(-.5 * var(--bs-gutter-x));
    }

        .bs-scope .row > * {
            width: 100%;
            max-width: 100%;
            flex-shrink: 0;
            padding-right: calc(var(--bs-gutter-x) * .5);
            padding-left: calc(var(--bs-gutter-x) * .5);
            margin-top: var(--bs-gutter-y);
        }

    .bs-scope .col-sm-12,
    .bs-scope .col-md-12 {
        flex: 0 0 auto;
        width: 100%;
    }

@media (min-width: 992px) {
    .bs-scope .col-lg-6 {
        flex: 0 0 auto;
        width: 50%;
    }
}

/* Forms */
.bs-scope .form-group {
    margin-bottom: 1rem;
}

.bs-scope label,
.bs-scope .col-form-label {
    display: inline-block;
    margin-bottom: .5rem;
    font-weight: 500;
}

.bs-scope .form-control {
    display: block;
    width: 100%;
    padding: var(--bs-form-control-padding-y) var(--bs-form-control-padding-x);
    font-size: var(--bs-form-control-font-size);
    line-height: var(--bs-form-control-line-height);
    color: var(--bs-form-control-color);
    background-color: var(--bs-form-control-bg);
    background-clip: padding-box;
    border: 1px solid var(--bs-form-control-border-color);
    border-radius: var(--bs-form-control-border-radius);
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
    appearance: none;
}

    .bs-scope .form-control:focus {
        border-color: #86b7fe;
        outline: 0;
        box-shadow: 0 0 0 var(--bs-focus-ring-width) var(--bs-focus-ring-color);
    }

    .bs-scope .form-control:disabled,
    .bs-scope .form-control[readonly] {
        background-color: #e9ecef;
        opacity: 1;
    }

/* Map select.form-control to BS5 select look */
.bs-scope .form-select,
.bs-scope select.form-control {
    display: block;
    width: 100%;
    padding: .375rem 2.25rem .375rem .75rem;
    font-size: 1rem;
    line-height: 1.5;
    color: #212529;
    background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") no-repeat right .75rem center/16px 12px;
    border: 1px solid #ced4da;
    border-radius: .375rem;
    appearance: none;
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

    .bs-scope .form-select:focus,
    .bs-scope select.form-control:focus {
        border-color: #86b7fe;
        outline: 0;
        box-shadow: 0 0 0 var(--bs-focus-ring-width) var(--bs-focus-ring-color);
    }

/* Input group text variants used */
.bs-scope .input-group-text,
.bs-scope .form-group-text {
    display: flex;
    align-items: center;
    padding: .375rem .75rem;
    margin-bottom: 0;
    font-size: 1rem;
    line-height: 1.5;
    color: #212529;
    background-color: #e9ecef;
    border: 1px solid #ced4da;
    border-radius: .375rem;
}

.bs-scope .input-group-prepend {
    display: inline-flex;
}

/* Validation color */
.bs-scope .text-danger {
    color: #dc3545 !important;
    font-size: .875rem;
}

/* Buttons */
.bs-scope .btn {
    display: inline-block;
    font-weight: 400;
    line-height: 1.5;
    padding: .375rem .75rem;
    font-size: 1rem;
    border-radius: .375rem;
    color: #212529;
    text-align: center;
    text-decoration: none;
    background-color: transparent;
    border: 1px solid transparent;
    cursor: pointer;
    user-select: none;
    transition: color .15s, background-color .15s, border-color .15s, box-shadow .15s;
}

    .bs-scope .btn:focus-visible {
        outline: 0;
        box-shadow: 0 0 0 var(--bs-focus-ring-width) var(--bs-focus-ring-color);
    }

    .bs-scope .btn:hover {
        filter: brightness(.97);
    }

/* Links inside scope */
.bs-scope a {
    color: #0d6efd;
    text-decoration: underline;
}

    .bs-scope a:hover {
        color: #0a58ca;
    }

/* Optional: tame <br> spacing you used in markup (scoped) */
.bs-scope br {
    display: block;
    margin: .5rem 0;
}

/* Scoped Bootstrap 5.3.2 .container */
.bs-scope .container {
    width: 100%;
    padding-right: calc(var(--bs-gutter-x, 0.75rem) * 0.5);
    padding-left: calc(var(--bs-gutter-x, 0.75rem) * 0.5);
    margin-right: auto;
    margin-left: auto;
    background-color: white;
}

/* Responsive max-width breakpoints (exact from BS 5.3.2) */
@media (min-width: 576px) {
    .bs-scope .container {
        max-width: 540px;
    }
}

@media (min-width: 768px) {
    .bs-scope .container {
        max-width: 720px;
    }
}

@media (min-width: 992px) {
    .bs-scope .container {
        max-width: 960px;
    }
}

@media (min-width: 1200px) {
    .bs-scope .container {
        max-width: 1140px;
    }
}

@media (min-width: 1400px) {
    .bs-scope .container {
        max-width: 1320px;
    }
}

/* ===================== GRID ===================== */
.bs-scope .row {
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 0;
    display: flex;
    flex-wrap: wrap;
    margin-top: calc(-1 * var(--bs-gutter-y));
    margin-right: calc(-.5 * var(--bs-gutter-x));
    margin-left: calc(-.5 * var(--bs-gutter-x));
}

    .bs-scope .row > * {
        box-sizing: border-box;
        flex-shrink: 0;
        width: 100%;
        max-width: 100%;
        padding-right: calc(var(--bs-gutter-x) * 0.5);
        padding-left: calc(var(--bs-gutter-x) * 0.5);
        margin-top: var(--bs-gutter-y);
    }

.bs-scope .justify-content-center {
    justify-content: center !important;
}

.bs-scope .mt-3 {
    margin-top: 1rem !important;
}

@media (min-width: 768px) {
    .bs-scope .col-md-8 {
        flex: 0 0 auto;
        width: 66.666667%;
    }
}

/* ===================== ALERT ===================== */
.bs-scope .alert {
    position: relative;
    padding: 1rem 1rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    border-radius: 0.375rem;
}

.bs-scope .alert-primary {
    color: #084298;
    background-color: #cfe2ff;
    border-color: #b6d4fe;
}
/* ===================== GRID ===================== */
.bs-scope .row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--bs-gutter-y));
  margin-right: calc(-.5 * var(--bs-gutter-x));
  margin-left: calc(-.5 * var(--bs-gutter-x));
}

.bs-scope .row > * {
  box-sizing: border-box;
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

.bs-scope .justify-content-center {
  justify-content: center !important;
}

.bs-scope .mt-3 {
  margin-top: 1rem !important;
}

@media (min-width: 768px) {
  .bs-scope .col-md-8 {
    flex: 0 0 auto;
    width: 66.666667%;
  }
}

/* ===================== ALERT ===================== */
.bs-scope .alert {
  position: relative;
  padding: 1rem 1rem;
  margin-bottom: 1rem;
  border: 1px solid transparent;
  border-radius: 0.375rem;
}

.bs-scope .alert-primary {
  color: #084298;
  background-color: #cfe2ff;
  border-color: #b6d4fe;
}
