feat(ui): add responsive navigation and mobile layout improvements

Add hamburger menu toggle with ARIA support for mobile nav. Introduce
responsive breakpoints at 768px (tablet) and 480px (phone) with stacked
nav, adjusted spacing, and full-width elements. Add table overflow
protection and responsive refinements across all page layouts.
This commit is contained in:
2026-05-26 18:34:42 +02:00
parent 46bd3cc2fd
commit ca47c7bae9
9 changed files with 733 additions and 19 deletions
+170 -8
View File
@@ -145,6 +145,7 @@ a {
.nav {
display: flex;
gap: var(--space-xl);
align-items: center;
}
.nav a {
@@ -153,6 +154,7 @@ a {
font-size: 0.9rem;
letter-spacing: 0.02em;
position: relative;
white-space: nowrap;
}
.nav a::after {
@@ -176,8 +178,26 @@ a {
width: 100%;
}
/* Hamburger menu toggle (hidden by default, visible on mobile) */
.nav-toggle {
display: none;
background: none;
border: 1px solid var(--color-border);
color: var(--color-text);
font-size: 1.5rem;
cursor: pointer;
padding: 0.4rem 0.6rem;
line-height: 1;
border-radius: 4px;
transition: border-color 0.2s ease, color 0.2s ease;
}
.nav-toggle:hover {
border-color: var(--color-accent);
color: var(--color-accent);
}
.nav-download {
margin-left: auto;
color: var(--color-bg) !important;
background: var(--color-accent);
padding: 0.65rem 1.75rem;
@@ -201,6 +221,14 @@ a {
box-shadow: 0 2px 12px rgba(0, 221, 119, 0.3);
}
/* Table overflow protection */
table {
display: block;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
max-width: 100%;
}
/* ===== Hero Section ===== */
.hero {
position: relative;
@@ -671,7 +699,7 @@ section {
.feature-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: var(--space-lg);
}
@@ -781,7 +809,7 @@ section {
.arch-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: var(--space-xl);
margin-top: var(--space-2xl);
}
@@ -1096,7 +1124,7 @@ section {
.download-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: var(--space-lg);
margin-bottom: var(--space-xl);
}
@@ -1303,19 +1331,63 @@ section {
}
}
/* Tablet and smaller */
@media (max-width: 768px) {
.site-header {
padding: var(--space-sm) 0;
}
.header-content {
flex-wrap: wrap;
gap: var(--space-sm);
}
.logo-image {
height: 32px;
max-width: 140px;
}
/* Show hamburger toggle, hide nav by default */
.nav-toggle {
display: block;
}
.nav {
gap: var(--space-md);
font-size: 0.8rem;
display: none;
flex-direction: column;
gap: 0;
width: 100%;
order: 3;
padding-top: var(--space-sm);
background: var(--color-bg);
border: 1px solid var(--color-border);
border-radius: 4px;
overflow: hidden;
}
.nav.nav-open {
display: flex;
}
.nav a {
font-size: 0.85rem;
padding: 0.75rem var(--space-md);
border-bottom: 1px solid var(--color-border);
}
.nav a:last-child {
border-bottom: none;
}
.nav a::after {
display: none;
}
.nav-download {
padding: 0.5rem 1rem;
font-size: 0.75rem !important;
border-radius: 0;
text-align: center;
padding: 0.75rem var(--space-md) !important;
font-size: 0.85rem !important;
letter-spacing: 0.06em !important;
}
@@ -1371,8 +1443,14 @@ section {
grid-template-columns: 1fr;
gap: var(--space-lg);
}
.download-disclaimer {
flex-direction: column;
text-align: center;
}
}
/* Small phones */
@media (max-width: 480px) {
.container,
.features-layout,
@@ -1381,10 +1459,65 @@ section {
padding: 0 var(--space-md);
}
.site-header {
padding: var(--space-xs) 0;
}
.logo-image {
height: 28px;
max-width: 120px;
}
.nav a {
font-size: 0.8rem;
padding: 0.6rem var(--space-sm);
}
.nav-download {
padding: 0.6rem var(--space-sm) !important;
font-size: 0.8rem !important;
white-space: nowrap;
text-align: center;
}
.nav-toggle {
padding: 0.3rem 0.5rem;
font-size: 1.25rem;
}
.hero {
padding-top: calc(var(--space-xl) + 60px);
padding-bottom: var(--space-xl);
}
.hero-label {
font-size: 0.75rem;
}
.hero-description {
font-size: 1rem;
}
section {
padding: var(--space-xl) 0;
}
.section-title {
font-size: clamp(1.75rem, 8vw, 2.5rem);
}
.feature-primary,
.pricing-block {
padding: var(--space-lg);
}
.feature-item {
padding: var(--space-lg);
}
.feature-content h3 {
font-size: 1.5rem;
}
.pricing-features {
flex-direction: column;
@@ -1394,6 +1527,35 @@ section {
width: 100%;
text-align: center;
}
.pricing-action {
width: 100%;
justify-content: center;
}
.platform-card {
padding: var(--space-lg);
}
.platform-name {
font-size: 1.25rem;
}
.footer-section {
text-align: center;
}
.footer-section a {
padding-left: 0;
}
.footer-section a::before {
display: none;
}
.footer-bottom {
font-size: 0.75rem;
}
}
/* ===== Animations & Effects ===== */