Spaces:
Sleeping
Sleeping
Upload 51 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- assets/css/component/a11y.css +355 -0
- assets/css/component/background.css +98 -0
- assets/css/component/breadcrumb.css +116 -0
- assets/css/component/card.css +167 -0
- assets/css/component/carousel.css +299 -0
- assets/css/component/column.css +69 -0
- assets/css/component/fediverse.css +88 -0
- assets/css/component/hero.css +92 -0
- assets/css/component/keyframe.css +85 -0
- assets/css/component/link.css +81 -0
- assets/css/component/logotype.css +105 -0
- assets/css/component/marginpar.css +51 -0
- assets/css/component/menu.css +560 -0
- assets/css/component/search.css +196 -0
- assets/css/component/share.css +150 -0
- assets/css/component/skipper.css +44 -0
- assets/css/custom.css +28 -0
- assets/css/layout/_default/baseof.css +318 -0
- assets/css/layout/_default/home.css +141 -0
- assets/css/layout/_default/list.css +145 -0
- assets/css/layout/_default/single.css +344 -0
- assets/css/media/print.css +204 -0
- assets/css/optimize.css +191 -0
- assets/css/typeface-local/Cormorant.css +47 -0
- assets/css/typeface-local/Crimson.css +43 -0
- assets/css/typeface-local/EBGaramond.css +47 -0
- assets/css/typeface-local/Inconsolata.css +25 -0
- assets/css/typeface-local/Inter.css +51 -0
- assets/css/typeface-local/Montserrat.css +51 -0
- assets/css/typeface-local/OpenDyslexic.css +51 -0
- assets/css/typeface-local/Rosario.css +43 -0
- assets/css/typeface-local/icon.css +184 -0
- assets/css/typeface/Cormorant.css +47 -0
- assets/css/typeface/Crimson.css +43 -0
- assets/css/typeface/EBGaramond.css +47 -0
- assets/css/typeface/Inconsolata.css +25 -0
- assets/css/typeface/Inter.css +51 -0
- assets/css/typeface/Montserrat.css +51 -0
- assets/css/typeface/OpenDyslexic.css +51 -0
- assets/css/typeface/Rosario.css +43 -0
- assets/css/typeface/icon.css +184 -0
- assets/css/typeface/websafe.css +13 -0
- assets/css/typesetting/_template.css +306 -0
- assets/css/typesetting/default.css +293 -0
- assets/css/typesetting/sectioning.css +118 -0
- assets/css/typesetting/verbatim.css +307 -0
- assets/js/accessibility.js +174 -0
- assets/js/bionread.js +58 -0
- assets/js/default.js +178 -0
- assets/js/fediverse.js +186 -0
assets/css/component/a11y.css
ADDED
@@ -0,0 +1,355 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* a11y button */
|
2 |
+
|
3 |
+
#has-a11y {
|
4 |
+
margin-right: auto;
|
5 |
+
}
|
6 |
+
|
7 |
+
#has-a11y-summary {
|
8 |
+
padding: .6ex 1ex;
|
9 |
+
font-weight: 700;
|
10 |
+
}
|
11 |
+
|
12 |
+
#has-a11y-summary::before{
|
13 |
+
font-family: 'base-ui';
|
14 |
+
font-weight: 400;
|
15 |
+
content: '\e900';
|
16 |
+
}
|
17 |
+
|
18 |
+
#has-a11y[open] #a11y {
|
19 |
+
--anm: expand 99ms forwards;
|
20 |
+
--tso: bottom;
|
21 |
+
}
|
22 |
+
|
23 |
+
/* a11y container */
|
24 |
+
#a11y {
|
25 |
+
display: flex;
|
26 |
+
position: fixed;
|
27 |
+
bottom: calc(1rem + var(--vfoot));
|
28 |
+
flex-direction: column;
|
29 |
+
margin: 0;
|
30 |
+
border: var(--border);
|
31 |
+
border-radius: 1ex;
|
32 |
+
background: var(--bg);
|
33 |
+
padding: 1rem;
|
34 |
+
max-height: calc(100vh - var(--vhead) - var(--vfoot) - 2rem );
|
35 |
+
overflow-y: auto;
|
36 |
+
gap: var(--medskip);
|
37 |
+
}
|
38 |
+
|
39 |
+
/* hide input checkbox */
|
40 |
+
#a11y input[type=checkbox],
|
41 |
+
#a11y input[type=radio],
|
42 |
+
#bionReadSwitch {
|
43 |
+
position: absolute;
|
44 |
+
top: -100vh;
|
45 |
+
}
|
46 |
+
|
47 |
+
#a11y select,
|
48 |
+
#a11y input[type=range],
|
49 |
+
#setColorScheme label,
|
50 |
+
#setOpenDyslexic,
|
51 |
+
button {
|
52 |
+
cursor: pointer;
|
53 |
+
}
|
54 |
+
|
55 |
+
/* range */
|
56 |
+
label.range {
|
57 |
+
display: flex;
|
58 |
+
flex-direction: row-reverse;
|
59 |
+
}
|
60 |
+
|
61 |
+
label.range > input {
|
62 |
+
flex: 1;
|
63 |
+
accent-color: var(--ac);
|
64 |
+
}
|
65 |
+
|
66 |
+
label.range > output {
|
67 |
+
width: 4rem;
|
68 |
+
text-align: center;
|
69 |
+
color: var(--ac);
|
70 |
+
font: 700 var(--large) var(--sf), sans-serif;
|
71 |
+
}
|
72 |
+
|
73 |
+
#setColorScheme {
|
74 |
+
display: flex;
|
75 |
+
flex-direction: row;
|
76 |
+
align-items: center;
|
77 |
+
margin-bottom: 1ex;
|
78 |
+
}
|
79 |
+
|
80 |
+
/* lightswitch */
|
81 |
+
#lightSwitch + label {
|
82 |
+
display: flex;
|
83 |
+
flex-direction: column;
|
84 |
+
align-items: center;
|
85 |
+
border-radius: 0.5ex;
|
86 |
+
padding: 1ex;
|
87 |
+
width: 4rem;
|
88 |
+
font-weight: 700;
|
89 |
+
gap: 1ex;
|
90 |
+
}
|
91 |
+
|
92 |
+
#lightSwitch:hover + label,
|
93 |
+
#lightSwitch:focus + label,
|
94 |
+
#setContrast > input:hover + label {
|
95 |
+
background: var(--g18s);
|
96 |
+
color: var(--ac);
|
97 |
+
}
|
98 |
+
|
99 |
+
/* credit to @mrozilla on codepen https://codepen.io/mrozilla/pen/OJJNjRb */
|
100 |
+
input + label > #lightSwitchIndicator {
|
101 |
+
--ray-size: calc(var(--size) * -0.4);
|
102 |
+
--offset-orthogonal: calc(var(--size) * 0.65);
|
103 |
+
--offset-diagonal: calc(var(--size) * 0.45);
|
104 |
+
--tsf: scale(0.75);
|
105 |
+
--size: 1.414em;
|
106 |
+
display: block;
|
107 |
+
outline: none;
|
108 |
+
border-radius: 999px;
|
109 |
+
box-shadow: inset 0 0 0 var(--size),
|
110 |
+
calc(var(--offset-orthogonal) * -1) 0 0 var(--ray-size),
|
111 |
+
var(--offset-orthogonal) 0 0 var(--ray-size),
|
112 |
+
0 calc(var(--offset-orthogonal) * -1) 0 var(--ray-size),
|
113 |
+
0 var(--offset-orthogonal) 0 var(--ray-size),
|
114 |
+
calc(var(--offset-diagonal) * -1) calc(var(--offset-diagonal) * -1) 0 var(--ray-size),
|
115 |
+
var(--offset-diagonal) var(--offset-diagonal) 0 var(--ray-size),
|
116 |
+
calc(var(--offset-diagonal) * -1) var(--offset-diagonal) 0 var(--ray-size),
|
117 |
+
var(--offset-diagonal) calc(var(--offset-diagonal) * -1) 0 var(--ray-size);
|
118 |
+
width: var(--size);
|
119 |
+
height: var(--size);
|
120 |
+
color: #ffaa00;
|
121 |
+
}
|
122 |
+
|
123 |
+
input:checked + label > #lightSwitchIndicator {
|
124 |
+
--tsf: scale(1);
|
125 |
+
box-shadow: inset calc(var(--size) * 0.33) calc(var(--size) * -0.25) 0;
|
126 |
+
}
|
127 |
+
|
128 |
+
/* contrast */
|
129 |
+
#setContrast {
|
130 |
+
display: flex;
|
131 |
+
position: relative;
|
132 |
+
flex: 1;
|
133 |
+
justify-content: center;
|
134 |
+
margin: 0 0 0 1ex;
|
135 |
+
border: none;
|
136 |
+
border-left: var(--bound);
|
137 |
+
padding: 2.5em 0 0 1ex;
|
138 |
+
}
|
139 |
+
|
140 |
+
#setContrast legend {
|
141 |
+
position: absolute;
|
142 |
+
top: 0;
|
143 |
+
padding: 1ex;
|
144 |
+
}
|
145 |
+
|
146 |
+
#setContrast label {
|
147 |
+
-webkit-transition: 99ms;
|
148 |
+
-moz-transition: 99ms;
|
149 |
+
-o-transition: 99ms;
|
150 |
+
transition: 99ms;
|
151 |
+
border-radius: 1rem;
|
152 |
+
padding: 3pt 7pt;
|
153 |
+
font-size: 0.84em !important;
|
154 |
+
}
|
155 |
+
|
156 |
+
#setContrast > input:checked + label {
|
157 |
+
background: var(--fg);
|
158 |
+
color: var(--bg);
|
159 |
+
}
|
160 |
+
|
161 |
+
#setContrast > input + label::before {
|
162 |
+
font-family:'base-ui';
|
163 |
+
content: '\e904\a0';
|
164 |
+
}
|
165 |
+
|
166 |
+
#setContrast > input:checked + label::before {
|
167 |
+
content: '\e903\a0';
|
168 |
+
}
|
169 |
+
|
170 |
+
/* color palette */
|
171 |
+
#setColorPalette {
|
172 |
+
align-items: baseline;
|
173 |
+
}
|
174 |
+
|
175 |
+
#setColorPalette > *,
|
176 |
+
#setOpenDyslexic > * {
|
177 |
+
padding: 1ex 0;
|
178 |
+
}
|
179 |
+
|
180 |
+
#colorPalette {
|
181 |
+
flex: 1;
|
182 |
+
margin-left: 0.5ex;
|
183 |
+
border: unset;
|
184 |
+
border-radius: 1rem;
|
185 |
+
background: var(--bg);
|
186 |
+
padding: 0.5ex 1.25ex;
|
187 |
+
color: var(--fg);
|
188 |
+
font: inherit !important;
|
189 |
+
}
|
190 |
+
|
191 |
+
/* font */
|
192 |
+
#baselineStretchState::after {
|
193 |
+
font-size: 0.8em;
|
194 |
+
content: '×';
|
195 |
+
}
|
196 |
+
|
197 |
+
#fontSizeState::after {
|
198 |
+
font-size: 0.8em;
|
199 |
+
content: 'pt';
|
200 |
+
}
|
201 |
+
|
202 |
+
#setOpenDyslexic > label {
|
203 |
+
display: flex;
|
204 |
+
align-items: center;
|
205 |
+
}
|
206 |
+
|
207 |
+
#OpenDyslexicState {
|
208 |
+
display: flex;
|
209 |
+
margin-left: auto;
|
210 |
+
border-radius: 1em;
|
211 |
+
background: #80808080;
|
212 |
+
width: 2.4em;
|
213 |
+
height: 0.8em;
|
214 |
+
}
|
215 |
+
|
216 |
+
#OpenDyslexicIndicator {
|
217 |
+
--tst: 0.5s ease-out;
|
218 |
+
position: relative;
|
219 |
+
align-self: center;
|
220 |
+
border: 1pt solid #80808008;
|
221 |
+
border-radius: 1em;
|
222 |
+
box-shadow: var(--box-shadow-focus);
|
223 |
+
background: #fff;
|
224 |
+
padding: 6pt;
|
225 |
+
}
|
226 |
+
|
227 |
+
#OpenDyslexic:hover + label #OpenDyslexicIndicator,
|
228 |
+
#OpenDyslexic:focus + label #OpenDyslexicIndicator {
|
229 |
+
--anm: grab 3s ease-out 3;
|
230 |
+
}
|
231 |
+
|
232 |
+
#OpenDyslexic:checked:hover + label #OpenDyslexicIndicator,
|
233 |
+
#OpenDyslexic:checked:focus + label #OpenDyslexicIndicator {
|
234 |
+
--anm: unset;
|
235 |
+
}
|
236 |
+
|
237 |
+
#OpenDyslexic:checked + label #OpenDyslexicIndicator {
|
238 |
+
left: 1.3em;
|
239 |
+
}
|
240 |
+
|
241 |
+
@keyframes grab {
|
242 |
+
0%, 10%, 20%, 100% {
|
243 |
+
left: 0;
|
244 |
+
}
|
245 |
+
5%, 15% {
|
246 |
+
left: 3pt;
|
247 |
+
}
|
248 |
+
}
|
249 |
+
|
250 |
+
@-webkit-keyframes grab {
|
251 |
+
0%, 20%, 40%, 100% {
|
252 |
+
left: 0;
|
253 |
+
}
|
254 |
+
10%, 30% {
|
255 |
+
left: 3pt;
|
256 |
+
}
|
257 |
+
}
|
258 |
+
|
259 |
+
/* menu */
|
260 |
+
#a11y-menu {
|
261 |
+
display: inline-flex;
|
262 |
+
align-items: center;
|
263 |
+
margin: 0;
|
264 |
+
padding: 0;
|
265 |
+
width: 100%;
|
266 |
+
gap: 1ex;
|
267 |
+
}
|
268 |
+
|
269 |
+
#a11y-menu > button {
|
270 |
+
display: inline-flex;
|
271 |
+
flex-direction: column;
|
272 |
+
align-items: center;
|
273 |
+
border: unset;
|
274 |
+
padding: 1ex;
|
275 |
+
}
|
276 |
+
|
277 |
+
#a11y-menu > .has-aria-label {
|
278 |
+
background: unset;
|
279 |
+
color: var(--fg);
|
280 |
+
}
|
281 |
+
|
282 |
+
#a11y-menu > .has-aria-label::before {
|
283 |
+
margin: auto;
|
284 |
+
padding: 0.25rem 0.5rem;
|
285 |
+
}
|
286 |
+
|
287 |
+
#a11y-menu .has-aria-label:after {
|
288 |
+
font-size: 0.7em;
|
289 |
+
}
|
290 |
+
|
291 |
+
#resetButton::before {
|
292 |
+
font-family: 'base-ui';
|
293 |
+
content: '\e90f';
|
294 |
+
}
|
295 |
+
|
296 |
+
#closeButton::before {
|
297 |
+
font-family: 'base-ui';
|
298 |
+
content: '\e913';
|
299 |
+
}
|
300 |
+
|
301 |
+
#bionReadButton,
|
302 |
+
#saveButton {
|
303 |
+
flex: 1;
|
304 |
+
margin-left: auto;
|
305 |
+
cursor: pointer;
|
306 |
+
}
|
307 |
+
|
308 |
+
/* bionRead */
|
309 |
+
b.k {
|
310 |
+
vertical-align: baseline;
|
311 |
+
letter-spacing: var(--bion);
|
312 |
+
color: var(--off);
|
313 |
+
font-weight: 400 !important;
|
314 |
+
-webkit-text-stroke: var(--bion) var(--off);
|
315 |
+
font-synthesis: weight;
|
316 |
+
}
|
317 |
+
|
318 |
+
#useBionRead {
|
319 |
+
display: none;
|
320 |
+
margin: auto;
|
321 |
+
letter-spacing: 0.1em;
|
322 |
+
font-size: var(--footnotesize);
|
323 |
+
}
|
324 |
+
|
325 |
+
legend,
|
326 |
+
.has-aria-label-top:before,
|
327 |
+
#setColorPalette > label,
|
328 |
+
input + label > span {
|
329 |
+
font-weight: 700;
|
330 |
+
}
|
331 |
+
|
332 |
+
#setContrast > input + label > span {
|
333 |
+
font-weight: 400;
|
334 |
+
}
|
335 |
+
|
336 |
+
#bionReadButton > span {
|
337 |
+
font-weight: 400;
|
338 |
+
text-transform: uppercase;
|
339 |
+
}
|
340 |
+
|
341 |
+
#noScript,
|
342 |
+
#noLocalStorage {
|
343 |
+
margin: auto;
|
344 |
+
border-top: var(--bound);
|
345 |
+
padding-top: 1rem;
|
346 |
+
max-width: 20rem;
|
347 |
+
}
|
348 |
+
|
349 |
+
@media only screen and (max-width: 640px) {
|
350 |
+
|
351 |
+
#has-a11y > summary > span {
|
352 |
+
display: none;
|
353 |
+
}
|
354 |
+
|
355 |
+
}
|
assets/css/component/background.css
ADDED
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#background-footer,
|
2 |
+
#background-header,
|
3 |
+
#background-body {
|
4 |
+
display: flex;
|
5 |
+
position: fixed;
|
6 |
+
top: 0;
|
7 |
+
left: 0;
|
8 |
+
z-index: -2;
|
9 |
+
width: 100vw;
|
10 |
+
height: 100vh;
|
11 |
+
}
|
12 |
+
|
13 |
+
#background-footer,
|
14 |
+
#background-header,
|
15 |
+
#background-body,
|
16 |
+
#a11y,
|
17 |
+
#lightSwitchIndicator,
|
18 |
+
#setContrast,
|
19 |
+
#colorPalette,
|
20 |
+
ul.carousel__viewport > li > a > span::before,
|
21 |
+
ul.carousel__viewport > li > a > span::after,
|
22 |
+
ul.carousel__viewport > li > a > span,
|
23 |
+
#list-categories a:hover::after,
|
24 |
+
.letterine > i {
|
25 |
+
-webkit-transition: var(--flashGuard);
|
26 |
+
-moz-transition: var(--flashGuard);
|
27 |
+
-o-transition: var(--flashGuard);
|
28 |
+
transition: var(--flashGuard);
|
29 |
+
}
|
30 |
+
|
31 |
+
#background-body,
|
32 |
+
.background {
|
33 |
+
background-color: var(--bg);
|
34 |
+
}
|
35 |
+
|
36 |
+
#background-header {
|
37 |
+
/* border-bottom: var(--border); */
|
38 |
+
height: var(--vhead);
|
39 |
+
}
|
40 |
+
|
41 |
+
#background-footer {
|
42 |
+
top: unset;
|
43 |
+
bottom: 0;
|
44 |
+
/* border-top: var(--border); */
|
45 |
+
height: var(--vfoot);
|
46 |
+
}
|
47 |
+
|
48 |
+
/* grain */
|
49 |
+
|
50 |
+
.grain,
|
51 |
+
#grain {
|
52 |
+
background-image: url("data:image/svg+xml;utf8,<svg version='1.1' viewBox='0 0 256 256' width='256' height='256' opacity='1' id='svgrain' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'><defs id='defs'><filter id='grain' x='0' y='0' width='1' height='1' filterUnits='objectBoundingBox' primitiveUnits='userSpaceOnUse' color-interpolation-filters='linearRGB'><feTurbulence type='turbulence' baseFrequency='0.7' numOctaves='7' seed='42' stitchTiles='stitch' x='-1%' y='-1%' width='102%' height='102%' result='turbulence' id='feTurbulence' /><feSpecularLighting surfaceScale='7' specularConstant='3' specularExponent='10' lighting-color='%23ffffff' x='-1%' y='-1%' width='102%' height='102%' in='turbulence' result='specularLighting' id='feSpecularLighting'><feDistantLight azimuth='3' elevation='163' id='feDistantLight4' /></feSpecularLighting></filter></defs><rect width='320' height='320' fill='%23000000' id='blackbody' x='-32' y='-32' opacity='0.03' /><rect width='320' height='320' fill='%23ffffff' filter='url(%23grain)' id='noise' x='-32' y='-32' opacity='0.03' /></svg>");
|
53 |
+
mix-blend-mode: difference;
|
54 |
+
}
|
55 |
+
|
56 |
+
#grain {
|
57 |
+
position: absolute;
|
58 |
+
width: 100%;
|
59 |
+
height: 100%;
|
60 |
+
}
|
61 |
+
|
62 |
+
/* distraction */
|
63 |
+
|
64 |
+
#dwclock {
|
65 |
+
opacity: 0.33;
|
66 |
+
margin: auto;
|
67 |
+
width: 100vmin;
|
68 |
+
height: 100vmin;
|
69 |
+
filter: blur(2vmin) saturate(2);
|
70 |
+
}
|
71 |
+
|
72 |
+
#hour,
|
73 |
+
#min {
|
74 |
+
position: absolute;
|
75 |
+
width: 100vmin;
|
76 |
+
height: 100vmin;
|
77 |
+
}
|
78 |
+
|
79 |
+
.hand {
|
80 |
+
--min: 40vmin;
|
81 |
+
--hour: 28vmin;
|
82 |
+
--tsf: translateY(calc(50vmin - var(--min)));
|
83 |
+
margin: 0 auto auto ;
|
84 |
+
border-right: 2vmin solid transparent;
|
85 |
+
border-bottom: var(--min) solid #60f;
|
86 |
+
border-left: 2vmin solid transparent;
|
87 |
+
border-radius: 2vmin;
|
88 |
+
background-image: linear-gradient(0deg, var(--bg) 0%, #60f 100%);
|
89 |
+
width: 3vmin;
|
90 |
+
height: var(--min);
|
91 |
+
}
|
92 |
+
|
93 |
+
#hour .hand {
|
94 |
+
--tsf: translateY(calc(50vmin - var(--hour)));
|
95 |
+
border-bottom: var(--hour) solid #20f;
|
96 |
+
background-image: linear-gradient(0deg, var(--bg) 0%, #20f 100%);
|
97 |
+
height: var(--hour);
|
98 |
+
}
|
assets/css/component/breadcrumb.css
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
main > header.pagewidth {
|
2 |
+
margin-top: var(--medskip);
|
3 |
+
padding-left: calc(var(--void) - 0.5ex - 4pt);
|
4 |
+
height: 2.5rem;
|
5 |
+
}
|
6 |
+
|
7 |
+
#back {
|
8 |
+
display: inline-flex;
|
9 |
+
position: relative;
|
10 |
+
top: 2.8pt;
|
11 |
+
float: left;
|
12 |
+
border: none;
|
13 |
+
background: none;
|
14 |
+
padding: 0;
|
15 |
+
color: inherit;
|
16 |
+
}
|
17 |
+
|
18 |
+
#back::before,
|
19 |
+
header > menu a::before {
|
20 |
+
padding: 6pt 9pt;
|
21 |
+
font-size: var(--large);
|
22 |
+
}
|
23 |
+
|
24 |
+
#rss-button::before {
|
25 |
+
font-family: 'base-ui';
|
26 |
+
content: '\e910';
|
27 |
+
}
|
28 |
+
|
29 |
+
#print-button::before {
|
30 |
+
font-family: 'base-ui';
|
31 |
+
content: '\e90c';
|
32 |
+
}
|
33 |
+
|
34 |
+
#navigatorShare::before {
|
35 |
+
font-family: 'base-ui';
|
36 |
+
content: '\e912';
|
37 |
+
}
|
38 |
+
|
39 |
+
#copyPermalink::before {
|
40 |
+
font-family: base-ui;
|
41 |
+
content: '\e905';
|
42 |
+
}
|
43 |
+
|
44 |
+
main > header > menu {
|
45 |
+
float: right;
|
46 |
+
visibility: hidden;
|
47 |
+
margin: 0 0 0 auto;
|
48 |
+
padding: 0;
|
49 |
+
list-style: none;
|
50 |
+
font-size: 1.1rem;
|
51 |
+
}
|
52 |
+
|
53 |
+
main#term > header > menu,
|
54 |
+
main#page > header > menu {
|
55 |
+
visibility: visible;
|
56 |
+
}
|
57 |
+
|
58 |
+
main#term #print-button {
|
59 |
+
visibility: hidden;
|
60 |
+
}
|
61 |
+
|
62 |
+
main > header > menu > li,
|
63 |
+
ul.breadcrumb > li {
|
64 |
+
display: inline;
|
65 |
+
}
|
66 |
+
|
67 |
+
main > header > menu > li > a {
|
68 |
+
opacity: 0.86;
|
69 |
+
color: var(--fg) !important;
|
70 |
+
}
|
71 |
+
|
72 |
+
.pagination .rfill a::before,
|
73 |
+
.carousel__viewport__slide:last-child > nav a::before,
|
74 |
+
#back::before {
|
75 |
+
--tsf: rotate(-90deg) translateX(1pt);
|
76 |
+
font-family: base-ui;
|
77 |
+
content: '\e902';
|
78 |
+
}
|
79 |
+
|
80 |
+
#has-breadcrumb a {
|
81 |
+
margin: 2pt;
|
82 |
+
padding: 0.5ex;
|
83 |
+
text-transform: uppercase;
|
84 |
+
letter-spacing: 0.1rem;
|
85 |
+
color: var(--fg);
|
86 |
+
font-size: var(--small);
|
87 |
+
}
|
88 |
+
|
89 |
+
ul.breadcrumb {
|
90 |
+
display: block;
|
91 |
+
padding: 5pt 0;
|
92 |
+
overflow: auto;
|
93 |
+
text-overflow: ellipsis;
|
94 |
+
white-space: nowrap;
|
95 |
+
-ms-overflow-style: none;
|
96 |
+
scrollbar-width: none;
|
97 |
+
}
|
98 |
+
|
99 |
+
header > menu a {
|
100 |
+
display: inline-flex;
|
101 |
+
position: relative;
|
102 |
+
}
|
103 |
+
|
104 |
+
ul.breadcrumb > li:last-child a {
|
105 |
+
-webkit-user-select: none;
|
106 |
+
-khtml-user-select: none;
|
107 |
+
-moz-user-select: none;
|
108 |
+
-ms-user-select: none;
|
109 |
+
user-select: none;
|
110 |
+
-webkit-touch-callout: none;
|
111 |
+
}
|
112 |
+
|
113 |
+
ul.breadcrumb > li + li:before {
|
114 |
+
color: var(--mid);
|
115 |
+
content: '/';
|
116 |
+
}
|
assets/css/component/card.css
ADDED
@@ -0,0 +1,167 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.feed-item {
|
2 |
+
position: relative;
|
3 |
+
transition: 99ms;
|
4 |
+
margin: var(--medskip) auto var(--medskip) 0;
|
5 |
+
padding: 1rem;
|
6 |
+
width: var(--golden-ratio);
|
7 |
+
font-size: var(--small);
|
8 |
+
}
|
9 |
+
|
10 |
+
.feed-item:hover,
|
11 |
+
.feed-item:focus-within {
|
12 |
+
--tsf: scale(1.01);
|
13 |
+
}
|
14 |
+
|
15 |
+
.feed-item * {
|
16 |
+
margin-top: 0;
|
17 |
+
margin-bottom: 0;
|
18 |
+
}
|
19 |
+
|
20 |
+
.feed-item h1 {
|
21 |
+
margin: 8pt 0 0 0;
|
22 |
+
font-size: var(--Large);
|
23 |
+
font-weight: 700;
|
24 |
+
}
|
25 |
+
|
26 |
+
.feed-item img {
|
27 |
+
width: auto;
|
28 |
+
height: auto;
|
29 |
+
max-height: 38vh;
|
30 |
+
aspect-ratio: 10/8;
|
31 |
+
object-fit: cover;
|
32 |
+
}
|
33 |
+
|
34 |
+
.feed-item .par {
|
35 |
+
--grd: linear-gradient(var(--off) 50%, transparent 100%);
|
36 |
+
opacity: 0.86;
|
37 |
+
margin-right: auto;
|
38 |
+
-webkit-mask-image: var(--grd);
|
39 |
+
mask-image: var(--grd);
|
40 |
+
clip-path: text;
|
41 |
+
}
|
42 |
+
|
43 |
+
.feed-item img + .par {
|
44 |
+
width: var(--golden-ratio);
|
45 |
+
}
|
46 |
+
|
47 |
+
.feed-item > a {
|
48 |
+
position: absolute;
|
49 |
+
top: 2.5rem;
|
50 |
+
right: 0;
|
51 |
+
bottom: 3rem;
|
52 |
+
left: 0;
|
53 |
+
transition: 0.2s;
|
54 |
+
z-index: 1;
|
55 |
+
}
|
56 |
+
|
57 |
+
.feed-item > a:hover,
|
58 |
+
.feed-item > a:focus {
|
59 |
+
top: 0;
|
60 |
+
bottom: 0;
|
61 |
+
background-color: #80808008;
|
62 |
+
}
|
63 |
+
|
64 |
+
.feed-item > hgroup {
|
65 |
+
display: flex;
|
66 |
+
flex-direction: column;
|
67 |
+
}
|
68 |
+
|
69 |
+
.feed-item > section {
|
70 |
+
display: flex;
|
71 |
+
flex-direction: row-reverse;
|
72 |
+
margin: 8pt 0;
|
73 |
+
width: 100%;
|
74 |
+
overflow: hidden;
|
75 |
+
text-overflow: ellipsis;
|
76 |
+
gap: 1rem;
|
77 |
+
}
|
78 |
+
|
79 |
+
.feed-item > section.has-cover {
|
80 |
+
aspect-ratio: 10/3;
|
81 |
+
}
|
82 |
+
|
83 |
+
.feed-item > footer,
|
84 |
+
.feed-item > hgroup > div {
|
85 |
+
display: flex;
|
86 |
+
flex-flow: nowrap;
|
87 |
+
align-items: center;
|
88 |
+
white-space: nowrap;
|
89 |
+
}
|
90 |
+
|
91 |
+
.feed-item > footer > ul,
|
92 |
+
.feed-item > hgroup > div > span {
|
93 |
+
display: block;
|
94 |
+
overflow-x: auto;
|
95 |
+
-ms-overflow-style: none;
|
96 |
+
scrollbar-width: none;
|
97 |
+
text-overflow: ellipsis;
|
98 |
+
}
|
99 |
+
|
100 |
+
.feed-item > hgroup > div > div {
|
101 |
+
margin-left: auto;
|
102 |
+
padding-left: 1rem;
|
103 |
+
}
|
104 |
+
|
105 |
+
.feed-item > footer > ul {
|
106 |
+
text-align: right;
|
107 |
+
font-size: var(--scriptsize);
|
108 |
+
}
|
109 |
+
|
110 |
+
.readingTime {
|
111 |
+
margin-right: auto;
|
112 |
+
padding-right: 1rem;
|
113 |
+
}
|
114 |
+
|
115 |
+
.readingTime + .baselineskip {
|
116 |
+
height: 1em;
|
117 |
+
}
|
118 |
+
|
119 |
+
.flowlines {
|
120 |
+
border: var(--border);
|
121 |
+
object-fit: none !important;
|
122 |
+
}
|
123 |
+
|
124 |
+
ul.pagination {
|
125 |
+
display: flex;
|
126 |
+
margin: var(--medskip) 1ex;
|
127 |
+
}
|
128 |
+
|
129 |
+
.pagination a {
|
130 |
+
display: flex;
|
131 |
+
padding: 1ex 1em;
|
132 |
+
text-transform: uppercase;
|
133 |
+
letter-spacing: 0.2ex;
|
134 |
+
color: var(--ac);
|
135 |
+
gap: 1ex;
|
136 |
+
}
|
137 |
+
|
138 |
+
@media only screen and (max-width: 640px) {
|
139 |
+
|
140 |
+
.feed-item {
|
141 |
+
width: unset;
|
142 |
+
}
|
143 |
+
|
144 |
+
aside + #list-posts .feed-item {
|
145 |
+
width: var(--golden-ratio);
|
146 |
+
}
|
147 |
+
|
148 |
+
aside + #list-posts .feed-item > section {
|
149 |
+
flex-direction: column;
|
150 |
+
aspect-ratio: unset;
|
151 |
+
}
|
152 |
+
|
153 |
+
aside + #list-posts .feed-item .par {
|
154 |
+
max-height: 25vh;
|
155 |
+
width: unset;
|
156 |
+
}
|
157 |
+
|
158 |
+
}
|
159 |
+
|
160 |
+
@media only screen and (max-width: 480px) {
|
161 |
+
|
162 |
+
.feed-item > section {
|
163 |
+
flex-direction: column;
|
164 |
+
aspect-ratio: unset !important;
|
165 |
+
}
|
166 |
+
|
167 |
+
}
|
assets/css/component/carousel.css
ADDED
@@ -0,0 +1,299 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
<!----- V container ----->
|
3 |
+
<div class='has-carousel'>
|
4 |
+
<!--- H container --->
|
5 |
+
<div class='carousel'>
|
6 |
+
<div>---- <div>---- <div>---- <div>---- <div>----
|
7 |
+
| | | | | | | | | |
|
8 |
+
| | | | | | | | | |
|
9 |
+
| | | | | | | | | |
|
10 |
+
| | | | | | | | | |
|
11 |
+
---</div> | | ---</div> | | ---</div>
|
12 |
+
---</div> ---</div>
|
13 |
+
</div>
|
14 |
+
<div>
|
15 |
+
*/
|
16 |
+
.carousel {
|
17 |
+
position: relative;
|
18 |
+
width: 100%;
|
19 |
+
overflow: hidden;
|
20 |
+
}
|
21 |
+
|
22 |
+
.carousel__nav {
|
23 |
+
display: flex;
|
24 |
+
position: absolute;
|
25 |
+
right: 2rem;
|
26 |
+
bottom: 2rem;
|
27 |
+
justify-content: flex-end;
|
28 |
+
z-index: 1;
|
29 |
+
width: calc(100% - 4rem);
|
30 |
+
font-size: var(--small);
|
31 |
+
}
|
32 |
+
|
33 |
+
.carousel__nav > ul {
|
34 |
+
overflow-x: auto;
|
35 |
+
white-space: nowrap;
|
36 |
+
}
|
37 |
+
|
38 |
+
.carousel__viewport nav a {
|
39 |
+
display: flex;
|
40 |
+
z-index: 2;
|
41 |
+
font-size: var(--small);
|
42 |
+
}
|
43 |
+
|
44 |
+
.carousel__viewport {
|
45 |
+
display: flex;
|
46 |
+
height: 100%;
|
47 |
+
overflow-x: auto;
|
48 |
+
-webkit-overflow-scrolling: touch;
|
49 |
+
scroll-behavior: smooth;
|
50 |
+
scroll-snap-type: x mandatory;
|
51 |
+
scrollbar-width: none;
|
52 |
+
}
|
53 |
+
|
54 |
+
ul.carousel__viewport {
|
55 |
+
border: none;
|
56 |
+
padding: 0;
|
57 |
+
}
|
58 |
+
|
59 |
+
.carousel__viewport > div,
|
60 |
+
.carousel__viewport > section,
|
61 |
+
ul.carousel__viewport > li,
|
62 |
+
.carousel__viewport__slide {
|
63 |
+
display: flex;
|
64 |
+
position: relative;
|
65 |
+
flex-direction: row;
|
66 |
+
flex-shrink: 0;
|
67 |
+
flex-wrap: wrap;
|
68 |
+
align-items: center;
|
69 |
+
width: 100%;
|
70 |
+
}
|
71 |
+
|
72 |
+
ul.carousel__viewport > li {
|
73 |
+
position: relative;
|
74 |
+
margin: 1ex;
|
75 |
+
border-radius: 1ex;
|
76 |
+
background-size: cover;
|
77 |
+
width: 16rem;
|
78 |
+
height: 12.8rem;
|
79 |
+
}
|
80 |
+
|
81 |
+
ul.carousel__viewport > li > a {
|
82 |
+
position: absolute;
|
83 |
+
top: -1px;
|
84 |
+
right: 0;
|
85 |
+
bottom: 0;
|
86 |
+
left: -1px;
|
87 |
+
border-radius: 0.82ex;
|
88 |
+
overflow: clip;
|
89 |
+
color: var(--fg);
|
90 |
+
font-size: var(--small);
|
91 |
+
font-weight: bold;
|
92 |
+
}
|
93 |
+
|
94 |
+
ul.carousel__viewport > li:hover,
|
95 |
+
ul.carousel__viewport > li:focus-within {
|
96 |
+
--tsf: scale(0.96);
|
97 |
+
opacity: 0.86;
|
98 |
+
}
|
99 |
+
|
100 |
+
ul.carousel__viewport > li > a > span {
|
101 |
+
display: inline-block;
|
102 |
+
position: relative;
|
103 |
+
border-radius: 0 0 1ex 0;
|
104 |
+
background-color: var(--bg);
|
105 |
+
padding: 0.7ex 2ex;
|
106 |
+
max-width: 12.8rem;
|
107 |
+
}
|
108 |
+
|
109 |
+
ul.carousel__viewport > li > a > span::before,
|
110 |
+
ul.carousel__viewport > li > a > span::after {
|
111 |
+
position: absolute;
|
112 |
+
border-top-left-radius: 1ex;
|
113 |
+
box-shadow: 0 -1ex 0 0 var(--bg);
|
114 |
+
background-color: transparent;
|
115 |
+
width: 1ex;
|
116 |
+
height: 2ex;
|
117 |
+
content: '';
|
118 |
+
}
|
119 |
+
|
120 |
+
ul.carousel__viewport > li > a > span::before {
|
121 |
+
bottom: -2ex;
|
122 |
+
left: 0;
|
123 |
+
}
|
124 |
+
|
125 |
+
ul.carousel__viewport > li > a > span::after {
|
126 |
+
top: 0;
|
127 |
+
right: -1ex;
|
128 |
+
}
|
129 |
+
|
130 |
+
.carousel__viewport__slide__cover {
|
131 |
+
flex: 1 1 40%;
|
132 |
+
padding: 1.5rem 0 5rem 1.5rem;
|
133 |
+
height: 100%;
|
134 |
+
max-height: 1024px;
|
135 |
+
}
|
136 |
+
|
137 |
+
.carousel__viewport__slide__content {
|
138 |
+
margin-bottom: auto;
|
139 |
+
padding: 0 2rem;
|
140 |
+
width: 100%;
|
141 |
+
max-height: calc(100% - 5rem);
|
142 |
+
overflow-y: auto;
|
143 |
+
}
|
144 |
+
|
145 |
+
.carousel__viewport__slide__content h1.section-title {
|
146 |
+
margin: 0 !important;
|
147 |
+
padding: var(--smallskip) 0 1ex;
|
148 |
+
font: italic var(--Large) var(--rm), serif;
|
149 |
+
}
|
150 |
+
|
151 |
+
.carousel__viewport__slide__content h2 {
|
152 |
+
font-size: var(--large);
|
153 |
+
}
|
154 |
+
|
155 |
+
.carousel__viewport__slide__content h3 {
|
156 |
+
font-size: var(--normalsize);
|
157 |
+
}
|
158 |
+
|
159 |
+
.carousel__viewport__slide__content p {
|
160 |
+
max-width: var(--canonic);
|
161 |
+
}
|
162 |
+
|
163 |
+
.carousel__viewport__slide__content .footnotes p {
|
164 |
+
max-width: unset;
|
165 |
+
}
|
166 |
+
|
167 |
+
.carousel__viewport__slide__cover + .carousel__viewport__slide__content {
|
168 |
+
flex: 1 1 60%;
|
169 |
+
margin-bottom: 5rem;
|
170 |
+
}
|
171 |
+
|
172 |
+
.carousel__viewport__slide__cover + .carousel__viewport__slide__content p {
|
173 |
+
width: unset;
|
174 |
+
}
|
175 |
+
|
176 |
+
.carousel__viewport__slide__cover img {
|
177 |
+
border-radius: 1ex;
|
178 |
+
width: 100%;
|
179 |
+
height: 100%;
|
180 |
+
object-fit: cover;
|
181 |
+
}
|
182 |
+
|
183 |
+
/* 2 item */
|
184 |
+
|
185 |
+
#list-tags > nav a,
|
186 |
+
.carousel__viewport__slide > nav a {
|
187 |
+
display: inline-flex;
|
188 |
+
padding: 1ex;
|
189 |
+
gap: 1ex;
|
190 |
+
}
|
191 |
+
|
192 |
+
.carousel__viewport__slide > nav a {
|
193 |
+
text-transform: uppercase;
|
194 |
+
letter-spacing: 0.1em;
|
195 |
+
color: var(--fg);
|
196 |
+
}
|
197 |
+
|
198 |
+
.pagination .lfill a::after,
|
199 |
+
#list-tags > nav a::after,
|
200 |
+
.carousel__viewport__slide:first-child > nav a::after {
|
201 |
+
/* -> */
|
202 |
+
--tsf: rotate(90deg);
|
203 |
+
font-family: base-ui;
|
204 |
+
content: '\e902';
|
205 |
+
}
|
206 |
+
|
207 |
+
.carousel__viewport .rfill {
|
208 |
+
display: inline-block !important;
|
209 |
+
}
|
210 |
+
|
211 |
+
#list-taxonomy > .carousel__viewport {
|
212 |
+
flex-direction: column;
|
213 |
+
height: calc(14.8rem + 2ex);
|
214 |
+
overflow-y: auto;
|
215 |
+
scroll-snap-type: y mandatory;
|
216 |
+
}
|
217 |
+
|
218 |
+
#list-taxonomy #list-series,
|
219 |
+
#list-taxonomy #list-categories {
|
220 |
+
padding: 1rem 0;
|
221 |
+
}
|
222 |
+
|
223 |
+
#list-series ul.carousel__viewport,
|
224 |
+
#list-categories ul.carousel__viewport,
|
225 |
+
#list-author ul.carousel__viewport {
|
226 |
+
scrollbar-width: thin;
|
227 |
+
}
|
228 |
+
|
229 |
+
#list-categories a:hover::after {
|
230 |
+
position: absolute;
|
231 |
+
right: 1ex;
|
232 |
+
bottom: 1ex;
|
233 |
+
border-radius: 0.7ex;
|
234 |
+
background: var(--bg);
|
235 |
+
padding: 0.7ex 0;
|
236 |
+
width: calc(3.2rem - 2ex);
|
237 |
+
text-align: center;
|
238 |
+
text-overflow: ellipsis;
|
239 |
+
white-space: nowrap;
|
240 |
+
content: attr(data-post-counter);
|
241 |
+
}
|
242 |
+
|
243 |
+
@media only screen and (max-width: 960px) {
|
244 |
+
|
245 |
+
aside.carousel {
|
246 |
+
width: unset;
|
247 |
+
}
|
248 |
+
|
249 |
+
}
|
250 |
+
|
251 |
+
@media only screen and (max-width: 640px) {
|
252 |
+
|
253 |
+
.carousel__nav {
|
254 |
+
right: 0;
|
255 |
+
bottom: 0;
|
256 |
+
background: var(--bg);
|
257 |
+
width: unset;
|
258 |
+
}
|
259 |
+
|
260 |
+
.carousel__viewport__slide > .carousel__nav {
|
261 |
+
position: sticky;
|
262 |
+
position: -webkit-sticky;
|
263 |
+
}
|
264 |
+
|
265 |
+
aside .carousel__viewport > div,
|
266 |
+
aside .carousel__viewport > section,
|
267 |
+
aside .carousel__viewport__slide {
|
268 |
+
display: block;
|
269 |
+
height: 100%;
|
270 |
+
overflow-y: auto;
|
271 |
+
}
|
272 |
+
|
273 |
+
.carousel__viewport__slide__cover {
|
274 |
+
padding: unset;
|
275 |
+
height: unset;
|
276 |
+
}
|
277 |
+
|
278 |
+
.carousel__viewport__slide__cover img {
|
279 |
+
border-radius: 0;
|
280 |
+
padding: 0 1rem;
|
281 |
+
height: unset;
|
282 |
+
}
|
283 |
+
|
284 |
+
.carousel__viewport__slide__content {
|
285 |
+
padding: 0 1rem 5rem;
|
286 |
+
max-height: unset;
|
287 |
+
}
|
288 |
+
|
289 |
+
.carousel__viewport__slide__cover + .carousel__viewport__slide__content {
|
290 |
+
margin-bottom: 1rem;
|
291 |
+
}
|
292 |
+
|
293 |
+
.carousel__nav > ul.rounded {
|
294 |
+
padding: 1ex 0;
|
295 |
+
width: calc(100vw - 2rem);
|
296 |
+
text-align: right;
|
297 |
+
}
|
298 |
+
|
299 |
+
}
|
assets/css/component/column.css
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.column {
|
2 |
+
/* auto column count */
|
3 |
+
--col: 16rem;
|
4 |
+
display: block;
|
5 |
+
-webkit-column-gap: 1.618rem;
|
6 |
+
-moz-column-gap: 1.618rem;
|
7 |
+
column-gap: 1.618rem;
|
8 |
+
column-fill: balance;
|
9 |
+
-webkit-column-width: var(--col);
|
10 |
+
-moz-column-width: var(--col);
|
11 |
+
column-width: var(--col);
|
12 |
+
}
|
13 |
+
|
14 |
+
.column--multicols {
|
15 |
+
/* modify column count on element inline:
|
16 |
+
<e class='column column--multicols' style='--multicols:2'></e> */
|
17 |
+
--col: unset;
|
18 |
+
--multicols: 3;
|
19 |
+
-webkit-column-count: var(--multicols);
|
20 |
+
-moz-column-count: var(--multicols);
|
21 |
+
column-count: var(--multicols);
|
22 |
+
}
|
23 |
+
|
24 |
+
.column__span {
|
25 |
+
column-span: all;
|
26 |
+
}
|
27 |
+
|
28 |
+
.column > *,
|
29 |
+
.column__item {
|
30 |
+
margin-bottom: 1.618rem;
|
31 |
+
break-after: auto;
|
32 |
+
break-before: auto;
|
33 |
+
break-inside: avoid;
|
34 |
+
}
|
35 |
+
|
36 |
+
.column img {
|
37 |
+
width: 100%;
|
38 |
+
height: auto;
|
39 |
+
}
|
40 |
+
|
41 |
+
.column.pin {
|
42 |
+
--col: 12rem;
|
43 |
+
}
|
44 |
+
|
45 |
+
.has-quote {
|
46 |
+
display: flex;
|
47 |
+
flex-direction: column-reverse;
|
48 |
+
color: var(--fg);
|
49 |
+
}
|
50 |
+
|
51 |
+
.has-quote::after {
|
52 |
+
margin: unset;
|
53 |
+
}
|
54 |
+
|
55 |
+
.has-quote > div {
|
56 |
+
margin-left: auto;
|
57 |
+
}
|
58 |
+
|
59 |
+
.has-quote > img {
|
60 |
+
margin: 1ex 0;
|
61 |
+
}
|
62 |
+
|
63 |
+
@media screen and (max-width: 640px) {
|
64 |
+
|
65 |
+
.column.pin {
|
66 |
+
--col: 10rem;
|
67 |
+
}
|
68 |
+
|
69 |
+
}
|
assets/css/component/fediverse.css
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* this style is used inline in fediverse.js */
|
2 |
+
|
3 |
+
#comments > * {
|
4 |
+
width: var(--golden-ratio);
|
5 |
+
}
|
6 |
+
|
7 |
+
#comments noscript {
|
8 |
+
margin: var(--medskip) 0;
|
9 |
+
}
|
10 |
+
|
11 |
+
#discussion-starter {
|
12 |
+
margin-bottom: var(--medskip);
|
13 |
+
}
|
14 |
+
|
15 |
+
#discussion-starter > footer {
|
16 |
+
display: flex;
|
17 |
+
align-items: center;
|
18 |
+
justify-content: space-between;
|
19 |
+
}
|
20 |
+
|
21 |
+
.mastodon-comment {
|
22 |
+
margin: 1rem 0 1rem calc(var(--mul) * var(--indent));
|
23 |
+
border: 1pt solid #fff4;
|
24 |
+
border-left: 2pt solid var(--ac);
|
25 |
+
box-shadow: 0 0.5pt 1pt 0 var(--g18s);
|
26 |
+
background: #80808008;
|
27 |
+
padding: 1rem 1rem 1ex;
|
28 |
+
overflow: auto;
|
29 |
+
}
|
30 |
+
|
31 |
+
.mastodon-comment .content {
|
32 |
+
margin-left: 4rem;
|
33 |
+
line-height: calc(var(--baselineStretch) * 1.272);
|
34 |
+
}
|
35 |
+
|
36 |
+
.mastodon-comment .par a {
|
37 |
+
max-width: 100%;
|
38 |
+
vertical-align: bottom;
|
39 |
+
white-space: break-spaces;
|
40 |
+
}
|
41 |
+
|
42 |
+
.mastodon-comment .attachments * {
|
43 |
+
width: 100%;
|
44 |
+
height: auto;
|
45 |
+
}
|
46 |
+
|
47 |
+
.mastodon-comment > footer {
|
48 |
+
margin-top: 1rem;
|
49 |
+
margin-left: 3.5rem;
|
50 |
+
}
|
51 |
+
|
52 |
+
.mastodon-comment > footer .stat {
|
53 |
+
display: inline-flex;
|
54 |
+
flex-shrink: 0;
|
55 |
+
gap: 5pt;
|
56 |
+
}
|
57 |
+
|
58 |
+
.stat a {
|
59 |
+
display: inline-flex;
|
60 |
+
align-items: center;
|
61 |
+
padding: 2pt;
|
62 |
+
color: var(--mid);
|
63 |
+
gap: 2pt;
|
64 |
+
}
|
65 |
+
|
66 |
+
.stat a::before {
|
67 |
+
vertical-align: text-top;
|
68 |
+
}
|
69 |
+
|
70 |
+
a.favourites.active {
|
71 |
+
color: var(--i3i);
|
72 |
+
}
|
73 |
+
|
74 |
+
.mastodon-comment .date {
|
75 |
+
margin-left: auto;
|
76 |
+
padding-left: 1rem;
|
77 |
+
color: var(--mid);
|
78 |
+
font-size: calc(10pt * var(--fontScale));;
|
79 |
+
}
|
80 |
+
|
81 |
+
@media only screen and (max-width: 960px) {
|
82 |
+
|
83 |
+
.mastodon-comment .content,
|
84 |
+
.mastodon-comment > footer {
|
85 |
+
margin-left: 0;
|
86 |
+
}
|
87 |
+
|
88 |
+
}
|
assets/css/component/hero.css
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
<!----- V container ----->
|
3 |
+
<div class='has-carousel'>
|
4 |
+
<!--- H container --->
|
5 |
+
<div class='carousel'>
|
6 |
+
<div>---- <div>---- <div>---- <div>---- <div>----
|
7 |
+
| | | | | | | | | |
|
8 |
+
| | | | | | | | | |
|
9 |
+
| | | | | | | | | |
|
10 |
+
| | | | | | | | | |
|
11 |
+
---</div> | | ---</div> | | ---</div>
|
12 |
+
---</div> ---</div>
|
13 |
+
</div>
|
14 |
+
<div>
|
15 |
+
*/
|
16 |
+
.hero {
|
17 |
+
display: flex;
|
18 |
+
position: relative;
|
19 |
+
}
|
20 |
+
|
21 |
+
.hero__image {
|
22 |
+
display: flex;
|
23 |
+
position: -webkit-sticky;
|
24 |
+
position: sticky;
|
25 |
+
top: 0;
|
26 |
+
float: left;
|
27 |
+
height: calc(var(--vbody) - 14.8rem - 1rem - 2ex);
|
28 |
+
max-height: 1024px;
|
29 |
+
}
|
30 |
+
|
31 |
+
.hero > * {
|
32 |
+
width: 50%;
|
33 |
+
}
|
34 |
+
|
35 |
+
.hero img {
|
36 |
+
margin-left: auto;
|
37 |
+
padding: 2rem;
|
38 |
+
max-width: 100%;
|
39 |
+
max-height: calc(var(--vbody) - 14.8rem - 1rem - 2ex);
|
40 |
+
object-fit: cover;
|
41 |
+
}
|
42 |
+
|
43 |
+
.hero__content {
|
44 |
+
--col: 27rem;
|
45 |
+
padding: 2rem 0;
|
46 |
+
max-width: var(--col);
|
47 |
+
font-size: var(--small);
|
48 |
+
}
|
49 |
+
|
50 |
+
.hero__content h1,
|
51 |
+
.hero__content h2,
|
52 |
+
.hero__content h3 {
|
53 |
+
margin: 4pt 0;
|
54 |
+
font: italic var(--Large) var(--rm), serif;
|
55 |
+
line-height: 1.618;
|
56 |
+
}
|
57 |
+
|
58 |
+
@media only screen and (max-width: 960px) {
|
59 |
+
|
60 |
+
.hero {
|
61 |
+
width: 100%;
|
62 |
+
}
|
63 |
+
|
64 |
+
}
|
65 |
+
|
66 |
+
@media only screen and (max-width: 640px) {
|
67 |
+
|
68 |
+
.hero {
|
69 |
+
display: flex;
|
70 |
+
flex-direction: column;
|
71 |
+
}
|
72 |
+
|
73 |
+
.hero > * {
|
74 |
+
align-self: center;
|
75 |
+
width: 86%;
|
76 |
+
}
|
77 |
+
|
78 |
+
.hero__image {
|
79 |
+
position: inherit;
|
80 |
+
width: unset;
|
81 |
+
height: unset;
|
82 |
+
}
|
83 |
+
|
84 |
+
}
|
85 |
+
|
86 |
+
@media only screen and (max-width: 480px) {
|
87 |
+
|
88 |
+
.hero img {
|
89 |
+
padding: 1rem;
|
90 |
+
}
|
91 |
+
|
92 |
+
}
|
assets/css/component/keyframe.css
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@keyframes ellipsis {
|
2 |
+
0% {content: '...';}
|
3 |
+
25% {content: '';}
|
4 |
+
50% {content: '.';}
|
5 |
+
100% {content: '..';}
|
6 |
+
}
|
7 |
+
|
8 |
+
@-webkit-keyframes ellipsis {
|
9 |
+
0% {content: '...';}
|
10 |
+
25% {content: '';}
|
11 |
+
50% {content: '.';}
|
12 |
+
100% {content: '..';}
|
13 |
+
}
|
14 |
+
|
15 |
+
@-webkit-keyframes idle {
|
16 |
+
from, to {border-color: var(--paper);}
|
17 |
+
50% {border-color: transparent;}
|
18 |
+
}
|
19 |
+
|
20 |
+
@keyframes idle {
|
21 |
+
from, to {border-color: var(--paper);}
|
22 |
+
50% {border-color: transparent;}
|
23 |
+
}
|
24 |
+
|
25 |
+
@-webkit-keyframes blinking {
|
26 |
+
from, to {visibility: visible;}
|
27 |
+
50% {visibility: hidden;}
|
28 |
+
}
|
29 |
+
|
30 |
+
@keyframes blinking {
|
31 |
+
from, to {visibility: visible;}
|
32 |
+
50% {visibility: hidden;}
|
33 |
+
}
|
34 |
+
|
35 |
+
@keyframes expand {
|
36 |
+
from {
|
37 |
+
-webkit-transform: scale(1 , 0);
|
38 |
+
-moz-transform: scale(1 , 0);
|
39 |
+
-ms-transform: scale(1 , 0);
|
40 |
+
-o-transform: scale(1 , 0);
|
41 |
+
transform: scale(1 , 0);
|
42 |
+
}
|
43 |
+
to {
|
44 |
+
-webkit-transform: scale(1 , 1);
|
45 |
+
-moz-transform: scale(1 , 1);
|
46 |
+
-ms-transform: scale(1 , 1);
|
47 |
+
-o-transform: scale(1 , 1);
|
48 |
+
transform: scale(1 , 1);
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
@-webkit-keyframes expand {
|
53 |
+
from {
|
54 |
+
-webkit-transform: scale(1 , 0);
|
55 |
+
transform: scale(1 , 0);
|
56 |
+
}
|
57 |
+
to {
|
58 |
+
-webkit-transform: scale(1 , 1);
|
59 |
+
transform: scale(1 , 1);
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
@media (prefers-reduced-motion) {
|
64 |
+
|
65 |
+
@keyframes expand {
|
66 |
+
from {
|
67 |
+
-webkit-transform: unset;
|
68 |
+
-moz-transform: unset;
|
69 |
+
-ms-transform: unset;
|
70 |
+
-o-transform: unset;
|
71 |
+
transform: unset;
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
@-webkit-keyframes expand {
|
76 |
+
from {
|
77 |
+
-webkit-transform: unset;
|
78 |
+
-moz-transform: unset;
|
79 |
+
-ms-transform: unset;
|
80 |
+
-o-transform: unset;
|
81 |
+
transform: unset;
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
}
|
assets/css/component/link.css
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
a {
|
2 |
+
text-decoration: none;
|
3 |
+
color: var(--ac);
|
4 |
+
}
|
5 |
+
|
6 |
+
#bionReadSwitch + label,
|
7 |
+
#join-discussion,
|
8 |
+
#saveButton,
|
9 |
+
#share,
|
10 |
+
a.cta {
|
11 |
+
border-radius: 2em;
|
12 |
+
background: var(--fg);
|
13 |
+
padding: 6pt 12pt;
|
14 |
+
color: var(--bg);
|
15 |
+
font-weight: 700;
|
16 |
+
text-align: center;
|
17 |
+
}
|
18 |
+
|
19 |
+
#has-a11y-summary,
|
20 |
+
a.underline {
|
21 |
+
border: 2pt solid transparent;
|
22 |
+
border-width: 0 0 2pt 0;
|
23 |
+
}
|
24 |
+
|
25 |
+
#to-top:focus,
|
26 |
+
#has-a11y-summary:hover,
|
27 |
+
#has-a11y-summary:focus,
|
28 |
+
#has-a11y[open] #has-a11y-summary,
|
29 |
+
a.underline:hover,
|
30 |
+
a.underline:focus {
|
31 |
+
--anm: underline 127ms ease-in;
|
32 |
+
border-color: var(--ac);
|
33 |
+
-webkit-animation: var(--anm);
|
34 |
+
-moz-animation: var(--anm);
|
35 |
+
-o-animation: var(--anm);
|
36 |
+
animation: var(--anm);
|
37 |
+
}
|
38 |
+
|
39 |
+
ul.rounded li {
|
40 |
+
margin: 0.5ex;
|
41 |
+
display: inline-block;
|
42 |
+
}
|
43 |
+
|
44 |
+
ul.rounded a {
|
45 |
+
display: inline-flex;
|
46 |
+
opacity: 0.86;
|
47 |
+
border: var(--border);
|
48 |
+
border-radius: 2rem;
|
49 |
+
background: #80808008;
|
50 |
+
padding: 0.5ex 1em;
|
51 |
+
color: var(--fg);
|
52 |
+
gap: 1pt;
|
53 |
+
}
|
54 |
+
|
55 |
+
ul.rounded a:hover {
|
56 |
+
border-color: #80808022;
|
57 |
+
box-shadow: var(--box-shadow-active);
|
58 |
+
background: #80808016;
|
59 |
+
}
|
60 |
+
|
61 |
+
ul.invert a {
|
62 |
+
opacity: 0.86;
|
63 |
+
border: unset;
|
64 |
+
background: var(--fg) !important;
|
65 |
+
color: var(--bg) !important;
|
66 |
+
}
|
67 |
+
|
68 |
+
ul.invert a:visited {
|
69 |
+
color: var(--bg);
|
70 |
+
}
|
71 |
+
|
72 |
+
ul.has-hash a {
|
73 |
+
text-transform: uppercase;
|
74 |
+
letter-spacing: 0.1rem;
|
75 |
+
font-size: 0.9em;
|
76 |
+
}
|
77 |
+
|
78 |
+
#term .section-title > .tag::before,
|
79 |
+
ul.has-hash a::before {
|
80 |
+
content: '#';
|
81 |
+
}
|
assets/css/component/logotype.css
ADDED
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* _____ _ _ _ ____ __ __
|
2 |
+
| ___| / \ | \ | | / ___| \ \ / /
|
3 |
+
| |_ / _ \ | \| | | | \ V /
|
4 |
+
| _| / ___ \ | |\ | | |___ | |
|
5 |
+
|_| /_/ \_\ |_| \_| \____| |_|
|
6 |
+
|
7 |
+
<svg id='logotype__svg'
|
8 |
+
xmlns...
|
9 |
+
width='<!--estimated width-->'
|
10 |
+
>
|
11 |
+
<text id='logotype__svg__text'y='74%'>
|
12 |
+
FANCY LOGOTYPE
|
13 |
+
</text>
|
14 |
+
</svg>
|
15 |
+
|
16 |
+
simplified from :
|
17 |
+
https://codepen.io/alvarotrigo/pen/rNbxNWg */
|
18 |
+
|
19 |
+
#logo {
|
20 |
+
--h: calc(3.33rem - 10pt);
|
21 |
+
display: flex;
|
22 |
+
align-items: center;
|
23 |
+
justify-content: center;
|
24 |
+
margin: 5pt 0;
|
25 |
+
height: var(--h);
|
26 |
+
}
|
27 |
+
|
28 |
+
#logo > * {
|
29 |
+
height: var(--h);
|
30 |
+
}
|
31 |
+
|
32 |
+
#logo #logotype__text {
|
33 |
+
--anm: dash 30s infinite alternate;
|
34 |
+
text-transform: uppercase;
|
35 |
+
letter-spacing: 0.2ex;
|
36 |
+
font-family: var(--sf), sans-serif;
|
37 |
+
font-size: calc(27pt * var(--fontScale));
|
38 |
+
font-weight: 700;
|
39 |
+
stroke: var(--off);
|
40 |
+
stroke-width: 1px;
|
41 |
+
}
|
42 |
+
|
43 |
+
#logo:focus #logotype__text {
|
44 |
+
--anm: unset;
|
45 |
+
outline-color: var(--off);
|
46 |
+
stroke: none;
|
47 |
+
}
|
48 |
+
|
49 |
+
@-webkit-keyframes dash {
|
50 |
+
0% {
|
51 |
+
fill:var(--off);
|
52 |
+
stroke-dasharray: 0 50%;
|
53 |
+
stroke-dashoffset: 20%;
|
54 |
+
}
|
55 |
+
|
56 |
+
100% {
|
57 |
+
fill: #0000;
|
58 |
+
stroke-dasharray: 50% 0;
|
59 |
+
stroke-dashoffset: -20%;
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
@keyframes dash {
|
64 |
+
0% {
|
65 |
+
fill: var(--off);
|
66 |
+
stroke-dasharray: 0 50%;
|
67 |
+
stroke-dashoffset: 20%;
|
68 |
+
}
|
69 |
+
|
70 |
+
100% {
|
71 |
+
fill: #0000;
|
72 |
+
stroke-dasharray: 50% 0;
|
73 |
+
stroke-dashoffset: -20%;
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
/* logomark default */
|
78 |
+
|
79 |
+
#logomark--dark + #logomark {
|
80 |
+
display: inline-block;
|
81 |
+
}
|
82 |
+
|
83 |
+
@media (prefers-color-scheme: light) {
|
84 |
+
|
85 |
+
#logomark--dark {
|
86 |
+
display: none;
|
87 |
+
}
|
88 |
+
|
89 |
+
#logomark--dark + #logomark {
|
90 |
+
display: inline-block;
|
91 |
+
}
|
92 |
+
|
93 |
+
}
|
94 |
+
|
95 |
+
@media (prefers-color-scheme: dark) {
|
96 |
+
|
97 |
+
#logomark--dark {
|
98 |
+
display: inline-block;
|
99 |
+
}
|
100 |
+
|
101 |
+
#logomark--dark + #logomark {
|
102 |
+
display: none;
|
103 |
+
}
|
104 |
+
|
105 |
+
}
|
assets/css/component/marginpar.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.marginpar {
|
2 |
+
left: var(--golden-ratio);
|
3 |
+
margin-right: 0;
|
4 |
+
margin-left: calc(var(--marginparwidth) * -1);
|
5 |
+
font-size: var(--small);
|
6 |
+
font-style: italic;
|
7 |
+
}
|
8 |
+
|
9 |
+
.marginpar.abs {
|
10 |
+
/* will ignore clear attribute */
|
11 |
+
position: absolute;
|
12 |
+
right: var(--void);
|
13 |
+
left: unset;
|
14 |
+
}
|
15 |
+
|
16 |
+
.marginpar-ctrl,
|
17 |
+
.marginpar-ctrl + label::before {
|
18 |
+
position: absolute;
|
19 |
+
top: -100vh;
|
20 |
+
}
|
21 |
+
|
22 |
+
@media screen and (max-width: 640px) {
|
23 |
+
|
24 |
+
.marginpar-ctrl + label {
|
25 |
+
display: inline-flex;
|
26 |
+
padding: 2pt;
|
27 |
+
}
|
28 |
+
|
29 |
+
.marginpar-ctrl + label::before {
|
30 |
+
position: unset;
|
31 |
+
display: block !important;
|
32 |
+
left: 0;
|
33 |
+
}
|
34 |
+
|
35 |
+
.marginpar-ctrl:checked + label::before {
|
36 |
+
--anm: unset;
|
37 |
+
color: var(--ac);
|
38 |
+
}
|
39 |
+
|
40 |
+
.marginpar {
|
41 |
+
display: none;
|
42 |
+
float: unset;
|
43 |
+
}
|
44 |
+
|
45 |
+
.marginpar-ctrl:checked + label + .marginpar {
|
46 |
+
display: block;
|
47 |
+
position: unset;
|
48 |
+
margin: 1ex 0;
|
49 |
+
}
|
50 |
+
|
51 |
+
}
|
assets/css/component/menu.css
ADDED
@@ -0,0 +1,560 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
ul.delimiter,
|
2 |
+
ul.breadcrumb,
|
3 |
+
nav > ul,
|
4 |
+
ul[role=presentation] {
|
5 |
+
margin: 0;
|
6 |
+
list-style: none;
|
7 |
+
font-size: inherit;
|
8 |
+
}
|
9 |
+
|
10 |
+
ul.delimiter,
|
11 |
+
ul.delimiter li,
|
12 |
+
ul.inline,
|
13 |
+
ul.inline li,
|
14 |
+
nav > ul,
|
15 |
+
nav > ul > li {
|
16 |
+
display: inline;
|
17 |
+
padding: 0;
|
18 |
+
}
|
19 |
+
|
20 |
+
/* container */
|
21 |
+
|
22 |
+
body > header,
|
23 |
+
body > header > nav {
|
24 |
+
display: flex;
|
25 |
+
z-index: 2;
|
26 |
+
}
|
27 |
+
|
28 |
+
#top-nav {
|
29 |
+
margin-left: auto;
|
30 |
+
font-weight: bold;
|
31 |
+
}
|
32 |
+
|
33 |
+
#top-nav[open],
|
34 |
+
#has-main-menu {
|
35 |
+
flex: 1;
|
36 |
+
}
|
37 |
+
|
38 |
+
#top-nav > nav {
|
39 |
+
display: flex;
|
40 |
+
justify-content: flex-end;
|
41 |
+
gap: 1ex;
|
42 |
+
}
|
43 |
+
|
44 |
+
#logo + #top-nav #main-menu,
|
45 |
+
#logo + #top-nav #main-menu .l1 {
|
46 |
+
/* flush item to right-end when logotype on the left */
|
47 |
+
justify-content: flex-end;
|
48 |
+
}
|
49 |
+
|
50 |
+
#main-menu .l1 {
|
51 |
+
display: flex;
|
52 |
+
gap: 1ex;
|
53 |
+
}
|
54 |
+
|
55 |
+
/* menu icon */
|
56 |
+
|
57 |
+
.menu-icon::before {
|
58 |
+
content: '\e90b';
|
59 |
+
font-family: 'base-ui';
|
60 |
+
}
|
61 |
+
|
62 |
+
.keydown .menu-icon::before {
|
63 |
+
border: var(--border);
|
64 |
+
}
|
65 |
+
|
66 |
+
#has-more-menu > summary {
|
67 |
+
width: 43pt;
|
68 |
+
}
|
69 |
+
|
70 |
+
#has-a11y[open] > summary .icon::before,
|
71 |
+
#has-search[open] .icon::before,
|
72 |
+
details[open] > summary > .menu-icon::before {
|
73 |
+
--anm: blinking 2s step-end infinite;
|
74 |
+
color: var(--ac);
|
75 |
+
}
|
76 |
+
|
77 |
+
/* on 'hull' viewport */
|
78 |
+
|
79 |
+
#i18n-menu,
|
80 |
+
#more-menu,
|
81 |
+
.on-hull,
|
82 |
+
.screening {
|
83 |
+
/* 'hull' --vbody container */
|
84 |
+
position: fixed;
|
85 |
+
top: var(--vhead);
|
86 |
+
left: 0;
|
87 |
+
width: 100vw;
|
88 |
+
height: var(--vbody);
|
89 |
+
}
|
90 |
+
|
91 |
+
.screening {
|
92 |
+
/* obscure main body */
|
93 |
+
--blur: blur(0.2vmin);
|
94 |
+
--dim: brightness(0.96);
|
95 |
+
z-index: -1;
|
96 |
+
background-color: #80808008;
|
97 |
+
-webkit-backdrop-filter: var(--blur) var(--dim);
|
98 |
+
backdrop-filter: var(--blur) var(--dim);
|
99 |
+
}
|
100 |
+
|
101 |
+
/* item on 'deck' */
|
102 |
+
|
103 |
+
.on-deck,
|
104 |
+
a#has-i18n {
|
105 |
+
display: flex;
|
106 |
+
align-items: center;
|
107 |
+
justify-content: center;
|
108 |
+
margin: auto 0;
|
109 |
+
padding: unset;
|
110 |
+
min-width: var(--vhead);
|
111 |
+
height: calc(var(--vhead) - 12pt);
|
112 |
+
max-height: 4.2rem;
|
113 |
+
}
|
114 |
+
|
115 |
+
#has-i18n > .on-deck {
|
116 |
+
padding: 0 1ex;
|
117 |
+
width: unset;
|
118 |
+
}
|
119 |
+
|
120 |
+
/* item on 'plank' */
|
121 |
+
|
122 |
+
.on-plank {
|
123 |
+
/* add on-plank */
|
124 |
+
display: flex;
|
125 |
+
flex-direction: column;
|
126 |
+
border: var(--border);
|
127 |
+
border-radius: 1ex;
|
128 |
+
background: var(--bg);
|
129 |
+
padding: 1.414ex;
|
130 |
+
width: fit-content;
|
131 |
+
max-height: calc(var(--vbody) - 2rem);
|
132 |
+
overflow-y: auto;
|
133 |
+
gap: 1ex;
|
134 |
+
}
|
135 |
+
|
136 |
+
.on-plank ul {
|
137 |
+
display: flex;
|
138 |
+
flex-direction: column;
|
139 |
+
margin: 0 1ex;
|
140 |
+
border-right: var(--bound);
|
141 |
+
padding: 1ex;
|
142 |
+
gap: 1ex;
|
143 |
+
}
|
144 |
+
|
145 |
+
details[open] .on-plank,
|
146 |
+
.l1 details[open] > ul,
|
147 |
+
.marginpar-ctrl:checked + label + .marginpar {
|
148 |
+
--anm: expand 99ms forwards;
|
149 |
+
--tso: top;
|
150 |
+
}
|
151 |
+
|
152 |
+
#main-menu .on-plank {
|
153 |
+
position: fixed;
|
154 |
+
top: calc(var(--vhead) + 1rem);
|
155 |
+
max-width: 20rem;
|
156 |
+
translate: -1.414ex;
|
157 |
+
}
|
158 |
+
|
159 |
+
#i18n-menu > .on-plank,
|
160 |
+
#more-menu > .on-plank {
|
161 |
+
/* .on-hull > .on-plank */
|
162 |
+
margin: 1rem var(--void) 1rem auto;
|
163 |
+
max-width: var(--max-width);
|
164 |
+
}
|
165 |
+
|
166 |
+
/* visible menu item */
|
167 |
+
|
168 |
+
#has-l10n a,
|
169 |
+
#top-nav a,
|
170 |
+
.anchor {
|
171 |
+
display: flex;
|
172 |
+
align-items: baseline;
|
173 |
+
border: 2pt solid transparent;
|
174 |
+
border-width: 0 0 2pt 0;
|
175 |
+
padding: 1ex;
|
176 |
+
width: 100%;
|
177 |
+
color: var(--fg);
|
178 |
+
}
|
179 |
+
|
180 |
+
#top-nav a > .icon::after {
|
181 |
+
content: '\a0';
|
182 |
+
}
|
183 |
+
|
184 |
+
#top-nav a.has-desc {
|
185 |
+
flex-direction: column;
|
186 |
+
}
|
187 |
+
|
188 |
+
.anchor {
|
189 |
+
align-items: center;
|
190 |
+
}
|
191 |
+
|
192 |
+
#has-l10n a:hover,
|
193 |
+
#has-l10n a:focus,
|
194 |
+
#top-nav a:hover,
|
195 |
+
#top-nav a:focus,
|
196 |
+
.anchor:hover,
|
197 |
+
.anchor:focus {
|
198 |
+
--anm: underline 127ms ease-in;
|
199 |
+
color: var(--ac);
|
200 |
+
border-color: var(--ac);
|
201 |
+
}
|
202 |
+
|
203 |
+
@-webkit-keyframes underline {
|
204 |
+
from {
|
205 |
+
border-image: linear-gradient(to right, var(--ac), transparent 100%) 1;
|
206 |
+
}
|
207 |
+
|
208 |
+
50% {
|
209 |
+
border-image: linear-gradient(to right, var(--ac), transparent 50%) 1;
|
210 |
+
}
|
211 |
+
|
212 |
+
to {
|
213 |
+
border-image: linear-gradient(to right, var(--ac), transparent 0%) 1;
|
214 |
+
}
|
215 |
+
}
|
216 |
+
|
217 |
+
@keyframes underline {
|
218 |
+
from {
|
219 |
+
border-image: linear-gradient(to right, transparent, transparent) 1;
|
220 |
+
}
|
221 |
+
|
222 |
+
50% {
|
223 |
+
border-image: linear-gradient(to right, var(--ac), transparent) 1;
|
224 |
+
}
|
225 |
+
|
226 |
+
to {
|
227 |
+
border-image: linear-gradient(to right, var(--ac), var(--ac)) 1;
|
228 |
+
}
|
229 |
+
}
|
230 |
+
|
231 |
+
.marginpar-ctrl + label::before,
|
232 |
+
.anchor:after {
|
233 |
+
/* add indicator [v] */
|
234 |
+
--tst: 200ms ease-out;
|
235 |
+
position: relative;
|
236 |
+
top: 0.23em;
|
237 |
+
left: 0.43em;
|
238 |
+
margin-left: auto;
|
239 |
+
background: linear-gradient(to top, transparent 49%, var(--g18) 51%);
|
240 |
+
-webkit-background-clip: text;
|
241 |
+
background-clip: text;
|
242 |
+
color: transparent;
|
243 |
+
font: 8pt 'base-ui';
|
244 |
+
content: '\e913';
|
245 |
+
}
|
246 |
+
|
247 |
+
.anchor:hover::after {
|
248 |
+
background: linear-gradient(to top, transparent 49%, var(--ac) 51%);
|
249 |
+
-webkit-background-clip: text;
|
250 |
+
background-clip: text;
|
251 |
+
color: transparent;
|
252 |
+
}
|
253 |
+
|
254 |
+
#has-i18n .anchor::after {
|
255 |
+
left: unset;
|
256 |
+
}
|
257 |
+
|
258 |
+
.marginpar-ctrl:checked + label::before,
|
259 |
+
details[open] > .anchor:after {
|
260 |
+
/* change indicator state [x] */
|
261 |
+
--anm: blinking 3s step-end infinite;
|
262 |
+
background: unset;
|
263 |
+
top: 0;
|
264 |
+
color: var(--g18);
|
265 |
+
}
|
266 |
+
|
267 |
+
details[open] > .anchor.on-deck:after {
|
268 |
+
/* make opened <details> element more prominent */
|
269 |
+
color: red;
|
270 |
+
}
|
271 |
+
|
272 |
+
/* bilingual */
|
273 |
+
|
274 |
+
a#has-i18n {
|
275 |
+
width: auto;
|
276 |
+
font-weight: 700;
|
277 |
+
font-size: 0.9em;
|
278 |
+
gap: 3pt;
|
279 |
+
}
|
280 |
+
|
281 |
+
a#has-i18n > .alt,
|
282 |
+
a#has-i18n:hover > .act,
|
283 |
+
a#has-i18n:focus > .act,
|
284 |
+
a#has-i18n:active > .act {
|
285 |
+
/* active/current language */
|
286 |
+
color: var(--g18);
|
287 |
+
}
|
288 |
+
|
289 |
+
a#has-i18n:hover > .alt,
|
290 |
+
a#has-i18n:focus > .alt,
|
291 |
+
a#has-i18n:active > .alt {
|
292 |
+
/* alternate language */
|
293 |
+
color: var(--fg);
|
294 |
+
}
|
295 |
+
|
296 |
+
/* multilingual */
|
297 |
+
|
298 |
+
#has-i18n .on-deck {
|
299 |
+
gap: 3pt;
|
300 |
+
}
|
301 |
+
|
302 |
+
#has-l10n {
|
303 |
+
display: inline-block;
|
304 |
+
}
|
305 |
+
|
306 |
+
#has-l10n summary {
|
307 |
+
display: block !important;
|
308 |
+
padding: 3.5pt 1.4ex 3.5pt 3.5pt;
|
309 |
+
font-size: 0.9em;
|
310 |
+
}
|
311 |
+
|
312 |
+
#has-l10n > summary::before {
|
313 |
+
font-family: 'base-ui';
|
314 |
+
content: '\e90a\a0';
|
315 |
+
}
|
316 |
+
|
317 |
+
#has-l10n a,
|
318 |
+
#i18n-menu a {
|
319 |
+
align-items: center;
|
320 |
+
gap: 1ex;
|
321 |
+
}
|
322 |
+
|
323 |
+
#has-l10n img,
|
324 |
+
#has-i18n img {
|
325 |
+
border-radius: 2pt;
|
326 |
+
width: auto;
|
327 |
+
height: 8pt;
|
328 |
+
object-fit: cover;
|
329 |
+
}
|
330 |
+
|
331 |
+
#has-l10n .on-plank {
|
332 |
+
position: absolute;
|
333 |
+
z-index: 1;
|
334 |
+
margin-top: 1ex;
|
335 |
+
border: var(--border);
|
336 |
+
background: var(--bg);
|
337 |
+
width: auto;
|
338 |
+
}
|
339 |
+
|
340 |
+
.parent-anchor a::after,
|
341 |
+
#i18n-menu a::after,
|
342 |
+
#content a::after {
|
343 |
+
--tsf: rotate(45deg);
|
344 |
+
display: inline-block;
|
345 |
+
margin-top: 0.3em;
|
346 |
+
margin-left: auto;
|
347 |
+
font: 0.7em 'base-ui';
|
348 |
+
content: '\e902';
|
349 |
+
}
|
350 |
+
|
351 |
+
.parent-anchor a::after,
|
352 |
+
#i18n-menu a::after {
|
353 |
+
color: var(--g18);
|
354 |
+
}
|
355 |
+
|
356 |
+
.hero nav a {
|
357 |
+
color: var(--fg);
|
358 |
+
position: relative;
|
359 |
+
}
|
360 |
+
|
361 |
+
.hero nav .t {
|
362 |
+
top: 150%;
|
363 |
+
}
|
364 |
+
|
365 |
+
.hero nav a .icon {
|
366 |
+
display: inline-flex;
|
367 |
+
margin: 2pt;
|
368 |
+
padding: 6pt;
|
369 |
+
font-size: var(--large);
|
370 |
+
}
|
371 |
+
|
372 |
+
@media only screen and (max-width: 640px) {
|
373 |
+
|
374 |
+
/* container behaviour */
|
375 |
+
|
376 |
+
#top-nav * {
|
377 |
+
outline: none !important;
|
378 |
+
}
|
379 |
+
|
380 |
+
#top-nav[open] > nav {
|
381 |
+
--anm: expand 99ms forwards;
|
382 |
+
--tso: top;
|
383 |
+
}
|
384 |
+
|
385 |
+
#main-menu {
|
386 |
+
display: unset;
|
387 |
+
}
|
388 |
+
|
389 |
+
#main-menu .l1 {
|
390 |
+
flex-direction: column;
|
391 |
+
}
|
392 |
+
|
393 |
+
/* swap menu-icon */
|
394 |
+
|
395 |
+
#top-nav > summary,
|
396 |
+
#top-nav[open] > summary {
|
397 |
+
display: flex !important;
|
398 |
+
margin-left: auto;
|
399 |
+
width: 43pt;
|
400 |
+
}
|
401 |
+
|
402 |
+
#has-more-menu > summary {
|
403 |
+
width: 100%;
|
404 |
+
}
|
405 |
+
|
406 |
+
#has-more-menu .t,
|
407 |
+
#has-search .t {
|
408 |
+
display: initial;
|
409 |
+
position: unset;
|
410 |
+
visibility: unset;
|
411 |
+
background: unset;
|
412 |
+
width: 100%;
|
413 |
+
color: inherit;
|
414 |
+
font: inherit;
|
415 |
+
}
|
416 |
+
|
417 |
+
/* swap screen element */
|
418 |
+
|
419 |
+
#top-nav-screen.screening {
|
420 |
+
display: block;
|
421 |
+
background-color: var(--bg);
|
422 |
+
backdrop-filter: blur(5vmin);
|
423 |
+
}
|
424 |
+
|
425 |
+
/* swap hull element */
|
426 |
+
|
427 |
+
#top-nav > nav {
|
428 |
+
position: fixed;
|
429 |
+
top: var(--vhead);
|
430 |
+
left: 0;
|
431 |
+
flex-direction: column;
|
432 |
+
justify-content: unset;
|
433 |
+
z-index: 3;
|
434 |
+
padding: 1.414ex;
|
435 |
+
width: 100vw;
|
436 |
+
height: var(--vbody);
|
437 |
+
overflow-y: auto;
|
438 |
+
}
|
439 |
+
|
440 |
+
#i18n-menu,
|
441 |
+
#more-menu,
|
442 |
+
#hasDuckDuckGo,
|
443 |
+
#main-menu .on-plank {
|
444 |
+
/* also unset main menu plank */
|
445 |
+
position: unset;
|
446 |
+
width: unset;
|
447 |
+
max-width: unset;
|
448 |
+
height: unset;
|
449 |
+
}
|
450 |
+
|
451 |
+
/* reorder hull item */
|
452 |
+
|
453 |
+
#has-search {
|
454 |
+
order: 1;
|
455 |
+
}
|
456 |
+
|
457 |
+
#has-main-menu {
|
458 |
+
flex: unset;
|
459 |
+
order: 2;
|
460 |
+
}
|
461 |
+
|
462 |
+
#has-more-menu {
|
463 |
+
order: 3;
|
464 |
+
}
|
465 |
+
|
466 |
+
#has-i18n {
|
467 |
+
order: 4;
|
468 |
+
margin: auto 1ex 2rem;
|
469 |
+
}
|
470 |
+
|
471 |
+
/* redefine deck element */
|
472 |
+
|
473 |
+
#top-nav > nav .on-deck {
|
474 |
+
justify-content: unset;
|
475 |
+
height: unset;
|
476 |
+
}
|
477 |
+
|
478 |
+
#top-nav > nav #has-i18n .on-deck {
|
479 |
+
padding: 1ex;
|
480 |
+
}
|
481 |
+
|
482 |
+
/* swap plank element */
|
483 |
+
|
484 |
+
.on-plank {
|
485 |
+
border: unset;
|
486 |
+
background: unset;
|
487 |
+
min-width: unset;
|
488 |
+
max-height: unset;
|
489 |
+
}
|
490 |
+
|
491 |
+
#main-menu .on-plank {
|
492 |
+
margin: 0 1ex;
|
493 |
+
border-right: var(--bound);
|
494 |
+
border-radius: 0;
|
495 |
+
padding: 1ex;
|
496 |
+
translate: unset;
|
497 |
+
}
|
498 |
+
|
499 |
+
#i18n-menu > .on-plank ,
|
500 |
+
#more-menu > .on-plank {
|
501 |
+
/* .on-hull > .on-plank */
|
502 |
+
margin: unset;
|
503 |
+
padding: 0;
|
504 |
+
width: 100%;
|
505 |
+
}
|
506 |
+
|
507 |
+
#has-main-menu,
|
508 |
+
#has-more-menu,
|
509 |
+
#has-search {
|
510 |
+
/* make as plank */
|
511 |
+
margin: 1ex;
|
512 |
+
border: var(--border);
|
513 |
+
border-radius: 1ex;
|
514 |
+
background: var(--bg);
|
515 |
+
padding: 1ex;
|
516 |
+
}
|
517 |
+
|
518 |
+
details[open] > .anchor.on-deck:after {
|
519 |
+
color: var(--g18);
|
520 |
+
}
|
521 |
+
|
522 |
+
/* bilingual */
|
523 |
+
|
524 |
+
a#has-i18n::after {
|
525 |
+
margin: 0 auto 0 1.5ex;
|
526 |
+
content: attr(aria-label);
|
527 |
+
}
|
528 |
+
|
529 |
+
a#has-i18n > img {
|
530 |
+
display: initial;
|
531 |
+
}
|
532 |
+
|
533 |
+
/* multilingual */
|
534 |
+
|
535 |
+
#has-i18n img {
|
536 |
+
height: 12pt;
|
537 |
+
}
|
538 |
+
|
539 |
+
#i18n-menu {
|
540 |
+
margin-top: 1ex;
|
541 |
+
}
|
542 |
+
|
543 |
+
.languangeName {
|
544 |
+
display: block !important;
|
545 |
+
margin-left: 0.5ex;
|
546 |
+
}
|
547 |
+
|
548 |
+
/* hide desktop element */
|
549 |
+
|
550 |
+
#top-nav > nav .screening,
|
551 |
+
#top-nav > summary > .t,
|
552 |
+
#has-search[open] > summary,
|
553 |
+
#has-more-menu[open] > summary,
|
554 |
+
#has-more-menu .menu-icon,
|
555 |
+
#has-search .icon,
|
556 |
+
.iso639 {
|
557 |
+
display: none;
|
558 |
+
}
|
559 |
+
|
560 |
+
}
|
assets/css/component/search.css
ADDED
@@ -0,0 +1,196 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#has-search > summary::before {
|
2 |
+
padding: 0 1ex;
|
3 |
+
font-family: 'base-ui';
|
4 |
+
font-weight: 400;
|
5 |
+
content: '\e911';
|
6 |
+
}
|
7 |
+
|
8 |
+
#duckduckgo,
|
9 |
+
.pagefind-ui {
|
10 |
+
margin: 1rem var(--void) 1rem auto;
|
11 |
+
width: calc(var(--marginparwidth) - 1rem);
|
12 |
+
min-width: 17rem;
|
13 |
+
max-height: calc(var(--vbody) - 2rem);
|
14 |
+
font-weight: normal;
|
15 |
+
}
|
16 |
+
|
17 |
+
.pagefind-ui {
|
18 |
+
display: flex;
|
19 |
+
flex-direction: column;
|
20 |
+
border: var(--border);
|
21 |
+
border-radius: 1ex;
|
22 |
+
background: var(--bg);
|
23 |
+
padding: 1.414ex;
|
24 |
+
overflow-y: auto;
|
25 |
+
gap: 1ex;
|
26 |
+
}
|
27 |
+
|
28 |
+
#has-search[open] > summary > .t,
|
29 |
+
.pagefind-ui__search-clear {
|
30 |
+
display: none;
|
31 |
+
}
|
32 |
+
|
33 |
+
.pagefind-ui__drawer p {
|
34 |
+
margin: 0;
|
35 |
+
}
|
36 |
+
|
37 |
+
#duckduckgo {
|
38 |
+
flex-direction: row;
|
39 |
+
}
|
40 |
+
|
41 |
+
.form {
|
42 |
+
align-items: center;
|
43 |
+
}
|
44 |
+
|
45 |
+
/* the search box */
|
46 |
+
|
47 |
+
.form__input {
|
48 |
+
flex: 1;
|
49 |
+
border: none;
|
50 |
+
border-radius: 2rem 0 0 2rem;
|
51 |
+
background: none;
|
52 |
+
padding: 0;
|
53 |
+
padding-left: 1em;
|
54 |
+
color: var(--fg);
|
55 |
+
font-family: var(--sf), sans-serif;
|
56 |
+
}
|
57 |
+
|
58 |
+
#duckduckgo .form__input {
|
59 |
+
--ac: #de5833;
|
60 |
+
flex: 1;
|
61 |
+
border-bottom: 2pt solid var(--g18s);
|
62 |
+
border-radius: 0.25ex;
|
63 |
+
padding: 1ex;
|
64 |
+
}
|
65 |
+
|
66 |
+
.pagefind-ui__search-input:hover,
|
67 |
+
.pagefind-ui__search-input:focus,
|
68 |
+
#duckduckgo .form__input:hover,
|
69 |
+
#duckduckgo .form__input:focus {
|
70 |
+
--anm: underline 127ms ease-in;
|
71 |
+
outline: none !important;
|
72 |
+
border-color: var(--ac);
|
73 |
+
-webkit-animation: var(--anm);
|
74 |
+
-moz-animation: var(--anm);
|
75 |
+
-o-animation: var(--anm);
|
76 |
+
animation: var(--anm);
|
77 |
+
}
|
78 |
+
|
79 |
+
/* the search button */
|
80 |
+
|
81 |
+
.pagefind-ui__button,
|
82 |
+
.form__reset,
|
83 |
+
.form__button {
|
84 |
+
display: inline-flex;
|
85 |
+
position: relative;
|
86 |
+
border: none;
|
87 |
+
border-radius: 0 50% 50% 0;
|
88 |
+
background: none;
|
89 |
+
padding: 0;
|
90 |
+
}
|
91 |
+
|
92 |
+
#duckduckgo .form__button,
|
93 |
+
#duckduckgo .form__button > img {
|
94 |
+
width: 2rem;
|
95 |
+
height: 2rem;
|
96 |
+
}
|
97 |
+
|
98 |
+
#duckduckgo .form__input:hover + .form__button,
|
99 |
+
#duckduckgo .form__input:focus + .form__button {
|
100 |
+
--tsf: scaleX(-1);
|
101 |
+
}
|
102 |
+
|
103 |
+
#duckduckgo .form__button:hover,
|
104 |
+
#duckduckgo .form__button:focus {
|
105 |
+
--tsf: scale(1.1);
|
106 |
+
}
|
107 |
+
|
108 |
+
.form:invalid .form__reset {
|
109 |
+
opacity: 0;
|
110 |
+
pointer-events: none;
|
111 |
+
}
|
112 |
+
|
113 |
+
.form:valid .form__reset {
|
114 |
+
opacity: 1;
|
115 |
+
pointer-events: all;
|
116 |
+
}
|
117 |
+
|
118 |
+
/* additional pagefind styles */
|
119 |
+
|
120 |
+
.pagefind-ui__form {
|
121 |
+
display: flex;
|
122 |
+
flex-direction: column;
|
123 |
+
gap: 1ex;
|
124 |
+
}
|
125 |
+
|
126 |
+
.pagefind-ui__search-input {
|
127 |
+
margin: 1ex 1ex 0.5ex;
|
128 |
+
border: 0;
|
129 |
+
border-bottom: 2pt solid var(--g18s);
|
130 |
+
background: none;
|
131 |
+
padding: 1ex !important;
|
132 |
+
color: var(--fg);
|
133 |
+
}
|
134 |
+
|
135 |
+
.pagefind-ui__drawer {
|
136 |
+
margin: 0 1ex;
|
137 |
+
padding: 0 1ex;
|
138 |
+
}
|
139 |
+
|
140 |
+
p.pagefind-ui__message {
|
141 |
+
margin: 1ex 0;
|
142 |
+
}
|
143 |
+
|
144 |
+
.pagefind-ui__result-excerpt {
|
145 |
+
color: var(--mid);
|
146 |
+
font-size: var(--small);
|
147 |
+
}
|
148 |
+
|
149 |
+
ol.pagefind-ui__results {
|
150 |
+
margin: 0;
|
151 |
+
padding: 0;
|
152 |
+
list-style: none;
|
153 |
+
}
|
154 |
+
|
155 |
+
.pagefind-ui__result {
|
156 |
+
margin-bottom: 1rem;
|
157 |
+
}
|
158 |
+
|
159 |
+
a.pagefind-ui__result-link {
|
160 |
+
border-bottom: 0 !important;
|
161 |
+
padding: 1ex 1ex 0.5ex !important;
|
162 |
+
font-weight: 700;
|
163 |
+
}
|
164 |
+
|
165 |
+
.pagefind-ui__result-excerpt {
|
166 |
+
padding: 0 1ex;
|
167 |
+
font-size: 0.9em;
|
168 |
+
}
|
169 |
+
|
170 |
+
@media only screen and (max-width: 640px) {
|
171 |
+
|
172 |
+
#has-search .on-deck {
|
173 |
+
flex-direction: row-reverse;
|
174 |
+
}
|
175 |
+
|
176 |
+
#has-search .t {
|
177 |
+
padding: 1ex;
|
178 |
+
text-align: unset;
|
179 |
+
}
|
180 |
+
|
181 |
+
#search,
|
182 |
+
#hasDuckDuckGo {
|
183 |
+
position: unset;
|
184 |
+
padding: 0;
|
185 |
+
width: unset;
|
186 |
+
height: unset;
|
187 |
+
}
|
188 |
+
|
189 |
+
.pagefind-ui,
|
190 |
+
#duckduckgo {
|
191 |
+
margin: 1ex;
|
192 |
+
padding: 0;
|
193 |
+
border: unset;
|
194 |
+
}
|
195 |
+
|
196 |
+
}
|
assets/css/component/share.css
ADDED
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.form#mastodon {
|
2 |
+
display: inline-flex;
|
3 |
+
width: 100%;
|
4 |
+
}
|
5 |
+
|
6 |
+
#mastodonInstance {
|
7 |
+
/* passive mode; display as button */
|
8 |
+
display: none;
|
9 |
+
height: 2.654rem;
|
10 |
+
}
|
11 |
+
|
12 |
+
#has-mastodon.active {
|
13 |
+
/* active mode display as form */
|
14 |
+
flex: 1;
|
15 |
+
}
|
16 |
+
|
17 |
+
#has-mastodon.active #mastodonInstance {
|
18 |
+
display: initial !important;
|
19 |
+
}
|
20 |
+
|
21 |
+
#has-mastodon.active #mastodon {
|
22 |
+
border: 3pt solid #563acc02;
|
23 |
+
border-radius: 2rem;
|
24 |
+
background: #563acc22;
|
25 |
+
}
|
26 |
+
|
27 |
+
#mastodonInstance ~ button:focus .mastodon,
|
28 |
+
#mastodonInstance:focus ~ button .mastodon {
|
29 |
+
background: #4f36b5;
|
30 |
+
color: #fff;
|
31 |
+
}
|
32 |
+
|
33 |
+
#has-share {
|
34 |
+
margin:var(--vskip);
|
35 |
+
padding-bottom: 2pt;
|
36 |
+
}
|
37 |
+
|
38 |
+
#has-share[open] {
|
39 |
+
padding-bottom: 0;
|
40 |
+
}
|
41 |
+
|
42 |
+
#share {
|
43 |
+
float: left;
|
44 |
+
margin: 1pt 0;
|
45 |
+
}
|
46 |
+
|
47 |
+
#has-share[open] #share {
|
48 |
+
background: unset;
|
49 |
+
padding-left: 0;
|
50 |
+
color: unset;
|
51 |
+
}
|
52 |
+
|
53 |
+
#has-share[open] #share::after {
|
54 |
+
content: ':';
|
55 |
+
}
|
56 |
+
|
57 |
+
#has-share ul {
|
58 |
+
display: flex;
|
59 |
+
position: relative;
|
60 |
+
flex-wrap: wrap;
|
61 |
+
align-items: center;
|
62 |
+
justify-content: center;
|
63 |
+
text-align: center;
|
64 |
+
}
|
65 |
+
|
66 |
+
#has-share a {
|
67 |
+
display: inline-flex;
|
68 |
+
position: relative;
|
69 |
+
}
|
70 |
+
|
71 |
+
#has-share i {
|
72 |
+
border-radius: 2rem;
|
73 |
+
padding: 0.62rem;
|
74 |
+
font-size: var(--Large);
|
75 |
+
}
|
76 |
+
|
77 |
+
#has-share i:hover {
|
78 |
+
--tst: 200ms ease-in;
|
79 |
+
opacity: 1;
|
80 |
+
}
|
81 |
+
|
82 |
+
#has-share a:focus i,
|
83 |
+
#has-share i:hover {
|
84 |
+
color: #fff !important;
|
85 |
+
}
|
86 |
+
|
87 |
+
/* Social sharing button */
|
88 |
+
#has-share .email {color: var(--mid)}
|
89 |
+
#has-share a:focus .email,
|
90 |
+
#has-share .email:hover {background: var(--mid)}
|
91 |
+
#has-share .bluesky {color: #1185fe}
|
92 |
+
#has-share a:focus .bluesky,
|
93 |
+
#has-share .bluesky:hover {background: #0072ce}
|
94 |
+
#has-share .facebook {color: #3b5998}
|
95 |
+
#has-share a:focus .facebook,
|
96 |
+
#has-share .facebook:hover {background: #2d4373}
|
97 |
+
#has-share .hackernews {color: #FF6600}
|
98 |
+
#has-share a:focus .hackernews,
|
99 |
+
#has-share .hackernews:hover {background: #FB6200}
|
100 |
+
#has-share .linkedin {color: #0077b5}
|
101 |
+
#has-share a:focus .linkedin,
|
102 |
+
#has-share .linkedin:hover {background: #046293}
|
103 |
+
#has-share .mastodon {color: #563acc}
|
104 |
+
#has-share a:focus .mastodon,
|
105 |
+
#has-share .mastodon:hover {background: #4f36b5}
|
106 |
+
#has-share .pinterest {color: #bd081c}
|
107 |
+
#has-share a:focus .pinterest,
|
108 |
+
#has-share .pinterest:hover {background: #8c0615}
|
109 |
+
#has-share .reddit {color: #5f99cf}
|
110 |
+
#has-share a:focus .reddit,
|
111 |
+
#has-share .reddit:hover {background: #3a80c1}
|
112 |
+
#has-share .telegram {color: #54A9EB}
|
113 |
+
#has-share a:focus .telegram,
|
114 |
+
#has-share .telegram:hover {background: #4B97D1}
|
115 |
+
#has-share .tumblr {color: #35465C}
|
116 |
+
#has-share a:focus .tumblr,
|
117 |
+
#has-share .tumblr:hover {background: #222d3c}
|
118 |
+
#has-share .twitter {color: #55acee}
|
119 |
+
#has-share a:focus .twitter,
|
120 |
+
#has-share .twitter:hover {background: #2795e9}
|
121 |
+
#has-share .vk {color: #507299}
|
122 |
+
#has-share a:focus .vk,
|
123 |
+
#has-share .vk:hover {background: #43648c}
|
124 |
+
#has-share .whatsapp {color: #25D366}
|
125 |
+
#has-share a:focus .whatsapp,
|
126 |
+
#has-share .whatsapp:hover {background: #1DA851}
|
127 |
+
#has-share .xing {color: #1a7576}
|
128 |
+
#has-share a:focus .xing,
|
129 |
+
#has-share .xing:hover {background: #114C4C}
|
130 |
+
|
131 |
+
@media only screen and (max-width: 844px) {
|
132 |
+
|
133 |
+
#share {
|
134 |
+
float: unset;
|
135 |
+
}
|
136 |
+
|
137 |
+
#has-share[open] #share {
|
138 |
+
padding-left: 16.18pt;
|
139 |
+
}
|
140 |
+
|
141 |
+
#has-mastodon.active {
|
142 |
+
flex: 0 0 100%;
|
143 |
+
}
|
144 |
+
|
145 |
+
#has-mastodon.active #mastodon {
|
146 |
+
margin-bottom: 1ex;
|
147 |
+
max-width: 27em;
|
148 |
+
}
|
149 |
+
|
150 |
+
}
|
assets/css/component/skipper.css
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#to-content {
|
2 |
+
/* displayed to screen reader,
|
3 |
+
but visually removed to oustide canvas */
|
4 |
+
--tsf: translateY(-100vmax);
|
5 |
+
display: flex;
|
6 |
+
position: fixed;
|
7 |
+
top: 0;
|
8 |
+
left: 0;
|
9 |
+
align-items: center;
|
10 |
+
justify-content: center;
|
11 |
+
z-index: 3;
|
12 |
+
outline: none !important;
|
13 |
+
background: var(--bg) !important;
|
14 |
+
width: 100vw;
|
15 |
+
height: var(--vhead);
|
16 |
+
}
|
17 |
+
|
18 |
+
#to-content:focus {
|
19 |
+
/* replace top nav on focus */
|
20 |
+
--tsf: translate(0);
|
21 |
+
}
|
22 |
+
|
23 |
+
body > footer > nav {
|
24 |
+
margin-left: auto;
|
25 |
+
}
|
26 |
+
|
27 |
+
#to-top {
|
28 |
+
padding: 1ex;
|
29 |
+
color: var(--fg);
|
30 |
+
overflow: hidden;
|
31 |
+
}
|
32 |
+
|
33 |
+
#to-top::before {
|
34 |
+
--tsf: rotate(-45deg);
|
35 |
+
display: inline-flex;
|
36 |
+
transition: 0.2s;
|
37 |
+
font-family: 'base-ui';
|
38 |
+
content: '\e902';
|
39 |
+
}
|
40 |
+
|
41 |
+
#to-top:hover::before,
|
42 |
+
#to-top:focus::before {
|
43 |
+
--tsf: unset;
|
44 |
+
}
|
assets/css/custom.css
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
:root {
|
2 |
+
/* default contrast */
|
3 |
+
--ac-light: #36c;
|
4 |
+
--fg-light: #111;
|
5 |
+
--bg-light: #f9f9fb;
|
6 |
+
--midtone: gray;
|
7 |
+
--fg-dark: #f9f9fb;
|
8 |
+
--bg-dark: #111;
|
9 |
+
--ac-dark: #fa0;
|
10 |
+
|
11 |
+
/* less contrast */
|
12 |
+
--ac-light-less: var(--ac-light);
|
13 |
+
--fg-light-less: #13253d;
|
14 |
+
--bg-light-less: #e7e2e2;
|
15 |
+
--midtone-less: #7d8490;
|
16 |
+
--fg-dark-less: #e7e2e2;
|
17 |
+
--bg-dark-less: #13253d;
|
18 |
+
--ac-dark-less: var(--ac-dark);
|
19 |
+
|
20 |
+
/* more contrast */
|
21 |
+
--ac-light-more: var(--ac-light);
|
22 |
+
--fg-light-more: #000;
|
23 |
+
--bg-light-more: #fff;
|
24 |
+
--midtone-more: gray;
|
25 |
+
--fg-dark-more: #fff;
|
26 |
+
--bg-dark-more: #000;
|
27 |
+
--ac-dark-more: var(--ac-dark);
|
28 |
+
}
|
assets/css/layout/_default/baseof.css
ADDED
@@ -0,0 +1,318 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
<body
|
3 |
+
id='$layout'
|
4 |
+
class='$colorpalette'
|
5 |
+
>
|
6 |
+
<header>=====[sticky]======</header>
|
7 |
+
<main id='$kind'>
|
8 |
+
<footer id=main-footer></footer>
|
9 |
+
</main>
|
10 |
+
<footer>=====[sticky]======<</footer>
|
11 |
+
</body>
|
12 |
+
*/
|
13 |
+
|
14 |
+
:root {
|
15 |
+
--golden-ratio: 61.803398%;
|
16 |
+
--canonic: 70.710678%;
|
17 |
+
--max-width: 1024px;
|
18 |
+
--void: calc((100vw - var(--canonic) - 1rem) / 2);
|
19 |
+
--vhead: 4.2rem;
|
20 |
+
--vfoot: 3.33rem;
|
21 |
+
--vbody: calc(100vh - var(--vhead) - var(--vfoot));
|
22 |
+
--marginparwidth: 27vw; /* --canonic - ( --canonic * --golden-ratio) */
|
23 |
+
--g18: #80808080;
|
24 |
+
--g18s: #80808022;
|
25 |
+
--bound: 1pt dotted var(--g18);
|
26 |
+
--border: 1pt solid var(--g18s);
|
27 |
+
--box-shadow-hover: 0 1px 0.5px var(--g18);
|
28 |
+
--box-shadow-focus: 0 0.5px 1px var(--g18);
|
29 |
+
--box-shadow-active: 0 0.5px 0.5px var(--mid);
|
30 |
+
font-size: calc(var(--fontScale) * 10pt);
|
31 |
+
}
|
32 |
+
|
33 |
+
::-webkit-scrollbar {
|
34 |
+
/* width: 8pt;
|
35 |
+
height: 8pt; */
|
36 |
+
scroll-behavior: smooth;
|
37 |
+
}
|
38 |
+
|
39 |
+
::-webkit-scrollbar-track {
|
40 |
+
background: transparent;
|
41 |
+
border-radius: 9pt !important;
|
42 |
+
}
|
43 |
+
|
44 |
+
::-webkit-scrollbar-thumb {
|
45 |
+
background: var(--g18);
|
46 |
+
opacity: 0.86;
|
47 |
+
border-radius: 9pt !important;
|
48 |
+
}
|
49 |
+
|
50 |
+
* {
|
51 |
+
box-sizing: border-box;
|
52 |
+
scroll-margin-top: calc(var(--vhead) + 4.118rem);
|
53 |
+
scroll-behavior: smooth;
|
54 |
+
scrollbar-color: var(--g18) transparent;
|
55 |
+
scrollbar-width: thin;
|
56 |
+
text-rendering: optimizeLegibility;
|
57 |
+
kerning: auto;
|
58 |
+
font-kerning: auto;
|
59 |
+
-webkit-font-feature-settings: 'kern' 1;
|
60 |
+
-moz-font-feature-settings: 'kern' 1;
|
61 |
+
font-feature-settings: 'kern' 1;
|
62 |
+
-webkit-hyphens: auto;
|
63 |
+
-moz-hyphens: auto;
|
64 |
+
hyphens: auto;
|
65 |
+
-webkit-hyphenate-after: 3;
|
66 |
+
hyphenate-after: 3;
|
67 |
+
-webkit-hyphenate-before: 3;
|
68 |
+
hyphenate-before: 3;
|
69 |
+
-webkit-hyphenate-lines: 2;
|
70 |
+
hyphenate-lines: 2;
|
71 |
+
orphans: 2;
|
72 |
+
widows: 2;
|
73 |
+
}
|
74 |
+
|
75 |
+
body {
|
76 |
+
margin: 0 !important;
|
77 |
+
padding: unset !important;
|
78 |
+
line-height: calc(var(--baselineStretch) * 1.414);
|
79 |
+
color: var(--fg);
|
80 |
+
font-family: var(--sf), sans-serif;
|
81 |
+
font-size: var(--normalsize);
|
82 |
+
--y6a: #af7c9d; --w8u: #628618; --s8i: #ed7495; --n8e: #6c80b3;
|
83 |
+
--m4i: #355240; --y4i: #921823; --f8a: #7972b6; --s4n: #018ace;
|
84 |
+
--d3u: #654b3c; --r6a: #534b1a; --y4a: #13355b; --k8i: #ee850f;
|
85 |
+
--y6i: #00728c; --o5a: #8d2f4a; --c3u: #5b516a; --s5o: #365b75;
|
86 |
+
--s5e: #493280; --y7i: #00b1dd; --i3i: #e9142a; --t9u: #014d1f;
|
87 |
+
}
|
88 |
+
|
89 |
+
body {
|
90 |
+
max-width: unset !important;
|
91 |
+
padding: unset !important;
|
92 |
+
}
|
93 |
+
|
94 |
+
body > header {
|
95 |
+
position: -webkit-sticky;
|
96 |
+
position: sticky;
|
97 |
+
top: 0;
|
98 |
+
align-items: center;
|
99 |
+
justify-content: space-between;
|
100 |
+
height: var(--vhead);
|
101 |
+
}
|
102 |
+
|
103 |
+
body > main {
|
104 |
+
min-height: var(--vbody);
|
105 |
+
}
|
106 |
+
|
107 |
+
.marginpar,
|
108 |
+
body > main > aside {
|
109 |
+
position: relative;
|
110 |
+
float: right;
|
111 |
+
clear: right;
|
112 |
+
padding-left: var(--indent);
|
113 |
+
width: var(--marginparwidth);
|
114 |
+
}
|
115 |
+
|
116 |
+
body > main > #main-footer {
|
117 |
+
position: relative;
|
118 |
+
margin: var(--bigskip) 1ex 1rem;
|
119 |
+
border: var(--border);
|
120 |
+
border-radius: 1ex;
|
121 |
+
background: #000;
|
122 |
+
width: calc(100% - 2ex);
|
123 |
+
color: #fff;
|
124 |
+
}
|
125 |
+
|
126 |
+
body > footer {
|
127 |
+
display: flex !important;
|
128 |
+
position: -webkit-sticky;
|
129 |
+
position: sticky;
|
130 |
+
bottom: 0;
|
131 |
+
align-items: center;
|
132 |
+
justify-content: space-between;
|
133 |
+
z-index: 2;
|
134 |
+
height: var(--vfoot);
|
135 |
+
font-size: var(--small);
|
136 |
+
}
|
137 |
+
|
138 |
+
#top,
|
139 |
+
.pagewidth {
|
140 |
+
padding-right: var(--void);
|
141 |
+
padding-left: var(--void);
|
142 |
+
/* width: var(--canonic);
|
143 |
+
max-width: var(--max-width); */
|
144 |
+
}
|
145 |
+
|
146 |
+
.textwidth {
|
147 |
+
width: var(--golden-ratio);
|
148 |
+
}
|
149 |
+
|
150 |
+
#main-footer .pagewidth {
|
151 |
+
padding: 0 calc(var(--void) - 1ex - 1rem);
|
152 |
+
margin: 1ex 1ex 2ex;
|
153 |
+
}
|
154 |
+
|
155 |
+
#main-footer .column > *,
|
156 |
+
#main-footer .column__item {
|
157 |
+
/* margin: 1ex 0; */
|
158 |
+
border: 0.1pt solid transparent;
|
159 |
+
}
|
160 |
+
|
161 |
+
#main-footer .section-title,
|
162 |
+
#menu-footer::before {
|
163 |
+
display: block;
|
164 |
+
margin: 1ex 0 0;
|
165 |
+
font-size: var(--small);
|
166 |
+
}
|
167 |
+
|
168 |
+
#main-footer-primary,
|
169 |
+
#main-footer-secondary > * {
|
170 |
+
break-inside: avoid-column;
|
171 |
+
}
|
172 |
+
|
173 |
+
#main-footer p {
|
174 |
+
margin: 0;
|
175 |
+
font-size: var(--small);
|
176 |
+
}
|
177 |
+
|
178 |
+
#menu-footer a {
|
179 |
+
display: inline-flex;
|
180 |
+
position: relative;
|
181 |
+
padding: 0.62rem;
|
182 |
+
color: #fff;
|
183 |
+
font-size: var(--large);
|
184 |
+
}
|
185 |
+
|
186 |
+
#menu-footer a .t{
|
187 |
+
--tsf: translate(-3em);
|
188 |
+
}
|
189 |
+
|
190 |
+
hr {
|
191 |
+
border-top: var(--border);
|
192 |
+
border-width: 1pt 0 0 0;
|
193 |
+
}
|
194 |
+
|
195 |
+
@media only screen and (min-width: 1440px) {
|
196 |
+
|
197 |
+
:root {
|
198 |
+
--void: calc((100vw - var(--max-width) - 1rem) / 2) !important;
|
199 |
+
--marginparwidth: 391.13320448px !important;
|
200 |
+
/* --max-width - (100% - --golden-ratio) */
|
201 |
+
}
|
202 |
+
|
203 |
+
}
|
204 |
+
|
205 |
+
@media only screen and (max-width: 960px) {
|
206 |
+
|
207 |
+
:root {
|
208 |
+
--void: calc((100vw - var(--canonic) - var(--vfoot) - var(--vhead)) / 2);
|
209 |
+
}
|
210 |
+
|
211 |
+
}
|
212 |
+
|
213 |
+
@media only screen and (max-width: 640px) {
|
214 |
+
|
215 |
+
:root {
|
216 |
+
--void: var(--vfoot) !important;
|
217 |
+
--marginparwidth: 100% !important;
|
218 |
+
--canonic: 86%;
|
219 |
+
--golden-ratio: 100%;
|
220 |
+
}
|
221 |
+
|
222 |
+
#main-footer .pagewidth {
|
223 |
+
padding-right: calc(var(--void) / 2);
|
224 |
+
padding-left: calc(var(--void) / 2);
|
225 |
+
}
|
226 |
+
|
227 |
+
}
|
228 |
+
|
229 |
+
@media only screen and (max-width: 540px) {
|
230 |
+
|
231 |
+
:root {
|
232 |
+
--void: calc(var(--vfoot) / 1.414) !important;
|
233 |
+
}
|
234 |
+
|
235 |
+
#main-footer-primary,
|
236 |
+
#main-footer-secondary {
|
237 |
+
column-span: all;
|
238 |
+
}
|
239 |
+
|
240 |
+
}
|
241 |
+
|
242 |
+
@media only screen and (max-width: 480px) {
|
243 |
+
|
244 |
+
:root {
|
245 |
+
--void: calc(var(--vfoot) / 2) !important;
|
246 |
+
}
|
247 |
+
|
248 |
+
}
|
249 |
+
|
250 |
+
@media (prefers-color-scheme: light) {
|
251 |
+
|
252 |
+
body {
|
253 |
+
--bg: var(--bg-light);
|
254 |
+
--mid: var(--midtone);
|
255 |
+
--fg: var(--fg-light);
|
256 |
+
--ac: var(--ac-light);
|
257 |
+
--off: #000;
|
258 |
+
}
|
259 |
+
|
260 |
+
@media (prefers-contrast: more),
|
261 |
+
(-ms-high-contrast: active) {
|
262 |
+
|
263 |
+
body {
|
264 |
+
--bg: var(--bg-light-more);
|
265 |
+
--mid: var(--midtone-more);
|
266 |
+
--fg: var(--fg-light-more);
|
267 |
+
--ac: var(--ac-light-more);
|
268 |
+
}
|
269 |
+
|
270 |
+
}
|
271 |
+
|
272 |
+
@media (prefers-contrast: less) {
|
273 |
+
|
274 |
+
body {
|
275 |
+
--bg: var(--bg-light-less);
|
276 |
+
--mid: var(--midtone-less);
|
277 |
+
--fg: var(--fg-light-less);
|
278 |
+
--ac: var(--ac-light-less);
|
279 |
+
}
|
280 |
+
|
281 |
+
}
|
282 |
+
|
283 |
+
}
|
284 |
+
|
285 |
+
@media (prefers-color-scheme: dark) {
|
286 |
+
|
287 |
+
body {
|
288 |
+
--bg: var(--bg-dark);
|
289 |
+
--mid: var(--midtone);
|
290 |
+
--fg: var(--fg-dark);
|
291 |
+
--ac: var(--ac-dark);
|
292 |
+
--off: #fff;
|
293 |
+
}
|
294 |
+
|
295 |
+
@media (prefers-contrast: more),
|
296 |
+
(-ms-high-contrast: active) {
|
297 |
+
|
298 |
+
body {
|
299 |
+
--bg: var(--bg-dark-more);
|
300 |
+
--mid: var(--midtone-more);
|
301 |
+
--fg: var(--fg-dark-more);
|
302 |
+
--ac: var(--ac-dark-more);
|
303 |
+
}
|
304 |
+
|
305 |
+
}
|
306 |
+
|
307 |
+
@media (prefers-contrast: less) {
|
308 |
+
|
309 |
+
body {
|
310 |
+
--bg: var(--bg-dark-less);
|
311 |
+
--mid: var(--midtone-less);
|
312 |
+
--fg: var(--fg-dark-less);
|
313 |
+
--ac: var(--ac-dark-less);
|
314 |
+
}
|
315 |
+
|
316 |
+
}
|
317 |
+
|
318 |
+
}
|
assets/css/layout/_default/home.css
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* this style is used inline in list.html */
|
2 |
+
|
3 |
+
body {
|
4 |
+
margin: auto;
|
5 |
+
max-width: 2560px;
|
6 |
+
}
|
7 |
+
|
8 |
+
body > footer.pagewidth,
|
9 |
+
body > header.pagewidth {
|
10 |
+
padding: 0 calc(1.5rem + 1ex);
|
11 |
+
}
|
12 |
+
|
13 |
+
body > aside.carousel {
|
14 |
+
position: sticky;
|
15 |
+
position: -webkit-sticky;
|
16 |
+
left: 0;
|
17 |
+
float: left;
|
18 |
+
/* border: var(--border);
|
19 |
+
border-radius: 1ex; */
|
20 |
+
padding: 1rem;
|
21 |
+
width: 38vw;
|
22 |
+
height: var(--vbody);
|
23 |
+
}
|
24 |
+
|
25 |
+
body > main#home {
|
26 |
+
height: var(--vbody);
|
27 |
+
overflow-y: auto;
|
28 |
+
}
|
29 |
+
|
30 |
+
body > main#home > aside#list-tags {
|
31 |
+
top: 0;
|
32 |
+
right: 0;
|
33 |
+
margin: 1rem auto;
|
34 |
+
width: calc(100% - var(--golden-ratio))
|
35 |
+
}
|
36 |
+
|
37 |
+
#home #top {
|
38 |
+
padding: 1rem;
|
39 |
+
}
|
40 |
+
|
41 |
+
#home #list-posts {
|
42 |
+
padding: 1rem;
|
43 |
+
width: var(--golden-ratio);
|
44 |
+
}
|
45 |
+
|
46 |
+
div[role='feed'] {
|
47 |
+
padding: 1ex;
|
48 |
+
}
|
49 |
+
|
50 |
+
.carousel .feed-item,
|
51 |
+
#home .feed-item,
|
52 |
+
hr.ldots {
|
53 |
+
width: unset;
|
54 |
+
}
|
55 |
+
|
56 |
+
#main-footer > .pagewidth {
|
57 |
+
padding: 0 1ex;
|
58 |
+
}
|
59 |
+
|
60 |
+
#duckduckgo,
|
61 |
+
#i18n-menu > .on-plank,
|
62 |
+
#more-menu > .on-plank,
|
63 |
+
.pagefind-ui {
|
64 |
+
margin-right: 1rem;
|
65 |
+
}
|
66 |
+
|
67 |
+
#hasDuckDuckGo.pagewidth {
|
68 |
+
padding-right: 1rem;
|
69 |
+
}
|
70 |
+
|
71 |
+
#grain {
|
72 |
+
display: none;
|
73 |
+
}
|
74 |
+
|
75 |
+
@media only screen and (max-width: 960px) {
|
76 |
+
|
77 |
+
body > footer,
|
78 |
+
body > header {
|
79 |
+
background: var(--bg);
|
80 |
+
}
|
81 |
+
|
82 |
+
body > aside.carousel {
|
83 |
+
float: unset;
|
84 |
+
margin: 0 1rem;
|
85 |
+
padding: 1rem 0;
|
86 |
+
width: unset;
|
87 |
+
}
|
88 |
+
|
89 |
+
body > main#home {
|
90 |
+
height: unset;
|
91 |
+
overflow-y: unset;
|
92 |
+
}
|
93 |
+
|
94 |
+
body > main#home > aside#list-tags {
|
95 |
+
top: var(--vhead);
|
96 |
+
}
|
97 |
+
|
98 |
+
}
|
99 |
+
|
100 |
+
@media only screen and (max-width: 640px) {
|
101 |
+
|
102 |
+
#main-footer > .pagewidth {
|
103 |
+
padding: 0 calc(var(--void) / 2);
|
104 |
+
}
|
105 |
+
|
106 |
+
body > main#home > aside#list-tags {
|
107 |
+
padding: unset;
|
108 |
+
width: var(--canonic);
|
109 |
+
}
|
110 |
+
|
111 |
+
aside + #list-posts .feed-item > section {
|
112 |
+
flex-direction: row-reverse;
|
113 |
+
aspect-ratio: 10/3;
|
114 |
+
}
|
115 |
+
|
116 |
+
#home #list-posts {
|
117 |
+
margin: var(--bigskip) auto;
|
118 |
+
padding: unset;
|
119 |
+
width: var(--canonic);
|
120 |
+
}
|
121 |
+
|
122 |
+
#list-posts .section-title {
|
123 |
+
padding-left: unset;
|
124 |
+
}
|
125 |
+
|
126 |
+
#duckduckgo,
|
127 |
+
.pagefind-ui {
|
128 |
+
margin-right: 1ex;
|
129 |
+
}
|
130 |
+
|
131 |
+
}
|
132 |
+
|
133 |
+
@media only screen and (max-width: 480px) {
|
134 |
+
|
135 |
+
aside + #list-posts .feed-item > section {
|
136 |
+
flex-direction: column;
|
137 |
+
aspect-ratio: unset;
|
138 |
+
}
|
139 |
+
|
140 |
+
}
|
141 |
+
|
assets/css/layout/_default/list.css
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
hr.ldots {
|
2 |
+
margin-left: 0;
|
3 |
+
border: none;
|
4 |
+
width: var(--golden-ratio);
|
5 |
+
}
|
6 |
+
|
7 |
+
hr.ldots::after {
|
8 |
+
--tsf: translateY(-2.3rem);
|
9 |
+
display: block;
|
10 |
+
width: 100%;
|
11 |
+
height: 1rem;
|
12 |
+
text-align: center;
|
13 |
+
color: var(--g18s);
|
14 |
+
font-size: 3rem;
|
15 |
+
content: '…';
|
16 |
+
}
|
17 |
+
|
18 |
+
#list-subsection {
|
19 |
+
padding: 0 calc(1rem - 1ex);
|
20 |
+
}
|
21 |
+
|
22 |
+
#list-subsection .carousel__viewport,
|
23 |
+
#taxonomy .carousel__viewport,
|
24 |
+
#taxonomy #list-tags ul {
|
25 |
+
padding: 0 1rem;
|
26 |
+
}
|
27 |
+
|
28 |
+
#list-series,
|
29 |
+
#list-categories {
|
30 |
+
display: flex;
|
31 |
+
flex-direction: row-reverse;
|
32 |
+
flex-wrap: nowrap;
|
33 |
+
align-items: flex-start;
|
34 |
+
}
|
35 |
+
|
36 |
+
#list-series .section-title,
|
37 |
+
#list-categories .section-title {
|
38 |
+
margin: var(--smallskip);
|
39 |
+
writing-mode: tb;
|
40 |
+
}
|
41 |
+
|
42 |
+
#list-tags {
|
43 |
+
position: sticky;
|
44 |
+
position: -webkit-sticky;
|
45 |
+
top: var(--vhead);
|
46 |
+
right: var(--void);
|
47 |
+
}
|
48 |
+
|
49 |
+
.section-title,
|
50 |
+
#list-tags > ul {
|
51 |
+
margin: var(--medskip) 0 1ex;
|
52 |
+
}
|
53 |
+
|
54 |
+
#term section.pagewidth,
|
55 |
+
#taxonomy section.pagewidth,
|
56 |
+
#list-posts {
|
57 |
+
min-height: calc(var(--vbody) - 7.258rem);
|
58 |
+
}
|
59 |
+
|
60 |
+
#taxonomy #list-tags {
|
61 |
+
position: unset;
|
62 |
+
float: unset;
|
63 |
+
margin: unset;
|
64 |
+
padding: 0 var(--void);
|
65 |
+
width: unset;
|
66 |
+
}
|
67 |
+
|
68 |
+
#taxonomy #list-series,
|
69 |
+
#taxonomy #list-categories {
|
70 |
+
display: unset;
|
71 |
+
}
|
72 |
+
|
73 |
+
#taxonomy #list-tags .section-title,
|
74 |
+
#taxonomy #list-series .section-title,
|
75 |
+
#taxonomy #list-categories .section-title {
|
76 |
+
margin: var(--bigskip) 0 var(--smallskip);
|
77 |
+
writing-mode: unset;
|
78 |
+
}
|
79 |
+
|
80 |
+
#has-pagination {
|
81 |
+
margin-top: 1in;
|
82 |
+
}
|
83 |
+
|
84 |
+
.section-title#series {
|
85 |
+
margin-left: auto;
|
86 |
+
width: var(--golden-ratio);
|
87 |
+
}
|
88 |
+
|
89 |
+
.list-year.textwidth {
|
90 |
+
display: flex;
|
91 |
+
position: relative;
|
92 |
+
align-items: baseline;
|
93 |
+
margin-left: auto;
|
94 |
+
}
|
95 |
+
|
96 |
+
.list-year > .section-title {
|
97 |
+
padding: 8pt;
|
98 |
+
width: 5rem;
|
99 |
+
text-align: right;
|
100 |
+
}
|
101 |
+
|
102 |
+
.list-year > div {
|
103 |
+
flex: 1;
|
104 |
+
}
|
105 |
+
|
106 |
+
.list-month > summary {
|
107 |
+
padding-left: 1rem;
|
108 |
+
list-style: none;
|
109 |
+
}
|
110 |
+
|
111 |
+
.list-day a {
|
112 |
+
display: block;
|
113 |
+
margin: 1ex 1rem;
|
114 |
+
padding: 1ex 0;
|
115 |
+
width: 100%;
|
116 |
+
font-size: var(--normalsize);
|
117 |
+
}
|
118 |
+
|
119 |
+
.list-day a.has-pre::before {
|
120 |
+
position: absolute;
|
121 |
+
left: -9pt;
|
122 |
+
padding: 0.25rem 0;
|
123 |
+
width: 5rem;
|
124 |
+
text-align: right;
|
125 |
+
text-transform: uppercase;
|
126 |
+
letter-spacing: .1em;
|
127 |
+
font-size: var(--footnotesize);
|
128 |
+
}
|
129 |
+
|
130 |
+
#feed ul.rounded.invert a {
|
131 |
+
font-size: var(--footnotesize);
|
132 |
+
}
|
133 |
+
|
134 |
+
@media only screen and (max-width: 640px) {
|
135 |
+
|
136 |
+
body > main > aside#list-tags {
|
137 |
+
position: unset;
|
138 |
+
position: unset;
|
139 |
+
float: unset;
|
140 |
+
margin: var(--bigskip) auto;
|
141 |
+
padding: 0;
|
142 |
+
width: var(--canonic);
|
143 |
+
}
|
144 |
+
|
145 |
+
}
|
assets/css/layout/_default/single.css
ADDED
@@ -0,0 +1,344 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#main-article {
|
2 |
+
margin-top: 1in;
|
3 |
+
line-height: calc(var(--baselineStretch) * 1.618);
|
4 |
+
font-family: var(--rm), serif;
|
5 |
+
}
|
6 |
+
|
7 |
+
/* article frontmatter */
|
8 |
+
|
9 |
+
#main-article > header {
|
10 |
+
display: flex;
|
11 |
+
flex-direction: column;
|
12 |
+
margin:var(--vskip);
|
13 |
+
gap: 1rem;
|
14 |
+
}
|
15 |
+
|
16 |
+
.subtitle {
|
17 |
+
opacity: 0.86;
|
18 |
+
margin: 1ex 0 0;
|
19 |
+
font-style: italic;
|
20 |
+
}
|
21 |
+
|
22 |
+
#main-article [role=doc-credit],
|
23 |
+
#main-article [role=doc-colophon] {
|
24 |
+
font-size: var(--small);
|
25 |
+
}
|
26 |
+
|
27 |
+
#doc-cover > img {
|
28 |
+
margin: 2rem 0;
|
29 |
+
aspect-ratio: 10 / 8;
|
30 |
+
}
|
31 |
+
|
32 |
+
figure img,
|
33 |
+
figure svg {
|
34 |
+
width: 100%;
|
35 |
+
height: auto;
|
36 |
+
object-fit: cover;
|
37 |
+
}
|
38 |
+
|
39 |
+
#doc-author,
|
40 |
+
#doc-author a {
|
41 |
+
color: var(--fg);
|
42 |
+
font-style: italic;
|
43 |
+
}
|
44 |
+
|
45 |
+
/* with avatar */
|
46 |
+
#avatar,
|
47 |
+
.author,
|
48 |
+
.mastodon-comment > footer {
|
49 |
+
display: flex;
|
50 |
+
align-items: center;
|
51 |
+
line-height: 1.272;
|
52 |
+
}
|
53 |
+
|
54 |
+
#doc-author .has-aria-label::after {
|
55 |
+
font: 1rem var(--sf);
|
56 |
+
}
|
57 |
+
|
58 |
+
.mastodon-comment > .author > img,
|
59 |
+
#avatar {
|
60 |
+
margin-right: 12pt;
|
61 |
+
}
|
62 |
+
|
63 |
+
.author img {
|
64 |
+
border-radius: 50%;
|
65 |
+
width: 3rem;
|
66 |
+
height: 3rem;
|
67 |
+
}
|
68 |
+
|
69 |
+
.author > a::after {
|
70 |
+
font-size: 0.9em;
|
71 |
+
color: var(--mid);
|
72 |
+
}
|
73 |
+
|
74 |
+
.author > a > span {
|
75 |
+
color: var(--fg);
|
76 |
+
font-weight: bold;
|
77 |
+
}
|
78 |
+
|
79 |
+
.author > a > span img {
|
80 |
+
width: 1em;
|
81 |
+
height: 1em;
|
82 |
+
vertical-align: text-top;
|
83 |
+
}
|
84 |
+
|
85 |
+
header time {
|
86 |
+
font-style: italic;
|
87 |
+
-webkit-font-feature-settings:'onum' 1;
|
88 |
+
-moz-font-feature-settings:'onum' 1;
|
89 |
+
font-feature-settings:'onum' 1;
|
90 |
+
font-variant-numeric: oldstyle-nums;
|
91 |
+
}
|
92 |
+
|
93 |
+
#page .date-has-label > time:before {
|
94 |
+
content: attr(data-time-label)' ';
|
95 |
+
}
|
96 |
+
|
97 |
+
#page .date-has-label > time,
|
98 |
+
#keywords li {
|
99 |
+
text-transform: lowercase;
|
100 |
+
}
|
101 |
+
|
102 |
+
.doc-publish-date::before {
|
103 |
+
text-transform: initial;
|
104 |
+
}
|
105 |
+
|
106 |
+
#has-TableOfContents,
|
107 |
+
#comments-error {
|
108 |
+
margin: var(--medskip) 0;
|
109 |
+
}
|
110 |
+
|
111 |
+
#has-TableOfContents ul {
|
112 |
+
list-style: none;
|
113 |
+
font-style: italic;
|
114 |
+
}
|
115 |
+
|
116 |
+
#main-article audio {
|
117 |
+
border-radius: 2rem;
|
118 |
+
}
|
119 |
+
|
120 |
+
#main-article audio,
|
121 |
+
#main-article section > p {
|
122 |
+
margin: 0.618pc 0;
|
123 |
+
width: var(--golden-ratio);
|
124 |
+
}
|
125 |
+
|
126 |
+
/* article mainmatter */
|
127 |
+
|
128 |
+
#content hr {
|
129 |
+
display: block;
|
130 |
+
margin: 0.618pc 0;
|
131 |
+
border: 0;
|
132 |
+
border-bottom: var(--bound);
|
133 |
+
}
|
134 |
+
|
135 |
+
#content table {
|
136 |
+
margin: 0.618pc 0;
|
137 |
+
width: 100%;
|
138 |
+
overflow-x: auto;
|
139 |
+
}
|
140 |
+
|
141 |
+
#content figure {
|
142 |
+
clear: both;
|
143 |
+
max-width: var(--golden-ratio);
|
144 |
+
overflow: auto;
|
145 |
+
}
|
146 |
+
|
147 |
+
#content figure.fullwidth {
|
148 |
+
max-width: none;
|
149 |
+
}
|
150 |
+
|
151 |
+
#content p:not(:first-of-type) {
|
152 |
+
text-indent: var(--indent);
|
153 |
+
}
|
154 |
+
|
155 |
+
#content p img {
|
156 |
+
width: calc(100% - var(--indent));
|
157 |
+
}
|
158 |
+
|
159 |
+
/* article backmatter */
|
160 |
+
|
161 |
+
#main-article > footer {
|
162 |
+
margin:var(--vskip);
|
163 |
+
border-bottom: var(--bound) ;
|
164 |
+
}
|
165 |
+
|
166 |
+
.footnote-ref {
|
167 |
+
padding: 0 0.5ex;
|
168 |
+
font-size: var(--footnotesize);
|
169 |
+
}
|
170 |
+
|
171 |
+
.footnotes {
|
172 |
+
font-size: var(--footnotesize);
|
173 |
+
}
|
174 |
+
|
175 |
+
.footnotes hr {
|
176 |
+
margin: 3rem 0 0;
|
177 |
+
border-bottom: 1px solid;
|
178 |
+
width: 16.18rem;
|
179 |
+
}
|
180 |
+
|
181 |
+
#has-timeline > p,
|
182 |
+
.footnotes ol {
|
183 |
+
margin-top: 0;
|
184 |
+
padding: 0;
|
185 |
+
}
|
186 |
+
|
187 |
+
.footnotes li::marker {
|
188 |
+
font-feature-settings: 'sups' 1;
|
189 |
+
font-variant-position: super;
|
190 |
+
}
|
191 |
+
|
192 |
+
#content,
|
193 |
+
#keywords,
|
194 |
+
#contentinfo {
|
195 |
+
margin: var(--vskip);
|
196 |
+
overflow-wrap: break-word;
|
197 |
+
}
|
198 |
+
|
199 |
+
.verbose {
|
200 |
+
font: 1rem/2rem monospace;
|
201 |
+
overflow-wrap: anywhere;
|
202 |
+
}
|
203 |
+
|
204 |
+
#colophon{
|
205 |
+
grid-column: 1;
|
206 |
+
}
|
207 |
+
|
208 |
+
#colophon > div {
|
209 |
+
display: flex;
|
210 |
+
margin-top: 1ex;
|
211 |
+
gap: 1rem;
|
212 |
+
}
|
213 |
+
|
214 |
+
#qr {
|
215 |
+
padding-top: 4pt;
|
216 |
+
}
|
217 |
+
|
218 |
+
#contribute {
|
219 |
+
grid-column: 2;
|
220 |
+
border-radius: 1ex;
|
221 |
+
background-color: var(--g18s);
|
222 |
+
padding: 1.4rem 1.4rem 1rem;
|
223 |
+
height: fit-content;
|
224 |
+
line-height: 1.618;
|
225 |
+
font-family: var(--sf);
|
226 |
+
font-size: var(--small);
|
227 |
+
}
|
228 |
+
|
229 |
+
#contrib-menu li {
|
230 |
+
margin: 1ex 1ex 1ex 0;
|
231 |
+
}
|
232 |
+
|
233 |
+
#contrib-menu a {
|
234 |
+
display: inline-block;
|
235 |
+
border-radius: 1ex;
|
236 |
+
background: var(--ac);
|
237 |
+
padding: 4pt 9pt 3pt 7pt;
|
238 |
+
color: var(--bg);
|
239 |
+
}
|
240 |
+
|
241 |
+
#contentinfo ol {
|
242 |
+
position: relative;
|
243 |
+
margin-bottom: 0;
|
244 |
+
padding-left: 2.5rem;
|
245 |
+
list-style: none;
|
246 |
+
counter-reset: li;
|
247 |
+
}
|
248 |
+
|
249 |
+
#contentinfo ol li {
|
250 |
+
margin-bottom: 1ex;
|
251 |
+
padding-bottom: 1ex;
|
252 |
+
}
|
253 |
+
|
254 |
+
#contentinfo ol li::before {
|
255 |
+
display: inline-block;
|
256 |
+
position: absolute;
|
257 |
+
left: 0;
|
258 |
+
border-radius: 2rem;
|
259 |
+
background: var(--g18s);
|
260 |
+
padding: 4pt 7pt;
|
261 |
+
color: var(--mid);
|
262 |
+
font: 0.7em monospace;
|
263 |
+
content: counter(li);
|
264 |
+
counter-increment: li;
|
265 |
+
}
|
266 |
+
|
267 |
+
#contentinfo ol li.see-more::before {
|
268 |
+
content: '>';
|
269 |
+
}
|
270 |
+
|
271 |
+
#has-timeline ol {
|
272 |
+
margin: 1ex 0 0 1rem;
|
273 |
+
border-left: 2.5pt solid var(--g18s);
|
274 |
+
padding: 1ex 0 0 1rem;
|
275 |
+
}
|
276 |
+
|
277 |
+
#has-timeline ol li::before {
|
278 |
+
left: -1rem;
|
279 |
+
border: 4pt solid var(--bg);
|
280 |
+
background: var(--mid);
|
281 |
+
padding: 0 3pt;
|
282 |
+
font-size: 0.6em;
|
283 |
+
content: '\a0';
|
284 |
+
}
|
285 |
+
|
286 |
+
#TableOfContents,
|
287 |
+
.letterine {
|
288 |
+
text-transform: lowercase;
|
289 |
+
letter-spacing: 0.1em;
|
290 |
+
font-variant: small-caps;
|
291 |
+
-webkit-font-feature-settings: 'smcp' 1;
|
292 |
+
-moz-font-feature-settings: 'smcp' 1;
|
293 |
+
font-feature-settings: 'smcp' 1;
|
294 |
+
}
|
295 |
+
|
296 |
+
.letterine::before {
|
297 |
+
display: block;
|
298 |
+
border-bottom: 2pt solid var(--ac);
|
299 |
+
content: '';
|
300 |
+
}
|
301 |
+
|
302 |
+
.letterine > i {
|
303 |
+
/* <span class='letterine'><i>e</i>xample</span>
|
304 |
+
inconsistence result across browsers
|
305 |
+
*/
|
306 |
+
position: relative;
|
307 |
+
top: -0.2rem;
|
308 |
+
float: left;
|
309 |
+
background: var(--bg);
|
310 |
+
padding-right: .1em;
|
311 |
+
line-height: 0.5;
|
312 |
+
color: var(--ac);
|
313 |
+
font-size: 6em;
|
314 |
+
}
|
315 |
+
|
316 |
+
#has-timeline .has-aria-label-top {
|
317 |
+
margin: 5pt 0;
|
318 |
+
}
|
319 |
+
|
320 |
+
#contentinfo {
|
321 |
+
display: grid;
|
322 |
+
grid-template-columns: 6fr 4fr;
|
323 |
+
gap: var(--medskip);
|
324 |
+
}
|
325 |
+
|
326 |
+
#has-share,
|
327 |
+
#comments {
|
328 |
+
grid-column: 1 / 3;
|
329 |
+
}
|
330 |
+
|
331 |
+
@media screen and (max-width: 640px) {
|
332 |
+
|
333 |
+
#contentinfo {
|
334 |
+
display: block;
|
335 |
+
}
|
336 |
+
|
337 |
+
#contentinfo > * {
|
338 |
+
margin-bottom: var(--bigskip) ;
|
339 |
+
}
|
340 |
+
.katex-display {
|
341 |
+
overflow-x: auto;
|
342 |
+
}
|
343 |
+
|
344 |
+
}
|
assets/css/media/print.css
ADDED
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@media print {
|
2 |
+
|
3 |
+
:root {
|
4 |
+
font-size: 10pt;
|
5 |
+
}
|
6 |
+
|
7 |
+
@page {
|
8 |
+
margin: 10vmin;
|
9 |
+
}
|
10 |
+
|
11 |
+
body {
|
12 |
+
background: none;
|
13 |
+
padding-left: 0;
|
14 |
+
max-width: 100vw;
|
15 |
+
}
|
16 |
+
|
17 |
+
body > header,
|
18 |
+
body > footer,
|
19 |
+
body > footer *,
|
20 |
+
body > div,
|
21 |
+
body > aside,
|
22 |
+
body > main > header,
|
23 |
+
audio,
|
24 |
+
#has-share,
|
25 |
+
#background-body,
|
26 |
+
#contribute,
|
27 |
+
#related,
|
28 |
+
#coffee-counter,
|
29 |
+
#menu-footer
|
30 |
+
{
|
31 |
+
display: none;
|
32 |
+
}
|
33 |
+
|
34 |
+
body > main {
|
35 |
+
height: unset;
|
36 |
+
}
|
37 |
+
|
38 |
+
body > main > #main-footer {
|
39 |
+
border: unset;
|
40 |
+
margin:var(--vskip);
|
41 |
+
padding: unset;
|
42 |
+
}
|
43 |
+
|
44 |
+
.pagewidth,
|
45 |
+
#main-footer .pagewidth {
|
46 |
+
padding: 0;
|
47 |
+
}
|
48 |
+
|
49 |
+
body > main > #main-footer {
|
50 |
+
background: none;
|
51 |
+
color: var(--fg);
|
52 |
+
}
|
53 |
+
|
54 |
+
body h1:first-of-type {
|
55 |
+
margin-top: 0;
|
56 |
+
}
|
57 |
+
|
58 |
+
/* dont work properly on firefox
|
59 |
+
h1,
|
60 |
+
section > h1,
|
61 |
+
.section-title {
|
62 |
+
page-break-before: always;
|
63 |
+
break-before: always;
|
64 |
+
|
65 |
+
header > h1 {
|
66 |
+
page-break-before: avoid !important;
|
67 |
+
break-before: avoid !important;
|
68 |
+
}
|
69 |
+
} */
|
70 |
+
|
71 |
+
h1,
|
72 |
+
h2,
|
73 |
+
h3,
|
74 |
+
h4,
|
75 |
+
h5,
|
76 |
+
h6,
|
77 |
+
.section-title {
|
78 |
+
page-break-after: avoid;
|
79 |
+
break-after: avoid;
|
80 |
+
}
|
81 |
+
|
82 |
+
table,
|
83 |
+
img,
|
84 |
+
svg,
|
85 |
+
figure,
|
86 |
+
.sidenote,
|
87 |
+
.marginnote,
|
88 |
+
#comments article,
|
89 |
+
article#feed-item {
|
90 |
+
page-break-inside: avoid;
|
91 |
+
break-inside: avoid;
|
92 |
+
}
|
93 |
+
|
94 |
+
pre > code {
|
95 |
+
margin-left: 0;
|
96 |
+
min-width: 62%;
|
97 |
+
max-width: 100%;
|
98 |
+
white-space: pre-wrap;
|
99 |
+
word-break: break-all;
|
100 |
+
word-wrap: break-word;
|
101 |
+
}
|
102 |
+
|
103 |
+
article #content a::after {
|
104 |
+
--tsf: unset;
|
105 |
+
-webkit-transform: var(--tsf);
|
106 |
+
-moz-transform: var(--tsf);
|
107 |
+
-ms-transform: var(--tsf);
|
108 |
+
-o-transform: var(--tsf);
|
109 |
+
transform: var(--tsf);
|
110 |
+
font: unset;
|
111 |
+
content: '\a0('attr(href)')';
|
112 |
+
}
|
113 |
+
|
114 |
+
#keywords a::after {
|
115 |
+
content: unset;
|
116 |
+
}
|
117 |
+
|
118 |
+
.marginpar {
|
119 |
+
width: var(--golden-ratio);
|
120 |
+
margin-left: calc(var(--golden-ratio) * -1);
|
121 |
+
}
|
122 |
+
|
123 |
+
.marginpar.abs {
|
124 |
+
right: 0;
|
125 |
+
width: 38%;
|
126 |
+
}
|
127 |
+
|
128 |
+
#contentinfo {
|
129 |
+
display: block;
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
/* font-size scaling = 1/sqrt(640/device-width)
|
134 |
+
@media (max-width: 640px) {
|
135 |
+
:root {
|
136 |
+
font-size: calc(var(--fontScale)*100%);
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
@media (max-width: 601px) {
|
141 |
+
:root {
|
142 |
+
font-size: calc(var(--fontScale)*96.9%);
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
@media (max-width: 576px) {
|
147 |
+
:root {
|
148 |
+
font-size: calc(var(--fontScale)*94.8%);
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
@media (max-width: 540px) {
|
153 |
+
:root {
|
154 |
+
font-size: calc(var(--fontScale)*91.8%);
|
155 |
+
}
|
156 |
+
}
|
157 |
+
|
158 |
+
@media (max-width: 512px) {
|
159 |
+
:root {
|
160 |
+
font-size: calc(var(--fontScale)*89.4%);
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
@media (max-width: 480px) {
|
165 |
+
:root {
|
166 |
+
font-size: calc(var(--fontScale)*86.6%);
|
167 |
+
}
|
168 |
+
}
|
169 |
+
|
170 |
+
@media (max-width: 428px) {
|
171 |
+
:root {
|
172 |
+
font-size: calc(var(--fontScale)*81.7%);
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
@media (max-width: 414px) {
|
177 |
+
:root {
|
178 |
+
font-size: calc(var(--fontScale)*80.4%);
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
@media (max-width: 390px) {
|
183 |
+
:root {
|
184 |
+
font-size: calc(var(--fontScale)*78%);
|
185 |
+
}
|
186 |
+
}
|
187 |
+
|
188 |
+
@media (max-width: 375px) {
|
189 |
+
:root {
|
190 |
+
font-size: calc(var(--fontScale)*76.5%);
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
@media (max-width: 360px) {
|
195 |
+
:root {
|
196 |
+
font-size: calc(var(--fontScale)*75%);
|
197 |
+
}
|
198 |
+
}
|
199 |
+
|
200 |
+
@media (max-width: 320px) {
|
201 |
+
:root {
|
202 |
+
font-size: calc(var(--fontScale)*70.7%);
|
203 |
+
}
|
204 |
+
} */
|
assets/css/optimize.css
ADDED
@@ -0,0 +1,191 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#setContrast > input:checked:focus + label,
|
2 |
+
#OpenDyslexic:checked + label #OpenDyslexicState,
|
3 |
+
#saveButton:hover,
|
4 |
+
#saveButton:focus,
|
5 |
+
#bionReadSwitch:hover + label,
|
6 |
+
#bionReadSwitch:focus + label,
|
7 |
+
#bionReadSwitch:active + label,
|
8 |
+
#bionReadSwitch:checked + label,
|
9 |
+
#join-discussion:hover,
|
10 |
+
#join-discussion:focus,
|
11 |
+
a.cta:hover,
|
12 |
+
a.cta:focus {
|
13 |
+
background: var(--ac);
|
14 |
+
}
|
15 |
+
|
16 |
+
#has-a11y[open] > #has-a11y-summary,
|
17 |
+
#lightSwitch:hover + label span::after,
|
18 |
+
#lightSwitch:focus + label span::after,
|
19 |
+
#a11y-menu > .has-aria-label:focus,
|
20 |
+
#a11y-menu > .has-aria-label:hover,
|
21 |
+
#menu-footer a:hover,
|
22 |
+
#menu-footer a:focus,
|
23 |
+
a.replies.active,
|
24 |
+
a.reblogs.active,
|
25 |
+
#has-author-name-menu a:hover,
|
26 |
+
#has-author-name-menu a:focus,
|
27 |
+
#related a:hover,
|
28 |
+
#related a:focus {
|
29 |
+
color: var(--ac);
|
30 |
+
}
|
31 |
+
|
32 |
+
.feed-item > hgroup > div a,
|
33 |
+
#related a {
|
34 |
+
color: var(--fg);
|
35 |
+
}
|
36 |
+
|
37 |
+
.readingTime,
|
38 |
+
.feed-item > section > div,
|
39 |
+
.feed-item > hgroup > div,
|
40 |
+
.feed-item:hover img,
|
41 |
+
#contrib-menu a:hover,
|
42 |
+
#contrib-menu a:focus {
|
43 |
+
opacity: 0.86;
|
44 |
+
}
|
45 |
+
|
46 |
+
main > header > menu > li > a:hover,
|
47 |
+
main > header > menu > li > a:focus,
|
48 |
+
.feed-item:hover .par,
|
49 |
+
.feed-item:focus .par,
|
50 |
+
ul.invert a:hover,
|
51 |
+
::-webkit-scrollbar-thumb:hover {
|
52 |
+
opacity: 1;
|
53 |
+
}
|
54 |
+
|
55 |
+
main#page + footer #setBaselineStretch,
|
56 |
+
main#page + footer #useBionRead,
|
57 |
+
input[type=checkbox] + label .off,
|
58 |
+
input[type=checkbox]:checked + label .on,
|
59 |
+
#TableOfContents + nav > ul,
|
60 |
+
#TableOfContents + nav > ul > li,
|
61 |
+
.has-desc:after {
|
62 |
+
display: block;
|
63 |
+
}
|
64 |
+
|
65 |
+
input[type=checkbox]:checked + label .off,
|
66 |
+
input[type=checkbox] + label .on,
|
67 |
+
#setBaselineStretch,
|
68 |
+
#has-breadcrumb summary,
|
69 |
+
#has-pagination summary,
|
70 |
+
#page #back,
|
71 |
+
.feed-item > footer > ul::-webkit-scrollbar,
|
72 |
+
.feed-item > hgroup > div > span::-webkit-scrollbar,
|
73 |
+
.feed-item .date-has-label .doc-publish-date,
|
74 |
+
.carousel__viewport::-webkit-scrollbar,
|
75 |
+
#logomark--dark,
|
76 |
+
#top-nav[open] > summary,
|
77 |
+
#top-nav-screen,
|
78 |
+
#has-more-menu[open] > summary > .t,
|
79 |
+
.languangeName,
|
80 |
+
a#has-i18n > img,
|
81 |
+
.list-month > summary::marker,
|
82 |
+
.list-month > summary::-webkit-details-marker,
|
83 |
+
#series ~ .list-year .has-post::after,
|
84 |
+
#content a.footnote-ref::after,
|
85 |
+
#content a.footnote-backref::after,
|
86 |
+
details.presentation > summary::-webkit-details-marker,
|
87 |
+
details.presentation > summary::marker,
|
88 |
+
td.lntd:first-child code.hljs {
|
89 |
+
display: none;
|
90 |
+
}
|
91 |
+
|
92 |
+
#has-a11y[open] #a11y,
|
93 |
+
#OpenDyslexic:hover + label #OpenDyslexicIndicator,
|
94 |
+
#OpenDyslexic:focus + label #OpenDyslexicIndicator,
|
95 |
+
#logo #logotype__text,
|
96 |
+
.marginpar-ctrl:checked + label::before,
|
97 |
+
details[open] > .anchor:after,
|
98 |
+
details[open] .on-plank,
|
99 |
+
.l1 details[open] > ul,
|
100 |
+
.marginpar-ctrl:checked + label + .marginpar,
|
101 |
+
#has-l10n a:hover,
|
102 |
+
#has-l10n a:focus,
|
103 |
+
#top-nav a:hover,
|
104 |
+
#top-nav a:focus,
|
105 |
+
.anchor:hover,
|
106 |
+
.anchor:focus,
|
107 |
+
#has-a11y[open] > summary .icon::before,
|
108 |
+
#has-search[open] .icon::before,
|
109 |
+
details[open] > summary > .menu-icon::before,
|
110 |
+
.loading:after,
|
111 |
+
#top-nav[open] > nav {
|
112 |
+
-webkit-animation: var(--anm);
|
113 |
+
-moz-animation: var(--anm);
|
114 |
+
-o-animation: var(--anm);
|
115 |
+
animation: var(--anm);
|
116 |
+
}
|
117 |
+
|
118 |
+
hr.ldots::after,
|
119 |
+
#to-top::before,
|
120 |
+
input + label > #lightSwitchIndicator,
|
121 |
+
.hand,
|
122 |
+
.pagination .rfill a::before,
|
123 |
+
.carousel__viewport__slide:last-child > nav a::before,
|
124 |
+
#back::before,
|
125 |
+
.feed-item:hover,
|
126 |
+
.feed-item:focus-within,
|
127 |
+
ul.carousel__viewport > li:hover,
|
128 |
+
ul.carousel__viewport > li:focus-within,
|
129 |
+
.pagination .lfill a::after,
|
130 |
+
#list-tags > nav a::after,
|
131 |
+
.carousel__viewport__slide:first-child > nav a::after,
|
132 |
+
.parent-anchor a::after,
|
133 |
+
#i18n-menu a::after,
|
134 |
+
#content a::after,
|
135 |
+
#duckduckgo .form__button,
|
136 |
+
#to-content,
|
137 |
+
.t {
|
138 |
+
-webkit-transform: var(--tsf);
|
139 |
+
-moz-transform: var(--tsf);
|
140 |
+
-ms-transform: var(--tsf);
|
141 |
+
-o-transform: var(--tsf);
|
142 |
+
transform: var(--tsf);
|
143 |
+
}
|
144 |
+
|
145 |
+
#OpenDyslexicIndicator,
|
146 |
+
.marginpar-ctrl + label::before,
|
147 |
+
.anchor:after,
|
148 |
+
#has-share i:hover {
|
149 |
+
-webkit-transition: var(--tst);
|
150 |
+
-moz-transition: var(--tst);
|
151 |
+
-o-transition: var(--tst);
|
152 |
+
transition: var(--tst);
|
153 |
+
}
|
154 |
+
|
155 |
+
#has-a11y[open] #a11y,
|
156 |
+
details[open] .on-plank,
|
157 |
+
.l1 details[open] > ul,
|
158 |
+
.marginpar-ctrl:checked + label + .marginpar,
|
159 |
+
#top-nav[open] > nav {
|
160 |
+
-webkit-transform-origin: var(--tso);
|
161 |
+
-moz-transform-origin: var(--tso);
|
162 |
+
-ms-transform-origin: var(--tso);
|
163 |
+
-o-transform-origin: var(--tso);
|
164 |
+
transform-origin: var(--tso);
|
165 |
+
}
|
166 |
+
|
167 |
+
#has-share a:focus,
|
168 |
+
.form > *:focus {
|
169 |
+
outline: none !important;
|
170 |
+
}
|
171 |
+
|
172 |
+
hgroup,
|
173 |
+
hgroup > h1,
|
174 |
+
figure,
|
175 |
+
#setOpenDyslexic > label::before,
|
176 |
+
#main-footer-secondary,
|
177 |
+
#menu-footer {
|
178 |
+
margin: 0;
|
179 |
+
}
|
180 |
+
|
181 |
+
ul.rounded,
|
182 |
+
.list-day {
|
183 |
+
padding: 0;
|
184 |
+
}
|
185 |
+
|
186 |
+
ul.delimiter:first-child li:first-child:before,
|
187 |
+
.feed-item > hgroup ul.delimiter:first-child li:last-child::after,
|
188 |
+
#content a.has-img::after,
|
189 |
+
#doc-author .delimiter li:last-child::after {
|
190 |
+
content: '';
|
191 |
+
}
|
assets/css/typeface-local/Cormorant.css
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Cormorant';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: url(/css/fonts/Cormorant-Regular.woff2) format('woff2');
|
7 |
+
size-adjust: 110%;
|
8 |
+
ascent-override: 80%;
|
9 |
+
descent-override: 28%;
|
10 |
+
}
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'Cormorant';
|
14 |
+
font-style: italic;
|
15 |
+
font-weight: 400;
|
16 |
+
font-display: swap;
|
17 |
+
src: url(/css/fonts/Cormorant-Italic.woff2) format('woff2');
|
18 |
+
size-adjust: 110%;
|
19 |
+
ascent-override: 80%;
|
20 |
+
descent-override: 28%;
|
21 |
+
}
|
22 |
+
|
23 |
+
@font-face {
|
24 |
+
font-family: 'Cormorant';
|
25 |
+
font-style: normal;
|
26 |
+
font-weight: 700;
|
27 |
+
font-display: swap;
|
28 |
+
src: url(/css/fonts/Cormorant-Bold.woff2) format('woff2');
|
29 |
+
size-adjust: 110%;
|
30 |
+
ascent-override: 80%;
|
31 |
+
descent-override: 28%;
|
32 |
+
}
|
33 |
+
|
34 |
+
@font-face {
|
35 |
+
font-family: 'Cormorant';
|
36 |
+
font-style: italic;
|
37 |
+
font-weight: 700;
|
38 |
+
font-display: swap;
|
39 |
+
src: url(/css/fonts/Cormorant-BoldItalic.woff2) format('woff2');
|
40 |
+
size-adjust: 110%;
|
41 |
+
ascent-override: 80%;
|
42 |
+
descent-override: 28%;
|
43 |
+
}
|
44 |
+
|
45 |
+
:root {
|
46 |
+
--rm: 'Cormorant';
|
47 |
+
}
|
assets/css/typeface-local/Crimson.css
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'crimson';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: local('Crimson Roman'),
|
7 |
+
url(/css/fonts/crimson-roman-webfont.woff2) format('woff2');
|
8 |
+
size-adjust: 95%;
|
9 |
+
}
|
10 |
+
|
11 |
+
@font-face {
|
12 |
+
font-family: 'crimson';
|
13 |
+
font-style: italic;
|
14 |
+
font-weight: 400;
|
15 |
+
font-display: swap;
|
16 |
+
src: local('Crimson Italic'),
|
17 |
+
url(/css/fonts/crimson-italic-webfont.woff2) format('woff2');
|
18 |
+
size-adjust: 95%;
|
19 |
+
}
|
20 |
+
|
21 |
+
@font-face {
|
22 |
+
font-family: 'crimson';
|
23 |
+
font-style: normal;
|
24 |
+
font-weight: 700;
|
25 |
+
font-display: swap;
|
26 |
+
src: local('Crimson Bold'),
|
27 |
+
url(/css/fonts/crimson-bold-webfont.woff2) format('woff2');
|
28 |
+
size-adjust: 95%;
|
29 |
+
}
|
30 |
+
|
31 |
+
@font-face {
|
32 |
+
font-family: 'crimson';
|
33 |
+
font-style: italic;
|
34 |
+
font-weight: 700;
|
35 |
+
font-display: swap;
|
36 |
+
src: local('Crimson BoldItalic'),
|
37 |
+
url(/css/fonts/crimson-bolditalic-webfont.woff2) format('woff2');
|
38 |
+
size-adjust: 95%;
|
39 |
+
}
|
40 |
+
|
41 |
+
:root {
|
42 |
+
--rm: 'crimson';
|
43 |
+
}
|
assets/css/typeface-local/EBGaramond.css
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'EB Garamond';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: url(/css/fonts/EBGaramond12-Regular.woff2) format('woff2');
|
7 |
+
size-adjust: 102%;
|
8 |
+
ascent-override: 87%;
|
9 |
+
descent-override: 30%;
|
10 |
+
}
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'EB Garamond';
|
14 |
+
font-style: italic;
|
15 |
+
font-weight: 400;
|
16 |
+
font-display: swap;
|
17 |
+
src: url(/css/fonts/EBGaramond12-Italic.woff2) format('woff2');
|
18 |
+
size-adjust: 102%;
|
19 |
+
ascent-override: 87%;
|
20 |
+
descent-override: 30%;
|
21 |
+
}
|
22 |
+
|
23 |
+
@font-face {
|
24 |
+
font-family: 'EB Garamond';
|
25 |
+
font-style: normal;
|
26 |
+
font-weight: 700;
|
27 |
+
font-display: swap;
|
28 |
+
src: url(/css/fonts/EBGaramond12-Bold.woff) format('woff');
|
29 |
+
size-adjust: 102%;
|
30 |
+
ascent-override: 87%;
|
31 |
+
descent-override: 30%;
|
32 |
+
}
|
33 |
+
|
34 |
+
@font-face {
|
35 |
+
font-family: 'EB Garamond';
|
36 |
+
font-style: italic;
|
37 |
+
font-weight: 700;
|
38 |
+
font-display: swap;
|
39 |
+
src: url(/css/fonts/EBGaramond12-BoldItalic.woff) format('woff');
|
40 |
+
size-adjust: 102%;
|
41 |
+
ascent-override: 87%;
|
42 |
+
descent-override: 30%;
|
43 |
+
}
|
44 |
+
|
45 |
+
:root {
|
46 |
+
--rm: 'EB Garamond';
|
47 |
+
}
|
assets/css/typeface-local/Inconsolata.css
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Inconsolata';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: local('Inconsolata'),
|
7 |
+
url(/css/fonts/Inconsolata-Regular.woff2) format('woff2');
|
8 |
+
ascent-override: 88%;
|
9 |
+
descent-override: 30%;
|
10 |
+
}
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'Inconsolata';
|
14 |
+
font-style: normal;
|
15 |
+
font-weight: 700;
|
16 |
+
font-display: swap;
|
17 |
+
src: local('Inconsolata Bold'),
|
18 |
+
url(/css/fonts/Inconsolata-Bold.woff2) format('woff2');
|
19 |
+
ascent-override: 88%;
|
20 |
+
descent-override: 30%;
|
21 |
+
}
|
22 |
+
|
23 |
+
:root {
|
24 |
+
--tt: 'Inconsolata';
|
25 |
+
}
|
assets/css/typeface-local/Inter.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Inter';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: local('Inter'),
|
7 |
+
url(/css/fonts/Inter-Regular.woff2) format('woff2');
|
8 |
+
size-adjust: 84%;
|
9 |
+
ascent-override: 104%;
|
10 |
+
descent-override: 36%;
|
11 |
+
}
|
12 |
+
|
13 |
+
@font-face {
|
14 |
+
font-family: 'Inter';
|
15 |
+
font-style: italic;
|
16 |
+
font-weight: 400;
|
17 |
+
font-display: swap;
|
18 |
+
src: local('Inter Italic'),
|
19 |
+
url(/css/fonts/Inter-Italic.woff2) format('woff2');
|
20 |
+
size-adjust: 84%;
|
21 |
+
ascent-override: 104%;
|
22 |
+
descent-override: 36%;
|
23 |
+
}
|
24 |
+
|
25 |
+
@font-face {
|
26 |
+
font-family: 'Inter';
|
27 |
+
font-style: normal;
|
28 |
+
font-weight: 700;
|
29 |
+
font-display: swap;
|
30 |
+
src: local('Inter Bold'),
|
31 |
+
url(/css/fonts/Inter-Bold.woff2) format('woff2');
|
32 |
+
size-adjust: 84%;
|
33 |
+
ascent-override: 104%;
|
34 |
+
descent-override: 36%;
|
35 |
+
}
|
36 |
+
|
37 |
+
@font-face {
|
38 |
+
font-family: 'Inter';
|
39 |
+
font-style: italic;
|
40 |
+
font-weight: 700;
|
41 |
+
font-display: swap;
|
42 |
+
src: local('Inter Bold Italic'),
|
43 |
+
url(/css/fonts/Inter-BoldItalic.woff2) format('woff2');
|
44 |
+
size-adjust: 84%;
|
45 |
+
ascent-override: 104%;
|
46 |
+
descent-override: 36%;
|
47 |
+
}
|
48 |
+
|
49 |
+
:root {
|
50 |
+
--sf: 'Inter';
|
51 |
+
}
|
assets/css/typeface-local/Montserrat.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Montserrat';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: url(/css/fonts/Montserrat-Regular.woff2) format('woff2');
|
7 |
+
size-adjust: 85%;
|
8 |
+
ascent-override: 104%;
|
9 |
+
descent-override: 36%;
|
10 |
+
line-gap-override: 50%;
|
11 |
+
}
|
12 |
+
|
13 |
+
@font-face {
|
14 |
+
font-family: 'Montserrat';
|
15 |
+
font-style: italic;
|
16 |
+
font-weight: 400;
|
17 |
+
font-display: swap;
|
18 |
+
src: url(/css/fonts/Montserrat-Italic.woff2) format('woff2');
|
19 |
+
size-adjust: 85%;
|
20 |
+
ascent-override: 104%;
|
21 |
+
descent-override: 36%;
|
22 |
+
line-gap-override: 50%;
|
23 |
+
}
|
24 |
+
|
25 |
+
@font-face {
|
26 |
+
font-family: 'Montserrat';
|
27 |
+
font-style: normal;
|
28 |
+
font-weight: 700;
|
29 |
+
font-display: swap;
|
30 |
+
src: url(/css/fonts/Montserrat-Bold.woff2) format('woff2');
|
31 |
+
size-adjust: 85%;
|
32 |
+
ascent-override: 104%;
|
33 |
+
descent-override: 36%;
|
34 |
+
line-gap-override: 50%;
|
35 |
+
}
|
36 |
+
|
37 |
+
@font-face {
|
38 |
+
font-family: 'Montserrat';
|
39 |
+
font-style: italic;
|
40 |
+
font-weight: 700;
|
41 |
+
font-display: swap;
|
42 |
+
src: url(/css/fonts/Montserrat-BoldItalic.woff2) format('woff2');
|
43 |
+
size-adjust: 85%;
|
44 |
+
ascent-override: 104%;
|
45 |
+
descent-override: 36%;
|
46 |
+
line-gap-override: 50%;
|
47 |
+
}
|
48 |
+
|
49 |
+
:root {
|
50 |
+
--sf: 'Montserrat';
|
51 |
+
}
|
assets/css/typeface-local/OpenDyslexic.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'OpenDyslexic';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: local('OpenDyslexic'),
|
7 |
+
url(/css/fonts/OpenDyslexic-Regular.woff2) format('woff2');
|
8 |
+
size-adjust: 83%;
|
9 |
+
ascent-override: 106%;
|
10 |
+
descent-override: 36%;
|
11 |
+
}
|
12 |
+
|
13 |
+
@font-face {
|
14 |
+
font-family: 'OpenDyslexic';
|
15 |
+
font-style: italic;
|
16 |
+
font-weight: 400;
|
17 |
+
font-display: swap;
|
18 |
+
src: local('OpenDyslexic Italic'),
|
19 |
+
url(/css/fonts/OpenDyslexic-Italic.woff2) format('woff2');
|
20 |
+
size-adjust: 83%;
|
21 |
+
ascent-override: 106%;
|
22 |
+
descent-override: 36%;
|
23 |
+
}
|
24 |
+
|
25 |
+
@font-face {
|
26 |
+
font-family: 'OpenDyslexic';
|
27 |
+
font-style: normal;
|
28 |
+
font-weight: 700;
|
29 |
+
font-display: swap;
|
30 |
+
src: local('OpenDyslexic Bold'),
|
31 |
+
url(/css/fonts/OpenDyslexic-Bold.woff2) format('woff2');
|
32 |
+
size-adjust: 83%;
|
33 |
+
ascent-override: 106%;
|
34 |
+
descent-override: 36%;
|
35 |
+
}
|
36 |
+
|
37 |
+
@font-face {
|
38 |
+
font-family: 'OpenDyslexic';
|
39 |
+
font-style: italic;
|
40 |
+
font-weight: 700;
|
41 |
+
font-display: swap;
|
42 |
+
src: local('OpenDyslexic Bold Italic'),
|
43 |
+
url(/css/fonts/OpenDyslexic-Bold-Italic.woff2) format('woff2');
|
44 |
+
size-adjust: 83%;
|
45 |
+
ascent-override: 106%;
|
46 |
+
descent-override: 36%;
|
47 |
+
}
|
48 |
+
|
49 |
+
:root {
|
50 |
+
--od: 'OpenDyslexic';
|
51 |
+
}
|
assets/css/typeface-local/Rosario.css
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Rosario';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: url(/css/fonts/Rosario-Regular.woff2) format('woff2');
|
7 |
+
size-adjust: 90%;
|
8 |
+
descent-override: 33%;
|
9 |
+
}
|
10 |
+
|
11 |
+
@font-face {
|
12 |
+
font-family: 'Rosario';
|
13 |
+
font-style: italic;
|
14 |
+
font-weight: 400;
|
15 |
+
font-display: swap;
|
16 |
+
src: url(/css/fonts/Rosario-Italic.woff2) format('woff2');
|
17 |
+
size-adjust: 90%;
|
18 |
+
descent-override: 33%;
|
19 |
+
}
|
20 |
+
|
21 |
+
@font-face {
|
22 |
+
font-family: 'Rosario';
|
23 |
+
font-style: normal;
|
24 |
+
font-weight: 700;
|
25 |
+
font-display: swap;
|
26 |
+
src: url(/css/fonts/Rosario-Bold.woff2) format('woff2');
|
27 |
+
size-adjust: 90%;
|
28 |
+
descent-override: 33%;
|
29 |
+
}
|
30 |
+
|
31 |
+
@font-face {
|
32 |
+
font-family: 'Rosario';
|
33 |
+
font-style: italic;
|
34 |
+
font-weight: 700;
|
35 |
+
font-display: swap;
|
36 |
+
src: url(/css/fonts/Rosario-BoldItalic.woff2) format('woff2');
|
37 |
+
size-adjust: 90%;
|
38 |
+
descent-override: 33%;
|
39 |
+
}
|
40 |
+
|
41 |
+
:root {
|
42 |
+
--sf: 'Rosario';
|
43 |
+
}
|
assets/css/typeface-local/icon.css
ADDED
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Icon Fonts */
|
2 |
+
@font-face {
|
3 |
+
font-family: 'base-ui';
|
4 |
+
font-weight: normal;
|
5 |
+
font-style: normal;
|
6 |
+
font-display: block;
|
7 |
+
src: url('/css/fonts/base-ui.woff2') format('woff2');
|
8 |
+
}
|
9 |
+
|
10 |
+
/* fallback setting for websafefonts */
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'Times New Roman';
|
14 |
+
src: local('Times New Roman');
|
15 |
+
size-adjust: 102%;
|
16 |
+
ascent-override: 87%;
|
17 |
+
descent-override: 30%;
|
18 |
+
}
|
19 |
+
|
20 |
+
@font-face {
|
21 |
+
font-family: 'Arial';
|
22 |
+
src: local('Arial');
|
23 |
+
size-adjust: 87%;
|
24 |
+
ascent-override: 101%;
|
25 |
+
descent-override: 34%;
|
26 |
+
}
|
27 |
+
|
28 |
+
@font-face {
|
29 |
+
font-family: 'Courier New';
|
30 |
+
src: local('Courier New');
|
31 |
+
size-adjust: 107%;
|
32 |
+
ascent-override: 83%;
|
33 |
+
descent-override: 28%;
|
34 |
+
}
|
35 |
+
|
36 |
+
#mastodonInstance::before,
|
37 |
+
#has-share i,
|
38 |
+
.stat a::before,
|
39 |
+
.icon {
|
40 |
+
font-family: 'base-ui' !important;
|
41 |
+
speak: never;
|
42 |
+
font-style: normal;
|
43 |
+
font-weight: normal;
|
44 |
+
font-variant: normal;
|
45 |
+
text-transform: none;
|
46 |
+
line-height: 1;
|
47 |
+
-webkit-font-smoothing: antialiased;
|
48 |
+
-moz-osx-font-smoothing: grayscale;
|
49 |
+
-webkit-font-feature-settings: 'liga';
|
50 |
+
-moz-font-feature-settings: 'liga=1';
|
51 |
+
-moz-font-feature-settings: 'liga';
|
52 |
+
-ms-font-feature-settings: 'liga' 1;
|
53 |
+
font-feature-settings: 'liga';
|
54 |
+
-webkit-font-variant-ligatures: discretionary-ligatures;
|
55 |
+
font-variant-ligatures: discretionary-ligatures;
|
56 |
+
}
|
57 |
+
|
58 |
+
.emoji {
|
59 |
+
font-family: 'Apple Color Emoji', 'Segoe UI Emoji', NotoColorEmoji, 'Segoe UI Symbol', 'Android Emoji', EmojiSymbols;
|
60 |
+
}
|
61 |
+
|
62 |
+
.icon.accessibility:before {content: '\e900';}
|
63 |
+
.icon.arrow:before {content: '\e902';}
|
64 |
+
.icon.circle-checked:before {content: '\e903';}
|
65 |
+
.icon.circle-unchecked:before {content: '\e904';}
|
66 |
+
.icon.copyleft:before {content: '\e906';}
|
67 |
+
#has-share .email:before,
|
68 |
+
.icon.email:before {content: '\e907';}
|
69 |
+
a.favourites::before,
|
70 |
+
.icon.heart:before {content: '\e908';}
|
71 |
+
.icon.internationalization:before {content: '\e909';}
|
72 |
+
.icon.localization:before {content: '\e90a';}
|
73 |
+
.icon.menu:before {content: '\e90b';}
|
74 |
+
#has-share .print:before,
|
75 |
+
.icon.print:before {content: '\e90c';}
|
76 |
+
.reblogs::before,
|
77 |
+
.icon.reblog:before {content: '\e90d';}
|
78 |
+
a.replies::before,
|
79 |
+
.icon.reply:before {content: '\e90e';}
|
80 |
+
.icon.reset:before {content: '\e90f';}
|
81 |
+
.icon.rss:before {content: '\e910';}
|
82 |
+
.icon.search:before {content: '\e911';}
|
83 |
+
.icon.share:before {content: '\e912';}
|
84 |
+
.icon.xmark:before {content: '\e913';}
|
85 |
+
.icon.behance:before {content: '\e914';}
|
86 |
+
.icon.bigcartel:before {content: '\e915';}
|
87 |
+
.icon.bitbucket:before {content: '\e916';}
|
88 |
+
.icon.blogger:before {content: '\e917';}
|
89 |
+
#has-share .bluesky:before,
|
90 |
+
.icon.bluesky:before {content: '\e918';}
|
91 |
+
.icon.bukalapak:before {content: '\e919';}
|
92 |
+
.icon.buymeacoffee:before {content: '\e91a';}
|
93 |
+
.icon.clubhouse:before {content: '\e91b';}
|
94 |
+
.icon.codepen:before {content: '\e91c';}
|
95 |
+
.icon.creativefabrica:before {content: '\e91d';}
|
96 |
+
.icon.dailymotion:before {content: '\e91e';}
|
97 |
+
.icon.dev:before {content: '\e91f';}
|
98 |
+
.icon.deviantart:before {content: '\e920';}
|
99 |
+
.icon.digg:before {content: '\e921';}
|
100 |
+
.icon.discord:before {content: '\e922';}
|
101 |
+
.icon.dribbble:before {content: '\e923';}
|
102 |
+
.icon.ebay:before {content: '\e924';}
|
103 |
+
.icon.etsy:before {content: '\e925';}
|
104 |
+
#has-share .facebook:before,
|
105 |
+
.icon.facebook:before {content: '\e926';}
|
106 |
+
.icon.figma:before {content: '\e927';}
|
107 |
+
.icon.flickr:before {content: '\e928';}
|
108 |
+
.icon.flipkart:before {content: '\e929';}
|
109 |
+
.icon.github:before {content: '\e92a';}
|
110 |
+
.icon.githubsponsors:before {content: '\e92b';}
|
111 |
+
.icon.gitlab:before {content: '\e92c';}
|
112 |
+
.icon.gnusocial:before {content: '\e92d';}
|
113 |
+
.icon.goodreads:before {content: '\e92e';}
|
114 |
+
.icon.googlescholar:before {content: '\e92f';}
|
115 |
+
.icon.gumroad:before {content: '\e930';}
|
116 |
+
#has-share .hackernews:before,
|
117 |
+
.icon.hackernews:before {content: '\e931';}
|
118 |
+
.icon.hashnode:before {content: '\e932';}
|
119 |
+
.icon.icon--500px:before {content: '\e933';}
|
120 |
+
.icon.instagram:before {content: '\e934';}
|
121 |
+
.icon.jsfiddle:before {content: '\e935';}
|
122 |
+
.icon.karyakarsa:before {content: '\e936';}
|
123 |
+
.icon.keybase:before {content: '\e937';}
|
124 |
+
.icon.keycdn:before {content: '\e938';}
|
125 |
+
.icon.kickstarter:before {content: '\e939';}
|
126 |
+
.icon.kofi:before {content: '\e93a';}
|
127 |
+
.icon.lazada:before {content: '\e93b';}
|
128 |
+
.icon.liberapay:before {content: '\e93c';}
|
129 |
+
#has-share .linkedin:before,
|
130 |
+
.icon.linkedin:before {content: '\e93d';}
|
131 |
+
.icon.mastodon:before {content: '\e93e';}
|
132 |
+
.icon.medium:before {content: '\e93f';}
|
133 |
+
.icon.olx:before {content: '\e940';}
|
134 |
+
.icon.opencollective:before {content: '\e941';}
|
135 |
+
.icon.openid:before {content: '\e942';}
|
136 |
+
.icon.orcid:before {content: '\e943';}
|
137 |
+
.icon.patreon:before {content: '\e944';}
|
138 |
+
.icon.paypal:before {content: '\e945';}
|
139 |
+
.icon.peertube:before {content: '\e946';}
|
140 |
+
#has-share .pinterest:before,
|
141 |
+
.icon.pinterest:before {content: '\e947';}
|
142 |
+
.icon.pleroma:before {content: '\e948';}
|
143 |
+
.icon.publons:before {content: '\e949';}
|
144 |
+
.icon.quora:before {content: '\e94a';}
|
145 |
+
#has-share .reddit:before,
|
146 |
+
.icon.reddit:before {content: '\e94b';}
|
147 |
+
.icon.researchgate:before {content: '\e94c';}
|
148 |
+
.icon.saweria:before {content: '\e94d';}
|
149 |
+
.icon.sellfy:before {content: '\e94e';}
|
150 |
+
.icon.shopee:before {content: '\e94f';}
|
151 |
+
.icon.shopify:before {content: '\e950';}
|
152 |
+
.icon.signal:before {content: '\e951';}
|
153 |
+
.icon.snapchat:before {content: '\e952';}
|
154 |
+
.icon.soundcloud:before {content: '\e953';}
|
155 |
+
.icon.stackexchange:before {content: '\e954';}
|
156 |
+
.icon.stackoverflow:before {content: '\e955';}
|
157 |
+
.icon.stripe:before {content: '\e956';}
|
158 |
+
.icon.substack:before {content: '\e957';}
|
159 |
+
#has-share .telegram:before,
|
160 |
+
.icon.telegram:before {content: '\e958';}
|
161 |
+
.icon.threads:before {content: '\e959';}
|
162 |
+
.icon.tiktok:before {content: '\e95a';}
|
163 |
+
.icon.tokopedia:before {content: '\e95b';}
|
164 |
+
#has-share .tumblr:before,
|
165 |
+
.icon.tumblr:before {content: '\e95c';}
|
166 |
+
.icon.twitch:before {content: '\e95d';}
|
167 |
+
#has-share .twitter:before,
|
168 |
+
.icon.twitter:before {content: '\e95e';}
|
169 |
+
.icon.vimeo:before {content: '\e95f';}
|
170 |
+
.icon.vine:before {content: '\e960';}
|
171 |
+
#has-share .vk:before,
|
172 |
+
.icon.vk:before {content: '\e961';}
|
173 |
+
.icon.wattpad:before {content: '\e962';}
|
174 |
+
.icon.weibo:before {content: '\e963';}
|
175 |
+
#has-share .whatsapp:before,
|
176 |
+
.icon.whatsapp:before {content: '\e964';}
|
177 |
+
.icon.wikipedia:before {content: '\e965';}
|
178 |
+
.icon.wordpress:before {content: '\e966';}
|
179 |
+
.icon.write-dot-as:before {content: '\e967';}
|
180 |
+
.icon.x:before {content: '\e968';}
|
181 |
+
#has-share .xing:before,
|
182 |
+
.icon.xing:before {content: '\e969';}
|
183 |
+
.icon.xmpp:before {content: '\e96a';}
|
184 |
+
.icon.youtube:before {content: '\e96b';}
|
assets/css/typeface/Cormorant.css
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Cormorant';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: url(https://raw.githubusercontent.com/CatharsisFonts/Cormorant/master/fonts/webfonts/Cormorant-Regular.woff2) format('woff2');
|
7 |
+
size-adjust: 110%;
|
8 |
+
ascent-override: 80%;
|
9 |
+
descent-override: 28%;
|
10 |
+
}
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'Cormorant';
|
14 |
+
font-style: italic;
|
15 |
+
font-weight: 400;
|
16 |
+
font-display: swap;
|
17 |
+
src: url(https://raw.githubusercontent.com/CatharsisFonts/Cormorant/master/fonts/webfonts/Cormorant-Italic.woff2) format('woff2');
|
18 |
+
size-adjust: 110%;
|
19 |
+
ascent-override: 80%;
|
20 |
+
descent-override: 28%;
|
21 |
+
}
|
22 |
+
|
23 |
+
@font-face {
|
24 |
+
font-family: 'Cormorant';
|
25 |
+
font-style: normal;
|
26 |
+
font-weight: 700;
|
27 |
+
font-display: swap;
|
28 |
+
src: url(https://raw.githubusercontent.com/CatharsisFonts/Cormorant/master/fonts/webfonts/Cormorant-Bold.woff2) format('woff2');
|
29 |
+
size-adjust: 110%;
|
30 |
+
ascent-override: 80%;
|
31 |
+
descent-override: 28%;
|
32 |
+
}
|
33 |
+
|
34 |
+
@font-face {
|
35 |
+
font-family: 'Cormorant';
|
36 |
+
font-style: italic;
|
37 |
+
font-weight: 700;
|
38 |
+
font-display: swap;
|
39 |
+
src: url(https://raw.githubusercontent.com/CatharsisFonts/Cormorant/master/fonts/webfonts/Cormorant-BoldItalic.woff2) format('woff2');
|
40 |
+
size-adjust: 110%;
|
41 |
+
ascent-override: 80%;
|
42 |
+
descent-override: 28%;
|
43 |
+
}
|
44 |
+
|
45 |
+
:root {
|
46 |
+
--rm: 'Cormorant';
|
47 |
+
}
|
assets/css/typeface/Crimson.css
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'crimson';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: local('Crimson Roman'),
|
7 |
+
url(https://raw.githubusercontent.com/skosch/Crimson/master/Web%20Fonts/crimson-roman-webfont.woff2) format('woff2');
|
8 |
+
size-adjust: 95%;
|
9 |
+
}
|
10 |
+
|
11 |
+
@font-face {
|
12 |
+
font-family: 'crimson';
|
13 |
+
font-style: italic;
|
14 |
+
font-weight: 400;
|
15 |
+
font-display: swap;
|
16 |
+
src: local('Crimson Italic'),
|
17 |
+
url(https://raw.githubusercontent.com/skosch/Crimson/master/Web%20Fonts/crimson-italic-webfont.woff2) format('woff2');
|
18 |
+
size-adjust: 95%;
|
19 |
+
}
|
20 |
+
|
21 |
+
@font-face {
|
22 |
+
font-family: 'crimson';
|
23 |
+
font-style: normal;
|
24 |
+
font-weight: 700;
|
25 |
+
font-display: swap;
|
26 |
+
src: local('Crimson Bold'),
|
27 |
+
url(https://raw.githubusercontent.com/skosch/Crimson/master/Web%20Fonts/crimson-bold-webfont.woff2) format('woff2');
|
28 |
+
size-adjust: 95%;
|
29 |
+
}
|
30 |
+
|
31 |
+
@font-face {
|
32 |
+
font-family: 'crimson';
|
33 |
+
font-style: italic;
|
34 |
+
font-weight: 700;
|
35 |
+
font-display: swap;
|
36 |
+
src: local('Crimson BoldItalic'),
|
37 |
+
url(https://raw.githubusercontent.com/skosch/Crimson/master/Web%20Fonts/crimson-bolditalic-webfont.woff2) format('woff2');
|
38 |
+
size-adjust: 95%;
|
39 |
+
}
|
40 |
+
|
41 |
+
:root {
|
42 |
+
--rm: 'crimson';
|
43 |
+
}
|
assets/css/typeface/EBGaramond.css
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'EB Garamond';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: url(https://raw.githubusercontent.com/imedadel/typeface-eb-garamond-latest/master/files/EBGaramond12-Regular.woff2) format('woff2');
|
7 |
+
size-adjust: 102%;
|
8 |
+
ascent-override: 87%;
|
9 |
+
descent-override: 30%;
|
10 |
+
}
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'EB Garamond';
|
14 |
+
font-style: italic;
|
15 |
+
font-weight: 400;
|
16 |
+
font-display: swap;
|
17 |
+
src: url(https://raw.githubusercontent.com/imedadel/typeface-eb-garamond-latest/master/files/EBGaramond12-Italic.woff2) format('woff2');
|
18 |
+
size-adjust: 102%;
|
19 |
+
ascent-override: 87%;
|
20 |
+
descent-override: 30%;
|
21 |
+
}
|
22 |
+
|
23 |
+
@font-face {
|
24 |
+
font-family: 'EB Garamond';
|
25 |
+
font-style: normal;
|
26 |
+
font-weight: 700;
|
27 |
+
font-display: swap;
|
28 |
+
src: url(https://raw.githubusercontent.com/googlefonts/ebgaramond-specimen/main/docs/fonts/EBGaramond12-Bold.woff) format('woff');
|
29 |
+
size-adjust: 102%;
|
30 |
+
ascent-override: 87%;
|
31 |
+
descent-override: 30%;
|
32 |
+
}
|
33 |
+
|
34 |
+
@font-face {
|
35 |
+
font-family: 'EB Garamond';
|
36 |
+
font-style: italic;
|
37 |
+
font-weight: 700;
|
38 |
+
font-display: swap;
|
39 |
+
src: url(https://raw.githubusercontent.com/googlefonts/ebgaramond-specimen/main/docs/fonts/EBGaramond12-BoldItalic.woff) format('woff');
|
40 |
+
size-adjust: 102%;
|
41 |
+
ascent-override: 87%;
|
42 |
+
descent-override: 30%;
|
43 |
+
}
|
44 |
+
|
45 |
+
:root {
|
46 |
+
--rm: 'EB Garamond';
|
47 |
+
}
|
assets/css/typeface/Inconsolata.css
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Inconsolata';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: local('Inconsolata'),
|
7 |
+
url(https://raw.githubusercontent.com/googlefonts/Inconsolata/main/fonts/webfonts/Inconsolata-Regular.woff2) format('woff2');
|
8 |
+
ascent-override: 88%;
|
9 |
+
descent-override: 30%;
|
10 |
+
}
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'Inconsolata';
|
14 |
+
font-style: normal;
|
15 |
+
font-weight: 700;
|
16 |
+
font-display: swap;
|
17 |
+
src: local('Inconsolata Bold'),
|
18 |
+
url(https://raw.githubusercontent.com/googlefonts/Inconsolata/main/fonts/webfonts/Inconsolata-Bold.woff2) format('woff2');
|
19 |
+
ascent-override: 88%;
|
20 |
+
descent-override: 30%;
|
21 |
+
}
|
22 |
+
|
23 |
+
:root {
|
24 |
+
--tt: 'Inconsolata';
|
25 |
+
}
|
assets/css/typeface/Inter.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Inter';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: local('Inter'),
|
7 |
+
url(https://raw.githubusercontent.com/rsms/inter/master/docs/font-files/Inter-Regular.woff2) format('woff2');
|
8 |
+
size-adjust: 84%;
|
9 |
+
ascent-override: 104%;
|
10 |
+
descent-override: 36%;
|
11 |
+
}
|
12 |
+
|
13 |
+
@font-face {
|
14 |
+
font-family: 'Inter';
|
15 |
+
font-style: italic;
|
16 |
+
font-weight: 400;
|
17 |
+
font-display: swap;
|
18 |
+
src: local('Inter Italic'),
|
19 |
+
url(https://raw.githubusercontent.com/rsms/inter/master/docs/font-files/Inter-Italic.woff2) format('woff2');
|
20 |
+
size-adjust: 84%;
|
21 |
+
ascent-override: 104%;
|
22 |
+
descent-override: 36%;
|
23 |
+
}
|
24 |
+
|
25 |
+
@font-face {
|
26 |
+
font-family: 'Inter';
|
27 |
+
font-style: normal;
|
28 |
+
font-weight: 700;
|
29 |
+
font-display: swap;
|
30 |
+
src: local('Inter Bold'),
|
31 |
+
url(https://raw.githubusercontent.com/rsms/inter/master/docs/font-files/Inter-Bold.woff2) format('woff2');
|
32 |
+
size-adjust: 84%;
|
33 |
+
ascent-override: 104%;
|
34 |
+
descent-override: 36%;
|
35 |
+
}
|
36 |
+
|
37 |
+
@font-face {
|
38 |
+
font-family: 'Inter';
|
39 |
+
font-style: italic;
|
40 |
+
font-weight: 700;
|
41 |
+
font-display: swap;
|
42 |
+
src: local('Inter Bold Italic'),
|
43 |
+
url(https://raw.githubusercontent.com/rsms/inter/master/docs/font-files/Inter-BoldItalic.woff2) format('woff2');
|
44 |
+
size-adjust: 84%;
|
45 |
+
ascent-override: 104%;
|
46 |
+
descent-override: 36%;
|
47 |
+
}
|
48 |
+
|
49 |
+
:root {
|
50 |
+
--sf: 'Inter';
|
51 |
+
}
|
assets/css/typeface/Montserrat.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Montserrat';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: url(https://raw.githubusercontent.com/JulietaUla/Montserrat/master/fonts/webfonts/Montserrat-Regular.woff2) format('woff2');
|
7 |
+
size-adjust: 85%;
|
8 |
+
ascent-override: 104%;
|
9 |
+
descent-override: 36%;
|
10 |
+
line-gap-override: 50%;
|
11 |
+
}
|
12 |
+
|
13 |
+
@font-face {
|
14 |
+
font-family: 'Montserrat';
|
15 |
+
font-style: italic;
|
16 |
+
font-weight: 400;
|
17 |
+
font-display: swap;
|
18 |
+
src: url(https://raw.githubusercontent.com/JulietaUla/Montserrat/master/fonts/webfonts/Montserrat-Italic.woff2) format('woff2');
|
19 |
+
size-adjust: 85%;
|
20 |
+
ascent-override: 104%;
|
21 |
+
descent-override: 36%;
|
22 |
+
line-gap-override: 50%;
|
23 |
+
}
|
24 |
+
|
25 |
+
@font-face {
|
26 |
+
font-family: 'Montserrat';
|
27 |
+
font-style: normal;
|
28 |
+
font-weight: 700;
|
29 |
+
font-display: swap;
|
30 |
+
src: url(https://raw.githubusercontent.com/JulietaUla/Montserrat/master/fonts/webfonts/Montserrat-Bold.woff2) format('woff2');
|
31 |
+
size-adjust: 85%;
|
32 |
+
ascent-override: 104%;
|
33 |
+
descent-override: 36%;
|
34 |
+
line-gap-override: 50%;
|
35 |
+
}
|
36 |
+
|
37 |
+
@font-face {
|
38 |
+
font-family: 'Montserrat';
|
39 |
+
font-style: italic;
|
40 |
+
font-weight: 700;
|
41 |
+
font-display: swap;
|
42 |
+
src: url(https://raw.githubusercontent.com/JulietaUla/Montserrat/master/fonts/webfonts/Montserrat-BoldItalic.woff2) format('woff2');
|
43 |
+
size-adjust: 85%;
|
44 |
+
ascent-override: 104%;
|
45 |
+
descent-override: 36%;
|
46 |
+
line-gap-override: 50%;
|
47 |
+
}
|
48 |
+
|
49 |
+
:root {
|
50 |
+
--sf: 'Montserrat';
|
51 |
+
}
|
assets/css/typeface/OpenDyslexic.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'OpenDyslexic';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: local('OpenDyslexic'),
|
7 |
+
url(https://raw.githubusercontent.com/antijingoist/OpenDyslexic/master/compiled/OpenDyslexic-Regular.woff2) format('woff2');
|
8 |
+
size-adjust: 83%;
|
9 |
+
ascent-override: 106%;
|
10 |
+
descent-override: 36%;
|
11 |
+
}
|
12 |
+
|
13 |
+
@font-face {
|
14 |
+
font-family: 'OpenDyslexic';
|
15 |
+
font-style: italic;
|
16 |
+
font-weight: 400;
|
17 |
+
font-display: swap;
|
18 |
+
src: local('OpenDyslexic Italic'),
|
19 |
+
url(https://raw.githubusercontent.com/antijingoist/OpenDyslexic/master/compiled/OpenDyslexic-Italic.woff2) format('woff2');
|
20 |
+
size-adjust: 83%;
|
21 |
+
ascent-override: 106%;
|
22 |
+
descent-override: 36%;
|
23 |
+
}
|
24 |
+
|
25 |
+
@font-face {
|
26 |
+
font-family: 'OpenDyslexic';
|
27 |
+
font-style: normal;
|
28 |
+
font-weight: 700;
|
29 |
+
font-display: swap;
|
30 |
+
src: local('OpenDyslexic Bold'),
|
31 |
+
url(https://raw.githubusercontent.com/antijingoist/OpenDyslexic/master/compiled/OpenDyslexic-Bold.woff2) format('woff2');
|
32 |
+
size-adjust: 83%;
|
33 |
+
ascent-override: 106%;
|
34 |
+
descent-override: 36%;
|
35 |
+
}
|
36 |
+
|
37 |
+
@font-face {
|
38 |
+
font-family: 'OpenDyslexic';
|
39 |
+
font-style: italic;
|
40 |
+
font-weight: 700;
|
41 |
+
font-display: swap;
|
42 |
+
src: local('OpenDyslexic Bold Italic'),
|
43 |
+
url(https://raw.githubusercontent.com/antijingoist/OpenDyslexic/master/compiled/OpenDyslexic-Bold-Italic.woff2) format('woff2');
|
44 |
+
size-adjust: 83%;
|
45 |
+
ascent-override: 106%;
|
46 |
+
descent-override: 36%;
|
47 |
+
}
|
48 |
+
|
49 |
+
:root {
|
50 |
+
--od: 'OpenDyslexic';
|
51 |
+
}
|
assets/css/typeface/Rosario.css
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'Rosario';
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: 400;
|
5 |
+
font-display: swap;
|
6 |
+
src: url(https://raw.githubusercontent.com/Omnibus-Type/Rosario/master/fonts/webfonts/Rosario-Regular.woff2) format('woff2');
|
7 |
+
size-adjust: 90%;
|
8 |
+
descent-override: 33%;
|
9 |
+
}
|
10 |
+
|
11 |
+
@font-face {
|
12 |
+
font-family: 'Rosario';
|
13 |
+
font-style: italic;
|
14 |
+
font-weight: 400;
|
15 |
+
font-display: swap;
|
16 |
+
src: url(https://raw.githubusercontent.com/Omnibus-Type/Rosario/master/fonts/webfonts/Rosario-Italic.woff2) format('woff2');
|
17 |
+
size-adjust: 90%;
|
18 |
+
descent-override: 33%;
|
19 |
+
}
|
20 |
+
|
21 |
+
@font-face {
|
22 |
+
font-family: 'Rosario';
|
23 |
+
font-style: normal;
|
24 |
+
font-weight: 700;
|
25 |
+
font-display: swap;
|
26 |
+
src: url(https://raw.githubusercontent.com/Omnibus-Type/Rosario/master/fonts/webfonts/Rosario-Bold.woff2) format('woff2');
|
27 |
+
size-adjust: 90%;
|
28 |
+
descent-override: 33%;
|
29 |
+
}
|
30 |
+
|
31 |
+
@font-face {
|
32 |
+
font-family: 'Rosario';
|
33 |
+
font-style: italic;
|
34 |
+
font-weight: 700;
|
35 |
+
font-display: swap;
|
36 |
+
src: url(https://raw.githubusercontent.com/Omnibus-Type/Rosario/master/fonts/webfonts/Rosario-BoldItalic.woff2) format('woff2');
|
37 |
+
size-adjust: 90%;
|
38 |
+
descent-override: 33%;
|
39 |
+
}
|
40 |
+
|
41 |
+
:root {
|
42 |
+
--sf: 'Rosario';
|
43 |
+
}
|
assets/css/typeface/icon.css
ADDED
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Icon Fonts */
|
2 |
+
@font-face {
|
3 |
+
font-family: 'base-ui';
|
4 |
+
font-weight: normal;
|
5 |
+
font-style: normal;
|
6 |
+
font-display: block;
|
7 |
+
src: url(https://raw.githubusercontent.com/foxihd/hugo-brewm/main/static/css/fonts/base-ui.woff2) format('woff2');
|
8 |
+
}
|
9 |
+
|
10 |
+
/* fallback setting for websafefonts */
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'Times New Roman';
|
14 |
+
src: local('Times New Roman');
|
15 |
+
size-adjust: 102%;
|
16 |
+
ascent-override: 87%;
|
17 |
+
descent-override: 30%;
|
18 |
+
}
|
19 |
+
|
20 |
+
@font-face {
|
21 |
+
font-family: 'Arial';
|
22 |
+
src: local('Arial');
|
23 |
+
size-adjust: 87%;
|
24 |
+
ascent-override: 101%;
|
25 |
+
descent-override: 34%;
|
26 |
+
}
|
27 |
+
|
28 |
+
@font-face {
|
29 |
+
font-family: 'Courier New';
|
30 |
+
src: local('Courier New');
|
31 |
+
size-adjust: 107%;
|
32 |
+
ascent-override: 83%;
|
33 |
+
descent-override: 28%;
|
34 |
+
}
|
35 |
+
|
36 |
+
#mastodonInstance::before,
|
37 |
+
#has-share i,
|
38 |
+
.stat a::before,
|
39 |
+
.icon {
|
40 |
+
font-family: 'base-ui' !important;
|
41 |
+
speak: never;
|
42 |
+
font-style: normal;
|
43 |
+
font-weight: normal;
|
44 |
+
font-variant: normal;
|
45 |
+
text-transform: none;
|
46 |
+
line-height: 1;
|
47 |
+
-webkit-font-smoothing: antialiased;
|
48 |
+
-moz-osx-font-smoothing: grayscale;
|
49 |
+
-webkit-font-feature-settings: 'liga';
|
50 |
+
-moz-font-feature-settings: 'liga=1';
|
51 |
+
-moz-font-feature-settings: 'liga';
|
52 |
+
-ms-font-feature-settings: 'liga' 1;
|
53 |
+
font-feature-settings: 'liga';
|
54 |
+
-webkit-font-variant-ligatures: discretionary-ligatures;
|
55 |
+
font-variant-ligatures: discretionary-ligatures;
|
56 |
+
}
|
57 |
+
|
58 |
+
.emoji {
|
59 |
+
font-family: 'Apple Color Emoji', 'Segoe UI Emoji', NotoColorEmoji, 'Segoe UI Symbol', 'Android Emoji', EmojiSymbols;
|
60 |
+
}
|
61 |
+
|
62 |
+
.icon.accessibility:before {content: '\e900';}
|
63 |
+
.icon.arrow:before {content: '\e902';}
|
64 |
+
.icon.circle-checked:before {content: '\e903';}
|
65 |
+
.icon.circle-unchecked:before {content: '\e904';}
|
66 |
+
.icon.copyleft:before {content: '\e906';}
|
67 |
+
#has-share .email:before,
|
68 |
+
.icon.email:before {content: '\e907';}
|
69 |
+
a.favourites::before,
|
70 |
+
.icon.heart:before {content: '\e908';}
|
71 |
+
.icon.internationalization:before {content: '\e909';}
|
72 |
+
.icon.localization:before {content: '\e90a';}
|
73 |
+
.icon.menu:before {content: '\e90b';}
|
74 |
+
#has-share .print:before,
|
75 |
+
.icon.print:before {content: '\e90c';}
|
76 |
+
.reblogs::before,
|
77 |
+
.icon.reblog:before {content: '\e90d';}
|
78 |
+
a.replies::before,
|
79 |
+
.icon.reply:before {content: '\e90e';}
|
80 |
+
.icon.reset:before {content: '\e90f';}
|
81 |
+
.icon.rss:before {content: '\e910';}
|
82 |
+
.icon.search:before {content: '\e911';}
|
83 |
+
.icon.share:before {content: '\e912';}
|
84 |
+
.icon.xmark:before {content: '\e913';}
|
85 |
+
.icon.behance:before {content: '\e914';}
|
86 |
+
.icon.bigcartel:before {content: '\e915';}
|
87 |
+
.icon.bitbucket:before {content: '\e916';}
|
88 |
+
.icon.blogger:before {content: '\e917';}
|
89 |
+
#has-share .bluesky:before,
|
90 |
+
.icon.bluesky:before {content: '\e918';}
|
91 |
+
.icon.bukalapak:before {content: '\e919';}
|
92 |
+
.icon.buymeacoffee:before {content: '\e91a';}
|
93 |
+
.icon.clubhouse:before {content: '\e91b';}
|
94 |
+
.icon.codepen:before {content: '\e91c';}
|
95 |
+
.icon.creativefabrica:before {content: '\e91d';}
|
96 |
+
.icon.dailymotion:before {content: '\e91e';}
|
97 |
+
.icon.dev:before {content: '\e91f';}
|
98 |
+
.icon.deviantart:before {content: '\e920';}
|
99 |
+
.icon.digg:before {content: '\e921';}
|
100 |
+
.icon.discord:before {content: '\e922';}
|
101 |
+
.icon.dribbble:before {content: '\e923';}
|
102 |
+
.icon.ebay:before {content: '\e924';}
|
103 |
+
.icon.etsy:before {content: '\e925';}
|
104 |
+
#has-share .facebook:before,
|
105 |
+
.icon.facebook:before {content: '\e926';}
|
106 |
+
.icon.figma:before {content: '\e927';}
|
107 |
+
.icon.flickr:before {content: '\e928';}
|
108 |
+
.icon.flipkart:before {content: '\e929';}
|
109 |
+
.icon.github:before {content: '\e92a';}
|
110 |
+
.icon.githubsponsors:before {content: '\e92b';}
|
111 |
+
.icon.gitlab:before {content: '\e92c';}
|
112 |
+
.icon.gnusocial:before {content: '\e92d';}
|
113 |
+
.icon.goodreads:before {content: '\e92e';}
|
114 |
+
.icon.googlescholar:before {content: '\e92f';}
|
115 |
+
.icon.gumroad:before {content: '\e930';}
|
116 |
+
#has-share .hackernews:before,
|
117 |
+
.icon.hackernews:before {content: '\e931';}
|
118 |
+
.icon.hashnode:before {content: '\e932';}
|
119 |
+
.icon.icon--500px:before {content: '\e933';}
|
120 |
+
.icon.instagram:before {content: '\e934';}
|
121 |
+
.icon.jsfiddle:before {content: '\e935';}
|
122 |
+
.icon.karyakarsa:before {content: '\e936';}
|
123 |
+
.icon.keybase:before {content: '\e937';}
|
124 |
+
.icon.keycdn:before {content: '\e938';}
|
125 |
+
.icon.kickstarter:before {content: '\e939';}
|
126 |
+
.icon.kofi:before {content: '\e93a';}
|
127 |
+
.icon.lazada:before {content: '\e93b';}
|
128 |
+
.icon.liberapay:before {content: '\e93c';}
|
129 |
+
#has-share .linkedin:before,
|
130 |
+
.icon.linkedin:before {content: '\e93d';}
|
131 |
+
.icon.mastodon:before {content: '\e93e';}
|
132 |
+
.icon.medium:before {content: '\e93f';}
|
133 |
+
.icon.olx:before {content: '\e940';}
|
134 |
+
.icon.opencollective:before {content: '\e941';}
|
135 |
+
.icon.openid:before {content: '\e942';}
|
136 |
+
.icon.orcid:before {content: '\e943';}
|
137 |
+
.icon.patreon:before {content: '\e944';}
|
138 |
+
.icon.paypal:before {content: '\e945';}
|
139 |
+
.icon.peertube:before {content: '\e946';}
|
140 |
+
#has-share .pinterest:before,
|
141 |
+
.icon.pinterest:before {content: '\e947';}
|
142 |
+
.icon.pleroma:before {content: '\e948';}
|
143 |
+
.icon.publons:before {content: '\e949';}
|
144 |
+
.icon.quora:before {content: '\e94a';}
|
145 |
+
#has-share .reddit:before,
|
146 |
+
.icon.reddit:before {content: '\e94b';}
|
147 |
+
.icon.researchgate:before {content: '\e94c';}
|
148 |
+
.icon.saweria:before {content: '\e94d';}
|
149 |
+
.icon.sellfy:before {content: '\e94e';}
|
150 |
+
.icon.shopee:before {content: '\e94f';}
|
151 |
+
.icon.shopify:before {content: '\e950';}
|
152 |
+
.icon.signal:before {content: '\e951';}
|
153 |
+
.icon.snapchat:before {content: '\e952';}
|
154 |
+
.icon.soundcloud:before {content: '\e953';}
|
155 |
+
.icon.stackexchange:before {content: '\e954';}
|
156 |
+
.icon.stackoverflow:before {content: '\e955';}
|
157 |
+
.icon.stripe:before {content: '\e956';}
|
158 |
+
.icon.substack:before {content: '\e957';}
|
159 |
+
#has-share .telegram:before,
|
160 |
+
.icon.telegram:before {content: '\e958';}
|
161 |
+
.icon.threads:before {content: '\e959';}
|
162 |
+
.icon.tiktok:before {content: '\e95a';}
|
163 |
+
.icon.tokopedia:before {content: '\e95b';}
|
164 |
+
#has-share .tumblr:before,
|
165 |
+
.icon.tumblr:before {content: '\e95c';}
|
166 |
+
.icon.twitch:before {content: '\e95d';}
|
167 |
+
#has-share .twitter:before,
|
168 |
+
.icon.twitter:before {content: '\e95e';}
|
169 |
+
.icon.vimeo:before {content: '\e95f';}
|
170 |
+
.icon.vine:before {content: '\e960';}
|
171 |
+
#has-share .vk:before,
|
172 |
+
.icon.vk:before {content: '\e961';}
|
173 |
+
.icon.wattpad:before {content: '\e962';}
|
174 |
+
.icon.weibo:before {content: '\e963';}
|
175 |
+
#has-share .whatsapp:before,
|
176 |
+
.icon.whatsapp:before {content: '\e964';}
|
177 |
+
.icon.wikipedia:before {content: '\e965';}
|
178 |
+
.icon.wordpress:before {content: '\e966';}
|
179 |
+
.icon.write-dot-as:before {content: '\e967';}
|
180 |
+
.icon.x:before {content: '\e968';}
|
181 |
+
#has-share .xing:before,
|
182 |
+
.icon.xing:before {content: '\e969';}
|
183 |
+
.icon.xmpp:before {content: '\e96a';}
|
184 |
+
.icon.youtube:before {content: '\e96b';}
|
assets/css/typeface/websafe.css
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
:root {
|
2 |
+
--rm: 'Times New Roman';
|
3 |
+
--rmosf: 'Palatino';
|
4 |
+
--sf: Arial;
|
5 |
+
--tt: 'Courier New';
|
6 |
+
}
|
7 |
+
|
8 |
+
/* :root {
|
9 |
+
--rm: Garamond, Palatino, 'Times New Roman';
|
10 |
+
--rmosf: 'Palatino';
|
11 |
+
--sf: Helvetica, Verdana, Arial;
|
12 |
+
--tt: Courier, Consolas, 'Courier New';
|
13 |
+
} */
|
assets/css/typesetting/_template.css
ADDED
@@ -0,0 +1,306 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* font-style */
|
2 |
+
.normalfont {
|
3 |
+
font-style: normal;
|
4 |
+
font-weight: normal;
|
5 |
+
}
|
6 |
+
|
7 |
+
.md
|
8 |
+
.textmd,
|
9 |
+
.mdseries {
|
10 |
+
font-weight: normal;
|
11 |
+
}
|
12 |
+
|
13 |
+
.bf,
|
14 |
+
.textbf,
|
15 |
+
.bfseries {
|
16 |
+
font-weight: bold;
|
17 |
+
}
|
18 |
+
|
19 |
+
.up,
|
20 |
+
.textup,
|
21 |
+
.upshape {
|
22 |
+
font-style: normal;
|
23 |
+
}
|
24 |
+
|
25 |
+
.it,
|
26 |
+
.textit,
|
27 |
+
.itshape {
|
28 |
+
font-style: italic;
|
29 |
+
}
|
30 |
+
|
31 |
+
.sl,
|
32 |
+
.textsl,
|
33 |
+
.slshape {
|
34 |
+
--tsf: skew(-7deg, 0deg);
|
35 |
+
-webkit-transform: var(--tsf);
|
36 |
+
-moz-transform: var(--tsf);
|
37 |
+
-ms-transform: var(--tsf);
|
38 |
+
-o-transform: var(--tsf);
|
39 |
+
transform: var(--tsf);
|
40 |
+
font-style: oblique;
|
41 |
+
}
|
42 |
+
|
43 |
+
.sw,
|
44 |
+
.textsw,
|
45 |
+
.swshape {
|
46 |
+
font-variant-alternates: swash(swsh);
|
47 |
+
font-feature-settings: 'swsh' 1;
|
48 |
+
-moz-font-feature-settings: 'swsh' 1;
|
49 |
+
-webkit-font-feature-settings: 'swsh' 1;
|
50 |
+
}
|
51 |
+
|
52 |
+
.sc,
|
53 |
+
.ssc,
|
54 |
+
.textsc,
|
55 |
+
.scshape {
|
56 |
+
font-variant: small-caps;
|
57 |
+
font-feature-settings: 'smcp' 1;
|
58 |
+
-moz-font-feature-settings: 'smcp' 1;
|
59 |
+
-webkit-font-feature-settings: 'smcp' 1;
|
60 |
+
}
|
61 |
+
|
62 |
+
.allsmallcaps,
|
63 |
+
.ssc {
|
64 |
+
font-variant-caps: all-small-caps;
|
65 |
+
font-feature-settings: 'c2sc' 1;
|
66 |
+
-moz-font-feature-settings: 'c2sc' 1;
|
67 |
+
-webkit-font-feature-settings: 'c2sc' 1;
|
68 |
+
letter-spacing: 0.16em;
|
69 |
+
word-spacing: 16%;
|
70 |
+
}
|
71 |
+
|
72 |
+
/* font-family */
|
73 |
+
.rm,
|
74 |
+
.textrm {
|
75 |
+
font-family: var(--rm), serif;
|
76 |
+
}
|
77 |
+
|
78 |
+
.tt,
|
79 |
+
.texttt {
|
80 |
+
font-family: var(--tt), monospace;
|
81 |
+
}
|
82 |
+
|
83 |
+
.sf,
|
84 |
+
.textsf {
|
85 |
+
font-family: var(--sf), sans-serif;
|
86 |
+
}
|
87 |
+
|
88 |
+
.od,
|
89 |
+
.textod {
|
90 |
+
font-family: var(--od), sans-serif;
|
91 |
+
}
|
92 |
+
|
93 |
+
/* numeral */
|
94 |
+
.pnum,
|
95 |
+
.pl,
|
96 |
+
.po,
|
97 |
+
.textpl,
|
98 |
+
.textpo {
|
99 |
+
font-variant-numeric: proportional-nums;
|
100 |
+
font-feature-settings: 'pnum' 1;
|
101 |
+
-moz-font-feature-settings: 'pnum' 1;
|
102 |
+
-webkit-font-feature-settings: 'pnum' 1;
|
103 |
+
}
|
104 |
+
|
105 |
+
.onum,
|
106 |
+
.po,
|
107 |
+
.to,
|
108 |
+
.textpo,
|
109 |
+
.textto {
|
110 |
+
font-variant-numeric: oldstyle-nums;
|
111 |
+
font-feature-settings:'onum' 1;
|
112 |
+
-moz-font-feature-settings:'onum' 1;
|
113 |
+
-webkit-font-feature-settings:'onum' 1;
|
114 |
+
}
|
115 |
+
|
116 |
+
.lnum,
|
117 |
+
.tl,
|
118 |
+
.pl
|
119 |
+
.texttl,
|
120 |
+
.textpl {
|
121 |
+
font-variant-numeric: lining-nums;
|
122 |
+
font-feature-settings: 'lnum' 1;
|
123 |
+
-moz-font-feature-settings: 'lnum' 1;
|
124 |
+
-webkit-font-feature-settings: 'lnum' 1;
|
125 |
+
}
|
126 |
+
|
127 |
+
.tnum,
|
128 |
+
.to,
|
129 |
+
.po,
|
130 |
+
.textto,
|
131 |
+
.textpo {
|
132 |
+
font-variant-numeric: tabular-nums;
|
133 |
+
font-feature-settings: 'tnum' 1, 'kern' 0;
|
134 |
+
-moz-font-feature-settings: 'tnum' 1, 'kern' 0;
|
135 |
+
-webkit-font-feature-settings: 'tnum' 1, 'kern' 0;
|
136 |
+
}
|
137 |
+
|
138 |
+
.sz0 {
|
139 |
+
font-variant-numeric: slashed-zero;
|
140 |
+
font-feature-settings: 'zero' 1;
|
141 |
+
-moz-font-feature-settings: 'zero' 1;
|
142 |
+
-webkit-font-feature-settings: 'zero' 1;
|
143 |
+
}
|
144 |
+
|
145 |
+
.sub,
|
146 |
+
.textsub {
|
147 |
+
font-variant-position: sub;
|
148 |
+
font-feature-settings: 'subs' 1;
|
149 |
+
}
|
150 |
+
|
151 |
+
.sup,
|
152 |
+
.textsup {
|
153 |
+
font-variant-position: super;
|
154 |
+
font-feature-settings: 'sups' 1;
|
155 |
+
}
|
156 |
+
|
157 |
+
.ldots {
|
158 |
+
text-overflow: ellipsis;
|
159 |
+
overflow-x: clip;
|
160 |
+
white-space: nowrap;
|
161 |
+
}
|
162 |
+
|
163 |
+
/* presentation */
|
164 |
+
.smallskip {
|
165 |
+
margin: var(--smallskip) 0;
|
166 |
+
}
|
167 |
+
|
168 |
+
.medskip {
|
169 |
+
margin: var(--medskip) 0;
|
170 |
+
}
|
171 |
+
|
172 |
+
.bigskip {
|
173 |
+
margin:var(--vskip);
|
174 |
+
}
|
175 |
+
|
176 |
+
.hfill,
|
177 |
+
.lfill {
|
178 |
+
margin-left: auto;
|
179 |
+
}
|
180 |
+
|
181 |
+
.hfill,
|
182 |
+
.rfill {
|
183 |
+
margin-right: auto;
|
184 |
+
}
|
185 |
+
|
186 |
+
.vfill,
|
187 |
+
.tfill {
|
188 |
+
margin-top: auto;
|
189 |
+
}
|
190 |
+
|
191 |
+
.vfill,
|
192 |
+
.bfill {
|
193 |
+
margin-bottom: auto;
|
194 |
+
}
|
195 |
+
|
196 |
+
.center {
|
197 |
+
margin: auto;
|
198 |
+
align-self: center;
|
199 |
+
}
|
200 |
+
|
201 |
+
.center,
|
202 |
+
.centering {
|
203 |
+
text-align: center;
|
204 |
+
}
|
205 |
+
|
206 |
+
.justifying {
|
207 |
+
text-align: justify;
|
208 |
+
}
|
209 |
+
|
210 |
+
.flushleft,
|
211 |
+
.raggedright {
|
212 |
+
text-align: left;
|
213 |
+
}
|
214 |
+
|
215 |
+
.flushright,
|
216 |
+
.raggedleft {
|
217 |
+
text-align: right;
|
218 |
+
}
|
219 |
+
|
220 |
+
.nomargin {
|
221 |
+
margin: 0;
|
222 |
+
}
|
223 |
+
|
224 |
+
.nopadding {
|
225 |
+
padding: 0;
|
226 |
+
}
|
227 |
+
|
228 |
+
.noindent {
|
229 |
+
text-indent: 0 !important;
|
230 |
+
}
|
231 |
+
|
232 |
+
.parindent {
|
233 |
+
text-indent: var(--indent);
|
234 |
+
}
|
235 |
+
|
236 |
+
/* break */
|
237 |
+
.nobreak {
|
238 |
+
break-inside: avoid;
|
239 |
+
}
|
240 |
+
|
241 |
+
.nopagebreak {
|
242 |
+
break-after: avoid-page;
|
243 |
+
page-break-after: avoid;
|
244 |
+
}
|
245 |
+
|
246 |
+
.break {
|
247 |
+
break-after: always;
|
248 |
+
}
|
249 |
+
|
250 |
+
.columnbreak {
|
251 |
+
break-after: column;
|
252 |
+
}
|
253 |
+
|
254 |
+
.pagebreak {
|
255 |
+
break-after: page;
|
256 |
+
page-break-after: always;
|
257 |
+
}
|
258 |
+
|
259 |
+
.newpage {
|
260 |
+
break-before: always;
|
261 |
+
page-break-before: always;
|
262 |
+
}
|
263 |
+
|
264 |
+
.clearpage {
|
265 |
+
break-after: verso;
|
266 |
+
}
|
267 |
+
|
268 |
+
.creardoublepage {
|
269 |
+
break-after: recto;
|
270 |
+
}
|
271 |
+
|
272 |
+
/* quotation */
|
273 |
+
q {
|
274 |
+
font-style: italic;
|
275 |
+
}
|
276 |
+
|
277 |
+
/* enquote */
|
278 |
+
q {
|
279 |
+
quotes: '“' '”' '‘' '’';
|
280 |
+
}
|
281 |
+
|
282 |
+
q.alt {
|
283 |
+
quotes: '”' '”' '’' '’';
|
284 |
+
}
|
285 |
+
|
286 |
+
/* guillemet */
|
287 |
+
q.gm,
|
288 |
+
q.guillemet {
|
289 |
+
quotes: '«' '»' '‹' '›';
|
290 |
+
}
|
291 |
+
|
292 |
+
q.gm.alt,
|
293 |
+
q.guillemet.alt {
|
294 |
+
quotes: '»' '«' '›' '‹';
|
295 |
+
}
|
296 |
+
|
297 |
+
/* goosefeet */
|
298 |
+
q.gf,
|
299 |
+
q.goosefeet {
|
300 |
+
quotes: '„' '“' '‚' '‘';
|
301 |
+
}
|
302 |
+
|
303 |
+
q.gf.alt,
|
304 |
+
q.goosefeet.alt {
|
305 |
+
quotes: '„' '”' '‚' '’';
|
306 |
+
}
|
assets/css/typesetting/default.css
ADDED
@@ -0,0 +1,293 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
:root {
|
2 |
+
--tiny: 0.618rem;
|
3 |
+
--scriptsize: 0.786rem;
|
4 |
+
--footnotesize: 1rem;
|
5 |
+
--small: 1.144rem;
|
6 |
+
--normalsize: 1.272rem;
|
7 |
+
--large: 1.414rem;
|
8 |
+
--Large: 1.618rem;
|
9 |
+
--LARGE: 2.058rem;
|
10 |
+
--huge: 2.618rem;
|
11 |
+
--Huge: 3.33rem;
|
12 |
+
--fontScale: 1;
|
13 |
+
--baselineStretch: 1;
|
14 |
+
--indent: 1.618pc;
|
15 |
+
--smallskip: 1rem;
|
16 |
+
--medskip: 1.618rem;
|
17 |
+
--bigskip: 3.14rem;
|
18 |
+
--vskip:var(--bigskip) 0;
|
19 |
+
}
|
20 |
+
|
21 |
+
h1 + p,
|
22 |
+
h2 + p,
|
23 |
+
h3 + p,
|
24 |
+
h4 + p,
|
25 |
+
h5 + p,
|
26 |
+
h6 + p,
|
27 |
+
p * {
|
28 |
+
margin-top: 0;
|
29 |
+
padding-top: 0;
|
30 |
+
text-indent: 0 !important;
|
31 |
+
}
|
32 |
+
|
33 |
+
blockquote {
|
34 |
+
margin: 0;
|
35 |
+
background: #ffe8aa22;
|
36 |
+
padding: 1pt var(--indent);
|
37 |
+
width: var(--golden-ratio);
|
38 |
+
font-style: italic;
|
39 |
+
}
|
40 |
+
|
41 |
+
blockquote blockquote {
|
42 |
+
margin-bottom: var(--indent);
|
43 |
+
border-left: var(--bound);
|
44 |
+
background: none;
|
45 |
+
width: unset;
|
46 |
+
}
|
47 |
+
|
48 |
+
blockquote cite {
|
49 |
+
font-style: italic;
|
50 |
+
}
|
51 |
+
|
52 |
+
kbd {
|
53 |
+
/* border: 1pt solid var(--mid); */
|
54 |
+
-webkit-transition: 0.2s;
|
55 |
+
-moz-transition: 0.2s;
|
56 |
+
-o-transition: 0.2s;
|
57 |
+
transition: 0.2s;
|
58 |
+
margin: 0 2pt;
|
59 |
+
border-radius: 0.7ex;
|
60 |
+
padding: 0.3ex 1ex;
|
61 |
+
font-size: var(--footnotesize);
|
62 |
+
box-shadow: var(--box-shadow-focus);
|
63 |
+
}
|
64 |
+
|
65 |
+
kbd:hover {
|
66 |
+
box-shadow: var(--box-shadow-hover);
|
67 |
+
}
|
68 |
+
|
69 |
+
kbd:has(kbd) {
|
70 |
+
border-radius: 1ex;
|
71 |
+
padding: 1ex 0.7ex;
|
72 |
+
}
|
73 |
+
|
74 |
+
.key {
|
75 |
+
display: none;
|
76 |
+
text-transform: uppercase;
|
77 |
+
}
|
78 |
+
|
79 |
+
.keydown .key {
|
80 |
+
display: initial !important;
|
81 |
+
font-family: var(--sf), sans-serif;
|
82 |
+
font-weight: unset;
|
83 |
+
}
|
84 |
+
|
85 |
+
code {
|
86 |
+
border-radius: 0.25em;
|
87 |
+
background: var(--g18s);
|
88 |
+
}
|
89 |
+
|
90 |
+
pre > code {
|
91 |
+
display: block;
|
92 |
+
border-radius: 1ex;
|
93 |
+
background: unset;
|
94 |
+
width: fit-content;
|
95 |
+
max-width: 100%;
|
96 |
+
overflow-x: auto;
|
97 |
+
}
|
98 |
+
|
99 |
+
code,
|
100 |
+
pre > code {
|
101 |
+
line-height: 1.618;
|
102 |
+
letter-spacing: 0.05em;
|
103 |
+
font-family: var(--tt), monospace;
|
104 |
+
font-kerning: none;
|
105 |
+
font-size: 0.8em;
|
106 |
+
-webkit-font-feature-settings: 'kern' 0;
|
107 |
+
-moz-font-feature-settings: 'kern' 0;
|
108 |
+
font-feature-settings: 'kern' 0;
|
109 |
+
}
|
110 |
+
|
111 |
+
pre > code table {
|
112 |
+
border: unset;
|
113 |
+
}
|
114 |
+
|
115 |
+
dl,
|
116 |
+
ol,
|
117 |
+
ul {
|
118 |
+
padding-left: var(--indent);
|
119 |
+
}
|
120 |
+
|
121 |
+
.ldots {
|
122 |
+
text-overflow: ellipsis;
|
123 |
+
overflow-x: clip;
|
124 |
+
white-space: nowrap;
|
125 |
+
}
|
126 |
+
|
127 |
+
.lfill {
|
128 |
+
margin-left: auto;
|
129 |
+
}
|
130 |
+
|
131 |
+
.rfill {
|
132 |
+
margin-right: auto;
|
133 |
+
}
|
134 |
+
|
135 |
+
.sw,
|
136 |
+
.textsw,
|
137 |
+
.swshape {
|
138 |
+
font-variant-alternates: swash(swsh);
|
139 |
+
-webkit-font-feature-settings: 'swsh' 1;
|
140 |
+
-moz-font-feature-settings: 'swsh' 1;
|
141 |
+
font-feature-settings: 'swsh' 1;
|
142 |
+
}
|
143 |
+
|
144 |
+
.up,
|
145 |
+
.textup,
|
146 |
+
.upshape {
|
147 |
+
font-style: normal;
|
148 |
+
}
|
149 |
+
|
150 |
+
table,
|
151 |
+
thead {
|
152 |
+
border-collapse: collapse;
|
153 |
+
border: solid var(--off);
|
154 |
+
border-width: 1pt 0;
|
155 |
+
}
|
156 |
+
|
157 |
+
thead {
|
158 |
+
background: var(--g18s);
|
159 |
+
}
|
160 |
+
|
161 |
+
th {
|
162 |
+
padding: 2pt 0;
|
163 |
+
}
|
164 |
+
|
165 |
+
td {
|
166 |
+
padding: 1pt 0;
|
167 |
+
}
|
168 |
+
|
169 |
+
th + th {
|
170 |
+
border-left: 1pt dotted var(--g18s);
|
171 |
+
}
|
172 |
+
|
173 |
+
tbody tr:nth-child(2n) {
|
174 |
+
background-color: #80808008;
|
175 |
+
}
|
176 |
+
|
177 |
+
.carousel__viewport h2,
|
178 |
+
.carousel__viewport h3,
|
179 |
+
.hero__content h1,
|
180 |
+
.hero__content h2,
|
181 |
+
.hero__content h3,
|
182 |
+
#share > span,
|
183 |
+
#menu-footer::before,
|
184 |
+
.section-title {
|
185 |
+
vertical-align: middle;
|
186 |
+
text-transform: uppercase;
|
187 |
+
letter-spacing: 2pt;
|
188 |
+
font-weight: 700;
|
189 |
+
font-variant: small-caps;
|
190 |
+
font-style: normal;
|
191 |
+
/* font-variant-caps: all-small-caps; */
|
192 |
+
}
|
193 |
+
|
194 |
+
details.presentation > summary {
|
195 |
+
cursor: pointer;
|
196 |
+
list-style: none;
|
197 |
+
}
|
198 |
+
|
199 |
+
.has-aria-label-top:before,
|
200 |
+
.has-aria-label:after {
|
201 |
+
display: block;
|
202 |
+
margin: auto;
|
203 |
+
content: attr(aria-label);
|
204 |
+
}
|
205 |
+
|
206 |
+
.has-pre::before,
|
207 |
+
.has-post:after,
|
208 |
+
.has-desc:after {
|
209 |
+
display: inline-block;
|
210 |
+
color: var(--mid);
|
211 |
+
font-size: 0.9em;
|
212 |
+
font-weight: normal;
|
213 |
+
content: attr(aria-description);
|
214 |
+
}
|
215 |
+
|
216 |
+
.t {
|
217 |
+
--tsf: translate(-2em);
|
218 |
+
display: inline-flex;
|
219 |
+
position: absolute;
|
220 |
+
top: 125%;
|
221 |
+
justify-content: center;
|
222 |
+
visibility: hidden;
|
223 |
+
z-index: 1;
|
224 |
+
border-radius: 1em;
|
225 |
+
background: var(--fg);
|
226 |
+
padding: 0.25em;
|
227 |
+
width: 7.5em;
|
228 |
+
text-align: center;
|
229 |
+
color: var(--bg);
|
230 |
+
font: var(--scriptsize) var(--sf), sans-serif;
|
231 |
+
}
|
232 |
+
|
233 |
+
.t.t2 {
|
234 |
+
--tsf: unset;
|
235 |
+
display: block;
|
236 |
+
top: var(--vhead);
|
237 |
+
}
|
238 |
+
|
239 |
+
.t::after {
|
240 |
+
position: absolute;
|
241 |
+
bottom: 100%;
|
242 |
+
left: 47.5%;
|
243 |
+
border-style: solid;
|
244 |
+
border-color: transparent transparent var(--fg) transparent;
|
245 |
+
content: '';
|
246 |
+
}
|
247 |
+
|
248 |
+
button:focus > .t,
|
249 |
+
.icon:hover + .t,
|
250 |
+
a:hover .t,
|
251 |
+
a:focus .t,
|
252 |
+
summary:hover > .t,
|
253 |
+
summary:focus > .t {
|
254 |
+
visibility: visible;
|
255 |
+
}
|
256 |
+
|
257 |
+
.loading:after {
|
258 |
+
--anm: ellipsis steps(4,end) 2s infinite;
|
259 |
+
display: inline-block;
|
260 |
+
overflow: hidden;
|
261 |
+
vertical-align: bottom;
|
262 |
+
content: '';
|
263 |
+
}
|
264 |
+
|
265 |
+
.letterine > i {
|
266 |
+
font-style: normal;
|
267 |
+
}
|
268 |
+
|
269 |
+
.hide {
|
270 |
+
display: none !important;
|
271 |
+
}
|
272 |
+
|
273 |
+
ul.inline::before,
|
274 |
+
ul.delimiter::after,
|
275 |
+
ul.delimiter li:first-child:before,
|
276 |
+
ul.delimiter li:nth-last-child(2)::after {
|
277 |
+
content: '\a0';
|
278 |
+
}
|
279 |
+
|
280 |
+
#page .date-has-label > .doc-publish-date::after,
|
281 |
+
ul.delimiter li:after {
|
282 |
+
content: ',\a0';
|
283 |
+
}
|
284 |
+
|
285 |
+
ul.delimiter li:last-child:before {
|
286 |
+
content: '&\a0';
|
287 |
+
}
|
288 |
+
|
289 |
+
#page .doc-lastmod-date::after,
|
290 |
+
#keywords .inline li::after,
|
291 |
+
ul.delimiter li:last-child:after {
|
292 |
+
content: '.';
|
293 |
+
}
|
assets/css/typesetting/sectioning.css
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
h1,
|
2 |
+
h2,
|
3 |
+
h3,
|
4 |
+
h4,
|
5 |
+
h5,
|
6 |
+
h6 {
|
7 |
+
line-height: calc(var(--baselineStretch) * 1);
|
8 |
+
font-weight: 400;
|
9 |
+
clear: both;
|
10 |
+
}
|
11 |
+
|
12 |
+
h2,
|
13 |
+
h3,
|
14 |
+
h4 {
|
15 |
+
margin: var(--bigskip) 0 var(--smallskip);
|
16 |
+
font-style: italic;
|
17 |
+
}
|
18 |
+
|
19 |
+
h1 {
|
20 |
+
margin: var(--bigskip) 0 var(--smallskip);
|
21 |
+
text-transform: capitalize;
|
22 |
+
font-size: var(--huge);
|
23 |
+
counter-reset: section;
|
24 |
+
}
|
25 |
+
|
26 |
+
article > section {
|
27 |
+
counter-reset: section;
|
28 |
+
}
|
29 |
+
|
30 |
+
h2 {
|
31 |
+
font-size: var(--LARGE);
|
32 |
+
counter-reset: subsection;
|
33 |
+
}
|
34 |
+
|
35 |
+
h3 {
|
36 |
+
font-size: var(--Large);
|
37 |
+
counter-reset: subsubsection;
|
38 |
+
}
|
39 |
+
|
40 |
+
h4 {
|
41 |
+
font-size: var(--large);
|
42 |
+
counter-reset: paragraph;
|
43 |
+
}
|
44 |
+
|
45 |
+
h5 {
|
46 |
+
counter-reset: subparagraph;
|
47 |
+
margin: var(--smallskip) 0 0;
|
48 |
+
}
|
49 |
+
|
50 |
+
h5,
|
51 |
+
h6 {
|
52 |
+
word-spacing: 16%;
|
53 |
+
letter-spacing: 0.16em;
|
54 |
+
font: var(--normalsize) var(--sf), sans-serif;
|
55 |
+
-webkit-font-feature-settings: 'c2sc' 1;
|
56 |
+
-moz-font-feature-settings: 'c2sc' 1;
|
57 |
+
font-feature-settings: 'c2sc' 1;
|
58 |
+
font-variant-caps: all-small-caps;
|
59 |
+
}
|
60 |
+
|
61 |
+
h6 {
|
62 |
+
float: left;
|
63 |
+
margin: 0.2em 0.2em 0 0;
|
64 |
+
}
|
65 |
+
|
66 |
+
/* section labeling */
|
67 |
+
|
68 |
+
/* h1::before {
|
69 |
+
counter-increment: chapter;
|
70 |
+
}
|
71 |
+
|
72 |
+
h2::before {
|
73 |
+
counter-increment: section;
|
74 |
+
}
|
75 |
+
|
76 |
+
h3::before {
|
77 |
+
counter-increment: subsection;
|
78 |
+
}
|
79 |
+
|
80 |
+
h4::before {
|
81 |
+
counter-increment: subsubsection;
|
82 |
+
}
|
83 |
+
|
84 |
+
h5::before {
|
85 |
+
counter-increment: paragraph;
|
86 |
+
}
|
87 |
+
|
88 |
+
h6::before {
|
89 |
+
counter-increment: subparagraph;
|
90 |
+
}
|
91 |
+
|
92 |
+
#content.secnum {
|
93 |
+
counter-reset: chapter;
|
94 |
+
}
|
95 |
+
|
96 |
+
#content.secnum h1::before {
|
97 |
+
content: counter(chapter);
|
98 |
+
}
|
99 |
+
|
100 |
+
#content.secnum h2::before {
|
101 |
+
content: counter(section) '. ';
|
102 |
+
}
|
103 |
+
|
104 |
+
#content.secnum h3::before {
|
105 |
+
content: counter(subsection)'. ';
|
106 |
+
}
|
107 |
+
|
108 |
+
#content.secnum h4::before {
|
109 |
+
content: counter(subsubsection)'. ';
|
110 |
+
}
|
111 |
+
|
112 |
+
#content.secnum h5::before {
|
113 |
+
content: counter(paragraph);
|
114 |
+
}
|
115 |
+
|
116 |
+
#content.secnum h6::before {
|
117 |
+
content: counter(subparagraph);
|
118 |
+
} */
|
assets/css/typesetting/verbatim.css
ADDED
@@ -0,0 +1,307 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body.deuteranopia {
|
2 |
+
--y6a: #d17991; --w8u: #3e8620; --s8i: #ff727b; --n8e: #6f7eb5;
|
3 |
+
--m4i: #265245; --y4i: #d61906; --f8a: #8671b2; --s4n: #008ae7;
|
4 |
+
--d3u: #6d4835; --r6a: #4d4a17; --y4a: #0b3460; --k8i: #fe8500;
|
5 |
+
--y6i: #0070a0; --o5a: #bf2d37; --c3u: #635169; --s5o: #2d5a7b;
|
6 |
+
--s5e: #61317b; --y7i: #00b0fb; --i3i: #ff1202; --t9u: #014c2d;
|
7 |
+
}
|
8 |
+
|
9 |
+
body.protanopia {
|
10 |
+
--y6a: #b095c0; --w8u: #616f00; --s8i: #eeb0df; --n8e: #6d78ae;
|
11 |
+
--m4i: #35432c; --y4i: #9a596f; --f8a: #7777bd; --s4n: #024b82;
|
12 |
+
--d3u: #645649; --r6a: #524c18; --y4a: #122448; --k8i: #efb440;
|
13 |
+
--y6i: #013c4c; --o5a: #8d5d85; --c3u: #5a5774; --s5o: #364a63;
|
14 |
+
--s5e: #494093; --y7i: #086078; --i3i: #e87aab; --t9u: #012500;
|
15 |
+
}
|
16 |
+
|
17 |
+
body.tritanopia {
|
18 |
+
--y6a: #b98a9c; --w8u: #235e1a; --s8i: #e58795; --n8e: #958fb3;
|
19 |
+
--m4i: #304a3f; --y4i: #7e2521; --f8a: #a288b5; --s4n: #5196cd;
|
20 |
+
--d3u: #54463b; --r6a: #303b19; --y4a: #343d5a; --k8i: #83630c;
|
21 |
+
--y6i: #30728c; --o5a: #873d4a; --c3u: #695b6c; --s5o: #506175;
|
22 |
+
--s5e: #764e82; --y7i: #4bb0dc; --i3i: #c02a2b; --t9u: #00361e;
|
23 |
+
}
|
24 |
+
|
25 |
+
body.monochrome {
|
26 |
+
--y6a: var(--fg); --w8u: var(--fg); --s8i: var(--fg); --n8e: var(--fg);
|
27 |
+
--m4i: var(--fg); --y4i: var(--fg); --f8a: var(--fg); --s4n: var(--fg);
|
28 |
+
--d3u: var(--fg); --r6a: var(--fg); --y4a: var(--fg); --k8i: var(--fg);
|
29 |
+
--y6i: var(--fg); --o5a: var(--fg); --c3u: var(--fg); --s5o: var(--fg);
|
30 |
+
--s5e: var(--fg); --y7i: var(--fg); --i3i: var(--fg); --t9u: var(--fg);
|
31 |
+
}
|
32 |
+
|
33 |
+
@media (prefers-contrast: less) {
|
34 |
+
body.monochrome {
|
35 |
+
--y6a: #8f8f8f; --w8u: #6f6f6f; --s8i: #9c9c9c; --n8e: #808080;
|
36 |
+
--m4i: #474747; --y4i: #3e3e3e; --f8a: #7c7c7c; --s4n: #686868;
|
37 |
+
--d3u: #515151; --r6a: #484848; --y4a: #2f2f2f; --k8i: #989898;
|
38 |
+
--y6i: #535353; --o5a: #4e4e4e; --c3u: #575757; --s5o: #535353;
|
39 |
+
--s5e: #414141; --y7i: #818181; --i3i: #565656; --t9u: #313131;
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
.lntable {
|
44 |
+
display: block;
|
45 |
+
}
|
46 |
+
|
47 |
+
.highlight > pre:not(.chroma) {
|
48 |
+
background: unset !important;
|
49 |
+
color: inherit !important;
|
50 |
+
}
|
51 |
+
|
52 |
+
.highlight > pre.chroma {
|
53 |
+
margin-left: 2rem;
|
54 |
+
}
|
55 |
+
|
56 |
+
pre > code {
|
57 |
+
padding: 1ex 0;
|
58 |
+
/* background: var(--g18s); */
|
59 |
+
}
|
60 |
+
|
61 |
+
.lntd > .chroma{
|
62 |
+
margin: 0;
|
63 |
+
}
|
64 |
+
|
65 |
+
.lntd:first-child * {
|
66 |
+
background: unset !important;
|
67 |
+
}
|
68 |
+
|
69 |
+
.lntd:first-child .hl {
|
70 |
+
font-weight: bold;
|
71 |
+
}
|
72 |
+
|
73 |
+
.hljs-ln-numbers,
|
74 |
+
.lntd:first-child pre > code,
|
75 |
+
.chroma .lnt {/* LineNumbersTable */
|
76 |
+
min-width: 2rem;
|
77 |
+
max-width: 2rem;
|
78 |
+
overflow: hidden;
|
79 |
+
vertical-align: top;
|
80 |
+
color: var(--n8e);
|
81 |
+
-webkit-user-select: none;
|
82 |
+
-khtml-user-select: none;
|
83 |
+
-moz-user-select: none;
|
84 |
+
-ms-user-select: none;
|
85 |
+
user-select: none;
|
86 |
+
-webkit-touch-callout: none;
|
87 |
+
}
|
88 |
+
|
89 |
+
.chroma .lntd { /* LineTableTD */
|
90 |
+
vertical-align: top;
|
91 |
+
}
|
92 |
+
|
93 |
+
.chroma .lntable {/* LineTable */
|
94 |
+
border: unset;
|
95 |
+
border-spacing: 0;
|
96 |
+
}
|
97 |
+
|
98 |
+
.chroma .hl { /* LineHighlight */
|
99 |
+
display: block;
|
100 |
+
background: var(--g18s);
|
101 |
+
width: auto;
|
102 |
+
}
|
103 |
+
|
104 |
+
.chroma .c, /* Comment */
|
105 |
+
.chroma .ch, /* CommentHashbang */
|
106 |
+
.chroma .cm, /* CommentMultiline */
|
107 |
+
.chroma .c1, /* CommentSingle */
|
108 |
+
.chroma .cs, /* CommentSpecial */
|
109 |
+
.chroma .cp, /* CommentPreproc */
|
110 |
+
.chroma .cpf, /* CommentPreprocFile */
|
111 |
+
.hljs-emphasis {
|
112 |
+
font-style: italic;
|
113 |
+
}
|
114 |
+
|
115 |
+
.chroma .m, /* LiteralNumber */
|
116 |
+
.chroma .mb, /* LiteralNumberBin */
|
117 |
+
.chroma .mf, /* LiteralNumberFloat */
|
118 |
+
.chroma .mh, /* LiteralNumberHex */
|
119 |
+
.chroma .mi, /* LiteralNumberInteger */
|
120 |
+
.chroma .il, /* LiteralNumberIntegerLong */
|
121 |
+
.chroma .mo, /* LiteralNumberOct */
|
122 |
+
.chroma .kc, /* KeywordConstant */
|
123 |
+
.chroma .kt, /* KeywordType */
|
124 |
+
.chroma .nt, /* NameTag */
|
125 |
+
.hljs-strong {
|
126 |
+
/* font-weight: bold; */
|
127 |
+
}
|
128 |
+
|
129 |
+
.chroma .x, /* Other */
|
130 |
+
.chroma .err, /* Error */
|
131 |
+
.chroma .ln,/* LineNumbers */
|
132 |
+
.chroma .o, /* Operator */
|
133 |
+
.chroma .p, /* Punctuation */
|
134 |
+
.chroma .w { /* TextWhitespace */
|
135 |
+
}
|
136 |
+
|
137 |
+
.chroma .kn {/* KeywordNamespace */
|
138 |
+
color: var(--y4i);
|
139 |
+
font-weight: bold;
|
140 |
+
}
|
141 |
+
|
142 |
+
.chroma .ow { /* OperatorWord */
|
143 |
+
color: var(--y4a);
|
144 |
+
}
|
145 |
+
|
146 |
+
.chroma .c, /* Comment */
|
147 |
+
.chroma .ch, /* CommentHashbang */
|
148 |
+
.chroma .cm, /* CommentMultiline */
|
149 |
+
.chroma .c1, /* CommentSingle */
|
150 |
+
.chroma .cs, /* CommentSpecial */
|
151 |
+
.chroma .cp, /* CommentPreproc */
|
152 |
+
.chroma .cpf, /* CommentPreprocFile */
|
153 |
+
.hljs-comment,
|
154 |
+
.hljs-quote {
|
155 |
+
color: var(--i3i);
|
156 |
+
}
|
157 |
+
|
158 |
+
.chroma .n, /* Name */
|
159 |
+
.chroma .nc, /* NameClass */
|
160 |
+
.chroma .nd, /* NameDecorator*/
|
161 |
+
.chroma .ne, /* NameException */
|
162 |
+
.chroma .fm, /* NameFunctionMagic */
|
163 |
+
.chroma .nl, /* NameLabel */
|
164 |
+
.chroma .nn, /* NameNamespace */
|
165 |
+
.chroma .nx, /* NameOther */
|
166 |
+
.chroma .py, /* NameProperty ---*/
|
167 |
+
.chroma .nt, /* NameTag */
|
168 |
+
.chroma .nv, /* NameVariable */
|
169 |
+
.chroma .vc, /* NameVariableClass */
|
170 |
+
.chroma .vg, /* NameVariableGlobal */
|
171 |
+
.chroma .vi, /* NameVariableInstance */
|
172 |
+
.chroma .vm, /* NameVariableMagic */
|
173 |
+
.hljs-deletion,
|
174 |
+
.hljs-name,
|
175 |
+
.hljs-regexp,
|
176 |
+
.hljs-selector-class,
|
177 |
+
.hljs-selector-id,
|
178 |
+
.hljs-tag,
|
179 |
+
.hljs-template-variable,
|
180 |
+
.hljs-variable {
|
181 |
+
color: var(--k8i);
|
182 |
+
}
|
183 |
+
|
184 |
+
.chroma .nb, /* NameBuiltin */
|
185 |
+
.chroma .bp, /* NameBuiltinPseudo */
|
186 |
+
.chroma .l, /* Literal */
|
187 |
+
.chroma .ld, /* LiteralDate */
|
188 |
+
.chroma .m, /* LiteralNumber */
|
189 |
+
.chroma .mb, /* LiteralNumberBin */
|
190 |
+
.chroma .mf, /* LiteralNumberFloat */
|
191 |
+
.chroma .mh, /* LiteralNumberHex */
|
192 |
+
.chroma .mi, /* LiteralNumberInteger */
|
193 |
+
.chroma .il, /* LiteralNumberIntegerLong */
|
194 |
+
.chroma .mo, /* LiteralNumberOct */
|
195 |
+
.hljs-built_in,
|
196 |
+
.hljs-lfg,
|
197 |
+
.hljs-literal,
|
198 |
+
.hljs-meta,
|
199 |
+
.hljs-number,
|
200 |
+
.hljs-params,
|
201 |
+
.hljs-type {
|
202 |
+
color: var(--s8i);
|
203 |
+
}
|
204 |
+
|
205 |
+
.chroma .na, /* NameAttribute */
|
206 |
+
.hljs-attribute {
|
207 |
+
color: var(--y6a);
|
208 |
+
}
|
209 |
+
|
210 |
+
.chroma .s, /* LiteralString */
|
211 |
+
.chroma .sa, /* LiteralStringAffix */
|
212 |
+
.chroma .sb, /* LiteralStringBacktick */
|
213 |
+
.chroma .sc, /* LiteralStringChar */
|
214 |
+
.chroma .dl, /* LiteralStringDelimiter */
|
215 |
+
.chroma .sd, /* LiteralStringDoc */
|
216 |
+
.chroma .s2, /* LiteralStringDouble */
|
217 |
+
.chroma .se, /* LiteralStringEscape */
|
218 |
+
.chroma .sh, /* LiteralStringHeredoc */
|
219 |
+
.chroma .si, /* LiteralStringInterpol */
|
220 |
+
.chroma .sx, /* LiteralStringOther */
|
221 |
+
.chroma .sr, /* LiteralStringRegex */
|
222 |
+
.chroma .s1, /* LiteralStringSingle */
|
223 |
+
.chroma .ss, /* LiteralStringSymbol */
|
224 |
+
.hljs-addition,
|
225 |
+
.hljs-bullet,
|
226 |
+
.hljs-string,
|
227 |
+
.hljs-symbol {
|
228 |
+
color: var(--y7i);
|
229 |
+
}
|
230 |
+
|
231 |
+
.chroma .no, /* NameConstant */
|
232 |
+
.chroma .nf, /* NameFunction */
|
233 |
+
.chroma .ni, /* NameEntity */
|
234 |
+
.chroma .g, /* Generic */
|
235 |
+
.chroma .gd, /* GenericDeleted */
|
236 |
+
.chroma .ge, /* GenericEmph */
|
237 |
+
.chroma .gr, /* GenericError */
|
238 |
+
.chroma .gh, /* GenericHeading */
|
239 |
+
.chroma .gi, /* GenericInserted */
|
240 |
+
.chroma .go, /* GenericOutput */
|
241 |
+
.chroma .gp, /* GenericPrompt */
|
242 |
+
.chroma .gs, /* GenericStrong */
|
243 |
+
.chroma .gu, /* GenericSubheading */
|
244 |
+
.chroma .gt, /* GenericTraceback */
|
245 |
+
.chroma .gl, /* GenericUnderline */
|
246 |
+
.hljs-section,
|
247 |
+
.hljs-title {
|
248 |
+
color: var(--w8u);
|
249 |
+
}
|
250 |
+
|
251 |
+
.chroma .k, /* Keyword */
|
252 |
+
.chroma .kc, /* KeywordConstant */
|
253 |
+
.chroma .kt, /* KeywordType */
|
254 |
+
.chroma .kd, /* KeywordDeclaration */
|
255 |
+
.chroma .kp, /* KeywordPseudo */
|
256 |
+
.chroma .kr, /* KeywordReserved */
|
257 |
+
.hljs-keyword,
|
258 |
+
.hljs-selector-tag {
|
259 |
+
color: var(--s4n);
|
260 |
+
}
|
261 |
+
|
262 |
+
@media screen and (-ms-high-contrast: active),
|
263 |
+
screen and (prefers-contrast: more) {
|
264 |
+
:root {
|
265 |
+
--y6a: var(--fg);
|
266 |
+
--w8u: var(--fg);
|
267 |
+
--s8i: var(--fg);
|
268 |
+
--n8e: var(--fg);
|
269 |
+
--m4i: var(--fg);
|
270 |
+
--y4i: var(--fg);
|
271 |
+
--f8a: var(--fg);
|
272 |
+
--s4n: var(--fg);
|
273 |
+
--d3u: var(--fg);
|
274 |
+
--r6a: var(--fg);
|
275 |
+
--y4a: var(--fg);
|
276 |
+
--k8i: var(--fg);
|
277 |
+
--y6i: var(--fg);
|
278 |
+
--o5a: var(--fg);
|
279 |
+
--c3u: var(--fg);
|
280 |
+
--s5o: var(--fg);
|
281 |
+
--s5e: var(--fg);
|
282 |
+
--y7i: var(--fg);
|
283 |
+
--i3i: var(--fg);
|
284 |
+
--t9u: var(--fg);
|
285 |
+
}
|
286 |
+
|
287 |
+
.hljs *,
|
288 |
+
.chroma * {
|
289 |
+
background: var(--bg) !important;
|
290 |
+
color: var(--fg) !important;
|
291 |
+
}
|
292 |
+
|
293 |
+
.hljs-keyword,
|
294 |
+
.hljs-selector-tag {
|
295 |
+
font-weight: 700;
|
296 |
+
}
|
297 |
+
|
298 |
+
}
|
299 |
+
|
300 |
+
@media print {
|
301 |
+
|
302 |
+
.lntd:first-child * {
|
303 |
+
/* hide line numbering; not coupled when code break into new line */
|
304 |
+
/* display: none; */
|
305 |
+
}
|
306 |
+
|
307 |
+
}
|
assets/js/accessibility.js
ADDED
@@ -0,0 +1,174 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const bodySty = document.body;
|
2 |
+
const htmlSty = document.documentElement.style;
|
3 |
+
|
4 |
+
// Enable accessibility settings when JavaScript is permitted
|
5 |
+
getElement('a11y').disabled = false;
|
6 |
+
|
7 |
+
// Close console
|
8 |
+
const closeA11yConsole = () => getElement('has-a11y').removeAttribute('open');
|
9 |
+
|
10 |
+
// Color scheme and contrast functions
|
11 |
+
const matchMediaColor = () => {
|
12 |
+
lightSwitch.checked = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
13 |
+
|
14 |
+
if (window.matchMedia('(prefers-contrast: more)').matches) {
|
15 |
+
moreContrast.checked = true;
|
16 |
+
} else if (window.matchMedia('(prefers-contrast: less)').matches) {
|
17 |
+
lessContrast.checked = true;
|
18 |
+
} else {
|
19 |
+
defaultContrast.checked = true;
|
20 |
+
}
|
21 |
+
};
|
22 |
+
|
23 |
+
function setColor() {
|
24 |
+
const styles = {
|
25 |
+
light: {
|
26 |
+
default: '--off: #000; --fg: var(--fg-light); --mid: var(--midtone); --ac: var(--ac-light); --bg: var(--bg-light);',
|
27 |
+
less: '--off: #000; --fg: var(--fg-light-less); --mid: var(--midtone-less); --ac: var(--ac-light-less); --bg: var(--bg-light-less);',
|
28 |
+
more: '--off: #000; --fg: var(--fg-light-more); --mid: var(--midtone-more); --ac: var(--ac-light-more); --bg: var(--bg-light-more); --border: 1pt solid var(--fg); --bound: var(--border);'
|
29 |
+
},
|
30 |
+
dark: {
|
31 |
+
default: '--off: #fff; --fg: var(--fg-dark); --mid: var(--midtone); --ac: var(--ac-dark); --bg: var(--bg-dark);',
|
32 |
+
less: '--off: #fff; --fg: var(--fg-dark-less); --mid: var(--midtone-less); --ac: var(--ac-dark-less); --bg: var(--bg-dark-less);',
|
33 |
+
more: '--off: #fff; --fg: var(--fg-dark-more); --mid: var(--midtone-more); --ac: var(--ac-dark-more); --bg: var(--bg-dark-more); --border: 1pt solid var(--fg); --bound: var(--border);'
|
34 |
+
}
|
35 |
+
};
|
36 |
+
const scheme = lightSwitch.checked ? 'dark' : 'light';
|
37 |
+
const logomarkDark = getElement('logomark--dark');
|
38 |
+
if (logomarkDark) {
|
39 |
+
const logomark = getElement('logomark');
|
40 |
+
logomark.style.display = lightSwitch.checked ? 'none' : 'inline-block';
|
41 |
+
logomarkDark.style.display = lightSwitch.checked ? 'inline-block' : 'none';
|
42 |
+
}
|
43 |
+
const contrast = lessContrast.checked ? 'less' : (moreContrast.checked ? 'more' : 'default');
|
44 |
+
bodySty.setAttribute('style', styles[scheme][contrast]);
|
45 |
+
};
|
46 |
+
|
47 |
+
// Flash guard
|
48 |
+
addEvent(document, 'DOMContentLoaded', () => {
|
49 |
+
setTimeout(() => htmlSty.setProperty('--flashGuard', '1s ease-in 0.1s'), 99);
|
50 |
+
});
|
51 |
+
|
52 |
+
// Switch to keyboard-friendly mode
|
53 |
+
addEvent(document, 'keydown', (element) => {
|
54 |
+
if (element.key === 'Tab') {
|
55 |
+
document.body.classList.add('keydown');
|
56 |
+
}
|
57 |
+
if (element.key === 'Escape') {
|
58 |
+
document.body.classList.remove('keydown');
|
59 |
+
}
|
60 |
+
});
|
61 |
+
|
62 |
+
// Color palette functions
|
63 |
+
function setColorPalette() {
|
64 |
+
document.body.className = colorPalette.value;
|
65 |
+
};
|
66 |
+
|
67 |
+
// OpenDyslexic functions
|
68 |
+
function useOpenDyslexic() {
|
69 |
+
if (OpenDyslexic.checked) {
|
70 |
+
htmlSty.setProperty('--rm', 'OpenDyslexic');
|
71 |
+
htmlSty.setProperty('--sf', 'OpenDyslexic');
|
72 |
+
} else {
|
73 |
+
htmlSty.removeProperty('--rm');
|
74 |
+
htmlSty.removeProperty('--sf');
|
75 |
+
}
|
76 |
+
recalcLogotypeWidth();
|
77 |
+
};
|
78 |
+
|
79 |
+
// Font size functions
|
80 |
+
function setFontSize() {
|
81 |
+
fontSizeState.value = fontSize.value;
|
82 |
+
htmlSty.setProperty('--fontScale', fontSize.value / 10);
|
83 |
+
};
|
84 |
+
|
85 |
+
// Baseline stretch functions
|
86 |
+
function setStretch() {
|
87 |
+
baselineStretchState.value = baselineStretch.value;
|
88 |
+
htmlSty.setProperty('--baselineStretch', baselineStretch.value);
|
89 |
+
};
|
90 |
+
|
91 |
+
// Initialize localStorage
|
92 |
+
function hasLocalStorage() {
|
93 |
+
try {
|
94 |
+
localStorage.is = 'enable';
|
95 |
+
localStorage.removeItem('is');
|
96 |
+
return true;
|
97 |
+
} catch(e) {
|
98 |
+
defaultContrast.checked = true;
|
99 |
+
getElement('noLocalStorage').className = '';
|
100 |
+
return false;
|
101 |
+
};
|
102 |
+
};
|
103 |
+
|
104 |
+
if (hasLocalStorage()) {
|
105 |
+
getElement('a11y-menu').className = '';
|
106 |
+
saveButton.disabled = false;
|
107 |
+
resetButton.disabled = false;
|
108 |
+
|
109 |
+
// Reset function
|
110 |
+
function resetA11y() {
|
111 |
+
localStorage.clear();
|
112 |
+
matchMediaColor();
|
113 |
+
colorPalette.reset;
|
114 |
+
fontSize.value = '';
|
115 |
+
baselineStretch.value = '';
|
116 |
+
OpenDyslexic.checked = false;
|
117 |
+
setTimeout(() => window.location.reload(), 100);
|
118 |
+
};
|
119 |
+
|
120 |
+
// Save function
|
121 |
+
function saveA11y() {
|
122 |
+
setTimeout(() => closeA11yConsole(), 618);
|
123 |
+
|
124 |
+
localStorage.scheme = lightSwitch.checked ? 'light' : 'dark';
|
125 |
+
|
126 |
+
if (defaultContrast.checked) localStorage.contrast = 'default';
|
127 |
+
if (lessContrast.checked) localStorage.contrast = 'less';
|
128 |
+
if (moreContrast.checked) localStorage.contrast = 'more';
|
129 |
+
|
130 |
+
localStorage.colorPalette = colorPalette.value;
|
131 |
+
localStorage.font = OpenDyslexic.checked ? 'OpenDyslexic' : '';
|
132 |
+
localStorage.fontSize = fontSize.value;
|
133 |
+
localStorage.stretchSize = baselineStretch.value;
|
134 |
+
};
|
135 |
+
|
136 |
+
// Read settings from localStorage
|
137 |
+
|
138 |
+
if (!localStorage.getItem('scheme') && !localStorage.getItem('contrast')) {
|
139 |
+
matchMediaColor();
|
140 |
+
} else {
|
141 |
+
lightSwitch.checked = localStorage.scheme !== 'dark';
|
142 |
+
|
143 |
+
if (localStorage.contrast === 'more') {
|
144 |
+
moreContrast.checked = true;
|
145 |
+
} else if (localStorage.contrast === 'less') {
|
146 |
+
lessContrast.checked = true;
|
147 |
+
} else {
|
148 |
+
defaultContrast.checked = true;
|
149 |
+
}
|
150 |
+
|
151 |
+
setColor();
|
152 |
+
}
|
153 |
+
|
154 |
+
if (localStorage.getItem('colorPalette')) {
|
155 |
+
colorPalette.value = localStorage.colorPalette;
|
156 |
+
setColorPalette();
|
157 |
+
}
|
158 |
+
|
159 |
+
if (localStorage.font === 'OpenDyslexic') {
|
160 |
+
OpenDyslexic.setAttribute('checked', 'checked');
|
161 |
+
useOpenDyslexic();
|
162 |
+
}
|
163 |
+
|
164 |
+
if (localStorage.getItem('fontSize')) {
|
165 |
+
fontSize.value = localStorage.fontSize;
|
166 |
+
setFontSize();
|
167 |
+
}
|
168 |
+
|
169 |
+
if (localStorage.getItem('stretchSize')) {
|
170 |
+
baselineStretch.value = localStorage.stretchSize;
|
171 |
+
setStretch();
|
172 |
+
}
|
173 |
+
|
174 |
+
}
|
assets/js/bionread.js
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// make sure the switch unchecked on reload
|
2 |
+
getElement('useBionRead').className = '';
|
3 |
+
bionReadSwitch.checked = false;
|
4 |
+
// define the function
|
5 |
+
function bionRead() {
|
6 |
+
// define capture and restore environment variable
|
7 |
+
const bionReadMainContent = getElement('content');
|
8 |
+
const bionReadSnapshot = getElement('bionReadSnapshot');
|
9 |
+
|
10 |
+
if (!bionReadMainContent || !bionReadSnapshot) {
|
11 |
+
console.error('Required elements not found');
|
12 |
+
return;
|
13 |
+
}
|
14 |
+
|
15 |
+
// switch conditioning
|
16 |
+
if (bionReadSwitch.checked) {
|
17 |
+
// capture snapshot
|
18 |
+
bionReadSnapshot.innerHTML = bionReadMainContent.innerHTML;
|
19 |
+
|
20 |
+
// split words into 'anchored' and 'floated' part
|
21 |
+
const safeElements = getElements('[data-bionRead-safe]');
|
22 |
+
safeElements.forEach(element => {
|
23 |
+
const targetElements = element.querySelectorAll('h1, h2, h3, h4, h5, p, a, li, blockquote');
|
24 |
+
targetElements.forEach(el => {
|
25 |
+
const words = el.innerText.split(' ');
|
26 |
+
const processedWords = words.map(word => {
|
27 |
+
const length = word.length;
|
28 |
+
if (length === 1) return `<b class=k>${word}</b>`;
|
29 |
+
const midPoint = Math.ceil(length / 2);
|
30 |
+
return word
|
31 |
+
.split('')
|
32 |
+
.map((char, index) => index < midPoint ? `<b k>${char}</b>` : char)
|
33 |
+
.join('');
|
34 |
+
});
|
35 |
+
el.innerHTML = processedWords.join(' ');
|
36 |
+
});
|
37 |
+
});
|
38 |
+
|
39 |
+
// make 'floated' text slices less contrast
|
40 |
+
htmlSty.setProperty('--fg', lightSwitch.checked ? '#333' : '#ccc');
|
41 |
+
|
42 |
+
// make 'anchored' text slices a bit weighted
|
43 |
+
htmlSty.setProperty('--bion', '0.028em');
|
44 |
+
} else {
|
45 |
+
// restore snapshot
|
46 |
+
bionReadMainContent.innerHTML = bionReadSnapshot.innerHTML;
|
47 |
+
|
48 |
+
// purge snapshot
|
49 |
+
bionReadSnapshot.innerHTML = '';
|
50 |
+
|
51 |
+
// restore style
|
52 |
+
htmlSty.removeProperty('--fg');
|
53 |
+
htmlSty.removeProperty('--bion');
|
54 |
+
|
55 |
+
// reset color settings
|
56 |
+
setColor();
|
57 |
+
}
|
58 |
+
}
|
assets/js/default.js
ADDED
@@ -0,0 +1,178 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Event listener helper function
|
2 |
+
function addEvent(element, event, handler) {
|
3 |
+
if (element?.attachEvent) {
|
4 |
+
return element.attachEvent('on' + event, handler);
|
5 |
+
}
|
6 |
+
return element?.addEventListener(event, handler, false);
|
7 |
+
}
|
8 |
+
|
9 |
+
// DOM element getters
|
10 |
+
const getElement = id => document.getElementById(id);
|
11 |
+
const getElements = selector => document.querySelectorAll(selector);
|
12 |
+
|
13 |
+
// Logotype width calculation
|
14 |
+
function recalcLogotypeWidth() {
|
15 |
+
const logotype = getElement('logotype');
|
16 |
+
const logotypeText = getElement('logotype__text');
|
17 |
+
logotype?.setAttribute('width', `${logotypeText.getBoundingClientRect().width}px`);
|
18 |
+
}
|
19 |
+
|
20 |
+
// Viewport adaptation
|
21 |
+
function adaptViewport() {
|
22 |
+
// fix logotype when font loading delayed
|
23 |
+
document.fonts.ready.then(() => {
|
24 |
+
recalcLogotypeWidth();
|
25 |
+
});
|
26 |
+
if (window.innerWidth < 640) {
|
27 |
+
getElement('has-search')?.setAttribute('open', 'open');
|
28 |
+
getElement('has-search')?.removeAttribute('name');
|
29 |
+
getElement('has-more-menu')?.setAttribute('open', 'open');
|
30 |
+
} else {
|
31 |
+
getElement('top-nav')?.setAttribute('open', 'open')
|
32 |
+
addEvent(visualViewport, 'resize', adaptViewport);
|
33 |
+
}
|
34 |
+
}
|
35 |
+
addEvent(window, 'DOMContentLoaded', adaptViewport);
|
36 |
+
|
37 |
+
|
38 |
+
// Node collapse handlers
|
39 |
+
const collapseParentNode = getElements('.js-cpn');
|
40 |
+
const collapseGrandParentNode = getElements('.js-cgpn');
|
41 |
+
const detailsElements = getElements('details.js-details');
|
42 |
+
|
43 |
+
collapseParentNode.forEach(element => {
|
44 |
+
const handler = () => element.parentNode?.removeAttribute('open');
|
45 |
+
addEvent(element, 'click', handler);
|
46 |
+
});
|
47 |
+
|
48 |
+
collapseGrandParentNode.forEach(element => {
|
49 |
+
const handler = () => element.parentNode?.parentNode?.removeAttribute('open');
|
50 |
+
addEvent(element, 'click', handler);
|
51 |
+
});
|
52 |
+
|
53 |
+
if (window.innerWidth > 640) {
|
54 |
+
// Details element handler for firefox based browsers which do not respect the same name attribute
|
55 |
+
detailsElements.forEach(detail => {
|
56 |
+
const handler = (e) => {
|
57 |
+
const name = detail.getAttribute('name');
|
58 |
+
if (name) {
|
59 |
+
getElements(`details.js-details[name="${name}"]`).forEach(otherDetail => {
|
60 |
+
if (otherDetail !== detail && otherDetail.hasAttribute('open')) {
|
61 |
+
otherDetail.removeAttribute('open');
|
62 |
+
}
|
63 |
+
});
|
64 |
+
}
|
65 |
+
};
|
66 |
+
addEvent(detail, 'click', handler);
|
67 |
+
});
|
68 |
+
}
|
69 |
+
|
70 |
+
// Share functionality
|
71 |
+
if (typeof navigatorShare !== 'undefined') {
|
72 |
+
getElement('navigatorShare')?.setAttribute(
|
73 |
+
'href',
|
74 |
+
'javascript:navigator.share({title: document.title, url: window.location.href})'
|
75 |
+
);
|
76 |
+
|
77 |
+
if (location.protocol === 'https:') {
|
78 |
+
getElement('copyPermalink')?.removeAttribute('class');
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
getElement('print-button')?.removeAttribute('class');
|
83 |
+
getElement('back')?.removeAttribute('class');
|
84 |
+
|
85 |
+
// Date handling
|
86 |
+
const date = new Date();
|
87 |
+
|
88 |
+
// Mastodon and QR code functionality
|
89 |
+
if (typeof mastodonInstance !== 'undefined') {
|
90 |
+
getElement('has-mastodon').className = 'active';
|
91 |
+
|
92 |
+
const mastodonHandler = () => {
|
93 |
+
mastodonTitle.disabled = true;
|
94 |
+
mastodonPermalink.disabled = true;
|
95 |
+
mastodonText.disabled = false;
|
96 |
+
mastodon?.setAttribute('action', `${mastodonInstance.value}/share`);
|
97 |
+
};
|
98 |
+
|
99 |
+
addEvent(mastodonInstance, 'input', mastodonHandler);
|
100 |
+
|
101 |
+
if (typeof QRCode !== 'undefined') {
|
102 |
+
getElement('colophon').removeAttribute('style');
|
103 |
+
|
104 |
+
qr?.appendChild(
|
105 |
+
QRCode({
|
106 |
+
msg: window.location.href,
|
107 |
+
ecl: 'M',
|
108 |
+
pal: ['#000', '#fff'],
|
109 |
+
pad: 2,
|
110 |
+
dim: 96,
|
111 |
+
})
|
112 |
+
);
|
113 |
+
|
114 |
+
const isoTime = date.toISOString();
|
115 |
+
const timeStamp = getElement('time-stamp');
|
116 |
+
timeStamp.innerHTML = isoTime;
|
117 |
+
timeStamp?.setAttribute('datetime', isoTime);
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
// Digital well-being clock
|
122 |
+
const hour = date.getHours();
|
123 |
+
const isDaytime = hour > 6 && hour < 21;
|
124 |
+
|
125 |
+
function toggleNightElements(hidden) {
|
126 |
+
const elements = ['grain', 'dwclock'];
|
127 |
+
elements.forEach(id => {
|
128 |
+
const element = getElement(id);
|
129 |
+
element?.[hidden ? 'setAttribute' : 'removeAttribute']('hidden', 'hidden');
|
130 |
+
});
|
131 |
+
}
|
132 |
+
|
133 |
+
if (isDaytime) {
|
134 |
+
toggleNightElements(true);
|
135 |
+
} else {
|
136 |
+
toggleNightElements(false);
|
137 |
+
|
138 |
+
let clockInterval;
|
139 |
+
function updateClock() {
|
140 |
+
const minutes = date.getMinutes();
|
141 |
+
const seconds = date.getSeconds();
|
142 |
+
const minutesDegrees = ((minutes / 60) * 360) + ((seconds/60)*6);
|
143 |
+
const hourDegrees = ((hour / 12) * 360) + ((minutes/60)*30);
|
144 |
+
|
145 |
+
const transforms = ['transform', 'webkitTransform', 'mozTransform', 'msTransform', 'oTransform'];
|
146 |
+
const hands = {
|
147 |
+
'#min': minutesDegrees,
|
148 |
+
'#hour': hourDegrees
|
149 |
+
};
|
150 |
+
|
151 |
+
Object.entries(hands).forEach(([selector, degrees]) => {
|
152 |
+
const hand = document.querySelector(selector);
|
153 |
+
transforms.forEach(transform => {
|
154 |
+
hand.style[transform] = `rotate(${degrees}deg)`;
|
155 |
+
});
|
156 |
+
});
|
157 |
+
}
|
158 |
+
|
159 |
+
updateClock();
|
160 |
+
clockInterval = setInterval(updateClock, 10000);
|
161 |
+
}
|
162 |
+
|
163 |
+
// Overwrite browser search bar (canceled)
|
164 |
+
// addEvent(document, 'keydown', function(e) {
|
165 |
+
// if (e.ctrlKey && e.key === 'k') {
|
166 |
+
// e.preventDefault();
|
167 |
+
// getElement('has-search')?.setAttribute('open', 'open');
|
168 |
+
// const searchInput = document.querySelector('.pagefind-ui__search-input');
|
169 |
+
// searchInput?.focus();
|
170 |
+
// }
|
171 |
+
// });
|
172 |
+
|
173 |
+
// clashes with details handler, need workaround
|
174 |
+
addEvent(window, 'beforeprint', function() {
|
175 |
+
getElements('[name="redaction-history"]')?.forEach(e => {
|
176 |
+
e.setAttribute('open', 'open');
|
177 |
+
});
|
178 |
+
});
|
assets/js/fediverse.js
ADDED
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const id = getElement('metadata-post').innerText;
|
2 |
+
|
3 |
+
if (id) {
|
4 |
+
const host = getElement('metadata-instance').innerText;
|
5 |
+
const i18nreplies = getElement('i18n--is-replies').innerHTML;
|
6 |
+
const i18nreblogs = getElement('i18n--is-reblogs').innerHTML;
|
7 |
+
const i18nfavourites = getElement('i18n--is-favourites').innerHTML;
|
8 |
+
const style = document.createElement('style');
|
9 |
+
style.textContent = `
|
10 |
+
#comments > * {width: var(--golden-ratio)}
|
11 |
+
#comments noscript {margin: var(--medskip) 0}
|
12 |
+
#discussion-starter {margin-bottom: var(--medskip)}
|
13 |
+
#discussion-starter > footer {display: flex; align-items: center; justify-content: space-between}
|
14 |
+
.mastodon-comment {margin: 1rem 0 1rem calc(var(--mul) * var(--indent)); border: 1pt solid #fff4; border-left: 2pt solid var(--ac); background: #80808008; padding: 1rem 1rem 1ex; box-shadow: 0 .5pt 1pt 0 var(--g18s); overflow: auto}
|
15 |
+
.mastodon-comment .content {margin-left: 4rem; line-height: calc(var(--baselineStretch) * 1.272)}
|
16 |
+
.mastodon-comment .par a {max-width: 100%; vertical-align: bottom; white-space: break-spaces}
|
17 |
+
.mastodon-comment .attachments * {width: 100%; height: auto}
|
18 |
+
.mastodon-comment > footer {margin-top: 1rem; margin-left: 3.5rem}
|
19 |
+
.mastodon-comment > footer .stat {display: inline-flex; flex-shrink: 0; gap: 5pt}
|
20 |
+
.stat a {display: inline-flex; align-items: center; padding: 2pt; color: var(--mid); gap: 2pt}
|
21 |
+
.stat a::before {vertical-align: text-top}
|
22 |
+
a.replies.active, a.reblogs.active {color: var(--ac)}
|
23 |
+
a.favourites.active {color: var(--i3i)}
|
24 |
+
.mastodon-comment .date {margin-left: auto; padding-left: 1rem; color: var(--mid); font-size: calc(10pt * var(--fontScale))}
|
25 |
+
@media only screen and (max-width: 960px) {
|
26 |
+
.mastodon-comment .content, .mastodon-comment > footer {margin-left: 0}
|
27 |
+
}
|
28 |
+
`;
|
29 |
+
document.head.appendChild(style);
|
30 |
+
|
31 |
+
function escapeHtml(unsafe) {
|
32 |
+
return unsafe
|
33 |
+
.replace(/&/g, "&")
|
34 |
+
.replace(/</g, "<")
|
35 |
+
.replace(/>/g, ">")
|
36 |
+
.replace(/"/g, """)
|
37 |
+
.replace(/'/g, "'");
|
38 |
+
}
|
39 |
+
|
40 |
+
let commentsLoaded = false;
|
41 |
+
|
42 |
+
const toot_active = (toot, what) => {
|
43 |
+
const count = toot[`${what}_count`];
|
44 |
+
return count > 0 ? 'active' : '';
|
45 |
+
};
|
46 |
+
|
47 |
+
const toot_count = (toot, what) => {
|
48 |
+
const count = toot[`${what}_count`];
|
49 |
+
return count > 0 ? count : '';
|
50 |
+
};
|
51 |
+
|
52 |
+
const user_account = (account) => {
|
53 |
+
let result = `@${account.acct}`;
|
54 |
+
if (!account.acct.includes('@')) {
|
55 |
+
const domain = new URL(account.url);
|
56 |
+
result += `@${domain.hostname}`;
|
57 |
+
}
|
58 |
+
return result;
|
59 |
+
};
|
60 |
+
|
61 |
+
const render_toots = (toots, in_reply_to, depth) => {
|
62 |
+
const tootsToRender = toots
|
63 |
+
.filter(toot => toot.in_reply_to_id === in_reply_to)
|
64 |
+
.sort((a, b) => a.created_at.localeCompare(b.created_at));
|
65 |
+
tootsToRender.forEach(toot => render_toot(toots, toot, depth));
|
66 |
+
};
|
67 |
+
|
68 |
+
const render_toot = (toots, toot, depth) => {
|
69 |
+
toot.account.display_name = escapeHtml(toot.account.display_name);
|
70 |
+
toot.account.emojis.forEach(emoji => {
|
71 |
+
toot.account.display_name = toot.account.display_name.replace(
|
72 |
+
`:${emoji.shortcode}:`,
|
73 |
+
`<img src="${escapeHtml(emoji.static_url)}" alt="Emoji ${emoji.shortcode}" height="20" width="20" />`
|
74 |
+
);
|
75 |
+
});
|
76 |
+
|
77 |
+
const renderAttachment = attachment => {
|
78 |
+
const attachmentTypes = {
|
79 |
+
image: () => `<a href="${attachment.url}" rel="nofollow"><img src="${attachment.preview_url}" alt="${attachment.description}" loading="lazy" /></a>`,
|
80 |
+
video: () => `<video controls><source src="${attachment.url}" type="${attachment.mime_type}"></video>`,
|
81 |
+
gifv: () => `<video autoplay loop muted playsinline><source src="${attachment.url}" type="${attachment.mime_type}"></video>`,
|
82 |
+
audio: () => `<audio controls><source src="${attachment.url}" type="${attachment.mime_type}"></audio>`,
|
83 |
+
default: () => `<a href="${attachment.url}" rel="nofollow">${attachment.type}</a>`
|
84 |
+
};
|
85 |
+
|
86 |
+
return (attachmentTypes[attachment.type] || attachmentTypes.default)();
|
87 |
+
};
|
88 |
+
|
89 |
+
const mastodonComment = `
|
90 |
+
<article class="mastodon-comment" style="--mul: ${depth}">
|
91 |
+
<header class="author">
|
92 |
+
<img src="${escapeHtml(toot.account.avatar_static)}" height=48 width=48 alt="${user_account(toot.account)}" loading="lazy"/>
|
93 |
+
<a class="has-aria-label" href="${toot.account.url}" rel="nofollow" title="${toot.account.display_name}" aria-label="${user_account(toot.account)}">
|
94 |
+
<span>${toot.account.display_name}</span>
|
95 |
+
</a>
|
96 |
+
</header>
|
97 |
+
<div class="content">
|
98 |
+
<div class="par" data-bionRead-safe>${toot.content}</div>
|
99 |
+
<div class="attachments">
|
100 |
+
${toot.media_attachments.map(renderAttachment).join('')}
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
<footer>
|
104 |
+
<div class="stat">
|
105 |
+
<a class="replies ${toot_active(toot, 'replies')}" href="${toot.url}" rel="nofollow" aria-label="${i18nreplies}">
|
106 |
+
${toot_count(toot, 'replies')}
|
107 |
+
</a>
|
108 |
+
<a class="reblogs ${toot_active(toot, 'reblogs')}" href="${toot.url}" rel="nofollow" aria-label="${i18nreblogs}">
|
109 |
+
${toot_count(toot, 'reblogs')}
|
110 |
+
</a>
|
111 |
+
<a class="favourites ${toot_active(toot, 'favourites')}" href="${toot.url}" rel="nofollow" aria-label="${i18nfavourites}">
|
112 |
+
${toot_count(toot, 'favourites')}
|
113 |
+
</a>
|
114 |
+
</div>
|
115 |
+
<a class="date" href="${toot.url}" rel="nofollow">
|
116 |
+
<time>${toot.created_at.substr(0, 10)} ${toot.created_at.substr(11, 8)}</time>
|
117 |
+
</a>
|
118 |
+
</footer>
|
119 |
+
</article>`;
|
120 |
+
|
121 |
+
getElement('mastodon-comments-list')
|
122 |
+
.appendChild(DOMPurify.sanitize(mastodonComment, {'RETURN_DOM_FRAGMENT': true}));
|
123 |
+
|
124 |
+
render_toots(toots, toot.id, depth + 1);
|
125 |
+
};
|
126 |
+
|
127 |
+
const toot_stats = toot => `
|
128 |
+
<a class="replies ${toot_active(toot, 'replies')}" href="${toot.url}" rel="nofollow" aria-label="${i18nreplies}">
|
129 |
+
${toot_count(toot, 'replies')}
|
130 |
+
</a>
|
131 |
+
<a class="reblogs ${toot_active(toot, 'reblogs')}" href="${toot.url}" rel="nofollow" aria-label="${i18nreblogs}">
|
132 |
+
${toot_count(toot, 'reblogs')}
|
133 |
+
</a>
|
134 |
+
<a class="favourites ${toot_active(toot, 'favourites')}" href="${toot.url}" rel="nofollow" aria-label="${i18nfavourites}">
|
135 |
+
${toot_count(toot, 'favourites')}
|
136 |
+
</a>`;
|
137 |
+
|
138 |
+
const loadComments = async () => {
|
139 |
+
if (commentsLoaded) return;
|
140 |
+
|
141 |
+
const commentsList = getElement('mastodon-comments-list');
|
142 |
+
commentsList.innerHTML = getElement('i18n--is-loading').innerHTML;
|
143 |
+
|
144 |
+
try {
|
145 |
+
const [tootResponse, contextResponse] = await Promise.all([
|
146 |
+
fetch(`https://${host}/api/v1/statuses/${id}`),
|
147 |
+
fetch(`https://${host}/api/v1/statuses/${id}/context`)
|
148 |
+
]);
|
149 |
+
|
150 |
+
const [toot, data] = await Promise.all([
|
151 |
+
tootResponse.json(),
|
152 |
+
contextResponse.json()
|
153 |
+
]);
|
154 |
+
|
155 |
+
getElement("mastodon-stats").innerHTML = toot_stats(toot);
|
156 |
+
|
157 |
+
if (data.descendants?.length > 0) {
|
158 |
+
commentsList.innerHTML = "";
|
159 |
+
render_toots(data.descendants, id, 0);
|
160 |
+
} else {
|
161 |
+
commentsList.innerHTML = getElement('i18n--no-comment').innerHTML;
|
162 |
+
}
|
163 |
+
|
164 |
+
commentsLoaded = true;
|
165 |
+
commentsList.setAttribute('aria-busy', 'false');
|
166 |
+
} catch (error) {
|
167 |
+
console.error('Error loading comments:', error);
|
168 |
+
commentsList.innerHTML = 'Error loading comments';
|
169 |
+
}
|
170 |
+
};
|
171 |
+
|
172 |
+
const respondToVisibility = (element, callback) => {
|
173 |
+
const observer = new IntersectionObserver((entries) => {
|
174 |
+
entries.forEach(entry => {
|
175 |
+
if (entry.intersectionRatio > 0) {
|
176 |
+
callback();
|
177 |
+
}
|
178 |
+
});
|
179 |
+
}, { root: null });
|
180 |
+
|
181 |
+
observer.observe(element);
|
182 |
+
};
|
183 |
+
|
184 |
+
const comments = getElement("mastodon-comments-list");
|
185 |
+
respondToVisibility(comments, loadComments);
|
186 |
+
}
|