diff --git a/src/App.css b/src/App.css index 6206ce5..09c0030 100644 --- a/src/App.css +++ b/src/App.css @@ -3,12 +3,12 @@ ======================================== */ :root { - --bg: #fafafa; + --bg: #f8fafc; --surface: #ffffff; - --border: #e5e5e5; - --text-primary: #171717; - --text-secondary: #525252; - --text-muted: #a3a3a3; + --border: #e2e8f0; + --text-primary: #0f172a; + --text-secondary: #334155; + --text-muted: #64748b; --accent: #2563eb; --primary: #2563eb; --accent-light: #dbeafe; @@ -17,8 +17,8 @@ --danger: #dc2626; --danger-light: #fee2e2; --gold: #b8860b; - --shadow-sm: 0 1px 2px rgba(0,0,0,0.04); - --shadow: 0 4px 12px rgba(0,0,0,0.05); + --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); + --shadow: 0 4px 12px rgba(0,0,0,0.08); --radius: 12px; } @@ -32,8 +32,10 @@ body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg); color: var(--text-primary); - line-height: 1.5; + font-size: 15px; + line-height: 1.6; -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } /* Loading & Error */ @@ -178,8 +180,8 @@ body { .nav-brand-text { font-family: 'DM Sans', 'Inter', -apple-system, sans-serif; - font-size: 1.125rem; - font-weight: 600; + font-size: 1.25rem; + font-weight: 700; color: #1e3a5f; letter-spacing: -0.02em; } @@ -230,9 +232,9 @@ body { .nav-link { color: var(--text-secondary); text-decoration: none; - padding: 10px 18px; + padding: 10px 20px; border-radius: 8px; - font-size: 0.875rem; + font-size: 0.9375rem; font-weight: 600; transition: all 0.2s; display: flex; @@ -314,15 +316,16 @@ body { } .page-title h1 { - font-size: 1.5rem; - font-weight: 600; + font-size: 1.75rem; + font-weight: 700; letter-spacing: -0.02em; - margin-bottom: 4px; + margin-bottom: 6px; + color: var(--text-primary); } .page-title p { - color: var(--text-muted); - font-size: 0.875rem; + color: var(--text-secondary); + font-size: 0.9375rem; } /* Page Title with Actions (Labels toggle) */ @@ -331,7 +334,7 @@ body { align-items: flex-start; justify-content: space-between; gap: 16px; - margin-bottom: 24px; + margin-bottom: 28px; } .page-title-with-actions .page-title { @@ -341,14 +344,14 @@ body { .toggle-with-label { display: flex; align-items: center; - gap: 6px; - margin-top: 4px; + gap: 8px; + margin-top: 6px; } .toggle-with-label .toggle-text { - font-size: 0.6875rem; + font-size: 0.8125rem; font-weight: 500; - color: var(--text-muted); + color: var(--text-secondary); } /* Filters - now uses .controls for consistency */ @@ -363,31 +366,32 @@ body { .stat-card { background: var(--surface); - padding: 24px; + padding: 28px; border-radius: var(--radius); border: 1px solid var(--border); + box-shadow: var(--shadow-sm); } .stat-card h3 { - font-size: 0.75rem; - font-weight: 500; + font-size: 0.8125rem; + font-weight: 600; color: var(--text-muted); text-transform: uppercase; - letter-spacing: 0.05em; - margin-bottom: 8px; + letter-spacing: 0.04em; + margin-bottom: 10px; } .stat-value { - font-size: 1.75rem; - font-weight: 600; + font-size: 2rem; + font-weight: 700; color: var(--text-primary); letter-spacing: -0.02em; } .stat-change { - font-size: 0.75rem; - font-weight: 500; - margin-top: 4px; + font-size: 0.875rem; + font-weight: 600; + margin-top: 6px; } .stat-change.positive { color: var(--success); } @@ -425,7 +429,7 @@ body { } .chart-card h2 { - font-size: 0.875rem; + font-size: 1rem; font-weight: 600; color: var(--text-primary); margin-bottom: 20px; @@ -463,24 +467,24 @@ body { table { width: 100%; border-collapse: collapse; - font-size: 0.8125rem; + font-size: 0.9375rem; } table th { - font-weight: 500; - font-size: 0.6875rem; + font-weight: 600; + font-size: 0.75rem; color: var(--text-muted); text-transform: uppercase; - letter-spacing: 0.05em; - padding: 12px; + letter-spacing: 0.04em; + padding: 14px 12px; text-align: right; - border-bottom: 1px solid var(--border); + border-bottom: 2px solid var(--border); } table th:first-child { text-align: left; } table td { - padding: 12px; + padding: 14px 12px; text-align: right; border-bottom: 1px solid var(--border); color: var(--text-secondary); @@ -492,12 +496,12 @@ table tbody tr:hover { background: var(--bg); } -.bold { font-weight: 600; color: var(--text-primary); } +.bold { font-weight: 700; color: var(--text-primary); } .muted { color: var(--text-muted); } -.primary { color: var(--accent); } -.purple { color: #7c3aed; } -.positive { color: var(--success); } -.negative { color: var(--danger); } +.primary { color: var(--accent); font-weight: 600; } +.purple { color: #7c3aed; font-weight: 600; } +.positive { color: var(--success); font-weight: 600; } +.negative { color: var(--danger); font-weight: 600; } /* Comparison Page */ .controls { @@ -526,20 +530,20 @@ table tbody tr:hover { } .controls h3 { - font-size: 0.75rem; - font-weight: 500; - color: var(--text-muted); + font-size: 0.8125rem; + font-weight: 600; + color: var(--text-secondary); text-transform: uppercase; - letter-spacing: 0.05em; + letter-spacing: 0.04em; } .controls-reset { background: transparent; border: 1px solid var(--border); - color: var(--text-muted); - padding: 4px 12px; + color: var(--text-secondary); + padding: 6px 14px; border-radius: 6px; - font-size: 0.75rem; + font-size: 0.8125rem; font-weight: 500; cursor: pointer; transition: all 0.2s; @@ -578,22 +582,22 @@ table tbody tr:hover { } .control-group label { - font-size: 0.6875rem; - font-weight: 500; - color: var(--text-muted); + font-size: 0.75rem; + font-weight: 600; + color: var(--text-secondary); text-transform: uppercase; - letter-spacing: 0.05em; + letter-spacing: 0.04em; } .control-group select, .control-group input[type="date"] { - padding: 10px 14px; + padding: 12px 16px; border: 1px solid var(--border); - border-radius: 6px; - font-size: 0.875rem; + border-radius: 8px; + font-size: 0.9375rem; background: var(--surface); color: var(--text-primary); - min-width: 150px; + min-width: 160px; } .control-group select:focus, @@ -630,16 +634,16 @@ table tbody tr:hover { display: flex; align-items: center; justify-content: center; - gap: 24px; + gap: 32px; background: var(--bg); - padding: 20px 32px; + padding: 24px 40px; border-radius: 12px; - margin-bottom: 24px; + margin-bottom: 28px; } .period-display-banner .period-box { text-align: center; - min-width: 180px; + min-width: 200px; } .period-display-banner .period-box.prev { @@ -651,30 +655,30 @@ table tbody tr:hover { } .period-display-banner .period-label { - font-size: 0.6875rem; + font-size: 0.75rem; font-weight: 600; text-transform: uppercase; - letter-spacing: 0.05em; + letter-spacing: 0.04em; color: var(--text-muted); - margin-bottom: 4px; + margin-bottom: 6px; } .period-display-banner .period-value { - font-size: 1.5rem; - font-weight: 600; - margin-bottom: 2px; + font-size: 1.75rem; + font-weight: 700; + margin-bottom: 4px; } .period-display-banner .period-dates { - font-size: 0.8125rem; - color: var(--text-muted); + font-size: 0.9375rem; + color: var(--text-secondary); } .period-display-banner .period-vs { - font-size: 0.875rem; - font-weight: 500; + font-size: 1rem; + font-weight: 600; color: var(--text-muted); - padding: 0 8px; + padding: 0 12px; } /* Comparison Metrics */ @@ -687,25 +691,26 @@ table tbody tr:hover { .metric-card { background: var(--surface); - padding: 20px; + padding: 24px; border-radius: var(--radius); border: 1px solid var(--border); + box-shadow: var(--shadow-sm); } .metric-card h4 { - font-size: 0.75rem; - font-weight: 500; - color: var(--text-muted); + font-size: 0.8125rem; + font-weight: 600; + color: var(--text-secondary); text-transform: uppercase; - letter-spacing: 0.05em; - margin-bottom: 12px; + letter-spacing: 0.04em; + margin-bottom: 14px; } .metric-values { display: flex; align-items: center; justify-content: space-between; - gap: 12px; + gap: 14px; } .metric-period { @@ -713,15 +718,15 @@ table tbody tr:hover { } .metric-period .year { - font-size: 0.625rem; + font-size: 0.75rem; color: var(--text-muted); text-transform: uppercase; - margin-bottom: 2px; + margin-bottom: 4px; } .metric-period .value { - font-size: 1.125rem; - font-weight: 600; + font-size: 1.25rem; + font-weight: 700; } .metric-period.previous .value { color: var(--text-muted); } @@ -729,19 +734,19 @@ table tbody tr:hover { .metric-change { text-align: center; - padding: 6px 10px; - border-radius: 6px; - min-width: 70px; + padding: 8px 12px; + border-radius: 8px; + min-width: 80px; } .metric-change .pct { - font-size: 0.875rem; - font-weight: 600; + font-size: 0.9375rem; + font-weight: 700; } .metric-change .abs { - font-size: 0.625rem; - opacity: 0.8; + font-size: 0.75rem; + opacity: 0.9; } .metric-change.positive { @@ -797,31 +802,32 @@ table tbody tr:hover { .toggle-switch { display: flex; background: var(--border); - padding: 2px; - border-radius: 12px; - gap: 0; + padding: 3px; + border-radius: 10px; + gap: 2px; } .toggle-switch button { border: none; background: transparent; color: var(--text-muted); - padding: 3px 10px; - border-radius: 10px; - font-size: 0.625rem; - font-weight: 500; + padding: 6px 14px; + border-radius: 8px; + font-size: 0.8125rem; + font-weight: 600; cursor: pointer; - transition: all 0.25s ease; + transition: all 0.2s ease; } .toggle-switch button:hover:not(.active) { color: var(--text-secondary); + background: rgba(0,0,0,0.03); } .toggle-switch button.active { background: var(--surface); color: var(--text-primary); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } /* Data Labels Toggle */ @@ -855,9 +861,9 @@ table tbody tr:hover { border: none; background: transparent; color: var(--text-muted); - padding: 6px 12px; + padding: 7px 14px; border-radius: 6px; - font-size: 0.75rem; + font-size: 0.8125rem; font-weight: 500; cursor: pointer; transition: all 0.2s;