/* Estilos base del sitio (layout, sidebar, header, login). */
:root { --sidebar-w: 240px; }

body { min-height: 100vh; }

/* Sidebar */
.sidebar {
    position: fixed; top: 0; bottom: 0; left: 0;
    width: var(--sidebar-w);
    padding: 1rem;
    overflow-y: auto;
    background: var(--bs-tertiary-bg);
    border-right: 1px solid var(--bs-border-color);
    z-index: 1040;
    transition: transform .2s ease;
}
.sidebar .brand {
    display: flex; align-items: center; gap: .5rem;
    margin-bottom: 1.25rem;
    font-weight: 600; font-size: 1.1rem;
    color: var(--bs-body-color); text-decoration: none;
}
.sidebar .nav-link {
    display: flex; align-items: center; gap: .6rem;
    padding: .55rem .75rem; border-radius: .4rem;
    color: var(--bs-body-color);
}
.sidebar .nav-link:hover { background: var(--bs-secondary-bg); }
.sidebar .nav-link.active { background: var(--bs-primary); color: #fff; }

/* Contenido principal */
.main-content {
    margin-left: var(--sidebar-w);
    min-height: 100vh;
    display: flex; flex-direction: column;
}
.main-header {
    position: sticky; top: 0; z-index: 1030;
    display: flex; align-items: center; gap: .75rem;
    padding: .6rem 1.25rem;
    background: var(--bs-body-bg);
    border-bottom: 1px solid var(--bs-border-color);
}
.content-wrapper { flex: 1; padding: 1.25rem; }
.main-footer {
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--bs-border-color);
    color: var(--bs-secondary-color);
}

.sidebar-toggle { display: none; }

/* Móvil / tablet */
@media (max-width: 991.98px) {
    .sidebar { transform: translateX(-100%); box-shadow: none; }
    .sidebar.open { transform: none; box-shadow: 0 0 2rem rgba(0, 0, 0, .35); }
    .main-content { margin-left: 0; }
    .sidebar-toggle { display: inline-flex; }
}

/* Login y páginas de error */
.auth-body {
    display: flex; align-items: center; justify-content: center;
    min-height: 100vh; padding: 1rem;
    background: var(--bs-tertiary-bg);
}
.auth-card { width: 100%; max-width: 400px; }
