diff options
Diffstat (limited to 'static/blog-styles.css')
-rw-r--r-- | static/blog-styles.css | 765 |
1 files changed, 765 insertions, 0 deletions
diff --git a/static/blog-styles.css b/static/blog-styles.css new file mode 100644 index 0000000..3925008 --- /dev/null +++ b/static/blog-styles.css @@ -0,0 +1,765 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --primary-color: #6366f1; + --primary-dark: #4f46e5; + --secondary-color: #f1f5f9; + --text-primary: #1e293b; + --text-secondary: #64748b; + --background: #ffffff; + --surface: #f8fafc; + --border: #e2e8f0; + --success: #10b981; + --warning: #f59e0b; + --error: #ef4444; + --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + --shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1); + --gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); +} + +body { + font-family: 'Inter', sans-serif; + line-height: 1.6; + color: var(--text-primary); + background: var(--background); +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; +} + +/* Navigation */ +.navbar { + position: fixed; + top: 0; + width: 100%; + background: rgba(255, 255, 255, 0.95); + backdrop-filter: blur(10px); + z-index: 1000; + border-bottom: 1px solid var(--border); +} + +.nav-container { + max-width: 1200px; + margin: 0 auto; + padding: 1rem 2rem; + display: flex; + justify-content: space-between; + align-items: center; +} + +.nav-logo { + font-size: 1.5rem; + font-weight: 700; + background: var(--gradient); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-decoration: none; +} + +.nav-menu { + display: flex; + list-style: none; + gap: 2rem; +} + +.nav-link { + text-decoration: none; + color: var(--text-primary); + font-weight: 500; + transition: color 0.3s ease; +} + +.nav-link:hover, +.nav-link.active { + color: var(--primary-color); +} + +.nav-actions { + display: flex; + align-items: center; + gap: 1rem; +} + +/* Buttons */ +.btn { + padding: 0.75rem 1.5rem; + border: none; + border-radius: 0.5rem; + font-weight: 600; + cursor: pointer; + transition: all 0.3s ease; + text-decoration: none; + display: inline-block; + font-size: 0.875rem; +} + +.btn-small { + padding: 0.5rem 1rem; + font-size: 0.75rem; +} + +.btn-primary { + background: var(--gradient); + color: white; + box-shadow: var(--shadow); +} + +.btn-primary:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.btn-ghost { + background: transparent; + color: var(--text-primary); + border: none; +} + +.btn-ghost:hover { + background: var(--surface); +} + +/* Hero Section */ +.hero { + padding: 8rem 0 4rem; + background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); + text-align: center; +} + +.hero-title { + font-size: 3.5rem; + font-weight: 700; + line-height: 1.1; + margin-bottom: 1.5rem; +} + +.gradient-text { + background: var(--gradient); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.hero-subtitle { + font-size: 1.25rem; + color: var(--text-secondary); + max-width: 800px; + margin: 0 auto 2rem; + line-height: 1.6; +} + +.hero-search { + max-width: 500px; + margin: 0 auto; +} + +.search-container { + position: relative; + display: flex; + align-items: center; +} + +.search-input { + width: 100%; + padding: 1rem 1.5rem; + padding-right: 4rem; + border: 2px solid var(--border); + border-radius: 0.75rem; + font-size: 1rem; + background: white; + transition: border-color 0.3s ease; +} + +.search-input:focus { + outline: none; + border-color: var(--primary-color); +} + +.search-btn { + position: absolute; + right: 0.75rem; + background: var(--primary-color); + color: white; + border: none; + border-radius: 0.5rem; + padding: 0.75rem; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.search-btn:hover { + background: var(--primary-dark); +} + +/* Blog Content */ +.blog-content { + padding: 4rem 0; +} + +.blog-layout { + display: grid; + grid-template-columns: 300px 1fr; + gap: 3rem; +} + +/* Sidebar */ +.blog-sidebar { + position: sticky; + top: 6rem; + height: fit-content; +} + +.sidebar-section { + background: white; + border-radius: 1rem; + padding: 1.5rem; + margin-bottom: 2rem; + box-shadow: var(--shadow); +} + +.sidebar-section h3 { + font-size: 1.125rem; + font-weight: 600; + margin-bottom: 1rem; + color: var(--text-primary); +} + +.category-list { + list-style: none; +} + +.category-list li { + margin-bottom: 0.5rem; +} + +.category-link { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.5rem 0.75rem; + border-radius: 0.5rem; + text-decoration: none; + color: var(--text-secondary); + font-weight: 500; + transition: all 0.3s ease; +} + +.category-link:hover, +.category-link.active { + background: var(--surface); + color: var(--primary-color); +} + +.count { + font-size: 0.75rem; + background: var(--border); + color: var(--text-secondary); + padding: 0.25rem 0.5rem; + border-radius: 1rem; +} + +.category-link.active .count { + background: var(--primary-color); + color: white; +} + +.recent-posts { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.recent-post { + padding-bottom: 1rem; + border-bottom: 1px solid var(--border); +} + +.recent-post:last-child { + border-bottom: none; + padding-bottom: 0; +} + +.recent-post-meta { + margin-bottom: 0.5rem; +} + +.recent-post-date { + font-size: 0.75rem; + color: var(--text-secondary); +} + +.recent-post h4 { + font-size: 0.875rem; + line-height: 1.4; +} + +.recent-post h4 a { + text-decoration: none; + color: var(--text-primary); + transition: color 0.3s ease; +} + +.recent-post h4 a:hover { + color: var(--primary-color); +} + +.newsletter-signup p { + font-size: 0.875rem; + color: var(--text-secondary); + margin-bottom: 1rem; +} + +.newsletter-form { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.newsletter-input { + padding: 0.75rem; + border: 2px solid var(--border); + border-radius: 0.5rem; + font-size: 0.875rem; +} + +.newsletter-input:focus { + outline: none; + border-color: var(--primary-color); +} + +/* Main Content */ +.blog-main { + min-height: 100vh; +} + +.blog-filters { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 2rem; + padding: 1rem; + background: white; + border-radius: 0.75rem; + box-shadow: var(--shadow); +} + +.filter-group { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.filter-group label { + font-weight: 500; + color: var(--text-secondary); +} + +.filter-select { + padding: 0.5rem 1rem; + border: 2px solid var(--border); + border-radius: 0.5rem; + background: white; + cursor: pointer; +} + +.filter-select:focus { + outline: none; + border-color: var(--primary-color); +} + +/* Blog Grid */ +.blog-grid { + display: grid; + gap: 2rem; + margin-bottom: 3rem; +} + +.blog-post { + background: white; + border-radius: 1rem; + overflow: hidden; + box-shadow: var(--shadow); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.blog-post:hover { + transform: translateY(-5px); + box-shadow: var(--shadow-lg); +} + +.blog-post.featured { + grid-column: 1 / -1; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0; +} + +.post-image { + position: relative; + overflow: hidden; +} + +.post-image img { + width: 100%; + height: 250px; + object-fit: cover; + transition: transform 0.3s ease; +} + +.blog-post:hover .post-image img { + transform: scale(1.05); +} + +.post-badge { + position: absolute; + top: 1rem; + left: 1rem; + background: var(--gradient); + color: white; + padding: 0.5rem 1rem; + border-radius: 1rem; + font-size: 0.75rem; + font-weight: 600; +} + +.post-content { + padding: 2rem; +} + +.post-meta { + display: flex; + align-items: center; + gap: 1rem; + margin-bottom: 1rem; + font-size: 0.875rem; +} + +.post-category { + background: var(--surface); + color: var(--primary-color); + padding: 0.25rem 0.75rem; + border-radius: 1rem; + font-weight: 500; +} + +.post-date, +.post-read-time { + color: var(--text-secondary); +} + +.post-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.3; + margin-bottom: 1rem; + color: var(--text-primary); +} + +.blog-post.featured .post-title { + font-size: 2rem; +} + +.post-excerpt { + color: var(--text-secondary); + line-height: 1.6; + margin-bottom: 1.5rem; +} + +.post-footer { + display: flex; + justify-content: space-between; + align-items: center; +} + +.post-author { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.author-avatar { + width: 32px; + height: 32px; + border-radius: 50%; + background: var(--gradient); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.75rem; + font-weight: 600; +} + +.author-name { + font-weight: 500; + color: var(--text-primary); +} + +.read-more { + color: var(--primary-color); + text-decoration: none; + font-weight: 600; + transition: color 0.3s ease; +} + +.read-more:hover { + color: var(--primary-dark); +} + +/* Pagination */ +.pagination { + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; + margin-top: 3rem; +} + +.pagination-btn { + padding: 0.75rem 1.5rem; + border: 2px solid var(--border); + background: white; + color: var(--text-primary); + border-radius: 0.5rem; + cursor: pointer; + font-weight: 500; + transition: all 0.3s ease; +} + +.pagination-btn:hover:not(:disabled) { + border-color: var(--primary-color); + color: var(--primary-color); +} + +.pagination-btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.pagination-numbers { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.pagination-number { + width: 40px; + height: 40px; + border: 2px solid var(--border); + background: white; + color: var(--text-primary); + border-radius: 0.5rem; + cursor: pointer; + font-weight: 500; + transition: all 0.3s ease; +} + +.pagination-number:hover, +.pagination-number.active { + border-color: var(--primary-color); + background: var(--primary-color); + color: white; +} + +.pagination-dots { + color: var(--text-secondary); + margin: 0 0.5rem; +} + +/* Newsletter CTA */ +.newsletter-cta { + padding: 4rem 0; + background: var(--text-primary); + color: white; + text-align: center; +} + +.newsletter-content h2 { + font-size: 2.5rem; + font-weight: 700; + margin-bottom: 1rem; +} + +.newsletter-content p { + font-size: 1.125rem; + opacity: 0.9; + margin-bottom: 2rem; +} + +.newsletter-form-large { + display: flex; + justify-content: center; + gap: 1rem; + margin-bottom: 1rem; + max-width: 500px; + margin-left: auto; + margin-right: auto; +} + +.newsletter-input-large { + flex: 1; + padding: 1rem 1.5rem; + border: none; + border-radius: 0.5rem; + font-size: 1rem; +} + +.newsletter-input-large:focus { + outline: none; +} + +.newsletter-note { + font-size: 0.875rem; + opacity: 0.7; +} + +/* Footer */ +.footer { + background: var(--text-primary); + color: white; + padding: 4rem 0 2rem; +} + +.footer-content { + display: grid; + grid-template-columns: 2fr 1fr 1fr 1fr; + gap: 3rem; + margin-bottom: 3rem; +} + +.footer-logo { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 1rem; +} + +.footer-section h4 { + font-weight: 600; + margin-bottom: 1rem; +} + +.footer-section ul { + list-style: none; +} + +.footer-section ul li { + margin-bottom: 0.5rem; +} + +.footer-section ul li a { + color: rgba(255, 255, 255, 0.8); + text-decoration: none; + transition: color 0.3s ease; +} + +.footer-section ul li a:hover { + color: white; +} + +.footer-bottom { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 2rem; + border-top: 1px solid rgba(255, 255, 255, 0.1); +} + +.footer-links { + display: flex; + gap: 2rem; +} + +.footer-links a { + color: rgba(255, 255, 255, 0.8); + text-decoration: none; + transition: color 0.3s ease; +} + +.footer-links a:hover { + color: white; +} + +/* Responsive Design */ +@media (max-width: 768px) { + .nav-menu { + display: none; + } + + .hero-title { + font-size: 2.5rem; + } + + .blog-layout { + grid-template-columns: 1fr; + gap: 2rem; + } + + .blog-sidebar { + position: static; + order: 2; + } + + .blog-post.featured { + grid-template-columns: 1fr; + } + + .blog-post.featured .post-title { + font-size: 1.5rem; + } + + .newsletter-form-large { + flex-direction: column; + } + + .footer-content { + grid-template-columns: 1fr; + text-align: center; + } + + .footer-bottom { + flex-direction: column; + gap: 1rem; + text-align: center; + } +} + +@media (max-width: 480px) { + .container { + padding: 0 1rem; + } + + .hero { + padding: 6rem 0 3rem; + } + + .hero-title { + font-size: 2rem; + } + + .post-content { + padding: 1.5rem; + } + + .post-title { + font-size: 1.25rem; + } + + .pagination { + flex-wrap: wrap; + gap: 0.5rem; + } + + .pagination-numbers { + order: -1; + width: 100%; + justify-content: center; + } +} |