/* site.css — Main application stylesheet
 * Import order: component files first, then Bootstrap overrides, then global rules.
 * All colours must use var(--cr-*) — never hardcode hex values. */

@import url('components/sidebar.css');
@import url('components/stat-card.css');
@import url('components/data-table.css');
@import url('components/status-badge.css');

/* ── Global ─────────────────────────────────────────────────────────────────── */

/* Root-level font-size: drives every `rem` in Bootstrap, Flatly and component CSS.
 * Changing `AppTheme.FontSizeBase` in appsettings.json now scales the entire UI
 * proportionally, not just raw body text. */
html {
    font-size: var(--cr-font-size-base);
}

body {
    font-family:      var(--cr-font-family);
    background-color: var(--cr-content-bg);
}

/* ── Layout shell ────────────────────────────────────────────────────────────── */

.cr-layout {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.cr-layout__wrapper {
    display: flex;
    flex: 1;
    overflow: hidden;
}

.cr-layout__content {
    flex: 1;
    overflow-y: auto;
    min-width: 0;
}

.cr-layout__body {
    padding: 0;
}

/* ── Navbar ──────────────────────────────────────────────────────────────────── */

.cr-navbar {
    background-color: var(--cr-navbar-bg);
    color:            var(--cr-navbar-text);
    flex-shrink: 0;
    z-index: 1030;
}

.cr-navbar .navbar-brand {
    color: var(--cr-navbar-text);
}

.cr-navbar .nav-link {
    color: var(--cr-navbar-text);
    opacity: 0.85;
    border-radius: var(--cr-border-radius);
    padding: 0.375rem 0.625rem;
}

.cr-navbar .nav-link:hover,
.cr-navbar .nav-link:focus {
    color: var(--cr-navbar-text);
    opacity: 1;
    background-color: rgba(255, 255, 255, 0.1);
}

.cr-navbar .navbar-toggler {
    color: var(--cr-navbar-text);
    border-color: rgba(255, 255, 255, 0.2);
}

/* ── Page header block ───────────────────────────────────────────────────────── */

.cr-page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.25rem 1.5rem 0.5rem;
    background-color: var(--cr-card-bg);
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    gap: 1rem;
    flex-wrap: wrap;
}

.cr-page-header__title {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
    color: var(--cr-primary);
}

.cr-page-header__subtitle {
    font-size: 0.875rem;
}

.cr-breadcrumb-nav {
    padding: 0.5rem 1.5rem;
    background-color: var(--cr-card-bg);
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.cr-breadcrumb-nav .breadcrumb {
    margin: 0;
    font-size: 0.8125rem;
}

/* ── Bootstrap colour overrides (uses !important on colour only) ──────────────── */

.btn-primary {
    background-color: var(--cr-primary)       !important;
    border-color:     var(--cr-primary)       !important;
}

.btn-primary:hover,
.btn-primary:focus {
    background-color: var(--cr-primary-hover) !important;
    border-color:     var(--cr-primary-hover) !important;
}

.btn-success {
    background-color: var(--cr-success)       !important;
    border-color:     var(--cr-success)       !important;
}

.btn-danger {
    background-color: var(--cr-danger)        !important;
    border-color:     var(--cr-danger)        !important;
}

.btn-warning {
    background-color: var(--cr-warning)       !important;
    border-color:     var(--cr-warning)       !important;
}

.btn-info {
    background-color: var(--cr-info)          !important;
    border-color:     var(--cr-info)          !important;
}

.btn-outline-primary {
    color:            var(--cr-primary)       !important;
    border-color:     var(--cr-primary)       !important;
}

.btn-outline-primary:hover {
    background-color: var(--cr-primary)       !important;
    color: #fff                               !important;
}

.text-primary         { color:            var(--cr-primary)  !important; }
.bg-primary           { background-color: var(--cr-primary)  !important; }
.border-primary       { border-color:     var(--cr-primary)  !important; }

.nav-link.active      { color:            var(--cr-accent)   !important; }

.page-link:hover,
.page-item.active .page-link {
    background-color: var(--cr-primary) !important;
    border-color:     var(--cr-primary) !important;
}

/* ── Cards ───────────────────────────────────────────────────────────────────── */

.card {
    background-color: var(--cr-card-bg);
    border-radius:    var(--cr-border-radius);
    border-color:     rgba(0, 0, 0, 0.08);
}

/* ── Empty state ─────────────────────────────────────────────────────────────── */

.cr-empty-state__icon {
    font-size: 3rem;
    color: var(--cr-sidebar-active);
    opacity: 0.4;
}

/* ── Logo mark ───────────────────────────────────────────────────────────────── */

.cr-logo-mark {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.18));
}

.cr-logo-text__name {
    font-size: 1.05rem;
    letter-spacing: 0.01em;
    color: var(--cr-navbar-text);
}

/* ── User avatar pill ────────────────────────────────────────────────────────── */

.cr-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.875rem;
    height: 1.875rem;
    border-radius: 50%;
    background-color: var(--cr-accent);
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
    flex-shrink: 0;
    line-height: 1;
}

.cr-avatar--lg {
    width: 2.25rem;
    height: 2.25rem;
    font-size: 0.9rem;
}

.cr-user-pill { border-radius: 2rem; padding: 0.25rem 0.5rem !important; }
.cr-user-pill:hover { background-color: rgba(255,255,255,0.1); }

/* ── Auth pages (login, access denied) ───────────────────────────────────────── */

.cr-auth-wrapper {
    min-height: calc(100vh - 4rem);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
}

.cr-auth-card {
    width: 100%;
    max-width: 28rem;
    border: 1px solid rgba(0, 0, 0, 0.06);
}

.cr-auth-icon {
    font-size: 3rem;
    color: var(--cr-warning);
    opacity: 0.85;
}

.cr-auth-divider {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.cr-auth-divider::before,
.cr-auth-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background-color: rgba(0, 0, 0, 0.08);
}

.cr-layout--no-sidebar .cr-layout__content { width: 100%; }

/* ── Demo user rows on the login card ────────────────────────────────────── */

.cr-demo-user-btn {
    transition: background-color 0.15s ease, border-color 0.15s ease;
}

.cr-demo-user-btn:hover,
.cr-demo-user-btn:focus {
    background-color: var(--cr-content-bg);
    border-color: rgba(0, 0, 0, 0.15);
}

.cr-demo-user-btn__email {
    font-size: 0.75rem;
}

/* ── Form sections (reusable for create/edit pages) ──────────────────────────── */

.cr-form-section { margin-bottom: 1rem; }

.cr-form-section__header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding-bottom: 0.5rem;
    margin-bottom: 0.75rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    color: var(--cr-primary);
    font-weight: 600;
}

.cr-form-section__header i { color: var(--cr-accent); }

/* ── Utilities ───────────────────────────────────────────────────────────────── */

.min-w-0 { min-width: 0; }

@media (max-width: 991.98px) {
    .cr-navbar .navbar-collapse {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        padding: 0.5rem;
    }
    .cr-navbar .navbar-nav {
        width: 100%;
        justify-content: flex-start;
        gap: 0.5rem;
    }
    .cr-navbar .nav-item {
        width: 100%;
        text-align: left;
        margin-bottom: 0.5rem;
    }
    .cr-navbar .nav-link {
        display: flex;
        align-items: center;
        justify-content: flex-start;
        color: var(--cr-navbar-text);
        opacity: 1;
        border-radius: 0.25rem;
        background-color: rgba(255, 255, 255, 0.1);
    }
    .cr-navbar .nav-link span {
        display: inline;
        margin-left: 0.5rem;
    }
    .cr-navbar .nav-link i {
        margin-right: 0.5rem;
    }
}
