@davmash/bygone 0.8.16 → 0.9.4

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.
package/web/presenter.css CHANGED
@@ -1,5 +1,5 @@
1
1
  :root {
2
- --tour-rail-width: 360px;
2
+ --tour-rail-width: 300px;
3
3
  --tour-accent-bright: #a99fff;
4
4
  --tour-surface: #11131a;
5
5
  --tour-border: rgba(255, 255, 255, 0.09);
@@ -7,7 +7,7 @@
7
7
  --tour-faint: rgba(232, 235, 246, 0.72);
8
8
  --tour-body: #eef1fa;
9
9
  --tour-body-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
10
- --tour-narrative-height: 296px;
10
+ --tour-narrative-height: min(38vh, 360px);
11
11
  }
12
12
 
13
13
  .tour-mode-controls { display: grid; gap: 6px; margin: 12px 0; }
@@ -37,6 +37,53 @@ body.tour-derived-mode #tour-narrative { display: none; }
37
37
  display: none;
38
38
  }
39
39
 
40
+ .tour-review-toggle,
41
+ .tour-review button {
42
+ border: 1px solid var(--tour-border);
43
+ border-radius: 6px;
44
+ padding: 7px 10px;
45
+ color: var(--tour-body);
46
+ background: rgba(255, 255, 255, 0.06);
47
+ font: inherit;
48
+ cursor: pointer;
49
+ }
50
+
51
+ .tour-review-toggle { margin-top: 12px; }
52
+ .tour-review-toggle:hover, .tour-review button:hover { border-color: var(--tour-accent-bright); }
53
+ .tour-review-toggle:focus-visible, .tour-review button:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 2px; }
54
+ .tour-review[hidden], .tour-review-toggle[hidden] { display: none; }
55
+
56
+ .tour-review {
57
+ position: fixed;
58
+ top: 16px;
59
+ right: 16px;
60
+ z-index: 160;
61
+ display: flex;
62
+ flex-direction: column;
63
+ box-sizing: border-box;
64
+ width: min(480px, calc(100vw - var(--tour-rail-width) - 32px));
65
+ max-height: calc(100vh - 32px);
66
+ border: 1px solid var(--tour-border);
67
+ border-radius: 10px;
68
+ background: var(--tour-surface);
69
+ color: var(--tour-body);
70
+ box-shadow: 0 12px 48px rgba(0, 0, 0, 0.5);
71
+ font: 13px/1.5 var(--tour-body-font);
72
+ }
73
+
74
+ .tour-review-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 18px; border-bottom: 1px solid var(--tour-border); }
75
+ .tour-review-heading h2 { margin: 0; font-size: 18px; }
76
+ .tour-review-content { overflow-y: auto; padding: 0 18px 18px; min-height: 0; overflow-wrap: anywhere; }
77
+ .tour-review-content h3 { color: var(--tour-accent-bright); font-size: 13px; margin: 22px 0 10px; }
78
+ .tour-review-item { border-top: 1px solid var(--tour-border); padding: 12px 0; }
79
+ .tour-review-item h4 { font-size: 14px; margin: 0 0 6px; }
80
+ .tour-review-item p { margin: 6px 0 10px; white-space: pre-wrap; }
81
+ .tour-review-provenance, .tour-review-range, .tour-review-next { color: var(--tour-muted); }
82
+ .tour-review-range { font-size: 12px; }
83
+ .tour-review-evidence { display: block; width: 100%; text-align: left; margin: 6px 0; overflow-wrap: anywhere; }
84
+ #tour-review-status:empty { display: none; }
85
+ #tour-review-status { margin: 0; padding: 12px 18px; border-top: 1px solid var(--tour-border); }
86
+
40
87
  .tour-sidebar-hide,
41
88
  .tour-sidebar-show {
42
89
  border: 1px solid var(--tour-border);
@@ -117,10 +164,6 @@ body.tour-mode #container {
117
164
  margin-top: var(--tour-narrative-height);
118
165
  }
119
166
 
120
- body.tour-mode.tour-discussion #container {
121
- visibility: hidden;
122
- }
123
-
124
167
  .tour-overview {
125
168
  position: relative;
126
169
  padding: 24px 46px 18px 22px;
@@ -128,12 +171,42 @@ body.tour-mode.tour-discussion #container {
128
171
  }
129
172
 
130
173
  .tour-overview h1 {
174
+ display: flex;
175
+ align-items: center;
176
+ min-width: 0;
131
177
  margin: 0 0 10px;
132
178
  font-size: 20px;
133
179
  line-height: 1.25;
134
180
  text-wrap: balance;
135
181
  }
136
182
 
183
+ .tour-overview h1 > button#tour-title {
184
+ box-sizing: border-box;
185
+ min-width: 0;
186
+ padding: 0;
187
+ color: inherit;
188
+ border: 0;
189
+ border-left: 2px solid transparent;
190
+ background: none;
191
+ font: inherit;
192
+ text-align: left;
193
+ cursor: pointer;
194
+ }
195
+
196
+ .tour-overview h1 > button#tour-title:hover,
197
+ .tour-overview h1 > button#tour-title:focus-visible {
198
+ color: #fff;
199
+ }
200
+
201
+ .tour-overview h1 > button#tour-title:focus-visible {
202
+ outline: 2px solid var(--tour-accent-bright);
203
+ outline-offset: 3px;
204
+ }
205
+
206
+ .tour-overview h1 > button#tour-title.is-active {
207
+ border-left-color: rgba(169, 159, 255, 0.72);
208
+ }
209
+
137
210
  .tour-source {
138
211
  display: inline-block;
139
212
  margin-bottom: 10px;
@@ -180,12 +253,18 @@ body.tour-mode.tour-discussion #container {
180
253
  }
181
254
 
182
255
  .tour-coverage-item {
256
+ position: relative;
183
257
  display: grid;
184
258
  gap: 5px;
185
259
  padding-left: 8px;
186
260
  border-left: 2px solid var(--tour-accent-bright);
187
261
  }
188
262
 
263
+ .tour-coverage-item:focus-visible {
264
+ outline: 2px solid var(--tour-accent-bright);
265
+ outline-offset: 3px;
266
+ }
267
+
189
268
  .tour-coverage-item[data-metric="assignment"] {
190
269
  border-left-color: #74d6ad;
191
270
  }
@@ -300,12 +379,14 @@ body.tour-mode.tour-discussion #container {
300
379
  right: 0;
301
380
  left: var(--tour-rail-width);
302
381
  z-index: 90;
303
- height: var(--tour-narrative-height);
382
+ height: min(38vh, 360px);
383
+ min-height: 0;
384
+ max-height: none;
304
385
  box-sizing: border-box;
305
386
  display: flex;
306
387
  flex-direction: column;
307
- overflow: auto;
308
- padding: 20px 26px 18px;
388
+ overflow: hidden;
389
+ padding: 12px 24px 16px;
309
390
  color: #f5f6fb;
310
391
  border-bottom: 1px solid var(--tour-border);
311
392
  background: #151821;
@@ -317,68 +398,42 @@ body.tour-mode.tour-discussion #container {
317
398
  display: none;
318
399
  }
319
400
 
320
- .tour-narrative-resizer {
321
- position: fixed;
322
- z-index: 120;
323
- top: calc(var(--tour-narrative-height) - 4px);
324
- right: 0;
325
- left: var(--tour-rail-width);
326
- height: 8px;
327
- cursor: row-resize;
328
- touch-action: none;
329
- }
330
-
331
- .tour-narrative-resizer:hover,
332
- .tour-narrative-resizer:focus-visible,
333
- body.is-resizing-tour-narrative .tour-narrative-resizer {
334
- background: rgba(169, 159, 255, 0.75);
335
- outline: none;
336
- }
337
-
338
- body:not(.tour-mode) .tour-narrative-resizer,
339
- body.tour-discussion .tour-narrative-resizer {
340
- display: none;
341
- }
342
-
343
- .tour-narrative-nav {
344
- display: grid;
345
- grid-template-columns: auto minmax(0, 1fr) auto;
401
+ .tour-narrative-toolbar {
402
+ display: flex;
403
+ min-width: 0;
346
404
  gap: 12px;
347
405
  align-items: center;
348
- margin-bottom: 14px;
349
- padding: 0 0 10px;
406
+ flex-shrink: 0;
407
+ margin: 0 0 10px;
408
+ padding: 0 0 8px;
350
409
  border-bottom: 1px solid var(--tour-border);
351
410
  background: rgba(255, 255, 255, 0.025);
352
411
  }
353
412
 
354
- .tour-narrative-nav button {
355
- min-width: 72px;
356
- padding: 7px 10px;
413
+ .tour-narrative-toolbar button {
414
+ padding: 5px 9px;
357
415
  color: var(--tour-muted);
358
- border: 1px solid transparent;
359
- border-radius: 6px;
360
- background: transparent;
416
+ border: 1px solid var(--tour-border);
417
+ border-radius: 5px;
418
+ background: rgba(255, 255, 255, 0.035);
361
419
  cursor: pointer;
362
- transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease, box-shadow 120ms ease;
420
+ font: inherit;
363
421
  }
364
422
 
365
- .tour-narrative-nav button:hover,
366
- .tour-narrative-nav button:focus-visible {
423
+ .tour-narrative-toolbar button:hover:not(:disabled),
424
+ .tour-narrative-toolbar button:focus-visible,
425
+ .tour-narrative-toolbar button[aria-pressed="true"] {
367
426
  color: #fff;
368
- border-color: var(--tour-border);
369
- background: rgba(255, 255, 255, 0.05);
427
+ border-color: rgba(169, 159, 255, 0.55);
428
+ background: rgba(169, 159, 255, 0.13);
370
429
  }
371
430
 
372
- .tour-narrative-nav button:focus-visible {
431
+ .tour-narrative-toolbar button:focus-visible {
373
432
  outline: none;
374
433
  box-shadow: 0 0 0 2px rgba(128, 117, 255, 0.28);
375
434
  }
376
435
 
377
- .tour-narrative-nav button:last-child {
378
- justify-self: end;
379
- }
380
-
381
- .tour-narrative-nav button:disabled {
436
+ .tour-narrative-toolbar button:disabled {
382
437
  opacity: 0.35;
383
438
  cursor: default;
384
439
  }
@@ -499,31 +554,16 @@ body.tour-discussion .tour-narrative-resizer {
499
554
  }
500
555
 
501
556
  .tour-breadcrumb {
557
+ flex: 1 1 auto;
502
558
  min-width: 0;
503
559
  color: var(--tour-muted);
504
560
  font-family: var(--vscode-editor-font-family, monospace);
505
- text-align: center;
561
+ text-align: left;
506
562
  white-space: nowrap;
507
563
  overflow: hidden;
508
564
  text-overflow: ellipsis;
509
565
  }
510
566
 
511
- .tour-rail-sections {
512
- display: grid;
513
- flex: 1;
514
- min-height: 0;
515
- grid-template-rows: minmax(150px, 1fr) minmax(150px, 1fr);
516
- }
517
-
518
- .tour-rail-section {
519
- display: flex;
520
- flex-direction: column;
521
- overflow: hidden;
522
- min-height: 0;
523
- }
524
-
525
- .tour-rail-section + .tour-rail-section { border-top: 1px solid var(--tour-border); }
526
-
527
567
  .tour-rail-heading {
528
568
  display: flex;
529
569
  align-items: center;
@@ -634,15 +674,8 @@ body.tour-discussion .tour-narrative-resizer {
634
674
 
635
675
  .tour-file.is-omitted .tour-file-meta { color: #d7aa7b; }
636
676
 
637
- .tour-chapter-title {
638
- margin: 15px 10px 7px;
639
- color: var(--tour-muted);
640
- font-weight: 750;
641
- letter-spacing: 0.09em;
642
- text-transform: uppercase;
643
- }
644
-
645
677
  .tour-scene {
678
+ box-sizing: border-box;
646
679
  display: grid;
647
680
  width: 100%;
648
681
  grid-template-columns: 24px minmax(0, 1fr);
@@ -651,6 +684,7 @@ body.tour-discussion .tour-narrative-resizer {
651
684
  padding: 9px 10px;
652
685
  color: #e5e7f0;
653
686
  border: 1px solid transparent;
687
+ border-left-width: 2px;
654
688
  border-radius: 7px;
655
689
  background: transparent;
656
690
  text-align: left;
@@ -661,11 +695,6 @@ body.tour-discussion .tour-narrative-resizer {
661
695
  background: rgba(255, 255, 255, 0.045);
662
696
  }
663
697
 
664
- .tour-scene.is-active {
665
- border-color: rgba(128, 117, 255, 0.44);
666
- background: linear-gradient(90deg, rgba(101, 83, 255, 0.25), rgba(101, 83, 255, 0.07));
667
- }
668
-
669
698
  .tour-scene-number {
670
699
  padding-top: 1px;
671
700
  color: var(--tour-muted);
@@ -755,28 +784,57 @@ body.tour-discussion .tour-narrative-resizer {
755
784
  line-height: 1.35;
756
785
  }
757
786
 
758
- .tour-narrative-layout {
759
- display: grid;
760
- grid-template-columns: minmax(0, 1fr) minmax(300px, 430px);
761
- gap: 18px 24px;
787
+ .tour-reading-item {
788
+ box-sizing: border-box;
789
+ min-width: 0;
790
+ padding: 9px 12px 11px 14px;
791
+ overflow-wrap: anywhere;
792
+ border-left: 2px solid transparent;
762
793
  }
763
794
 
764
- .tour-narrative-prose,
765
- .tour-narrative-side {
766
- min-width: 0;
795
+ .tour-reading-item + .tour-reading-item {
796
+ margin-top: 2px;
767
797
  }
768
798
 
769
- .tour-narrative-prose {
770
- display: flex;
771
- flex-direction: column;
772
- gap: 6px;
799
+ .tour-reading-item.is-active {
800
+ border-left-color: rgba(169, 159, 255, 0.72);
773
801
  }
774
802
 
775
- .tour-narrative-side {
776
- display: flex;
777
- flex-direction: column;
778
- gap: 10px;
779
- align-self: start;
803
+ .tour-reading-item h1,
804
+ .tour-reading-item h2,
805
+ .tour-reading-item h3 {
806
+ margin: 0 0 8px;
807
+ line-height: 1.3;
808
+ text-wrap: balance;
809
+ }
810
+
811
+ .tour-reading-item[data-reading-kind="title"] h1 {
812
+ color: #fff;
813
+ font-size: 22px;
814
+ font-weight: 750;
815
+ }
816
+
817
+ .tour-reading-item[data-reading-kind="chapter"] h2 {
818
+ color: var(--tour-accent-bright);
819
+ font-size: 16px;
820
+ font-weight: 750;
821
+ }
822
+
823
+ .tour-reading-item[data-reading-kind="scene"] h2 {
824
+ color: #fff;
825
+ font-size: 20px;
826
+ font-weight: 700;
827
+ }
828
+
829
+ .tour-reading-item[data-reading-kind="step"] h3,
830
+ .tour-reading-item .tour-step-title {
831
+ color: #fff;
832
+ font-size: 18px;
833
+ font-weight: 700;
834
+ }
835
+
836
+ #tour-narrative-content > .tour-reading-item:last-child {
837
+ min-height: max(0px, var(--tour-reading-viewport, 0px));
780
838
  }
781
839
 
782
840
  .tour-narrative-chapter {
@@ -789,7 +847,7 @@ body.tour-discussion .tour-narrative-resizer {
789
847
 
790
848
  .tour-narrative h2 {
791
849
  margin: 0 0 7px;
792
- font-size: 19px;
850
+ font-size: 20px;
793
851
  text-wrap: balance;
794
852
  }
795
853
 
@@ -831,21 +889,73 @@ body.tour-discussion .tour-narrative-resizer {
831
889
  background: rgba(255, 255, 255, 0.015);
832
890
  }
833
891
 
834
- .tour-step {
835
- box-sizing: border-box;
836
- padding: 11px 13px 11px 15px;
837
- border-left: 2px solid rgba(166, 140, 255, 0.46);
838
- background: rgba(255, 255, 255, 0.02);
839
- }
840
-
841
- .tour-step[hidden],
842
892
  .tour-step-requirement[hidden],
843
893
  .tour-connection[hidden] {
844
894
  display: none;
845
895
  }
846
896
 
847
- .tour-step-title { color: #fff; font-size: 13px; font-weight: 750; }
848
- .tour-step-body { margin: 3px 0 0; color: var(--tour-body); line-height: 1.45; }
897
+ .tour-step-body { margin: 8px 0 0; max-width: 85ch; color: var(--tour-body); font-size: 15px; line-height: 1.6; }
898
+
899
+ .tour-step-context {
900
+ margin: 0 0 9px;
901
+ }
902
+
903
+ .tour-step-context > summary {
904
+ display: flex;
905
+ align-items: center;
906
+ min-width: 0;
907
+ gap: 6px;
908
+ padding: 4px 0;
909
+ overflow-wrap: anywhere;
910
+ color: var(--tour-muted);
911
+ font-size: 13px;
912
+ line-height: 1.4;
913
+ cursor: pointer;
914
+ list-style: none;
915
+ }
916
+
917
+ .tour-step-context > summary::before {
918
+ color: var(--tour-faint);
919
+ content: "▸";
920
+ }
921
+
922
+ .tour-step-context[open] > summary::before {
923
+ content: "▾";
924
+ }
925
+
926
+ .tour-step-context > summary::-webkit-details-marker {
927
+ display: none;
928
+ }
929
+
930
+ .tour-step-context > summary::marker {
931
+ content: "";
932
+ }
933
+
934
+ .tour-step-context > summary:hover,
935
+ .tour-step-context > summary:focus-visible {
936
+ color: #fff;
937
+ }
938
+
939
+ .tour-step-context > summary:focus-visible {
940
+ outline: 2px solid var(--tour-accent-bright);
941
+ outline-offset: 2px;
942
+ }
943
+
944
+ .tour-step-context-body {
945
+ margin: 2px 0 8px;
946
+ padding: 7px 0 3px 12px;
947
+ color: var(--tour-muted);
948
+ border-left: 1px solid rgba(169, 159, 255, 0.28);
949
+ font-size: 13px;
950
+ line-height: 1.45;
951
+ }
952
+
953
+ .tour-step-context-body .tour-narrative-summary,
954
+ .tour-step-context-body .tour-narrative-bullets,
955
+ .tour-step-context-body .tour-narrative-tags,
956
+ .tour-step-context-body .tour-narrative-takeaway {
957
+ color: inherit;
958
+ }
849
959
 
850
960
  .tour-step-requirement {
851
961
  display: flex;
@@ -891,173 +1001,396 @@ body.tour-discussion .tour-narrative-resizer {
891
1001
  font-family: var(--vscode-editor-font-family, monospace);
892
1002
  }
893
1003
 
894
- body.tour-discussion .tour-narrative {
895
- display: block;
896
- bottom: 0;
897
- height: auto;
898
- padding: clamp(48px, 10vh, 100px) clamp(44px, 8vw, 120px);
1004
+ .tour-step-code {
1005
+ display: flex;
1006
+ flex-wrap: wrap;
1007
+ gap: 7px 10px;
1008
+ align-items: center;
1009
+ margin-top: 10px;
899
1010
  }
900
1011
 
901
- body.tour-discussion .tour-narrative-nav {
902
- margin-bottom: clamp(22px, 4vh, 36px);
1012
+ .tour-step-code[hidden] {
1013
+ display: none;
903
1014
  }
904
1015
 
905
- body.tour-discussion .tour-narration-controls {
906
- max-width: 1000px;
907
- margin-bottom: clamp(18px, 3vh, 28px);
1016
+ .tour-step-code-location {
1017
+ flex: 1 1 12rem;
1018
+ min-width: 0;
1019
+ overflow-wrap: anywhere;
1020
+ color: var(--tour-faint);
1021
+ font-family: var(--vscode-editor-font-family, monospace);
1022
+ white-space: normal;
908
1023
  }
909
1024
 
910
- body.tour-discussion .tour-narrative-layout {
911
- display: block;
1025
+ .tour-show-in-code {
1026
+ flex: none;
1027
+ padding: 4px 8px;
1028
+ color: var(--tour-accent-bright);
1029
+ border: 1px solid rgba(169, 159, 255, 0.35);
1030
+ border-radius: 5px;
1031
+ background: rgba(169, 159, 255, 0.07);
1032
+ cursor: pointer;
1033
+ font: inherit;
1034
+ }
1035
+
1036
+ .tour-show-in-code:hover,
1037
+ .tour-show-in-code:focus-visible {
1038
+ color: #fff;
1039
+ border-color: rgba(169, 159, 255, 0.7);
1040
+ background: rgba(169, 159, 255, 0.14);
1041
+ outline: none;
1042
+ }
1043
+
1044
+ .tour-commit-oid {
1045
+ margin-right: 6px;
1046
+ color: var(--tour-accent-bright);
1047
+ font-family: var(--vscode-editor-font-family, monospace);
1048
+ }
1049
+
1050
+ /* Keep the complete reading order in one scrollable narrative viewport. */
1051
+ .tour-narrative-content {
1052
+ flex: 1 1 auto;
1053
+ min-height: 0;
1054
+ overflow-x: hidden;
1055
+ overflow-y: auto;
1056
+ padding-right: 8px;
1057
+ }
1058
+
1059
+ .tour-audio-settings > summary, .tour-details > summary {
1060
+ cursor: pointer; color: var(--tour-muted); padding: 5px 0; line-height: 1.5;
1061
+ }
1062
+ .tour-audio-settings > summary:hover, .tour-details > summary:hover { color: #fff; }
1063
+ .tour-audio-settings > summary:focus-visible,
1064
+ .tour-details > summary:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 2px; }
1065
+ .tour-audio-settings > summary[hidden] { display: none; }
1066
+ .tour-narration-dock {
1067
+ display: flex;
1068
+ align-items: center;
1069
+ gap: 6px;
1070
+ margin-left: auto;
1071
+ min-width: 0;
1072
+ }
1073
+ .tour-audio-settings { min-width: 0; }
1074
+ .tour-audio-settings[hidden] { display: none; }
1075
+ .tour-narration-dock .tour-narration-controls {
1076
+ margin: 0;
1077
+ padding: 0;
1078
+ border: 0;
1079
+ background: none;
1080
+ }
1081
+ .tour-narration-dock #tour-listen {
1082
+ display: inline-flex;
1083
+ align-items: center;
1084
+ gap: 5px;
1085
+ color: var(--tour-accent-bright);
1086
+ }
1087
+ .tour-narration-dock #tour-listen svg { width: 12px; height: 12px; fill: currentColor; }
1088
+ .tour-narration-dock #tour-narration { flex-shrink: 0; }
1089
+ .tour-narration-dock #tour-narration-voice { max-width: 150px; }
1090
+ .tour-narration-dock .tour-narration-status {
1091
+ min-width: 0;
1092
+ white-space: normal;
1093
+ overflow-wrap: anywhere;
912
1094
  }
1095
+ .tour-details { margin-top: 10px; font-size: 12px; }
1096
+ .tour-details .tour-source { display: inline-block; margin-top: 8px; }
1097
+ .tour-details .tour-source[hidden] { display: none; }
1098
+ .tour-files[hidden],
1099
+ .tour-outline-children[hidden] { display: none; }
913
1100
 
914
- body.tour-discussion .tour-narrative h2 {
915
- max-width: 900px;
916
- font-size: clamp(30px, 4vw, 56px);
1101
+ .tour-outline-group {
1102
+ margin: 0 0 5px;
1103
+ border-left: 2px solid transparent;
917
1104
  }
918
1105
 
919
- body.tour-discussion .tour-narrative-summary {
920
- max-width: 980px;
921
- font-size: clamp(16px, 1.8vw, 24px);
1106
+ .tour-outline-group.has-active {
1107
+ border-left-color: rgba(169, 159, 255, 0.58);
922
1108
  }
923
1109
 
924
- body.tour-discussion .tour-narrative-bullets {
1110
+ .tour-outline-heading {
1111
+ display: flex;
1112
+ min-width: 0;
1113
+ align-items: stretch;
1114
+ }
1115
+
1116
+ .tour-outline-toggle {
1117
+ flex: 0 0 28px;
1118
+ width: 28px;
1119
+ padding: 0;
1120
+ color: var(--tour-muted);
1121
+ border: 0;
1122
+ background: transparent;
1123
+ cursor: pointer;
1124
+ font: inherit;
1125
+ line-height: 1.2;
1126
+ text-align: center;
1127
+ }
1128
+
1129
+ .tour-outline-toggle:hover,
1130
+ .tour-outline-toggle:focus-visible {
1131
+ color: #fff;
1132
+ background: rgba(255, 255, 255, 0.045);
1133
+ }
1134
+
1135
+ .tour-outline-toggle:focus-visible {
1136
+ outline: 2px solid var(--tour-accent-bright);
1137
+ outline-offset: -2px;
1138
+ }
1139
+
1140
+ .tour-outline-heading > .tour-scene,
1141
+ .tour-outline-heading > .tour-chapter-link {
1142
+ flex: 1 1 auto;
1143
+ min-width: 0;
1144
+ }
1145
+
1146
+ .tour-outline-children {
925
1147
  display: grid;
926
- max-width: 1000px;
927
- gap: 10px;
928
- margin-top: 24px;
929
- font-size: 15px;
1148
+ gap: 3px;
1149
+ margin: 2px 0 10px 28px;
1150
+ border-left: 1px solid var(--tour-border);
1151
+ padding-left: 9px;
930
1152
  }
931
1153
 
932
- body.tour-discussion .tour-narrative-takeaway {
933
- max-width: 620px;
934
- font-size: 14px;
1154
+ .tour-outline-step {
1155
+ box-sizing: border-box;
1156
+ border: 1px solid transparent;
1157
+ border-left: 2px solid transparent;
1158
+ border-radius: 5px;
1159
+ background: none;
1160
+ color: var(--tour-muted);
1161
+ font: 12px/1.5 var(--tour-body-font);
1162
+ text-align: left;
1163
+ padding: 8px 10px 8px 9px;
1164
+ cursor: pointer;
1165
+ overflow-wrap: anywhere;
935
1166
  }
1167
+ .tour-outline-step:hover { background: rgba(255,255,255,.05); }
1168
+ .tour-outline-step.is-active { border-left-color: rgba(169,159,255,.72); }
1169
+ .tour-outline-step:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 1px; }
936
1170
 
937
- .tour-commit-oid {
938
- margin-right: 6px;
939
- color: var(--tour-accent-bright);
940
- font-family: var(--vscode-editor-font-family, monospace);
1171
+ .tour-chapter-link {
1172
+ display: block;
1173
+ box-sizing: border-box;
1174
+ min-width: 0;
1175
+ padding: 8px 10px;
1176
+ overflow-wrap: anywhere;
1177
+ color: var(--tour-muted);
1178
+ border: 1px solid transparent;
1179
+ border-left: 2px solid transparent;
1180
+ border-radius: 7px;
1181
+ background: transparent;
1182
+ text-align: left;
1183
+ cursor: pointer;
1184
+ font: inherit;
1185
+ }
1186
+
1187
+ .tour-chapter-link:hover {
1188
+ background: rgba(255, 255, 255, 0.045);
1189
+ }
1190
+
1191
+ .tour-chapter-link.is-active,
1192
+ .tour-scene.is-active {
1193
+ border-left-color: rgba(169, 159, 255, 0.72);
1194
+ }
1195
+
1196
+ .tour-chapter-link:focus-visible {
1197
+ outline: 2px solid var(--tour-accent-bright);
1198
+ outline-offset: 1px;
941
1199
  }
942
1200
 
1201
+ #tour-listen { display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
1202
+ #tour-listen svg { width: 14px; height: 14px; fill: currentColor; }
1203
+
943
1204
  @media (max-width: 1100px) {
944
1205
  :root {
945
1206
  --tour-rail-width: 285px;
946
- --tour-narrative-height: 380px;
1207
+ --tour-narrative-height: min(38vh, 360px);
947
1208
  }
948
1209
 
949
- .tour-narrative-layout {
950
- grid-template-columns: minmax(0, 1fr);
951
- }
952
1210
  }
953
1211
 
954
- @media (max-width: 720px) {
955
- :root {
956
- --tour-rail-height: clamp(190px, 28vh, 260px);
957
- --tour-rail-width: 0px;
958
- --tour-narrative-height: clamp(300px, 42vh, 380px);
959
- }
960
-
961
- body.tour-mode {
962
- --tour-rail-width: 0px;
1212
+ @media (prefers-reduced-motion: reduce) {
1213
+ .tour-narration-segment {
1214
+ transition: none;
963
1215
  }
1216
+ }
964
1217
 
965
- .tour-shell {
966
- inset: 0 0 auto;
967
- display: grid;
968
- width: 100%;
969
- height: var(--tour-rail-height);
970
- grid-template-columns: minmax(190px, 0.85fr) minmax(0, 1.15fr);
971
- grid-template-rows: auto minmax(0, 1fr) auto;
972
- border-right: 0;
973
- border-bottom: 1px solid var(--tour-border);
974
- box-shadow: 0 16px 36px rgba(0, 0, 0, 0.22);
975
- }
1218
+ /* Exploration shares the evidence viewer, while both authored tours keep narration. */
1219
+ .tour-mode-label { color: var(--tour-muted); font-size: 12px; }
1220
+ .tour-mode-tabs { display: flex; flex-wrap: wrap; gap: 5px; }
1221
+ .tour-mode-tabs button { padding: 5px 8px; border: 1px solid var(--tour-border); border-radius: 5px; background: var(--tour-surface); color: var(--tour-body); font: inherit; font-size: 12px; cursor: pointer; }
1222
+ .tour-mode-tabs button:hover { border-color: var(--tour-accent-bright); }
1223
+ .tour-mode-tabs button.is-active { color: #fff; border-color: var(--tour-accent-bright); background: rgba(169, 159, 255, 0.13); }
1224
+ .tour-mode-tabs button:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 2px; }
1225
+ .tour-mode-description { margin: 2px 0; color: var(--tour-muted); font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }
1226
+ .tour-evidence-controls { display: grid; gap: 6px; }
1227
+ .tour-evidence-controls[hidden] { display: none; }
1228
+ .tour-evidence-actions { display: flex; flex-wrap: wrap; gap: 6px; }
1229
+ .tour-evidence-actions button { padding: 5px 8px; border: 1px solid var(--tour-border); border-radius: 5px; background: var(--tour-surface); color: var(--tour-body); font: inherit; font-size: 12px; cursor: pointer; }
1230
+ .tour-evidence-actions button:hover { border-color: var(--tour-accent-bright); }
1231
+ .tour-evidence-actions button:disabled { opacity: .5; cursor: default; }
1232
+ #tour-compare-scope { font-size: 12px; overflow-wrap: anywhere; }
1233
+ body.tour-derived-mode .tour-search { display: none; }
1234
+ body.tour-derived-mode .tour-overview { flex-shrink: 0; }
1235
+ body.tour-derived-mode .tour-shell { overflow-y: auto; }
1236
+
1237
+ /* File inspection remains nested beneath the narrated directory overview. */
1238
+ .tour-directory-breadcrumb {
1239
+ display: flex;
1240
+ align-items: center;
1241
+ flex-wrap: wrap;
1242
+ gap: 8px;
1243
+ padding-block: 8px;
1244
+ font: 12px var(--tour-body-font);
1245
+ color: var(--tour-muted);
1246
+ }
1247
+ .tour-directory-breadcrumb[hidden],
1248
+ .tour-directory-breadcrumb [hidden],
1249
+ body.tour-directory-overview #directory-return-toolbar,
1250
+ body.tour-directory-file-open #file-info { display: none; }
1251
+ .tour-directory-breadcrumb button {
1252
+ border: 0;
1253
+ border-radius: 4px;
1254
+ padding: 4px 6px;
1255
+ background: transparent;
1256
+ color: var(--tour-accent-bright);
1257
+ font: inherit;
1258
+ cursor: pointer;
1259
+ }
1260
+ .tour-directory-breadcrumb button:hover { background: rgba(255, 255, 255, 0.07); }
1261
+ .tour-directory-breadcrumb button:focus-visible { outline: 2px solid var(--tour-accent-bright); }
1262
+ .tour-directory-file { overflow-wrap: anywhere; color: var(--tour-body); }
1263
+ .tour-directory-narration-context { margin-left: auto; color: var(--tour-faint); }
976
1264
 
977
- .tour-sidebar-resizer {
978
- display: none;
979
- }
1265
+ /* Present uses one task navigator; secondary tools no longer compete for rail space. */
1266
+ .tour-overview {
1267
+ flex: 0 0 auto;
1268
+ padding: 16px 44px 12px 16px;
1269
+ }
980
1270
 
981
- body.tour-sidebar-hidden {
982
- --tour-rail-height: 0px;
983
- }
1271
+ .tour-overview h1 { margin-bottom: 6px; font-size: 18px; }
1272
+ .tour-mode-controls { margin: 8px 0 0; }
1273
+ .tour-review-toggle { margin-top: 8px; }
1274
+ .tour-details { margin-top: 8px; }
984
1275
 
985
- .tour-overview {
986
- grid-row: 1 / span 3;
987
- overflow: auto;
988
- padding: 16px;
989
- border-right: 1px solid var(--tour-border);
990
- border-bottom: 0;
991
- }
1276
+ .tour-navigator-tabs {
1277
+ display: grid;
1278
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1279
+ gap: 4px;
1280
+ padding: 8px;
1281
+ border-bottom: 1px solid var(--tour-border);
1282
+ }
992
1283
 
993
- .tour-overview h1 {
994
- font-size: 17px;
995
- }
1284
+ .tour-navigator-tabs button {
1285
+ min-width: 0;
1286
+ padding: 7px 5px;
1287
+ overflow: hidden;
1288
+ color: var(--tour-muted);
1289
+ border: 1px solid transparent;
1290
+ border-radius: 5px;
1291
+ background: transparent;
1292
+ font: inherit;
1293
+ text-overflow: ellipsis;
1294
+ white-space: nowrap;
1295
+ cursor: pointer;
1296
+ }
996
1297
 
997
- .tour-search {
998
- grid-column: 2;
999
- grid-row: 1;
1000
- padding: 7px 8px 4px;
1001
- }
1298
+ .tour-navigator-tabs button:hover { background: rgba(255, 255, 255, 0.05); }
1299
+ .tour-navigator-tabs button.is-active { color: #fff; border-color: var(--tour-border); background: rgba(169, 159, 255, 0.13); }
1300
+ .tour-navigator-tabs button:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 1px; }
1002
1301
 
1003
- .tour-search-results { max-height: 72px; }
1302
+ .tour-navigator-content,
1303
+ .tour-navigator-panel,
1304
+ .tour-commits-host {
1305
+ display: flex;
1306
+ flex: 1;
1307
+ min-height: 0;
1308
+ overflow: hidden;
1309
+ }
1004
1310
 
1005
- .tour-rail-sections {
1006
- grid-column: 2;
1007
- grid-row: 2;
1008
- }
1311
+ .tour-navigator-panel { flex-direction: column; }
1312
+ .tour-navigator-panel[hidden] { display: none; }
1313
+ .tour-search-disclosure { flex: 0 0 auto; border-bottom: 1px solid var(--tour-border); }
1314
+ .tour-search-disclosure > summary { padding: 8px 12px; color: var(--tour-muted); cursor: pointer; }
1315
+ .tour-search-disclosure > summary:hover { color: #fff; }
1316
+ .tour-search-disclosure > summary:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: -2px; }
1317
+ .tour-search-disclosure .tour-search { border-bottom: 0; }
1318
+ .tour-scenes, .tour-files { min-height: 0; }
1319
+ .tour-evidence-controls { flex: 0 0 auto; padding: 8px; border-bottom: 1px solid var(--tour-border); }
1320
+ .tour-commits-host { flex-direction: column; }
1321
+ .tour-commits-section { flex: 0 0 auto; max-height: 34%; }
1009
1322
 
1010
- .tour-commits-section {
1011
- grid-column: 2;
1012
- grid-row: 3;
1013
- max-height: 72px;
1014
- }
1323
+ #history-rail.present-navigation-rail {
1324
+ width: 100%;
1325
+ min-width: 0;
1326
+ flex: 1 1 auto;
1327
+ padding: 0;
1328
+ border: 0;
1329
+ background: transparent;
1330
+ }
1015
1331
 
1016
- .tour-narrative {
1017
- top: var(--tour-rail-height);
1018
- left: 0;
1019
- padding: 16px 18px;
1020
- }
1332
+ .present-navigation-rail .history-rail-tabs { padding: 8px 8px 4px; }
1333
+ .present-navigation-rail .history-rail-tabs[hidden] { display: none; }
1334
+ .present-navigation-rail .history-rail-list { padding: 4px 8px 10px; }
1021
1335
 
1022
- .tour-narrative-resizer {
1023
- top: calc(var(--tour-rail-height) + var(--tour-narrative-height) - 4px);
1024
- left: 0;
1025
- }
1336
+ /* Narrative remains a stable viewport above the evidence. */
1337
+ .tour-narrative {
1338
+ height: min(38vh, 360px);
1339
+ max-height: none;
1340
+ padding: 10px 18px 12px;
1341
+ }
1026
1342
 
1027
- body.tour-mode #container {
1028
- width: 100vw;
1029
- height: calc(100vh - var(--tour-rail-height) - var(--tour-narrative-height));
1030
- margin-top: calc(var(--tour-rail-height) + var(--tour-narrative-height));
1031
- margin-left: 0;
1032
- }
1343
+ .tour-narrative-toolbar { margin-bottom: 6px; padding-bottom: 6px; }
1344
+ .tour-narrative-content { flex: 1 1 auto; }
1033
1345
 
1034
- body.tour-discussion .tour-narrative {
1035
- top: var(--tour-rail-height);
1036
- padding: clamp(28px, 7vh, 56px) 24px;
1037
- }
1346
+ @media (max-width: 720px) {
1347
+ :root { --tour-rail-width: 0px; }
1038
1348
 
1039
- .tour-narrative-nav {
1040
- gap: 6px;
1349
+ .tour-shell {
1350
+ inset: 0 auto 0 0;
1351
+ display: flex;
1352
+ width: min(88vw, 340px);
1353
+ height: 100vh;
1354
+ border-right: 1px solid var(--tour-border);
1355
+ border-bottom: 0;
1356
+ box-shadow: 18px 0 45px rgba(0, 0, 0, 0.34);
1041
1357
  }
1042
1358
 
1043
- .tour-narrative-nav button {
1044
- min-width: 64px;
1045
- padding-inline: 7px;
1359
+ .tour-overview {
1360
+ overflow: visible;
1361
+ padding: 14px 44px 10px 14px;
1362
+ border-right: 0;
1363
+ border-bottom: 1px solid var(--tour-border);
1046
1364
  }
1047
1365
 
1048
- .tour-narration-controls select {
1049
- max-width: 150px;
1050
- }
1366
+ .tour-sidebar-resizer { display: none; }
1367
+ .tour-narrative { top: 0; left: 0; height: min(38vh, 360px); padding: 10px 14px 12px; }
1368
+ .tour-narrative-toolbar { gap: 6px; }
1369
+ .tour-narration-controls select { max-width: 150px; }
1370
+ .tour-narration-status { width: 100%; margin-left: 0; text-align: left; }
1051
1371
 
1052
- .tour-narration-status {
1053
- width: 100%;
1372
+ body.tour-mode #container {
1373
+ width: 100vw;
1374
+ height: calc(100vh - var(--tour-narrative-height));
1375
+ margin-top: var(--tour-narrative-height);
1054
1376
  margin-left: 0;
1055
- text-align: left;
1056
1377
  }
1057
1378
  }
1058
-
1059
- @media (prefers-reduced-motion: reduce) {
1060
- .tour-narration-segment {
1061
- transition: none;
1062
- }
1379
+ .tour-commit-legend {
1380
+ padding: 6px 12px;
1381
+ margin: 0;
1382
+ font-size: 12px;
1383
+ opacity: .7;
1384
+ display: flex;
1385
+ flex-wrap: wrap;
1386
+ gap: 4px 12px;
1387
+ }
1388
+ .tour-commit-legend > span { white-space: nowrap; }
1389
+ .tour-range-swatch {
1390
+ display: inline-block;
1391
+ width: 3px;
1392
+ height: 10px;
1393
+ margin-right: 5px;
1394
+ border-radius: 2px;
1395
+ background: var(--bygone-tour-range-color, #a99bf5);
1063
1396
  }