html, body {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

:root {
    --bs-primary: #0d9488;
    --bs-primary-rgb: 13, 148, 136;
    --bs-primary-text-emphasis: #115e59;
    --bs-primary-bg-subtle: #ccfbf1;
    --bs-primary-border-subtle: #5eead4;
    --bs-link-color: #0d9488;
    --bs-link-color-rgb: 13, 148, 136;
    --bs-link-hover-color: #0f766e;
    --bs-link-hover-color-rgb: 15, 118, 110;
}

.table-primary {
    --bs-table-color: #000;
    --bs-table-bg: #ccfbf1;
    --bs-table-border-color: #a8d8d1;
    --bs-table-striped-bg: #bdece6;
    --bs-table-striped-color: #000;
    --bs-table-active-bg: #adddd7;
    --bs-table-active-color: #000;
    --bs-table-hover-bg: #b5e5df;
    --bs-table-hover-color: #000;
    color: var(--bs-table-color);
    border-color: var(--bs-table-border-color);
}

a, .btn-link {
    color: #0d9488;
}

.btn-primary {
    color: #fff;
    background-color: #0d9488;
    border-color: #0f766e;
}

.btn-primary:hover, .btn-primary:active {
    background-color: #0f766e;
    border-color: #115e59;
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #2dd4bf;
}

.content {
    padding-top: 1.1rem;
    /* The assistant FAB is fixed to the viewport's bottom-right corner — without this, whatever
       content ends up at the bottom of a page's scroll range (a table's last row of Editar/
       Eliminar buttons, a calendar's bottom-right day cell) permanently sits underneath it. */
    padding-bottom: 5rem;
}

/* Success/error banners after Guardar/Eliminar (alert-dismissible, as opposed to persistent
   banners like TenantStatusBanner) render at the top of the page — if the user is scrolled down
   filling a long form, they'd never see it appear. Sticking it to the top of the viewport means it
   catches and stays visible the moment its normal position would scroll out of view. */
.alert.alert-dismissible {
    position: sticky;
    top: 0.75rem;
    z-index: 20;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
}

/* KPI/chart card shells — used by the dashboard (Home.razor) and the reports pages
   (ReportesTurnos, ReportesAusentismo and their admin/all-tenant equivalents). Global rather
   than scoped to one component since every page that shows stats reuses this exact shell. */
.kpi-card {
    border: none;
    border-radius: 0.75rem;
    position: relative;
    transition: box-shadow 0.15s ease-in-out;
}

.kpi-card:hover {
    box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.08);
}

.kpi-card .card-body {
    padding: 1.25rem 4.5rem 1rem 1.25rem;
}

.kpi-label {
    color: #6c757d;
    font-size: 0.8rem;
    font-weight: 500;
    margin-bottom: 0.25rem;
}

.kpi-value {
    font-size: 1.75rem;
    font-weight: 600;
    line-height: 1.1;
    color: #212529;
}

.kpi-icon-badge {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--bs-primary-bg-subtle);
}

.kpi-icon-badge .bi {
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0;
    top: 0;
    background-color: var(--bs-primary-text-emphasis);
}

.kpi-highlight .kpi-icon-badge {
    background-color: var(--bs-primary);
}

.kpi-highlight .kpi-icon-badge .bi {
    background-color: #fff;
}

.dashboard-chart-card {
    border: none;
    border-radius: 0.75rem;
}

.dashboard-chart-card .card-header {
    background: transparent;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    font-weight: 600;
    font-size: 0.95rem;
}

/* Sponsor Plus — sticky footer banner (SponsorPlusBanner.razor). Global, not scoped to one
   page, since it's meant to sit above everything regardless of which component renders it.
   Centered and capped in width (like infobae's footer ad) instead of spanning edge-to-edge. */
.sponsor-plus-banner {
    position: fixed;
    left: 50%;
    bottom: 0.75rem;
    transform: translateX(-50%);
    width: min(720px, 92vw);
    z-index: 1030;
    background: #fff;
    border-radius: 0.5rem;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
    overflow: hidden;
}

.sponsor-plus-banner img {
    width: 100%;
    max-height: 100px;
    object-fit: cover;
    display: block;
}

.sponsor-plus-controls {
    position: absolute;
    top: 4px;
    right: 8px;
    display: flex;
    gap: 4px;
}

.sponsor-plus-btn {
    background: rgba(0, 0, 0, 0.6);
    color: #fff;
    border: none;
    border-radius: 50%;
    width: 24px;
    height: 24px;
    line-height: 1;
    font-size: 0.8rem;
    cursor: pointer;
}

/* Collapsed state — the banner itself is gone but this arrow tab stays put so there's always
   a visible, obvious way to bring it back (never a total, unrecoverable dismiss). */
.sponsor-plus-tab {
    position: fixed;
    left: 50%;
    bottom: 0.75rem;
    transform: translateX(-50%);
    z-index: 1030;
    background: #fff;
    color: #212529;
    border: none;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    line-height: 1;
    font-size: 1rem;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
    cursor: pointer;
}

/* Sponsor Premium — full-screen interstitial (SponsorPremiumInterstitial.razor). */
.sponsor-premium-overlay {
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: rgba(0, 0, 0, 0.85);
    display: flex;
    align-items: center;
    justify-content: center;
}

.sponsor-premium-media {
    max-width: 90vw;
    max-height: 90vh;
    display: block;
}

.sponsor-premium-close {
    position: absolute;
    top: -0.75rem;
    right: -0.75rem;
    background: #fff;
    color: #212529;
    border: none;
    border-radius: 1.5rem;
    padding: 0.4rem 1rem;
    font-weight: 600;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
    cursor: pointer;
}

/* Regular preview backdrop — only used by the "Probar" button on /sponsors, the real Regular
   widget on Home.razor is just an inline card with no backdrop. */
.sponsor-preview-backdrop {
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Plus preview only — the real banner has no "exit" affordance of its own (dismissing it just
   collapses to the arrow tab), so the admin preview needs an explicit way out of preview mode
   entirely, positioned clear of the banner and its collapse arrow. */
.sponsor-preview-exit {
    position: fixed;
    left: 50%;
    bottom: 4.5rem;
    transform: translateX(-50%);
    z-index: 1031;
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}

.login-page {
    min-height: 100vh;
    padding: 2rem 1rem;
    background: linear-gradient(160deg, #0f766e 0%, #134e4a 100%);
}

.login-card {
    width: 100%;
    max-width: 420px;
    border: none;
    border-radius: 1rem;
}

/* Nav/shortcut icons — mask-based so they inherit whatever text color surrounds them
   (white in the dark sidebar, teal/dark in a light button), instead of a fixed color. */
.bi {
    display: inline-block;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    top: -1px;
    background-color: currentColor;
    mask-repeat: no-repeat;
    mask-size: contain;
    mask-position: center;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    -webkit-mask-position: center;
}

/* Small inline lock badge for tab labels (Bootstrap nav-tabs) — the sidebar .bi sizing
   (1.25rem, its own margin/top offset) makes a tab taller than its plain-text siblings and
   throws off the row's vertical alignment, so this gets its own compact sizing instead. */
.lock-badge {
    display: inline-block;
    width: 0.7rem;
    height: 0.7rem;
    margin: 0 0 0 0.35rem;
    vertical-align: 0.05em;
    background-color: currentColor;
    mask-repeat: no-repeat;
    mask-size: contain;
    mask-position: center;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    -webkit-mask-position: center;
}

.bi-house-door-fill-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}

.bi-calendar3-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='1' y='2' width='14' height='13' rx='1.5'/%3E%3Crect x='3' y='0' width='1.5' height='4' rx='0.75'/%3E%3Crect x='11.5' y='0' width='1.5' height='4' rx='0.75'/%3E%3Crect x='1' y='5' width='14' height='1.2'/%3E%3C/svg%3E");
}

.bi-person-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person' viewBox='0 0 16 16'%3E%3Cpath d='M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z'/%3E%3C/svg%3E");
}

.bi-person-badge-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person-badge' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0z'/%3E%3Cpath d='M4.5 0A2.5 2.5 0 0 0 2 2.5V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2.5A2.5 2.5 0 0 0 11.5 0h-7zM3 2.5A1.5 1.5 0 0 1 4.5 1h7A1.5 1.5 0 0 1 13 2.5v10.795a4.2 4.2 0 0 0-.776-.492C11.392 12.387 10.063 12 8 12s-3.392.387-4.224.803a4.2 4.2 0 0 0-.776.492V2.5z'/%3E%3C/svg%3E");
}

.bi-person-fill-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person-fill' viewBox='0 0 16 16'%3E%3Cpath d='M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3Zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z'/%3E%3C/svg%3E");
}

.bi-arrow-bar-left-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-arrow-bar-left' viewBox='0 0 16 16'%3E%3Cpath d='M12.5 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5ZM10 8a.5.5 0 0 1-.5.5H3.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L3.707 7.5H9.5a.5.5 0 0 1 .5.5Z'/%3E%3C/svg%3E");
}

.bi-people-fill-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Ccircle cx='5.5' cy='5' r='2.2'/%3E%3Cpath d='M1 13c0-2 2-3.6 4.5-3.6S10 11 10 13v.6H1V13z'/%3E%3Ccircle cx='11' cy='5.6' r='1.8'/%3E%3Cpath d='M11.8 9.6c1.8.3 3.2 1.6 3.2 3.2v.8h-4v-.4c0-1.3-.5-2.5-1.4-3.4.7-.2 1.4-.3 2.2-.2z'/%3E%3C/svg%3E");
}

.bi-briefcase-fill-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 1a.5.5 0 0 0-.5.5V3H3.5A1.5 1.5 0 0 0 2 4.5V6h12V4.5A1.5 1.5 0 0 0 12.5 3H10V1.5a.5.5 0 0 0-.5-.5h-3zM7 3V2h2v1H7z'/%3E%3Cpath d='M14 7H2v5.5A1.5 1.5 0 0 0 3.5 14h9a1.5 1.5 0 0 0 1.5-1.5V7zM6.5 8h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1z'/%3E%3C/svg%3E");
}

.bi-clipboard-list-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M5 1.5A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5v1h1A1.5 1.5 0 0 1 13.5 4v10a1.5 1.5 0 0 1-1.5 1.5h-8A1.5 1.5 0 0 1 2.5 14V4A1.5 1.5 0 0 1 4 2.5h1v-1zM6 1.5v1h4v-1a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5z'/%3E%3Cpath d='M4.5 6a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm0 3a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}

.bi-geo-pin-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='6' r='4'/%3E%3Cpath d='M8 16 4 8h8z'/%3E%3C/svg%3E");
}

.bi-sliders-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='1' y='2.5' width='14' height='1.5' rx='0.75'/%3E%3Ccircle cx='5' cy='3.25' r='2'/%3E%3Crect x='1' y='7.25' width='14' height='1.5' rx='0.75'/%3E%3Ccircle cx='11' cy='8' r='2'/%3E%3Crect x='1' y='12' width='14' height='1.5' rx='0.75'/%3E%3Ccircle cx='7' cy='12.75' r='2'/%3E%3C/svg%3E");
}

.bi-megaphone-fill-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M1 6.5a1 1 0 0 1 1-1h1.5l7-3a.5.5 0 0 1 .7.46v9.08a.5.5 0 0 1-.7.46l-7-3H2a1 1 0 0 1-1-1v-1.5z'/%3E%3Cpath d='M4.5 9.5v2.5a1 1 0 0 0 1 1H6a1 1 0 0 0 1-1v-2H4.5z'/%3E%3C/svg%3E");
}

.bi-heart-pulse-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='1' y='1' width='14' height='14' rx='7' fill='none' stroke='white' stroke-width='1.3'/%3E%3Crect x='6.9' y='4' width='2.2' height='8' rx='1'/%3E%3Crect x='4' y='6.9' width='8' height='2.2' rx='1'/%3E%3C/svg%3E");
}

.bi-person-check-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm-5 6c0-1 1-4 5-4a5.5 5.5 0 0 1 2.1.4A4.5 4.5 0 0 0 8 12.5c0 .84.22 1.63.6 2.31C8.4 14.98 8.2 15 8 15H2s-1 0-1-1Z'/%3E%3Cpath d='M12.5 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm2.03 3.03-2.5 2.5a.5.5 0 0 1-.71 0l-1.25-1.25a.5.5 0 1 1 .71-.71l.89.89 2.15-2.15a.5.5 0 0 1 .71.71Z'/%3E%3C/svg%3E");
}

.bi-shield-lock-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M8 0 1.5 2.5v5.4C1.5 12 4.3 14.7 8 16c3.7-1.3 6.5-4 6.5-8.1V2.5L8 0Z'/%3E%3Crect x='5.8' y='6.5' width='4.4' height='4' rx='0.6'/%3E%3Cpath d='M6.6 6.5v-1a1.4 1.4 0 0 1 2.8 0v1' stroke='white' stroke-width='1' fill='none'/%3E%3C/svg%3E");
}

.bi-chevron-down-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M1.6 5.6a.8.8 0 0 1 1.13 0L8 10.87l5.27-5.27a.8.8 0 1 1 1.13 1.13l-5.83 5.84a.8.8 0 0 1-1.14 0L1.6 6.73a.8.8 0 0 1 0-1.13Z'/%3E%3C/svg%3E");
}

.bi-arrows-collapse-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M2 4.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5Zm0 7a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5ZM5.15 7.15a.5.5 0 0 1 .7 0L8 9.3l2.15-2.15a.5.5 0 1 1 .7.7l-2.5 2.5a.5.5 0 0 1-.7 0l-2.5-2.5a.5.5 0 0 1 0-.7Z'/%3E%3C/svg%3E");
}

.bi-person-lines-fill-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm-5 6c0-1 1-4 5-4s5 3 5 4-1 1-1 1H2s-1 0-1-1Z'/%3E%3Crect x='9.5' y='4' width='5' height='1' rx='0.5'/%3E%3Crect x='9.5' y='7' width='5' height='1' rx='0.5'/%3E%3Crect x='9.5' y='10' width='5' height='1' rx='0.5'/%3E%3Crect x='9.5' y='13' width='3' height='1' rx='0.5'/%3E%3C/svg%3E");
}

.bi-building-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='3' y='1' width='7' height='14' rx='0.5'/%3E%3Crect x='10' y='6' width='4' height='9' rx='0.5'/%3E%3C/svg%3E");
}

.bi-gear-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3.3'/%3E%3Crect x='7.1' y='0.5' width='1.8' height='2.6' rx='0.5'/%3E%3Crect x='7.1' y='12.9' width='1.8' height='2.6' rx='0.5'/%3E%3Crect x='0.5' y='7.1' width='2.6' height='1.8' rx='0.5'/%3E%3Crect x='12.9' y='7.1' width='2.6' height='1.8' rx='0.5'/%3E%3Crect x='2.3' y='2.3' width='2.4' height='1.6' rx='0.5' transform='rotate(45 3.5 3.1)'/%3E%3Crect x='11.3' y='2.3' width='2.4' height='1.6' rx='0.5' transform='rotate(135 12.5 3.1)'/%3E%3Crect x='2.3' y='12.1' width='2.4' height='1.6' rx='0.5' transform='rotate(-45 3.5 12.9)'/%3E%3Crect x='11.3' y='12.1' width='2.4' height='1.6' rx='0.5' transform='rotate(-135 12.5 12.9)'/%3E%3C/svg%3E");
}

.bi-grid-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='1' y='1' width='6' height='6' rx='1'/%3E%3Crect x='9' y='1' width='6' height='6' rx='1'/%3E%3Crect x='1' y='9' width='6' height='6' rx='1'/%3E%3Crect x='9' y='9' width='6' height='6' rx='1'/%3E%3C/svg%3E");
}

.bi-stethoscope-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M4 1a1 1 0 0 1 1 1v3a3 3 0 0 0 6 0V2a1 1 0 1 1 2 0v3a5 5 0 0 1-4 4.9V12a2.5 2.5 0 1 0 2.5-2.5.9.9 0 1 1 0-1.8A4.3 4.3 0 1 1 7 12v-2.1A5 5 0 0 1 3 5V2a1 1 0 0 1 1-1Z'/%3E%3Ccircle cx='2' cy='1.6' r='1.1'/%3E%3Ccircle cx='6' cy='1.6' r='1.1'/%3E%3C/svg%3E");
}

.bi-bell-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M8 1a1 1 0 0 1 1 1v.6c2 .4 3.5 2.2 3.5 4.4v2.5l1.2 1.8a.6.6 0 0 1-.5.9H2.8a.6.6 0 0 1-.5-.9L3.5 9.5V7c0-2.2 1.5-4 3.5-4.4V2a1 1 0 0 1 1-1Z'/%3E%3Cpath d='M6.2 13.5a1.8 1.8 0 0 0 3.6 0z'/%3E%3C/svg%3E");
}

.bi-arrow-repeat-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 4.7A5 5 0 0 1 12.9 6.3h-1.6a3.5 3.5 0 0 0-6.4-1.2z'/%3E%3Cpath d='M11.3 3.3 14.2 6l-3 2.4z'/%3E%3Cpath d='M12.5 11.3A5 5 0 0 1 3.1 9.7h1.6a3.5 3.5 0 0 0 6.4 1.2z'/%3E%3Cpath d='M4.7 12.7 1.8 10l3-2.4z'/%3E%3C/svg%3E");
}

.bi-calendar-x-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='1' y='2' width='14' height='13' rx='1.5'/%3E%3Crect x='3' y='0' width='1.5' height='4' rx='0.75'/%3E%3Crect x='11.5' y='0' width='1.5' height='4' rx='0.75'/%3E%3Crect x='1' y='5' width='14' height='1.2'/%3E%3Cpath d='M5.6 8.6a.7.7 0 0 1 1-1L8 8.98l1.4-1.38a.7.7 0 1 1 1 1L9.02 10l1.38 1.4a.7.7 0 1 1-1 1L8 11.02l-1.4 1.38a.7.7 0 1 1-1-1L6.98 10 5.6 8.6Z'/%3E%3C/svg%3E");
}

.bi-chat-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 3A1.5 1.5 0 0 1 3 1.5h10A1.5 1.5 0 0 1 14.5 3v7A1.5 1.5 0 0 1 13 11.5H6.5L3 14.5v-3H3A1.5 1.5 0 0 1 1.5 10Z'/%3E%3C/svg%3E");
}

.bi-envelope-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1 3.5A1.5 1.5 0 0 1 2.5 2h11A1.5 1.5 0 0 1 15 3.5v9a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 12.5v-9Zm2.06.44 4.94 3.7 4.94-3.7H3.06ZM14 5.15l-5.65 4.24a.6.6 0 0 1-.7 0L2 5.15V12.5c0 .28.22.5.5.5h11a.5.5 0 0 0 .5-.5V5.15Z'/%3E%3C/svg%3E");
}

.bi-bar-chart-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='1' y='9' width='3.2' height='6' rx='0.6'/%3E%3Crect x='6.4' y='5' width='3.2' height='10' rx='0.6'/%3E%3Crect x='11.8' y='2' width='3.2' height='13' rx='0.6'/%3E%3C/svg%3E");
}

.bi-wallet2-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 4.5A1.5 1.5 0 0 1 3 3h7.5a.5.5 0 0 1 0 1H3a.5.5 0 0 0-.5.5V5h11a1.5 1.5 0 0 1 1.5 1.5v6a1.5 1.5 0 0 1-1.5 1.5H3a1.5 1.5 0 0 1-1.5-1.5v-8Z' fill='none' stroke='white' stroke-width='1.2'/%3E%3Ccircle cx='11' cy='9.3' r='1.2'/%3E%3C/svg%3E");
}

.bi-cash-stack-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='1' y='3' width='14' height='2.4' rx='1'/%3E%3Crect x='1' y='6.8' width='14' height='2.4' rx='1'/%3E%3Crect x='1' y='10.6' width='14' height='2.4' rx='1'/%3E%3C/svg%3E");
}

.bi-cash-coin-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cellipse cx='8' cy='12.3' rx='6' ry='2'/%3E%3Cellipse cx='8' cy='9' rx='6' ry='2'/%3E%3Cellipse cx='8' cy='5.7' rx='6' ry='2'/%3E%3C/svg%3E");
}

.bi-lock-fill-nav-menu {
    --bi-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M4 6.5V4.5a4 4 0 0 1 8 0v2' fill='none' stroke='white' stroke-width='1.6'/%3E%3Crect x='2.5' y='6.5' width='11' height='8' rx='1.5'/%3E%3C/svg%3E");
}

.bi-house-door-fill-nav-menu,
.bi-calendar3-nav-menu,
.bi-person-nav-menu,
.bi-person-badge-nav-menu,
.bi-person-fill-nav-menu,
.bi-arrow-bar-left-nav-menu,
.bi-people-fill-nav-menu,
.bi-briefcase-fill-nav-menu,
.bi-clipboard-list-nav-menu,
.bi-geo-pin-nav-menu,
.bi-sliders-nav-menu,
.bi-megaphone-fill-nav-menu,
.bi-heart-pulse-nav-menu,
.bi-person-check-nav-menu,
.bi-shield-lock-nav-menu,
.bi-chevron-down-nav-menu,
.bi-arrows-collapse-nav-menu,
.bi-person-lines-fill-nav-menu,
.bi-building-nav-menu,
.bi-gear-nav-menu,
.bi-grid-nav-menu,
.bi-stethoscope-nav-menu,
.bi-bell-nav-menu,
.bi-arrow-repeat-nav-menu,
.bi-calendar-x-nav-menu,
.bi-chat-nav-menu,
.bi-bar-chart-nav-menu,
.bi-envelope-nav-menu,
.bi-wallet2-nav-menu,
.bi-cash-stack-nav-menu,
.bi-cash-coin-nav-menu,
.bi-lock-fill-nav-menu {
    mask-image: var(--bi-icon);
    -webkit-mask-image: var(--bi-icon);
}

/* MultiSelectFilter — <details>/<summary> styled to look like the Bootstrap dropdown it
   replaces, without needing Bootstrap's JS (not loaded site-wide). */
.multiselect-filter {
    position: relative;
    display: inline-block;
}

.multiselect-filter > summary {
    list-style: none;
    cursor: pointer;
}

.multiselect-filter > summary::-webkit-details-marker,
.multiselect-filter > summary::marker {
    display: none;
    content: "";
}

.multiselect-filter .multiselect-menu {
    position: absolute;
    top: 100%;
    left: 0;
    margin-top: 0.25rem;
    z-index: 1050;
    background-color: #fff;
    border: 1px solid rgba(0, 0, 0, 0.15);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    padding: 0.5rem;
    min-width: 220px;
    max-height: 280px;
    overflow-y: auto;
}

/* Opt-in responsive table → stacked cards on narrow screens (add class "table-responsive-cards"
   to the table and data-label="ColumnName" to each <td>; leave data-label="" on cells that
   shouldn't show a label, like an avatar or an action-buttons column). Reserved for grids meant
   to be scanned as "one record at a time" on mobile (people/item lists) — wide multi-column
   reports are left as horizontal-scroll tables since stacking 10 columns per row would make them
   harder to compare at a glance, not easier. */
@media (max-width: 767.98px) {
    .table-responsive-cards thead {
        display: none;
    }

    .table-responsive-cards, .table-responsive-cards tbody, .table-responsive-cards tr, .table-responsive-cards td {
        display: block;
        width: 100%;
    }

    .table-responsive-cards tr {
        margin-bottom: 0.75rem;
        border: 1px solid #dee2e6;
        border-radius: 0.5rem;
        padding: 0.6rem 0.85rem;
    }

    .table-responsive-cards td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 0.5rem;
        padding: 0.3rem 0;
        border: none !important;
        text-align: right;
    }

    .table-responsive-cards td[data-label]:not([data-label=""])::before {
        content: attr(data-label);
        font-weight: 600;
        color: #495057;
        text-align: left;
        flex: none;
    }

    .table-responsive-cards td[data-label=""] {
        justify-content: flex-start;
    }
}