rdoc 7.1.0 → 8.0.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.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +3 -4
  3. data/LICENSE.rdoc +4 -0
  4. data/README.md +43 -2
  5. data/doc/markup_reference/markdown.md +104 -3
  6. data/lib/rdoc/code_object/alias.rb +2 -8
  7. data/lib/rdoc/code_object/any_method.rb +11 -6
  8. data/lib/rdoc/code_object/attr.rb +12 -6
  9. data/lib/rdoc/code_object/class_module.rb +62 -32
  10. data/lib/rdoc/code_object/constant.rb +29 -3
  11. data/lib/rdoc/code_object/context/section.rb +30 -43
  12. data/lib/rdoc/code_object/context.rb +53 -37
  13. data/lib/rdoc/code_object/method_attr.rb +9 -15
  14. data/lib/rdoc/code_object/mixin.rb +3 -0
  15. data/lib/rdoc/code_object/top_level.rb +11 -3
  16. data/lib/rdoc/code_object.rb +2 -4
  17. data/lib/rdoc/comment.rb +1 -66
  18. data/lib/rdoc/cross_reference.rb +8 -30
  19. data/lib/rdoc/encoding.rb +3 -3
  20. data/lib/rdoc/generator/aliki.rb +17 -0
  21. data/lib/rdoc/generator/darkfish.rb +12 -6
  22. data/lib/rdoc/generator/json_index.rb +2 -2
  23. data/lib/rdoc/generator/markup.rb +56 -31
  24. data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
  25. data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +1 -1
  26. data/lib/rdoc/generator/template/aliki/_head.rhtml +6 -1
  27. data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +8 -6
  28. data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +8 -6
  29. data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +1 -1
  30. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +2 -2
  31. data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +1 -1
  32. data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +1 -1
  33. data/lib/rdoc/generator/template/aliki/class.rhtml +61 -51
  34. data/lib/rdoc/generator/template/aliki/css/rdoc.css +365 -147
  35. data/lib/rdoc/generator/template/aliki/index.rhtml +1 -1
  36. data/lib/rdoc/generator/template/aliki/js/aliki.js +28 -20
  37. data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  38. data/lib/rdoc/generator/template/aliki/js/search_controller.js +1 -1
  39. data/lib/rdoc/generator/template/aliki/page.rhtml +1 -1
  40. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +1 -1
  41. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +2 -2
  42. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -6
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -6
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +1 -1
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +1 -1
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +1 -1
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +5 -5
  48. data/lib/rdoc/generator/template/darkfish/class.rhtml +18 -21
  49. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +0 -1
  50. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +3 -3
  51. data/lib/rdoc/i18n/text.rb +3 -3
  52. data/lib/rdoc/markdown.kpeg +36 -17
  53. data/lib/rdoc/markdown.rb +324 -125
  54. data/lib/rdoc/markup/document.rb +2 -2
  55. data/lib/rdoc/markup/formatter.rb +128 -115
  56. data/lib/rdoc/markup/heading.rb +3 -6
  57. data/lib/rdoc/markup/indented_paragraph.rb +1 -1
  58. data/lib/rdoc/markup/inline_parser.rb +312 -0
  59. data/lib/rdoc/markup/list.rb +2 -2
  60. data/lib/rdoc/markup/list_item.rb +2 -2
  61. data/lib/rdoc/markup/parser.rb +1 -1
  62. data/lib/rdoc/markup/pre_process.rb +0 -25
  63. data/lib/rdoc/markup/to_ansi.rb +52 -5
  64. data/lib/rdoc/markup/to_bs.rb +23 -43
  65. data/lib/rdoc/markup/to_html.rb +279 -226
  66. data/lib/rdoc/markup/to_html_crossref.rb +122 -136
  67. data/lib/rdoc/markup/to_html_snippet.rb +65 -65
  68. data/lib/rdoc/markup/to_joined_paragraph.rb +0 -5
  69. data/lib/rdoc/markup/to_label.rb +22 -23
  70. data/lib/rdoc/markup/to_markdown.rb +62 -38
  71. data/lib/rdoc/markup/to_rdoc.rb +88 -28
  72. data/lib/rdoc/markup/to_table_of_contents.rb +1 -1
  73. data/lib/rdoc/markup/to_test.rb +9 -1
  74. data/lib/rdoc/markup/to_tt_only.rb +10 -23
  75. data/lib/rdoc/markup/verbatim.rb +1 -1
  76. data/lib/rdoc/markup.rb +8 -30
  77. data/lib/rdoc/options.rb +36 -51
  78. data/lib/rdoc/parser/c.rb +7 -6
  79. data/lib/rdoc/parser/changelog.rb +21 -0
  80. data/lib/rdoc/parser/rbs.rb +275 -0
  81. data/lib/rdoc/parser/ruby.rb +955 -2067
  82. data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
  83. data/lib/rdoc/parser.rb +3 -2
  84. data/lib/rdoc/rbs_helper.rb +186 -0
  85. data/lib/rdoc/rdoc.rb +196 -24
  86. data/lib/rdoc/ri/driver.rb +8 -2
  87. data/lib/rdoc/ri/paths.rb +1 -1
  88. data/lib/rdoc/{servlet.rb → ri/servlet.rb} +5 -5
  89. data/lib/rdoc/ri.rb +4 -3
  90. data/lib/rdoc/rubygems_hook.rb +11 -11
  91. data/lib/rdoc/server.rb +460 -0
  92. data/lib/rdoc/stats.rb +147 -124
  93. data/lib/rdoc/store.rb +212 -4
  94. data/lib/rdoc/task.rb +16 -15
  95. data/lib/rdoc/text.rb +24 -117
  96. data/lib/rdoc/token_stream.rb +11 -33
  97. data/lib/rdoc/version.rb +1 -1
  98. data/lib/rdoc.rb +35 -7
  99. data/lib/rubygems_plugin.rb +2 -11
  100. data/rdoc-logo.svg +43 -0
  101. data/rdoc.gemspec +6 -4
  102. metadata +37 -23
  103. data/lib/rdoc/code_object/anon_class.rb +0 -10
  104. data/lib/rdoc/code_object/ghost_method.rb +0 -6
  105. data/lib/rdoc/code_object/meta_method.rb +0 -6
  106. data/lib/rdoc/markup/attr_changer.rb +0 -22
  107. data/lib/rdoc/markup/attr_span.rb +0 -35
  108. data/lib/rdoc/markup/attribute_manager.rb +0 -432
  109. data/lib/rdoc/markup/attributes.rb +0 -70
  110. data/lib/rdoc/markup/regexp_handling.rb +0 -40
  111. data/lib/rdoc/parser/prism_ruby.rb +0 -1100
  112. data/lib/rdoc/parser/ripper_state_lex.rb +0 -302
  113. data/lib/rdoc/parser/ruby_tools.rb +0 -163
@@ -39,24 +39,14 @@
39
39
  --color-neutral-800: #292524;
40
40
  --color-neutral-900: #1c1917;
41
41
 
42
- /* Code highlighting colors */
42
+ /* Code highlighting colors - neutral palette for all syntax highlighters */
43
43
  --code-blue: #1d4ed8;
44
44
  --code-green: #047857;
45
45
  --code-orange: #d97706;
46
46
  --code-purple: #7e22ce;
47
47
  --code-red: #dc2626;
48
-
49
- /* C syntax highlighting */
50
- --c-keyword: #b91c1c;
51
- --c-type: #0891b2;
52
- --c-macro: #ea580c;
53
- --c-function: #7c3aed;
54
- --c-identifier: #475569;
55
- --c-operator: #059669;
56
- --c-preprocessor: #a21caf;
57
- --c-value: #92400e;
58
- --c-string: #15803d;
59
- --c-comment: #78716c;
48
+ --code-cyan: #0891b2;
49
+ --code-gray: #78716c;
60
50
 
61
51
  /* Color Palette - Green (for success states) */
62
52
  --color-green-400: #4ade80;
@@ -78,8 +68,11 @@
78
68
  --color-accent-primary: var(--color-primary-600);
79
69
  --color-accent-hover: var(--color-primary-700);
80
70
  --color-accent-subtle: var(--color-primary-50);
71
+ --color-title-kind-border: var(--color-primary-200);
81
72
  --color-code-bg: #f6f8fa;
82
73
  --color-code-border: var(--color-neutral-300);
74
+ --color-sig-bg: var(--color-neutral-100);
75
+ --color-sig-border: var(--color-border-default);
83
76
  --color-nav-bg: #fff;
84
77
  --color-nav-text: var(--color-neutral-700);
85
78
  --color-th-background: var(--color-neutral-100);
@@ -186,24 +179,14 @@
186
179
 
187
180
  /* Dark Theme */
188
181
  [data-theme="dark"] {
189
- /* Code highlighting colors */
182
+ /* Code highlighting colors - neutral palette for all syntax highlighters */
190
183
  --code-blue: #93c5fd;
191
184
  --code-green: #34d399;
192
185
  --code-orange: #fbbf24;
193
186
  --code-purple: #c084fc;
194
187
  --code-red: #f87171;
195
-
196
- /* C syntax highlighting */
197
- --c-keyword: #f87171;
198
- --c-type: #22d3ee;
199
- --c-macro: #fb923c;
200
- --c-function: #a78bfa;
201
- --c-identifier: #94a3b8;
202
- --c-operator: #6ee7b7;
203
- --c-preprocessor: #e879f9;
204
- --c-value: #fcd34d;
205
- --c-string: #4ade80;
206
- --c-comment: #a8a29e;
188
+ --code-cyan: #22d3ee;
189
+ --code-gray: #a8a29e;
207
190
 
208
191
  /* Semantic Colors - Dark Theme */
209
192
  --color-text-primary: var(--color-neutral-50);
@@ -221,8 +204,11 @@
221
204
  --color-accent-hover: var(--color-primary-400);
222
205
  --color-accent-subtle: rgb(235 84 79 / 10%);
223
206
  --color-accent-subtle-hover: rgb(235 84 79 / 20%);
207
+ --color-title-kind-border: rgb(235 84 79 / 35%);
224
208
  --color-code-bg: var(--color-neutral-800);
225
209
  --color-code-border: var(--color-neutral-700);
210
+ --color-sig-bg: #211f1e; /* between neutral-900 and neutral-800 */
211
+ --color-sig-border: var(--color-border-subtle);
226
212
  --color-nav-bg: var(--color-neutral-900);
227
213
  --color-nav-text: var(--color-neutral-50);
228
214
  --color-th-background: var(--color-background-tertiary);
@@ -449,16 +435,35 @@ header.top-navbar {
449
435
  z-index: var(--z-fixed);
450
436
  background: var(--color-background-primary);
451
437
  border-bottom: 1px solid var(--color-border-default);
452
- display: flex;
438
+ display: grid;
439
+ grid-template-columns:
440
+ var(--layout-sidebar-width)
441
+ minmax(0, 1fr);
453
442
  align-items: center;
454
- justify-content: flex-start;
455
- padding: 0 var(--space-6);
456
- gap: var(--space-8);
443
+ padding: 0;
457
444
  height: var(--layout-header-height);
458
445
  box-shadow: var(--shadow-sm);
459
446
  }
460
447
 
448
+ body.has-toc header.top-navbar {
449
+ grid-template-columns:
450
+ var(--layout-sidebar-width)
451
+ minmax(0, 1fr)
452
+ minmax(var(--layout-toc-width-min), var(--layout-toc-width-max));
453
+ }
454
+
455
+ @media (width <= 1279px) {
456
+ body.has-toc header.top-navbar {
457
+ grid-template-columns:
458
+ var(--layout-sidebar-width)
459
+ minmax(0, 1fr);
460
+ }
461
+ }
462
+
461
463
  header.top-navbar .navbar-brand {
464
+ grid-column: 1;
465
+ justify-self: start;
466
+ margin-left: var(--space-6);
462
467
  font-size: var(--font-size-xl);
463
468
  font-weight: var(--font-weight-semibold);
464
469
  color: var(--color-text-primary);
@@ -471,12 +476,16 @@ header.top-navbar .navbar-brand:hover {
471
476
  }
472
477
 
473
478
  header.top-navbar .navbar-search {
474
- position: relative;
475
- flex: 0 1 auto;
476
- width: var(--layout-search-width);
479
+ grid-column: 2;
480
+ justify-self: center;
481
+ box-sizing: border-box;
482
+ width: min(100%, var(--layout-content-max-width));
483
+ padding: 0 var(--space-8);
477
484
  }
478
485
 
479
486
  header.top-navbar .navbar-search form {
487
+ position: relative;
488
+ width: min(100%, var(--layout-search-width));
480
489
  margin: 0;
481
490
  padding: 0;
482
491
  }
@@ -490,11 +499,13 @@ header.top-navbar .navbar-search form {
490
499
 
491
500
  /* Theme toggle button */
492
501
  .theme-toggle {
502
+ position: absolute;
503
+ top: 50%;
504
+ right: var(--space-6);
493
505
  display: flex;
494
506
  align-items: center;
495
507
  justify-content: center;
496
508
  padding: var(--space-2);
497
- margin-left: auto;
498
509
  background: transparent;
499
510
  border: 1px solid var(--color-border-default);
500
511
  border-radius: var(--radius-md);
@@ -509,13 +520,14 @@ header.top-navbar .navbar-search form {
509
520
  line-height: 1;
510
521
  width: 2.5rem;
511
522
  height: 2.5rem;
523
+ transform: translateY(-50%);
512
524
  }
513
525
 
514
526
  .theme-toggle:hover {
515
527
  background: var(--color-background-secondary);
516
528
  border-color: var(--color-accent-primary);
517
529
  color: var(--color-accent-primary);
518
- transform: scale(1.05);
530
+ transform: translateY(-50%) scale(1.05);
519
531
  }
520
532
 
521
533
  .theme-toggle:focus {
@@ -525,7 +537,7 @@ header.top-navbar .navbar-search form {
525
537
  }
526
538
 
527
539
  .theme-toggle:active {
528
- transform: scale(0.95);
540
+ transform: translateY(-50%) scale(0.95);
529
541
  }
530
542
 
531
543
  .theme-toggle-icon {
@@ -578,10 +590,24 @@ header.top-navbar .navbar-search form {
578
590
  text-overflow: ellipsis;
579
591
  white-space: nowrap;
580
592
  }
593
+
594
+ .theme-toggle {
595
+ position: static;
596
+ transform: none;
597
+ margin-right: 0;
598
+ }
599
+
600
+ .theme-toggle:hover {
601
+ transform: scale(1.05);
602
+ }
603
+
604
+ .theme-toggle:active {
605
+ transform: scale(0.95);
606
+ }
581
607
  }
582
608
 
583
609
  /* 7. Navigation (Left Sidebar) */
584
- nav {
610
+ #sidebar-navigation {
585
611
  grid-area: nav;
586
612
  font-family: var(--font-heading);
587
613
  font-size: var(--font-size-base);
@@ -600,27 +626,27 @@ nav {
600
626
  }
601
627
 
602
628
  /* Custom scrollbar for WebKit browsers */
603
- nav::-webkit-scrollbar {
629
+ #sidebar-navigation::-webkit-scrollbar {
604
630
  width: 6px;
605
631
  }
606
632
 
607
- nav::-webkit-scrollbar-track {
633
+ #sidebar-navigation::-webkit-scrollbar-track {
608
634
  background: transparent;
609
635
  }
610
636
 
611
- nav::-webkit-scrollbar-thumb {
637
+ #sidebar-navigation::-webkit-scrollbar-thumb {
612
638
  background: var(--color-border-default);
613
639
  border-radius: var(--radius-sm);
614
640
  transition: background var(--transition-fast);
615
641
  }
616
642
 
617
- nav::-webkit-scrollbar-thumb:hover {
643
+ #sidebar-navigation::-webkit-scrollbar-thumb:hover {
618
644
  background: var(--color-border-emphasis);
619
645
  }
620
646
 
621
647
  /* Mobile navigation */
622
648
  @media (width <= 1023px) {
623
- nav {
649
+ #sidebar-navigation {
624
650
  position: fixed;
625
651
  top: var(--layout-header-height);
626
652
  bottom: 0;
@@ -632,7 +658,7 @@ nav::-webkit-scrollbar-thumb:hover {
632
658
  /* Don't set height - let top/bottom define it */
633
659
  }
634
660
 
635
- nav[hidden] {
661
+ #sidebar-navigation[hidden] {
636
662
  display: none;
637
663
  }
638
664
 
@@ -649,7 +675,7 @@ nav::-webkit-scrollbar-thumb:hover {
649
675
  }
650
676
 
651
677
  /* Show backdrop when nav is open */
652
- body.nav-open::before {
678
+ body.sidebar-navigation-open::before {
653
679
  opacity: 1;
654
680
  pointer-events: auto;
655
681
  }
@@ -657,17 +683,18 @@ nav::-webkit-scrollbar-thumb:hover {
657
683
 
658
684
  /* Desktop: hide nav when [hidden] attribute is set */
659
685
  @media (width >= 1024px) {
660
- nav[hidden] {
686
+ #sidebar-navigation[hidden] {
661
687
  display: none;
662
688
  }
663
689
  }
664
690
 
665
- nav .nav-section {
691
+ #sidebar-navigation .nav-section {
666
692
  margin-top: var(--space-6);
667
693
  padding: 0 var(--space-6);
668
694
  }
669
695
 
670
- nav h2, nav h3 {
696
+ #sidebar-navigation h2,
697
+ #sidebar-navigation h3 {
671
698
  font-size: var(--font-size-lg);
672
699
  font-weight: var(--font-weight-semibold);
673
700
  margin: 0 0 var(--space-4);
@@ -676,51 +703,51 @@ nav h2, nav h3 {
676
703
  border-bottom: 1px solid var(--color-border-default);
677
704
  }
678
705
 
679
- nav ul,
680
- nav dl,
681
- nav p {
706
+ #sidebar-navigation ul,
707
+ #sidebar-navigation dl,
708
+ #sidebar-navigation p {
682
709
  padding: 0;
683
710
  list-style: none;
684
711
  margin: var(--space-3) 0;
685
712
  }
686
713
 
687
- nav ul li {
714
+ #sidebar-navigation ul li {
688
715
  margin-bottom: var(--space-2);
689
716
  line-height: var(--line-height-relaxed);
690
717
  }
691
718
 
692
- nav ul li a {
719
+ #sidebar-navigation ul li a {
693
720
  transition:
694
721
  color var(--transition-fast),
695
722
  transform var(--transition-fast),
696
723
  padding var(--transition-fast);
697
724
  }
698
725
 
699
- nav ul li a:hover {
726
+ #sidebar-navigation ul li a:hover {
700
727
  padding-left: var(--space-1);
701
728
  }
702
729
 
703
- nav ul ul {
730
+ #sidebar-navigation ul ul {
704
731
  padding-left: var(--space-5);
705
- margin-top: var(--space-2);
732
+ margin: var(--space-2) 0 0;
706
733
  }
707
734
 
708
- nav ul ul ul {
735
+ #sidebar-navigation ul ul ul {
709
736
  padding-left: var(--space-5);
710
737
  }
711
738
 
712
- nav ul ul ul ul {
739
+ #sidebar-navigation ul ul ul ul {
713
740
  padding-left: var(--space-5);
714
741
  }
715
742
 
716
- nav a {
743
+ #sidebar-navigation a {
717
744
  text-decoration: none;
718
745
  }
719
746
 
720
747
  /* Truncation for direct nav links (not links inside code tags) */
721
- nav .nav-list > li > a,
722
- nav .nav-section > ul > li > a,
723
- nav .nav-section > dl > dd > a {
748
+ #sidebar-navigation .nav-list > li > a,
749
+ #sidebar-navigation .nav-section > ul > li > a,
750
+ #sidebar-navigation .nav-section > dl > dd > a {
724
751
  display: block;
725
752
  max-width: 100%;
726
753
  overflow: hidden;
@@ -728,22 +755,22 @@ nav .nav-section > dl > dd > a {
728
755
  white-space: nowrap;
729
756
  }
730
757
 
731
- nav footer {
758
+ #sidebar-navigation footer {
732
759
  padding: var(--space-4);
733
760
  border-top: 1px solid var(--color-border-default);
734
761
  }
735
762
 
736
- nav footer a {
763
+ #sidebar-navigation footer a {
737
764
  color: var(--color-accent-hover);
738
765
  }
739
766
 
740
- #navigation-toggle {
767
+ #sidebar-navigation-toggle {
741
768
  display: none; /* Hidden by default, shown on mobile */
742
769
  }
743
770
 
744
771
  /* Mobile toggle button */
745
772
  @media (width <= 1023px) {
746
- #navigation-toggle {
773
+ #sidebar-navigation-toggle {
747
774
  display: flex;
748
775
  align-items: center;
749
776
  justify-content: center;
@@ -763,7 +790,7 @@ nav footer a {
763
790
  -webkit-user-select: none;
764
791
  }
765
792
 
766
- #navigation-toggle:hover {
793
+ #sidebar-navigation-toggle:hover {
767
794
  color: var(--color-accent-primary);
768
795
  }
769
796
  }
@@ -774,23 +801,23 @@ nav footer a {
774
801
  * Uses block-size animation with interpolate-size for smooth height transitions.
775
802
  * Both nav-section-collapsible and nested link-list details share this pattern.
776
803
  */
777
- nav details {
804
+ #sidebar-navigation details {
778
805
  interpolate-size: allow-keywords;
779
806
  }
780
807
 
781
- nav details::details-content {
808
+ #sidebar-navigation details::details-content {
782
809
  overflow: hidden;
783
810
  block-size: 0;
784
811
  transition: block-size 200ms ease, content-visibility 200ms ease allow-discrete;
785
812
  }
786
813
 
787
- nav details[open]::details-content {
814
+ #sidebar-navigation details[open]::details-content {
788
815
  block-size: auto;
789
816
  }
790
817
 
791
818
  /* Collapsible Navigation Section Headers */
792
819
 
793
- nav .nav-section-header {
820
+ #sidebar-navigation .nav-section-header {
794
821
  display: flex;
795
822
  align-items: center;
796
823
  gap: var(--space-3);
@@ -804,15 +831,15 @@ nav .nav-section-header {
804
831
  transition: color var(--transition-fast);
805
832
  }
806
833
 
807
- nav .nav-section-header::-webkit-details-marker {
834
+ #sidebar-navigation .nav-section-header::-webkit-details-marker {
808
835
  display: none;
809
836
  }
810
837
 
811
- nav .nav-section-header:hover {
838
+ #sidebar-navigation .nav-section-header:hover {
812
839
  color: var(--color-accent-primary);
813
840
  }
814
841
 
815
- nav .nav-section-icon {
842
+ #sidebar-navigation .nav-section-icon {
816
843
  display: flex;
817
844
  align-items: center;
818
845
  justify-content: center;
@@ -822,12 +849,12 @@ nav .nav-section-icon {
822
849
  color: var(--color-accent-primary);
823
850
  }
824
851
 
825
- nav .nav-section-icon svg {
852
+ #sidebar-navigation .nav-section-icon svg {
826
853
  width: 100%;
827
854
  height: 100%;
828
855
  }
829
856
 
830
- nav .nav-section-title {
857
+ #sidebar-navigation .nav-section-title {
831
858
  font-size: var(--font-size-base);
832
859
  font-weight: var(--font-weight-semibold);
833
860
  color: inherit;
@@ -838,7 +865,7 @@ nav .nav-section-title {
838
865
  white-space: nowrap;
839
866
  }
840
867
 
841
- nav .nav-section-chevron {
868
+ #sidebar-navigation .nav-section-chevron {
842
869
  display: flex;
843
870
  align-items: center;
844
871
  justify-content: center;
@@ -849,46 +876,50 @@ nav .nav-section-chevron {
849
876
  transition: transform var(--transition-base);
850
877
  }
851
878
 
852
- nav .nav-section-chevron svg {
879
+ #sidebar-navigation .nav-section-chevron svg {
853
880
  width: 100%;
854
881
  height: 100%;
855
882
  }
856
883
 
857
884
  /* Rotate chevron when open */
858
- nav .nav-section-collapsible[open] > .nav-section-header .nav-section-chevron {
885
+ #sidebar-navigation .nav-section-collapsible[open] > .nav-section-header .nav-section-chevron {
859
886
  transform: rotate(90deg);
860
887
  }
861
888
 
862
- nav .nav-section-collapsible > ul,
863
- nav .nav-section-collapsible > dl,
864
- nav .nav-section-collapsible > p {
889
+ #sidebar-navigation .nav-section-collapsible > ul,
890
+ #sidebar-navigation .nav-section-collapsible > dl,
891
+ #sidebar-navigation .nav-section-collapsible > p {
865
892
  margin-top: 0;
866
893
  }
867
894
 
868
- nav .nav-section-collapsible > .nav-list {
895
+ #sidebar-navigation .nav-section-collapsible > .nav-list {
869
896
  padding-left: var(--space-5);
870
897
  border-left: 1px solid var(--color-border-subtle);
871
898
  margin-left: 9px; /* Align with the section icon center */
872
899
  }
873
900
 
874
- nav .nav-section-collapsible .nav-list .link-list {
901
+ #sidebar-navigation .nav-section-collapsible .nav-list .link-list {
875
902
  border-left: none;
876
903
  margin-left: 0;
877
904
  padding-left: var(--space-5);
878
905
  }
879
906
 
907
+ #sidebar-navigation .nav-section-collapsible .nav-list .link-list > li:last-child {
908
+ margin-bottom: 0;
909
+ }
910
+
880
911
  /*
881
912
  Improve chevron styling for details under link-list, using SVG chevron that matches nav-section-chevron
882
913
  We need to avoid adding the element in class content generation so it doesn't break darkfish styles
883
914
  */
884
- nav li details:has(.link-list) > summary {
915
+ #sidebar-navigation li details:has(.link-list) > summary {
885
916
  display: inline-flex;
886
917
  align-items: center;
887
918
  gap: var(--space-2);
888
919
  cursor: pointer;
889
920
  }
890
921
 
891
- nav li details:has(.link-list) > summary::after {
922
+ #sidebar-navigation li details:has(.link-list) > summary::after {
892
923
  content: '';
893
924
  position: static;
894
925
  display: inline-block;
@@ -908,11 +939,11 @@ nav li details:has(.link-list) > summary::after {
908
939
  transition: transform var(--transition-base), background-color var(--transition-fast);
909
940
  }
910
941
 
911
- nav li details:has(.link-list) > summary:hover::after {
942
+ #sidebar-navigation li details:has(.link-list) > summary:hover::after {
912
943
  background-color: var(--color-accent-primary);
913
944
  }
914
945
 
915
- nav li details:has(.link-list)[open] > summary::after {
946
+ #sidebar-navigation li details:has(.link-list)[open] > summary::after {
916
947
  transform: rotate(90deg);
917
948
  background-color: var(--color-accent-primary);
918
949
  }
@@ -921,6 +952,7 @@ nav li details:has(.link-list)[open] > summary::after {
921
952
  main {
922
953
  grid-area: main;
923
954
  width: 100%;
955
+ min-width: 0;
924
956
  max-width: var(--layout-content-max-width);
925
957
  margin: 0 auto;
926
958
  padding: var(--space-12) var(--space-8);
@@ -932,7 +964,7 @@ main {
932
964
 
933
965
  /* Desktop: hide hamburger */
934
966
  @media (width >= 1024px) {
935
- #navigation-toggle {
967
+ #sidebar-navigation-toggle {
936
968
  display: none;
937
969
  }
938
970
  }
@@ -955,13 +987,38 @@ main {
955
987
  }
956
988
  }
957
989
 
958
- main h1[class] {
990
+ main h1.page-title {
991
+ display: grid;
992
+ gap: var(--space-2);
993
+ justify-items: start;
959
994
  margin-top: 0;
960
- margin-bottom: 1em;
961
- font-size: 2.5em;
995
+ margin-bottom: var(--space-8);
962
996
  color: var(--color-accent-primary);
963
997
  }
964
998
 
999
+ main h1.page-title .page-title-kind {
1000
+ display: inline-flex;
1001
+ align-items: center;
1002
+ min-height: 1.625rem;
1003
+ padding: 0 var(--space-2);
1004
+ border: 1px solid var(--color-title-kind-border);
1005
+ border-radius: var(--radius-md);
1006
+ background: var(--color-accent-subtle);
1007
+ color: var(--color-accent-primary);
1008
+ font-size: var(--font-size-sm);
1009
+ font-weight: var(--font-weight-semibold);
1010
+ line-height: 1;
1011
+ }
1012
+
1013
+ main h1.page-title .page-title-name {
1014
+ max-width: 100%;
1015
+ color: var(--color-accent-primary);
1016
+ font-size: var(--font-size-3xl);
1017
+ font-weight: var(--font-weight-bold);
1018
+ line-height: var(--line-height-tight);
1019
+ overflow-wrap: anywhere;
1020
+ }
1021
+
965
1022
  main h1,
966
1023
  main h2,
967
1024
  main h3,
@@ -1037,7 +1094,6 @@ main h6 a:hover {
1037
1094
  .ruby-ivar { color: var(--code-orange); }
1038
1095
  .ruby-operator { color: var(--code-green); }
1039
1096
  .ruby-identifier { color: var(--code-blue); }
1040
- .ruby-node { color: var(--code-purple); }
1041
1097
 
1042
1098
  .ruby-comment {
1043
1099
  color: var(--color-neutral-500);
@@ -1053,7 +1109,6 @@ main h6 a:hover {
1053
1109
  [data-theme="dark"] .ruby-ivar { color: var(--code-orange); }
1054
1110
  [data-theme="dark"] .ruby-operator { color: var(--code-green); }
1055
1111
  [data-theme="dark"] .ruby-identifier { color: var(--code-blue); }
1056
- [data-theme="dark"] .ruby-node { color: var(--code-purple); }
1057
1112
 
1058
1113
  [data-theme="dark"] .ruby-comment {
1059
1114
  color: var(--color-neutral-400);
@@ -1064,21 +1119,47 @@ main h6 a:hover {
1064
1119
  [data-theme="dark"] .ruby-string { color: var(--code-green); }
1065
1120
 
1066
1121
  /* C Syntax Highlighting */
1067
- .c-keyword { color: var(--c-keyword); }
1068
- .c-type { color: var(--c-type); }
1069
- .c-macro { color: var(--c-macro); }
1070
- .c-function { color: var(--c-function); }
1071
- .c-identifier { color: var(--c-identifier); }
1072
- .c-operator { color: var(--c-operator); }
1073
- .c-preprocessor { color: var(--c-preprocessor); }
1074
- .c-value { color: var(--c-value); }
1075
- .c-string { color: var(--c-string); }
1122
+ .c-keyword { color: var(--code-red); }
1123
+ .c-type { color: var(--code-cyan); }
1124
+ .c-macro { color: var(--code-orange); }
1125
+ .c-function { color: var(--code-purple); }
1126
+ .c-identifier { color: var(--color-text-secondary); }
1127
+ .c-operator { color: var(--code-green); }
1128
+ .c-preprocessor { color: var(--code-purple); }
1129
+ .c-value { color: var(--code-orange); }
1130
+ .c-string { color: var(--code-green); }
1076
1131
 
1077
1132
  .c-comment {
1078
- color: var(--c-comment);
1133
+ color: var(--code-gray);
1079
1134
  font-style: italic;
1080
1135
  }
1081
1136
 
1137
+ /* Shell Syntax Highlighting */
1138
+ .sh-prompt { color: var(--code-gray); }
1139
+ .sh-command { color: var(--code-blue); }
1140
+ .sh-option { color: var(--code-cyan); }
1141
+ .sh-string { color: var(--code-green); }
1142
+ .sh-envvar { color: var(--code-purple); }
1143
+
1144
+ .sh-comment {
1145
+ color: var(--code-gray);
1146
+ font-style: italic;
1147
+ }
1148
+
1149
+ /* RBS Type Signature Links — linked types get subtle underline */
1150
+ a.rbs-type {
1151
+ color: inherit;
1152
+ text-decoration: underline;
1153
+ text-decoration-color: var(--color-border-default);
1154
+ text-underline-offset: 0.2em;
1155
+ transition: text-decoration-color var(--transition-fast), color var(--transition-fast);
1156
+ }
1157
+
1158
+ a.rbs-type:hover {
1159
+ color: var(--color-link-hover);
1160
+ text-decoration-color: var(--color-link-hover);
1161
+ }
1162
+
1082
1163
  /* Emphasis */
1083
1164
  em {
1084
1165
  text-decoration-color: var(--color-emphasis-decoration);
@@ -1099,6 +1180,22 @@ main p {
1099
1180
  margin-bottom: var(--space-4);
1100
1181
  }
1101
1182
 
1183
+ main .rdoc-logo {
1184
+ margin: var(--space-6) 0 var(--space-8);
1185
+ text-align: center;
1186
+ }
1187
+
1188
+ main .rdoc-logo img {
1189
+ display: inline-block;
1190
+ width: clamp(120px, 14vw, 168px);
1191
+ height: auto;
1192
+ filter: drop-shadow(0 8px 18px rgb(230 41 35 / 8%));
1193
+ }
1194
+
1195
+ [data-theme="dark"] main .rdoc-logo img {
1196
+ filter: saturate(0.58) brightness(1.4) drop-shadow(0 8px 22px rgb(235 84 79 / 16%));
1197
+ }
1198
+
1102
1199
  /* Preformatted Text */
1103
1200
  main pre {
1104
1201
  margin: 1.2em 0.5em;
@@ -1162,17 +1259,19 @@ main dd p:first-child {
1162
1259
 
1163
1260
  /* Headers within Main */
1164
1261
  main header h2 {
1165
- margin-top: 2em;
1262
+ margin: var(--space-8) 0 var(--space-4);
1263
+ padding-top: var(--space-3);
1166
1264
  border-width: 0;
1167
- border-top: 4px solid var(--color-border-default);
1168
- font-size: 130%;
1265
+ border-top: 1px solid var(--color-border-default);
1266
+ font-size: var(--font-size-2xl);
1169
1267
  }
1170
1268
 
1171
1269
  main header h3 {
1172
- margin: 2em 0 1.5em;
1270
+ margin: var(--space-8) 0 var(--space-6);
1271
+ padding-top: var(--space-3);
1173
1272
  border-width: 0;
1174
- border-top: 3px solid var(--color-border-default);
1175
- font-size: 120%;
1273
+ border-top: 1px solid var(--color-border-default);
1274
+ font-size: var(--font-size-xl);
1176
1275
  }
1177
1276
 
1178
1277
  h1:target,
@@ -1245,8 +1344,7 @@ main .method-source-code {
1245
1344
  }
1246
1345
 
1247
1346
  main .method-source-code pre {
1248
- border-color: var(--color-accent-hover);
1249
- border-left: 3px solid var(--color-accent-primary);
1347
+ border-color: var(--color-code-border);
1250
1348
  width: 100%;
1251
1349
  box-sizing: border-box;
1252
1350
  transition: border-color var(--transition-fast);
@@ -1290,6 +1388,7 @@ main .method-description .method-calls-super {
1290
1388
  }
1291
1389
 
1292
1390
  main .method-detail {
1391
+ position: relative;
1293
1392
  margin-bottom: 2.5em;
1294
1393
  }
1295
1394
 
@@ -1300,32 +1399,106 @@ main .method-detail:target {
1300
1399
  }
1301
1400
 
1302
1401
  main .method-header {
1303
- display: inline-block;
1304
- max-width: calc(100% - 6em); /* 6em is the width of the source code toggle */
1402
+ display: grid;
1403
+ grid-template-columns: minmax(0, 1fr) auto;
1404
+ gap: var(--space-4);
1405
+ align-items: center;
1406
+ background: var(--color-sig-bg);
1407
+ border: 1px solid var(--color-sig-border);
1408
+ border-radius: var(--radius-md);
1409
+ padding: var(--space-4);
1410
+ }
1411
+
1412
+ main .method-heading-group {
1413
+ min-width: 0;
1305
1414
  }
1306
1415
 
1307
1416
  main .method-heading {
1308
- position: relative;
1417
+ display: flex;
1418
+ flex-direction: column;
1419
+ align-items: flex-start;
1309
1420
  font-family: var(--font-code);
1310
1421
  font-size: var(--font-size-lg);
1311
1422
  font-weight: var(--font-weight-semibold);
1312
- margin-bottom: var(--space-3);
1423
+ line-height: var(--line-height-normal);
1424
+ }
1425
+
1426
+ main .method-heading a {
1427
+ color: inherit;
1428
+ text-decoration: none;
1429
+ }
1430
+
1431
+ main .method-heading a:hover {
1432
+ color: var(--color-accent-primary);
1433
+ }
1434
+
1435
+ main .method-heading .method-callseq {
1436
+ display: block;
1313
1437
  }
1314
1438
 
1315
1439
  main .method-heading .method-name {
1316
1440
  font-weight: var(--font-weight-semibold);
1441
+ overflow-wrap: anywhere;
1317
1442
  }
1318
1443
 
1319
1444
  main .method-heading .method-args {
1320
1445
  font-weight: var(--font-weight-normal);
1321
1446
  }
1322
1447
 
1448
+ /* Type signatures — overloads stack as a code block under the method name */
1449
+ pre.method-type-signature {
1450
+ position: relative;
1451
+ margin: var(--space-2) 0 0;
1452
+ padding: var(--space-2) 0 0;
1453
+ background: transparent;
1454
+ border: none;
1455
+ border-radius: 0;
1456
+ overflow: visible;
1457
+ font-family: var(--font-code);
1458
+ font-size: var(--font-size-sm);
1459
+ color: var(--color-text-tertiary);
1460
+ line-height: var(--line-height-tight);
1461
+ white-space: pre-wrap;
1462
+ overflow-wrap: break-word;
1463
+ }
1464
+
1465
+ pre.method-type-signature::before {
1466
+ content: '';
1467
+ position: absolute;
1468
+ top: 0;
1469
+ left: 0;
1470
+ right: 0;
1471
+ border-top: 1px dotted var(--color-border-default);
1472
+ }
1473
+
1474
+ pre.method-type-signature code {
1475
+ font-family: inherit;
1476
+ font-size: inherit;
1477
+ color: inherit;
1478
+ background: transparent;
1479
+ padding: 0;
1480
+ }
1481
+
1482
+ /* Attribute type sigs render inline after the [RW] badge */
1483
+ main .method-heading > .method-type-signature {
1484
+ display: inline;
1485
+ margin-left: var(--space-2);
1486
+ font-family: var(--font-code);
1487
+ font-size: var(--font-size-sm);
1488
+ color: var(--color-text-secondary);
1489
+ }
1490
+
1323
1491
  main .method-controls {
1324
- float: right;
1492
+ position: static;
1493
+ align-self: center;
1325
1494
  }
1326
1495
 
1327
1496
  main .method-controls summary {
1328
- display: inline-block;
1497
+ display: inline-flex;
1498
+ align-items: center;
1499
+ justify-content: center;
1500
+ gap: var(--space-2);
1501
+ min-height: 30px;
1329
1502
  line-height: 20px;
1330
1503
  color: var(--color-accent-primary);
1331
1504
  cursor: pointer;
@@ -1342,6 +1515,7 @@ main .method-controls summary {
1342
1515
  transform var(--transition-fast);
1343
1516
  user-select: none;
1344
1517
  -webkit-user-select: none;
1518
+ white-space: nowrap;
1345
1519
  list-style: none;
1346
1520
  }
1347
1521
 
@@ -1359,19 +1533,31 @@ main .method-controls summary:active {
1359
1533
  transform: scale(0.96);
1360
1534
  }
1361
1535
 
1536
+ main .method-source-icon {
1537
+ font-family: var(--font-code);
1538
+ font-size: var(--font-size-xs);
1539
+ line-height: 1;
1540
+ opacity: 0.8;
1541
+ }
1542
+
1362
1543
  [data-theme="dark"] main .method-controls summary:hover {
1363
1544
  background: var(--color-accent-subtle-hover);
1364
1545
  border-color: var(--color-primary-500);
1365
1546
  }
1366
1547
 
1367
- main .method-description,
1368
- main .aliases {
1369
- margin-top: 0.75em;
1548
+ main .method-description {
1370
1549
  color: var(--color-text-primary);
1550
+ line-height: var(--line-height-relaxed);
1551
+ }
1552
+
1553
+ main .method-header ~ .method-description {
1554
+ margin-top: var(--space-5);
1555
+ padding-left: var(--space-2);
1371
1556
  }
1372
1557
 
1373
1558
  main .aliases {
1374
- padding-top: 4px;
1559
+ margin-top: var(--space-4);
1560
+ padding-top: var(--space-1);
1375
1561
  font-style: italic;
1376
1562
  cursor: default;
1377
1563
  }
@@ -1401,7 +1587,7 @@ main .attribute-access-type {
1401
1587
 
1402
1588
  /* Small screen adjustments */
1403
1589
  @media (width <= 480px) {
1404
- nav {
1590
+ #sidebar-navigation {
1405
1591
  width: 85%;
1406
1592
  max-width: 320px;
1407
1593
  }
@@ -1418,9 +1604,22 @@ main .attribute-access-type {
1418
1604
  white-space: nowrap;
1419
1605
  }
1420
1606
 
1607
+ main .method-heading {
1608
+ font-size: var(--font-size-base);
1609
+ }
1610
+
1611
+ pre.method-type-signature {
1612
+ font-size: var(--font-size-xs);
1613
+ }
1614
+
1615
+ main .method-header {
1616
+ grid-template-columns: 1fr;
1617
+ gap: var(--space-3);
1618
+ padding: var(--space-2);
1619
+ }
1620
+
1421
1621
  main .method-controls {
1422
- margin-top: 10px;
1423
- float: none;
1622
+ justify-self: start;
1424
1623
  }
1425
1624
  }
1426
1625
 
@@ -1602,7 +1801,7 @@ main .attribute-access-type {
1602
1801
  }
1603
1802
 
1604
1803
  /* 10. Right Sidebar - Table of Contents */
1605
- aside.table-of-contents {
1804
+ #table-of-contents {
1606
1805
  grid-area: toc;
1607
1806
  align-self: start;
1608
1807
  position: sticky;
@@ -1613,43 +1812,45 @@ aside.table-of-contents {
1613
1812
  font-size: var(--font-size-base);
1614
1813
  }
1615
1814
 
1616
- aside.table-of-contents * {
1617
- border-right: none !important;
1618
- outline: none !important;
1619
- }
1620
-
1621
- aside.table-of-contents .toc-sticky {
1815
+ #table-of-contents .toc-sticky {
1622
1816
  display: flex;
1623
1817
  flex-direction: column;
1624
1818
 
1625
- /* Exclude header height and top/bottom padding of aside.table-of-contents */
1819
+ /* Exclude header height and top/bottom padding of #table-of-contents */
1626
1820
  height: calc(100vh - var(--layout-header-height) - var(--space-8) * 2);
1627
1821
  }
1628
1822
 
1629
- aside.table-of-contents .toc-sticky nav {
1630
- height: auto;
1823
+ #table-of-contents .toc-nav {
1824
+ flex: 1 1 auto;
1825
+ min-height: 0;
1826
+ overflow-y: auto;
1827
+ scrollbar-width: thin;
1828
+ scrollbar-color: var(--color-border-default) transparent;
1631
1829
  }
1632
1830
 
1633
- aside.table-of-contents .toc-list > .toc-h2 {
1831
+ #table-of-contents .toc-list > .toc-h2 {
1634
1832
  margin-left: var(--space-4);
1635
1833
  }
1636
1834
 
1637
- aside.table-of-contents .toc-list > .toc-h3 {
1835
+ #table-of-contents .toc-list > .toc-h3 {
1638
1836
  margin-left: var(--space-8);
1639
1837
  }
1640
1838
 
1641
1839
  /* Hide TOC on mobile/tablet */
1642
1840
  @media (width <= 1279px) {
1643
- aside.table-of-contents {
1841
+ #table-of-contents {
1644
1842
  display: none;
1645
1843
  }
1844
+ }
1646
1845
 
1846
+ /* Preserve the desktop sidebar/content grid when the TOC is hidden */
1847
+ @media (width >= 1024px) and (width <= 1279px) {
1647
1848
  body.has-toc {
1648
1849
  grid-template-columns: var(--layout-sidebar-width) 1fr;
1649
1850
  grid-template-areas:
1650
1851
  "header header"
1651
1852
  "nav main"
1652
- "footer footer";
1853
+ "nav footer";
1653
1854
  }
1654
1855
  }
1655
1856
 
@@ -1665,31 +1866,31 @@ aside.table-of-contents .toc-list > .toc-h3 {
1665
1866
  }
1666
1867
  }
1667
1868
 
1668
- .table-of-contents h3 {
1869
+ #table-of-contents h3 {
1669
1870
  font-size: var(--font-size-lg);
1670
1871
  font-weight: var(--font-weight-semibold);
1671
1872
  margin: 0 0 var(--space-5) 0;
1672
1873
  color: var(--color-text-primary);
1673
1874
  }
1674
1875
 
1675
- .table-of-contents ul {
1876
+ #table-of-contents ul {
1676
1877
  margin: 0;
1677
1878
  padding: 0;
1678
1879
  list-style: none;
1679
1880
  }
1680
1881
 
1681
- .table-of-contents ul ul {
1882
+ #table-of-contents ul ul {
1682
1883
  margin-top: var(--space-3);
1683
1884
  margin-left: var(--space-5);
1684
1885
  border-left: 1px solid var(--color-border-default);
1685
1886
  padding-left: var(--space-4);
1686
1887
  }
1687
1888
 
1688
- .table-of-contents li {
1889
+ #table-of-contents li {
1689
1890
  margin-bottom: var(--space-3);
1690
1891
  }
1691
1892
 
1692
- .table-of-contents a {
1893
+ #table-of-contents a {
1693
1894
  display: block;
1694
1895
  color: var(--color-text-secondary);
1695
1896
  text-decoration: none;
@@ -1700,32 +1901,46 @@ aside.table-of-contents .toc-list > .toc-h3 {
1700
1901
  }
1701
1902
 
1702
1903
  /* Nav hover styles sit here to keep specificity ordering with TOC links */
1703
- nav a:hover {
1904
+ #sidebar-navigation a:hover {
1704
1905
  color: var(--color-link-hover);
1705
1906
  text-decoration: underline;
1706
1907
  }
1707
1908
 
1708
- .table-of-contents a:hover {
1909
+ #table-of-contents a:hover {
1709
1910
  color: var(--color-link-hover);
1911
+ text-decoration: underline;
1710
1912
  }
1711
1913
 
1712
- .table-of-contents a.active {
1914
+ #table-of-contents a:focus-visible {
1915
+ outline: 2px solid var(--color-accent-primary);
1916
+ outline-offset: 2px;
1917
+ border-radius: var(--radius-sm);
1918
+ }
1919
+
1920
+ #table-of-contents a.active {
1713
1921
  color: var(--color-accent-primary);
1714
1922
  font-weight: var(--font-weight-medium);
1715
1923
  }
1716
1924
 
1717
1925
  ol.breadcrumb {
1718
1926
  display: flex;
1927
+ flex-wrap: wrap;
1719
1928
  padding: 0;
1720
1929
  margin: 0 0 1em;
1721
1930
  }
1722
1931
 
1723
1932
  ol.breadcrumb li {
1724
1933
  display: block;
1934
+ min-width: 0;
1725
1935
  list-style: none;
1726
1936
  font-size: 125%;
1727
1937
  }
1728
1938
 
1939
+ ol.breadcrumb a,
1940
+ ol.breadcrumb li > span:not(.separator) {
1941
+ overflow-wrap: anywhere;
1942
+ }
1943
+
1729
1944
  /* 11. Footer */
1730
1945
  footer.site-footer {
1731
1946
  grid-area: footer;
@@ -1917,6 +2132,8 @@ footer.site-footer .footer-bottom:first-child {
1917
2132
  }
1918
2133
 
1919
2134
  header.top-navbar #search-field {
2135
+ display: block;
2136
+ box-sizing: border-box;
1920
2137
  width: 100%;
1921
2138
  padding: var(--space-2) var(--space-4);
1922
2139
  border: 1px solid var(--color-border-default);
@@ -1939,10 +2156,11 @@ header.top-navbar #search-field::placeholder {
1939
2156
 
1940
2157
  /* Search results dropdown in navbar */
1941
2158
  header.top-navbar #search-results-desktop {
2159
+ box-sizing: border-box;
1942
2160
  position: absolute;
1943
2161
  top: calc(100% + var(--space-2));
1944
2162
  left: 0;
1945
- width: var(--layout-search-width);
2163
+ width: 100%;
1946
2164
  max-height: 60vh;
1947
2165
  background: var(--color-background-primary);
1948
2166
  border: 1px solid var(--color-border-default);