diff --git a/public/styles/global.css b/public/styles/global.css index 48934c2..c6e681f 100644 --- a/public/styles/global.css +++ b/public/styles/global.css @@ -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 ===== */ diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index ce8afaa..ad549ad 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -67,7 +67,10 @@ const isActiveRoute = (path: string) => currentPath === normalizePath(path); -