tangled
alpha
login
or
join now
dunkirk.sh
/
zera
5
fork
atom
the home site for me: also iteration 3 or 4 of my site
5
fork
atom
overview
issues
pulls
pipelines
feat: add biome and format
Kieran Klukas
1 year ago
7a3bd3ae
39ec4407
+785
-732
9 changed files
expand all
collapse all
unified
split
biome.json
sass
css
mods.css
reset.css
suCSS.css
syntax-theme.css
static
js
script.js
site.webmanifest
tools
package.json
tsconfig.json
+31
biome.json
···
1
1
+
{
2
2
+
"$schema": "https://biomejs.dev/schemas/1.9.2/schema.json",
3
3
+
"vcs": {
4
4
+
"enabled": false,
5
5
+
"clientKind": "git",
6
6
+
"useIgnoreFile": false
7
7
+
},
8
8
+
"files": {
9
9
+
"ignoreUnknown": false,
10
10
+
"ignore": []
11
11
+
},
12
12
+
"formatter": {
13
13
+
"formatWithErrors": true,
14
14
+
"enabled": true,
15
15
+
"indentStyle": "tab"
16
16
+
},
17
17
+
"organizeImports": {
18
18
+
"enabled": true
19
19
+
},
20
20
+
"linter": {
21
21
+
"enabled": true,
22
22
+
"rules": {
23
23
+
"recommended": true
24
24
+
}
25
25
+
},
26
26
+
"javascript": {
27
27
+
"formatter": {
28
28
+
"quoteStyle": "double"
29
29
+
}
30
30
+
}
31
31
+
}
+79
-79
sass/css/mods.css
···
1
1
#nav-bar {
2
2
-
padding: 0.625rem 0 0 0;
3
3
-
display: flex;
4
4
-
flex-direction: row;
5
5
-
gap: 0.25rem;
6
6
-
flex-wrap: wrap;
7
7
-
justify-content: flex-end;
8
8
-
align-items: center;
9
9
-
align-content: flex-end;
2
2
+
padding: 0.625rem 0 0 0;
3
3
+
display: flex;
4
4
+
flex-direction: row;
5
5
+
gap: 0.25rem;
6
6
+
flex-wrap: wrap;
7
7
+
justify-content: flex-end;
8
8
+
align-items: center;
9
9
+
align-content: flex-end;
10
10
}
11
11
12
12
#footer-container {
13
13
-
display: flex;
14
14
-
flex-wrap: wrap;
15
15
-
justify-content: center;
16
16
-
align-items: center;
17
17
-
text-align: center;
18
18
-
padding-bottom: 0.5rem;
13
13
+
display: flex;
14
14
+
flex-wrap: wrap;
15
15
+
justify-content: center;
16
16
+
align-items: center;
17
17
+
text-align: center;
18
18
+
padding-bottom: 0.5rem;
19
19
}
20
20
21
21
.accent-data {
22
22
-
color: var(--accent-light);
22
22
+
color: var(--accent-light);
23
23
}
24
24
25
25
.theme-transition {
26
26
-
transition: background-color 0.3s ease;
26
26
+
transition: background-color 0.3s ease;
27
27
}
28
28
29
29
.tags-data {
30
30
-
display: flex;
31
31
-
flex-direction: row;
32
32
-
flex-wrap: wrap;
33
33
-
justify-content: flex-end;
34
34
-
align-items: flex-start;
35
35
-
align-content: flex-end;
36
36
-
gap: 0.25rem;
30
30
+
display: flex;
31
31
+
flex-direction: row;
32
32
+
flex-wrap: wrap;
33
33
+
justify-content: flex-end;
34
34
+
align-items: flex-start;
35
35
+
align-content: flex-end;
36
36
+
gap: 0.25rem;
37
37
}
38
38
39
39
.title-list li {
40
40
-
margin-bottom: 0.375rem;
40
40
+
margin-bottom: 0.375rem;
41
41
}
42
42
43
43
/* icons settings */
44
44
.icons {
45
45
-
width: 1.3rem;
46
46
-
height: 1.3rem;
47
47
-
aspect-ratio: 1/1;
48
48
-
display: inline-block;
49
49
-
vertical-align: middle;
50
50
-
color: var(--text);
51
51
-
fill: var(--text);
52
52
-
background-color: transparent;
53
53
-
cursor: pointer;
45
45
+
width: 1.3rem;
46
46
+
height: 1.3rem;
47
47
+
aspect-ratio: 1 / 1;
48
48
+
display: inline-block;
49
49
+
vertical-align: middle;
50
50
+
color: var(--text);
51
51
+
fill: var(--text);
52
52
+
background-color: transparent;
53
53
+
cursor: pointer;
54
54
}
55
55
56
56
.icons:hover {
57
57
-
background-color: transparent;
58
58
-
color: var(--accent);
57
57
+
background-color: transparent;
58
58
+
color: var(--accent);
59
59
}
60
60
61
61
/* footnotes */
62
62
.footnote-definition {
63
63
-
margin: 0 0 0 0.125rem;
63
63
+
margin: 0 0 0 0.125rem;
64
64
}
65
65
66
66
.footnote-definition-label {
67
67
-
color: var(--accent);
67
67
+
color: var(--accent);
68
68
}
69
69
70
70
.footnote-definition p {
71
71
-
display: inline;
72
72
-
margin: 0.625rem 0 0 0.625rem;
71
71
+
display: inline;
72
72
+
margin: 0.625rem 0 0 0.625rem;
73
73
}
74
74
75
75
/* general classes */
76
76
.no-style {
77
77
-
padding: 0;
78
78
-
margin: 0;
79
79
-
border: none;
80
80
-
border-radius: 0;
77
77
+
padding: 0;
78
78
+
margin: 0;
79
79
+
border: none;
80
80
+
border-radius: 0;
81
81
}
82
82
83
83
.no-style:hover {
84
84
-
background-color: transparent;
85
85
-
color: var(--accent);
84
84
+
background-color: transparent;
85
85
+
color: var(--accent);
86
86
}
87
87
88
88
.center {
89
89
-
text-align: center;
89
89
+
text-align: center;
90
90
}
91
91
92
92
.center img {
93
93
-
display: block;
94
94
-
margin: 1rem auto;
93
93
+
display: block;
94
94
+
margin: 1rem auto;
95
95
}
96
96
97
97
.center figcaption {
98
98
-
text-align: center;
98
98
+
text-align: center;
99
99
}
100
100
101
101
.float-right {
102
102
-
float: right;
102
102
+
float: right;
103
103
}
104
104
105
105
.float-left {
106
106
-
float: left;
106
106
+
float: left;
107
107
}
108
108
109
109
div code,
110
110
li code,
111
111
p code {
112
112
-
color: var(--text);
113
113
-
background-color: var(--bg-light);
112
112
+
color: var(--text);
113
113
+
background-color: var(--bg-light);
114
114
}
115
115
116
116
pre {
117
117
-
border-top-left-radius: 0;
117
117
+
border-top-left-radius: 0;
118
118
}
119
119
120
120
blockquote {
121
121
-
padding-top: 0.2rem;
122
122
-
padding-bottom: 0.2rem;
121
121
+
padding-top: 0.2rem;
122
122
+
padding-bottom: 0.2rem;
123
123
}
124
124
125
125
blockquote:has(+ pre) {
126
126
-
display: inline-block;
127
127
-
border: none;
128
128
-
font-family: "code" !important;
129
129
-
font-size: 0.8rem;
130
130
-
font-weight: 600;
131
131
-
margin: 0;
132
132
-
margin-bottom: 0.2rem;
133
133
-
margin-block: 0 0;
134
134
-
border-top-left-radius: 5px;
135
135
-
border-top-right-radius: 5px;
136
136
-
padding-left: 0.75rem;
137
137
-
padding-right: 0.75rem;
138
138
-
padding-top: 0.25rem;
139
139
-
padding-bottom: 0.25rem;
140
140
-
position: relative;
141
141
-
background-color: var(--accent);
126
126
+
display: inline-block;
127
127
+
border: none;
128
128
+
font-family: "code" !important;
129
129
+
font-size: 0.8rem;
130
130
+
font-weight: 600;
131
131
+
margin: 0;
132
132
+
margin-bottom: 0.2rem;
133
133
+
margin-block: 0 0;
134
134
+
border-top-left-radius: 5px;
135
135
+
border-top-right-radius: 5px;
136
136
+
padding-left: 0.75rem;
137
137
+
padding-right: 0.75rem;
138
138
+
padding-top: 0.25rem;
139
139
+
padding-bottom: 0.25rem;
140
140
+
position: relative;
141
141
+
background-color: var(--accent);
142
142
}
143
143
144
144
blockquote:has(+ pre) p {
145
145
-
margin: 0;
146
146
-
color: var(--accent-text);
145
145
+
margin: 0;
146
146
+
color: var(--accent-text);
147
147
}
148
148
149
149
.yt-embed {
150
150
-
width: 100%;
151
151
-
display: flex;
152
152
-
justify-content: center;
150
150
+
width: 100%;
151
151
+
display: flex;
152
152
+
justify-content: center;
153
153
}
154
154
155
155
.yt-embed iframe {
156
156
-
width: 100%;
157
157
-
aspect-ratio: 16 / 9;
156
156
+
width: 100%;
157
157
+
aspect-ratio: 16 / 9;
158
158
}
+24
-24
sass/css/reset.css
···
2
2
*,
3
3
*::before,
4
4
*::after {
5
5
-
box-sizing: border-box;
6
6
-
-webkit-box-sizing: border-box;
5
5
+
box-sizing: border-box;
6
6
+
-webkit-box-sizing: border-box;
7
7
}
8
8
9
9
* {
10
10
-
margin: 0;
10
10
+
margin: 0;
11
11
}
12
12
13
13
/* Prevent font size inflation */
14
14
html {
15
15
-
-moz-text-size-adjust: none;
16
16
-
-webkit-text-size-adjust: none;
17
17
-
text-size-adjust: none;
15
15
+
-moz-text-size-adjust: none;
16
16
+
-webkit-text-size-adjust: none;
17
17
+
text-size-adjust: none;
18
18
}
19
19
20
20
/* Remove default margin in favour of better control in authored CSS */
···
28
28
blockquote,
29
29
dl,
30
30
dd {
31
31
-
margin-block-end: 0;
31
31
+
margin-block-end: 0;
32
32
}
33
33
34
34
/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
···
36
36
ol,
37
37
ul[role="list"],
38
38
ol[role="list"] {
39
39
-
list-style: none;
39
39
+
list-style: none;
40
40
}
41
41
42
42
/* Set core body defaults */
43
43
body {
44
44
-
min-height: 100vh;
45
45
-
line-height: 1.5;
46
46
-
-webkit-font-smoothing: antialiased;
44
44
+
min-height: 100vh;
45
45
+
line-height: 1.5;
46
46
+
-webkit-font-smoothing: antialiased;
47
47
}
48
48
49
49
/* Set shorter line heights on headings and interactive elements */
···
54
54
button,
55
55
input,
56
56
label {
57
57
-
line-height: 1.1;
57
57
+
line-height: 1.1;
58
58
}
59
59
60
60
/* Balance text wrapping on headings */
···
62
62
h2,
63
63
h3,
64
64
h4 {
65
65
-
text-wrap: balance;
65
65
+
text-wrap: balance;
66
66
}
67
67
68
68
p,
···
72
72
h4,
73
73
h5,
74
74
h6 {
75
75
-
overflow-wrap: break-word;
75
75
+
overflow-wrap: break-word;
76
76
}
77
77
78
78
/* A elements that don't have a class get default styles */
79
79
a:not([class]) {
80
80
-
text-decoration-skip-ink: auto;
80
80
+
text-decoration-skip-ink: auto;
81
81
}
82
82
83
83
/* Make images easier to work with */
···
86
86
video,
87
87
canvas,
88
88
svg {
89
89
-
max-width: 100%;
90
90
-
display: block;
89
89
+
max-width: 100%;
90
90
+
display: block;
91
91
}
92
92
93
93
/* Inherit fonts for inputs and buttons */
···
96
96
textarea,
97
97
select,
98
98
progress {
99
99
-
appearance: none;
100
100
-
-webkit-appearance: none;
101
101
-
-moz-appearance: none;
102
102
-
font: inherit;
99
99
+
appearance: none;
100
100
+
-webkit-appearance: none;
101
101
+
-moz-appearance: none;
102
102
+
font: inherit;
103
103
}
104
104
105
105
/* Make sure textareas without a rows attribute are not tiny */
106
106
textarea:not([rows]) {
107
107
-
min-height: 10em;
107
107
+
min-height: 10em;
108
108
}
109
109
110
110
/* Anything that has been anchored to should have extra scroll margin */
111
111
:target {
112
112
-
scroll-margin-block: 5ex;
112
112
+
scroll-margin-block: 5ex;
113
113
}
114
114
115
115
#root,
116
116
#__next {
117
117
-
isolation: isolate;
117
117
+
isolation: isolate;
118
118
}
+320
-321
sass/css/suCSS.css
···
1
1
:root,
2
2
::backdrop {
3
3
-
/* set sans-serif & mono fonts */
4
4
-
--sans-font: -apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
5
5
-
"Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
6
6
-
"Helvetica Neue", sans-serif;
7
7
-
--mono-font: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
8
8
-
--standard-border-radius: 5px;
3
3
+
/* set sans-serif & mono fonts */
4
4
+
--sans-font: -apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
5
5
+
"Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
6
6
+
"Helvetica Neue", sans-serif;
7
7
+
--mono-font: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
8
8
+
--standard-border-radius: 5px;
9
9
10
10
-
/* default colors */
11
11
-
--bg: #eeeeee;
12
12
-
--bg-light: #cbcdcd;
13
13
-
--text: #41474e;
14
14
-
--text-light: #686764;
15
15
-
--accent: #58310ac5;
16
16
-
--accent-light: #e08f67;
17
17
-
--accent-text: var(--bg);
18
18
-
--border: #646868;
19
19
-
--link: #573819c5;
10
10
+
/* default colors */
11
11
+
--bg: #eeeeee;
12
12
+
--bg-light: #cbcdcd;
13
13
+
--text: #41474e;
14
14
+
--text-light: #686764;
15
15
+
--accent: #58310ac5;
16
16
+
--accent-light: #e08f67;
17
17
+
--accent-text: var(--bg);
18
18
+
--border: #646868;
19
19
+
--link: #573819c5;
20
20
}
21
21
22
22
/* theme media queries */
23
23
@media (prefers-color-scheme: dark) {
24
24
-
:root,
25
25
-
::backdrop {
26
26
-
color-scheme: dark;
27
27
-
--bg: #222529;
28
28
-
--bg-light: #464949;
29
29
-
--text: #d6d6d6;
30
30
-
--text-light: #c5c0b7;
31
31
-
--accent: #78b6ad;
32
32
-
--accent-light: #87c9e5;
33
33
-
--accent-text: var(--bg);
34
34
-
--border: #dbd5bc;
35
35
-
--link: #e2c8a2;
36
36
-
}
37
37
-
img,
38
38
-
video {
39
39
-
opacity: 0.8;
40
40
-
}
24
24
+
:root,
25
25
+
::backdrop {
26
26
+
color-scheme: dark;
27
27
+
--bg: #222529;
28
28
+
--bg-light: #464949;
29
29
+
--text: #d6d6d6;
30
30
+
--text-light: #c5c0b7;
31
31
+
--accent: #78b6ad;
32
32
+
--accent-light: #87c9e5;
33
33
+
--accent-text: var(--bg);
34
34
+
--border: #dbd5bc;
35
35
+
--link: #e2c8a2;
36
36
+
}
37
37
+
img,
38
38
+
video {
39
39
+
opacity: 0.8;
40
40
+
}
41
41
}
42
42
43
43
@media (prefers-color-scheme: light) {
44
44
-
:root,
45
45
-
::backdrop {
46
46
-
color-scheme: light;
47
47
-
--bg: #eeeeee;
48
48
-
--bg-light: #cbcdcd;
49
49
-
--text: #41474e;
50
50
-
--text-light: #686764;
51
51
-
--accent: #58310ac5;
52
52
-
--accent-light: #e08f67;
53
53
-
--accent-text: var(--bg);
54
54
-
--border: #646868;
55
55
-
--link: #573819c5;
56
56
-
}
44
44
+
:root,
45
45
+
::backdrop {
46
46
+
color-scheme: light;
47
47
+
--bg: #eeeeee;
48
48
+
--bg-light: #cbcdcd;
49
49
+
--text: #41474e;
50
50
+
--text-light: #686764;
51
51
+
--accent: #58310ac5;
52
52
+
--accent-light: #e08f67;
53
53
+
--accent-text: var(--bg);
54
54
+
--border: #646868;
55
55
+
--link: #573819c5;
56
56
+
}
57
57
}
58
58
59
59
[data-theme="light"] {
60
60
-
/* default (light) theme */
61
61
-
color-scheme: light;
62
62
-
--bg: #eeeeee;
63
63
-
--bg-light: #cbcdcd;
64
64
-
--text: #41474e;
65
65
-
--text-light: #686764;
66
66
-
--accent: #58310ac5;
67
67
-
--accent-light: #56412bc5;
68
68
-
--accent-text: var(--bg);
69
69
-
--border: #646868;
70
70
-
--link: #573819c5;
60
60
+
/* default (light) theme */
61
61
+
color-scheme: light;
62
62
+
--bg: #eeeeee;
63
63
+
--bg-light: #cbcdcd;
64
64
+
--text: #41474e;
65
65
+
--text-light: #686764;
66
66
+
--accent: #58310ac5;
67
67
+
--accent-light: #56412bc5;
68
68
+
--accent-text: var(--bg);
69
69
+
--border: #646868;
70
70
+
--link: #573819c5;
71
71
}
72
72
73
73
[data-theme="dark"] {
74
74
-
color-scheme: dark;
75
75
-
--bg: #222529;
76
76
-
--bg-light: #464949;
77
77
-
--text: #d6d6d6;
78
78
-
--text-light: #c5c0b7;
79
79
-
--accent: #78b4b6e3;
80
80
-
--accent-light: #c5edefe6;
81
81
-
--accent-text: var(--bg);
82
82
-
--border: #dbd5bc;
83
83
-
--link: #e2c8a2;
74
74
+
color-scheme: dark;
75
75
+
--bg: #222529;
76
76
+
--bg-light: #464949;
77
77
+
--text: #d6d6d6;
78
78
+
--text-light: #c5c0b7;
79
79
+
--accent: #78b4b6e3;
80
80
+
--accent-light: #c5edefe6;
81
81
+
--accent-text: var(--bg);
82
82
+
--border: #dbd5bc;
83
83
+
--link: #e2c8a2;
84
84
}
85
85
86
86
::selection,
87
87
::-moz-selection {
88
88
-
color: var(--bg);
89
89
-
background: var(--accent);
88
88
+
color: var(--bg);
89
89
+
background: var(--accent);
90
90
}
91
91
92
92
/* chromium scrollbars */
93
93
::-webkit-scrollbar {
94
94
-
width: 8px;
95
95
-
height: 8px;
96
96
-
overflow: visible;
94
94
+
width: 8px;
95
95
+
height: 8px;
96
96
+
overflow: visible;
97
97
}
98
98
::-webkit-scrollbar-thumb {
99
99
-
background: var(--accent);
100
100
-
width: 12px;
99
99
+
background: var(--accent);
100
100
+
width: 12px;
101
101
}
102
102
::-webkit-scrollbar-track {
103
103
-
background: var(--bg-light);
103
103
+
background: var(--bg-light);
104
104
}
105
105
106
106
/* firefox scrollbars */
107
107
* {
108
108
-
scrollbar-color: var(--accent) var(--bg-light);
109
109
-
scrollbar-width: thin;
110
110
-
scrollbar-height: thin;
108
108
+
scrollbar-color: var(--accent) var(--bg-light);
109
109
+
scrollbar-width: thin;
110
110
+
scrollbar-height: thin;
111
111
}
112
112
113
113
html {
114
114
-
color-scheme: light dark;
115
115
-
font-family: var(--mono-font);
116
116
-
scroll-behavior: smooth;
114
114
+
color-scheme: light dark;
115
115
+
font-family: var(--mono-font);
116
116
+
scroll-behavior: smooth;
117
117
}
118
118
119
119
body {
120
120
-
min-height: 100svh;
121
121
-
color: var(--text);
122
122
-
background-color: var(--bg);
123
123
-
font-size: 1rem;
124
124
-
display: grid;
125
125
-
grid-template-columns: 1fr min(45rem, 90%) 1fr;
126
126
-
grid-template-rows: auto 1fr auto;
127
127
-
grid-row-gap: 0.625rem;
120
120
+
min-height: 100svh;
121
121
+
color: var(--text);
122
122
+
background-color: var(--bg);
123
123
+
font-size: 1rem;
124
124
+
display: grid;
125
125
+
grid-template-columns: 1fr min(45rem, 90%) 1fr;
126
126
+
grid-template-rows: auto 1fr auto;
127
127
+
grid-row-gap: 0.625rem;
128
128
}
129
129
body > * {
130
130
-
grid-column: 2;
130
130
+
grid-column: 2;
131
131
}
132
132
133
133
body > footer {
134
134
-
color: var(--text-light);
135
135
-
font-size: 0.875;
134
134
+
color: var(--text-light);
135
135
+
font-size: 0.875;
136
136
}
137
137
138
138
/* Format headers */
139
139
h1 {
140
140
-
font-size: 2rem;
140
140
+
font-size: 2rem;
141
141
}
142
142
h2 {
143
143
-
font-size: 1.75rem;
143
143
+
font-size: 1.75rem;
144
144
}
145
145
h3 {
146
146
-
font-size: 1.5rem;
146
146
+
font-size: 1.5rem;
147
147
}
148
148
h4 {
149
149
-
font-size: 1.25rem;
149
149
+
font-size: 1.25rem;
150
150
}
151
151
h5 {
152
152
-
font-size: 1rem;
152
152
+
font-size: 1rem;
153
153
}
154
154
h6 {
155
155
-
font-size: 0.75rem;
155
155
+
font-size: 0.75rem;
156
156
}
157
157
158
158
h1,
···
161
161
h4,
162
162
h5,
163
163
h6 {
164
164
-
margin: 0.5em 0 0.5em 0;
164
164
+
margin: 0.5em 0 0.5em 0;
165
165
}
166
166
167
167
/* Fix line height when title wraps */
168
168
h1,
169
169
h2,
170
170
h3 {
171
171
-
line-height: 1.1;
171
171
+
line-height: 1.1;
172
172
}
173
173
174
174
h1::before,
···
177
177
h4::before,
178
178
h5::before,
179
179
h6::before {
180
180
-
color: var(--accent);
181
181
-
content: "# ";
180
180
+
color: var(--accent);
181
181
+
content: "# ";
182
182
}
183
183
184
184
@media only screen and (max-width: 720px) {
185
185
-
h1 {
186
186
-
font-size: 1.5rem;
187
187
-
}
188
188
-
h2 {
189
189
-
font-size: 1.25rem;
190
190
-
}
191
191
-
h3 {
192
192
-
font-size: 1rem;
193
193
-
}
194
194
-
h4 {
195
195
-
font-size: 0.75rem;
196
196
-
}
197
197
-
h5 {
198
198
-
font-size: 0.5rem;
199
199
-
}
200
200
-
h6 {
201
201
-
font-size: 0.25rem;
202
202
-
}
185
185
+
h1 {
186
186
+
font-size: 1.5rem;
187
187
+
}
188
188
+
h2 {
189
189
+
font-size: 1.25rem;
190
190
+
}
191
191
+
h3 {
192
192
+
font-size: 1rem;
193
193
+
}
194
194
+
h4 {
195
195
+
font-size: 0.75rem;
196
196
+
}
197
197
+
h5 {
198
198
+
font-size: 0.5rem;
199
199
+
}
200
200
+
h6 {
201
201
+
font-size: 0.25rem;
202
202
+
}
203
203
}
204
204
205
205
p {
206
206
-
margin: 1rem 0;
206
206
+
margin: 1rem 0;
207
207
}
208
208
209
209
/* format links */
210
210
a,
211
211
a:visited {
212
212
-
text-decoration: none;
213
213
-
font-weight: bold;
214
214
-
font-style: italic;
215
215
-
border-radius: 0.125rem;
216
216
-
color: var(--link);
212
212
+
text-decoration: none;
213
213
+
font-weight: bold;
214
214
+
font-style: italic;
215
215
+
border-radius: 0.125rem;
216
216
+
color: var(--link);
217
217
}
218
218
219
219
a:hover {
220
220
-
background-color: var(--link);
221
221
-
color: var(--bg);
220
220
+
background-color: var(--link);
221
221
+
color: var(--bg);
222
222
}
223
223
224
224
/* format lists */
225
225
ul {
226
226
-
list-style: none;
227
227
-
margin-top: 0.25rem;
228
228
-
margin-bottom: 0.25rem;
226
226
+
list-style: none;
227
227
+
margin-top: 0.25rem;
228
228
+
margin-bottom: 0.25rem;
229
229
}
230
230
231
231
ol {
232
232
-
list-style-type: decimal;
233
233
-
margin-top: 0.25rem;
234
234
-
margin-bottom: 0.25rem;
232
232
+
list-style-type: decimal;
233
233
+
margin-top: 0.25rem;
234
234
+
margin-bottom: 0.25rem;
235
235
}
236
236
237
237
li {
238
238
-
margin-bottom: 0.125rem;
238
238
+
margin-bottom: 0.125rem;
239
239
}
240
240
241
241
ul li::marker {
242
242
-
content: "» ";
243
243
-
color: var(--accent);
242
242
+
content: "» ";
243
243
+
color: var(--accent);
244
244
}
245
245
246
246
ul li:hover::marker {
247
247
-
content: "# ";
248
248
-
font-weight: 700;
249
249
-
color: var(--link);
247
247
+
content: "# ";
248
248
+
font-weight: 700;
249
249
+
color: var(--link);
250
250
}
251
251
252
252
ol li::marker {
253
253
-
color: var(--accent);
253
253
+
color: var(--accent);
254
254
}
255
255
256
256
ol li:hover::marker {
257
257
-
font-weight: 700;
258
258
-
color: var(--link);
257
257
+
font-weight: 700;
258
258
+
color: var(--link);
259
259
}
260
260
261
261
/* Use flexbox to allow items to wrap, as needed */
262
262
header > nav ul,
263
263
header > nav ol {
264
264
-
display: flex;
265
265
-
flex-direction: row;
266
266
-
flex-wrap: wrap;
267
267
-
align-content: space-around;
268
268
-
justify-content: right;
269
269
-
list-style-type: none;
270
270
-
margin: 0.5rem 0 0 0;
271
271
-
padding: 0;
272
272
-
gap: 1rem;
264
264
+
display: flex;
265
265
+
flex-direction: row;
266
266
+
flex-wrap: wrap;
267
267
+
align-content: space-around;
268
268
+
justify-content: right;
269
269
+
list-style-type: none;
270
270
+
margin: 0.5rem 0 0 0;
271
271
+
padding: 0;
272
272
+
gap: 1rem;
273
273
}
274
274
275
275
/* List items are inline elements, make them behave more like blocks */
276
276
header > nav ul li,
277
277
header > nav ol li {
278
278
-
display: inline-block;
278
278
+
display: inline-block;
279
279
}
280
280
281
281
/* Consolidate box styling */
282
282
aside,
283
283
details,
284
284
progress {
285
285
-
background-color: var(--bg-light);
286
286
-
border-radius: var(--standard-border-radius);
285
285
+
background-color: var(--bg-light);
286
286
+
border-radius: var(--standard-border-radius);
287
287
}
288
288
289
289
aside {
290
290
-
font-size: 1rem;
291
291
-
width: 35%;
292
292
-
padding: 0 10px;
293
293
-
margin-inline-start: 10px;
294
294
-
float: right;
290
290
+
font-size: 1rem;
291
291
+
width: 35%;
292
292
+
padding: 0 10px;
293
293
+
margin-inline-start: 10px;
294
294
+
float: right;
295
295
}
296
296
*[dir="rtl"] aside {
297
297
-
float: left;
297
297
+
float: left;
298
298
}
299
299
300
300
/* make aside full-width on mobile */
301
301
@media only screen and (max-width: 720px) {
302
302
-
aside {
303
303
-
width: 100%;
304
304
-
float: none;
305
305
-
margin-inline-start: 0;
306
306
-
}
302
302
+
aside {
303
303
+
width: 100%;
304
304
+
float: none;
305
305
+
margin-inline-start: 0;
306
306
+
}
307
307
}
308
308
309
309
details {
310
310
-
padding: 0.5rem;
310
310
+
padding: 0.5rem;
311
311
}
312
312
313
313
summary {
314
314
-
cursor: pointer;
315
315
-
font-weight: bold;
316
316
-
word-break: break-all;
314
314
+
cursor: pointer;
315
315
+
font-weight: bold;
316
316
+
word-break: break-all;
317
317
}
318
318
319
319
details[open] > summary + * {
320
320
-
margin-top: 0;
320
320
+
margin-top: 0;
321
321
}
322
322
323
323
details[open] > summary {
324
324
-
margin-bottom: 0.5rem;
324
324
+
margin-bottom: 0.5rem;
325
325
}
326
326
327
327
details[open] > :last-child {
328
328
-
margin-bottom: 0;
328
328
+
margin-bottom: 0;
329
329
}
330
330
331
331
/* Format tables */
332
332
table {
333
333
-
border-collapse: collapse;
334
334
-
margin: 1.5rem 0;
335
335
-
display: block;
336
336
-
overflow-x: auto;
337
337
-
white-space: nowrap;
333
333
+
border-collapse: collapse;
334
334
+
margin: 1.5rem 0;
335
335
+
display: block;
336
336
+
overflow-x: auto;
337
337
+
white-space: nowrap;
338
338
}
339
339
340
340
td,
341
341
th {
342
342
-
border: 1px solid var(--border);
343
343
-
text-align: start;
344
344
-
padding: 0.5rem;
342
342
+
border: 1px solid var(--border);
343
343
+
text-align: start;
344
344
+
padding: 0.5rem;
345
345
}
346
346
347
347
th {
348
348
-
background-color: var(--bg-light);
349
349
-
font-weight: bold;
348
348
+
background-color: var(--bg-light);
349
349
+
font-weight: bold;
350
350
}
351
351
352
352
tr:nth-child(even) {
353
353
-
background-color: var(--bg-light);
353
353
+
background-color: var(--bg-light);
354
354
}
355
355
356
356
table caption {
357
357
-
text-align: left;
358
358
-
font-weight: bold;
359
359
-
margin: 0 0 0.4rem 1rem;
357
357
+
text-align: left;
358
358
+
font-weight: bold;
359
359
+
margin: 0 0 0.4rem 1rem;
360
360
}
361
361
362
362
/* format forms */
363
363
fieldset {
364
364
-
border: 1px dashed var(--accent);
365
365
-
border-radius: var(--standard-border-radius);
364
364
+
border: 1px dashed var(--accent);
365
365
+
border-radius: var(--standard-border-radius);
366
366
}
367
367
368
368
fieldset > legend {
369
369
-
color: var(--accent);
369
369
+
color: var(--accent);
370
370
}
371
371
372
372
textarea,
···
374
374
input,
375
375
button,
376
376
.button {
377
377
-
font-size: inherit;
378
378
-
font-family: inherit;
379
379
-
padding: 0.25rem;
380
380
-
border-radius: var(--standard-border-radius);
381
381
-
box-shadow: none;
382
382
-
max-width: 100%;
383
383
-
display: inline-block;
377
377
+
font-size: inherit;
378
378
+
font-family: inherit;
379
379
+
padding: 0.25rem;
380
380
+
border-radius: var(--standard-border-radius);
381
381
+
box-shadow: none;
382
382
+
max-width: 100%;
383
383
+
display: inline-block;
384
384
}
385
385
386
386
textarea,
387
387
select,
388
388
input {
389
389
-
color: var(--text);
390
390
-
background-color: var(--bg);
391
391
-
border: 1px dashed var(--border);
389
389
+
color: var(--text);
390
390
+
background-color: var(--bg);
391
391
+
border: 1px dashed var(--border);
392
392
}
393
393
394
394
label {
395
395
-
display: block;
395
395
+
display: block;
396
396
}
397
397
398
398
fieldset label {
399
399
-
margin: 0 0 0.3rem 0;
399
399
+
margin: 0 0 0.3rem 0;
400
400
}
401
401
402
402
textarea {
403
403
-
max-width: 43.5rem;
404
404
-
resize: both;
403
403
+
max-width: 43.5rem;
404
404
+
resize: both;
405
405
}
406
406
407
407
textarea:not([cols]) {
408
408
-
width: 100%;
408
408
+
width: 100%;
409
409
}
410
410
411
411
@media only screen and (max-width: 720px) {
412
412
-
textarea,
413
413
-
select,
414
414
-
input {
415
415
-
width: 100%;
416
416
-
}
412
412
+
textarea,
413
413
+
select,
414
414
+
input {
415
415
+
width: 100%;
416
416
+
}
417
417
}
418
418
419
419
/* format buttons */
···
424
424
input[type="reset"],
425
425
input[type="button"],
426
426
label[type="button"] {
427
427
-
border: 1px solid var(--accent);
428
428
-
background-color: var(--accent);
429
429
-
color: var(--accent-text);
430
430
-
padding: 0.5rem 0.9rem;
431
431
-
text-decoration: none;
432
432
-
line-height: normal;
427
427
+
border: 1px solid var(--accent);
428
428
+
background-color: var(--accent);
429
429
+
color: var(--accent-text);
430
430
+
padding: 0.5rem 0.9rem;
431
431
+
text-decoration: none;
432
432
+
line-height: normal;
433
433
}
434
434
435
435
.button[aria-disabled="true"],
···
437
437
textarea:disabled,
438
438
select:disabled,
439
439
button[disabled] {
440
440
-
cursor: not-allowed;
441
441
-
background-color: var(--bg-light);
442
442
-
border-color: var(--bg-light);
443
443
-
color: var(--text-light);
440
440
+
cursor: not-allowed;
441
441
+
background-color: var(--bg-light);
442
442
+
border-color: var(--bg-light);
443
443
+
color: var(--text-light);
444
444
}
445
445
446
446
input[type="range"] {
447
447
-
padding: 0;
448
448
-
color: var(--accent);
447
447
+
padding: 0;
448
448
+
color: var(--accent);
449
449
}
450
450
451
451
abbr[title] {
452
452
-
cursor: help;
453
453
-
text-decoration-line: underline;
454
454
-
text-decoration-style: dotted;
452
452
+
cursor: help;
453
453
+
text-decoration-line: underline;
454
454
+
text-decoration-style: dotted;
455
455
}
456
456
457
457
button:enabled:hover,
···
460
460
input[type="reset"]:enabled:hover,
461
461
input[type="button"]:enabled:hover,
462
462
label[type="button"]:hover {
463
463
-
background-color: var(--accent-light);
464
464
-
border-color: var(--accent-light);
465
465
-
cursor: pointer;
463
463
+
background-color: var(--accent-light);
464
464
+
border-color: var(--accent-light);
465
465
+
cursor: pointer;
466
466
}
467
467
468
468
.button:focus-visible,
469
469
button:focus-visible:where(:enabled),
470
470
input:enabled:focus-visible:where(
471
471
-
[type="submit"],
472
472
-
[type="reset"],
473
473
-
[type="button"]
474
474
-
) {
475
475
-
outline: 2px solid var(--accent);
476
476
-
outline-offset: 1px;
471
471
+
[type="submit"],
472
472
+
[type="reset"],
473
473
+
[type="button"]
474
474
+
) {
475
475
+
outline: 2px solid var(--accent);
476
476
+
outline-offset: 1px;
477
477
}
478
478
479
479
/* checkbox and radio button style */
480
480
input[type="checkbox"],
481
481
input[type="radio"] {
482
482
-
vertical-align: middle;
483
483
-
position: relative;
484
484
-
width: min-content;
485
485
-
width: 14px;
486
486
-
height: 14px;
482
482
+
vertical-align: middle;
483
483
+
position: relative;
484
484
+
width: min-content;
485
485
+
width: 14px;
486
486
+
height: 14px;
487
487
}
488
488
489
489
input[type="checkbox"] + label,
490
490
input[type="radio"] + label {
491
491
-
display: inline-block;
491
491
+
display: inline-block;
492
492
}
493
493
494
494
input[type="radio"] {
495
495
-
border-radius: 100%;
495
495
+
border-radius: 100%;
496
496
}
497
497
498
498
input[type="checkbox"]:checked,
499
499
input[type="radio"]:checked {
500
500
-
background-color: var(--accent);
500
500
+
background-color: var(--accent);
501
501
}
502
502
503
503
@media only screen and (max-width: 720px) {
504
504
-
textarea,
505
505
-
select,
506
506
-
input {
507
507
-
width: 100%;
508
508
-
}
504
504
+
textarea,
505
505
+
select,
506
506
+
input {
507
507
+
width: 100%;
508
508
+
}
509
509
}
510
510
511
511
input[type="color"] {
512
512
-
height: 2.5rem;
513
513
-
padding: 0.2rem;
512
512
+
height: 2.5rem;
513
513
+
padding: 0.2rem;
514
514
}
515
515
516
516
input[type="file"] {
517
517
-
border: 0;
517
517
+
border: 0;
518
518
}
519
519
520
520
/* misc body elements */
521
521
hr {
522
522
-
border: 1px dashed var(--accent);
523
523
-
margin: 0.5rem 0 0.5rem 0;
522
522
+
border: 1px dashed var(--accent);
523
523
+
margin: 0.5rem 0 0.5rem 0;
524
524
}
525
525
526
526
mark {
527
527
-
padding: 0 0.25em 0 0.25em;
528
528
-
border-radius: var(--standard-border-radius);
529
529
-
background-color: var(--accent);
530
530
-
color: var(--bg);
527
527
+
padding: 0 0.25em 0 0.25em;
528
528
+
border-radius: var(--standard-border-radius);
529
529
+
background-color: var(--accent);
530
530
+
color: var(--bg);
531
531
}
532
532
533
533
mark a {
534
534
-
color: var(--link);
534
534
+
color: var(--link);
535
535
}
536
536
537
537
img,
538
538
video,
539
539
iframe[src^="https://www.youtube-nocookie.com"],
540
540
-
iframe[src^="https://www.youtube.com"]
541
541
-
{
542
542
-
max-width: 90%;
543
543
-
height: auto;
544
544
-
padding: 0.125rem;
545
545
-
border: dashed 2px var(--accent);
546
546
-
border-radius: 15px;
540
540
+
iframe[src^="https://www.youtube.com"] {
541
541
+
max-width: 90%;
542
542
+
height: auto;
543
543
+
padding: 0.125rem;
544
544
+
border: dashed 2px var(--accent);
545
545
+
border-radius: 15px;
547
546
}
548
547
549
548
figure {
550
550
-
margin: 0;
551
551
-
display: block;
552
552
-
overflow-x: auto;
549
549
+
margin: 0;
550
550
+
display: block;
551
551
+
overflow-x: auto;
553
552
}
554
553
555
554
figcaption {
556
556
-
text-align: left;
557
557
-
font-size: 0.875rem;
558
558
-
color: var(--text-light);
559
559
-
margin: 0 0 1rem 1rem;
555
555
+
text-align: left;
556
556
+
font-size: 0.875rem;
557
557
+
color: var(--text-light);
558
558
+
margin: 0 0 1rem 1rem;
560
559
}
561
560
562
561
blockquote {
563
563
-
margin: 0 0 0 1.25rem;
564
564
-
padding: 0.5rem 0 0 0.5rem;
565
565
-
border-inline-start: 0.375rem solid var(--accent);
566
566
-
color: var(--text-light);
567
567
-
font-style: italic;
562
562
+
margin: 0 0 0 1.25rem;
563
563
+
padding: 0.5rem 0 0 0.5rem;
564
564
+
border-inline-start: 0.375rem solid var(--accent);
565
565
+
color: var(--text-light);
566
566
+
font-style: italic;
568
567
}
569
568
570
569
p:has(cite) {
571
571
-
text-align: right;
572
572
-
font-size: 0.875rem;
573
573
-
color: var(--text-light);
574
574
-
font-weight: 600;
570
570
+
text-align: right;
571
571
+
font-size: 0.875rem;
572
572
+
color: var(--text-light);
573
573
+
font-weight: 600;
575
574
}
576
575
577
576
cite::before {
578
578
-
content: "— ";
577
577
+
content: "— ";
579
578
}
580
579
581
580
dt {
582
582
-
color: var(--text-light);
581
581
+
color: var(--text-light);
583
582
}
584
583
585
584
code,
···
587
586
pre span,
588
587
kbd,
589
588
samp {
590
590
-
font-family: var(--mono-font);
589
589
+
font-family: var(--mono-font);
591
590
}
592
591
593
592
pre {
594
594
-
border: 1px solid var(--accent);
595
595
-
max-height: 30rem;
596
596
-
padding: 0.625rem;
597
597
-
overflow-x: auto;
598
598
-
font-style: monospace;
593
593
+
border: 1px solid var(--accent);
594
594
+
max-height: 30rem;
595
595
+
padding: 0.625rem;
596
596
+
overflow-x: auto;
597
597
+
font-style: monospace;
599
598
}
600
599
601
600
p code,
602
601
li code,
603
602
div code {
604
604
-
padding: 0 0.125rem 0 0.125rem;
605
605
-
border-radius: 3px;
606
606
-
color: var(--bg);
607
607
-
background-color: var(--text);
608
608
-
transition: background-color 0.3s ease;
603
603
+
padding: 0 0.125rem 0 0.125rem;
604
604
+
border-radius: 3px;
605
605
+
color: var(--bg);
606
606
+
background-color: var(--text);
607
607
+
transition: background-color 0.3s ease;
609
608
}
610
609
611
610
pre code {
612
612
-
padding: 0;
613
613
-
border-radius: 0;
614
614
-
color: inherit;
615
615
-
background-color: inherit;
611
611
+
padding: 0;
612
612
+
border-radius: 0;
613
613
+
color: inherit;
614
614
+
background-color: inherit;
616
615
}
617
616
618
617
iframe {
619
619
-
max-width: 90%;
618
618
+
max-width: 90%;
620
619
}
621
620
622
621
/* progress bars */
623
622
progress {
624
624
-
width: 100%;
623
623
+
width: 100%;
625
624
}
626
625
627
626
progress:indeterminate {
628
628
-
background-color: var(--bg-light);
627
627
+
background-color: var(--bg-light);
629
628
}
630
629
631
630
progress::-webkit-progress-bar {
632
632
-
border-radius: var(--standard-border-radius);
633
633
-
background-color: var(--bg-light);
631
631
+
border-radius: var(--standard-border-radius);
632
632
+
background-color: var(--bg-light);
634
633
}
635
634
636
635
progress::-webkit-progress-value {
637
637
-
border-radius: var(--standard-border-radius);
638
638
-
background-color: var(--accent);
636
636
+
border-radius: var(--standard-border-radius);
637
637
+
background-color: var(--accent);
639
638
}
640
639
641
640
progress::-moz-progress-bar {
642
642
-
border-radius: var(--standard-border-radius);
643
643
-
background-color: var(--accent);
644
644
-
transition-property: width;
645
645
-
transition-duration: 0.3s;
641
641
+
border-radius: var(--standard-border-radius);
642
642
+
background-color: var(--accent);
643
643
+
transition-property: width;
644
644
+
transition-duration: 0.3s;
646
645
}
647
646
648
647
progress:indeterminate::-moz-progress-bar {
649
649
-
background-color: var(--bg-light);
648
648
+
background-color: var(--bg-light);
650
649
}
651
650
652
651
dialog {
653
653
-
max-width: 40rem;
654
654
-
margin: auto;
652
652
+
max-width: 40rem;
653
653
+
margin: auto;
655
654
}
656
655
657
656
dialog::backdrop {
658
658
-
background-color: var(--bg);
659
659
-
opacity: 0.8;
657
657
+
background-color: var(--bg);
658
658
+
opacity: 0.8;
660
659
}
661
660
662
661
@media only screen and (max-width: 720px) {
663
663
-
dialog {
664
664
-
max-width: 100%;
665
665
-
margin: auto 1em;
666
666
-
}
662
662
+
dialog {
663
663
+
max-width: 100%;
664
664
+
margin: auto 1em;
665
665
+
}
667
666
}
668
667
669
668
/* superscript & subscript */
670
669
/* prevent scripts from affecting line-height. */
671
670
sup,
672
671
sub {
673
673
-
vertical-align: baseline;
674
674
-
position: relative;
672
672
+
vertical-align: baseline;
673
673
+
position: relative;
675
674
}
676
675
677
676
sup {
678
678
-
top: -0.4em;
677
677
+
top: -0.4em;
679
678
}
680
679
681
680
sub {
682
682
-
top: 0.3em;
681
681
+
top: 0.3em;
683
682
}
+247
-247
sass/css/syntax-theme.css
···
3
3
*/
4
4
5
5
@supports not (-moz-appearance: none) {
6
6
-
.z-code {
7
7
-
transition: background-color 0.3s ease;
8
8
-
}
6
6
+
.z-code {
7
7
+
transition: background-color 0.3s ease;
8
8
+
}
9
9
}
10
10
11
11
html[data-theme="light"] .z-code {
12
12
-
color: #4c4f69;
13
13
-
background-color: #f2efea;
12
12
+
color: #4c4f69;
13
13
+
background-color: #f2efea;
14
14
}
15
15
16
16
html[data-theme="light"] .z-comment {
17
17
-
color: #9ca0b0;
18
18
-
font-style: italic;
17
17
+
color: #9ca0b0;
18
18
+
font-style: italic;
19
19
}
20
20
html[data-theme="light"] .z-string {
21
21
-
color: #40a02b;
21
21
+
color: #40a02b;
22
22
}
23
23
html[data-theme="light"] .z-string.z-regexp {
24
24
-
color: #fe640b;
24
24
+
color: #fe640b;
25
25
}
26
26
html[data-theme="light"] .z-constant.z-numeric {
27
27
-
color: #fe640b;
27
27
+
color: #fe640b;
28
28
}
29
29
html[data-theme="light"] .z-constant.z-language.z-boolean {
30
30
-
color: #fe640b;
31
31
-
font-weight: bold;
32
32
-
font-style: italic;
30
30
+
color: #fe640b;
31
31
+
font-weight: bold;
32
32
+
font-style: italic;
33
33
}
34
34
html[data-theme="light"] .z-constant.z-language {
35
35
-
color: #7287fd;
36
36
-
font-style: italic;
35
35
+
color: #7287fd;
36
36
+
font-style: italic;
37
37
}
38
38
html[data-theme="light"] .z-support.z-function.z-builtin {
39
39
-
color: #fe640b;
40
40
-
font-style: italic;
39
39
+
color: #fe640b;
40
40
+
font-style: italic;
41
41
}
42
42
html[data-theme="light"] .z-variable.z-other.z-constant {
43
43
-
color: #fe640b;
43
43
+
color: #fe640b;
44
44
}
45
45
html[data-theme="light"] .z-keyword {
46
46
-
color: #d20f39;
47
47
-
font-style: italic;
46
46
+
color: #d20f39;
47
47
+
font-style: italic;
48
48
}
49
49
html[data-theme="light"] .z-keyword.z-control.z-loop,
50
50
html[data-theme="light"] .z-keyword.z-control.z-conditional,
51
51
html[data-theme="light"] .z-keyword.z-control.z-c\+\+ {
52
52
-
color: #8839ef;
53
53
-
font-weight: bold;
52
52
+
color: #8839ef;
53
53
+
font-weight: bold;
54
54
}
55
55
html[data-theme="light"] .z-keyword.z-control.z-return,
56
56
html[data-theme="light"] .z-keyword.z-control.z-flow.z-return {
57
57
-
color: #ea76cb;
58
58
-
font-weight: bold;
57
57
+
color: #ea76cb;
58
58
+
font-weight: bold;
59
59
}
60
60
html[data-theme="light"] .z-support.z-type.z-exception {
61
61
-
color: #fe640b;
62
62
-
font-style: italic;
61
61
+
color: #fe640b;
62
62
+
font-style: italic;
63
63
}
64
64
html[data-theme="light"] .z-keyword.z-operator,
65
65
html[data-theme="light"] .z-punctuation.z-accessor {
66
66
-
color: #04a5e5;
67
67
-
font-weight: bold;
66
66
+
color: #04a5e5;
67
67
+
font-weight: bold;
68
68
}
69
69
html[data-theme="light"] .z-punctuation.z-separator {
70
70
-
color: #179299;
70
70
+
color: #179299;
71
71
}
72
72
html[data-theme="light"] .z-punctuation.z-terminator {
73
73
-
color: #179299;
73
73
+
color: #179299;
74
74
}
75
75
html[data-theme="light"] .z-punctuation.z-section {
76
76
-
color: #7c7f93;
76
76
+
color: #7c7f93;
77
77
}
78
78
html[data-theme="light"] .z-keyword.z-control.z-import.z-include {
79
79
-
color: #179299;
80
80
-
font-style: italic;
79
79
+
color: #179299;
80
80
+
font-style: italic;
81
81
}
82
82
html[data-theme="light"] .z-storage {
83
83
-
color: #d20f39;
83
83
+
color: #d20f39;
84
84
}
85
85
html[data-theme="light"] .z-storage.z-type {
86
86
-
color: #df8e1d;
87
87
-
font-style: italic;
86
86
+
color: #df8e1d;
87
87
+
font-style: italic;
88
88
}
89
89
html[data-theme="light"] .z-storage.z-modifier {
90
90
-
color: #d20f39;
90
90
+
color: #d20f39;
91
91
}
92
92
html[data-theme="light"] .z-entity.z-name.z-namespace,
93
93
html[data-theme="light"] .z-meta.z-path {
94
94
-
color: #dc8a78;
95
95
-
font-style: italic;
94
94
+
color: #dc8a78;
95
95
+
font-style: italic;
96
96
}
97
97
html[data-theme="light"] .z-storage.z-type.z-class {
98
98
-
color: #dc8a78;
99
99
-
font-style: italic;
98
98
+
color: #dc8a78;
99
99
+
font-style: italic;
100
100
}
101
101
html[data-theme="light"] .z-entity.z-name.z-label {
102
102
-
color: #1e66f5;
102
102
+
color: #1e66f5;
103
103
}
104
104
html[data-theme="light"] .z-keyword.z-declaration.z-class {
105
105
-
color: #d20f39;
106
106
-
font-style: italic;
105
105
+
color: #d20f39;
106
106
+
font-style: italic;
107
107
}
108
108
html[data-theme="light"] .z-entity.z-name.z-class,
109
109
html[data-theme="light"] .z-meta.z-toc-list.z-full-identifier {
110
110
-
color: #04a5e5;
110
110
+
color: #04a5e5;
111
111
}
112
112
html[data-theme="light"] .z-entity.z-other.z-inherited-class {
113
113
-
color: #04a5e5;
114
114
-
font-style: italic;
113
113
+
color: #04a5e5;
114
114
+
font-style: italic;
115
115
}
116
116
html[data-theme="light"] .z-entity.z-name.z-function,
117
117
html[data-theme="light"] .z-variable.z-function {
118
118
-
color: #1e66f5;
119
119
-
font-style: italic;
118
118
+
color: #1e66f5;
119
119
+
font-style: italic;
120
120
}
121
121
html[data-theme="light"] .z-entity.z-name.z-function.z-preprocessor {
122
122
-
color: #d20f39;
122
122
+
color: #d20f39;
123
123
}
124
124
html[data-theme="light"] .z-keyword.z-control.z-import {
125
125
-
color: #d20f39;
125
125
+
color: #d20f39;
126
126
}
127
127
html[data-theme="light"] .z-entity.z-name.z-function.z-constructor,
128
128
html[data-theme="light"] .z-entity.z-name.z-function.z-destructor {
129
129
-
color: #7287fd;
129
129
+
color: #7287fd;
130
130
}
131
131
html[data-theme="light"] .z-variable.z-parameter.z-function {
132
132
-
color: #dc8a78;
133
133
-
font-style: italic;
132
132
+
color: #dc8a78;
133
133
+
font-style: italic;
134
134
}
135
135
html[data-theme="light"] .z-keyword.z-declaration.z-function {
136
136
-
color: #e64553;
137
137
-
font-style: italic;
136
136
+
color: #e64553;
137
137
+
font-style: italic;
138
138
}
139
139
html[data-theme="light"] .z-support.z-function {
140
140
-
color: #04a5e5;
140
140
+
color: #04a5e5;
141
141
}
142
142
html[data-theme="light"] .z-support.z-constant {
143
143
-
color: #1e66f5;
143
143
+
color: #1e66f5;
144
144
}
145
145
html[data-theme="light"] .z-support.z-type,
146
146
html[data-theme="light"] .z-support.z-class {
147
147
-
color: #1e66f5;
148
148
-
font-style: italic;
147
147
+
color: #1e66f5;
148
148
+
font-style: italic;
149
149
}
150
150
html[data-theme="light"] .z-variable.z-function {
151
151
-
color: #1e66f5;
152
152
-
font-style: italic;
151
151
+
color: #1e66f5;
152
152
+
font-style: italic;
153
153
}
154
154
html[data-theme="light"] .z-variable.z-parameter {
155
155
-
color: #dc8a78;
156
156
-
font-style: italic;
155
155
+
color: #dc8a78;
156
156
+
font-style: italic;
157
157
}
158
158
html[data-theme="light"] .z-variable.z-other {
159
159
-
color: #4c4f69;
160
160
-
font-style: italic;
159
159
+
color: #4c4f69;
160
160
+
font-style: italic;
161
161
}
162
162
html[data-theme="light"] .z-variable.z-other.z-member {
163
163
-
color: #dc8a78;
163
163
+
color: #dc8a78;
164
164
}
165
165
html[data-theme="light"] .z-variable.z-language {
166
166
-
color: #179299;
166
166
+
color: #179299;
167
167
}
168
168
html[data-theme="light"] .z-entity.z-name.z-tag {
169
169
-
color: #fe640b;
169
169
+
color: #fe640b;
170
170
}
171
171
html[data-theme="light"] .z-entity.z-other.z-attribute-name {
172
172
-
color: #8839ef;
173
173
-
font-style: italic;
172
172
+
color: #8839ef;
173
173
+
font-style: italic;
174
174
}
175
175
html[data-theme="light"] .z-punctuation.z-definition.z-tag {
176
176
-
color: #e64553;
176
176
+
color: #e64553;
177
177
}
178
178
html[data-theme="light"] .z-markup.z-underline.z-link.z-markdown {
179
179
-
color: #dc8a78;
180
180
-
text-decoration: underline;
181
181
-
font-style: italic;
179
179
+
color: #dc8a78;
180
180
+
text-decoration: underline;
181
181
+
font-style: italic;
182
182
}
183
183
html[data-theme="light"] .z-meta.z-link.z-inline.z-description {
184
184
-
color: #7287fd;
185
185
-
font-weight: bold;
184
184
+
color: #7287fd;
185
185
+
font-weight: bold;
186
186
}
187
187
html[data-theme="light"] .z-comment.z-block.z-markdown,
188
188
html[data-theme="light"] .z-meta.z-code-fence,
189
189
html[data-theme="light"] .z-markup.z-raw.z-code-fence,
190
190
html[data-theme="light"] .z-markup.z-raw.z-inline {
191
191
-
color: #179299;
192
192
-
font-style: italic;
191
191
+
color: #179299;
192
192
+
font-style: italic;
193
193
}
194
194
html[data-theme="light"] .z-punctuation.z-definition.z-heading,
195
195
html[data-theme="light"] .z-entity.z-name.z-section {
196
196
-
color: #1e66f5;
197
197
-
font-weight: bold;
196
196
+
color: #1e66f5;
197
197
+
font-weight: bold;
198
198
}
199
199
html[data-theme="light"] .z-markup.z-italic {
200
200
-
color: #e64553;
201
201
-
font-style: italic;
200
200
+
color: #e64553;
201
201
+
font-style: italic;
202
202
}
203
203
html[data-theme="light"] .z-markup.z-bold {
204
204
-
color: #e64553;
205
205
-
font-weight: bold;
204
204
+
color: #e64553;
205
205
+
font-weight: bold;
206
206
}
207
207
html[data-theme="light"] .z-constant.z-character.z-escape {
208
208
-
color: #ea76cb;
208
208
+
color: #ea76cb;
209
209
}
210
210
html[data-theme="light"]
211
211
-
.z-source.z-shell.z-bash
212
212
-
.z-meta.z-function.z-shell
213
213
-
.z-meta.z-compound.z-shell
214
214
-
.z-meta.z-function-call.z-identifier.z-shell {
215
215
-
color: #ea76cb;
211
211
+
.z-source.z-shell.z-bash
212
212
+
.z-meta.z-function.z-shell
213
213
+
.z-meta.z-compound.z-shell
214
214
+
.z-meta.z-function-call.z-identifier.z-shell {
215
215
+
color: #ea76cb;
216
216
}
217
217
html[data-theme="light"] .z-variable.z-language.z-shell {
218
218
-
color: #d20f39;
219
219
-
font-style: italic;
218
218
+
color: #d20f39;
219
219
+
font-style: italic;
220
220
}
221
221
html[data-theme="light"]
222
222
-
.z-source.z-lua
223
223
-
.z-meta.z-function.z-lua
224
224
-
.z-meta.z-block.z-lua
225
225
-
.z-meta.z-mapping.z-value.z-lua
226
226
-
.z-meta.z-mapping.z-key.z-lua
227
227
-
.z-string.z-unquoted.z-key.z-lua {
228
228
-
color: #7287fd;
229
229
-
font-style: italic;
222
222
+
.z-source.z-lua
223
223
+
.z-meta.z-function.z-lua
224
224
+
.z-meta.z-block.z-lua
225
225
+
.z-meta.z-mapping.z-value.z-lua
226
226
+
.z-meta.z-mapping.z-key.z-lua
227
227
+
.z-string.z-unquoted.z-key.z-lua {
228
228
+
color: #7287fd;
229
229
+
font-style: italic;
230
230
}
231
231
html[data-theme="light"]
232
232
-
.z-source.z-lua
233
233
-
.z-meta.z-function.z-lua
234
234
-
.z-meta.z-block.z-lua
235
235
-
.z-meta.z-mapping.z-key.z-lua
236
236
-
.z-string.z-unquoted.z-key.z-lua {
237
237
-
color: #dd7878;
232
232
+
.z-source.z-lua
233
233
+
.z-meta.z-function.z-lua
234
234
+
.z-meta.z-block.z-lua
235
235
+
.z-meta.z-mapping.z-key.z-lua
236
236
+
.z-string.z-unquoted.z-key.z-lua {
237
237
+
color: #dd7878;
238
238
}
239
239
html[data-theme="light"] .z-entity.z-name.z-constant.z-java {
240
240
-
color: #179299;
240
240
+
color: #179299;
241
241
}
242
242
html[data-theme="light"] .z-support.z-type.z-property-name.z-css {
243
243
-
color: #dd7878;
244
244
-
font-style: italic;
243
243
+
color: #dd7878;
244
244
+
font-style: italic;
245
245
}
246
246
html[data-theme="light"] .z-support.z-constant.z-property-value.z-css {
247
247
-
color: #4c4f69;
247
247
+
color: #4c4f69;
248
248
}
249
249
html[data-theme="light"] .z-constant.z-numeric.z-suffix.z-css,
250
250
html[data-theme="light"] .z-keyword.z-other.z-unit.z-css {
251
251
-
color: #179299;
252
252
-
font-style: italic;
251
251
+
color: #179299;
252
252
+
font-style: italic;
253
253
}
254
254
html[data-theme="light"] .z-variable.z-other.z-custom-property.z-name.z-css,
255
255
html[data-theme="light"] .z-support.z-type.z-custom-property.z-name.z-css,
256
256
html[data-theme="light"] .z-punctuation.z-definition.z-custom-property.z-css {
257
257
-
color: #179299;
257
257
+
color: #179299;
258
258
}
259
259
html[data-theme="light"] .z-entity.z-name.z-tag.z-css {
260
260
-
color: #7287fd;
260
260
+
color: #7287fd;
261
261
}
262
262
html[data-theme="light"] .z-variable.z-other.z-sass {
263
263
-
color: #179299;
263
263
+
color: #179299;
264
264
}
265
265
html[data-theme="light"] .z-invalid {
266
266
-
color: #4c4f69;
267
267
-
background-color: #d20f39;
266
266
+
color: #4c4f69;
267
267
+
background-color: #d20f39;
268
268
}
269
269
html[data-theme="light"] .z-invalid.z-deprecated {
270
270
-
color: #4c4f69;
271
271
-
background-color: #8839ef;
270
270
+
color: #4c4f69;
271
271
+
background-color: #8839ef;
272
272
}
273
273
html[data-theme="light"] .z-meta.z-diff,
274
274
html[data-theme="light"] .z-meta.z-diff.z-header {
275
275
-
color: #9ca0b0;
275
275
+
color: #9ca0b0;
276
276
}
277
277
html[data-theme="light"] .z-markup.z-deleted {
278
278
-
color: #d20f39;
278
278
+
color: #d20f39;
279
279
}
280
280
html[data-theme="light"] .z-markup.z-inserted {
281
281
-
color: #40a02b;
281
281
+
color: #40a02b;
282
282
}
283
283
html[data-theme="light"] .z-markup.z-changed {
284
284
-
color: #df8e1d;
284
284
+
color: #df8e1d;
285
285
}
286
286
html[data-theme="light"] .z-message.z-error {
287
287
-
color: #d20f39;
287
287
+
color: #d20f39;
288
288
}
289
289
290
290
/* dark */
291
291
292
292
html[data-theme="dark"] .z-code {
293
293
-
color: #cad3f5;
294
294
-
background-color: #2a2e35;
293
293
+
color: #cad3f5;
294
294
+
background-color: #2a2e35;
295
295
}
296
296
297
297
html[data-theme="dark"] .z-comment {
298
298
-
color: #6e738d;
299
299
-
font-style: italic;
298
298
+
color: #6e738d;
299
299
+
font-style: italic;
300
300
}
301
301
html[data-theme="dark"] .z-string {
302
302
-
color: #a6da95;
302
302
+
color: #a6da95;
303
303
}
304
304
html[data-theme="dark"] .z-string.z-regexp {
305
305
-
color: #f5a97f;
305
305
+
color: #f5a97f;
306
306
}
307
307
html[data-theme="dark"] .z-constant.z-numeric {
308
308
-
color: #f5a97f;
308
308
+
color: #f5a97f;
309
309
}
310
310
html[data-theme="dark"] .z-constant.z-language.z-boolean {
311
311
-
color: #f5a97f;
312
312
-
font-weight: bold;
313
313
-
font-style: italic;
311
311
+
color: #f5a97f;
312
312
+
font-weight: bold;
313
313
+
font-style: italic;
314
314
}
315
315
html[data-theme="dark"] .z-constant.z-language {
316
316
-
color: #b7bdf8;
317
317
-
font-style: italic;
316
316
+
color: #b7bdf8;
317
317
+
font-style: italic;
318
318
}
319
319
html[data-theme="dark"] .z-support.z-function.z-builtin {
320
320
-
color: #f5a97f;
321
321
-
font-style: italic;
320
320
+
color: #f5a97f;
321
321
+
font-style: italic;
322
322
}
323
323
html[data-theme="dark"] .z-variable.z-other.z-constant {
324
324
-
color: #f5a97f;
324
324
+
color: #f5a97f;
325
325
}
326
326
html[data-theme="dark"] .z-keyword {
327
327
-
color: #ed8796;
328
328
-
font-style: italic;
327
327
+
color: #ed8796;
328
328
+
font-style: italic;
329
329
}
330
330
html[data-theme="dark"] .z-keyword.z-control.z-loop,
331
331
html[data-theme="dark"] .z-keyword.z-control.z-conditional,
332
332
html[data-theme="dark"] .z-keyword.z-control.z-c\+\+ {
333
333
-
color: #c6a0f6;
334
334
-
font-weight: bold;
333
333
+
color: #c6a0f6;
334
334
+
font-weight: bold;
335
335
}
336
336
html[data-theme="dark"] .z-keyword.z-control.z-return,
337
337
html[data-theme="dark"] .z-keyword.z-control.z-flow.z-return {
338
338
-
color: #f5bde6;
339
339
-
font-weight: bold;
338
338
+
color: #f5bde6;
339
339
+
font-weight: bold;
340
340
}
341
341
html[data-theme="dark"] .z-support.z-type.z-exception {
342
342
-
color: #f5a97f;
343
343
-
font-style: italic;
342
342
+
color: #f5a97f;
343
343
+
font-style: italic;
344
344
}
345
345
html[data-theme="dark"] .z-keyword.z-operator,
346
346
html[data-theme="dark"] .z-punctuation.z-accessor {
347
347
-
color: #91d7e3;
348
348
-
font-weight: bold;
347
347
+
color: #91d7e3;
348
348
+
font-weight: bold;
349
349
}
350
350
html[data-theme="dark"] .z-punctuation.z-separator {
351
351
-
color: #8bd5ca;
351
351
+
color: #8bd5ca;
352
352
}
353
353
html[data-theme="dark"] .z-punctuation.z-terminator {
354
354
-
color: #8bd5ca;
354
354
+
color: #8bd5ca;
355
355
}
356
356
html[data-theme="dark"] .z-punctuation.z-section {
357
357
-
color: #939ab7;
357
357
+
color: #939ab7;
358
358
}
359
359
html[data-theme="dark"] .z-keyword.z-control.z-import.z-include {
360
360
-
color: #8bd5ca;
361
361
-
font-style: italic;
360
360
+
color: #8bd5ca;
361
361
+
font-style: italic;
362
362
}
363
363
html[data-theme="dark"] .z-storage {
364
364
-
color: #ed8796;
364
364
+
color: #ed8796;
365
365
}
366
366
html[data-theme="dark"] .z-storage.z-type {
367
367
-
color: #eed49f;
368
368
-
font-style: italic;
367
367
+
color: #eed49f;
368
368
+
font-style: italic;
369
369
}
370
370
html[data-theme="dark"] .z-storage.z-modifier {
371
371
-
color: #ed8796;
371
371
+
color: #ed8796;
372
372
}
373
373
html[data-theme="dark"] .z-entity.z-name.z-namespace,
374
374
html[data-theme="dark"] .z-meta.z-path {
375
375
-
color: #f4dbd6;
376
376
-
font-style: italic;
375
375
+
color: #f4dbd6;
376
376
+
font-style: italic;
377
377
}
378
378
html[data-theme="dark"] .z-storage.z-type.z-class {
379
379
-
color: #f4dbd6;
380
380
-
font-style: italic;
379
379
+
color: #f4dbd6;
380
380
+
font-style: italic;
381
381
}
382
382
html[data-theme="dark"] .z-entity.z-name.z-label {
383
383
-
color: #8aadf4;
383
383
+
color: #8aadf4;
384
384
}
385
385
html[data-theme="dark"] .z-keyword.z-declaration.z-class {
386
386
-
color: #ed8796;
387
387
-
font-style: italic;
386
386
+
color: #ed8796;
387
387
+
font-style: italic;
388
388
}
389
389
html[data-theme="dark"] .z-entity.z-name.z-class,
390
390
html[data-theme="dark"] .z-meta.z-toc-list.z-full-identifier {
391
391
-
color: #91d7e3;
391
391
+
color: #91d7e3;
392
392
}
393
393
html[data-theme="dark"] .z-entity.z-other.z-inherited-class {
394
394
-
color: #91d7e3;
395
395
-
font-style: italic;
394
394
+
color: #91d7e3;
395
395
+
font-style: italic;
396
396
}
397
397
html[data-theme="dark"] .z-entity.z-name.z-function,
398
398
html[data-theme="dark"] .z-variable.z-function {
399
399
-
color: #8aadf4;
400
400
-
font-style: italic;
399
399
+
color: #8aadf4;
400
400
+
font-style: italic;
401
401
}
402
402
html[data-theme="dark"] .z-entity.z-name.z-function.z-preprocessor {
403
403
-
color: #ed8796;
403
403
+
color: #ed8796;
404
404
}
405
405
html[data-theme="dark"] .z-keyword.z-control.z-import {
406
406
-
color: #ed8796;
406
406
+
color: #ed8796;
407
407
}
408
408
html[data-theme="dark"] .z-entity.z-name.z-function.z-constructor,
409
409
html[data-theme="dark"] .z-entity.z-name.z-function.z-destructor {
410
410
-
color: #b7bdf8;
410
410
+
color: #b7bdf8;
411
411
}
412
412
html[data-theme="dark"] .z-variable.z-parameter.z-function {
413
413
-
color: #f4dbd6;
414
414
-
font-style: italic;
413
413
+
color: #f4dbd6;
414
414
+
font-style: italic;
415
415
}
416
416
html[data-theme="dark"] .z-keyword.z-declaration.z-function {
417
417
-
color: #ee99a0;
418
418
-
font-style: italic;
417
417
+
color: #ee99a0;
418
418
+
font-style: italic;
419
419
}
420
420
html[data-theme="dark"] .z-support.z-function {
421
421
-
color: #91d7e3;
421
421
+
color: #91d7e3;
422
422
}
423
423
html[data-theme="dark"] .z-support.z-constant {
424
424
-
color: #8aadf4;
424
424
+
color: #8aadf4;
425
425
}
426
426
html[data-theme="dark"] .z-support.z-type,
427
427
html[data-theme="dark"] .z-support.z-class {
428
428
-
color: #8aadf4;
429
429
-
font-style: italic;
428
428
+
color: #8aadf4;
429
429
+
font-style: italic;
430
430
}
431
431
html[data-theme="dark"] .z-variable.z-function {
432
432
-
color: #8aadf4;
433
433
-
font-style: italic;
432
432
+
color: #8aadf4;
433
433
+
font-style: italic;
434
434
}
435
435
html[data-theme="dark"] .z-variable.z-parameter {
436
436
-
color: #f4dbd6;
437
437
-
font-style: italic;
436
436
+
color: #f4dbd6;
437
437
+
font-style: italic;
438
438
}
439
439
html[data-theme="dark"] .z-variable.z-other {
440
440
-
color: #cad3f5;
441
441
-
font-style: italic;
440
440
+
color: #cad3f5;
441
441
+
font-style: italic;
442
442
}
443
443
html[data-theme="dark"] .z-variable.z-other.z-member {
444
444
-
color: #f4dbd6;
444
444
+
color: #f4dbd6;
445
445
}
446
446
html[data-theme="dark"] .z-variable.z-language {
447
447
-
color: #8bd5ca;
447
447
+
color: #8bd5ca;
448
448
}
449
449
html[data-theme="dark"] .z-entity.z-name.z-tag {
450
450
-
color: #f5a97f;
450
450
+
color: #f5a97f;
451
451
}
452
452
html[data-theme="dark"] .z-entity.z-other.z-attribute-name {
453
453
-
color: #c6a0f6;
454
454
-
font-style: italic;
453
453
+
color: #c6a0f6;
454
454
+
font-style: italic;
455
455
}
456
456
html[data-theme="dark"] .z-punctuation.z-definition.z-tag {
457
457
-
color: #ee99a0;
457
457
+
color: #ee99a0;
458
458
}
459
459
html[data-theme="dark"] .z-markup.z-underline.z-link.z-markdown {
460
460
-
color: #f4dbd6;
461
461
-
text-decoration: underline;
462
462
-
font-style: italic;
460
460
+
color: #f4dbd6;
461
461
+
text-decoration: underline;
462
462
+
font-style: italic;
463
463
}
464
464
html[data-theme="dark"] .z-meta.z-link.z-inline.z-description {
465
465
-
color: #b7bdf8;
466
466
-
font-weight: bold;
465
465
+
color: #b7bdf8;
466
466
+
font-weight: bold;
467
467
}
468
468
html[data-theme="dark"] .z-comment.z-block.z-markdown,
469
469
html[data-theme="dark"] .z-meta.z-code-fence,
470
470
html[data-theme="dark"] .z-markup.z-raw.z-code-fence,
471
471
html[data-theme="dark"] .z-markup.z-raw.z-inline {
472
472
-
color: #8bd5ca;
473
473
-
font-style: italic;
472
472
+
color: #8bd5ca;
473
473
+
font-style: italic;
474
474
}
475
475
html[data-theme="dark"] .z-punctuation.z-definition.z-heading,
476
476
html[data-theme="dark"] .z-entity.z-name.z-section {
477
477
-
color: #8aadf4;
478
478
-
font-weight: bold;
477
477
+
color: #8aadf4;
478
478
+
font-weight: bold;
479
479
}
480
480
html[data-theme="dark"] .z-markup.z-italic {
481
481
-
color: #ee99a0;
482
482
-
font-style: italic;
481
481
+
color: #ee99a0;
482
482
+
font-style: italic;
483
483
}
484
484
html[data-theme="dark"] .z-markup.z-bold {
485
485
-
color: #ee99a0;
486
486
-
font-weight: bold;
485
485
+
color: #ee99a0;
486
486
+
font-weight: bold;
487
487
}
488
488
html[data-theme="dark"] .z-constant.z-character.z-escape {
489
489
-
color: #f5bde6;
489
489
+
color: #f5bde6;
490
490
}
491
491
html[data-theme="dark"]
492
492
-
.z-source.z-shell.z-bash
493
493
-
.z-meta.z-function.z-shell
494
494
-
.z-meta.z-compound.z-shell
495
495
-
.z-meta.z-function-call.z-identifier.z-shell {
496
496
-
color: #f5bde6;
492
492
+
.z-source.z-shell.z-bash
493
493
+
.z-meta.z-function.z-shell
494
494
+
.z-meta.z-compound.z-shell
495
495
+
.z-meta.z-function-call.z-identifier.z-shell {
496
496
+
color: #f5bde6;
497
497
}
498
498
html[data-theme="dark"] .z-variable.z-language.z-shell {
499
499
-
color: #ed8796;
500
500
-
font-style: italic;
499
499
+
color: #ed8796;
500
500
+
font-style: italic;
501
501
}
502
502
html[data-theme="dark"]
503
503
-
.z-source.z-lua
504
504
-
.z-meta.z-function.z-lua
505
505
-
.z-meta.z-block.z-lua
506
506
-
.z-meta.z-mapping.z-value.z-lua
507
507
-
.z-meta.z-mapping.z-key.z-lua
508
508
-
.z-string.z-unquoted.z-key.z-lua {
509
509
-
color: #b7bdf8;
510
510
-
font-style: italic;
503
503
+
.z-source.z-lua
504
504
+
.z-meta.z-function.z-lua
505
505
+
.z-meta.z-block.z-lua
506
506
+
.z-meta.z-mapping.z-value.z-lua
507
507
+
.z-meta.z-mapping.z-key.z-lua
508
508
+
.z-string.z-unquoted.z-key.z-lua {
509
509
+
color: #b7bdf8;
510
510
+
font-style: italic;
511
511
}
512
512
html[data-theme="dark"]
513
513
-
.z-source.z-lua
514
514
-
.z-meta.z-function.z-lua
515
515
-
.z-meta.z-block.z-lua
516
516
-
.z-meta.z-mapping.z-key.z-lua
517
517
-
.z-string.z-unquoted.z-key.z-lua {
518
518
-
color: #f0c6c6;
513
513
+
.z-source.z-lua
514
514
+
.z-meta.z-function.z-lua
515
515
+
.z-meta.z-block.z-lua
516
516
+
.z-meta.z-mapping.z-key.z-lua
517
517
+
.z-string.z-unquoted.z-key.z-lua {
518
518
+
color: #f0c6c6;
519
519
}
520
520
html[data-theme="dark"] .z-entity.z-name.z-constant.z-java {
521
521
-
color: #8bd5ca;
521
521
+
color: #8bd5ca;
522
522
}
523
523
html[data-theme="dark"] .z-support.z-type.z-property-name.z-css {
524
524
-
color: #f0c6c6;
525
525
-
font-style: italic;
524
524
+
color: #f0c6c6;
525
525
+
font-style: italic;
526
526
}
527
527
html[data-theme="dark"] .z-support.z-constant.z-property-value.z-css {
528
528
-
color: #cad3f5;
528
528
+
color: #cad3f5;
529
529
}
530
530
html[data-theme="dark"] .z-constant.z-numeric.z-suffix.z-css,
531
531
html[data-theme="dark"] .z-keyword.z-other.z-unit.z-css {
532
532
-
color: #8bd5ca;
533
533
-
font-style: italic;
532
532
+
color: #8bd5ca;
533
533
+
font-style: italic;
534
534
}
535
535
html[data-theme="dark"] .z-variable.z-other.z-custom-property.z-name.z-css,
536
536
html[data-theme="dark"] .z-support.z-type.z-custom-property.z-name.z-css,
537
537
html[data-theme="dark"] .z-punctuation.z-definition.z-custom-property.z-css {
538
538
-
color: #8bd5ca;
538
538
+
color: #8bd5ca;
539
539
}
540
540
html[data-theme="dark"] .z-entity.z-name.z-tag.z-css {
541
541
-
color: #b7bdf8;
541
541
+
color: #b7bdf8;
542
542
}
543
543
html[data-theme="dark"] .z-variable.z-other.z-sass {
544
544
-
color: #8bd5ca;
544
544
+
color: #8bd5ca;
545
545
}
546
546
html[data-theme="dark"] .z-invalid {
547
547
-
color: #cad3f5;
548
548
-
background-color: #ed8796;
547
547
+
color: #cad3f5;
548
548
+
background-color: #ed8796;
549
549
}
550
550
html[data-theme="dark"] .z-invalid.z-deprecated {
551
551
-
color: #cad3f5;
552
552
-
background-color: #c6a0f6;
551
551
+
color: #cad3f5;
552
552
+
background-color: #c6a0f6;
553
553
}
554
554
html[data-theme="dark"] .z-meta.z-diff,
555
555
html[data-theme="dark"] .z-meta.z-diff.z-header {
556
556
-
color: #6e738d;
556
556
+
color: #6e738d;
557
557
}
558
558
html[data-theme="dark"] .z-markup.z-deleted {
559
559
-
color: #ed8796;
559
559
+
color: #ed8796;
560
560
}
561
561
html[data-theme="dark"] .z-markup.z-inserted {
562
562
-
color: #a6da95;
562
562
+
color: #a6da95;
563
563
}
564
564
html[data-theme="dark"] .z-markup.z-changed {
565
565
-
color: #eed49f;
565
565
+
color: #eed49f;
566
566
}
567
567
html[data-theme="dark"] .z-message.z-error {
568
568
-
color: #ed8796;
568
568
+
color: #ed8796;
569
569
}
+30
-25
static/js/script.js
···
1
1
-
const toggleButton = document.getElementById('theme-toggle');
2
2
-
const themeIcon = document.getElementById('theme-icon');
3
3
-
const themeSound = document.getElementById('theme-sound');
1
1
+
const toggleButton = document.getElementById("theme-toggle");
2
2
+
const themeIcon = document.getElementById("theme-icon");
3
3
+
const themeSound = document.getElementById("theme-sound");
4
4
5
5
// Function to update the theme icon based on the current theme
6
6
const updateThemeIcon = (isDarkMode) => {
7
7
-
const themeMode = isDarkMode ? 'darkMode' : 'lightMode';
8
8
-
const iconPath = themeIcon.querySelector('use').getAttribute('href').replace(/#.*$/, `#${themeMode}`);
9
9
-
themeIcon.querySelector('use').setAttribute('href', iconPath);
7
7
+
const themeMode = isDarkMode ? "darkMode" : "lightMode";
8
8
+
const iconPath = themeIcon
9
9
+
.querySelector("use")
10
10
+
.getAttribute("href")
11
11
+
.replace(/#.*$/, `#${themeMode}`);
12
12
+
themeIcon.querySelector("use").setAttribute("href", iconPath);
10
13
};
11
14
12
15
// Function to update the theme based on the current mode
13
16
const updateTheme = (isDarkMode) => {
14
14
-
const theme = isDarkMode ? 'dark' : 'light';
15
15
-
document.documentElement.setAttribute('data-theme', theme);
16
16
-
updateThemeIcon(isDarkMode);
17
17
+
const theme = isDarkMode ? "dark" : "light";
18
18
+
document.documentElement.setAttribute("data-theme", theme);
19
19
+
updateThemeIcon(isDarkMode);
17
20
};
18
21
19
22
// Function to toggle the theme
20
23
const toggleTheme = () => {
21
21
-
const isDarkMode = toggleButton.checked;
22
22
-
updateTheme(isDarkMode);
23
23
-
themeSound.play();
24
24
-
localStorage.setItem('theme', isDarkMode ? 'dark' : 'light');
24
24
+
const isDarkMode = toggleButton.checked;
25
25
+
updateTheme(isDarkMode);
26
26
+
themeSound.play();
27
27
+
localStorage.setItem("theme", isDarkMode ? "dark" : "light");
25
28
26
26
-
// Add transition class to body for smooth transition
27
27
-
document.body.classList.add('theme-transition');
28
28
-
setTimeout(() => {
29
29
-
document.body.classList.remove('theme-transition');
30
30
-
}, 300);
29
29
+
// Add transition class to body for smooth transition
30
30
+
document.body.classList.add("theme-transition");
31
31
+
setTimeout(() => {
32
32
+
document.body.classList.remove("theme-transition");
33
33
+
}, 300);
31
34
};
32
35
33
36
// Event listener for theme toggle
34
34
-
toggleButton.addEventListener('change', toggleTheme);
37
37
+
toggleButton.addEventListener("change", toggleTheme);
35
38
36
39
// Function to initialize the theme based on the stored preference
37
40
const initializeTheme = () => {
38
38
-
const storedTheme = localStorage.getItem('theme');
39
39
-
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
40
40
-
const isDarkMode = storedTheme === 'dark' || (!storedTheme && prefersDark);
41
41
-
toggleButton.checked = isDarkMode;
42
42
-
updateTheme(isDarkMode);
41
41
+
const storedTheme = localStorage.getItem("theme");
42
42
+
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
43
43
+
const isDarkMode = storedTheme === "dark" || (!storedTheme && prefersDark);
44
44
+
toggleButton.checked = isDarkMode;
45
45
+
updateTheme(isDarkMode);
43
46
};
44
47
45
48
// Initialize the theme
46
49
initializeTheme();
47
50
48
51
// Listen for changes in system preference
49
49
-
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', initializeTheme);
52
52
+
window
53
53
+
.matchMedia("(prefers-color-scheme: dark)")
54
54
+
.addEventListener("change", initializeTheme);
+19
-1
static/site.webmanifest
···
1
1
-
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
1
1
+
{
2
2
+
"name": "",
3
3
+
"short_name": "",
4
4
+
"icons": [
5
5
+
{
6
6
+
"src": "/android-chrome-192x192.png",
7
7
+
"sizes": "192x192",
8
8
+
"type": "image/png"
9
9
+
},
10
10
+
{
11
11
+
"src": "/android-chrome-512x512.png",
12
12
+
"sizes": "512x512",
13
13
+
"type": "image/png"
14
14
+
}
15
15
+
],
16
16
+
"theme_color": "#ffffff",
17
17
+
"background_color": "#ffffff",
18
18
+
"display": "standalone"
19
19
+
}
+13
-13
tools/package.json
···
1
1
{
2
2
-
"name": "zera",
3
3
-
"module": "index.ts",
4
4
-
"type": "module",
5
5
-
"scripts": {
6
6
-
"gen": "bun run tools/genOG.ts"
7
7
-
},
8
8
-
"devDependencies": {
9
9
-
"@types/bun": "latest",
10
10
-
"puppeteer": "^23.6.0"
11
11
-
},
12
12
-
"peerDependencies": {
13
13
-
"typescript": "^5.0.0"
14
14
-
}
2
2
+
"name": "zera",
3
3
+
"module": "index.ts",
4
4
+
"type": "module",
5
5
+
"scripts": {
6
6
+
"gen": "bun run tools/genOG.ts"
7
7
+
},
8
8
+
"devDependencies": {
9
9
+
"@types/bun": "latest",
10
10
+
"puppeteer": "^23.6.0"
11
11
+
},
12
12
+
"peerDependencies": {
13
13
+
"typescript": "^5.0.0"
14
14
+
}
15
15
}
+22
-22
tsconfig.json
···
1
1
{
2
2
-
"compilerOptions": {
3
3
-
// Enable latest features
4
4
-
"lib": ["ESNext", "DOM"],
5
5
-
"target": "ESNext",
6
6
-
"module": "ESNext",
7
7
-
"moduleDetection": "force",
8
8
-
"jsx": "react-jsx",
9
9
-
"allowJs": true,
2
2
+
"compilerOptions": {
3
3
+
// Enable latest features
4
4
+
"lib": ["ESNext", "DOM"],
5
5
+
"target": "ESNext",
6
6
+
"module": "ESNext",
7
7
+
"moduleDetection": "force",
8
8
+
"jsx": "react-jsx",
9
9
+
"allowJs": true,
10
10
11
11
-
// Bundler mode
12
12
-
"moduleResolution": "bundler",
13
13
-
"allowImportingTsExtensions": true,
14
14
-
"verbatimModuleSyntax": true,
15
15
-
"noEmit": true,
11
11
+
// Bundler mode
12
12
+
"moduleResolution": "bundler",
13
13
+
"allowImportingTsExtensions": true,
14
14
+
"verbatimModuleSyntax": true,
15
15
+
"noEmit": true,
16
16
17
17
-
// Best practices
18
18
-
"strict": true,
19
19
-
"skipLibCheck": true,
20
20
-
"noFallthroughCasesInSwitch": true,
17
17
+
// Best practices
18
18
+
"strict": true,
19
19
+
"skipLibCheck": true,
20
20
+
"noFallthroughCasesInSwitch": true,
21
21
22
22
-
// Some stricter flags (disabled by default)
23
23
-
"noUnusedLocals": false,
24
24
-
"noUnusedParameters": false,
25
25
-
"noPropertyAccessFromIndexSignature": false
26
26
-
}
22
22
+
// Some stricter flags (disabled by default)
23
23
+
"noUnusedLocals": false,
24
24
+
"noUnusedParameters": false,
25
25
+
"noPropertyAccessFromIndexSignature": false
26
26
+
}
27
27
}