diff --git a/src/web/static/style.css b/src/web/static/style.css index 67220be..fb55452 100644 --- a/src/web/static/style.css +++ b/src/web/static/style.css @@ -696,43 +696,87 @@ body { line-height: 1.4; } -/* ── Settings tabs ────────────────────────────────────────────────── */ +/* ── Settings layout: sidebar + content ──────────────────────────── */ -.settings-tabs { +.settings-layout { display: flex; - gap: 4px; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - scrollbar-width: none; - margin-bottom: 12px; - padding-bottom: 4px; - border-bottom: 1px solid var(--border); + gap: 16px; + align-items: flex-start; } -.settings-tabs::-webkit-scrollbar { - display: none; +/* ── Settings sidebar ──────────────────────────────────────────────── */ + +.settings-sidebar { + width: 180px; + flex-shrink: 0; + display: flex; + flex-direction: column; + gap: 2px; + background: var(--bg-secondary); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 6px; + position: sticky; + top: 12px; } -.settings-tab { - padding: 8px 14px; +.settings-nav-item { + display: flex; + align-items: center; + gap: 10px; + padding: 10px 12px; + border-radius: 6px; + text-decoration: none; + color: var(--text-secondary); + font-size: 0.85rem; + font-weight: 500; + transition: all 0.15s; + cursor: pointer; + touch-action: manipulation; border: none; background: transparent; - color: var(--text-secondary); - font-size: 0.82rem; - cursor: pointer; - white-space: nowrap; - border-bottom: 2px solid transparent; - transition: color 0.2s, border-color 0.2s; - touch-action: manipulation; + width: 100%; + text-align: left; } -.settings-tab:hover { +.settings-nav-item:hover { + background: var(--bg-hover); color: var(--text-primary); } -.settings-tab.active { - color: var(--accent); - border-bottom-color: var(--accent); +.settings-nav-item.active { + background: var(--accent); + color: #000; + font-weight: 600; +} + +.settings-nav-item.active .settings-nav-icon { + filter: none; +} + +.settings-nav-icon { + font-size: 1rem; + width: 22px; + text-align: center; + flex-shrink: 0; + opacity: 0.7; +} + +.settings-nav-item.active .settings-nav-icon { + opacity: 1; +} + +.settings-nav-label { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/* ── Settings content panel ──────────────────────────────────────────── */ + +.settings-content { + flex: 1; + min-width: 0; } .settings-panel { @@ -743,6 +787,33 @@ body { display: block; } +/* Mobile: stack sidebar above content */ +@media (max-width: 640px) { + .settings-layout { + flex-direction: column; + } + .settings-sidebar { + width: 100%; + flex-direction: row; + overflow-x: auto; + position: static; + scrollbar-width: none; + } + .settings-sidebar::-webkit-scrollbar { + display: none; + } + .settings-nav-item { + white-space: nowrap; + flex-shrink: 0; + padding: 8px 12px; + font-size: 0.8rem; + } + .settings-nav-icon { + font-size: 0.85rem; + width: 18px; + } +} + /* ── Network UI ──────────────────────────────────────────────────── */ .network-status-row { diff --git a/src/web/templates/settings.html b/src/web/templates/settings.html index a12c8d6..3f619d9 100644 --- a/src/web/templates/settings.html +++ b/src/web/templates/settings.html @@ -6,259 +6,298 @@
pedal.localhttp://pedal.local:8080pedal.localhttp://pedal.local:8080—Pi Multi-FX Pedal v0.1.0
-Raspberry Pi 4B — Python 3.11 — JACK Audio
- + +—