diff --git a/contributing/DOCS.md b/contributing/DOCS.md
index c47bb269c..aa07d9673 100644
--- a/contributing/DOCS.md
+++ b/contributing/DOCS.md
@@ -72,8 +72,8 @@ just website-dev # Vite dev server on http://127.0.0.1:5173
Docs/blog links on the landing resolve same-origin (`/docs`, `/blog`), which 404 in standalone
dev. Point them at a live site while iterating: `just website-dev https://dstack.ai`.
-The Sky product page is served at `/products/sky/`. Google Analytics and the social/OG image
-reuse the same property and MkDocs-generated card as the rest of the site.
+Keep page metadata in the HTML entries and `website/src/App/index.tsx` in sync.
+When adding or moving product pages, update the [sitemap template](../mkdocs/overrides/sitemap.xml).
## Building the whole site
@@ -196,7 +196,7 @@ mkdocs/ # docs_dir for the mkdocs site
website/ # React (Vite) landing page — served at "/"
├── index.html # Entry; title, OG/meta, Google Analytics
-├── src/ # App, pages (Home, Sky), components, routes
+├── src/ # App, pages (Home, Sky, Factory), components, routes
└── public/static/ # Landing assets (namespaced to avoid clashing with /assets)
scripts/docs/
diff --git a/mkdocs/assets/stylesheets/cloudscape-docs.css b/mkdocs/assets/stylesheets/cloudscape-docs.css
index 2a9caf228..3f4105ad1 100644
--- a/mkdocs/assets/stylesheets/cloudscape-docs.css
+++ b/mkdocs/assets/stylesheets/cloudscape-docs.css
@@ -292,9 +292,8 @@
margin-top: 0;
}
-/* The switcher rail — copied from the landing (website/src/styles.css, .gs-rail block): grouped
- rows under solid bars, with a selected card. The docs and the landing are separate
- builds, so changes to the rail styles must be mirrored here (and vice versa). */
+/* Shared rail visuals match website/src/styles.css. Docs have no current product,
+ so rows are highlighted only on hover or keyboard focus. */
.gs-rail {
display: flex;
flex-direction: column;
@@ -329,10 +328,11 @@
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
-.gs-opt.gs-opt--on {
+.gs-opt:hover,
+.gs-opt:focus-visible {
border-radius: 8px;
background: var(--cs-bg);
- box-shadow: inset 0 0 0 1px var(--cs-text);
+ box-shadow: inset 0 0 0 0.5px var(--cs-text);
}
.gs-opt--feat {
padding: 13px 14px;
diff --git a/mkdocs/docs/concepts/presets.md b/mkdocs/docs/concepts/presets.md
index 6dd875714..5a0ef995d 100644
--- a/mkdocs/docs/concepts/presets.md
+++ b/mkdocs/docs/concepts/presets.md
@@ -272,7 +272,7 @@ Presets are pushed to and pulled from the registry hosted at [dstack Sky](https:
Presets are private by default. Set **Presets** to **Public** in the project settings to let anyone browse and pull its presets without signing in, including users of a self-hosted `dstack` server. Only project admins and global admins can change this setting; enabling it does not let anyone join the project.
-A self-hosted registry is part of [dstack Factory](https://calendly.com/dstackai/discovery-call){ target="_blank" }.
+A self-hosted registry is part of [dstack Factory](/products/factory/){ target="_blank" }.
## Export a preset
diff --git a/mkdocs/index.md b/mkdocs/index.md
index 50475eafc..0fcf89bff 100644
--- a/mkdocs/index.md
+++ b/mkdocs/index.md
@@ -1,8 +1,7 @@
---
# The landing page ("/") is now the React app in website/. When the docs are served on
-# their own (e.g. `mkdocs serve`), this page redirects to /docs/. The title/description
-# below are only used to render the social card that the React landing reuses as its OG
-# image (assets/images/social/index.png).
+# their own (e.g. `mkdocs serve`), this page redirects to /docs/. The React landing has
+# its own metadata and social preview, separate from this redirect page.
template: redirect.html
title: The orchestration stack for AI infrastructure
description: dstack is a unified control plane for GPU provisioning and orchestration that works with any GPU cloud, Kubernetes, or on-prem clusters.
diff --git a/mkdocs/overrides/header-2.html b/mkdocs/overrides/header-2.html
index cdea2fe8a..86a97c4b1 100644
--- a/mkdocs/overrides/header-2.html
+++ b/mkdocs/overrides/header-2.html
@@ -83,7 +83,7 @@