/* Self-contained colors + explicit dark-mode overrides, since Gin's dark mode (html.gin--dark-mode) is enabled by default here. */ #figli-dashboard-app { --figli-bg: #ffffff; --figli-bg-alt: #f5f6f8; --figli-text: #1a1a1a; --figli-text-light: #6b7280; --figli-border: #dcdee2; --figli-error: #c9312b; --figli-positive: #1a7f37; font-family: Inter, -apple-system, sans-serif; max-width: 1200px; margin: 1rem 0; color: var(--figli-text); } html.gin--dark-mode #figli-dashboard-app { --figli-bg: #232426; --figli-bg-alt: #2c2d30; --figli-text: #e8e9ea; --figli-text-light: #a1a5ab; --figli-border: #3d3e42; --figli-error: #ff6b6b; --figli-positive: #4ade80; } #figli-dashboard-app h2 { font-size: 1.1rem; font-weight: 600; margin: 0 0 0.25rem; color: var(--figli-text); } #figli-dashboard-app .figli-note { color: var(--figli-text-light); font-size: 0.8rem; margin-bottom: 1rem; } #figli-dashboard-app .figli-error { background: #fde8e8; border: 1px solid #f4a3a3; color: #7a1a1a; padding: 0.75rem 1rem; border-radius: 6px; } /* --- Summary cards --- */ #figli-dashboard-app .figli-summary-row { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 2rem; } #figli-dashboard-app .figli-summary-card { flex: 1 1 200px; background: var(--figli-bg-alt); border: 1px solid var(--figli-border); border-radius: 8px; padding: 0.85rem 1rem; } #figli-dashboard-app .figli-summary-label { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.02em; color: var(--figli-text-light); margin-bottom: 0.3rem; } #figli-dashboard-app .figli-summary-value { font-size: 1.4rem; font-weight: 700; font-variant-numeric: tabular-nums; } #figli-dashboard-app .figli-summary-value.is-positive { color: var(--figli-positive); } #figli-dashboard-app .figli-summary-value.is-negative { color: var(--figli-error); } /* --- Chart sections --- */ #figli-dashboard-app .figli-chart-section { background: var(--figli-bg); border: 1px solid var(--figli-border); border-radius: 8px; padding: 1.25rem 1.5rem 1.5rem; margin-bottom: 1.5rem; } /* --- Horizontal bar chart (solde par compte, par type, top clients) --- */ #figli-dashboard-app .figli-hbar-chart { display: flex; flex-direction: column; gap: 0.5rem; } #figli-dashboard-app .figli-hbar-row { display: grid; grid-template-columns: 11rem 1fr 7rem; align-items: center; gap: 0.75rem; } #figli-dashboard-app .figli-hbar-label { font-size: 0.82rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } #figli-dashboard-app .figli-hbar-track { position: relative; height: 0.9rem; background: var(--figli-bg-alt); border-radius: 4px; overflow: hidden; } #figli-dashboard-app .figli-hbar-track.is-diverging { overflow: visible; } #figli-dashboard-app .figli-hbar-zero { position: absolute; top: -2px; bottom: -2px; left: 50%; width: 1px; background: var(--figli-border); } #figli-dashboard-app .figli-hbar-fill { position: absolute; top: 0; bottom: 0; border-radius: 3px; min-width: 2px; } @media (prefers-reduced-motion: no-preference) { #figli-dashboard-app .figli-hbar-fill { transition: width 0.3s ease; } } #figli-dashboard-app .figli-hbar-value { font-size: 0.8rem; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; } /* --- Vertical bar chart (CA par année) --- */ #figli-dashboard-app .figli-vbar-chart { display: flex; align-items: flex-end; gap: 1rem; height: 12rem; padding-top: 1.5rem; } #figli-dashboard-app .figli-vbar-col { flex: 1; display: flex; flex-direction: column; align-items: center; height: 100%; } #figli-dashboard-app .figli-vbar-value { font-size: 0.75rem; font-weight: 600; margin-bottom: 0.3rem; white-space: nowrap; } #figli-dashboard-app .figli-vbar-track { flex: 1; width: 100%; display: flex; align-items: flex-end; } #figli-dashboard-app .figli-vbar-fill { width: 100%; background: var(--figli-positive); border-radius: 4px 4px 0 0; min-height: 2px; } @media (prefers-reduced-motion: no-preference) { #figli-dashboard-app .figli-vbar-fill { transition: height 0.3s ease; } } #figli-dashboard-app .figli-vbar-label { font-size: 0.78rem; color: var(--figli-text-light); margin-top: 0.4rem; } /* --- Trend grid (small multiples, one per compte) --- */ #figli-dashboard-app .figli-trend-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); gap: 1rem; } #figli-dashboard-app .figli-trend-card { background: var(--figli-bg-alt); border: 1px solid var(--figli-border); border-radius: 6px; padding: 0.75rem; } #figli-dashboard-app .figli-trend-title { font-size: 0.85rem; font-weight: 600; margin-bottom: 0.5rem; } #figli-dashboard-app .figli-mini-trend { display: flex; align-items: stretch; gap: 0.2rem; height: 4.5rem; } #figli-dashboard-app .figli-mini-bar-col { flex: 1; display: flex; flex-direction: column; align-items: center; } #figli-dashboard-app .figli-mini-bar-track { position: relative; flex: 1; width: 100%; } #figli-dashboard-app .figli-mini-bar-track::before { content: ''; position: absolute; top: 50%; left: 0; right: 0; height: 1px; background: var(--figli-border); } #figli-dashboard-app .figli-mini-bar-fill { position: absolute; left: 1px; right: 1px; border-radius: 2px; } #figli-dashboard-app .figli-mini-bar-fill.is-positive { bottom: 50%; background: var(--figli-positive); } #figli-dashboard-app .figli-mini-bar-fill.is-negative { top: 50%; background: var(--figli-error); } #figli-dashboard-app .figli-mini-bar-label { font-size: 0.65rem; color: var(--figli-text-light); margin-top: 0.25rem; }