@davmash/bygone 0.8.14 → 0.9.2

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,9 +7,16 @@
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
+ .tour-mode-controls { display: grid; gap: 6px; margin: 12px 0; }
14
+ .tour-mode-controls[hidden], .tour-mode-controls [hidden] { display: none; }
15
+ .tour-mode-controls select { width: 100%; min-width: 0; padding: 6px; color: var(--tour-body); background: var(--tour-surface); border: 1px solid var(--tour-border); border-radius: 4px; font: inherit; }
16
+ #tour-mode-status { color: var(--tour-muted); }
17
+ body.tour-derived-mode { --tour-narrative-height: 0px; }
18
+ body.tour-derived-mode #tour-narrative { display: none; }
19
+
13
20
  .tour-shell {
14
21
  position: fixed;
15
22
  inset: 0 auto 0 0;
@@ -30,6 +37,53 @@
30
37
  display: none;
31
38
  }
32
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
+
33
87
  .tour-sidebar-hide,
34
88
  .tour-sidebar-show {
35
89
  border: 1px solid var(--tour-border);
@@ -110,10 +164,6 @@ body.tour-mode #container {
110
164
  margin-top: var(--tour-narrative-height);
111
165
  }
112
166
 
113
- body.tour-mode.tour-discussion #container {
114
- visibility: hidden;
115
- }
116
-
117
167
  .tour-overview {
118
168
  position: relative;
119
169
  padding: 24px 46px 18px 22px;
@@ -121,12 +171,42 @@ body.tour-mode.tour-discussion #container {
121
171
  }
122
172
 
123
173
  .tour-overview h1 {
174
+ display: flex;
175
+ align-items: center;
176
+ min-width: 0;
124
177
  margin: 0 0 10px;
125
178
  font-size: 20px;
126
179
  line-height: 1.25;
127
180
  text-wrap: balance;
128
181
  }
129
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
+
130
210
  .tour-source {
131
211
  display: inline-block;
132
212
  margin-bottom: 10px;
@@ -134,6 +214,10 @@ body.tour-mode.tour-discussion #container {
134
214
  text-decoration: none;
135
215
  }
136
216
 
217
+ .tour-source[hidden] {
218
+ display: none;
219
+ }
220
+
137
221
  .tour-source:hover {
138
222
  color: #fff;
139
223
  }
@@ -158,6 +242,59 @@ body.tour-mode.tour-discussion #container {
158
242
  white-space: nowrap;
159
243
  }
160
244
 
245
+ .tour-authoring-coverage {
246
+ display: grid;
247
+ gap: 8px;
248
+ margin-top: 12px;
249
+ }
250
+
251
+ .tour-authoring-coverage[hidden] {
252
+ display: none;
253
+ }
254
+
255
+ .tour-coverage-item {
256
+ display: grid;
257
+ gap: 5px;
258
+ padding-left: 8px;
259
+ border-left: 2px solid var(--tour-accent-bright);
260
+ }
261
+
262
+ .tour-coverage-item[data-metric="assignment"] {
263
+ border-left-color: #74d6ad;
264
+ }
265
+
266
+ .tour-coverage-heading {
267
+ display: flex;
268
+ gap: 8px;
269
+ justify-content: space-between;
270
+ color: var(--tour-muted);
271
+ line-height: 1.35;
272
+ }
273
+
274
+ .tour-coverage-heading strong {
275
+ flex: none;
276
+ color: var(--tour-body);
277
+ font-weight: 600;
278
+ }
279
+
280
+ .tour-coverage-meter {
281
+ height: 3px;
282
+ overflow: hidden;
283
+ border-radius: 999px;
284
+ background: rgba(255, 255, 255, 0.1);
285
+ }
286
+
287
+ .tour-coverage-meter span {
288
+ display: block;
289
+ height: 100%;
290
+ border-radius: inherit;
291
+ background: var(--tour-accent-bright);
292
+ }
293
+
294
+ .tour-coverage-item[data-metric="assignment"] .tour-coverage-meter span {
295
+ background: #74d6ad;
296
+ }
297
+
161
298
  .tour-search {
162
299
  padding: 10px 12px;
163
300
  border-bottom: 1px solid var(--tour-border);
@@ -236,12 +373,14 @@ body.tour-mode.tour-discussion #container {
236
373
  right: 0;
237
374
  left: var(--tour-rail-width);
238
375
  z-index: 90;
239
- height: var(--tour-narrative-height);
376
+ height: min(38vh, 360px);
377
+ min-height: 0;
378
+ max-height: none;
240
379
  box-sizing: border-box;
241
380
  display: flex;
242
381
  flex-direction: column;
243
- overflow: auto;
244
- padding: 20px 26px 18px;
382
+ overflow: hidden;
383
+ padding: 12px 24px 16px;
245
384
  color: #f5f6fb;
246
385
  border-bottom: 1px solid var(--tour-border);
247
386
  background: #151821;
@@ -253,68 +392,42 @@ body.tour-mode.tour-discussion #container {
253
392
  display: none;
254
393
  }
255
394
 
256
- .tour-narrative-resizer {
257
- position: fixed;
258
- z-index: 120;
259
- top: calc(var(--tour-narrative-height) - 4px);
260
- right: 0;
261
- left: var(--tour-rail-width);
262
- height: 8px;
263
- cursor: row-resize;
264
- touch-action: none;
265
- }
266
-
267
- .tour-narrative-resizer:hover,
268
- .tour-narrative-resizer:focus-visible,
269
- body.is-resizing-tour-narrative .tour-narrative-resizer {
270
- background: rgba(169, 159, 255, 0.75);
271
- outline: none;
272
- }
273
-
274
- body:not(.tour-mode) .tour-narrative-resizer,
275
- body.tour-discussion .tour-narrative-resizer {
276
- display: none;
277
- }
278
-
279
- .tour-narrative-nav {
280
- display: grid;
281
- grid-template-columns: auto minmax(0, 1fr) auto;
395
+ .tour-narrative-toolbar {
396
+ display: flex;
397
+ min-width: 0;
282
398
  gap: 12px;
283
399
  align-items: center;
284
- margin-bottom: 14px;
285
- padding: 0 0 10px;
400
+ flex-shrink: 0;
401
+ margin: 0 0 10px;
402
+ padding: 0 0 8px;
286
403
  border-bottom: 1px solid var(--tour-border);
287
404
  background: rgba(255, 255, 255, 0.025);
288
405
  }
289
406
 
290
- .tour-narrative-nav button {
291
- min-width: 72px;
292
- padding: 7px 10px;
407
+ .tour-narrative-toolbar button {
408
+ padding: 5px 9px;
293
409
  color: var(--tour-muted);
294
- border: 1px solid transparent;
295
- border-radius: 6px;
296
- background: transparent;
410
+ border: 1px solid var(--tour-border);
411
+ border-radius: 5px;
412
+ background: rgba(255, 255, 255, 0.035);
297
413
  cursor: pointer;
298
- transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease, box-shadow 120ms ease;
414
+ font: inherit;
299
415
  }
300
416
 
301
- .tour-narrative-nav button:hover,
302
- .tour-narrative-nav button:focus-visible {
417
+ .tour-narrative-toolbar button:hover:not(:disabled),
418
+ .tour-narrative-toolbar button:focus-visible,
419
+ .tour-narrative-toolbar button[aria-pressed="true"] {
303
420
  color: #fff;
304
- border-color: var(--tour-border);
305
- background: rgba(255, 255, 255, 0.05);
421
+ border-color: rgba(169, 159, 255, 0.55);
422
+ background: rgba(169, 159, 255, 0.13);
306
423
  }
307
424
 
308
- .tour-narrative-nav button:focus-visible {
425
+ .tour-narrative-toolbar button:focus-visible {
309
426
  outline: none;
310
427
  box-shadow: 0 0 0 2px rgba(128, 117, 255, 0.28);
311
428
  }
312
429
 
313
- .tour-narrative-nav button:last-child {
314
- justify-self: end;
315
- }
316
-
317
- .tour-narrative-nav button:disabled {
430
+ .tour-narrative-toolbar button:disabled {
318
431
  opacity: 0.35;
319
432
  cursor: default;
320
433
  }
@@ -435,31 +548,16 @@ body.tour-discussion .tour-narrative-resizer {
435
548
  }
436
549
 
437
550
  .tour-breadcrumb {
551
+ flex: 1 1 auto;
438
552
  min-width: 0;
439
553
  color: var(--tour-muted);
440
554
  font-family: var(--vscode-editor-font-family, monospace);
441
- text-align: center;
555
+ text-align: left;
442
556
  white-space: nowrap;
443
557
  overflow: hidden;
444
558
  text-overflow: ellipsis;
445
559
  }
446
560
 
447
- .tour-rail-sections {
448
- display: grid;
449
- flex: 1;
450
- min-height: 0;
451
- grid-template-rows: minmax(150px, 1fr) minmax(150px, 1fr);
452
- }
453
-
454
- .tour-rail-section {
455
- display: flex;
456
- flex-direction: column;
457
- overflow: hidden;
458
- min-height: 0;
459
- }
460
-
461
- .tour-rail-section + .tour-rail-section { border-top: 1px solid var(--tour-border); }
462
-
463
561
  .tour-rail-heading {
464
562
  display: flex;
465
563
  align-items: center;
@@ -570,15 +668,8 @@ body.tour-discussion .tour-narrative-resizer {
570
668
 
571
669
  .tour-file.is-omitted .tour-file-meta { color: #d7aa7b; }
572
670
 
573
- .tour-chapter-title {
574
- margin: 15px 10px 7px;
575
- color: var(--tour-muted);
576
- font-weight: 750;
577
- letter-spacing: 0.09em;
578
- text-transform: uppercase;
579
- }
580
-
581
671
  .tour-scene {
672
+ box-sizing: border-box;
582
673
  display: grid;
583
674
  width: 100%;
584
675
  grid-template-columns: 24px minmax(0, 1fr);
@@ -587,6 +678,7 @@ body.tour-discussion .tour-narrative-resizer {
587
678
  padding: 9px 10px;
588
679
  color: #e5e7f0;
589
680
  border: 1px solid transparent;
681
+ border-left-width: 2px;
590
682
  border-radius: 7px;
591
683
  background: transparent;
592
684
  text-align: left;
@@ -597,11 +689,6 @@ body.tour-discussion .tour-narrative-resizer {
597
689
  background: rgba(255, 255, 255, 0.045);
598
690
  }
599
691
 
600
- .tour-scene.is-active {
601
- border-color: rgba(128, 117, 255, 0.44);
602
- background: linear-gradient(90deg, rgba(101, 83, 255, 0.25), rgba(101, 83, 255, 0.07));
603
- }
604
-
605
692
  .tour-scene-number {
606
693
  padding-top: 1px;
607
694
  color: var(--tour-muted);
@@ -691,28 +778,57 @@ body.tour-discussion .tour-narrative-resizer {
691
778
  line-height: 1.35;
692
779
  }
693
780
 
694
- .tour-narrative-layout {
695
- display: grid;
696
- grid-template-columns: minmax(0, 1fr) minmax(300px, 430px);
697
- gap: 18px 24px;
781
+ .tour-reading-item {
782
+ box-sizing: border-box;
783
+ min-width: 0;
784
+ padding: 9px 12px 11px 14px;
785
+ overflow-wrap: anywhere;
786
+ border-left: 2px solid transparent;
698
787
  }
699
788
 
700
- .tour-narrative-prose,
701
- .tour-narrative-side {
702
- min-width: 0;
789
+ .tour-reading-item + .tour-reading-item {
790
+ margin-top: 2px;
703
791
  }
704
792
 
705
- .tour-narrative-prose {
706
- display: flex;
707
- flex-direction: column;
708
- gap: 6px;
793
+ .tour-reading-item.is-active {
794
+ border-left-color: rgba(169, 159, 255, 0.72);
709
795
  }
710
796
 
711
- .tour-narrative-side {
712
- display: flex;
713
- flex-direction: column;
714
- gap: 10px;
715
- align-self: start;
797
+ .tour-reading-item h1,
798
+ .tour-reading-item h2,
799
+ .tour-reading-item h3 {
800
+ margin: 0 0 8px;
801
+ line-height: 1.3;
802
+ text-wrap: balance;
803
+ }
804
+
805
+ .tour-reading-item[data-reading-kind="title"] h1 {
806
+ color: #fff;
807
+ font-size: 22px;
808
+ font-weight: 750;
809
+ }
810
+
811
+ .tour-reading-item[data-reading-kind="chapter"] h2 {
812
+ color: var(--tour-accent-bright);
813
+ font-size: 16px;
814
+ font-weight: 750;
815
+ }
816
+
817
+ .tour-reading-item[data-reading-kind="scene"] h2 {
818
+ color: #fff;
819
+ font-size: 20px;
820
+ font-weight: 700;
821
+ }
822
+
823
+ .tour-reading-item[data-reading-kind="step"] h3,
824
+ .tour-reading-item .tour-step-title {
825
+ color: #fff;
826
+ font-size: 18px;
827
+ font-weight: 700;
828
+ }
829
+
830
+ #tour-narrative-content > .tour-reading-item:last-child {
831
+ min-height: max(0px, var(--tour-reading-viewport, 0px));
716
832
  }
717
833
 
718
834
  .tour-narrative-chapter {
@@ -725,7 +841,7 @@ body.tour-discussion .tour-narrative-resizer {
725
841
 
726
842
  .tour-narrative h2 {
727
843
  margin: 0 0 7px;
728
- font-size: 19px;
844
+ font-size: 20px;
729
845
  text-wrap: balance;
730
846
  }
731
847
 
@@ -767,20 +883,109 @@ body.tour-discussion .tour-narrative-resizer {
767
883
  background: rgba(255, 255, 255, 0.015);
768
884
  }
769
885
 
770
- .tour-step {
771
- box-sizing: border-box;
772
- padding: 11px 13px 11px 15px;
773
- border-left: 2px solid rgba(166, 140, 255, 0.46);
774
- background: rgba(255, 255, 255, 0.02);
886
+ .tour-step-requirement[hidden],
887
+ .tour-connection[hidden] {
888
+ display: none;
775
889
  }
776
890
 
777
- .tour-step[hidden],
778
- .tour-connection[hidden] {
891
+ .tour-step-body { margin: 8px 0 0; max-width: 85ch; color: var(--tour-body); font-size: 15px; line-height: 1.6; }
892
+
893
+ .tour-step-context {
894
+ margin: 0 0 9px;
895
+ }
896
+
897
+ .tour-step-context > summary {
898
+ display: flex;
899
+ align-items: center;
900
+ min-width: 0;
901
+ gap: 6px;
902
+ padding: 4px 0;
903
+ overflow-wrap: anywhere;
904
+ color: var(--tour-muted);
905
+ font-size: 13px;
906
+ line-height: 1.4;
907
+ cursor: pointer;
908
+ list-style: none;
909
+ }
910
+
911
+ .tour-step-context > summary::before {
912
+ color: var(--tour-faint);
913
+ content: "▸";
914
+ }
915
+
916
+ .tour-step-context[open] > summary::before {
917
+ content: "▾";
918
+ }
919
+
920
+ .tour-step-context > summary::-webkit-details-marker {
779
921
  display: none;
780
922
  }
781
923
 
782
- .tour-step-title { color: #fff; font-size: 13px; font-weight: 750; }
783
- .tour-step-body { margin: 3px 0 0; color: var(--tour-body); line-height: 1.45; }
924
+ .tour-step-context > summary::marker {
925
+ content: "";
926
+ }
927
+
928
+ .tour-step-context > summary:hover,
929
+ .tour-step-context > summary:focus-visible {
930
+ color: #fff;
931
+ }
932
+
933
+ .tour-step-context > summary:focus-visible {
934
+ outline: 2px solid var(--tour-accent-bright);
935
+ outline-offset: 2px;
936
+ }
937
+
938
+ .tour-step-context-body {
939
+ margin: 2px 0 8px;
940
+ padding: 7px 0 3px 12px;
941
+ color: var(--tour-muted);
942
+ border-left: 1px solid rgba(169, 159, 255, 0.28);
943
+ font-size: 13px;
944
+ line-height: 1.45;
945
+ }
946
+
947
+ .tour-step-context-body .tour-narrative-summary,
948
+ .tour-step-context-body .tour-narrative-bullets,
949
+ .tour-step-context-body .tour-narrative-tags,
950
+ .tour-step-context-body .tour-narrative-takeaway {
951
+ color: inherit;
952
+ }
953
+
954
+ .tour-step-requirement {
955
+ display: flex;
956
+ flex-wrap: wrap;
957
+ align-items: baseline;
958
+ gap: 6px;
959
+ margin-top: 4px;
960
+ color: var(--tour-muted);
961
+ line-height: 1.45;
962
+ }
963
+
964
+ .tour-requirement-chip {
965
+ padding: 1px 6px;
966
+ border: 1px solid rgba(166, 140, 255, 0.34);
967
+ border-radius: 9px;
968
+ color: var(--tour-body);
969
+ font-size: 12px;
970
+ font-weight: 700;
971
+ white-space: nowrap;
972
+ }
973
+
974
+ .tour-requirement-chip[data-status="fulfilled"] {
975
+ border-color: rgba(122, 214, 160, 0.42);
976
+ background: rgba(122, 214, 160, 0.1);
977
+ }
978
+
979
+ .tour-requirement-chip[data-status="gap"] {
980
+ border-color: rgba(240, 168, 120, 0.46);
981
+ background: rgba(240, 168, 120, 0.12);
982
+ }
983
+
984
+ .tour-requirement-meta {
985
+ flex-basis: 100%;
986
+ color: var(--tour-faint);
987
+ font-size: 12px;
988
+ }
784
989
 
785
990
  .tour-connection {
786
991
  margin-top: 7px;
@@ -790,173 +995,396 @@ body.tour-discussion .tour-narrative-resizer {
790
995
  font-family: var(--vscode-editor-font-family, monospace);
791
996
  }
792
997
 
793
- body.tour-discussion .tour-narrative {
794
- display: block;
795
- bottom: 0;
796
- height: auto;
797
- padding: clamp(48px, 10vh, 100px) clamp(44px, 8vw, 120px);
998
+ .tour-step-code {
999
+ display: flex;
1000
+ flex-wrap: wrap;
1001
+ gap: 7px 10px;
1002
+ align-items: center;
1003
+ margin-top: 10px;
798
1004
  }
799
1005
 
800
- body.tour-discussion .tour-narrative-nav {
801
- margin-bottom: clamp(22px, 4vh, 36px);
1006
+ .tour-step-code[hidden] {
1007
+ display: none;
802
1008
  }
803
1009
 
804
- body.tour-discussion .tour-narration-controls {
805
- max-width: 1000px;
806
- margin-bottom: clamp(18px, 3vh, 28px);
1010
+ .tour-step-code-location {
1011
+ flex: 1 1 12rem;
1012
+ min-width: 0;
1013
+ overflow-wrap: anywhere;
1014
+ color: var(--tour-faint);
1015
+ font-family: var(--vscode-editor-font-family, monospace);
1016
+ white-space: normal;
807
1017
  }
808
1018
 
809
- body.tour-discussion .tour-narrative-layout {
810
- display: block;
1019
+ .tour-show-in-code {
1020
+ flex: none;
1021
+ padding: 4px 8px;
1022
+ color: var(--tour-accent-bright);
1023
+ border: 1px solid rgba(169, 159, 255, 0.35);
1024
+ border-radius: 5px;
1025
+ background: rgba(169, 159, 255, 0.07);
1026
+ cursor: pointer;
1027
+ font: inherit;
1028
+ }
1029
+
1030
+ .tour-show-in-code:hover,
1031
+ .tour-show-in-code:focus-visible {
1032
+ color: #fff;
1033
+ border-color: rgba(169, 159, 255, 0.7);
1034
+ background: rgba(169, 159, 255, 0.14);
1035
+ outline: none;
1036
+ }
1037
+
1038
+ .tour-commit-oid {
1039
+ margin-right: 6px;
1040
+ color: var(--tour-accent-bright);
1041
+ font-family: var(--vscode-editor-font-family, monospace);
1042
+ }
1043
+
1044
+ /* Keep the complete reading order in one scrollable narrative viewport. */
1045
+ .tour-narrative-content {
1046
+ flex: 1 1 auto;
1047
+ min-height: 0;
1048
+ overflow-x: hidden;
1049
+ overflow-y: auto;
1050
+ padding-right: 8px;
1051
+ }
1052
+
1053
+ .tour-audio-settings > summary, .tour-details > summary {
1054
+ cursor: pointer; color: var(--tour-muted); padding: 5px 0; line-height: 1.5;
1055
+ }
1056
+ .tour-audio-settings > summary:hover, .tour-details > summary:hover { color: #fff; }
1057
+ .tour-audio-settings > summary:focus-visible,
1058
+ .tour-details > summary:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 2px; }
1059
+ .tour-audio-settings > summary[hidden] { display: none; }
1060
+ .tour-narration-dock {
1061
+ display: flex;
1062
+ align-items: center;
1063
+ gap: 6px;
1064
+ margin-left: auto;
1065
+ min-width: 0;
1066
+ }
1067
+ .tour-audio-settings { min-width: 0; }
1068
+ .tour-audio-settings[hidden] { display: none; }
1069
+ .tour-narration-dock .tour-narration-controls {
1070
+ margin: 0;
1071
+ padding: 0;
1072
+ border: 0;
1073
+ background: none;
1074
+ }
1075
+ .tour-narration-dock #tour-listen {
1076
+ display: inline-flex;
1077
+ align-items: center;
1078
+ gap: 5px;
1079
+ color: var(--tour-accent-bright);
1080
+ }
1081
+ .tour-narration-dock #tour-listen svg { width: 12px; height: 12px; fill: currentColor; }
1082
+ .tour-narration-dock #tour-narration { flex-shrink: 0; }
1083
+ .tour-narration-dock #tour-narration-voice { max-width: 150px; }
1084
+ .tour-narration-dock .tour-narration-status {
1085
+ min-width: 0;
1086
+ white-space: normal;
1087
+ overflow-wrap: anywhere;
1088
+ }
1089
+ .tour-details { margin-top: 10px; font-size: 12px; }
1090
+ .tour-details .tour-source { display: inline-block; margin-top: 8px; }
1091
+ .tour-details .tour-source[hidden] { display: none; }
1092
+ .tour-files[hidden],
1093
+ .tour-outline-children[hidden] { display: none; }
1094
+
1095
+ .tour-outline-group {
1096
+ margin: 0 0 5px;
1097
+ border-left: 2px solid transparent;
1098
+ }
1099
+
1100
+ .tour-outline-group.has-active {
1101
+ border-left-color: rgba(169, 159, 255, 0.58);
1102
+ }
1103
+
1104
+ .tour-outline-heading {
1105
+ display: flex;
1106
+ min-width: 0;
1107
+ align-items: stretch;
811
1108
  }
812
1109
 
813
- body.tour-discussion .tour-narrative h2 {
814
- max-width: 900px;
815
- font-size: clamp(30px, 4vw, 56px);
1110
+ .tour-outline-toggle {
1111
+ flex: 0 0 28px;
1112
+ width: 28px;
1113
+ padding: 0;
1114
+ color: var(--tour-muted);
1115
+ border: 0;
1116
+ background: transparent;
1117
+ cursor: pointer;
1118
+ font: inherit;
1119
+ line-height: 1.2;
1120
+ text-align: center;
816
1121
  }
817
1122
 
818
- body.tour-discussion .tour-narrative-summary {
819
- max-width: 980px;
820
- font-size: clamp(16px, 1.8vw, 24px);
1123
+ .tour-outline-toggle:hover,
1124
+ .tour-outline-toggle:focus-visible {
1125
+ color: #fff;
1126
+ background: rgba(255, 255, 255, 0.045);
821
1127
  }
822
1128
 
823
- body.tour-discussion .tour-narrative-bullets {
1129
+ .tour-outline-toggle:focus-visible {
1130
+ outline: 2px solid var(--tour-accent-bright);
1131
+ outline-offset: -2px;
1132
+ }
1133
+
1134
+ .tour-outline-heading > .tour-scene,
1135
+ .tour-outline-heading > .tour-chapter-link {
1136
+ flex: 1 1 auto;
1137
+ min-width: 0;
1138
+ }
1139
+
1140
+ .tour-outline-children {
824
1141
  display: grid;
825
- max-width: 1000px;
826
- gap: 10px;
827
- margin-top: 24px;
828
- font-size: 15px;
1142
+ gap: 3px;
1143
+ margin: 2px 0 10px 28px;
1144
+ border-left: 1px solid var(--tour-border);
1145
+ padding-left: 9px;
829
1146
  }
830
1147
 
831
- body.tour-discussion .tour-narrative-takeaway {
832
- max-width: 620px;
833
- font-size: 14px;
1148
+ .tour-outline-step {
1149
+ box-sizing: border-box;
1150
+ border: 1px solid transparent;
1151
+ border-left: 2px solid transparent;
1152
+ border-radius: 5px;
1153
+ background: none;
1154
+ color: var(--tour-muted);
1155
+ font: 12px/1.5 var(--tour-body-font);
1156
+ text-align: left;
1157
+ padding: 8px 10px 8px 9px;
1158
+ cursor: pointer;
1159
+ overflow-wrap: anywhere;
834
1160
  }
1161
+ .tour-outline-step:hover { background: rgba(255,255,255,.05); }
1162
+ .tour-outline-step.is-active { border-left-color: rgba(169,159,255,.72); }
1163
+ .tour-outline-step:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 1px; }
835
1164
 
836
- .tour-commit-oid {
837
- margin-right: 6px;
838
- color: var(--tour-accent-bright);
839
- font-family: var(--vscode-editor-font-family, monospace);
1165
+ .tour-chapter-link {
1166
+ display: block;
1167
+ box-sizing: border-box;
1168
+ min-width: 0;
1169
+ padding: 8px 10px;
1170
+ overflow-wrap: anywhere;
1171
+ color: var(--tour-muted);
1172
+ border: 1px solid transparent;
1173
+ border-left: 2px solid transparent;
1174
+ border-radius: 7px;
1175
+ background: transparent;
1176
+ text-align: left;
1177
+ cursor: pointer;
1178
+ font: inherit;
840
1179
  }
841
1180
 
1181
+ .tour-chapter-link:hover {
1182
+ background: rgba(255, 255, 255, 0.045);
1183
+ }
1184
+
1185
+ .tour-chapter-link.is-active,
1186
+ .tour-scene.is-active {
1187
+ border-left-color: rgba(169, 159, 255, 0.72);
1188
+ }
1189
+
1190
+ .tour-chapter-link:focus-visible {
1191
+ outline: 2px solid var(--tour-accent-bright);
1192
+ outline-offset: 1px;
1193
+ }
1194
+
1195
+ #tour-listen { display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
1196
+ #tour-listen svg { width: 14px; height: 14px; fill: currentColor; }
1197
+
842
1198
  @media (max-width: 1100px) {
843
1199
  :root {
844
1200
  --tour-rail-width: 285px;
845
- --tour-narrative-height: 380px;
1201
+ --tour-narrative-height: min(38vh, 360px);
846
1202
  }
847
1203
 
848
- .tour-narrative-layout {
849
- grid-template-columns: minmax(0, 1fr);
850
- }
851
1204
  }
852
1205
 
853
- @media (max-width: 720px) {
854
- :root {
855
- --tour-rail-height: clamp(190px, 28vh, 260px);
856
- --tour-rail-width: 0px;
857
- --tour-narrative-height: clamp(300px, 42vh, 380px);
858
- }
859
-
860
- body.tour-mode {
861
- --tour-rail-width: 0px;
1206
+ @media (prefers-reduced-motion: reduce) {
1207
+ .tour-narration-segment {
1208
+ transition: none;
862
1209
  }
1210
+ }
863
1211
 
864
- .tour-shell {
865
- inset: 0 0 auto;
866
- display: grid;
867
- width: 100%;
868
- height: var(--tour-rail-height);
869
- grid-template-columns: minmax(190px, 0.85fr) minmax(0, 1.15fr);
870
- grid-template-rows: auto minmax(0, 1fr) auto;
871
- border-right: 0;
872
- border-bottom: 1px solid var(--tour-border);
873
- box-shadow: 0 16px 36px rgba(0, 0, 0, 0.22);
874
- }
1212
+ /* Exploration shares the evidence viewer, while both authored tours keep narration. */
1213
+ .tour-mode-label { color: var(--tour-muted); font-size: 12px; }
1214
+ .tour-mode-tabs { display: flex; flex-wrap: wrap; gap: 5px; }
1215
+ .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; }
1216
+ .tour-mode-tabs button:hover { border-color: var(--tour-accent-bright); }
1217
+ .tour-mode-tabs button.is-active { color: #fff; border-color: var(--tour-accent-bright); background: rgba(169, 159, 255, 0.13); }
1218
+ .tour-mode-tabs button:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 2px; }
1219
+ .tour-mode-description { margin: 2px 0; color: var(--tour-muted); font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }
1220
+ .tour-evidence-controls { display: grid; gap: 6px; }
1221
+ .tour-evidence-controls[hidden] { display: none; }
1222
+ .tour-evidence-actions { display: flex; flex-wrap: wrap; gap: 6px; }
1223
+ .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; }
1224
+ .tour-evidence-actions button:hover { border-color: var(--tour-accent-bright); }
1225
+ .tour-evidence-actions button:disabled { opacity: .5; cursor: default; }
1226
+ #tour-compare-scope { font-size: 12px; overflow-wrap: anywhere; }
1227
+ body.tour-derived-mode .tour-search { display: none; }
1228
+ body.tour-derived-mode .tour-overview { flex-shrink: 0; }
1229
+ body.tour-derived-mode .tour-shell { overflow-y: auto; }
1230
+
1231
+ /* File inspection remains nested beneath the narrated directory overview. */
1232
+ .tour-directory-breadcrumb {
1233
+ display: flex;
1234
+ align-items: center;
1235
+ flex-wrap: wrap;
1236
+ gap: 8px;
1237
+ padding-block: 8px;
1238
+ font: 12px var(--tour-body-font);
1239
+ color: var(--tour-muted);
1240
+ }
1241
+ .tour-directory-breadcrumb[hidden],
1242
+ .tour-directory-breadcrumb [hidden],
1243
+ body.tour-directory-overview #directory-return-toolbar,
1244
+ body.tour-directory-file-open #file-info { display: none; }
1245
+ .tour-directory-breadcrumb button {
1246
+ border: 0;
1247
+ border-radius: 4px;
1248
+ padding: 4px 6px;
1249
+ background: transparent;
1250
+ color: var(--tour-accent-bright);
1251
+ font: inherit;
1252
+ cursor: pointer;
1253
+ }
1254
+ .tour-directory-breadcrumb button:hover { background: rgba(255, 255, 255, 0.07); }
1255
+ .tour-directory-breadcrumb button:focus-visible { outline: 2px solid var(--tour-accent-bright); }
1256
+ .tour-directory-file { overflow-wrap: anywhere; color: var(--tour-body); }
1257
+ .tour-directory-narration-context { margin-left: auto; color: var(--tour-faint); }
875
1258
 
876
- .tour-sidebar-resizer {
877
- display: none;
878
- }
1259
+ /* Present uses one task navigator; secondary tools no longer compete for rail space. */
1260
+ .tour-overview {
1261
+ flex: 0 0 auto;
1262
+ padding: 16px 44px 12px 16px;
1263
+ }
879
1264
 
880
- body.tour-sidebar-hidden {
881
- --tour-rail-height: 0px;
882
- }
1265
+ .tour-overview h1 { margin-bottom: 6px; font-size: 18px; }
1266
+ .tour-mode-controls { margin: 8px 0 0; }
1267
+ .tour-review-toggle { margin-top: 8px; }
1268
+ .tour-details { margin-top: 8px; }
883
1269
 
884
- .tour-overview {
885
- grid-row: 1 / span 3;
886
- overflow: auto;
887
- padding: 16px;
888
- border-right: 1px solid var(--tour-border);
889
- border-bottom: 0;
890
- }
1270
+ .tour-navigator-tabs {
1271
+ display: grid;
1272
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1273
+ gap: 4px;
1274
+ padding: 8px;
1275
+ border-bottom: 1px solid var(--tour-border);
1276
+ }
891
1277
 
892
- .tour-overview h1 {
893
- font-size: 17px;
894
- }
1278
+ .tour-navigator-tabs button {
1279
+ min-width: 0;
1280
+ padding: 7px 5px;
1281
+ overflow: hidden;
1282
+ color: var(--tour-muted);
1283
+ border: 1px solid transparent;
1284
+ border-radius: 5px;
1285
+ background: transparent;
1286
+ font: inherit;
1287
+ text-overflow: ellipsis;
1288
+ white-space: nowrap;
1289
+ cursor: pointer;
1290
+ }
895
1291
 
896
- .tour-search {
897
- grid-column: 2;
898
- grid-row: 1;
899
- padding: 7px 8px 4px;
900
- }
1292
+ .tour-navigator-tabs button:hover { background: rgba(255, 255, 255, 0.05); }
1293
+ .tour-navigator-tabs button.is-active { color: #fff; border-color: var(--tour-border); background: rgba(169, 159, 255, 0.13); }
1294
+ .tour-navigator-tabs button:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: 1px; }
901
1295
 
902
- .tour-search-results { max-height: 72px; }
1296
+ .tour-navigator-content,
1297
+ .tour-navigator-panel,
1298
+ .tour-commits-host {
1299
+ display: flex;
1300
+ flex: 1;
1301
+ min-height: 0;
1302
+ overflow: hidden;
1303
+ }
903
1304
 
904
- .tour-rail-sections {
905
- grid-column: 2;
906
- grid-row: 2;
907
- }
1305
+ .tour-navigator-panel { flex-direction: column; }
1306
+ .tour-navigator-panel[hidden] { display: none; }
1307
+ .tour-search-disclosure { flex: 0 0 auto; border-bottom: 1px solid var(--tour-border); }
1308
+ .tour-search-disclosure > summary { padding: 8px 12px; color: var(--tour-muted); cursor: pointer; }
1309
+ .tour-search-disclosure > summary:hover { color: #fff; }
1310
+ .tour-search-disclosure > summary:focus-visible { outline: 2px solid var(--tour-accent-bright); outline-offset: -2px; }
1311
+ .tour-search-disclosure .tour-search { border-bottom: 0; }
1312
+ .tour-scenes, .tour-files { min-height: 0; }
1313
+ .tour-evidence-controls { flex: 0 0 auto; padding: 8px; border-bottom: 1px solid var(--tour-border); }
1314
+ .tour-commits-host { flex-direction: column; }
1315
+ .tour-commits-section { flex: 0 0 auto; max-height: 34%; }
908
1316
 
909
- .tour-commits-section {
910
- grid-column: 2;
911
- grid-row: 3;
912
- max-height: 72px;
913
- }
1317
+ #history-rail.present-navigation-rail {
1318
+ width: 100%;
1319
+ min-width: 0;
1320
+ flex: 1 1 auto;
1321
+ padding: 0;
1322
+ border: 0;
1323
+ background: transparent;
1324
+ }
914
1325
 
915
- .tour-narrative {
916
- top: var(--tour-rail-height);
917
- left: 0;
918
- padding: 16px 18px;
919
- }
1326
+ .present-navigation-rail .history-rail-tabs { padding: 8px 8px 4px; }
1327
+ .present-navigation-rail .history-rail-tabs[hidden] { display: none; }
1328
+ .present-navigation-rail .history-rail-list { padding: 4px 8px 10px; }
920
1329
 
921
- .tour-narrative-resizer {
922
- top: calc(var(--tour-rail-height) + var(--tour-narrative-height) - 4px);
923
- left: 0;
924
- }
1330
+ /* Narrative remains a stable viewport above the evidence. */
1331
+ .tour-narrative {
1332
+ height: min(38vh, 360px);
1333
+ max-height: none;
1334
+ padding: 10px 18px 12px;
1335
+ }
925
1336
 
926
- body.tour-mode #container {
927
- width: 100vw;
928
- height: calc(100vh - var(--tour-rail-height) - var(--tour-narrative-height));
929
- margin-top: calc(var(--tour-rail-height) + var(--tour-narrative-height));
930
- margin-left: 0;
931
- }
1337
+ .tour-narrative-toolbar { margin-bottom: 6px; padding-bottom: 6px; }
1338
+ .tour-narrative-content { flex: 1 1 auto; }
932
1339
 
933
- body.tour-discussion .tour-narrative {
934
- top: var(--tour-rail-height);
935
- padding: clamp(28px, 7vh, 56px) 24px;
936
- }
1340
+ @media (max-width: 720px) {
1341
+ :root { --tour-rail-width: 0px; }
937
1342
 
938
- .tour-narrative-nav {
939
- gap: 6px;
1343
+ .tour-shell {
1344
+ inset: 0 auto 0 0;
1345
+ display: flex;
1346
+ width: min(88vw, 340px);
1347
+ height: 100vh;
1348
+ border-right: 1px solid var(--tour-border);
1349
+ border-bottom: 0;
1350
+ box-shadow: 18px 0 45px rgba(0, 0, 0, 0.34);
940
1351
  }
941
1352
 
942
- .tour-narrative-nav button {
943
- min-width: 64px;
944
- padding-inline: 7px;
1353
+ .tour-overview {
1354
+ overflow: visible;
1355
+ padding: 14px 44px 10px 14px;
1356
+ border-right: 0;
1357
+ border-bottom: 1px solid var(--tour-border);
945
1358
  }
946
1359
 
947
- .tour-narration-controls select {
948
- max-width: 150px;
949
- }
1360
+ .tour-sidebar-resizer { display: none; }
1361
+ .tour-narrative { top: 0; left: 0; height: min(38vh, 360px); padding: 10px 14px 12px; }
1362
+ .tour-narrative-toolbar { gap: 6px; }
1363
+ .tour-narration-controls select { max-width: 150px; }
1364
+ .tour-narration-status { width: 100%; margin-left: 0; text-align: left; }
950
1365
 
951
- .tour-narration-status {
952
- width: 100%;
1366
+ body.tour-mode #container {
1367
+ width: 100vw;
1368
+ height: calc(100vh - var(--tour-narrative-height));
1369
+ margin-top: var(--tour-narrative-height);
953
1370
  margin-left: 0;
954
- text-align: left;
955
1371
  }
956
1372
  }
957
-
958
- @media (prefers-reduced-motion: reduce) {
959
- .tour-narration-segment {
960
- transition: none;
961
- }
1373
+ .tour-commit-legend {
1374
+ padding: 6px 12px;
1375
+ margin: 0;
1376
+ font-size: 12px;
1377
+ opacity: .7;
1378
+ display: flex;
1379
+ flex-wrap: wrap;
1380
+ gap: 4px 12px;
1381
+ }
1382
+ .tour-commit-legend > span { white-space: nowrap; }
1383
+ .tour-range-swatch {
1384
+ display: inline-block;
1385
+ width: 3px;
1386
+ height: 10px;
1387
+ margin-right: 5px;
1388
+ border-radius: 2px;
1389
+ background: var(--bygone-tour-range-color, #a99bf5);
962
1390
  }