diff --git a/static/css/styles.css b/static/css/styles.css index 22f11f6..7bfd262 100644 --- a/static/css/styles.css +++ b/static/css/styles.css @@ -23,7 +23,7 @@ ); --shadow: 0 10px 30px rgba(30, 78, 156, 0.1); --shadow-hover: 0 20px 40px rgba(30, 78, 156, 0.15); - --navbar-height: 64px; + --navbar-height: 56px; --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } @@ -32,8 +32,9 @@ html { } body { - font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; - line-height: 1.7; + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', + Roboto, sans-serif; + line-height: 1.6; color: var(--text-dark); overflow-x: hidden; background: var(--white); @@ -42,7 +43,7 @@ body { } /* ======================= - Navigation + Navigation - Mobile First ======================= */ .navbar { position: fixed; @@ -52,13 +53,10 @@ body { background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(20px); z-index: 1000; - padding: 1rem 0; + padding: 0.75rem 0; transition: var(--transition); border-bottom: 1px solid rgba(2, 6, 23, 0.04); min-height: var(--navbar-height); - font-size: 1rem; - line-height: 1.2; - letter-spacing: 0; } .navbar.scrolled { @@ -69,25 +67,21 @@ body { .nav-container { max-width: 1200px; margin: 0 auto; - padding: 0 2rem; + padding: 0 1rem; display: flex; justify-content: space-between; align-items: center; - position: relative; } .logo { - font-size: 1.5rem; + font-size: 1.25rem; font-weight: 700; color: var(--text-dark); text-decoration: none; transition: transform 0.3s ease; - letter-spacing: 0.2px; - font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; display: inline-flex; align-items: center; - gap: 0.5rem; - transform-origin: left center; + gap: 0.4rem; } .logo:hover { @@ -100,22 +94,29 @@ body { .logo-img { display: block; - height: 28px; + height: 24px; width: auto; } .nav-links { - display: flex; + display: none; gap: 2rem; list-style: none; } +@media (min-width: 768px) { + .nav-links { + display: flex; + } +} + .nav-links a { text-decoration: none; color: var(--text-dark); font-weight: 500; transition: color 0.3s ease; position: relative; + font-size: 0.95rem; } .nav-links a::after { @@ -135,35 +136,84 @@ body { } .nav-toggle { - display: none; + display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 5px; - width: 42px; - height: 42px; + width: 40px; + height: 40px; border: 1px solid rgba(2, 6, 23, 0.08); - border-radius: 10px; + border-radius: 8px; background: var(--white); cursor: pointer; transition: var(--transition); } +@media (min-width: 768px) { + .nav-toggle { + display: none; + } +} + .nav-toggle:hover { box-shadow: var(--shadow); transform: translateY(-1px); } .nav-toggle .bar { - width: 20px; + width: 18px; height: 2px; background: var(--text-dark); border-radius: 2px; transition: transform 0.25s ease, opacity 0.25s ease; } +.nav-toggle.active .bar:nth-child(1) { + transform: translateY(7px) rotate(45deg); +} + +.nav-toggle.active .bar:nth-child(2) { + opacity: 0; +} + +.nav-toggle.active .bar:nth-child(3) { + transform: translateY(-7px) rotate(-45deg); +} + +/* Mobile Menu */ +.nav-links.open { + display: flex; + position: absolute; + top: var(--navbar-height); + left: 1rem; + right: 1rem; + flex-direction: column; + gap: 0.5rem; + background: var(--white); + border: 1px solid rgba(2, 6, 23, 0.08); + border-radius: 12px; + box-shadow: var(--shadow); + padding: 0.75rem; + z-index: 999; +} + +.nav-links.open a { + display: block; + padding: 0.75rem 1rem; + border-radius: 8px; +} + +.nav-links.open a:hover { + background: var(--bg-light); +} + +.nav-links.open a::after { + display: none; +} + /* ======================= - Hero Section (Landing) + Hero Section - Mobile First ======================= */ .hero { min-height: 100vh; @@ -172,7 +222,8 @@ body { align-items: center; position: relative; overflow: hidden; - padding-top: calc(var(--navbar-height) + 16px); + padding-top: calc(var(--navbar-height) + 1rem); + padding-bottom: 2rem; } .hero::before { @@ -186,51 +237,66 @@ body { .hero-container { max-width: 1200px; margin: 0 auto; - padding: 0 2rem; + padding: 0 1rem; display: grid; - grid-template-columns: 1fr 1fr; - gap: 4rem; + grid-template-columns: 1fr; + gap: 2rem; align-items: center; position: relative; z-index: 1; } +@media (min-width: 768px) { + .hero-container { + grid-template-columns: 1fr 1fr; + gap: 4rem; + } +} + .hero-content h1 { - font-size: clamp(2.5rem, 5vw, 4rem); + font-size: clamp(1.75rem, 5vw, 3.5rem); font-weight: 800; color: var(--white); - margin-bottom: 1.5rem; + margin-bottom: 1rem; line-height: 1.2; - text-shadow: 0 2px 20px rgba(0, 0, 0, 0.1); + text-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); } .hero-content .subtitle { - font-size: 1.25rem; + font-size: clamp(0.95rem, 3vw, 1.25rem); color: rgba(255, 255, 255, 0.9); - margin-bottom: 2rem; + margin-bottom: 1.5rem; font-weight: 300; + line-height: 1.6; } .cta-section { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(20px); - padding: 2rem; - border-radius: 20px; + padding: 1.5rem; + border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.2); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); } +@media (min-width: 768px) { + .cta-section { + padding: 2rem; + border-radius: 20px; + } +} + .cta-section h3 { color: var(--white); - font-size: 1.5rem; + font-size: clamp(1.1rem, 4vw, 1.5rem); margin-bottom: 0.5rem; font-weight: 600; } .cta-section > p { color: rgba(255, 255, 255, 0.8); - margin-bottom: 1.5rem; - font-size: 1rem; + margin-bottom: 1.25rem; + font-size: 0.9rem; } /* Beta Badge */ @@ -240,10 +306,10 @@ body { gap: 8px; background: rgba(255, 255, 255, 0.15); border: 1px solid rgba(255, 255, 255, 0.3); - padding: 10px 16px; + padding: 8px 14px; border-radius: 50px; - margin-bottom: 20px; - font-size: 13px; + margin-bottom: 1rem; + font-size: 11px; font-weight: 600; color: rgba(255, 255, 255, 0.95); text-transform: uppercase; @@ -251,8 +317,16 @@ body { backdrop-filter: blur(10px); } +@media (min-width: 768px) { + .beta-badge { + padding: 10px 16px; + font-size: 13px; + margin-bottom: 1.5rem; + } +} + .badge-icon { - font-size: 16px; + font-size: 14px; animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } @@ -268,21 +342,29 @@ body { /* Email Form */ .email-form { display: flex; - gap: 1rem; - margin-bottom: 1.5rem; + flex-direction: column; + gap: 0.75rem; + margin-bottom: 1rem; +} + +@media (min-width: 640px) { + .email-form { + flex-direction: row; + gap: 1rem; + } } .email-input { flex: 1; - padding: 1rem 1.5rem; + padding: 0.8rem 1rem; border: none; border-radius: 50px; background: rgba(255, 255, 255, 0.95); - backdrop-filter: blur(10px); - font-size: 1rem; + font-size: 0.95rem; outline: none; transition: var(--transition); color: var(--text-dark); + min-width: 0; } .email-input::placeholder { @@ -294,9 +376,8 @@ body { box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.3); } -.notify-btn, -.dev-btn { - padding: 1rem 2rem; +.notify-btn { + padding: 0.8rem 1.5rem; background: var(--white); color: var(--primary); border: none; @@ -305,84 +386,105 @@ body { cursor: pointer; transition: var(--transition); white-space: nowrap; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + font-size: 0.9rem; + width: 100%; +} + +@media (min-width: 640px) { + .notify-btn { + width: auto; + padding: 1rem 2rem; + font-size: 1rem; + } } .notify-btn:hover, -.dev-btn:hover { - transform: translateY(-3px); - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); +.notify-btn:focus { + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15); } -.notify-btn:active, -.dev-btn:active { +.notify-btn:active { transform: translateY(-1px); } /* Beta Notice */ .beta-notice { - background: linear-gradient(135deg, rgba(255, 193, 7, 0.1), rgba(255, 152, 0, 0.1)); + background: linear-gradient(135deg, rgba(255, 193, 7, 0.1), + rgba(255, 152, 0, 0.1)); border-left: 4px solid rgba(255, 193, 7, 0.6); - border-radius: 12px; - padding: 16px; - margin-top: 20px; - font-size: 14px; + border-radius: 8px; + padding: 1rem; + margin-top: 1rem; + font-size: 12px; color: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); } +@media (min-width: 768px) { + .beta-notice { + font-size: 14px; + padding: 1rem 1.25rem; + border-radius: 12px; + } +} + .beta-notice p { margin: 0; - line-height: 1.6; + line-height: 1.5; } -/* Dev Access Button */ -.dev-access-button { - margin-top: 25px; - text-align: center; -} - -.dev-btn { - display: inline-flex; - align-items: center; - gap: 10px; - text-decoration: none; - background: var(--white); - color: var(--primary); -} - -.dev-btn-icon { - font-size: 18px; -} - -/* Phone mockup */ +/* Phone Mockup */ .hero-visual { position: relative; - height: 500px; + height: 400px; display: flex; align-items: center; justify-content: center; } +@media (min-width: 768px) { + .hero-visual { + height: 500px; + } +} + .phone-mockup { - width: 300px; - height: 600px; + width: 240px; + height: 480px; background: linear-gradient(145deg, #2a2a2a, #1a1a1a); - border-radius: 40px; - padding: 20px; - box-shadow: 0 30px 60px rgba(0, 0, 0, 0.3); + border-radius: 36px; + padding: 14px; + box-shadow: 0 20px 50px rgba(0, 0, 0, 0.3); position: relative; transform: rotate(-5deg); animation: float 6s ease-in-out infinite; } +@media (min-width: 768px) { + .phone-mockup { + width: 280px; + height: 560px; + padding: 18px; + border-radius: 40px; + } +} + +@media (min-width: 1024px) { + .phone-mockup { + width: 300px; + height: 600px; + padding: 20px; + } +} + @keyframes float { - 0%, - 100% { + 0%, 100% { transform: rotate(-5deg) translateY(0); } 50% { - transform: rotate(-5deg) translateY(-20px); + transform: rotate(-5deg) translateY(-15px); } } @@ -390,12 +492,11 @@ body { width: 100%; height: 100%; background: var(--gradient); - border-radius: 25px; + border-radius: 24px; display: flex; align-items: center; justify-content: center; overflow: hidden; - position: relative; } .app-interface { @@ -406,27 +507,26 @@ body { align-items: center; justify-content: center; height: 100%; - padding: 2rem 1.5rem; + padding: 1.5rem; width: 100%; } .app-brand { display: inline-flex; align-items: center; - gap: 0.5rem; - margin-bottom: 1.5rem; + gap: 0.35rem; + margin-bottom: 1rem; } .app-brand-icon { - width: 32px; - height: 32px; - display: block; + width: 28px; + height: 28px; border-radius: 6px; background: rgba(255, 255, 255, 0.2); } .app-logo { - font-size: 1.8rem; + font-size: 1.5rem; font-weight: 700; margin: 0; letter-spacing: -0.5px; @@ -436,60 +536,80 @@ body { .screen .stats-grid { display: grid; grid-template-columns: 1fr 1fr; - gap: 0.8rem; - margin-top: 1.5rem; + gap: 0.6rem; + margin-top: 1.2rem; width: 100%; } .screen .stat-card { background: rgba(0, 0, 0, 0.3) !important; - padding: 1.2rem 0.8rem !important; - border-radius: 16px !important; + padding: 0.8rem 0.6rem !important; + border-radius: 12px !important; text-align: center !important; backdrop-filter: blur(15px) !important; border: 1px solid rgba(255, 255, 255, 0.15) !important; - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2) !important; } .screen .stat-number { - font-size: 1.8rem !important; - font-weight: 900 !important; + font-size: 1.1rem !important; + font-weight: 800 !important; color: var(--white) !important; - margin-bottom: 0.4rem !important; + margin-bottom: 0.3rem !important; display: block !important; - text-shadow: none !important; - line-height: 1.1 !important; - letter-spacing: -0.5px !important; } .screen .stat-label { - font-size: 0.7rem !important; + font-size: 0.6rem !important; font-weight: 600 !important; text-transform: uppercase !important; - letter-spacing: 0.8px !important; - color: var(--white) !important; + letter-spacing: 0.6px !important; + color: rgba(255, 255, 255, 0.9) !important; display: block !important; - opacity: 1 !important; +} + +@media (min-width: 768px) { + .screen .stat-number { + font-size: 1.3rem !important; + } + + .screen .stat-label { + font-size: 0.7rem !important; + } + + .screen .stat-card { + padding: 1rem 0.8rem !important; + } } /* ======================= Features Section ======================= */ .features { - padding: 6rem 0; + padding: 3rem 0; background: var(--white); - position: relative; +} + +@media (min-width: 768px) { + .features { + padding: 6rem 0; + } } .section-header { text-align: center; - max-width: 800px; - margin: 0 auto 4rem; - padding: 0 2rem; + max-width: 700px; + margin: 0 auto 2.5rem; + padding: 0 1rem; +} + +@media (min-width: 768px) { + .section-header { + margin-bottom: 4rem; + } } .section-header h2 { - font-size: clamp(2rem, 4vw, 3rem); + font-size: clamp(1.5rem, 4vw, 2.5rem); font-weight: 700; margin-bottom: 1rem; background: var(--gradient); @@ -500,26 +620,41 @@ body { } .section-header p { - font-size: 1.125rem; + font-size: clamp(0.9rem, 2vw, 1rem); color: var(--text-light); + line-height: 1.6; } .features-container { max-width: 1200px; margin: 0 auto; - padding: 0 2rem; + padding: 0 1rem; } .features-grid { display: grid; - grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); - gap: 2rem; + grid-template-columns: 1fr; + gap: 1.5rem; +} + +@media (min-width: 640px) { + .features-grid { + grid-template-columns: repeat(2, 1fr); + gap: 1.5rem; + } +} + +@media (min-width: 1024px) { + .features-grid { + grid-template-columns: repeat(3, 1fr); + gap: 2rem; + } } .feature-card { background: var(--white); - padding: 2.5rem; - border-radius: 20px; + padding: 1.5rem; + border-radius: 16px; box-shadow: var(--shadow); transition: var(--transition); border: 1px solid rgba(30, 78, 156, 0.05); @@ -527,6 +662,13 @@ body { overflow: hidden; } +@media (min-width: 768px) { + .feature-card { + padding: 2.5rem; + border-radius: 20px; + } +} + .feature-card::before { content: ''; position: absolute; @@ -538,40 +680,57 @@ body { } .feature-card:hover { - transform: translateY(-10px); + transform: translateY(-8px); box-shadow: var(--shadow-hover); border-color: rgba(30, 78, 156, 0.15); } .feature-icon { - width: 60px; - height: 60px; + width: 50px; + height: 50px; background: var(--gradient); - border-radius: 15px; + border-radius: 12px; display: flex; align-items: center; justify-content: center; - margin-bottom: 1.5rem; + margin-bottom: 1rem; color: var(--white); - font-size: 1.5rem; + font-size: 1.25rem; +} + +@media (min-width: 768px) { + .feature-icon { + width: 60px; + height: 60px; + border-radius: 15px; + font-size: 1.5rem; + } } .feature-card h3 { - font-size: 1.5rem; + font-size: 1.1rem; font-weight: 600; - margin-bottom: 1rem; + margin-bottom: 0.75rem; color: var(--text-dark); } +@media (min-width: 768px) { + .feature-card h3 { + font-size: 1.25rem; + margin-bottom: 1rem; + } +} + .feature-list { list-style: none; } .feature-list li { - margin-bottom: 0.75rem; + margin-bottom: 0.5rem; position: relative; - padding-left: 1.5rem; + padding-left: 1.25rem; color: var(--text-light); + font-size: 0.9rem; } .feature-list li::before { @@ -587,41 +746,53 @@ body { } /* ======================= - Newsletter Pages (List & Detail) + Page Header ======================= */ .page-header { - background: linear-gradient( - 180deg, - rgba(30, 78, 156, 0.06), - rgba(0, 212, 255, 0.06) - ); - padding: 8rem 0 3rem; + background: linear-gradient(180deg, rgba(30, 78, 156, 0.06), + rgba(0, 212, 255, 0.06)); + padding: 5rem 0 2rem; border-bottom: 1px solid rgba(30, 78, 156, 0.08); } +@media (min-width: 768px) { + .page-header { + padding: 8rem 0 3rem; + } +} + .page-header-content { - max-width: 1000px; + max-width: 900px; margin: 0 auto; - padding: 0 2rem; + padding: 0 1rem; text-align: center; } .page-header .header-icon { - width: 64px; - height: 64px; + width: 56px; + height: 56px; margin: 0 auto 1rem; - border-radius: 16px; + border-radius: 12px; background: var(--gradient); color: var(--white); display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow); - font-size: 1.5rem; + font-size: 1.25rem; +} + +@media (min-width: 768px) { + .page-header .header-icon { + width: 64px; + height: 64px; + border-radius: 16px; + font-size: 1.5rem; + } } .page-header h1 { - font-size: clamp(2rem, 4vw, 2.5rem); + font-size: clamp(1.5rem, 4vw, 2rem); font-weight: 700; color: var(--text-dark); margin-bottom: 0.5rem; @@ -629,30 +800,57 @@ body { .page-header p { color: var(--text-light); - font-size: 1.05rem; + font-size: clamp(0.9rem, 2vw, 1rem); } +/* ======================= + Main Content + ======================= */ .main-content { max-width: 1100px; margin: 0 auto; - padding: 2rem 2rem 4rem; + padding: 1.5rem 1rem 2rem; +} + +@media (min-width: 768px) { + .main-content { + padding: 2rem 2rem 4rem; + } } .newsletters-grid { display: grid; - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); - gap: 1.5rem; + grid-template-columns: 1fr; + gap: 1.25rem; +} + +@media (min-width: 640px) { + .newsletters-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1024px) { + .newsletters-grid { + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + } } .newsletter-card { background: var(--white); border: 1px solid rgba(30, 78, 156, 0.08); - border-radius: 16px; - padding: 1.25rem 1.25rem 1rem; + border-radius: 12px; + padding: 1.25rem; box-shadow: var(--shadow); transition: var(--transition); } +@media (min-width: 768px) { + .newsletter-card { + border-radius: 16px; + } +} + .newsletter-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-hover); @@ -661,26 +859,43 @@ body { .newsletter-header { display: flex; - align-items: center; + align-items: flex-start; gap: 0.75rem; margin-bottom: 0.75rem; } .newsletter-icon { - width: 44px; - height: 44px; - border-radius: 12px; + width: 40px; + height: 40px; + border-radius: 10px; background: var(--gradient); color: var(--white); display: flex; align-items: center; justify-content: center; - flex: 0 0 44px; + flex-shrink: 0; + font-size: 1rem; +} + +@media (min-width: 768px) { + .newsletter-icon { + width: 44px; + height: 44px; + border-radius: 12px; + font-size: 1.1rem; + } } .newsletter-info h2 { - font-size: 1.1rem; + font-size: 0.95rem; margin: 0; + font-weight: 600; +} + +@media (min-width: 768px) { + .newsletter-info h2 { + font-size: 1.1rem; + } } .newsletter-info a { @@ -696,29 +911,32 @@ body { .newsletter-date { display: flex; align-items: center; - gap: 0.5rem; + gap: 0.4rem; color: var(--text-light); - font-size: 0.9rem; + font-size: 0.8rem; margin-bottom: 0.5rem; } .newsletter-excerpt { color: var(--text-dark); - opacity: 0.9; + opacity: 0.85; margin-bottom: 0.75rem; + font-size: 0.9rem; + line-height: 1.5; } .read-more-btn { display: inline-flex; align-items: center; - gap: 0.5rem; + gap: 0.4rem; color: var(--white); background: var(--gradient); - padding: 0.55rem 0.9rem; - border-radius: 999px; + padding: 0.5rem 0.8rem; + border-radius: 50px; text-decoration: none; font-weight: 600; transition: var(--transition); + font-size: 0.85rem; } .read-more-btn:hover { @@ -726,127 +944,6 @@ body { box-shadow: var(--shadow); } -.back-navigation { - max-width: 1100px; - margin: 6rem auto 0; - padding: 0 2rem; -} - -.back-link { - color: var(--secondary); - text-decoration: none; - font-weight: 600; - display: inline-flex; - align-items: center; - gap: 0.5rem; - transition: gap 0.3s ease; -} - -.back-link:hover { - gap: 0.75rem; -} - -.newsletter-header h1 { - margin-top: 0.5rem; -} - -.newsletter-meta { - display: flex; - flex-wrap: wrap; - gap: 0.75rem 1.25rem; - margin-top: 0.5rem; - color: var(--text-light); -} - -.newsletter-meta .meta-item { - display: inline-flex; - align-items: center; - gap: 0.4rem; -} - -.newsletter-tags { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; - margin-top: 0.75rem; -} - -.newsletter-tags .tag { - font-size: 0.85rem; - padding: 0.3rem 0.6rem; - background: rgba(51, 124, 242, 0.1); - color: var(--secondary); - border: 1px solid rgba(51, 124, 242, 0.2); - border-radius: 999px; -} - -.newsletter-content { - margin-top: 1.25rem; - background: var(--white); - border: 1px solid rgba(30, 78, 156, 0.08); - border-radius: 16px; - padding: 1.5rem; - box-shadow: var(--shadow); -} - -.newsletter-content h2, -.newsletter-content h3 { - margin-top: 1rem; - margin-bottom: 0.5rem; -} - -.newsletter-content p, -.newsletter-content li { - color: var(--text-dark); -} - -.newsletter-content ul { - padding-left: 1.25rem; -} - -.newsletter-content blockquote { - margin: 1rem 0; - padding: 1rem 1.25rem; - background: rgba(0, 212, 255, 0.08); - border-left: 4px solid var(--accent); - border-radius: 8px; - color: var(--text-dark); -} - -.newsletter-actions { - display: flex; - flex-wrap: wrap; - gap: 0.75rem; - margin-top: 1rem; -} - -.action-btn { - display: inline-flex; - align-items: center; - gap: 0.5rem; - border-radius: 10px; - padding: 0.6rem 1rem; - cursor: pointer; - border: none; - text-decoration: none; - font-weight: 600; - transition: var(--transition); -} - -.action-btn.primary { - background: var(--gradient); - color: var(--white); -} - -.action-btn.secondary { - background: var(--bg-light); - color: var(--text-dark); -} - -.action-btn:hover { - transform: translateY(-2px); -} - /* ======================= Footer ======================= */ @@ -854,7 +951,8 @@ body { background: var(--text-dark); color: var(--white); text-align: center; - padding: 2rem 0; + padding: 1.5rem 1rem; + font-size: 0.9rem; } /* ======================= @@ -868,44 +966,58 @@ body { .hero-section { background: var(--gradient); - padding: 6rem 2rem; + padding: 3rem 1rem; text-align: center; color: var(--white); } +@media (min-width: 768px) { + .hero-section { + padding: 6rem 2rem; + } +} + .hero-section h1 { - font-size: clamp(2rem, 4vw, 3rem); + font-size: clamp(1.5rem, 4vw, 2.5rem); font-weight: 700; - margin-bottom: 1rem; + margin-bottom: 0.75rem; } .hero-section p { - font-size: 1.125rem; + font-size: clamp(0.9rem, 2vw, 1rem); opacity: 0.95; } .about-content { max-width: 1100px; margin: 0 auto; - padding: 4rem 2rem; + padding: 2rem 1rem; display: grid; - grid-template-columns: 1fr 1fr; - gap: 3rem; - align-items: start; + grid-template-columns: 1fr; + gap: 2rem; +} + +@media (min-width: 768px) { + .about-content { + grid-template-columns: 1fr 1fr; + gap: 3rem; + padding: 4rem 2rem; + align-items: start; + } } .about-text h2 { - font-size: 2rem; + font-size: clamp(1.3rem, 4vw, 2rem); font-weight: 700; color: var(--text-dark); margin-bottom: 1rem; } .about-text p { - font-size: 1.05rem; + font-size: 0.95rem; color: var(--text-light); - line-height: 1.8; - margin-bottom: 1.5rem; + line-height: 1.7; + margin-bottom: 1rem; } .about-text ul { @@ -914,9 +1026,10 @@ body { } .about-text li { - padding: 0.75rem 0 0.75rem 2rem; + padding: 0.5rem 0 0.5rem 1.75rem; position: relative; color: var(--text-dark); + font-size: 0.95rem; } .about-text li::before { @@ -925,33 +1038,41 @@ body { left: 0; color: var(--secondary); font-weight: bold; - font-size: 1.2rem; + font-size: 1rem; } .contact-form { background: var(--white); border: 1px solid rgba(30, 78, 156, 0.08); - border-radius: 16px; - padding: 2rem; + border-radius: 12px; + padding: 1.5rem; box-shadow: var(--shadow); } +@media (min-width: 768px) { + .contact-form { + border-radius: 16px; + padding: 2rem; + } +} + .contact-form h2 { - font-size: 1.5rem; + font-size: 1.25rem; font-weight: 700; color: var(--text-dark); - margin-bottom: 1.5rem; + margin-bottom: 1.25rem; } .form-group { - margin-bottom: 1.5rem; + margin-bottom: 1.25rem; } .form-group label { display: block; font-weight: 600; color: var(--text-dark); - margin-bottom: 0.5rem; + margin-bottom: 0.4rem; + font-size: 0.95rem; } .form-group label .required { @@ -962,11 +1083,11 @@ body { .form-group textarea, .form-group select { width: 100%; - padding: 0.75rem 1rem; + padding: 0.7rem 0.85rem; border: 1px solid rgba(30, 78, 156, 0.1); border-radius: 8px; font-family: inherit; - font-size: 1rem; + font-size: 0.95rem; transition: var(--transition); background: var(--white); color: var(--text-dark); @@ -982,91 +1103,78 @@ body { .form-group textarea { resize: vertical; - min-height: 120px; + min-height: 100px; } .form-group small { display: block; color: var(--text-light); - margin-top: 0.3rem; - font-size: 0.9rem; -} - -.form-group input[type='checkbox'], -.form-group input[type='radio'] { - width: auto; - margin-right: 0.5rem; -} - -.checkbox-group, -.radio-group { - display: flex; - flex-direction: column; - gap: 0.75rem; -} - -.checkbox-group label, -.radio-group label { - display: flex; - align-items: center; - margin-bottom: 0; - font-weight: 400; + margin-top: 0.25rem; + font-size: 0.85rem; } .newsletter-opt-in { - margin: 2rem 0 2rem 0; - padding: 1.5rem; - background: linear-gradient(135deg, rgba(51, 124, 242, 0.08), rgba(0, 212, 255, 0.08)); - border-radius: 12px; + margin: 1.5rem 0; + padding: 1.25rem; + background: linear-gradient(135deg, rgba(51, 124, 242, 0.08), + rgba(0, 212, 255, 0.08)); + border-radius: 10px; border: 1px solid rgba(51, 124, 242, 0.15); } .checkbox-label { display: flex; align-items: center; - gap: 0.75rem; + gap: 0.6rem; cursor: pointer; margin: 0; } .checkbox-input { - width: 20px; - height: 20px; + width: 18px; + height: 18px; cursor: pointer; accent-color: var(--secondary); + flex-shrink: 0; } .checkbox-text { display: flex; align-items: center; - gap: 0.5rem; + gap: 0.4rem; color: var(--text-dark); font-weight: 500; line-height: 1.4; -} - -.checkbox-text i { - color: var(--secondary); font-size: 0.9rem; } .form-submit { display: inline-flex; align-items: center; - gap: 0.5rem; + gap: 0.4rem; background: var(--gradient); color: var(--white); - padding: 1rem 2.5rem; + padding: 0.8rem 1.8rem; border: none; - border-radius: 10px; + border-radius: 8px; font-weight: 600; cursor: pointer; transition: var(--transition); - font-size: 1rem; + font-size: 0.9rem; + width: 100%; } -.form-submit:hover { - transform: translateY(-3px); +@media (min-width: 640px) { + .form-submit { + width: auto; + padding: 1rem 2.5rem; + font-size: 1rem; + } +} + +.form-submit:hover, +.form-submit:focus { + transform: translateY(-2px); box-shadow: var(--shadow-hover); } @@ -1074,19 +1182,16 @@ body { transform: translateY(-1px); } -.form-submit i { - font-size: 1.1rem; -} - .form-success { background: #ecfdf5; border: 1px solid #86efac; color: #166534; - padding: 1rem; + padding: 0.75rem; border-radius: 8px; - margin-bottom: 1.5rem; + margin-bottom: 1rem; display: none; animation: slideDown 0.3s ease; + font-size: 0.9rem; } @keyframes slideDown { @@ -1106,23 +1211,38 @@ body { .contact-info { display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 2rem; + grid-template-columns: 1fr; + gap: 1.5rem; max-width: 1100px; - margin: 4rem auto; - padding: 0 2rem; + margin: 2rem auto; + padding: 0 1rem; +} + +@media (min-width: 640px) { + .contact-info { + grid-template-columns: repeat(2, 1fr); + gap: 2rem; + margin: 4rem auto; + } } .info-card { background: var(--white); border: 1px solid rgba(30, 78, 156, 0.08); - border-radius: 16px; - padding: 2rem; + border-radius: 12px; + padding: 1.5rem; text-align: center; box-shadow: var(--shadow); transition: var(--transition); } +@media (min-width: 768px) { + .info-card { + border-radius: 16px; + padding: 2rem; + } +} + .info-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-hover); @@ -1130,43 +1250,55 @@ body { } .info-card-icon { - width: 60px; - height: 60px; + width: 50px; + height: 50px; background: var(--gradient); - border-radius: 12px; + border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--white); - font-size: 1.5rem; + font-size: 1.25rem; margin: 0 auto 1rem; } +@media (min-width: 768px) { + .info-card-icon { + width: 60px; + height: 60px; + border-radius: 12px; + font-size: 1.5rem; + } +} + .info-card h3 { - font-size: 1.25rem; + font-size: 1rem; font-weight: 700; color: var(--text-dark); - margin-bottom: 0.5rem; + margin-bottom: 0.4rem; +} + +@media (min-width: 768px) { + .info-card h3 { + font-size: 1.25rem; + margin-bottom: 0.5rem; + } } .info-card p { color: var(--text-light); -} - -.info-card a { - color: var(--secondary); - text-decoration: none; - font-weight: 600; - transition: color 0.3s ease; -} - -.info-card a:hover { - color: var(--primary); + font-size: 0.9rem; } .team-section { background: var(--bg-light); - padding: 4rem 2rem; + padding: 2rem 1rem; +} + +@media (min-width: 768px) { + .team-section { + padding: 4rem 2rem; + } } .team-container { @@ -1176,307 +1308,176 @@ body { .team-header { text-align: center; - margin-bottom: 3rem; + margin-bottom: 2rem; } .team-header h2 { - font-size: 2rem; + font-size: clamp(1.3rem, 4vw, 2rem); font-weight: 700; color: var(--text-dark); - margin-bottom: 0.5rem; + margin-bottom: 0.3rem; } .team-grid { display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: 2rem; + grid-template-columns: 1fr; + gap: 1.5rem; +} + +@media (min-width: 640px) { + .team-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1024px) { + .team-grid { + grid-template-columns: repeat(3, 1fr); + } } .team-member { background: var(--white); - border-radius: 16px; + border-radius: 12px; overflow: hidden; box-shadow: var(--shadow); transition: var(--transition); text-align: center; } +@media (min-width: 768px) { + .team-member { + border-radius: 16px; + } +} + .team-member:hover { - transform: translateY(-8px); + transform: translateY(-6px); box-shadow: var(--shadow-hover); } .team-member-image { width: 100%; - height: 250px; + height: 200px; background: var(--gradient); display: flex; align-items: center; justify-content: center; - font-size: 4rem; + font-size: 3rem; color: var(--white); } .team-member-info { - padding: 1.5rem; + padding: 1.25rem; } .team-member h3 { - font-size: 1.25rem; + font-size: 0.95rem; font-weight: 700; color: var(--text-dark); - margin-bottom: 0.25rem; + margin-bottom: 0.2rem; +} + +@media (min-width: 768px) { + .team-member h3 { + font-size: 1.1rem; + } } .team-member p { color: var(--secondary); font-weight: 600; - margin-bottom: 0.75rem; + margin-bottom: 0.5rem; + font-size: 0.85rem; } .team-member .bio { color: var(--text-light); - font-size: 0.95rem; -} - -.values-section { - padding: 4rem 2rem; - background: var(--white); -} - -.values-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); - gap: 2rem; - max-width: 1100px; - margin: 3rem auto 0; -} - -.value-card { - background: var(--white); - border: 1px solid rgba(30, 78, 156, 0.08); - border-radius: 16px; - padding: 2rem; - text-align: center; - box-shadow: var(--shadow); - transition: var(--transition); -} - -.value-card:hover { - transform: translateY(-8px); - box-shadow: var(--shadow-hover); - border-color: rgba(30, 78, 156, 0.15); -} - -.value-icon { - width: 60px; - height: 60px; - background: var(--gradient); - border-radius: 12px; - display: flex; - align-items: center; - justify-content: center; - color: var(--white); - font-size: 1.5rem; - margin: 0 auto 1rem; -} - -.value-card h3 { - font-size: 1.25rem; - font-weight: 700; - color: var(--text-dark); - margin-bottom: 0.75rem; -} - -.value-card p { - color: var(--text-light); - font-size: 0.95rem; - line-height: 1.6; -} - -.stats-section { - background: linear-gradient( - 180deg, - rgba(30, 78, 156, 0.06), - rgba(0, 212, 255, 0.06) - ); - padding: 4rem 2rem; -} - -.stats-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 2rem; - max-width: 1100px; - margin: 3rem auto 0; -} - -.stat-box { - text-align: center; - padding: 2rem; - background: var(--white); - border-radius: 16px; - box-shadow: var(--shadow); - transition: var(--transition); -} - -.stat-box:hover { - transform: translateY(-4px); -} - -.stat-number { - font-size: 2.5rem; - font-weight: 700; - color: var(--primary); - margin-bottom: 0.5rem; -} - -.stat-label { - color: var(--text-light); - font-weight: 600; -} - -.faq-section { - padding: 4rem 2rem; - background: var(--white); -} - -.faq-container { - max-width: 800px; - margin: 3rem auto 0; -} - -.faq-item { - border: 1px solid rgba(30, 78, 156, 0.08); - border-radius: 12px; - margin-bottom: 1rem; - overflow: hidden; - background: var(--white); - box-shadow: var(--shadow); - transition: var(--transition); -} - -.faq-item.open { - box-shadow: var(--shadow-hover); - border-color: rgba(30, 78, 156, 0.15); -} - -.faq-question { - padding: 1.5rem; - cursor: pointer; - display: flex; - justify-content: space-between; - align-items: center; - transition: background 0.3s ease; - user-select: none; -} - -.faq-question:hover { - background: var(--bg-light); -} - -.faq-question h3 { - margin: 0; - font-size: 1.1rem; - color: var(--text-dark); -} - -.faq-question i { - color: var(--secondary); - transition: transform 0.3s ease; - font-size: 1rem; -} - -.faq-item.open .faq-question i { - transform: rotate(180deg); -} - -.faq-answer { - max-height: 0; - overflow: hidden; - transition: max-height 0.3s ease; - background: var(--bg-light); -} - -.faq-item.open .faq-answer { - max-height: 500px; -} - -.faq-answer p { - padding: 0 1.5rem 1.5rem; - color: var(--text-dark); - line-height: 1.7; -} - -.about-image { - display: flex; - align-items: center; - justify-content: center; + font-size: 0.85rem; + line-height: 1.5; } /* ======================= - Development Status Section (Improved) + Development Status ======================= */ .development-status { - padding: 60px 20px; + padding: 3rem 1rem; background: linear-gradient(135deg, #f8fafc 0%, #f0f4f9 100%); border-top: 1px solid rgba(51, 124, 242, 0.1); } +@media (min-width: 768px) { + .development-status { + padding: 4rem 2rem; + } +} + .status-container { max-width: 1000px; margin: 0 auto; } .development-status h2 { - font-size: 32px; + font-size: clamp(1.5rem, 4vw, 2rem); color: var(--text-dark); - margin-bottom: 15px; + margin-bottom: 1rem; text-align: center; font-weight: 700; } .status-intro { - font-size: 16px; + font-size: 0.9rem; color: var(--text-light); text-align: center; - margin-bottom: 40px; - line-height: 1.7; - max-width: 700px; + margin-bottom: 2rem; + line-height: 1.6; + max-width: 600px; margin-left: auto; margin-right: auto; } .status-grid { display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: 20px; - margin-bottom: 40px; + grid-template-columns: 1fr; + gap: 1rem; + margin-bottom: 2rem; +} + +@media (min-width: 640px) { + .status-grid { + grid-template-columns: repeat(2, 1fr); + gap: 1.25rem; + } +} + +@media (min-width: 1024px) { + .status-grid { + grid-template-columns: repeat(3, 1fr); + } } .status-item { background: var(--white); - border-radius: 12px; - padding: 25px; + border-radius: 10px; + padding: 1.25rem; border: 1px solid rgba(51, 124, 242, 0.1); - position: relative; transition: var(--transition); } .status-item:hover { - transform: translateY(-4px); + transform: translateY(-3px); box-shadow: var(--shadow-hover); border-color: rgba(51, 124, 242, 0.2); } .status-badge { display: inline-block; - font-size: 12px; + font-size: 11px; font-weight: 700; - padding: 6px 12px; - border-radius: 6px; - margin-bottom: 15px; - letter-spacing: 0.5px; + padding: 4px 10px; + border-radius: 4px; + margin-bottom: 0.75rem; + letter-spacing: 0.4px; text-transform: uppercase; } @@ -1497,27 +1498,33 @@ body { .status-item h4 { color: var(--text-dark); - font-size: 16px; - margin: 0 0 8px 0; + font-size: 0.95rem; + margin: 0 0 0.5rem 0; font-weight: 600; } .status-item p { color: var(--text-light); - font-size: 14px; + font-size: 0.85rem; margin: 0; - line-height: 1.6; + line-height: 1.5; } .feedback-cta { background: var(--white); border: 2px solid rgba(51, 124, 242, 0.2); - border-radius: 12px; - padding: 30px; + border-radius: 10px; + padding: 1.75rem; text-align: center; transition: var(--transition); } +@media (min-width: 768px) { + .feedback-cta { + padding: 2.5rem; + } +} + .feedback-cta:hover { border-color: rgba(51, 124, 242, 0.4); box-shadow: var(--shadow); @@ -1525,16 +1532,16 @@ body { .feedback-cta h3 { color: var(--text-dark); - font-size: 20px; - margin: 0 0 12px 0; + font-size: clamp(1rem, 3vw, 1.5rem); + margin: 0 0 0.75rem 0; font-weight: 700; } .feedback-cta p { color: var(--text-light); - font-size: 15px; - margin: 0; - line-height: 1.7; + font-size: 0.9rem; + margin: 0 0 1rem 0; + line-height: 1.6; } .feedback-cta a { @@ -1550,76 +1557,194 @@ body { } /* ======================= - Article layout for newsletter detail + Article Layout ======================= */ .article-wrap { max-width: 1200px; - margin: 6rem auto 3rem; - padding: 0 2rem; + margin: 4rem auto 2rem; + padding: 0 1rem; display: grid; - grid-template-columns: 280px 1fr; + grid-template-columns: 1fr; gap: 2rem; } +@media (min-width: 900px) { + .article-wrap { + margin: 6rem auto 3rem; + grid-template-columns: 250px 1fr; + gap: 3rem; + } +} + .article-aside { - position: sticky; - top: 84px; - align-self: start; + position: static; +} + +@media (min-width: 900px) { + .article-aside { + position: sticky; + top: 80px; + align-self: start; + } } .article-meta { background: var(--white); border: 1px solid rgba(30, 78, 156, 0.08); - border-radius: 16px; - padding: 1rem; + border-radius: 10px; + padding: 0.75rem; box-shadow: var(--shadow); - margin-top: 0.75rem; + margin-bottom: 1rem; } .article-title { - font-size: 1.1rem; - margin: 0 0 0.5rem 0; + font-size: 0.9rem; + margin: 0 0 0.4rem 0; font-weight: 600; } .meta-row { display: flex; align-items: center; - gap: 0.5rem; - color: var(--text-light); - font-size: 0.95rem; - margin: 0.25rem 0; -} - -.article-tags { - display: flex; - flex-wrap: wrap; gap: 0.4rem; - margin-top: 0.5rem; -} - -.article-tags .tag { + color: var(--text-light); font-size: 0.8rem; - padding: 0.25rem 0.5rem; - background: rgba(51, 124, 242, 0.08); - color: var(--secondary); - border: 1px solid rgba(51, 124, 242, 0.2); - border-radius: 999px; + margin: 0.2rem 0; } +.back-navigation { + max-width: 1100px; + margin: 0 auto 2rem; + padding: 0 1rem; +} + +.back-link { + color: var(--secondary); + text-decoration: none; + font-weight: 600; + display: inline-flex; + align-items: center; + gap: 0.4rem; + transition: gap 0.3s ease; + font-size: 0.9rem; +} + +.back-link:hover { + gap: 0.6rem; +} + +.newsletter-content { + margin-top: 1rem; + background: var(--white); + border: 1px solid rgba(30, 78, 156, 0.08); + border-radius: 10px; + padding: 1.25rem; + box-shadow: var(--shadow); +} + +@media (min-width: 768px) { + .newsletter-content { + margin-top: 1.25rem; + border-radius: 16px; + padding: 1.5rem; + } +} + +.newsletter-content h2, +.newsletter-content h3 { + margin-top: 0.75rem; + margin-bottom: 0.4rem; +} + +.newsletter-content p, +.newsletter-content li { + color: var(--text-dark); + font-size: 0.9rem; + line-height: 1.6; +} + +.newsletter-content ul { + padding-left: 1rem; +} + +.newsletter-content blockquote { + margin: 0.75rem 0; + padding: 0.75rem 1rem; + background: rgba(0, 212, 255, 0.08); + border-left: 4px solid var(--accent); + border-radius: 8px; + color: var(--text-dark); + font-size: 0.9rem; +} + +.newsletter-actions { + display: flex; + flex-direction: column; + gap: 0.5rem; + margin-top: 1rem; +} + +@media (min-width: 640px) { + .newsletter-actions { + flex-direction: row; + flex-wrap: wrap; + } +} + +.action-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.4rem; + border-radius: 8px; + padding: 0.6rem 1rem; + cursor: pointer; + border: none; + text-decoration: none; + font-weight: 600; + transition: var(--transition); + font-size: 0.85rem; + width: 100%; +} + +@media (min-width: 640px) { + .action-btn { + width: auto; + } +} + +.action-btn.primary { + background: var(--gradient); + color: var(--white); +} + +.action-btn.secondary { + background: var(--bg-light); + color: var(--text-dark); +} + +.action-btn:hover, +.action-btn:focus { + transform: translateY(-2px); +} + +/* ======================= + Table of Contents + ======================= */ .toc { margin-top: 1rem; background: var(--white); border: 1px solid rgba(30, 78, 156, 0.08); - border-radius: 16px; - padding: 0.75rem 0.75rem 0.75rem 1rem; + border-radius: 10px; + padding: 0.6rem; box-shadow: var(--shadow); } .toc-title { font-weight: 700; - margin-bottom: 0.5rem; + margin-bottom: 0.4rem; color: var(--text-dark); + font-size: 0.85rem; } #toc-list { @@ -1628,13 +1753,13 @@ body { } #toc-list li { - margin: 0.25rem 0; + margin: 0.2rem 0; } #toc-list a { text-decoration: none; color: var(--text-dark); - font-size: 0.95rem; + font-size: 0.85rem; transition: color 0.3s ease; } @@ -1643,384 +1768,405 @@ body { } .toc-h3 { - margin-left: 0.75rem; - opacity: 0.9; + margin-left: 0.5rem; + opacity: 0.8; } -.article-main .article-hero { +/* ======================= + Article Hero + ======================= */ +.article-hero { display: flex; align-items: center; - gap: 0.75rem; + gap: 0.5rem; margin-bottom: 0.75rem; } .article-hero .newsletter-icon { - width: 44px; - height: 44px; - border-radius: 12px; + width: 36px; + height: 36px; + border-radius: 8px; background: var(--gradient); color: var(--white); display: inline-flex; align-items: center; justify-content: center; + font-size: 0.9rem; + flex-shrink: 0; +} + +.article-main .article-hero { + margin-bottom: 1rem; +} + +.article-main .article-hero h1 { + font-size: clamp(1.3rem, 4vw, 1.8rem); + font-weight: 700; + margin: 0; } /* ======================= - Responsive Design + Values Section ======================= */ +.values-section { + padding: 2rem 1rem; + background: var(--white); +} -/* Tablet adjustments */ -@media (max-width: 1024px) { - .hero-container { - gap: 3rem; - } - .hero-visual { - height: 460px; - } - .phone-mockup { - width: 280px; - height: 560px; - } - .app-logo { - font-size: 1.8rem; +@media (min-width: 768px) { + .values-section { + padding: 4rem 2rem; } } -/* Mobile layout and hamburger menu */ -@media (max-width: 768px) { - :root { - --navbar-height: 60px; - } +.values-grid { + display: grid; + grid-template-columns: 1fr; + gap: 1.25rem; + max-width: 1100px; + margin: 2rem auto 0; +} - .nav-container { - padding: 0 1rem; +@media (min-width: 640px) { + .values-grid { + grid-template-columns: repeat(2, 1fr); } +} - .nav-toggle { - display: flex; - } - - .nav-links { - position: absolute; - top: 60px; - left: 1rem; - right: 1rem; - display: none; - flex-direction: column; - gap: 0; - list-style: none; - background: var(--white); - border: 1px solid rgba(2, 6, 23, 0.08); - border-radius: 12px; - box-shadow: var(--shadow); - padding: 8px; - z-index: 1001; - } - - .nav-links.open { - display: flex; - } - - .nav-links li { - width: 100%; - } - - .nav-links a { - display: block; - width: 100%; - padding: 12px 14px; - border-radius: 8px; - } - - .nav-links a:hover { - background: var(--bg-light); - } - - .nav-links a::after { - display: none; - } - - .nav-toggle.active .bar:nth-child(1) { - transform: translateY(7px) rotate(45deg); - } - .nav-toggle.active .bar:nth-child(2) { - opacity: 0; - } - .nav-toggle.active .bar:nth-child(3) { - transform: translateY(-7px) rotate(-45deg); - } - - .hero { - padding-top: calc(var(--navbar-height) + 12px); - } - - .hero-container { - grid-template-columns: 1fr; +@media (min-width: 1024px) { + .values-grid { + grid-template-columns: repeat(3, 1fr); gap: 2rem; - text-align: center; } +} - .hero-visual { - order: -1; - height: 360px; +.value-card { + background: var(--white); + border: 1px solid rgba(30, 78, 156, 0.08); + border-radius: 12px; + padding: 1.25rem; + text-align: center; + box-shadow: var(--shadow); + transition: var(--transition); +} + +@media (min-width: 768px) { + .value-card { + border-radius: 16px; + padding: 2rem; } +} - .phone-mockup { - width: 230px; - height: 460px; - padding: 16px; - border-radius: 36px; - transform: rotate(-5deg); - } +.value-card:hover { + transform: translateY(-6px); + box-shadow: var(--shadow-hover); + border-color: rgba(30, 78, 156, 0.15); +} - .screen { - border-radius: 22px; - } +.value-icon { + width: 48px; + height: 48px; + background: var(--gradient); + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + color: var(--white); + font-size: 1.1rem; + margin: 0 auto 0.75rem; +} - .app-brand { - gap: 0.4rem; - margin-bottom: 0.35rem; - } - - .app-brand-icon { - width: 26px; - height: 26px; - border-radius: 5px; - } - - .app-logo { - font-size: 1.4rem; - } - - .screen .stats-grid { - gap: 0.6rem; - margin-top: 1.2rem; - } - - .screen .stat-card { - padding: 0.8rem 0.6rem; +@media (min-width: 768px) { + .value-icon { + width: 60px; + height: 60px; border-radius: 12px; + font-size: 1.5rem; + margin-bottom: 1rem; } +} - .screen .stat-number { - font-size: 1.3rem; +.value-card h3 { + font-size: 1rem; + font-weight: 700; + color: var(--text-dark); + margin-bottom: 0.5rem; +} + +@media (min-width: 768px) { + .value-card h3 { + font-size: 1.1rem; + margin-bottom: 0.75rem; } +} - .screen .stat-label { - font-size: 0.65rem; - } +.value-card p { + color: var(--text-light); + font-size: 0.85rem; + line-height: 1.5; +} - .page-header { - padding: 7rem 0 2rem; - } +/* ======================= + Stats Section + ======================= */ +.stats-section { + background: linear-gradient(180deg, rgba(30, 78, 156, 0.06), + rgba(0, 212, 255, 0.06)); + padding: 2rem 1rem; +} - .main-content { - padding: 1.25rem 1rem 3rem; - } - - .about-content { - grid-template-columns: 1fr; - } - - .hero-section { +@media (min-width: 768px) { + .stats-section { padding: 4rem 2rem; } +} - .contact-form { - padding: 1.5rem; - } - - .team-grid { - grid-template-columns: 1fr; - } - - .values-section { - padding: 2rem 1rem; - } - - .stats-section { - padding: 2rem 1rem; - } +.stats-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; + max-width: 1100px; + margin: 2rem auto 0; +} +@media (min-width: 640px) { .stats-grid { grid-template-columns: repeat(2, 1fr); - gap: 1rem; + gap: 1.5rem; } +} +@media (min-width: 1024px) { + .stats-grid { + grid-template-columns: repeat(4, 1fr); + gap: 2rem; + } +} + +.stat-box { + text-align: center; + padding: 1.25rem; + background: var(--white); + border-radius: 10px; + box-shadow: var(--shadow); + transition: var(--transition); +} + +@media (min-width: 768px) { .stat-box { - padding: 1.5rem; + padding: 1.75rem; + border-radius: 16px; } +} +.stat-box:hover { + transform: translateY(-3px); +} + +.stat-number { + font-size: 1.75rem; + font-weight: 700; + color: var(--primary); + margin-bottom: 0.4rem; +} + +@media (min-width: 768px) { .stat-number { - font-size: 1.8rem; + font-size: 2rem; } +} +.stat-label { + color: var(--text-light); + font-weight: 600; + font-size: 0.85rem; +} + +/* ======================= + FAQ Section + ======================= */ +.faq-section { + padding: 2rem 1rem; + background: var(--white); +} + +@media (min-width: 768px) { .faq-section { - padding: 2rem 1rem; + padding: 4rem 2rem; } +} +.faq-container { + max-width: 700px; + margin: 2rem auto 0; +} + +.faq-item { + border: 1px solid rgba(30, 78, 156, 0.08); + border-radius: 10px; + margin-bottom: 0.75rem; + overflow: hidden; + background: var(--white); + box-shadow: var(--shadow); + transition: var(--transition); +} + +@media (min-width: 768px) { + .faq-item { + border-radius: 12px; + margin-bottom: 1rem; + } +} + +.faq-item.open { + box-shadow: var(--shadow-hover); + border-color: rgba(30, 78, 156, 0.15); +} + +.faq-question { + padding: 1rem; + cursor: pointer; + display: flex; + justify-content: space-between; + align-items: center; + transition: background 0.3s ease; + user-select: none; +} + +@media (min-width: 768px) { .faq-question { - padding: 1rem; + padding: 1.25rem; } +} +.faq-question:hover { + background: var(--bg-light); +} + +.faq-question h3 { + margin: 0; + font-size: 0.95rem; + color: var(--text-dark); + font-weight: 600; +} + +@media (min-width: 768px) { .faq-question h3 { font-size: 1rem; } +} +.faq-question i { + color: var(--secondary); + transition: transform 0.3s ease; + font-size: 0.85rem; + flex-shrink: 0; +} + +.faq-item.open .faq-question i { + transform: rotate(180deg); +} + +.faq-answer { + max-height: 0; + overflow: hidden; + transition: max-height 0.3s ease; + background: var(--bg-light); +} + +.faq-item.open .faq-answer { + max-height: 500px; +} + +.faq-answer p { + padding: 0 1rem 1rem; + color: var(--text-dark); + line-height: 1.6; + font-size: 0.9rem; +} + +@media (min-width: 768px) { .faq-answer p { - padding: 0 1rem 1rem; - font-size: 0.95rem; - } - - .cta-section { - margin: 2rem 1rem !important; - padding: 1.5rem !important; - } - - .cta-section h3 { - font-size: 1.25rem; - } - - .cta-section > p { - font-size: 0.9rem; - } - - .email-form { - flex-direction: column; - gap: 0.75rem; - } - - .email-input, - .notify-btn { - width: 100%; - } - - .article-wrap { - grid-template-columns: 1fr; - } - .article-aside { - position: static; - } - - .status-grid { - grid-template-columns: 1fr; - } - - .development-status h2 { - font-size: 24px; - } - - .feedback-cta { - padding: 20px; + padding: 0 1.25rem 1.25rem; } } -/* Small phones */ -@media (max-width: 420px) { - .hero { - padding-top: calc(var(--navbar-height) + 6px); - } +.about-image { + display: flex; + align-items: center; + justify-content: center; +} - .hero-visual { - height: 320px; - } +.about-image div { + width: 100%; + height: 300px; + border-radius: 12px; + display: flex; + align-items: center; + justify-content: center; + font-size: 3rem; +} - .phone-mockup { - width: 200px; +@media (min-width: 768px) { + .about-image div { height: 400px; - padding: 14px; - border-radius: 34px; - transform: rotate(-5deg) scale(0.96); - transform-origin: center top; - } - - .screen { - border-radius: 20px; - } - - .app-brand-icon { - width: 24px; - height: 24px; - } - - .app-logo { - font-size: 1.25rem; - } - - .screen .stats-grid { - gap: 0.5rem; - margin-top: 1rem; - } - - .screen .stat-card { - padding: 0.55rem; - border-radius: 10px; - } - - .screen .stat-number { - font-size: 1rem; - } - - .screen .stat-label { - font-size: 0.6rem; - } - - .hero-content h1 { - font-size: 1.75rem; - } - - .hero-content .subtitle { - font-size: 1rem; - } - - .section-header h2 { - font-size: 1.5rem; + border-radius: 16px; } } -/* Very narrow devices */ -@media (max-width: 360px) { - .hero-visual { - height: 290px; - } +/* ======================= + Empty State + ======================= */ +.empty-state { + text-align: center; + padding: 3rem 1rem; +} - .phone-mockup { - width: 184px; - height: 368px; - padding: 12px; - border-radius: 30px; - transform: rotate(-5deg) scale(0.94); - } - - .app-brand-icon { - width: 22px; - height: 22px; - } - - .app-logo { - font-size: 1.15rem; - } - - .screen .stats-grid { - gap: 0.45rem; - margin-top: 0.9rem; - } - - .screen .stat-card { - padding: 0.5rem; - border-radius: 9px; - } - - .screen .stat-number { - font-size: 0.95rem; - } - - .screen .stat-label { - font-size: 0.58rem; +@media (min-width: 768px) { + .empty-state { + padding: 4rem 2rem; } } -/* Anchor scroll offset */ +.empty-icon { + font-size: 3rem; + margin-bottom: 1rem; + opacity: 0.5; +} + +.empty-state h3 { + font-size: 1.25rem; + font-weight: 700; + color: var(--text-dark); + margin-bottom: 0.5rem; +} + +.empty-state p { + color: var(--text-light); + margin-bottom: 1.5rem; +} + +.subscribe-prompt { + display: inline-flex; + align-items: center; + gap: 0.4rem; + background: var(--gradient); + color: var(--white); + padding: 0.8rem 1.5rem; + border-radius: 50px; + text-decoration: none; + font-weight: 600; + transition: var(--transition); +} + +.subscribe-prompt:hover { + transform: translateY(-2px); + box-shadow: var(--shadow); +} + +/* ======================= + Accessibility & General + ======================= */ main, .section, .page-header, @@ -2028,19 +2174,27 @@ main, scroll-margin-top: calc(var(--navbar-height) + 12px); } -/* Hard guards for navbar */ -.navbar .logo { - color: var(--text-dark) !important; +@media (min-width: 768px) { + main, + .section, + .page-header, + #features { + scroll-margin-top: calc(var(--navbar-height) + 20px); + } } -.navbar .logo .logo-accent { - color: var(--accent) !important; +/* Focus states for keyboard navigation */ +a:focus, +button:focus { + outline: 2px solid var(--secondary); + outline-offset: 2px; } -.navbar, -.navbar * { - text-transform: none; - letter-spacing: normal; - line-height: normal; - font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important; +/* Reduce motion for accessibility */ +@media (prefers-reduced-motion: reduce) { + * { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } } \ No newline at end of file diff --git a/templates/base.html b/templates/base.html index e3e0f9f..207845e 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,145 +1,134 @@ -
- - -