3
3
$body-font : ' Fira Sans' , Helvetica , Arial , sans-serif ;
4
4
$header-font : ' Alfa Slab One' , serif ;
5
5
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
+ }
11
63
12
64
html {
13
- font-size : 62.5%
65
+ font-size : 62.5% ;
14
66
}
15
67
16
68
@media screen and (min-width : 30em ) {
21
73
22
74
body {
23
75
font-family : $body-font ;
24
- background-color : white ;
76
+ background-color : var (--body-background-color );
77
+ color : var (--body-color );
25
78
26
79
/* Ensure the footer is always at the bottom of the screen */
27
80
min-height : 100vh ;
35
88
blockquote {
36
89
font-style : italic ;
37
90
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 );
40
93
border-radius : 5px ;
41
94
margin : 0 ;
42
95
margin-bottom : 2rem ;
@@ -80,6 +133,7 @@ section {
80
133
margin : 0 ;
81
134
padding : 0 ;
82
135
letter-spacing : 1px ;
136
+ color : var (--section-header-h2-color );
83
137
}
84
138
}
85
139
}
@@ -110,7 +164,8 @@ ul.nav, ul.nav li {
110
164
}
111
165
112
166
.nav a {
113
- color : $gray ;
167
+ color : var (--gray );
168
+ color : var (--nav-links-a );
114
169
}
115
170
116
171
div .brand {
@@ -123,7 +178,7 @@ div.brand {
123
178
margin-top : $v-top ;
124
179
125
180
& a {
126
- color : black ;
181
+ color : var ( --div-brand-a-color ) ;
127
182
text-decoration : none ;
128
183
}
129
184
@@ -139,30 +194,30 @@ div.brand {
139
194
}
140
195
141
196
.white {
142
- color : black ;
197
+ color : var ( --white-elem-color ) ;
143
198
.highlight {
144
- background-color : $ yellow ;
199
+ background-color : var ( -- yellow) ;
145
200
}
146
201
a {
147
- color : $gray ;
202
+ color : var ( --white-elem-a ) ;
148
203
text-decoration : underline ;
149
204
}
150
205
.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 ) ;
154
209
text-decoration : none ;
155
210
display : block ;
156
211
overflow : hidden ;
157
212
text-overflow : ellipsis ;
158
213
& :hover , & :focus {
159
- border-color : $ gray ;
214
+ border-color : var ( -- gray) ;
160
215
}
161
216
}
162
217
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 );
166
221
}
167
222
168
223
a .anchor ::before {
@@ -173,7 +228,7 @@ div.brand {
173
228
margin-left : -1em ;
174
229
text-decoration : none ;
175
230
opacity : 0.7 ;
176
- color : $ gray ;
231
+ color : var ( -- gray) ;
177
232
font-weight : normal ;
178
233
}
179
234
:hover > a .anchor ::before {
@@ -194,18 +249,18 @@ ul {
194
249
}
195
250
196
251
.posts {
197
- background-color : $ gray ;
198
- color : white ;
252
+ background-color : var ( -- gray) ;
253
+ color : var ( --body-foreground-color ) ;
199
254
.highlight {
200
- background-color : $ red ;
255
+ background-color : var ( -- red) ;
201
256
}
202
257
a {
203
- color : white ;
258
+ color : var ( --body-foreground-color ) ;
204
259
text-decoration : underline ;
205
260
}
206
261
.button.button-secondary {
207
- background-color : $ red ;
208
- border : 1px solid $ red ;
262
+ background-color : var ( -- red) ;
263
+ border : 1px solid var ( -- red) ;
209
264
color : white ;
210
265
text-decoration : none ;
211
266
display : block ;
@@ -230,7 +285,7 @@ table.post-list a:hover {
230
285
}
231
286
232
287
.publish-date-author {
233
- color : $gray ;
288
+ color : var ( --publish-date-author ) ;
234
289
margin : -60px 0 60px 0 ;
235
290
}
236
291
@@ -245,11 +300,11 @@ footer {
245
300
}
246
301
247
302
a {
248
- color : $ yellow ;
303
+ color : var ( -- yellow) ;
249
304
text-decoration : none ;
250
305
251
306
& :hover {
252
- color : $ yellow ;
307
+ color : var ( -- yellow) ;
253
308
text-decoration : underline ;
254
309
}
255
310
}
@@ -324,3 +379,48 @@ header h1 {
324
379
}
325
380
}
326
381
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