3131 --vp-c-text-2 : # 5a6273 ;
3232 --vp-c-text-3 : # 8a93a6 ;
3333
34- /* Code surfaces */
35- --vp-code-bg : # f4f5f9 ;
36- --vp-code-block-bg : # 0e1117 ;
34+ /* Code surfaces — light bg so syntax colours stay readable */
35+ --vp-code-bg : # eceef5 ;
36+ --vp-code-block-bg : # f6f8fa ;
37+ --vp-code-color : # 24292e ;
38+ --vp-code-block-divider-color : # d0d7de ;
39+
40+ /* Interactive demo — light mode */
41+ --demo-panel-bg : # f6f8fa ;
42+ --demo-panel-border : # d0d7de ;
43+ --demo-panel-header-bg : rgba (0 , 0 , 0 , 0.03 );
44+ --demo-panel-header-border : rgba (0 , 0 , 0 , 0.06 );
45+ --demo-panel-header-color : # 5a6273 ;
46+ --demo-code-color : # 24292e ;
47+ --demo-token-key : # 0550ae ;
48+ --demo-token-string : # 0a3069 ;
49+ --demo-token-number : # 953800 ;
50+ --demo-token-bool : # cf222e ;
51+ --demo-token-comment : # 6e7781 ;
3752}
3853
3954/* ---------- Dark mode — deep cool slate, NOT warm brown ---------- */
5772 --brand-glow : 0 0 40px rgba (123 , 143 , 255 , 0.18 );
5873
5974 --vp-code-bg : # 11141d ;
60- --vp-code-block-bg : # 0a0c12 ;
75+ --vp-code-block-bg : # 0d1117 ;
76+ --vp-code-color : # e6edf3 ;
77+ --vp-code-block-divider-color : # 30363d ;
78+
79+ /* Interactive demo — dark mode */
80+ --demo-panel-bg : # 0a0c12 ;
81+ --demo-panel-border : # 1a1f2e ;
82+ --demo-panel-header-bg : rgba (255 , 255 , 255 , 0.03 );
83+ --demo-panel-header-border : rgba (255 , 255 , 255 , 0.06 );
84+ --demo-panel-header-color : # 9aa3b5 ;
85+ --demo-code-color : # d1d5e0 ;
86+ --demo-token-key : # 79c0ff ;
87+ --demo-token-string : # a5d6ff ;
88+ --demo-token-number : # f2cc60 ;
89+ --demo-token-bool : # ff7b72 ;
90+ --demo-token-comment : # 6e7681 ;
6191}
6292
6393/* ---------- Base typography refinements ---------- */
@@ -71,18 +101,35 @@ body {
71101
72102/* ---------- Navbar — single uniform pane, no sidebar/content seam ---------- */
73103.VPNav {
74- backdrop-filter : saturate (180% ) blur (14px );
75104 -webkit-backdrop-filter : saturate (180% ) blur (14px );
105+ backdrop-filter : saturate (180% ) blur (14px );
76106 background : rgba (255 , 255 , 255 , 0.78 ) !important ;
77107 border-bottom : 1px solid var (--vp-c-divider );
78- /* Avoid the double-shadow / curtain artefact in default theme */
79108 box-shadow : none !important ;
109+ transition : background 0.25s ease, border-color 0.25s ease,
110+ backdrop-filter 0.25s ease, -webkit-backdrop-filter 0.25s ease;
80111}
81112
82113.dark .VPNav {
83114 background : rgba (10 , 12 , 18 , 0.78 ) !important ;
84115}
85116
117+ /* Fully transparent when the page hasn't been scrolled yet */
118+ .VPNav : has (.VPNavBar .top ) {
119+ background : transparent !important ;
120+ -webkit-backdrop-filter : none !important ;
121+ backdrop-filter : none !important ;
122+ border-bottom-color : transparent !important ;
123+ }
124+
125+ /* Kill the VitePress divider/divider-line element that draws a 1px bottom line
126+ on non-home doc pages (.VPNavBar:not(.home) .divider-line { background: var(--vp-c-gutter) })
127+ — must be transparent when the header is in its at-top transparent state */
128+ .VPNav : has (.VPNavBar .top ) .divider ,
129+ .VPNav : has (.VPNavBar .top ) .divider-line {
130+ background-color : transparent !important ;
131+ }
132+
86133/* Kill the split between sidebar-aligned curtain and content area */
87134.VPNavBar ,
88135.VPNavBar .content ,
@@ -150,11 +197,11 @@ div[class*='language-'] {
150197 border : 1px solid var (--vp-c-divider );
151198}
152199
153- /* ---------- Doc pages — subtle brand cohesion (BELOW the navbar, never crosses it ) ---------- */
200+ /* ---------- Doc pages — subtle brand cohesion (bleeds behind the transparent navbar ) ---------- */
154201.VPContent : not (.is-home )::before {
155202 content : '' ;
156203 position : fixed;
157- top : var ( --vp-nav-height ) ;
204+ top : 0 ;
158205 left : 0 ;
159206 right : 0 ;
160207 height : 280px ;
@@ -194,11 +241,11 @@ div[class*='language-'] {
194241 position : relative;
195242}
196243
197- /* Decorative background gradient (homepage only — starts below navbar) */
244+ /* Decorative background gradient (homepage only — bleeds behind the transparent navbar) */
198245.hp-root ::before {
199246 content : '' ;
200247 position : fixed;
201- top : var ( --vp-nav-height ) ;
248+ top : 0 ;
202249 left : 0 ;
203250 right : 0 ;
204251 width : 100% ;
@@ -488,8 +535,8 @@ div[class*='language-'] {
488535
489536.demo-panel {
490537 border-radius : 12px ;
491- border : 1px solid # 1a1f2e ;
492- background : # 0a0c12 ;
538+ border : 1px solid var ( --demo-panel-border ) ;
539+ background : var ( --demo-panel-bg ) ;
493540 overflow : hidden;
494541 min-height : 320px ;
495542 display : flex;
@@ -501,11 +548,11 @@ div[class*='language-'] {
501548 align-items : center;
502549 justify-content : space-between;
503550 padding : 0.55rem 1rem ;
504- background : rgba ( 255 , 255 , 255 , 0.03 );
505- border-bottom : 1px solid rgba ( 255 , 255 , 255 , 0.06 );
551+ background : var ( --demo-panel-header-bg );
552+ border-bottom : 1px solid var ( --demo-panel-header-border );
506553 font-size : 0.78rem ;
507554 font-weight : 600 ;
508- color : # 9aa3b5 ;
555+ color : var ( --demo-panel-header-color ) ;
509556 letter-spacing : 0.04em ;
510557 text-transform : uppercase;
511558}
@@ -549,19 +596,19 @@ div[class*='language-'] {
549596 font-size : 0.8rem ;
550597 line-height : 1.65 ;
551598 font-family : 'JetBrains Mono' , 'Fira Code' , ui-monospace, monospace;
552- color : # d1d5e0 ;
599+ color : var ( --demo-code-color ) ;
553600 overflow-y : auto;
554601 white-space : pre-wrap;
555602 word-break : break-word;
556603}
557604
558- .demo-code .key { color : # 79c0ff ; }
559- .demo-code .string { color : # a5d6ff ; }
560- .demo-code .number { color : # f2cc60 ; }
561- .demo-code .bool { color : # ff7b72 ; }
562- .demo-code .tool-name { color : # a5b3ff ; font-weight : 600 ; }
563- .demo-code .comment { color : # 6e7681 ; font-style : italic; }
564- .demo-code .label { color : # 8b949e ; }
605+ .demo-code .key { color : var ( --demo-token-key ) ; }
606+ .demo-code .string { color : var ( --demo-token-string ) ; }
607+ .demo-code .number { color : var ( --demo-token-number ) ; }
608+ .demo-code .bool { color : var ( --demo-token-bool ) ; }
609+ .demo-code .tool-name { color : var ( --vp-c-brand-1 ) ; font-weight : 600 ; }
610+ .demo-code .comment { color : var ( --demo-token-comment ) ; font-style : italic; }
611+ .demo-code .label { color : var ( --vp-c-text-3 ) ; }
565612
566613.demo-fade-in { animation : fadeInUp 0.35s ease forwards; }
567614
0 commit comments