diff --git a/qdrant-landing/content/headless/menu.md b/qdrant-landing/content/headless/menu.md
index b107f771b..cde7a9d93 100644
--- a/qdrant-landing/content/headless/menu.md
+++ b/qdrant-landing/content/headless/menu.md
@@ -3,7 +3,7 @@ logIn:
text: Log in
url: https://cloud.qdrant.io/login
startFree:
- text: Get Started
+ text: Start Free
url: https://cloud.qdrant.io/signup
menuItems:
- id: menu-0
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-bento-cards.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-bento-cards.md
deleted file mode 100644
index edaad2fba..000000000
--- a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-bento-cards.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-items:
-- id: 0
- title: Run Anywhere
- description: Available on AWS, Google Cloud, and Azure regions globally for deployment flexibility and quick data access.
- image:
- src: /img/qdrant-cloud-bento-cards/run-anywhere-graphic.png
- alt: Run anywhere graphic
-- id: 1
- title: Simple Setup and Start Free
- description: Deploying a cluster via the Qdrant Cloud Console takes only a few seconds and scales up as needed.
- image:
- src: /img/qdrant-cloud-bento-cards/simple-setup-illustration.png
- alt: Simple setup illustration
-- id: 2
- title: Efficient Resource Management
- description: Dramatically reduce memory usage with built-in compression options and offload data to disk.
- image:
- src: /img/qdrant-cloud-bento-cards/efficient-resource-management.png
- alt: Efficient resource management diagram
-- id: 3
- title: Zero-downtime Upgrades
- description: Uninterrupted service during scaling and model updates for continuous operation and deployment flexibility.
- link:
- text: Cluster Scaling
- url: /documentation/cloud/cluster-scaling/
- image:
- src: /img/qdrant-cloud-bento-cards/zero-downtime-upgrades.png
- alt: Zero downtime upgrades illustration
-- id: 4
- title: Continuous Backups
- description: Automated, configurable backups for data safety and easy restoration to previous states.
- link:
- text: Backups
- url: /documentation/cloud/backups/
- image:
- src: /img/qdrant-cloud-bento-cards/continuous-backups.png
- alt: Continuous backups illustration
-sitemapExclude: true
----
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-capabilities.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-capabilities.md
new file mode 100644
index 000000000..00bf2883b
--- /dev/null
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-capabilities.md
@@ -0,0 +1,247 @@
+---
+title: Capabilities Included with Every Cloud Cluster
+description: Each capability is available through the Qdrant Cloud Console and the API.
+tabs:
+ - id: 0
+ tab: Composable Search
+ title: Composable Search for the Whole Retrieval Pipeline
+ description: You choose how each query is ranked, filtered, and scored. Combine dense vectors, sparse vectors, and metadata filters at query time.
+ features:
+ - id: 0
+ icon:
+ src: /icons/outline/search-teal.svg
+ alt: Search
+ title: Hybrid Search
+ description: Keyword and semantic search lives in the same engine. Dense and sparse vectors in one query. Native BM25 and SPLADE++ run alongside dense retrieval.
+ link: /documentation/search/hybrid-queries/
+ - id: 1
+ icon:
+ src: /icons/outline/filter-teal.svg
+ alt: Filter
+ title: Filterable HNSW
+ description: Latency stays predictable under filters. Filtering integrates with graph traversal, beyond pre- and post-filtering tradeoffs.
+ link: /documentation/search/low-latency-search/
+ - id: 2
+ icon:
+ src: /icons/outline/layers-3-teal.svg
+ alt: Layers-3
+ title: Built-in Multivector
+ description: More precise multimodal search in one query. Store multiple vectors per object across text, image, audio, video.
+ link: /documentation/manage-data/vectors/
+ - id: 3
+ icon:
+ src: /icons/outline/trending-up-teal.svg
+ alt: Trending up
+ title: Full-Spectrum Reranking
+ description: Apply business logic and token-level precision. Score boosting, ColBERT, and Maximum Marginal Relevance in-engine.
+ link: /documentation/search/search-relevance/
+ - id: 4
+ icon:
+ src: /icons/outline/sliders-horizontal-teal.svg
+ alt: Sliders horizontal
+ title: Advanced Metadata Filters
+ description: Enable more precise and efficient retrieval. Store metadata in JSON and use advanced filters, such as nested, text, geo, has_vector, and more.
+ link: /documentation/search/filtering/
+ - id: 5
+ icon:
+ src: /icons/outline/refresh-cw-teal.svg
+ alt: Refresh cw
+ title: Ingestion and Updates
+ description: Bulk upserts and streaming. Insert, update, and delete on a live index.
+ link: /documentation/manage-data/points/
+ - id: 6
+ icon:
+ src: /icons/outline/cloud-cog-teal.svg
+ alt: Cloud
+ title: Qdrant Cloud Inference
+ description: Embed and query in one round trip. Native embedding generation inside a cluster.
+ link: /documentation/cloud/inference/
+ - id: 7
+ icon:
+ src: /icons/outline/thumbs-up-teal.svg
+ alt: Thumbs up
+ title: Recommendation API
+ description: Get “more like this” with one API call. Positive and negative examples to find similar items.
+ link: /documentation/search/explore/
+ - id: 1
+ tab: Control Performance
+ title: Control Performance at Scale
+ description: The same engine runs from in-memory dev to web-scale production. Tune memory, indexing speed, and capacity for each workload.
+ features:
+ - id: 0
+ icon:
+ src: /icons/outline/minimize-2-green.svg
+ alt: Minimize
+ title: Quantization
+ description: Up to 32× memory reduction. Scalar, TurboQuant, and binary help strike a balance between accuracy, storage efficiency, and search speed.
+ link: /documentation/manage-data/quantization/
+ - id: 1
+ icon:
+ src: /icons/outline/hard-drive-green.svg
+ alt: Hard drive
+ title: On-Disk Storage
+ description: Offload cold vectors and payloads to disk to reduce RAM cost.
+ link: /documentation/manage-data/storage/
+ - id: 2
+ icon:
+ src: /icons/outline/maximize-2-green.svg
+ alt: Maximize
+ title: Vertical and Horizontal Scaling
+ description: Shards rebalance automatically, maintaining optimal performance. Scale clusters up, down, or out.
+ link: /documentation/cloud/cluster-scaling/
+ - id: 3
+ icon:
+ src: /icons/outline/cpu-green.svg
+ alt: Cpu
+ title: GPU Indexing
+ description: Up to 4× faster HNSW indexing. Every node in your cluster gets a dedicated GPU with a simple toggle.
+ link: /documentation/ops-configuration/running-with-gpu/
+ - id: 4
+ icon:
+ src: /icons/outline/users-green.svg
+ alt: Users
+ title: Flexible Multitenancy
+ description: Serve thousands of tenants per cluster with payload-based separation. Promote noisy ones to dedicated while traffic continues.
+ link: /documentation/manage-data/multitenancy/
+ - id: 5
+ icon:
+ src: /icons/outline/circle-gauge-green.svg
+ alt: Circle gauge
+ title: SIMD and Async I/O
+ description: SIMD acceleration across x86 and ARM. io_uring keeps disk throughput high on Cloud volumes.
+ - id: 2
+ tab: High Availability
+ title: High Availability and Recovery
+ description: Engine-handled operations on highly available clusters. Continuous backups and live upgrades.
+ features:
+ - id: 0
+ icon:
+ src: /icons/outline/refresh-cw-purple.svg
+ alt: Refresh cw
+ title: Zero-Downtime Upgrades
+ description: Engine upgrades run while the cluster serves traffic. Multi-version supported.
+ link: /documentation/cloud/cluster-upgrades/
+ - id: 1
+ icon:
+ src: /icons/outline/git-branch-purple.svg
+ alt: Git branch
+ title: Multi-AZ Replication
+ description: Up to 99.95% SLA. Three availability zones with automatic failover.
+ link: /documentation/cloud-premium/
+ - id: 2
+ icon:
+ src: /icons/outline/database-purple.svg
+ alt: Database
+ title: Backups and Disaster Recovery
+ description: Scheduled incremental backups, on-demand snapshots, and restore to any cluster.
+ link: /documentation/cloud/backups/
+ - id: 3
+ icon:
+ src: /icons/outline/download-purple.svg
+ alt: Download
+ title: Snapshot Export
+ description: Export snapshots to your own object storage for long-term retention or DR.
+ link: /documentation/snapshots/
+ - id: 4
+ icon:
+ src: /icons/outline/life-buoy-purple.svg
+ alt: Lifebuoy
+ title: Engineering Support
+ description: Guaranteed response times on critical incidents. Business-hours coverage on Standard, 24/7 on Premium.
+ link: /documentation/support/
+ - id: 3
+ tab: Defense in Depth
+ title: Defense in Depth for Production Workloads
+ description: Encryption on every channel and volume, granular access control, and private network options. Compliance-ready under SOC 2, HIPAA, and GDPR.
+ features:
+ - id: 0
+ icon:
+ src: /icons/outline/shield-check-turquoise.svg
+ alt: Shield check
+ title: Compliance
+ description: Reports available under NDA. SOC 2 Type II, HIPAA with BAA, and GDPR with DPA.
+ link: /documentation/cloud-security/
+ - id: 1
+ icon:
+ src: /icons/outline/lock-open-turquoise.svg
+ alt: Lock open
+ title: Encryption in Transit
+ description: End-to-end protection in flight. TLS 1.2+ on every API endpoint and replication channel.
+ link: /documentation/cloud-security/
+ - id: 2
+ icon:
+ src: /icons/outline/hard-drive-turquoise.svg
+ alt: Hard drive
+ title: Encryption at Rest
+ description: Storage protected by default; Premium adds customer-managed keys. AES-256 on storage volumes.
+ link: /documentation/cloud-security/
+ - id: 3
+ icon:
+ src: /icons/outline/waypoints-turquoise.svg
+ alt: Waypoints
+ title: Private VPC Links
+ description: Traffic stays on private networks. AWS PrivateLink and GCP Private Service Connect.
+ link: /documentation/cloud-premium/
+ - id: 4
+ icon:
+ src: /icons/outline/list-filter-turquoise.svg
+ alt: List filter
+ title: IP Allowlisting
+ description: Define your network perimeter explicitly. Restrict cluster access to specific CIDR ranges.
+ link: /documentation/cloud/cluster-access/
+ - id: 5
+ icon:
+ src: /icons/outline/key-round-turquoise.svg
+ alt: Key
+ title: Single Sign-On (SSO)
+ description: Manage Cloud access through your existing identity provider. SAML 2.0 with Okta, Azure AD, Google and others.
+ link: /documentation/cloud-rbac/user-management/
+ - id: 4
+ tab: Monitoring and Recovery
+ title: Monitoring and Observability Toolkit
+ description: Monitor cluster health, audit every API call, and visualize capacity in real time. Configurable retention for compliance.
+ features:
+ - id: 0
+ icon:
+ src: /icons/outline/activity-burgundy.svg
+ alt: Activity
+ title: Prometheus Metrics
+ description: OpenMetrics-compatible /metrics and /sys_metrics endpoints on every cluster.
+ link: /documentation/ops-monitoring/managed-cloud-prometheus/
+ - id: 1
+ icon:
+ src: /icons/outline/chart-line-burgundy.svg
+ alt: Chart line
+ title: Grafana Dashboard
+ description: Reference dashboard for cluster health, query latency, and capacity.
+ link: https://github.com/qdrant/qdrant-cloud-grafana-dashboard
+ - id: 2
+ icon:
+ src: /icons/outline/file-text-burgundy.svg
+ alt: File text
+ title: Audit Logging
+ description: "Logs every API operation: caller, target, and outcome in structured JSON."
+ link: /documentation/cloud/configure-cluster/
+ - id: 3
+ icon:
+ src: /icons/outline/bell-ring-burgundy.svg
+ alt: Bell ring
+ title: Capacity Alerts
+ description: Alerts at 80% RAM and disk utilization, plus CPU throttling.
+ link: /documentation/cloud/cluster-monitoring/
+ - id: 4
+ icon:
+ src: /icons/outline/heart-pulse-burgundy.svg
+ alt: Heart pulse
+ title: Health Endpoints
+ description: Kubernetes-style /healthz, /livez, /readyz on every node.
+ link: /documentation/ops-monitoring/monitoring/
+ - id: 5
+ icon:
+ src: /icons/outline/satellite-dish-burgundy.svg
+ alt: Satellite dish
+ title: Telemetry
+ description: Per-segment, per-shard internals with configurable verbosity.
+ link: /documentation/ops-configuration/usage-statistics/
+sitemapExclude: true
+---
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-cta.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-cta.md
new file mode 100644
index 000000000..40a5fdd6e
--- /dev/null
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-cta.md
@@ -0,0 +1,11 @@
+---
+title: Considering a
Production Deployment?
+description: Solutions engineering pairs with teams on sizing, migration planning, and compliance.
+button:
+ text: Case Studies
+ url: /customers/
+outlineButton:
+ text: Talk to Engineering
+ url: /contact-us/
+sitemapExclude: true
+---
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-customers.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-customers.md
new file mode 100644
index 000000000..8b88eb5be
--- /dev/null
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-customers.md
@@ -0,0 +1,30 @@
+---
+label: IN PRODUCTION
+title: Customers Building with Qdrant Cloud
+cards:
+ - id: 0
+ icon:
+ src: /img/customer-logo/tripadvisor.svg
+ alt: Tripadvisor logo
+ title: 2-3x Revenue Lift
+ description: Travelers using the generative AI experience show 2-3x more revenue than those using traditional search.
+ category: CONSUMER-FACING AI APP
+ label: 11M BUSINESSES · 21 COUNTRIES
+ - id: 1
+ icon:
+ src: /img/customer-logo/telekom.svg
+ alt: Telekom logo
+ title: 7x Faster Production Time
+ description: After replacing their vector stack with Qdrant, Deutsche Telekom cut AI agent development from 15 days to 2 days.
+ category: MULTI-AGENT PLATFORM
+ label: 2M+ AI CONVERSATIONS SERVED
+ - id: 2
+ icon:
+ src: /img/customer-logo/faz.svg
+ alt: Faz logo
+ title: <1s Filtered query response on 14M vectors
+ description: Sub-second response times on complex, highly filtered semantic queries across an indexed archive of more than 14 million vectors.
+ category: MEDIA
+ label: 75 YEARS OF ARCHIVED JOURNALISM
+sitemapExclude: true
+---
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-dev-experience.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-dev-experience.md
new file mode 100644
index 000000000..e1fa0703a
--- /dev/null
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-dev-experience.md
@@ -0,0 +1,129 @@
+---
+label: GETTING STARTED
+title: Qdrant Cloud Across Your Stack
+features:
+- id: 0
+ img:
+ src: /img/qdrant-cloud/language.svg
+ mobileSrc: /img/qdrant-cloud/language-mobile.svg
+ alt: Language SDKs
+ link:
+ text: Language SDKs
+ url: /documentation/interfaces/
+- id: 1
+ img:
+ src: /img/qdrant-cloud/monitoring-and-observability.svg
+ mobileSrc: /img/qdrant-cloud/monitoring-and-observability-mobile.svg
+ alt: Infrastructure as Code
+ link:
+ text: Infrastructure as Code
+ url: /documentation/cloud-tools/terraform/
+- id: 2
+ img:
+ src: /img/qdrant-cloud/migrate.svg
+ mobileSrc: /img/qdrant-cloud/migrate-mobile.svg
+ alt: Migrate
+ link:
+ text: Migrate
+ url: https://github.com/qdrant/migration
+- id: 3
+ img:
+ src: /img/qdrant-cloud/enterprise-sso-integration.svg
+ mobileSrc: /img/qdrant-cloud/enterprise-sso-integration-mobile.svg
+ alt: Integrations
+ link:
+ text: Integrations
+ url: /documentation/frameworks/
+tabs:
+ - id: 0
+ tab: Operate Clusters (SDK + CLI)
+ title: Same workflow from your app, terminal, or CI.
+ description: Python SDK in app code, qcloud CLI in scripts and CI. Same Qdrant Cloud API.
+ codeBlocks:
+ - id: 0
+ codeBar: Python SDK
+ code: |
+ from qdrant_client import QdrantClient
+
+ client = QdrantClient(
+ url="https://your-cluster.qdrant.io",
+ api_key="qdrant_…",
+ )
+
+ # List collections on this cluster
+ catalog = client.get_collections()
+
+ # Snapshot before risky index or schema changes
+ client.create_snapshot(collection_name="products")
+
+ # Page payloads for spot checks, exports, or pipeline validation
+ points, next_offset = client.scroll(
+ collection_name="reports",
+ limit=100,
+ with_payload=True,
+ )
+ - id: 1
+ codeBar: qcloud CLI · REST
+ code: |
+ # Pick the Qdrant Cloud context (API key + account id)
+ qcloud context use prod
+
+ # Inspect clusters — ids, regions, endpoints, status
+ qcloud cluster list
+ qcloud cluster describe $QDRANT_CLUSTER_ID
+
+ # Snapshot the collection (in-cluster) before risky index / schema changes
+ qcloud cluster snapshot create products
+
+ # Query data via REST when scripting outside the SDK
+ curl -sS "https://abcd-1234.eu-central.aws.cloud.qdrant.io:6333/collections/products/points/scroll" \
+ -H "api-key: $QDRANT_DATA_API_KEY" \
+ -H 'Content-Type: application/json' \
+ -d '{"limit": 100, "with_payload": true, "with_vector": false}'
+ - id: 1
+ tab: Cluster Visibility (Console)
+ title: See what's in your cluster from the browser.
+ description: Inspect collections, run queries, and check results without leaving the Console.
+ img:
+ src: /img/qdrant-cloud/metrics.png
+ mobileSrc: /img/qdrant-cloud/metrics-mobile.png
+ alt: Metrics
+ - id: 2
+ tab: Provision Infrastructure (Terraform)
+ title: Define Qdrant Cloud clusters in your IaC repo.
+ description: Provision, scale, and tear down clusters alongside the rest of your infrastructure.
+ codeBlock:
+ code: |
+ terraform {
+ required_providers {
+ qdrant-cloud = {
+ source = "qdrant/qdrant-cloud"
+ version = "~> 1.0"
+ }
+ }
+ }
+
+ provider "qdrant-cloud" {
+ api_key = var.qdrant_api_key
+ account_id = var.qdrant_account_id
+ }
+
+ resource "qdrant-cloud_cluster" "production" {
+ name = "search-production"
+ cloud_provider = "aws"
+ cloud_region = "eu-central-1"
+
+ configuration {
+ number_of_nodes = 3
+ node_configuration {
+ package_id = "gpxxl-1" # 8 vCPU, 32 GB RAM per node
+ }
+ }
+ }
+
+ # Pin the data API key to a Terraform output for downstream consumers
+ output "cluster_endpoint" {
+ value = qdrant-cloud_cluster.production.url
+ }
+sitemapExclude: true
+---
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-faq.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-faq.md
new file mode 100644
index 000000000..4126a915e
--- /dev/null
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-faq.md
@@ -0,0 +1,110 @@
+---
+title: FAQs
+list:
+ - id: 0
+ title: Getting Started
+ questions:
+ - id: 0
+ question: Is there a free tier?
+ answer: Yes. The free tier is a single-node cluster with 0.5 vCPU, 1GB RAM, and 4GB disk. That fits roughly one million 768-dimension vectors. No credit card. Free clusters suspend after 1 week of inactivity and delete after 4 weeks if you don't reactivate them.
+ - id: 1
+ question: What clouds and regions are supported?
+ answer: AWS, GCP, and Azure across multiple regions. The current questions shows up in the cluster creation flow and on the pricing page. New regions get added when customers ask for them.
+ - id: 2
+ question: Which clients and SDKs do you support?
+ answer: Official SDKs for Python, TypeScript, Rust, Go, Java, and .NET. The REST and gRPC APIs are documented and identical to open-source Qdrant, so any community client built against the OSS engine works against Cloud.
+ - id: 3
+ question: Can I bring my own embedding model?
+ answer: Yes. Qdrant Cloud is model-agnostic, so you can bring vectors from OpenAI, Cohere, Voyage, or your own fine-tunes. If you want one less vendor, Qdrant Cloud Inference generates text and image embeddings inside the cluster using models like MiniLM, SPLADE, BM25, Mixedbread Embed-Large, and CLIP. Paid clusters get up to 5 million free tokens per model per month, with no token cap on BM25.
+ - id: 1
+ title: Pricing and Billing
+ questions:
+ - id: 0
+ question: How is pricing calculated?
+ answer: "Resource-based: vCPU, RAM, and storage, billed hourly. Cloud Inference adds usage charges only when you call paid embedding models. The pricing page has a sizing calculator."
+ - id: 1
+ question: Are there overage charges or surprise bills?
+ answer: No. Cluster sizes are explicit and any change needs your authorization. Capacity alerts fire at 80% so you can upgrade on your own terms before anything breaks.
+ - id: 2
+ question: Do you offer startup or research discounts?
+ answer: "Yes. The Qdrant for Startups program offers a 20% Qdrant Cloud discount for 12 months. Eligibility: pre-seed, seed, or Series A, under 5 years old, under $5M in funding, building an AI product (agencies and dev shops don't qualify). Apply at qdrant.tech/qdrant-for-startups."
+ - id: 2
+ title: Performance and Scale
+ questions:
+ - id: 0
+ question: What query latency should I expect?
+ answer: For a typical 10M-vector collection at 768 dimensions with moderate filtering, P50 lands in the single-digit milliseconds and P99 stays under 50ms. Numbers shift with dimension count, recall target, filter selectivity, and cluster size. Reproducible benchmarks at qdrant.tech/benchmarks.
+ - id: 1
+ question: How fast can I ingest data?
+ answer: CPU indexing handles tens of thousands of vectors per second per node, depending on dimension and HNSW parameters. GPU-accelerated HNSW indexing delivers up to 4x faster index construction for bulk loads. GPU clusters are available today on AWS, with other clouds on the roadmap.
+ - id: 2
+ question: How does quantization affect recall?
+ answer: "Scalar quantization typically loses 1% to 2% recall and cuts RAM by 4x. TurboQuant (Google's algorithm, integrated into Qdrant) sits in the middle: 4-bit gives roughly 8x compression with recall close to scalar, up to 32x at higher ratios. Binary with rescoring keeps recall close to full precision while cutting memory by up to 32x for compatible embedding models. The cluster UI shows recall before and after so you can pick the trade-off you want."
+ - id: 3
+ title: Clusters and Scaling
+ questions:
+ - id: 0
+ question: How do I scale up or down?
+ answer: Vertical scaling adds vCPU, RAM, or disk to existing nodes. Horizontal scaling adds nodes and rebalances shards automatically. Both run from the dashboard or the API. If your collections aren't replicated, a vertical scale takes a short downtime window. Replicated collections scale without interruption.
+ - id: 1
+ question: What happens when my cluster gets full?
+ answer: If RAM or disk usage stays above 80% for 5 minutes, the account owner gets an email alert. From there you can scale vertically (more capacity per node) or horizontally (more nodes), or delete data. No surprise lockouts, no surprise bills.
+ - id: 2
+ question: Is multi-region supported?
+ answer: Multi-AZ within a single region is available on the Premium Multi-AZ tier. It needs a minimum of three nodes and scales in multiples of three. Multi-region active-active replication isn't a managed feature yet. Teams that need it run separate clusters per region today.
+ - id: 4
+ title: Reliability
+ questions:
+ - id: 0
+ question: What's your SLA?
+ answer: 99.5% uptime on Standard. 99.9% on Premium. Up to 99.95% on Premium Multi-AZ. The full SLA, including uptime definitions and service-credit terms, lives at qdrant.to/sla.
+ - id: 1
+ question: How do backups work?
+ answer: Scheduled incremental snapshots on AWS and GCP, with configurable retention. Azure backups bill based on total disk usage. You can also take on-demand snapshots before risky changes and restore to the same cluster or a new one. For long-term retention or compliance, you can export snapshots to your own object storage.
+ - id: 2
+ question: What's your disaster recovery posture?
+ answer: You set the snapshot cadence to match your RPO. Premium Multi-AZ deployments replicate across three availability zones (cross-AZ replication, not failover) with no failover delay. If a zone goes down, reads and writes continue from the surviving zones with no customer action required. For cross-region retention, export snapshots to your own object storage in any region.
+ - id: 5
+ title: Security and Compliance
+ questions:
+ - id: 0
+ question: Are you SOC 2, GDPR, and HIPAA compliant?
+ answer: Yes. SOC 2 Type II report and HIPAA certification on file. GDPR-compliant Data Processing Agreement available. Email Solutions Engineering for current compliance documentation and BAA scope.
+ - id: 1
+ question: How is data encrypted?
+ answer: TLS in transit. Storage volumes encrypted at rest. Premium customers can use customer-managed keys for disk encryption, plus SSO and VPC private links. Snapshots and backups inherit the same encryption.
+ - id: 2
+ question: What does audit logging capture?
+ answer: "Every API operation: queries, upserts, deletes, collection management, and snapshot operations. Each entry is structured JSON with caller identity, timestamp, target collection, and the decision (allowed or denied). You can retrieve logs through an API endpoint, configure retention to match your policy, and download them for long-term storage in your own systems. Available on all paid clusters."
+ - id: 3
+ question: Are you EU-based?
+ answer: Yes. Qdrant is headquartered in Berlin. EU customers can keep data in EU regions exclusively, which addresses US Cloud Act concerns and similar extraterritorial regimes.
+ - id: 6
+ title: Migration and Lock-In
+ questions:
+ - id: 0
+ question: Is migrating from Qdrant Open Source to Cloud difficult?
+ answer: No. Our open-source migration tool turns it into a configuration change, not a rewrite. Application code points at a new endpoint; business logic stays intact.
+ - id: 1
+ question: How do I migrate from another vector database?
+ answer: The migration tool covers Pinecone, Weaviate, Milvus, Chroma, Redis, MongoDB, OpenSearch, Elasticsearch, pgvector, S3 Vectors, FAISS, Apache Solr, and Qdrant-to-Qdrant (for example, OSS to Cloud). The bigger lift is usually re-running the ingestion pipeline; the data move itself is incremental and resumes if interrupted. Solutions Engineering will pair on a migration plan if you ask.
+ - id: 2
+ question: Can I move workloads back from Cloud to OSS later?
+ answer: Yes. Export a snapshot, restore it on your own infrastructure running open-source Qdrant. The engine and data format are identical. Your data is yours.
+ - id: 3
+ question: What happens if Qdrant Cloud goes away?
+ answer: The engine is open source under Apache 2.0, with 30k+ GitHub stars and a 60k-member Discord community. You can run it yourself indefinitely. Engine parity keeps your options open whatever happens to the managed service.
+ - id: 7
+ title: Support
+ questions:
+ - id: 0
+ question: What support tiers do you offer?
+ answer: Community (Discord, free), Standard (10x5 business hours, Mon-Fri 08:00 to 18:00 CET), and Premium (24x7 critical incident response with priority response times).
+ - id: 1
+ question: How fast do you respond?
+ answer: We use four severity levels. Standard customers get a Sev 1 response in 4 business hours, Sev 2 in 6, Sev 3 in 24. Premium customers get Sev 1 in 1 hour, Sev 2 in 2, Sev 3 in 4 business hours. Real engineers, not a tier-1 chatbot.
+ - id: 2
+ question: Do you have a community channel?
+ answer: Yes. The Qdrant Discord is open to all developers, including the engineering team. discord.gg/qdrant
+sitemapExclude: true
+---
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-features-link.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-features-link.md
deleted file mode 100644
index b7765adbe..000000000
--- a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-features-link.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-content: Learn more about all features that are supported on Qdrant Cloud.
-link:
- text: Qdrant Features
- url: /qdrant-vector-database/
-sitemapExclude: true
----
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-hero.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-hero.md
index 2b734d669..8293e235e 100644
--- a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-hero.md
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-hero.md
@@ -1,23 +1,53 @@
---
-title: Qdrant Cloud
-description: Qdrant Cloud provides optimal flexibility and offers a suite of features focused on efficient and scalable vector search - fully managed. Available on AWS, Google Cloud, and Azure.
+label: QDRANT CLOUD
+title: Build Fast, Accurate Vector Search at Scale with Qdrant Cloud
+description: Qdrant Cloud is a managed service for running Qdrant vector search. You get the same open-source Rust engine with secure, predictable performance at scale. Move between self-hosted and managed without changing your code or data.
startFree:
- text: Get Started
+ text: Start Free
url: https://cloud.qdrant.io/signup
-contactUs:
- text: Talk to Sales
- url: /contact-us/
-icon:
- src: /icons/fill/lightning-purple.svg
+features:
+ - id: 0
+ title: Predictable P99 Latency
+ - id: 1
+ title: Native Hybrid + Multimodal
+ - id: 2
+ title: SOC 2 + HIPAA + GDPR
+img:
+ src: /img/qdrant-cloud/qdrant-cloud.png
+ mobileSrc: /img/qdrant-cloud/qdrant-cloud-mobile.png
alt: Lightning
-content: "Learn how to get up and running in minutes:"
-#video:
-# src: /
-# button: Watch Demo
-# icon:
-# src: /icons/outline/play-white.svg
-# alt: Play
-# preview: /img/qdrant-cloud-demo.png
+iconsTitle: TRUSTED BY ENTERPRISE TEAMS
+icons:
+ - id: 0
+ src: /img/qdrant-cloud/customer-logo/Tripadvisor.svg
+ alt: Tripadvisor logo
+ - id: 1
+ src: /img/qdrant-cloud/customer-logo/Canva.svg
+ alt: Canva logo
+ - id: 2
+ src: /img/qdrant-cloud/customer-logo/Telekom.svg
+ alt: Telekom logo
+ - id: 3
+ src: /img/qdrant-cloud/customer-logo/Discord.svg
+ alt: Discord logo
+ - id: 4
+ src: /img/qdrant-cloud/customer-logo/Fandom.svg
+ alt: Fandom logo
+ - id: 5
+ src: /img/qdrant-cloud/customer-logo/Zepto.svg
+ alt: Zepto logo
+ - id: 6
+ src: /img/qdrant-cloud/customer-logo/OpenTable.svg
+ alt: OpenTable logo
+ - id: 7
+ src: /img/qdrant-cloud/customer-logo/Sprinklr.svg
+ alt: Sprinklr logo
+ - id: 8
+ src: /img/qdrant-cloud/customer-logo/Dust.svg
+ alt: Dust logo
+ - id: 9
+ src: /img/qdrant-cloud/customer-logo/FAZ.svg
+ alt: FAZ logo
sitemapExclude: true
---
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-pricing.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-pricing.md
new file mode 100644
index 000000000..dc1533e72
--- /dev/null
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-pricing.md
@@ -0,0 +1,8 @@
+---
+title: Pricing Based on Cluster Resources
+description: "Qdrant Cloud is priced on the resources your cluster uses: vCPU, RAM, disk, and inference tokens for paid models."
+button:
+ text: See Pricing
+ url: /pricing/
+sitemapExclude: true
+---
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-resources.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-resources.md
new file mode 100644
index 000000000..e673db5c7
--- /dev/null
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-resources.md
@@ -0,0 +1,33 @@
+---
+label: TRY QDRANT CLOUD
+title: Spin Up a Qdrant Cluster
+cards:
+ - id: 0
+ icon:
+ src: /icons/outline/rocket-blue-small.svg
+ alt: Rocket
+ title: Try Cloud Free
+ description: Spin up a permanently free cluster in under 90 seconds. No credit card, no minimum spend, around one million 768-dimension vectors.
+ link:
+ text: Start Free
+ url: https://cloud.qdrant.io/signup
+ - id: 1
+ icon:
+ src: /icons/outline/message-square-blue.svg
+ alt: Message
+ title: Talk to a Solutions Engineer
+ description: For SOC 2 evidence, HIPAA BAA, sizing help, or enterprise procurement.
+ link:
+ text: Talk to Engineering
+ url: /contact-us/
+ - id: 2
+ icon:
+ src: /icons/outline/code-xml-blue.svg
+ alt: Code
+ title: Run Open Source Locally
+ description: Pull the Docker image or clone the repo. Same engine, same APIs as Cloud. Apache 2.0.
+ link:
+ text: View on GitHub
+ url: https://github.com/qdrant/qdrant
+sitemapExclude: true
+---
diff --git a/qdrant-landing/content/qdrant-cloud/qdrant-cloud-why-qdrant.md b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-why-qdrant.md
new file mode 100644
index 000000000..2a177a1a1
--- /dev/null
+++ b/qdrant-landing/content/qdrant-cloud/qdrant-cloud-why-qdrant.md
@@ -0,0 +1,23 @@
+---
+label: WHY QDRANT CLOUD
+title: Offload Operations to Qdrant Cloud
+description: Get the same predictably fast and accurate vector search engine. Qdrant Cloud handles the infrastructure.
+img:
+ src: /img/qdrant-cloud/infrastructure.png
+ mobileSrc: /img/qdrant-cloud/infrastructure-mobile.png
+ alt: Infrastructure
+list:
+ - id: 0
+ title: Simplify Cluster Operations
+ description: Upgrades, scaling, sharding, backups, and monitoring run continuously without operator action.
+ - id: 1
+ title: Audited Compliance
+ description: Certified under SOC 2 Type II, HIPAA, and GDPR. BAA and DPA available on request.
+ - id: 2
+ title: No Vendor Lock-In
+ description: The same Qdrant engine, data format, and APIs across self-hosted, hybrid, and managed Cloud. Cloud supports snapshot export to your own infrastructure.
+button:
+ text: Start Free
+ url: https://cloud.qdrant.io/signup
+sitemapExclude: true
+---
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/default.scss b/qdrant-landing/themes/qdrant-2024/assets/css/default.scss
index b3b3be336..d2f17868f 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/default.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/default.scss
@@ -24,10 +24,7 @@
@import 'partials/private-cloud-hero';
@import 'partials/private-cloud-about';
@import 'partials/private-cloud-get-contacted';
-@import 'partials/qdrant-cloud-hero';
-@import 'partials/qdrant-cloud-bento-cards';
-@import 'partials/qdrant-cloud-marketplaces';
-@import 'partials/qdrant-cloud-features-link';
+@import 'partials/qdrant-cloud';
@import 'partials/video';
@import 'partials/customer-list';
@import 'partials/demos';
@@ -89,3 +86,4 @@
@import 'partials/vsd-recap/index';
@import 'partials/vsd/vsd-agenda';
@import 'partials/agenda';
+@import 'partials/pricing-banner';
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_cta-banner.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_cta-banner.scss
index 6a6f89906..d8ee7c853 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_cta-banner.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_cta-banner.scss
@@ -60,6 +60,13 @@
letter-spacing: -0.2px;
color: $neutral-90;
}
+
+ &__buttons {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: $spacer * 1.5;
+ }
&__illustration {
display: block;
@@ -144,6 +151,12 @@
line-height: 1.5;
}
+ &__buttons {
+ flex-direction: row;
+ justify-content: flex-start;
+ gap: $spacer * 0.5;
+ }
+
&__illustration {
&::before {
display: none;
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_pricing-banner.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_pricing-banner.scss
new file mode 100644
index 000000000..e2181a801
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_pricing-banner.scss
@@ -0,0 +1,82 @@
+@use '../helpers/functions' as *;
+@use 'sass:math';
+
+.pricing-banner {
+ padding-top: $spacer;
+ padding-bottom: $spacer;
+ background-color: $neutral-94;
+
+ &__content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: $spacer * 2;
+ padding: $spacer * 2.5 $spacer * 1.5;
+ border-radius: $spacer;
+ background:
+ linear-gradient(270deg, rgba(0, 0, 0, 0.49) 0%, rgba(0, 0, 0, 0.00) 20.54%, rgba(0, 0, 0, 0.00) 58.01%, rgba(0, 0, 0, 0.41) 100%),
+ radial-gradient(185.23% 100% at 100% 4.55%, rgba(87, 0, 201, 0.40) 5.03%, rgba(36, 0, 91, 0.12) 25.96%, rgba(0, 0, 0, 0.00) 78.45%),
+ radial-gradient(90.18% 121.21% at 50% 7.58%, rgba(0, 0, 0, 0.00) 9.46%, rgba(9, 14, 26, 0.08) 45.41%, rgba(0, 24, 72, 0.24) 68.94%, rgba(0, 64, 161, 0.40) 78.19%),
+ $neutral-10;
+ text-align: center;
+ }
+
+ &__text {
+ max-width: pxToRem(675);
+ }
+
+ &__title {
+ font-size: $h6-font-size;
+ line-height: $spacer * 2;
+ margin-bottom: $spacer;
+ color: $neutral-98;
+ }
+
+ &__description {
+ font-size: $font-size-l;
+ line-height: $line-height-lg;
+ margin-bottom: 0;
+ color: $neutral-90;
+ }
+
+ &__button {
+ flex-shrink: 0;
+ width: 100%;
+
+ a {
+ width: 100%;
+ max-width: pxToRem(400);
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ padding-top: $spacer * 2.5;
+ padding-bottom: $spacer * 2.5;
+
+ &__content {
+ flex-direction: row;
+ justify-content: space-between;
+ padding: $spacer * 2.5 $spacer * 4;
+ text-align: left;
+ }
+
+ &__title {
+ font-size: $h5-font-size;
+ line-height: pxToRem(42);
+ }
+
+ &__description {
+ font-size: $font-size-xl;
+ line-height: pxToRem(30);
+ }
+
+ &__button {
+ flex-shrink: 0;
+ width: auto;
+
+ a {
+ width: auto;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-bento-cards.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-bento-cards.scss
deleted file mode 100644
index ac098a8cd..000000000
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-bento-cards.scss
+++ /dev/null
@@ -1,87 +0,0 @@
-@use '../helpers/functions' as *;
-
-.qdrant-cloud-bento-cards {
- background-color: $neutral-94;
- padding-bottom: $spacer * 4;
-
- &__cards {
- gap: $spacer * 2;
-
- & > div:nth-of-type(1),
- & > div:nth-of-type(3) {
- img {
- max-width: pxToRem(255);
- }
- }
- }
-
- &__card {
- padding-bottom: 0;
-
- &-title {
- font-size: $spacer * 1.5;
- line-height: pxToRem(34);
- margin-bottom: pxToRem(12);
- color: $neutral-20;
- }
-
- &-description {
- margin-bottom: 0;
- color: $neutral-40;
- }
-
- img {
- display: block;
- margin: $spacer auto 0 auto;
- width: 100%;
- height: auto;
- object-fit: contain;
- }
-
- .link {
- margin-top: pxToRem(12);
- }
- }
-
- @include media-breakpoint-up(lg) {
- padding-bottom: $spacer * 5;
-
- &__cards {
- justify-content: space-between;
- column-gap: 0;
-
- & > div:nth-of-type(1),
- & > div:nth-of-type(3) {
- width: calc(25% - 3px);
-
- img {
- max-width: 100%;
- }
- }
-
- & > div:nth-of-type(2) {
- width: calc(50% - 6px);
- }
-
- & > div:nth-of-type(4),
- & > div:nth-of-type(5) {
- width: calc(50% - 3px);
- }
- }
-
- &__card {
- display: flex;
- flex-direction: column;
- justify-content: flex-start;
- padding-bottom: 0;
-
- img {
- margin-top: auto;
- }
-
- .link {
- margin-top: pxToRem(12);
- }
- }
- }
-}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-features-link.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-features-link.scss
deleted file mode 100644
index 9ad25889c..000000000
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-features-link.scss
+++ /dev/null
@@ -1,35 +0,0 @@
-@use '../helpers/functions' as *;
-
-.qdrant-cloud-features-link {
- background-color: $neutral-94;
- padding-bottom: $spacer * 2.5;
- text-align: center;
-
- &__content {
- margin-bottom: $spacer;
- color: $neutral-20;
- }
-
- @include media-breakpoint-up(lg) {
- position: relative;
-
- &:before,
- &:after {
- content: ('');
- display: block;
- position: absolute;
- top: pxToRem(25);
- height: pxToRem(1);
- width: calc((100% - 820px) / 2);
- background-color: $neutral-90;
- }
-
- &:before {
- left: 0;
- }
-
- &:after {
- right: 0;
- }
- }
-}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-hero.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-hero.scss
deleted file mode 100644
index eeed57ab1..000000000
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-hero.scss
+++ /dev/null
@@ -1,101 +0,0 @@
-@use '../helpers/functions' as *;
-
-.qdrant-cloud-hero {
- padding-top: $spacer * 2.5;
- padding-bottom: $spacer * 5;
- position: relative;
- overflow: hidden;
- text-align: center;
- background: url('/img/stars-pattern.png') $neutral-10;
-
- &__title {
- font-size: $spacer * 2.5;
- line-height: $spacer * 3;
- margin-bottom: $spacer * 1.5;
- color: $neutral-98;
- }
-
- &__description {
- font-size: pxToRem(18);
- line-height: pxToRem(27);
- margin-bottom: $spacer * 2;
- color: $neutral-70;
- }
-
- &__buttons {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- gap: $spacer * 1.5;
- margin-bottom: $spacer * 2.5;
-
- .button {
- min-width: $spacer * 12.5;
- }
- }
-
- &__content {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- gap: $spacer * 0.5;
- margin-bottom: $spacer * 1.5;
- padding: pxToRem(4) $spacer;
- border-radius: pxToRem(100);
- background-color: $neutral-20;
-
- img {
- width: $spacer;
- height: $spacer;
- }
-
- p {
- margin-bottom: 0;
- font-size: pxToRem(14);
- line-height: pxToRem(21);
- color: $neutral-90;
- }
- }
-
- &__overlay {
- position: absolute;
- right: 0;
- left: 0;
- bottom: -9px;
- width: 100%;
- height: pxToRem(114);
- background-image: url('/img/blurred/blurred-light-10.png');
- background-position: center;
- background-size: cover;
- }
-
- @include media-breakpoint-up(lg) {
- padding-top: $spacer * 3.5;
-
- &__title {
- font-size: $spacer * 4;
- line-height: pxToRem(71);
- }
-
- &__description {
- max-width: pxToRem(730);
- font-size: pxToRem(20);
- line-height: pxToRem(30);
- margin: 0 auto $spacer * 2 auto;
- }
-
- &__buttons {
- flex-direction: row;
- margin-bottom: $spacer * 3.5;
-
- .button {
- min-width: auto;
- }
- }
-
- &__overlay {
- bottom: 0;
- }
- }
-}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-marketplaces.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-marketplaces.scss
deleted file mode 100644
index 8fe9fc88f..000000000
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_qdrant-cloud-marketplaces.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-@use '../helpers/functions' as *;
-@use '../mixins/marketplaces' as marketplaces;
-
-.qdrant-cloud-marketplaces {
- @include marketplaces.base(
- $spacer * 5,
- $spacer * 4,
- $spacer * 7.5,
- $spacer * 4,
- pxToRem(728),
- $spacer * 3.5,
- $spacer * 2.5,
- pxToRem(67),
- $spacer * 3
- );
-}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_index.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_index.scss
new file mode 100644
index 000000000..46b747d9c
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_index.scss
@@ -0,0 +1,7 @@
+@import 'qdrant-cloud-hero';
+@import 'qdrant-cloud-why-qdrant';
+@import 'qdrant-cloud-customers';
+@import 'qdrant-cloud-capabilities';
+@import 'qdrant-cloud-dev-experience';
+@import 'qdrant-cloud-resources';
+@import 'qdrant-cloud-faq';
\ No newline at end of file
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-capabilities.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-capabilities.scss
new file mode 100644
index 000000000..697d59e01
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-capabilities.scss
@@ -0,0 +1,282 @@
+@use '../../helpers/functions' as *;
+@use 'sass:math';
+
+.qdrant-cloud-capabilities {
+ padding-top: $spacer * 4;
+ padding-bottom: $spacer * 4;
+ background: $neutral-10;
+
+ &__title {
+ font-size: $h5-font-size;
+ line-height: pxToRem(42);
+ margin-bottom: $spacer * 1.5;
+ color: $neutral-98;
+ text-align: center;
+ }
+
+ &__description {
+ font-size: $font-size-l;
+ line-height: $line-height-lg;
+ margin-bottom: $spacer * 3;
+ color: $neutral-80;
+ text-align: center;
+ }
+
+ &__tabs-sticky {
+ position: sticky;
+ z-index: 1;
+ top: pxToRem(60);
+ padding-top: $spacer;
+ background: $neutral-10;
+ box-shadow: 0 $spacer * 2 $spacer * 1.5 rgba($neutral-10, .5);
+ }
+
+ &__tabs {
+ display: flex;
+ gap: $spacer * 0.5;
+ width: 100vw;
+ margin: 0 pxToRem(-16);
+ padding: 0 $spacer;
+ overflow-x: auto;
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ scrollbar-width: none;
+ -ms-overflow-style: none;
+
+ &-button {
+ padding: $spacer * 0.5 pxToRem(28);
+ border-radius: $spacer * 0.5;
+ border: 0;
+ background-color: $neutral-20;
+ color: $neutral-70;
+ flex-shrink: 0;
+ transition:
+ background-color 0.25s ease,
+ color 0.25s ease;
+
+ &.active {
+ background-color: $neutral-40;
+ font-weight: $font-weight-semibold;
+ color: $neutral-98;
+ }
+ }
+ }
+
+ &__tab {
+ &-container {
+ display: flex;
+ flex-direction: column;
+ gap: $spacer * 2.5;
+ margin-top: $spacer * 1.5;
+ }
+
+ &-content {
+ border-bottom: pxToRem(1) solid $neutral-20;
+ }
+
+ &-header {
+ width: 100%;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ gap: $spacer * 1.5;
+ padding: $spacer * 1.5;
+ border: pxToRem(1) solid $neutral-20;
+
+ &-overlay1,
+ &-overlay2,
+ &-overlay3 {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-position: bottom;
+ background-size: cover;
+ }
+
+ &-overlay1 {
+ background-image: url('/img/qdrant-cloud/background/stars-mobile.svg');
+ mix-blend-mode: color-dodge;
+ }
+
+ &-overlay2 {
+ background-image: var(--overlay-mobile);
+ }
+
+ &-overlay3 {
+ background-image: url('/img/qdrant-cloud/background/texture-mobile.svg');
+ mix-blend-mode: overlay;
+ }
+ }
+
+ &-title {
+ position: relative;
+ font-size: $h6-font-size;
+ line-height: $spacer * 2;
+ color: $neutral-90;
+ margin-bottom: 0;
+ }
+
+ &-description {
+ position: relative;
+ font-size: $font-size-md;
+ line-height: $spacer * 1.5;
+ color: $neutral-90;
+ margin-bottom: 0;
+ }
+
+ &-features {
+ display: flex;
+ flex-wrap: wrap;
+ border-left: pxToRem(1) solid $neutral-20;
+ margin-bottom: pxToRem(-1);
+ }
+
+ &-feature {
+ display: block;
+ width: 100%;
+ padding: $spacer * 2 $spacer * 1.5;
+ border-right: pxToRem(1) solid $neutral-20;
+ border-bottom: pxToRem(1) solid $neutral-20;
+ color: inherit;
+ text-decoration: none;
+
+ &:hover {
+ background: linear-gradient(180deg, rgba(14, 20, 36, 0.00) 0%, $neutral-20 100%);
+ }
+
+ &-header {
+ display: flex;
+ align-items: center;
+ gap: $spacer * 0.5;
+ }
+
+ &-icon {
+ height: pxToRem(20);
+ width: pxToRem(20);
+ }
+
+ &-title {
+ font-size: $font-size-md;
+ line-height: $spacer * 1.5;
+ color: $neutral-90;
+ margin-bottom: 0;
+ }
+
+ &-description {
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-70;
+ margin-top: math.div($spacer, 4);
+ margin-bottom: 0;
+ }
+ }
+ }
+
+ @include media-breakpoint-up(sm) {
+ &__tabs {
+ margin: 0 calc((100vw - pxToRem(508)) / 2 * -1);
+ padding: 0 calc((100vw - pxToRem(508)) / 2);
+ }
+ }
+
+ @include media-breakpoint-up(md) {
+ &__tabs {
+ margin: 0 calc((100vw - pxToRem(688)) / 2 * -1);
+ padding: 0 calc((100vw - pxToRem(688)) / 2);
+ }
+
+ &__tab {
+ &-feature {
+ width: calc(100% / 2);
+ min-height: pxToRem(176);
+ }
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ padding-top: $spacer * 7.5;
+ padding-bottom: $spacer * 7.5;
+
+ &__title {
+ max-width: pxToRem(740);
+ margin-left: auto;
+ margin-right: auto;
+ font-size: $h3-font-size;
+ line-height: pxToRem(52);
+ }
+
+ &__tabs-sticky {
+ top: pxToRem(52);
+ }
+
+ &__tabs {
+ margin: 0 calc((100vw - pxToRem(928)) / 2 * -1);
+ padding: 0 calc((100vw - pxToRem(928)) / 2);
+ }
+
+ &__tab {
+ &-container {
+ gap: $spacer * 4;
+ margin-top: $spacer * 4;
+ }
+
+ &-header {
+ flex-direction: row;
+ justify-content: space-between;
+ padding: $spacer * 4 $spacer * 1.5;
+
+ &-overlay1 {
+ background-image: url('/img/qdrant-cloud/background/stars.svg');
+ mix-blend-mode: color-dodge;
+ }
+
+ &-overlay2 {
+ background-image: var(--overlay-desktop);
+ }
+
+ &-overlay3 {
+ background-image: url('/img/qdrant-cloud/background/texture.svg');
+ mix-blend-mode: overlay;
+ }
+ }
+
+ &-title {
+ font-size: $h5-font-size;
+ line-height: pxToRem(42);
+ max-width: pxToRem(460);
+ }
+
+ &-description {
+ max-width: pxToRem(400);
+ }
+
+ &-feature {
+ width: calc(100% / 3);
+ min-height: pxToRem(176);
+ }
+ }
+ }
+
+ @include media-breakpoint-up(xl) {
+ &__tabs {
+ width: 100%;
+ justify-content: space-between;
+ margin: 0;
+ padding: pxToRem(3);
+ border-radius: pxToRem(12);
+ border: pxToRem(1) solid transparent;
+ background-image:
+ linear-gradient($neutral-20, $neutral-20),
+ linear-gradient(180deg, $neutral-30 0%, #141B2E 100%);
+ background-origin: border-box;
+ background-clip: padding-box, border-box;
+
+ &-button {
+ background-color: transparent;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-customers.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-customers.scss
new file mode 100644
index 000000000..d60c8a538
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-customers.scss
@@ -0,0 +1,100 @@
+@use '../../helpers/functions' as *;
+
+.qdrant-cloud-customers {
+ padding-top: $spacer * 2.5;
+ padding-bottom: $spacer * 2.5;
+ background-color: $neutral-94;
+
+ &__label {
+ margin-bottom: $spacer;
+ font-family: 'Geist Mono', $font-family-monospace;
+ font-weight: $font-weight-medium;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-30;
+ text-transform: uppercase;
+ text-align: center;
+ }
+
+ &__title {
+ font-size: $h5-font-size;
+ line-height: pxToRem(42);
+ margin-bottom: $spacer * 2.5;
+ color: $neutral-20;
+ text-align: center;
+ }
+
+ &__card {
+ align-items: flex-start;
+ gap: $spacer * 3.5;
+ padding: $spacer * 2;
+
+ &:hover {
+ box-shadow:
+ 0 76px 21px 0 rgba(22, 30, 51, 0.00),
+ 0 49px 20px 0 rgba(22, 30, 51, 0.01),
+ 0 28px 17px 0 rgba(22, 30, 51, 0.05),
+ 0 12px 12px 0 rgba(22, 30, 51, 0.09),
+ 0 3px 7px 0 rgba(22, 30, 51, 0.10);
+ }
+
+ &-icon {
+ height: $spacer * 3;
+ }
+
+ &-title {
+ font-size: $h6-font-size;
+ line-height: $spacer * 2;
+ margin-bottom: 0;
+ padding-bottom: $spacer;
+ color: $neutral-20;
+ border-bottom: pxToRem(1) solid $neutral-90;
+
+ span {
+ color: $primary-50;
+ }
+ }
+
+ &-description {
+ font-size: $font-size-l;
+ line-height: $line-height-lg;
+ margin-top: $spacer;
+ margin-bottom: 0;
+ color: $neutral-40;
+ }
+
+ &-footer {
+ width: 100%;
+ margin-top: auto;
+ }
+
+ &-category, &-label {
+ font-family: 'Geist Mono', $font-family-monospace;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-40;
+ text-transform: uppercase;
+ margin-bottom: 0;
+ }
+
+ &-category {
+ padding-bottom: $spacer * 0.5;
+ border-bottom: pxToRem(1) solid $neutral-90;
+ }
+
+ &-label {
+ margin-top: $spacer * 0.5;
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ padding-top: $spacer * 5;
+ padding-bottom: $spacer * 7.5;
+
+ &__title {
+ font-size: $h3-font-size;
+ line-height: pxToRem(52);
+ margin-bottom: $spacer * 5;
+ }
+ }
+}
\ No newline at end of file
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-dev-experience.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-dev-experience.scss
new file mode 100644
index 000000000..289fa6bb7
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-dev-experience.scss
@@ -0,0 +1,396 @@
+@use '../../helpers/functions' as *;
+@use 'sass:math';
+
+.qdrant-cloud-dev-experience {
+ padding-top: $spacer * 2.5;
+ padding-bottom: $spacer * 2.5;
+ background-color: $neutral-94;
+
+ &__label {
+ margin-bottom: $spacer;
+ font-family: 'Geist Mono', $font-family-monospace;
+ font-weight: $font-weight-medium;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-30;
+ text-transform: uppercase;
+ text-align: center;
+ }
+
+ &__title {
+ font-size: $h5-font-size;
+ line-height: pxToRem(42);
+ margin-bottom: $spacer * 2.5;
+ color: $neutral-20;
+ text-align: center;
+ }
+
+ &__cards {
+ margin-bottom: $spacer * 2.5;
+ }
+
+ &__card {
+ padding: 0;
+ overflow: hidden;
+
+ // The whole card is a link; keep the card itself looking unchanged on hover
+ // and let only the arrow link switch to its hover state.
+ &.card[href]:hover {
+ border-top-color: $neutral-90;
+ box-shadow: none;
+ }
+
+ &-image {
+ display: none;
+
+ &-mobile {
+ width: 100%;
+ }
+ }
+
+ &-link {
+ margin: $spacer * 1.5;
+ }
+ }
+
+ &__tabs {
+ display: flex;
+ flex-wrap: wrap;
+ padding: $spacer * 0.5;
+ border-radius: $spacer * 0.5;
+ background-color: $neutral-94;
+ margin-bottom: $spacer * 0.5;
+
+ &-button {
+ width: 100%;
+ padding: pxToRem(12) math.div($spacer, 4);
+ font-size: $font-size-md;
+ line-height: $spacer * 1.5;
+ color: $neutral-30;
+ margin: 0;
+ border: 0;
+ background-color: transparent;
+ border-radius: $spacer * 0.5;
+ transition:
+ background-color 0.25s ease,
+ color 0.25s ease,
+ box-shadow 0.25s ease;
+
+ &.active {
+ color: $neutral-20;
+ background-color: $neutral-100;
+ font-weight: $font-weight-semibold;
+ box-shadow:
+ 0 11px 3px 0 rgba(0, 0, 0, 0.00),
+ 0 7px 3px 0 rgba(0, 0, 0, 0.01),
+ 0 4px 2px 0 rgba(0, 0, 0, 0.05),
+ 0 2px 2px 0 rgba(0, 0, 0, 0.09),
+ 0 0 1px 0 rgba(0, 0, 0, 0.10);
+ }
+ }
+ }
+
+ &__tab {
+ &-container {
+ padding: $spacer;
+ border: pxToRem(1) solid $neutral-90;
+ background-color: $neutral-98;
+ border-radius: $spacer * 0.5;
+ }
+
+ &-content {
+ display: none;
+
+ &.is-active {
+ display: block;
+ }
+ }
+ }
+
+ &__slide {
+ &-header {
+ display: flex;
+ flex-direction: column;
+ padding: $spacer;
+ gap: $spacer * 0.5;
+ margin-bottom: $spacer * 0.5;
+ }
+
+ &-title {
+ font-size: $font-size-xl;
+ line-height: pxToRem(30);
+ margin-bottom: 0;
+ color: $neutral-20;
+ }
+
+ &-description {
+ font-size: $font-size-md;
+ line-height: $spacer * 1.5;
+ margin-bottom: 0;
+ color: $neutral-30;
+ }
+
+ &-code-list {
+ display: flex;
+ flex-direction: column;
+ gap: $spacer;
+ }
+
+ &-code-item {
+ display: flex;
+ justify-content: center;
+
+ .qdrant-cloud-dev-experience__code {
+ height: pxToRem(620);
+
+ &-content {
+ height: pxToRem(580);
+ }
+ }
+ }
+
+ &-image {
+ display: none;
+
+ &-mobile {
+ width: 100%;
+ }
+ }
+ }
+
+ &__code {
+ overflow: hidden;
+ width: 100%;
+ height: pxToRem(302);
+ border-radius: $spacer;
+ background-color: $neutral-100;
+ border: pxToRem(1) solid $neutral-90;
+
+ &-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: $spacer * 2.5;
+ padding: 0 $spacer;
+ background-color: $neutral-100;
+ border-bottom: pxToRem(1) solid $neutral-90;
+ }
+
+ &-window-buttons {
+ display: flex;
+ gap: pxToRem(7);
+
+ div {
+ height: pxToRem(8);
+ width: pxToRem(8);
+ border-radius: 50%;
+ }
+
+ &__close {
+ background-color: $error-50;
+ }
+
+ &__minimize {
+ background-color: $neutral-60;
+ }
+
+ &__expand {
+ background-color: $success-50;
+ }
+ }
+
+ &-bar {
+ margin-bottom: 0;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-20;
+ }
+
+ &-content {
+ display: flex;
+ align-items: flex-start;
+ height: pxToRem(262);
+ margin: 0 math.div($spacer, 4);
+ padding: pxToRem(28) pxToRem(20) pxToRem(28) pxToRem(28);
+ background: $neutral-98;
+ overflow-y: auto;
+ overflow-x: hidden;
+ word-break: break-word;
+ overflow-wrap: anywhere;
+ scrollbar-width: none;
+ -ms-overflow-style: none;
+
+ &::-webkit-scrollbar {
+ width: 0;
+ height: 0;
+ }
+
+ .highlight {
+ width: calc(100% - ($spacer * 1.5));
+ margin-bottom: 0;
+ background: transparent;
+
+ pre {
+ display: block;
+ width: 100%;
+ padding: 0;
+ background: transparent;
+ white-space: pre-wrap;
+ overflow-x: hidden;
+ }
+
+ code {
+ display: block;
+ width: 100%;
+ overflow-wrap: anywhere;
+ word-break: break-word;
+
+ .line {
+ margin-bottom: 0;
+ }
+
+ * {
+ font-size: $font-size-xs;
+ line-height: pxToRem(18);
+ color: $neutral-30;
+ }
+
+ .c1 {
+ color: #7D8B99;
+ }
+
+ .s2, .nb {
+ color: #2F9C0A;
+ }
+
+ .k, .kn {
+ color: #A04900;
+ }
+
+ .mi {
+ color: $error-50;
+ }
+
+ .o, .kc {
+ color: #A67F59;
+ }
+ }
+ }
+
+ &-button {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: pxToRem(7);
+ border: pxToRem(1) solid $neutral-90;
+ border-radius: math.div($spacer, 4);
+ background: $neutral-98;
+ color: $neutral-70;
+
+ svg {
+ height: pxToRem(14);
+ width: pxToRem(14);
+ }
+ }
+ }
+ }
+
+ @include media-breakpoint-up(md) {
+ &__slide {
+ &-image {
+ display: block;
+ width: 100%;
+
+ &-mobile {
+ display: none;
+ }
+ }
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ padding-top: $spacer * 5;
+ padding-bottom: $spacer * 5;
+
+ &__title {
+ font-size: $h3-font-size;
+ line-height: pxToRem(52);
+ margin-bottom: $spacer * 5;
+ }
+
+ &__cards {
+ margin-bottom: $spacer * 4;
+ }
+
+ &__card {
+ &-image {
+ display: block;
+ width: 100%;
+
+ &-mobile {
+ display: none;
+ }
+ }
+ }
+
+ &__tabs {
+ &-button {
+ width: auto;
+ flex: 1;
+ }
+ }
+
+ &__slide {
+ &-header {
+ flex-direction: row;
+ justify-content: space-between;
+ }
+
+ &-title {
+ max-width: pxToRem(330);
+ font-size: $h6-font-size;
+ line-height: $spacer * 2;
+ }
+
+ &-description {
+ max-width: pxToRem(412);
+ font-size: $font-size-l;
+ line-height: $line-height-lg;
+ }
+
+ &-code-list {
+ flex-direction: row;
+ justify-content: space-between;
+ padding: $spacer;
+ }
+
+ &-image {
+ padding: $spacer;
+ }
+
+ &-code-item {
+ display: flex;
+ justify-content: center;
+ padding: $spacer;
+
+ .qdrant-cloud-dev-experience__code {
+ width: auto;
+ min-width: pxToRem(900);
+ height: pxToRem(648);
+
+ &-content {
+ height: pxToRem(608);
+ }
+ }
+ }
+ }
+
+ &__code {
+ height: pxToRem(440);
+
+ &-content {
+ height: pxToRem(400);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-faq.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-faq.scss
new file mode 100644
index 000000000..3730f4a0b
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-faq.scss
@@ -0,0 +1,79 @@
+@use '../../helpers/functions' as *;
+
+.qdrant-cloud-faq {
+ padding-top: $spacer * 2.5;
+ padding-bottom: $spacer * 2.5;
+ background-color: $neutral-94;
+
+ &__title {
+ font-size: $h5-font-size;
+ line-height: pxToRem(42);
+ margin-bottom: $spacer * 1.5;
+ color: $neutral-20;
+ }
+
+ &__nav {
+ display: flex;
+ flex-direction: column;
+ gap: $spacer * 0.5;
+ margin-bottom: $spacer * 2.5;
+
+ &-button {
+ position: relative;
+ width: 100%;
+ padding-left: $spacer;
+ border: 0;
+ background: none;
+ text-align: left;
+ color: $neutral-30;
+
+ &.is-active {
+ color: $neutral-20;
+ font-weight: $font-weight-semibold;
+
+ &:before {
+ content: "";
+ display: block;
+ position: absolute;
+ left: 0;
+ top: $spacer * 0.5;
+ height: $spacer * 0.5;
+ width: $spacer * 0.5;
+ border-radius: 50%;
+ background-color: $primary-50;
+ }
+ }
+ }
+ }
+
+ &__panels {
+ position: relative;
+ }
+
+ &__panel {
+ display: none;
+ pointer-events: none;
+
+ &.is-active {
+ display: block;
+ pointer-events: auto;
+ z-index: 1;
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ padding-bottom: $spacer * 7.5;
+
+ &__title {
+ font-size: $h3-font-size;
+ line-height: pxToRem(52);
+ margin-bottom: $spacer * 2.5;
+ }
+
+ &__nav {
+ &-button {
+ width: pxToRem(254);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-hero.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-hero.scss
new file mode 100644
index 000000000..eb09246d3
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-hero.scss
@@ -0,0 +1,141 @@
+@use '../../helpers/functions' as *;
+@use 'sass:math';
+
+.qdrant-cloud-hero {
+ padding-top: $spacer * 2.5;
+ padding-bottom: $spacer * 2.5;
+ position: relative;
+ overflow: hidden;
+ background: $neutral-10;
+
+ &__label {
+ margin-bottom: $spacer * 1.5;
+ font-family: 'Geist Mono', $font-family-monospace;
+ font-weight: $font-weight-medium;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-80;
+ text-transform: uppercase;
+ }
+
+ &__title {
+ font-size: $h4-font-size;
+ line-height: $spacer * 3;
+ margin-bottom: $spacer * 1.5;
+ color: $neutral-98;
+ }
+
+ &__description {
+ font-size: $font-size-md;
+ line-height: $spacer * 1.5;
+ margin-bottom: $spacer * 1.5;
+ color: $neutral-80;
+ }
+
+ &__features {
+ display: flex;
+ align-items: center;
+ gap: pxToRem(12);
+ flex-wrap: wrap;
+ margin-top: $spacer * 2.5;
+ margin-bottom: $spacer * 2.5;
+
+ &-item {
+ display: flex;
+ align-items: center;
+ gap: math.div($spacer, 4);
+ color: $neutral-70;
+ font-size: $font-size-xs;
+ line-height: pxToRem(18);
+ }
+ }
+
+ &__image {
+ display: none;
+
+ &-mobile {
+ width: 100%;
+ }
+ }
+
+ &__customers {
+ margin-top: $spacer * 2.5;
+
+ &-title {
+ margin-bottom: $spacer * 2.5;
+ font-family: 'Geist Mono', $font-family-monospace;
+ font-weight: $font-weight-medium;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-80;
+ text-transform: uppercase;
+ text-align: center;
+ }
+
+ &-list {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ gap: $spacer * 2;
+ }
+
+ &-logo {
+ width: pxToRem(122);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ height: $spacer * 2.5;
+ width: auto;
+ }
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ padding-top: $spacer * 7.5;
+
+ &__title {
+ font-size: $h3-font-size;
+ line-height: pxToRem(53);
+ }
+
+ &__description {
+ font-size: $font-size-l;
+ line-height: $line-height-lg;
+ max-width: pxToRem(524);
+ }
+
+ &__features {
+ margin-top: $spacer * 5;
+ }
+
+ &__image {
+ display: block;
+ position: absolute;
+ top: 0;
+ left: $spacer * 5;
+ height: pxToRem(540);
+
+ &-container {
+ position: relative;
+ }
+
+ &-mobile {
+ display: none;
+ }
+ }
+
+ &__customers {
+ &-title {
+ text-align: left;
+ }
+
+ &-list {
+ justify-content: space-between;
+ gap: $spacer * 2 $spacer * 5;
+ }
+ }
+ }
+}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-resources.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-resources.scss
new file mode 100644
index 000000000..7e800f232
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-resources.scss
@@ -0,0 +1,72 @@
+@use '../../helpers/functions' as *;
+
+.qdrant-cloud-resources {
+ padding-top: $spacer * 2.5;
+ padding-bottom: $spacer * 2.5;
+ background-color: $neutral-94;
+
+ &__label {
+ margin-bottom: $spacer;
+ font-family: 'Geist Mono', $font-family-monospace;
+ font-weight: $font-weight-medium;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-30;
+ text-transform: uppercase;
+ text-align: center;
+ }
+
+ &__title {
+ font-size: $h5-font-size;
+ line-height: pxToRem(42);
+ margin-bottom: $spacer * 1.5;
+ color: $neutral-20;
+ text-align: center;
+ }
+
+ &__card {
+ align-items: flex-start;
+
+ &-icon {
+ height: $spacer * 1.5;
+ width: $spacer * 1.5;
+ margin-bottom: $spacer * 1.5;
+ color: $neutral-20;
+ }
+
+ &-title {
+ font-size: $h6-font-size;
+ line-height: $spacer * 2;
+ margin-bottom: $spacer;
+ color: $neutral-20;
+ }
+
+ &-description {
+ font-size: $font-size-md;
+ line-height: $spacer * 1.5;
+ margin-bottom: $spacer * 1.5;
+ color: $neutral-40;
+ }
+
+ &-link {
+ margin-top: auto;
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ padding-top: $spacer * 7.5;
+ padding-bottom: $spacer * 7.5;
+
+ &__title {
+ font-size: $h3-font-size;
+ line-height: pxToRem(52);
+ margin-bottom: $spacer * 5;
+ }
+
+ &__card {
+ &-description {
+ margin-bottom: $spacer * 2;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-why-qdrant.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-why-qdrant.scss
new file mode 100644
index 000000000..0dd275eba
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/qdrant-cloud/_qdrant-cloud-why-qdrant.scss
@@ -0,0 +1,100 @@
+@use '../../helpers/functions' as *;
+
+.qdrant-cloud-why-qdrant {
+ padding-top: $spacer * 2.5;
+ padding-bottom: $spacer * 2.5;
+ background-color: $neutral-94;
+
+ &__label {
+ margin-bottom: $spacer;
+ font-family: 'Geist Mono', $font-family-monospace;
+ font-weight: $font-weight-medium;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-30;
+ text-transform: uppercase;
+ }
+
+ &__title {
+ font-size: $h5-font-size;
+ line-height: pxToRem(42);
+ margin-bottom: $spacer;
+ color: $neutral-20;
+ }
+
+ &__description {
+ font-size: $font-size-md;
+ line-height: $spacer * 1.5;
+ margin-bottom: $spacer * 2.5;
+ color: $neutral-30;
+ }
+
+ &__image {
+ display: none;
+
+ &-mobile {
+ width: 100%;
+ margin-bottom: $spacer * 2;
+ }
+ }
+
+ &__list {
+ display: flex;
+ flex-direction: column;
+ gap: $spacer * 2;
+ margin-bottom: $spacer * 2;
+
+ &-title {
+ font-size: $font-size-xl;
+ line-height: pxToRem(30);
+ margin-bottom: $spacer * 0.5;
+ color: $neutral-20;
+ }
+
+ &-description {
+ font-size: $font-size-md;
+ line-height: $spacer * 1.5;
+ margin-bottom: 0;
+ color: $neutral-30;
+ }
+ }
+
+ &__button {
+ width: 100%;
+ max-width: pxToRem(400);
+ }
+
+ @include media-breakpoint-up(lg) {
+ padding-top: $spacer * 5;
+ padding-bottom: $spacer * 7.5;
+
+ &__title {
+ font-size: $h3-font-size;
+ line-height: pxToRem(52);
+ }
+
+ &__description {
+ font-size: $font-size-l;
+ line-height: $line-height-lg;
+ margin-bottom: $spacer * 5;
+ }
+
+ &__image {
+ display: block;
+ width: 100%;
+
+ &-mobile {
+ display: none;
+ }
+ }
+
+ &__list {
+ padding-left: $spacer * 3.5;
+ }
+
+ &__button {
+ width: auto;
+ margin-left: $spacer * 3.5;
+ }
+ }
+}
\ No newline at end of file
diff --git a/qdrant-landing/themes/qdrant-2024/assets/js/copy-code.js b/qdrant-landing/themes/qdrant-2024/assets/js/copy-code.js
index da7bb6494..548f6b494 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/js/copy-code.js
+++ b/qdrant-landing/themes/qdrant-2024/assets/js/copy-code.js
@@ -2,53 +2,118 @@ import ClipboardJS from 'clipboard';
import Popover from 'bootstrap/js/src/popover.js';
(function () {
- let codeBlocks = document.querySelectorAll('.highlight > pre');
-
- const codeClipboard = new ClipboardJS('.copy-code');
+ let codeClipboard = null;
const popoversMap = {};
+
+ const initMarkupMode = (root = document) => {
+ root.querySelectorAll('.js-copy-code').forEach((wrap) => {
+ if (wrap.dataset.copyCodeInitialized) return;
- // adds copy buttons with specific id for each code block
- for (let block of codeBlocks) {
- const id = btoa(Math.random().toString()).substr(10, 5);
- block.id = id;
+ const btnCopy = wrap.querySelector('.js-copy-code__copy');
+ const btnDone = wrap.querySelector('.js-copy-code__done');
+ const codeEl = wrap.querySelector('.highlight code');
- const icon = document.createElement('i');
- icon.role = 'tooltip';
- icon.title = 'Copy to clipboard';
+ if (!btnCopy || !btnDone || !codeEl) return;
- const copyBtn = document.createElement('button');
- copyBtn.type = 'button';
- copyBtn.role = 'button';
- copyBtn.classList.add('d-inline-block', 'copy-code', 'lead');
- copyBtn.id = 'copy-popover-' + id;
- copyBtn.dataset.clipboardTarget = '#' + id;
- copyBtn.appendChild(icon);
- block.after(copyBtn);
+ wrap.dataset.copyCodeInitialized = 'true';
- popoversMap[id] = new Popover(copyBtn, {
- content: 'Text copied!',
- placement: 'left',
- trigger: 'manual',
- template:
- '