landing/templates/newsletters.html
Cipher Vance 1a66ebdfc4 feat: Complete UI/UX redesign with modern responsive design
- Redesign landing page with contemporary gradient backgrounds and glassmorphism
- Add 3D phone mockup with floating animation and interactive stats display
- Implement modern navigation with blur backdrop and smooth scroll effects
- Update feature cards with icons, hover animations, and improved typography
- Integrate countdown timer into hero CTA section with glassmorphic styling
- Add responsive email signup form with enhanced validation

- Modernize newsletters listing page with card-based grid layout
- Add empty state design with call-to-action for newsletter subscription
- Implement smooth loading animations and hover effects for newsletter cards
- Update navigation consistency across all pages

- Redesign newsletter detail page with professional article layout
- Add reading metadata display (date, reading time, author, tags)
- Enhance content typography with proper heading hierarchy and styling
- Implement share functionality with Web Share API and clipboard fallback
- Add print-optimized styles and action buttons
- Improve mobile reading experience with responsive design

- Establish consistent design system with CSS custom properties
- Use CSS Grid and Flexbox for modern, flexible layouts
- Add comprehensive mobile responsiveness (320px to desktop)
- Implement smooth animations and micro-interactions throughout
- Maintain accessibility with semantic HTML and proper contrast ratios
- Preserve all existing Flask template functionality and JavaScript features

Breaking changes: Complete visual redesign requires updated asset references
Performance: Optimized CSS with efficient animations and modern layout techniques
2025-08-24 12:47:15 -05:00

91 lines
No EOL
3.6 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RideAware - Newsletters</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='css/newsletter_styles.css') }}">
</head>
<body>
<!-- Navigation -->
<nav class="navbar">
<div class="nav-container">
<a href="/" class="logo">Ride<span class="logo-accent">Aware</span></a>
<ul class="nav-links">
<li><a href="/">Home</a></li>
<li><a href="/newsletters" class="active">Newsletters</a></li>
</ul>
</div>
</nav>
<!-- Page Header -->
<section class="page-header">
<div class="page-header-content">
<div class="header-icon">
<i class="fas fa-newspaper"></i>
</div>
<h1>RideAware Newsletters</h1>
<p>Stay updated with the latest cycling tips, training insights, and product updates from our team.</p>
</div>
</section>
<!-- Main Content -->
<main class="main-content">
{% if newsletters %}
<div class="newsletters-grid">
{% for nl in newsletters %}
<article class="newsletter-card">
<div class="newsletter-header">
<div class="newsletter-icon">
<i class="fas fa-envelope-open-text"></i>
</div>
<div class="newsletter-info">
<h2>
<a href="/newsletter/{{ nl['id'] }}">{{ nl['subject'] }}</a>
</h2>
</div>
</div>
<div class="newsletter-date">
<i class="fas fa-calendar-alt"></i>
<span>Sent on: {{ nl['sent_at'] }}</span>
</div>
<div class="newsletter-excerpt">
{% if nl.get('preview') %}
{{ nl['preview'][:150] }}...
{% else %}
Get the latest updates on cycling training, performance tips, and RideAware features in this newsletter edition.
{% endif %}
</div>
<a href="/newsletter/{{ nl['id'] }}" class="read-more-btn">
Read Full Newsletter
<i class="fas fa-arrow-right"></i>
</a>
</article>
{% endfor %}
</div>
{% else %}
<div class="empty-state">
<div class="empty-icon">
<i class="fas fa-inbox"></i>
</div>
<h3>No Newsletters Yet</h3>
<p>We're working on some amazing content for you. Subscribe to be the first to know when we publish our newsletters!</p>
<a href="/" class="subscribe-prompt">
<i class="fas fa-bell"></i>
Subscribe for Updates
</a>
</div>
{% endif %}
</main>
<!-- Footer -->
<footer class="footer">
<p>&copy; 2025 RideAware. All rights reserved.</p>
</footer>
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
</body>
</html>