.page { display: flex; flex-direction: column; gap: var(--space-6); } .pageHeader { display: flex; align-items: flex-end; justify-content: space-between; } .heading { font-size: var(--text-2xl); font-weight: 700; color: var(--color-text-primary); letter-spacing: -0.03em; } .total { font-size: var(--text-sm); color: var(--color-text-muted); margin-top: var(--space-1); } /* ── KPI Cards ─────────────────────────────────────────────────────────────── */ .kpiGrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space-4); margin-bottom: var(--space-2); } .kpiCard { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-1); } .kpiLabel { font-size: var(--text-xs); font-weight: 600; color: var(--color-text-muted); text-transform: uppercase; letter-spacing: 0.05em; } .kpiValue { font-size: var(--text-3xl); font-weight: 700; color: var(--color-text-primary); line-height: 1; } /* ── Filtros ───────────────────────────────────────────────────────────────── */ .filters { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; } /* ── Grid de tickets ───────────────────────────────────────────────────────── */ .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--space-4); } /* ── Skeleton ──────────────────────────────────────────────────────────────── */ .skeleton { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-3); overflow: hidden; } .skeletonLine { border-radius: var(--radius-sm); background: linear-gradient( 90deg, var(--color-surface-2) 25%, var(--color-border) 50%, var(--color-surface-2) 75% ); background-size: 200% 100%; animation: shimmer 1.5s infinite; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* ── Estado vazio ──────────────────────────────────────────────────────────── */ .emptyState { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-3); padding: var(--space-16) var(--space-8); text-align: center; } .emptyTitle { font-size: var(--text-lg); font-weight: 600; color: var(--color-text-secondary); } .emptyMessage { font-size: var(--text-sm); color: var(--color-text-muted); } /* ── Estado de erro ────────────────────────────────────────────────────────── */ .errorState { padding: var(--space-6); background: rgba(248, 113, 113, 0.08); border: 1px solid rgba(248, 113, 113, 0.25); border-radius: var(--radius-lg); text-align: center; } .errorTitle { font-weight: 600; color: var(--color-priority-critical); margin-bottom: var(--space-1); } .errorMessage { font-size: var(--text-sm); color: var(--color-text-secondary); } /* ── Paginação ─────────────────────────────────────────────────────────────── */ .pagination { display: flex; align-items: center; justify-content: center; gap: var(--space-4); padding-top: var(--space-4); border-top: 1px solid var(--color-border); } .pageInfo { font-size: var(--text-sm); color: var(--color-text-secondary); min-width: 120px; text-align: center; }