/*
 * ==========================================================================
 * COMPONENTS.CSS - Component Bundle (rem-based for density scaling)
 * ==========================================================================
 * This file imports all component CSS files for easy inclusion in pages.
 *
 * Usage in templates:
 *   <link rel="stylesheet" href="/assets/css/pyeza.css?v={{.CacheVersion}}">
 *
 * Structure:
 * - Common components: imported from packages/components/
 * - App-specific components: local components/ folder
 *
 * All dimensions use rem units for density control via root font-size.
 * ==========================================================================
 */

/* ========================================
   COMMON COMPONENTS (from packages)
   ======================================== */
@import url('components/button.css');
@import url('components/badge.css');
@import url('components/card.css');
@import url('components/carousel.css');
@import url('components/table.css');
@import url('components/pagination.css');
@import url('components/form.css');
@import url('components/dialog.css');

/* ========================================
   APP-SPECIFIC COMPONENTS (local)
   ======================================== */
@import url('components/stat-card.css');
@import url('components/tabs.css');
@import url('components/toggle.css');
@import url('components/dropdown.css');
@import url('components/empty-state.css');
@import url('components/chip.css');
@import url('components/help-pane.css');
@import url('components/sheet.css');
@import url('components/notes-journal.css');
@import url('components/multi-select.css');
@import url('components/popover.css');
@import url('components/password.css');
@import url('components/toast.css');
@import url('components/alert.css');
@import url('components/avatar.css');
@import url('components/skeleton.css');
@import url('components/spinner.css');

/* ========================================
   LOADING INDICATOR (inline to avoid @import issues)
   ======================================== */

.htmx-indicator {
    display: none;
}

.htmx-indicator.htmx-request {
    display: block;
}

/* Position the main content loading indicator as overlay */
#main-content-loading {
    position: absolute;
    top: var(--header-height);
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--bg-base, #F9FAFB);
    z-index: 40;
    transition: right var(--transition-speed) cubic-bezier(0.4, 0, 0.2, 1);
}

/* Adjust loading indicator when help pane is open */
body.help-pane-open #main-content-loading {
    right: var(--help-pane-width, 360px);
}

@media (max-width: 1200px) {
    body.help-pane-open #main-content-loading {
        right: 320px;
    }
}

@media (max-width: 768px) {
    body.help-pane-open #main-content-loading {
        right: 0;
    }
}

#main-content-loading .loading-spinner {
    height: 100%;
    min-height: 100%;
}

.loading-spinner {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    width: 100%;
    min-height: 200px;
}

.spinner {
    width: 40px;
    height: 40px;
    border: 3px solid var(--border, #E8EAED);
    border-top-color: var(--accent-primary, var(--accent-terracotta, #C4654A));
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

.spinner.sm {
    width: 24px;
    height: 24px;
    border-width: 2px;
}

.spinner.md {
    width: 32px;
    height: 32px;
    border-width: 2.5px;
}

.spinner.lg {
    width: 48px;
    height: 48px;
    border-width: 3.5px;
}

.loading-inline {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 0;
    min-height: auto;
}

.loading-inline .spinner {
    width: 18px;
    height: 18px;
    border-width: 2px;
}

.loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.8);
    backdrop-filter: blur(2px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 9999;
}

@media (prefers-color-scheme: dark) {
    .loading-overlay {
        background: rgba(0, 0, 0, 0.7);
    }
}

@media (max-width: 768px) {
    .loading-spinner {
        padding: 40px 20px;
        min-height: 150px;
    }
}
