New homepage (#2172)

* two new sections

* enterprise capabilities and enterprise ready sections

* sections: engineered-for-builders and performance-by-design

* sections: cta-banner, integrations-logos, solutions

# Conflicts:
#	qdrant-landing/themes/qdrant-2024/assets/css/partials/_cta-banner.scss
#	qdrant-landing/themes/qdrant-2024/layouts/partials/cta-banner.html

* remove old sections from index.html

* wip: home page

* reuse links, carousel width

* globe and globe lights

* globe lights

* finalyzing the globe, add customers icons

* new icons set + svg partial update

* upd icons in the enterprise-ready section

* lines background

* globe lights as gradient and svg

* fix carousel responsiveness

* fix cut box shadow

* accordion slider responsiveness

* new hero

* hero customers

* some hero responsiveness

* customers layout fix

* cards responsiveness

* fixes

* remove floating github link

* hero - bigger screens

* refactor css

* more hero responsiveness

* fix

* hero parallax

* replace svg as img with embedded svg logos

* fix marquee

* slider's tabs responsiveness

* remove horizontal scroll on the mobile

* moved images

* images optim

* moved paths to markdown

* svg -> png

* some refactoring and clean up

* moved scss

* svg to png

* more images optimization and cleaning

* optimizing png

* fix globe cards height

* add reveal effect

* improve reveal effect

* fix for the hero animation in Safari

* removed type:page preventing use-cases page from rendering with newer version of Hugo

* restore static/img/home/reranking.webp

* remove unused files

* formatting

* hero and reveal fixes

* fixes

* update cta banner

* links and content fix

* fixes: content, links, web-ui illustration

* canva testimonial

* upd link

* fix

* replace links

* slider links
This commit is contained in:
trean
2026-03-11 23:27:37 +01:00
committed by GitHub
parent 724821b675
commit 305aea6b9a
442 changed files with 7194 additions and 829 deletions
@@ -83,6 +83,9 @@ $theme-colors: (
'light': $neutral-98,
'mid-gray': $neutral-94,
'dark': $neutral-20,
'teal': $secondary-teal-50,
'violet': $secondary-violet-50,
'blue': $secondary-blue-50,
);
$body-bg: $neutral-98;
@@ -109,10 +112,12 @@ $table-striped-bg: $neutral-94;
$font-family-sans-serif: 'Mona Sans', 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif,
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
$font-family-monospace: 'Geist Mono', 'Overpass Mono', SFMono-Regular, 'Droid Sans Mono', Menlo, Monaco, Consolas, 'Lucida Console', 'Monaco', monospace;
$font-family-monospace: 'Geist Mono', 'Overpass Mono', SFMono-Regular, 'Droid Sans Mono', Menlo, Monaco, Consolas,
'Lucida Console', 'Monaco', monospace;
$font-family-base: 'Mona Sans', 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, 'Apple Color Emoji',
'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
$font-family-code: 'Geist Mono', 'Overpass Mono', SFMono-Regular, 'Droid Sans Mono', Menlo, Monaco, Consolas, 'Lucida Console', 'Monaco', monospace;
$font-family-code: 'Geist Mono', 'Overpass Mono', SFMono-Regular, 'Droid Sans Mono', Menlo, Monaco, Consolas,
'Lucida Console', 'Monaco', monospace;
$font-size-xs: pxToRem(12);
$font-size-s: pxToRem(14);
@@ -210,3 +215,15 @@ $spacers: (
$code-snippet-border-radius: $border-radius * 2;
$post-content-width: pxToRem(920);
$grid-breakpoints: (
xxs: 0,
xs: 375px,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px,
xxl: 1900px,
);
@include _assert-ascending($grid-breakpoints, '$grid-breakpoints');
@include _assert-starts-at-zero($grid-breakpoints, '$grid-breakpoints');
@@ -64,11 +64,11 @@ body {
&.no-scroll {
overflow: hidden;
}
// Apply Mona Sans width variation setting globally
// This ensures all text using Mona Sans (via font-family-base) uses width axis at 100
font-variation-settings: 'wdth' 100;
font-feature-settings: "ss05" on;
font-feature-settings: 'ss05' on;
font-weight: 350;
}
@@ -1,11 +1,9 @@
@import 'base';
@import 'partials/customers';
@import 'partials/hero';
@import 'partials/core-features';
@import 'partials/scroll-reveal';
@import 'partials/home/index';
@import 'partials/customer-stories';
@import 'partials/docker-deploy';
@import 'partials/vectors';
@import 'partials/integrations';
@import 'partials/get-started';
@import 'partials/additional-resources';
@import 'partials/feature-overview';
@@ -136,4 +134,4 @@
@import 'partials/elastic-lucene/index';
@import 'partials/hr-tech/index';
@import 'partials/healthcare/index';
@import 'partials/cta-banner';
@import 'partials/cta-banner';
@@ -11,9 +11,12 @@
$background-color: #090e1a,
$pauseOnHover: false,
$speed: 25s,
$pseudoElementDisplay: block
$pseudoElementDisplay: block,
$keyframePrefix: ''
) {
$inner-width: math.div($total-marquee-items, $visible-marquee-items) * 2 * 100%;
$leftKeyframe: if($keyframePrefix != '', #{$keyframePrefix}marqueeLeft, marqueeLeft);
$rightKeyframe: if($keyframePrefix != '', #{$keyframePrefix}marqueeRight, marqueeRight);
max-width: 100%;
text-align: center;
@@ -68,11 +71,11 @@
}
&_to-left {
animation: marqueeLeft $speed linear infinite;
animation: $leftKeyframe $speed linear infinite;
}
&_to-right {
animation: marqueeRight $speed linear infinite;
animation: $rightKeyframe $speed linear infinite;
}
}
@@ -91,7 +94,7 @@
}
}
@keyframes marqueeLeft {
@keyframes #{$leftKeyframe} {
0% {
left: 0;
}
@@ -99,7 +102,7 @@
left: $inner-width * 0.5 * -1;
}
}
@keyframes marqueeRight {
@keyframes #{$rightKeyframe} {
0% {
left: $inner-width * 0.5 * -1;
}
@@ -1,162 +0,0 @@
@use '../helpers/functions' as *;
.core-features {
background-color: $neutral-94;
padding-top: $spacer * 4;
padding-bottom: $spacer * 4;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
&__title {
font-size: pxToRem(40);
line-height: pxToRem(48);
text-align: start;
margin-bottom: $spacer * 1.5;
max-width: 100%;
}
&__subtitle {
font-size: map-get($font-sizes-text, 'l');
line-height: pxToRem(27);
margin-bottom: $spacer * 1.5;
max-width: 100%;
text-align: start;
}
&__card-title {
color: $neutral-20;
margin-top: $spacer * 1.5;
margin-bottom: $spacer;
line-height: pxToRem(34);
}
&__cloud-native {
@include media-breakpoint-up(xl) {
flex-direction: row;
}
&.card {
padding-top: 0;
padding-right: 0;
padding-bottom: 0;
}
& div:first-child {
padding-right: $spacer * 2;
padding-top: $spacer * 2;
@include media-breakpoint-up(xl) {
padding-right: pxToRem(122);
padding-top: $spacer * 5;
}
}
.core-features__card-title {
font-size: pxToRem(24);
line-height: pxToRem(34);
margin-top: 0;
margin-bottom: pxToRem(12);
}
.core-features__card-content {
font-size: map-get($font-sizes-text, 'l');
line-height: pxToRem(27);
margin-bottom: pxToRem(12);
}
}
&__cloud-native-image {
margin-top: $spacer;
background: url('/img/qdrant-cloud.png') right bottom no-repeat;
background-size: contain;
max-width: 100% !important;
width: pxToRem(372);
height: pxToRem(214);
border-radius: 0 0 calc($spacer / 2) 0;
aspect-ratio: 1.45/1;
align-self: end;
}
&__card-content {
color: $neutral-30;
margin-bottom: $spacer * 1.5;
}
&__card-link {
color: $neutral-20;
font-size: map-get($font-sizes-text, 'm');
text-decoration: none;
}
@include media-breakpoint-up(xl) {
padding-top: $spacer * 6.5;
padding-bottom: $spacer * 6.5;
&__title {
font-size: map-get($font-sizes, 2);
text-align: center;
line-height: pxToRem(67);
max-width: pxToRem(920);
}
&__subtitle {
font-size: map-get($font-sizes-text, 'xl');
line-height: pxToRem(30);
max-width: pxToRem(920);
text-align: center;
}
&__cards {
margin-left: pxToRem(-15);
margin-right: pxToRem(-15);
}
&__cards > div {
padding: 0 pxToRem(15);
}
&__card {
padding-top: $spacer * 2.5;
padding-bottom: $spacer * 2.5;
padding-left: $spacer * 2.5;
padding-right: $spacer * 2.5;
min-height: pxToRem(390);
svg {
max-width: pxToRem(48);
max-height: pxToRem(48);
}
}
&__cloud-native {
padding-top: pxToRem(75);
padding-bottom: pxToRem(75);
max-width: pxToRem(1110);
min-height: pxToRem(420);
padding-left: $spacer * 3;
padding-right: $spacer * 3;
margin-top: $spacer * 5;
.core-features__card-title {
font-size: map-get($font-sizes-text, 'xxl');
line-height: pxToRem(48);
margin-bottom: $spacer * 1.5;
}
.core-features__card-content {
font-size: map-get($font-sizes-text, 'l');
line-height: pxToRem(27);
margin-bottom: $spacer * 1.5;
}
}
&__cloud-native-image {
width: pxToRem(540);
height: pxToRem(372);
}
}
}
@@ -19,6 +19,7 @@
left: 0;
right: 0;
bottom: 0;
z-index: 0;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
@@ -36,27 +37,25 @@
display: flex;
flex-direction: column;
align-items: center;
gap: $spacer * 0.75;
text-align: center;
}
&__title {
margin: 0;
margin: 0 0 0.75rem;
font-size: $spacer * 2;
line-height: pxToRem(38);
color: $neutral-98;
}
&__description {
margin: 0;
margin: 0 0 1.5rem;
font-size: pxToRem(18);
line-height: pxToRem(28);
line-height: 1;
color: $neutral-70;
}
&__button {
white-space: nowrap;
margin-top: $spacer * 0.5;
}
&__illustration {
@@ -75,7 +74,6 @@
align-items: flex-start;
text-align: left;
max-width: pxToRem(500);
gap: $spacer * 0.5;
}
&__title {
@@ -1,52 +0,0 @@
@use '../helpers/functions' as *;
@use '../mixins/marquee' as marquee;
.customers {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
gap: $spacer * 3;
padding-top: $spacer * 4;
padding-bottom: $spacer * 4;
background: $neutral-10;
&__title {
color: $neutral-70;
text-align: center;
font-size: map-get($font-sizes-text, 'l');
margin: 0 auto calc($spacer / 2);
}
&__description {
display: flex;
width: 100%;
flex-direction: column;
align-items: center;
padding-left: pxToRem(20);
padding-right: pxToRem(20);
}
&__link {
color: $primary-60;
font-size: map-get($font-sizes-text, 'l');
text-decoration: none;
}
.customers__logos {
@include marquee.base(64px, 224px, 24, 24, 52px, $neutral-10, false, 50s, block);
}
@include media-breakpoint-up(xl) {
&__title {
margin: 0;
}
&__description {
flex-direction: row;
justify-content: center;
padding: 0;
gap: calc($spacer / 2);
}
}
}
@@ -1,173 +0,0 @@
@use '../helpers/functions' as *;
@use 'sass:math';
.hero {
padding-top: $spacer * 2.5;
position: relative;
background: url('/img/stars-pattern.png') $neutral-10;
&__content {
text-align: center;
max-width: 100%;
margin: 0 auto;
width: 100%;
}
&__image {
width: 100%;
min-height: pxToRem(480);
margin: pxToRem(-142) auto 0;
overflow: hidden;
@include media-breakpoint-up(md) {
$height: math.div(-100vw, 2.46); // image's aspect ratio 2.46 / 1
margin-top: calc(#{$height} * 0.34);
}
img {
display: block;
width: 250%;
height: auto;
margin-left: -75%;
@include media-breakpoint-up(md) {
width: 100%;
margin-left: 0;
}
}
}
&__title {
color: $neutral-98;
text-align: center;
width: 100%;
margin-bottom: $spacer;
font-size: map-get($font-sizes, 4);
line-height: pxToRem(48);
}
&__subtitle {
color: $neutral-70;
text-align: center;
font-size: pxToRem(18);
line-height: pxToRem(27);
max-width: 100%;
margin: 0 auto $spacer * 1.5;
}
&__buttons {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: $spacer * 1.5;
margin-bottom: $spacer * 5;
}
&__buttons a {
min-width: pxToRem(200);
}
&__stars {
position: absolute;
right: $spacer;
bottom: $spacer;
border-radius: 8px;
border: none;
outline: none;
display: flex;
align-items: center;
justify-content: center;
padding-top: calc($spacer / 2);
padding-bottom: calc($spacer / 2);
padding-left: pxToRem(20);
padding-right: pxToRem(20);
background-color: $neutral-10;
transition: bottom 1s ease-in-out;
}
&__stars svg {
max-width: pxToRem(24);
max-height: pxToRem(24);
}
&__stars-text {
color: $neutral-98;
margin-right: calc($spacer / 2);
margin-left: calc($spacer / 2);
font-size: map-get($font-sizes-text, 's');
line-height: pxToRem(21);
font-weight: 500;
}
&__stars-count {
border-radius: 6px;
border: 1px solid $neutral-30;
color: $neutral-98;
padding-left: calc($spacer / 2);
padding-right: calc($spacer / 2);
display: flex;
align-items: center;
justify-content: center;
gap: calc($spacer / 4);
height: pxToRem(25);
font-size: map-get($font-sizes-text, 's');
line-height: pxToRem(21);
}
@include media-breakpoint-up(xl) {
padding-top: $spacer * 5;
&__content {
padding: 0;
max-width: pxToRem(920);
}
&__title {
font-size: map-get($font-sizes, 1);
line-height: pxToRem(76);
}
&__subtitle {
font-size: map-get($font-sizes-text, 'xl');
line-height: pxToRem(30);
max-width: pxToRem(640);
margin: 0 auto $spacer * 2;
}
&__buttons {
flex-direction: row;
align-items: flex-start;
}
&__buttons a {
min-width: auto;
}
&__stars {
position: fixed;
right: $spacer * 1.5;
bottom: $spacer * 1.5;
transition: background-color 0.2s;
z-index: 2;
&:hover {
background-color: $neutral-100;
.hero__stars-text,
.hero__stars-count {
color: $neutral-20;
}
& > svg path {
fill: $neutral-20;
}
}
}
}
}
@@ -1,89 +0,0 @@
@use '../helpers/functions' as *;
.integrations {
background: $neutral-10;
padding-top: $spacer * 4;
position: relative;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
&__title {
font-size: map-get($font-sizes, 4);
line-height: pxToRem(48);
text-align: center;
margin-bottom: $spacer * 1.5;
max-width: 100%;
color: $neutral-98;
}
&__subtitle {
color: $neutral-70;
font-size: map-get($font-sizes-text, 'l');
line-height: pxToRem(27);
margin-bottom: $spacer * 1.5;
text-align: center;
}
&__link {
color: $primary-60;
font-size: $font-size-xl;
&:hover {
text-decoration: underline;
}
}
&__preview {
margin-top: $spacer * 3;
width: 100%;
height: pxToRem(440);
background-size: contain;
background-position: center;
background-repeat: no-repeat;
background-image: url('/img/mobile/integrations.svg');
}
&__overlay {
display: none;
}
@include media-breakpoint-up(xl) {
background: url('/img/stars-pattern.png') $neutral-10;
padding-top: $spacer * 6.5;
&__title {
font-size: map-get($font-sizes, 2);
line-height: pxToRem(67);
max-width: pxToRem(726);
}
&__subtitle {
font-size: map-get($font-sizes-text, 'xl');
line-height: pxToRem(30);
}
&__preview {
margin-top: $spacer * 5;
width: pxToRem(920);
height: pxToRem(440);
background-image: url('/img/integrations.svg');
}
&__overlay {
display: block;
width: 100%;
height: pxToRem(240);
position: absolute;
bottom: pxToRem(-255);
left: 0;
filter: blur(60px);
background: linear-gradient(90deg, #dc244c 7%, #2567eb 30%, #f54c71 50%, #7335f0 70%, #bb3987 100%);
}
}
}
@@ -0,0 +1,50 @@
// Scroll reveal animations
// Entry: CSS animation (slide-up + fade-in) — keeps translateY out of the
// static hidden state so removing .revealed never shifts layout and can't
// cause an intersection-observer feedback loop.
// Exit: opacity-only CSS transition — smooth fade, no position change.
@keyframes reveal-in {
from {
opacity: 0;
transform: translateY(24px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
// Fallback: show content if JS hasn't loaded
[data-reveal] {
opacity: 1;
transform: none;
}
// Only apply hidden state when JS is ready
.js-loaded [data-reveal] {
opacity: 0;
transition: opacity 0.5s ease-out;
will-change: opacity, transform;
}
.js-loaded [data-reveal].revealed {
opacity: 1;
animation: reveal-in 0.6s ease-out backwards;
}
// Stagger delays for grouped items
.js-loaded [data-reveal-delay="1"] { transition-delay: 0.1s; animation-delay: 0.1s; }
.js-loaded [data-reveal-delay="2"] { transition-delay: 0.2s; animation-delay: 0.2s; }
.js-loaded [data-reveal-delay="3"] { transition-delay: 0.3s; animation-delay: 0.3s; }
.js-loaded [data-reveal-delay="4"] { transition-delay: 0.4s; animation-delay: 0.4s; }
// Respect reduced motion preference
@media (prefers-reduced-motion: reduce) {
.js-loaded [data-reveal] {
opacity: 1;
transform: none;
transition: none;
animation: none;
}
}
@@ -14,6 +14,10 @@
&__review {
margin-bottom: $spacer * 2.5;
font-size: pxToRem(20);
&:last-child {
margin-bottom: 0;
}
line-height: 1.5;
color: $neutral-20;
letter-spacing: pxToRem(-0.2);
@@ -61,6 +65,54 @@
img {
width: pxToRem(150);
}
&--gradient {
min-height: pxToRem(300);
background-color: $neutral-10;
background-image: url('/img/testimonial-logo-glow.svg');
background-repeat: no-repeat;
background-position: center bottom;
background-size: 100% auto;
position: relative;
overflow: hidden;
img {
position: relative;
z-index: 1;
filter: brightness(0) invert(1);
}
}
}
/* Gradient layout: equal-height cards, Figma-style (only when gradient: true) */
&--gradient-layout {
.row {
align-items: stretch;
--bs-gutter-x: #{pxToRem(30)};
}
.testimonial-light__content,
.testimonial-light__logo {
min-height: pxToRem(300);
height: 100%;
}
.testimonial-light__content {
display: flex;
flex-direction: column;
justify-content: center;
padding: pxToRem(56);
}
.testimonial-light__logo--gradient {
padding: pxToRem(32);
}
.testimonial-light__review {
font-size: pxToRem(24);
line-height: 1.3;
letter-spacing: pxToRem(-0.5);
}
}
&__partners {
@@ -0,0 +1,229 @@
@use '../../helpers/functions' as *;
.case-studies {
background-color: $neutral-94;
padding-top: $spacer * 4;
padding-bottom: $spacer * 4;
@include media-breakpoint-up(xl) {
padding-top: $spacer * 5;
padding-bottom: $spacer * 5;
}
// Header
&__header {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: $spacer * 1.5;
margin-bottom: $spacer * 3;
@include media-breakpoint-up(xl) {
margin-bottom: $spacer * 4;
}
}
&__title {
flex: 1 1 auto;
min-width: 0;
font-size: pxToRem(32);
font-weight: 600;
line-height: 1.2;
letter-spacing: -0.5px;
color: $neutral-20;
margin: 0;
@include media-breakpoint-up(xl) {
font-size: pxToRem(40);
}
}
// Controls
&__controls {
flex-shrink: 0;
margin-left: auto;
display: flex;
gap: $spacer * 2;
}
&__arrow {
display: flex;
align-items: center;
justify-content: center;
width: pxToRem(40);
height: pxToRem(40);
padding: 0;
background: transparent;
border: none;
cursor: pointer;
color: $neutral-20;
transition:
color 0.2s ease,
opacity 0.2s ease;
&:hover:not(:disabled) {
color: $primary-50;
}
&:disabled {
color: $neutral-80;
cursor: not-allowed;
}
svg {
width: pxToRem(24);
height: pxToRem(14);
}
}
// Carousel constrained to container width
&__carousel-outer {
overflow: hidden;
margin-top: pxToRem(-12);
margin-bottom: pxToRem(-60); // negative margin so card shadow not clipped below
padding-top: pxToRem(12);
position: relative;
@include media-breakpoint-up(sm) {
margin-right: pxToRem(-24);
padding-right: pxToRem(24);
}
&::after {
content: '';
position: absolute;
top: 0;
right: 0;
bottom: 0;
width: pxToRem(20);
background: linear-gradient(to left, rgba($neutral-94, 0.3), transparent);
pointer-events: none;
@include media-breakpoint-down(sm) {
display: none;
}
}
}
&__carousel {
overflow: hidden;
padding-bottom: pxToRem(80);
@include media-breakpoint-up(sm) {
margin-right: pxToRem(-24);
padding-right: pxToRem(24);
}
}
&__track {
display: flex;
gap: pxToRem(30);
transition: transform 0.3s ease;
}
&__slide {
flex-shrink: 0;
width: var(--case-studies-slide-width, pxToRem(280));
}
&__card-link {
display: block;
text-decoration: none;
color: inherit;
&:hover {
color: inherit;
text-decoration: none;
}
}
// Card
&__card {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 100%;
min-width: 0;
height: pxToRem(280);
padding: $spacer * 2;
background-color: $neutral-98;
border: 1px solid rgba($neutral-80, 0.2);
border-radius: pxToRem(16);
box-shadow:
2px 2px 8px 0 rgba(155, 162, 184, 0.1),
8px 8px 14px 0 rgba(155, 162, 184, 0.09),
18px 18px 18px 0 rgba(155, 162, 184, 0.05),
32px 32px 22px 0 rgba(155, 162, 184, 0.01),
48px 48px 24px 0 rgba(155, 162, 184, 0);
transition: box-shadow 0.2s ease;
&:hover {
box-shadow:
3px 2px 9px 0 rgba(22, 30, 51, 0.1),
12px 6px 16px 0 rgba(22, 30, 51, 0.09),
28px 14px 22px 0 rgba(22, 30, 51, 0.05),
48px 24px 26px 0 rgba(22, 30, 51, 0.01),
72px 36px 28px 0 rgba(22, 30, 51, 0);
}
}
&__card-text {
font-size: map-get($font-sizes-text, 'l');
font-weight: 350;
line-height: 1.5;
color: $neutral-30;
margin: 0;
}
&__phrase--no-break {
white-space: nowrap; // Keeps last word + period together to avoid orphan punctuation
}
&__highlight {
font-weight: 600;
color: $primary-50;
}
&__card-footer {
display: flex;
align-items: center;
justify-content: space-between;
gap: pxToRem(16);
}
&__card-logo {
height: pxToRem(48);
display: flex;
align-items: flex-end;
svg {
max-height: pxToRem(48);
width: auto;
height: auto;
object-fit: contain;
filter: brightness(0) saturate(100%);
}
}
&__card-arrow {
display: flex;
align-items: center;
justify-content: center;
width: pxToRem(28);
height: pxToRem(28);
flex-shrink: 0;
color: $neutral-20;
opacity: 0;
transition: opacity 0.2s ease;
.case-studies__card:hover & {
opacity: 1;
}
svg {
width: pxToRem(24);
height: pxToRem(14);
}
}
}
@@ -0,0 +1,44 @@
@use '../../helpers/functions' as *;
.customers {
display: flex;
justify-content: center;
align-items: center;
padding: pxToRem(64) pxToRem(20) pxToRem(80);
background: $neutral-10;
.container {
width: 100%;
max-width: pxToRem(1110);
padding-left: 0;
padding-right: 0;
}
&__grid {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: pxToRem(24) pxToRem(8);
width: 100%;
}
&__logo {
flex: 0 0 auto;
display: flex;
align-items: center;
justify-content: center;
width: pxToRem(103); // (1110 - 9*8)/10 so 10 logos fit per row on 2 lines
height: pxToRem(56);
padding: 0 pxToRem(10);
svg {
display: block;
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
object-fit: contain;
}
}
}
@@ -0,0 +1,227 @@
@use '../../helpers/functions' as *;
.engineered-for-builders {
background-color: $neutral-10;
padding-top: pxToRem(120);
padding-bottom: pxToRem(120);
position: relative;
overflow: hidden;
.container {
max-width: pxToRem(1110);
position: relative;
z-index: 1;
}
// Background decoration
&__background {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: radial-gradient(ellipse at 50% 0%, rgba(87, 0, 201, 0.15) 0%, transparent 60%);
pointer-events: none;
// Two line backgrounds
&::before {
content: '';
position: absolute;
background-image: url('/img/home/blured-line.svg');
top: 0;
left: 0;
right: 0;
bottom: 0;
background-size: 80% auto;
background-position: 50% 69%;
background-repeat: no-repeat;
mix-blend-mode: plus-lighter;
filter: blur(78px);
@media (max-width: 2300px) {
background-size: 90% auto;
}
@include media-breakpoint-down(xxl) {
background-size: cover;
}
}
&::after {
content: '';
position: absolute;
background-image: url('/img/home/blured-line-2.svg');
top: 0;
left: 0;
right: 0;
bottom: 0;
background-size: 80% auto;
background-position: 50% 69%;
background-repeat: no-repeat;
mix-blend-mode: plus-lighter;
filter: blur(26px);
@media (max-width: 2300px) {
background-size: 90% auto;
}
@include media-breakpoint-down(xxl) {
background-size: cover;
}
}
}
&__background-texture {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('/img/home/engineered-texture.png');
background: image-set(
url('/img/home/engineered-texture.webp') type('image/webp'),
url('/img/home/engineered-texture.png') type('image/png')
);
background-size: cover;
background-position: 50% 69%;
background-repeat: no-repeat;
opacity: 0.7;
mix-blend-mode: overlay;
}
// Header
&__header {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: pxToRem(8);
margin-bottom: pxToRem(64);
max-width: pxToRem(920);
margin-left: auto;
margin-right: auto;
}
&__title {
font-size: pxToRem(32);
font-weight: 600;
line-height: 1.1;
letter-spacing: -0.5px;
color: $neutral-90;
margin: 0;
@include media-breakpoint-up(xl) {
font-size: pxToRem(48);
}
}
&__subtitle {
font-size: map-get($font-sizes-text, 'l');
font-weight: 350;
line-height: 1.5;
color: $neutral-70;
margin: 0;
}
// Illustration
&__illustration {
position: relative;
margin-bottom: pxToRem(40);
img {
width: 100%;
//max-width: pxToRem(1026);
height: auto;
display: block;
margin: 0 auto;
border-radius: pxToRem(16);
}
// Gradient overlay at bottom
&::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 100%;
max-width: pxToRem(1026);
height: pxToRem(112);
background: linear-gradient(180deg, rgba(9, 14, 26, 0) 0%, rgb(9, 14, 26) 100%);
pointer-events: none;
}
}
&__image-note {
font-size: pxToRem(14);
font-weight: 350;
opacity: 0.7;
}
// Features
&__features {
display: flex;
flex-direction: column;
gap: pxToRem(48);
padding-top: pxToRem(40);
@include media-breakpoint-up(md) {
flex-direction: row;
}
}
&__feature {
flex: 1;
display: flex;
flex-direction: column;
gap: $spacer;
}
&__feature-title {
font-size: pxToRem(18);
font-weight: 600;
line-height: 1.5;
letter-spacing: -0.2px;
color: $neutral-90;
margin: 0;
@include media-breakpoint-up(xl) {
font-size: pxToRem(20);
}
}
&__feature-description {
font-size: map-get($font-sizes-text, 'md');
font-weight: 350;
line-height: 1.5;
color: $neutral-70;
margin: 0;
}
&__feature-link {
display: inline-flex;
align-items: center;
gap: pxToRem(2);
font-size: map-get($font-sizes-text, 'md');
font-weight: 500;
line-height: 1.5;
color: $neutral-98;
text-decoration: none;
transition: opacity 0.2s ease;
&:hover {
opacity: 0.8;
}
svg {
width: pxToRem(16);
height: pxToRem(16);
margin-top: pxToRem(2);
transition: transform 0.2s ease;
}
&:hover svg {
transform: translateX(4px);
}
}
}
@@ -0,0 +1,298 @@
@use '../../helpers/functions' as *;
.enterprise-capabilities {
position: relative;
background: radial-gradient(
107.37% 114.83% at 50% 94.96%,
rgba(67, 37, 174, 0) 0%,
rgba(67, 37, 174, 0) 75%,
rgba(67, 37, 174, 0.8) 90%,
#6143e0 100%
),
#090e1a;
padding-top: pxToRem(120);
padding-bottom: 31rem;
overflow: hidden;
isolation: isolate;
&__stars {
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
width: pxToRem(1440);
height: pxToRem(800);
pointer-events: none;
z-index: 1;
background-image: url('/img/home/stars-bg.svg');
background-size: 1440px 800px;
background-position: center top;
background-repeat: no-repeat;
}
&__background {
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
}
&__white-light {
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
aspect-ratio: 1/1;
max-width: pxToRem(1600);
&:before {
content: '';
display: none;
position: absolute;
inset: 0;
filter: blur(5px);
mix-blend-mode: plus-lighter;
background: radial-gradient(
49.61% 49.61% at 50% 50%,
transparent 0%,
transparent 35.59%,
#d6d6d6 71.07%,
transparent 100%
)
center bottom / pxToRem(1800) auto no-repeat;
background-blend-mode: color-dodge;
transform: translateY(120%);
margin-right: -100px;
margin-left: -100px;
@include media-breakpoint-up(lg) {
display: block;
transform: translateY(90%);
}
}
}
&__globe-blue-light {
content: '';
position: absolute;
inset: 0;
//background: $secondary-blue-30;
background: url(/img/home/globe/globe-light.svg) center bottom / pxToRem(1800) auto no-repeat;
mix-blend-mode: plus-lighter;
filter: blur(40px);
margin-right: -100px;
margin-left: -100px;
}
&__globe-front {
position: absolute;
inset: 0;
z-index: 2;
&::before {
content: '';
position: absolute;
inset: 0;
background-image: url('/img/home/globe/globe.png');
background-size: pxToRem(1600) auto;
background-position: center bottom;
background-repeat: no-repeat;
z-index: 1;
}
&::after {
content: '';
position: absolute;
bottom: 0;
right: 0;
left: 0;
height: 240px;
background: linear-gradient(180deg, rgba(9, 14, 26, 0) 4.25%, #090e1a 88.85%);
background-position: center bottom;
background-repeat: no-repeat;
z-index: 1;
}
}
// Content
&__content {
position: relative;
z-index: 2;
display: flex;
flex-direction: column;
align-items: center;
gap: $spacer * 4;
}
// Header
&__header {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: $spacer;
max-width: pxToRem(920);
}
&__title {
font-size: pxToRem(32);
font-weight: 600;
line-height: 1.1;
letter-spacing: -0.5px;
color: $neutral-98;
margin: 0;
@include media-breakpoint-up(xl) {
font-size: pxToRem(48);
}
}
&__subtitle {
font-size: map-get($font-sizes-text, 'l');
font-weight: 350;
line-height: 1.5;
letter-spacing: -0.2px;
color: $neutral-70;
margin: 0;
max-width: pxToRem(730);
@include media-breakpoint-up(xl) {
font-size: map-get($font-sizes-text, 'xl');
}
}
// Cards
&__cards {
display: grid;
grid-template-columns: 1fr;
gap: $spacer * 2;
width: 100%;
max-width: pxToRem(1114);
@include media-breakpoint-up(md) {
grid-template-columns: repeat(2, 1fr);
}
@include media-breakpoint-up(xl) {
grid-template-columns: repeat(4, 1fr);
grid-template-rows: auto auto;
gap: pxToRem(30);
align-items: stretch;
}
}
&__card {
display: flex;
flex-direction: column;
gap: $spacer;
min-width: 0;
padding: $spacer * 1.5 pxToRem(20);
background: linear-gradient(180deg, rgba(22, 30, 51, 0.95) 0%, rgba(14, 20, 36, 0.95) 100%);
border: 1px solid transparent;
border-top-color: $neutral-40;
border-radius: pxToRem(8);
overflow: visible;
position: relative;
text-decoration: none;
color: inherit;
transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
&:hover {
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
background: linear-gradient(180deg, rgba(28, 38, 64, 0.98) 0%, rgba(20, 28, 48, 0.98) 100%);
}
@include media-breakpoint-up(xl) {
&--left {
grid-column: 1;
grid-row: 1 / 3;
align-self: end;
}
&--center-left {
grid-column: 2;
grid-row: 1;
}
&--center-right {
grid-column: 3;
grid-row: 1;
}
&--right {
grid-column: 4;
grid-row: 1 / 3;
align-self: end;
}
}
}
&__connector {
display: none;
@include media-breakpoint-up(xl) {
display: block;
position: absolute;
top: 100%;
left: 50%;
transform: translateX(-50%);
width: pxToRem(36);
height: pxToRem(200);
pointer-events: none;
z-index: -1;
}
}
&__card-icon {
width: pxToRem(32);
height: pxToRem(32);
svg {
width: 100%;
height: 100%;
}
}
&__card-content {
display: flex;
flex-direction: column;
gap: $spacer * 0.5;
flex: 1;
}
&__card-title {
font-size: map-get($font-sizes-text, 'md');
font-weight: 600;
line-height: 1.5;
color: $neutral-98;
margin: 0;
}
&__card-description {
font-size: map-get($font-sizes-text, 'md');
font-weight: 350;
line-height: 1.5;
color: $neutral-70;
margin: 0;
}
&__card-link {
align-self: flex-start;
font-size: pxToRem(14);
font-weight: 500;
line-height: 1.5;
white-space: nowrap;
min-width: 0;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
&__card:hover &__card-link {
padding-right: calc(#{pxToRem(20)} + 6px);
&::before,
&::after {
animation: dash 0.3s ease-in-out forwards;
}
}
}
@@ -0,0 +1,215 @@
@use '../../helpers/functions' as *;
.enterprise-ready {
background-color: $neutral-94;
padding-top: pxToRem(80);
padding-bottom: pxToRem(80);
.container {
max-width: pxToRem(1110);
}
// Header
&__header {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: $spacer;
margin-bottom: pxToRem(64);
}
&__title {
font-size: pxToRem(32);
font-weight: 600;
line-height: 1.1;
letter-spacing: -0.5px;
color: $neutral-20;
margin: 0;
@include media-breakpoint-up(xl) {
font-size: pxToRem(48);
}
}
&__subtitle {
font-size: map-get($font-sizes-text, 'l');
font-weight: 350;
line-height: 1.5;
letter-spacing: -0.2px;
color: $neutral-30;
margin: 0;
max-width: pxToRem(728);
@include media-breakpoint-up(xl) {
font-size: map-get($font-sizes-text, 'xl');
}
}
// Content wrapper
&__content {
display: flex;
flex-direction: column;
gap: pxToRem(30);
}
// Row containers
&__row {
display: flex;
flex-wrap: wrap;
gap: pxToRem(30);
}
&__row--large {
@include media-breakpoint-up(md) {
flex-wrap: nowrap;
}
}
&__row--small {
gap: pxToRem(30);
@include media-breakpoint-up(xl) {
flex-wrap: nowrap;
}
}
// Cards base
&__card {
background-color: $neutral-98;
border: 1px solid $neutral-90;
border-radius: pxToRem(8);
overflow: hidden;
}
// Large cards
&__card--large {
display: flex;
flex-direction: column;
width: 100%;
min-width: 0;
text-decoration: none;
transition:
box-shadow 0.2s ease,
border-color 0.2s ease;
@include media-breakpoint-up(md) {
flex: 1 1 0;
}
&#{&}__card--link:hover {
border-color: $neutral-80;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
}
&__card-visual {
position: relative;
height: pxToRem(144);
background-color: $neutral-98;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
&__card-img {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
}
&__card-footer {
display: flex;
align-items: center;
padding: pxToRem(24);
}
&__card-link {
align-self: flex-start;
font-weight: 500;
}
&__card--large#{&}__card--link:hover &__card-link {
$icon-width: pxToRem(20);
color: $primary-50;
padding-right: calc($icon-width + 6px);
&::before {
background: linear-gradient(to right, $primary-50 50%, transparent 50%);
background-size: 200% 100%;
background-position: 0 0;
animation: link-dash 0.3s ease-in-out forwards;
}
&::after {
background: $primary-50;
animation: link-dash 0.3s ease-in-out forwards;
}
}
@keyframes link-dash {
to {
background-position: 0 0;
}
}
// Small cards — flex to fill container width at all breakpoints
&__card--small {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 100%;
min-width: 0;
height: pxToRem(160);
padding: pxToRem(24);
text-decoration: none;
color: inherit;
transition:
box-shadow 0.2s ease,
border-color 0.2s ease;
@include media-breakpoint-up(sm) {
flex: 1 1 calc((100% - 60px) / 3);
}
@include media-breakpoint-up(xl) {
flex: 1 1 0;
}
&#{&}__card--link:hover {
border-color: $neutral-80;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
.enterprise-ready__card-label {
color: $primary-50;
}
}
}
&__card-icon {
width: pxToRem(24);
height: pxToRem(24);
svg,
img {
width: 100%;
height: 100%;
}
}
&__icon-svg {
display: block;
width: pxToRem(24);
height: pxToRem(24);
}
&__card-label {
font-size: map-get($font-sizes-text, 'md');
font-weight: 500;
line-height: 1.5;
color: $neutral-20;
transition: color 0.2s ease;
}
}
@@ -0,0 +1,515 @@
@use '../../helpers/functions' as *;
@use 'sass:math';
.hero {
position: relative;
z-index: 0;
display: flex;
flex-direction: column;
align-items: center;
background: url('/img/home/hero/hero-bg-pattern.png') repeat $neutral-10;
background-size: 400px 400px;
padding: 0;
padding-bottom: 6rem;
&__container {
position: relative;
width: 100%;
max-width: pxToRem(1360);
overflow: hidden;
background: radial-gradient(
ellipse at center top,
rgba(1, 17, 54, 0) 10%,
rgba(7, 28, 78, 0.1) 40%,
rgba(28, 58, 130, 1) 64%,
rgba(34, 71, 152, 1) 100%
);
min-height: pxToRem(800);
padding-bottom: pxToRem(138);
}
&__grid {
position: absolute;
inset: 0;
z-index: 1;
pointer-events: none;
opacity: 0.5;
mix-blend-mode: overlay;
background: url('/img/home/hero/grid.svg') center top / cover no-repeat;
will-change: transform;
transition: transform 0.1s linear;
}
&__content {
position: relative;
z-index: 5;
display: flex;
flex-direction: column;
align-items: center;
gap: pxToRem(24);
padding: pxToRem(48) pxToRem(20) 0;
}
&__heading {
display: flex;
flex-direction: column;
align-items: center;
gap: pxToRem(12);
max-width: pxToRem(730);
text-align: center;
}
&__title {
color: $neutral-98;
font-size: map-get($font-sizes, 4);
line-height: pxToRem(48);
font-weight: 600;
letter-spacing: -0.5px;
width: 100%;
}
&__subtitle {
color: $neutral-80;
font-size: pxToRem(16);
line-height: 1.5;
width: 100%;
}
&__buttons {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: pxToRem(16);
}
&__buttons a {
min-width: pxToRem(180);
}
&__planet {
position: absolute;
width: pxToRem(506);
height: pxToRem(480);
left: 50%;
transform: translate3d(-50%, 0, 0);
top: pxToRem(420);
z-index: 2;
will-change: transform;
transition: transform 0.1s linear;
}
&__planet-blur {
position: absolute;
width: calc(100% + 12%);
height: calc(100% + 13%);
top: -6.67%;
left: -6.32%;
mix-blend-mode: plus-lighter;
}
&__planet-blur--alt {
mix-blend-mode: plus-lighter;
}
&__planet-sphere {
position: absolute;
width: calc(100% + 1.58%);
height: calc(100% + 1.67%);
top: 0;
left: -0.79%;
}
&__planet-texture {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
mix-blend-mode: overlay;
object-fit: cover;
}
&__blue-haze {
position: absolute;
width: pxToRem(1200);
height: pxToRem(600);
left: 50%;
transform: translate3d(-50%, 0, 0);
bottom: pxToRem(80);
mix-blend-mode: lighten;
z-index: 2;
pointer-events: none;
will-change: transform;
transition: transform 0.1s linear;
}
&__astronauts {
position: absolute;
bottom: 0;
left: 50%;
transform: translate3d(-50%, 0, 0);
width: 100%;
max-width: pxToRem(1360);
height: pxToRem(360);
z-index: 3;
will-change: transform;
transition: transform 0.1s linear;
img {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
pointer-events: none;
}
}
&__fade-top {
position: absolute;
top: 0;
left: 0;
right: 0;
height: pxToRem(500);
background: linear-gradient(
to bottom,
$neutral-10 0%,
rgba($neutral-10, 0.7) 30%,
rgba($neutral-10, 0.3) 60%,
transparent 100%
);
z-index: 4;
pointer-events: none;
}
&__fade-bottom {
position: absolute;
bottom: 0;
left: 0;
right: 0;
z-index: 4;
height: 5vh;
min-height: pxToRem(20);
background: linear-gradient(
to top,
$neutral-10 0%,
rgba($neutral-10, 0.98) 35%,
rgba($neutral-10, 0.7) 50%,
rgba($neutral-10, 0.2) 90%,
transparent 100%
);
}
&__fade-left,
&__fade-right {
display: none;
}
&__fade-left {
left: 0;
background: linear-gradient(to right, $neutral-10 0%, rgba($neutral-10, 0.6) 40%, transparent 100%);
}
&__fade-right {
right: 0;
background: linear-gradient(to left, $neutral-10 0%, rgba($neutral-10, 0.6) 40%, transparent 100%);
}
&__badges {
position: absolute;
bottom: 0;
left: 0;
right: 0;
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: pxToRem(12);
z-index: 5;
padding: 0 pxToRem(16);
}
&__badge {
display: flex;
align-items: center;
justify-content: center;
gap: pxToRem(8);
padding: pxToRem(4) pxToRem(10);
background-color: rgba(17, 24, 36, 0.8);
border-radius: pxToRem(4);
white-space: nowrap;
text-decoration: none;
color: inherit;
transition: background-color 0.2s ease;
&--link:hover {
background-color: rgba(17, 24, 36, 1);
.hero__badge-text {
color: $neutral-98;
}
}
}
&__badge-icon {
width: pxToRem(16);
height: pxToRem(16);
flex-shrink: 0;
}
&__badge-text {
color: $neutral-90;
font-size: pxToRem(14);
line-height: 1.5;
font-weight: 500;
transition: color 0.2s ease;
}
&__stars {
position: absolute;
right: $spacer;
bottom: $spacer;
border-radius: 8px;
border: none;
outline: none;
display: flex;
align-items: center;
justify-content: center;
padding: calc($spacer / 2) pxToRem(20);
background-color: $neutral-10;
transition: bottom 1s ease-in-out;
}
&__stars svg {
max-width: pxToRem(24);
max-height: pxToRem(24);
}
&__stars-text {
color: $neutral-98;
margin-right: calc($spacer / 2);
margin-left: calc($spacer / 2);
font-size: map-get($font-sizes-text, 's');
line-height: pxToRem(21);
font-weight: 500;
}
&__stars-count {
border-radius: 6px;
border: 1px solid $neutral-30;
color: $neutral-98;
padding-left: calc($spacer / 2);
padding-right: calc($spacer / 2);
display: flex;
align-items: center;
justify-content: center;
gap: calc($spacer / 4);
height: pxToRem(25);
font-size: map-get($font-sizes-text, 's');
line-height: pxToRem(21);
}
@include media-breakpoint-up(xs) {
padding-bottom: $spacer * 2;
}
@include media-breakpoint-up(md) {
padding-left: $spacer * 2.5;
padding-right: $spacer * 2.5;
&__container {
padding-bottom: pxToRem(108);
}
&__buttons {
flex-direction: row;
gap: pxToRem(24);
}
&__buttons a {
min-width: auto;
}
&__fade-left,
&__fade-right {
display: block;
position: absolute;
top: 0;
bottom: 0;
width: pxToRem(80);
z-index: 4;
pointer-events: none;
}
}
@include media-breakpoint-up(lg) {
&__badges {
bottom: pxToRem(60);
}
}
@include media-breakpoint-up(xl) {
padding: 0 $spacer * 2.5;
padding-bottom: 0;
&__container {
min-height: pxToRem(940);
padding-bottom: 0;
}
&__content {
gap: pxToRem(32);
padding: pxToRem(64) pxToRem(125) 0;
}
&__heading {
gap: pxToRem(16);
}
&__title {
font-size: pxToRem(64);
line-height: 1.1;
letter-spacing: -1.5px;
}
&__subtitle {
font-size: pxToRem(20);
letter-spacing: -0.2px;
}
&__planet {
top: pxToRem(440);
}
&__blue-haze {
width: pxToRem(800);
height: pxToRem(200);
bottom: pxToRem(200);
}
&__astronauts {
height: pxToRem(482);
}
&__fade-bottom {
height: 5vh;
background: linear-gradient(
to top,
$neutral-10 0%,
rgba($neutral-10, 0.98) 40%,
rgba($neutral-10, 0.7) 50%,
rgba($neutral-10, 0.2) 90%,
transparent 100%
);
}
&__badges {
gap: pxToRem(40);
bottom: pxToRem(40);
flex-wrap: nowrap;
}
&__stars {
position: fixed;
right: $spacer * 1.5;
bottom: $spacer * 1.5;
transition: background-color 0.2s;
z-index: 2;
&:hover {
background-color: $neutral-100;
.hero__stars-text,
.hero__stars-count {
color: $neutral-20;
}
& > svg path {
fill: $neutral-20;
}
}
}
}
@include media-breakpoint-up(xxl) {
padding-left: $spacer * 6;
padding-right: $spacer * 6;
&__grid {
mask-image: linear-gradient(to bottom, black 0%, black 45%, transparent 70%);
-webkit-mask-image: linear-gradient(to bottom, black 0%, black 45%, transparent 70%);
mask-size: 100% 100%;
-webkit-mask-size: 100% 100%;
}
&__container {
max-width: none;
width: 100%;
min-height: max(#{pxToRem(1000)}, 43vw);
}
&__fade-left,
&__fade-right {
width: pxToRem(120);
}
&__planet {
width: 37.2%;
height: auto;
aspect-ratio: 506 / 480;
top: pxToRem(430);
}
&__blue-haze {
width: 100%;
height: auto;
aspect-ratio: 4 / 1;
}
&__astronauts {
max-width: none;
width: 100%;
height: auto;
aspect-ratio: 1360 / 482;
img {
object-fit: contain;
}
}
&__fade-bottom {
height: 12vh;
min-height: pxToRem(100);
background: linear-gradient(
to top,
$neutral-10 0%,
rgba($neutral-10, 0.98) 40%,
rgba($neutral-10, 0.7) 50%,
rgba($neutral-10, 0.2) 90%,
transparent 100%
);
}
&__badges {
bottom: pxToRem(100);
}
}
@media (min-width: 2600px) {
padding-left: $spacer * 12;
padding-right: $spacer * 12;
&__container {
min-height: max(#{pxToRem(1000)}, 38vw);
}
&__planet {
top: pxToRem(420);
}
&__fade-bottom {
height: 15vh;
min-height: pxToRem(150);
}
&__badges {
bottom: pxToRem(120);
}
}
}
@@ -0,0 +1,118 @@
@use 'sass:math';
@use '../../helpers/functions' as *;
@use '../../mixins/marquee' as marquee;
$integrations-logos-bg: #090e1a;
$integrations-logos-border: #161e33;
$integrations-logos-text: #8f98b2;
.integrations-logos {
padding: pxToRem(80) 0;
background-color: $integrations-logos-bg;
&__title {
margin: 0 0 pxToRem(48);
font-family: 'Geist Mono', monospace;
font-size: pxToRem(14);
font-weight: 500;
line-height: pxToRem(21);
letter-spacing: pxToRem(2);
text-transform: uppercase;
text-align: center;
color: $integrations-logos-text;
}
&__content {
position: relative;
display: flex;
flex-direction: column;
padding-bottom: pxToRem(1);
}
&__cards {
@include marquee.base(80px, 240px, 8, 8, 0, $integrations-logos-bg, false, 40s, none);
&__container {
margin-bottom: pxToRem(-1);
}
&__item {
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
width: pxToRem(240);
height: pxToRem(80);
border-top: 1px solid $integrations-logos-border;
border-right: 1px solid $integrations-logos-border;
border-bottom: 1px solid $integrations-logos-border;
svg {
height: pxToRem(56);
width: auto;
object-fit: contain;
filter: brightness(0) invert(1);
}
}
&__inner > span:first-child > &__item:first-child {
border-left: 1px solid $integrations-logos-border;
}
}
&__gradient-left,
&__gradient-right {
position: absolute;
top: 0;
bottom: 0;
width: pxToRem(80);
z-index: 1;
pointer-events: none;
@include media-breakpoint-up(lg) {
width: pxToRem(165);
}
}
&__gradient-left {
left: 0;
background: linear-gradient(
90deg,
$integrations-logos-bg 0.5%,
$integrations-logos-bg 38.79%,
rgba(9, 14, 26, 0) 100%
);
}
&__gradient-right {
right: 0;
background: linear-gradient(270deg, $integrations-logos-bg 38.79%, rgba(9, 14, 26, 0) 100%);
}
@include media-breakpoint-down(md) {
padding: pxToRem(48) 0;
&__title {
margin-bottom: pxToRem(32);
font-size: pxToRem(12);
line-height: pxToRem(18);
padding: 0 pxToRem(16);
}
&__cards {
@include marquee.base(64px, 180px, 8, 6, 0, $integrations-logos-bg, false, 35s, none);
&__item {
width: pxToRem(180);
height: pxToRem(64);
svg {
height: pxToRem(40);
width: auto;
object-fit: contain;
filter: brightness(0) invert(1);
}
}
}
}
}
@@ -0,0 +1,267 @@
@use '../../helpers/functions' as *;
.performance-by-design {
background-color: $neutral-94;
padding-top: pxToRem(80);
padding-bottom: pxToRem(80);
.container {
max-width: pxToRem(1110);
}
// Header
&__header {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: $spacer;
margin-bottom: pxToRem(64);
max-width: pxToRem(920);
margin-left: auto;
margin-right: auto;
}
&__tagline {
font-family: 'Geist Mono', monospace;
font-size: pxToRem(14);
font-weight: 500;
line-height: pxToRem(21);
letter-spacing: 2px;
color: $neutral-30;
text-transform: uppercase;
}
&__title {
font-size: pxToRem(32);
font-weight: 600;
line-height: 1.1;
letter-spacing: -0.5px;
color: $neutral-20;
margin: 0;
@include media-breakpoint-up(md) {
font-size: pxToRem(48);
}
}
&__subtitle {
font-size: map-get($font-sizes-text, 'l');
font-weight: 350;
line-height: 1.5;
color: $neutral-30;
margin: 0;
@include media-breakpoint-up(md) {
font-size: map-get($font-sizes-text, 'l');
}
}
// Slider: visible from md up (big screens)
&__slider {
display: none;
@include media-breakpoint-up(md) {
display: block;
}
}
// Card grid: visible below md. 1 col on xs, 2 per row from sm.
&__grid {
display: grid;
grid-template-columns: 1fr;
gap: pxToRem(30);
@include media-breakpoint-up(sm) {
grid-template-columns: repeat(2, 1fr);
}
@include media-breakpoint-up(md) {
display: none;
}
}
// Card (why-qdrant--large style)
&__card {
background-color: $neutral-98;
border: 1px solid $neutral-90;
border-radius: pxToRem(8);
overflow: hidden;
display: flex;
flex-direction: column;
min-height: pxToRem(400);
}
&__card-visual {
position: relative;
overflow: hidden;
min-height: pxToRem(200);
background: linear-gradient(180deg, $neutral-98 0%, rgba($neutral-94, 0.3) 100%);
display: flex;
align-items: center;
justify-content: center;
}
&__card-image {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
}
&__card-content {
padding: pxToRem(24);
display: flex;
flex-direction: column;
gap: $spacer;
}
&__card-title {
font-size: pxToRem(20);
font-weight: 600;
line-height: 1.5;
letter-spacing: -0.2px;
color: $neutral-20;
margin: 0;
}
&__card-description {
font-size: map-get($font-sizes-text, 'md');
font-weight: 350;
line-height: 1.5;
color: $neutral-40;
margin: 0;
}
// Content layout (slider, visible from md up)
&__content {
display: flex;
flex-direction: column;
gap: pxToRem(48);
align-items: center;
@include media-breakpoint-up(md) {
flex-direction: row;
justify-content: space-between;
align-items: flex-start;
gap: pxToRem(80);
}
}
// Features list (vertical slider nav)
&__features {
display: flex;
flex-direction: column;
width: 100%;
@include media-breakpoint-up(md) {
width: pxToRem(444);
flex-shrink: 0;
}
}
&__feature {
display: flex;
flex-direction: column;
padding: pxToRem(24) 0;
border-bottom: pxToRem(2) solid $neutral-90;
cursor: pointer;
transition: border-color 0.2s ease;
overflow: hidden;
&:first-child {
padding-top: 0;
}
}
&__feature-title {
font-size: pxToRem(20);
font-weight: 600;
line-height: 1.3;
letter-spacing: -0.5px;
color: $neutral-50;
margin: 0;
transition: color 0.2s ease;
@include media-breakpoint-up(md) {
font-size: pxToRem(24);
}
.performance-by-design__feature--active & {
color: $neutral-20;
}
.performance-by-design__feature:hover & {
color: $neutral-30;
}
}
&__feature-body {
max-height: 0;
opacity: 0;
overflow: hidden;
transition:
max-height 0.4s ease,
opacity 0.3s ease,
margin 0.3s ease;
margin-top: 0;
.performance-by-design__feature--active & {
max-height: pxToRem(200);
opacity: 1;
margin-top: $spacer;
}
}
&__feature-description {
font-size: map-get($font-sizes-text, 'md');
font-weight: 350;
line-height: 1.5;
color: $neutral-40;
margin: 0;
}
&__feature--active {
border-bottom-color: $primary-50;
}
// Visual / Image area (slider, visible from md up)
&__visual {
position: relative;
width: 100%;
min-height: pxToRem(300);
@include media-breakpoint-up(md) {
flex: 1 1 0%;
min-width: 0;
min-height: pxToRem(540);
}
}
&__image {
position: absolute;
top: 0;
left: 0;
width: 100%;
opacity: 0;
visibility: hidden;
transition:
opacity 0.4s ease,
visibility 0.4s ease;
pointer-events: none;
&--active {
position: relative;
opacity: 1;
visibility: visible;
pointer-events: auto;
}
img {
width: 100%;
height: auto;
border-radius: pxToRem(8);
display: block;
}
}
}
@@ -0,0 +1,469 @@
@use 'sass:math';
@use '../../helpers/functions' as *;
$solutions-bg-dark: #090e1a;
$solutions-text-label: #8f98b2;
$solutions-text-title: #d4d9e6;
$solutions-text-subtitle: #8f98b2;
$solutions-tab-bg: #161e33;
$solutions-tab-border: #28324d;
$solutions-tab-active-bg: #3d4866;
$solutions-tab-text: #8f98b2;
$solutions-tab-text-active: #f0f3fa;
$solutions-panel-title: #e1e5f0;
$solutions-panel-text: #8f98b2;
$solutions-button-border: #717c99;
.solutions {
position: relative;
z-index: 0;
padding: pxToRem(60) 0;
background: radial-gradient(
104.31% 111.56% at 50% 0%,
rgba(67, 37, 174, 0) 0%,
rgba(67, 37, 174, 0) 80%,
rgba(67, 37, 174, 0.8) 90%,
rgba(97, 67, 224, 0.9) 100%
),
$solutions-bg-dark;
overflow: hidden;
&__background {
display: none;
}
&__header {
text-align: center;
margin-bottom: pxToRem(40);
}
&__label {
display: inline-block;
margin-bottom: pxToRem(16);
font-family: 'Geist Mono', monospace;
font-size: pxToRem(14);
font-weight: 500;
line-height: pxToRem(21);
letter-spacing: pxToRem(2);
text-transform: uppercase;
color: $solutions-text-label;
}
&__title {
margin: 0 auto pxToRem(16);
font-size: pxToRem(28);
font-weight: 600;
line-height: 1.1;
letter-spacing: pxToRem(-0.5);
color: $solutions-text-title;
}
&__subtitle {
max-width: pxToRem(730);
margin: 0 auto;
font-size: pxToRem(16);
line-height: 1.5;
color: $solutions-text-subtitle;
}
// Tabs
&__tabs-wrapper {
text-align: center;
}
&__tabs {
position: relative;
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 0;
padding: pxToRem(4);
margin: 0 auto pxToRem(40);
background-color: $solutions-tab-bg;
border: 1px solid $solutions-tab-border;
border-radius: pxToRem(12);
overflow: hidden;
width: 100%;
}
&__tab {
position: relative;
z-index: 2;
flex-shrink: 0;
width: 100%;
height: pxToRem(36);
padding: 0 pxToRem(16);
font-family: inherit;
font-size: pxToRem(16);
font-weight: 500;
line-height: pxToRem(36);
color: $solutions-tab-text;
background: transparent;
border: none;
border-radius: pxToRem(8);
cursor: pointer;
transition: color 0.2s ease;
white-space: nowrap;
text-align: left;
&:hover {
color: $solutions-tab-text-active;
}
&--active {
color: $solutions-tab-text-active;
font-weight: 600;
background-color: $solutions-tab-active-bg;
}
}
&__tab-indicator {
display: none;
}
// Slider
&__slider {
position: relative;
min-height: pxToRem(250);
padding-bottom: pxToRem(40);
}
&__slide {
position: absolute;
top: 0;
left: 0;
width: 100%;
opacity: 0;
visibility: hidden;
transition:
opacity 0.4s ease,
visibility 0.4s ease;
pointer-events: none;
&--active {
position: relative;
opacity: 1;
visibility: visible;
pointer-events: auto;
}
}
// Controls
&__controls {
display: flex;
align-items: center;
justify-content: center;
gap: pxToRem(40);
}
&__arrow {
display: flex;
align-items: center;
justify-content: center;
width: pxToRem(40);
height: pxToRem(40);
padding: 0;
background: none;
border: 1px solid $solutions-tab-border;
border-radius: pxToRem(8);
color: $solutions-tab-text;
cursor: pointer;
transition:
color 0.2s ease,
border-color 0.2s ease;
&:hover {
color: $solutions-tab-text-active;
border-color: $solutions-button-border;
}
svg {
width: pxToRem(20);
height: pxToRem(20);
}
}
&__dots {
display: flex;
align-items: center;
gap: pxToRem(20);
}
&__dot {
display: flex;
align-items: center;
justify-content: center;
width: pxToRem(24);
height: pxToRem(24);
background: none;
border: none;
cursor: pointer;
padding: 0;
span {
display: block;
width: pxToRem(6);
height: pxToRem(6);
background-color: $solutions-tab-border;
border-radius: 50%;
transition: background-color 0.2s ease;
}
&:hover span {
background-color: $solutions-tab-text;
}
&--active span {
background-color: $solutions-tab-text-active;
}
}
// Panel content
&__panel-content {
display: flex;
flex-direction: column;
justify-content: center;
height: 100%;
padding-top: 0;
margin-bottom: pxToRem(32);
text-align: center;
}
&__panel-title {
margin: 0 0 pxToRem(24);
font-size: pxToRem(24);
font-weight: 600;
line-height: 1.3;
letter-spacing: pxToRem(-0.5);
color: $solutions-panel-title;
}
&__panel-description {
margin: 0 0 pxToRem(24);
font-size: pxToRem(16);
line-height: 1.5;
letter-spacing: pxToRem(-0.2);
color: $solutions-panel-text;
}
&__panel-link {
display: inline-flex;
align-items: center;
justify-content: center;
gap: pxToRem(12);
height: pxToRem(48);
padding: 0 pxToRem(28);
font-size: pxToRem(18);
font-weight: 600;
line-height: 1.5;
color: #fff;
text-decoration: none;
background: transparent;
border: 1px solid $solutions-button-border;
border-radius: pxToRem(8);
transition:
background-color 0.2s ease,
border-color 0.2s ease;
&:hover {
background-color: rgba(255, 255, 255, 0.1);
border-color: #fff;
color: #fff;
}
}
&__panel-illustration {
display: flex;
align-items: center;
justify-content: center;
min-height: pxToRem(250);
padding: pxToRem(10);
img {
max-width: 100%;
max-height: pxToRem(250);
height: auto;
width: auto;
object-fit: contain;
}
}
&__panel-placeholder {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: pxToRem(250);
background: linear-gradient(135deg, rgba(22, 30, 51, 0.8) 0%, rgba(13, 19, 36, 0.9) 100%);
border: 1px dashed rgba(143, 152, 178, 0.3);
border-radius: pxToRem(16);
&::after {
content: attr(data-label) ' illustration';
font-family: 'Geist Mono', monospace;
font-size: pxToRem(12);
color: rgba(143, 152, 178, 0.5);
text-transform: uppercase;
letter-spacing: pxToRem(2);
}
}
@include media-breakpoint-up(sm) {
padding: pxToRem(80) 0;
&__header {
margin-bottom: pxToRem(40);
}
&__title {
font-size: pxToRem(36);
}
&__subtitle {
font-size: pxToRem(16);
}
&__slider {
min-height: auto;
}
&__panel-content {
padding-top: 0;
margin-bottom: pxToRem(32);
text-align: center;
}
&__panel-title {
font-size: pxToRem(24);
}
&__panel-description {
font-size: pxToRem(16);
}
&__panel-illustration {
min-height: pxToRem(300);
img {
max-height: pxToRem(300);
}
}
&__panel-placeholder {
height: pxToRem(300);
}
}
@include media-breakpoint-up(md) {
&__tabs {
flex-direction: row;
display: inline-flex;
width: fit-content;
max-width: 100%;
margin-bottom: pxToRem(40);
}
&__tab {
width: auto;
text-align: center;
padding: 0 pxToRem(8);
font-size: pxToRem(12);
height: pxToRem(36);
line-height: pxToRem(36);
}
&__tab--active {
background-color: transparent;
}
&__tab-indicator {
display: block;
position: absolute;
z-index: 1;
top: pxToRem(4);
left: pxToRem(4);
height: pxToRem(36);
background-color: $solutions-tab-active-bg;
border-radius: pxToRem(8);
transition:
left 0.3s ease,
width 0.3s ease;
}
}
@include media-breakpoint-up(lg) {
&__tab {
font-size: pxToRem(14);
padding: 0 pxToRem(20);
}
}
@include media-breakpoint-up(xl) {
padding: pxToRem(120) 0;
&__header {
margin-bottom: pxToRem(64);
}
&__title {
font-size: pxToRem(48);
}
&__subtitle {
font-size: pxToRem(18);
}
&__tabs {
margin-bottom: pxToRem(64);
}
&__tab {
font-size: pxToRem(16);
height: pxToRem(40);
line-height: pxToRem(40);
}
&__tab-indicator {
top: pxToRem(4);
left: pxToRem(4);
height: pxToRem(40);
}
&__slider {
min-height: pxToRem(400);
}
&__panel-content {
padding-top: pxToRem(40);
margin-bottom: 0;
text-align: left;
}
&__panel-title {
font-size: pxToRem(32);
}
&__panel-description {
font-size: pxToRem(20);
}
&__panel-illustration {
min-height: pxToRem(400);
padding: pxToRem(20);
img {
max-height: pxToRem(400);
}
}
&__panel-placeholder {
height: pxToRem(400);
&::after {
font-size: pxToRem(14);
}
}
}
}
@@ -0,0 +1,166 @@
@use '../../helpers/functions' as *;
// Mobile-first: base styles (no min-width), then enhance from xxl only
.why-qdrant {
background-color: $neutral-94;
padding-top: $spacer * 5;
padding-bottom: $spacer * 5;
&__header {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
margin-bottom: $spacer * 4;
gap: $spacer;
}
&__pill {
font-family: 'Geist Mono', $font-family-monospace;
font-size: pxToRem(14);
font-weight: 500;
line-height: 1.5;
letter-spacing: 2px;
color: $neutral-30;
text-transform: uppercase;
}
&__title {
font-size: pxToRem(32);
font-weight: 600;
line-height: 1.1;
letter-spacing: -0.5px;
color: $neutral-20;
margin: 0;
max-width: pxToRem(838);
}
&__subtitle {
font-size: map-get($font-sizes-text, 'l');
font-weight: 350;
line-height: 1.5;
color: $neutral-30;
margin: 0;
max-width: pxToRem(780);
}
&__grid {
display: flex;
flex-direction: column;
gap: $spacer * 2;
}
&__card {
background-color: $neutral-98;
border: 1px solid $neutral-90;
border-radius: pxToRem(8);
overflow: hidden;
display: flex;
flex-direction: column;
min-height: pxToRem(400);
}
&__card-visual {
flex: 1;
position: relative;
overflow: hidden;
min-height: pxToRem(200);
background: linear-gradient(180deg, $neutral-98 0%, rgba($neutral-94, 0.3) 100%);
display: flex;
align-items: center;
justify-content: center;
}
&__card-image {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
}
&__card-content {
padding: pxToRem(24);
display: flex;
flex-direction: column;
gap: $spacer;
}
&__card-title {
font-size: pxToRem(20);
font-weight: 600;
line-height: 1.5;
letter-spacing: -0.2px;
color: $neutral-20;
margin: 0;
}
&__card-description {
font-size: map-get($font-sizes-text, 'md');
font-weight: 350;
line-height: 1.5;
color: $neutral-40;
margin: 0;
code {
font-family: 'Geist Mono', $font-family-monospace;
font-size: pxToRem(14);
color: $success-50;
background: transparent;
padding: 0;
}
}
&__card-link {
align-self: flex-start;
font-weight: 500;
line-height: 1.5;
}
@include media-breakpoint-up(md) {
&__title {
font-size: pxToRem(48);
}
&__grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: auto auto;
gap: pxToRem(30);
}
&__card {
min-height: pxToRem(440);
&--large {
grid-column: span 3;
}
&--small {
grid-column: span 2;
&:nth-child(3) {
grid-column: 1 / span 2;
grid-row: 2;
}
&:nth-child(4) {
grid-column: 3 / span 2;
grid-row: 2;
}
&:nth-child(5) {
grid-column: 5 / span 2;
grid-row: 2;
}
}
}
&__card-visual {
min-height: pxToRem(266);
.why-qdrant__card--small & {
min-height: pxToRem(218);
}
}
}
}
@@ -0,0 +1,10 @@
@import 'home-hero';
@import 'home-customers';
@import 'home-why-qdrant';
@import 'home-case-studies';
@import 'home-enterprise-capabilities';
@import 'home-enterprise-ready';
@import 'home-performance-by-design';
@import 'home-engineered-for-builders';
@import 'home-integrations-logos';
@import 'home-solutions';