design: Desktop-UI modernisieren (Sidebar, Typografie, Shadows, Buttons)

- Sidebar: Logo mit Gradient, kompaktere Nav-Items (40px statt 44px),
  kleinere Icons (18px), 2px Gap, bessere Hover/Active-Zustände
- tokens.css: feinere Schatten, Inter im Font-Stack, Sidebar-Breite 256px
- layout.css: Desktop-Content mehr Luft (40px padding), Headings mit
  letter-spacing, Primary-Buttons mit subtiler Elevation
- router.js: Logo-Span für CSS-Gradient-Clip

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ulsklyc
2026-03-25 13:12:29 +01:00
parent b36f2833ef
commit 55a0371505
3 changed files with 44 additions and 17 deletions
+1 -1
View File
@@ -138,7 +138,7 @@ async function renderPage(route) {
function renderAppShell(container) {
container.innerHTML = `
<nav class="nav-sidebar" aria-label="Hauptnavigation">
<div class="nav-sidebar__logo">Oikos</div>
<div class="nav-sidebar__logo"><span>Oikos</span></div>
<div class="nav-sidebar__items" role="list">
${navItems().map(navItemHtml).join('')}
</div>
+38 -11
View File
@@ -127,22 +127,30 @@
display: flex;
flex-direction: column;
z-index: var(--z-nav);
padding: var(--space-6) 0;
padding: var(--space-5) 0 var(--space-6);
}
.nav-sidebar__logo {
font-size: var(--text-xl);
font-size: var(--text-lg);
font-weight: var(--font-weight-bold);
color: var(--color-accent);
padding: 0 var(--space-6) var(--space-6);
border-bottom: 1px solid var(--color-border);
margin-bottom: var(--space-4);
letter-spacing: -0.3px;
color: var(--color-text-primary);
padding: var(--space-2) var(--space-5) var(--space-5);
margin-bottom: var(--space-2);
}
.nav-sidebar__logo span {
display: inline-block;
background: linear-gradient(135deg, var(--color-accent) 0%, #5856D6 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.nav-sidebar__items {
display: flex;
flex-direction: column;
gap: var(--space-1);
gap: 2px;
padding: 0 var(--space-3);
flex: 1;
}
@@ -151,22 +159,34 @@
flex-direction: row;
justify-content: flex-start;
border-radius: var(--radius-sm);
padding: var(--space-3) var(--space-3);
padding: var(--space-2) var(--space-3);
gap: var(--space-3);
min-height: 44px;
min-height: 40px;
font-size: var(--text-sm);
color: var(--color-text-secondary);
transition: background-color var(--transition-fast), color var(--transition-fast);
}
.nav-sidebar .nav-item__icon {
width: 18px;
height: 18px;
flex-shrink: 0;
}
.nav-sidebar .nav-item[aria-current="page"] {
background-color: var(--color-accent-light);
color: var(--color-accent);
font-weight: var(--font-weight-semibold);
}
.nav-sidebar .nav-item:hover:not([aria-current="page"]) {
background-color: var(--color-surface-2);
color: var(--color-text-primary);
}
.nav-sidebar .nav-item__label {
font-size: var(--text-base);
font-size: var(--text-sm);
font-weight: inherit;
}
}
@@ -194,7 +214,12 @@
@media (min-width: 1024px) {
.page {
padding: var(--space-8);
padding: var(--space-10) var(--space-10);
}
.page__title {
font-size: var(--text-3xl);
letter-spacing: -0.5px;
}
}
@@ -233,10 +258,12 @@
.btn--primary {
background-color: var(--color-btn-primary);
color: #ffffff;
box-shadow: 0 1px 2px rgba(0,0,0,0.12);
}
.btn--primary:hover {
background-color: var(--color-btn-primary-hover);
box-shadow: 0 2px 6px rgba(0,102,219,0.28);
}
.btn--secondary {
+5 -5
View File
@@ -48,9 +48,9 @@
/* --------------------------------------------------------
* Schatten
* -------------------------------------------------------- */
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.10);
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);
--shadow-sm: 0 1px 2px rgba(0,0,0,0.04), 0 1px 6px rgba(0,0,0,0.04);
--shadow-md: 0 4px 12px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.04);
--shadow-lg: 0 12px 32px rgba(0,0,0,0.09), 0 2px 8px rgba(0,0,0,0.05);
/* --------------------------------------------------------
* Border-Radien
@@ -65,7 +65,7 @@
/* --------------------------------------------------------
* Typografie
* -------------------------------------------------------- */
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI Variable', 'Segoe UI', system-ui, sans-serif;
--font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
--text-xs: 0.75rem; /* 12px */
@@ -104,7 +104,7 @@
* Layout
* -------------------------------------------------------- */
--nav-height-mobile: 64px;
--sidebar-width: 240px;
--sidebar-width: 256px;
--content-max-width: 1200px;
--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);