/* Copied from School ERP school-admin.css — do not redesign */
/* school-admin.css L503-618 */
:root {
    --rudocode-primary: #BF1914;
    --rudocode-dark: #8b0000;
    --rudocode-black: #1a1a1a;
    --rudocode-gray: #f4f4f5;
    --rudocode-gray-border: #e4e4e7;
    --navbar-dark-bg: #1a1a1a;
}

/* Brand utilities */
.text-rudocode { color: var(--rudocode-primary) !important; }
.bg-rudocode { background-color: var(--rudocode-primary) !important; }
.btn-rudocode {
    background-color: var(--rudocode-primary);
    border-color: var(--rudocode-primary);
    color: #fff;
}
.btn-rudocode:hover, .btn-rudocode:focus {
    background-color: var(--rudocode-dark);
    border-color: var(--rudocode-dark);
    color: #fff;
}

/* Primary topbar */
.nav-primary-topbar {
    min-height: 60px;
    padding-top: 0.3rem;
    padding-bottom: 0.3rem;
    background-color: var(--rudocode-black) !important;
}
.nav-primary-topbar > .container-fluid {
    align-items: center;
    flex-wrap: wrap;
}

.brand-mark {
    width: 32px; height: 32px;
    background: var(--rudocode-primary);
    border-radius: 6px;
    display: flex; align-items: center; justify-content: center;
}
.brand-mark i { font-size: 16px; }
.brand-title { font-size: 0.95rem; letter-spacing: -0.02em; }
.brand-subtitle { letter-spacing: 0.04em; }

.user-avatar {
    width: 36px; height: 36px; border-radius: 50%;
    background: var(--rudocode-primary);
    display: flex; align-items: center; justify-content: center;
    font-size: 13px; font-weight: 600; color: #fff;
}
.user-avatar-lg { width: 44px; height: 44px; font-size: 16px; background: rgba(255,255,255,.2); }
.user-dropdown-menu { min-width: 260px; }
.user-dropdown-header { background: var(--rudocode-dark); }
.user-name-truncate { max-width: 140px; }
.caret-sm { font-size: 12px; }
.notification-dot {
    top: 9px; right: 6px; width: 9px; height: 9px;
    border-color: var(--navbar-dark-bg) !important;
}

.nav-search-slot { max-width: 520px; min-width: 0; }

/* Smart search */
.smart-search-form { width: 100%; }
.smart-search-scope-btn {
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.15);
    color: rgba(255,255,255,.85);
    white-space: nowrap;
    font-size: 0.78rem;
    padding: 0.35rem 0.65rem;
}
.smart-search-scope-btn:hover, .smart-search-scope-btn:focus {
    background: rgba(255,255,255,.12);
    color: #fff;
}
.smart-search-input-wrap { position: relative; }
.smart-search-icon {
    position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%);
    color: rgba(255,255,255,.45); font-size: 1rem; pointer-events: none; z-index: 2;
}
.smart-search-input {
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.12);
    color: #fff;
    padding-left: 2.25rem;
    font-size: 0.85rem;
    border-radius: 6px;
}
.smart-search-input::placeholder { color: rgba(255,255,255,.45); }
.smart-search-input:focus {
    background: rgba(255,255,255,.12);
    border-color: rgba(255,255,255,.25);
    color: #fff;
    box-shadow: 0 0 0 2px rgba(200,16,46,.25);
}
.smart-search-results {
    top: calc(100% + 4px); left: 0; max-height: 320px; overflow-y: auto;
    display: none; padding: 0.25rem;
}
.smart-search-results.show { display: block; }
.smart-search-result-item {
    display: flex; align-items: center; gap: 0.5rem;
    font-size: 0.85rem; padding: 0.5rem 0.75rem;
}
.smart-search-result-module {
    font-size: 0.72rem; color: var(--bs-secondary-color);
    background: var(--rudocode-gray); padding: 0.1rem 0.4rem; border-radius: 4px;
    white-space: nowrap;
}

.nav-quick-actions .btn-rudocode {
    font-size: 0.82rem;
    padding: 0.35rem 0.75rem;
}

/* school-admin.css L747-749 (nav-search only) */
@media (max-width: 767.98px) {
    .nav-search-slot { order: 3; width: 100%; margin: 0.5rem 0 0 !important; max-width: none; }
}

/* school-admin.css L767-872 */
:root {
    --brand:        #BF1914;
    --brand-hover:  #A6150F;
    --brand-active: #8E120D;
    --brand-rgb:    191, 25, 20;
    --app-bg:       #F8F9FB;
    --line:         #E5E7EB;

    /* Google Material-inspired input borders (border only — no label changes) */
    --mat-input-border:           #DADCE0;
    --mat-input-focus:            var(--brand);
    --mat-input-error:            #D93025;
    --mat-input-disabled-border:  #E8EAED;
    --mat-input-readonly-border:  #E8EAED;
    --mat-input-border-transition: border-color 175ms ease-in-out, box-shadow 175ms ease-in-out;
}

/* Override Limitless's OWN master theme variables (the native way).
   This recolours .bg-primary, .text-primary, badges, borders, link colours,
   opacity tints and the dark-sidebar active state in one place. */
:root,
[data-color-theme=light],
[data-color-theme=dark] {
    --primary:      #BF1914;
    --primary-rgb:  191, 25, 20;

    /* Bootstrap fallbacks (some components read --bs-*) */
    --bs-primary:        #BF1914;
    --bs-primary-rgb:    191, 25, 20;
    --bs-link-color:     #BF1914;
    --bs-link-color-rgb: 191, 25, 20;
    --bs-link-hover-color: #A6150F;
}

/* App background */
body,
.page-content,
.content-wrapper { background-color: var(--app-bg); }

/* Links */
a { color: var(--brand); }
a:hover { color: var(--brand-hover); }
.text-primary { color: var(--brand) !important; }
.link-primary { color: var(--brand) !important; }
.link-primary:hover { color: var(--brand-hover) !important; }

/* Primary surfaces */
.bg-primary { background-color: var(--brand) !important; }
.badge.bg-primary, .text-bg-primary { background-color: var(--brand) !important; color: #fff !important; }
.border-primary { border-color: var(--brand) !important; }

/* Primary buttons — Limitless sets colours directly, so override explicitly.
   (Also set the --bs-* vars so hover/active states behave.) */
.btn-primary {
    /* Limitless uses its own --btn-* namespace (not Bootstrap --bs-btn-*) */
    --btn-bg: var(--brand);
    --btn-border-color: var(--brand);
    --btn-hover-bg: var(--brand-hover);
    --btn-hover-border-color: var(--brand-hover);
    --btn-active-bg: var(--brand-active);
    --btn-active-border-color: var(--brand-active);
    --btn-disabled-bg: var(--brand);
    --btn-disabled-border-color: var(--brand);
    --btn-focus-shadow-rgb: var(--brand-rgb);
    --bs-btn-bg: var(--brand);
    --bs-btn-border-color: var(--brand);
    background-color: var(--brand) !important;
    border-color: var(--brand) !important;
    color: #fff !important;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary.show,
.btn-primary:first-child:active,
.btn-primary:active {
    background-color: var(--brand-hover) !important;
    border-color: var(--brand-hover) !important;
    color: #fff !important;
}
.btn-primary:focus, .btn-primary:focus-visible {
    box-shadow: 0 0 0 .2rem rgba(var(--brand-rgb), .25) !important;
}
.btn-outline-primary {
    --bs-btn-color: var(--brand);
    --bs-btn-border-color: var(--brand);
    --bs-btn-hover-bg: var(--brand);
    --bs-btn-hover-border-color: var(--brand);
    color: var(--brand) !important;
    border-color: var(--brand) !important;
    background-color: transparent !important;
}
.btn-outline-primary:hover,
.btn-outline-primary:active,
.btn-outline-primary.active {
    background-color: var(--brand) !important;
    border-color: var(--brand) !important;
    color: #fff !important;
}
.btn-flat-primary, .btn-light-primary {
    --bs-btn-color: var(--brand);
    color: var(--brand) !important;
}
.btn-flat-primary:hover, .btn-light-primary:hover {
    background-color: rgba(var(--brand-rgb), .12) !important;
    color: var(--brand) !important;
}


/* Keep School smart-search look when Limitless .form-control utilities apply */
.nav-primary-topbar .smart-search-input.form-control {
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.12);
    color: #fff;
    padding-left: 2.25rem;
    font-size: 0.85rem;
    border-radius: 6px;
    box-shadow: none;
    height: auto;
    min-height: 0;
}
.nav-primary-topbar .smart-search-input.form-control::placeholder { color: rgba(255,255,255,.45); }
.nav-primary-topbar .smart-search-input.form-control:focus {
    background: rgba(255,255,255,.12);
    border-color: rgba(255,255,255,.25);
    color: #fff;
    box-shadow: 0 0 0 2px rgba(200,16,46,.25);
}

/* Exact School ERP — secondary nav + sidebar type (school-admin.css) */
.sidebar-section-body{
    padding: 20px !important ;
}

.nav-secondary-bar {
    background: #fff;
    border-width: 2px !important;
}
.nav-secondary-modules {
    gap: 0;
    scrollbar-width: none;
    width: 100%;
}
.nav-secondary-modules::-webkit-scrollbar { display: none; }

.nav-secondary-item {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.9375rem;
    font-size: 0.84rem;
    font-weight: 500;
    color: #52525b;
    text-decoration: none;
    white-space: nowrap;
    transition: color .15s ease, background .15s ease;
    border-bottom: 2px solid transparent;
}
.nav-secondary-item i { font-size: 1.05rem; opacity: 0.75; }
.nav-secondary-item:hover {
    color: var(--rudocode-black);
    background: var(--rudocode-gray);
}
.nav-secondary-item.is-active {
    background: rgba(var(--brand-rgb, 191, 25, 20), .06);
    font-weight: 600;
}
.nav-secondary-item.is-active i { opacity: 1; color: var(--rudocode-primary); }
.nav-secondary-indicator {
    position: absolute;
    bottom: 0; left: 1rem; right: 1rem;
    height: 2px;
    background: var(--rudocode-primary);
    border-radius: 2px 2px 0 0;
}

.nav-secondary-mobile-toggle {
    background: var(--rudocode-gray);
    border: 1px solid var(--rudocode-gray-border);
    color: var(--rudocode-black);
    margin: 0.5rem 0;
}
.module-switcher-mobile .dropdown-item.active {
    background-color: rgba(200,16,46,.08);
    color: var(--rudocode-primary);
    font-weight: 600;
}

/* ── Compact sidebar (reduce overall length) ─────────────────────────────────── */
.sidebar-main .nav-sidebar > .nav-item > .nav-link {
    font-size: 0.83rem;
}
.sidebar-main .nav-sidebar .nav-group-sub .nav-link {
    font-size: 0.8rem;
}
.sidebar-main .nav-item-header {
    /*padding-top: 0.5rem;
    padding-bottom: 0.15rem;*/
}
.sidebar-main .nav-sidebar > .nav-item > .nav-link > i {
    font-size: 1.05rem;
}

/* Professional dropdown polish */
.dropdown-menu .dropdown-item.text-danger:hover {
    background-color: rgba(220, 53, 69, 0.08);
}

/* ── Narrower sidebar ─────────────────────────────────────────────────────────── */
.sidebar-main {
    --sidebar-width: 15rem;            /* was 18.75rem (300px) → 240px */
    --sidebar-section-padding-x: 0.85rem;
}
.sidebar-main .nav-sidebar .nav-link { white-space: normal; }

/* ── Dot bullet before every submenu item ─────────────────────────────────────── */
.sidebar-main .nav-group-sub .nav-link {
    display: flex;
    align-items: center;
}
.sidebar-main .nav-group-sub .nav-link::before {
    content: '';
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: currentColor;
    opacity: 0.4;
    margin-right: 0.65rem;
    flex-shrink: 0;
    transition: opacity .15s ease, transform .15s ease;
}
.sidebar-main .nav-group-sub .nav-link:hover::before,
.sidebar-main .nav-group-sub .nav-link.active::before {
    opacity: 1;
    transform: scale(1.25);
}

/* Module sidebar context label */
.sidebar[data-module] .sidebar-section-body .fw-semibold {
    letter-spacing: 0.02em;
}

/* Dark sidebar active state → brand (native Limitless structure kept) */
.sidebar-dark .nav-sidebar > .nav-item > .nav-link.active,
.sidebar-dark .nav-sidebar .nav-item > .nav-link.active,
.nav-sidebar .nav-item > .nav-link.active {
    background-color: var(--brand) !important;
    color: #fff !important;
}
.nav-sidebar .nav-item > .nav-link.active i { color: #fff !important; }

/* Light sidebar surface (School uses non-dark sidebar) */
.sidebar-main:not(.sidebar-dark) {
    background: #fff;
    border-right: 1px solid var(--line, #E5E7EB);
}

/* Match School ERP optical weight on macOS (no antialiased thinning) */
.nav-secondary-bar,
.nav-secondary-item,
.sidebar-main .nav-sidebar .nav-link,
.sidebar[data-module] .sidebar-section-body {
    -webkit-font-smoothing: auto;
    -moz-osx-font-smoothing: auto;
}
