prreviewbuddy 0.83.3 → 0.85.0

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/static/shell.css CHANGED
@@ -173,6 +173,8 @@
173
173
  :root[data-theme='dark'] { color-scheme: dark; }
174
174
 
175
175
  * { box-sizing: border-box; }
176
+ /* No link in the workspace is underlined, at rest or on hover: colour says it is a link. */
177
+ a { text-decoration: none; }
176
178
 
177
179
  html, body {
178
180
  height: 100%;
@@ -758,7 +760,7 @@ body[data-server-stopped] .prb-shell { opacity: 0.55; pointer-events: none; }
758
760
  .prb-author::before { content: 'by'; color: var(--text-muted); }
759
761
  .prb-author-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
760
762
  .prb-author-handle { color: var(--text-muted); }
761
- a.prb-author:hover .prb-author-name { color: var(--text-primary); text-decoration: underline; }
763
+ a.prb-author:hover .prb-author-name { color: var(--text-primary); }
762
764
 
763
765
  .prb-pr-empty, .prb-pr-provenance, .prb-pr-truncated {
764
766
  font-size: var(--t-body);
@@ -775,7 +777,7 @@ a.prb-author:hover .prb-author-name { color: var(--text-primary); text-decoratio
775
777
  margin-bottom: 26px;
776
778
  }
777
779
  .prb-pr-provenance a { color: var(--brand); font-weight: 400; text-decoration: none; }
778
- .prb-pr-provenance a:hover { text-decoration: underline; }
780
+ .prb-pr-provenance a:hover { opacity: 0.8; }
779
781
  .prb-pr-title { color: var(--pane-ink); }
780
782
  .prb-pr-counts, .prb-pr-provenance time { color: var(--pane-ink-faint); font-size: var(--t-meta); }
781
783
 
@@ -846,7 +848,7 @@ a.prb-author:hover .prb-author-name { color: var(--text-primary); text-decoratio
846
848
  }
847
849
  .prb-pr-comment-meta { display: flex; gap: 8px; align-items: baseline; font-size: var(--t-meta); }
848
850
  .prb-pr-comment-meta a { color: var(--brand); font-weight: 400; text-decoration: none; }
849
- .prb-pr-comment-meta a:hover { text-decoration: underline; }
851
+ .prb-pr-comment-meta a:hover { opacity: 0.8; }
850
852
  .prb-pr-comment-meta time { color: var(--pane-ink-faint); }
851
853
  /* Someone else's words, rendered as the Markdown they wrote rather than as one flat block. Light
852
854
  pane, so literals throughout: see pane_palette.test.ts. */
@@ -2244,12 +2246,10 @@ a.prb-rail-item { text-decoration: none; }
2244
2246
  color: inherit;
2245
2247
  font: inherit;
2246
2248
  font-weight: 400;
2247
- text-decoration: underline;
2248
- text-decoration-color: var(--brand);
2249
- text-underline-offset: 3px;
2249
+ color: var(--pane-accent);
2250
2250
  cursor: pointer;
2251
2251
  }
2252
- .prb-doc-note-link:hover { color: var(--pane-ink); text-decoration-thickness: 2px; }
2252
+ .prb-doc-note-link:hover { color: var(--pane-ink); }
2253
2253
 
2254
2254
  .prb-doc-note {
2255
2255
  margin: 0 0 14px;
@@ -2396,25 +2396,21 @@ a.prb-rail-item { text-decoration: none; }
2396
2396
  /* Everything that is not the primary action. Text, not a box: as bordered buttons these competed
2397
2397
  with Update review and the panel read as four equal choices.
2398
2398
 
2399
- Resting at full contrast with a brand underline, which is where they used to arrive only on
2400
- hover. Muted grey on a grey rule was quiet to the point of being scenery: half of these are the
2401
- only way to do the thing the sentence beside them is describing, and a control nobody can see is
2402
- not restraint. Hover thickens the rule instead, so pointing at one still answers. */
2399
+ Resting in the link colour, not muted grey. Grey was quiet to the point of being scenery: half of
2400
+ these are the only way to do the thing the sentence beside them is describing, and a control
2401
+ nobody can see is not restraint. Hover takes them to the primary ink, so pointing at one answers. */
2403
2402
  .prb-fresh-quiet {
2404
2403
  padding: 2px 0;
2405
2404
  border: 0;
2406
2405
  background: none;
2407
- color: var(--text-primary);
2406
+ color: var(--link);
2408
2407
  font: inherit;
2409
2408
  font-size: var(--t-micro);
2410
- text-decoration: underline;
2411
- text-decoration-color: var(--brand);
2412
- text-underline-offset: 3px;
2413
2409
  /* It sits inside a sentence now, so it sits on that sentence's baseline. */
2414
2410
  vertical-align: baseline;
2415
2411
  cursor: pointer;
2416
2412
  }
2417
- .prb-fresh-quiet:hover:not(:disabled) { text-decoration-thickness: 2px; }
2413
+ .prb-fresh-quiet:hover:not(:disabled) { color: var(--text-primary); }
2418
2414
  .prb-fresh-quiet:disabled { opacity: 0.55; cursor: default; }
2419
2415
 
2420
2416
  /* Dismissal, at the end of the row it dismisses. An icon rather than the word `Close`, because it
@@ -2601,17 +2597,14 @@ a.prb-rail-item { text-decoration: none; }
2601
2597
  .prb-update-alt > summary,
2602
2598
  .prb-fresh-more > summary {
2603
2599
  display: inline-block;
2604
- color: var(--text-primary);
2605
- text-decoration: underline;
2606
- text-decoration-color: var(--brand);
2607
- text-underline-offset: 3px;
2600
+ color: var(--link);
2608
2601
  cursor: pointer;
2609
2602
  list-style: none;
2610
2603
  }
2611
2604
  .prb-update-alt > summary::-webkit-details-marker,
2612
2605
  .prb-fresh-more > summary::-webkit-details-marker { display: none; }
2613
2606
  .prb-update-alt > summary:hover,
2614
- .prb-fresh-more > summary:hover { text-decoration-thickness: 2px; }
2607
+ .prb-fresh-more > summary:hover { color: var(--text-primary); }
2615
2608
  /* Only this one announces itself as expandable. `Start a new review` reads as an action beside
2616
2609
  `Check review status` and a caret would advertise the disclosure rather than the choice; `More
2617
2610
  details` has nothing to offer except opening, so it says so. */
@@ -3092,7 +3085,7 @@ a.prb-guide-pick { text-decoration: none; }
3092
3085
  opacity: 0.8;
3093
3086
  cursor: pointer;
3094
3087
  }
3095
- .prb-code-deletion-toggle:hover { opacity: 1; text-decoration: underline; }
3088
+ .prb-code-deletion-toggle:hover { opacity: 1; }
3096
3089
  .prb-code-deleted { background: rgba(248, 81, 73, 0.1); }
3097
3090
  .prb-code-deleted .prb-code-num { box-shadow: inset 2px 0 0 #cf222e; color: #a40e26; }
3098
3091
  .prb-code-deleted .prb-code-line { color: #6e7781; }
@@ -3105,7 +3098,6 @@ a.prb-guide-pick { text-decoration: none; }
3105
3098
  background: none;
3106
3099
  font: inherit;
3107
3100
  color: #57606a;
3108
- text-decoration: underline;
3109
3101
  cursor: pointer;
3110
3102
  }
3111
3103
  .prb-code-long-toggle:hover { color: #1f2328; }
@@ -4380,7 +4372,7 @@ a.prb-guide-pick { text-decoration: none; }
4380
4372
  .prb-arch-trail { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 26px; font-size: var(--t-meta); color: #57606a; }
4381
4373
  .prb-arch-crumb { padding: 3px 0; border: 0; background: none; font: inherit; color: inherit; }
4382
4374
  button.prb-arch-crumb { color: #7e22ce; cursor: pointer; }
4383
- button.prb-arch-crumb:hover { text-decoration: underline; }
4375
+ button.prb-arch-crumb:hover { opacity: 0.8; }
4384
4376
  button.prb-arch-crumb:focus-visible { outline: 2px solid #9333ea; outline-offset: 1px; }
4385
4377
  .prb-arch-crumb[aria-current] { font-weight: 600; color: #1f2328; }
4386
4378
  .prb-arch-crumb-sep { color: #8c959f; }
@@ -4419,7 +4411,7 @@ button.prb-arch-crumb:focus-visible { outline: 2px solid #9333ea; outline-offset
4419
4411
  cursor: pointer;
4420
4412
  overflow-wrap: anywhere;
4421
4413
  }
4422
- .prb-arch-location:hover { text-decoration: underline; }
4414
+ .prb-arch-location:hover { opacity: 0.8; }
4423
4415
  .prb-arch-location:focus-visible { outline: 2px solid #9333ea; outline-offset: 1px; }
4424
4416
  span.prb-arch-location { color: #57606a; cursor: default; }
4425
4417
  span.prb-arch-location:hover { text-decoration: none; }
@@ -4658,7 +4650,7 @@ span.prb-arch-location:hover { text-decoration: none; }
4658
4650
  text-align: left;
4659
4651
  cursor: pointer;
4660
4652
  }
4661
- .prb-map-goto:hover { text-decoration: underline; }
4653
+ .prb-map-goto:hover { opacity: 0.8; }
4662
4654
 
4663
4655
  .prb-map-edges {
4664
4656
  position: absolute;
@@ -5418,7 +5410,7 @@ span.prb-arch-location:hover { text-decoration: none; }
5418
5410
  cursor: pointer;
5419
5411
  }
5420
5412
  .prb-kiss-location:hover { background: rgba(147, 51, 234, 0.14); }
5421
- .prb-kiss-location:hover .pr-helper-path-name { text-decoration: underline; }
5413
+ .prb-kiss-location:hover .pr-helper-path-name { opacity: 0.8; }
5422
5414
  /* The filename is a block, so the two markers that qualify it need a line of their own to share
5423
5415
  with it rather than one each above and below it. Baseline-aligned: they are small caps beside
5424
5416
  ordinary text and should sit on its line, not be centred against its box. */
@@ -5638,7 +5630,6 @@ select.prb-addreview-control {
5638
5630
  /* Clear of the sticky bars when arrived at by its anchor. */
5639
5631
  scroll-margin-top: 96px;
5640
5632
  }
5641
- .prb-help-topic:first-of-type { padding-top: 4px; }
5642
5633
  .prb-help-topic:last-of-type { border-bottom: 0; }
5643
5634
  .prb-help-topic h2 { margin: 0 0 12px; font-size: var(--t-section); font-weight: 600; color: var(--text-primary); }
5644
5635
  .prb-help-topic h3 { margin: 20px 0 8px; font-size: var(--t-body); font-weight: 600; color: var(--text-primary); }
@@ -5646,13 +5637,89 @@ select.prb-addreview-control {
5646
5637
  .prb-help-topic ul { margin: 0 0 10px; padding-left: 20px; }
5647
5638
  .prb-help-topic li { margin-bottom: 4px; }
5648
5639
  .prb-help-topic code { font-size: var(--t-code); color: var(--text-primary); }
5640
+ /* Welcome: a small capitalised label over the line the product stands on, and the principles as
5641
+ three short statements, each named in the primary ink and explained in the secondary. */
5642
+ .prb-help-topic .prb-help-eyebrow {
5643
+ margin: 0 0 6px;
5644
+ font-size: var(--t-micro);
5645
+ font-weight: 600;
5646
+ letter-spacing: 0.06em;
5647
+ text-transform: uppercase;
5648
+ color: var(--text-tertiary, var(--text-secondary));
5649
+ }
5650
+ .prb-help-topic h3.prb-help-eyebrow { margin-top: 24px; margin-bottom: 10px; }
5651
+ .prb-help-topic .prb-help-headline { margin: 0 0 14px; font-size: var(--t-title); line-height: 1.3; }
5652
+ .prb-help-principles { display: grid; gap: 12px; margin: 0; }
5653
+ .prb-help-principles dt { font-weight: 600; color: var(--text-primary); }
5654
+ .prb-help-principles dd { margin: 2px 0 0; }
5655
+ .prb-help-tour { margin-top: 20px; }
5656
+ /* An action, not a reference: it starts something, so it looks like the tour's own Next. */
5657
+ /* Through `.prb-help-topic a`, whose link colour would otherwise be drawn on the button's own purple. */
5658
+ .prb-help-topic a.prb-help-tour-action {
5659
+ display: inline-block;
5660
+ padding: 5px 12px;
5661
+ border-radius: 8px;
5662
+ background: var(--brand);
5663
+ color: var(--on-brand);
5664
+ font-weight: 600;
5665
+ }
5666
+ .prb-help-topic a.prb-help-tour-action:hover { background: var(--brand-hover); }
5649
5667
  .prb-help-topic a { color: var(--link); }
5650
- /* The topic index: links in a wrapping row, above the first topic and ruled off from it. */
5651
- .prb-help-contents { padding: 16px 0; border-bottom: 1px solid var(--border); }
5652
- .prb-help-contents ul { display: flex; flex-wrap: wrap; gap: 6px 20px; margin: 0; padding: 0; list-style: none; }
5653
- .prb-help-contents a { font-size: var(--t-body); color: var(--text-secondary); text-decoration: none; }
5654
- .prb-help-contents a:hover { color: var(--text-primary); text-decoration: underline; }
5655
- .prb-help-contents + .prb-help-topic { padding-top: 20px; }
5668
+ /* Wider than the 960px every other page keeps, by the index's column, so the topics keep the
5669
+ measure they had when the index sat above them. */
5670
+ .prb-shell > .prb-help {
5671
+ padding-inline: max(24px, calc((100% - 1200px) / 2 + 24px));
5672
+ container-type: inline-size;
5673
+ }
5674
+ /* The topics, and their index in a column beside them that stays in view while they scroll. The
5675
+ index comes first in the document and is placed second here. */
5676
+ .prb-help-layout {
5677
+ display: grid;
5678
+ grid-template-columns: minmax(0, 1fr) 208px;
5679
+ column-gap: 32px;
5680
+ align-items: start;
5681
+ }
5682
+ .prb-help-layout > .prb-page-panel { grid-column: 1; grid-row: 1; }
5683
+ .prb-help-contents {
5684
+ grid-column: 2;
5685
+ grid-row: 1;
5686
+ position: sticky;
5687
+ /* The pane's own top padding is the gap, at rest and stuck alike, so the index never jumps. */
5688
+ top: 0;
5689
+ max-height: calc(100dvh - 160px);
5690
+ overflow-y: auto;
5691
+ padding: 4px 0;
5692
+ }
5693
+ .prb-help-contents ul { margin: 0; padding: 0; list-style: none; border-left: 1px solid var(--border); }
5694
+ /* The rail's mark for where you are: a brand rule on the left and the tinted ground, here over the
5695
+ list's own rule so the mark sits on the track it moves along. */
5696
+ .prb-help-contents a {
5697
+ display: block;
5698
+ margin-left: -1px;
5699
+ padding: 5px 10px 5px 14px;
5700
+ border-left: 2px solid transparent;
5701
+ border-radius: 0 6px 6px 0;
5702
+ font-size: var(--t-meta);
5703
+ line-height: 1.4;
5704
+ color: var(--text-secondary);
5705
+ text-decoration: none;
5706
+ }
5707
+ .prb-help-contents a:hover { color: var(--text-primary); background: var(--surface-hover); }
5708
+ .prb-help-contents a[aria-current] {
5709
+ border-left-color: var(--brand);
5710
+ background: var(--brand-muted);
5711
+ color: var(--text-primary);
5712
+ font-weight: 500;
5713
+ }
5714
+ .prb-help-contents a:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: -2px; }
5715
+ /* Too narrow for a column beside the prose: the index goes back above the topics, as a wrapping
5716
+ row, and stops following the scroll. After the rules above, which it overrides. */
5717
+ @container (max-width: 760px) {
5718
+ .prb-help-layout { display: block; }
5719
+ .prb-help-contents { position: static; max-height: none; margin: 0 0 16px; padding: 0; }
5720
+ .prb-help-contents ul { display: flex; flex-wrap: wrap; gap: 4px; border-left: 0; }
5721
+ .prb-help-contents a { margin-left: 0; padding: 4px 10px; border-left: 0; border-radius: 6px; }
5722
+ }
5656
5723
  /* A diagram's spacing is its meaning, so it never wraps: a narrow window scrolls it instead. */
5657
5724
  .prb-help-diagram {
5658
5725
  margin: 0 0 12px;
@@ -5815,7 +5882,7 @@ a.prb-notification-open:focus-visible { outline: 2px solid var(--brand-hover); o
5815
5882
  .prb-toast[data-kind='updated'] { border-left-color: var(--brand); }
5816
5883
  .prb-toast-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
5817
5884
  .prb-toast-open { flex: none; color: var(--wordmark-accent); font-weight: 600; text-decoration: none; }
5818
- .prb-toast-open:hover { text-decoration: underline; text-underline-offset: 2px; }
5885
+ .prb-toast-open:hover { opacity: 0.8; }
5819
5886
  .prb-toast-close {
5820
5887
  flex: none;
5821
5888
  width: 24px;
@@ -6474,7 +6541,6 @@ select.prb-addreview-control { padding-right: 32px; }
6474
6541
  color: var(--link);
6475
6542
  font: inherit;
6476
6543
  font-size: var(--t-micro);
6477
- text-decoration: underline;
6478
6544
  cursor: pointer;
6479
6545
  }
6480
6546
  .prb-addreview-retry { margin-left: calc(1em + 8px); }
@@ -6562,7 +6628,7 @@ select.prb-addreview-control { padding-right: 32px; }
6562
6628
  }
6563
6629
  .prb-selection-goto[hidden] { display: none; }
6564
6630
  .prb-selection-sep { color: var(--pane-ink-faint); white-space: pre; }
6565
- .prb-selection-goto:hover [data-feedback-goto-label] { text-decoration: underline; }
6631
+ .prb-selection-goto:hover [data-feedback-goto-label] { opacity: 0.8; }
6566
6632
  .prb-selection-spacer { flex: 1; }
6567
6633
  .prb-selection-button {
6568
6634
  padding: 6px 12px;
@@ -6739,3 +6805,85 @@ select.prb-addreview-control { padding-right: 32px; }
6739
6805
  .prb-runs-count { padding: 8px 10px; }
6740
6806
  .prb-runs-count dd { font-size: var(--t-section); }
6741
6807
  }
6808
+
6809
+
6810
+ /* ── Guided tour ──
6811
+ A modal dialog as big as the window, so everything under it is inert; the spotlight's shadow is
6812
+ the dim, and the card sits beside whatever the spotlight is on. Positions are set by tour.ts. */
6813
+ .prb-tour {
6814
+ position: fixed;
6815
+ inset: 0;
6816
+ width: 100%;
6817
+ height: 100%;
6818
+ max-width: none;
6819
+ max-height: none;
6820
+ margin: 0;
6821
+ padding: 0;
6822
+ border: 0;
6823
+ background: transparent;
6824
+ overflow: hidden;
6825
+ color: var(--text-primary);
6826
+ font: inherit;
6827
+ }
6828
+ .prb-tour::backdrop { background: transparent; }
6829
+ /* No target to light: the welcome, or a stop this layout does not draw. The whole page dims. */
6830
+ .prb-tour[data-spotless] { background: var(--backdrop); }
6831
+ .prb-tour-spot {
6832
+ position: fixed;
6833
+ border-radius: 10px;
6834
+ outline: 2px solid var(--brand);
6835
+ outline-offset: 0;
6836
+ box-shadow: 0 0 0 200vmax var(--backdrop);
6837
+ pointer-events: none;
6838
+ }
6839
+ .prb-tour-card {
6840
+ position: fixed;
6841
+ box-sizing: border-box;
6842
+ padding: 20px 22px 18px;
6843
+ border: 1px solid var(--border);
6844
+ border-radius: 12px;
6845
+ background: var(--surface-raised);
6846
+ box-shadow: 0 12px 32px var(--shadow-float);
6847
+ }
6848
+ .prb-tour[data-welcome] .prb-tour-card { padding: 26px 28px 22px; }
6849
+ .prb-tour-count {
6850
+ margin: 0 0 8px;
6851
+ font-size: var(--t-meta);
6852
+ font-weight: 600;
6853
+ letter-spacing: 0.04em;
6854
+ text-transform: uppercase;
6855
+ color: var(--brand-hover);
6856
+ }
6857
+ .prb-tour-title { margin: 0 0 8px; font-size: var(--t-section); font-weight: 650; line-height: 1.3; }
6858
+ .prb-tour[data-welcome] .prb-tour-title { font-size: 20px; }
6859
+ .prb-tour-text p { margin: 0 0 8px; font-size: var(--t-body); line-height: var(--lh-body); color: var(--text-secondary); }
6860
+ .prb-tour-actions { display: flex; align-items: center; gap: 8px; margin-top: 16px; }
6861
+ .prb-tour-actions button {
6862
+ padding: 7px 14px;
6863
+ border-radius: 8px;
6864
+ border: 1px solid var(--border);
6865
+ background: var(--surface-2);
6866
+ color: var(--text-primary);
6867
+ font: inherit;
6868
+ font-size: var(--t-body);
6869
+ cursor: pointer;
6870
+ }
6871
+ .prb-tour-actions button:hover { border-color: var(--border-strong); }
6872
+ .prb-tour-actions button:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: 2px; }
6873
+ .prb-tour-actions .prb-tour-skip {
6874
+ margin-right: auto;
6875
+ padding-left: 0;
6876
+ padding-right: 0;
6877
+ border-color: transparent;
6878
+ background: transparent;
6879
+ color: var(--text-secondary);
6880
+ }
6881
+ .prb-tour-actions .prb-tour-skip:hover { border-color: transparent; color: var(--text-primary); }
6882
+ .prb-tour-actions .prb-tour-next {
6883
+ border-color: var(--brand);
6884
+ background: var(--brand);
6885
+ color: var(--on-brand);
6886
+ font-weight: 600;
6887
+ }
6888
+ .prb-tour-actions .prb-tour-next:hover { border-color: var(--brand-hover); background: var(--brand-hover); }
6889
+ .prb-tour-actions button[hidden] { display: none; }
@@ -218,7 +218,7 @@
218
218
  cursor: pointer;
219
219
  }
220
220
 
221
- .pr-helper-cancel-button:hover { color: #cf222e; text-decoration: underline; }
221
+ .pr-helper-cancel-button:hover { color: #cf222e; }
222
222
 
223
223
  /* ── Brand mark + thinking dots (waiting/finalizing phase) ── */
224
224
  .pr-helper-brand-mark {
@@ -809,7 +809,7 @@
809
809
  cursor: pointer;
810
810
  }
811
811
 
812
- .pr-helper-author-context-toggle:hover { text-decoration: underline; }
812
+ .pr-helper-author-context-toggle:hover { opacity: 0.8; }
813
813
 
814
814
  /* The heading and, once the description is open, its Show less. While open the row sticks to the
815
815
  top of whatever the review scrolls in, so a long description never has to be read to its end to
@@ -838,7 +838,7 @@
838
838
  color: #9333ea;
839
839
  text-decoration: none;
840
840
  }
841
- .pr-helper-author-context-github:hover { text-decoration: underline; }
841
+ .pr-helper-author-context-github:hover { opacity: 0.8; }
842
842
  .pr-helper-author-context[data-expanded] .pr-helper-author-context-head {
843
843
  position: sticky;
844
844
  /* A sticky element stops at its scroller's padding edge, leaving that padding as a strip the
@@ -936,7 +936,7 @@
936
936
  cursor: pointer;
937
937
  }
938
938
 
939
- .pr-helper-why-link:hover { text-decoration: underline; }
939
+ .pr-helper-why-link:hover { opacity: 0.8; }
940
940
 
941
941
  /* The author's words behind a stated motive, closed: the summary above usually says the same. */
942
942
  .pr-helper-why-source { margin: 4px 0 0; }
@@ -949,7 +949,7 @@
949
949
  width: fit-content;
950
950
  }
951
951
 
952
- .pr-helper-why-source > summary:hover { text-decoration: underline; }
952
+ .pr-helper-why-source > summary:hover { opacity: 0.8; }
953
953
 
954
954
  /* The three narrative sections end here; the verdict and the path are a different kind of block,
955
955
  so the gap before each is wider than the gaps between the sections. */
@@ -1404,7 +1404,7 @@
1404
1404
  text-decoration: none;
1405
1405
  }
1406
1406
 
1407
- .pr-helper-issue-discussion-link:hover { text-decoration: underline; }
1407
+ .pr-helper-issue-discussion-link:hover { opacity: 0.8; }
1408
1408
 
1409
1409
  .pr-helper-issue-loc {
1410
1410
  display: block;
@@ -1412,7 +1412,7 @@
1412
1412
  margin-top: 6px;
1413
1413
  }
1414
1414
 
1415
- .pr-helper-issue-loc:hover .pr-helper-path-name { text-decoration: underline; }
1415
+ .pr-helper-issue-loc:hover .pr-helper-path-name { opacity: 0.8; }
1416
1416
 
1417
1417
  /* A file the finding rests on that this change does not touch. Sits under the anchored location
1418
1418
  and must not be mistaken for one: no line number, and the words are on the row.
@@ -1426,7 +1426,7 @@
1426
1426
  font-size: 11.5px;
1427
1427
  opacity: 0.75;
1428
1428
  }
1429
- .prb-file-related:hover .pr-helper-path-name { text-decoration: underline; }
1429
+ .prb-file-related:hover .pr-helper-path-name { opacity: 0.8; }
1430
1430
 
1431
1431
  /* ── Questions tab ── */
1432
1432
  /* Deliberately reuses .pr-helper-issue-header/-title/-badges/-desc/-loc from the Issues tab
@@ -1501,7 +1501,7 @@
1501
1501
  cursor: pointer;
1502
1502
  white-space: nowrap;
1503
1503
  }
1504
- .pr-helper-simple-explanation-more:hover { text-decoration: underline; }
1504
+ .pr-helper-simple-explanation-more:hover { opacity: 0.8; }
1505
1505
  .pr-helper-simple-explanation-more:focus-visible { outline: 2px solid #9333ea; outline-offset: 2px; border-radius: 2px; }
1506
1506
 
1507
1507
  .pr-helper-question-importance-badge {
@@ -1613,7 +1613,7 @@
1613
1613
  }
1614
1614
 
1615
1615
  .pr-helper-question-jump { text-decoration: none; }
1616
- .pr-helper-question-jump:hover { color: #7c3aed; text-decoration: underline; }
1616
+ .pr-helper-question-jump:hover { color: #7c3aed; }
1617
1617
 
1618
1618
  /* Same button geometry as .pr-helper-explain-simply-button (the sidebar's existing outlined
1619
1619
  secondary), but neutral rather than purple: purple is spoken for by the primary action
@@ -1978,7 +1978,7 @@
1978
1978
  text-align: left;
1979
1979
  }
1980
1980
 
1981
- .pr-helper-guide-start-cta:hover { color: #7c3aed; text-decoration: underline; }
1981
+ .pr-helper-guide-start-cta:hover { color: #7c3aed; }
1982
1982
 
1983
1983
  .pr-helper-guide-section-actions {
1984
1984
  display: flex;
@@ -2000,7 +2000,7 @@
2000
2000
  cursor: pointer;
2001
2001
  }
2002
2002
 
2003
- .pr-helper-guide-uncomplete:hover { color: var(--color-fg-default, #24292f); text-decoration: underline; }
2003
+ .pr-helper-guide-uncomplete:hover { color: var(--color-fg-default, #24292f); }
2004
2004
 
2005
2005
  .pr-helper-guide-summary {
2006
2006
  font-size: 14px;
@@ -2048,9 +2048,9 @@
2048
2048
  margin: 0 -8px;
2049
2049
  }
2050
2050
 
2051
- /* Underline only the filename on hover — dragging an underline through the directory and focus
2052
- prose would make the whole three-line row look like one long link. */
2053
- .pr-helper-guide-file:hover .pr-helper-path-name { text-decoration: underline; }
2051
+ /* Dim only the filename on hover: dimming the directory and focus prose too would make the whole
2052
+ three-line row look like one long link. */
2053
+ .pr-helper-guide-file:hover .pr-helper-path-name { opacity: 0.8; }
2054
2054
 
2055
2055
  .pr-helper-guide-file-focus {
2056
2056
  font-size: 12px;
@@ -2497,7 +2497,7 @@
2497
2497
  text-decoration: none;
2498
2498
  }
2499
2499
 
2500
- .pr-helper-markdown a:hover { text-decoration: underline; }
2500
+ .pr-helper-markdown a:hover { opacity: 0.8; }
2501
2501
 
2502
2502
  /* GitHub's HTML in a description (github_html.ts). A table scrolls on its own, as on GitHub, so a
2503
2503
  bot's wide walkthrough never pushes the sidebar sideways. */
@@ -2541,7 +2541,7 @@
2541
2541
  padding: 2px 0 6px;
2542
2542
  cursor: pointer;
2543
2543
  }
2544
- .prb-md-mermaid-toggle:hover { text-decoration: underline; }
2544
+ .prb-md-mermaid-toggle:hover { opacity: 0.8; }
2545
2545
  .prb-md-mermaid-error {
2546
2546
  margin: 0 0 6px;
2547
2547
  font-size: 12px;
@@ -3782,7 +3782,7 @@
3782
3782
  white-space: nowrap;
3783
3783
  }
3784
3784
 
3785
- .pr-helper-nav-overlay-close:hover { color: #1f2328; text-decoration: underline; }
3785
+ .pr-helper-nav-overlay-close:hover { color: #1f2328; }
3786
3786
 
3787
3787
  .pr-helper-nav-overlay-progress {
3788
3788
  margin-top: 2px;
@@ -4374,7 +4374,7 @@
4374
4374
  cursor: pointer;
4375
4375
  }
4376
4376
 
4377
- .pr-helper-save-bar-label-done:hover { text-decoration: underline; }
4377
+ .pr-helper-save-bar-label-done:hover { opacity: 0.8; }
4378
4378
 
4379
4379
  /* ── Selected-text → Assistant ──
4380
4380
  Mounted on document.body, not inside the sidebar: the sidebar is a scrolling, clipped
@@ -5521,7 +5521,7 @@
5521
5521
  color: #6b21a8;
5522
5522
  cursor: pointer;
5523
5523
  }
5524
- .pr-helper-reassessment-more:hover { text-decoration: underline; }
5524
+ .pr-helper-reassessment-more:hover { opacity: 0.8; }
5525
5525
  .pr-helper-reassessment-accept:focus-visible,
5526
5526
  .pr-helper-reassessment-keep:focus-visible,
5527
5527
  .pr-helper-reassessment-more:focus-visible { outline: 2px solid #9333ea; outline-offset: 2px; }
@@ -5574,7 +5574,6 @@
5574
5574
  font-size: 10px;
5575
5575
  color: var(--color-accent-fg, #0969da);
5576
5576
  cursor: pointer;
5577
- text-decoration: underline;
5578
5577
  }
5579
5578
 
5580
5579
  /* History row. Same geometry as .pr-helper-history-delta, and for the same reason it carries no
@@ -5671,7 +5670,6 @@
5671
5670
  font-size: 11px;
5672
5671
  color: var(--color-accent-fg, #0969da);
5673
5672
  cursor: pointer;
5674
- text-decoration: underline;
5675
5673
  }
5676
5674
 
5677
5675
  /*
@@ -5929,7 +5927,7 @@
5929
5927
  .pr-helper-extension .prb-selection-count { margin: 0; font-size: 12px; font-weight: 600; color: #1f2328; }
5930
5928
  .pr-helper-extension .prb-selection-goto { padding: 0; border: 0; background: none; color: #7e22ce; font: inherit; font-weight: 400; cursor: pointer; }
5931
5929
  .pr-helper-extension .prb-selection-goto[hidden] { display: none; }
5932
- .pr-helper-extension .prb-selection-goto:hover [data-feedback-goto-label] { text-decoration: underline; }
5930
+ .pr-helper-extension .prb-selection-goto:hover [data-feedback-goto-label] { opacity: 0.8; }
5933
5931
  .pr-helper-extension .prb-selection-sep { color: #8c959f; white-space: pre; }
5934
5932
  .pr-helper-extension .prb-selection-spacer { flex: 1; }
5935
5933
  .pr-helper-extension .prb-selection-button {