From 38b608c34f6a499e53c2af2e77aeab963631de1c Mon Sep 17 00:00:00 2001 From: "Joseph.Rawlings" Date: Thu, 4 Dec 2025 06:43:58 -0500 Subject: [PATCH] feat: add server configuration statistics and enhance home page with new testimonials carousel, pricing comparison table, and interactive demo features for improved user engagement and experience --- .../Servers/Proxmox/views/server.blade.php | 26 + themes/lucentui/views/home.blade.php | 3700 ++++++++++++++++- 2 files changed, 3713 insertions(+), 13 deletions(-) diff --git a/extensions/Servers/Proxmox/views/server.blade.php b/extensions/Servers/Proxmox/views/server.blade.php index b5ef99bff..896766731 100644 --- a/extensions/Servers/Proxmox/views/server.blade.php +++ b/extensions/Servers/Proxmox/views/server.blade.php @@ -55,6 +55,32 @@ @endif + + {{-- Server Configuration Statistics --}} +
+
Server Configuration
+
+
+ CPU Cores + {{ $status->cpus ?? 'N/A' }} {{ ($status->cpus ?? 0) > 1 ? 'Cores' : 'Core' }} +
+
+ RAM Allocation + {{ round(($status->maxmem ?? 0) / (1024 * 1024 * 1024), 2) }} GiB +
+
+ Disk Capacity + {{ Illuminate\Support\Number::fileSize(bytes: $status->maxdisk ?? 0) }} +
+
+ Bandwidth + + Fair Use, Unmetered.
+ Throttled after exceeding 95% standard of average of all users combined. This implements fair throttling for QoS. Throttled at that point to 1MiB/s. +
+
+
+
diff --git a/themes/lucentui/views/home.blade.php b/themes/lucentui/views/home.blade.php index 01e809eac..360fc9bd2 100644 --- a/themes/lucentui/views/home.blade.php +++ b/themes/lucentui/views/home.blade.php @@ -233,6 +233,28 @@ button:focus-visible { 100% { transform: translateY(-100vh) rotate(720deg); opacity: 0; } } +/* Hero Video Background */ +.lucent-hero-video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + opacity: 0.15; + z-index: 0; +} + +.lucent-hero-video-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: linear-gradient(135deg, rgba(15, 23, 42, 0.9) 0%, rgba(30, 41, 59, 0.85) 100%); + z-index: 1; +} + /* Hero Bottom Fade */ .lucent-hero::after { content: ''; @@ -243,6 +265,7 @@ button:focus-visible { height: 180px; background: linear-gradient(to bottom, transparent, var(--background, #0f172a)); pointer-events: none; + z-index: 2; } /* Hero Content */ @@ -1674,6 +1697,195 @@ button:focus-visible { opacity: 0.85; } +/* ============================================ + TESTIMONIALS CAROUSEL + ============================================ */ + +.lucent-testimonials-section { + padding: clamp(3rem, 8vw, 5rem) 0; + background: linear-gradient(135deg, var(--lucent-dark-base) 0%, var(--lucent-dark-secondary) 50%, var(--lucent-dark-base) 100%); + position: relative; + overflow: hidden; +} + +.lucent-testimonials-section::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: + radial-gradient(ellipse 70% 50% at 50% 0%, rgba(139, 92, 246, 0.12) 0%, transparent 50%), + radial-gradient(ellipse 60% 40% at 0% 100%, rgba(59, 130, 246, 0.08) 0%, transparent 50%); + pointer-events: none; +} + +.lucent-testimonials-carousel { + position: relative; + max-width: 56rem; + margin: 0 auto; + padding: 2rem 3rem; +} + +.lucent-testimonials-track { + position: relative; + overflow: hidden; + border-radius: var(--lucent-radius-2xl); +} + +.lucent-testimonial-slide { + display: none; + opacity: 0; + transition: opacity 0.6s ease-in-out; + padding: 2.5rem; + background: linear-gradient(145deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0.02) 100%); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: var(--lucent-radius-2xl); + position: relative; + overflow: hidden; +} + +.lucent-testimonial-slide::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 3px; + background: linear-gradient(90deg, var(--lucent-primary), var(--lucent-secondary), var(--lucent-accent)); +} + +.lucent-testimonial-slide.active { + display: block; + opacity: 1; +} + +.lucent-testimonial-quote-icon { + width: 48px; + height: 48px; + margin-bottom: 1.5rem; + color: var(--lucent-primary); + opacity: 0.3; +} + +.lucent-testimonial-text { + font-size: 1.25rem; + line-height: 1.8; + font-weight: 400; + color: #e2e8f0; + margin-bottom: 2rem; + font-style: italic; +} + +.lucent-testimonial-author { + display: flex; + align-items: center; + gap: 1rem; +} + +.lucent-testimonial-avatar { + width: 56px; + height: 56px; + border-radius: 50%; + background: linear-gradient(135deg, var(--lucent-primary), var(--lucent-secondary)); + display: flex; + align-items: center; + justify-content: center; + color: white; + font-weight: 700; + font-size: 1.125rem; + border: 3px solid rgba(255, 255, 255, 0.1); +} + +.lucent-testimonial-info { + flex: 1; +} + +.lucent-testimonial-name { + font-size: 1.125rem; + font-weight: 700; + color: #f8fafc; + margin-bottom: 0.25rem; +} + +.lucent-testimonial-role { + font-size: 0.875rem; + color: #94a3b8; +} + +.lucent-testimonial-company { + font-size: 0.875rem; + color: var(--lucent-primary); + font-weight: 500; +} + +.lucent-testimonial-rating { + display: flex; + gap: 0.25rem; + color: #fbbf24; +} + +.lucent-carousel-controls { + display: flex; + justify-content: center; + align-items: center; + gap: 1.5rem; + margin-top: 2rem; +} + +.lucent-carousel-dots { + display: flex; + gap: 0.5rem; +} + +.lucent-carousel-dot { + width: 10px; + height: 10px; + border-radius: 50%; + background: rgba(255, 255, 255, 0.3); + border: none; + padding: 0; + cursor: pointer; + transition: all 0.3s ease; +} + +.lucent-carousel-dot:hover { + background: rgba(255, 255, 255, 0.5); + transform: scale(1.2); +} + +.lucent-carousel-dot.active { + width: 32px; + border-radius: 999px; + background: var(--lucent-primary); +} + +.lucent-carousel-btn { + width: 40px; + height: 40px; + border-radius: 50%; + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + color: white; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: all 0.3s ease; +} + +.lucent-carousel-btn:hover { + background: var(--lucent-primary); + border-color: var(--lucent-primary); + transform: scale(1.1); +} + +.lucent-carousel-btn:disabled { + opacity: 0.3; + cursor: not-allowed; +} + /* ============================================ PLATFORM CAPABILITIES - KVM Hypervisor ============================================ */ @@ -2119,6 +2331,1488 @@ button:focus-visible { justify-content: center; } +/* ============================================ + PRICING COMPARISON TABLE + ============================================ */ + +.lucent-pricing-section { + padding: clamp(3rem, 8vw, 5rem) 0; +} + +.lucent-pricing-toggle { + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; + margin-bottom: 3rem; +} + +.lucent-pricing-switch { + position: relative; + width: 60px; + height: 32px; + background: rgba(255, 255, 255, 0.1); + border-radius: 999px; + border: 1px solid rgba(255, 255, 255, 0.2); + cursor: pointer; + transition: all 0.3s ease; +} + +.lucent-pricing-switch-slider { + position: absolute; + width: 24px; + height: 24px; + background: white; + border-radius: 50%; + top: 3px; + left: 4px; + transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); +} + +.lucent-pricing-switch.active { + background: var(--lucent-primary); +} + +.lucent-pricing-switch.active .lucent-pricing-switch-slider { + transform: translateX(28px); +} + +.lucent-pricing-label { + font-weight: 600; + opacity: 0.6; + transition: opacity 0.3s ease; +} + +.lucent-pricing-label.active { + opacity: 1; + color: var(--lucent-primary); +} + +.lucent-pricing-badge { + display: inline-block; + padding: 0.25rem 0.75rem; + background: linear-gradient(135deg, var(--lucent-success), #059669); + color: white; + font-size: 0.75rem; + font-weight: 700; + border-radius: 999px; + margin-left: 0.5rem; + vertical-align: middle; +} + +.lucent-pricing-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; +} + +@media (max-width: 1024px) { + .lucent-pricing-grid { + grid-template-columns: 1fr; + gap: 1.25rem; + } +} + +.lucent-pricing-card { + background: linear-gradient(145deg, var(--background-secondary, #1e293b) 0%, rgba(30, 41, 59, 0.5) 100%); + border: 2px solid rgba(255, 255, 255, 0.08); + border-radius: var(--lucent-radius-2xl); + padding: 2rem; + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + overflow: hidden; +} + +.lucent-pricing-card.featured { + border-color: var(--lucent-primary); + transform: scale(1.05); + box-shadow: 0 20px 40px rgba(59, 130, 246, 0.2); +} + +.lucent-pricing-card.featured::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient(90deg, var(--lucent-primary), var(--lucent-secondary), var(--lucent-accent)); +} + +.lucent-pricing-card:hover { + transform: translateY(-8px); + border-color: rgba(59, 130, 246, 0.4); + box-shadow: 0 16px 32px rgba(59, 130, 246, 0.15); +} + +.lucent-pricing-header { + text-align: center; + margin-bottom: 1.5rem; + padding-bottom: 1.5rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); +} + +.lucent-pricing-name { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 0.5rem; +} + +.lucent-pricing-price { + font-size: 3rem; + font-weight: 800; + color: var(--lucent-primary); + margin-bottom: 0.5rem; +} + +.lucent-pricing-price-currency { + font-size: 1.5rem; + vertical-align: top; +} + +.lucent-pricing-period { + font-size: 0.875rem; + opacity: 0.6; +} + +.lucent-pricing-features { + display: flex; + flex-direction: column; + gap: 0.875rem; + margin-bottom: 2rem; +} + +.lucent-pricing-feature { + display: flex; + align-items: center; + gap: 0.75rem; + font-size: 0.9375rem; +} + +.lucent-pricing-feature-icon { + width: 20px; + height: 20px; + border-radius: 50%; + background: rgba(16, 185, 129, 0.15); + color: var(--lucent-success); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.lucent-pricing-cta { + width: 100%; + padding: 1rem; + background: var(--lucent-primary); + color: white; + border: none; + border-radius: var(--lucent-radius-lg); + font-weight: 600; + font-size: 1rem; + cursor: pointer; + transition: all 0.3s ease; + text-decoration: none; + display: block; + text-align: center; +} + +.lucent-pricing-cta:hover { + background: var(--lucent-primary-dark); + transform: translateY(-2px); + box-shadow: 0 8px 20px rgba(59, 130, 246, 0.4); +} + +.lucent-pricing-card.featured .lucent-pricing-cta { + background: linear-gradient(135deg, var(--lucent-primary), var(--lucent-secondary)); + box-shadow: 0 4px 16px rgba(59, 130, 246, 0.3); +} + +/* ============================================ + SECURITY SHOWCASE SECTION + ============================================ */ + +.lucent-security-section { + padding: clamp(3rem, 8vw, 5rem) 0; + background: linear-gradient(135deg, var(--lucent-dark-elevated), var(--lucent-dark-base)); + position: relative; + overflow: hidden; +} + +.lucent-security-section::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: + radial-gradient(ellipse 70% 50% at 30% 30%, rgba(239, 68, 68, 0.08) 0%, transparent 50%), + radial-gradient(ellipse 60% 40% at 70% 70%, rgba(245, 158, 11, 0.06) 0%, transparent 50%); + pointer-events: none; +} + +.lucent-security-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 1.5rem; + position: relative; + z-index: 1; +} + +@media (max-width: 1024px) { + .lucent-security-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 640px) { + .lucent-security-grid { + grid-template-columns: 1fr; + } +} + +.lucent-security-card { + background: linear-gradient(145deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)); + border: 1px solid rgba(239, 68, 68, 0.2); + border-radius: var(--lucent-radius-xl); + padding: 1.75rem; + text-align: center; + transition: all 0.4s ease; + position: relative; +} + +.lucent-security-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 3px; + background: linear-gradient(90deg, #ef4444, #f59e0b, #10b981); + opacity: 0; + transition: opacity 0.3s ease; +} + +.lucent-security-card:hover { + border-color: rgba(239, 68, 68, 0.4); + transform: translateY(-6px); + box-shadow: 0 12px 32px rgba(239, 68, 68, 0.15); +} + +.lucent-security-card:hover::before { + opacity: 1; +} + +.lucent-security-icon { + width: 64px; + height: 64px; + margin: 0 auto 1.25rem; + border-radius: var(--lucent-radius-lg); + background: linear-gradient(135deg, rgba(239, 68, 68, 0.15), rgba(245, 158, 11, 0.1)); + color: #ef4444; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease; +} + +.lucent-security-card:hover .lucent-security-icon { + transform: rotateY(180deg); +} + +.lucent-security-title { + font-size: 1.125rem; + font-weight: 700; + margin-bottom: 0.75rem; + color: #f8fafc; +} + +.lucent-security-desc { + font-size: 0.875rem; + line-height: 1.6; + opacity: 0.75; + color: #cbd5e1; +} + +/* ============================================ + PERFORMANCE METRICS VISUALIZATION + ============================================ */ + +.lucent-performance-section { + padding: clamp(3rem, 8vw, 5rem) 0; + background: linear-gradient(135deg, #0c4a6e 0%, #075985 50%, #0c4a6e 100%); + position: relative; + overflow: hidden; +} + +.lucent-performance-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 1.5rem; +} + +@media (max-width: 1024px) { + .lucent-performance-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 640px) { + .lucent-performance-grid { + grid-template-columns: 1fr; + } +} + +.lucent-metric-card { + background: linear-gradient(145deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.04)); + border: 1px solid rgba(255, 255, 255, 0.15); + border-radius: var(--lucent-radius-xl); + padding: 1.75rem; + text-align: center; + position: relative; + overflow: hidden; + transition: all 0.4s ease; +} + +.lucent-metric-card:hover { + transform: translateY(-6px); + border-color: rgba(255, 255, 255, 0.3); + box-shadow: 0 12px 32px rgba(59, 130, 246, 0.2); +} + +.lucent-metric-value { + font-size: 2.5rem; + font-weight: 800; + background: linear-gradient(135deg, #60a5fa, #a78bfa); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + margin-bottom: 0.5rem; +} + +.lucent-metric-label { + font-size: 0.875rem; + color: #cbd5e1; + opacity: 0.9; +} + +.lucent-metric-sublabel { + font-size: 0.75rem; + color: #94a3b8; + opacity: 0.7; + margin-top: 0.25rem; +} + +/* ============================================ + COUNTDOWN TIMER FOR OFFERS + ============================================ */ + +.lucent-offer-banner { + position: relative; + background: linear-gradient(135deg, #7c2d12, #b91c1c, #7c2d12); + color: white; + padding: 1rem; + text-align: center; + font-weight: 600; + border-bottom: 3px solid #dc2626; + animation: lucent-offer-pulse 2s ease-in-out infinite; +} + +@keyframes lucent-offer-pulse { + 0%, 100% { + background: linear-gradient(135deg, #7c2d12, #b91c1c, #7c2d12); + } + 50% { + background: linear-gradient(135deg, #991b1b, #dc2626, #991b1b); + } +} + +.lucent-countdown { + display: inline-flex; + gap: 1rem; + margin: 0 1rem; +} + +.lucent-countdown-item { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.25rem; +} + +.lucent-countdown-value { + font-size: 1.5rem; + font-weight: 800; + background: linear-gradient(135deg, #fef3c7, #fbbf24); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + min-width: 2.5rem; + text-align: center; +} + +.lucent-countdown-label { + font-size: 0.625rem; + text-transform: uppercase; + opacity: 0.8; + letter-spacing: 0.05em; +} + +/* ============================================ + DEVELOPER API SHOWCASE + ============================================ */ + +.lucent-api-section { + padding: clamp(3rem, 8vw, 5rem) 0; +} + +.lucent-api-content { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 3rem; + align-items: center; +} + +@media (max-width: 1024px) { + .lucent-api-content { + grid-template-columns: 1fr; + gap: 2rem; + } +} + +.lucent-api-info h3 { + font-size: 0.875rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--lucent-primary); + margin-bottom: 1rem; +} + +.lucent-api-info h2 { + font-size: clamp(2rem, 4vw, 2.5rem); + font-weight: 800; + margin-bottom: 1.5rem; + letter-spacing: -0.02em; +} + +.lucent-api-info p { + font-size: 1.125rem; + line-height: 1.8; + opacity: 0.85; + margin-bottom: 2rem; +} + +.lucent-api-features { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.lucent-api-feature { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.875rem 1rem; + background: linear-gradient(145deg, var(--background-secondary, #1e293b), rgba(30, 41, 59, 0.5)); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: var(--lucent-radius-md); + transition: all 0.3s ease; +} + +.lucent-api-feature:hover { + border-color: rgba(59, 130, 246, 0.3); + transform: translateX(8px); +} + +.lucent-api-feature-icon { + width: 32px; + height: 32px; + border-radius: var(--lucent-radius-sm); + background: rgba(59, 130, 246, 0.15); + color: var(--lucent-primary); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.lucent-code-preview { + background: var(--lucent-dark-elevated); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: var(--lucent-radius-xl); + padding: 1.5rem; + font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; + font-size: 0.875rem; + overflow-x: auto; + position: relative; +} + +.lucent-code-preview::before { + content: 'API'; + position: absolute; + top: 0.75rem; + right: 0.75rem; + padding: 0.25rem 0.625rem; + background: rgba(59, 130, 246, 0.2); + color: var(--lucent-primary); + font-size: 0.625rem; + font-weight: 700; + border-radius: 0.25rem; + letter-spacing: 0.05em; +} + +.lucent-code-preview pre { + margin: 0; + color: #e2e8f0; + line-height: 1.6; +} + +.lucent-code-keyword { + color: #c678dd; +} + +.lucent-code-string { + color: #98c379; +} + +.lucent-code-function { + color: #61afef; +} + +.lucent-code-comment { + color: #5c6370; + font-style: italic; +} + +/* ============================================ + HOW IT WORKS - TIMELINE/PROCESS SECTION + ============================================ */ + +.lucent-process-section { + padding: clamp(3rem, 8vw, 5rem) 0; + position: relative; +} + +.lucent-process-timeline { + position: relative; + max-width: 56rem; + margin: 0 auto; +} + +.lucent-process-line { + position: absolute; + left: 50%; + top: 0; + bottom: 0; + width: 2px; + background: linear-gradient(180deg, var(--lucent-primary), var(--lucent-secondary), var(--lucent-accent)); + transform: translateX(-50%); +} + +@media (max-width: 768px) { + .lucent-process-line { + left: 2rem; + } +} + +.lucent-process-step { + display: flex; + gap: 2rem; + margin-bottom: 3rem; + position: relative; +} + +@media (max-width: 768px) { + .lucent-process-step { + flex-direction: row; + gap: 1.5rem; + } +} + +.lucent-process-step:nth-child(even) { + flex-direction: row-reverse; +} + +@media (max-width: 768px) { + .lucent-process-step:nth-child(even) { + flex-direction: row; + } +} + +.lucent-process-content { + flex: 1; + background: linear-gradient(145deg, var(--background-secondary, #1e293b), rgba(30, 41, 59, 0.5)); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: var(--lucent-radius-xl); + padding: 1.75rem; + position: relative; + transition: all 0.4s ease; +} + +@media (max-width: 768px) { + .lucent-process-step:nth-child(even) .lucent-process-content, + .lucent-process-step:nth-child(odd) .lucent-process-content { + margin-left: 0; + } +} + +.lucent-process-content::before { + content: ''; + position: absolute; + top: 2rem; + width: 20px; + height: 2px; + background: rgba(59, 130, 246, 0.4); +} + +.lucent-process-step:nth-child(odd) .lucent-process-content::before { + right: -22px; +} + +.lucent-process-step:nth-child(even) .lucent-process-content::before { + left: -22px; +} + +@media (max-width: 768px) { + .lucent-process-step:nth-child(even) .lucent-process-content::before, + .lucent-process-step:nth-child(odd) .lucent-process-content::before { + left: -22px; + } +} + +.lucent-process-content:hover { + border-color: rgba(59, 130, 246, 0.4); + box-shadow: 0 8px 24px rgba(59, 130, 246, 0.12); + transform: translateY(-4px); +} + +.lucent-process-number { + position: absolute; + left: 50%; + transform: translateX(-50%); + width: 56px; + height: 56px; + border-radius: 50%; + background: linear-gradient(135deg, var(--lucent-primary), var(--lucent-secondary)); + color: white; + display: flex; + align-items: center; + justify-content: center; + font-weight: 800; + font-size: 1.25rem; + border: 4px solid var(--background, #0f172a); + box-shadow: 0 4px 16px rgba(59, 130, 246, 0.4); + z-index: 2; +} + +@media (max-width: 768px) { + .lucent-process-number { + left: 2rem; + } +} + +.lucent-process-icon { + width: 48px; + height: 48px; + border-radius: var(--lucent-radius-lg); + background: rgba(59, 130, 246, 0.1); + color: var(--lucent-primary); + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 1rem; +} + +.lucent-process-title { + font-size: 1.375rem; + font-weight: 700; + margin-bottom: 0.75rem; +} + +.lucent-process-desc { + font-size: 0.9375rem; + line-height: 1.7; + opacity: 0.85; +} + +/* ============================================ + FEATURE COMPARISON MATRIX + ============================================ */ + +.lucent-comparison-section { + padding: clamp(3rem, 8vw, 5rem) 0; +} + +.lucent-comparison-table-wrapper { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + margin-top: 2rem; +} + +.lucent-comparison-table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + background: linear-gradient(145deg, var(--background-secondary, #1e293b) 0%, rgba(30, 41, 59, 0.5) 100%); + border-radius: var(--lucent-radius-xl); + overflow: hidden; + border: 1px solid rgba(255, 255, 255, 0.08); +} + +.lucent-comparison-table thead { + background: linear-gradient(135deg, var(--lucent-dark-base), var(--lucent-dark-secondary)); +} + +.lucent-comparison-table th { + padding: 1.25rem 1.5rem; + text-align: left; + font-weight: 700; + font-size: 1rem; + color: #f8fafc; + border-bottom: 2px solid rgba(59, 130, 246, 0.3); +} + +.lucent-comparison-table th:not(:first-child) { + text-align: center; +} + +.lucent-comparison-table tbody tr { + transition: background-color 0.2s ease; +} + +.lucent-comparison-table tbody tr:hover { + background: rgba(59, 130, 246, 0.05); +} + +.lucent-comparison-table td { + padding: 1rem 1.5rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.05); +} + +.lucent-comparison-table td:not(:first-child) { + text-align: center; +} + +.lucent-comparison-check { + display: inline-flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border-radius: 50%; + background: rgba(16, 185, 129, 0.15); + color: var(--lucent-success); +} + +.lucent-comparison-cross { + display: inline-flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border-radius: 50%; + background: rgba(239, 68, 68, 0.15); + color: var(--lucent-danger); + opacity: 0.5; +} + +/* ============================================ + CUSTOMER LOGOS CAROUSEL + ============================================ */ + +.lucent-customers-section { + padding: clamp(2rem, 5vw, 3.5rem) 0; + background: linear-gradient(180deg, rgba(59, 130, 246, 0.02) 0%, transparent 100%); +} + +.lucent-customers-label { + text-align: center; + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + opacity: 0.5; + margin-bottom: 2rem; +} + +.lucent-logos-carousel { + overflow: hidden; + position: relative; + padding: 1rem 0; +} + +.lucent-logos-track { + display: flex; + gap: 3rem; + animation: lucent-scroll-logos 30s linear infinite; + will-change: transform; +} + +.lucent-logos-track:hover { + animation-play-state: paused; +} + +@keyframes lucent-scroll-logos { + 0% { transform: translateX(0); } + 100% { transform: translateX(-50%); } +} + +.lucent-customer-logo { + display: flex; + align-items: center; + justify-content: center; + min-width: 140px; + height: 60px; + opacity: 0.4; + filter: grayscale(1); + transition: all 0.3s ease; +} + +.lucent-customer-logo:hover { + opacity: 0.9; + filter: grayscale(0); + transform: scale(1.05); +} + +/* ============================================ + INTERACTIVE DEMO/TOUR LAUNCHER + ============================================ */ + +.lucent-demo-launcher { + position: fixed; + bottom: 2rem; + left: 2rem; + z-index: 999; +} + +@media (max-width: 1024px) { + .lucent-demo-launcher { + display: none; + } +} + +.lucent-demo-button { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.875rem 1.5rem; + background: linear-gradient(135deg, #8b5cf6, #7c3aed); + color: white; + border: none; + border-radius: var(--lucent-radius-lg); + font-weight: 600; + font-size: 0.875rem; + cursor: pointer; + box-shadow: 0 4px 20px rgba(139, 92, 246, 0.4); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); +} + +.lucent-demo-button:hover { + transform: translateY(-4px); + box-shadow: 0 8px 32px rgba(139, 92, 246, 0.5); +} + +.lucent-demo-badge { + padding: 0.25rem 0.5rem; + background: rgba(255, 255, 255, 0.2); + border-radius: 999px; + font-size: 0.625rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +/* ============================================ + ANIMATED SVG ILLUSTRATIONS + ============================================ */ + +.lucent-svg-illustration { + max-width: 100%; + height: auto; +} + +.lucent-svg-illustration path { + animation: lucent-svg-draw 2s ease-in-out forwards; +} + +@keyframes lucent-svg-draw { + from { + stroke-dashoffset: 1000; + } + to { + stroke-dashoffset: 0; + } +} + +.lucent-svg-pulse { + animation: lucent-svg-pulse-anim 2s ease-in-out infinite; +} + +@keyframes lucent-svg-pulse-anim { + 0%, 100% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(1.05); + opacity: 0.8; + } +} + +/* Parallax container */ +.lucent-parallax { + position: relative; + overflow: hidden; +} + +.lucent-parallax-layer { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + will-change: transform; +} + +.lucent-parallax-bg { + transform: translateZ(-1px) scale(2); +} + +.lucent-parallax-mid { + transform: translateZ(-0.5px) scale(1.5); +} + +.lucent-parallax-fg { + transform: translateZ(0); +} + +/* ============================================ + LIVE ACTIVITY FEED + ============================================ */ + +.lucent-activity-section { + position: fixed; + bottom: 8rem; + left: 2rem; + z-index: 998; + max-width: 320px; +} + +@media (max-width: 1024px) { + .lucent-activity-section { + display: none; + } +} + +.lucent-activity-feed { + background: linear-gradient(145deg, var(--lucent-dark-secondary), var(--lucent-dark-base)); + border: 1px solid rgba(59, 130, 246, 0.3); + border-radius: var(--lucent-radius-xl); + padding: 1.25rem; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); + backdrop-filter: blur(20px); + max-height: 300px; + overflow-y: auto; +} + +.lucent-activity-header { + display: flex; + align-items: center; + gap: 0.75rem; + margin-bottom: 1rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.lucent-activity-title { + font-size: 0.875rem; + font-weight: 700; + color: #f8fafc; +} + +.lucent-activity-item { + display: flex; + align-items: flex-start; + gap: 0.75rem; + padding: 0.75rem 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.05); + animation: lucent-activity-slide-in 0.4s ease-out; +} + +.lucent-activity-item:last-child { + border-bottom: none; +} + +@keyframes lucent-activity-slide-in { + from { + opacity: 0; + transform: translateX(-20px); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +.lucent-activity-avatar { + width: 32px; + height: 32px; + border-radius: 50%; + background: linear-gradient(135deg, var(--lucent-primary), var(--lucent-secondary)); + display: flex; + align-items: center; + justify-content: center; + color: white; + font-weight: 700; + font-size: 0.75rem; + flex-shrink: 0; +} + +.lucent-activity-content { + flex: 1; +} + +.lucent-activity-text { + font-size: 0.8125rem; + color: #cbd5e1; + margin-bottom: 0.25rem; + line-height: 1.4; +} + +.lucent-activity-text strong { + color: #f8fafc; + font-weight: 600; +} + +.lucent-activity-time { + font-size: 0.6875rem; + color: #64748b; +} + +.lucent-activity-location { + display: inline-flex; + align-items: center; + gap: 0.25rem; + font-size: 0.6875rem; + color: var(--lucent-primary); + margin-left: 0.5rem; +} + +/* ============================================ + SECTION DIVIDERS & DECORATIVE ELEMENTS + ============================================ */ + +.lucent-section-divider { + position: relative; + height: 80px; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; +} + +.lucent-section-divider::before { + content: ''; + position: absolute; + left: 0; + right: 0; + height: 1px; + background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.4), transparent); +} + +.lucent-section-divider-icon { + width: 48px; + height: 48px; + border-radius: 50%; + background: linear-gradient(145deg, var(--background-secondary, #1e293b), var(--background, #0f172a)); + border: 2px solid rgba(59, 130, 246, 0.3); + display: flex; + align-items: center; + justify-content: center; + color: var(--lucent-primary); + position: relative; + z-index: 1; + box-shadow: 0 0 20px rgba(59, 130, 246, 0.2); +} + +.lucent-section-divider-icon::before { + content: ''; + position: absolute; + inset: -4px; + border-radius: 50%; + background: linear-gradient(135deg, var(--lucent-primary), var(--lucent-secondary)); + opacity: 0.2; + filter: blur(8px); +} + +/* Wave dividers */ +.lucent-wave-divider { + width: 100%; + height: 60px; + position: relative; + overflow: hidden; +} + +.lucent-wave-divider svg { + position: absolute; + bottom: 0; + width: 100%; + height: 100%; +} + +/* Animated gradient line */ +.lucent-gradient-line { + height: 2px; + background: linear-gradient(90deg, + transparent, + var(--lucent-primary), + var(--lucent-secondary), + var(--lucent-accent), + var(--lucent-secondary), + var(--lucent-primary), + transparent); + background-size: 200% 100%; + animation: lucent-gradient-flow 8s linear infinite; + margin: 2rem 0; +} + +/* Floating badges for features */ +.lucent-floating-badge { + position: absolute; + padding: 0.5rem 1rem; + background: linear-gradient(135deg, rgba(59, 130, 246, 0.9), rgba(139, 92, 246, 0.9)); + color: white; + font-size: 0.75rem; + font-weight: 700; + border-radius: 999px; + box-shadow: 0 4px 16px rgba(59, 130, 246, 0.4); + animation: lucent-float-anim 4s ease-in-out infinite; + z-index: 10; +} + +.lucent-floating-badge-1 { + top: 10%; + right: 5%; + animation-delay: 0s; +} + +.lucent-floating-badge-2 { + top: 30%; + left: 5%; + animation-delay: 1s; +} + +.lucent-floating-badge-3 { + bottom: 20%; + right: 10%; + animation-delay: 2s; +} + +/* ============================================ + STICKY NAVIGATION & SECTION INDICATOR + ============================================ */ + +.lucent-section-nav { + position: fixed; + right: 2rem; + top: 50%; + transform: translateY(-50%); + z-index: 100; + display: flex; + flex-direction: column; + gap: 0.75rem; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.lucent-section-nav.visible { + opacity: 1; + visibility: visible; +} + +@media (max-width: 1024px) { + .lucent-section-nav { + display: none; + } +} + +.lucent-section-nav-item { + width: 12px; + height: 12px; + border-radius: 50%; + background: rgba(255, 255, 255, 0.3); + border: 2px solid transparent; + cursor: pointer; + transition: all 0.3s ease; + position: relative; +} + +.lucent-section-nav-item::before { + content: attr(data-section); + position: absolute; + right: calc(100% + 1rem); + top: 50%; + transform: translateY(-50%); + padding: 0.5rem 0.75rem; + background: var(--lucent-dark-secondary); + color: #f8fafc; + font-size: 0.75rem; + font-weight: 600; + white-space: nowrap; + border-radius: var(--lucent-radius-sm); + border: 1px solid rgba(255, 255, 255, 0.1); + opacity: 0; + visibility: hidden; + transition: all 0.2s ease; + pointer-events: none; +} + +.lucent-section-nav-item:hover::before { + opacity: 1; + visibility: visible; + transform: translateY(-50%) translateX(-4px); +} + +.lucent-section-nav-item:hover { + background: rgba(255, 255, 255, 0.5); + transform: scale(1.3); +} + +.lucent-section-nav-item.active { + background: var(--lucent-primary); + border-color: rgba(59, 130, 246, 0.3); + width: 14px; + height: 14px; + box-shadow: 0 0 12px rgba(59, 130, 246, 0.5); +} + +/* Scroll progress ring for section nav */ +.lucent-section-nav-item svg { + position: absolute; + top: -4px; + left: -4px; + width: 20px; + height: 20px; + transform: rotate(-90deg); +} + +.lucent-section-nav-item circle { + fill: none; + stroke: var(--lucent-primary); + stroke-width: 2; + stroke-dasharray: 60; + stroke-dashoffset: 60; + transition: stroke-dashoffset 0.3s ease; +} + +.lucent-section-nav-item.active circle { + stroke-dashoffset: 0; +} + +/* ============================================ + COOKIE CONSENT BANNER + ============================================ */ + +.lucent-cookie-banner { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 9998; + background: linear-gradient(145deg, var(--lucent-dark-secondary), var(--lucent-dark-base)); + border-top: 2px solid rgba(59, 130, 246, 0.3); + padding: 1.5rem; + box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.3); + transform: translateY(100%); + transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); +} + +.lucent-cookie-banner.visible { + transform: translateY(0); +} + +.lucent-cookie-content { + display: flex; + align-items: center; + justify-content: space-between; + gap: 2rem; + max-width: 1200px; + margin: 0 auto; + flex-wrap: wrap; +} + +@media (max-width: 768px) { + .lucent-cookie-content { + flex-direction: column; + gap: 1rem; + } +} + +.lucent-cookie-text { + flex: 1; + color: #cbd5e1; + font-size: 0.9375rem; + line-height: 1.6; +} + +.lucent-cookie-text a { + color: var(--lucent-primary); + text-decoration: underline; + transition: opacity 0.2s ease; +} + +.lucent-cookie-text a:hover { + opacity: 0.8; +} + +.lucent-cookie-actions { + display: flex; + gap: 0.75rem; + flex-wrap: wrap; +} + +.lucent-cookie-btn { + padding: 0.75rem 1.5rem; + border-radius: var(--lucent-radius-md); + font-weight: 600; + font-size: 0.875rem; + cursor: pointer; + transition: all 0.3s ease; + white-space: nowrap; + border: none; +} + +.lucent-cookie-btn-accept { + background: var(--lucent-primary); + color: white; +} + +.lucent-cookie-btn-accept:hover { + background: var(--lucent-primary-dark); + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); +} + +.lucent-cookie-btn-decline { + background: rgba(255, 255, 255, 0.1); + color: #cbd5e1; + border: 1px solid rgba(255, 255, 255, 0.2); +} + +.lucent-cookie-btn-decline:hover { + background: rgba(255, 255, 255, 0.15); +} + +.lucent-cookie-btn-settings { + background: transparent; + color: var(--lucent-primary); + text-decoration: underline; +} + +.lucent-cookie-btn-settings:hover { + opacity: 0.8; +} + +/* ============================================ + LIVE CHAT WIDGET + ============================================ */ + +.lucent-chat-widget { + position: fixed; + bottom: 2rem; + right: 6rem; + z-index: 999; +} + +.lucent-chat-button { + width: 60px; + height: 60px; + background: linear-gradient(135deg, var(--lucent-primary), var(--lucent-secondary)); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: white; + cursor: pointer; + box-shadow: + 0 4px 20px rgba(59, 130, 246, 0.4), + 0 0 0 0 rgba(59, 130, 246, 0.4); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + border: none; + animation: lucent-chat-pulse 2s ease-in-out infinite; +} + +@keyframes lucent-chat-pulse { + 0%, 100% { + box-shadow: + 0 4px 20px rgba(59, 130, 246, 0.4), + 0 0 0 0 rgba(59, 130, 246, 0.4); + } + 50% { + box-shadow: + 0 4px 20px rgba(59, 130, 246, 0.4), + 0 0 0 12px rgba(59, 130, 246, 0); + } +} + +.lucent-chat-button:hover { + transform: scale(1.1); + box-shadow: 0 8px 32px rgba(59, 130, 246, 0.5); +} + +.lucent-chat-badge { + position: absolute; + top: -4px; + right: -4px; + width: 20px; + height: 20px; + background: var(--lucent-danger); + border: 2px solid var(--lucent-dark-base); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.625rem; + font-weight: 700; + animation: lucent-badge-pop 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); +} + +@keyframes lucent-badge-pop { + 0% { transform: scale(0); } + 50% { transform: scale(1.2); } + 100% { transform: scale(1); } +} + +.lucent-chat-tooltip { + position: absolute; + right: calc(100% + 12px); + top: 50%; + transform: translateY(-50%); + padding: 0.625rem 1rem; + background: var(--lucent-dark-secondary); + color: #f8fafc; + font-size: 0.875rem; + font-weight: 500; + white-space: nowrap; + border-radius: var(--lucent-radius-md); + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; + pointer-events: none; +} + +.lucent-chat-button:hover .lucent-chat-tooltip { + opacity: 1; + visibility: visible; + transform: translateY(-50%) translateX(-8px); +} + /* ============================================ SCROLL TO TOP BUTTON ============================================ */ @@ -2158,6 +3852,265 @@ button:focus-visible { 0 0 0 4px rgba(59, 130, 246, 0.2); } +/* ============================================ + LOADING STATES & SKELETON SCREENS + ============================================ */ + +.lucent-skeleton { + background: linear-gradient(90deg, rgba(255, 255, 255, 0.05) 25%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.05) 75%); + background-size: 200% 100%; + animation: lucent-skeleton-loading 1.5s ease-in-out infinite; + border-radius: var(--lucent-radius-md); +} + +@keyframes lucent-skeleton-loading { + 0% { background-position: 200% 0; } + 100% { background-position: -200% 0; } +} + +.lucent-skeleton-text { + height: 1rem; + margin-bottom: 0.5rem; +} + +.lucent-skeleton-title { + height: 2rem; + width: 60%; + margin-bottom: 1rem; +} + +.lucent-skeleton-card { + height: 200px; +} + +/* Loading spinner */ +.lucent-spinner { + width: 40px; + height: 40px; + border: 4px solid rgba(255, 255, 255, 0.1); + border-top-color: var(--lucent-primary); + border-radius: 50%; + animation: lucent-spin 0.8s linear infinite; +} + +@keyframes lucent-spin { + to { transform: rotate(360deg); } +} + +/* ============================================ + PARTNERS/INTEGRATIONS SHOWCASE + ============================================ */ + +.lucent-partners-section { + padding: clamp(2.5rem, 6vw, 4rem) 0; + background: linear-gradient(180deg, var(--background, #0f172a) 0%, var(--background-secondary, #1e293b) 100%); + border-top: 1px solid rgba(255, 255, 255, 0.05); +} + +.lucent-partners-label { + text-align: center; + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + opacity: 0.5; + margin-bottom: 2rem; +} + +.lucent-partners-grid { + display: grid; + grid-template-columns: repeat(6, 1fr); + gap: 2rem; + align-items: center; + justify-items: center; +} + +@media (max-width: 1024px) { + .lucent-partners-grid { + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; + } +} + +@media (max-width: 640px) { + .lucent-partners-grid { + grid-template-columns: repeat(2, 1fr); + gap: 1rem; + } +} + +.lucent-partner-logo { + display: flex; + align-items: center; + justify-content: center; + padding: 1rem; + opacity: 0.4; + transition: all 0.3s ease; + filter: grayscale(1); +} + +.lucent-partner-logo:hover { + opacity: 0.9; + filter: grayscale(0); + transform: scale(1.05); +} + +.lucent-partner-logo svg, +.lucent-partner-logo img { + max-width: 120px; + max-height: 40px; + width: auto; + height: auto; +} + +/* ============================================ + SOCIAL PROOF INDICATORS + ============================================ */ + +.lucent-social-proof { + display: flex; + align-items: center; + justify-content: center; + gap: 2rem; + padding: 1.5rem; + background: rgba(59, 130, 246, 0.05); + border-radius: var(--lucent-radius-lg); + margin-top: 2rem; + flex-wrap: wrap; +} + +.lucent-social-proof-item { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.lucent-social-proof-icon { + width: 36px; + height: 36px; + border-radius: 50%; + background: linear-gradient(135deg, rgba(59, 130, 246, 0.2), rgba(139, 92, 246, 0.2)); + display: flex; + align-items: center; + justify-content: center; + color: var(--lucent-primary); +} + +.lucent-social-proof-text { + display: flex; + flex-direction: column; +} + +.lucent-social-proof-value { + font-size: 1.25rem; + font-weight: 700; + color: var(--lucent-primary); +} + +.lucent-social-proof-label { + font-size: 0.75rem; + opacity: 0.7; +} + +/* ============================================ + MOBILE ENHANCEMENTS & TOUCH INTERACTIONS + ============================================ */ + +/* Improve touch targets for mobile */ +@media (max-width: 768px) { + .lucent-btn-primary, + .lucent-btn-secondary, + .lucent-action-card, + .lucent-pricing-cta, + .lucent-faq-question { + min-height: 44px; /* WCAG AA compliant touch target */ + } + + .lucent-hero { + padding: 3rem 0 4rem; + } + + .lucent-hero-title { + font-size: 2.25rem; + } + + .lucent-hero-desc { + font-size: 1.125rem; + } + + .lucent-hero-cta { + flex-direction: column; + width: 100%; + } + + .lucent-btn-primary, + .lucent-btn-secondary { + width: 100%; + justify-content: center; + } + + .lucent-hero-highlights { + grid-template-columns: 1fr; + gap: 0.5rem; + } + + .lucent-stats-grid { + gap: 1rem; + } + + .lucent-stat-card { + padding: 1.5rem; + } + + .lucent-chat-widget { + bottom: 1rem; + right: 1rem; + } + + .lucent-scroll-top { + bottom: 5rem; + right: 1rem; + width: 48px; + height: 48px; + } +} + +/* Improved scrolling on mobile */ +@media (max-width: 768px) { + * { + -webkit-overflow-scrolling: touch; + scroll-behavior: smooth; + } +} + +/* Touch feedback */ +@media (hover: none) { + .lucent-btn-primary:active, + .lucent-btn-secondary:active, + .lucent-action-card:active { + transform: scale(0.97); + } + + .lucent-stat-card:active, + .lucent-feature-card:active, + .lucent-service-card:active { + transform: scale(0.98); + } +} + +/* Prevent text selection on interactive elements */ +.lucent-btn-primary, +.lucent-btn-secondary, +.lucent-action-card, +.lucent-carousel-btn, +.lucent-faq-question, +.lucent-pricing-switch { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + /* ============================================ ANIMATIONS ============================================ */ @@ -2474,6 +4427,175 @@ button:focus-visible { transform: translateX(-50%) translateY(0); } +/* ============================================ + NEWSLETTER SECTION + ============================================ */ + +.lucent-newsletter-section { + padding: clamp(3rem, 8vw, 5rem) 0; + background: linear-gradient(135deg, var(--lucent-dark-base) 0%, var(--lucent-dark-secondary) 100%); + position: relative; + overflow: hidden; +} + +.lucent-newsletter-section::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: + radial-gradient(ellipse 60% 40% at 30% 50%, rgba(59, 130, 246, 0.1) 0%, transparent 50%), + radial-gradient(ellipse 60% 40% at 70% 50%, rgba(139, 92, 246, 0.08) 0%, transparent 50%); + pointer-events: none; +} + +.lucent-newsletter-container { + max-width: 48rem; + margin: 0 auto; + text-align: center; + position: relative; + z-index: 1; +} + +.lucent-newsletter-icon { + width: 64px; + height: 64px; + margin: 0 auto 1.5rem; + background: linear-gradient(135deg, rgba(59, 130, 246, 0.2), rgba(139, 92, 246, 0.2)); + border: 2px solid rgba(59, 130, 246, 0.4); + border-radius: var(--lucent-radius-xl); + display: flex; + align-items: center; + justify-content: center; + color: var(--lucent-primary); +} + +.lucent-newsletter-title { + font-size: clamp(1.75rem, 4vw, 2.25rem); + font-weight: 800; + margin: 0 0 1rem 0; + color: #f8fafc; + letter-spacing: -0.02em; +} + +.lucent-newsletter-desc { + font-size: clamp(1rem, 2vw, 1.125rem); + line-height: 1.7; + opacity: 0.85; + margin: 0 0 2rem 0; + color: #cbd5e1; +} + +.lucent-newsletter-form { + display: flex; + gap: 0.75rem; + max-width: 32rem; + margin: 0 auto; +} + +@media (max-width: 640px) { + .lucent-newsletter-form { + flex-direction: column; + } +} + +.lucent-newsletter-input { + flex: 1; + padding: 1rem 1.5rem; + background: rgba(255, 255, 255, 0.08); + border: 2px solid rgba(255, 255, 255, 0.15); + border-radius: var(--lucent-radius-lg); + color: #f8fafc; + font-size: 1rem; + transition: all 0.3s ease; +} + +.lucent-newsletter-input::placeholder { + color: rgba(255, 255, 255, 0.5); +} + +.lucent-newsletter-input:focus { + outline: none; + background: rgba(255, 255, 255, 0.12); + border-color: var(--lucent-primary); + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2); +} + +.lucent-newsletter-input:focus-visible { + outline: none; +} + +.lucent-newsletter-button { + padding: 1rem 2rem; + background: linear-gradient(135deg, var(--lucent-primary), var(--lucent-secondary)); + color: white; + border: none; + border-radius: var(--lucent-radius-lg); + font-weight: 600; + font-size: 1rem; + cursor: pointer; + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + white-space: nowrap; + box-shadow: 0 4px 15px rgba(59, 130, 246, 0.4); +} + +.lucent-newsletter-button:hover { + transform: translateY(-2px); + box-shadow: 0 8px 24px rgba(59, 130, 246, 0.5); +} + +.lucent-newsletter-button:active { + transform: translateY(0); +} + +.lucent-newsletter-button:disabled { + opacity: 0.6; + cursor: not-allowed; + transform: none; +} + +.lucent-newsletter-privacy { + margin-top: 1rem; + font-size: 0.75rem; + opacity: 0.6; + color: #94a3b8; +} + +.lucent-newsletter-privacy a { + color: var(--lucent-primary); + text-decoration: underline; + transition: opacity 0.2s ease; +} + +.lucent-newsletter-privacy a:hover { + opacity: 0.8; +} + +.lucent-newsletter-message { + margin-top: 1rem; + padding: 0.75rem 1rem; + border-radius: var(--lucent-radius-md); + font-size: 0.875rem; + font-weight: 500; + display: none; +} + +.lucent-newsletter-message.success { + display: block; + background: rgba(16, 185, 129, 0.15); + color: var(--lucent-success); + border: 1px solid rgba(16, 185, 129, 0.3); +} + +.lucent-newsletter-message.error { + display: block; + background: rgba(239, 68, 68, 0.15); + color: var(--lucent-danger); + border: 1px solid rgba(239, 68, 68, 0.3); +} + /* ============================================ ANNOUNCEMENTS SECTION ============================================ */ @@ -2601,6 +4723,31 @@ button:focus-visible { Skip to main content + + @if(theme('offer_banner_enabled', false)) + + @endif + @if(theme('custom_homepage_html'))
@@ -2610,16 +4757,24 @@ button:focus-visible {