.bi {
    display: inline-block;
    width: 1rem;
    height: 1rem;
}

:root {
    --isp-sidebar-width: 268px;
    --isp-topbar-height: 56px;
    --isp-radius-flat: 0;
    --isp-font-family: 'Play', sans-serif;

    /* Shell */
    --isp-body-bg: #0f141b;
    --isp-content-text: #e4ecf7;
    --isp-content-text-strong: #f3f7fc;
    --isp-muted-text: rgba(201, 214, 232, .86);
    --isp-label-text: #eef3fb;
    --isp-label-font-size: .8rem;
    --isp-divider: rgba(255, 255, 255, .08);

    /* Sidebar */
    --isp-sidebar-bg-top: #131922;
    --isp-sidebar-bg-bottom: #0f141c;
    --isp-sidebar-border: rgba(255, 255, 255, .06);
    --isp-nav-text: rgba(225, 233, 244, .85);
    --isp-nav-text-muted: rgba(182, 197, 218, .72);
    --isp-nav-hover: rgba(92, 146, 255, .14);
    --isp-nav-active: rgba(92, 146, 255, .24);
    --isp-nav-active-line: #6fb1ff;

    /* Topbar */
    --isp-topbar-bg: #0d131b;
    --isp-topbar-divider: rgba(255, 255, 255, .07);
    --isp-topbar-avatar-bg: rgba(255, 255, 255, .14);
    --isp-topbar-avatar-border: rgba(255, 255, 255, .2);
    --isp-topbar-trigger-hover: rgba(255, 255, 255, .07);
    --isp-topbar-dropdown-bg: #121923;
    --isp-topbar-dropdown-text: #e8eef9;
    --isp-topbar-dropdown-hover-bg: rgba(93, 148, 255, .2);
    --isp-topbar-dropdown-hover-text: #ffffff;
    --isp-topbar-dropdown-border: rgba(255, 255, 255, .09);
    --isp-topbar-dropdown-header-bg: rgba(255, 255, 255, .03);
    --isp-topbar-dropdown-header-muted: rgba(210, 222, 238, .75);

    /* Surfaces */
    --isp-card-bg: #131a23;
    --isp-card-header-bg: #111821;
    --isp-table-text: #d7e2f0;
    --isp-table-striped: rgba(255, 255, 255, .02);
    --isp-table-hover: rgba(90, 145, 255, .08);

    /* Controls */
    --isp-input-bg: #0f151d;
    --isp-input-text: #dce6f2;
    --isp-input-text-focus: #eaf2ff;
    --isp-input-border: rgba(255, 255, 255, .12);
    --isp-input-border-focus: rgba(111, 177, 255, .6);
    --isp-btn-padding-y: .34rem;
    --isp-btn-padding-x: .72rem;
    --isp-btn-font-size: .83rem;

    /* Custom searchable select */
    --isp-select-bg: #101923;
    --isp-select-border: rgba(255, 255, 255, .12);
    --isp-select-menu-bg: #121b25;
    --isp-select-option-hover: rgba(111, 177, 255, .16);
    --isp-select-option-selected: rgba(111, 177, 255, .24);
}

html[data-bs-theme='light'] {
    --isp-body-bg: #f4f7fc;
    --isp-content-text: #1a2430;
    --isp-content-text-strong: #0f172a;
    --isp-muted-text: rgba(51, 65, 85, .88);
    --isp-label-text: #0f172a;
    --isp-divider: rgba(17, 24, 39, .12);

    --isp-sidebar-bg-top: #ffffff;
    --isp-sidebar-bg-bottom: #f6f8fc;
    --isp-sidebar-border: rgba(17, 24, 39, .1);
    --isp-nav-text: rgba(30, 41, 59, .9);
    --isp-nav-text-muted: rgba(71, 85, 105, .78);
    --isp-nav-hover: rgba(37, 99, 235, .09);
    --isp-nav-active: rgba(37, 99, 235, .12);
    --isp-nav-active-line: #2563eb;

    --isp-topbar-bg: #ffffff;
    --isp-topbar-divider: rgba(17, 24, 39, .12);
    --isp-topbar-avatar-bg: rgba(15, 23, 42, .06);
    --isp-topbar-avatar-border: rgba(15, 23, 42, .14);
    --isp-topbar-trigger-hover: rgba(15, 23, 42, .06);
    --isp-topbar-dropdown-bg: #ffffff;
    --isp-topbar-dropdown-text: #1f2937;
    --isp-topbar-dropdown-hover-bg: rgba(37, 99, 235, .1);
    --isp-topbar-dropdown-hover-text: #0f172a;
    --isp-topbar-dropdown-border: rgba(17, 24, 39, .12);
    --isp-topbar-dropdown-header-bg: rgba(15, 23, 42, .03);
    --isp-topbar-dropdown-header-muted: rgba(71, 85, 105, .85);

    --isp-card-bg: #ffffff;
    --isp-card-header-bg: #f8fafc;
    --isp-table-text: #1f2937;
    --isp-table-striped: rgba(15, 23, 42, .015);
    --isp-table-hover: rgba(37, 99, 235, .07);

    --isp-input-bg: #ffffff;
    --isp-input-text: #1f2937;
    --isp-input-text-focus: #111827;
    --isp-input-border: rgba(17, 24, 39, .16);
    --isp-input-border-focus: rgba(37, 99, 235, .62);

    --isp-select-bg: #ffffff;
    --isp-select-border: rgba(17, 24, 39, .16);
    --isp-select-menu-bg: #ffffff;
    --isp-select-option-hover: rgba(37, 99, 235, .1);
    --isp-select-option-selected: rgba(37, 99, 235, .15);
}

/*
 * App shell + sidebar
 */

#appShell {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

#appShell>.isp-app-body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
}

#appShell>.isp-app-body>.isp-app-row {
    align-items: stretch;
    flex: 1 1 auto;
    min-height: calc(100vh - var(--isp-topbar-height));
}

@media (min-width: 768px) {
    #appShell>.isp-app-body>.isp-app-row {
        display: grid !important;
        flex-wrap: nowrap;
        grid-template-columns: var(--isp-sidebar-width) minmax(0, 1fr);
    }

    #appShell .isp-app-row>.sidebar {
        display: flex;
        flex: none !important;
        flex-direction: column;
        grid-column: 1;
        grid-row: 1;
        isolation: isolate;
        max-width: none !important;
        min-height: 100%;
        position: relative;
        width: 100% !important;
    }

    #appShell .isp-app-row>.sidebar::before {
        background: linear-gradient(180deg, var(--isp-sidebar-bg-top), var(--isp-sidebar-bg-bottom));
        content: '';
        inset: 0;
        position: absolute;
        z-index: 0;
    }

    #appShell .isp-app-row>main.isp-app-main {
        flex: none !important;
        grid-column: 2;
        grid-row: 1;
        margin-left: 0 !important;
        max-width: none !important;
        width: 100% !important;
    }

    /* Lock shell to viewport height; scroll menu inside — never grow with item count */
    #appShell .isp-app-row>.sidebar>.isp-sidebar-shell {
        position: sticky;
        top: var(--isp-topbar-height);
        z-index: 1;
        display: flex !important;
        flex: none !important;
        flex-direction: column;
        width: 100%;
        height: calc(100vh - var(--isp-topbar-height)) !important;
        max-height: calc(100vh - var(--isp-topbar-height)) !important;
        min-height: 0 !important;
        overflow: hidden;
        background: linear-gradient(180deg, var(--isp-sidebar-bg-top), var(--isp-sidebar-bg-bottom)) !important;
    }

    #appShell .isp-app-row>.sidebar .offcanvas-body.isp-sidebar-scroll {
        display: flex !important;
        flex: 1 1 auto;
        flex-direction: column;
        min-height: 0;
        max-height: 100%;
        overflow-x: hidden;
        overflow-y: auto !important;
        -webkit-overflow-scrolling: touch;
    }

    .navbar-search {
        display: block;
    }
}

.isp-sidebar-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.isp-sidebar-scroll::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
}

.sidebar {
    background: linear-gradient(180deg, var(--isp-sidebar-bg-top), var(--isp-sidebar-bg-bottom));
    border-color: var(--isp-sidebar-border) !important;
}

.sidebar .offcanvas-md {
    background: transparent !important;
}

.sidebar .offcanvas-title {
    color: var(--isp-nav-text);
}

.isp-sidebar-header {
    align-items: center;
    gap: .75rem;
    min-height: 3.25rem;
    padding: .75rem 1rem;
}

.isp-sidebar-brand {
    align-items: center;
    display: flex;
    flex: 1;
    gap: .65rem;
    line-height: 1.2;
    margin: 0;
    min-width: 0;
}

.isp-sidebar-brand__icon {
    align-items: center;
    background: color-mix(in srgb, var(--isp-nav-active-line) 16%, transparent);
    border: 1px solid color-mix(in srgb, var(--isp-nav-active-line) 28%, transparent);
    border-radius: .5rem;
    color: var(--isp-nav-active-line);
    display: inline-flex;
    flex-shrink: 0;
    font-size: .95rem;
    height: 2.1rem;
    justify-content: center;
    width: 2.1rem;
}

.isp-sidebar-brand__copy {
    display: flex;
    flex-direction: column;
    gap: .2rem;
    min-width: 0;
}

.isp-sidebar-brand__name {
    color: var(--isp-content-text);
    font-size: .9rem;
    font-weight: 600;
    letter-spacing: .01em;
    line-height: 1.15;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.isp-sidebar-brand__shell {
    color: var(--isp-nav-text-muted);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .14em;
    line-height: 1;
    text-transform: uppercase;
}

@media (min-width: 768px) {
    .isp-sidebar-shell .offcanvas-header {
        display: none;
    }
}

.sidebar .nav-link {
    position: relative;
    display: flex;
    align-items: center;
    gap: .58rem;
    line-height: 1.24;
    font-size: .86rem;
    font-weight: 600;
    color: var(--isp-nav-text);
    padding: .48rem .74rem .48rem .92rem;
    border-radius: .5rem;
    letter-spacing: .01em;
    transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
}

.sidebar .nav-link .bi {
    flex: 0 0 1rem;
    width: 1rem;
    height: 1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    vertical-align: middle;
    opacity: .95;
}

.sidebar .nav-link:hover {
    color: var(--isp-content-text);
    background-color: var(--isp-nav-hover);
}

.sidebar .nav-link.active {
    color: var(--isp-content-text);
    background-color: var(--isp-nav-active);
    font-weight: 700;
    border-radius: var(--isp-radius-flat);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--isp-nav-active-line) 25%, transparent);
}

.sidebar .nav-link.active::before {
    content: '';
    position: absolute;
    left: .42rem;
    top: 50%;
    transform: translateY(-50%);
    width: 3px;
    height: 60%;
    border-radius: var(--isp-radius-flat);
    background-color: var(--isp-nav-active-line);
}

.sidebar-heading {
    font-size: .75rem;
}

.isp-sidebar-caption {
    font-size: .62rem;
    font-weight: 700 !important;
    letter-spacing: .1em;
    color: var(--isp-nav-text-muted) !important;
    margin-bottom: .1rem;
}

.isp-subnav .nav-link {
    padding: .4rem .74rem .4rem .92rem;
    font-size: .81rem;
    font-weight: 500;
    transition: none;
}

.isp-subnav .nav-link .bi {
    width: .9rem;
    height: .9rem;
    font-size: .9rem;
    opacity: .92;
}

@media (min-width: 768px) {
    .sidebar {
        max-width: var(--isp-sidebar-width);
        flex: 0 0 var(--isp-sidebar-width);
        width: var(--isp-sidebar-width);
    }

    .navbar-brand {
        max-width: var(--isp-sidebar-width);
        flex: 0 0 var(--isp-sidebar-width);
        width: var(--isp-sidebar-width);
    }

    main.col-md-10,
    main.isp-app-main {
        flex: 0 0 calc(100% - var(--isp-sidebar-width));
        max-width: calc(100% - var(--isp-sidebar-width));
    }
}

/*
 * Navbar
 */

.navbar {
    min-height: var(--isp-topbar-height);
}

.navbar-brand {
    padding-top: .75rem;
    padding-bottom: .75rem;
    background-color: var(--isp-topbar-bg);
    box-shadow: inset -1px 0 0 var(--isp-topbar-divider);
    font-weight: 600;
    color: var(--isp-content-text);
}

.navbar-brand .bi {
    display: inline-flex;
    line-height: 1;
}

.navbar.sticky-top {
    background-color: var(--isp-topbar-bg) !important;
    border-bottom: 1px solid var(--isp-topbar-divider);
}

.navbar .form-control {
    padding: .75rem 1rem;
}

.navbar .nav-link,
.navbar .dropdown-toggle {
    color: var(--isp-content-text);
}

.isp-avatar {
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 999px;
    background-color: var(--isp-topbar-avatar-bg);
    border: 1px solid var(--isp-topbar-avatar-border);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    line-height: 0;
}

.isp-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.isp-user-placeholder-icon {
    width: 1em;
    height: 1em;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.isp-user-placeholder-icon svg {
    width: 100%;
    height: 100%;
    display: block;
}

.isp-avatar .isp-user-placeholder-icon {
    width: 1rem;
    height: 1rem;
}

.isp-sidebar-mobile-profile {
    background-color: rgba(255, 255, 255, .035);
    border: 1px solid rgba(255, 255, 255, .08);
}

.isp-sidebar-mobile-profile__actions {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    margin-top: .75rem;
    padding-top: .75rem;
    border-top: 1px solid rgba(255, 255, 255, .08);
}

.navbar .dropdown-toggle,
.navbar .isp-header-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    width: 2.25rem;
    height: 2.25rem;
    padding: 0 !important;
    border-radius: var(--isp-radius-flat);
    background-color: transparent;
    flex-shrink: 0;
}

.navbar .isp-header-action:hover,
.navbar .isp-header-action:focus-visible,
.navbar .isp-header-profile.show,
.navbar .isp-header-theme.show {
    background-color: var(--isp-topbar-trigger-hover) !important;
}

.navbar .isp-header-tour.is-active {
    background-color: color-mix(in srgb, var(--isp-nav-active-line) 22%, transparent) !important;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--isp-nav-active-line) 45%, transparent);
    color: var(--isp-nav-active-line) !important;
}

/* Sidebar module tour */
body.isp-tour-mode .js-sidebar-tour-link {
    cursor: help;
    position: relative;
}

body.isp-tour-mode .js-sidebar-tour-link:not(.active) {
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--isp-nav-active-line) 35%, transparent);
}

body.isp-tour-mode .js-sidebar-tour-link:hover {
    background-color: color-mix(in srgb, var(--isp-nav-active-line) 14%, transparent) !important;
}

.isp-tour-banner {
    align-items: center;
    background: linear-gradient(135deg, color-mix(in srgb, var(--isp-nav-active-line) 88%, #0b1220), color-mix(in srgb, var(--isp-nav-active-line) 55%, #111827));
    border: 1px solid color-mix(in srgb, var(--isp-nav-active-line) 40%, transparent);
    border-radius: .65rem;
    bottom: 1rem;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .28);
    box-sizing: border-box;
    color: #fff;
    display: flex;
    font-size: .82rem;
    gap: .65rem;
    left: 50%;
    max-width: min(36rem, calc(100vw - 2rem));
    padding: .65rem .85rem;
    position: fixed;
    transform: translateX(-50%);
    width: min(36rem, calc(100vw - 2rem));
    z-index: 1080;
}

.isp-tour-banner__body {
    align-items: flex-start;
    display: flex;
    flex: 1 1 auto;
    gap: .65rem;
    min-width: 0;
}

.isp-tour-banner .bi {
    flex-shrink: 0;
    font-size: 1rem;
    line-height: 1.35;
    margin-top: .05rem;
    opacity: .9;
}

.isp-tour-banner__body span {
    flex: 1 1 auto;
    line-height: 1.35;
    min-width: 0;
}

.isp-tour-banner #btnSidebarTourExit {
    flex-shrink: 0;
    white-space: nowrap;
}

@media (max-width: 767.98px) {
    .isp-tour-banner {
        align-items: stretch;
        bottom: auto;
        flex-direction: column;
        gap: .55rem;
        left: .5rem;
        max-width: none;
        right: .5rem;
        top: calc(var(--isp-topbar-height, 56px) + .5rem);
        transform: none;
        width: auto;
        z-index: 1030;
    }

    .isp-tour-banner #btnSidebarTourExit {
        width: 100%;
    }

    body.isp-tour-mode.isp-tour-sidebar-open .isp-tour-banner {
        opacity: 0;
        pointer-events: none;
        visibility: hidden;
    }
}

.isp-tour-drawer__head,
.isp-tour-modal__head {
    align-items: flex-start;
    display: flex;
    gap: .85rem;
}

.isp-tour-drawer__icon,
.isp-tour-modal__icon {
    align-items: center;
    background: color-mix(in srgb, var(--isp-nav-active-line) 16%, transparent);
    border: 1px solid color-mix(in srgb, var(--isp-nav-active-line) 28%, transparent);
    border-radius: .55rem;
    color: var(--isp-nav-active-line);
    display: inline-flex;
    flex-shrink: 0;
    height: 2.5rem;
    justify-content: center;
    line-height: 0;
    width: 2.5rem;
}

.isp-tour-drawer__icon .bi,
.isp-tour-modal__icon .bi {
    font-size: 1.15rem;
}

.isp-tour-drawer__section,
.isp-tour-modal__section {
    color: var(--isp-muted-text);
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.isp-tour-drawer__label {
    color: var(--isp-content-text-strong);
    font-size: .95rem;
    font-weight: 700;
    line-height: 1.25;
}

.isp-tour-drawer__summary,
.isp-tour-modal__summary {
    color: var(--isp-content-text);
    font-size: .92rem;
    line-height: 1.55;
    margin: 1rem 0;
}

.isp-tour-drawer__list,
.isp-tour-modal__list {
    color: var(--isp-muted-text);
    font-size: .84rem;
    line-height: 1.5;
    margin-bottom: 1.25rem;
    padding-left: 1.1rem;
}

.isp-tour-drawer__list li + li,
.isp-tour-modal__list li + li {
    margin-top: .45rem;
}

.isp-tour-drawer__actions {
    border-top: 1px solid var(--isp-divider);
    display: flex;
    gap: .5rem;
    justify-content: flex-end;
    margin-top: auto;
    padding-top: 1rem;
}

.isp-right-drawer--tour .offcanvas-body {
    display: flex;
    flex-direction: column;
}

.isp-tour-drawer {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-height: 100%;
}

.navbar .isp-header-profile.dropdown-toggle::after {
    display: none;
}

.navbar .isp-header-profile .isp-avatar {
    width: 1.65rem;
    height: 1.65rem;
}

.navbar .dropdown-toggle:hover {
    background-color: var(--isp-topbar-trigger-hover) !important;
}

.navbar .dropdown-toggle::after {
    margin-left: .45rem;
    vertical-align: middle;
    align-self: center;
}

.navbar .nav-item.dropdown {
    position: relative;
}

.navbar .dropdown-menu {
    --bs-dropdown-bg: var(--isp-topbar-dropdown-bg);
    --bs-dropdown-color: var(--isp-topbar-dropdown-text);
    --bs-dropdown-link-color: var(--isp-topbar-dropdown-text);
    --bs-dropdown-link-hover-color: var(--isp-topbar-dropdown-hover-text);
    --bs-dropdown-link-hover-bg: var(--isp-topbar-dropdown-hover-bg);
    --bs-dropdown-border-color: var(--isp-topbar-dropdown-border);
    position: absolute;
    top: calc(100% + .35rem);
    right: 0;
    left: auto;
    z-index: 1060;
    margin-top: 0;
    border-radius: var(--isp-radius-flat);
    min-width: 11rem;
    border-width: 1px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .18);
    padding: .28rem 0;
}

.navbar .dropdown-item {
    color: var(--isp-topbar-dropdown-text);
    border-radius: var(--isp-radius-flat);
    padding: .42rem .78rem;
    font-size: .8rem;
    font-weight: 500;
    line-height: 1.2;
    display: flex;
    align-items: center;
    gap: .5rem;
}

.navbar .dropdown-divider {
    border-color: var(--isp-divider);
}

.isp-account-menu .dropdown-header {
    background-color: var(--isp-topbar-dropdown-header-bg);
    border-bottom: 1px solid var(--isp-divider);
    padding: .5rem .78rem;
}

.isp-account-menu__name {
    color: var(--isp-topbar-dropdown-text);
    font-size: .82rem;
    font-weight: 700;
    margin-bottom: .1rem;
}

.isp-account-menu__email {
    color: var(--isp-topbar-dropdown-header-muted);
    font-size: .72rem;
}

.isp-menu-icon {
    width: .95rem;
    height: .95rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    opacity: .85;
}

/*
 * Content: modern-classic flat shell
 */

body {
    background-color: var(--isp-body-bg);
    font-family: var(--isp-font-family);
    font-weight: 400;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

main {
    color: var(--isp-content-text);
    font-size: .9rem;
    line-height: 1.55;
    letter-spacing: .005em;
}

main .border-bottom {
    border-color: var(--isp-divider) !important;
}

/* Page header */
main .border-bottom .h2,
main .border-bottom h1.h2 {
    font-size: 1.42rem;
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: .015em;
    color: var(--isp-content-text-strong);
    margin-bottom: .2rem !important;
}

main .border-bottom .text-body-secondary {
    font-size: .86rem;
    line-height: 1.45;
    font-weight: 500;
    color: var(--isp-muted-text) !important;
    max-width: 52ch;
}

main .h2,
main h1,
main h2,
main h3,
main h4 {
    letter-spacing: .012em;
    color: var(--isp-content-text-strong);
}

main h3,
main h4 {
    font-weight: 700;
}

main p,
main li,
main .card-body,
main .offcanvas-body {
    color: var(--isp-content-text);
}

main .small,
main small {
    font-size: .8rem;
    line-height: 1.4;
}

main .card {
    border-radius: var(--isp-radius-flat) !important;
    border: 1px solid var(--isp-divider);
    background-color: var(--isp-card-bg);
    box-shadow: none;
}

main .card-header,
main .card-footer {
    border-radius: var(--isp-radius-flat) !important;
    background-color: var(--isp-card-header-bg);
    border-color: var(--isp-divider);
}

main .card-body {
    padding: .9rem 1rem;
}

main .table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--isp-table-text);
    --bs-table-border-color: var(--isp-divider);
    --bs-table-striped-bg: var(--isp-table-striped);
    --bs-table-hover-bg: var(--isp-table-hover);
    margin-bottom: 0;
}

main .table> :not(caption)>*>* {
    padding-top: .38rem;
    padding-bottom: .38rem;
}

main .table thead th {
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .03em;
    text-transform: uppercase;
}

main .table tbody td {
    font-size: .84rem;
    line-height: 1.35;
    color: var(--isp-content-text);
}

main .alert,
main .badge,
main .dropdown-menu {
    border-radius: var(--isp-radius-flat) !important;
}

main .text-body-secondary {
    color: var(--isp-muted-text) !important;
}

main label,
main .form-label,
.isp-material-field>label,
.isp-right-drawer label,
.isp-right-drawer .form-label,
.isp-drawer-form label,
.isp-drawer-form .form-label,
.isp-page-form label,
.isp-page-form .form-check-label {
    color: var(--isp-label-text);
    font-size: var(--isp-label-font-size);
}

main .form-label {
    font-weight: 600;
    letter-spacing: .02em;
    text-transform: none;
    margin-bottom: .32rem;
}

.isp-stat-card .text-body-secondary.small {
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--isp-muted-text) !important;
}

.isp-stat-card .isp-stat-value {
    font-size: 1.48rem;
    font-weight: 700;
    letter-spacing: .01em;
    color: var(--isp-content-text-strong);
    margin: .2rem 0;
}

.isp-stat-card .small {
    font-weight: 500;
}

.isp-dashboard {
    gap: .85rem !important;
}

.isp-dashboard-panel .card-header {
    background: var(--isp-card-header-bg);
}

/* Operations desk layout */
.isp-dashboard-pulse {
    background: var(--isp-card-bg);
    border: 1px solid var(--isp-divider);
    display: flex;
    overflow-x: auto;
    scrollbar-width: thin;
}

.isp-dashboard-pulse__item {
    border-right: 1px solid var(--isp-divider);
    display: flex;
    flex: 1 1 0;
    flex-direction: column;
    gap: .08rem;
    min-width: 6.75rem;
    padding: .62rem .8rem;
}

.isp-dashboard-pulse__item:last-child {
    border-right: 0;
}

.isp-dashboard-pulse__item--link {
    color: inherit;
    text-decoration: none;
}

.isp-dashboard-pulse__item--link:hover {
    background: color-mix(in srgb, var(--isp-card-header-bg) 65%, transparent);
    text-decoration: none;
}

.isp-dashboard-pulse__item.is-danger {
    background: color-mix(in srgb, var(--bs-danger) 8%, var(--isp-card-bg));
}

.isp-dashboard-pulse__item.is-warn {
    background: color-mix(in srgb, var(--bs-warning) 8%, var(--isp-card-bg));
}

.isp-dashboard-pulse__item.is-ok .isp-dashboard-pulse__value {
    color: var(--bs-success);
}

.isp-dashboard-pulse__item--driver {
    flex: 0 0 auto;
    justify-content: center;
    min-width: 5.5rem;
}

.isp-dashboard-pulse__label {
    color: var(--isp-muted-text);
    font-size: .64rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    white-space: nowrap;
}

.isp-dashboard-pulse__value {
    color: var(--isp-content-text-strong);
    font-size: 1.02rem;
    font-weight: 700;
    line-height: 1.15;
}

.isp-dashboard-pulse__meta {
    color: var(--isp-muted-text);
    font-size: .68rem;
    line-height: 1.25;
}

@media (max-width: 767.98px) {
    .isp-dashboard-pulse {
        background: var(--isp-divider);
        display: grid;
        gap: 1px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        overflow-x: visible;
    }

    .isp-dashboard-pulse__item {
        background: var(--isp-card-bg);
        border: 0;
        flex: unset;
        min-width: 0;
        padding: .55rem .65rem;
    }

    .isp-dashboard-pulse__item:last-child {
        border-right: 0;
    }

    .isp-dashboard-pulse__item--driver {
        flex-direction: row;
        grid-column: 1 / -1;
        align-items: center;
        justify-content: space-between;
        min-width: 0;
    }

    .isp-dashboard-pulse__label {
        font-size: .6rem;
        white-space: normal;
    }

    .isp-dashboard-pulse__value {
        font-size: .95rem;
    }
}

@media (min-width: 768px) and (max-width: 1199.98px) {
    .isp-dashboard-pulse {
        background: var(--isp-divider);
        display: grid;
        gap: 1px;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        overflow-x: visible;
    }

    .isp-dashboard-pulse__item {
        background: var(--isp-card-bg);
        border: 0;
        flex: unset;
        min-width: 0;
    }

    .isp-dashboard-pulse__item:last-child {
        border-right: 0;
    }

    .isp-dashboard-pulse__item--driver {
        flex-direction: row;
        grid-column: span 2;
        align-items: center;
        justify-content: space-between;
    }
}

.isp-dashboard-live__dot {
    animation: isp-dashboard-pulse-dot 2s ease-in-out infinite;
    background: var(--bs-success);
    border-radius: 50%;
    flex-shrink: 0;
    height: .45rem;
    width: .45rem;
}

@keyframes isp-dashboard-pulse-dot {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: .35;
    }
}

.isp-dashboard-rail__section {
    padding: .35rem 0 .65rem;
}

.isp-dashboard-rail__section+.isp-dashboard-rail__section {
    border-top: 1px solid var(--isp-divider);
    margin-top: .15rem;
    padding-top: .65rem;
}

.isp-dashboard-rail__heading {
    color: var(--isp-label-text);
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .04em;
    margin-bottom: .45rem;
    text-transform: uppercase;
}

.isp-dashboard-rail__action {
    align-items: center;
    display: flex;
    font-size: .8rem;
    gap: .5rem;
    justify-content: space-between;
    padding: .35rem 0;
    text-decoration: none;
}

.isp-dashboard-rail__action.is-danger {
    color: inherit;
}

a.isp-dashboard-rail__action:hover {
    text-decoration: none;
}

.isp-dashboard-rail__section--links {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem 1rem;
    padding-bottom: .15rem;
}

.isp-dashboard-section__label {
    color: var(--isp-muted-text);
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .06em;
    margin-bottom: .45rem;
    text-transform: uppercase;
}

.isp-vendor-dashboard-hero {
    background: linear-gradient(135deg,
            color-mix(in srgb, var(--bs-primary) 10%, var(--isp-card-bg)) 0%,
            var(--isp-card-bg) 55%);
}

.isp-dashboard--vendor .isp-dashboard-rail__section--links .d-grid {
    width: 100%;
}

.isp-vendor-performance__body {
    padding: .85rem 1rem 1rem;
}

.isp-vendor-performance__table-wrap {
    padding: 0;
}

.isp-vendor-performance.is-loading .isp-vendor-performance__table-wrap {
    opacity: .55;
    pointer-events: none;
}

.isp-vendor-performance__table-wrap .table> :not(caption)>*>* {
    padding: .55rem .65rem;
}

.isp-network-bar-chart--compact .isp-network-bar-chart__stack {
    height: 4.5rem;
}

.isp-network-bar-chart--compact.isp-network-bar-chart--dense .isp-network-bar-chart__stack {
    height: 4rem;
}

.isp-dashboard-snapshot-row {
    align-items: center;
    border-bottom: 1px solid var(--isp-divider);
    display: flex;
    font-size: .78rem;
    justify-content: space-between;
    gap: .75rem;
    padding: .35rem 0;
}

.isp-dashboard-snapshot-row:last-child {
    border-bottom: 0;
}

.isp-dashboard-snapshot-row strong {
    color: var(--isp-content-text-strong);
    font-size: .82rem;
    font-weight: 700;
}

.isp-dashboard-snapshot-row--router {
    border-bottom: 0;
    padding: .28rem 0;
}

@media (min-width: 1200px) {
    .isp-dashboard--desk #dashboardMyTasks .isp-dashboard-tasks {
        max-height: 18rem;
        overflow-y: auto;
    }
}

.isp-elite-select {
    position: relative;
}

.isp-elite-select__control {
    width: 100%;
    min-height: 34px;
    border: 1px solid var(--isp-select-border);
    background-color: var(--isp-select-bg);
    color: var(--isp-input-text);
    padding: .34rem .7rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .35rem;
    font-size: .82rem;
    line-height: 1.2;
    text-align: left;
}

.isp-elite-select__label {
    flex: 1;
    min-width: 0;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.isp-elite-select__caret {
    opacity: .72;
    font-size: .72rem;
}

.isp-elite-select__menu {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 1055;
    border: 1px solid var(--isp-select-border);
    background: var(--isp-select-menu-bg);
    display: none;
    max-height: 220px;
}

.isp-elite-select.is-open .isp-elite-select__menu {
    display: block;
}

.isp-elite-select__search-wrap {
    padding: .38rem .45rem;
    border-bottom: 1px solid var(--isp-divider);
    display: flex;
    align-items: center;
    gap: .4rem;
}

.isp-elite-select__search-wrap .bi {
    opacity: .7;
}

.isp-elite-select__search {
    width: 100%;
    background: transparent;
    border: 0;
    color: var(--isp-input-text);
    outline: none;
    font-size: .8rem;
}

.isp-elite-select__options {
    max-height: 170px;
    overflow: auto;
}

.isp-elite-select__option {
    width: 100%;
    text-align: left;
    border: 0;
    background: transparent;
    color: var(--isp-input-text);
    padding: .38rem .55rem;
    font-size: .8rem;
}

.isp-elite-select__option:hover {
    background: var(--isp-select-option-hover);
}

.isp-elite-select__option.is-selected {
    background: var(--isp-select-option-selected);
}

.isp-upload-zone {
    border: 1px dashed color-mix(in srgb, var(--isp-nav-active-line) 45%, transparent);
    background: linear-gradient(180deg, rgba(255, 255, 255, .02), rgba(255, 255, 255, .01));
    padding: 1rem;
    cursor: pointer;
    transition: border-color .16s ease, background-color .16s ease;
}

.isp-upload-zone:hover,
.isp-upload-zone.is-dragging {
    border-color: rgba(111, 177, 255, .8);
    background-color: rgba(111, 177, 255, .06);
}

.isp-profile-preview {
    width: 88px;
    height: 88px;
    border-radius: 999px;
    border: 1px solid var(--isp-divider);
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background-color: var(--isp-input-bg);
    line-height: 0;
}

.isp-profile-preview img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.isp-profile-preview .isp-user-placeholder-icon {
    width: 2rem;
    height: 2rem;
    opacity: .72;
}

/* Mobile: slightly taller header + bigger menu icon */
@media (max-width: 767.98px) {

    /* Sidebar is off-canvas on mobile — keep it out of document flow so main content is not pushed down */
    #appShell>.isp-app-body>.isp-app-row {
        min-height: 0;
    }

    #appShell .isp-app-row>.sidebar {
        position: fixed;
        inset: 0 auto auto 0;
        flex: 0 0 0 !important;
        width: 0 !important;
        max-width: 0 !important;
        height: 0 !important;
        padding: 0 !important;
        margin: 0 !important;
        border: 0 !important;
        background: transparent !important;
        overflow: visible;
        z-index: 1045;
    }

    #appShell .isp-app-row>main.isp-app-main {
        flex: 1 1 auto;
        width: 100% !important;
        max-width: 100% !important;
    }

    .sidebar .offcanvas-md {
        width: min(88vw, 320px) !important;
        background: linear-gradient(180deg, var(--isp-sidebar-bg-top), var(--isp-sidebar-bg-bottom)) !important;
        border-left: 1px solid var(--isp-divider);
        box-shadow: -8px 0 28px rgba(0, 0, 0, .35);
    }

    .sidebar .isp-sidebar-header {
        background: color-mix(in srgb, var(--isp-sidebar-bg-top) 92%, black 8%);
        padding-inline: .85rem;
    }

    .isp-sidebar-brand__name {
        font-size: .95rem;
    }

    .sidebar .offcanvas-body {
        padding-top: .7rem !important;
    }

    header.navbar {
        min-height: 56px;
    }

    header.navbar .navbar-brand {
        min-height: 56px;
        padding-top: 0 !important;
        padding-bottom: 0 !important;
    }

    #btnSidebarToggle {
        width: 2.75rem;
        height: 2.75rem;
    }

    #btnSidebarToggle .bi {
        width: 1.5rem;
        height: 1.5rem;
        font-size: 1.5rem;
        line-height: 1;
    }

    .sidebar .nav-link {
        font-size: .92rem;
        padding: .5rem .78rem;
    }

    .isp-subnav .nav-link {
        font-size: .88rem;
        padding: .46rem .78rem;
    }

}

/* Moved from inline <style> in index.php */
.bd-placeholder-img {
    font-size: 1.125rem;
    text-anchor: middle;
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
}

@media (min-width: 768px) {
    .bd-placeholder-img-lg {
        font-size: 3.5rem;
    }
}

.b-example-divider {
    width: 100%;
    height: 3rem;
    background-color: rgba(0, 0, 0, .1);
    border: solid rgba(0, 0, 0, .15);
    border-width: 1px 0;
    box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15);
}

.b-example-vr {
    flex-shrink: 0;
    width: 1.5rem;
    height: 100vh;
}

.bi {
    vertical-align: -.125em;
    fill: currentColor;
}

.nav-scroller {
    position: relative;
    z-index: 2;
    height: 2.75rem;
    overflow-y: hidden;
}

.nav-scroller .nav {
    display: flex;
    flex-wrap: nowrap;
    padding-bottom: 1rem;
    margin-top: -1px;
    overflow-x: auto;
    text-align: center;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
}

.btn-bd-primary {
    --bd-violet-bg: #712cf9;
    --bd-violet-rgb: 112.520718, 44.062154, 249.437846;

    --bs-btn-font-weight: 600;
    --bs-btn-color: var(--bs-white);
    --bs-btn-bg: var(--bd-violet-bg);
    --bs-btn-border-color: var(--bd-violet-bg);
    --bs-btn-hover-color: var(--bs-white);
    --bs-btn-hover-bg: #6528e0;
    --bs-btn-hover-border-color: #6528e0;
    --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
    --bs-btn-active-color: var(--bs-btn-hover-color);
    --bs-btn-active-bg: #5a23c8;
    --bs-btn-active-border-color: #5a23c8;
}

.bd-mode-toggle {
    z-index: 1500;
}

/* Toast host must not steal clicks from the right drawer close button (top-end overlap). */
#toastHost {
    pointer-events: none;
}

#toastHost>.toast {
    pointer-events: auto;
}

.bd-mode-toggle .dropdown-menu .active .bi {
    display: block !important;
}

/* Slim toasts */
#toastHost .toast {
    --bs-toast-padding-x: .5rem;
    --bs-toast-padding-y: .35rem;
    --bs-toast-border-radius: 0;
    --bs-bg-opacity: .85;
    /* translucent like Bootstrap docs */
    backdrop-filter: blur(6px);
}

#toastHost .toast-body {
    padding: .35rem .5rem;
    font-size: .85rem;
    line-height: 1.2;
}

#toastHost .btn-close {
    width: .7em;
    height: .7em;
}

/* Flat + compact input styling (dashboard-like) */
.form-control,
.form-select {
    border-radius: var(--isp-radius-flat) !important;
    box-shadow: none !important;
    border-color: var(--isp-input-border);
    background-color: var(--isp-input-bg);
    color: var(--isp-input-text);
    min-height: 34px;
    padding: .34rem .58rem;
    font-size: .82rem;
}

.form-control:focus,
.form-select:focus {
    box-shadow: none !important;
    border-color: var(--isp-input-border-focus);
    background-color: var(--isp-input-bg);
    color: var(--isp-input-text-focus);
}

/* Keep buttons flat too */
.btn {
    border-radius: var(--isp-radius-flat) !important;
    box-shadow: none !important;
    padding: var(--isp-btn-padding-y) var(--isp-btn-padding-x);
    font-size: var(--isp-btn-font-size);
    letter-spacing: .01em;
}

.btn:focus,
.btn:active,
.btn.active {
    box-shadow: none !important;
}

/* Optional: match flat inputs in groups */
.input-group-text {
    border-radius: var(--isp-radius-flat) !important;
}

/* Login prefixes: consistent width + centered icon */
.brex-prefix {
    width: 2.5rem;
    justify-content: center;
}

/* Server-driven locked state: hide app chrome behind login modal */
body.brex-locked #appShell {
    display: none !important;
}

/* Mobile expandable row list */
.brex-details>summary {
    list-style: none;
    cursor: pointer;
}

.brex-details>summary::-webkit-details-marker {
    display: none;
}

.brex-details[open]>summary {
    padding-bottom: .5rem;
    border-bottom: 1px solid var(--bs-border-color);
    margin-bottom: .5rem;
}

/* Slim/flat look for mobile expandable rows */
.brex-details {
    background: transparent;
}

.brex-details>summary {
    padding: .125rem 0;
}

/* Reusable right drawer for filters/actions */
.isp-right-drawer {
    width: min(380px, 100vw);
    border-left: 1px solid var(--isp-divider);
    background: var(--isp-card-bg);
    color: var(--isp-content-text);
    z-index: 2050;
}

.isp-right-drawer.isp-right-drawer--wide {
    width: min(520px, 100vw);
}

.isp-right-drawer .offcanvas-header {
    border-bottom: 1px solid var(--isp-divider);
    background: var(--isp-card-header-bg);
    min-height: 56px;
}

.isp-right-drawer .offcanvas-title {
    font-size: .92rem;
    font-weight: 700;
    letter-spacing: .02em;
}

.isp-right-drawer .offcanvas-body {
    padding: 1rem;
}

.navbar .isp-header-notifications {
    justify-content: center;
}

.isp-header-notifications .bi {
    display: inline-flex;
    font-size: 1.1rem;
    line-height: 1;
    width: 1.1rem;
    height: 1.1rem;
}

.isp-header-notifications__badge {
    align-items: center;
    background: var(--bs-danger);
    border: 2px solid var(--isp-topbar-bg);
    border-radius: 999px;
    color: #fff;
    display: inline-flex;
    font-size: .62rem;
    font-weight: 700;
    height: 1.05rem;
    justify-content: center;
    line-height: 1;
    min-width: 1.05rem;
    padding: 0 .22rem;
    position: absolute;
    right: .1rem;
    top: .2rem;
}

.isp-notifications-loading,
.isp-notifications-empty {
    color: var(--isp-muted-text);
    font-size: .82rem;
    padding: 2rem 1rem;
    text-align: center;
}

.isp-notifications-list {
    display: flex;
    flex-direction: column;
    gap: .55rem;
    margin: -.25rem 0;
}

.isp-notification-item {
    align-items: flex-start;
    background: color-mix(in srgb, var(--isp-card-header-bg) 55%, var(--isp-card-bg));
    border: 1px solid var(--isp-divider);
    border-left-width: 3px;
    color: inherit;
    cursor: pointer;
    display: flex;
    gap: .65rem;
    padding: .72rem .8rem;
    text-align: left;
    text-decoration: none;
    transition: background-color .15s ease, border-color .15s ease;
    width: 100%;
}

button.isp-notification-item {
    appearance: none;
    font: inherit;
}

a.isp-notification-item:hover,
button.isp-notification-item:hover {
    background: color-mix(in srgb, var(--isp-card-header-bg) 82%, var(--isp-card-bg));
    color: inherit;
    text-decoration: none;
}

.isp-notification-item.is-unread {
    background: color-mix(in srgb, var(--bs-primary) 8%, var(--isp-card-bg));
}

.isp-notification-item.is-danger {
    border-left-color: var(--bs-danger);
}

.isp-notification-item.is-warning {
    border-left-color: var(--bs-warning);
}

.isp-notification-item.is-primary {
    border-left-color: var(--bs-primary);
}

.isp-notification-item.is-success {
    border-left-color: var(--bs-success);
}

.isp-notification-item__icon {
    color: var(--isp-muted-text);
    flex-shrink: 0;
    font-size: 1rem;
    line-height: 1.2;
    margin-top: .05rem;
}

.isp-notification-item__content {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-width: 0;
}

.isp-notification-item__head {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .5rem;
    justify-content: space-between;
}

.isp-notification-item__title {
    color: var(--isp-content-text-strong);
    font-size: .84rem;
    font-weight: 600;
    line-height: 1.3;
}

.isp-notification-item__audience {
    background: color-mix(in srgb, var(--isp-nav-active-line) 12%, var(--isp-card-bg));
    border: 1px solid var(--isp-divider);
    border-radius: 999px;
    color: var(--isp-muted-text);
    font-size: .62rem;
    font-weight: 600;
    letter-spacing: .03em;
    line-height: 1;
    padding: .18rem .45rem;
    text-transform: uppercase;
}

.isp-notifications-drawer-subtitle {
    margin-top: .15rem;
    width: 100%;
}

.navbar .isp-header-theme {
    color: var(--isp-content-text);
}

.navbar .isp-header-theme:hover,
.navbar .isp-header-theme:focus-visible {
    color: var(--isp-content-text-strong);
}

.navbar .isp-header-theme .theme-icon-active {
    display: block;
    width: 1.1rem;
    height: 1.1rem;
}

.navbar .isp-header-theme-menu {
    --bs-dropdown-link-active-bg: var(--isp-topbar-trigger-hover);
    --bs-dropdown-link-active-color: var(--isp-content-text-strong);
}

.navbar .isp-header-theme-menu .dropdown-item:hover,
.navbar .isp-header-theme-menu .dropdown-item:focus {
    background-color: color-mix(in srgb, var(--isp-topbar-trigger-hover) 65%, var(--isp-content-text) 35%);
    color: var(--isp-content-text-strong);
}

.navbar .isp-header-theme-menu .dropdown-item.active,
.navbar .isp-header-theme-menu .dropdown-item:active {
    background-color: var(--isp-topbar-trigger-hover) !important;
    color: var(--isp-content-text-strong) !important;
}

.isp-notification-item__message {
    color: var(--isp-muted-text);
    font-size: .76rem;
    line-height: 1.35;
    margin-top: .18rem;
}

.isp-notification-item__time {
    color: var(--isp-muted-text);
    font-size: .7rem;
    line-height: 1.2;
    margin-top: .28rem;
    opacity: .85;
}

.isp-notifications-footer {
    display: flex;
    flex-direction: column;
    gap: .45rem;
    margin-top: .75rem;
}

.isp-notifications-footer--append {
    margin-top: .55rem;
}

.isp-drawer-form {
    display: flex;
    flex-direction: column;
    min-height: 100%;
    gap: .8rem;
}

.isp-drawer-form__body {
    display: grid;
    gap: .8rem;
}

.isp-drawer-form__actions {
    margin-top: auto;
    position: sticky;
    bottom: -1rem;
    display: flex;
    gap: .5rem;
    padding: .7rem 0 1rem;
    background: var(--isp-card-bg);
    border-top: 1px solid var(--isp-divider);
}

.isp-location-map,
.subscriber-location-map {
    height: min(42vh, 420px);
    border: 1px solid var(--bs-border-color);
    z-index: 1;
}

.isp-drawer-form .isp-location-map {
    height: min(28vh, 240px);
}

.isp-location-map-section {
    border-top: 1px solid var(--isp-divider);
    padding-top: .85rem;
    margin-top: .25rem;
    display: grid;
    gap: .65rem;
}

.isp-table-card>.table-responsive>.table> :not(caption)>*>*,
.isp-table-card>.table> :not(caption)>*>* {
    padding-left: .75rem;
    padding-right: .75rem;
}

.isp-table-card>.table>thead>tr>th,
.isp-table-card>.table-responsive>.table>thead>tr>th {
    padding-top: .55rem;
    padding-bottom: .55rem;
    vertical-align: middle;
}

.isp-table-card>.table>tbody>tr>td,
.isp-table-card>.table-responsive>.table>tbody>tr>td {
    padding-top: .45rem;
    padding-bottom: .45rem;
    vertical-align: middle;
}

.isp-network-insights .table td,
.isp-network-insights .table th {
    padding-left: .75rem;
    padding-right: .75rem;
    vertical-align: middle;
}

.isp-network-insights .table thead th {
    padding-top: .5rem;
    padding-bottom: .5rem;
}

.isp-network-insights .table tbody td {
    padding-top: .4rem;
    padding-bottom: .4rem;
}

.isp-network-insights .nav-tabs-sm .nav-link {
    font-size: .82rem;
}

#insightLinksPager .btn-group .btn.disabled {
    opacity: 1;
}

.isp-form-section__title {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--isp-muted-text);
}

.isp-form-section {
    border: 1px solid var(--isp-divider);
    background: color-mix(in srgb, var(--isp-card-bg) 96%, transparent);
}

.isp-form-section>summary {
    cursor: pointer;
    list-style: none;
    padding: .5rem .65rem;
    font-size: .78rem;
    font-weight: 600;
    color: var(--isp-content-text);
}

.isp-form-section>summary::-webkit-details-marker {
    display: none;
}

.isp-form-section__body {
    display: grid;
    gap: .8rem;
    padding: 0 .65rem .65rem;
}

.isp-drawer-form .form-check-label {
    font-size: .8rem;
}

/* Full-page forms (create / edit) */
.isp-page-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding-bottom: 4.5rem;
}

.isp-page-form__actions {
    position: sticky;
    bottom: 0;
    z-index: 20;
    display: flex;
    justify-content: flex-end;
    gap: .5rem;
    padding: .75rem 0;
    margin-top: .25rem;
    background: linear-gradient(180deg, transparent, var(--isp-body-bg) 28%);
    border-top: 1px solid var(--isp-divider);
}

.isp-form-card__title {
    font-size: .84rem;
    font-weight: 700;
    letter-spacing: .02em;
    color: var(--isp-content-text-strong);
}

main .card-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: .75rem;
    flex-wrap: wrap;
}

/* Vertical rhythm: border-sitting labels need space between stacked fields */
.isp-field {
    margin-bottom: .5rem;
}

.isp-field:last-child {
    margin-bottom: 0;
}

.isp-dashboard-tasks .list-group-item {
    border-left: 0;
    border-right: 0;
}

.isp-dashboard-tasks .isp-task-complete-btn {
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.isp-network-stat {
    background: var(--isp-card-header-bg);
    border: 1px solid var(--isp-divider);
    padding: .55rem .65rem;
    height: 100%;
}

.isp-network-stat__label {
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--isp-muted-text);
}

.isp-network-stat__value {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--isp-content-text-strong);
    line-height: 1.2;
    margin: .15rem 0;
}

.isp-network-stat__meta {
    font-size: .72rem;
    color: var(--isp-muted-text);
}

.isp-network-section-title {
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--isp-muted-text);
    margin-bottom: .45rem;
}

.isp-network-dot {
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    flex-shrink: 0;
}

.isp-network-dot.is-healthy {
    background: var(--bs-success);
}

.isp-network-dot.is-degraded {
    background: var(--bs-warning);
}

.isp-network-router-list .list-group-item {
    background: transparent;
    border-color: var(--isp-divider);
}

.isp-network-bar-chart {
    display: flex;
    align-items: flex-end;
    gap: .35rem;
    height: 5.5rem;
}

.isp-network-bar-chart--dense {
    gap: .15rem;
    height: 6rem;
}

.isp-network-bar-chart--dense .isp-network-bar-chart__stack {
    height: 4.75rem;
}

.isp-network-bar-chart--dense .isp-network-bar-chart__label {
    font-size: .58rem;
}

.isp-network-bar-chart__col {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .25rem;
}

.isp-network-bar-chart__stack {
    width: 100%;
    height: 4.25rem;
    display: flex;
    flex-direction: column-reverse;
    justify-content: flex-start;
    gap: 1px;
}

.isp-network-bar-chart__bar {
    display: block;
    width: 100%;
    border-radius: 2px 2px 0 0;
    min-height: 0;
}

.isp-network-bar-chart__bar.is-success {
    background: rgba(var(--bs-success-rgb), .85);
}

.isp-network-bar-chart__bar.is-failed {
    background: rgba(var(--bs-danger-rgb), .85);
}

.isp-network-bar-chart__bar.is-empty {
    height: 2px !important;
    background: var(--isp-divider);
}

.isp-network-bar-chart__label {
    font-size: .65rem;
    color: var(--isp-muted-text);
}

.isp-network-legend {
    display: inline-block;
    width: .55rem;
    height: .55rem;
    border-radius: 2px;
    vertical-align: middle;
}

.isp-network-legend--success {
    background: rgba(var(--bs-success-rgb), .85);
}

.isp-network-legend--danger {
    background: rgba(var(--bs-danger-rgb), .85);
}

.isp-network-breakdown__row+.isp-network-breakdown__row {
    margin-top: .55rem;
}

.isp-network-bar-chart__bar.is-billed {
    background: rgba(var(--bs-primary-rgb), .85);
}

.isp-network-bar-chart__bar.is-collected {
    background: rgba(var(--bs-success-rgb), .85);
}

.isp-report-bar-pair {
    flex-direction: row;
    align-items: flex-end;
    gap: 2px;
}

.isp-report-bar-pair .isp-network-bar-chart__bar {
    flex: 1;
}

.isp-report-legend {
    display: inline-block;
    width: .55rem;
    height: .55rem;
    border-radius: 2px;
    vertical-align: middle;
}

.isp-report-legend--billed {
    background: rgba(var(--bs-primary-rgb), .85);
}

.isp-report-legend--collected {
    background: rgba(var(--bs-success-rgb), .85);
}

.isp-report-category-card {
    transition: border-color .15s ease, box-shadow .15s ease;
}

.isp-report-category-card:hover {
    border-color: rgba(var(--bs-primary-rgb), .45);
    box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .08);
}

.isp-report-layout .isp-report-sidebar {
    position: sticky;
    top: 1rem;
    max-height: calc(100vh - 7rem);
    display: flex;
    flex-direction: column;
}

.isp-report-sidebar__list {
    overflow-y: auto;
    max-height: calc(100vh - 10rem);
}

.isp-report-nav-item {
    font-size: .8125rem;
    padding: .5rem .75rem;
    border-left: 3px solid transparent;
}

.isp-report-nav-item.active {
    border-left-color: var(--isp-nav-active-line, var(--bs-primary));
    font-weight: 600;
}

.isp-report-nav-item__label {
    display: block;
    line-height: 1.35;
}

.isp-report-categories .isp-settings__tablist {
    overflow-x: auto;
    scrollbar-width: thin;
}

.isp-report-table-wrap {
    padding: 0 1rem 1rem;
}

.isp-network-bar-chart__bar.is-revenue,
.isp-network-bar-chart__bar.is-income {
    background: rgba(var(--bs-primary-rgb), .85);
}

.isp-network-bar-chart__bar.is-expense,
.isp-network-bar-chart__bar.is-failed {
    background: rgba(var(--bs-danger-rgb), .85);
}

.isp-network-bar-chart__bar.is-success,
.isp-network-bar-chart__bar.is-collected {
    background: rgba(var(--bs-success-rgb), .85);
}

.isp-network-bar-chart__bar.is-forecast {
    background: rgba(var(--bs-warning-rgb), .85);
}

.isp-dashboard-tasks-range-menu {
    --bs-dropdown-bg: var(--isp-topbar-dropdown-bg);
    --bs-dropdown-color: var(--isp-topbar-dropdown-text);
    --bs-dropdown-border-color: var(--isp-topbar-dropdown-border);
    padding: .65rem .75rem;
    min-width: 13.5rem;
}

.isp-dashboard-tasks-range-fields {
    display: flex;
    flex-direction: column;
    gap: .65rem;
}

.isp-dashboard-tasks-range-fields .isp-material-field>label {
    background: var(--isp-topbar-dropdown-bg);
}

#btnDashboardTaskRange.active,
#btnDashboardSubscriberRange.active {
    background: var(--isp-nav-active);
    border-color: var(--isp-nav-active-line);
    color: var(--isp-content-text-strong);
}

.isp-material-field {
    position: relative;
}

.isp-material-field>.form-control:not(textarea),
.isp-material-field>.form-select {
    min-height: 34px;
    height: 34px;
    padding: 0 .58rem;
    font-size: .8rem;
    line-height: 32px;
}

.isp-material-field>textarea.form-control {
    min-height: 72px;
    padding: .62rem .58rem .5rem;
    line-height: 1.35;
    resize: vertical;
}

.isp-material-field>.form-control::placeholder {
    color: transparent;
}

/* Label always sits on the border center — slim, no float transition */
.isp-material-field>label {
    position: absolute;
    left: .48rem;
    top: 0;
    transform: translateY(-50%);
    padding: 0 .18rem;
    font-weight: 500;
    letter-spacing: .01em;
    background: var(--isp-card-bg);
    pointer-events: none;
    z-index: 2;
    line-height: 1;
}

.isp-material-field>.form-control:focus+label,
.isp-material-field>.form-select:focus+label,
.isp-material-select:focus-within>label,
.isp-material-select:has(.form-select:focus)>label,
.isp-material-select:has(.isp-elite-select.is-open)>label {
    font-weight: 600;
}

.isp-material-select .isp-elite-select {
    width: 100%;
}

.isp-material-select .isp-elite-select__control.is-invalid,
.isp-material-field>.form-control.is-invalid,
.isp-material-field>.form-select.is-invalid {
    border-color: var(--bs-form-invalid-border-color, #dc3545);
}

.isp-material-select .isp-elite-select__control {
    min-height: 34px;
    height: 34px;
    padding: 0 .58rem;
    line-height: 1;
    align-items: center;
}

.isp-material-select .isp-elite-select__label {
    line-height: 1.2;
    text-align: left;
}

.isp-filters-panel .form-label {
    margin-bottom: .35rem;
    font-size: .8rem;
}

.isp-filters-panel .isp-field {
    margin-bottom: .85rem;
}

.isp-filter-field .form-select,
.isp-filter-field .form-control {
    font-size: .875rem;
}

.isp-filter-field .isp-elite-select {
    width: 100%;
}

.dataTables_wrapper .dataTables_processing,
.dataTables_wrapper .dt-processing,
div.dt-processing,
div.dataTables_processing {
    display: none !important;
}

.isp-dt-processing-row>td {
    padding: .42rem !important;
}

.isp-dt-processing-inline {
    display: inline-flex;
    align-items: center;
    gap: .42rem;
    font-size: .78rem;
    color: var(--isp-muted-text);
}

.isp-dt-processing-inline svg {
    width: .95rem;
    height: .95rem;
}

/* DataTables Responsive — control column + child rows */
.isp-datatable-wrap {
    overflow-x: visible;
}

table.isp-datatable.dataTable>thead>tr>th,
table.isp-datatable.dataTable>tbody>tr>td {
    white-space: nowrap;
    padding: .28rem .45rem;
    font-size: .8rem;
    line-height: 1.25;
    vertical-align: middle;
}

table.isp-datatable.dataTable>thead>tr>th {
    padding: .32rem .45rem;
    font-size: .72rem;
    font-weight: 600;
}

table.isp-datatable.dataTable .badge {
    font-size: .68rem;
    padding: .2em .45em;
}

/* Row actions — single dropdown per row */
.isp-dt-actions-dropdown {
    display: inline-flex;
    justify-content: flex-end;
}

.isp-dt-actions-toggle {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 2rem;
    height: 2rem;
    min-width: 2rem;
    min-height: 2rem;
    padding: 0 !important;
    line-height: 1 !important;
    color: var(--isp-content-text) !important;
    border-color: var(--isp-input-border) !important;
    background: transparent !important;
    box-shadow: none !important;
}

.isp-dt-actions-toggle .bi {
    font-size: 1.05rem;
    line-height: 1;
}

.isp-dt-actions-toggle:hover,
.isp-dt-actions-toggle:focus,
.isp-dt-actions-toggle.show {
    color: var(--isp-content-text) !important;
    border-color: color-mix(in srgb, var(--isp-nav-active-line) 40%, var(--isp-input-border)) !important;
    background: color-mix(in srgb, var(--isp-nav-active) 45%, transparent) !important;
    box-shadow: none !important;
}

.isp-dt-actions-menu {
    z-index: 1080;
    min-width: 10.5rem;
    padding: .3rem !important;
    background: var(--isp-card-bg) !important;
    border: 1px solid var(--isp-input-border) !important;
    border-radius: var(--isp-radius-flat) !important;
}

.isp-dt-actions-menu .dropdown-item {
    display: flex;
    align-items: center;
    gap: 0;
    padding: .42rem .65rem !important;
    font-size: .8125rem;
    font-weight: 500;
    line-height: 1.25;
    color: var(--isp-content-text) !important;
    border-radius: var(--isp-radius-flat);
}

.isp-dt-actions-menu .dropdown-item .bi {
    width: 1rem;
    font-size: .9rem;
    flex-shrink: 0;
}

.isp-dt-actions-menu .dropdown-item:hover,
.isp-dt-actions-menu .dropdown-item:focus {
    color: var(--isp-content-text-strong) !important;
    background: color-mix(in srgb, var(--isp-nav-active) 55%, transparent) !important;
}

.isp-dt-actions-menu .dropdown-item.text-danger {
    color: #e11d48 !important;
}

.isp-dt-actions-menu .dropdown-item.text-danger:hover,
.isp-dt-actions-menu .dropdown-item.text-danger:focus {
    color: #be123c !important;
    background: color-mix(in srgb, #e11d48 12%, transparent) !important;
}

.isp-dt-actions-menu .dropdown-item.text-warning {
    color: #d97706 !important;
}

.isp-dt-actions-menu .dropdown-item.text-warning:hover,
.isp-dt-actions-menu .dropdown-item.text-warning:focus {
    color: #b45309 !important;
    background: color-mix(in srgb, #d97706 12%, transparent) !important;
}

html[data-bs-theme='light'] .isp-dt-actions-menu .dropdown-item.text-danger {
    color: #dc2626 !important;
}

table.isp-datatable.dataTable td.text-end,
table.isp-datatable.dataTable th.text-end {
    vertical-align: middle;
    overflow: visible;
}

table.isp-datatable.dataTable td.text-start,
table.isp-datatable.dataTable th.text-start {
    text-align: left !important;
}

table.isp-datatable.dataTable tbody td:has(.isp-dt-actions-dropdown) {
    overflow: visible;
    position: relative;
}

table.isp-datatable.dataTable>tbody>tr>td.dtr-control,
table.isp-datatable.dataTable>tbody>tr>th.dtr-control {
    cursor: pointer;
    padding: .2rem .3rem !important;
    text-align: center;
    vertical-align: middle;
    width: 2rem;
}

/* Responsive row control — keep DataTables default triangle (do not override ::before content) */
table.isp-datatable.dtr-column.collapsed tbody tr.parent td.dtr-control::before,
table.isp-datatable.dtr-column.collapsed tbody tr.parent th.dtr-control::before {
    border-left-color: var(--isp-nav-active-line, rgba(0, 0, 0, .55)) !important;
}

table.isp-datatable tbody tr.child {
    background: color-mix(in srgb, var(--isp-card-bg) 94%, var(--isp-nav-active) 6%);
}

table.isp-datatable tbody tr.child ul.dtr-details {
    display: block;
    width: 100%;
    margin: 0;
    padding: .45rem .55rem;
    list-style: none;
}

table.isp-datatable tbody tr.child ul.dtr-details>li {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .65rem;
    padding: .28rem 0;
    border-bottom: 1px solid color-mix(in srgb, var(--isp-divider) 65%, transparent);
}

table.isp-datatable tbody tr.child ul.dtr-details>li:last-child {
    border-bottom: 0;
}

table.isp-datatable tbody tr.child span.dtr-title {
    min-width: 6.5rem;
    font-size: .72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--isp-label-text);
}

table.isp-datatable tbody tr.child span.dtr-data {
    flex: 1 1 auto;
    font-size: .84rem;
    color: var(--isp-content-text);
    word-break: break-word;
}

/* DataTables toolbar — export buttons + search (match page btn-outline-secondary btn-sm) */
.dataTables_wrapper .isp-dt-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .55rem .65rem;
    margin-bottom: .7rem;
    width: 100%;
}

.dataTables_wrapper .isp-dt-toolbar .dt-buttons,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons.btn-group,
.dataTables_wrapper .isp-dt-toolbar div.dt-buttons {
    display: inline-flex !important;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem;
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: 100%;
    margin: 0 !important;
    padding: 0;
    float: none !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    vertical-align: middle;
}

/* DataTables Buttons + Bootstrap btn-group: prevent stacked/double borders */
.dataTables_wrapper .isp-dt-toolbar .dt-buttons.btn-group>.btn,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons.btn-group>.dt-button,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons.btn-group>button,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons>.btn+.btn,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons>.dt-button+.dt-button,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons>button+button {
    margin-left: 0 !important;
    border-radius: var(--isp-radius-flat) !important;
}

.dataTables_wrapper .isp-dt-toolbar .dt-buttons .isp-dt-toolbar-btn,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .dt-button,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .btn,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons button.dt-button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 2.1rem !important;
    min-width: 2.1rem !important;
    height: 2.1rem !important;
    min-height: 2.1rem !important;
    padding: 0 !important;
    margin: 0 !important;
    font-size: 0 !important;
    line-height: 0 !important;
    letter-spacing: normal !important;
    white-space: nowrap;
    color: var(--isp-content-text) !important;
    border: 1px solid var(--isp-input-border) !important;
    border-radius: var(--isp-radius-flat) !important;
    background: transparent !important;
    box-shadow: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    transition: background-color .14s ease, border-color .14s ease, color .14s ease;
}

.dataTables_wrapper .isp-dt-toolbar .dt-buttons .isp-dt-toolbar-btn:hover,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .dt-button:hover,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .btn:hover,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons button.dt-button:hover,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .isp-dt-toolbar-btn:focus,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .dt-button:focus,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .btn:focus,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons button.dt-button:focus {
    color: var(--isp-content-text) !important;
    border-color: color-mix(in srgb, var(--isp-nav-active-line) 40%, var(--isp-input-border)) !important;
    background: color-mix(in srgb, var(--isp-nav-active) 45%, transparent) !important;
    box-shadow: none !important;
}

.dataTables_wrapper .isp-dt-toolbar .dt-buttons .isp-dt-toolbar-btn .bi,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .dt-button .bi,
.dataTables_wrapper .isp-dt-toolbar .dt-buttons .btn .bi {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: 1rem;
    height: 1rem;
    font-size: 1rem !important;
    line-height: 1 !important;
    flex-shrink: 0;
    color: inherit !important;
    pointer-events: none;
}

/* Override DataTables Buttons / Bootstrap 5 plugin defaults in toolbar only */
.dataTables_wrapper .isp-dt-toolbar div.dt-buttons .dt-button,
.dataTables_wrapper .isp-dt-toolbar div.dt-buttons button.dt-button {
    background-image: none !important;
    filter: none !important;
    text-shadow: none !important;
}

.dataTables_wrapper .isp-dt-toolbar .dt-search,
.dataTables_wrapper .isp-dt-toolbar .dataTables_filter {
    flex: 1 1 12rem;
    min-width: min(100%, 14rem);
    max-width: 100%;
    margin: 0 0 0 auto !important;
    float: none !important;
    text-align: right;
}

.dataTables_wrapper .isp-dt-toolbar .dt-search label,
.dataTables_wrapper .isp-dt-toolbar .dataTables_filter label {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .45rem;
    margin: 0;
    width: 100%;
    font-size: .8rem;
    color: var(--isp-label-text);
}

.dataTables_wrapper .isp-dt-toolbar .dt-search input,
.dataTables_wrapper .isp-dt-toolbar .dataTables_filter input {
    width: 100%;
    max-width: 16rem;
    min-height: 34px;
}

/* Column visibility dropdown */
div.dt-button-collection,
div.dt-button-collection-fixed {
    z-index: 2000;
    background: var(--isp-card-bg) !important;
    color: var(--isp-content-text) !important;
    border: 1px solid var(--isp-divider) !important;
    border-radius: var(--isp-radius-flat) !important;
    box-shadow: 0 .45rem 1rem rgba(0, 0, 0, .18) !important;
    padding: .35rem !important;
    min-width: 12rem;
    max-height: min(70vh, 22rem);
    overflow: auto;
}

div.dt-button-collection .dt-button,
div.dt-button-collection button,
div.dt-button-collection a {
    display: flex !important;
    align-items: center;
    gap: .55rem !important;
    width: 100% !important;
    margin: 0 !important;
    padding: .45rem .6rem !important;
    border: 0 !important;
    border-radius: var(--isp-radius-flat) !important;
    background: transparent !important;
    color: var(--isp-content-text) !important;
    font-size: .8125rem !important;
    font-weight: 500 !important;
    line-height: 1.25 !important;
    text-align: left !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    box-shadow: none !important;
    opacity: 1 !important;
}

div.dt-button-collection .dt-button:hover,
div.dt-button-collection button:hover,
div.dt-button-collection a:hover {
    color: var(--isp-content-text-strong) !important;
    background: color-mix(in srgb, var(--isp-nav-active) 55%, transparent) !important;
}

div.dt-button-collection .dt-button.dt-button-active,
div.dt-button-collection button.dt-button-active,
div.dt-button-collection a.dt-button-active {
    color: var(--isp-content-text-strong) !important;
    font-weight: 600 !important;
}

div.dt-button-collection .dt-button::before,
div.dt-button-collection button::before,
div.dt-button-collection a::before {
    content: '' !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: 1rem !important;
    height: 1rem !important;
    flex: 0 0 1rem;
    border: 1px solid var(--isp-divider) !important;
    border-radius: .15rem !important;
    background: var(--isp-input-bg) !important;
    font-size: .7rem !important;
    font-weight: 700 !important;
    line-height: 1rem !important;
    color: transparent !important;
}

div.dt-button-collection .dt-button.dt-button-active::before,
div.dt-button-collection button.dt-button-active::before,
div.dt-button-collection a.dt-button-active::before,
div.dt-button-collection .dt-button-active::before {
    content: '✓' !important;
    color: #fff !important;
    background: var(--isp-nav-active-line, #2563eb) !important;
    border-color: var(--isp-nav-active-line, #2563eb) !important;
}

div.dt-button-collection .dt-button-checkmark,
div.dt-button-collection span.dt-button-checkmark {
    display: none !important;
}

table.isp-datatable .isp-dt-row-index {
    font-variant-numeric: tabular-nums;
    font-size: .75rem;
    padding-left: .35rem !important;
    padding-right: .35rem !important;
}

@media (max-width: 767.98px) {
    .dataTables_wrapper .isp-dt-toolbar {
        flex-direction: column;
        align-items: stretch;
    }

    .dataTables_wrapper .isp-dt-toolbar .dt-buttons {
        width: 100%;
    }

    .dataTables_wrapper .isp-dt-toolbar .dt-search,
    .dataTables_wrapper .isp-dt-toolbar .dataTables_filter {
        width: 100%;
        margin-left: 0 !important;
        text-align: left;
    }

    .dataTables_wrapper .isp-dt-toolbar .dt-search label,
    .dataTables_wrapper .isp-dt-toolbar .dataTables_filter label {
        flex-direction: column;
        align-items: stretch;
        text-align: left;
    }

    .dataTables_wrapper .isp-dt-toolbar .dt-search input,
    .dataTables_wrapper .isp-dt-toolbar .dataTables_filter input {
        max-width: none;
    }
}

/* DataTables pagination: polished + right-aligned */
.dataTables_wrapper::after {
    content: '';
    display: block;
    clear: both;
}

div.dataTables_wrapper div.dataTables_info,
.dataTables_wrapper .dt-info,
[id$='_wrapper'] [id$='_info'] {
    float: left !important;
    clear: none !important;
    margin-right: auto !important;
}

div.dataTables_wrapper div.dataTables_paginate,
.dataTables_wrapper .dt-paging,
[id$='_wrapper'] [id$='_paginate'] {
    float: right !important;
    clear: none !important;
    margin-left: auto !important;
    margin-top: .58rem;
    display: flex !important;
    justify-content: flex-end;
    align-items: center;
    text-align: right !important;
}

.dataTables_wrapper .pagination {
    margin: 0;
    gap: .26rem;
    justify-content: flex-end;
}

.dataTables_wrapper .page-link,
.dataTables_wrapper .paginate_button,
.dataTables_wrapper .dt-paging-button {
    min-width: 2rem;
    height: 2rem;
    padding: 0 .58rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: .78rem;
    font-weight: 600;
    line-height: 1;
    border-radius: var(--isp-radius-flat) !important;
    border: 1px solid var(--isp-divider) !important;
    background: color-mix(in srgb, var(--isp-card-bg) 90%, transparent);
    color: var(--isp-content-text) !important;
    box-shadow: none !important;
    transition: background-color .14s ease, border-color .14s ease, color .14s ease;
}

.dataTables_wrapper .page-link:hover,
.dataTables_wrapper .paginate_button:hover,
.dataTables_wrapper .dt-paging-button:hover {
    border-color: color-mix(in srgb, var(--isp-nav-active-line) 45%, var(--isp-divider)) !important;
    background: color-mix(in srgb, var(--isp-nav-active) 50%, transparent) !important;
    color: var(--isp-content-text) !important;
}

.dataTables_wrapper .page-item.active .page-link,
.dataTables_wrapper .paginate_button.current,
.dataTables_wrapper .dt-paging-button.current {
    border-color: var(--isp-nav-active-line) !important;
    background: color-mix(in srgb, var(--isp-nav-active-line) 24%, transparent) !important;
    color: var(--isp-content-text) !important;
}

.dataTables_wrapper .page-item.disabled .page-link,
.dataTables_wrapper .paginate_button.disabled,
.dataTables_wrapper .dt-paging-button:disabled {
    opacity: .46;
    cursor: not-allowed;
    pointer-events: none;
}

/* DataTables v2 bottom bar */
.dataTables_wrapper .dt-layout-row:last-child {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
}

.dataTables_wrapper .dt-layout-row:last-child .dt-layout-start {
    justify-self: start;
}

.dataTables_wrapper .dt-layout-row:last-child .dt-layout-end {
    margin-left: auto !important;
    text-align: right;
    display: flex;
    justify-content: flex-end;
}

/* Premium pagination finish */
.dataTables_wrapper .pagination {
    border: 1px solid var(--isp-divider);
    padding: .2rem;
    background: color-mix(in srgb, var(--isp-card-bg) 94%, transparent);
}

.dataTables_wrapper .page-link,
.dataTables_wrapper .paginate_button,
.dataTables_wrapper .dt-paging-button {
    min-width: 2.05rem;
    height: 2.05rem;
    border-color: transparent !important;
}

.dataTables_wrapper .page-link:focus,
.dataTables_wrapper .paginate_button:focus,
.dataTables_wrapper .dt-paging-button:focus {
    outline: none;
    box-shadow: none !important;
}

.dataTables_wrapper .page-item.active .page-link,
.dataTables_wrapper .paginate_button.current,
.dataTables_wrapper .dt-paging-button.current {
    font-weight: 700;
    letter-spacing: .01em;
}

/* User-requested hard float-right pagination */
[id$='_wrapper'] [id$='_paginate'] {
    width: 100% !important;
}

[id$='_wrapper'] [id$='_paginate']>ul.pagination,
.dataTables_wrapper div.dataTables_paginate>ul.pagination {
    float: right !important;
    margin-left: auto !important;
    display: flex !important;
    justify-content: flex-end !important;
}

/* Structural bottom bar for dom: Bft<"isp-dt-bottom"ip> */
.dataTables_wrapper .isp-dt-bottom {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    width: 100%;
    clear: both;
    margin-top: .42rem;
}

.dataTables_wrapper .isp-dt-bottom .dataTables_info {
    float: none !important;
    margin: 0 !important;
}

.dataTables_wrapper .isp-dt-bottom .dataTables_paginate {
    float: none !important;
    margin: 0 0 0 auto !important;
    display: flex !important;
    justify-content: flex-end !important;
}

.dataTables_wrapper .isp-dt-bottom .pagination {
    float: right !important;
    margin: 0 0 0 auto !important;
}

/* Simple global pagination alignment */
.pagination {
    float: right !important;
}

.pagination::after {
    content: '';
    display: block;
    clear: both;
}

#ispDeleteModal {
    z-index: 2100;
}

.isp-delete-confirm-btn {
    min-width: 7.5rem;
}

.isp-delete-confirm-btn__spinner {
    vertical-align: -0.125em;
}

#ispDeleteModal+.modal-backdrop {
    z-index: 2099;
}

/* Secret inputs: masked like password, but type=text (no credential autofill) */
@font-face {
    font-family: 'isp-text-security-disc';
    src: url('../fonts/text-security-disc.woff2') format('woff2');
    font-style: normal;
    font-weight: 400;
}

.isp-secret-input {
    -webkit-text-security: disc;
    text-security: disc;
}

.isp-secret-input--font {
    font-family: 'isp-text-security-disc', monospace;
}

/* ── System settings ───────────────────────────────────────────── */
.isp-settings {
    --isp-settings-gap: 1.5rem;
}

.isp-settings__tabs {
    border-bottom: 1px solid var(--isp-divider);
    margin-bottom: var(--isp-settings-gap);
}

.isp-settings__tablist {
    display: flex;
    flex-wrap: nowrap;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
    overflow-x: auto;
    scrollbar-width: none;
}

.isp-settings__tablist::-webkit-scrollbar {
    display: none;
}

.isp-settings__tablist li {
    list-style: none;
}

a.isp-settings__tab {
    display: inline-block;
    text-decoration: none;
}

.isp-settings__tab {
    flex: 0 0 auto;
    border: 0;
    background: transparent;
    color: var(--isp-muted-text);
    font-size: .875rem;
    font-weight: 500;
    padding: .85rem 1.1rem;
    margin-bottom: -1px;
    border-bottom: 2px solid transparent;
    white-space: nowrap;
    transition: color .15s ease, border-color .15s ease;
}

.isp-settings__tab:hover {
    color: var(--isp-content-text);
}

.isp-settings__tab.active {
    color: var(--isp-content-text-strong);
    border-bottom-color: var(--isp-nav-active-line);
}

.isp-settings__panel {
    background: var(--isp-card-bg);
    border: 1px solid var(--isp-divider);
    padding: 1.5rem 1.75rem;
}

.isp-settings__section+.isp-settings__section {
    margin-top: 2rem;
    padding-top: 2rem;
    border-top: 1px solid var(--isp-divider);
}

.isp-settings__section-title {
    color: var(--isp-content-text-strong);
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .04em;
    margin-bottom: 1rem;
    text-transform: uppercase;
}

.isp-settings__section-hint {
    color: var(--isp-muted-text);
    font-size: .8125rem;
    margin: -.35rem 0 1rem;
}

.isp-settings__footer {
    align-items: center;
    border-top: 1px solid var(--isp-divider);
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-top: 2rem;
    padding-top: 1.25rem;
}

.isp-settings__template {
    border: 1px solid var(--isp-divider);
    margin-bottom: 1rem;
    padding: 1.25rem 1.5rem;
}

.isp-settings__template:last-child {
    margin-bottom: 0;
}

.isp-settings__template-head {
    align-items: flex-start;
    display: flex;
    flex-wrap: wrap;
    gap: .75rem 1rem;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.isp-settings__template-name {
    color: var(--isp-content-text-strong);
    font-weight: 600;
    margin-bottom: .15rem;
}

.isp-settings__placeholders {
    background: rgba(111, 177, 255, .06);
    border: 1px solid var(--isp-divider);
    color: var(--isp-muted-text);
    font-size: .8125rem;
    margin-bottom: 1.25rem;
    padding: .85rem 1rem;
}

.isp-settings__placeholders code {
    color: var(--isp-content-text);
    font-size: .78rem;
}

.isp-settings__panel--stacked {
    margin-bottom: 1rem;
}

.isp-settings__panel--stacked:last-child {
    margin-bottom: 0;
}

.isp-settings__footer--compact {
    margin-top: 1.25rem;
    padding-top: 1rem;
}

/* Settings accordions (payments, templates) */
.isp-settings-accordion {
    border: 1px solid var(--isp-divider);
}

.isp-settings-accordion__item+.isp-settings-accordion__item {
    border-top: 1px solid var(--isp-divider);
}

.isp-settings-accordion__header {
    align-items: stretch;
    display: flex;
    gap: 0;
}

.isp-settings-accordion__trigger {
    align-items: center;
    background: transparent;
    border: 0;
    color: inherit;
    display: flex;
    flex: 1;
    gap: .75rem;
    justify-content: space-between;
    min-height: 3.25rem;
    padding: .65rem 1rem;
    text-align: left;
    width: 100%;
}

.isp-settings-accordion__trigger:hover {
    background: rgba(111, 177, 255, .06);
}

.isp-settings-accordion__trigger-text {
    display: flex;
    flex-direction: column;
    gap: .1rem;
    min-width: 0;
}

.isp-settings-accordion__title {
    color: var(--isp-content-text-strong);
    font-size: .9rem;
    font-weight: 600;
}

.isp-settings-accordion__subtitle {
    color: var(--isp-muted-text);
    font-size: .78rem;
}

.isp-settings-accordion__trigger-end {
    align-items: center;
    display: inline-flex;
    flex-shrink: 0;
    gap: .5rem;
}

.isp-settings-accordion__badge {
    font-size: .68rem;
    font-weight: 500;
}

.isp-settings-accordion__chevron {
    color: var(--isp-muted-text);
    font-size: .85rem;
    transition: transform .2s ease;
}

.isp-settings-accordion__trigger:not(.collapsed) .isp-settings-accordion__chevron {
    transform: rotate(180deg);
}

.isp-settings-accordion__actions {
    align-items: center;
    border-left: 1px solid var(--isp-divider);
    display: flex;
    flex-shrink: 0;
    padding: 0 .85rem;
}

.isp-settings-accordion__actions .form-check {
    margin-bottom: 0;
    white-space: nowrap;
}

.isp-settings-accordion__body {
    background: rgba(111, 177, 255, .03);
    border-top: 1px solid var(--isp-divider);
    padding: 1.1rem 1.25rem 1.25rem;
}

/* ── Picture upload (profile / logo / icon) ─────────────────────── */
:root {
    --isp-picture-square-size: 7.5rem;
    --isp-picture-logo-max-height: 7.5rem;
    --isp-picture-logo-max-width: 17.5rem;
    --isp-picture-logo-placeholder-width: 12.5rem;
    --isp-picture-upload-head: calc(var(--isp-label-font-size) * 1.25 + .45rem);
    --isp-picture-upload-tail: calc(.4rem + .75rem * 1.25);
}

.isp-picture-upload__label {
    color: var(--isp-label-text);
    font-size: var(--isp-label-font-size);
    font-weight: 500;
    margin-bottom: .45rem;
}

.isp-picture-upload__frame {
    background: #e8eaee;
    border: 1px solid var(--isp-divider);
    overflow: hidden;
    position: relative;
}

html[data-bs-theme='dark'] .isp-picture-upload__frame {
    background: #2a313c;
}

/* Standard square — profile, icon */
.isp-picture-upload--square {
    max-width: 100%;
    width: fit-content;
}

.isp-picture-upload--square .isp-picture-upload__frame {
    aspect-ratio: 1;
    height: var(--isp-picture-square-size);
    width: var(--isp-picture-square-size);
}

.isp-picture-upload--square .isp-picture-upload__preview,
.isp-picture-upload--square .isp-picture-upload__placeholder {
    display: block;
    height: 100%;
    inset: 0;
    position: absolute;
    width: 100%;
}

.isp-picture-upload--square .isp-picture-upload__preview {
    object-fit: cover;
}

.isp-picture-upload--square .isp-picture-upload__placeholder {
    align-items: center;
    color: #9aa3af;
    display: flex;
    justify-content: center;
}

.isp-picture-upload--square .isp-picture-upload__placeholder svg {
    height: 42%;
    width: 42%;
}

/* Logo — natural aspect ratio within bounds (same height band as square) */
.isp-picture-upload--logo {
    max-width: 100%;
    width: 100%;
}

.isp-picture-upload--logo .isp-picture-upload__frame {
    display: inline-block;
    max-width: 100%;
    min-height: var(--isp-picture-logo-max-height);
    min-width: var(--isp-picture-logo-placeholder-width);
    padding: .5rem .5rem 2rem;
    width: auto;
}

.isp-picture-upload--logo .isp-picture-upload__preview,
.isp-picture-upload--logo .isp-picture-upload__placeholder {
    display: block;
    height: auto;
    max-height: var(--isp-picture-logo-max-height);
    max-width: min(100%, var(--isp-picture-logo-max-width));
    position: relative;
    width: auto;
}

.isp-picture-upload--logo .isp-picture-upload__preview {
    object-fit: contain;
}

.isp-picture-upload--logo .isp-picture-upload__placeholder {
    align-items: center;
    color: #9aa3af;
    display: flex;
    height: var(--isp-picture-logo-max-height);
    justify-content: center;
    width: var(--isp-picture-logo-placeholder-width);
}

.isp-picture-upload--logo .isp-picture-upload__placeholder svg {
    height: 2.25rem;
    width: 2.25rem;
}

.isp-picture-upload__choose {
    background: #5f6670;
    bottom: 0;
    color: #fff;
    cursor: pointer;
    font-size: .68rem;
    font-weight: 500;
    line-height: 1.2;
    margin: 0;
    padding: .4rem .5rem;
    position: absolute;
    right: 0;
    text-align: center;
    user-select: none;
    width: auto;
    white-space: nowrap;
    z-index: 2;
}

.isp-picture-upload__choose:hover {
    background: #4f5560;
    color: #fff;
}

.isp-picture-upload__hint {
    color: var(--isp-muted-text);
    font-size: .75rem;
    margin-top: .4rem;
}

.isp-picture-upload--square .isp-picture-upload__hint {
    max-width: var(--isp-picture-square-size);
}

.isp-picture-upload__remove {
    margin-top: .5rem;
    width: fit-content;
}

.isp-picture-upload__remove-label {
    align-items: center;
    color: var(--isp-muted-text);
    cursor: pointer;
    display: inline-flex;
    font-size: .75rem;
    gap: .45rem;
    line-height: 1.25;
    margin: 0;
    user-select: none;
    white-space: nowrap;
}

.isp-picture-upload__remove-label input {
    flex-shrink: 0;
    margin: 0;
}

.isp-picture-upload.is-picture-remove-active .isp-picture-upload__frame {
    opacity: .5;
}

.isp-profile-account-fields {
    max-width: 28rem;
}

/* User form drawer */
.isp-user-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.isp-user-form__section {
    display: flex;
    flex-direction: column;
    gap: .65rem;
}

.isp-user-form__section .isp-field {
    margin-bottom: 0;
}

.isp-user-form-hero {
    --isp-user-hero-field-height: 34px;
    --isp-user-hero-field-gap: 1rem;
    --isp-user-hero-fields-height: calc(3 * var(--isp-user-hero-field-height) + 2 * var(--isp-user-hero-field-gap));
    --isp-picture-square-size: var(--isp-user-hero-fields-height);
    align-items: start;
    display: grid;
    gap: .75rem;
    grid-template-columns: var(--isp-picture-square-size) minmax(0, 1fr);
}

.isp-user-form-hero__media .isp-field,
.isp-user-form-hero__fields .isp-field {
    margin-bottom: 0;
}

.isp-user-form-hero__media .isp-picture-upload__remove {
    margin-top: .35rem;
}

.isp-user-form-hero__fields {
    display: flex;
    flex-direction: column;
    gap: var(--isp-user-hero-field-gap);
    margin-top: var(--isp-picture-upload-head);
    min-height: var(--isp-user-hero-fields-height);
    min-width: 0;
}

.isp-user-form-passwords>.isp-field {
    margin-bottom: 0;
}

.isp-form-row-error {
    margin-top: -.15rem;
    width: 100%;
}

.isp-form-row-error .invalid-feedback {
    margin-top: .15rem;
}

.isp-user-form__flag {
    background: transparent;
    border: 1px solid var(--isp-divider);
    border-radius: 0;
    padding: .5rem .6rem;
}

.isp-user-form__flag .isp-field {
    margin-bottom: 0;
}

.isp-user-perm-groups {
    display: flex;
    flex-direction: column;
    gap: .45rem;
}

.isp-user-perm-group>summary {
    text-transform: uppercase;
}

.isp-user-perm-group__actions {
    display: flex;
    align-items: center;
    gap: .35rem;
    margin-bottom: .5rem;
}

.isp-user-perm-group__actions .btn-link {
    font-size: .8125rem;
    text-decoration: none;
}

.isp-user-perm-group__actions .btn-link:hover {
    text-decoration: underline;
}

.isp-user-perm-list {
    display: flex;
    flex-direction: column;
    gap: .4rem;
}

.isp-user-perm-list .form-check-label {
    line-height: 1.35;
}

@media (max-width: 575.98px) {
    .isp-user-form-hero {
        --isp-picture-square-size: 7.5rem;
        grid-template-columns: 1fr;
    }

    .isp-user-form-hero__fields {
        gap: .5rem;
        margin-top: 0;
        min-height: 0;
    }
}

.isp-live-status {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    line-height: 1.45;
}

.isp-live-toolbar .isp-live-status {
    flex: 1 1 18rem;
}

.isp-live-refresh-select {
    min-width: 6.5rem;
    width: auto;
}

.isp-timezone-modal__list {
    max-height: 16rem;
    overflow-y: auto;
}

.isp-timezone-modal__list .list-group-item.active {
    background-color: var(--bs-primary-bg-subtle);
    border-color: var(--bs-primary-border-subtle);
    color: var(--bs-body-color);
}

.isp-live-dot {
    animation: isp-live-pulse 1.8s ease-in-out infinite;
    background: #22c55e;
    border-radius: 999px;
    box-shadow: 0 0 0 0 rgba(34, 197, 94, .45);
    display: inline-block;
    flex-shrink: 0;
    height: .5rem;
    width: .5rem;
}

@keyframes isp-live-pulse {

    0%,
    100% {
        box-shadow: 0 0 0 0 rgba(34, 197, 94, .35);
    }

    50% {
        box-shadow: 0 0 0 .35rem rgba(34, 197, 94, 0);
    }
}

/* Profile account — mobile layout */
@media (max-width: 767.98px) {
    .isp-profile-account__panel {
        padding: 1rem;
    }

    .isp-profile-account-fields {
        max-width: none;
    }

    .isp-profile-account__footer {
        background: var(--isp-card-bg);
        border-top: 1px solid var(--isp-divider);
        bottom: 0;
        margin: 1.25rem -1rem -1rem;
        padding: .85rem 1rem calc(.85rem + env(safe-area-inset-bottom, 0px));
        position: sticky;
        z-index: 5;
    }

    .isp-profile-account__footer .btn {
        min-height: 2.5rem;
        width: 100%;
    }

    .isp-profile-settings .isp-settings__panel {
        padding: 1rem;
    }

    .isp-profile-settings .isp-settings__footer {
        background: var(--isp-card-bg);
        border-top: 1px solid var(--isp-divider);
        bottom: 0;
        margin: 1.25rem -1rem -1rem;
        padding: .85rem 1rem calc(.85rem + env(safe-area-inset-bottom, 0px));
        position: sticky;
        z-index: 5;
    }

    .isp-profile-settings .isp-settings__footer .btn {
        min-height: 2.5rem;
        width: 100%;
    }

    .isp-profile-settings .row.g-3[style*='max-width'] {
        max-width: none !important;
    }
}

/* ── Network GIS map ─────────────────────────────────────────────── */
.isp-gis-shell:fullscreen {
    background: var(--isp-body-bg, #f8f9fa);
    overflow: auto;
    padding: 1rem;
}

.isp-gis-workspace {
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(0, 1fr) 320px;
}

.isp-gis-map {
    height: min(72vh, 760px);
    min-height: 420px;
    width: 100%;
    z-index: 1;
}

.isp-gis-shell:fullscreen .isp-gis-map {
    height: calc(100vh - 220px);
    max-height: none;
}

.isp-gis-panel {
    max-height: min(72vh, 760px);
    overflow: hidden;
}

.isp-gis-panel.collapsed {
    display: none;
}

.isp-gis-workspace:has(.isp-gis-panel.collapsed) {
    grid-template-columns: 1fr;
}

.isp-gis-results {
    max-height: calc(min(72vh, 760px) - 140px);
    overflow-y: auto;
}

.isp-gis-map-stack {
    display: flex;
    flex-direction: column;
}

.isp-gis-map-stage {
    min-height: 0;
}

.isp-gis-map-footer {
    background: var(--isp-card-bg);
    border-top: 1px solid var(--isp-divider);
    color: var(--isp-content-text);
    max-height: 34vh;
    overflow: auto;
    padding: .55rem .75rem;
}

.isp-gis-map-footer__hint {
    color: var(--isp-muted-text);
}

.isp-gis-map-footer__details table {
    margin-bottom: 0;
}

.isp-gis-map-footer__details th,
.isp-gis-map-footer__details td {
    padding: .25rem .45rem;
    vertical-align: middle;
}

.isp-gis-map-hint {
    background: rgba(255, 255, 255, .92);
    border-radius: .35rem;
    bottom: .75rem;
    left: .75rem;
    padding: .35rem .6rem;
    pointer-events: none;
    position: absolute;
    z-index: 500;
}

.isp-gis-measure-label-host {
    background: transparent !important;
    border: none !important;
}

.isp-gis-measure-label {
    align-items: center;
    background: #fff;
    border: 1px solid rgba(147, 51, 234, .28);
    border-radius: 999px;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, .08),
        0 4px 14px rgba(15, 23, 42, .14);
    color: #334155;
    display: inline-flex;
    font-size: .74rem;
    gap: .45rem;
    line-height: 1;
    padding: .38rem .72rem;
    pointer-events: none;
    transform: translate(-50%, -50%);
    white-space: nowrap;
}

.isp-gis-measure-label__distance {
    color: #7c3aed;
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: -.01em;
}

.isp-gis-measure-label__sep {
    background: #cbd5e1;
    border-radius: 999px;
    flex-shrink: 0;
    height: 14px;
    width: 1px;
}

.isp-gis-measure-label__cable {
    color: #64748b;
    font-size: .7rem;
    font-weight: 600;
}

.isp-gis-measure-point {
    background: #fff;
    border: 2px solid var(--point-color, #9333ea);
    border-radius: 50%;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, .85);
    height: 12px;
    position: relative;
    width: 12px;
}

.isp-gis-measure-point__label {
    background: var(--point-color, #9333ea);
    border-radius: 999px;
    color: #fff;
    font-size: .62rem;
    font-weight: 700;
    height: 18px;
    left: 50%;
    line-height: 18px;
    position: absolute;
    text-align: center;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 18px;
}

.isp-gis-pair-matrix th {
    width: 38%;
    white-space: nowrap;
}

.isp-gis-measure-on .leaflet-popup {
    display: none !important;
}

.isp-gis-measure-point--customer {
    --point-color: #f97316;
}

.isp-gis-measure-point--olt {
    --point-color: #2563eb;
}

.isp-gis-measure-point--zone {
    --point-color: #16a34a;
}

.isp-gis-measure-point--center {
    --point-color: #1d4ed8;
}

.isp-gis-measure-point--raw {
    --point-color: #9333ea;
}

.isp-gis-olt-link-label-host {
    background: transparent !important;
    border: none !important;
}

.isp-gis-olt-link-label {
    align-items: center;
    background: rgba(255, 255, 255, .94);
    border: 1px solid rgba(37, 99, 235, .28);
    border-radius: .3rem;
    box-shadow: 0 1px 6px rgba(15, 23, 42, .16);
    color: #334155;
    display: inline-flex;
    flex-direction: column;
    gap: .05rem;
    line-height: 1.1;
    padding: .2rem .34rem;
    pointer-events: none;
    transform: translate(-50%, -50%) rotate(var(--olt-label-rotate, 0deg));
    white-space: nowrap;
}

.isp-gis-olt-link-label__distance {
    color: #1d4ed8;
    font-size: .74rem;
    font-weight: 700;
    letter-spacing: -.01em;
}

.isp-gis-olt-link-label__cable {
    color: #64748b;
    font-size: .64rem;
    font-weight: 600;
}

.isp-gis-olt-on .leaflet-popup-pane .leaflet-popup {
    pointer-events: auto;
}

.isp-gis-feasibility {
    border-radius: .35rem;
    font-size: .8125rem;
    font-weight: 600;
    padding: .4rem .65rem;
    position: absolute;
    right: .75rem;
    top: .75rem;
    z-index: 500;
}

.isp-gis-feasible {
    background: rgba(25, 135, 84, .92);
    color: #fff;
}

.isp-gis-not-feasible {
    background: rgba(220, 53, 69, .92);
    color: #fff;
}

.isp-gis-marker-wrap {
    background: transparent !important;
    border: none !important;
    overflow: visible !important;
}

.leaflet-marker-icon.isp-gis-marker-wrap {
    overflow: visible !important;
}

.isp-gis-dot-host {
    align-items: center;
    display: flex;
    height: var(--canvas, 90px);
    justify-content: center;
    overflow: visible;
    position: relative;
    width: var(--canvas, 90px);
}

/* GIS ring markers — transparent fill, ring + centered icon */
.isp-gis-dot {
    --beep-color: var(--ring, #2563eb);
    --ring: #0f172a;
    align-items: center;
    display: inline-flex;
    flex-shrink: 0;
    height: var(--dot-size, 36px);
    justify-content: center;
    overflow: visible;
    position: relative;
    width: var(--dot-size, 36px);
}

.isp-gis-dot__circle {
    animation: none;
    background: transparent;
    border: 2.5px solid var(--ring);
    border-radius: 50%;
    box-shadow: none;
    box-sizing: border-box;
    color: var(--ring);
    display: grid;
    height: 100%;
    isolation: isolate;
    place-items: center;
    position: relative;
    transition: transform .15s ease;
    width: 100%;
    z-index: 2;
}

.isp-gis-dot--static .isp-gis-dot__circle {
    animation: none !important;
    box-shadow: none !important;
}

.isp-gis-dot--static .isp-gis-dot__circle::after,
.isp-gis-dot--static .isp-gis-dot__beep {
    display: none !important;
}

.isp-gis-dot__circle .bi {
    -webkit-font-smoothing: antialiased;
    display: block;
    font-size: calc(var(--dot-size, 36px) * .42) !important;
    height: 1em !important;
    line-height: 1;
    margin: 0;
    padding: 0;
    width: 1em !important;
}

.isp-gis-dot__circle em {
    display: block;
    font-size: calc(var(--dot-size, 36px) * .22);
    font-style: normal;
    font-weight: 700;
    line-height: 1;
}

/* Inactive — dark black, no glow */
.isp-gis-dot--inactive {
    --ring: #0f172a;
    --ring-glow: transparent;
}

.isp-gis-dot--inactive .isp-gis-dot__circle {
    animation: none !important;
    box-shadow: none !important;
}

.isp-gis-dot--inactive .isp-gis-dot__beep {
    display: none !important;
}

html[data-bs-theme='light'] .isp-gis-dot--inactive {
    --ring: #0f172a;
}

/* Zone active */
.isp-gis-dot--zone.isp-gis-dot--active {
    --ring: #6366f1;
    --beep-color: #6366f1;
}

/* OLT active — blue beep */
.isp-gis-dot--olt.isp-gis-dot--active {
    --ring: #2563eb;
    --beep-color: #2563eb;
}

/* Subscriber / cluster active — orange beep */
.isp-gis-dot--customer.isp-gis-dot--active,
.isp-gis-dot--cluster.isp-gis-dot--active {
    --ring: #f97316;
    --beep-color: #f97316;
}

.isp-gis-dot--cluster {
    --ring: #f97316;
    --beep-color: #f97316;
}

/* Search center — blue beep */
.isp-gis-dot--center {
    --ring: #2563eb;
    --beep-color: #2563eb;
}

/* Shared beeping sonar rings (center, active subscriber, active OLT) */
.isp-gis-dot--live.isp-gis-dot--active .isp-gis-dot__beep,
.isp-gis-dot--center.isp-gis-dot--live .isp-gis-dot__beep {
    animation: isp-marker-beep 2.2s ease-out infinite;
    border: 2px solid var(--beep-color);
    border-radius: 50%;
    box-sizing: border-box;
    height: 100%;
    left: 0;
    opacity: 0;
    pointer-events: none;
    position: absolute;
    top: 0;
    width: 100%;
    z-index: 1;
}

.isp-gis-dot--live .isp-gis-dot__beep--delay,
.isp-gis-dot--center.isp-gis-dot--live .isp-gis-dot__beep--delay {
    animation-delay: 1.1s;
}

.isp-gis-dot--live.isp-gis-dot--active .isp-gis-dot__circle,
.isp-gis-dot--center.isp-gis-dot--live .isp-gis-dot__circle {
    animation: isp-marker-core 2.2s ease-in-out infinite;
}

.isp-gis-dot--focused .isp-gis-dot__circle {
    border-width: 3px;
    transform: scale(1.08);
}

.leaflet-marker-icon:hover .isp-gis-dot__circle,
.isp-gis-marker-wrap:hover .isp-gis-dot__circle {
    transform: scale(1.06);
}

.isp-gis-dot--cluster .isp-gis-dot__circle {
    grid-template-rows: auto auto;
    place-items: center;
}

@keyframes isp-marker-beep {
    0% {
        opacity: .85;
        transform: scale(1);
    }

    100% {
        opacity: 0;
        transform: scale(2.35);
    }
}

@keyframes isp-marker-core {

    0%,
    100% {
        box-shadow: 0 0 0 0 color-mix(in srgb, var(--beep-color) 40%, transparent);
    }

    50% {
        box-shadow: 0 0 0 5px color-mix(in srgb, var(--beep-color) 0%, transparent);
    }
}

.isp-map-legend {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .45rem .65rem;
}

.isp-map-legend-item {
    align-items: center;
    background: color-mix(in srgb, var(--isp-card-bg) 88%, var(--isp-content-text) 12%);
    border: 1px solid var(--isp-divider);
    border-radius: 999px;
    color: var(--isp-content-text);
    display: inline-flex;
    font-size: .8125rem;
    font-weight: 500;
    gap: .5rem;
    line-height: 1.2;
    padding: .28rem .75rem .28rem .4rem;
}

.isp-map-legend-item__label {
    color: var(--isp-content-text);
    white-space: nowrap;
}

.isp-gis-toolbar-card .isp-map-layer-toggles .form-check-label {
    color: var(--isp-content-text);
}

.isp-gis-result-item .isp-gis-dot {
    align-self: center;
}

.isp-gis-stat {
    border: 1px solid var(--isp-divider, rgba(15, 23, 42, .08));
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
    overflow: hidden;
}

.isp-gis-stat-icon {
    align-items: center;
    border-radius: .75rem;
    display: inline-flex;
    flex-shrink: 0;
    font-size: 1.05rem;
    height: 2.35rem;
    justify-content: center;
    width: 2.35rem;
}

.isp-gis-stat--customers {
    border-top: 3px solid #f97316;
}

.isp-gis-stat--customers .isp-gis-stat-icon {
    background: rgba(249, 115, 22, .12);
    color: #f97316;
}

.isp-gis-stat--olts {
    border-top: 3px solid #2563eb;
}

.isp-gis-stat--olts .isp-gis-stat-icon {
    background: rgba(37, 99, 235, .12);
    color: #2563eb;
}

.isp-gis-stat--zones {
    border-top: 3px solid #4338ca;
}

.isp-gis-stat--zones .isp-gis-stat-icon {
    background: rgba(67, 56, 202, .1);
    color: #4338ca;
}

.isp-gis-stat--radius {
    border-top: 3px solid #1d4ed8;
}

.isp-gis-stat--radius .isp-gis-stat-icon {
    background: rgba(29, 78, 216, .1);
    color: #1d4ed8;
}

.isp-gis-stat .fw-semibold {
    font-size: .98rem;
    letter-spacing: -.01em;
    line-height: 1.2;
}

.isp-gis-cluster-wrap {
    background: transparent !important;
    border: none !important;
}

.isp-gis-result-item .isp-gis-dot--static {
    flex-shrink: 0;
}

.isp-map-layer-toggles {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1rem;
}

@media (max-width: 991.98px) {
    .isp-gis-workspace {
        grid-template-columns: 1fr;
    }

    .isp-gis-panel {
        max-height: 360px;
    }

    .isp-gis-results {
        max-height: 240px;
    }
}

/*
 * Auth — slim material split-card
 */

body.isp-auth {
    background-color: var(--isp-body-bg);
    color: var(--isp-content-text);
    font-family: var(--isp-font-family);
    font-size: .86rem;
    line-height: 1.5;
    min-height: 100vh;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.isp-auth__shell {
    align-items: center;
    display: flex;
    justify-content: center;
    min-height: 100vh;
    padding: 1.75rem 1rem;
}

.isp-auth__card {
    background: var(--isp-card-bg);
    border: 1px solid var(--isp-divider);
    display: grid;
    grid-template-columns: minmax(10rem, 1fr) minmax(0, 2.15fr);
    margin: 0 auto;
    max-width: 38rem;
    min-height: 17rem;
    width: 100%;
}

.isp-auth__aside {
    align-self: stretch;
    background: var(--isp-card-header-bg);
    border-right: 1px solid var(--isp-divider);
    display: grid;
    height: 100%;
    padding: 1rem .75rem;
    place-items: center;
}

.isp-auth__brand {
    align-items: center;
    display: flex;
    flex-direction: column;
    gap: .85rem;
    max-width: 100%;
    text-align: center;
}

.isp-auth__brand-link {
    color: inherit;
    display: block;
    max-width: 100%;
    text-decoration: none;
    transition: opacity .2s ease, transform .2s ease;
}

.isp-auth__brand-link:hover,
.isp-auth__brand-link:focus {
    color: inherit;
    opacity: .92;
    text-decoration: none;
    transform: translateY(-1px);
}

.isp-auth__brand-link--mobile {
    display: inline-flex;
    flex-shrink: 0;
}

.isp-auth__brand-name {
    color: var(--isp-content-text-strong);
    display: grid;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .01em;
    line-height: 1.25;
    margin: 0;
    max-width: 100%;
    word-break: break-word;
}

.isp-auth__brand-name-sizer,
.isp-auth__typewriter {
    grid-area: 1 / 1;
}

.isp-auth__brand-name-sizer {
    visibility: hidden;
}

.isp-auth__typewriter {
    color: inherit;
}

.isp-auth__typewriter--active::after {
    animation: isp-auth-typewriter-blink 1s step-end infinite;
    background: var(--isp-nav-active-line);
    content: '';
    display: inline-block;
    height: .95em;
    margin-left: 1px;
    vertical-align: -.08em;
    width: 2px;
}

@keyframes isp-auth-typewriter-blink {
    50% {
        opacity: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .isp-auth__typewriter--active::after {
        animation: none;
        display: none;
    }
}

.isp-auth__emblem {
    align-items: center;
    color: var(--isp-nav-active-line);
    display: flex;
    font-size: 5.75rem;
    height: 1em;
    justify-content: center;
    line-height: 1;
    width: 1em;
}

.isp-auth__emblem .bi {
    display: block;
    font-size: 1em;
    height: 1em;
    line-height: 1;
    width: 1em;
}

.isp-auth__main {
    display: flex;
    flex-direction: column;
    padding: 1.35rem 1.5rem 1.25rem;
}

.isp-auth__header {
    margin-bottom: .95rem;
}

.isp-auth__header-copy {
    min-width: 0;
}

.isp-auth__emblem--mobile {
    display: none;
}

.isp-auth__title {
    color: var(--isp-content-text-strong);
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: -.01em;
    line-height: 1.25;
    margin: 0 0 .25rem;
}

.isp-auth__subtitle {
    color: var(--isp-muted-text);
    font-size: .78rem;
    line-height: 1.4;
    margin: 0;
}

.isp-auth__alert-host:not(:empty) {
    margin-bottom: .75rem;
}

.isp-auth__alert {
    border: 1px solid transparent;
    font-size: .76rem;
    line-height: 1.4;
    margin: 0;
    padding: .45rem .55rem;
}

.isp-auth__alert--danger {
    background: color-mix(in srgb, #dc3545 12%, var(--isp-card-bg));
    border-color: color-mix(in srgb, #dc3545 28%, transparent);
    color: color-mix(in srgb, #dc3545 78%, var(--isp-content-text));
}

.isp-auth__alert--success {
    background: color-mix(in srgb, #198754 12%, var(--isp-card-bg));
    border-color: color-mix(in srgb, #198754 28%, transparent);
    color: color-mix(in srgb, #198754 78%, var(--isp-content-text));
}

.isp-auth__alert--info {
    background: color-mix(in srgb, var(--isp-nav-active-line) 12%, var(--isp-card-bg));
    border-color: color-mix(in srgb, var(--isp-nav-active-line) 28%, transparent);
    color: var(--isp-content-text);
}

.isp-auth__alert-link {
    color: var(--isp-nav-active-line);
    font-weight: 600;
    margin-left: .25rem;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.isp-auth__alert-link:hover {
    color: var(--isp-content-text-strong);
}

.isp-auth__form {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: .55rem;
    padding-top: .35rem;
}

.isp-auth__form .isp-material-field+.isp-material-field {
    margin-top: .7rem;
}

.isp-auth .isp-material-field>label {
    align-items: center;
    background: var(--isp-card-bg);
    color: var(--isp-label-text);
    display: inline-flex;
    font-size: var(--isp-label-font-size);
    gap: .32rem;
}

.isp-auth .isp-material-field>label .bi {
    color: var(--isp-nav-active-line);
    flex-shrink: 0;
    font-size: .72rem;
    height: auto;
    line-height: 1;
    opacity: .92;
    width: auto;
}

.isp-auth__remember {
    align-items: center;
    color: var(--isp-muted-text);
    cursor: pointer;
    display: inline-flex;
    font-size: .76rem;
    gap: .4rem;
    margin: .05rem 0 0;
    user-select: none;
    width: fit-content;
}

.isp-auth__remember input {
    accent-color: var(--isp-nav-active-line);
    height: .85rem;
    margin: 0;
    width: .85rem;
}

.isp-auth__actions {
    align-items: center;
    display: flex;
    gap: .75rem;
    justify-content: space-between;
    margin-top: .15rem;
    padding-top: .25rem;
}

.isp-auth__forgot {
    color: var(--isp-content-text-strong);
    font-size: .76rem;
    font-weight: 600;
    text-decoration: none;
}

.isp-auth__forgot:hover {
    color: var(--isp-nav-active-line);
    text-decoration: underline;
}

.isp-auth__submit {
    align-items: center;
    display: inline-flex;
    gap: .35rem;
    min-height: 2rem;
    padding: var(--isp-btn-padding-y) .85rem;
    white-space: nowrap;
}

/* Sign-in submit: loading + success micro-animation */
.isp-auth-submit {
    justify-content: center;
    min-width: 6.85rem;
    overflow: hidden;
    position: relative;
}

.isp-auth-submit__layer {
    align-items: center;
    display: inline-flex;
    gap: .35rem;
    justify-content: center;
    transition: opacity .18s ease;
}

.isp-auth-submit__layer--load,
.isp-auth-submit__layer--success {
    inset: 0;
    opacity: 0;
    pointer-events: none;
    position: absolute;
    visibility: hidden;
}

.isp-auth-submit--loading .isp-auth-submit__layer--idle,
.isp-auth-submit--success .isp-auth-submit__layer--idle {
    opacity: 0;
    pointer-events: none;
    position: absolute;
    visibility: hidden;
}

.isp-auth-submit--loading .isp-auth-submit__layer--load {
    opacity: 1;
    position: relative;
    visibility: visible;
}

.isp-auth-submit--success .isp-auth-submit__layer--load {
    opacity: 0;
    visibility: hidden;
}

.isp-auth-submit--success .isp-auth-submit__layer--success {
    opacity: 1;
    visibility: visible;
}

.isp-auth-submit__spinner {
    animation: isp-auth-submit-spin .65s linear infinite;
    border: 2px solid rgba(255, 255, 255, .28);
    border-radius: 50%;
    border-top-color: #fff;
    height: 1rem;
    width: 1rem;
}

.isp-auth-submit__svg {
    display: block;
    overflow: visible;
}

.isp-auth-submit__ring,
.isp-auth-submit__check,
.isp-auth-submit__arrow {
    fill: none;
    stroke: currentColor;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.75;
}

.isp-auth-submit__ring {
    stroke-dasharray: 57;
    stroke-dashoffset: 57;
}

.isp-auth-submit__check {
    opacity: 0;
    stroke-dasharray: 14;
    stroke-dashoffset: 14;
    transform-box: fill-box;
    transform-origin: center;
}

.isp-auth-submit__arrow {
    opacity: 0;
    stroke-dasharray: 12;
    stroke-dashoffset: 12;
    transform-box: fill-box;
    transform-origin: center;
}

.isp-auth-submit--success .isp-auth-submit__ring {
    animation: isp-auth-submit-ring .28s ease forwards;
}

.isp-auth-submit--success .isp-auth-submit__check {
    animation:
        isp-auth-submit-check-draw .22s ease .24s forwards,
        isp-auth-submit-check-out .16s ease .48s forwards;
}

.isp-auth-submit--success .isp-auth-submit__arrow {
    animation:
        isp-auth-submit-arrow-in .16s ease .48s forwards,
        isp-auth-submit-arrow-shoot .36s cubic-bezier(.4, 0, .2, 1) .62s forwards;
}

.isp-auth-submit--success .isp-auth-submit__svg {
    animation: isp-auth-submit-svg-shoot .36s cubic-bezier(.4, 0, .2, 1) .62s forwards;
}

@keyframes isp-auth-submit-spin {
    to {
        transform: rotate(360deg);
    }
}

@keyframes isp-auth-submit-ring {
    to {
        stroke-dashoffset: 0;
    }
}

@keyframes isp-auth-submit-check-draw {
    from {
        opacity: 1;
    }

    to {
        opacity: 1;
        stroke-dashoffset: 0;
    }
}

@keyframes isp-auth-submit-check-out {
    to {
        opacity: 0;
        transform: scale(.82);
    }
}

@keyframes isp-auth-submit-arrow-in {
    from {
        opacity: 0;
        stroke-dashoffset: 12;
        transform: scale(.82);
    }

    to {
        opacity: 1;
        stroke-dashoffset: 0;
        transform: scale(1);
    }
}

@keyframes isp-auth-submit-arrow-shoot {
    to {
        opacity: 0;
        transform: translateX(12px);
    }
}

@keyframes isp-auth-submit-svg-shoot {
    to {
        opacity: 0;
        transform: translateX(10px);
    }
}

@media (prefers-reduced-motion: reduce) {
    .isp-auth-submit__spinner {
        animation: none;
        border-top-color: rgba(255, 255, 255, .55);
    }

    .isp-auth-submit--success .isp-auth-submit__ring,
    .isp-auth-submit--success .isp-auth-submit__check,
    .isp-auth-submit--success .isp-auth-submit__arrow,
    .isp-auth-submit--success .isp-auth-submit__svg {
        animation: none;
    }

    .isp-auth-submit--success .isp-auth-submit__ring {
        stroke-dashoffset: 0;
    }

    .isp-auth-submit--success .isp-auth-submit__check {
        opacity: 0;
        stroke-dashoffset: 0;
    }

    .isp-auth-submit--success .isp-auth-submit__arrow {
        opacity: 1;
        stroke-dashoffset: 0;
        transform: none;
    }
}

.isp-auth__theme {
    position: fixed;
    right: 1rem;
    top: 1rem;
    z-index: 20;
}

.isp-auth__theme-btn {
    align-items: center;
    background: var(--isp-card-bg);
    border: 1px solid var(--isp-divider);
    border-radius: var(--isp-radius-flat);
    color: var(--isp-muted-text);
    display: inline-flex;
    height: 2.1rem;
    justify-content: center;
    padding: 0;
    width: 2.1rem;
}

.isp-auth__theme-btn::after {
    display: none;
}

.isp-auth__theme-btn:hover,
.isp-auth__theme-btn:focus,
.isp-auth__theme-btn.show {
    background: var(--isp-card-bg);
    border-color: var(--isp-input-border-focus);
    color: var(--isp-content-text);
}

.isp-auth__theme .dropdown-menu {
    background: var(--isp-topbar-dropdown-bg);
    border-color: var(--isp-topbar-dropdown-border);
    border-radius: var(--isp-radius-flat);
    font-size: .82rem;
    min-width: 8.5rem;
    overflow: hidden;
}

.isp-auth__theme .dropdown-item {
    border-radius: var(--isp-radius-flat);
    color: var(--isp-topbar-dropdown-text);
}

.isp-auth__theme .dropdown-item:hover,
.isp-auth__theme .dropdown-item:focus {
    background: color-mix(in srgb, var(--isp-divider) 55%, var(--isp-card-bg));
    color: var(--isp-content-text-strong);
}

.isp-auth__theme .dropdown-item.active,
.isp-auth__theme .dropdown-item:active {
    background: var(--isp-card-bg) !important;
    color: var(--isp-content-text-strong) !important;
}

@media (max-width: 767.98px) {
    .isp-auth__card {
        grid-template-columns: 1fr;
        max-width: 22rem;
    }

    .isp-auth__aside {
        display: none;
    }

    .isp-auth__header {
        align-items: center;
        display: flex;
        flex-direction: row;
        gap: .85rem;
        margin-bottom: 1rem;
        text-align: left;
    }

    .isp-auth__emblem--mobile {
        align-items: center;
        color: var(--isp-nav-active-line);
        display: flex;
        flex-shrink: 0;
        font-size: 2.75rem;
        height: 1em;
        justify-content: center;
        line-height: 1;
        margin: 0;
        width: 1em;
    }

    .isp-auth__emblem--mobile .bi {
        display: block;
        font-size: 1em;
        height: 1em;
        line-height: 1;
        width: 1em;
    }

    .isp-auth__main {
        padding: 1.15rem 1rem 1.15rem;
    }

    .isp-auth__actions {
        align-items: stretch;
        flex-direction: column-reverse;
    }

    .isp-auth__submit {
        justify-content: center;
        width: 100%;
    }
}

@media (max-width: 575.98px) {
    .isp-auth__shell {
        padding: 1.25rem .75rem;
    }

    .isp-auth__theme {
        right: .65rem;
        top: .65rem;
    }
}

/* Installation wizard (auth shell) */
body.isp-install .isp-auth__card {
    max-width: 42rem;
}

.isp-install__steps {
    border-bottom: 1px solid var(--isp-divider);
    display: flex;
    gap: .45rem;
    margin-bottom: 1rem;
    padding-bottom: .85rem;
}

.isp-install__step {
    align-items: center;
    background: var(--isp-card-bg);
    border: 1px solid var(--isp-divider);
    border-radius: 50%;
    color: var(--isp-muted-text);
    display: inline-flex;
    font-size: .68rem;
    font-weight: 600;
    height: 1.45rem;
    justify-content: center;
    width: 1.45rem;
}

.isp-install__step.is-active {
    background: var(--isp-content-text-strong);
    border-color: var(--isp-content-text-strong);
    color: var(--isp-card-bg);
}

.isp-install__step.is-complete {
    background: color-mix(in srgb, #198754 88%, var(--isp-card-bg));
    border-color: color-mix(in srgb, #198754 88%, var(--isp-card-bg));
    color: #fff;
}

.isp-install__section-title {
    color: var(--isp-content-text-strong);
    font-size: .78rem;
    font-weight: 600;
    margin: 0 0 .55rem;
}

.isp-install__requirements {
    margin-bottom: .85rem;
}

.isp-install__requirement {
    align-items: center;
    border-bottom: 1px solid color-mix(in srgb, var(--isp-divider) 65%, transparent);
    display: flex;
    font-size: .76rem;
    justify-content: space-between;
    padding: .55rem 0;
}

.isp-install__requirement:last-child {
    border-bottom: none;
}

.isp-install__status {
    border-radius: var(--isp-radius-flat);
    font-size: .68rem;
    font-weight: 600;
    padding: .15rem .45rem;
}

.isp-install__status--ok {
    background: color-mix(in srgb, #198754 14%, var(--isp-card-bg));
    color: color-mix(in srgb, #198754 78%, var(--isp-content-text));
}

.isp-install__status--fail {
    background: color-mix(in srgb, #dc3545 14%, var(--isp-card-bg));
    color: color-mix(in srgb, #dc3545 78%, var(--isp-content-text));
}

.isp-auth__alert--warning {
    background: color-mix(in srgb, #ffc107 14%, var(--isp-card-bg));
    border-color: color-mix(in srgb, #ffc107 30%, transparent);
    color: var(--isp-content-text);
}

.isp-install__hint {
    color: var(--isp-muted-text);
    display: block;
    font-size: .7rem;
    line-height: 1.35;
    margin-top: .25rem;
}

.isp-install__error-list {
    margin: 0;
    padding-left: 1.1rem;
}

.isp-install__summary {
    background: color-mix(in srgb, var(--isp-divider) 28%, var(--isp-card-bg));
    border: 1px solid var(--isp-divider);
    border-radius: var(--isp-radius-flat);
    font-size: .76rem;
    margin-bottom: .85rem;
    padding: .75rem .85rem;
}

.isp-install__summary-title {
    color: var(--isp-content-text-strong);
    font-size: .78rem;
    font-weight: 600;
    margin: 0 0 .55rem;
}

.isp-install__summary-row {
    color: var(--isp-muted-text);
    display: flex;
    justify-content: space-between;
    padding: .2rem 0;
}

.isp-install__summary-row span:last-child {
    color: var(--isp-content-text);
    font-weight: 500;
    margin-left: .75rem;
    text-align: right;
}

.isp-install__password-rules {
    background: color-mix(in srgb, var(--isp-divider) 24%, var(--isp-card-bg));
    border: 1px solid var(--isp-divider);
    border-radius: var(--isp-radius-flat);
    font-size: .7rem;
    margin-top: 0;
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    padding: 0;
    transform: translateY(-.35rem);
    transition: max-height .35s ease, opacity .25s ease, transform .25s ease, margin-top .25s ease, padding .25s ease;
}

.isp-install__password-rules.is-visible {
    margin-top: .45rem;
    max-height: 16rem;
    opacity: 1;
    padding: .65rem .75rem;
    transform: translateY(0);
}

.isp-install__password-rules-title {
    align-items: center;
    color: var(--isp-content-text-strong);
    display: flex;
    font-weight: 600;
    gap: .35rem;
    margin-bottom: .35rem;
}

.isp-install__password-rules-title .bi {
    color: var(--isp-nav-active-line);
}

.isp-install__password-rule {
    align-items: center;
    color: var(--isp-muted-text);
    display: flex;
    gap: .4rem;
    padding: .12rem 0;
}

.isp-install__password-rule .bi {
    flex-shrink: 0;
    font-size: .82rem;
    transition: color .2s ease;
}

.isp-install__password-rule .bi.is-neutral {
    color: var(--isp-muted-text);
}

.isp-install__password-rule .bi.is-valid {
    color: color-mix(in srgb, #198754 82%, var(--isp-content-text));
}

.isp-install__password-rule .bi.is-invalid {
    color: color-mix(in srgb, #dc3545 82%, var(--isp-content-text));
}

.isp-install__password-strength {
    margin-top: .45rem;
}

.isp-install__password-strength-meter {
    background: color-mix(in srgb, var(--isp-divider) 55%, var(--isp-card-bg));
    border-radius: 999px;
    height: .22rem;
    overflow: hidden;
}

.isp-install__password-strength-fill {
    height: 100%;
    transition: background-color .25s ease, width .25s ease;
    width: 0;
}

.isp-install__password-strength-label {
    color: var(--isp-muted-text);
    font-size: .68rem;
    margin: .3rem 0 0;
    text-align: right;
}

.isp-install__password-strength-label span {
    color: var(--isp-content-text);
    font-weight: 600;
}

.isp-install__field-error {
    color: color-mix(in srgb, #dc3545 78%, var(--isp-content-text));
    font-size: .7rem;
    margin: -.15rem 0 .1rem;
}

.isp-install__success-icon {
    align-items: center;
    background: color-mix(in srgb, #198754 14%, var(--isp-card-bg));
    border-radius: 50%;
    color: color-mix(in srgb, #198754 82%, var(--isp-content-text));
    display: flex;
    height: 4rem;
    justify-content: center;
    margin: 0 auto .85rem;
    width: 4rem;
}

.isp-install__success-icon .bi {
    font-size: 2rem;
}

.isp-install__result {
    align-items: flex-start;
    display: flex;
    font-size: .76rem;
    gap: .45rem;
    padding: .25rem 0;
}

.isp-install__result-icon {
    flex-shrink: 0;
    font-weight: 700;
    line-height: 1.35;
}

.isp-install__result-icon--success {
    color: color-mix(in srgb, #198754 82%, var(--isp-content-text));
}

.isp-install__result-icon--warning {
    color: color-mix(in srgb, #ffc107 82%, var(--isp-content-text));
}

.isp-install__actions--links {
    flex-wrap: wrap;
    justify-content: center;
}

.isp-install__actions--links .btn {
    min-width: 8.5rem;
}

.isp-install__list {
    margin: .35rem 0 0;
    padding-left: 1.1rem;
}

.isp-install__list li + li {
    margin-top: .2rem;
}
