diff options
Diffstat (limited to 'site/assets')
-rw-r--r-- | site/assets/icon.png | bin | 0 -> 25823 bytes | |||
-rw-r--r-- | site/assets/new.scss | 679 | ||||
-rw-r--r-- | site/assets/site.js | 32 | ||||
-rw-r--r-- | site/assets/syntax.css | 225 | ||||
-rw-r--r-- | site/assets/valid-rss-rogers.png | bin | 0 -> 3712 bytes |
5 files changed, 936 insertions, 0 deletions
diff --git a/site/assets/icon.png b/site/assets/icon.png new file mode 100644 index 0000000..f182cc1 --- /dev/null +++ b/site/assets/icon.png | |||
Binary files differ | |||
diff --git a/site/assets/new.scss b/site/assets/new.scss new file mode 100644 index 0000000..73c4ed8 --- /dev/null +++ b/site/assets/new.scss | |||
@@ -0,0 +1,679 @@ | |||
1 | --- | ||
2 | --- | ||
3 | |||
4 | :root { | ||
5 | --backgroundColor: #fdfdfd; | ||
6 | --textColor: #303030; | ||
7 | --secondaryTextColor: #404040; | ||
8 | --mutedTextColor: #707070; | ||
9 | --subtleBackgroundColor: #f5f5f5; | ||
10 | --heartedBackgroundColor: #ffe2e2; | ||
11 | --selectionBackgroundColor: #ffc; | ||
12 | --linkColor: #2357cd; | ||
13 | --borderColor: #ccc; | ||
14 | --hrColor: #888; | ||
15 | --activeColor: #74d274; | ||
16 | --langBackgroundColor: #eeeeee; | ||
17 | --langShadowColor: transparent; | ||
18 | --logoColor: #cccccc; | ||
19 | --photoBackground: #f4f4f4; | ||
20 | } | ||
21 | |||
22 | @media (prefers-color-scheme: dark) { | ||
23 | :root { | ||
24 | --backgroundColor: #151615; | ||
25 | --textColor: #dbdfdf; | ||
26 | --secondaryTextColor: #cfd5d5; | ||
27 | --mutedTextColor: #b4b6b8; | ||
28 | --subtleBackgroundColor: #3a3b3b; | ||
29 | --heartedBackgroundColor: #652222; | ||
30 | --selectionBackgroundColor: #19446b; | ||
31 | --linkColor: #6eb8ff; | ||
32 | --borderColor: #414141; | ||
33 | --hrColor: #888; | ||
34 | --activeColor: #74d274; | ||
35 | --langBackgroundColor: #2c2c2c; | ||
36 | --langShadowColor: #0b0c0b33; | ||
37 | --logoColor: #555555; | ||
38 | --photoBackground: #1a1a1a; | ||
39 | } | ||
40 | } | ||
41 | |||
42 | body { | ||
43 | background: var(--backgroundColor); | ||
44 | color: var(--textColor); | ||
45 | line-height: 1.7em; | ||
46 | padding: 0 2.5em; | ||
47 | margin: 0; | ||
48 | font-size: 18px; | ||
49 | word-wrap: break-word; | ||
50 | } | ||
51 | |||
52 | body, kbd { | ||
53 | font-family: system-ui, sans-serif; | ||
54 | } | ||
55 | |||
56 | a { | ||
57 | color: var(--linkColor); | ||
58 | } | ||
59 | |||
60 | ::selection { | ||
61 | background: var(--selectionBackgroundColor); | ||
62 | } | ||
63 | |||
64 | header { | ||
65 | padding-top: 2.5em; | ||
66 | } | ||
67 | |||
68 | footer { | ||
69 | padding-bottom: 2.5em; | ||
70 | } | ||
71 | |||
72 | main { | ||
73 | padding-top: 1em; | ||
74 | padding-bottom: 3em; | ||
75 | } | ||
76 | |||
77 | header, | ||
78 | main, | ||
79 | footer { | ||
80 | max-width: 36em; | ||
81 | margin: auto; | ||
82 | } | ||
83 | |||
84 | h1, h2, h3, h4, h5, h6, .font { | ||
85 | font-family: 'Readex Pro', sans-serif; | ||
86 | } | ||
87 | |||
88 | .plain { | ||
89 | font-family: system-ui, sans-serif | ||
90 | } | ||
91 | |||
92 | h1, h2, h3, h4, h5, h6 { | ||
93 | margin: 1.4em 0 1em 0; | ||
94 | font-weight: normal; | ||
95 | } | ||
96 | |||
97 | .logo { | ||
98 | width: 2em; | ||
99 | |||
100 | path { | ||
101 | stroke: var(--logoColor); | ||
102 | } | ||
103 | } | ||
104 | |||
105 | .logo-container { | ||
106 | display: flex; | ||
107 | align-items: center; | ||
108 | } | ||
109 | |||
110 | .post-body { | ||
111 | .logo-container { | ||
112 | line-height: 1em; | ||
113 | color: var(--mutedTextColor); | ||
114 | } | ||
115 | |||
116 | .logo { | ||
117 | width: 1em; | ||
118 | margin-left: .8em; | ||
119 | margin-right: .4em; | ||
120 | |||
121 | path { | ||
122 | stroke: var(--mutedTextColor); | ||
123 | stroke-width: 22; | ||
124 | } | ||
125 | } | ||
126 | |||
127 | .h1 { | ||
128 | font-size: 1.5rem; | ||
129 | } | ||
130 | } | ||
131 | |||
132 | .h1 { | ||
133 | font-size: 1.2rem; | ||
134 | font-weight: normal; | ||
135 | margin-bottom: 0; | ||
136 | } | ||
137 | |||
138 | .text { | ||
139 | margin-right: .4rem; | ||
140 | font-size: inherit; | ||
141 | font-weight: normal; | ||
142 | display: inline-block; | ||
143 | margin-top: 0; | ||
144 | } | ||
145 | |||
146 | .terminal .line { | ||
147 | padding: 0; | ||
148 | margin-bottom: 1em; | ||
149 | line-height: 1.6em; | ||
150 | } | ||
151 | |||
152 | .terminal { | ||
153 | list-style: none; | ||
154 | padding-left: 0; | ||
155 | |||
156 | li { | ||
157 | padding: .1rem 0; | ||
158 | } | ||
159 | |||
160 | ul { | ||
161 | margin-top: 0.5rem; | ||
162 | } | ||
163 | } | ||
164 | |||
165 | .hr { | ||
166 | border: 0; | ||
167 | border-left: .7rem solid var(--textColor); | ||
168 | height: .7rem; | ||
169 | margin: 3rem 0; | ||
170 | } | ||
171 | |||
172 | .notes { | ||
173 | list-style: none; | ||
174 | margin: 0; | ||
175 | padding: 0; | ||
176 | |||
177 | .note { | ||
178 | border-bottom: 1px solid var(--borderColor); | ||
179 | padding-bottom: 3em; | ||
180 | margin-top: 3em; | ||
181 | } | ||
182 | } | ||
183 | |||
184 | .targeted { | ||
185 | color: var(--activeColor); | ||
186 | margin-right: .2em; | ||
187 | display: inline; | ||
188 | } | ||
189 | |||
190 | .note { | ||
191 | scroll-margin: 2em; | ||
192 | |||
193 | &:last-of-type { | ||
194 | border-bottom: 0; | ||
195 | } | ||
196 | |||
197 | .targeted { | ||
198 | display: none; | ||
199 | } | ||
200 | |||
201 | &:target .targeted { | ||
202 | display: inline; | ||
203 | } | ||
204 | p:first-child, blockquote:first-child { margin-top: 0; } | ||
205 | p:last-child, blockquote:last-child, img:last-child { margin-bottom: 0; } | ||
206 | } | ||
207 | |||
208 | .note-heading { | ||
209 | font-size: .8em; | ||
210 | line-height: 1; | ||
211 | font-weight: normal; | ||
212 | margin: 0; | ||
213 | color: var(--mutedTextColor); | ||
214 | |||
215 | a { | ||
216 | color: inherit; | ||
217 | text-decoration: none; | ||
218 | } | ||
219 | } | ||
220 | |||
221 | blockquote { | ||
222 | &::before { | ||
223 | content: '“'; | ||
224 | font-size: 2rem; | ||
225 | position: absolute; | ||
226 | margin-left: -.5em; | ||
227 | color: var(--secondaryTextColor); | ||
228 | font-family: sans-serif; | ||
229 | } | ||
230 | } | ||
231 | |||
232 | img { | ||
233 | max-width: 100%; | ||
234 | margin: 1em 0; | ||
235 | |||
236 | &[width] { | ||
237 | margin: 0; | ||
238 | vertical-align: middle; | ||
239 | } | ||
240 | } | ||
241 | |||
242 | hr { | ||
243 | margin: 2em 0; | ||
244 | border: 0; | ||
245 | border-bottom: 1px solid var(--hrColor); | ||
246 | } | ||
247 | |||
248 | .pagination { | ||
249 | margin-top: 4em; | ||
250 | } | ||
251 | |||
252 | article { | ||
253 | font-family: system-ui, sans-serif; | ||
254 | font-size: 16px; | ||
255 | } | ||
256 | |||
257 | .smol { | ||
258 | font-size: .8em; | ||
259 | font-weight: normal; | ||
260 | } | ||
261 | |||
262 | .task-list-item-checkbox { | ||
263 | margin-right: .5em; | ||
264 | vertical-align: middle; | ||
265 | } | ||
266 | |||
267 | .entry-title { | ||
268 | margin: 0; | ||
269 | } | ||
270 | |||
271 | .entry { | ||
272 | margin-bottom: 3em; | ||
273 | } | ||
274 | |||
275 | .lang { | ||
276 | font-size: .8rem; | ||
277 | display: inline-flex; | ||
278 | margin-top: 2em; | ||
279 | white-space: nowrap; | ||
280 | box-shadow: 0 5px 15px var(--langShadowColor); | ||
281 | |||
282 | a[aria-current] { | ||
283 | color: var(--textColor); | ||
284 | |||
285 | &:before { | ||
286 | content: "●"; | ||
287 | color: var(--activeColor); | ||
288 | } | ||
289 | } | ||
290 | |||
291 | a { | ||
292 | background-color: var(--langBackgroundColor); | ||
293 | border-color: var(--borderColor); | ||
294 | color: var(--mutedTextColor); | ||
295 | padding: 4px 16px; | ||
296 | margin-right: 1px; | ||
297 | text-decoration: none; | ||
298 | |||
299 | &:first-child { | ||
300 | border-top-left-radius: 6px; | ||
301 | border-bottom-left-radius: 6px; | ||
302 | } | ||
303 | |||
304 | &:last-child { | ||
305 | border-top-right-radius: 6px; | ||
306 | border-bottom-right-radius: 6px; | ||
307 | } | ||
308 | |||
309 | &:hover { | ||
310 | background: var(--langBackgroundColor); | ||
311 | } | ||
312 | |||
313 | &:focus { | ||
314 | z-index: 1; | ||
315 | } | ||
316 | |||
317 | &:before { | ||
318 | content: "○"; | ||
319 | color: var(--borderColor); | ||
320 | padding-right: 10px; | ||
321 | } | ||
322 | } | ||
323 | } | ||
324 | |||
325 | .styled-link { | ||
326 | margin-left: .4rem; | ||
327 | font-size: .7em; | ||
328 | } | ||
329 | |||
330 | time { | ||
331 | font-size: .8em; | ||
332 | color: var(--mutedTextColor); | ||
333 | } | ||
334 | |||
335 | .desc { | ||
336 | color: var(--mutedTextColor); | ||
337 | font-size: 0.8em; | ||
338 | } | ||
339 | |||
340 | @keyframes flash { | ||
341 | 0% { | ||
342 | opacity: 0; | ||
343 | } | ||
344 | |||
345 | 50% { | ||
346 | opacity: 1; | ||
347 | } | ||
348 | |||
349 | 100% { | ||
350 | opacity: 1; | ||
351 | } | ||
352 | } | ||
353 | |||
354 | .timestamp-colon { | ||
355 | animation-name: flash; | ||
356 | animation-duration: 2s; | ||
357 | animation-timing-function: step-end; | ||
358 | animation-iteration-count: infinite; | ||
359 | } | ||
360 | |||
361 | @media (prefers-reduced-motion: reduce) { | ||
362 | .timestamp-colon { | ||
363 | animation-name: none; | ||
364 | } | ||
365 | } | ||
366 | |||
367 | .offsetthis { | ||
368 | vertical-align: super; | ||
369 | font-size: .6em; | ||
370 | } | ||
371 | |||
372 | .photos { | ||
373 | display: flex; | ||
374 | gap: 1em; | ||
375 | flex-wrap: nowrap; | ||
376 | overflow: auto; | ||
377 | align-items: center; | ||
378 | |||
379 | .image-link { | ||
380 | flex-shrink: 0; | ||
381 | } | ||
382 | |||
383 | img { | ||
384 | background-color: var(--photoBackground); | ||
385 | } | ||
386 | } | ||
387 | |||
388 | figure { | ||
389 | margin: 1em 0 3em; | ||
390 | |||
391 | img { | ||
392 | margin: 0 auto; | ||
393 | max-height: calc(100vh - 6em); | ||
394 | background-color: var(--photoBackground); | ||
395 | display: block; | ||
396 | } | ||
397 | |||
398 | .image-link { | ||
399 | display: block; | ||
400 | width: fit-content; | ||
401 | margin: auto; | ||
402 | } | ||
403 | |||
404 | p { | ||
405 | margin-bottom: 0; | ||
406 | } | ||
407 | } | ||
408 | |||
409 | [data-page-title="Photos"] { | ||
410 | header, main, footer { | ||
411 | max-width: 100%; | ||
412 | } | ||
413 | |||
414 | input { | ||
415 | position: absolute; | ||
416 | left: -100px; | ||
417 | |||
418 | &:checked + label path { | ||
419 | fill: var(--activeColor); | ||
420 | } | ||
421 | |||
422 | &:focus + label { | ||
423 | outline: auto; | ||
424 | outline-color: var(--activeColor); | ||
425 | } | ||
426 | } | ||
427 | |||
428 | label { | ||
429 | top: -50px; | ||
430 | left: 100px; | ||
431 | padding: .5em; | ||
432 | cursor: pointer; | ||
433 | position: relative; | ||
434 | display: inline-flex; | ||
435 | } | ||
436 | |||
437 | label path { | ||
438 | fill: var(--logoColor); | ||
439 | } | ||
440 | } | ||
441 | |||
442 | .photos-wrapper { | ||
443 | &:focus { outline: none; } | ||
444 | scroll-behavior: smooth; | ||
445 | margin-top: -40px; | ||
446 | clear: both; | ||
447 | text-align: center; | ||
448 | } | ||
449 | |||
450 | .back-link { | ||
451 | text-decoration: none; | ||
452 | color: var(--textColor); | ||
453 | background-color: var(--langBackgroundColor); | ||
454 | width: 1.6em; | ||
455 | text-align: center; | ||
456 | line-height: 1.6em; | ||
457 | aspect-ratio: 1/1; | ||
458 | display: inline-block; | ||
459 | border-radius: 4em; | ||
460 | } | ||
461 | |||
462 | [value*="grid"]:checked ~ .photos-wrapper { | ||
463 | display: grid; | ||
464 | column-gap: 2.5em; | ||
465 | grid-template-columns: repeat(2, 1fr); | ||
466 | // https://caniuse.com/mdn-css_properties_grid-template-rows_masonry | ||
467 | grid-template-rows: masonry; | ||
468 | |||
469 | figure { | ||
470 | margin-bottom: 0; | ||
471 | } | ||
472 | |||
473 | img { | ||
474 | max-height: none; | ||
475 | height: auto; | ||
476 | } | ||
477 | } | ||
478 | |||
479 | [value="grid3fr"]:checked ~ .photos-wrapper { | ||
480 | grid-template-columns: repeat(3, 1fr); | ||
481 | } | ||
482 | |||
483 | [value="x-scroll"]:checked ~ .photos-wrapper { | ||
484 | display: flex; | ||
485 | overflow: auto; | ||
486 | gap: 1.5em; | ||
487 | scroll-snap-type: x mandatory; | ||
488 | scroll-snap-align: center; | ||
489 | |||
490 | figure { | ||
491 | scroll-snap-align: center; | ||
492 | margin-bottom: 0; | ||
493 | flex-shrink: 0; | ||
494 | |||
495 | &:has(.portrait) figcaption { | ||
496 | max-width: calc(100vh * 0.667 - 6em); | ||
497 | margin: auto; | ||
498 | } | ||
499 | |||
500 | &:has(.landscape) figcaption { | ||
501 | max-width: calc(100vw * 0.667 - 2em); | ||
502 | margin: auto; | ||
503 | } | ||
504 | } | ||
505 | |||
506 | |||
507 | img { | ||
508 | max-height: calc(100vh - 6em); | ||
509 | max-width: calc(100vw - 5em); | ||
510 | flex-shrink: 0; | ||
511 | } | ||
512 | } | ||
513 | |||
514 | figcaption { | ||
515 | padding: .5em 1em; | ||
516 | |||
517 | p { | ||
518 | margin: 0; | ||
519 | } | ||
520 | } | ||
521 | |||
522 | // This ensures that | ||
523 | // 1. screens that are too short | ||
524 | // 2. screens that are not tall enough to display the full width of a 3:2 image | ||
525 | // at height: (100v - 6em) height | ||
526 | // don't get the option to use horizontal scroll. | ||
527 | |||
528 | // https://github.com/web-platform-tests/wpt/pull/34865 | ||
529 | // @media (max-height: 540px), (max-width: calc((100vh - 6em) * 1.5)) { | ||
530 | @media (max-height: 540px), (max-width: calc(100vh * 1.4)) { | ||
531 | body { | ||
532 | padding: 0 2em; | ||
533 | } | ||
534 | |||
535 | .photos-wrapper { | ||
536 | margin-left: -2em; | ||
537 | margin-right: -2em; | ||
538 | |||
539 | img { | ||
540 | max-height: none; | ||
541 | |||
542 | &.landscape { | ||
543 | height: calc(100vw / 1.5); | ||
544 | } | ||
545 | &.portrait { | ||
546 | height: calc(100vw / 0.667); | ||
547 | } | ||
548 | &.square { | ||
549 | height: 100vw; | ||
550 | } | ||
551 | } | ||
552 | } | ||
553 | |||
554 | [name="layout"] { | ||
555 | &, + label { visibility: hidden; } | ||
556 | } | ||
557 | } | ||
558 | |||
559 | .stories { | ||
560 | display: flex; | ||
561 | gap: 1em; | ||
562 | align-items: center; | ||
563 | overflow: auto; | ||
564 | padding: 10px; | ||
565 | margin: -10px; | ||
566 | } | ||
567 | |||
568 | open-stories { | ||
569 | .count { | ||
570 | font-size: 0.8em; | ||
571 | } | ||
572 | &::part(dialog):focus { | ||
573 | outline: none; | ||
574 | } | ||
575 | |||
576 | &:not(:defined), | ||
577 | &::part(button) { | ||
578 | font-family: system-ui, sans-serif; | ||
579 | border: 1px solid var(--borderColor); | ||
580 | box-shadow: inset 0 0 0 2px var(--backgroundColor); | ||
581 | color: var(--textColor); | ||
582 | background: var(--subtleBackgroundColor); | ||
583 | padding: 1em 0; | ||
584 | text-align: center; | ||
585 | height: 76px; | ||
586 | width: 76px; | ||
587 | border-radius: 50%; | ||
588 | font-size: 0.65em; | ||
589 | box-sizing: border-box; | ||
590 | align-items: center; | ||
591 | display: flex; | ||
592 | flex-direction: column; | ||
593 | flex-shrink: 0; | ||
594 | transition: all .3s; | ||
595 | text-transform: lowercase; | ||
596 | line-height: normal; | ||
597 | justify-content: center; | ||
598 | cursor: pointer; | ||
599 | |||
600 | &:hover { | ||
601 | background: var(--linkColor); | ||
602 | color: var(--backgroundColor); | ||
603 | transform: scale(1.05); | ||
604 | } | ||
605 | } | ||
606 | |||
607 | |||
608 | &:not([is-highlight])::part(button) { | ||
609 | border-color: var(--secondaryTextColor); | ||
610 | } | ||
611 | |||
612 | &:not(.is-read):not(.is-empty):not([is-highlight])::part(button) { | ||
613 | border-color: var(--linkColor); | ||
614 | } | ||
615 | |||
616 | |||
617 | &.is-empty::part(button) { | ||
618 | pointer-events: none; | ||
619 | opacity: 0.5; | ||
620 | overflow: hidden; | ||
621 | position: relative; | ||
622 | |||
623 | &:before { | ||
624 | display: block; | ||
625 | content: ''; | ||
626 | border-left: 1px solid var(--mutedTextColor); | ||
627 | position: absolute; | ||
628 | transform: rotate(-45deg); | ||
629 | top: 0; | ||
630 | left: 0; | ||
631 | width: 150%; | ||
632 | height: 150%; | ||
633 | transform-origin: top left; | ||
634 | } | ||
635 | } | ||
636 | } | ||
637 | |||
638 | .monospace { | ||
639 | font-family: ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; | ||
640 | font-size: 0.9em; | ||
641 | } | ||
642 | |||
643 | open-heart.text-open-heart { | ||
644 | display: inline; | ||
645 | margin-left: 1em; | ||
646 | transition: all .4s; | ||
647 | |||
648 | &:not([disabled]):hover { | ||
649 | cursor: pointer; | ||
650 | color: var(--activeColor); | ||
651 | } | ||
652 | |||
653 | .on { display: none; } | ||
654 | |||
655 | &[aria-pressed="true"] { | ||
656 | border-color: var(--heartedBackgroundColor); | ||
657 | .on { display: initial; } | ||
658 | .off { display: none; } | ||
659 | } | ||
660 | |||
661 | &[count]::after { | ||
662 | content: "(" attr(count) ")"; | ||
663 | } | ||
664 | } | ||
665 | |||
666 | kbd { | ||
667 | border: 1px solid var(--borderColor); | ||
668 | padding: 1px 4px; | ||
669 | border-radius: 3px; | ||
670 | box-shadow: 0 1px; | ||
671 | font-size: 0.9em; | ||
672 | } | ||
673 | |||
674 | nav { | ||
675 | display: flex; | ||
676 | flex-wrap: wrap; | ||
677 | column-gap: .6em; | ||
678 | margin: .6em 0; | ||
679 | } | ||
diff --git a/site/assets/site.js b/site/assets/site.js new file mode 100644 index 0000000..4e72511 --- /dev/null +++ b/site/assets/site.js | |||
@@ -0,0 +1,32 @@ | |||
1 | function settime() { | ||
2 | const timestamp = document.querySelector('[data-timestamp-text]') | ||
3 | if (!timestamp || !('Intl' in window)) return | ||
4 | |||
5 | const options = { | ||
6 | timeZone: "Asia/Taipei", | ||
7 | timeStyle: "short", | ||
8 | hour12: false | ||
9 | } | ||
10 | |||
11 | // https://gist.github.com/muan/e7414b6241f088090acd916ed965540e | ||
12 | let time = new Intl.DateTimeFormat(navigator.language || "zh-TW", options).format(new Date()) | ||
13 | |||
14 | // https://bugs.chromium.org/p/chromium/issues/detail?id=1262801 | ||
15 | if (time.match(/^24:/)) time = time.replace('24:', '00:') | ||
16 | |||
17 | // Setting interpolated string instead of just the time because | ||
18 | // if there's no JS there should be no mentions of current time | ||
19 | const text = timestamp.getAttribute('data-timestamp-text').replace('{time}', time) | ||
20 | timestamp.innerHTML = text.replace(':', '<span class="timestamp-colon" data-colon>:</span>') | ||
21 | |||
22 | const now = new Date() | ||
23 | const sec = now.getSeconds() | ||
24 | const secondIsEven = sec % 2 === 0 | ||
25 | const colon = document.querySelector('[data-colon]') | ||
26 | if (colon) colon.style.animationDelay = `${(secondIsEven ? 0 : 1000) - now.getMilliseconds()}ms` | ||
27 | |||
28 | const delay = 60000 - ((sec * 1000) + now.getMilliseconds()) | ||
29 | setTimeout(settime, delay) | ||
30 | } | ||
31 | |||
32 | settime() | ||
diff --git a/site/assets/syntax.css b/site/assets/syntax.css new file mode 100644 index 0000000..de3ac90 --- /dev/null +++ b/site/assets/syntax.css | |||
@@ -0,0 +1,225 @@ | |||
1 | |||
2 | pre, code { | ||
3 | font-family: 'Menlo', monospace; | ||
4 | } | ||
5 | |||
6 | code { | ||
7 | font-size: 0.85em; | ||
8 | } | ||
9 | |||
10 | pre code { | ||
11 | font-size: 0.9em; | ||
12 | } | ||
13 | |||
14 | :root { | ||
15 | --syntaxBackground: #ffffff; | ||
16 | --hll: #ffffcc; | ||
17 | --c: #999988; | ||
18 | --err: #a61717; | ||
19 | --errBackground: #e3d2d2; | ||
20 | --k: #000000; | ||
21 | --o: #000000; | ||
22 | --cm: #999988; | ||
23 | --cp: #999999; | ||
24 | --c1: #999988; | ||
25 | --cs: #999999; | ||
26 | --gd: #000000; | ||
27 | --ge: #000000; | ||
28 | --gr: #aa0000; | ||
29 | --gh: #999999; | ||
30 | --gi: #000000; | ||
31 | --go: #888888; | ||
32 | --gp: #555555; | ||
33 | --gu: #aaaaaa; | ||
34 | --gt: #aa0000; | ||
35 | --kc: #000000; | ||
36 | --kd: #000000; | ||
37 | --kn: #000000; | ||
38 | --kp: #000000; | ||
39 | --kr: #000000; | ||
40 | --kt: #445588; | ||
41 | --m: #009999; | ||
42 | --s: #d01040; | ||
43 | --na: #008080; | ||
44 | --nb: #0086B3; | ||
45 | --nc: #445588; | ||
46 | --no: #008080; | ||
47 | --nd: #3c5d5d; | ||
48 | --ni: #800080; | ||
49 | --ne: #990000; | ||
50 | --nf: #990000; | ||
51 | --nl: #990000; | ||
52 | --nn: #555555; | ||
53 | --nt: #000080; | ||
54 | --nv: #008080; | ||
55 | --ow: #000000; | ||
56 | --w: #bbbbbb; | ||
57 | --mf: #009999; | ||
58 | --mh: #009999; | ||
59 | --mi: #009999; | ||
60 | --mo: #009999; | ||
61 | --sb: #d01040; | ||
62 | --sc: #d01040; | ||
63 | --sd: #d01040; | ||
64 | --s2: #d01040; | ||
65 | --se: #d01040; | ||
66 | --sh: #d01040; | ||
67 | --si: #d01040; | ||
68 | --sx: #d01040; | ||
69 | --sr: #009926; | ||
70 | --s1: #d01040; | ||
71 | --ss: #990073; | ||
72 | --bp: #999999; | ||
73 | --vc: #008080; | ||
74 | --vg: #008080; | ||
75 | --vi: #008080; | ||
76 | --il: #009999; | ||
77 | } | ||
78 | |||
79 | @media (prefers-color-scheme: dark) { | ||
80 | :root { | ||
81 | --syntaxBackground: #121615; | ||
82 | --hll: #002b36; | ||
83 | --c: #586e75; | ||
84 | --err: #e3d2d2; | ||
85 | --errBackground: #a61717; | ||
86 | --k: #859900; | ||
87 | --o: #859900; | ||
88 | --cm: #586e75; | ||
89 | --c1: #586e75; | ||
90 | --gd: #ffdddd; | ||
91 | --ge: #2aa198; | ||
92 | --gh: #cb4b16; | ||
93 | --gi: #ddffdd; | ||
94 | --gu: #cb4b16; | ||
95 | --m: #74b9b9; | ||
96 | --s: #9faf74; | ||
97 | --kc: #cb4b16; | ||
98 | --kd: #2aa198; | ||
99 | --kn: #2aa198; | ||
100 | --kp: #2aa198; | ||
101 | --kr: #2aa198; | ||
102 | --nb: #b58900; | ||
103 | --no: #cb4b16; | ||
104 | --ni: #cb4b16; | ||
105 | --ne: #cb4b16; | ||
106 | --nf: #cb4b16; | ||
107 | --nl: #cb4b16; | ||
108 | --nt: #7aa1ad; | ||
109 | --ow: #2aa198; | ||
110 | --sb: #586e75; | ||
111 | --sc: #586e75; | ||
112 | --sd: #586e75; | ||
113 | --s2: #586e75; | ||
114 | --se: #586e75; | ||
115 | --sh: #586e75; | ||
116 | --si: #586e75; | ||
117 | --sx: #586e75; | ||
118 | } | ||
119 | } | ||
120 | |||
121 | div.highlight { | ||
122 | overflow: hidden; | ||
123 | position: relative; | ||
124 | margin: 0; | ||
125 | background-color: var(--syntaxBackground); | ||
126 | padding: .6em 1em; | ||
127 | border-radius: 6px; | ||
128 | tab-size: 2; | ||
129 | } | ||
130 | |||
131 | .highlight .gutter { | ||
132 | padding-right: 1em; | ||
133 | color: #aaa; | ||
134 | border-right: 3px solid var(--syntaxBackground); | ||
135 | } | ||
136 | |||
137 | .highlight .code { | ||
138 | padding-left: 1em; | ||
139 | } | ||
140 | |||
141 | .highlight pre { | ||
142 | overflow: auto; | ||
143 | margin-top: 0; | ||
144 | margin-bottom: 0; | ||
145 | } | ||
146 | |||
147 | code { | ||
148 | background: var(--syntaxBackground); | ||
149 | padding: .2em .6em; | ||
150 | border-radius: 4px; | ||
151 | vertical-align: middle; | ||
152 | } | ||
153 | |||
154 | p code { | ||
155 | vertical-align: inherit; | ||
156 | } | ||
157 | |||
158 | pre code { | ||
159 | padding: 0; | ||
160 | word-wrap: initial; | ||
161 | background: transparent; | ||
162 | } | ||
163 | |||
164 | .hll { background-color: var(--hll) } | ||
165 | .c { color: var(--c); font-style: italic } /* Comment */ | ||
166 | .err { color: var(--err); background-color: var(--errBackground) } /* Error */ | ||
167 | .k { color: var(--k); font-weight: bold } /* Keyword */ | ||
168 | .o { color: var(--o); font-weight: bold } /* Operator */ | ||
169 | .cm { color: var(--cm); font-style: italic } /* Comment.Multiline */ | ||
170 | .cp { color: var(--cp); font-weight: bold; font-style: italic } /* Comment.Preproc */ | ||
171 | .c1 { color: var(--c1); font-style: italic } /* Comment.Single */ | ||
172 | .cs { color: var(--cs); font-weight: bold; font-style: italic } /* Comment.Special */ | ||
173 | .gd { color: var(--k); background-color: var(--gd) } /* Generic.Deleted */ | ||
174 | .ge { color: var(--ge); font-style: italic } /* Generic.Emph */ | ||
175 | .gr { color: var(--gr) } /* Generic.Error */ | ||
176 | .gh { color: var(--gh) } /* Generic.Heading */ | ||
177 | .gi { color: var(--k); background-color: var(--gi) } /* Generic.Inserted */ | ||
178 | .go { color: var(--go) } /* Generic.Output */ | ||
179 | .gp { color: var(--gp) } /* Generic.Prompt */ | ||
180 | .gs { font-weight: bold } /* Generic.Strong */ | ||
181 | .gu { color: var(--gu) } /* Generic.Subheading */ | ||
182 | .gt { color: var(--gt) } /* Generic.Traceback */ | ||
183 | .kc { color: var(--kc); font-weight: bold } /* Keyword.Constant */ | ||
184 | .kd { color: var(--kd); font-weight: bold } /* Keyword.Declaration */ | ||
185 | .kn { color: var(--kn); font-weight: bold } /* Keyword.Namespace */ | ||
186 | .kp { color: var(--kp); font-weight: bold } /* Keyword.Pseudo */ | ||
187 | .kr { color: var(--kr); font-weight: bold } /* Keyword.Reserved */ | ||
188 | .kt { color: var(--kt); font-weight: bold } /* Keyword.Type */ | ||
189 | .m { color: var(--m) } /* Literal.Number */ | ||
190 | .s { color: var(--s) } /* Literal.String */ | ||
191 | .na { color: var(--na) } /* Name.Attribute */ | ||
192 | .nb { color: var(--nb) } /* Name.Builtin */ | ||
193 | .nc { color: var(--nc); font-weight: bold } /* Name.Class */ | ||
194 | .no { color: var(--no) } /* Name.Constant */ | ||
195 | .nd { color: var(--nd); font-weight: bold } /* Name.Decorator */ | ||
196 | .ni { color: var(--ni) } /* Name.Entity */ | ||
197 | .ne { color: var(--ne); font-weight: bold } /* Name.Exception */ | ||
198 | .nf { color: var(--nf); font-weight: bold } /* Name.Function */ | ||
199 | .nl { color: var(--nl); font-weight: bold } /* Name.Label */ | ||
200 | .nn { color: var(--nn) } /* Name.Namespace */ | ||
201 | .nt { color: var(--nt) } /* Name.Tag */ | ||
202 | .nv { color: var(--nv) } /* Name.Variable */ | ||
203 | .ow { color: var(--ow); font-weight: bold } /* Operator.Word */ | ||
204 | .w { color: var(--w) } /* Text.Whitespace */ | ||
205 | .mf { color: var(--mf) } /* Literal.Number.Float */ | ||
206 | .mh { color: var(--mh) } /* Literal.Number.Hex */ | ||
207 | .mi { color: var(--mi) } /* Literal.Number.Integer */ | ||
208 | .mo { color: var(--mo) } /* Literal.Number.Oct */ | ||
209 | .sb { color: var(--sb) } /* Literal.String.Backtick */ | ||
210 | .sc { color: var(--sc) } /* Literal.String.Char */ | ||
211 | .sd { color: var(--sd) } /* Literal.String.Doc */ | ||
212 | .s2 { color: var(--s2) } /* Literal.String.Double */ | ||
213 | .se { color: var(--se) } /* Literal.String.Escape */ | ||
214 | .sh { color: var(--sh) } /* Literal.String.Heredoc */ | ||
215 | .si { color: var(--si) } /* Literal.String.Interpol */ | ||
216 | .sx { color: var(--sx) } /* Literal.String.Other */ | ||
217 | .sr { color: var(--sr) } /* Literal.String.Regex */ | ||
218 | .s1 { color: var(--s1) } /* Literal.String.Single */ | ||
219 | .ss { color: var(--ss) } /* Literal.String.Symbol */ | ||
220 | .bp { color: var(--bp) } /* Name.Builtin.Pseudo */ | ||
221 | .vc { color: var(--vc) } /* Name.Variable.Class */ | ||
222 | .vg { color: var(--vg) } /* Name.Variable.Global */ | ||
223 | .vi { color: var(--vi) } /* Name.Variable.Instance */ | ||
224 | .il { color: var(--il) } /* Literal.Number.Integer.Long */ | ||
225 | |||
diff --git a/site/assets/valid-rss-rogers.png b/site/assets/valid-rss-rogers.png new file mode 100644 index 0000000..8ce6d12 --- /dev/null +++ b/site/assets/valid-rss-rogers.png | |||
Binary files differ | |||