33$body-font : ' Fira Sans' , Helvetica , Arial , sans-serif ;
44$header-font : ' Alfa Slab One' , serif ;
55
6- $gray : #2a3439 ;
7- $red : #a72145 ;
8- $green : #0b7261 ;
9- $purple : #2e2459 ;
10- $yellow : #ffc832 ;
6+ // Switching theme will only work if JavaScript is enabled as well
7+
8+ // Default light theme
9+ :root , :root:not ([data-theme ]) {
10+ --gray : #2a3439 ;
11+ --red : #a72145 ;
12+ --yellow : #ffc832 ;
13+ --code-color : black ;
14+ --code-bg-color : rgba (42 , 52 , 57 , 0.05 );
15+ --code-border-color : rgba (42 , 52 , 57 , 0.25 );
16+ --blockquote-color : black ;
17+ --blockquote-bg-color : rgb (247 , 249 , 249 );
18+ --blockquote-left-border-color : rgb (195 , 205 , 210 );
19+ --body-background-color : white ;
20+ --body-foreground-color : white ;
21+ --body-color : rgb (34 ,34 ,34 );
22+ --div-brand-a-color : black ;
23+ --white-elem-color : black ;
24+ --white-a : #2a3439 ;
25+ --nav-links-a : #2a3439 ;
26+ --publish-date-author : #2a3439 ;
27+ --section-header-h2-color : black ;
28+ --theme-icon : #43484d ;
29+ --theme-popup-border : #43484d ;
30+ --theme-popup-bg : white ;
31+ --theme-hover : #cacaca ;
32+ --theme-choice-color : black ;
33+ --rust-logo-filter : initial ;
34+ }
35+
36+ // Dark theme
37+ :root [data-theme = ' dark' ] {
38+ --gray : #2a3439 ;
39+ --red : #a72145 ;
40+ --yellow : #ffc832 ;
41+ --code-color : white ;
42+ --code-bg-color : rgba (213 , 203 , 198 , 0.05 );
43+ --code-border-color : rgba (213 , 203 , 198 , 0.25 );
44+ --blockquote-color : rgb (195 , 205 , 210 );
45+ --blockquote-bg-color : rgba (213 , 203 , 198 , 0.05 );
46+ --blockquote-left-border-color : rgb (195 , 205 , 210 );
47+ --body-background-color : #181a1b ;
48+ --body-foreground-color : #e8e6e3 ;
49+ --body-color : white ;
50+ --div-brand-a-color : white ;
51+ --white-elem-color : white ;
52+ --white-elem-a : #d5cbc6 ;
53+ --nav-links-a : #d5cbc6 ;
54+ --publish-date-author : #d5cbc6 ;
55+ --section-header-h2-color : white ;
56+ --theme-icon : #43484d ;
57+ --theme-popup-border : #43484d ;
58+ --theme-popup-bg : #141617 ;
59+ --theme-hover : #474c51 ;
60+ --theme-choice-color : #d5cbc6 ;
61+ --rust-logo-filter : drop-shadow (1px 0 0px #fff ) drop-shadow (0 1px 0 #fff ) drop-shadow (-1px 0 0 #fff ) drop-shadow (0 -1px 0 #fff );
62+ }
1163
1264html {
13- font-size : 62.5%
65+ font-size : 62.5% ;
1466}
1567
1668@media screen and (min-width : 30em ) {
2173
2274body {
2375 font-family : $body-font ;
24- background-color : white ;
76+ background-color : var (--body-background-color );
77+ color : var (--body-color );
2578
2679 /* Ensure the footer is always at the bottom of the screen */
2780 min-height : 100vh ;
3588blockquote {
3689 font-style : italic ;
3790 position : relative ;
38- background-color : lighten ( $gray , 78 % );
39- border-left : 8px solid lighten ( $gray , 60 % );
91+ background-color : var ( --blockquote-bg-color );
92+ border-left : 8px solid var ( --blockquote-left-border-color );
4093 border-radius : 5px ;
4194 margin : 0 ;
4295 margin-bottom : 2rem ;
@@ -80,6 +133,7 @@ section {
80133 margin : 0 ;
81134 padding : 0 ;
82135 letter-spacing : 1px ;
136+ color : var (--section-header-h2-color );
83137 }
84138 }
85139}
@@ -110,7 +164,8 @@ ul.nav, ul.nav li {
110164}
111165
112166.nav a {
113- color : $gray ;
167+ color : var (--gray );
168+ color : var (--nav-links-a );
114169}
115170
116171div .brand {
@@ -123,7 +178,7 @@ div.brand {
123178 margin-top : $v-top ;
124179
125180 & a {
126- color : black ;
181+ color : var ( --div-brand-a-color ) ;
127182 text-decoration : none ;
128183 }
129184
@@ -139,30 +194,30 @@ div.brand {
139194}
140195
141196.white {
142- color : black ;
197+ color : var ( --white-elem-color ) ;
143198 .highlight {
144- background-color : $ yellow ;
199+ background-color : var ( -- yellow) ;
145200 }
146201 a {
147- color : $gray ;
202+ color : var ( --white-elem-a ) ;
148203 text-decoration : underline ;
149204 }
150205 .button.button-secondary {
151- background-color : $ yellow ;
152- border : 1 px solid $yellow ;
153- color : $gray ;
206+ background-color : var ( -- yellow) ;
207+ color : var ( --gray ) ;
208+ border : 1 px solid var ( --yellow ) ;
154209 text-decoration : none ;
155210 display : block ;
156211 overflow : hidden ;
157212 text-overflow : ellipsis ;
158213 & :hover , & :focus {
159- border-color : $ gray ;
214+ border-color : var ( -- gray) ;
160215 }
161216 }
162217 code {
163- color : black ;
164- background-color : rgba ( $gray , 0.05 );
165- border : 1px solid rgba ( $gray , 0.25 );
218+ color : var ( --code-color ) ;
219+ background-color : var ( --code-bg-color );
220+ border : 1px solid var ( --code-border-color );
166221 }
167222
168223 a .anchor ::before {
@@ -173,7 +228,7 @@ div.brand {
173228 margin-left : -1em ;
174229 text-decoration : none ;
175230 opacity : 0.7 ;
176- color : $ gray ;
231+ color : var ( -- gray) ;
177232 font-weight : normal ;
178233 }
179234 :hover > a .anchor ::before {
@@ -194,18 +249,18 @@ ul {
194249}
195250
196251.posts {
197- background-color : $ gray ;
198- color : white ;
252+ background-color : var ( -- gray) ;
253+ color : var ( --body-foreground-color ) ;
199254 .highlight {
200- background-color : $ red ;
255+ background-color : var ( -- red) ;
201256 }
202257 a {
203- color : white ;
258+ color : var ( --body-foreground-color ) ;
204259 text-decoration : underline ;
205260 }
206261 .button.button-secondary {
207- background-color : $ red ;
208- border : 1px solid $ red ;
262+ background-color : var ( -- red) ;
263+ border : 1px solid var ( -- red) ;
209264 color : white ;
210265 text-decoration : none ;
211266 display : block ;
@@ -230,7 +285,7 @@ table.post-list a:hover {
230285}
231286
232287.publish-date-author {
233- color : $gray ;
288+ color : var ( --publish-date-author ) ;
234289 margin : -60px 0 60px 0 ;
235290}
236291
@@ -245,11 +300,11 @@ footer {
245300 }
246301
247302 a {
248- color : $ yellow ;
303+ color : var ( -- yellow) ;
249304 text-decoration : none ;
250305
251306 & :hover {
252- color : $ yellow ;
307+ color : var ( -- yellow) ;
253308 text-decoration : underline ;
254309 }
255310 }
@@ -324,3 +379,48 @@ header h1 {
324379 }
325380}
326381
382+ // Theme switch popup
383+ // theme selector visible only if JavaScript is available
384+
385+ .theme-icon {
386+ display : none ;
387+ line-height : 2em ;
388+ border : 2px solid var (--theme-icon );
389+ border-radius : 5px ;
390+ padding : 0px 5px ;
391+ color : var (--theme-choice-color );
392+ & :hover {
393+ color : var (--theme-choice-color );
394+ }
395+ }
396+
397+ #theme-choice {
398+ display : none ;
399+ border : 2px solid var (--theme-popup-border );
400+ border-radius : 5px ;
401+ color : var (--theme-choice-color );
402+ background : var (--theme-popup-bg );
403+ position : absolute ;
404+ list-style : none ;
405+ font-weight : 400 ;
406+ padding : 0px ;
407+ // counterbalance vendored skeleton.css
408+ margin : 0.2em -0.5em ;
409+ }
410+
411+ .theme-item {
412+ padding : 0px 5px ;
413+ }
414+
415+ #theme-choice .showThemeDropdown {
416+ display : block ;
417+ z-index : 1 ;
418+ }
419+
420+ li .theme-item :hover {
421+ background-color : var (--theme-hover );
422+ }
423+
424+ .rust-logo {
425+ filter : var (--rust-logo-filter );
426+ }
0 commit comments