Enhance landing page functionality by integrating Swiper for sliders and animations. Add new sections for agentic features and processes, along with corresponding styles and scripts. Update package dependencies to include Swiper and TypeScript for improved development experience.

This commit is contained in:
Primakov Alexandr Alexandrovich
2025-10-29 23:59:08 +03:00
parent b3e1e2361d
commit e7a15b528d
5 changed files with 1308 additions and 7 deletions
+638
View File
@@ -36,6 +36,28 @@ $gradient-accent: linear-gradient(135deg, #00d4ff 0%, #7c3aed 100%);
50% { transform: scale(1.05); }
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.9);
}
to {
opacity: 1;
transform: scale(1);
}
}
// Reset
* {
margin: 0;
@@ -583,3 +605,619 @@ body {
border-top: 1px solid rgba(124, 58, 237, 0.2);
}
// Scroll Animations
.animate-on-scroll {
opacity: 0;
transform: translateY(30px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
&.animate-in {
opacity: 1;
transform: translateY(0);
}
}
// Gradient Backgrounds for Images
.gradient-bg-1 {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.gradient-bg-2 {
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
}
.gradient-bg-3 {
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
}
.gradient-bg-4 {
background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
}
.gradient-bg-5 {
background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
}
.gradient-bg-6 {
background: linear-gradient(135deg, #30cfd0 0%, #330867 100%);
}
.gradient-bg-7 {
background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
}
.gradient-bg-8 {
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
}
.gradient-bg-9 {
background: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%);
}
.gradient-bg-10 {
background: linear-gradient(135deg, #ff6e7f 0%, #bfe9ff 100%);
}
.gradient-bg-11 {
background: linear-gradient(135deg, #e0c3fc 0%, #8ec5fc 100%);
}
.gradient-bg-12 {
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
}
.gradient-bg-13 {
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
}
.gradient-bg-14 {
background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
}
// Ripple Effect for Buttons
.ripple {
position: absolute;
border-radius: 50%;
background: rgba(255, 255, 255, 0.6);
width: 100px;
height: 100px;
margin-left: -50px;
margin-top: -50px;
animation: ripple-animation 0.6s ease-out;
pointer-events: none;
}
@keyframes ripple-animation {
from {
transform: scale(0);
opacity: 1;
}
to {
transform: scale(4);
opacity: 0;
}
}
.btn-primary, .btn-secondary {
position: relative;
overflow: hidden;
}
// Agentic Intro Section
.agentic-intro {
padding: 100px 0;
background: $dark-bg;
position: relative;
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, $accent-primary, transparent);
}
}
.agentic-slider {
margin-top: 3rem;
padding-bottom: 60px;
.swiper-slide {
display: flex;
justify-content: center;
align-items: stretch;
}
}
.agentic-card {
background: $dark-card;
border-radius: 24px;
padding: 2.5rem;
border: 1px solid rgba(124, 58, 237, 0.3);
max-width: 900px;
width: 100%;
transition: all 0.3s ease;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15), 0 4px 16px rgba(124, 58, 237, 0.1);
&:hover {
transform: translateY(-5px);
box-shadow: 0 20px 40px rgba(0, 212, 255, 0.2), 0 8px 20px rgba(124, 58, 237, 0.15);
border-color: $accent-primary;
}
}
.agentic-image {
width: 100%;
height: 200px;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 2rem;
position: relative;
overflow: hidden;
&::before {
content: '';
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.2);
}
}
.agentic-icon {
font-size: 5rem;
position: relative;
z-index: 1;
filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3));
}
.agentic-title {
font-size: 2rem;
font-weight: 700;
margin-bottom: 1rem;
background: $gradient-accent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.agentic-description {
color: $text-secondary;
line-height: 1.8;
margin-bottom: 2rem;
font-size: 1.05rem;
}
.agentic-features {
display: flex;
flex-direction: column;
gap: 1rem;
}
.feature-item {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 0.75rem;
background: rgba(0, 212, 255, 0.05);
border-radius: 8px;
border-left: 3px solid $accent-primary;
.feature-icon {
color: $accent-primary;
font-weight: bold;
font-size: 1.2rem;
}
span:not(.feature-icon) {
color: $text-primary;
font-size: 0.95rem;
}
}
// Swiper Navigation Customization
.swiper-button-next,
.swiper-button-prev {
color: $accent-primary;
&::after {
font-size: 24px;
font-weight: bold;
}
&:hover {
color: lighten($accent-primary, 10%);
}
}
.swiper-pagination {
bottom: 10px !important;
.swiper-pagination-bullet {
background: $accent-primary;
opacity: 0.5;
width: 12px;
height: 12px;
transition: all 0.3s ease;
&-active {
opacity: 1;
width: 30px;
border-radius: 6px;
}
}
}
// Processes Section
.processes-section {
padding: 100px 0;
background: $dark-surface;
position: relative;
overflow: hidden;
&::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 800px;
height: 800px;
background: radial-gradient(circle, rgba(124, 58, 237, 0.1) 0%, transparent 70%);
border-radius: 50%;
pointer-events: none;
}
}
.processes-slider {
margin-top: 3rem;
padding: 40px 20px 80px;
max-width: 600px;
margin-left: auto;
margin-right: auto;
.swiper-slide {
display: flex;
justify-content: center;
align-items: center;
}
}
.process-card {
background: $dark-card;
border-radius: 24px;
border: 2px solid rgba(124, 58, 237, 0.3);
width: 100%;
max-width: 500px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15), 0 4px 16px rgba(124, 58, 237, 0.1);
transition: all 0.3s ease;
&:hover {
border-color: $accent-primary;
box-shadow: 0 20px 48px rgba(0, 212, 255, 0.25), 0 8px 24px rgba(124, 58, 237, 0.15);
transform: translateY(-5px);
}
}
.process-header {
display: flex;
align-items: center;
gap: 1rem;
padding: 2rem 2rem 1rem;
}
.process-icon {
font-size: 3rem;
filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3));
}
.process-title {
font-size: 1.8rem;
font-weight: 700;
color: $text-primary;
}
.process-image {
height: 180px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
border-radius: 22px 22px 0 0;
overflow: hidden;
&::before {
content: '';
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.3);
}
}
.process-stats {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
gap: 1rem;
padding: 1rem;
}
.stat-badge {
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(10px);
padding: 1rem 1.5rem;
border-radius: 12px;
border: 1px solid rgba(255, 255, 255, 0.2);
display: flex;
flex-direction: column;
text-align: center;
}
.stat-number {
font-size: 2rem;
font-weight: 900;
background: $gradient-accent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
display: block;
line-height: 1;
margin-bottom: 0.25rem;
}
.stat-text {
color: $text-secondary;
font-size: 0.85rem;
display: block;
}
.process-description {
padding: 2rem;
p {
color: $text-secondary;
line-height: 1.7;
margin-bottom: 1.5rem;
}
}
.process-benefits {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 0.75rem;
li {
color: $text-primary;
padding: 0.75rem;
background: rgba(0, 212, 255, 0.05);
border-radius: 8px;
border-left: 3px solid $accent-primary;
font-size: 0.95rem;
transition: all 0.3s ease;
&:hover {
background: rgba(0, 212, 255, 0.1);
transform: translateX(5px);
}
}
}
.processes-pagination {
bottom: 20px !important;
}
// Cases Gallery Section
.cases-section {
padding: 100px 0;
background: $dark-bg;
}
.cases-gallery {
margin-top: 3rem;
padding-bottom: 80px;
.swiper-slide {
width: 400px;
display: flex;
justify-content: center;
align-items: stretch;
@media (max-width: 768px) {
width: 320px;
}
}
}
.case-card {
background: $dark-card;
border-radius: 24px;
border: 2px solid rgba(124, 58, 237, 0.3);
transition: all 0.4s ease;
width: 100%;
display: flex;
flex-direction: column;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15), 0 4px 16px rgba(124, 58, 237, 0.1);
&:hover {
border-color: $accent-primary;
box-shadow: 0 24px 56px rgba(0, 212, 255, 0.25), 0 12px 28px rgba(124, 58, 237, 0.15);
transform: translateY(-10px);
}
}
.case-image {
height: 200px;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 2rem;
border-radius: 22px 22px 0 0;
overflow: hidden;
&::before {
content: '';
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.2);
}
}
.case-company-icon {
font-size: 4rem;
position: relative;
z-index: 1;
filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.5));
margin-bottom: 1rem;
}
.case-badge {
position: relative;
z-index: 1;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(10px);
padding: 0.5rem 1.5rem;
border-radius: 20px;
font-size: 0.85rem;
font-weight: 600;
color: $accent-primary;
border: 1px solid rgba(0, 212, 255, 0.3);
}
.case-company {
font-size: 1.8rem;
font-weight: 700;
padding: 1.5rem 2rem 1rem;
color: $text-primary;
}
.case-metrics {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1rem;
padding: 0 2rem 1.5rem;
border-bottom: 1px solid rgba(124, 58, 237, 0.2);
}
.metric-item {
text-align: center;
display: flex;
flex-direction: column;
}
.metric-value {
font-size: 1.5rem;
font-weight: 900;
background: $gradient-accent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
line-height: 1;
margin-bottom: 0.5rem;
}
.metric-label {
color: $text-secondary;
font-size: 0.75rem;
line-height: 1.2;
}
.case-description {
padding: 1.5rem 2rem;
color: $text-secondary;
line-height: 1.7;
font-size: 0.95rem;
flex-grow: 1;
}
.case-results {
padding: 1rem 2rem 2rem;
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
}
.result-tag {
background: rgba(0, 212, 255, 0.1);
color: $accent-primary;
padding: 0.5rem 1rem;
border-radius: 20px;
font-size: 0.85rem;
border: 1px solid rgba(0, 212, 255, 0.3);
transition: all 0.3s ease;
&:hover {
background: rgba(0, 212, 255, 0.2);
transform: translateY(-2px);
}
}
.cases-pagination {
bottom: 20px !important;
}
.cases-button-next,
.cases-button-prev {
top: 50%;
transform: translateY(-50%);
margin-top: -40px;
color: $accent-primary;
&::after {
font-size: 24px;
font-weight: bold;
}
&:hover {
color: lighten($accent-primary, 10%);
transform: translateY(-50%) scale(1.1);
}
}
// Responsive adjustments
@media (max-width: 768px) {
.agentic-card {
padding: 1.5rem;
}
.agentic-title {
font-size: 1.5rem;
}
.agentic-image {
height: 150px;
}
.agentic-icon {
font-size: 3.5rem;
}
.process-card {
max-width: 100%;
}
.process-title {
font-size: 1.4rem;
}
.case-metrics {
grid-template-columns: 1fr;
gap: 0.75rem;
}
.swiper-button-next,
.swiper-button-prev {
&::after {
font-size: 20px;
}
}
}