Frontend polish: loading states, CSS variables, focus indicators, scroll lock

- Add tab refresh loading bar animation for all 4 tab loaders
- Add profiles loading guard to prevent concurrent fetches
- Centralize theme colors into CSS variables (--text-secondary, --text-muted,
  --bg-secondary, --success-color, --shadow-color) for both dark/light themes
- Replace hardcoded gray values across 10 CSS files with variables
- Fix duplicate .btn-sm definition in modal.css
- Fix z-index: toast 2001→2500 to safely clear modals at 2000
- Add :focus-visible keyboard navigation indicators for all interactive elements
- Add responsive breakpoints for tab bar and header on narrow screens
- Prevent background page scroll when command palette is open

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-25 21:09:42 +03:00
parent 82e12ffaac
commit 7f80faf8be
17 changed files with 162 additions and 49 deletions

View File

@@ -61,7 +61,7 @@ section {
}
.card:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
box-shadow: 0 4px 12px var(--shadow-color);
}
.card-tutorial-btn {
@@ -106,7 +106,7 @@ section {
.card-autostart-btn {
background: none;
border: none;
color: #777;
color: var(--text-muted);
font-size: 1rem;
width: 28px;
height: 28px;
@@ -130,7 +130,7 @@ section {
.card-power-btn {
background: none;
border: none;
color: #777;
color: var(--text-muted);
font-size: 1rem;
width: 28px;
height: 28px;
@@ -153,7 +153,7 @@ section {
right: 10px;
background: none;
border: none;
color: #777;
color: var(--text-muted);
font-size: 1rem;
width: 28px;
height: 28px;
@@ -221,7 +221,7 @@ section {
.card-meta {
font-size: 0.8rem;
color: #999;
color: var(--text-secondary);
display: inline-flex;
align-items: center;
gap: 4px;
@@ -507,7 +507,7 @@ ul.section-tip li {
.metric-label {
font-size: 0.8rem;
color: #999;
color: var(--text-secondary);
}
/* Target FPS sparkline row */
@@ -586,7 +586,7 @@ ul.section-tip li {
flex-wrap: wrap;
gap: 8px;
font-size: 0.75rem;
color: #999;
color: var(--text-secondary);
margin-top: 4px;
}