rdoc 8.0.0 → 8.1.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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +1 -3
  3. data/RI.md +75 -75
  4. data/exe/rdoc +2 -2
  5. data/lib/rdoc/code_object/alias.rb +71 -69
  6. data/lib/rdoc/code_object/any_method.rb +305 -303
  7. data/lib/rdoc/code_object/attr.rb +150 -148
  8. data/lib/rdoc/code_object/class_module.rb +798 -792
  9. data/lib/rdoc/code_object/constant.rb +175 -173
  10. data/lib/rdoc/code_object/context/section.rb +142 -138
  11. data/lib/rdoc/code_object/context.rb +926 -958
  12. data/lib/rdoc/code_object/extend.rb +7 -5
  13. data/lib/rdoc/code_object/include.rb +7 -5
  14. data/lib/rdoc/code_object/method_attr.rb +326 -319
  15. data/lib/rdoc/code_object/mixin.rb +97 -95
  16. data/lib/rdoc/code_object/normal_class.rb +77 -78
  17. data/lib/rdoc/code_object/normal_module.rb +61 -59
  18. data/lib/rdoc/code_object/require.rb +23 -39
  19. data/lib/rdoc/code_object/single_class.rb +21 -19
  20. data/lib/rdoc/code_object/top_level.rb +212 -219
  21. data/lib/rdoc/code_object.rb +305 -303
  22. data/lib/rdoc/comment.rb +275 -273
  23. data/lib/rdoc/cross_reference.rb +192 -190
  24. data/lib/rdoc/encoding.rb +105 -103
  25. data/lib/rdoc/erb_partial.rb +13 -11
  26. data/lib/rdoc/erbio.rb +29 -27
  27. data/lib/rdoc/generator/aliki.rb +161 -153
  28. data/lib/rdoc/generator/darkfish.rb +645 -635
  29. data/lib/rdoc/generator/json_index.rb +233 -229
  30. data/lib/rdoc/generator/markup.rb +164 -146
  31. data/lib/rdoc/generator/pot/message_extractor.rb +57 -51
  32. data/lib/rdoc/generator/pot/po.rb +52 -51
  33. data/lib/rdoc/generator/pot/po_entry.rb +138 -132
  34. data/lib/rdoc/generator/pot.rb +85 -81
  35. data/lib/rdoc/generator/ri.rb +23 -19
  36. data/lib/rdoc/generator/template/aliki/DESIGN.md +6 -4
  37. data/lib/rdoc/generator/template/aliki/_footer.rhtml +1 -1
  38. data/lib/rdoc/generator/template/aliki/_head.rhtml +10 -10
  39. data/lib/rdoc/generator/template/aliki/_header.rhtml +29 -44
  40. data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +4 -4
  41. data/lib/rdoc/generator/template/aliki/css/rdoc.css +207 -178
  42. data/lib/rdoc/generator/template/aliki/js/aliki.js +60 -84
  43. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +1 -1
  44. data/lib/rdoc/generator.rb +48 -46
  45. data/lib/rdoc/i18n/locale.rb +99 -95
  46. data/lib/rdoc/i18n/text.rb +109 -105
  47. data/lib/rdoc/i18n.rb +7 -5
  48. data/lib/rdoc/markdown/byte_runtime.rb +80 -0
  49. data/lib/rdoc/markdown.kpeg +15 -11
  50. data/lib/rdoc/markdown.rb +40 -47
  51. data/lib/rdoc/markup/block_quote.rb +12 -8
  52. data/lib/rdoc/markup/document.rb +127 -123
  53. data/lib/rdoc/markup/formatter.rb +219 -215
  54. data/lib/rdoc/markup/include.rb +33 -29
  55. data/lib/rdoc/markup/indented_paragraph.rb +37 -33
  56. data/lib/rdoc/markup/inline_parser.rb +281 -277
  57. data/lib/rdoc/markup/list.rb +80 -88
  58. data/lib/rdoc/markup/list_item.rb +73 -85
  59. data/lib/rdoc/markup/paragraph.rb +23 -19
  60. data/lib/rdoc/markup/parser.rb +501 -497
  61. data/lib/rdoc/markup/pre_process.rb +283 -279
  62. data/lib/rdoc/markup/raw.rb +2 -2
  63. data/lib/rdoc/markup/rule.rb +16 -12
  64. data/lib/rdoc/markup/to_ansi.rb +143 -139
  65. data/lib/rdoc/markup/to_bs.rb +72 -68
  66. data/lib/rdoc/markup/to_html.rb +594 -565
  67. data/lib/rdoc/markup/to_html_crossref.rb +234 -230
  68. data/lib/rdoc/markup/to_html_snippet.rb +232 -227
  69. data/lib/rdoc/markup/to_joined_paragraph.rb +36 -32
  70. data/lib/rdoc/markup/to_label.rb +63 -59
  71. data/lib/rdoc/markup/to_markdown.rb +212 -208
  72. data/lib/rdoc/markup/to_rdoc.rb +336 -332
  73. data/lib/rdoc/markup/to_table_of_contents.rb +66 -62
  74. data/lib/rdoc/markup/to_test.rb +60 -56
  75. data/lib/rdoc/markup/to_tt_only.rb +84 -80
  76. data/lib/rdoc/markup/verbatim.rb +62 -58
  77. data/lib/rdoc/markup.rb +198 -196
  78. data/lib/rdoc/options.rb +1063 -1061
  79. data/lib/rdoc/parser/c.rb +1039 -1037
  80. data/lib/rdoc/parser/changelog.rb +319 -315
  81. data/lib/rdoc/parser/markdown.rb +17 -13
  82. data/lib/rdoc/parser/rbs.rb +239 -235
  83. data/lib/rdoc/parser/rd.rb +17 -13
  84. data/lib/rdoc/parser/ruby.rb +1245 -1124
  85. data/lib/rdoc/parser/ruby_colorizer.rb +263 -213
  86. data/lib/rdoc/parser/simple.rb +31 -27
  87. data/lib/rdoc/parser/text.rb +12 -8
  88. data/lib/rdoc/parser.rb +228 -220
  89. data/lib/rdoc/rbs_helper.rb +1 -1
  90. data/lib/rdoc/rd/inline.rb +57 -53
  91. data/lib/rdoc/rd.rb +90 -88
  92. data/lib/rdoc/rdoc.rb +500 -491
  93. data/lib/rdoc/ri/driver.rb +1140 -1135
  94. data/lib/rdoc/ri/formatter.rb +7 -3
  95. data/lib/rdoc/ri/paths.rb +140 -136
  96. data/lib/rdoc/ri/servlet.rb +354 -350
  97. data/lib/rdoc/ri/store.rb +4 -2
  98. data/lib/rdoc/ri/task.rb +55 -51
  99. data/lib/rdoc/ri.rb +14 -12
  100. data/lib/rdoc/rubygems_hook.rb +183 -181
  101. data/lib/rdoc/server.rb +349 -347
  102. data/lib/rdoc/stats/normal.rb +46 -42
  103. data/lib/rdoc/stats/quiet.rb +39 -35
  104. data/lib/rdoc/stats/verbose.rb +35 -31
  105. data/lib/rdoc/stats.rb +365 -363
  106. data/lib/rdoc/store.rb +888 -902
  107. data/lib/rdoc/task.rb +260 -256
  108. data/lib/rdoc/text.rb +135 -133
  109. data/lib/rdoc/token_stream.rb +101 -93
  110. data/lib/rdoc/tom_doc.rb +203 -201
  111. data/lib/rdoc/version.rb +1 -1
  112. metadata +4 -5
  113. data/lib/rdoc/markdown/literals.kpeg +0 -21
  114. data/lib/rdoc/markdown/literals.rb +0 -454
@@ -3,54 +3,39 @@
3
3
  <%= h @options.title %>
4
4
  </a>
5
5
 
6
- <!-- Desktop search bar -->
7
- <div class="navbar-search navbar-search-desktop" role="search">
8
- <form action="#" method="get" accept-charset="utf-8">
9
- <input id="search-field" role="combobox" aria-label="Search"
10
- aria-autocomplete="list" aria-controls="search-results-desktop"
11
- type="text" name="search" placeholder="Search (/) for a class, method..."
12
- spellcheck="false" autocomplete="off"
13
- title="Type to search, Up and Down to navigate, Enter to load">
14
- <ul id="search-results-desktop" aria-label="Search Results"
15
- aria-busy="false" aria-expanded="false"
16
- aria-atomic="false" class="initially-hidden search-results"></ul>
17
- </form>
18
- </div>
19
-
20
- <!-- Mobile search icon button -->
21
- <button id="search-toggle" class="navbar-search-mobile" aria-label="Open search" type="button">
22
- <span aria-hidden="true">🔍</span>
23
- </button>
24
-
25
- <!-- Theme toggle button -->
26
- <button id="theme-toggle" class="theme-toggle" aria-label="Switch to dark mode" type="button">
27
- <span class="theme-toggle-icon" aria-hidden="true">🌙</span>
28
- </button>
29
- </header>
6
+ <div class="navbar-search" data-search-container>
7
+ <button id="search-toggle" class="navbar-search-mobile" aria-label="Open search"
8
+ aria-controls="search-surface" aria-expanded="false" type="button">
9
+ <span aria-hidden="true">🔍</span>
10
+ </button>
30
11
 
31
- <!-- Search Modal (Mobile) -->
32
- <div id="search-modal" class="search-modal" hidden aria-modal="true" role="dialog" aria-label="Search">
33
- <div class="search-modal-backdrop"></div>
34
- <div class="search-modal-content">
35
- <div class="search-modal-header">
36
- <form class="search-modal-form" action="#" method="get" accept-charset="utf-8">
37
- <span class="search-modal-icon" aria-hidden="true">🔍</span>
38
- <input id="search-field-mobile" role="combobox" aria-label="Search"
39
- aria-autocomplete="list" aria-controls="search-results-mobile"
40
- type="text" name="search" placeholder="Search documentation"
41
- spellcheck="false" autocomplete="off">
42
- <button type="button" class="search-modal-close" aria-label="Close search" id="search-modal-close">
12
+ <div class="search-backdrop" data-search-close></div>
13
+ <div id="search-surface" class="search-surface">
14
+ <form class="search-form" role="search" action="#" method="get" accept-charset="utf-8">
15
+ <span class="search-icon" aria-hidden="true">🔍</span>
16
+ <input id="search-field" role="combobox" aria-label="Search"
17
+ aria-autocomplete="list" aria-controls="search-results"
18
+ type="text" name="search" placeholder="Search (/) for a class, method..."
19
+ spellcheck="false" autocomplete="off"
20
+ title="Type to search, Up and Down to navigate, Enter to load">
21
+ <button type="button" class="search-close" aria-label="Close search" data-search-close>
43
22
  <span aria-hidden="true">esc</span>
44
23
  </button>
45
24
  </form>
46
- </div>
47
- <div class="search-modal-body">
48
- <ul id="search-results-mobile" aria-label="Search Results"
49
- aria-busy="false" aria-expanded="false"
50
- aria-atomic="false" class="search-results search-modal-results initially-hidden"></ul>
51
- <div class="search-modal-empty">
52
- <p>No recent searches</p>
25
+
26
+ <div class="search-body">
27
+ <ul id="search-results" aria-label="Search Results"
28
+ aria-busy="false" aria-expanded="false"
29
+ aria-atomic="false" class="initially-hidden search-results"></ul>
30
+ <div class="search-empty">
31
+ <p>No recent searches</p>
32
+ </div>
53
33
  </div>
54
34
  </div>
55
35
  </div>
56
- </div>
36
+
37
+ <!-- Theme toggle button -->
38
+ <button id="theme-toggle" class="theme-toggle" aria-label="Switch to dark mode" type="button">
39
+ <span class="theme-toggle-icon" aria-hidden="true">🌙</span>
40
+ </button>
41
+ </header>
@@ -1,14 +1,14 @@
1
- <div id="search-section" role="search" class="project-section initially-hidden">
2
- <form action="#" method="get" accept-charset="utf-8">
1
+ <div id="search-section" class="project-section initially-hidden" data-search-container>
2
+ <form role="search" action="#" method="get" accept-charset="utf-8">
3
3
  <div id="search-field-wrapper">
4
4
  <input id="search-field" role="combobox" aria-label="Search"
5
- aria-autocomplete="list" aria-controls="search-results-desktop"
5
+ aria-autocomplete="list" aria-controls="search-results"
6
6
  type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
7
7
  autocomplete="off"
8
8
  title="Type to search, Up and Down to navigate, Enter to load">
9
9
  </div>
10
10
 
11
- <ul id="search-results-desktop" aria-label="Search Results"
11
+ <ul id="search-results" aria-label="Search Results"
12
12
  aria-busy="false" aria-expanded="false"
13
13
  aria-atomic="false" class="initially-hidden search-results"></ul>
14
14
  </form>
@@ -483,10 +483,17 @@ header.top-navbar .navbar-search {
483
483
  padding: 0 var(--space-8);
484
484
  }
485
485
 
486
- header.top-navbar .navbar-search form {
486
+ header.top-navbar .search-surface {
487
487
  position: relative;
488
488
  width: min(100%, var(--layout-search-width));
489
489
  margin: 0;
490
+ }
491
+
492
+ header.top-navbar .navbar-search form {
493
+ position: relative;
494
+ box-sizing: border-box;
495
+ width: 100%;
496
+ margin: 0;
490
497
  padding: 0;
491
498
  }
492
499
 
@@ -558,11 +565,15 @@ header.top-navbar .navbar-search form {
558
565
  gap: var(--space-4);
559
566
  }
560
567
 
561
- /* Hide desktop search bar on mobile */
562
- header.top-navbar .navbar-search-desktop {
568
+ header.top-navbar .search-surface {
563
569
  display: none;
564
570
  }
565
571
 
572
+ header.top-navbar .navbar-search {
573
+ width: auto;
574
+ padding: 0;
575
+ }
576
+
566
577
  /* Show mobile search icon */
567
578
  .navbar-search-mobile {
568
579
  display: flex;
@@ -1625,181 +1636,14 @@ main .attribute-access-type {
1625
1636
 
1626
1637
 
1627
1638
 
1628
- /* 9. Search Modal (Mobile) */
1629
- .search-modal {
1630
- position: fixed;
1631
- inset: 0;
1632
- z-index: var(--z-modal);
1639
+ /* 9. Search */
1640
+ .search-backdrop,
1641
+ .search-icon,
1642
+ .search-close,
1643
+ .search-empty {
1633
1644
  display: none;
1634
1645
  }
1635
1646
 
1636
- .search-modal:not([hidden]) {
1637
- display: flex;
1638
- align-items: flex-start;
1639
- justify-content: center;
1640
- padding: var(--space-16) var(--space-4);
1641
- }
1642
-
1643
- /* Reduce padding on very small screens */
1644
- @media (width <= 420px) {
1645
- .search-modal:not([hidden]) {
1646
- padding: var(--space-4) var(--space-3);
1647
- }
1648
-
1649
- .search-modal-content {
1650
- border-radius: var(--radius-md);
1651
- }
1652
-
1653
- .search-modal-header {
1654
- padding: var(--space-3);
1655
- }
1656
-
1657
- .search-modal-body {
1658
- padding: var(--space-3);
1659
- }
1660
-
1661
- .search-modal-form input {
1662
- font-size: var(--font-size-base);
1663
- min-width: 0; /* Allow input to shrink */
1664
- }
1665
-
1666
- .search-modal-form {
1667
- gap: var(--space-2);
1668
- }
1669
-
1670
- .search-modal-close {
1671
- padding: var(--space-1) var(--space-3);
1672
- font-size: 0.75rem;
1673
- }
1674
- }
1675
-
1676
- .search-modal-backdrop {
1677
- position: absolute;
1678
- inset: 0;
1679
- background: var(--color-overlay);
1680
- z-index: 1;
1681
- }
1682
-
1683
- .search-modal-content {
1684
- position: relative;
1685
- z-index: 2;
1686
- background: var(--color-background-primary);
1687
- border-radius: var(--radius-lg);
1688
- box-shadow: var(--shadow-xl);
1689
- width: 100%;
1690
- max-width: 600px;
1691
- max-height: 80vh;
1692
- display: flex;
1693
- flex-direction: column;
1694
- }
1695
-
1696
- .search-modal-header {
1697
- padding: var(--space-6);
1698
- border-bottom: 1px solid var(--color-border-default);
1699
- }
1700
-
1701
- .search-modal-form {
1702
- display: flex;
1703
- align-items: center;
1704
- gap: var(--space-3);
1705
- }
1706
-
1707
- .search-modal-icon {
1708
- font-size: 1.5rem;
1709
- color: var(--color-text-secondary);
1710
- flex-shrink: 0;
1711
- }
1712
-
1713
- .search-modal-form input {
1714
- flex: 1;
1715
- border: none;
1716
- outline: none;
1717
- background: transparent;
1718
- font-size: var(--font-size-lg);
1719
- color: var(--color-text-primary);
1720
- padding: 0;
1721
- }
1722
-
1723
- .search-modal-form input::placeholder {
1724
- color: var(--color-text-tertiary);
1725
- }
1726
-
1727
- .search-modal-close {
1728
- padding: var(--space-2) var(--space-4);
1729
- background: var(--color-background-secondary);
1730
- border: 1px solid var(--color-border-default);
1731
- border-radius: var(--radius-md);
1732
- font-size: var(--font-size-sm);
1733
- color: var(--color-text-secondary);
1734
- cursor: pointer;
1735
- transition: background var(--transition-fast), border-color var(--transition-fast);
1736
- flex-shrink: 0;
1737
- }
1738
-
1739
- .search-modal-close:hover {
1740
- background: var(--color-background-tertiary);
1741
- border-color: var(--color-border-default);
1742
- }
1743
-
1744
- .search-modal-body {
1745
- padding: var(--space-6);
1746
- overflow-y: auto;
1747
- flex: 1;
1748
- }
1749
-
1750
- .search-modal-empty {
1751
- text-align: center;
1752
- color: var(--color-text-tertiary);
1753
- padding: var(--space-12) 0;
1754
- }
1755
-
1756
- .search-modal-results {
1757
- list-style: none;
1758
- margin: 0;
1759
- padding: 0;
1760
- }
1761
-
1762
- .search-modal-results.initially-hidden {
1763
- display: block !important; /* Override initially-hidden */
1764
- }
1765
-
1766
- .search-modal-results li {
1767
- padding: var(--space-3) var(--space-4);
1768
- border-radius: var(--radius-md);
1769
- cursor: pointer;
1770
- transition: background var(--transition-fast);
1771
- margin-bottom: var(--space-2);
1772
- }
1773
-
1774
- .search-modal-results li:hover {
1775
- background: var(--color-background-secondary);
1776
- }
1777
-
1778
- .search-modal-results a {
1779
- color: var(--color-text-primary);
1780
- }
1781
-
1782
- .search-modal-results .search-match {
1783
- margin: 0;
1784
- font-size: var(--font-size-base);
1785
- }
1786
-
1787
- .search-modal-results .search-match a {
1788
- text-decoration: none;
1789
- }
1790
-
1791
- .search-modal-results .search-namespace {
1792
- margin: var(--space-1) 0 0 0;
1793
- font-size: var(--font-size-sm);
1794
- color: var(--color-text-secondary);
1795
- }
1796
-
1797
- .search-modal-results .search-snippet {
1798
- margin: var(--space-1) 0 0 0;
1799
- font-size: var(--font-size-sm);
1800
- color: var(--color-text-tertiary);
1801
- }
1802
-
1803
1647
  /* 10. Right Sidebar - Table of Contents */
1804
1648
  #table-of-contents {
1805
1649
  grid-area: toc;
@@ -2069,9 +1913,11 @@ footer.site-footer .footer-bottom:first-child {
2069
1913
  }
2070
1914
 
2071
1915
  .search-results li {
1916
+ position: relative;
2072
1917
  list-style: none;
2073
1918
  border-bottom: 1px solid var(--color-border-default);
2074
1919
  margin-bottom: 0.5em;
1920
+ cursor: pointer;
2075
1921
  }
2076
1922
 
2077
1923
  .search-results li:last-child {
@@ -2084,6 +1930,16 @@ footer.site-footer .footer-bottom:first-child {
2084
1930
  margin: 0.5em;
2085
1931
  }
2086
1932
 
1933
+ .search-results .search-match a::after {
1934
+ content: "";
1935
+ position: absolute;
1936
+ inset: 0;
1937
+ }
1938
+
1939
+ .search-results li:focus-within {
1940
+ background: var(--color-code-bg);
1941
+ }
1942
+
2087
1943
  .search-results .search-namespace {
2088
1944
  font-weight: bold;
2089
1945
  }
@@ -2155,7 +2011,7 @@ header.top-navbar #search-field::placeholder {
2155
2011
  }
2156
2012
 
2157
2013
  /* Search results dropdown in navbar */
2158
- header.top-navbar #search-results-desktop {
2014
+ header.top-navbar #search-results {
2159
2015
  box-sizing: border-box;
2160
2016
  position: absolute;
2161
2017
  top: calc(100% + var(--space-2));
@@ -2172,10 +2028,183 @@ header.top-navbar #search-results-desktop {
2172
2028
  padding: 0;
2173
2029
  }
2174
2030
 
2175
- header.top-navbar #search-results-desktop.initially-hidden {
2031
+ header.top-navbar #search-results.initially-hidden {
2176
2032
  display: none;
2177
2033
  }
2178
2034
 
2179
- header.top-navbar #search-results-desktop[aria-expanded="false"] {
2035
+ header.top-navbar #search-results[aria-expanded="false"] {
2180
2036
  display: none;
2181
2037
  }
2038
+
2039
+ @media (width <= 1023px) {
2040
+ body:has(header.top-navbar .navbar-search.is-open) {
2041
+ overflow: hidden;
2042
+ }
2043
+
2044
+ body:has(header.top-navbar .navbar-search.is-open) header.top-navbar {
2045
+ z-index: var(--z-modal);
2046
+ }
2047
+
2048
+ header.top-navbar .navbar-search.is-open .search-backdrop {
2049
+ position: fixed;
2050
+ inset: 0;
2051
+ z-index: 1;
2052
+ display: block;
2053
+ background: var(--color-overlay);
2054
+ }
2055
+
2056
+ header.top-navbar .navbar-search.is-open .search-surface {
2057
+ position: fixed;
2058
+ top: var(--space-16);
2059
+ left: 50%;
2060
+ z-index: 2;
2061
+ display: flex;
2062
+ flex-direction: column;
2063
+ width: calc(100% - var(--space-8));
2064
+ max-width: 600px;
2065
+ max-height: 80vh;
2066
+ margin: 0;
2067
+ overflow: hidden;
2068
+ background: var(--color-background-primary);
2069
+ border-radius: var(--radius-lg);
2070
+ box-shadow: var(--shadow-xl);
2071
+ transform: translateX(-50%);
2072
+ }
2073
+
2074
+ header.top-navbar .navbar-search.is-open .search-form {
2075
+ display: flex;
2076
+ align-items: center;
2077
+ gap: var(--space-3);
2078
+ padding: var(--space-6);
2079
+ border-bottom: 1px solid var(--color-border-default);
2080
+ }
2081
+
2082
+ header.top-navbar .navbar-search.is-open .search-icon {
2083
+ display: inline;
2084
+ flex-shrink: 0;
2085
+ color: var(--color-text-secondary);
2086
+ font-size: 1.5rem;
2087
+ }
2088
+
2089
+ header.top-navbar .navbar-search.is-open #search-field {
2090
+ flex: 1;
2091
+ min-width: 0;
2092
+ padding: 0;
2093
+ border: none;
2094
+ outline: none;
2095
+ background: transparent;
2096
+ box-shadow: none;
2097
+ font-size: var(--font-size-lg);
2098
+ }
2099
+
2100
+ header.top-navbar .navbar-search.is-open .search-close {
2101
+ display: block;
2102
+ flex-shrink: 0;
2103
+ padding: var(--space-2) var(--space-4);
2104
+ border: 1px solid var(--color-border-default);
2105
+ border-radius: var(--radius-md);
2106
+ background: var(--color-background-secondary);
2107
+ color: var(--color-text-secondary);
2108
+ cursor: pointer;
2109
+ font-size: var(--font-size-sm);
2110
+ transition: background var(--transition-fast), border-color var(--transition-fast);
2111
+ }
2112
+
2113
+ header.top-navbar .navbar-search.is-open .search-close:hover {
2114
+ border-color: var(--color-border-default);
2115
+ background: var(--color-background-tertiary);
2116
+ }
2117
+
2118
+ header.top-navbar .navbar-search.is-open .search-body {
2119
+ display: flex;
2120
+ flex: 1;
2121
+ flex-direction: column;
2122
+ min-height: 0;
2123
+ overflow: hidden;
2124
+ }
2125
+
2126
+ header.top-navbar .navbar-search.is-open .search-empty {
2127
+ display: block;
2128
+ margin: var(--space-6);
2129
+ padding: var(--space-12) 0;
2130
+ color: var(--color-text-tertiary);
2131
+ text-align: center;
2132
+ }
2133
+
2134
+ header.top-navbar .navbar-search.is-open #search-results {
2135
+ flex: 1;
2136
+ min-height: 0;
2137
+ position: relative;
2138
+ max-height: none;
2139
+ margin: 0;
2140
+ padding: var(--space-6);
2141
+ overflow-y: auto;
2142
+ border: none;
2143
+ border-radius: 0;
2144
+ box-shadow: none;
2145
+ }
2146
+
2147
+ header.top-navbar .navbar-search.is-open #search-results.initially-hidden {
2148
+ display: block;
2149
+ }
2150
+
2151
+ header.top-navbar .navbar-search.is-open #search-results[aria-expanded="false"] {
2152
+ display: none;
2153
+ }
2154
+
2155
+ header.top-navbar .navbar-search.is-open .search-results li {
2156
+ margin-bottom: var(--space-2);
2157
+ padding: var(--space-3) var(--space-4);
2158
+ border-radius: var(--radius-md);
2159
+ transition: background var(--transition-fast);
2160
+ }
2161
+
2162
+ header.top-navbar .navbar-search.is-open .search-results li:hover {
2163
+ background: var(--color-background-secondary);
2164
+ }
2165
+
2166
+ header.top-navbar .navbar-search.is-open .search-match {
2167
+ margin: 0;
2168
+ font-size: var(--font-size-base);
2169
+ }
2170
+
2171
+ header.top-navbar .navbar-search.is-open .search-match a {
2172
+ text-decoration: none;
2173
+ }
2174
+
2175
+ header.top-navbar .navbar-search.is-open .search-snippet {
2176
+ margin: var(--space-1) 0 0 0;
2177
+ color: var(--color-text-tertiary);
2178
+ font-size: var(--font-size-sm);
2179
+ }
2180
+ }
2181
+
2182
+ @media (width <= 420px) {
2183
+ header.top-navbar .navbar-search.is-open .search-surface {
2184
+ top: var(--space-4);
2185
+ width: calc(100% - var(--space-6));
2186
+ border-radius: var(--radius-md);
2187
+ }
2188
+
2189
+ header.top-navbar .navbar-search.is-open .search-form,
2190
+ header.top-navbar .navbar-search.is-open #search-results {
2191
+ padding: var(--space-3);
2192
+ }
2193
+
2194
+ header.top-navbar .navbar-search.is-open .search-empty {
2195
+ margin: var(--space-3);
2196
+ }
2197
+
2198
+ header.top-navbar .navbar-search.is-open .search-form {
2199
+ gap: var(--space-2);
2200
+ }
2201
+
2202
+ header.top-navbar .navbar-search.is-open #search-field {
2203
+ font-size: var(--font-size-base);
2204
+ }
2205
+
2206
+ header.top-navbar .navbar-search.is-open .search-close {
2207
+ padding: var(--space-1) var(--space-3);
2208
+ font-size: 0.75rem;
2209
+ }
2210
+ }