/*
 * RO-EA Dashboard — Sneat Bootstrap HTML Admin Template (Free) integration
 * Design tokens, layout, sidebar, topbar, auth and shared component styles.
 * Supplements Bootstrap 5 and replaces the legacy dashboard shell CSS.
 *
 * Sneat colour palette
 *   Primary : #696cff   (indigo-purple)
 *   Body bg : #f5f5f9
 *   Sidebar : white
 *   Text    : #566a7f
 *
 * Fonts    : Poppins (loaded via Google Fonts in layout.php)
 * Icons    : BoxIcons (loaded via CDN in layout.php)
 */

/* ── 1. CSS custom properties ──────────────────────────────────────────── */
:root {
    /* Brand */
    --sn-primary:        #696cff;
    --sn-primary-dark:   #5a5cf8;
    --sn-primary-light:  rgba(105, 108, 255, 0.08);
    --sn-primary-shadow: rgba(105, 108, 255, 0.40);

    /* Surface */
    --sn-body-bg:        #f5f5f9;
    --sn-card-bg:        #ffffff;
    --sn-sidebar-bg:     #ffffff;
    --sn-navbar-bg:      #ffffff;

    /* Typography */
    --sn-body-color:     #566a7f;
    --sn-heading-color:  #566a7f;
    --sn-muted-color:    #a1acb8;
    --sn-link-color:     #696cff;
    --sn-font:           'Poppins', 'Segoe UI', system-ui, sans-serif;
    --sn-font-arabic:    'Cairo',   'Segoe UI', system-ui, sans-serif;

    /* Borders & shadows */
    --sn-border:         #d9dee3;
    --sn-card-shadow:    0 2px 6px 0 rgba(67, 89, 113, 0.12);
    --sn-menu-shadow:    0 0 10px rgba(67, 89, 113, 0.10);

    /* Layout dimensions */
    --sn-sidebar-w:      260px;
    --sn-navbar-h:       64px;

    /* Menu */
    --sn-menu-item-color:   #566a7f;
    --sn-menu-active-color: #696cff;
    --sn-menu-active-bg:    rgba(105, 108, 255, 0.08);
    --sn-menu-hover-bg:     rgba(67, 89, 113, 0.04);

    /* Badge colours */
    --badge-success-bg:  #d1fae5; --badge-success-fg:  #065f46;
    --badge-warning-bg:  #fef3c7; --badge-warning-fg:  #92400e;
    --badge-danger-bg:   #fee2e2; --badge-danger-fg:   #991b1b;
    --badge-info-bg:     #dbeafe; --badge-info-fg:     #1e40af;
    --badge-purple-bg:   #ede9fe; --badge-purple-fg:   #5b21b6;
    --badge-teal-bg:     #ccfbf1; --badge-teal-fg:     #0f766e;
}

/* ── 2. Base reset & typography ────────────────────────────────────────── */
*,
*::before,
*::after { box-sizing: border-box; }

html { font-size: 16px; }

body {
    font-family:      var(--sn-font);
    font-size:        0.9375rem;
    font-weight:      400;
    line-height:      1.5;
    color:            var(--sn-body-color);
    background-color: var(--sn-body-bg);
    -webkit-font-smoothing:  antialiased;
    -moz-osx-font-smoothing: grayscale;
}

[dir="rtl"] body { font-family: var(--sn-font-arabic); }

a { color: var(--sn-link-color); text-decoration: none; }
a:hover { color: var(--sn-primary-dark); }

/* ── 3. Layout shell ───────────────────────────────────────────────────── */
/*
 * Outer wrapper: layout-wrapper.layout-content-navbar
 * ├── layout-container
 * │   ├── aside#layout-menu.layout-menu (sidebar)
 * │   └── div.layout-page
 * │       ├── nav.layout-navbar (topbar)
 * │       └── div.content-wrapper
 * │           └── div.container-xxl.flex-grow-1.container-p-y (page content)
 * └── div.layout-overlay (mobile backdrop)
 */

.layout-wrapper {
    display:  flex;
    flex-direction: column;
    min-height: 100vh;
    overflow-x: hidden;
}

.layout-content-navbar .layout-container {
    display:    flex;
    min-height: 100vh;
}

/* ── 3a. Sidebar / layout-menu ─────────────────────────────────────────── */
.layout-menu {
    position:    fixed;
    top:         0;
    left:        0;
    width:       var(--sn-sidebar-w);
    height:      100vh;
    background:  var(--sn-sidebar-bg);
    z-index:     1030;
    overflow-y:  auto;
    overflow-x:  hidden;
    box-shadow:  var(--sn-menu-shadow);
    transition:  left 0.3s ease, width 0.3s ease;
    scrollbar-width: thin;
    scrollbar-color: var(--sn-border) transparent;
    display:     flex;
    flex-direction: column;
}

[dir="rtl"] .layout-menu {
    left:  auto;
    right: 0;
    box-shadow: -1px 0 10px rgba(67, 89, 113, 0.10);
    transition: right 0.3s ease, width 0.3s ease;
}

.layout-menu::-webkit-scrollbar { width: 4px; }
.layout-menu::-webkit-scrollbar-track { background: transparent; }
.layout-menu::-webkit-scrollbar-thumb { background: var(--sn-border); border-radius: 4px; }

/* App brand / logo area */
.app-brand {
    display:         flex;
    align-items:     center;
    padding:         20px 20px 8px;
    flex-shrink:     0;
    text-decoration: none;
}

.app-brand-logo {
    display:     flex;
    align-items: center;
    width:        36px;
    height:       36px;
    border-radius: 8px;
    background:  var(--sn-primary);
    color:       #fff;
    font-size:   1.1rem;
    justify-content: center;
    flex-shrink: 0;
}

.app-brand-text {
    font-size:   1.05rem;
    font-weight: 700;
    color:       var(--sn-heading-color);
    margin-inline-start: 10px;
    line-height: 1.2;
    white-space: nowrap;
}

.app-brand-sub {
    display:  block;
    font-size: 0.68rem;
    font-weight: 500;
    color:    var(--sn-muted-color);
    letter-spacing: 0.3px;
}

/* Menu divider */
.menu-divider {
    border:  none;
    border-top: 1px solid var(--sn-border);
    margin: 8px 16px;
}

/* Inner nav list */
.menu-inner {
    list-style: none;
    padding:    8px 0;
    margin:     0;
    flex:       1;
}

/* Section header labels */
.menu-header {
    font-size:      0.68rem;
    font-weight:    700;
    color:          var(--sn-muted-color);
    text-transform: uppercase;
    letter-spacing: 0.6px;
    padding:        12px 20px 4px;
    margin-top:     8px;
}

/* Menu items */
.menu-item {
    position: relative;
}

.menu-link {
    display:     flex;
    align-items: center;
    gap:         8px;
    padding:     10px 16px;
    margin:      2px 8px;
    border-radius: 6px;
    color:       var(--sn-menu-item-color);
    font-size:   0.875rem;
    font-weight: 500;
    cursor:      pointer;
    transition:  background 0.15s, color 0.15s;
    text-decoration: none;
    white-space: nowrap;
    overflow:    hidden;
    text-overflow: ellipsis;
}

.menu-link:hover {
    background: var(--sn-menu-hover-bg);
    color:      var(--sn-primary);
}

.menu-item.active > .menu-link,
.menu-link.active {
    background: var(--sn-menu-active-bg);
    color:      var(--sn-menu-active-color);
    font-weight: 600;
}

/* Menu icon */
.menu-icon {
    width:       22px;
    font-size:   1.15rem;
    line-height: 1;
    flex-shrink: 0;
    display:     inline-flex;
    align-items: center;
    justify-content: center;
    color:       inherit;
}

/* Sub-menu / dropdown */
.menu-sub {
    list-style:  none;
    margin:      0;
    padding:     0;
    overflow:    hidden;
    max-height:  0;
    transition:  max-height 0.3s ease;
}

.menu-item.open > .menu-sub {
    max-height: 600px;
}

.menu-link.has-sub::after {
    content:     '\ea4e';
    font-family: 'boxicons';
    margin-inline-start: auto;
    font-size:   0.9rem;
    transition:  transform 0.2s;
    flex-shrink: 0;
}

.menu-item.open > .menu-link.has-sub::after {
    transform: rotate(90deg);
}

[dir="rtl"] .menu-item.open > .menu-link.has-sub::after {
    transform: rotate(-90deg);
}

.menu-sub .menu-link {
    padding-inline-start: 46px;
    font-size:   0.83rem;
}

/* Sidebar divider line */
.menu-inner-shadow {
    height:     80px;
    background: linear-gradient(var(--sn-sidebar-bg) 41%, rgba(255,255,255,0) 100%);
    position:   sticky;
    top:        0;
    z-index:    2;
    pointer-events: none;
}

/* ── 3b. Layout page (right side) ──────────────────────────────────────── */
.layout-page {
    display:         flex;
    flex-direction:  column;
    min-height:      100vh;
    min-width:       0;
    flex:            1;
    margin-inline-start: var(--sn-sidebar-w);
    transition:      margin 0.3s ease;
}

[dir="rtl"] .layout-page {
    margin-inline-start: 0;
    margin-inline-end:   var(--sn-sidebar-w);
}

/* ── 3c. Topbar / layout-navbar ────────────────────────────────────────── */
.layout-navbar {
    position:        sticky;
    top:             0;
    z-index:         1020;
    background:      var(--sn-navbar-bg);
    box-shadow:      0 1px 0 rgba(67, 89, 113, 0.10);
    height:          var(--sn-navbar-h);
    padding:         0 24px;
    display:         flex;
    align-items:     center;
    justify-content: space-between;
    gap:             12px;
}

/* Hamburger/toggle button (visible on all widths — we show/hide via CSS) */
.layout-menu-toggle {
    background: none;
    border:     none;
    padding:    6px;
    cursor:     pointer;
    color:      var(--sn-body-color);
    border-radius: 6px;
    line-height: 1;
    transition: background 0.15s, color 0.15s;
    display:    flex;
    align-items: center;
    justify-content: center;
}

.layout-menu-toggle:hover {
    background: var(--sn-menu-hover-bg);
    color:      var(--sn-primary);
}

.navbar-brand-text {
    font-size:   1.1rem;
    font-weight: 700;
    color:       var(--sn-heading-color);
    display:     flex;
    align-items: center;
    gap:         8px;
}

.navbar-nav-right {
    display:     flex;
    align-items: center;
    gap:         4px;
    margin-inline-start: auto;
}

/* Date badge in topbar */
.navbar-date {
    font-size:   0.8rem;
    color:       var(--sn-muted-color);
    font-weight: 500;
    white-space: nowrap;
    padding:     4px 10px;
    background:  var(--sn-body-bg);
    border-radius: 20px;
    border:      1px solid var(--sn-border);
}

/* Language toggle */
.btn-lang {
    display:     inline-flex;
    align-items: center;
    gap:         4px;
    padding:     6px 14px;
    border:      1.5px solid var(--sn-primary);
    border-radius: 20px;
    background:  transparent;
    color:       var(--sn-primary);
    font-size:   0.8rem;
    font-weight: 600;
    cursor:      pointer;
    transition:  background 0.15s, color 0.15s;
    font-family: inherit;
    white-space: nowrap;
}

.btn-lang:hover {
    background: var(--sn-primary);
    color:      #fff;
}

/* User dropdown area */
.navbar-user {
    display:     flex;
    align-items: center;
    gap:         10px;
}

.navbar-user-avatar {
    width:        36px;
    height:       36px;
    border-radius: 50%;
    background:  var(--sn-primary-light);
    display:     inline-flex;
    align-items: center;
    justify-content: center;
    font-size:   1rem;
    flex-shrink: 0;
    border:      2px solid var(--sn-border);
}

.navbar-user-name {
    font-size:   0.875rem;
    font-weight: 600;
    color:       var(--sn-heading-color);
    max-width:   120px;
    overflow:    hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.btn-logout {
    display:     inline-flex;
    align-items: center;
    gap:         6px;
    padding:     6px 14px;
    border:      none;
    border-radius: 20px;
    background:  #fee2e2;
    color:       #991b1b;
    font-size:   0.8rem;
    font-weight: 600;
    cursor:      pointer;
    text-decoration: none;
    transition:  background 0.15s;
    font-family: inherit;
    white-space: nowrap;
}

.btn-logout:hover {
    background: #fecaca;
    color:      #991b1b;
}

/* ── 3d. Content wrapper ───────────────────────────────────────────────── */
.content-wrapper {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.container-p-y {
    padding: 1.5rem 1.5rem 2rem;
    flex:    1;
}

/* ── 3e. Mobile overlay backdrop ───────────────────────────────────────── */
.layout-overlay {
    display:  none;
    position: fixed;
    inset:    0;
    z-index:  1025;
    background: rgba(67, 89, 113, 0.5);
    backdrop-filter: blur(2px);
    cursor:   pointer;
}

/* ── 4. Mobile sidebar behaviour ───────────────────────────────────────── */
/* On small screens the sidebar slides in from the left.
   JS adds .sidebar-open to <html> to activate. */
@media (max-width: 1199.98px) {
    .layout-menu {
        left:      calc(-1 * var(--sn-sidebar-w));
        box-shadow: none;
    }

    [dir="rtl"] .layout-menu {
        left:  auto;
        right: calc(-1 * var(--sn-sidebar-w));
    }

    .layout-page {
        margin-inline-start: 0 !important;
    }

    [dir="rtl"] .layout-page {
        margin-inline-end: 0 !important;
    }

    html.sidebar-open .layout-menu {
        left:       0;
        box-shadow: var(--sn-menu-shadow);
    }

    [dir="rtl"] html.sidebar-open .layout-menu {
        left:  auto;
        right: 0;
    }

    html.sidebar-open .layout-overlay {
        display: block;
    }
}

@media (max-width: 767.98px) {
    .layout-navbar { padding: 0 16px; }
    .container-p-y { padding: 1rem 1rem 1.5rem; }
    .navbar-date    { display: none; }
}

/* ── 5. Authentication pages ───────────────────────────────────────────── */
.authentication-wrapper {
    display:         flex;
    align-items:     center;
    justify-content: center;
    min-height:      100vh;
    padding:         24px 16px;
}

.authentication-inner {
    width:     100%;
    max-width: 440px;
}

.auth-card {
    background:    var(--sn-card-bg);
    border-radius: 16px;
    padding:       32px 32px 28px;
    box-shadow:    0 4px 24px rgba(67, 89, 113, 0.16);
    border:        1px solid var(--sn-border);
}

@media (max-width: 480px) {
    .auth-card { padding: 28px 20px 24px; }
}

.auth-brand {
    display:         flex;
    align-items:     center;
    justify-content: center;
    gap:             10px;
    margin-bottom:   24px;
}

.auth-brand-logo {
    width:          40px;
    height:         40px;
    border-radius:  10px;
    background:     var(--sn-primary);
    color:          #fff;
    display:        inline-flex;
    align-items:    center;
    justify-content: center;
    font-size:      1.2rem;
}

.auth-brand-name {
    font-size:   1.35rem;
    font-weight: 800;
    color:       var(--sn-heading-color);
    line-height: 1.2;
}

.auth-brand-name small {
    display:     block;
    font-size:   0.72rem;
    font-weight: 500;
    color:       var(--sn-muted-color);
    letter-spacing: 0.3px;
}

.auth-title {
    font-size:   1.25rem;
    font-weight: 700;
    color:       var(--sn-heading-color);
    margin-bottom: 4px;
}

.auth-subtitle {
    font-size:   0.875rem;
    color:       var(--sn-muted-color);
    margin-bottom: 24px;
}

/* Auth form */
.auth-form .form-label {
    font-size:   0.8125rem;
    font-weight: 600;
    color:       var(--sn-heading-color);
    margin-bottom: 5px;
}

.auth-form .form-control {
    border:        1.5px solid var(--sn-border);
    border-radius: 8px;
    padding:       10px 14px;
    font-size:     0.9rem;
    color:         var(--sn-heading-color);
    background:    #fff;
    transition:    border-color 0.15s, box-shadow 0.15s;
    font-family:   inherit;
}

.auth-form .form-control:focus {
    border-color: var(--sn-primary);
    box-shadow:   0 0 0 3px rgba(105, 108, 255, 0.12);
    outline:      none;
}

.auth-form .form-control::placeholder { color: var(--sn-muted-color); }

.btn-auth-submit {
    width:         100%;
    background:    var(--sn-primary);
    color:         #fff;
    border:        none;
    border-radius: 8px;
    padding:       11px;
    font-size:     0.9375rem;
    font-weight:   600;
    cursor:        pointer;
    margin-top:    8px;
    transition:    background 0.15s, box-shadow 0.15s, transform 0.1s;
    letter-spacing: 0.2px;
    font-family:   inherit;
}

.btn-auth-submit:hover {
    background:  var(--sn-primary-dark);
    box-shadow:  0 4px 14px var(--sn-primary-shadow);
    transform:   translateY(-1px);
}

.btn-auth-submit:active { transform: translateY(0); }

.auth-alert-error {
    display:       flex;
    align-items:   center;
    gap:           8px;
    background:    var(--badge-danger-bg);
    color:         var(--badge-danger-fg);
    border:        1px solid #fecaca;
    border-radius: 8px;
    padding:       10px 14px;
    font-size:     0.875rem;
    font-weight:   500;
    margin-bottom: 18px;
}

/* ── 6. Cards ──────────────────────────────────────────────────────────── */
.card {
    background:    var(--sn-card-bg);
    border-radius: 10px;
    box-shadow:    var(--sn-card-shadow);
    border:        1px solid rgba(67, 89, 113, 0.06);
    padding:       24px;
    margin-bottom: 24px;
}

.card-header-sneat {
    display:         flex;
    align-items:     center;
    justify-content: space-between;
    padding-bottom:  16px;
    border-bottom:   1px solid var(--sn-border);
    margin-bottom:   20px;
    flex-wrap:       wrap;
    gap:             10px;
}

.card-title-sneat {
    font-size:   1rem;
    font-weight: 600;
    color:       var(--sn-heading-color);
    display:     flex;
    align-items: center;
    gap:         8px;
    margin:      0;
}

/* ── 7. Page header (inside cards) ────────────────────────────────────── */
.page-header {
    display:         flex;
    align-items:     center;
    justify-content: space-between;
    margin-bottom:   20px;
    flex-wrap:       wrap;
    gap:             10px;
}

.page-header h2 {
    font-size:   1rem;
    font-weight: 700;
    color:       var(--sn-heading-color);
    margin:      0;
}

.page-header-actions {
    display:     flex;
    align-items: center;
    flex-wrap:   wrap;
    gap:         6px;
}

/* ── 8. Buttons ────────────────────────────────────────────────────────── */
/* Export / secondary action buttons */
.btn-export {
    display:       inline-flex;
    align-items:   center;
    gap:           6px;
    padding:       7px 14px;
    border:        1.5px solid var(--sn-border);
    border-radius: 6px;
    background:    #fff;
    color:         var(--sn-body-color);
    font-size:     0.8rem;
    font-weight:   600;
    cursor:        pointer;
    transition:    background 0.15s, border-color 0.15s, color 0.15s;
    font-family:   inherit;
    white-space:   nowrap;
}

.btn-export:hover {
    background:    var(--sn-body-bg);
    border-color:  var(--sn-primary);
    color:         var(--sn-primary);
}

/* Primary "Add" button */
.btn-add {
    display:       inline-flex;
    align-items:   center;
    gap:           6px;
    padding:       8px 18px;
    border:        none;
    border-radius: 6px;
    background:    var(--sn-primary);
    color:         #fff;
    font-size:     0.875rem;
    font-weight:   600;
    cursor:        pointer;
    transition:    background 0.15s, box-shadow 0.15s;
    font-family:   inherit;
    white-space:   nowrap;
}

.btn-add:hover {
    background: var(--sn-primary-dark);
    box-shadow: 0 4px 12px var(--sn-primary-shadow);
}

/* Form submit */
.btn-submit {
    display:       inline-flex;
    align-items:   center;
    justify-content: center;
    gap:           6px;
    width:         100%;
    padding:       10px 20px;
    border:        none;
    border-radius: 6px;
    background:    var(--sn-primary);
    color:         #fff;
    font-size:     0.9rem;
    font-weight:   600;
    cursor:        pointer;
    transition:    background 0.15s, box-shadow 0.15s;
    font-family:   inherit;
}

.btn-submit:hover {
    background: var(--sn-primary-dark);
    box-shadow: 0 4px 12px var(--sn-primary-shadow);
}

/* Icon action buttons (edit/delete in table rows) */
.btn-action {
    display:       inline-flex;
    align-items:   center;
    gap:           4px;
    padding:       4px 10px;
    border:        none;
    border-radius: 5px;
    font-size:     0.78rem;
    font-weight:   600;
    cursor:        pointer;
    transition:    background 0.15s, color 0.15s;
    font-family:   inherit;
    white-space:   nowrap;
}

.btn-edit  { background: var(--badge-purple-bg); color: var(--badge-purple-fg); }
.btn-delete { background: var(--badge-danger-bg); color: var(--badge-danger-fg); }
.btn-edit:hover   { background: var(--sn-primary); color: #fff; }
.btn-delete:hover { background: #ef4444;            color: #fff; }

/* Admin-users specific */
.btn-add-item,
.btn-add-project-row {
    display:       inline-flex;
    align-items:   center;
    gap:           5px;
    padding:       5px 12px;
    border:        1.5px dashed var(--sn-primary);
    border-radius: 6px;
    background:    var(--sn-primary-light);
    color:         var(--sn-primary);
    font-size:     0.82rem;
    font-weight:   600;
    cursor:        pointer;
    transition:    background 0.15s;
    font-family:   inherit;
}

.btn-add-item:hover,
.btn-add-project-row:hover {
    background: rgba(105, 108, 255, 0.15);
}

.btn-remove-item,
.btn-remove-project-row {
    display:       inline-flex;
    align-items:   center;
    justify-content: center;
    width:         24px;
    height:        24px;
    border:        none;
    border-radius: 4px;
    background:    var(--badge-danger-bg);
    color:         var(--badge-danger-fg);
    font-size:     0.75rem;
    cursor:        pointer;
    transition:    background 0.15s;
    font-family:   inherit;
}

.btn-remove-item:hover,
.btn-remove-project-row:hover { background: #fecaca; }

/* ── 9. Badges ─────────────────────────────────────────────────────────── */
.badge {
    display:       inline-flex;
    align-items:   center;
    padding:       3px 10px;
    border-radius: 50px;
    font-size:     0.72rem;
    font-weight:   600;
    white-space:   nowrap;
    line-height:   1.5;
}

.badge-green  { background: var(--badge-success-bg); color: var(--badge-success-fg); }
.badge-yellow { background: var(--badge-warning-bg); color: var(--badge-warning-fg); }
.badge-red    { background: var(--badge-danger-bg);  color: var(--badge-danger-fg); }
.badge-blue   { background: var(--badge-info-bg);    color: var(--badge-info-fg); }
.badge-purple { background: var(--badge-purple-bg);  color: var(--badge-purple-fg); }
.badge-teal   { background: var(--badge-teal-bg);    color: var(--badge-teal-fg); }

/* Bootstrap badge alignment helpers */
.badge.bg-primary   { background: var(--sn-primary) !important; }
.badge.bg-success   { background: #71dd37 !important; color: #fff !important; }

/* ── 10. Stat grid ─────────────────────────────────────────────────────── */
.stat-grid {
    display:               grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap:                   20px;
    margin-bottom:         24px;
}

.stat-card {
    background:    var(--sn-card-bg);
    border-radius: 10px;
    box-shadow:    var(--sn-card-shadow);
    border:        1px solid rgba(67, 89, 113, 0.06);
    padding:       20px 22px;
    display:       flex;
    flex-direction: column;
    gap:           6px;
    position:      relative;
    overflow:      hidden;
    border-top:    3px solid var(--sn-primary);
}

.stat-card .label {
    font-size:   0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color:       var(--sn-muted-color);
}

.stat-card .value {
    font-size:   1.45rem;
    font-weight: 700;
    color:       var(--sn-heading-color);
    line-height: 1.2;
}

.stat-card .change {
    font-size:   0.78rem;
    font-weight: 600;
}

.stat-card .change.up   { color: #28a745; }
.stat-card .change.down { color: #dc3545; }

/* ── 11. Data tables ───────────────────────────────────────────────────── */
.table-search-wrap {
    margin-bottom: 14px;
}

.table-search {
    width:         100%;
    max-width:     320px;
    padding:       8px 14px;
    border:        1.5px solid var(--sn-border);
    border-radius: 6px;
    font-size:     0.875rem;
    color:         var(--sn-heading-color);
    background:    #fff;
    outline:       none;
    transition:    border-color 0.15s, box-shadow 0.15s;
    font-family:   inherit;
}

.table-search:focus {
    border-color: var(--sn-primary);
    box-shadow:   0 0 0 3px rgba(105, 108, 255, 0.10);
}

.table-search::placeholder { color: var(--sn-muted-color); }

.data-table,
.table-responsive table {
    width:           100%;
    border-collapse: separate;
    border-spacing:  0;
    font-size:       0.875rem;
}

.data-table thead th,
.table-responsive table thead th {
    padding:        10px 14px;
    font-size:      0.72rem;
    font-weight:    700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color:          var(--sn-muted-color);
    border-bottom:  2px solid var(--sn-border);
    background:     #fafbfc;
    white-space:    nowrap;
    text-align:     start;
    vertical-align: middle;
}

.data-table tbody tr,
.table-responsive table tbody tr {
    border-bottom: 1px solid #f0f2f5;
    transition:    background 0.1s;
}

.data-table tbody tr:last-child,
.table-responsive table tbody tr:last-child {
    border-bottom: none;
}

.data-table tbody tr:hover,
.table-responsive table tbody tr:hover {
    background: #fafbfc;
}

.data-table tbody td,
.table-responsive table tbody td {
    padding:        11px 14px;
    color:          var(--sn-heading-color);
    vertical-align: middle;
    text-align:     start;
}

/* Sortable column headers */
.sortable {
    cursor:       pointer;
    user-select:  none;
    white-space:  nowrap;
}

.sortable::after {
    content:     ' ↕';
    font-size:   0.65em;
    opacity:     0.4;
}

.sortable.sort-asc::after  { content: ' ↑'; opacity: 0.8; }
.sortable.sort-desc::after { content: ' ↓'; opacity: 0.8; }

/* ── 12. Forms ──────────────────────────────────────────────────────────── */
.form-row {
    display:               grid;
    grid-template-columns: 1fr 1fr;
    gap:                   16px;
    margin-bottom:         0;
}

@media (max-width: 600px) {
    .form-row { grid-template-columns: 1fr; }
}

.form-group {
    display:        flex;
    flex-direction: column;
    gap:            5px;
    margin-bottom:  16px;
}

.form-group label {
    font-size:   0.8rem;
    font-weight: 600;
    color:       var(--sn-heading-color);
}

.form-group input,
.form-group select,
.form-group textarea {
    padding:       9px 13px;
    border:        1.5px solid var(--sn-border);
    border-radius: 6px;
    font-size:     0.875rem;
    color:         var(--sn-heading-color);
    background:    #fff;
    outline:       none;
    transition:    border-color 0.15s, box-shadow 0.15s;
    font-family:   inherit;
    width:         100%;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    border-color: var(--sn-primary);
    box-shadow:   0 0 0 3px rgba(105, 108, 255, 0.10);
}

.form-group input::placeholder,
.form-group textarea::placeholder { color: var(--sn-muted-color); }

/* ── 13. Modals ─────────────────────────────────────────────────────────── */
.modal-overlay {
    display:          none;
    position:         fixed;
    inset:            0;
    z-index:          1050;
    background:       rgba(67, 89, 113, 0.55);
    backdrop-filter:  blur(3px);
    align-items:      center;
    justify-content:  center;
    padding:          16px;
}

.modal-overlay.open { display: flex; }

.app-modal {
    background:    var(--sn-card-bg);
    border-radius: 12px;
    padding:       28px;
    width:         100%;
    max-width:     520px;
    max-height:    90vh;
    overflow-y:    auto;
    box-shadow:    0 8px 32px rgba(67, 89, 113, 0.25);
    position:      relative;
    animation:     modalIn 0.25s ease;
}

.app-modal-wide { max-width: 720px; }

@keyframes modalIn {
    from { transform: translateY(-16px); opacity: 0; }
    to   { transform: translateY(0);     opacity: 1; }
}

.app-modal h3 {
    font-size:     1rem;
    font-weight:   700;
    color:         var(--sn-heading-color);
    margin-bottom: 20px;
}

.modal-close {
    position:  absolute;
    top:       14px;
    right:     14px;
    width:     28px;
    height:    28px;
    border:    none;
    border-radius: 50%;
    background: var(--sn-body-bg);
    color:     var(--sn-muted-color);
    font-size: 0.9rem;
    cursor:    pointer;
    display:   inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s, color 0.15s;
    line-height: 1;
}

.modal-close:hover {
    background: var(--badge-danger-bg);
    color:      var(--badge-danger-fg);
}

[dir="rtl"] .modal-close { right: auto; left: 14px; }

/* ── 14. Toasts ─────────────────────────────────────────────────────────── */
#toast-container {
    position:       fixed;
    bottom:         24px;
    right:          24px;
    z-index:        9999;
    display:        flex;
    flex-direction: column;
    gap:            8px;
    pointer-events: none;
}

[dir="rtl"] #toast-container { right: auto; left: 24px; }

.toast {
    display:       flex;
    align-items:   center;
    gap:           10px;
    padding:       12px 18px;
    border-radius: 8px;
    font-size:     0.875rem;
    font-weight:   500;
    min-width:     240px;
    max-width:     380px;
    box-shadow:    0 4px 16px rgba(67, 89, 113, 0.20);
    pointer-events: auto;
    animation:     toastIn 0.25s ease;
}

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

.toast-success { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; }
.toast-error   { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
.toast-info    { background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; }

/* ── 15. Admin Users page ───────────────────────────────────────────────── */
.au-topbar {
    background:  var(--sn-primary);
    padding:     14px 28px;
    display:     flex;
    align-items: center;
    justify-content: space-between;
    color:       #fff;
    flex-wrap:   wrap;
    gap:         10px;
}

.au-topbar-brand { font-size: 1rem; font-weight: 700; }

.au-topbar a { color: rgba(255,255,255,0.85); font-size: 0.875rem; font-weight: 600; text-decoration: underline; }
.au-topbar a:hover { color: #fff; }
.au-topbar-user  { color: rgba(255,255,255,0.7); font-size: 0.875rem; }

.au-content { max-width: 900px; margin: 32px auto; padding: 0 20px 60px; }

.au-card {
    background:    var(--sn-card-bg);
    border-radius: 10px;
    padding:       28px;
    box-shadow:    var(--sn-card-shadow);
    margin-bottom: 24px;
    border:        1px solid rgba(67, 89, 113, 0.06);
}

.au-card h2 { font-size: 1rem; font-weight: 700; color: var(--sn-heading-color); margin-bottom: 18px; }

.au-alert { padding: 11px 16px; border-radius: 8px; font-size: 0.875rem; font-weight: 500; margin-bottom: 18px; }
.au-alert-success { background: var(--badge-success-bg); color: var(--badge-success-fg); border: 1px solid #a7f3d0; }
.au-alert-error   { background: var(--badge-danger-bg);  color: var(--badge-danger-fg);  border: 1px solid #fecaca; }

.au-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.au-form-group { display: flex; flex-direction: column; gap: 5px; }
.au-form-group.full { grid-column: 1 / -1; }
.au-form-group label { font-size: 0.8rem; font-weight: 600; color: var(--sn-heading-color); }

.au-form-group input,
.au-form-group select {
    padding: 9px 12px; border: 1.5px solid var(--sn-border); border-radius: 6px;
    font-size: 0.875rem; color: var(--sn-heading-color); outline: none;
    transition: border-color 0.15s, box-shadow 0.15s; font-family: inherit; background: #fff;
}

.au-form-group input:focus,
.au-form-group select:focus {
    border-color: var(--sn-primary);
    box-shadow:   0 0 0 3px rgba(105, 108, 255, 0.10);
}

.au-btn-submit {
    background: var(--sn-primary); color: #fff; border: none; border-radius: 6px;
    padding: 10px 24px; font-size: 0.875rem; font-weight: 600; cursor: pointer;
    transition: background 0.15s, box-shadow 0.15s; margin-top: 8px; font-family: inherit;
}

.au-btn-submit:hover { background: var(--sn-primary-dark); box-shadow: 0 4px 12px var(--sn-primary-shadow); }

.au-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
.au-table thead th {
    text-align: start; padding: 10px 14px; font-size: 0.72rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: 0.4px; color: var(--sn-muted-color);
    border-bottom: 2px solid var(--sn-border); background: #fafbfc;
}
.au-table tbody tr  { border-bottom: 1px solid #f0f2f5; }
.au-table tbody tr:last-child { border-bottom: none; }
.au-table tbody tr:hover { background: #fafbfc; }
.au-table tbody td  { padding: 11px 14px; color: var(--sn-heading-color); vertical-align: middle; }

.au-badge { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 50px; font-size: 0.72rem; font-weight: 600; white-space: nowrap; }
.au-badge-admin   { background: var(--badge-info-bg);    color: var(--badge-info-fg); }
.au-badge-manager { background: var(--badge-success-bg); color: var(--badge-success-fg); }
.au-badge-viewer  { background: var(--badge-warning-bg); color: var(--badge-warning-fg); }
.au-badge-user    { background: var(--badge-purple-bg);  color: var(--badge-purple-fg); }
.au-badge-active  { background: var(--badge-success-bg); color: var(--badge-success-fg); }
.au-badge-inactive{ background: var(--badge-danger-bg);  color: var(--badge-danger-fg); }

.au-back-link {
    display: inline-flex; align-items: center; gap: 6px;
    color: var(--sn-primary); font-size: 0.875rem; font-weight: 600;
    text-decoration: none; margin-bottom: 22px;
}
.au-back-link:hover { text-decoration: underline; color: var(--sn-primary-dark); }

@media (max-width: 600px) {
    .au-form-grid { grid-template-columns: 1fr; }
    .au-topbar    { padding: 12px 16px; }
}

/* ── 16. Misc helpers ───────────────────────────────────────────────────── */
.text-muted-sneat { color: var(--sn-muted-color); }

/* Override Bootstrap primary to match Sneat */
.btn-primary { background-color: var(--sn-primary) !important; border-color: var(--sn-primary) !important; }
.btn-primary:hover { background-color: var(--sn-primary-dark) !important; border-color: var(--sn-primary-dark) !important; }
.text-primary { color: var(--sn-primary) !important; }
.bg-primary   { background-color: var(--sn-primary) !important; }

/* Divider */
.sneat-divider { border: none; border-top: 1px solid var(--sn-border); margin: 20px 0; }

/* Inline table input cells (salaries / project items) */
.items-table input,
.projects-alloc-table input {
    border: 1.5px solid var(--sn-border);
    border-radius: 5px;
    padding: 5px 8px;
    font-size: 0.85rem;
    font-family: inherit;
    color: var(--sn-heading-color);
    outline: none;
    transition: border-color 0.15s;
    background: #fff;
}

.items-table input:focus,
.projects-alloc-table input:focus {
    border-color: var(--sn-primary);
    box-shadow: 0 0 0 2px rgba(105, 108, 255, 0.10);
}
