kash-shell 0.3.24__py3-none-any.whl → 0.3.26__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kash/commands/help/assistant_commands.py +4 -3
- kash/config/colors.py +5 -3
- kash/config/text_styles.py +1 -0
- kash/config/unified_live.py +251 -0
- kash/docs/markdown/assistant_instructions_template.md +3 -3
- kash/docs/markdown/topics/a1_what_is_kash.md +22 -20
- kash/docs/markdown/topics/a2_installation.md +10 -10
- kash/docs/markdown/topics/a3_getting_started.md +8 -8
- kash/docs/markdown/topics/a4_elements.md +3 -3
- kash/docs/markdown/topics/a5_tips_for_use_with_other_tools.md +12 -12
- kash/docs/markdown/topics/b0_philosophy_of_kash.md +17 -17
- kash/docs/markdown/topics/b1_kash_overview.md +7 -7
- kash/docs/markdown/topics/b2_workspace_and_file_formats.md +1 -1
- kash/docs/markdown/topics/b3_modern_shell_tool_recommendations.md +1 -1
- kash/docs/markdown/topics/b4_faq.md +7 -7
- kash/docs/markdown/welcome.md +1 -1
- kash/embeddings/embeddings.py +112 -43
- kash/embeddings/text_similarity.py +4 -7
- kash/exec/shell_callable_action.py +4 -3
- kash/help/help_embeddings.py +8 -2
- kash/llm_utils/llm_features.py +1 -1
- kash/llm_utils/llms.py +5 -7
- kash/model/graph_model.py +2 -0
- kash/model/items_model.py +3 -3
- kash/model/params_model.py +1 -1
- kash/shell/output/shell_output.py +2 -2
- kash/utils/file_utils/csv_utils.py +105 -0
- kash/utils/rich_custom/multitask_status.py +19 -5
- kash/utils/text_handling/doc_normalization.py +2 -0
- kash/web_gen/templates/base_styles.css.jinja +356 -24
- kash/web_gen/templates/base_webpage.html.jinja +11 -0
- kash/web_gen/templates/components/toc_styles.css.jinja +15 -3
- kash/web_gen/templates/components/tooltip_styles.css.jinja +1 -0
- kash/web_gen/templates/content_styles.css.jinja +23 -9
- kash/web_gen/templates/item_view.html.jinja +12 -4
- kash/web_gen/templates/simple_webpage.html.jinja +2 -2
- kash/xonsh_custom/custom_shell.py +7 -4
- {kash_shell-0.3.24.dist-info → kash_shell-0.3.26.dist-info}/METADATA +58 -55
- {kash_shell-0.3.24.dist-info → kash_shell-0.3.26.dist-info}/RECORD +42 -40
- {kash_shell-0.3.24.dist-info → kash_shell-0.3.26.dist-info}/WHEEL +0 -0
- {kash_shell-0.3.24.dist-info → kash_shell-0.3.26.dist-info}/entry_points.txt +0 -0
- {kash_shell-0.3.24.dist-info → kash_shell-0.3.26.dist-info}/licenses/LICENSE +0 -0
|
@@ -3,12 +3,22 @@
|
|
|
3
3
|
font-size: 16px;
|
|
4
4
|
/* Adding Hack Nerd Font to all fonts for icon support, if it is installed. */
|
|
5
5
|
--font-sans: "Source Sans 3 Variable", sans-serif, "Hack Nerd Font";
|
|
6
|
-
--font-serif: "PT Serif", serif, "Hack Nerd Font";
|
|
6
|
+
--font-serif: "LocalPunct", "PT Serif", serif, "Hack Nerd Font";
|
|
7
7
|
/* Source Sans 3 Variable better at these weights. */
|
|
8
8
|
--font-weight-sans-medium: 550;
|
|
9
9
|
--font-weight-sans-bold: 650;
|
|
10
10
|
--font-mono: "Hack Nerd Font", "Menlo", "DejaVu Sans Mono", Consolas, "Lucida Console", monospace;
|
|
11
11
|
|
|
12
|
+
--font-features-sans: normal;
|
|
13
|
+
{#
|
|
14
|
+
/* TODO: FontSource builds don't seem to support these. Might be nice to use. */
|
|
15
|
+
--font-features-sans:
|
|
16
|
+
"ss01" 0, /* Flat-tailed l */
|
|
17
|
+
"ss02" 1, /* Single-storey a */
|
|
18
|
+
"ss03" 0, /* Single-storey g */
|
|
19
|
+
"ss04" 0; /* Sans-bar I */
|
|
20
|
+
#}
|
|
21
|
+
|
|
12
22
|
--font-size-large: 1.2rem;
|
|
13
23
|
--font-size-normal: 1rem;
|
|
14
24
|
--font-size-small: 0.95rem;
|
|
@@ -17,11 +27,27 @@
|
|
|
17
27
|
--font-size-mono-small: 0.75rem;
|
|
18
28
|
--font-size-mono-tiny: 0.7rem;
|
|
19
29
|
|
|
30
|
+
/* Both Source Sans 3 and PT Serif have small caps, so we use this instead of text-transform. */
|
|
31
|
+
--caps-transform: none;
|
|
32
|
+
--caps-caps-variant: all-small-caps;
|
|
33
|
+
--caps-spacing: 0.025em;
|
|
34
|
+
/* Compensate for small caps (Source Sans small caps are quite small) */
|
|
35
|
+
--caps-heading-size-multiplier: 1.42;
|
|
36
|
+
--caps-heading-line-height: calc(1.2 / var(--caps-heading-size-multiplier));
|
|
37
|
+
|
|
38
|
+
{#
|
|
39
|
+
/* Option to handle small caps manually. */
|
|
40
|
+
--caps-transform: uppercase;
|
|
41
|
+
--caps-caps-variant: none;
|
|
42
|
+
--caps-spacing: 0.025em;
|
|
43
|
+
#}
|
|
44
|
+
|
|
20
45
|
--console-char-width: 88;
|
|
21
46
|
--console-width: calc(var(--console-char-width) + 2rem);
|
|
22
47
|
{% endblock root_variables %}
|
|
23
48
|
}
|
|
24
49
|
|
|
50
|
+
/* CSS color definitions. */
|
|
25
51
|
{{ color_defs|safe }}
|
|
26
52
|
|
|
27
53
|
{% block selection_styles %}
|
|
@@ -115,12 +141,7 @@ a:hover {
|
|
|
115
141
|
transition: all 0.15s ease-in-out;
|
|
116
142
|
}
|
|
117
143
|
|
|
118
|
-
h1,
|
|
119
|
-
h2,
|
|
120
|
-
h3,
|
|
121
|
-
h4,
|
|
122
|
-
h5,
|
|
123
|
-
h6 {
|
|
144
|
+
h1, h2, h3, h4, h5, h6 {
|
|
124
145
|
line-height: 1.2;
|
|
125
146
|
}
|
|
126
147
|
|
|
@@ -131,7 +152,7 @@ h1 {
|
|
|
131
152
|
}
|
|
132
153
|
|
|
133
154
|
h2 {
|
|
134
|
-
font-size: 1.
|
|
155
|
+
font-size: 1.32rem;
|
|
135
156
|
margin-top: 2rem;
|
|
136
157
|
margin-bottom: 1rem;
|
|
137
158
|
}
|
|
@@ -145,13 +166,13 @@ h2 + h3 {
|
|
|
145
166
|
}
|
|
146
167
|
|
|
147
168
|
h3 {
|
|
148
|
-
font-size: 1.
|
|
169
|
+
font-size: 1.15rem;
|
|
149
170
|
margin-top: 1.4rem;
|
|
150
171
|
margin-bottom: 0.7rem;
|
|
151
172
|
}
|
|
152
173
|
|
|
153
174
|
h4 {
|
|
154
|
-
font-size: 1.
|
|
175
|
+
font-size: 1.12rem;
|
|
155
176
|
margin-top: 1rem;
|
|
156
177
|
margin-bottom: 0.7rem;
|
|
157
178
|
}
|
|
@@ -300,13 +321,17 @@ img {
|
|
|
300
321
|
|
|
301
322
|
details {
|
|
302
323
|
font-family: var(--font-sans);
|
|
324
|
+
font-feature-settings: var(--font-features-sans);
|
|
303
325
|
color: var(--color-text);
|
|
304
326
|
|
|
305
327
|
border: 1px solid var(--color-hint-gentle);
|
|
306
|
-
border-radius: 3px;
|
|
307
328
|
margin: 0.75rem 0;
|
|
308
329
|
}
|
|
309
330
|
|
|
331
|
+
details > :not(summary) {
|
|
332
|
+
padding: 0 0.75rem;
|
|
333
|
+
}
|
|
334
|
+
|
|
310
335
|
summary {
|
|
311
336
|
color: var(--color-secondary);
|
|
312
337
|
padding: .5rem 1rem;
|
|
@@ -316,9 +341,12 @@ summary {
|
|
|
316
341
|
transition: all 0.15s ease-in-out;
|
|
317
342
|
}
|
|
318
343
|
|
|
344
|
+
summary::marker {
|
|
345
|
+
font-size: 0.85rem;
|
|
346
|
+
}
|
|
347
|
+
|
|
319
348
|
summary:hover {
|
|
320
349
|
color: var(--color-primary-light);
|
|
321
|
-
{# background: var(--color-hover-bg); #}
|
|
322
350
|
}
|
|
323
351
|
|
|
324
352
|
/* keep the border on the summary when open so it blends */
|
|
@@ -331,6 +359,36 @@ summary:focus-visible {
|
|
|
331
359
|
outline-offset: 2px;
|
|
332
360
|
}
|
|
333
361
|
|
|
362
|
+
/* Special formatting for document metadata details */
|
|
363
|
+
details.metadata {
|
|
364
|
+
color: var(--color-tertiary);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
details.metadata > :not(summary) {
|
|
368
|
+
color: var(--color-secondary);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
details.metadata summary {
|
|
372
|
+
font-weight: 550;
|
|
373
|
+
font-size: calc(var(--font-size-small) * var(--caps-heading-size-multiplier));
|
|
374
|
+
line-height: var(--caps-heading-line-height);
|
|
375
|
+
text-transform: var(--caps-transform);
|
|
376
|
+
font-variant-caps: var(--caps-caps-variant);
|
|
377
|
+
letter-spacing: var(--caps-spacing);
|
|
378
|
+
color: var(--color-tertiary);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
details.metadata summary:hover {
|
|
382
|
+
color: var(--color-primary-light);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
details.metadata blockquote {
|
|
386
|
+
border-left: none;
|
|
387
|
+
margin: 0 0.75rem;
|
|
388
|
+
font-size: var(--font-size-small);
|
|
389
|
+
font-style: italic;
|
|
390
|
+
}
|
|
391
|
+
|
|
334
392
|
|
|
335
393
|
hr {
|
|
336
394
|
border: none;
|
|
@@ -374,15 +432,21 @@ hr:before {
|
|
|
374
432
|
|
|
375
433
|
.long-text h3 {
|
|
376
434
|
font-family: var(--font-sans);
|
|
435
|
+
font-feature-settings: var(--font-features-sans);
|
|
377
436
|
font-weight: 550;
|
|
378
|
-
|
|
379
|
-
|
|
437
|
+
font-size: calc(1.15rem * var(--caps-heading-size-multiplier));
|
|
438
|
+
line-height: var(--caps-heading-line-height);
|
|
439
|
+
text-transform: var(--caps-transform);
|
|
440
|
+
font-variant-caps: var(--caps-caps-variant);
|
|
441
|
+
letter-spacing: var(--caps-spacing);
|
|
380
442
|
}
|
|
381
443
|
|
|
382
444
|
.long-text h4 {
|
|
383
|
-
font-family: var(--font-
|
|
384
|
-
font-
|
|
445
|
+
font-family: var(--font-sans);
|
|
446
|
+
font-feature-settings: var(--font-features-sans);
|
|
447
|
+
font-weight: 540;
|
|
385
448
|
font-style: italic;
|
|
449
|
+
letter-spacing: 0.015em;
|
|
386
450
|
}
|
|
387
451
|
|
|
388
452
|
.long-text h5 {
|
|
@@ -406,6 +470,7 @@ hr:before {
|
|
|
406
470
|
|
|
407
471
|
.long-text .sans-text {
|
|
408
472
|
font-family: var(--font-sans);
|
|
473
|
+
font-feature-settings: var(--font-features-sans);
|
|
409
474
|
}
|
|
410
475
|
|
|
411
476
|
.long-text .sans-text p {
|
|
@@ -415,6 +480,7 @@ hr:before {
|
|
|
415
480
|
|
|
416
481
|
.long-text .sans-text h1 {
|
|
417
482
|
font-family: var(--font-sans);
|
|
483
|
+
font-feature-settings: var(--font-features-sans);
|
|
418
484
|
font-size: 1.75rem;
|
|
419
485
|
font-weight: 380;
|
|
420
486
|
margin-top: 1rem;
|
|
@@ -423,6 +489,7 @@ hr:before {
|
|
|
423
489
|
|
|
424
490
|
.long-text .sans-text h2 {
|
|
425
491
|
font-family: var(--font-sans);
|
|
492
|
+
font-feature-settings: var(--font-features-sans);
|
|
426
493
|
font-size: 1.25rem;
|
|
427
494
|
font-weight: 440;
|
|
428
495
|
margin-top: 1rem;
|
|
@@ -431,10 +498,13 @@ hr:before {
|
|
|
431
498
|
|
|
432
499
|
.long-text .sans-text h3 {
|
|
433
500
|
font-family: var(--font-sans);
|
|
434
|
-
font-
|
|
501
|
+
font-feature-settings: var(--font-features-sans);
|
|
435
502
|
font-weight: var(--font-weight-sans-bold);
|
|
436
|
-
|
|
437
|
-
|
|
503
|
+
font-size: calc(1.1rem * var(--caps-heading-size-multiplier));
|
|
504
|
+
line-height: var(--caps-heading-line-height);
|
|
505
|
+
text-transform: var(--caps-transform);
|
|
506
|
+
font-variant-caps: var(--caps-caps-variant);
|
|
507
|
+
letter-spacing: var(--caps-spacing);
|
|
438
508
|
margin-top: 1rem;
|
|
439
509
|
margin-bottom: 0.8rem;
|
|
440
510
|
}
|
|
@@ -447,6 +517,7 @@ table, th, td, tbody tr {
|
|
|
447
517
|
|
|
448
518
|
table {
|
|
449
519
|
font-family: var(--font-sans);
|
|
520
|
+
font-feature-settings: var(--font-features-sans);
|
|
450
521
|
font-size: var(--font-size-small);
|
|
451
522
|
width: auto;
|
|
452
523
|
margin-left: auto;
|
|
@@ -459,10 +530,12 @@ table {
|
|
|
459
530
|
|
|
460
531
|
th {
|
|
461
532
|
font-weight: var(--font-weight-sans-bold);
|
|
462
|
-
|
|
463
|
-
|
|
533
|
+
font-size: calc(var(--font-size-small) * var(--caps-heading-size-multiplier));
|
|
534
|
+
line-height: var(--caps-heading-line-height);
|
|
535
|
+
text-transform: var(--caps-transform);
|
|
536
|
+
font-variant-caps: var(--caps-caps-variant);
|
|
537
|
+
letter-spacing: var(--caps-spacing);
|
|
464
538
|
border-bottom: 1px solid var(--color-border-hint);
|
|
465
|
-
line-height: 1.2;
|
|
466
539
|
background-color: var(--color-bg-alt-solid);
|
|
467
540
|
}
|
|
468
541
|
|
|
@@ -526,12 +599,16 @@ sup {
|
|
|
526
599
|
|
|
527
600
|
.footnote-ref a, .footnote {
|
|
528
601
|
font-family: var(--font-sans);
|
|
602
|
+
font-feature-settings: var(--font-features-sans);
|
|
603
|
+
background-color: var(--color-bg-meta-solid);
|
|
604
|
+
color: var(--color-hint-strong);
|
|
529
605
|
text-decoration: none;
|
|
530
606
|
padding: 0 0.15rem;
|
|
531
|
-
|
|
607
|
+
margin-right: 0.15rem;
|
|
608
|
+
border-radius: 6px;
|
|
532
609
|
transition: all 0.15s ease-in-out;
|
|
533
610
|
font-style: normal;
|
|
534
|
-
font-weight:
|
|
611
|
+
font-weight: 600;
|
|
535
612
|
}
|
|
536
613
|
|
|
537
614
|
.footnote-ref a:hover, .footnote:hover {
|
|
@@ -539,8 +616,257 @@ sup {
|
|
|
539
616
|
color: var(--color-primary-light);
|
|
540
617
|
text-decoration: none;
|
|
541
618
|
}
|
|
619
|
+
|
|
620
|
+
@media print {
|
|
621
|
+
sup {
|
|
622
|
+
font-size: 70% !important;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
/* Don't use stylized footnotes in print. */
|
|
626
|
+
.footnote-ref a, .footnote {
|
|
627
|
+
font-family: var(--font-serif);
|
|
628
|
+
font-feature-settings: normal !important;
|
|
629
|
+
background-color: transparent !important;
|
|
630
|
+
color: var(--color-text) !important;
|
|
631
|
+
padding: 0 0.05rem !important;
|
|
632
|
+
font-weight: 400 !important;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
.footnote-ref a:hover, .footnote:hover {
|
|
636
|
+
background-color: transparent !important;
|
|
637
|
+
color: var(--color-text) !important;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
/* Hide footnote return arrows/links in print */
|
|
641
|
+
.footnote-backref,
|
|
642
|
+
.footnote-return,
|
|
643
|
+
a[href^="#fnref"],
|
|
644
|
+
.reversefootnote {
|
|
645
|
+
display: none !important;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/* Also hide common up arrow characters */
|
|
649
|
+
.footnote::after[content*="↩"],
|
|
650
|
+
.footnote::after[content*="↑"] {
|
|
651
|
+
display: none !important;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
|
|
542
655
|
{% endblock footnote_styles %}
|
|
543
656
|
|
|
657
|
+
{% block print_styles %}
|
|
658
|
+
/* Print media adjustments for better readability and layout */
|
|
659
|
+
@media print {
|
|
660
|
+
@page {
|
|
661
|
+
/* Set page margins for physical page */
|
|
662
|
+
margin: 0.7in 0.95in 0.8in 0.95in;
|
|
663
|
+
|
|
664
|
+
@top-center {
|
|
665
|
+
content: "";
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
@bottom-left {
|
|
669
|
+
content: "Formatted by Kash — github.com/jlevy/kash";
|
|
670
|
+
font-family: var(--font-sans) !important;
|
|
671
|
+
font-size: var(--font-size-small);
|
|
672
|
+
color: var(--color-tertiary) !important;
|
|
673
|
+
margin: 0 0 0.2in 0 !important;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
@bottom-right {
|
|
677
|
+
content: counter(page);
|
|
678
|
+
font-family: var(--font-sans) !important;
|
|
679
|
+
font-size: var(--font-size-small);
|
|
680
|
+
color: var(--color-tertiary) !important;
|
|
681
|
+
margin: 0 0 0.2in 0 !important;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
:root {
|
|
686
|
+
/* Slightly larger fonts for print readability */
|
|
687
|
+
--font-size-normal: 1.1rem;
|
|
688
|
+
--font-size-small: 1.0rem;
|
|
689
|
+
--font-size-smaller: 0.9rem;
|
|
690
|
+
--font-size-mono: 0.9rem;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
body {
|
|
694
|
+
/* Remove body margin since @page handles it */
|
|
695
|
+
margin: 0;
|
|
696
|
+
/* Ensure good line height for print */
|
|
697
|
+
line-height: 1.6;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
/* Enable hyphenation and justification for main text content only */
|
|
701
|
+
p, blockquote {
|
|
702
|
+
hyphens: auto;
|
|
703
|
+
text-align: justify;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
.long-text {
|
|
709
|
+
/* Remove shadows and borders that don't work well in print */
|
|
710
|
+
box-shadow: none !important;
|
|
711
|
+
border: none !important;
|
|
712
|
+
/* Add print-specific margins */
|
|
713
|
+
padding: 0;
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
/* Ensure tables don't break layout in print */
|
|
717
|
+
.table-container {
|
|
718
|
+
position: static;
|
|
719
|
+
transform: none;
|
|
720
|
+
left: auto;
|
|
721
|
+
width: 100%;
|
|
722
|
+
max-width: 100%;
|
|
723
|
+
overflow: visible;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
table {
|
|
727
|
+
width: 100%;
|
|
728
|
+
max-width: 100%;
|
|
729
|
+
font-size: 0.9rem;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
/* Adjust code blocks for print */
|
|
733
|
+
pre {
|
|
734
|
+
white-space: pre-wrap;
|
|
735
|
+
word-wrap: break-word;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
/* Hide interactive elements that don't work in print */
|
|
739
|
+
.code-copy-button {
|
|
740
|
+
display: none !important;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
/* Page break controls */
|
|
744
|
+
h1, h2, h3, h4, h5, h6 {
|
|
745
|
+
break-after: avoid;
|
|
746
|
+
page-break-after: avoid; /* Fallback for older browsers */
|
|
747
|
+
break-inside: avoid;
|
|
748
|
+
page-break-inside: avoid; /* Fallback for older browsers */
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
/* Avoid breaking these elements */
|
|
752
|
+
blockquote, pre, .code-block-wrapper, figure, .table-container {
|
|
753
|
+
break-inside: avoid;
|
|
754
|
+
page-break-inside: avoid; /* Fallback for older browsers */
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
/* Control text flow */
|
|
758
|
+
p {
|
|
759
|
+
orphans: 3; /* Minimum lines at bottom of page */
|
|
760
|
+
widows: 3; /* Minimum lines at top of page */
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
/* Keep list items together when reasonable */
|
|
764
|
+
li {
|
|
765
|
+
break-inside: avoid-page;
|
|
766
|
+
page-break-inside: avoid; /* Fallback for older browsers */
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
/* Hide doc metadata details in print (for now) */
|
|
770
|
+
details.metadata {
|
|
771
|
+
display: none !important;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
/* XXX: long endnote lists cut off the numbers. This is a workaround:
|
|
775
|
+
* Custom numbering system for ordered lists using Grid for alignment */
|
|
776
|
+
ol {
|
|
777
|
+
list-style: none;
|
|
778
|
+
counter-reset: list-counter;
|
|
779
|
+
padding-left: 0;
|
|
780
|
+
margin-left: 1rem;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
ol > li {
|
|
784
|
+
display: grid;
|
|
785
|
+
/* col 1: fixed width for numbers up to 999. col 2: for the content */
|
|
786
|
+
grid-template-columns: 2.5rem 1fr;
|
|
787
|
+
gap: 0 0.5rem; /* Space between number and content */
|
|
788
|
+
align-items: baseline; /* Aligns number with first line of text */
|
|
789
|
+
counter-increment: list-counter;
|
|
790
|
+
/* Override global li styles for grid layout */
|
|
791
|
+
margin-top: 0;
|
|
792
|
+
margin-bottom: 0.5rem;
|
|
793
|
+
position: static;
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
ol > li::before {
|
|
797
|
+
content: counter(list-counter) ".";
|
|
798
|
+
text-align: right;
|
|
799
|
+
font-family: var(--font-serif);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
/* Place all direct children of li into the second grid column */
|
|
803
|
+
/* This makes p, ul, etc. stack vertically as intended */
|
|
804
|
+
ol > li > * {
|
|
805
|
+
grid-column: 2;
|
|
806
|
+
word-break: break-word;
|
|
807
|
+
overflow-wrap: break-word;
|
|
808
|
+
hyphens: auto;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
/* Override justification for content within list items */
|
|
812
|
+
ol > li p,
|
|
813
|
+
ol > li blockquote {
|
|
814
|
+
text-align: left !important;
|
|
815
|
+
text-justify: none !important;
|
|
816
|
+
margin-top: 0; /* Tighter spacing inside list items */
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
/* --- Reset for Nested Lists --- */
|
|
820
|
+
/* This prevents nested lists from inheriting the grid layout */
|
|
821
|
+
ol ol {
|
|
822
|
+
margin-left: 1.5rem;
|
|
823
|
+
margin-top: 0.5rem;
|
|
824
|
+
list-style: decimal outside;
|
|
825
|
+
counter-reset: initial; /* Don't inherit parent counter */
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
ol ul {
|
|
829
|
+
margin-left: 1.5rem;
|
|
830
|
+
margin-top: 0.5rem;
|
|
831
|
+
list-style: none; /* We'll restore bullets with ::before */
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
ol ol > li {
|
|
835
|
+
display: list-item !important; /* Revert from grid to standard list item */
|
|
836
|
+
padding-left: 0.25rem;
|
|
837
|
+
margin-top: 0.4rem; /* Override global li margin for tighter spacing */
|
|
838
|
+
position: static; /* Override global li position */
|
|
839
|
+
/* Override justification from parent rules */
|
|
840
|
+
text-align: left !important;
|
|
841
|
+
text-justify: none !important;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
ol ul > li {
|
|
845
|
+
display: list-item !important; /* Revert from grid to standard list item */
|
|
846
|
+
padding-left: 0.25rem;
|
|
847
|
+
margin-top: 0.4rem; /* Override global li margin for tighter spacing */
|
|
848
|
+
position: relative; /* Need relative positioning for bullet ::before */
|
|
849
|
+
/* Override justification from parent rules */
|
|
850
|
+
text-align: left !important;
|
|
851
|
+
text-justify: none !important;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
/* Remove the custom counter from nested ol */
|
|
855
|
+
ol ol > li::before {
|
|
856
|
+
content: "" !important;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
/* Restore bullets for nested ul within ol */
|
|
860
|
+
ol ul > li::before {
|
|
861
|
+
content: "▪︎";
|
|
862
|
+
position: absolute;
|
|
863
|
+
left: -.85rem;
|
|
864
|
+
top: .25rem;
|
|
865
|
+
font-size: 0.62rem;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
{% endblock print_styles %}
|
|
869
|
+
|
|
544
870
|
{% block responsive_styles %}
|
|
545
871
|
/* Bleed wide on larger screens. */
|
|
546
872
|
/* TODO: Don't make so wide if table itself isn't large? */
|
|
@@ -662,6 +988,12 @@ sup {
|
|
|
662
988
|
max-width: none;
|
|
663
989
|
}
|
|
664
990
|
|
|
991
|
+
/* Smaller table text on mobile. */
|
|
992
|
+
table code,
|
|
993
|
+
table pre {
|
|
994
|
+
font-size: var(--font-size-mono-small);
|
|
995
|
+
}
|
|
996
|
+
|
|
665
997
|
ul, ol {
|
|
666
998
|
margin-left: 1rem;
|
|
667
999
|
}
|
|
@@ -152,6 +152,17 @@
|
|
|
152
152
|
src: url(https://cdn.jsdelivr.net/fontsource/fonts/pt-serif@latest/latin-700-italic.woff2) format('woff2');
|
|
153
153
|
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
|
|
154
154
|
}
|
|
155
|
+
/* PT Serif has a known bug with quote alignment that can look quite ugly.
|
|
156
|
+
* https://nedbatchelder.com/blog/201809/fixing_pt_serif.html?utm_source=chatgpt.com
|
|
157
|
+
* So we use a workaround to use punctuation from a different local font.
|
|
158
|
+
* After trying a few, it seems Georgia is workable for quote marks an non-oriented ASCII quotes. */
|
|
159
|
+
@font-face {
|
|
160
|
+
font-family: 'LocalPunct';
|
|
161
|
+
src: local('Georgia');
|
|
162
|
+
unicode-range:
|
|
163
|
+
U+0022, U+0027, /* " ' */
|
|
164
|
+
U+2018, U+2019, U+201C, U+201D; /* ‘ ’ “ ” */
|
|
165
|
+
}
|
|
155
166
|
/* https://fontsource.org/fonts/source-sans-3/cdn */
|
|
156
167
|
/* source-sans-3-latin-wght-normal */
|
|
157
168
|
@font-face {
|
|
@@ -84,15 +84,18 @@
|
|
|
84
84
|
/* TOC Styling */
|
|
85
85
|
.toc {
|
|
86
86
|
font-family: var(--font-sans);
|
|
87
|
+
font-feature-settings: var(--font-features-sans);
|
|
87
88
|
color: var(--color-tertiary);
|
|
88
89
|
font-variant-numeric: tabular-nums;
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
.toc-title {
|
|
92
|
-
font-size: var(--font-size-small);
|
|
93
93
|
font-weight: 550;
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
font-size: calc(var(--font-size-small) * var(--caps-heading-size-multiplier));
|
|
95
|
+
line-height: var(--caps-heading-line-height);
|
|
96
|
+
text-transform: var(--caps-transform);
|
|
97
|
+
font-variant-caps: var(--caps-caps-variant);
|
|
98
|
+
letter-spacing: var(--caps-spacing);
|
|
96
99
|
padding-left: 0.3rem;
|
|
97
100
|
border-bottom: 1px solid var(--color-border-hint);
|
|
98
101
|
border-left: none !important; /* Override toc-link border */
|
|
@@ -281,4 +284,13 @@ body.toc-open {
|
|
|
281
284
|
visibility: visible;
|
|
282
285
|
pointer-events: auto; /* Re-enable interaction */
|
|
283
286
|
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
@media print {
|
|
290
|
+
/* Hide TOC on print */
|
|
291
|
+
.toc-toggle,
|
|
292
|
+
.toc-backdrop,
|
|
293
|
+
.toc-container {
|
|
294
|
+
display: none !important;
|
|
295
|
+
}
|
|
284
296
|
}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
.citation {
|
|
9
9
|
font-family: var(--font-sans);
|
|
10
|
+
font-feature-settings: var(--font-features-sans);
|
|
10
11
|
color: var(--color-secondary);
|
|
11
12
|
display: inline-block;
|
|
12
13
|
height: 1.3rem;
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
|
|
38
39
|
.description {
|
|
39
40
|
font-family: var(--font-sans);
|
|
41
|
+
font-feature-settings: var(--font-features-sans);
|
|
40
42
|
font-size: var(--font-size-small);
|
|
41
43
|
color: var(--color-secondary);
|
|
42
44
|
margin: 2rem 0;
|
|
@@ -44,6 +46,7 @@
|
|
|
44
46
|
|
|
45
47
|
.summary {
|
|
46
48
|
font-family: var(--font-sans);
|
|
49
|
+
font-feature-settings: var(--font-features-sans);
|
|
47
50
|
font-size: var(--font-size-small);
|
|
48
51
|
margin: 1rem 0;
|
|
49
52
|
padding: 1rem;
|
|
@@ -54,15 +57,19 @@
|
|
|
54
57
|
display: block;
|
|
55
58
|
text-align: center;
|
|
56
59
|
font-family: var(--font-sans);
|
|
60
|
+
font-feature-settings: var(--font-features-sans);
|
|
57
61
|
font-weight: 500;
|
|
58
|
-
font-size: 1.2rem;
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
font-size: calc(1.2rem * var(--caps-heading-size-multiplier));
|
|
63
|
+
line-height: var(--caps-heading-line-height);
|
|
64
|
+
text-transform: var(--caps-transform);
|
|
65
|
+
font-variant-caps: var(--caps-caps-variant);
|
|
66
|
+
letter-spacing: var(--caps-spacing);
|
|
61
67
|
margin-bottom: 0.5rem;
|
|
62
68
|
}
|
|
63
69
|
|
|
64
70
|
.concepts {
|
|
65
71
|
font-family: var(--font-sans);
|
|
72
|
+
font-feature-settings: var(--font-features-sans);
|
|
66
73
|
font-size: var(--font-size-small);
|
|
67
74
|
font-weight: bold;
|
|
68
75
|
margin: 2rem 0;
|
|
@@ -79,10 +86,13 @@
|
|
|
79
86
|
display: block;
|
|
80
87
|
text-align: center;
|
|
81
88
|
font-family: var(--font-sans);
|
|
89
|
+
font-feature-settings: var(--font-features-sans);
|
|
82
90
|
font-weight: 500;
|
|
83
|
-
font-size: 1.2rem;
|
|
84
|
-
|
|
85
|
-
|
|
91
|
+
font-size: calc(1.2rem * var(--caps-heading-size-multiplier));
|
|
92
|
+
line-height: var(--caps-heading-line-height);
|
|
93
|
+
text-transform: var(--caps-transform);
|
|
94
|
+
font-variant-caps: var(--caps-caps-variant);
|
|
95
|
+
letter-spacing: var(--caps-spacing);
|
|
86
96
|
margin-bottom: 0.5rem;
|
|
87
97
|
|
|
88
98
|
/* Hack to center the header above the columns */
|
|
@@ -106,10 +116,13 @@
|
|
|
106
116
|
max-width: 10rem;
|
|
107
117
|
text-align: center;
|
|
108
118
|
font-family: var(--font-sans);
|
|
109
|
-
font-
|
|
119
|
+
font-feature-settings: var(--font-features-sans);
|
|
110
120
|
font-weight: 600;
|
|
111
|
-
|
|
112
|
-
|
|
121
|
+
font-size: calc(var(--font-size-small) * var(--caps-heading-size-multiplier));
|
|
122
|
+
line-height: var(--caps-heading-line-height);
|
|
123
|
+
text-transform: var(--caps-transform);
|
|
124
|
+
font-variant-caps: var(--caps-caps-variant);
|
|
125
|
+
letter-spacing: var(--caps-spacing);
|
|
113
126
|
line-height: 1.2;
|
|
114
127
|
padding: 0 0.5rem;
|
|
115
128
|
border-bottom-width: 2px;
|
|
@@ -171,6 +184,7 @@
|
|
|
171
184
|
order: 0;
|
|
172
185
|
margin: 0.5rem 1rem 0.5rem 0;
|
|
173
186
|
font-family: var(--font-sans);
|
|
187
|
+
font-feature-settings: var(--font-features-sans);
|
|
174
188
|
color: var(--color-secondary);
|
|
175
189
|
border-right: 2px solid var(--color-hint);
|
|
176
190
|
padding-right: 0.5rem;
|