/**
 * CRAPPER TRACKER LAYOUT SYSTEM
 * Containers, grids, and page structure
 */

/* ========================================
   CONTAINERS
   ======================================== */

/* Main header (branded) */
header {
    background: var(--primary-gradient);
    color: var(--white);
    padding: var(--space-xl) var(--space-lg);
    position: relative;
    box-shadow: var(--shadow-lg);
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100px;
}

.header-brand {
    display: flex;
    align-items: center;
    gap: var(--space-lg);
}

.brand-icon {
    flex-shrink: 0;
    animation: float 3s ease-in-out infinite;
}

@keyframes float {
    0%, 100% {
        transform: translateY(0px);
    }
    50% {
        transform: translateY(-8px);
    }
}

.brand-text {
    text-align: left;
}

.brand-text h1 {
    font-size: var(--font-size-3xl);
    margin: 0;
    font-weight: var(--font-weight-bold);
    letter-spacing: -0.02em;
    text-shadow: 0 2px 8px rgba(0,0,0,0.2);
}

.rotating-tagline {
    margin: var(--space-xs) 0 0 0;
    opacity: 0.95;
    font-size: var(--font-size-base);
    font-style: italic;
    font-weight: var(--font-weight-medium);
    transition: opacity 0.3s ease;
}

.rotating-tagline.fade {
    opacity: 0;
}

.user-info {
    position: absolute;
    bottom: var(--space-md);
    right: var(--space-lg);
    background: rgba(255,255,255,0.15);
    backdrop-filter: blur(10px);
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius-md);
    display: flex;
    gap: var(--space-sm);
    align-items: center;
    border: 1px solid rgba(255,255,255,0.2);
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

.user-info span {
    color: var(--white);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
}

.user-info button {
    background: var(--white);
    color: var(--primary);
    border: none;
    padding: var(--space-sm) var(--space-md);
    border-radius: var(--radius-md);
    cursor: pointer;
    font-weight: var(--font-weight-semibold);
    font-size: var(--font-size-sm);
    transition: all var(--transition-fast);
}

.user-info button:hover {
    background: var(--gray-100);
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.container {
    width: 100%;
    max-width: var(--container-xl);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--space-lg);
    padding-right: var(--space-lg);
}

.container--sm {
    max-width: var(--container-sm);
}

.container--md {
    max-width: var(--container-md);
}

.container--lg {
    max-width: var(--container-lg);
}

.container--2xl {
    max-width: var(--container-2xl);
}

/* Admin-specific container */
.admin-container {
    max-width: var(--container-2xl);
    margin: 0 auto;
    padding: var(--space-lg);
}

/* ========================================
   3-COLUMN LAYOUT (Main App Structure)
   Left sidebar + Map + Rating form/content
   ======================================== */

.content-3col {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: var(--space-lg);
    margin-top: var(--space-lg);
}

.left-sidebar {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

.center-column {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

/* ========================================
   GRID SYSTEMS
   ======================================== */

/* Stats Grid (for dashboard statistics) */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: var(--space-lg);
    margin-bottom: var(--space-2xl);
}

/* Generic responsive grid */
.grid {
    display: grid;
    gap: var(--space-lg);
}

.grid--2 {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.grid--3 {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

.grid--4 {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

/* Category Grid (for category distribution) */
.category-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--space-md);
    margin-top: var(--space-md);
}

/* ========================================
   FLEXBOX UTILITIES
   ======================================== */

.flex {
    display: flex;
}

.flex--column {
    flex-direction: column;
}

.flex--wrap {
    flex-wrap: wrap;
}

.flex--justify-start {
    justify-content: flex-start;
}

.flex--justify-center {
    justify-content: center;
}

.flex--justify-end {
    justify-content: flex-end;
}

.flex--justify-between {
    justify-content: space-between;
}

.flex--align-start {
    align-items: flex-start;
}

.flex--align-center {
    align-items: center;
}

.flex--align-end {
    align-items: flex-end;
}

.flex--gap-xs { gap: var(--space-xs); }
.flex--gap-sm { gap: var(--space-sm); }
.flex--gap-md { gap: var(--space-md); }
.flex--gap-lg { gap: var(--space-lg); }
.flex--gap-xl { gap: var(--space-xl); }

/* ========================================
   SECTIONS
   ======================================== */

.admin-section {
    background: var(--white);
    padding: var(--space-lg);
    border-radius: var(--radius-lg);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.12);
    border: 1px solid rgba(102, 126, 234, 0.08);
    margin-bottom: var(--space-2xl);
    transition: box-shadow var(--transition-base);
}

.admin-section:hover {
    box-shadow: 0 6px 16px rgba(102, 126, 234, 0.18);
}

.admin-section__header {
    color: var(--primary);
    margin-bottom: var(--space-lg);
    font-size: var(--font-size-xl);
    border-bottom: 2px solid var(--primary);
    padding-bottom: var(--space-md);
}

/* ========================================
   SPACING UTILITIES
   ======================================== */

.mb-xs { margin-bottom: var(--space-xs); }
.mb-sm { margin-bottom: var(--space-sm); }
.mb-md { margin-bottom: var(--space-md); }
.mb-lg { margin-bottom: var(--space-lg); }
.mb-xl { margin-bottom: var(--space-xl); }
.mb-2xl { margin-bottom: var(--space-2xl); }

.mt-xs { margin-top: var(--space-xs); }
.mt-sm { margin-top: var(--space-sm); }
.mt-md { margin-top: var(--space-md); }
.mt-lg { margin-top: var(--space-lg); }
.mt-xl { margin-top: var(--space-xl); }
.mt-2xl { margin-top: var(--space-2xl); }

.p-xs { padding: var(--space-xs); }
.p-sm { padding: var(--space-sm); }
.p-md { padding: var(--space-md); }
.p-lg { padding: var(--space-lg); }
.p-xl { padding: var(--space-xl); }
.p-2xl { padding: var(--space-2xl); }

/* ========================================
   RESPONSIVE UTILITIES
   ======================================== */

@media (max-width: 768px) {
    .admin-container {
        padding: var(--space-md);
    }

    .stats-grid {
        grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
        gap: var(--space-md);
    }

    .category-grid {
        grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    }

    /* Mobile header adjustments */
    header {
        padding: var(--space-lg) var(--space-md);
        min-height: 80px;
    }

    .header-brand {
        gap: var(--space-md);
    }

    .brand-icon svg {
        width: 36px;
        height: 36px;
    }

    .brand-text h1 {
        font-size: var(--font-size-xl);
    }

    .rotating-tagline {
        font-size: var(--font-size-sm);
    }
}

@media (max-width: 576px) {
    .stats-grid {
        grid-template-columns: 1fr 1fr;
        gap: var(--space-sm);
    }
    
    /* Even smaller stat cards on tiny screens */
    .stat-card {
        padding: var(--space-md);
    }
    
    .stat-card__icon {
        font-size: 32px;
    }
    
    .stat-card__value {
        font-size: var(--font-size-2xl);
    }
}

/* Very small phones */
@media (max-width: 400px) {
    .stats-grid {
        grid-template-columns: 1fr;
        gap: var(--space-sm);
    }
}
