Add mobile UX enhancements (scoped to @media queries)

Mobile-only improvements:
- Better touch targets (44px min for accessibility)
- Smoother carousel transitions
- Touch feedback animations
- Bottom nav active indicator
- Chart title padding for toggle overlap
- Period banner stacks vertically on mobile
- Table scroll hint gradient
- Small screen (≤375px) optimizations

All changes inside @media blocks, desktop unaffected
This commit is contained in:
fahed
2026-02-03 15:19:01 +03:00
parent 97afb8b3a7
commit 7ed7af314c

View File

@@ -1895,3 +1895,129 @@ table tbody tr:hover {
width: 100%;
height: 100%;
}
/* ========================================
MOBILE UX ENHANCEMENTS
All styles below ONLY apply to mobile
======================================== */
@media (max-width: 768px) {
/* Better touch targets (min 44px for accessibility) */
.mobile-nav-item {
min-height: 44px;
min-width: 56px;
}
.carousel-dot {
min-height: 32px;
}
.toggle-switch button {
min-height: 28px;
}
.control-group select,
.control-group input[type="date"] {
min-height: 44px;
}
/* Smoother carousel transitions */
.carousel-track {
transition: transform 350ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
/* Touch feedback */
.carousel-dot:active,
.mobile-nav-item:active,
.stat-card:active {
transform: scale(0.96);
transition: transform 100ms ease;
}
/* Bottom nav active indicator */
.mobile-nav-item.active {
position: relative;
}
.mobile-nav-item.active::after {
content: '';
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 20px;
height: 3px;
background: var(--primary);
border-radius: 0 0 3px 3px;
}
/* Ensure chart title doesn't overlap with toggle */
.charts-carousel .chart-card h2 {
padding-right: 85px;
}
/* Period banner stacks on mobile */
.period-display-banner {
flex-direction: column;
gap: 12px;
padding: 16px;
}
.period-display-banner .period-box {
min-width: unset;
}
.period-display-banner .period-value {
font-size: 1.25rem;
}
/* Table scroll hint */
.table-container {
position: relative;
}
.table-container::after {
content: '';
position: absolute;
top: 0;
right: 0;
bottom: 0;
width: 16px;
background: linear-gradient(to left, var(--surface), transparent);
pointer-events: none;
}
}
/* Extra small screens */
@media (max-width: 375px) {
.dashboard,
.comparison {
padding: 12px;
padding-bottom: 80px;
}
.page-title h1 {
font-size: 1.125rem;
}
.stats-carousel .stat-value {
font-size: 1.375rem;
}
.charts-carousel .chart-container {
height: 200px;
}
.carousel-dot .dot-label {
font-size: 0.5625rem;
}
.mobile-nav-item {
font-size: 0.5625rem;
}
.mobile-nav-item svg {
width: 20px;
height: 20px;
}
}