/*
* Main BMIS CSS
******************************************************************************/
/* Rosseville */
@font-face {
    font-family: 'Rosseville';
    src: url('../fonts/Rosseville.ttf') format('truetype');
    font-weight: 100;
    font-style: normal;
}

/* EndlessSunrise */
@font-face {
    font-family: 'EndlessSunriseRegular';
    src: url('../fonts/EndlessSunriseRegular.ttf') format('truetype');
    font-weight: 100;
    font-style: normal;
}

.llc-text{
    font-family: 'EndlessSunriseRegular', sans-serif !important;
}

.auth-logo{
    width: 50px;
    height: 50px;
    display: block;
    color: var(--bs-primary);
}

.auth-cover-copy {
    position: relative;
    isolation: isolate;
    width: 100%;
    min-height: 100vh;
    padding: clamp(7rem, 9vw, 11rem);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: center;
    color: #fff;
    background: linear-gradient(
        145deg,
        color-mix(in srgb, var(--bs-primary) 78%, #000) 0%,
        var(--bs-primary) 65%,
        color-mix(in srgb, var(--bs-primary) 68%, #fff) 100%
    );
}

.auth-cover-copy::after {
    content: '';
    position: absolute;
    z-index: -1;
    right: -12rem;
    bottom: -10rem;
    width: 27.5rem;
    height: 27.5rem;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 50%;
    box-shadow: 0 0 0 4.375rem rgba(255, 255, 255, 0.04),
                0 0 0 8.75rem rgba(255, 255, 255, 0.03);
}

.auth-cover-mark {
    width: 4rem;
    height: 4rem;
    margin-bottom: 2.625rem;
    border-radius: 1.25rem;
    display: grid;
    place-items: center;
    background: #fff;
    color: var(--bs-primary);
    box-shadow: 0 18px 50px rgba(9, 61, 56, 0.22);
    /* font-family: Georgia, serif; */
    font-size: 2rem;
    font-weight: 600;
}

.auth-cover-eyebrow {
    margin: 0 0 0.75rem;
    color: #c9ebe5;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.13em;
    text-transform: uppercase;
}

.auth-cover-copy h1 {
    max-width: 45rem;
    margin: 0 0 1.5rem;
    color: #fff;
    /* font-family: Georgia, serif; */
    font-size: clamp(2.8rem, 5vw, 5.3rem);
    font-weight: 600;
    line-height: 1.02;
}

.auth-cover-description {
    max-width: 35rem;
    margin: 0;
    color: #d8efeb;
    font-size: 1.12rem;
    line-height: 1.7;
}

.auth-cover-trust {
    margin-top: 2.75rem;
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.75rem;
    color: #d8efeb;
    font-size: 0.85rem;
}

.auth-cover-trust span::before {
    content: '\2713';
    margin-right: 0.45rem;
}

/* .tox-tinymce{
    --bs-border-opacity: 1;
    border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;
} */

.a-pointer{
    cursor: pointer !important;
}

.tr-pointer{
    cursor: pointer !important;
}

.tr-pointer:hover {
    --bs-table-bg: rgba(var(--bs-primary-rgb), .2);
    --bs-table-hover-bg: color-mix(in sRGB, var(--bs-body-bg) 46%, var(--bs-table-bg));
    --bs-table-striped-bg: color-mix(in sRGB, var(--bs-body-bg) 47%, var(--bs-table-bg));
    --bs-table-border-color: color-mix(in sRGB, var(--bs-table-bg) 88%, var(--bs-table-color));
    --bs-table-active-bg: color-mix(in sRGB, var(--bs-body-bg) 32.5%, var(--bs-table-bg));
}

#sig-pad{
    border: 1px solid #e8e8e8;
    background-color: #fff;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.08) inset;
    border-radius: 4px;
    touch-action: none; 
    user-select: none;
}

.bash {
    background-image: linear-gradient(rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.9)), url('../logo.png');
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-position: center;
    background-color: white;
    background-size: 500px 500px;
    color: black !important;
    font-size: 12pt; 
    font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;
    width: 100%;
    padding: 5px;
    display: inline-block;
    max-height: 400px;
    min-height: 400px;
    overflow-y: scroll;
}

.nav-item a .icon-base{
  vertical-align: 0% !important;
}

#template-customizer .template-customizer-open-btn {
    display: none !important;
}

/* ! For .layout-navbar-fixed added fix padding top to .layout-page */
/* Default navbar */
.layout-navbar-fixed .layout-wrapper:not(.layout-without-menu) .layout-page {
  padding-top: 64px !important;
}
.layout-navbar-fixed .layout-wrapper:not(.layout-horizontal):not(.layout-without-menu) .layout-page {
  padding-top: 72px !important;
}
/* Navbar page z-index issue solution */
.content-wrapper .navbar {
  z-index: auto;
}

.public-page .content-wrapper {
    justify-content: flex-start;
}

.menu-logo{
    width: 32px;
}

.sidebar-profile-card {
    flex-shrink: 0;
    border-radius: 0.5rem;
}

#layout-menu.menu-vertical > .menu-inner-shadow {
    position: relative;
    flex-shrink: 0;
    inset-block-start: 0;
    margin-block-end: -3rem;
}

#layout-menu.menu-vertical > .menu-inner {
    min-block-size: 0;
}

.sidebar-profile-cover {
    height: 135px;
    position: relative;

    background:
        linear-gradient(
            to bottom,
            rgba(0, 0, 0, 0.05),
            rgba(0, 0, 0, 0.65)
        ),
        url('../img/sidebar-cover.png') center center / cover no-repeat;
}

.sidebar-profile-content {
    position: absolute;
    left: 0;
    right: 0;
    top: 1rem;

    display: flex;
    align-items: center;

    padding: 1rem;
    gap: 0.75rem;

    color: #fff;
}

.sidebar-profile-logo {
    width: 48px;
    height: 48px;

    flex: 0 0 48px;

    object-fit: contain;

    background: #fff;
    border-radius: 50%;
    padding: 2px;
}

.sidebar-profile-text {
    min-width: 0;
    line-height: 1.2;
}

.sidebar-profile-text .fw-semibold {
    font-size: 0.85rem;
    white-space: nowrap;
}

.sidebar-profile-text small {
    display: block;
    margin-top: 3px;
    font-size: 0.7rem;
    opacity: 0.9;
}

.layout-menu-collapsed .sidebar-profile-card {
    display: none !important;
}

.layout-menu-collapsed .menu-link .badge {
    display: none !important;
}

.bmis-profile-banner {
    block-size: 250px;
    background: linear-gradient(135deg, var(--bs-bmis-blue), var(--bs-bmis-red));
}
@media (max-width: 767.98px) {
    .bmis-profile-banner {
        block-size: 150px;
    }
}

/*
* FRONTEND BELOW
******************************************************************************/

.llc-text{
    font-family: 'EndlessSunriseRegular', sans-serif !important;
}

.bmis-text{
    color: var(--bs-primary);
}

/* Mobile Menu */
.bottom-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--bs-paper-bg);
    display: flex;
    justify-content: space-around;
    align-items: center;
    padding: 8px 0 calc(8px + env(safe-area-inset-bottom));
    border-top: 1px solid var(--bs-border-color);
    box-shadow: 0 -4px 20px rgba(var(--bs-primary-rgb), 0.08);
    border-radius: 20px 20px 0 0;
    z-index: 1030; /* above content */
    
    /* background: linear-gradient(270deg, rgba(var(--bs-danger-rgb), 100%) 0%, var(--bs-primary) 70%); */
}

#preloader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #fff;          /* background color */
    z-index: 9999;             /* stays on top */
    display: flex;
    align-items: center;
    justify-content: center;
}

/* SERVICES */

.svc-card:hover { transform: scale(1.02); }

.svc-link{
    cursor: pointer;
}

.svc-icon{
    font-size: 4rem !important;
}

.srv-bg-icon{
    position: absolute !important;
    font-size:10rem !important;
    right: -10px !important;
    top: -10px !important;
    opacity:0.15 !important;
}

.bmis-card-gradient{
    background: linear-gradient(135deg, var(--bs-primary-rgb), var(--bs-danger-rgb)) !important;
    color: #fff !important;
}

.bottom-nav a {
    flex: 1;
    text-align: center;
    padding: 6px 0;
    font-size: 0.85rem;
    color: var(--bs-body-color);
    text-decoration: none;
}

.bottom-nav a.active {
    color: var(--bs-primary);
    font-weight: 600;
}

.fab-button {
    position: absolute;
    top: -25px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--bs-primary);
    color: var(--bs-white);
    width: 50px;
    height: 50px;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 24px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.3);
    border: 3px solid var(--bs-paper-bg) !important;
}

/* Public Home */

.public-page #secondaryMenu {
    background: var(--bs-paper-bg);
    color: var(--bs-body-color);
}

.public-page #secondaryMenu .nav-link {
    padding: 0.25rem 1rem;
}

.public-page #secondaryMenu .nav-link a {
    display: block;
    padding: 0.75rem 1rem;
    border-radius: var(--bs-border-radius);
    color: var(--bs-body-color);
}

.public-page #secondaryMenu .nav-link a.active,
.public-page #secondaryMenu .nav-link a:hover {
    background: rgba(var(--bs-primary-rgb), 0.12);
    color: var(--bs-primary);
}

.public-page .bottom-nav a:hover,
.public-page .bottom-nav a:focus-visible {
    color: var(--bs-primary);
}

.home-hero {
    padding: 9rem 0 4rem;
    border-radius: 0 0 3rem 3rem;
    background-color: var(--bs-paper-bg);
    background-image: linear-gradient(90deg, color-mix(in srgb, var(--bs-paper-bg) 94%, transparent), color-mix(in srgb, var(--bs-paper-bg) 45%, transparent)), url('../img/pages/hero-header.png');
    background-position: center, center bottom;
    background-size: cover, cover;
    background-repeat: no-repeat;
}

.home-hero-description {
    max-width: 42rem;
    color: var(--bs-body-color);
}

.home-hero-art {
    padding: 1.5rem;
    border-radius: 50% 50% 1.5rem 1.5rem;
    background: rgba(var(--bs-primary-rgb), 0.06);
}

.home-hero-art > img {
    width: 100%;
    max-width: 22rem;
}

.home-hero-caption {
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 1rem;
    background: var(--bs-paper-bg);
}

.home-page > section:not(.home-hero) {
    margin-block: 2.5rem !important;
}

.home-services .home-service-card {
    transition: border-color 0.2s, transform 0.2s;
}

.home-services .svc-link:hover .home-service-card,
.home-services .svc-link:focus-visible .home-service-card {
    border-color: var(--bs-primary) !important;
    transform: translateY(-3px);
}

.home-services .card-body {
    gap: 1rem;
    padding: 1.5rem;
}

.home-services .svc-icon {
    font-size: 2.5rem !important;
}

.home-statistics .card-body {
    padding: 1.5rem 0.75rem;
}

.home-page .draggable-marquee {
    flex: 1;
    min-width: 0;
}

.home-page #dsp_map {
    min-height: 22rem;
}

#event_calendar .fc-more-popover {
    width: min(28rem, calc(100vw - 2rem));
    max-width: 100%;
    z-index: 1040;
}

#event_calendar .fc-more-popover .fc-popover-body {
    min-width: 0;
    max-height: 22rem;
    overflow-y: auto;
}

#event_calendar .fc-more-popover .fc-event-main-frame {
    min-width: 0;
    align-items: flex-start;
}

#event_calendar .fc-more-popover .fc-event-time {
    flex-shrink: 0;
}

#event_calendar .fc-more-popover .fc-event-title-container {
    min-width: 0;
}

#event_calendar .fc-more-popover .fc-event-title,
#event_calendar .fc-more-popover .fc-daygrid-dot-event,
#event_calendar .fc-list-event-title {
    min-width: 0;
    white-space: normal;
    overflow-wrap: anywhere;
}

.home-contact #dsp_map {
    min-height: 26rem;
}

.home-contact a,
.home-profile .user-profile-info,
.home-profile .card-body li,
.home-page .list-group-item .flex-grow-1 {
    overflow-wrap: anywhere;
    min-width: 0;
}

.home-profile .card-body li {
    flex-wrap: wrap;
}

.home-profile .user-profile-info .list-inline-item {
    min-width: 0;
    max-width: 100%;
}

.home-profile #userImg {
    background-color: #fff;
}

@media (max-width: 991.98px) {
    .home-hero-description {
        margin-inline: auto;
    }

    .home-hero-art {
        max-width: 25rem;
        margin-inline: auto;
    }
}

@media (max-width: 767.98px) {
    .public-page {
        padding-bottom: calc(6rem + env(safe-area-inset-bottom));
    }

    .home-hero {
        padding: 7rem 0 2rem;
        border-radius: 0 0 1.5rem 1.5rem;
    }

    .home-hero h1 {
        font-size: 2rem;
    }

    .home-hero-art > img {
        max-width: 12rem;
    }

    .home-services .card-body {
        flex-direction: column-reverse;
        align-items: flex-start !important;
        padding: 1rem;
    }

    .home-page .fc-header-toolbar {
        flex-wrap: wrap;
        gap: 0.75rem;
    }

    .home-page .fc-toolbar-title {
        font-size: 1.25rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .home-services .home-service-card {
        transition: none;
    }
}

.app-icon {
    width: 80px;
    height: 80px;
    border-radius: 20%;
    background-color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    transition: transform 0.2s;
    cursor: pointer;
    margin: 10px auto;
}
.app-icon img {
    width: 80%;
    height: 80%;
    object-fit: contain;
}
.app-icon:hover {
    transform: scale(1.1);
}
.app-name {
    text-align: center;
    font-size: 0.8rem;
    margin-top: 5px;
}

.recaptcha-wrapper {
    display: inline-block;
    width: 100%;
    text-align: center;
}

.g-recaptcha {
    transform: scale(1);       /* Default size */
    transform-origin: center;
    width: 100% !important;    /* Force full width container */
}

/* Optional: Adjust scale for smaller screens */
@media (max-width: 400px) {
    .g-recaptcha {
        transform: scale(0.9);
    }
}

@media (min-width: 768px) {
    .mt-login {
        margin-top: 130px !important;
    }
}

/* Main stepper */
.steps {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 2rem; /* spacing between steps */
    margin-bottom: 2rem;
    position: relative;
    text-align: center;
}

/* Step button */
.step-button {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    border: 2px solid  var(--bs-primary);
    background-color: var(--bs-secondary);
    transition: .4s;
    font-size: 1.25rem;
    color: #fff;
}

.step-button[aria-expanded="true"],
.step-button.active {
    background-color: var(--bs-bmis-blue);
    color: #fff;
}

.done {
    background-color: var(--bs-bmis-blue);
    color: #fff;
}

.step-item {
    flex: 1;
    min-width: 80px;
    position: relative;
    z-index: 10;
}

/* Progress bar centered behind steps */
#progress {
    position: absolute;
    top: 32px; /* aligns with center of buttons */
    left: 0;
    right: 0;
    width: 100%;
    max-width: 90%;
    margin: auto;
    height: 5px;
    z-index: 5;
}

/* Navbar dropdown panels (quick links, notifications) can exceed the viewport
   width and overflow horizontally on tablet-width screens. The theme's own
   fix for this (position: static + 92% width) only applies below 768px, but
   the right-side navbar icons are never collapsed/hidden at any width - so
   the same fix is needed up to the navbar's actual breakpoint (xl, 13). */3@media (min-width: 768px) and (max-width: 1199.98px) {
    .layout-navbar .navbar-nav .nav-item.dropdown {
        position: static;
    }
    .layout-navbar .navbar-nav .nav-item.dropdown .dropdown-menu {
        position: absolute;
        inline-size: 92%;
        inset-inline-start: 0.9rem;
        min-inline-size: auto;
    }
}

/* Progress bar colors */
#progress::-webkit-progress-value {
    background-color: var(--bs-bmis-blue);
    transition: .5s ease;
}
#progress::-webkit-progress-bar {
    background-color: var(--bs-secondary);
}

/* Keep searchable certificate custom fields within their input group. */
#certificate-request-add-form #dsp_cflist .input-group > .select2-container,
#certificate-request-edit-form #dsp_cflist .input-group > .select2-container {
    flex: 1 1 0%;
    min-width: 0;
    width: 1% !important;
}

#certificate-request-add-form #dsp_cflist .input-group > .select2-container .select2-selection,
#certificate-request-edit-form #dsp_cflist .input-group > .select2-container .select2-selection {
    border-radius: 0;
}

/* Keep report dropdowns within the form and grouped selects on one row. */
#report-form {
    position: relative;
}

#report-form > .select2-container--open {
    inline-size: auto !important;
}

#report-form .input-group > .select2-container {
    flex: 1 1 0%;
    min-inline-size: 0;
    inline-size: 1% !important;
}

#report-form .input-group > .select2-container .select2-selection {
    border-radius: 0;
}

#report-form .input-group > .form-select:first-child + .select2-container {
    margin-inline-start: 0;
}

#report-form .input-group > .form-select:first-child + .select2-container .select2-selection {
    border-start-start-radius: var(--bs-border-radius);
    border-end-start-radius: var(--bs-border-radius);
}

#report-form .input-group > .select2-container:last-child .select2-selection {
    border-start-end-radius: var(--bs-border-radius);
    border-end-end-radius: var(--bs-border-radius);
}

/* Spinner inside .js-typeahead fields while bootstrap5-autocomplete is
   fetching suggestions - it toggles the "is-loading" class on the input
   itself, so this is just a background-image swap, no markup needed.
   Right padding is permanent so text doesn't reflow when it appears. */
input.form-control.js-typeahead {
    padding-right: 2rem;
}
/* Tab pill nav (icon + label form-section tabs, e.g. household edit):
   inactive pills get a primary outline on mobile only, where they stack
   full-width (flex-column) and otherwise blend into the background. Add
   the "nav-pills-outline" class alongside "nav-pills" to opt a nav in.
   Scoped to <768px (below md, where flex-md-row switches to a row) so
   desktop pills stay plain. box-shadow instead of border keeps pill size
   identical to the active pill (no border-width jitter). */
@media (max-width: 767.98px) {
    .nav-pills-outline .nav-link:not(.active) {
        box-shadow: 0 0 0 1px var(--bs-primary) inset;
        color: var(--bs-primary);
    }
}

input.form-control.js-typeahead.is-loading {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='16' height='16'%3e%3ccircle cx='12' cy='12' r='9' fill='none' stroke='%236c757d' stroke-width='3' stroke-linecap='round' stroke-dasharray='42 14'%3e%3canimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='0.75s' repeatCount='indefinite'/%3e%3c/circle%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.6rem center;
    background-size: 1rem 1rem;
}
