From a0cec68ff2e3ffd15cce77c9e2b01e12a8377ab7 Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Sun, 8 Mar 2026 15:43:44 +0000 Subject: [PATCH] Redesign pages with homepage patterns, remove How We Work & Tech Stack - Apply glassmorphism, radial glows, gradient banners to About/Services/Pricing - Remove How We Work and Technology Stack sections from Services - Add gradient banner styling to discount section on Pricing - Update About values section with full-width gradient banner Co-Authored-By: Claude Opus 4.6 --- src/pages/AboutPage.css | 263 +++++++++++++++++++++++++++---------- src/pages/AboutPage.tsx | 4 +- src/pages/PricingPage.css | 217 +++++++++++++++++++++--------- src/pages/PricingPage.tsx | 2 +- src/pages/ServicesPage.css | 245 +++++++++++++++------------------- src/pages/ServicesPage.tsx | 69 +--------- 6 files changed, 456 insertions(+), 344 deletions(-) diff --git a/src/pages/AboutPage.css b/src/pages/AboutPage.css index 81fa5ad..0896812 100644 --- a/src/pages/AboutPage.css +++ b/src/pages/AboutPage.css @@ -10,50 +10,54 @@ } .about-hero h1 { - font-size: 3.2rem; + font-size: clamp(2.4rem, 5vw, 3.5rem); font-weight: 800; color: #fff; margin-bottom: 1rem; } .about-hero-sub { - font-size: 1.2rem; + font-size: clamp(1rem, 2vw, 1.25rem); color: var(--light-grey-100); opacity: 0.8; - max-width: 600px; + max-width: 640px; margin: 0 auto; + line-height: 1.6; } /* Sections */ .about-section { - padding: 4rem 2rem; + padding: 5rem 2rem; } .about-section .section-title { text-align: center; - font-size: 2rem; + font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; color: #fff; - margin-bottom: 2.5rem; + margin-bottom: 3rem; } /* Story */ .about-story-text { - max-width: 1100px; + max-width: 1200px; margin: 0 auto; color: var(--light-grey-100); - font-size: 1.05rem; - line-height: 1.8; + font-size: 1.1rem; + line-height: 1.85; + columns: 2; + column-gap: 3rem; } .about-story-text p { margin-bottom: 1.2rem; + break-inside: avoid; } -/* Differentiator Cards */ +/* Differentiator Cards — TiltCard-style */ .about-diff-grid { display: grid; - grid-template-columns: repeat(2, 1fr); + grid-template-columns: repeat(4, 1fr); gap: 1.5rem; max-width: 1200px; margin: 0 auto; @@ -63,22 +67,47 @@ background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 16px; - padding: 2rem; - transition: border-color 0.3s, box-shadow 0.3s, background 0.3s; + border-radius: 20px; + padding: 2rem 1.75rem; cursor: default; + position: relative; + overflow: hidden; + transition: border-color 0.3s, box-shadow 0.4s, transform 0.35s; +} + +.about-glass-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: radial-gradient(circle at 30% 20%, rgba(255, 91, 4, 0.12), transparent 60%); + opacity: 0; + transition: opacity 0.4s; + pointer-events: none; + border-radius: 20px; +} + +.about-glass-card:hover::before { + opacity: 1; } .about-glass-card:hover { - background: rgba(255, 255, 255, 0.07); - box-shadow: 0 4px 30px rgba(255, 91, 4, 0.08); + border-color: rgba(255, 91, 4, 0.4); + box-shadow: 0 8px 40px rgba(255, 91, 4, 0.1); } .about-card-icon { - width: 40px; - height: 40px; + width: 44px; + height: 44px; color: var(--orange-100); - margin-bottom: 1rem; + margin-bottom: 1.25rem; + transition: transform 0.3s; +} + +.about-glass-card:hover .about-card-icon { + transform: scale(1.15) rotate(5deg); } .about-card-icon svg { @@ -87,20 +116,41 @@ } .about-glass-card h3 { - font-size: 1.15rem; + font-size: 1.1rem; font-weight: 700; color: #fff; margin-bottom: 0.6rem; + line-height: 1.3; } .about-glass-card p { color: var(--light-grey-100); - font-size: 0.95rem; + font-size: 0.9rem; line-height: 1.6; - opacity: 0.85; + opacity: 0.8; +} + +/* Values — gradient accent banner (like built-for-section) */ +.about-values-section { + position: relative; + width: 100vw; + margin-left: calc(-50vw + 50%); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); + padding: 5rem 2rem; + overflow: hidden; + border-radius: 60px; + margin-top: 2rem; + margin-bottom: 2rem; +} + +.about-values-section .section-title { + color: var(--dark-grey-100); + text-align: center; + font-size: clamp(1.6rem, 3vw, 2.2rem); + font-weight: 800; + margin-bottom: 3rem; } -/* Values */ .about-values-grid { display: grid; grid-template-columns: repeat(5, 1fr); @@ -110,32 +160,35 @@ } .about-value-item { - background: rgba(255, 255, 255, 0.04); - border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 12px; - padding: 1.5rem; + background: rgba(255, 255, 255, 0.15); + backdrop-filter: blur(10px); + border: 1px solid rgba(255, 255, 255, 0.25); + border-radius: 20px; + padding: 1.75rem 1.25rem; text-align: center; + transition: transform 0.3s, box-shadow 0.3s, background 0.3s; cursor: default; - transition: background 0.3s, box-shadow 0.3s; } .about-value-item:hover { - background: rgba(255, 255, 255, 0.07); - box-shadow: 0 4px 20px rgba(255, 91, 4, 0.06); + transform: translateY(-4px); + background: rgba(255, 255, 255, 0.22); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); } .about-value-item h3 { font-size: 1rem; - font-weight: 700; - color: var(--orange-100); + font-weight: 800; + color: var(--dark-grey-100); margin-bottom: 0.5rem; } .about-value-item p { - color: var(--light-grey-100); + color: var(--dark-grey-100); font-size: 0.85rem; line-height: 1.5; - opacity: 0.8; + opacity: 0.85; + font-weight: 600; } /* Founder */ @@ -148,12 +201,29 @@ background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); - border-left: 3px solid var(--orange-100); - border-radius: 16px; + border-radius: 20px; padding: 2.5rem; + position: relative; + overflow: hidden; transition: box-shadow 0.4s, border-color 0.4s; } +.about-founder-card::before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 4px; + background: linear-gradient(180deg, var(--orange-100), var(--yellow-100)); + border-radius: 4px 0 0 4px; +} + +.about-founder-card:hover { + border-color: rgba(255, 91, 4, 0.3); + box-shadow: 0 12px 50px rgba(255, 91, 4, 0.08); +} + .about-founder-photo { flex-shrink: 0; } @@ -175,17 +245,20 @@ } .about-founder-info h3 { - font-size: 1.5rem; + font-size: 1.6rem; font-weight: 800; color: #fff; margin-bottom: 0.25rem; } .about-founder-role { - display: block; + display: inline-block; + background: rgba(255, 91, 4, 0.12); color: var(--orange-100); font-weight: 600; - font-size: 0.95rem; + font-size: 0.9rem; + padding: 0.3rem 1rem; + border-radius: 100px; margin-bottom: 1.25rem; } @@ -197,9 +270,9 @@ .about-founder-details li { color: var(--light-grey-100); font-size: 0.95rem; - line-height: 1.6; + line-height: 1.65; margin-bottom: 0.75rem; - padding-left: 1rem; + padding-left: 1.25rem; position: relative; } @@ -208,17 +281,17 @@ position: absolute; left: 0; top: 0.55em; - width: 5px; - height: 5px; + width: 6px; + height: 6px; border-radius: 50%; - background: var(--orange-100); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); } .about-founder-details li strong { color: #fff; } -/* Industries */ +/* Industries — card grid with icons */ .about-industries-grid { display: grid; grid-template-columns: repeat(4, 1fr); @@ -227,23 +300,39 @@ margin: 0 auto; } -.about-industries-grid > :last-child:nth-child(4n - 2) { - grid-column: 2 / 3; -} - .about-industry-card { background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 14px; - padding: 1.5rem 1.25rem; + border-radius: 20px; + padding: 1.75rem 1.25rem; text-align: center; cursor: default; - transition: background 0.3s, box-shadow 0.3s; + position: relative; + overflow: hidden; + transition: border-color 0.3s, box-shadow 0.3s, transform 0.35s; +} + +.about-industry-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: radial-gradient(circle at 50% 30%, rgba(255, 91, 4, 0.08), transparent 70%); + opacity: 0; + transition: opacity 0.4s; + pointer-events: none; +} + +.about-industry-card:hover::before { + opacity: 1; } .about-industry-card:hover { - background: rgba(255, 255, 255, 0.07); - box-shadow: 0 4px 25px rgba(255, 91, 4, 0.08); + border-color: rgba(255, 91, 4, 0.35); + box-shadow: 0 6px 30px rgba(255, 91, 4, 0.06); + transform: translateY(-4px); } .about-industry-icon { @@ -251,6 +340,11 @@ height: 36px; color: var(--orange-100); margin: 0 auto 0.75rem; + transition: transform 0.3s; +} + +.about-industry-card:hover .about-industry-icon { + transform: scale(1.15); } .about-industry-icon svg { @@ -281,17 +375,31 @@ text-align: center; background: rgba(255, 91, 4, 0.08); border: 1px solid rgba(255, 91, 4, 0.2); - border-radius: 20px; - padding: 3.5rem 2rem; + border-radius: 24px; + padding: 4rem 2rem; max-width: 900px; margin: 0 auto; + position: relative; + overflow: hidden; +} + +.about-cta::before { + content: ''; + position: absolute; + top: -50%; + left: -50%; + width: 200%; + height: 200%; + background: radial-gradient(circle at center, rgba(255, 91, 4, 0.06), transparent 50%); + pointer-events: none; } .about-cta h2 { - font-size: 1.8rem; + font-size: clamp(1.4rem, 3vw, 1.8rem); font-weight: 800; color: #fff; margin-bottom: 0.75rem; + position: relative; } .about-cta p { @@ -299,26 +407,40 @@ font-size: 1.05rem; margin-bottom: 2rem; opacity: 0.85; + position: relative; } .about-cta-btn { background: var(--orange-100); color: #fff; border: none; - padding: 0.9rem 2.5rem; + padding: 1rem 2.5rem; border-radius: 100px; font-size: 1rem; font-weight: 600; cursor: pointer; font-family: var(--font-primary); + position: relative; + box-shadow: 0 4px 20px rgba(255, 91, 4, 0.3); + transition: box-shadow 0.3s; +} + +.about-cta-btn:hover { + box-shadow: 0 8px 35px rgba(255, 91, 4, 0.45); } /* Responsive */ -@media (max-width: 900px) { +@media (max-width: 1024px) { .about-diff-grid { - grid-template-columns: 1fr; + grid-template-columns: repeat(2, 1fr); } + .about-story-text { + columns: 1; + } +} + +@media (max-width: 900px) { .about-values-grid { grid-template-columns: repeat(3, 1fr); } @@ -343,22 +465,23 @@ padding-top: 6rem; } - .about-hero h1 { - font-size: 2.2rem; - } - - .about-hero-sub { - font-size: 1rem; - } - .about-section { padding: 3rem 1rem; } + .about-diff-grid { + grid-template-columns: 1fr; + } + .about-values-grid { grid-template-columns: repeat(2, 1fr); } + .about-values-section { + border-radius: 30px; + padding: 3rem 1rem; + } + .about-industries-grid { grid-template-columns: repeat(2, 1fr); } @@ -370,8 +493,4 @@ .about-cta { padding: 2.5rem 1.5rem; } - - .about-cta h2 { - font-size: 1.4rem; - } } diff --git a/src/pages/AboutPage.tsx b/src/pages/AboutPage.tsx index 2a972b1..f67686c 100644 --- a/src/pages/AboutPage.tsx +++ b/src/pages/AboutPage.tsx @@ -217,8 +217,8 @@ const AboutPage = () => { - {/* Our Values */} -
+ {/* Our Values — gradient banner */} +
Our Values
diff --git a/src/pages/PricingPage.css b/src/pages/PricingPage.css index 39770fa..eeae1ad 100644 --- a/src/pages/PricingPage.css +++ b/src/pages/PricingPage.css @@ -10,31 +10,32 @@ } .pricing-hero h1 { - font-size: 3.2rem; + font-size: clamp(2.4rem, 5vw, 3.5rem); font-weight: 800; color: #fff; margin-bottom: 1rem; } .pricing-hero-sub { - font-size: 1.2rem; + font-size: clamp(1rem, 2vw, 1.25rem); color: var(--light-grey-100); opacity: 0.8; - max-width: 600px; + max-width: 640px; margin: 0 auto; + line-height: 1.6; } /* Sections */ .pricing-section { - padding: 4rem 2rem; + padding: 5rem 2rem; } .pricing-section .section-title { text-align: center; - font-size: 2rem; + font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; color: #fff; - margin-bottom: 2.5rem; + margin-bottom: 3rem; } /* Implementation Pricing Table */ @@ -46,10 +47,9 @@ .pricing-table { display: flex; flex-direction: column; - gap: 0; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 14px; + border-radius: 20px; overflow: hidden; } @@ -57,18 +57,27 @@ display: flex; justify-content: space-between; align-items: center; - padding: 1.1rem 1.5rem; + padding: 1.15rem 1.75rem; border-bottom: 1px solid rgba(255, 255, 255, 0.06); + transition: background 0.3s; } .pricing-table-row:last-child { border-bottom: none; } +.pricing-table-row:hover { + background: rgba(255, 255, 255, 0.03); +} + .pricing-table-row--popular { background: rgba(255, 91, 4, 0.06); } +.pricing-table-row--popular:hover { + background: rgba(255, 91, 4, 0.1); +} + .pricing-table-service { color: var(--light-grey-100); font-size: 0.95rem; @@ -78,7 +87,7 @@ } .pricing-popular-tag { - background: var(--orange-100); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); color: #fff; padding: 0.15rem 0.6rem; border-radius: 100px; @@ -109,15 +118,48 @@ background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 16px; + border-radius: 20px; padding: 2rem; display: flex; flex-direction: column; position: relative; + overflow: hidden; + transition: border-color 0.3s, box-shadow 0.4s, transform 0.35s; +} + +.retainer-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: radial-gradient(circle at 50% 0%, rgba(255, 91, 4, 0.06), transparent 60%); + opacity: 0; + transition: opacity 0.4s; + pointer-events: none; +} + +.retainer-card:hover { + transform: translateY(-4px); + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); +} + +.retainer-card:hover::before { + opacity: 1; } .retainer-card--popular { border-color: var(--orange-100); + background: rgba(255, 91, 4, 0.06); +} + +.retainer-card--popular::before { + opacity: 0.5; +} + +.retainer-card--popular:hover { + box-shadow: 0 8px 40px rgba(255, 91, 4, 0.15); } .retainer-popular-badge { @@ -125,13 +167,14 @@ top: -12px; left: 50%; transform: translateX(-50%); - background: var(--orange-100); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); color: #fff; padding: 0.3rem 1rem; border-radius: 100px; font-size: 0.8rem; font-weight: 700; white-space: nowrap; + box-shadow: 0 2px 10px rgba(255, 91, 4, 0.3); } .retainer-card h3 { @@ -146,9 +189,19 @@ } .retainer-amount { - font-size: 2.2rem; + font-size: 2.4rem; font-weight: 900; - color: #fff; + background: linear-gradient(135deg, #fff, var(--light-grey-100)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.retainer-card--popular .retainer-amount { + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } .retainer-period { @@ -159,7 +212,7 @@ .retainer-meta { display: flex; - gap: 1rem; + gap: 0.75rem; margin-bottom: 1.25rem; } @@ -169,6 +222,7 @@ border-radius: 100px; font-size: 0.8rem; color: var(--light-grey-100); + border: 1px solid rgba(255, 255, 255, 0.08); } .retainer-features { @@ -182,15 +236,15 @@ color: var(--light-grey-100); font-size: 0.9rem; line-height: 1.5; - padding: 0.35rem 0 0.35rem 1.2rem; + padding: 0.35rem 0 0.35rem 1.4rem; position: relative; } .retainer-features li::before { - content: '✓'; + content: '→'; position: absolute; left: 0; - color: var(--orange-100); + color: var(--yellow-100); font-weight: 700; } @@ -201,23 +255,25 @@ background: rgba(255, 91, 4, 0.15); color: var(--orange-100); border: 1px solid rgba(255, 91, 4, 0.3); - padding: 0.7rem 1.5rem; + padding: 0.75rem 1.5rem; border-radius: 100px; font-size: 0.9rem; font-weight: 600; cursor: pointer; - transition: background 0.3s; + transition: background 0.3s, transform 0.2s; font-family: var(--font-primary); } .retainer-cta:hover { background: rgba(255, 91, 4, 0.25); + transform: translateY(-1px); } .retainer-card--popular .retainer-cta { background: var(--orange-100); color: #fff; border-color: var(--orange-100); + box-shadow: 0 4px 15px rgba(255, 91, 4, 0.3); } .retainer-card--popular .retainer-cta:hover { @@ -236,12 +292,18 @@ .training-card { background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 12px; - padding: 1.5rem; + border-radius: 20px; + padding: 1.75rem; text-align: center; display: flex; flex-direction: column; gap: 0.4rem; + transition: border-color 0.3s, transform 0.3s; +} + +.training-card:hover { + border-color: rgba(255, 91, 4, 0.25); + transform: translateY(-3px); } .training-card h3 { @@ -251,9 +313,12 @@ } .training-price { - font-size: 1.2rem; + font-size: 1.3rem; font-weight: 800; - color: var(--orange-100); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } .training-desc { @@ -274,8 +339,14 @@ .payment-card { background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 12px; - padding: 1.5rem; + border-radius: 20px; + padding: 1.75rem; + transition: border-color 0.3s, transform 0.3s; +} + +.payment-card:hover { + border-color: rgba(255, 91, 4, 0.2); + transform: translateY(-2px); } .payment-card h3 { @@ -295,18 +366,18 @@ .payment-visual { display: flex; gap: 2px; - border-radius: 6px; + border-radius: 8px; overflow: hidden; } .payment-bar { - background: var(--orange-100); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); color: #fff; font-size: 0.7rem; font-weight: 700; text-align: center; - padding: 0.3rem 0; - min-height: 24px; + padding: 0.35rem 0; + min-height: 26px; display: flex; align-items: center; justify-content: center; @@ -320,29 +391,38 @@ background: rgba(255, 91, 4, 0.35); } -/* Discounts */ +/* Discounts — gradient banner */ +.discount-section { + position: relative; + width: 100vw; + margin-left: calc(-50vw + 50%); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); + padding: 5rem 2rem; + overflow: hidden; + border-radius: 60px; + margin-top: 1rem; + margin-bottom: 1rem; +} + .discount-block { - background: rgba(255, 91, 4, 0.06); - border: 1px solid rgba(255, 91, 4, 0.18); - border-radius: 20px; - padding: 2.5rem; max-width: 1200px; margin: 0 auto; text-align: center; } .discount-block h2 { - font-size: 1.6rem; + font-size: clamp(1.4rem, 3vw, 1.8rem); font-weight: 800; - color: #fff; + color: var(--dark-grey-100); margin-bottom: 0.5rem; } .discount-intro { - color: var(--light-grey-100); + color: var(--dark-grey-100); font-size: 1rem; - margin-bottom: 2rem; + margin-bottom: 2.5rem; opacity: 0.85; + font-weight: 600; } .discount-grid { @@ -352,26 +432,34 @@ } .discount-item { - background: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 12px; - padding: 1.25rem 1rem; + background: rgba(255, 255, 255, 0.15); + backdrop-filter: blur(10px); + border: 1px solid rgba(255, 255, 255, 0.25); + border-radius: 20px; + padding: 1.5rem 1rem; display: flex; flex-direction: column; gap: 0.5rem; align-items: center; + transition: transform 0.3s, background 0.3s; +} + +.discount-item:hover { + transform: translateY(-4px); + background: rgba(255, 255, 255, 0.22); } .discount-group { - color: var(--light-grey-100); + color: var(--dark-grey-100); font-size: 0.85rem; text-align: center; + font-weight: 600; } .discount-amount { - color: var(--orange-100); - font-weight: 800; - font-size: 1.1rem; + color: var(--dark-grey-100); + font-weight: 900; + font-size: 1.2rem; } /* Comparison Table */ @@ -379,6 +467,9 @@ max-width: 1200px; margin: 0 auto; overflow-x: auto; + border-radius: 20px; + border: 1px solid rgba(255, 255, 255, 0.08); + background: rgba(255, 255, 255, 0.03); } .comparison-table { @@ -388,7 +479,7 @@ .comparison-table th, .comparison-table td { - padding: 0.9rem 1.25rem; + padding: 1rem 1.5rem; text-align: left; border-bottom: 1px solid rgba(255, 255, 255, 0.06); font-size: 0.95rem; @@ -398,9 +489,9 @@ .comparison-table th { color: #fff; font-weight: 700; - font-size: 0.9rem; + font-size: 0.85rem; text-transform: uppercase; - letter-spacing: 0.03em; + letter-spacing: 0.04em; background: rgba(255, 255, 255, 0.04); } @@ -430,13 +521,13 @@ .faq-item { background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 12px; + border-radius: 16px; overflow: hidden; transition: border-color 0.3s; } .faq-item--open { - border-color: rgba(255, 255, 255, 0.15); + border-color: rgba(255, 91, 4, 0.25); } .faq-question { @@ -444,7 +535,7 @@ display: flex; justify-content: space-between; align-items: center; - padding: 1.1rem 1.5rem; + padding: 1.15rem 1.5rem; background: none; border: none; color: #fff; @@ -453,6 +544,11 @@ cursor: pointer; text-align: left; font-family: var(--font-primary); + transition: color 0.2s; +} + +.faq-item--open .faq-question { + color: var(--orange-100); } .faq-question svg { @@ -495,7 +591,7 @@ background: rgba(255, 255, 255, 0.04); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 20px; + border-radius: 24px; padding: 2.5rem; } @@ -524,14 +620,6 @@ padding-top: 6rem; } - .pricing-hero h1 { - font-size: 2.2rem; - } - - .pricing-hero-sub { - font-size: 1rem; - } - .pricing-section { padding: 3rem 1rem; } @@ -554,8 +642,9 @@ grid-template-columns: 1fr; } - .discount-block { - padding: 1.5rem; + .discount-section { + border-radius: 30px; + padding: 3rem 1rem; } .discount-grid { diff --git a/src/pages/PricingPage.tsx b/src/pages/PricingPage.tsx index d6b1f41..208e8fd 100644 --- a/src/pages/PricingPage.tsx +++ b/src/pages/PricingPage.tsx @@ -285,7 +285,7 @@ const PricingPage = () => {
{/* Impact Grant (Discounts) */} -
+

Impact Grant Programme

diff --git a/src/pages/ServicesPage.css b/src/pages/ServicesPage.css index af8343d..dc0b19a 100644 --- a/src/pages/ServicesPage.css +++ b/src/pages/ServicesPage.css @@ -10,31 +10,32 @@ } .services-hero h1 { - font-size: 3.2rem; + font-size: clamp(2.4rem, 5vw, 3.5rem); font-weight: 800; color: #fff; margin-bottom: 1rem; } .services-hero-sub { - font-size: 1.2rem; + font-size: clamp(1rem, 2vw, 1.25rem); color: var(--light-grey-100); opacity: 0.8; - max-width: 600px; + max-width: 640px; margin: 0 auto; + line-height: 1.6; } /* Sections */ .services-section { - padding: 4rem 2rem; + padding: 5rem 2rem; } .services-section .section-title { text-align: center; - font-size: 2rem; + font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; color: #fff; - margin-bottom: 2.5rem; + margin-bottom: 3rem; } /* Service Cards Grid */ @@ -50,15 +51,36 @@ background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 16px; + border-radius: 20px; padding: 2rem; cursor: pointer; - transition: border-color 0.3s, transform 0.2s, box-shadow 0.3s; position: relative; + overflow: hidden; + transition: border-color 0.3s, box-shadow 0.4s, transform 0.35s; +} + +.service-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: radial-gradient(circle at 30% 20%, rgba(255, 91, 4, 0.08), transparent 60%); + opacity: 0; + transition: opacity 0.4s; + pointer-events: none; + border-radius: 20px; } .service-card:hover { border-color: rgba(255, 255, 255, 0.2); + transform: translateY(-3px); + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); +} + +.service-card:hover::before { + opacity: 1; } .service-card--expanded { @@ -68,19 +90,23 @@ .service-card--popular { border-color: var(--orange-100); background: rgba(255, 91, 4, 0.06); - box-shadow: 0 0 30px rgba(255, 91, 4, 0.08); +} + +.service-card--popular::before { + background: radial-gradient(circle at 30% 20%, rgba(255, 91, 4, 0.15), transparent 60%); + opacity: 0.5; } .service-card--popular:hover { border-color: var(--orange-100); - box-shadow: 0 0 40px rgba(255, 91, 4, 0.15); + box-shadow: 0 8px 40px rgba(255, 91, 4, 0.15); } .service-popular-badge { position: absolute; top: -11px; right: 1.5rem; - background: var(--orange-100); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); color: #fff; padding: 0.25rem 0.9rem; border-radius: 100px; @@ -88,6 +114,7 @@ font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; + box-shadow: 0 2px 10px rgba(255, 91, 4, 0.3); } .service-card-header { @@ -101,6 +128,11 @@ width: 36px; height: 36px; color: var(--orange-100); + transition: transform 0.3s; +} + +.service-card:hover .service-card-icon { + transform: scale(1.15); } .service-card-icon svg { @@ -145,15 +177,15 @@ color: var(--light-grey-100); font-size: 0.9rem; line-height: 1.5; - padding: 0.35rem 0 0.35rem 1.2rem; + padding: 0.35rem 0 0.35rem 1.4rem; position: relative; } .service-card-includes li::before { - content: '✓'; + content: '→'; position: absolute; left: 0; - color: var(--orange-100); + color: var(--yellow-100); font-weight: 700; } @@ -173,36 +205,46 @@ transition: transform 0.3s; } -/* Assurance Pack */ +/* Assurance Pack — gradient banner */ +.assurance-section { + position: relative; + width: 100vw; + margin-left: calc(-50vw + 50%); + background: linear-gradient(135deg, var(--orange-100), var(--yellow-100)); + padding: 5rem 2rem; + overflow: hidden; + border-radius: 60px; + margin-top: 1rem; + margin-bottom: 1rem; +} + .assurance-pack { - background: rgba(255, 91, 4, 0.06); - border: 1px solid rgba(255, 91, 4, 0.18); - border-radius: 20px; - padding: 2.5rem; max-width: 1200px; margin: 0 auto; } .assurance-header { text-align: center; - margin-bottom: 2rem; + margin-bottom: 2.5rem; } .assurance-header h2 { - font-size: 1.6rem; + font-size: clamp(1.4rem, 3vw, 1.8rem); font-weight: 800; - color: #fff; - margin-bottom: 0.5rem; + color: var(--dark-grey-100); + margin-bottom: 0.75rem; } .assurance-badge { display: inline-block; - background: rgba(255, 91, 4, 0.15); - color: var(--orange-100); + background: rgba(255, 255, 255, 0.25); + backdrop-filter: blur(8px); + color: var(--dark-grey-100); padding: 0.4rem 1.2rem; border-radius: 100px; font-size: 0.9rem; - font-weight: 600; + font-weight: 700; + border: 1px solid rgba(255, 255, 255, 0.3); } .assurance-grid { @@ -215,94 +257,21 @@ display: flex; align-items: center; gap: 0.6rem; - padding: 0.5rem 0; + padding: 0.6rem 0; } .assurance-item svg { - width: 20px; - height: 20px; + width: 22px; + height: 22px; flex-shrink: 0; + color: var(--dark-grey-100); + stroke: var(--dark-grey-100); } .assurance-item span { - color: var(--light-grey-100); + color: var(--dark-grey-100); font-size: 0.95rem; -} - -/* Process Steps */ -.process-steps { - max-width: 1200px; - margin: 0 auto; - display: flex; - flex-direction: column; - gap: 1.5rem; -} - -.process-step { - display: flex; - gap: 1.5rem; - align-items: flex-start; - background: rgba(255, 255, 255, 0.04); - border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 14px; - padding: 1.5rem; -} - -.process-step-number { - font-size: 2rem; - font-weight: 900; - color: var(--orange-100); - opacity: 0.7; - line-height: 1; - flex-shrink: 0; - width: 50px; -} - -.process-step-content h3 { - font-size: 1.1rem; - font-weight: 700; - color: #fff; - margin-bottom: 0.4rem; -} - -.process-step-content p { - color: var(--light-grey-100); - font-size: 0.95rem; - line-height: 1.6; - opacity: 0.85; -} - -/* Tech Stack */ -.tech-grid { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 1rem; - max-width: 1200px; - margin: 0 auto; -} - -.tech-card { - background: rgba(255, 255, 255, 0.04); - border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 12px; - padding: 1.25rem; - text-align: center; -} - -.tech-card h3 { - font-size: 0.85rem; - font-weight: 700; - color: var(--orange-100); - text-transform: uppercase; - letter-spacing: 0.05em; - margin-bottom: 0.5rem; -} - -.tech-card p { - color: var(--light-grey-100); - font-size: 0.85rem; - line-height: 1.5; - opacity: 0.8; + font-weight: 600; } /* CTA */ @@ -314,17 +283,31 @@ text-align: center; background: rgba(255, 91, 4, 0.08); border: 1px solid rgba(255, 91, 4, 0.2); - border-radius: 20px; - padding: 3.5rem 2rem; + border-radius: 24px; + padding: 4rem 2rem; max-width: 900px; margin: 0 auto; + position: relative; + overflow: hidden; +} + +.services-cta::before { + content: ''; + position: absolute; + top: -50%; + left: -50%; + width: 200%; + height: 200%; + background: radial-gradient(circle at center, rgba(255, 91, 4, 0.06), transparent 50%); + pointer-events: none; } .services-cta h2 { - font-size: 1.8rem; + font-size: clamp(1.4rem, 3vw, 1.8rem); font-weight: 800; color: #fff; margin-bottom: 0.75rem; + position: relative; } .services-cta p { @@ -332,33 +315,39 @@ font-size: 1.05rem; margin-bottom: 2rem; opacity: 0.85; + position: relative; } .services-cta-btn { background: var(--orange-100); color: #fff; border: none; - padding: 0.9rem 2.5rem; + padding: 1rem 2.5rem; border-radius: 100px; font-size: 1rem; font-weight: 600; cursor: pointer; font-family: var(--font-primary); + position: relative; + box-shadow: 0 4px 20px rgba(255, 91, 4, 0.3); + transition: box-shadow 0.3s; +} + +.services-cta-btn:hover { + box-shadow: 0 8px 35px rgba(255, 91, 4, 0.45); } /* Responsive */ -@media (max-width: 900px) { +@media (max-width: 1024px) { .services-grid { grid-template-columns: 1fr; } +} +@media (max-width: 900px) { .assurance-grid { grid-template-columns: repeat(2, 1fr); } - - .tech-grid { - grid-template-columns: repeat(3, 1fr); - } } @media (max-width: 600px) { @@ -366,40 +355,20 @@ padding-top: 6rem; } - .services-hero h1 { - font-size: 2.2rem; - } - - .services-hero-sub { - font-size: 1rem; - } - .services-section { padding: 3rem 1rem; } - .assurance-pack { - padding: 1.5rem; + .assurance-section { + border-radius: 30px; + padding: 3rem 1rem; } .assurance-grid { grid-template-columns: 1fr; } - .tech-grid { - grid-template-columns: repeat(2, 1fr); - } - - .process-step { - flex-direction: column; - gap: 0.75rem; - } - .services-cta { padding: 2.5rem 1.5rem; } - - .services-cta h2 { - font-size: 1.4rem; - } } diff --git a/src/pages/ServicesPage.tsx b/src/pages/ServicesPage.tsx index 377d853..29708de 100644 --- a/src/pages/ServicesPage.tsx +++ b/src/pages/ServicesPage.tsx @@ -173,24 +173,6 @@ const assurancePack = [ 'Handover & transition plan', ]; -const processSteps = [ - { step: '01', title: 'Discovery', desc: 'Free consultation to understand your goals, audit current workflows, and identify automation opportunities.' }, - { step: '02', title: 'Proposal & Scope', desc: 'Detailed project plan with fixed pricing, timelines, and deliverables. No surprises.' }, - { step: '03', title: 'Development', desc: 'We build and iterate on your automations with regular check-ins and progress demos.' }, - { step: '04', title: 'Testing & Launch', desc: 'Rigorous QA, UAT with your team, and a smooth go-live with monitoring in place.' }, - { step: '05', title: 'Post-Launch Support', desc: '30 days of included support, team training, full documentation, and optional retainer.' }, -]; - -const techStack = [ - { category: 'Workflow', tools: 'n8n, Make.com, Zapier, Power Automate' }, - { category: 'CRM', tools: 'HubSpot, Salesforce, Pipedrive, Zoho' }, - { category: 'Marketing', tools: 'Mailchimp, ActiveCampaign, Brevo, Meta Ads' }, - { category: 'AI', tools: 'OpenAI, Claude, Google AI, Whisper, LangChain' }, - { category: 'Infrastructure', tools: 'AWS, Hetzner, Docker, Nginx, Cloudflare' }, - { category: 'Analytics', tools: 'Power BI, Google Analytics, Mixpanel, Looker' }, - { category: 'Communication', tools: 'Slack, Teams, Twilio, WhatsApp Business' }, -]; - const ServicesPage = () => { useEffect(() => { window.scrollTo(0, 0); }, []); const [isModalOpen, setIsModalOpen] = useState(false); @@ -288,8 +270,8 @@ const ServicesPage = () => {
- {/* Assurance Pack */} -
+ {/* Assurance Pack — gradient banner */} +
@@ -317,53 +299,6 @@ const ServicesPage = () => {
- {/* How We Work */} -
-
- How We Work -
- {processSteps.map((s, i) => ( - -
{s.step}
-
-

{s.title}

-

{s.desc}

-
-
- ))} -
-
-
- - {/* Technology Stack */} -
-
- Technology Stack -
- {techStack.map((t, i) => ( - -

{t.category}

-

{t.tools}

-
- ))} -
-
-
- {/* CTA */}