/* Stats Components - ROA2WEB Dashboard */ /* Stats Grid Layout */ .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-lg); margin-bottom: var(--space-xl); } /* Stats Cards */ .stats-card { background: var(--color-bg); border: 1px solid var(--color-border); border-radius: var(--card-radius); padding: var(--space-lg); box-shadow: var(--shadow-sm); transition: all var(--transition-fast); position: relative; overflow: hidden; } .stats-card:hover { box-shadow: var(--shadow-md); border-color: var(--color-border-dark); transform: translateY(-2px); } /* Stats Card Header */ .stats-card-header { display: flex; align-items: center; gap: var(--space-sm); margin-bottom: var(--space-md); padding-bottom: var(--space-sm); border-bottom: 1px solid var(--color-border-light); } .stats-card-header i { font-size: var(--text-xl); width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: var(--radius-md); background: var(--color-bg-secondary); } .stats-card-header h3 { font-size: var(--text-lg); font-weight: var(--font-semibold); color: var(--color-text); margin: 0; } /* Stats Details */ .stats-details { display: flex; flex-direction: column; gap: var(--space-sm); } .stat-row { display: flex; justify-content: space-between; align-items: center; font-size: var(--text-sm); padding: var(--space-xs) 0; min-height: 24px; } .stat-row span:first-child { color: var(--color-text-secondary); font-weight: var(--font-medium); } .stat-row span:last-child { color: var(--color-text); font-weight: var(--font-medium); text-align: right; } .stat-highlight { background: var(--color-bg-secondary); padding: var(--space-sm); border-radius: var(--radius-sm); font-weight: var(--font-semibold); margin: var(--space-sm) 0; border-left: 3px solid var(--color-primary); } .stat-warning { color: var(--color-error); font-weight: var(--font-semibold); } .stat-warning span:first-child { color: var(--color-error); } .stat-success { color: var(--color-success); font-weight: var(--font-semibold); } .stat-success span:first-child { color: var(--color-success); } /* Treasury Specific Styling */ .treasury-content { display: flex; flex-direction: column; gap: var(--space-md); } .treasury-section { display: flex; flex-direction: column; gap: var(--space-xs); } .treasury-section-title { font-size: var(--text-sm); font-weight: var(--font-semibold); color: var(--color-text); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: var(--space-xs); padding-bottom: var(--space-xs); border-bottom: 1px solid var(--color-border); } .account-item { display: flex; justify-content: space-between; align-items: center; font-size: var(--text-xs); padding: var(--space-xs) 0; } .account-name { color: var(--color-text-secondary); font-weight: var(--font-medium); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .account-balance { color: var(--color-text); font-weight: var(--font-semibold); flex-shrink: 0; margin-left: var(--space-sm); } .treasury-totals { margin-top: var(--space-sm); padding-top: var(--space-sm); border-top: 1px solid var(--color-border); background: var(--color-bg-muted); margin-left: calc(-1 * var(--space-lg)); margin-right: calc(-1 * var(--space-lg)); margin-bottom: calc(-1 * var(--space-lg)); padding-left: var(--space-lg); padding-right: var(--space-lg); padding-bottom: var(--space-lg); } .total-item { display: flex; justify-content: space-between; align-items: center; font-size: var(--text-sm); padding: var(--space-xs) 0; color: var(--color-text); font-weight: var(--font-semibold); } /* KPI Large Display */ .kpi-large-card { background: var(--color-bg); border: 1px solid var(--color-border); border-radius: var(--card-radius); padding: var(--space-xl); text-align: center; box-shadow: var(--shadow-sm); transition: all var(--transition-fast); } .kpi-large-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); } .kpi-large-value { font-size: var(--text-4xl); font-weight: var(--font-bold); color: var(--color-text); line-height: var(--leading-tight); margin-bottom: var(--space-sm); } .kpi-large-label { font-size: var(--text-base); font-weight: var(--font-medium); color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.05em; } .kpi-large-change { display: flex; align-items: center; justify-content: center; gap: var(--space-xs); font-size: var(--text-sm); font-weight: var(--font-medium); margin-top: var(--space-md); } .kpi-large-change.positive { color: var(--color-success); } .kpi-large-change.negative { color: var(--color-error); } /* Mini Stats for V2 Dashboard */ .mini-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, 1fr); gap: var(--space-md); } .mini-stat-card { background: var(--color-bg); border: 1px solid var(--color-border); border-radius: var(--radius-sm); padding: var(--space-sm); text-align: center; transition: all var(--transition-fast); position: relative; overflow: hidden; } .mini-stat-card:hover { box-shadow: var(--shadow-md); border-color: var(--color-primary); transform: scale(1.02); } .mini-stat-icon { width: 16px; height: 16px; margin-bottom: var(--space-xs); opacity: 0.7; } .mini-stat-value { font-size: var(--text-base); font-weight: var(--font-bold); line-height: var(--leading-tight); color: var(--color-text); margin-bottom: var(--space-xs); } .mini-stat-label { font-size: var(--text-xs); color: var(--color-text-secondary); line-height: var(--leading-tight); } /* Heat Map Colors for Mini Cards */ .mini-stat-card.heat-low { background: var(--green-50); border-color: var(--color-success); } .mini-stat-card.heat-low .mini-stat-value { color: var(--color-success); } .mini-stat-card.heat-medium { background: var(--yellow-50); border-color: var(--color-warning); } .mini-stat-card.heat-medium .mini-stat-value { color: var(--color-warning); } .mini-stat-card.heat-high { background: var(--red-50); border-color: var(--color-error); } .mini-stat-card.heat-high .mini-stat-value { color: var(--color-error); } /* Quick Actions Grid */ .quick-actions-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space-md); } /* Loading Spinner for Stats */ .stats-loading { display: flex; align-items: center; justify-content: center; padding: var(--space-xl); color: var(--color-text-secondary); } .stats-loading-spinner { width: 24px; height: 24px; border: 2px solid var(--color-border); border-top-color: var(--color-primary); border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: var(--space-sm); } /* Stats Card Variants */ .stats-card.clients { border-left-color: var(--blue-500); } .stats-card.clients .stats-card-header i { color: var(--blue-500); background: var(--blue-50); } .stats-card.suppliers { border-left-color: var(--yellow-500); } .stats-card.suppliers .stats-card-header i { color: var(--yellow-600); background: var(--yellow-50); } .stats-card.treasury { border-left-color: var(--green-500); } .stats-card.treasury .stats-card-header i { color: var(--green-500); background: var(--green-50); } /* Responsive Adjustments */ @media (max-width: 1024px) { .stats-grid { grid-template-columns: repeat(2, 1fr); } .mini-stats-grid { grid-template-columns: repeat(3, 1fr); } } @media (max-width: 768px) { .stats-grid { grid-template-columns: 1fr; gap: var(--space-md); } .stats-card { padding: var(--space-md); } .treasury-totals { margin-left: calc(-1 * var(--space-md)); margin-right: calc(-1 * var(--space-md)); margin-bottom: calc(-1 * var(--space-md)); padding-left: var(--space-md); padding-right: var(--space-md); padding-bottom: var(--space-md); } .mini-stats-grid { grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(6, 1fr); } .kpi-large-value { font-size: var(--text-3xl); } .quick-actions-grid { grid-template-columns: 1fr; } } @media (max-width: 480px) { .mini-stats-grid { grid-template-columns: 1fr; grid-template-rows: repeat(12, auto); } .mini-stat-card { padding: var(--space-xs); } .mini-stat-value { font-size: var(--text-sm); } .stats-card-header { flex-direction: column; text-align: center; gap: var(--space-xs); } .stat-row { flex-direction: column; align-items: flex-start; gap: var(--space-xs); } .stat-row span:last-child { text-align: left; } } /* ===== Summary Stats Inline ===== */ /* Compact horizontal stats display for page summaries */ /* US-610: Reduced margin-bottom from var(--space-md) to var(--space-sm) to eliminate excessive gap between filters and table */ .summary-stats-inline { display: flex; gap: var(--space-xl); justify-content: flex-end; margin-bottom: var(--space-sm); padding: var(--space-sm) var(--space-md); background-color: var(--color-bg-secondary); border-radius: var(--radius-md); border: 1px solid var(--color-border); } .summary-stats-inline .stat-item { display: flex; align-items: center; gap: var(--space-sm); } .summary-stats-inline .stat-label { font-size: var(--text-sm); color: var(--color-text-secondary); } .summary-stats-inline .stat-value { font-size: var(--text-sm); font-weight: var(--font-semibold); font-variant-numeric: tabular-nums; } .summary-stats-inline .stat-value.positive, .summary-stats-inline .stat-value.incasari { color: var(--color-success); } .summary-stats-inline .stat-value.negative, .summary-stats-inline .stat-value.plati { color: var(--color-error); } /* Responsive: Stack on mobile */ @media (max-width: 768px) { .summary-stats-inline { flex-direction: column; gap: var(--space-sm); align-items: flex-end; } } /* Print Styles */ @media print { .stats-card { break-inside: avoid; box-shadow: none; border: 1px solid #ccc; } .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; } .summary-stats-inline { border: 1px solid #ccc; background: #f5f5f5; } }