﻿/* ============================================================
   26. RESPONSIVE BREAKPOINTS
   ============================================================ */

/* Tablet: <= 1024px */
@media (max-width: 1024px) {
    :root {
        --sidebar-width: 240px;
    }

    .page-wrapper {
        padding: var(--space-4);
    }
}

/* Mobile: <= 768px */
@media (max-width: 768px) {
    /* Sidebar collapses off-screen */
    .sidebar {
        transform: translateX(-100%);
    }

    .sidebar.open {
        transform: translateX(0);
    }

    .main-content {
        margin-left: 0;
    }

    .btn-sidebar-toggle {
        display: inline-flex;
    }

    .main-header {
        padding: 0 var(--space-4);
    }

    .page-wrapper {
        padding: var(--space-3);
    }

    /* Stack form rows */
    .form-row {
        grid-template-columns: 1fr;
    }

    /* Full-width modals */
    .modal-container {
        max-width: 100%;
        margin: var(--space-2);
        max-height: calc(100vh - var(--space-4));
    }

    /* Toast position */
    .toast-container {
        right: var(--space-2);
        left: var(--space-2);
        max-width: 100%;
    }

    /* Metric row stacks */
    .metric-row {
        grid-template-columns: 1fr;
    }

    /* Page header stacks */
    .page-header {
        flex-direction: column;
        align-items: stretch;
    }

    /* Vendor grid â€” single column on mobile */
    .vendor-grid {
        grid-template-columns: 1fr;
    }

    /* Filter bar stacks */
    .filter-bar {
        flex-direction: column;
        align-items: stretch;
    }

    .filter-group {
        min-width: 100%;
    }

    /* Tab nav scrolls */
    .tab-nav {
        gap: 0;
    }

    .tab-btn {
        padding: var(--space-2) var(--space-3);
        font-size: var(--text-xs);
    }
}

/* Small mobile: <= 480px */
@media (max-width: 480px) {
    .login-card {
        padding: var(--space-6);
    }

    .btn-lg {
        padding: var(--space-2) var(--space-4);
        font-size: var(--text-sm);
    }

    /* Vendor stats â€” stack on tiny screens */
    .vendor-stats {
        grid-template-columns: 1fr;
        gap: var(--space-2);
    }

    /* Metric cards â€” smaller padding */
    .metric-card {
        padding: var(--space-3) var(--space-4);
    }

    .metric-card-value {
        font-size: var(--text-lg);
    }

    /* Quick actions wrap */
    .chart-container {
        gap: 4px;
        height: 180px;
    }

    .chart-bar-value {
        font-size: 9px;
    }

    .chart-bar-label {
        font-size: 10px;
    }

    .chart-filter-btn {
        padding: 2px var(--space-2);
        font-size: 10px;
    }
}


/* ================================================================
   27. Sync Status & Offline Indicators
   ================================================================ */

/* Sync badge in header */
.sync-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-1) var(--space-3);
    border-radius: var(--border-radius-full);
    font-size: var(--text-xs);
    font-weight: 600;
    line-height: 1;
}

.sync-badge.offline {
    background-color: #fef3c7;
    color: #92400e;
    border: 1px solid #f59e0b;
}

.sync-badge.syncing {
    background-color: #dbeafe;
    color: #1e40af;
    border: 1px solid #3b82f6;
}

/* Animated dot indicator */
.sync-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.sync-dot.offline {
    background-color: #f59e0b;
}

.sync-dot.syncing {
    background-color: #3b82f6;
    animation: sync-pulse 1.2s ease-in-out infinite;
}

@keyframes sync-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(0.75); }
}

/* Pending badge on shift banner */
.pending-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: var(--border-radius-full);
    font-size: var(--text-xs);
    font-weight: 600;
    background-color: #fef3c7;
    color: #92400e;
    border: 1px solid #f59e0b;
    line-height: 1.4;
}

/* Shift banner right-side grouping */
.shift-banner-right {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

/* ── Offline Banner (top-center, below header) ── */
.offline-banner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 10px 20px;
    background-color: #fef3c7;
    color: #92400e;
    border-bottom: 2px solid #f59e0b;
    font-size: var(--text-sm);
    font-weight: 500;
    text-align: center;
    line-height: 1.4;
    animation: offline-slide-in 0.3s ease-out;
}

.offline-banner svg {
    flex-shrink: 0;
    color: #d97706;
}

@keyframes offline-slide-in {
    from {
        transform: translateY(-100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

