/**
 * MOJO Framework Portal Styles
 * Portal layout, sidebar, topnav, and group selector components
 * Version: 2.0.0
 *
 * Note: This file contains only custom MOJO styles.
 * Bootstrap 5 is required as a dependency for base styles.
 */

/* ========================================================================
   SIDEBAR USAGE GUIDE
   ========================================================================

   The MOJO Portal Layout uses a single flexbox-based sidebar system.

   HTML Structure:

   <div class="portal-container">
     <div class="portal-layout">
       <div id="portal-sidebar">
         <nav class="sidebar sidebar-light"> <!-- or sidebar-dark, sidebar-clean -->
           <div class="sidebar-container">
             <div class="sidebar-header">...</div>
             <div class="sidebar-body">
               <ul class="sidebar-nav">
                 <li class="nav-item">
                   <a class="nav-link" data-tooltip="Home">
                     <i class="bi-house me-2"></i>
                     <span class="nav-text">Home</span>
                   </a>
                 </li>
               </ul>
             </div>
             <div class="sidebar-footer">...</div>
           </div>
         </nav>
       </div>
       <div class="portal-body">
         <div id="portal-topnav">...</div>
         <div class="portal-content">...</div>
       </div>
     </div>
   </div>

   Sidebar States:
   - Default: Full width sidebar (250px)
   - .collapse-sidebar: Collapsed to icon-only (64px) - nav-text hidden
   - .hide-sidebar: Completely hidden (0px)
   - .sidebar-open: Mobile overlay state

   Group Selection:
   - .group-selection-sidebar: Full sidebar dedicated to group selection
   - .group-item: Individual group selection items
   - .group-header: Current active group display in menus

   Themes:
   - .sidebar-light: Light theme
   - .sidebar-dark: Dark theme
   - .sidebar-clean: Clean minimal theme

   Mobile Behavior:
   - < 768px: Sidebar becomes fixed overlay
   - Backdrop appears when open
   - Always full width when visible

   ======================================================================== */

/* ========================================================================
   Portal Layout System (Custom MOJO Component)
   ======================================================================== */

:root {
    --mojo-sidebar-width: 250px;
    --mojo-sidebar-collapsed-width: 40px;
    --mojo-portal-gap: 0;
    --mojo-portal-bg: var(--bs-body-bg);
    --mojo-topnav-bg: var(--bs-primary, #121620);
    --mojo-topnav-color: var(#fff);
    --mojo-portal-muted: var(--bs-secondary-color);
    --mojo-portal-border: var(--bs-border-color);
    --mojo-portal-text: var(--bs-body-color);
    --mojo-sidebar-dark-color: #fff;
    --mojo-sidebar-dark-color-hover: #5388d6;
    --mojo-sidebar-dark-bg: #343a40;
}

/* Under the framework's dark theme, drop the `topnav-dark` / `sidebar-dark`
   surface to a tone that sits *between* the deep page bg (#0a0d11) and the
   card surface (#11161d), so portal chrome reads as a band rather than a
   raised tile. */
:root[data-bs-theme="dark"] {
    --mojo-sidebar-dark-bg: #0d1117;
}

/*
Dark / Neutral (common in admin dashboards):
#1E1E2F (very dark blue-gray)
#2D2D3A (charcoal with slight warmth)
Benefits: makes content pop, feels modern, reduces eye strain.
Light / Subtle Neutral (good if rest of portal is bright):
#F7F9FC (soft gray-blue)
#ECEFF4 (cool light gray)
*/

.portal-layout {
    display: flex;
    min-height: 100vh;
    height: 100vh;
    background: var(--mojo-portal-bg);
}

#portal-sidebar {
    flex: 0 0 var(--mojo-sidebar-width);
    max-width: var(--mojo-sidebar-width);
    inline-size: var(--mojo-sidebar-width);
    height: 100%;
    overflow-y: hidden;
    z-index: 1;
    transition:
        inline-size 300ms cubic-bezier(0.4, 0, 0.2, 1),
        max-width 300ms cubic-bezier(0.4, 0, 0.2, 1),
        flex-basis 300ms cubic-bezier(0.4, 0, 0.2, 1),
        margin-left 300ms cubic-bezier(0.4, 0, 0.2, 1),
        transform 300ms cubic-bezier(0.4, 0, 0.2, 1);
    will-change: inline-size, max-width, flex-basis, transform;
}

.portal-container.collapse-sidebar #portal-sidebar {
    inline-size: var(--mojo-sidebar-collapsed-width);
    max-width: var(--mojo-sidebar-collapsed-width);
    flex-basis: var(--mojo-sidebar-collapsed-width);
}

.portal-container.hide-sidebar #portal-sidebar {
    margin-left: calc(-1 * var(--mojo-sidebar-width));
    border-inline-end: 0;
}

/* Optional Sidebar Shadows (Apply to .portal-container) */

#portal-sidebar {
    box-shadow: 4px 0 15px -4px rgba(0, 0, 0, 0.2);
}

#portal-sidebar.sidebar-shadow {
    box-shadow:
        0 14px 28px rgba(0, 0, 0, 0.25),
        0 10px 10px rgba(0, 0, 0, 0.22) !important;
}

.portal-body {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

#portal-topnav {
    flex: 0 0 auto;
    /* The background and color are now controlled by the TopNav view's theme */
    border-block-end: 1px solid var(--mojo-portal-border);
}

/* ========================================================================
   TopNav Responsive Collapse
   ------------------------------------------------------------------------
   When the navbar collapses under .navbar-expand-lg (<992px), Bootstrap
   stacks all .navbar-nav items vertically. Our right-side items (settings,
   github, user menu, etc.) are typically a small fixed set, so a horizontal
   row justified to the right reads better than a vertical stack of full-
   width links. Left-side navItems (rare in this app) follow the same
   layout for consistency.
   ======================================================================== */
@media (max-width: 991.98px) {
    nav.navbar.navbar-expand-lg .navbar-collapse .navbar-nav {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.25rem;
    }
    nav.navbar.navbar-expand-lg .navbar-collapse .navbar-nav.ms-auto {
        justify-content: flex-end;
        margin-left: auto !important;
    }
    nav.navbar.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
    /* Dropdowns (e.g. user menu) — keep them anchored as floating menus
       instead of expanding inline (Bootstrap's default in collapse mode). */
    nav.navbar.navbar-expand-lg .navbar-collapse .dropdown-menu {
        position: absolute;
    }
}

/* ========================================================================
   TopNav Themes (Applied directly to the <nav> element by TopNav.js)
   ======================================================================== */

/* Light Theme */
nav.topnav-light {
    background-color: var(--bs-light);
    border-bottom: 1px solid var(--bs-border-color);
    --bs-navbar-color: var(--bs-body-color);
    --bs-navbar-hover-color: var(--bs-primary);
}
nav.topnav-light .topnav-sidebar-toggle,
nav.topnav-light .nav-link,
nav.topnav-light .btn-link {
    color: var(--bs-navbar-color);
}
nav.topnav-light .topnav-sidebar-toggle:hover,
nav.topnav-light .nav-link:hover,
nav.topnav-light .btn-link:hover {
    color: var(--bs-navbar-hover-color);
}

/* Dark Theme */
nav.topnav-dark {
    background-color: var(--mojo-sidebar-dark-bg, var(--bs-dark));
    border-bottom: 1px solid var(--bs-border-color-translucent);
    --bs-navbar-color: rgba(255, 255, 255, 0.75);
    --bs-navbar-hover-color: #fff;
    --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);
    --bs-navbar-brand-color: #fff;
    --bs-navbar-brand-hover-color: #fff;
}
nav.topnav-dark .topnav-sidebar-toggle,
nav.topnav-dark .nav-link,
nav.topnav-dark .btn-link {
    color: var(--bs-navbar-color);
}
nav.topnav-dark .topnav-sidebar-toggle:hover,
nav.topnav-dark .nav-link:hover,
nav.topnav-dark .btn-link:hover {
    color: var(--bs-navbar-hover-color);
}
nav.topnav-dark .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

/* Clean Theme */
nav.topnav-clean {
    background-color: var(--bs-body-bg);
    border-bottom: 1px solid var(--bs-border-color);
    box-shadow: var(--bs-box-shadow-sm);
    --bs-navbar-color: var(--bs-body-color);
    --bs-navbar-hover-color: var(--bs-primary);
}
nav.topnav-clean .topnav-sidebar-toggle,
nav.topnav-clean .nav-link,
nav.topnav-clean .btn-link {
    color: var(--bs-navbar-color);
}
nav.topnav-clean .topnav-sidebar-toggle:hover,
nav.topnav-clean .nav-link:hover,
nav.topnav-clean .btn-link:hover {
    color: var(--bs-navbar-hover-color);
}

/* Gradient Theme */
nav.topnav-gradient {
    background: linear-gradient(90deg, #2c3e50 0%, #34495e 100%);
    border-bottom: 1px solid var(--bs-border-color-translucent);
    --bs-navbar-color: rgba(255, 255, 255, 0.75);
    --bs-navbar-hover-color: #fff;
    --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);
    --bs-navbar-brand-color: #fff;
    --bs-navbar-brand-hover-color: #fff;
}
nav.topnav-gradient .topnav-sidebar-toggle,
nav.topnav-gradient .nav-link,
nav.topnav-gradient .btn-link {
    color: var(--bs-navbar-color);
}
nav.topnav-gradient .topnav-sidebar-toggle:hover,
nav.topnav-gradient .nav-link:hover,
nav.topnav-gradient .btn-link:hover {
    color: var(--bs-navbar-hover-color);
}
nav.topnav-gradient .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

/* Optional Shadow Modifiers */
nav.topnav-shadow-light {
    box-shadow:
        0 4px 6px -1px rgba(0, 0, 0, 0.1),
        0 2px 4px -2px rgba(0, 0, 0, 0.1);
}

nav.topnav-shadow-dark {
    box-shadow:
        0 4px 6px -1px rgba(0, 0, 0, 0.4),
        0 2px 4px -2px rgba(0, 0, 0, 0.3);
}

.portal-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 16px;
    height: 100%;
}

.portal-content .muted {
    color: var(--mojo-portal-muted);
}

@media (prefers-reduced-motion: reduce) {
    #portal-sidebar {
        transition: none;
    }
}

/* ========================================================================
   Page Header Styling
   ======================================================================== */

.page-header {
    background-color: var(--bs-body-bg);
    border-bottom: 1px solid var(--bs-border-color);
    padding: 16px 16px;
}

/* When page header is enabled, adjust portal-content layout */
.portal-content:has([data-container="page-header"]) {
    padding: 0;
}

[data-container="page-content"] {
    padding: 16px;
}

.page-header-content {
    max-width: 100%;
}

.page-header-main {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
}

.page-header-info {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex: 1;
    min-width: 0;
}

.page-icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--bs-primary-bg-subtle);
    color: var(--bs-primary);
    border-radius: 8px;
}

.page-title-group {
    flex: 1;
    min-width: 0;
}

.page-header .page-title {
    font-weight: 600;
    margin: 0;
    line-height: 1.2;
    color: var(--bs-heading-color);
}

.page-header .page-description {
    margin: 0.5rem 0 0 0;
    line-height: 1.5;
}

/* Size variants */
/* Small */
.page-header-sm .page-icon {
    width: 32px;
    height: 32px;
    font-size: 1rem;
}

.page-header-sm .page-title-group .page-title {
    font-size: 1.25rem;
}

.page-header-sm .page-title-group .page-description {
    font-size: 0.875rem;
}

/* Medium (default) */
.page-header-md .page-icon {
    width: 40px;
    height: 40px;
    font-size: 1.25rem;
}

.page-header-md .page-title-group .page-title {
    font-size: 1.5rem;
}

.page-header-md .page-title-group .page-description {
    font-size: 0.95rem;
}

/* Large */
.page-header-lg .page-icon {
    width: 48px;
    height: 48px;
    font-size: 1.5rem;
}

.page-header-lg .page-title-group .page-title {
    font-size: 1.75rem;
}

.page-header-lg .page-title-group .page-description {
    font-size: 1rem;
}

/* Extra Large */
.page-header-xl .page-icon {
    width: 56px;
    height: 56px;
    font-size: 1.75rem;
}

.page-header-xl .page-title-group .page-title {
    font-size: 2rem;
}

.page-header-xl .page-title-group .page-description {
    font-size: 1.1rem;
}

.page-actions {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
}

/* Minimal style */
.page-header-minimal {
    padding: 0.75rem 0;
}

.page-header-minimal .page-title-group .page-title {
    font-size: 1.5rem;
    font-weight: 500;
}

/* Breadcrumb style */
.page-header-breadcrumb .breadcrumb {
    margin-bottom: 0.5rem;
    background-color: transparent;
    padding: 0;
}

/* Responsive */
@media (max-width: 768px) {
    .page-header-main {
        flex-direction: column;
        gap: 1rem;
    }

    .page-actions {
        width: 100%;
        justify-content: flex-start;
    }

    /* Scale down on mobile */
    .page-header-xl .page-title-group .page-title {
        font-size: 1.75rem;
    }

    .page-header-lg .page-title-group .page-title {
        font-size: 1.5rem;
    }

    .page-header-md .page-title-group .page-title {
        font-size: 1.25rem;
    }

    .page-header-sm .page-title-group .page-title {
        font-size: 1.1rem;
    }
}

/* Dark theme adjustments */
[data-bs-theme="dark"] .page-header {
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

/* ========================================================================
   MOJO Custom Sidebar Component
   ======================================================================== */

/* Standalone sidebar (when not in portal layout) */
.sidebar {
    display: flex;
    flex-direction: column;
    height: 100%;
    width: 100%;
    min-height: 0;
    transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
}

/* Portal-integrated sidebar (inside #portal-sidebar) */
#portal-sidebar .sidebar {
    position: static;
    top: auto;
    left: auto;
    height: 100%;
    width: 100%;
    z-index: auto;
    transform: none;
}

/* Custom Sidebar Themes */
.sidebar-dark {
    background-color: var(--mojo-sidebar-dark-bg, --bs-dark);
    color: var(--bs-light);
    border-inline-end: 1px solid var(--bs-border-color-translucent);
}

.sidebar-light {
    background-color: var(--bs-light);
    color: var(--bs-body-color);
    border-right: 1px solid var(--bs-border-color);
}

/* Sidebar treatment classes are theme-agnostic (devs can mix `sidebar-light`
   with `data-bs-theme="dark"`). Override the surface so the rail reads as a
   step lighter than the page background instead of glaring white. */
[data-bs-theme="dark"] .sidebar-light {
    --mojo-sidebar-light-dark-bg: var(--bs-secondary-bg);
    --mojo-sidebar-light-dark-color: var(--bs-body-color);
    background-color: var(--mojo-sidebar-light-dark-bg);
    color: var(--mojo-sidebar-light-dark-color);
    border-right-color: var(--bs-border-color-translucent);
}

[data-bs-theme="dark"] .sidebar-light .sidebar-nav .nav-link {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .sidebar-light .sidebar-nav .nav-link:hover {
    color: var(--bs-emphasis-color);
    background-color: rgba(255, 255, 255, 0.06);
}

[data-bs-theme="dark"] .sidebar-light .sidebar-nav .nav-link.active {
    color: var(--bs-light);
    background-color: var(--bs-primary);
}

[data-bs-theme="dark"] .sidebar-light .sidebar-header,
[data-bs-theme="dark"] .sidebar-light .nav-text-muted,
[data-bs-theme="dark"] .sidebar-light .text-muted {
    color: var(--bs-secondary-color) !important;
}

/* Sanity pass on `sidebar-dark` under the dark global theme — keep the
   existing dark surface but soften hover so it remains distinguishable. */
[data-bs-theme="dark"] .sidebar-dark .sidebar-nav .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.08);
}

.sidebar-clean {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    border-right: 1px solid var(--bs-border-color);
    box-shadow: var(--bs-box-shadow);
}

.sidebar-admin {
    border-left: 3px solid #b14545;
}

.sidebar-admin .sidebar-header {
    color: #b14545;
}

.sidebar-light.sidebar-admin .sidebar-nav .nav-link.active {
    background-color: #b14545;
}

.sidebar-light.sidebar-admin .nav-link.active.has-children {
    color: #b14545;
    background-color: var(--bs-secondary-bg);
    animation: none;
}

.sidebar-global {
    border-left: 3px solid #457bb1;
}

.sidebar-global .sidebar-header {
    color: #457bb1;
}

.sidebar-light.sidebar-global .sidebar-nav .nav-link.active {
    background-color: #457bb1;
}

.sidebar-light.sidebar-global .nav-link.active.has-children {
    color: #457bb1;
    background-color: var(--bs-secondary-bg);
    animation: none;
}

/* New Gradient Theme */
.sidebar-gradient {
    background: linear-gradient(180deg, #2c3e50 0%, #34495e 100%);
    color: var(--bs-light);
    border-inline-end: 1px solid var(--bs-border-color-translucent);
}

/* Make clean theme smaller */
.sidebar-clean {
    --mojo-sidebar-width: 220px;
}

.sidebar-container {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    flex: 1;
}

.sidebar-body {
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}

.sidebar-brand {
    height: 56px;
    text-align: center;
    padding-top: 14px;
}

.sidebar-dark .sidebar-brand {
    border-bottom: 1px solid var(--bs-border-color-translucent);
}

.sidebar-light .sidebar-brand {
    border-bottom: 1px solid var(--bs-border-color);
}

.sidebar-clean .sidebar-brand {
    border-bottom: 1px solid var(--bs-border-color);
    background-color: var(--bs-secondary-bg);
}

.sidebar-gradient .sidebar-brand {
    border-bottom: 1px solid var(--bs-border-color-translucent);
}

.sidebar-brand.clickable {
    cursor: pointer;
    transition: background-color 0.2s ease;
}

.sidebar-brand.clickable:hover {
    background-color: rgba(255, 255, 255, 0.1);
}

/* ========================================================================
   Sidebar Toggle Button
   ======================================================================== */

.sidebar-toggle {
    position: absolute;
    width: 30px;
    height: 30px;
    font-size: 0.875rem;
    border: none;
    background: none;
    top: 0.75rem;
    right: 5px;
    border: none;
    border-radius: var(--bs-border-radius);
    color: var(--bs-body-color);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition:
        all 300ms cubic-bezier(0.4, 0, 0.2, 1),
        transform 150ms ease-out;
    backdrop-filter: blur(4px);
    z-index: 10;
}

.sidebar-toggle:hover {
    background: var(--bs-secondary-bg);
    transform: scale(1.1);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.sidebar-toggle:active {
    transform: scale(0.95);
    transition-duration: 100ms;
}

/* Toggle button icons */
.sidebar-toggle .toggle-icon {
    transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
}

.sidebar-toggle .bi-chevron-left {
    display: block;
}

.sidebar-toggle .bi-chevron-right {
    display: none;
}

/* Collapsed state - swap icons */
.portal-container.collapse-sidebar .sidebar-toggle .bi-chevron-left {
    display: none;
}

.portal-container.collapse-sidebar .sidebar-toggle .bi-chevron-right {
    display: block;
}

/* Hidden state - show expand icon */
.portal-container.hide-sidebar .sidebar-toggle {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* Theme-specific toggle button styles */
.sidebar-dark .sidebar-toggle,
.sidebar-gradient .sidebar-toggle {
    background: var(--bs-border-color-translucent);
    color: var(--bs-secondary-color);
    border-color: var(--bs-border-color-translucent);
}

.sidebar-dark .sidebar-toggle:hover,
.sidebar-gradient .sidebar-toggle:hover {
    background: var(--bs-secondary-bg);
    color: var(--bs-light);
}

.sidebar-light .sidebar-toggle {
    background: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

.sidebar-light .sidebar-toggle:hover {
    background: var(--bs-tertiary-bg);
    color: var(--bs-emphasis-color);
}

.sidebar-clean .sidebar-toggle {
    background: var(--bs-light);
    color: var(--bs-primary);
    border-color: var(--bs-primary-border-subtle);
    box-shadow: var(--bs-box-shadow-sm);
}

.sidebar-clean .sidebar-toggle:hover {
    background: var(--bs-primary);
    color: white;
    box-shadow: 0 4px 12px rgba(var(--bs-primary-rgb), 0.3);
}

/* Toggle button animation when sidebar state changes */
.sidebar-toggle .toggle-icon {
    transform: rotate(0deg);
}

/*.portal-container.collapse-sidebar .sidebar-toggle .toggle-icon {
    transform: rotate(180deg);
}*/

/* ========================================================================
   TopNav Sidebar Toggle Button
   ======================================================================== */

.topnav-sidebar-toggle {
    background: none !important;
    border: none !important;
    color: rgba(255, 255, 255, 0.9);
    padding: 0.5rem;
    border-radius: 0.375rem;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

.topnav-sidebar-toggle:hover {
    background: none !important;
    color: var(--bs-light);
    transform: scale(1.1);
}

.topnav-sidebar-toggle:focus {
    outline: none;
    box-shadow: none;
}

.topnav-sidebar-toggle .toggle-chevron {
    font-size: 1.1rem;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    transform: rotate(180deg); /* Default: points left (expanded state) */
}

/* Collapsed/Hidden state - chevron points right */
.portal-container.collapse-sidebar .topnav-sidebar-toggle .toggle-chevron,
.portal-container.hide-sidebar .topnav-sidebar-toggle .toggle-chevron {
    transform: rotate(0deg);
}

/* Theme-specific styles */
.navbar-dark .topnav-sidebar-toggle {
    color: #ccc;
}

.navbar-dark .topnav-sidebar-toggle:hover {
    color: #fff;
    background: none !important;
}

.navbar-light .topnav-sidebar-toggle {
    color: var(--bs-navbar-light-color);
}

.navbar-light .topnav-sidebar-toggle:hover {
    color: var(--bs-navbar-light-hover-color);
    background: var(--bs-secondary-bg) !important;
}

/* Pulse animation for better discoverability */
@keyframes sidebar-toggle-pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0.4);
    }
    70% {
        box-shadow: 0 0 0 8px rgba(var(--bs-primary-rgb), 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0);
    }
}

/* Show pulse animation on first load or when sidebar is collapsed for a while */
.sidebar-toggle.pulse {
    animation: sidebar-toggle-pulse 2s infinite;
}

/* Toggle button focus states */
.sidebar-toggle:focus {
    outline: none;
    box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

.sidebar-toggle:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 2px;
}

/* Collapsed sidebar toggle positioning */
/*.portal-container.collapse-sidebar .sidebar-toggle {
    right: 0.5rem;
    width: 2rem;
    height: 2rem;
    font-size: 0.875rem;
}*/

/* Dark theme toggle button */
[data-bs-theme="dark"] .sidebar-toggle {
    background: rgba(255, 255, 255, 0.1);
    color: var(--bs-light);
    border-color: rgba(255, 255, 255, 0.15);
}

[data-bs-theme="dark"] .sidebar-toggle:hover {
    background: rgba(255, 255, 255, 0.2);
    color: var(--bs-white);
    box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1);
}

[data-bs-theme="dark"] .sidebar-clean .sidebar-toggle {
    background: var(--bs-primary);
    color: white;
    border-color: var(--bs-primary);
}

[data-bs-theme="dark"] .sidebar-clean .sidebar-toggle:hover {
    background: var(--bs-primary);
    filter: brightness(1.1);
}

.brand-content {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.brand-logo {
    max-height: 32px;
    width: auto;
    margin-bottom: 0.5rem;
}

.brand-subtext {
    font-size: 0.75rem;
}

.sidebar-group-header {
    cursor: pointer;
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.sidebar-dark .sidebar-group-header {
    background-color: var(--bs-dark);
}

.sidebar-light .sidebar-group-header {
    background-color: #dfe5ea;
}

.sidebar-group-header:hover {
    cursor: pointer;
    color: var(--mojo-primary);
    background-color: rgba(20, 20, 100, 0.1);
}

/* Custom Navigation Styles */
.sidebar-nav {
    display: flex;
    flex-direction: column;
    padding: 0.5rem 0;
    min-height: 100%;
}

.sidebar-nav .nav-link {
    display: flex;
    align-items: center;
    position: relative;
    padding: 0.75rem 1rem;
    text-decoration: none;
    border-radius: 0;
    transition:
        all 300ms cubic-bezier(0.4, 0, 0.2, 1),
        transform 150ms ease-out;
    cursor: pointer;
    transform: translateX(0);
    border-top-left-radius: 8px;
    border-bottom-left-radius: 8px;
    margin-left: 0.2rem;
}

.sidebar-nav .nav-link:hover {
    /*transform: translateX(2px);*/
    margin-left: 0.4rem !important;
}

.sidebar-nav .nav-link i {
    width: 20px;
    text-align: center;
    transition:
        transform 200ms ease-out,
        color 200ms ease-out;
}

.sidebar-nav .nav-link:hover i {
    transform: scale(1.1);
}

.portal-container.collapse-sidebar .sidebar-nav .nav-link:hover i {
    transform: scale(1.2);
}

.sidebar-nav .collapse .nav-link {
    padding: 0.5rem 1rem;
    font-size: 0.9rem;
}

.sidebar-nav .bi-chevron-down {
    transition: transform 0.3s;
}

.sidebar-nav .nav-link[aria-expanded="true"] .bi-chevron-down {
    transform: rotate(180deg);
}

/* Theme-specific navigation styles */
.sidebar-dark .sidebar-nav .nav-link {
    color: var(--mojo-sidebar-dark-color, #fff);
}

.sidebar-dark .sidebar-nav .nav-link:hover {
    color: var(--mojo-sidebar-dark-color-hover, #5388d6);
    background-color: var(--bs-secondary-bg);
}

.sidebar-dark .sidebar-nav .nav-link.active {
    color: var(--bs-light);
    background-color: var(--bs-primary);
}

.sidebar-light .sidebar-nav .nav-link {
    color: var(--bs-body-color);
}

.sidebar-light .sidebar-nav .nav-link:hover {
    color: var(--bs-emphasis-color);
    background-color: var(--bs-secondary-bg);
}

.sidebar-light .sidebar-nav .nav-link.active {
    color: var(--bs-light);
    background-color: var(--bs-primary);
}

.sidebar-clean .sidebar-nav .nav-link {
    color: var(--bs-secondary-color);
}

.sidebar-clean .sidebar-nav .nav-link:hover {
    color: var(--bs-body-color);
    background-color: var(--bs-secondary-bg);
}

.sidebar-clean .sidebar-nav .nav-link.active {
    color: var(--bs-primary);
    background-color: var(--bs-primary-bg-subtle);
    font-weight: 500;
}

.sidebar-gradient .sidebar-nav .nav-link {
    color: var(--bs-light);
}

.sidebar-gradient .sidebar-nav .nav-link:hover {
    color: var(--bs-white);
    background-color: rgba(255, 255, 255, 0.1);
}

.sidebar-gradient .sidebar-nav .nav-link.active {
    color: var(--bs-white);
    background-color: var(--bs-primary);
}

/* Unified styles for submenus and children */
.sidebar-nav .nav-link.has-children {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.sidebar-nav .nav-link.has-children:hover {
    transform: none;
}

.sidebar-nav .nav-link.has-children.collapsed {
    border-left: none;
}

.sidebar-light .nav-link.active.has-children,
.sidebar-clean .nav-link.active.has-children {
    color: var(--bs-body-color);
    background-color: var(--bs-secondary-bg);
    animation: none;
}

.sidebar-dark .nav-link.active.has-children,
.sidebar-gradient .nav-link.active.has-children {
    color: var(--bs-light);
    background-color: rgba(0, 0, 0, 0.2);
    animation: none;
}

.nav-text {
    flex: 1;
    white-space: nowrap;
    transition:
        opacity 300ms cubic-bezier(0.4, 0, 0.2, 1),
        width 300ms cubic-bezier(0.4, 0, 0.2, 1),
        margin 300ms cubic-bezier(0.4, 0, 0.2, 1);
}

.nav-arrow {
    transition:
        transform 200ms ease,
        opacity 300ms cubic-bezier(0.4, 0, 0.2, 1),
        margin 300ms cubic-bezier(0.4, 0, 0.2, 1);
    margin-left: auto;
}

.nav-link[aria-expanded="true"] .nav-arrow {
    transform: rotate(180deg);
}

/* Collapsed sidebar behavior */
.portal-container.collapse-sidebar .nav-text,
.portal-container.collapse-sidebar .sidebar-collapse-hide {
    opacity: 0;
    width: 0;
    margin-right: 0;
    overflow: hidden;
}

.portal-container.collapse-sidebar .collapsed-hidden {
    opacity: 0;
    width: 0;
    overflow: hidden;
    display: none;
}

.portal-container.collapse-sidebar .sidebar-nav .nav-link {
    justify-content: center;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
    transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
}

.portal-container.collapse-sidebar .sidebar-nav .nav-link i {
    margin-right: 0 !important;
}

.portal-container.collapse-sidebar .nav-submenu {
    display: none !important;
}

.portal-container.collapse-sidebar .sidebar-header {
    text-align: center;
    overflow: hidden;
}

.portal-container.collapse-sidebar .nav-arrow {
    opacity: 0;
    margin-left: 0;
}

/*.portal-container.collapse-sidebar .sidebar-header .fs-5 {
    opacity: 0;
    transition:
        opacity 300ms cubic-bezier(0.4, 0, 0.2, 1),
        transform 300ms cubic-bezier(0.4, 0, 0.2, 1);
    transform: scale(0.8) translateY(-5px);
}

.portal-container.collapse-sidebar .sidebar-footer {
    opacity: 0;
    transition:
        opacity 300ms cubic-bezier(0.4, 0, 0.2, 1),
        transform 300ms cubic-bezier(0.4, 0, 0.2, 1);
    transform: scale(0.8) translateY(5px);
}*/

/* ========================================================================
   Enhanced Tooltip System for Collapsed Sidebar
   ======================================================================== */

.portal-container.collapse-sidebar .sidebar .nav-link {
    position: relative;
    overflow: visible;
    width: var(--mojo-sidebar-collapsed-width, 48px);
}

/* CSS tooltips disabled - using Bootstrap tooltips instead
.portal-container.collapse-sidebar .sidebar .nav-link[data-tooltip]:hover::after {
    content: attr(data-tooltip);
    position: absolute;
    left: calc(100% + 12px);
    top: 50%;
    transform: translateY(-50%) translateX(-5px);
    background: var(--bs-dark);
    color: var(--bs-white);
    padding: 0.75rem 1rem;
    border-radius: 0.5rem;
    white-space: nowrap;
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.2;
    z-index: var(--mojo-zindex-tooltip);
    box-shadow:
        0 4px 12px rgba(0, 0, 0, 0.15),
        0 2px 4px rgba(0, 0, 0, 0.1);
    opacity: 0;
    visibility: hidden;
    transition:
        opacity 200ms cubic-bezier(0.4, 0, 0.2, 1),
        visibility 200ms cubic-bezier(0.4, 0, 0.2, 1),
        transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
    animation: tooltip-slide-in 250ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
    animation-delay: 800ms;
    pointer-events: none;
}

.portal-container.collapse-sidebar .sidebar .nav-link[data-tooltip]:hover::before {
    content: "";
    position: absolute;
    left: calc(100% + 6px);
    top: 50%;
    transform: translateY(-50%);
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 6px 6px 6px 0;
    border-color: transparent var(--bs-dark) transparent transparent;
    z-index: calc(var(--mojo-zindex-tooltip) + 1);
    opacity: 0;
    animation: tooltip-arrow-slide-in 250ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
    animation-delay: 300ms;
}

.portal-container.collapse-sidebar .sidebar .nav-link:not([data-tooltip]):hover::after {
    content: attr(data-nav-text);
    position: absolute;
    left: calc(100% + 12px);
    top: 50%;
    transform: translateY(-50%) translateX(-5px);
    background: var(--bs-dark);
    color: var(--bs-white);
    padding: 0.75rem 1rem;
    border-radius: 0.5rem;
    white-space: nowrap;
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.2;
    z-index: var(--mojo-zindex-tooltip);
    box-shadow:
        0 4px 12px rgba(0, 0, 0, 0.15),
        0 2px 4px rgba(0, 0, 0, 0.1);
    opacity: 0;
    visibility: hidden;
    animation: tooltip-slide-in 250ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
    animation-delay: 300ms;
    pointer-events: none;
}

.portal-container.collapse-sidebar .sidebar .nav-link:not([data-tooltip]):hover::before {
    content: "";
    position: absolute;
    left: calc(100% + 6px);
    top: 50%;
    transform: translateY(-50%);
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 6px 6px 6px 0;
    border-color: transparent var(--bs-dark) transparent transparent;
    z-index: calc(var(--mojo-zindex-tooltip) + 1);
    opacity: 0;
    animation: tooltip-arrow-slide-in 250ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
    animation-delay: 300ms;
}

.portal-container.collapse-sidebar .sidebar-light .nav-link:hover::after {
    background: #2c3e50;
    color: white;
}

.portal-container.collapse-sidebar .sidebar-light .nav-link:hover::before {
    border-right-color: #2c3e50;
}

.portal-container.collapse-sidebar .sidebar-dark .nav-link:hover::after {
    background: #34495e;
    color: #ecf0f1;
}

.portal-container.collapse-sidebar .sidebar-dark .nav-link:hover::before {
    border-right-color: #34495e;
}

.portal-container.collapse-sidebar .sidebar-clean .nav-link:hover::after {
    background: var(--bs-primary);
    color: white;
    box-shadow:
        0 4px 12px rgba(var(--bs-primary-rgb), 0.3),
        0 2px 4px rgba(var(--bs-primary-rgb), 0.2);
}

.portal-container.collapse-sidebar .sidebar-clean .nav-link:hover::before {
    border-right-color: var(--bs-primary);
}

/* Tooltip animations */
@keyframes tooltip-slide-in {
    0% {
        opacity: 0;
        visibility: hidden;
        transform: translateY(-50%) translateX(-10px) scale(0.9);
    }
    100% {
        opacity: 1;
        visibility: visible;
        transform: translateY(-50%) translateX(0) scale(1);
    }
}

@keyframes tooltip-arrow-slide-in {
    0% {
        opacity: 0;
        transform: translateY(-50%) translateX(-3px);
    }
    100% {
        opacity: 1;
        transform: translateY(-50%) translateX(0);
    }
}

/* Dark theme tooltips */
[data-bs-theme="dark"] .portal-container.collapse-sidebar .sidebar .nav-link:hover::after {
    background: var(--bs-light);
    color: var(--bs-dark);
}

[data-bs-theme="dark"] .portal-container.collapse-sidebar .sidebar .nav-link:hover::before {
    border-right-color: var(--bs-light);
}

/* Mobile layout: hide tooltips */
.portal-container.mobile-layout .nav-link:hover::after,
.portal-container.mobile-layout .nav-link:hover::before {
    display: none !important;
}

/* ========================================================================
   TOOLTIP USAGE GUIDE
   ========================================================================

   Option 1: Manual Tooltips (Recommended)
   Add data-tooltip attributes to your nav links:

   <a class="nav-link" data-tooltip="Dashboard">
       <i class="bi-speedometer2 me-2"></i>
       <span class="nav-text">Dashboard</span>
   </a>

   Option 2: Auto-Tooltips with JavaScript
   Use this script to automatically generate tooltips from nav-text:

   // Auto-generate tooltips from nav-text content
   document.querySelectorAll('.sidebar-nav .nav-link').forEach(link => {
       const navText = link.querySelector('.nav-text');
       if (navText && !link.hasAttribute('data-tooltip')) {
           link.setAttribute('data-nav-text', navText.textContent.trim());
       }
   });

   // Or set data-tooltip directly for better control
   document.querySelectorAll('.sidebar-nav .nav-link').forEach(link => {
       const navText = link.querySelector('.nav-text');
       if (navText && !link.hasAttribute('data-tooltip')) {
           link.setAttribute('data-tooltip', navText.textContent.trim());
       }
   });

   SIDEBAR TOGGLE BUTTON USAGE:
   Add the toggle button to your sidebar header:

   <div class="sidebar-header">
       <div class="fs-5 fw-bold text-center pt-3">Main Menu</div>
       <button class="sidebar-toggle" data-action="toggle-sidebar"
               aria-label="Toggle Sidebar">
           <i class="bi bi-chevron-left toggle-icon"></i>
           <i class="bi bi-chevron-right toggle-icon"></i>
       </button>
   </div>

   JavaScript to handle toggle:
   document.querySelector('.sidebar-toggle').addEventListener('click', () => {
       document.querySelector('.portal-container').classList.toggle('collapse-sidebar');
   });

   ======================================================================== */

/* Enhanced visual feedback for collapsed sidebar */
.portal-container.collapse-sidebar .sidebar .nav-link:hover {
    background-color: rgba(var(--bs-primary-rgb), 0.1);
    border-radius: var(--mojo-border-radius);
    transform: translateX(0) scale(1.05);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.portal-container.collapse-sidebar .sidebar-light .nav-link:hover {
    background-color: rgba(var(--bs-primary-rgb), 0.08);
    box-shadow: 0 2px 8px rgba(var(--bs-primary-rgb), 0.2);
}

.portal-container.collapse-sidebar .sidebar-dark .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.1);
    box-shadow: 0 2px 8px rgba(255, 255, 255, 0.1);
}

.portal-container.collapse-sidebar .sidebar-clean .nav-link:hover {
    background-color: var(--bs-light);
    box-shadow: 0 2px 8px rgba(var(--bs-primary-rgb), 0.15);
}

/* Navigation submenu */
.nav-submenu .nav-link {
    padding-left: 2.5rem;
    font-size: 0.9rem;
}

.nav-submenu {
    margin-left: 1.8rem;
}

.sidebar-dark .nav-submenu,
.sidebar-gradient .nav-submenu {
    border-left: 4px solid rgba(255, 255, 255, 0.2);
}

.sidebar-light .nav-submenu {
    border-left: 4px solid #cdcdcd;
}

.sidebar-clean .nav-submenu {
    border-left: 4px solid var(--bs-border-color);
}

/* Navigation dividers */
.nav-divider {
    margin: 0.75rem 0;
    padding: 0 1rem;
}

.nav-divider-label {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.25rem 0;
    display: block;
}

.sidebar-dark .nav-divider-label,
.sidebar-gradient .nav-divider-label {
    color: var(--bs-secondary-color);
    border-bottom: 1px solid var(--bs-border-color-translucent);
}

.sidebar-light .nav-divider-label {
    color: var(--bs-secondary-color);
    border-bottom: 1px solid var(--bs-border-color);
}

.sidebar-clean .nav-divider-label {
    color: var(--bs-secondary-color);
    border-bottom: 1px solid var(--bs-border-color);
    margin: 0 0.5rem;
}

.nav-divider-item {
    margin: 0.25rem 0;
    padding: 0;
    list-style: none;
}

.nav-divider-line {
    margin: 0 1rem;
    border: 0;
    border-top: 1px solid;
    opacity: 0.25;
}

.sidebar-dark .nav-divider-line,
.sidebar-gradient .nav-divider-line {
    border-color: var(--bs-secondary-color);
}

.sidebar-light .nav-divider-line {
    border-color: var(--bs-secondary-color);
}

.sidebar-clean .nav-divider-line {
    border-color: var(--bs-border-color);
    margin: 0 1.5rem;
}

.nav-spacer-item {
    flex: 1;
    list-style: none;
}

/* Navigation sections */
.nav-section {
    margin-bottom: 0.5rem;
}

.nav-section-header {
    padding: 0.5rem 1rem;
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.nav-section-header.collapsible {
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: color 0.2s ease;
}

.sidebar-dark .nav-section-header,
.sidebar-gradient .nav-section-header {
    color: var(--bs-secondary-color);
}

.sidebar-dark .nav-section-header.collapsible:hover,
.sidebar-gradient .nav-section-header.collapsible:hover {
    color: var(--bs-light);
}

.sidebar-light .nav-section-header {
    color: var(--bs-secondary-color);
}

.sidebar-light .nav-section-header.collapsible:hover {
    color: var(--bs-body-color);
}

.sidebar-clean .nav-section-header {
    color: var(--bs-secondary-color);
    margin: 0 0.5rem;
}

.sidebar-clean .nav-section-header.collapsible:hover {
    color: var(--bs-body-color);
}

.nav-section-items {
    padding-left: 0;
}

.sidebar-nav .badge {
    font-size: 0.7rem;
    padding: 0.25rem 0.5rem;
}

/* Sidebar footer */
.sidebar-footer {
    flex-shrink: 0;
    margin-top: auto;
}

.footer-content {
    padding: 1rem;
    font-size: 0.85rem;
}

.sidebar-dark .sidebar-footer,
.sidebar-gradient .sidebar-footer {
    border-top: 1px solid var(--bs-border-color-translucent);
}

.sidebar-dark .footer-content,
.sidebar-gradient .footer-content {
    color: var(--bs-secondary-color);
}

.sidebar-light .sidebar-footer {
    border-top: 1px solid var(--bs-border-color);
}

.sidebar-light .footer-content {
    color: var(--bs-secondary-color);
}

.sidebar-clean .sidebar-footer {
    border-top: 1px solid var(--bs-border-color);
    background-color: var(--bs-secondary-bg);
}

.sidebar-clean .footer-content {
    color: var(--bs-secondary-color);
}

/* ========================================================================
   MOJO Configuration Switcher (Custom Component)
   ======================================================================== */

.config-switcher {
    position: absolute;
    top: 8px;
    right: 8px;
}

.config-menu {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(var(--bs-dark-rgb), 0.95);
    backdrop-filter: blur(4px);
    z-index: 1050;
    padding: 1rem;
}

.config-menu-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--bs-border-color-translucent);
}

.config-menu-body {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.config-option {
    padding: 0.75rem;
    border: 1px solid var(--bs-border-color-translucent);
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-secondary-bg);
    cursor: pointer;
    transition: all 0.2s ease;
}

.config-option:hover {
    background-color: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
}

.config-option.active {
    background-color: var(--bs-primary-bg-subtle);
    border-color: var(--bs-primary);
}

.config-name {
    font-weight: 500;
    color: var(--bs-body-color);
}

/* ========================================================================
   MOJO Group Selector (Custom Component)
   ======================================================================== */

.group-selector-container {
    padding: 0.75rem;
}

.group-selector-wrapper {
    position: relative;
    width: 100%;
}

.group-selector {
    position: relative;
}

.group-selector.disabled {
    opacity: 0.6;
    pointer-events: none;
}

.group-selector .input-group-text {
    background-color: var(--bs-secondary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-secondary-color);
}

.group-selector .form-control {
    background-color: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

.group-selector .form-control:focus {
    background-color: var(--bs-tertiary-bg);
    border-color: var(--bs-primary);
    color: var(--bs-body-color);
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);
}

.group-selector .form-control::placeholder {
    color: var(--bs-secondary-color);
}

.group-selector .dropdown-toggle {
    background-color: var(--bs-secondary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-secondary-color);
}

.group-selector .dropdown-toggle:hover,
.group-selector .dropdown-toggle:focus {
    background-color: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

.dropdown-arrow {
    transition: transform 0.2s ease;
}

.group-selector .dropdown-toggle[aria-expanded="true"] .dropdown-arrow {
    transform: rotate(180deg);
}

/* Custom Group Dropdown */
.group-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-top: none;
    border-radius: 0 0 var(--bs-border-radius) var(--bs-border-radius);
    max-height: 400px;
    overflow-y: auto;
    z-index: 1050;
    box-shadow: var(--bs-box-shadow-lg);
    opacity: 0;
    transform: translateY(-10px);
    transition:
        opacity 0.2s ease,
        transform 0.2s ease;
    display: none;
}

.group-dropdown.show {
    display: block;
    opacity: 1;
    transform: translateY(0);
}

.group-dropdown .dropdown-header {
    padding: 0.75rem 1rem;
    background-color: var(--bs-secondary-bg);
    border-bottom: 1px solid var(--bs-border-color);
    color: var(--bs-secondary-color);
    font-size: 0.875rem;
}

.group-results {
    max-height: 300px;
    overflow-y: auto;
}

.group-item {
    padding: 0;
    border-bottom: 1px solid var(--bs-border-color-translucent);
    cursor: pointer;
    transition: background-color 0.2s ease;
}

.group-item:last-child {
    border-bottom: none;
}

.group-item:hover,
.group-item.focused {
    background-color: var(--bs-secondary-bg);
}

.group-item.selected {
    background-color: var(--bs-primary-bg-subtle);
    border-left: 3px solid var(--bs-primary);
}

.group-item.selected:hover {
    background-color: var(--bs-primary-bg-subtle);
}

.group-content {
    padding: 0.75rem 1rem;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
}

.group-main {
    flex: 1;
    min-width: 0;
}

.group-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.25rem;
}

.group-name {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-bottom: 0.25rem;
}

.group-hierarchy {
    color: var(--bs-secondary-color);
    font-size: 0.85rem;
    font-weight: normal;
}

.group-name-text {
    color: var(--bs-body-color);
    font-weight: 500;
}

.group-type {
    font-size: 0.7rem;
    padding: 0.25rem 0.5rem;
}

.group-description {
    color: var(--bs-secondary-color);
    font-size: 0.85rem;
    line-height: 1.3;
    margin-top: 0.25rem;
}

.group-item mark {
    background-color: var(--bs-warning-bg-subtle);
    color: var(--bs-body-color);
    padding: 0;
    border-radius: var(--bs-border-radius-sm);
}

.group-member-count {
    display: flex;
    align-items: center;
    color: var(--bs-secondary-color);
    font-size: 0.8rem;
}

.group-status {
    display: flex;
    align-items: center;
}

.status-indicator {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
}

.status-indicator.status-active {
    background-color: var(--bs-success);
}

.status-indicator.status-inactive {
    background-color: var(--bs-secondary);
}

.status-indicator.status-archived {
    background-color: var(--bs-danger);
}

.status-indicator.status-pending {
    background-color: var(--bs-warning);
}

.group-dropdown .dropdown-item-text {
    color: var(--bs-secondary-color);
    padding: 1rem;
}

.group-dropdown .dropdown-divider {
    border-top: 1px solid var(--bs-border-color);
    margin: 0.5rem 0;
}

.selected-group-display {
    animation: fadeInUp 0.3s ease;
}

.selected-group-card {
    background-color: var(--bs-primary-bg-subtle);
    border: 1px solid var(--bs-primary-border-subtle);
    border-radius: var(--bs-border-radius);
    padding: 0.75rem;
}

.selected-group-icon {
    flex-shrink: 0;
}

.selected-group-info {
    min-width: 0;
}

.selected-group-name {
    color: var(--bs-body-color);
    margin-bottom: 0.25rem;
}

.selected-group-desc {
    color: var(--bs-secondary-color);
    line-height: 1.3;
}

.selected-group-actions {
    flex-shrink: 0;
}

.group-dropdown::-webkit-scrollbar,
.group-results::-webkit-scrollbar {
    width: 6px;
}

.group-dropdown::-webkit-scrollbar-track,
.group-results::-webkit-scrollbar-track {
    background: var(--bs-secondary-bg);
}

.group-dropdown::-webkit-scrollbar-thumb,
.group-results::-webkit-scrollbar-thumb {
    background: var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
}

.group-dropdown::-webkit-scrollbar-thumb:hover,
.group-results::-webkit-scrollbar-thumb:hover {
    background: var(--bs-secondary-color);
}

.context-menu-view.header-menu {
    margin-top: -0.6rem;
}

.context-menu-view.header-menu-absolute {
    /*position: absolute;*/
    top: 1rem;
    right: 1rem;
}

/* ========================================================================
   Responsive Design
   ======================================================================== */

/* ========================================================================
   Mobile Layout Handling (Class-Based)
   ======================================================================== */

/* Mobile layout: Sidebar fullscreen by default */
.portal-container.mobile-layout #portal-sidebar {
    position: fixed !important;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100vw;
    height: 100vh;
    z-index: var(--mojo-zindex-modal);
    transform: translateX(0); /* Show by default */
    transition: transform 350ms cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
}

.portal-container.mobile-layout #portal-sidebar .sidebar {
    height: 100vh;
    width: 100%;
}

.portal-container.mobile-layout #portal-sidebar .sidebar-container {
    height: 100%;
}

/* Hide sidebar when hide-sidebar class is present */
.portal-container.mobile-layout.hide-sidebar #portal-sidebar {
    transform: translateX(-100%);
    box-shadow: 0 0 20px rgba(0, 0, 0, 0);
}

/* Force full sidebar width on mobile - override collapse states */
.portal-container.mobile-layout #portal-sidebar,
.portal-container.mobile-layout.collapse-sidebar #portal-sidebar {
    inline-size: 100vw !important;
    max-width: 100vw !important;
    flex-basis: 100vw !important;
}

/* Show all text and arrows on mobile - override collapsed state */
.portal-container.mobile-layout .nav-text,
.portal-container.mobile-layout.collapse-sidebar .nav-text {
    opacity: 1 !important;
    width: auto !important;
    overflow: visible !important;
}

.portal-container.mobile-layout .nav-arrow,
.portal-container.mobile-layout.collapse-sidebar .nav-arrow {
    opacity: 1 !important;
}

.portal-container.mobile-layout .sidebar-nav .nav-link,
.portal-container.mobile-layout.collapse-sidebar .sidebar-nav .nav-link {
    justify-content: flex-start !important;
    padding: 1rem !important;
    font-size: 1rem;
}

.portal-container.mobile-layout .nav-submenu,
.portal-container.mobile-layout.collapse-sidebar .nav-submenu {
    display: block !important;
}

/* Mobile: Hide sidebar toggle - use topnav toggle instead */
.portal-container.mobile-layout .sidebar-toggle {
    display: none;
}

/* Mobile: Adjust other sidebar elements */
.portal-container.mobile-layout .group-selector-container {
    padding: 0.5rem;
}

.portal-container.mobile-layout .config-menu {
    padding: 0.5rem;
}

.portal-container.mobile-layout .selected-group-card {
    padding: 1rem;
}

.portal-container.mobile-layout .group-dropdown {
    max-height: 300px;
    left: -5px;
    right: -5px;
    border-radius: 0.5rem;
    border: 1px solid #495057;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.3);
}

.portal-container.mobile-layout .group-content {
    padding: 1rem 0.75rem;
    flex-direction: column;
    align-items: stretch;
    gap: 0.5rem;
}

.portal-container.mobile-layout .group-meta {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
}

/* Mobile sidebar backdrop */
.portal-sidebar-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.5);
    z-index: calc(var(--mojo-zindex-modal) - 1);
    opacity: 0;
    visibility: hidden;
    transition:
        opacity 350ms cubic-bezier(0.4, 0, 0.2, 1),
        visibility 350ms cubic-bezier(0.4, 0, 0.2, 1),
        backdrop-filter 350ms cubic-bezier(0.4, 0, 0.2, 1);
    backdrop-filter: blur(0px);
}

/* Show backdrop when mobile sidebar is visible (not hidden) */
.portal-container.mobile-layout:not(.hide-sidebar) .portal-sidebar-backdrop {
    opacity: 1;
    visibility: visible;
    backdrop-filter: blur(4px);
}

/* Enhanced smooth transitions for all sidebar states */
.portal-container #portal-sidebar,
.sidebar-nav .nav-link,
.nav-text,
.nav-arrow,
.sidebar-header,
.sidebar-footer,
.sidebar-header .fs-5 {
    transition-duration: 300ms;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* Staggered animation for navigation items */
.sidebar-nav .nav-item:nth-child(1) .nav-link {
    transition-delay: 0ms;
}
.sidebar-nav .nav-item:nth-child(2) .nav-link {
    transition-delay: 20ms;
}
.sidebar-nav .nav-item:nth-child(3) .nav-link {
    transition-delay: 40ms;
}
.sidebar-nav .nav-item:nth-child(4) .nav-link {
    transition-delay: 60ms;
}
.sidebar-nav .nav-item:nth-child(5) .nav-link {
    transition-delay: 80ms;
}
.sidebar-nav .nav-item:nth-child(6) .nav-link {
    transition-delay: 100ms;
}
.sidebar-nav .nav-item:nth-child(7) .nav-link {
    transition-delay: 120ms;
}
.sidebar-nav .nav-item:nth-child(8) .nav-link {
    transition-delay: 140ms;
}

/* ========================================================================
   Dark Theme Support
   ======================================================================== */

[data-bs-theme="dark"] .group-dropdown {
    background-color: var(--bs-body-bg);
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .config-menu {
    background-color: rgba(var(--bs-dark-rgb), 0.95);
}

[data-bs-theme="dark"] .config-option {
    background-color: var(--bs-secondary-bg);
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .group-selector .form-control {
    background-color: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .group-selector .input-group-text {
    background-color: var(--bs-secondary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-secondary-color);
}

[data-bs-theme="dark"] .group-item:hover,
[data-bs-theme="dark"] .group-item.focused {
    background-color: var(--bs-secondary-bg);
}

[data-bs-theme="dark"] .selected-group-card {
    background-color: var(--bs-primary-bg-subtle);
    border-color: var(--bs-primary-border-subtle);
}

/* ========================================================================
   Animations
   ======================================================================== */

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ========================================================================
   Accessibility
   ======================================================================== */

.group-item:focus {
    outline: 2px solid #0d6efd;
    outline-offset: -2px;
}

@media (prefers-contrast: high) {
    .group-dropdown {
        border-width: 2px;
        border-color: #fff;
    }

    .group-item.selected {
        border-left-width: 4px;
    }

    .status-indicator {
        border: 1px solid #fff;
    }
}

@media (prefers-reduced-motion: reduce) {
    .group-dropdown {
        transition: none;
    }

    .dropdown-arrow {
        transition: none;
    }

    .selected-group-display {
        animation: none;
    }

    .portal-container #portal-sidebar,
    .sidebar-nav .nav-link,
    .nav-text,
    .nav-arrow,
    .sidebar-header,
    .sidebar-footer,
    .sidebar-header .fs-5 {
        transition: none !important;
        animation: none !important;
    }

    .sidebar-nav .nav-link i {
        transition: none !important;
    }

    .sidebar-nav .nav-link:hover,
    .portal-container.collapse-sidebar .sidebar .nav-link:hover {
        transform: none !important;
        box-shadow: none !important;
    }

    .portal-sidebar-backdrop {
        transition: none !important;
        backdrop-filter: none !important;
    }

    .sidebar-nav .nav-item:nth-child(n) .nav-link {
        transition-delay: 0ms !important;
    }

    .portal-container:not(.collapse-sidebar) #portal-sidebar {
        animation: none !important;
    }

    .sidebar-nav .nav-link.active {
        animation: none !important;
    }

    .nav-link[data-bs-toggle="collapse"] .bi-chevron-down {
        transition: none !important;
    }

    .nav-link[aria-expanded="true"] .bi-chevron-down {
        transform: rotate(180deg) !important;
    }

    /* Accessibility: Respect reduced motion for tooltips */
    .portal-container.collapse-sidebar .sidebar .nav-link:hover::after,
    [data-bs-theme="dark"] .portal-container.collapse-sidebar .sidebar .nav-link:hover::after,
    .portal-container.collapse-sidebar .sidebar .nav-link:hover::before {
        animation: none !important;
        transition: none !important;
        opacity: 1 !important;
        visibility: visible !important;
        transform: translateY(-50%) translateX(0) !important;
    }

    /* Disable toggle button animations */
    .sidebar-toggle,
    .sidebar-toggle .toggle-icon {
        transition: none !important;
        animation: none !important;
    }

    .sidebar-toggle:hover {
        transform: none !important;
    }
}

/* ========================================================================
   MOJO Portal Utility Classes
   ======================================================================== */

/* Force sidebar states */
.mojo-sidebar-force-open .portal-container {
    --mojo-sidebar-width: 250px !important;
}

.mojo-sidebar-force-open #portal-sidebar {
    inline-size: var(--mojo-sidebar-width) !important;
    max-width: var(--mojo-sidebar-width) !important;
    flex-basis: var(--mojo-sidebar-width) !important;
}

.mojo-sidebar-force-collapsed .portal-container {
    --mojo-sidebar-width: var(--mojo-sidebar-collapsed-width) !important;
}

.mojo-sidebar-force-collapsed #portal-sidebar {
    inline-size: var(--mojo-sidebar-collapsed-width) !important;
    max-width: var(--mojo-sidebar-collapsed-width) !important;
    flex-basis: var(--mojo-sidebar-collapsed-width) !important;
}

.mojo-sidebar-force-hidden #portal-sidebar {
    inline-size: 0 !important;
    max-width: 0 !important;
    flex-basis: 0 !important;
    overflow: hidden !important;
}

/* Sidebar transition control */
.mojo-sidebar-no-transition #portal-sidebar,
.mojo-sidebar-no-transition .sidebar-nav .nav-link,
.mojo-sidebar-no-transition .nav-text,
.mojo-sidebar-no-transition .nav-arrow {
    transition: none !important;
}

/* Additional mobile utilities */
.portal-container.sidebar-opening #portal-sidebar {
    transition-duration: 350ms;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.portal-container.sidebar-closing #portal-sidebar {
    transition-duration: 250ms;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* Add spring animation for expand */
.portal-container:not(.collapse-sidebar) #portal-sidebar {
    animation: sidebar-expand 400ms cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes sidebar-expand {
    0% {
        transform: scale(0.98) translateX(-2px);
        opacity: 0.9;
    }
    60% {
        transform: scale(1.01) translateX(1px);
    }
    100% {
        transform: scale(1) translateX(0);
        opacity: 1;
    }
}

/* Pulse animation for active nav items */
@keyframes nav-pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0.4);
    }
    70% {
        box-shadow: 0 0 0 6px rgba(var(--bs-primary-rgb), 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0);
    }
}

.sidebar-nav .nav-link.active {
    animation: nav-pulse 2s infinite;
}

/* Smooth icon transitions for submenu toggles */
.nav-link[data-bs-toggle="collapse"] .bi-chevron-down {
    transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
}

.nav-link[aria-expanded="true"] .bi-chevron-down {
    transform: rotate(180deg) scale(1.1);
}

/* Sidebar theme utilities */
.mojo-sidebar-theme-auto .sidebar {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    border-right: 1px solid var(--bs-border-color);
}

.mojo-sidebar-theme-auto .sidebar-nav .nav-link {
    color: var(--bs-body-color);
}

.mojo-sidebar-theme-auto .sidebar-nav .nav-link:hover {
    background-color: var(--bs-secondary-bg);
}

.mojo-sidebar-theme-auto .sidebar-nav .nav-link.active {
    background-color: var(--bs-primary);
    color: var(--bs-white);
}

/* Sidebar state indicators */
.mojo-sidebar-collapsed .nav-text,
.mojo-sidebar-collapsed .nav-arrow {
    opacity: 0;
    width: 0;
    overflow: hidden;
}

.mojo-sidebar-collapsed .sidebar-nav .nav-link {
    justify-content: center;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}

.mojo-sidebar-collapsed .nav-submenu {
    display: none !important;
}

/* Portal layout variants */
.mojo-portal-fixed .portal-layout {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: var(--mojo-zindex-fixed);
}

.mojo-portal-sticky-sidebar #portal-sidebar {
    position: sticky;
    top: 0;
    height: 100vh;
}

/* Portal content utilities */
.mojo-portal-content-padded .portal-content {
    padding: var(--mojo-spacer-lg);
}

.mojo-portal-content-flush .portal-content,
.mobile-layout .portal-content {
    padding: 0;
}

/* Sidebar animation presets */
.mojo-sidebar-slide #portal-sidebar {
    transition: transform var(--mojo-transition-base) ease-in-out;
}

.mojo-sidebar-fade #portal-sidebar {
    transition: opacity var(--mojo-transition-base) ease-in-out;
}

.mojo-sidebar-scale #portal-sidebar {
    transition: transform var(--mojo-transition-base) cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* JavaScript state classes */
.js-sidebar-transitioning * {
    pointer-events: none;
}

.js-sidebar-ready {
    transition: all var(--mojo-transition-base);
}

/* Accessibility enhancements */
@media (prefers-color-scheme: dark) {
    .mojo-sidebar-theme-auto .sidebar {
        background-color: var(--bs-dark);
        color: var(--bs-light);
        border-right: 1px solid var(--bs-gray-800);
    }

    .mojo-sidebar-theme-auto .sidebar-nav .nav-link {
        color: var(--bs-gray-300);
    }

    .mojo-sidebar-theme-auto .sidebar-nav .nav-link:hover {
        background-color: rgba(255, 255, 255, 0.1);
        color: var(--bs-white);
    }
}

/* Focus management for collapsed sidebar */
.mojo-sidebar-collapsed .nav-link:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: -2px;
    z-index: 1;
}

/* Skip to content for accessibility */
.mojo-skip-to-content {
    position: absolute;
    top: -40px;
    left: 6px;
    background: var(--bs-primary);
    color: white;
    padding: 8px;
    text-decoration: none;
    z-index: var(--mojo-zindex-tooltip);
    border-radius: var(--mojo-border-radius);
    font-size: 0.875rem;
}

.mojo-skip-to-content:focus {
    top: 6px;
}

/* Mobile body behavior when sidebar is showing */
.portal-container.mobile-layout:not(.hide-sidebar) {
    overflow: hidden;
}

.portal-container.mobile-layout:not(.hide-sidebar) .portal-body {
    pointer-events: none;
}

/* ========================================================================
   GROUP SELECTION INTERFACE
   ======================================================================== */

.group-selection-sidebar {
    background: white;
    border-right: 1px solid var(--bs-border-color);
}

.group-selection-sidebar .form-control-sm {
    font-size: 0.875rem;
}

.group-item {
    cursor: pointer;
    transition: all 0.2s ease;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
    position: relative;
}

.group-item:last-child {
    border-bottom: none;
}

.group-item:hover {
    background-color: #f8f9fa !important;
    border-left: 3px solid var(--bs-primary);
}

.group-item:active {
    background-color: #e9ecef !important;
    transform: translateX(1px);
}

.group-item .bi-chevron-right {
    opacity: 0;
    transition: opacity 0.2s ease;
}

.group-item:hover .bi-chevron-right {
    opacity: 1;
}

/* Group header in menus */
.group-header {
    margin-bottom: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.group-header .cursor-pointer {
    cursor: pointer;
    padding: 0.5rem;
    border-radius: 0.375rem;
    transition: all 0.2s ease;
}

.group-header .cursor-pointer:hover {
    background-color: #f8f9fa !important;
}

.group-header .bi-chevron-down {
    transition: transform 0.2s ease;
}

.group-header .cursor-pointer:hover .bi-chevron-down {
    transform: rotate(180deg);
}

/* Dark theme adjustments */
.sidebar-dark .group-selection-sidebar {
    background: #2c3e50;
    border-right-color: #34495e;
}

.sidebar-dark .group-item {
    border-bottom-color: rgba(255, 255, 255, 0.05);
}

.sidebar-dark .group-item:hover {
    background-color: #34495e !important;
}

.sidebar-dark .group-item:active {
    background-color: #3d566e !important;
}

.sidebar-dark .group-header {
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

.sidebar-dark .group-header .cursor-pointer:hover {
    background-color: #34495e !important;
}

.sidebar-dark .text-muted {
    color: rgb(169 208 246 / 75%) !important;
}

/* Loading states */
.group-selection-sidebar .spinner-border-sm {
    width: 1rem;
    height: 1rem;
}

.group-selection-sidebar .text-center {
    color: var(--bs-secondary);
}

/* Search input focus */
.group-selection-sidebar .form-control:focus {
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);
}

/* Empty state styling */
.group-selection-sidebar .bi-inbox,
.group-selection-sidebar .bi-search {
    color: var(--bs-secondary);
}

/* Help section */
.group-selection-sidebar .bg-light {
    background-color: rgba(0, 0, 0, 0.02) !important;
}

.sidebar-dark .group-selection-sidebar .bg-light {
    background-color: rgba(255, 255, 255, 0.02) !important;
}

.group-selection-sidebar .text-decoration-none:hover {
    color: var(--bs-primary) !important;
}

/* ====================================
   Parent/Selected Group Bars in Sidebar
   ==================================== */

/* Parent Bar - Shows parent group with option to navigate up */
.sidebar-parent-bar {
    padding: 8px 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    transition: all 0.2s ease;
}

.parent-info {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    font-weight: 500;
}

.parent-label {
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-size: 9px;
    opacity: 0.5;
}

.parent-name {
    font-weight: 600;
}

.parent-expand {
    font-size: 10px;
}

/* Selected Group Row - Current active group */
.sidebar-selected-group-row {
    padding: 14px 20px;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.selected-group-info {
    flex: 1;
    min-width: 0;
}

.selected-group-name {
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}

.selected-group-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 2px;
}

.selected-group-kind {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.selected-group-chevron {
    font-size: 14px;
    transition: all 0.2s ease;
    padding: 4px;
}

/* Dark Sidebar Theme */
.sidebar-dark .sidebar-parent-bar {
    background: rgba(0, 0, 0, 0.25);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.sidebar-dark .sidebar-parent-bar:hover {
    background: rgba(0, 0, 0, 0.3);
}

.sidebar-dark .parent-info {
    color: rgba(255, 255, 255, 0.6);
}

.sidebar-dark .sidebar-parent-bar:hover .parent-info {
    color: rgba(255, 255, 255, 0.8);
}

.sidebar-dark .parent-expand {
    color: rgba(255, 255, 255, 0.4);
}

.sidebar-dark .sidebar-selected-group-row {
    border-bottom: 2px solid rgba(52, 177, 176, 0.3);
}

.sidebar-dark .sidebar-selected-group-row:hover {
    background: rgba(255, 255, 255, 0.05);
}

.sidebar-dark .selected-group-name {
    color: #ffffff;
}

.sidebar-dark .selected-group-kind {
    background: rgba(52, 177, 176, 0.25);
    color: #5dd4d3;
}

.sidebar-dark .selected-group-chevron {
    color: rgba(255, 255, 255, 0.5);
}

.sidebar-dark .sidebar-selected-group-row:hover .selected-group-chevron {
    color: rgba(255, 255, 255, 0.9);
    transform: scale(1.1);
}

/* Light Sidebar Theme */
.sidebar-light .sidebar-parent-bar {
    background: rgba(0, 0, 0, 0.04);
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.sidebar-light .sidebar-parent-bar:hover {
    background: rgba(0, 0, 0, 0.06);
}

.sidebar-light .parent-info {
    color: rgba(0, 0, 0, 0.6);
}

.sidebar-light .sidebar-parent-bar:hover .parent-info {
    color: rgba(0, 0, 0, 0.8);
}

.sidebar-light .parent-expand {
    color: rgba(0, 0, 0, 0.4);
}

.sidebar-light .sidebar-selected-group-row {
    border-bottom: 2px solid rgba(13, 110, 253, 0.3);
}

.sidebar-light .sidebar-selected-group-row:hover {
    background: rgba(0, 0, 0, 0.03);
}

.sidebar-light .selected-group-name {
    color: #212529;
}

.sidebar-light .selected-group-kind {
    background: rgba(13, 110, 253, 0.15);
    color: #0a58ca;
}

.sidebar-light .selected-group-chevron {
    color: rgba(0, 0, 0, 0.5);
}

.sidebar-light .sidebar-selected-group-row:hover .selected-group-chevron {
    color: rgba(0, 0, 0, 0.8);
    transform: scale(1.1);
}

/* Clean Sidebar Theme */
.sidebar-clean .sidebar-parent-bar {
    background: rgba(0, 0, 0, 0.02);
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.sidebar-clean .sidebar-parent-bar:hover {
    background: rgba(0, 0, 0, 0.04);
}

.sidebar-clean .parent-info {
    color: rgba(0, 0, 0, 0.55);
}

.sidebar-clean .sidebar-parent-bar:hover .parent-info {
    color: rgba(0, 0, 0, 0.75);
}

.sidebar-clean .parent-expand {
    color: rgba(0, 0, 0, 0.35);
}

.sidebar-clean .sidebar-selected-group-row {
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.sidebar-clean .sidebar-selected-group-row:hover {
    background: rgba(0, 0, 0, 0.02);
}

.sidebar-clean .selected-group-name {
    color: #212529;
}

.sidebar-clean .selected-group-kind {
    background: rgba(108, 117, 125, 0.15);
    color: #495057;
}

.sidebar-clean .selected-group-chevron {
    color: rgba(0, 0, 0, 0.4);
}

.sidebar-clean .sidebar-selected-group-row:hover .selected-group-chevron {
    color: rgba(0, 0, 0, 0.7);
    transform: scale(1.1);
}

/* Gradient Sidebar Theme */
.sidebar-gradient .sidebar-parent-bar {
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.sidebar-gradient .sidebar-parent-bar:hover {
    background: rgba(0, 0, 0, 0.25);
}

.sidebar-gradient .parent-info {
    color: rgba(255, 255, 255, 0.7);
}

.sidebar-gradient .sidebar-parent-bar:hover .parent-info {
    color: rgba(255, 255, 255, 0.9);
}

.sidebar-gradient .parent-expand {
    color: rgba(255, 255, 255, 0.5);
}

.sidebar-gradient .sidebar-selected-group-row {
    border-bottom: 2px solid rgba(255, 255, 255, 0.2);
}

.sidebar-gradient .sidebar-selected-group-row:hover {
    background: rgba(255, 255, 255, 0.08);
}

.sidebar-gradient .selected-group-name {
    color: #ffffff;
}

.sidebar-gradient .selected-group-kind {
    background: rgba(255, 255, 255, 0.2);
    color: rgba(255, 255, 255, 0.95);
}

.sidebar-gradient .selected-group-chevron {
    color: rgba(255, 255, 255, 0.6);
}

.sidebar-gradient .sidebar-selected-group-row:hover .selected-group-chevron {
    color: rgba(255, 255, 255, 0.95);
    transform: scale(1.1);
}

.simple-search-view {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    border-right: 1px solid var(--bs-border-color);
    box-shadow: var(--bs-box-shadow);
}

/* Sticky search header in modal dialogs */
.modal-body .simple-search-view > div:first-child {
    position: sticky;
    top: 0;
    z-index: 10;
    background-color: var(--bs-body-bg);
}

[data-bs-theme="dark"] .modal-body .simple-search-view > div:first-child {
    background-color: var(--bs-body-bg);
}

.collapse-sidebar .simple-search-view {
    background-color: var(--mojo-topnav-bg) !important;
}

.collapse-sidebar .simple-search-view > * {
    display: none !important;
}

.simple-search-item {
    cursor: pointer;
    transition:
        background-color 0.15s ease-in-out,
        transform 0.15s ease-in-out;
    border-radius: 0.25rem;
}

.simple-search-item:hover {
    background-color: rgba(0, 0, 50, 0.05);
    transform: translateY(-1px);
}

[data-bs-theme="dark"] .simple-search-item:hover {
    background-color: rgba(255, 255, 255, 0.1);
}

/* SimpleSearchView Buttons */
.simple-search-exit-btn {
    width: 20px;
    height: 20px;
    margin-top: -5px;
}

.simple-search-clear-btn {
    width: 24px;
    height: 24px;
    border-radius: 50%;
}

/* ========================================================================
   Group Selector Button (TopNav)
   ======================================================================== */

/* Enforce single line for nav-item containing group selector */
.navbar-nav .nav-item button[data-action="show-selector"] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 250px;
    display: inline-flex;
    align-items: center;
}

.navbar-nav .nav-item button[data-action="show-selector"] .group-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media (max-width: 768px) {
    .navbar-nav .nav-item button[data-action="show-selector"] {
        max-width: 150px;
    }
}

/* ========================================================================
   Jobs Admin Styling
   ======================================================================== */

/* Timeline Styles */
.timeline {
    position: relative;
    padding-left: 2rem;
}

.timeline::before {
    content: "";
    position: absolute;
    left: 0.75rem;
    top: 0;
    bottom: 0;
    width: 2px;
    background-color: #dee2e6;
}

.timeline-item {
    position: relative;
    margin-bottom: 1.5rem;
}

.timeline-marker {
    position: absolute;
    left: -2rem;
    top: 0.125rem;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.75rem;
    color: white;
    border: 2px solid white;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.timeline-marker-info {
    background-color: #0dcaf0;
}

.timeline-marker-primary {
    background-color: #0d6efd;
}

.timeline-marker-success {
    background-color: #198754;
}

.timeline-marker-danger {
    background-color: #dc3545;
}

.timeline-marker-warning {
    background-color: #ffc107;
    color: #000;
}

.timeline-marker-secondary {
    background-color: #6c757d;
}

.timeline-content {
    background-color: #f8f9fa;
    padding: 1rem;
    border-radius: 0.375rem;
    border: 1px solid #dee2e6;
}

/* Job Status Indicators */
.job-status-indicator {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.job-health-indicator {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    display: inline-block;
}

.health-healthy {
    background-color: #198754;
}

.health-warning {
    background-color: #ffc107;
}

.health-critical {
    background-color: #dc3545;
}

.health-unknown {
    background-color: #6c757d;
}

/* Auto-refresh indicator */
.spinning {
    animation: spin 1s linear infinite;
}

@keyframes spin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

/* Job Stats Cards */
.job-stats-header .card {
    transition:
        transform 0.2s ease,
        box-shadow 0.2s ease;
}

.job-stats-header .card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
}

/* Job Health Cards */
.job-health-header .health-indicator {
    animation: pulse 2s infinite;
}

@keyframes pulse {
    0% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
    100% {
        opacity: 1;
    }
}

/* Log container styling */
.logs-container {
    background-color: #1e1e1e !important;
    color: #d4d4d4 !important;
}

.logs-container .text-info {
    color: #9cdcfe !important;
}

.logs-container .text-warning {
    color: #dcdcaa !important;
}

.logs-container .text-danger {
    color: #f14c4c !important;
}

.logs-container .text-success {
    color: #4ec9b0 !important;
}

/* Code formatting */
.job-details-view pre code {
    font-size: 0.875rem;
    line-height: 1.4;
}

/* Responsive timeline */
@media (max-width: 768px) {
    .timeline {
        padding-left: 1.5rem;
    }

    .timeline-marker {
        left: -1.75rem;
        width: 1.25rem;
        height: 1.25rem;
        font-size: 0.625rem;
    }

    .timeline-content {
        padding: 0.75rem;
    }
}

/* Channel status badges */
.channel-status-badge {
    font-size: 0.75rem;
    padding: 0.25rem 0.5rem;
}

/* Runner utilization bars */
.runner-utilization {
    height: 4px;
    background-color: #e9ecef;
    border-radius: 2px;
    overflow: hidden;
}

.runner-utilization-fill {
    height: 100%;
    transition: width 0.3s ease;
}

.runner-utilization-low {
    background-color: #198754;
}

.runner-utilization-medium {
    background-color: #ffc107;
}

.runner-utilization-high {
    background-color: #fd7e14;
}

.runner-utilization-critical {
    background-color: #dc3545;
}

/* ========================================
   SideNavView — dark theme overrides

   The base SideNavView styles live inline in the component template
   (src/core/views/navigation/SideNavView.js). Those values are tuned for
   the light theme; under data-bs-theme="dark" we re-skin the rail using
   Bootstrap dark-mode tokens so the values track the rest of the palette.
   ======================================== */
[data-bs-theme="dark"] .side-nav-view .snv-nav {
    background: var(--bs-tertiary-bg);
    border-right-color: var(--bs-border-color-translucent);
}

[data-bs-theme="dark"] .side-nav-view .snv-nav a {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .side-nav-view .snv-nav a:hover {
    background: var(--bs-secondary-bg);
}

[data-bs-theme="dark"] .side-nav-view .snv-nav a.active {
    background: rgba(13, 110, 253, 0.18);
    color: var(--bs-primary-text-emphasis, #6ea8fe);
    border-right-color: var(--bs-primary);
}

[data-bs-theme="dark"] .side-nav-view .snv-nav-label {
    color: var(--bs-secondary-color);
}

[data-bs-theme="dark"] .side-nav-view .snv-select-btn {
    background: var(--bs-tertiary-bg);
    border-color: var(--bs-border-color);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .side-nav-view .snv-select-btn:hover {
    background: var(--bs-secondary-bg);
}
