This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git


The following commit(s) were added to refs/heads/master by this push:
     new db02badb915 [fix] keep Ask Me modal header below the sticky navbar 
(#3700)
db02badb915 is described below

commit db02badb9157cd1bf1f5ca599a681a0958c8661c
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Tue May 19 15:10:58 2026 -0700

    [fix] keep Ask Me modal header below the sticky navbar (#3700)
    
    The Kapa modal was vertically centered with only a 2rem top inset, so
    when content was tall the modal header slid under the 64px sticky
    NavbarNext. Anchor the modal to the top with an 80px (navbar + 16px gap)
    inset and cap max-height accordingly so the body still scrolls inside
    the modal.
    
    ---------
    
    Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
---
 .github/workflows/cron-deploy-website.yml          |   2 +
 .github/workflows/manual-deploy-website.yml        |   2 +
 docusaurus.config.js                               |   6 -
 scripts/update_github_info.js                      |  35 +++--
 src/components/PageBanner/index.tsx                |  82 ----------
 src/components/PageBanner/styles.scss              | 169 ---------------------
 .../achievement-banner/achievement-banner.data.ts  |   6 -
 .../achievement-banner/achievement-banner.scss     |  31 ----
 .../achievement-banner/achievement-banner.tsx      |  18 ---
 src/components/home-next/NavbarNext.scss           |   1 -
 .../home-next/sections/CommunitySection.scss       |   2 -
 .../home-next/sections/DeploymentSection.scss      |   4 +-
 .../home-next/sections/EcosystemSection.scss       |   4 +-
 .../home-next/sections/FeaturesSection.scss        |   8 +-
 src/components/home-next/sections/HeroSection.scss |  30 ++--
 src/components/shared/_typography.scss             |   7 +-
 src/components/summit-modal/summit-modal.tsx       |   2 +-
 src/components/use-cases-next/AIAnalyticsNext.scss |  37 +++--
 .../CustomerFacingAnalyticsNext.scss               |  33 ++--
 .../use-cases-next/DataWarehousingNext.scss        |  33 ++--
 .../use-cases-next/ObservabilityNext.scss          |  33 ++--
 src/components/why-doris-next/BenchmarkNext.scss   |  67 ++++----
 src/components/why-doris-next/CompareNext.scss     |   4 +-
 src/components/why-doris-next/KeyFeaturesNext.scss |  24 ++-
 src/components/why-doris-next/UsersNext.scss       |   8 +-
 .../sections/ComparisonTableSection.scss           |   2 +-
 src/scss/custom.scss                               |  40 +++--
 static/animations/what-is-apache-doris-intro.html  |   9 +-
 static/fonts/JetBrainsMono-VariableFont_wght.ttf   | Bin 0 -> 300144 bytes
 static/fonts/Montserrat-Black.otf                  | Bin 230124 -> 0 bytes
 static/fonts/Montserrat-BlackItalic.otf            | Bin 236868 -> 0 bytes
 static/fonts/Montserrat-Bold.otf                   | Bin 235192 -> 0 bytes
 static/fonts/Montserrat-BoldItalic.otf             | Bin 243084 -> 0 bytes
 static/fonts/Montserrat-ExtraBold.otf              | Bin 234432 -> 0 bytes
 static/fonts/Montserrat-ExtraBoldItalic.otf        | Bin 242800 -> 0 bytes
 static/fonts/Montserrat-ExtraLight.otf             | Bin 226772 -> 0 bytes
 static/fonts/Montserrat-ExtraLightItalic.otf       | Bin 236444 -> 0 bytes
 static/fonts/Montserrat-Italic.otf                 | Bin 237828 -> 0 bytes
 static/fonts/Montserrat-Light.otf                  | Bin 228068 -> 0 bytes
 static/fonts/Montserrat-LightItalic.otf            | Bin 237832 -> 0 bytes
 static/fonts/Montserrat-Medium.otf                 | Bin 230356 -> 0 bytes
 static/fonts/Montserrat-MediumItalic.otf           | Bin 239660 -> 0 bytes
 static/fonts/Montserrat-Regular.otf                | Bin 228620 -> 0 bytes
 static/fonts/Montserrat-SemiBold.otf               | Bin 234056 -> 0 bytes
 static/fonts/Montserrat-SemiBoldItalic.otf         | Bin 242672 -> 0 bytes
 static/fonts/Montserrat-Thin.otf                   | Bin 217636 -> 0 bytes
 static/fonts/Montserrat-ThinItalic.otf             | Bin 227984 -> 0 bytes
 static/fonts/Montserrat-VariableFont_wght.ttf      | Bin 688600 -> 0 bytes
 static/fonts/MontserratAlternates-Black.otf        | Bin 184200 -> 0 bytes
 static/fonts/MontserratAlternates-BlackItalic.otf  | Bin 186764 -> 0 bytes
 static/fonts/MontserratAlternates-Bold.otf         | Bin 187392 -> 0 bytes
 static/fonts/MontserratAlternates-BoldItalic.otf   | Bin 191820 -> 0 bytes
 static/fonts/MontserratAlternates-ExtraBold.otf    | Bin 186888 -> 0 bytes
 .../fonts/MontserratAlternates-ExtraBoldItalic.otf | Bin 191300 -> 0 bytes
 static/fonts/MontserratAlternates-ExtraLight.otf   | Bin 179680 -> 0 bytes
 .../MontserratAlternates-ExtraLightItalic.otf      | Bin 185520 -> 0 bytes
 static/fonts/MontserratAlternates-Italic.otf       | Bin 187068 -> 0 bytes
 static/fonts/MontserratAlternates-Light.otf        | Bin 180736 -> 0 bytes
 static/fonts/MontserratAlternates-LightItalic.otf  | Bin 186624 -> 0 bytes
 static/fonts/MontserratAlternates-Medium.otf       | Bin 183104 -> 0 bytes
 static/fonts/MontserratAlternates-MediumItalic.otf | Bin 188564 -> 0 bytes
 static/fonts/MontserratAlternates-Regular.otf      | Bin 181996 -> 0 bytes
 static/fonts/MontserratAlternates-SemiBold.otf     | Bin 185876 -> 0 bytes
 .../fonts/MontserratAlternates-SemiBoldItalic.otf  | Bin 190496 -> 0 bytes
 static/fonts/MontserratAlternates-Thin.otf         | Bin 173616 -> 0 bytes
 static/fonts/MontserratAlternates-ThinItalic.otf   | Bin 179448 -> 0 bytes
 static/fonts/NotoSansSC-Black.otf                  | Bin 8950680 -> 0 bytes
 static/fonts/NotoSansSC-Bold.otf                   | Bin 8716392 -> 0 bytes
 static/fonts/NotoSansSC-Light.otf                  | Bin 8434216 -> 0 bytes
 static/fonts/NotoSansSC-Medium.otf                 | Bin 8508580 -> 0 bytes
 static/fonts/NotoSansSC-Regular.otf                | Bin 8482020 -> 0 bytes
 static/fonts/NotoSansSC-Thin.otf                   | Bin 7815988 -> 0 bytes
 static/js/custom-script.js                         |  21 +--
 73 files changed, 200 insertions(+), 520 deletions(-)

diff --git a/.github/workflows/cron-deploy-website.yml 
b/.github/workflows/cron-deploy-website.yml
index 486ee65fe88..d4073cd7e04 100644
--- a/.github/workflows/cron-deploy-website.yml
+++ b/.github/workflows/cron-deploy-website.yml
@@ -33,6 +33,8 @@ jobs:
                   node-version: 20
 
             - name: Build
+              env:
+                  GITHUB_TOKEN: ${{ github.token }}
               run: |
                   npm install -g yarn
                   yarn cache clean
diff --git a/.github/workflows/manual-deploy-website.yml 
b/.github/workflows/manual-deploy-website.yml
index d69ed030b0f..c79e7433508 100644
--- a/.github/workflows/manual-deploy-website.yml
+++ b/.github/workflows/manual-deploy-website.yml
@@ -37,6 +37,8 @@ jobs:
                   node-version: 20
 
             - name: Build
+              env:
+                  GITHUB_TOKEN: ${{ github.token }}
               run: |
                   npm install -g yarn
                   yarn cache clean
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 21f379ce964..6f110a51c58 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -182,12 +182,6 @@ const config = {
         }
     ],
     stylesheets: [
-        // 
'https://cdn-font.hyperos.mi.com/font/css?family=MiSans:100,200,300,400,450,500,600,650,700,900:Chinese_Simplify,Latin&display=swap',
-        // 
'https://cdn-font.hyperos.mi.com/font/css?family=MiSans_Latin:100,200,300,400,450,500,600,650,700,900:Latin&display=swap',
-        // 
'https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap',
-        // 'https://fonts.googleapis.com',
-        // 'https://fonts.gstatic.com',
-        // 
'https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap'
         {
             href: '/css/katex.min.css',
             type: 'text/css',
diff --git a/scripts/update_github_info.js b/scripts/update_github_info.js
index 604e09bbebc..09623f4bc0f 100644
--- a/scripts/update_github_info.js
+++ b/scripts/update_github_info.js
@@ -11,16 +11,17 @@ function formatStar(star) {
 }
 
 async function getGithubStar() {
-    try {
-        const res = await fetch('https://api.github.com/repos/apache/doris');
-        const data = await res.json();
-        if (data && data.stargazers_count) {
-            const starStr = 
(+parseFloat(formatStar(data.stargazers_count)).toFixed(1)).toString();
-            return starStr;
-        }
-    } catch (err) {
-        console.error(err);
+    const headers = { Accept: 'application/vnd.github+json' };
+    if (process.env.GITHUB_TOKEN) {
+        headers.Authorization = `Bearer ${process.env.GITHUB_TOKEN}`;
     }
+    const res = await fetch('https://api.github.com/repos/apache/doris', { 
headers });
+    const data = await res.json().catch(() => ({}));
+    if (!res.ok || !data || !data.stargazers_count) {
+        console.error('Failed to fetch star count from GitHub API:', 
res.status, data);
+        process.exit(1);
+    }
+    return 
(+parseFloat(formatStar(data.stargazers_count)).toFixed(1)).toString();
 }
 
 function updateGithubData(newStar) {
@@ -32,14 +33,12 @@ function updateGithubData(newStar) {
 
 async function main() {
     const star = await getGithubStar();
-    if (star) {
-        try {
-            updateGithubData(star);
-            console.log('successful,stars:', star);
-        } catch (err) {
-            console.error(err);
-        }
-    }
+    updateGithubData(star);
+    console.log('successful,stars:', star);
 }
 
-main();
+main().catch((err) => {
+    console.error(err);
+    process.exit(1);
+});
+
diff --git a/src/components/PageBanner/index.tsx 
b/src/components/PageBanner/index.tsx
deleted file mode 100644
index 602bab7c780..00000000000
--- a/src/components/PageBanner/index.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
-import clsx from 'clsx';
-import Link from '@docusaurus/Link';
-import React, { ComponentProps, JSXElementConstructor } from 'react';
-import './styles.scss';
-
-export interface ButtonProps extends 
ComponentProps<JSXElementConstructor<any>> {
-    label: any;
-    link: string | (() => void);
-    type: 'primary' | 'ghost' | 'default';
-}
-
-interface PageBannerProps extends ComponentProps<JSXElementConstructor<any>> {
-    title: any;
-    subTitle: any;
-    bannerImg: string;
-    bannerImgPhone?: string;
-    buttons: ButtonProps[];
-    className?: string;
-    event: any;
-}
-
-export default function PageBanner(props: PageBannerProps): JSX.Element {
-    const { title, subTitle, bannerImg, bannerImgPhone, buttons, className, 
event } = props;
-
-    return (
-        <section className={clsx('banner-section', className)}>
-            <div className="banner-container container">
-                <div className="banner-info mb-10 lg:mb-[5rem]">
-                    { event }
-                    <div className="banner-title-wrap">
-                        <div className="banner-title">{title}</div>
-                        <div className="banner-sub-title">{subTitle}</div>
-                    </div>
-                    <div className="banner-buttons">
-                        {buttons.map((btn, index) =>
-                            typeof btn.link === 'string' ? (
-                                <Link
-                                    className={clsx('button button--secondary 
button--lg', btn.type)}
-                                    to={btn.link}
-                                    key={index}
-                                >
-                                    {btn.label}
-                                </Link>
-                            ) : (
-                                <div
-                                    onClick={btn.link}
-                                    className={clsx('button button--secondary 
button--lg', btn.type)}
-                                    key={index}
-                                >
-                                    {btn.label}
-                                    <svg
-                                        style={{ display: 'inline-block' }}
-                                        xmlns="http://www.w3.org/2000/svg";
-                                        width="19"
-                                        height="18"
-                                        viewBox="0 0 19 18"
-                                        fill="none"
-                                    >
-                                        <path
-                                            d="M10.6251 13.5L15.125 9L10.6251 
4.5"
-                                            stroke="#11A679"
-                                            strokeWidth="1.5"
-                                            strokeLinecap="round"
-                                            strokeLinejoin="round"
-                                        />
-                                        <path
-                                            d="M3.87506 9.00055L15.1251 
9.00055"
-                                            stroke="#11A679"
-                                            strokeWidth="1.5"
-                                            strokeLinecap="round"
-                                            strokeLinejoin="round"
-                                        />
-                                    </svg>
-                                </div>
-                            ),
-                        )}
-                    </div>
-                </div>
-            </div>
-        </section>
-    );
-}
diff --git a/src/components/PageBanner/styles.scss 
b/src/components/PageBanner/styles.scss
deleted file mode 100644
index 1be4ef894d0..00000000000
--- a/src/components/PageBanner/styles.scss
+++ /dev/null
@@ -1,169 +0,0 @@
-.banner-section {
-    // height: calc(100vh - var(--global-header-height) - 10rem);
-
-    .banner-container {
-        height: 100%;
-        width: 100%;
-
-        .banner-info {
-            margin-top: 5rem;
-        }
-
-        .banner-title-wrap {
-        }
-
-        .banner-sub-title {
-            text-align: center;
-            font-size: 1.25rem;
-            line-height: 1.5;
-            color: var(--global-colors-text);
-            margin-top: 2rem;
-            font-weight: normal;
-        }
-
-        .banner-title {
-            font-size: 3.3rem;
-            line-height: 125%;
-            font-weight: 700;
-            letter-spacing: -1.232px;
-            font-family: 'Montserrat';
-            text-align: center;
-            color: var(--global-colors-text-black);
-            .highlight {
-                color: var(--ifm-color-primary);
-            }
-        }
-
-        .banner-buttons {
-            display: flex;
-            justify-content: center;
-            align-items: center;
-            margin-top: 4rem;
-
-            .button {
-                display: flex;
-                gap: 0.25rem;
-                align-items: center;
-                padding: 0.75rem 2.4rem;
-                font-size: var(--global-font-size-default);
-                border: none;
-                transition: all 0.3s;
-                font-weight: 500;
-                border: 1px solid transparent;
-
-                &:hover {
-                    box-shadow: 0px 6px 12px rgba(17, 166, 121, 0.28);
-                }
-
-                & + .button {
-                    margin-left: 2rem;
-                }
-
-                &.primary {
-                    background-color: var(--ifm-color-primary);
-                    color: var(--global-colors-white);
-
-                    &:hover {
-                        box-shadow: 0px 6px 12px rgba(17, 166, 121, 0.28);
-                    }
-                }
-
-                &.default {
-                    background-color: #f0f1fc;
-                    color: var(--ifm-color-primary);
-
-                    &:hover {
-                        box-shadow: 0px 6px 12px rgba(17, 166, 121, 0.28);
-                    }
-                }
-
-                &.ghost {
-                    border: 1px solid var(--ifm-color-primary);
-                    color: var(--ifm-color-primary);
-                    background-color: #ffffff;
-
-                    &:hover {
-                        box-shadow: 0px 6px 12px rgba(17, 166, 121, 0.28);
-                    }
-                }
-            }
-        }
-
-        .banner-img-wrap {
-            max-width: 45rem;
-            // margin-left: 3rem;
-            margin-top: 1rem;
-        }
-    }
-}
-
-@media screen and (min-width: 1300px) and (max-width: 1600px) {
-    .banner-section {
-        // height: calc(100vh - var(--global-header-height) - 10rem);
-    }
-}
-
-@media (max-width: 1299px) {
-    .banner-section {
-        height: auto;
-    }
-}
-
-@media (min-width: 1536px) {
-    .banner-info {
-        margin-top: 2.5rem !important;
-        margin-bottom: 4rem;
-    }
-
-    .banner-buttons {
-        margin-top: 2.5rem !important;
-    }
-}
-
-@media (max-width: 996px) {
-    .banner-section {
-        height: auto;
-        padding: 0;
-
-        .banner-container {
-            flex-direction: column-reverse;
-            justify-content: space-around;
-
-            .banner-img-wrap {
-                margin-top: 3rem;
-                max-width: 90%;
-                margin-left: 0;
-            }
-
-            .banner-info {
-                margin-top: 2rem;
-                .banner-title {
-                    font-family: 'Montserrat';
-                    font-size: 1.5rem;
-                    line-height: 1.5;
-                    font-weight: 700;
-                }
-                .banner-sub-title {
-                    font-size: 1rem;
-                    margin-top: 1.2rem;
-                    font-weight: 400;
-                }
-            }
-            .banner-buttons {
-                flex-direction: column;
-                align-items: center;
-
-                .button {
-                    min-width: 10rem;
-                    width: max-content;
-                    justify-content: center;
-                    font-weight: normal;
-                }
-                .button + .button {
-                    margin-left: 0;
-                    margin-top: 1rem;
-                }
-            }
-        }
-    }
-}
diff --git a/src/components/achievement-banner/achievement-banner.data.ts 
b/src/components/achievement-banner/achievement-banner.data.ts
deleted file mode 100644
index 14bae8817c9..00000000000
--- a/src/components/achievement-banner/achievement-banner.data.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export const AchievementBannerItemsData = [
-    { title: '14K+', content: 'Github stars' },
-    { title: '10000+', content: 'Mid-to-large enterprises using it' },
-    { title: '710+', content: 'Total contributors' },
-    { title: '120+', content: 'Monthly active contributors' },
-];
diff --git a/src/components/achievement-banner/achievement-banner.scss 
b/src/components/achievement-banner/achievement-banner.scss
deleted file mode 100644
index aa5409dcf5a..00000000000
--- a/src/components/achievement-banner/achievement-banner.scss
+++ /dev/null
@@ -1,31 +0,0 @@
-.achievement-banner-wrapper {
-    display: flex;
-    margin-bottom: 5rem;
-
-    .achievement-banner-item {
-        width: 300px;
-        text-align: center;
-        color: var(--global-colors-text-secondary);
-        font-size: 1.25rem;
-        line-height: 1.6;
-
-        div~div {
-            margin-top: 0.25rem;
-        }
-
-        .highlight {
-            color: #1D1D1D;
-            font-weight: 700;
-            font-size: 2.5rem;
-            line-height: 140%;
-            font-family: 'Montserrat';
-        }
-    }
-}
-
-@media (min-width:1536px) {
-    .achievement-banner-wrapper {
-        margin-bottom: 60px;
-        margin-top: 20px;
-    }
-}
\ No newline at end of file
diff --git a/src/components/achievement-banner/achievement-banner.tsx 
b/src/components/achievement-banner/achievement-banner.tsx
deleted file mode 100644
index 569549257ce..00000000000
--- a/src/components/achievement-banner/achievement-banner.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React from 'react';
-import { AchievementBannerItemsData } from './achievement-banner.data';
-import './achievement-banner.scss';
-
-export function AchievementBanner() {
-    return (
-        <section
-            className="container achievement-banner-wrapper mt-4 flex-col 
lg:flex-row items-center lg:mt-[2.5rem]"
-        >
-            {AchievementBannerItemsData.map(({ title, content }) => (
-                <div className="achievement-banner-item" key={title}>
-                    <div className="highlight">{title}</div>
-                    <div>{content}</div>
-                </div>
-            ))}
-        </section>
-    );
-}
diff --git a/src/components/home-next/NavbarNext.scss 
b/src/components/home-next/NavbarNext.scss
index abf1c391f35..dbfc93c5dab 100644
--- a/src/components/home-next/NavbarNext.scss
+++ b/src/components/home-next/NavbarNext.scss
@@ -9,7 +9,6 @@
     --nb-cream-light: #FAF6EE;
     --nb-yellow: #FFD23F;
     --nb-ink: #0F1A14;
-    --nb-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
 
     position: sticky;
     top: var(--home-next-banner-height, 0px);
diff --git a/src/components/home-next/sections/CommunitySection.scss 
b/src/components/home-next/sections/CommunitySection.scss
index 181b086ca8d..c7d598130c1 100644
--- a/src/components/home-next/sections/CommunitySection.scss
+++ b/src/components/home-next/sections/CommunitySection.scss
@@ -9,8 +9,6 @@
     --cn-yellow: #FFD23F;
     --cn-yellow-bright: #FFE066;
     --cn-ink: #0F1A14;
-    --cn-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --cn-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
 
     position: relative;
     overflow: hidden;
diff --git a/src/components/home-next/sections/DeploymentSection.scss 
b/src/components/home-next/sections/DeploymentSection.scss
index faa1dea2829..e92e35b1b25 100644
--- a/src/components/home-next/sections/DeploymentSection.scss
+++ b/src/components/home-next/sections/DeploymentSection.scss
@@ -10,14 +10,12 @@
     --dn-cream-warm: #EFE6D2;
     --dn-yellow: #FFD23F;
     --dn-ink: #0F1A14;
-    --dn-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --dn-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
 
     position: relative;
     padding: 84px 0 140px;
     background: var(--dn-cream);
     color: var(--dn-ink);
-    font-family: var(--dn-sans);
+    font-family: var(--font-family-base);
 
     &__header {
         width: 100%;
diff --git a/src/components/home-next/sections/EcosystemSection.scss 
b/src/components/home-next/sections/EcosystemSection.scss
index f77abbdbf17..d1f8935b26b 100644
--- a/src/components/home-next/sections/EcosystemSection.scss
+++ b/src/components/home-next/sections/EcosystemSection.scss
@@ -18,8 +18,6 @@
     --en-yellow: #FFD23F;
     --en-yellow-bright: #FFE066;
     --en-ink: #0F1A14;
-    --en-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --en-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
 
     position: relative;
     padding: 120px 56px 148px;
@@ -27,7 +25,7 @@
     isolation: isolate;
     background: var(--en-cream);
     color: var(--en-ink);
-    font-family: var(--en-sans);
+    font-family: var(--font-family-base);
 
     &::before {
         content: none;
diff --git a/src/components/home-next/sections/FeaturesSection.scss 
b/src/components/home-next/sections/FeaturesSection.scss
index 42526b1c228..48d7aefaf71 100644
--- a/src/components/home-next/sections/FeaturesSection.scss
+++ b/src/components/home-next/sections/FeaturesSection.scss
@@ -13,14 +13,12 @@
     --fn-yellow: #FFD23F;
     --fn-coral: #FF5C39;
     --fn-ink: #0F1A14;
-    --fn-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --fn-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
     --fn-card-stage-y: 38%;
 
     position: relative;
     background: var(--fn-cream);
     color: var(--fn-ink);
-    font-family: var(--fn-sans);
+    font-family: var(--font-family-base);
 
     &__header {
         width: 100%;
@@ -378,7 +376,7 @@
         justify-content: center;
         background: var(--fn-green-deep);
         color: var(--fn-cream-light);
-        font-family: var(--fn-mono);
+        font-family: var(--font-mono);
         font-size: 18px;
         font-weight: 800;
         box-shadow:
@@ -399,7 +397,7 @@
         color: var(--fn-green-darker);
         border: 1px solid rgba(6, 70, 50, 0.08);
         box-shadow: 0 12px 30px rgba(6, 70, 50, 0.12);
-        font-family: var(--fn-mono);
+        font-family: var(--font-mono);
         font-size: 11px;
         font-weight: 800;
         letter-spacing: 0.08em;
diff --git a/src/components/home-next/sections/HeroSection.scss 
b/src/components/home-next/sections/HeroSection.scss
index 0a779962f2a..9df3e16e829 100644
--- a/src/components/home-next/sections/HeroSection.scss
+++ b/src/components/home-next/sections/HeroSection.scss
@@ -11,8 +11,6 @@
     --hn-yellow-bright: #FFE066;
     --hn-coral: #FF5C39;
     --hn-ink: #0F1A14;
-    --hn-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --hn-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
 }
 
 // ─── Hero wrapper 
─────────────────────────────────────────────────────────────
@@ -22,7 +20,7 @@
     overflow: hidden;
     background: var(--hn-green-dark);
     color: var(--hn-cream-light);
-    font-family: var(--hn-sans);
+    font-family: var(--font-family-base);
     padding-bottom: 2.5rem;
 
     // ── Background layers ──────────────────────────────────────────────────
@@ -117,7 +115,7 @@
     &__title {
         // override Docusaurus heading defaults
         @include type.hero-title;
-        font-family: var(--hn-mono) !important;
+        font-family: var(--font-mono) !important;
         color: var(--hn-cream-light) !important;
         margin: 0 !important;
         display: flex;
@@ -309,7 +307,7 @@
 
         background: var(--hn-yellow);
         color: var(--hn-ink);
-        font-family: var(--hn-mono);
+        font-family: var(--font-mono);
         font-size: 11px;
         font-weight: 700;
         padding: 8px 12px;
@@ -400,7 +398,7 @@
     border-radius: 10px;
     border: 1px solid rgba(245, 239, 228, 0.1);
     overflow: hidden;
-    font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
+    font-family: var(--font-mono);
     box-shadow:
         0 30px 60px -20px rgba(0, 0, 0, 0.5),
         0 0 0 1px rgba(255, 210, 63, 0.05);
@@ -544,7 +542,7 @@
         color: var(--hn-ink);
         border: 0;
         border-radius: 4px;
-        font-family: var(--hn-mono);
+        font-family: var(--font-mono);
         font-size: 10.5px;
         font-weight: 800;
         letter-spacing: 0.12em;
@@ -634,7 +632,7 @@
     border: 1px solid rgba(15, 26, 20, 0.08);
     border-radius: 10px;
     overflow: hidden;
-    font-family: var(--hn-mono);
+    font-family: var(--font-mono);
     box-shadow:
         0 24px 48px -22px rgba(0, 0, 0, 0.45),
         0 0 0 1px rgba(15, 26, 20, 0.04);
@@ -711,7 +709,7 @@
         }
 
         &--title {
-            font-family: var(--hn-sans);
+            font-family: var(--font-family-base);
             font-size: 12.5px;
             color: var(--hn-ink);
             font-weight: 600;
@@ -771,7 +769,7 @@
     box-shadow:
         0 30px 60px -20px rgba(0, 0, 0, 0.45),
         0 0 0 1px rgba(255, 210, 63, 0.04);
-    font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
+    font-family: var(--font-mono);
 
     &__head {
         display: flex;
@@ -884,7 +882,7 @@
     }
 
     &__title {
-        font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
+        font-family: var(--font-family-base);
         font-size: 12.5px;
         font-weight: 600;
         color: #FAF6EE;
@@ -1056,7 +1054,7 @@
         align-items: center;
         padding: 10px 14px;
         border-bottom: 1px solid rgba(245, 239, 228, 0.06);
-        font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
+        font-family: var(--font-mono);
         font-size: 9.5px;
         letter-spacing: 0.14em;
         text-transform: uppercase;
@@ -1129,7 +1127,7 @@
         display: flex;
         justify-content: space-between;
         align-items: baseline;
-        font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
+        font-family: var(--font-mono);
         margin-bottom: 6px;
     }
 
@@ -1226,7 +1224,7 @@
         top: -16px;
         left: 50%;
         transform: translateX(-50%);
-        font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
+        font-family: var(--font-mono);
         font-size: 9px;
         color: rgba(245, 239, 228, 0.5);
         opacity: 0;
@@ -1235,7 +1233,7 @@
     }
 
     &__bar-label {
-        font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
+        font-family: var(--font-mono);
         font-size: 9px;
         color: rgba(245, 239, 228, 0.45);
         letter-spacing: 0.06em;
@@ -1252,7 +1250,7 @@
         display: inline-flex;
         align-items: center;
         gap: 5px;
-        font-family: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
+        font-family: var(--font-mono);
         font-size: 9px;
         color: rgba(245, 239, 228, 0.6);
         letter-spacing: 0.04em;
diff --git a/src/components/shared/_typography.scss 
b/src/components/shared/_typography.scss
index 17fa2a493cd..4a3f5f2755b 100644
--- a/src/components/shared/_typography.scss
+++ b/src/components/shared/_typography.scss
@@ -4,8 +4,11 @@
 // component styling. The goal is to make the type system consistent across
 // the new homepage family.
 
-$font-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, SFMono-Regular, 
Menlo, monospace;
-$font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
+// Sourced from the global CSS variables defined in src/scss/custom.scss.
+// Use $font-mono / $font-sans in SCSS contexts only; runtime styles should
+// reference var(--font-mono) / var(--font-family-base) directly.
+$font-mono: var(--font-mono);
+$font-sans: var(--font-family-base);
 
 $display-xl: clamp(40px, 4.4vw, 62px);
 $display-lg: clamp(40px, 4.4vw, 52px);
diff --git a/src/components/summit-modal/summit-modal.tsx 
b/src/components/summit-modal/summit-modal.tsx
index 214257dc60c..1c783b2bccb 100644
--- a/src/components/summit-modal/summit-modal.tsx
+++ b/src/components/summit-modal/summit-modal.tsx
@@ -36,7 +36,7 @@ export function SummitModal() {
             footer={null}
             width={410}
         >
-            <div style={{fontFamily:'Inter'}}>
+            <div style={{ fontFamily: 'var(--font-family-base)' }}>
                 <div
                     style={{ background: 'linear-gradient(263deg, #410DE7 
0.83%, #8F4AFB 99.17%)' }}
                     className="h-[160px] w-full rounded-t-lg pl-[44px] 
pt-[44px]"
diff --git a/src/components/use-cases-next/AIAnalyticsNext.scss 
b/src/components/use-cases-next/AIAnalyticsNext.scss
index 9b9d53cca1d..2153c7b21d2 100644
--- a/src/components/use-cases-next/AIAnalyticsNext.scss
+++ b/src/components/use-cases-next/AIAnalyticsNext.scss
@@ -5,7 +5,7 @@ $ai-bp-xs: 480px;
 $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
 
 @mixin ai-mono-caps($size: 12px, $tracking: 0.14em, $weight: 500) {
-    font-family: var(--mono);
+    font-family: var(--font-mono);
     font-size: $size;
     font-weight: $weight;
     letter-spacing: $tracking;
@@ -13,7 +13,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
 }
 
 @mixin ai-display-mono($weight: 700) {
-    font-family: var(--mono);
+    font-family: var(--font-mono);
     font-weight: $weight;
     text-transform: uppercase;
     letter-spacing: -0.018em;
@@ -64,13 +64,10 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     --ink: #0f1a14;
     --ink-soft: #1b2a22;
 
-    --mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, SFMono-Regular, 
Menlo, monospace;
-    --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
-
     --container: 1320px;
     --gutter: 56px;
 
-    font-family: var(--sans);
+    font-family: var(--font-family-base);
     background: var(--doris-green-dark);
     color: var(--cream-light);
     -webkit-font-smoothing: antialiased;
@@ -310,7 +307,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         &-title {
-            font-family: var(--mono);
+            font-family: var(--font-mono);
             font-weight: 700;
             text-transform: uppercase;
             letter-spacing: -0.035em;
@@ -328,7 +325,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         &-sub {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 15px;
             line-height: 1.55;
             color: rgba(245, 239, 228, 0.85);
@@ -426,7 +423,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .cf-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         font-size: 26px;
         text-transform: uppercase;
@@ -467,7 +464,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         li {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 14px;
             word-spacing: -0.12em;
             color: var(--cream-light);
@@ -510,7 +507,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         li {
-            font-family: var(--mono);
+            font-family: var(--font-mono);
             font-size: 13px;
             word-spacing: -0.1em;
             color: var(--cream-light);
@@ -575,7 +572,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
             }
 
             &-title {
-                font-family: var(--mono);
+                font-family: var(--font-mono);
                 font-weight: 700;
                 text-transform: uppercase;
                 font-size: 15px;
@@ -586,7 +583,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
             }
 
             &-desc {
-                font-family: var(--sans);
+                font-family: var(--font-family-base);
                 font-size: 12.5px;
                 line-height: 1.5;
                 color: rgba(245, 239, 228, 0.78);
@@ -623,7 +620,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         background: transparent;
         border: 1px solid rgba(245, 239, 228, 0.3);
         color: var(--cream-light);
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-size: 18px;
         cursor: pointer;
         display: inline-flex;
@@ -718,7 +715,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .tech-layer-heading {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         letter-spacing: -0.02em;
@@ -770,7 +767,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .req-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 16px;
@@ -871,7 +868,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .case-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 22px;
@@ -884,7 +881,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .case-quote {
-        font-family: var(--sans);
+        font-family: var(--font-family-base);
         font-style: italic;
         font-size: 16px;
         line-height: 1.5;
@@ -919,7 +916,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         gap: 8px;
 
         li {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 14px;
             word-spacing: -0.12em;
             color: var(--cream-light);
@@ -969,7 +966,7 @@ $ai-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .cta-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: clamp(40px, 4.4vw, 62px);
diff --git a/src/components/use-cases-next/CustomerFacingAnalyticsNext.scss 
b/src/components/use-cases-next/CustomerFacingAnalyticsNext.scss
index d53ea681668..fb7ada6f01d 100644
--- a/src/components/use-cases-next/CustomerFacingAnalyticsNext.scss
+++ b/src/components/use-cases-next/CustomerFacingAnalyticsNext.scss
@@ -6,7 +6,7 @@ $cfa-bp-xs: 480px;
 $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
 
 @mixin cfa-mono-caps($size: 12px, $tracking: 0.14em, $weight: 500) {
-    font-family: var(--mono);
+    font-family: var(--font-mono);
     font-size: $size;
     font-weight: $weight;
     letter-spacing: $tracking;
@@ -14,7 +14,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
 }
 
 @mixin cfa-display-mono($weight: 700) {
-    font-family: var(--mono);
+    font-family: var(--font-mono);
     font-weight: $weight;
     text-transform: uppercase;
     letter-spacing: -0.018em;
@@ -66,13 +66,10 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     --ink: #0f1a14;
     --ink-soft: #1b2a22;
 
-    --mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, SFMono-Regular, 
Menlo, monospace;
-    --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
-
     --container: 1320px;
     --gutter: 56px;
 
-    font-family: var(--sans);
+    font-family: var(--font-family-base);
     background: var(--doris-green-dark);
     color: var(--cream-light);
     -webkit-font-smoothing: antialiased;
@@ -312,7 +309,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         &-title {
-            font-family: var(--mono);
+            font-family: var(--font-mono);
             font-weight: 700;
             text-transform: uppercase;
             letter-spacing: -0.035em;
@@ -331,7 +328,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         &-sub {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 15px;
             line-height: 1.5;
             color: rgba(245, 239, 228, 0.85);
@@ -420,7 +417,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .cf-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         font-size: 26px;
         text-transform: uppercase;
@@ -460,7 +457,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         li {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 14px;
             color: var(--cream-light);
             padding-left: 18px;
@@ -501,7 +498,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         li {
-            font-family: var(--mono);
+            font-family: var(--font-mono);
             font-size: 13px;
             color: var(--cream-light);
             line-height: 1.45;
@@ -565,7 +562,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         background: transparent;
         border: 1px solid rgba(245, 239, 228, 0.3);
         color: var(--cream-light);
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-size: 18px;
         cursor: pointer;
         display: inline-flex;
@@ -659,7 +656,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .tech-layer-heading {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         letter-spacing: -0.02em;
@@ -700,7 +697,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .req-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 16px;
@@ -808,7 +805,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .case-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 22px;
@@ -820,7 +817,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .case-quote {
-        font-family: var(--sans);
+        font-family: var(--font-family-base);
         font-style: italic;
         font-size: 16px;
         line-height: 1.5;
@@ -852,7 +849,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         gap: 8px;
 
         li {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 14px;
             color: var(--cream-light);
             padding-left: 22px;
@@ -900,7 +897,7 @@ $cfa-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .cta-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: clamp(40px, 4.4vw, 62px);
diff --git a/src/components/use-cases-next/DataWarehousingNext.scss 
b/src/components/use-cases-next/DataWarehousingNext.scss
index 8b201f2351c..eef52dcbdec 100644
--- a/src/components/use-cases-next/DataWarehousingNext.scss
+++ b/src/components/use-cases-next/DataWarehousingNext.scss
@@ -5,7 +5,7 @@ $dw-bp-xs: 480px;
 $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
 
 @mixin dw-mono-caps($size: 12px, $tracking: 0.14em, $weight: 500) {
-    font-family: var(--mono);
+    font-family: var(--font-mono);
     font-size: $size;
     font-weight: $weight;
     letter-spacing: $tracking;
@@ -13,7 +13,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
 }
 
 @mixin dw-display-mono($weight: 700) {
-    font-family: var(--mono);
+    font-family: var(--font-mono);
     font-weight: $weight;
     text-transform: uppercase;
     letter-spacing: -0.018em;
@@ -64,13 +64,10 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     --ink: #0f1a14;
     --ink-soft: #1b2a22;
 
-    --mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, SFMono-Regular, 
Menlo, monospace;
-    --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
-
     --container: 1320px;
     --gutter: 56px;
 
-    font-family: var(--sans);
+    font-family: var(--font-family-base);
     background: var(--doris-green-dark);
     color: var(--cream-light);
     -webkit-font-smoothing: antialiased;
@@ -310,7 +307,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         &-title {
-            font-family: var(--mono);
+            font-family: var(--font-mono);
             font-weight: 700;
             text-transform: uppercase;
             letter-spacing: -0.035em;
@@ -328,7 +325,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         &-sub {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 15px;
             line-height: 1.5;
             color: rgba(245, 239, 228, 0.85);
@@ -418,7 +415,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .cf-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         font-size: 26px;
         text-transform: uppercase;
@@ -459,7 +456,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         li {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 14px;
             word-spacing: -0.12em;
             color: var(--cream-light);
@@ -502,7 +499,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         li {
-            font-family: var(--mono);
+            font-family: var(--font-mono);
             font-size: 13px;
             word-spacing: -0.1em;
             color: var(--cream-light);
@@ -567,7 +564,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         background: transparent;
         border: 1px solid rgba(245, 239, 228, 0.3);
         color: var(--cream-light);
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-size: 18px;
         cursor: pointer;
         display: inline-flex;
@@ -645,7 +642,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .tech-layer-heading {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         letter-spacing: -0.02em;
@@ -690,7 +687,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .req-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 16px;
@@ -791,7 +788,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .case-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 22px;
@@ -804,7 +801,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .case-quote {
-        font-family: var(--sans);
+        font-family: var(--font-family-base);
         font-style: italic;
         font-size: 16px;
         line-height: 1.5;
@@ -839,7 +836,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         gap: 8px;
 
         li {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 14px;
             word-spacing: -0.12em;
             color: var(--cream-light);
@@ -889,7 +886,7 @@ $dw-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .cta-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: clamp(40px, 4.4vw, 62px);
diff --git a/src/components/use-cases-next/ObservabilityNext.scss 
b/src/components/use-cases-next/ObservabilityNext.scss
index 9fc7e9f6057..f770f9534f7 100644
--- a/src/components/use-cases-next/ObservabilityNext.scss
+++ b/src/components/use-cases-next/ObservabilityNext.scss
@@ -4,7 +4,7 @@ $ob-bp-sm: 700px;
 $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
 
 @mixin ob-mono-caps($size: 12px, $tracking: 0.14em, $weight: 500) {
-    font-family: var(--mono);
+    font-family: var(--font-mono);
     font-size: $size;
     font-weight: $weight;
     letter-spacing: $tracking;
@@ -12,7 +12,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
 }
 
 @mixin ob-display-mono($weight: 700) {
-    font-family: var(--mono);
+    font-family: var(--font-mono);
     font-weight: $weight;
     text-transform: uppercase;
     letter-spacing: -0.018em;
@@ -63,13 +63,10 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     --ink: #0f1a14;
     --ink-soft: #1b2a22;
 
-    --mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, SFMono-Regular, 
Menlo, monospace;
-    --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
-
     --container: 1320px;
     --gutter: 56px;
 
-    font-family: var(--sans);
+    font-family: var(--font-family-base);
     background: var(--doris-green-dark);
     color: var(--cream-light);
     -webkit-font-smoothing: antialiased;
@@ -328,7 +325,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         &-title {
-            font-family: var(--mono);
+            font-family: var(--font-mono);
             font-weight: 700;
             text-transform: uppercase;
             letter-spacing: -0.035em;
@@ -346,7 +343,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         &-sub {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 15px;
             line-height: 1.5;
             color: rgba(245, 239, 228, 0.85);
@@ -456,7 +453,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .cf-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         font-size: 26px;
         text-transform: uppercase;
@@ -497,7 +494,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         li {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 14px;
             word-spacing: -0.12em;
             color: var(--cream-light);
@@ -540,7 +537,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         }
 
         li {
-            font-family: var(--mono);
+            font-family: var(--font-mono);
             font-size: 13px;
             word-spacing: -0.1em;
             color: var(--cream-light);
@@ -574,7 +571,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         background: transparent;
         border: 1px solid rgba(245, 239, 228, 0.3);
         color: var(--cream-light);
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-size: 18px;
         cursor: pointer;
         display: inline-flex;
@@ -652,7 +649,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .tech-layer-heading {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         letter-spacing: -0.02em;
@@ -704,7 +701,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .req-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 16px;
@@ -805,7 +802,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .case-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 22px;
@@ -818,7 +815,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .case-quote {
-        font-family: var(--sans);
+        font-family: var(--font-family-base);
         font-style: italic;
         font-size: 16px;
         line-height: 1.5;
@@ -853,7 +850,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
         gap: 8px;
 
         li {
-            font-family: var(--sans);
+            font-family: var(--font-family-base);
             font-size: 14px;
             word-spacing: -0.12em;
             color: var(--cream-light);
@@ -903,7 +900,7 @@ $ob-ease-out-quint: cubic-bezier(0.2, 0.8, 0.2, 1);
     }
 
     .cta-title {
-        font-family: var(--mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: clamp(40px, 4.4vw, 62px);
diff --git a/src/components/why-doris-next/BenchmarkNext.scss 
b/src/components/why-doris-next/BenchmarkNext.scss
index 5bc3d9bc144..56eaae9835b 100644
--- a/src/components/why-doris-next/BenchmarkNext.scss
+++ b/src/components/why-doris-next/BenchmarkNext.scss
@@ -23,16 +23,13 @@
     --bn-ink:      #0F1A14;
     --bn-ink-soft: #1B2A22;
 
-    --bn-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --bn-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
-
     --bn-container: 1320px;
     --bn-gutter:    56px;
 
     position: relative;
     background: var(--bn-green-dark);
     color: var(--bn-cream-light);
-    font-family: var(--bn-sans);
+    font-family: var(--font-family-base);
     overflow-x: hidden;
 
     * { box-sizing: border-box; }
@@ -54,7 +51,7 @@
         display: inline-flex;
         align-items: center;
         gap: 12px;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 12px;
         font-weight: 500;
         letter-spacing: 0.14em;
@@ -76,7 +73,7 @@
         align-items: center;
         gap: 0.6rem;
         padding: 0.95rem 1.5rem;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 14px;
         font-weight: 600;
         letter-spacing: 0.04em;
@@ -225,7 +222,7 @@
         .b-hero-inner { position: relative; z-index: 5; }
 
         .b-hero-title {
-            font-family: var(--bn-mono);
+            font-family: var(--font-mono);
             font-weight: 700;
             text-transform: uppercase;
             letter-spacing: -0.035em;
@@ -239,7 +236,7 @@
         }
 
         .b-hero-sub {
-            font-family: var(--bn-sans);
+            font-family: var(--font-family-base);
             font-size: 15px;
             line-height: 1.5;
             word-spacing: -0.12em;
@@ -299,7 +296,7 @@
     }
 
     .b-cmp-title {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: clamp(36px, 4.2vw, 56px);
@@ -345,7 +342,7 @@
     }
 
     .b-tab {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 12.5px;
         letter-spacing: 0.12em;
         text-transform: uppercase;
@@ -392,7 +389,7 @@
         padding: 12px 14px;
         background: var(--bn-ink);
         color: rgba(245, 239, 228, 0.92);
-        font-family: var(--bn-sans);
+        font-family: var(--font-family-base);
         font-size: 12.5px;
         font-weight: 400;
         letter-spacing: 0;
@@ -486,7 +483,7 @@
     }
 
     .b-card-title {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 22px;
@@ -497,7 +494,7 @@
     }
 
     .b-card-tag {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 10.5px;
         letter-spacing: 0.16em;
         text-transform: uppercase;
@@ -506,7 +503,7 @@
     }
 
     .b-card-metric {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 11px;
         letter-spacing: 0.18em;
         text-transform: uppercase;
@@ -525,7 +522,7 @@
         grid-template-columns: 120px 1fr 88px;
         gap: 14px;
         align-items: center;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 12.5px;
 
         &.is-doris {
@@ -587,7 +584,7 @@
         margin-top: auto;
         padding: 14px 0 0;
         border-top: 1px dashed rgba(15, 26, 20, 0.20);
-        font-family: var(--bn-sans);
+        font-family: var(--font-family-base);
         font-size: 13.5px;
         line-height: 1.55;
         color: rgba(15, 26, 20, 0.72);
@@ -595,7 +592,7 @@
 
     .b-card-tip {
         margin-top: 16px;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 12px;
         font-weight: 700;
         letter-spacing: 0.14em;
@@ -652,7 +649,7 @@
     }
 
     .b-detail-title {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 22px;
@@ -666,7 +663,7 @@
         flex-wrap: wrap;
 
         .b-detail-title-sub {
-            font-family: var(--bn-mono);
+            font-family: var(--font-mono);
             font-size: 11px;
             letter-spacing: 0.18em;
             text-transform: uppercase;
@@ -678,7 +675,7 @@
     .b-detail-legend {
         display: flex;
         gap: 18px;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 11px;
         letter-spacing: 0.12em;
         text-transform: uppercase;
@@ -741,7 +738,7 @@
         flex-direction: column;
         justify-content: space-between;
         align-items: flex-end;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 10px;
         color: rgba(15, 26, 20, 0.55);
         letter-spacing: 0.06em;
@@ -835,7 +832,7 @@
         top: 0;
         background: var(--bn-ink);
         color: var(--bn-cream-light);
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 11px;
         padding: 5px 9px;
         border-radius: 4px;
@@ -850,7 +847,7 @@
 
     .b-cluster-label {
         margin-top: 6px;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 10px;
         letter-spacing: 0.02em;
         color: rgba(15, 26, 20, 0.58);
@@ -865,7 +862,7 @@
 
     .b-detail-env {
         margin-top: 18px;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 12px;
         letter-spacing: 0.02em;
         line-height: 1.6;
@@ -899,7 +896,7 @@
 
     .b-detail-foot {
         margin-top: 14px;
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 11.5px;
         color: rgba(15, 26, 20, 0.58);
     }
@@ -946,7 +943,7 @@
     }
 
     .b-method-link {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 12px;
         font-weight: 600;
         letter-spacing: 0.12em;
@@ -977,7 +974,7 @@
     }
 
     .b-method-label {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 11px;
         font-weight: 700;
         letter-spacing: 0.18em;
@@ -986,14 +983,14 @@
     }
 
     .b-method-body {
-        font-family: var(--bn-sans);
+        font-family: var(--font-family-base);
         font-size: 13.5px;
         line-height: 1.55;
         color: rgba(245, 239, 228, 0.82);
     }
 
     .b-repro-title {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: clamp(36px, 4.2vw, 56px);
@@ -1058,7 +1055,7 @@
     }
 
     .b-step-num {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         font-size: 24px;
         color: rgba(245, 239, 228, 0.55);
@@ -1067,7 +1064,7 @@
     }
 
     .b-step-title {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: 14px;
@@ -1077,7 +1074,7 @@
     }
 
     .b-step-body {
-        font-family: var(--bn-sans);
+        font-family: var(--font-family-base);
         font-size: 14px;
         line-height: 1.55;
         color: rgba(245, 239, 228, 0.72);
@@ -1100,7 +1097,7 @@
         pre[class*='language-'] {
             margin: 0;
             padding: 28px 28px;
-            font-family: var(--bn-mono);
+            font-family: var(--font-mono);
             font-size: 13.5px;
             line-height: 1.75;
             color: var(--bn-cream-light);
@@ -1127,7 +1124,7 @@
         padding: 14px 18px;
         background: #050706;
         border-bottom: 1px solid rgba(245, 239, 228, 0.08);
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-size: 11px;
         letter-spacing: 0.14em;
         text-transform: uppercase;
@@ -1198,7 +1195,7 @@
     }
 
     .b-cta-title {
-        font-family: var(--bn-mono);
+        font-family: var(--font-mono);
         font-weight: 700;
         text-transform: uppercase;
         font-size: clamp(36px, 4.2vw, 56px);
diff --git a/src/components/why-doris-next/CompareNext.scss 
b/src/components/why-doris-next/CompareNext.scss
index eb42628c7da..7ae764ac4d9 100644
--- a/src/components/why-doris-next/CompareNext.scss
+++ b/src/components/why-doris-next/CompareNext.scss
@@ -13,8 +13,6 @@
     --cn-yellow-bright: #FFE066;
     --cn-coral: #FF5C39;
     --cn-ink: #0F1A14;
-    --cn-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --cn-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
 
     // ── Responsive tokens ──────────────────────────────────────────────────
     // Fluid values use clamp(min, preferred, max). Preferred term scales
@@ -56,7 +54,7 @@
     min-height: 100vh;
     background: var(--cn-cream-light);
     color: var(--cn-ink);
-    font-family: var(--cn-sans);
+    font-family: var(--font-family-base);
     overflow-x: hidden;
 
     // ── Background ─────────────────────────────────────────────────────────
diff --git a/src/components/why-doris-next/KeyFeaturesNext.scss 
b/src/components/why-doris-next/KeyFeaturesNext.scss
index ce9d33afe1b..e6611bfe289 100644
--- a/src/components/why-doris-next/KeyFeaturesNext.scss
+++ b/src/components/why-doris-next/KeyFeaturesNext.scss
@@ -13,8 +13,6 @@
     --kf-coral: #FF5C39;
     --kf-ink: #0F1A14;
     --kf-ink-soft: #1B2A22;
-    --kf-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --kf-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
     --kf-container: 1320px;
     --kf-gutter: 56px;
 
@@ -22,7 +20,7 @@
     min-height: 100vh;
     background: var(--kf-green-dark);
     color: var(--kf-cream-light);
-    font-family: var(--kf-sans);
+    font-family: var(--font-family-base);
     overflow-x: hidden;
 
     * {
@@ -41,7 +39,7 @@
     display: inline-flex;
     align-items: center;
     gap: 12px;
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-size: 12px;
     font-weight: 500;
     letter-spacing: 0.14em;
@@ -82,7 +80,7 @@
 }
 
 .kf-next__section-title {
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-weight: 700;
     text-transform: uppercase;
     letter-spacing: -0.035em;
@@ -234,7 +232,7 @@
 }
 
 .kf-next__hero-title {
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-weight: 700;
     text-transform: uppercase;
     letter-spacing: -0.035em;
@@ -268,7 +266,7 @@
     display: inline-flex;
     align-items: center;
     gap: 14px;
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-size: 11px;
     font-weight: 500;
     letter-spacing: 0.18em;
@@ -342,7 +340,7 @@
     border: 0;
     outline: none;
     color: var(--kf-cream-light);
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-size: 16px;
     letter-spacing: 0.01em;
 }
@@ -383,7 +381,7 @@
     display: inline-flex;
     align-items: baseline;
     gap: 10px;
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-size: 12px;
     font-weight: 500;
     letter-spacing: 0.18em;
@@ -499,7 +497,7 @@
     border: 1px solid rgba(245, 239, 228, 0.24);
     background: rgba(15, 26, 20, 0.24);
     color: var(--kf-cream-light);
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-size: 10px;
     font-weight: 700;
     letter-spacing: 0.12em;
@@ -511,7 +509,7 @@
 
 .kf-next__tile-name {
     display: block;
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-weight: 700;
     font-size: clamp(13px, 1.05vw, 16px);
     line-height: 1.15;
@@ -563,7 +561,7 @@
 
 .kf-next__tile-tags {
     flex: 1 1 auto;
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-size: clamp(10px, 0.8vw, 11px);
     letter-spacing: 0.06em;
     word-spacing: -0.08em;
@@ -580,7 +578,7 @@
     display: inline-flex;
     align-items: center;
     justify-content: center;
-    font-family: var(--kf-mono);
+    font-family: var(--font-mono);
     font-size: 13px;
     background: rgba(15, 26, 20, 0.08);
     transition:
diff --git a/src/components/why-doris-next/UsersNext.scss 
b/src/components/why-doris-next/UsersNext.scss
index fa59530763b..85a3bfb3cd5 100644
--- a/src/components/why-doris-next/UsersNext.scss
+++ b/src/components/why-doris-next/UsersNext.scss
@@ -8,15 +8,13 @@
     --un-yellow: #FFD23F;
     --un-yellow-bright: #FFE066;
     --un-ink: #0F1A14;
-    --un-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
-    --un-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
     --un-container: 1320px;
     --un-gutter: 56px;
 
     position: relative;
     background: var(--un-paper);
     color: var(--un-ink);
-    font-family: var(--un-sans);
+    font-family: var(--font-family-base);
     overflow-x: hidden;
 
     * {
@@ -95,7 +93,7 @@
 }
 
 .users-next__hero-title {
-    font-family: var(--un-mono);
+    font-family: var(--font-mono);
     font-weight: 700;
     text-transform: uppercase;
     letter-spacing: -0.035em;
@@ -133,7 +131,7 @@
     padding: 14px 28px;
     background: var(--un-yellow);
     color: var(--un-ink);
-    font-family: var(--un-mono);
+    font-family: var(--font-mono);
     font-weight: 700;
     font-size: 14px;
     letter-spacing: 0.04em;
diff --git a/src/components/why-doris-next/sections/ComparisonTableSection.scss 
b/src/components/why-doris-next/sections/ComparisonTableSection.scss
index 27f50efc86e..10ea5bc8c90 100644
--- a/src/components/why-doris-next/sections/ComparisonTableSection.scss
+++ b/src/components/why-doris-next/sections/ComparisonTableSection.scss
@@ -88,7 +88,7 @@
 
     &__cell {
         padding: 22px 26px;
-        font-family: var(--cn-sans);
+        font-family: var(--font-family-base);
 
         &--label {
             border-right: 1px solid rgba(245, 239, 228, 0.06);
diff --git a/src/scss/custom.scss b/src/scss/custom.scss
index 5106caa62b0..56951afe636 100644
--- a/src/scss/custom.scss
+++ b/src/scss/custom.scss
@@ -22,17 +22,32 @@
 
 @font-face {
     font-family: 'Inter';
-    src: url('/fonts/Inter-VariableFont_opsz,wght.ttf');
+    src: url('/fonts/Inter-VariableFont_opsz,wght.ttf') 
format('truetype-variations');
+    font-weight: 100 900;
+    font-display: swap;
 }
 
 @font-face {
-    font-family: 'Noto Sans';
-    src: url('/fonts/NotoSansSC-VariableFont_wght.ttf');
+    font-family: 'Noto Sans SC';
+    src: url('/fonts/NotoSansSC-VariableFont_wght.ttf') 
format('truetype-variations');
+    font-weight: 100 900;
+    font-display: swap;
 }
 
 @font-face {
-    font-family: 'Montserrat';
-    src: url('/fonts/Montserrat-VariableFont_wght.ttf');
+    font-family: 'JetBrains Mono';
+    src: url('/fonts/JetBrainsMono-VariableFont_wght.ttf') 
format('truetype-variations');
+    font-weight: 100 800;
+    font-display: swap;
+}
+
+:root {
+    --font-sans-en: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
'Helvetica Neue', Arial, sans-serif;
+    --font-sans-zh: 'Noto Sans SC', 'Inter', -apple-system, 
BlinkMacSystemFont, 'Helvetica Neue', Arial, sans-serif;
+    --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, 
Consolas, monospace;
+    --font-family-base: var(--font-sans-en);
+    --ifm-font-family-base: var(--font-sans-en);
+    --ifm-font-family-monospace: var(--font-mono);
 }
 
 @layer utilities {
@@ -54,19 +69,16 @@
 }
 
 html[lang='zh-Hans-CN'] {
-    --font-family-base: 'Noto Sans';
-    font-family: 'Noto Sans', 'Source Sans Pro', 'Helvetica Neue', Helvetica, 
Arial, sans-serif;
+    --font-family-base: var(--font-sans-zh);
+    --ifm-font-family-base: var(--font-sans-zh);
+    font-family: var(--font-family-base);
 }
 
 html[lang='en-US'] {
-    --font-family-base: 'Inter';
-    font-family: 'Inter', 'MiSans Latin', 'Montserrat', 'Source Sans Pro', 
'Helvetica Neue', Helvetica, Arial,
-        sans-serif;
+    --font-family-base: var(--font-sans-en);
+    --ifm-font-family-base: var(--font-sans-en);
+    font-family: var(--font-family-base);
 }
-
-// :root {
-//     --font-family-base: 'SF Pro Display', 'SF Pro Icons', 'Helvetica Neue', 
Helvetica, Arial, sans-serif;
-// }
 .markdown :where(p, h1, h2, h3, h4, h5, h6, li, blockquote) {
     font-family: var(--font-family-base);
     color: #1f1f26;
diff --git a/static/animations/what-is-apache-doris-intro.html 
b/static/animations/what-is-apache-doris-intro.html
index 1cafd6fdf5f..6e9ab6ab154 100644
--- a/static/animations/what-is-apache-doris-intro.html
+++ b/static/animations/what-is-apache-doris-intro.html
@@ -4,10 +4,13 @@
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1">
 <title>Apache Doris · 30s Overview</title>
-<link rel="preconnect" href="https://fonts.googleapis.com";>
-<link rel="preconnect" href="https://fonts.gstatic.com"; crossorigin>
-<link 
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";
 rel="stylesheet">
 <style>
+  @font-face {
+    font-family: 'Inter';
+    src: url('/fonts/Inter-VariableFont_opsz,wght.ttf') 
format('truetype-variations');
+    font-weight: 100 900;
+    font-display: swap;
+  }
   :root {
     --doris-green: #11A679;
     --doris-green-dark: #06805F;
diff --git a/static/fonts/JetBrainsMono-VariableFont_wght.ttf 
b/static/fonts/JetBrainsMono-VariableFont_wght.ttf
new file mode 100644
index 00000000000..5b7a5266cbd
Binary files /dev/null and b/static/fonts/JetBrainsMono-VariableFont_wght.ttf 
differ
diff --git a/static/fonts/Montserrat-Black.otf 
b/static/fonts/Montserrat-Black.otf
deleted file mode 100644
index 5e5a91632aa..00000000000
Binary files a/static/fonts/Montserrat-Black.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-BlackItalic.otf 
b/static/fonts/Montserrat-BlackItalic.otf
deleted file mode 100644
index f4d5d3b9ec8..00000000000
Binary files a/static/fonts/Montserrat-BlackItalic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-Bold.otf b/static/fonts/Montserrat-Bold.otf
deleted file mode 100644
index cdfb83df2f2..00000000000
Binary files a/static/fonts/Montserrat-Bold.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-BoldItalic.otf 
b/static/fonts/Montserrat-BoldItalic.otf
deleted file mode 100644
index d57ff9a4798..00000000000
Binary files a/static/fonts/Montserrat-BoldItalic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-ExtraBold.otf 
b/static/fonts/Montserrat-ExtraBold.otf
deleted file mode 100644
index db86f49e5c5..00000000000
Binary files a/static/fonts/Montserrat-ExtraBold.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-ExtraBoldItalic.otf 
b/static/fonts/Montserrat-ExtraBoldItalic.otf
deleted file mode 100644
index f7a042a7b95..00000000000
Binary files a/static/fonts/Montserrat-ExtraBoldItalic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-ExtraLight.otf 
b/static/fonts/Montserrat-ExtraLight.otf
deleted file mode 100644
index 5a66f53aa29..00000000000
Binary files a/static/fonts/Montserrat-ExtraLight.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-ExtraLightItalic.otf 
b/static/fonts/Montserrat-ExtraLightItalic.otf
deleted file mode 100644
index 31b13517d35..00000000000
Binary files a/static/fonts/Montserrat-ExtraLightItalic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-Italic.otf 
b/static/fonts/Montserrat-Italic.otf
deleted file mode 100644
index 450689e2e50..00000000000
Binary files a/static/fonts/Montserrat-Italic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-Light.otf 
b/static/fonts/Montserrat-Light.otf
deleted file mode 100644
index 14e715c7eeb..00000000000
Binary files a/static/fonts/Montserrat-Light.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-LightItalic.otf 
b/static/fonts/Montserrat-LightItalic.otf
deleted file mode 100644
index b5ec441d9bb..00000000000
Binary files a/static/fonts/Montserrat-LightItalic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-Medium.otf 
b/static/fonts/Montserrat-Medium.otf
deleted file mode 100644
index 6c323c1bd77..00000000000
Binary files a/static/fonts/Montserrat-Medium.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-MediumItalic.otf 
b/static/fonts/Montserrat-MediumItalic.otf
deleted file mode 100644
index 51db58d80da..00000000000
Binary files a/static/fonts/Montserrat-MediumItalic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-Regular.otf 
b/static/fonts/Montserrat-Regular.otf
deleted file mode 100644
index c1d1ee37b64..00000000000
Binary files a/static/fonts/Montserrat-Regular.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-SemiBold.otf 
b/static/fonts/Montserrat-SemiBold.otf
deleted file mode 100644
index 4fa8281a286..00000000000
Binary files a/static/fonts/Montserrat-SemiBold.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-SemiBoldItalic.otf 
b/static/fonts/Montserrat-SemiBoldItalic.otf
deleted file mode 100644
index 8c3b253f5a7..00000000000
Binary files a/static/fonts/Montserrat-SemiBoldItalic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-Thin.otf b/static/fonts/Montserrat-Thin.otf
deleted file mode 100644
index 1c20b623f75..00000000000
Binary files a/static/fonts/Montserrat-Thin.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-ThinItalic.otf 
b/static/fonts/Montserrat-ThinItalic.otf
deleted file mode 100644
index ed9bb19bb0f..00000000000
Binary files a/static/fonts/Montserrat-ThinItalic.otf and /dev/null differ
diff --git a/static/fonts/Montserrat-VariableFont_wght.ttf 
b/static/fonts/Montserrat-VariableFont_wght.ttf
deleted file mode 100644
index 451e69288c1..00000000000
Binary files a/static/fonts/Montserrat-VariableFont_wght.ttf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-Black.otf 
b/static/fonts/MontserratAlternates-Black.otf
deleted file mode 100644
index 57593288a3e..00000000000
Binary files a/static/fonts/MontserratAlternates-Black.otf and /dev/null differ
diff --git a/static/fonts/MontserratAlternates-BlackItalic.otf 
b/static/fonts/MontserratAlternates-BlackItalic.otf
deleted file mode 100644
index 7cc17c6cea8..00000000000
Binary files a/static/fonts/MontserratAlternates-BlackItalic.otf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-Bold.otf 
b/static/fonts/MontserratAlternates-Bold.otf
deleted file mode 100644
index e98891b30da..00000000000
Binary files a/static/fonts/MontserratAlternates-Bold.otf and /dev/null differ
diff --git a/static/fonts/MontserratAlternates-BoldItalic.otf 
b/static/fonts/MontserratAlternates-BoldItalic.otf
deleted file mode 100644
index e2d4bfab117..00000000000
Binary files a/static/fonts/MontserratAlternates-BoldItalic.otf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-ExtraBold.otf 
b/static/fonts/MontserratAlternates-ExtraBold.otf
deleted file mode 100644
index 99472d6f6eb..00000000000
Binary files a/static/fonts/MontserratAlternates-ExtraBold.otf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-ExtraBoldItalic.otf 
b/static/fonts/MontserratAlternates-ExtraBoldItalic.otf
deleted file mode 100644
index ce88d1c5ebe..00000000000
Binary files a/static/fonts/MontserratAlternates-ExtraBoldItalic.otf and 
/dev/null differ
diff --git a/static/fonts/MontserratAlternates-ExtraLight.otf 
b/static/fonts/MontserratAlternates-ExtraLight.otf
deleted file mode 100644
index 73fc746575c..00000000000
Binary files a/static/fonts/MontserratAlternates-ExtraLight.otf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-ExtraLightItalic.otf 
b/static/fonts/MontserratAlternates-ExtraLightItalic.otf
deleted file mode 100644
index 6d7cb1794de..00000000000
Binary files a/static/fonts/MontserratAlternates-ExtraLightItalic.otf and 
/dev/null differ
diff --git a/static/fonts/MontserratAlternates-Italic.otf 
b/static/fonts/MontserratAlternates-Italic.otf
deleted file mode 100644
index 6196e3563f6..00000000000
Binary files a/static/fonts/MontserratAlternates-Italic.otf and /dev/null differ
diff --git a/static/fonts/MontserratAlternates-Light.otf 
b/static/fonts/MontserratAlternates-Light.otf
deleted file mode 100644
index 606385081a5..00000000000
Binary files a/static/fonts/MontserratAlternates-Light.otf and /dev/null differ
diff --git a/static/fonts/MontserratAlternates-LightItalic.otf 
b/static/fonts/MontserratAlternates-LightItalic.otf
deleted file mode 100644
index 40c70f72589..00000000000
Binary files a/static/fonts/MontserratAlternates-LightItalic.otf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-Medium.otf 
b/static/fonts/MontserratAlternates-Medium.otf
deleted file mode 100644
index fbc59dfb49a..00000000000
Binary files a/static/fonts/MontserratAlternates-Medium.otf and /dev/null differ
diff --git a/static/fonts/MontserratAlternates-MediumItalic.otf 
b/static/fonts/MontserratAlternates-MediumItalic.otf
deleted file mode 100644
index 7cb32aceb27..00000000000
Binary files a/static/fonts/MontserratAlternates-MediumItalic.otf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-Regular.otf 
b/static/fonts/MontserratAlternates-Regular.otf
deleted file mode 100644
index 69bd2e78729..00000000000
Binary files a/static/fonts/MontserratAlternates-Regular.otf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-SemiBold.otf 
b/static/fonts/MontserratAlternates-SemiBold.otf
deleted file mode 100644
index a9e6e7d708e..00000000000
Binary files a/static/fonts/MontserratAlternates-SemiBold.otf and /dev/null 
differ
diff --git a/static/fonts/MontserratAlternates-SemiBoldItalic.otf 
b/static/fonts/MontserratAlternates-SemiBoldItalic.otf
deleted file mode 100644
index a4cf74d159c..00000000000
Binary files a/static/fonts/MontserratAlternates-SemiBoldItalic.otf and 
/dev/null differ
diff --git a/static/fonts/MontserratAlternates-Thin.otf 
b/static/fonts/MontserratAlternates-Thin.otf
deleted file mode 100644
index d21fe419f0d..00000000000
Binary files a/static/fonts/MontserratAlternates-Thin.otf and /dev/null differ
diff --git a/static/fonts/MontserratAlternates-ThinItalic.otf 
b/static/fonts/MontserratAlternates-ThinItalic.otf
deleted file mode 100644
index 4b224cf3ceb..00000000000
Binary files a/static/fonts/MontserratAlternates-ThinItalic.otf and /dev/null 
differ
diff --git a/static/fonts/NotoSansSC-Black.otf 
b/static/fonts/NotoSansSC-Black.otf
deleted file mode 100644
index 7529643c330..00000000000
Binary files a/static/fonts/NotoSansSC-Black.otf and /dev/null differ
diff --git a/static/fonts/NotoSansSC-Bold.otf b/static/fonts/NotoSansSC-Bold.otf
deleted file mode 100644
index 172eb674127..00000000000
Binary files a/static/fonts/NotoSansSC-Bold.otf and /dev/null differ
diff --git a/static/fonts/NotoSansSC-Light.otf 
b/static/fonts/NotoSansSC-Light.otf
deleted file mode 100644
index 85ccdf44a4c..00000000000
Binary files a/static/fonts/NotoSansSC-Light.otf and /dev/null differ
diff --git a/static/fonts/NotoSansSC-Medium.otf 
b/static/fonts/NotoSansSC-Medium.otf
deleted file mode 100644
index 0a5bd9e5fe6..00000000000
Binary files a/static/fonts/NotoSansSC-Medium.otf and /dev/null differ
diff --git a/static/fonts/NotoSansSC-Regular.otf 
b/static/fonts/NotoSansSC-Regular.otf
deleted file mode 100644
index d350ffa79e3..00000000000
Binary files a/static/fonts/NotoSansSC-Regular.otf and /dev/null differ
diff --git a/static/fonts/NotoSansSC-Thin.otf b/static/fonts/NotoSansSC-Thin.otf
deleted file mode 100644
index 0e98049ec41..00000000000
Binary files a/static/fonts/NotoSansSC-Thin.otf and /dev/null differ
diff --git a/static/js/custom-script.js b/static/js/custom-script.js
index 26c3efa741b..86459ab3cb9 100644
--- a/static/js/custom-script.js
+++ b/static/js/custom-script.js
@@ -11,25 +11,28 @@
     y.parentNode.insertBefore(t, y);
 })(window, document, 'clarity', 'script', 'kfyqejiz0g');
 
-// Center the Kapa Ask Me modal vertically. Kapa renders inside a Shadow DOM
-// on `#kapa-widget-container`, so light-DOM CSS can't reach it. We inject a
-// <style> into the shadow root and re-inject if Kapa rebuilds it.
+// Position the Kapa Ask Me modal below the sticky NavbarNext (64px tall).
+// Kapa renders inside a Shadow DOM on `#kapa-widget-container`, so light-DOM
+// CSS can't reach it. We inject a <style> into the shadow root and re-inject
+// if Kapa rebuilds it.
 //
 // The modal must (a) size to its content when small, (b) cap at viewport
-// minus margin when content is tall, and (c) scroll inside the body — not
-// inside `.mantine-Modal-inner`, which clips the top under `align-items:
-// center` once content exceeds the viewport.
+// minus the navbar plus margin when content is tall, and (c) scroll inside
+// the body — not inside `.mantine-Modal-inner`, which clips the top under
+// `align-items: center` once content exceeds the viewport.
 (function centerKapaModal() {
     var STYLE_ID = 'doris-kapa-center-modal';
+    // Top padding clears the 64px sticky NavbarNext + 16px gap so the modal
+    // header is never tucked under the navbar when content fills the screen.
     var CSS_TEXT =
         '.mantine-Modal-inner{' +
-        'align-items:center !important;' +
-        'padding-top:2rem !important;' +
+        'align-items:flex-start !important;' +
+        'padding-top:80px !important;' +
         'padding-bottom:2rem !important;' +
         '--modal-y-offset:0 !important;' +
         '}' +
         '.mantine-Modal-content{' +
-        'max-height:calc(100vh - 4rem) !important;' +
+        'max-height:calc(100vh - 80px - 2rem) !important;' +
         'display:flex !important;' +
         'flex-direction:column !important;' +
         '}' +


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to