﻿/* ========================================================================
   LAP Frontend Template - Dashboard/Admin Styles - Material Design 3
   ASP.NET Core 8 + Bootstrap 5 + Material Design 3
   ======================================================================== */

/* ========================================================================
   1. Admin Layout Structure
   ======================================================================== */
.admin-wrapper {
    display: flex;
    min-height: auto;
    background-color: var(--bg-body);
}

/* ========================================================================
   2. Material Design 3 - Navigation Drawer (Sidebar)
   ======================================================================== */
.sidebar {
    width: 260px;
    background: linear-gradient(180deg, #1a1a2e 0%, #16213e 100%);
    box-shadow: var(--md-elevation-0);
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    z-index: 1000;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: width var(--md-motion-duration-medium4) var(--md-motion-easing-emphasized);
}

    /* Sidebar Colapsada */
    .sidebar.collapsed {
        width: 70px;
    }

        .sidebar.collapsed .sidebar-brand-text,
        .sidebar.collapsed .sidebar-link-text,
        .sidebar.collapsed .sidebar-badge,
        .sidebar.collapsed .submenu-arrow,
        .sidebar.collapsed .sidebar-separator-text,
        .sidebar.collapsed .sidebar-user-info,
        .sidebar.collapsed .sidebar-version,
        .sidebar.collapsed .sidebar-search input {
            opacity: 0;
            width: 0;
            overflow: hidden;
        }

        .sidebar.collapsed .sidebar-submenu {
            display: none;
        }

        .sidebar.collapsed .sidebar-collapse-btn .material-symbols-rounded::before {
            content: "chevron_right";
        }

/* Sidebar Brand - Material Design Header */
.sidebar-brand {
    padding: 16px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-shrink: 0;
    min-height: 64px;
}

    .sidebar-brand a {
        color: #fff;
        text-decoration: none;
        font-size: 22px;
        font-weight: 400;
        line-height: 28px;
        display: flex;
        align-items: center;
        flex: 1;
        gap: 12px;
        transition: color var(--md-motion-duration-short4) var(--md-motion-easing-standard);
    }

        .sidebar-brand a:hover {
            color: #4DD0FF;
        }

        .sidebar-brand a .material-symbols-rounded {
            font-size: 28px;
        }

.sidebar-brand-text {
    white-space: nowrap;
    transition: opacity var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

/* Material Design Icon Button - Collapse */
.sidebar-collapse-btn {
    background: rgba(255, 255, 255, 0.08);
    border: none;
    color: #fff;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

    .sidebar-collapse-btn:hover {
        background: rgba(77, 208, 255, 0.16);
    }

    .sidebar-collapse-btn:active {
        background: rgba(77, 208, 255, 0.24);
    }

/* Material Design Search Field */
.sidebar-search {
    padding: 8px 16px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    flex-shrink: 0;
}

.sidebar-search-input {
    color: #fff !important;
    background-color: rgba(255, 255, 255, 0.08);
    border-radius: var(--md-shape-corner-extra-large);
    padding: 8px 12px;
    height: 40px;
}

    .sidebar-search-input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .sidebar-search-input:focus {
        background-color: rgba(255, 255, 255, 0.12) !important;
        color: #fff !important;
        box-shadow: none !important;
    }

.sidebar-search .input-group-text {
    padding: 0 12px;
}

.sidebar-search .material-symbols-rounded {
    font-size: 20px;
}

/* Navigation Menu */
.sidebar-menu {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 8px 0;
}

    .sidebar-menu::-webkit-scrollbar {
        width: 6px;
    }

    .sidebar-menu::-webkit-scrollbar-track {
        background: rgba(255, 255, 255, 0.05);
    }

    .sidebar-menu::-webkit-scrollbar-thumb {
        background: rgba(255, 255, 255, 0.2);
        border-radius: 3px;
    }

        .sidebar-menu::-webkit-scrollbar-thumb:hover {
            background: rgba(255, 255, 255, 0.3);
        }

.sidebar-menu-item {
    list-style: none;
    margin-bottom: 0;
}

/* Material Design List Separators */
.sidebar-separator {
    padding: 16px 16px 8px 16px;
    list-style: none;
}

.sidebar-separator-text {
    font-size: 11px;
    font-weight: 500;
    line-height: 16px;
    letter-spacing: 0.5px;
    color: rgba(255, 255, 255, 0.6);
    text-transform: uppercase;
    white-space: nowrap;
    transition: opacity var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

/* Material Design Navigation Items */
.sidebar-link {
    display: flex;
    align-items: center;
    padding: 12px 16px;
    margin: 0 8px;
    color: rgba(255, 255, 255, 0.9);
    text-decoration: none;
    transition: background-color var(--md-motion-duration-short4) var(--md-motion-easing-standard), color var(--md-motion-duration-short4) var(--md-motion-easing-standard);
    position: relative;
    border-radius: var(--md-shape-corner-extra-large);
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
    letter-spacing: 0.1px;
    gap: 12px;
}

    .sidebar-link .material-symbols-rounded:first-child {
        font-size: 24px;
        flex-shrink: 0;
    }

.sidebar-link-text {
    white-space: nowrap;
    flex: 1;
    transition: opacity var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

/* Hover State - Material Design State Layer */
.sidebar-link:hover {
    background-color: rgba(77, 208, 255, 0.12);
    color: #4DD0FF;
}

/* Active State */
.sidebar-link.active {
    background-color: rgba(77, 208, 255, 0.2);
    color: #4DD0FF;
    font-weight: 500;
}

    .sidebar-link.active .material-symbols-rounded {
        font-variation-settings: 'FILL' 1, 'wght' 500, 'GRAD' 0, 'opsz' 24;
    }

/* Material Design Badges */
.sidebar-badge {
    font-size: 11px;
    font-weight: 500;
    line-height: 16px;
    letter-spacing: 0.5px;
    padding: 0 6px;
    min-width: 16px;
    height: 16px;
    border-radius: var(--md-shape-corner-extra-large);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: opacity var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

/* Submenu Toggle */
.submenu-toggle {
    cursor: pointer;
}

.submenu-arrow {
    font-size: 20px;
    margin-left: auto;
    transition: transform var(--md-motion-duration-medium2) var(--md-motion-easing-emphasized);
}

.submenu-toggle[aria-expanded="true"] .submenu-arrow {
    transform: rotate(180deg);
}

/* Material Design Submenu */
.sidebar-submenu {
    list-style: none;
    padding-left: 0;
    margin: 0;
    background-color: rgba(0, 0, 0, 0.15);
    border-radius: var(--md-shape-corner-medium);
    margin: 4px 8px;
    overflow: hidden;
}

    .sidebar-submenu .sidebar-link {
        padding-left: 48px;
        font-size: 14px;
        line-height: 20px;
        margin: 0;
        border-radius: 0;
    }

        .sidebar-submenu .sidebar-link:first-child {
            margin-top: 4px;
        }

        .sidebar-submenu .sidebar-link:last-child {
            margin-bottom: 4px;
        }

.submenu-bullet {
    font-size: 8px;
    color: rgba(255, 255, 255, 0.6);
    margin-right: 12px;
}

.sidebar-submenu .sidebar-link:hover .submenu-bullet,
.sidebar-submenu .sidebar-link.active .submenu-bullet {
    color: #4DD0FF;
}

/* Sidebar Footer - Material Design Surface */
.sidebar-footer {
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    padding: 16px;
    background: rgba(0, 0, 0, 0.2);
    flex-shrink: 0;
}

/* User Info Section */
.sidebar-user {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

.sidebar-user-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 2px solid rgba(77, 208, 255, 0.3);
    flex-shrink: 0;
}

.sidebar-user-info {
    flex: 1;
    min-width: 0;
    transition: opacity var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

.sidebar-user-name {
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
    letter-spacing: 0.1px;
    color: #fff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sidebar-user-role {
    font-size: 12px;
    font-weight: 400;
    line-height: 16px;
    letter-spacing: 0.4px;
    color: rgba(255, 255, 255, 0.7);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Footer Action Buttons */
.sidebar-footer-actions {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
}

.sidebar-footer-btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    background: rgba(255, 255, 255, 0.08);
    border-radius: var(--md-shape-corner-small);
    color: rgba(255, 255, 255, 0.9);
    text-decoration: none;
    transition: background-color var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

    .sidebar-footer-btn:hover {
        background: rgba(77, 208, 255, 0.16);
        color: #4DD0FF;
    }

    .sidebar-footer-btn .material-symbols-rounded {
        font-size: 20px;
    }

.sidebar-version {
    text-align: center;
    transition: opacity var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

    .sidebar-version small {
        color: rgba(255, 255, 255, 0.5);
        font-size: 11px;
        line-height: 16px;
        letter-spacing: 0.5px;
    }

/* ========================================================================
   3. Main Content Area
   ======================================================================== */
.main-content {
    flex: 1;
    margin-left: 260px;
    display: flex;
    flex-direction: column;
    min-height: auto;
    transition: margin-left var(--md-motion-duration-medium4) var(--md-motion-easing-emphasized);
}

    /* Adjust main content when sidebar is collapsed */
    .main-content.sidebar-collapsed {
        margin-left: 70px;
    }

/* ========================================================================
   4. Material Design 3 - Top App Bar (Admin Navbar)
   ======================================================================== */
.admin-navbar {
    background-color: var(--surface);
    border-bottom: 1px solid var(--outline-variant);
    padding: 0;
    position: sticky;
    top: 0;
    z-index: 999;
    box-shadow: var(--md-elevation-0);
    min-height: 64px;
    display: flex;
    align-items: center;
}

    .admin-navbar .container-fluid {
        padding-top: 8px;
        padding-bottom: 8px;
    }

    /* Search Bar - Material Design */
    .admin-navbar .input-group {
        background-color: var(--md-surface-container);
        border-radius: var(--md-shape-corner-extra-large);
        border: 1px solid var(--outline-variant);
        overflow: hidden;
        transition: border-color var(--md-motion-duration-short4) var(--md-motion-easing-standard);
    }

        .admin-navbar .input-group:focus-within {
            border-color: var(--primary);
            box-shadow: 0 0 0 1px var(--primary);
        }

    .admin-navbar .input-group-text {
        background-color: transparent;
        border: none;
        padding: 8px 12px;
    }

    .admin-navbar .form-control {
        background-color: transparent;
        border: none;
        height: 40px;
        padding: 8px 12px;
        font-size: 14px;
    }

        .admin-navbar .form-control:focus {
            box-shadow: none;
            background-color: transparent;
        }

    /* Icon Buttons */
    .admin-navbar .btn-link {
        width: 40px;
        height: 40px;
        border-radius: 50%;
        padding: 0;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        color: var(--on-surface-variant);
        transition: background-color var(--md-motion-duration-short4) var(--md-motion-easing-standard);
    }

        .admin-navbar .btn-link:hover {
            background-color: rgba(0, 0, 0, 0.08);
        }

    .admin-navbar .material-symbols-rounded {
        font-size: 24px;
    }

/* User dropdown */
.user-dropdown {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 12px 4px 4px;
    border-radius: var(--md-shape-corner-extra-large);
    transition: background-color var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

    .user-dropdown:hover {
        background-color: rgba(0, 0, 0, 0.08);
    }

.user-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    object-fit: cover;
}

/* Dropdown Menu - Material Design */
.dropdown-menu {
    border-radius: var(--md-shape-corner-small);
    box-shadow: var(--md-elevation-2);
    border: 1px solid var(--outline-variant);
    padding: 8px;
    margin-top: 4px;
}

.dropdown-item {
    border-radius: var(--md-shape-corner-extra-small);
    padding: 8px 12px;
    font-size: 14px;
    line-height: 20px;
    letter-spacing: 0.1px;
    display: flex;
    align-items: center;
    gap: 12px;
    transition: background-color var(--md-motion-duration-short4) var(--md-motion-easing-standard);
}

    .dropdown-item:hover {
        background-color: rgba(30, 187, 240, 0.08);
    }

    .dropdown-item .material-symbols-rounded {
        font-size: 20px;
    }

.dropdown-header {
    font-size: 11px;
    font-weight: 500;
    line-height: 16px;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: var(--on-surface-variant);
    padding: 8px 12px;
}

.dropdown-divider {
    margin: 8px 0;
    border-top-color: var(--outline-variant);
}

/* ========================================================================
   5. Page Content - Material Design Surface
   ======================================================================== */
.page-content {
    flex: 1;
    padding: 24px;
    background-color: var(--bg-body);
}

.page-header {
    margin-bottom: 24px;
}

.page-title {
    font-size: 28px;
    font-weight: 400;
    line-height: 36px;
    letter-spacing: 0px;
    margin-bottom: 8px;
    color: var(--on-surface);
}

/* ========================================================================
   6. Material Design 3 - Stats Cards
   ======================================================================== */
.stats-card {
    border-radius: var(--md-shape-corner-medium);
    padding: 20px;
    background: var(--md-surface-container-low);
    border: 1px solid var(--outline-variant);
    box-shadow: var(--md-elevation-0);
    transition: box-shadow var(--md-motion-duration-medium2) var(--md-motion-easing-emphasized), transform var(--md-motion-duration-medium2) var(--md-motion-easing-emphasized);
}

    .stats-card:hover {
        transform: translateY(-2px);
        box-shadow: var(--md-elevation-2);
    }

.stats-icon {
    width: 56px;
    height: 56px;
    border-radius: var(--md-shape-corner-medium);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    background-color: var(--primary-container);
    color: var(--on-primary-container);
}

    .stats-icon .material-symbols-rounded {
        font-size: 28px;
    }

.stats-value {
    font-size: 32px;
    font-weight: 400;
    line-height: 40px;
    color: var(--on-surface);
    margin: 12px 0 4px 0;
}

.stats-label {
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
    letter-spacing: 0.1px;
    color: var(--on-surface-variant);
}

.stats-change {
    font-size: 12px;
    font-weight: 500;
    line-height: 16px;
    letter-spacing: 0.5px;
    margin-top: 8px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

    .stats-change.positive {
        color: var(--success-color);
    }

    .stats-change.negative {
        color: var(--error);
    }

/* ========================================================================
   7. Material Design 3 - Breadcrumbs
   ======================================================================== */
.breadcrumb {
    background-color: transparent;
    padding: 0;
    margin-bottom: 12px;
}

.breadcrumb-item {
    font-size: 14px;
    line-height: 20px;
    letter-spacing: 0.25px;
}

    .breadcrumb-item + .breadcrumb-item::before {
        color: var(--on-surface-variant);
    }

    .breadcrumb-item.active {
        color: var(--on-surface);
        font-weight: 500;
    }

/* ========================================================================
   8. Action Buttons Area
   ======================================================================== */
.page-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* ========================================================================
   9. Responsive Design - Material Design Breakpoints
   ======================================================================== */
@media (max-width: 991.98px) {
    .sidebar {
        margin-left: -260px;
    }

        .sidebar.show {
            margin-left: 0;
            box-shadow: var(--md-elevation-3);
        }

    .main-content {
        margin-left: 0;
    }

    .sidebar-overlay {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: rgba(0, 0, 0, 0.5);
        z-index: 999;
        display: none;
        transition: opacity var(--md-motion-duration-medium2) var(--md-motion-easing-standard);
    }

        .sidebar-overlay.show {
            display: block;
            animation: fadeIn var(--md-motion-duration-medium2) var(--md-motion-easing-standard);
        }
}

@media (max-width: 767.98px) {
    .page-content {
        padding: 16px;
    }

    .page-title {
        font-size: 24px;
        line-height: 32px;
    }

    .stats-card {
        margin-bottom: 16px;
    }

    .stats-icon {
        width: 48px;
        height: 48px;
    }

    .stats-value {
        font-size: 28px;
        line-height: 36px;
    }
}

/* ========================================================================
   10. Material Design Loading States
   ======================================================================== */
.loading-spinner {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 9999;
}

#loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(255, 255, 255, 0.9);
    z-index: 9998;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeIn var(--md-motion-duration-medium2) var(--md-motion-easing-standard);
}

/* Material Design Progress Indicator */
.progress {
    height: 4px;
    border-radius: var(--md-shape-corner-extra-large);
    background-color: var(--md-surface-container-highest);
    overflow: hidden;
}

.progress-bar {
    background-color: var(--primary);
    transition: width var(--md-motion-duration-medium4) var(--md-motion-easing-emphasized);
}

/* ========================================================================
   11. Material Design Animations
   ======================================================================== */
@keyframes slideInFromLeft {
    from {
        transform: translateX(-100%);
    }

    to {
        transform: translateX(0);
    }
}

@keyframes slideOutToLeft {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(-100%);
    }
}

.sidebar.show {
    animation: slideInFromLeft var(--md-motion-duration-medium4) var(--md-motion-easing-emphasized);
}
