for-humanity 0.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 (177) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/LICENSE +21 -0
  3. package/README.md +118 -0
  4. package/dist/cli.css +962 -0
  5. package/dist/cli.js +1241 -0
  6. package/dist/client.js +5 -0
  7. package/package.json +92 -0
  8. package/src/app.tsx +57 -0
  9. package/src/asset/favicon.svg +5 -0
  10. package/src/asset/font/architects-daughter/LICENSE.txt +93 -0
  11. package/src/asset/font/architects-daughter/architects-daughter-latin-400-normal.woff2 +0 -0
  12. package/src/asset/font/architects-daughter/architects-daughter.css +10 -0
  13. package/src/asset/font/jetbrains-mono/LICENSE +93 -0
  14. package/src/asset/font/jetbrains-mono/jetbrains-mono-latin-wght-normal.woff2 +0 -0
  15. package/src/asset/font/jetbrains-mono/jetbrains-mono.css +11 -0
  16. package/src/asset/font/pretendard/LICENSE.txt +94 -0
  17. package/src/asset/font/pretendard/pretendardvariable-dynamic-subset.css +1008 -0
  18. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.0.woff2 +0 -0
  19. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.1.woff2 +0 -0
  20. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.10.woff2 +0 -0
  21. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.11.woff2 +0 -0
  22. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.12.woff2 +0 -0
  23. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.13.woff2 +0 -0
  24. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.14.woff2 +0 -0
  25. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.15.woff2 +0 -0
  26. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.16.woff2 +0 -0
  27. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.17.woff2 +0 -0
  28. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.18.woff2 +0 -0
  29. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.19.woff2 +0 -0
  30. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.2.woff2 +0 -0
  31. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.20.woff2 +0 -0
  32. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.21.woff2 +0 -0
  33. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.22.woff2 +0 -0
  34. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.23.woff2 +0 -0
  35. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.24.woff2 +0 -0
  36. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.25.woff2 +0 -0
  37. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.26.woff2 +0 -0
  38. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.27.woff2 +0 -0
  39. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.28.woff2 +0 -0
  40. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.29.woff2 +0 -0
  41. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.3.woff2 +0 -0
  42. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.30.woff2 +0 -0
  43. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.31.woff2 +0 -0
  44. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.32.woff2 +0 -0
  45. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.33.woff2 +0 -0
  46. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.34.woff2 +0 -0
  47. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.35.woff2 +0 -0
  48. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.36.woff2 +0 -0
  49. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.37.woff2 +0 -0
  50. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.38.woff2 +0 -0
  51. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.39.woff2 +0 -0
  52. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.4.woff2 +0 -0
  53. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.40.woff2 +0 -0
  54. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.41.woff2 +0 -0
  55. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.42.woff2 +0 -0
  56. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.43.woff2 +0 -0
  57. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.44.woff2 +0 -0
  58. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.45.woff2 +0 -0
  59. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.46.woff2 +0 -0
  60. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.47.woff2 +0 -0
  61. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.48.woff2 +0 -0
  62. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.49.woff2 +0 -0
  63. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.5.woff2 +0 -0
  64. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.50.woff2 +0 -0
  65. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.51.woff2 +0 -0
  66. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.52.woff2 +0 -0
  67. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.53.woff2 +0 -0
  68. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.54.woff2 +0 -0
  69. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.55.woff2 +0 -0
  70. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.56.woff2 +0 -0
  71. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.57.woff2 +0 -0
  72. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.58.woff2 +0 -0
  73. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.59.woff2 +0 -0
  74. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.6.woff2 +0 -0
  75. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.60.woff2 +0 -0
  76. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.61.woff2 +0 -0
  77. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.62.woff2 +0 -0
  78. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.63.woff2 +0 -0
  79. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.64.woff2 +0 -0
  80. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.65.woff2 +0 -0
  81. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.66.woff2 +0 -0
  82. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.67.woff2 +0 -0
  83. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.68.woff2 +0 -0
  84. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.69.woff2 +0 -0
  85. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.7.woff2 +0 -0
  86. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.70.woff2 +0 -0
  87. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.71.woff2 +0 -0
  88. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.72.woff2 +0 -0
  89. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.73.woff2 +0 -0
  90. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.74.woff2 +0 -0
  91. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.75.woff2 +0 -0
  92. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.76.woff2 +0 -0
  93. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.77.woff2 +0 -0
  94. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.78.woff2 +0 -0
  95. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.79.woff2 +0 -0
  96. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.8.woff2 +0 -0
  97. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.80.woff2 +0 -0
  98. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.81.woff2 +0 -0
  99. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.82.woff2 +0 -0
  100. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.83.woff2 +0 -0
  101. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.84.woff2 +0 -0
  102. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.85.woff2 +0 -0
  103. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.86.woff2 +0 -0
  104. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.87.woff2 +0 -0
  105. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.88.woff2 +0 -0
  106. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.89.woff2 +0 -0
  107. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.9.woff2 +0 -0
  108. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.90.woff2 +0 -0
  109. package/src/asset/font/pretendard/woff2-dynamic-subset/PretendardVariable.subset.91.woff2 +0 -0
  110. package/src/cli.ts +162 -0
  111. package/src/client.ts +322 -0
  112. package/src/component/widget/prose/_constant/heading-highlight.ts +4 -0
  113. package/src/component/widget/prose/_constant/section.ts +7 -0
  114. package/src/component/widget/prose/_constant/status.ts +9 -0
  115. package/src/component/widget/prose/_function/has-block-content.ts +30 -0
  116. package/src/component/widget/prose/_function/rehype-head.ts +31 -0
  117. package/src/component/widget/prose/_function/rehype-sections/_to-section-headings.ts +20 -0
  118. package/src/component/widget/prose/_function/rehype-sections/rehype-sections.ts +21 -0
  119. package/src/component/widget/prose/_function/rehype-tables.ts +22 -0
  120. package/src/component/widget/prose/_function/remark-blocks.ts +112 -0
  121. package/src/component/widget/prose/_function/remark-flow.ts +26 -0
  122. package/src/component/widget/prose/_function/remark-links.ts +33 -0
  123. package/src/component/widget/prose/_function/remark-parts.ts +26 -0
  124. package/src/component/widget/prose/_function/remark-status.ts +59 -0
  125. package/src/component/widget/prose/_function/remark-swatch.ts +16 -0
  126. package/src/component/widget/prose/_function/remark-unknown-directives.ts +25 -0
  127. package/src/component/widget/prose/_type/doc-section.ts +9 -0
  128. package/src/component/widget/prose/wg-prose.css +381 -0
  129. package/src/component/widget/prose/wg-prose.tsx +43 -0
  130. package/src/component/widget/shell/_constant/cursor-face.ts +9 -0
  131. package/src/component/widget/shell/_constant/navigation.ts +4 -0
  132. package/src/component/widget/shell/_constant/reading-line.ts +4 -0
  133. package/src/component/widget/shell/_function/bind-mobile-navigation.ts +140 -0
  134. package/src/component/widget/shell/_function/to-toc-groups.ts +38 -0
  135. package/src/component/widget/shell/_type/doc-outline.ts +16 -0
  136. package/src/component/widget/shell/_type/toc-group.ts +39 -0
  137. package/src/component/widget/shell/_wg-shell-nav.css +134 -0
  138. package/src/component/widget/shell/_wg-shell-nav.tsx +75 -0
  139. package/src/component/widget/shell/_wg-shell-toc.css +268 -0
  140. package/src/component/widget/shell/_wg-shell-toc.tsx +57 -0
  141. package/src/component/widget/shell/wg-shell.css +261 -0
  142. package/src/component/widget/shell/wg-shell.tsx +147 -0
  143. package/src/constant/asset.ts +48 -0
  144. package/src/constant/cli.ts +19 -0
  145. package/src/constant/copy.ts +108 -0
  146. package/src/constant/doc.ts +13 -0
  147. package/src/constant/font.ts +39 -0
  148. package/src/constant/locale.ts +9 -0
  149. package/src/constant/site.ts +9 -0
  150. package/src/constant/status.ts +15 -0
  151. package/src/content/create-processor.ts +59 -0
  152. package/src/content/read-docs.test.ts +242 -0
  153. package/src/content/read-docs.ts +75 -0
  154. package/src/content/read-home.ts +32 -0
  155. package/src/content/rehype-heading-ids.ts +34 -0
  156. package/src/content/remark-report.ts +15 -0
  157. package/src/content/to-doc-groups.ts +18 -0
  158. package/src/dev.ts +79 -0
  159. package/src/env.d.ts +6 -0
  160. package/src/page/doc/pg-doc.tsx +35 -0
  161. package/src/page/home/pg-home.tsx +40 -0
  162. package/src/style/base.css +28 -0
  163. package/src/style/token.css +162 -0
  164. package/src/type/doc-content.ts +15 -0
  165. package/src/type/doc-data.ts +33 -0
  166. package/src/type/doc-file-data.ts +21 -0
  167. package/src/type/doc-heading.ts +17 -0
  168. package/src/type/doc.ts +16 -0
  169. package/src/type/site-assets.ts +17 -0
  170. package/src/type/site-config.ts +55 -0
  171. package/src/type/vfile-data.d.ts +10 -0
  172. package/src/util/dom/find-hash-target.ts +18 -0
  173. package/src/util/dom/reveal-hash-target.ts +15 -0
  174. package/src/util/error/to-error-message.ts +10 -0
  175. package/src/util/font/to-font-css.test.ts +41 -0
  176. package/src/util/font/to-font-css.ts +28 -0
  177. package/src/util/mermaid/render-flow.js +321 -0
package/dist/cli.css ADDED
@@ -0,0 +1,962 @@
1
+ /* src/component/widget/prose/wg-prose.css */
2
+ .wg_prose__root {
3
+ & h1 {
4
+ margin: 0 0 var(--app-space-stack);
5
+ color: var(--app-color-text-strong);
6
+ font-size: var(--app-font-size-title);
7
+ font-weight: var(--app-font-weight-title);
8
+ line-height: var(--app-line-height-title);
9
+ letter-spacing: var(--app-letter-spacing-title);
10
+ text-wrap: balance;
11
+ text-box: trim-start cap alphabetic;
12
+ }
13
+ & p {
14
+ margin: 0 0 var(--app-space-stack);
15
+ }
16
+ & img {
17
+ max-width: 100%;
18
+ height: auto;
19
+ vertical-align: middle;
20
+ }
21
+ & h1 + p {
22
+ font-size: var(--app-font-size-lead);
23
+ }
24
+ & h2 {
25
+ margin: var(--app-space-section) 0 var(--app-space-stack);
26
+ padding-top: var(--app-space-block);
27
+ border-top: 1px dotted var(--app-color-border);
28
+ color: var(--app-color-text-strong);
29
+ font-size: var(--app-font-size-section);
30
+ font-weight: var(--app-font-weight-strong);
31
+ line-height: var(--app-line-height-heading);
32
+ letter-spacing: var(--app-letter-spacing-heading);
33
+ text-wrap: balance;
34
+ scroll-margin-top: var(--app-space-anchor);
35
+ }
36
+ & .wg_prose__head + h2 {
37
+ margin-top: var(--app-space-group);
38
+ padding-top: 0;
39
+ border-top: 0;
40
+ }
41
+ & .wg_prose__part + h2 {
42
+ margin-top: var(--app-space-block);
43
+ padding-top: 0;
44
+ border-top: 0;
45
+ }
46
+ & h3 {
47
+ margin: var(--app-space-group) 0 var(--app-space-inline);
48
+ color: var(--app-color-text-strong);
49
+ font-size: var(--app-font-size-lead);
50
+ font-weight: var(--app-font-weight-strong);
51
+ line-height: var(--app-line-height-tight);
52
+ scroll-margin-top: var(--app-space-anchor);
53
+ }
54
+ & h4 {
55
+ margin: var(--app-space-group) 0 6px;
56
+ color: var(--app-color-text-strong);
57
+ font-size: var(--app-font-size-body);
58
+ font-weight: var(--app-font-weight-strong);
59
+ }
60
+ & h5 {
61
+ margin: var(--app-space-block) 0 6px;
62
+ color: var(--app-color-text-muted);
63
+ font-size: var(--app-font-size-dense);
64
+ font-weight: var(--app-font-weight-strong);
65
+ }
66
+ & a {
67
+ color: var(--app-color-link);
68
+ text-decoration: none;
69
+ text-underline-offset: 2px;
70
+ }
71
+ & a:visited {
72
+ color: var(--app-color-link-visited);
73
+ }
74
+ & a:hover {
75
+ color: var(--app-color-link-hover);
76
+ text-decoration: underline;
77
+ }
78
+ & a:focus-visible {
79
+ border-radius: var(--app-radius-mark);
80
+ outline: var(--app-outline-focus);
81
+ outline-offset: var(--app-outline-focus-offset);
82
+ }
83
+ & strong {
84
+ color: var(--app-color-text-strong);
85
+ font-weight: var(--app-font-weight-strong);
86
+ }
87
+ & ul {
88
+ margin: 0 0 var(--app-space-stack);
89
+ padding-left: 20px;
90
+ }
91
+ & ol {
92
+ margin: 0 0 var(--app-space-stack);
93
+ padding-left: 22px;
94
+ }
95
+ & li {
96
+ margin-bottom: 4px;
97
+ }
98
+ & li > ul {
99
+ margin: 4px 0 0;
100
+ }
101
+ & li > ol {
102
+ margin: 4px 0 0;
103
+ }
104
+ & code {
105
+ padding: 1px 3px;
106
+ border-radius: var(--app-radius-inline);
107
+ background: var(--app-color-code);
108
+ color: var(--app-color-text-strong);
109
+ font-family: var(--app-font-mono);
110
+ font-size: 1em;
111
+ font-variant-ligatures: none;
112
+ }
113
+ & pre {
114
+ overflow-x: auto;
115
+ margin: var(--app-space-block) 0;
116
+ padding: var(--app-space-stack) var(--app-space-block);
117
+ border: 1px solid var(--app-color-border);
118
+ border-radius: var(--app-radius-box);
119
+ background: var(--app-color-code);
120
+ font-family: var(--app-font-mono);
121
+ font-size: var(--app-font-size-detail);
122
+ font-variant-ligatures: none;
123
+ line-height: var(--app-line-height-code);
124
+ }
125
+ & pre code {
126
+ padding: 0;
127
+ background: none;
128
+ color: inherit;
129
+ font-size: inherit;
130
+ }
131
+ & blockquote {
132
+ margin: var(--app-space-block) 0;
133
+ padding: 0 0 0 var(--app-space-block);
134
+ border-left: 1px solid var(--app-color-border);
135
+ }
136
+ & blockquote > :last-child {
137
+ margin-bottom: 0;
138
+ }
139
+ & table {
140
+ width: 100%;
141
+ border-collapse: collapse;
142
+ font-size: var(--app-font-size-dense);
143
+ font-variant-numeric: tabular-nums;
144
+ }
145
+ & th {
146
+ padding: var(--app-space-inline) var(--app-space-stack);
147
+ border-bottom: 1px dotted var(--app-color-border);
148
+ color: var(--app-color-text-strong);
149
+ font-weight: var(--app-font-weight-strong);
150
+ text-align: left;
151
+ vertical-align: bottom;
152
+ white-space: nowrap;
153
+ }
154
+ & td {
155
+ padding: var(--app-space-inline) var(--app-space-stack);
156
+ border-bottom: 1px solid var(--app-color-border-soft);
157
+ text-align: left;
158
+ vertical-align: top;
159
+ }
160
+ & tbody tr:last-child td {
161
+ border-bottom: 0;
162
+ }
163
+ & tbody tr:hover td {
164
+ background: var(--app-color-accent-soft);
165
+ }
166
+ & hr {
167
+ margin: var(--app-space-section) 0;
168
+ border: 0;
169
+ border-top: 1px dotted var(--app-color-border);
170
+ }
171
+ }
172
+ .wg_prose__head {
173
+ margin-bottom: var(--app-space-inline);
174
+ padding-bottom: var(--app-space-block);
175
+ border-bottom: 1px dotted var(--app-color-border);
176
+ & > :last-child {
177
+ margin-bottom: 0;
178
+ }
179
+ & [align=center] {
180
+ padding: var(--app-space-group) 0;
181
+ text-align: center;
182
+ }
183
+ & [align=center] > h1 {
184
+ margin-block: var(--app-space-group);
185
+ font-size: 24px;
186
+ }
187
+ & [align=center] > p {
188
+ margin-bottom: var(--app-space-block);
189
+ }
190
+ & [align=center] > img {
191
+ width: 72px;
192
+ image-rendering: pixelated;
193
+ }
194
+ }
195
+ .wg_prose__headingText {
196
+ box-decoration-break: clone;
197
+ transition: background-color var(--app-motion-duration-highlight-fade) var(--app-motion-easing-out);
198
+ }
199
+ .wg_prose__headingText--highlighted {
200
+ background-color: var(--app-color-anchor-highlight);
201
+ transition: none;
202
+ }
203
+ .wg_prose__part {
204
+ margin-top: var(--app-space-section);
205
+ padding-top: var(--app-space-stack);
206
+ border-top: 1px dotted var(--app-color-border);
207
+ color: var(--app-color-text-strong);
208
+ font-size: var(--app-font-size-part);
209
+ font-weight: var(--app-font-weight-strong);
210
+ line-height: var(--app-line-height-heading);
211
+ letter-spacing: var(--app-letter-spacing-heading);
212
+ }
213
+ .wg_prose__table {
214
+ overflow-x: auto;
215
+ margin: var(--app-space-block) 0;
216
+ }
217
+ .wg_prose__pill {
218
+ display: inline-block;
219
+ padding: 0 5px;
220
+ border-radius: var(--app-radius-inline);
221
+ font-size: var(--app-font-size-detail);
222
+ font-weight: var(--app-font-weight-strong);
223
+ line-height: 1.6;
224
+ white-space: nowrap;
225
+ }
226
+ .wg_prose__pill--verified {
227
+ background: var(--app-color-verified-soft);
228
+ color: var(--app-color-verified);
229
+ }
230
+ .wg_prose__pill--unverified {
231
+ background: var(--app-color-unverified-soft);
232
+ color: var(--app-color-unverified);
233
+ }
234
+ .wg_prose__color {
235
+ white-space: nowrap;
236
+ &::before {
237
+ display: inline-block;
238
+ width: 0.8em;
239
+ height: 0.8em;
240
+ margin-right: 5px;
241
+ border: 1px solid var(--app-color-border);
242
+ border-radius: var(--app-radius-mark);
243
+ background: var(--wg-prose-chip-color, transparent);
244
+ content: "";
245
+ vertical-align: -0.05em;
246
+ }
247
+ }
248
+ .wg_prose__flow {
249
+ overflow-x: auto;
250
+ margin: var(--app-space-block) 0;
251
+ padding: var(--app-space-block) 0;
252
+ & svg {
253
+ display: block;
254
+ max-width: 100%;
255
+ height: auto;
256
+ margin: 0 auto;
257
+ }
258
+ }
259
+ .wg_prose__note {
260
+ margin: var(--app-space-block) 0;
261
+ padding-left: var(--app-space-block);
262
+ border-left: 2px solid var(--app-color-border);
263
+ & > :last-child {
264
+ margin-bottom: 0;
265
+ }
266
+ }
267
+ .wg_prose__noteTitle {
268
+ display: block;
269
+ margin-bottom: var(--app-space-inline);
270
+ color: var(--app-color-text-strong);
271
+ font-weight: var(--app-font-weight-strong);
272
+ }
273
+ .wg_prose__details {
274
+ margin: var(--app-space-block) 0;
275
+ padding-bottom: var(--app-space-stack);
276
+ border-top: 1px dotted var(--app-color-border);
277
+ border-bottom: 1px dotted var(--app-color-border);
278
+ & > :last-child {
279
+ margin-bottom: 0;
280
+ }
281
+ }
282
+ .wg_prose__detailsSummary {
283
+ padding: var(--app-space-inline) 0;
284
+ color: var(--app-color-link);
285
+ font-weight: var(--app-font-weight-strong);
286
+ cursor: pointer;
287
+ &:hover {
288
+ color: var(--app-color-link-hover);
289
+ text-decoration: underline;
290
+ text-underline-offset: 2px;
291
+ }
292
+ &:focus-visible {
293
+ outline: var(--app-outline-focus);
294
+ outline-offset: var(--app-outline-focus-offset);
295
+ }
296
+ }
297
+
298
+ /* src/component/widget/shell/_wg-shell-nav.css */
299
+ .wg_shellNav__root {
300
+ font-size: var(--app-font-size-dense);
301
+ line-height: var(--app-line-height-tight);
302
+ }
303
+ .wg_shellNav__docs {
304
+ display: flex;
305
+ flex-direction: column;
306
+ gap: var(--app-space-stack);
307
+ }
308
+ .wg_shellNav__list {
309
+ margin: 0 0 0 var(--app-space-tree-inset);
310
+ padding: 0;
311
+ list-style: none;
312
+ }
313
+ .wg_shellNav__item {
314
+ position: relative;
315
+ &::before {
316
+ position: absolute;
317
+ top: 0;
318
+ bottom: 0;
319
+ left: 0;
320
+ border-left: 1px solid var(--app-color-border-soft);
321
+ content: "";
322
+ pointer-events: none;
323
+ }
324
+ &:where(:last-child)::before {
325
+ bottom: auto;
326
+ height: calc(0.5lh + var(--app-space-tree-row));
327
+ }
328
+ &::after {
329
+ position: absolute;
330
+ top: 0;
331
+ left: 0;
332
+ height: calc(0.5lh + var(--app-space-tree-row));
333
+ border-left: 1px solid transparent;
334
+ content: "";
335
+ pointer-events: none;
336
+ }
337
+ &:where(:hover)::after {
338
+ border-left-color: var(--app-color-text-strong);
339
+ }
340
+ &:where(:has(:focus-visible))::after {
341
+ border-left-color: var(--app-color-text-strong);
342
+ }
343
+ &:where(:has(~ .wg_shellNav__item:hover))::before {
344
+ border-left-color: var(--app-color-text-strong);
345
+ }
346
+ &:where(:has(~ .wg_shellNav__item :focus-visible))::before {
347
+ border-left-color: var(--app-color-text-strong);
348
+ }
349
+ }
350
+ .wg_shellNav__item--trail {
351
+ &::before {
352
+ border-left-color: var(--app-color-text-strong);
353
+ }
354
+ }
355
+ .wg_shellNav__item--current {
356
+ &::after {
357
+ border-left-color: var(--app-color-text-strong);
358
+ }
359
+ }
360
+ .wg_shellNav__link {
361
+ position: relative;
362
+ display: block;
363
+ padding: var(--app-space-tree-row) 0 var(--app-space-tree-row) calc(var(--app-space-tree-indent) + var(--app-space-inline));
364
+ color: var(--app-color-text);
365
+ font-size: var(--app-font-size-dense);
366
+ line-height: var(--app-line-height-tight);
367
+ text-decoration: none;
368
+ &::before {
369
+ position: absolute;
370
+ top: calc(0.5lh + var(--app-space-tree-row));
371
+ left: 0;
372
+ width: var(--app-space-tree-indent);
373
+ border-top: 1px solid var(--app-color-border-soft);
374
+ content: "";
375
+ pointer-events: none;
376
+ }
377
+ &:where(:hover) {
378
+ text-decoration: underline;
379
+ }
380
+ &:where(:hover)::before {
381
+ border-top-color: currentcolor;
382
+ }
383
+ &:where(:focus-visible) {
384
+ outline: none;
385
+ text-decoration: underline;
386
+ }
387
+ &:where(:focus-visible)::before {
388
+ border-top-color: currentcolor;
389
+ }
390
+ }
391
+ .wg_shellNav__link--active {
392
+ color: var(--app-color-text-strong);
393
+ font-weight: var(--app-font-weight-active);
394
+ &::before {
395
+ border-top-color: currentcolor;
396
+ }
397
+ }
398
+ .wg_shellNav__group {
399
+ margin: 0 0 4px;
400
+ color: var(--app-color-text-muted);
401
+ font-size: var(--app-font-size-label);
402
+ text-box: trim-start cap alphabetic;
403
+ }
404
+
405
+ /* src/component/widget/shell/_wg-shell-toc.css */
406
+ .wg_shellToc__root {
407
+ margin-top: var(--app-space-group);
408
+ padding-top: var(--app-space-group);
409
+ border-top: 1px solid var(--app-color-border-soft);
410
+ font-size: var(--app-font-size-dense);
411
+ line-height: var(--app-line-height-tight);
412
+ }
413
+ .wg_shellToc__label {
414
+ margin-bottom: var(--app-space-inline);
415
+ color: var(--app-color-text-muted);
416
+ font-size: var(--app-font-size-label);
417
+ font-weight: var(--app-font-weight-mark);
418
+ letter-spacing: var(--app-letter-spacing-label);
419
+ }
420
+ .wg_shellToc__group {
421
+ margin: var(--app-space-stack) 0 4px;
422
+ color: var(--app-color-text-muted);
423
+ font-size: var(--app-font-size-label);
424
+ }
425
+ .wg_shellToc__list {
426
+ margin: 0 0 0 var(--app-space-tree-inset);
427
+ padding: 0;
428
+ list-style: none;
429
+ }
430
+ .wg_shellToc__link {
431
+ position: relative;
432
+ display: block;
433
+ padding: var(--app-space-tree-row) 0 var(--app-space-tree-row) calc(var(--app-space-tree-indent) + var(--app-space-inline));
434
+ color: var(--app-color-text-muted);
435
+ font-size: var(--app-font-size-dense);
436
+ line-height: var(--app-line-height-tight);
437
+ text-decoration: none;
438
+ &::before {
439
+ position: absolute;
440
+ top: calc(0.5lh + var(--app-space-tree-row));
441
+ left: 0;
442
+ width: var(--app-space-tree-indent);
443
+ border-top: 1px solid var(--app-color-border-soft);
444
+ content: "";
445
+ pointer-events: none;
446
+ }
447
+ &:where(:hover) {
448
+ color: var(--app-color-text-strong);
449
+ text-decoration: underline;
450
+ }
451
+ &:where(:hover)::before {
452
+ border-top-color: currentcolor;
453
+ }
454
+ &:where(:focus-visible) {
455
+ outline: none;
456
+ color: var(--app-color-text-strong);
457
+ text-decoration: underline;
458
+ }
459
+ &:where(:focus-visible)::before {
460
+ border-top-color: currentcolor;
461
+ }
462
+ }
463
+ .wg_shellToc__link--active {
464
+ color: var(--app-color-text-strong);
465
+ font-weight: var(--app-font-weight-active);
466
+ &::before {
467
+ border-top-color: currentcolor;
468
+ }
469
+ }
470
+ .wg_shellToc__item {
471
+ display: flow-root;
472
+ position: relative;
473
+ &::before {
474
+ position: absolute;
475
+ top: 0;
476
+ bottom: 0;
477
+ left: 0;
478
+ border-left: 1px solid var(--app-color-border-soft);
479
+ content: "";
480
+ pointer-events: none;
481
+ }
482
+ &:where(:last-child)::before {
483
+ bottom: auto;
484
+ height: calc(0.5lh + var(--app-space-tree-row));
485
+ }
486
+ &::after {
487
+ position: absolute;
488
+ top: 0;
489
+ left: 0;
490
+ height: calc(0.5lh + var(--app-space-tree-row));
491
+ border-left: 1px solid transparent;
492
+ content: "";
493
+ pointer-events: none;
494
+ }
495
+ &:where(:hover)::after {
496
+ border-left-color: var(--app-color-text-strong);
497
+ }
498
+ &:where(:has(:focus-visible))::after {
499
+ border-left-color: var(--app-color-text-strong);
500
+ }
501
+ &:where(:has(~ .wg_shellToc__item:hover))::before {
502
+ border-left-color: var(--app-color-text-strong);
503
+ }
504
+ &:where(:has(~ .wg_shellToc__item :focus-visible))::before {
505
+ border-left-color: var(--app-color-text-strong);
506
+ }
507
+ &:where(:hover) > .wg_shellToc__link::before {
508
+ border-top-color: var(--app-color-text-strong);
509
+ }
510
+ &:where(:has(:focus-visible)) > .wg_shellToc__link::before {
511
+ border-top-color: var(--app-color-text-strong);
512
+ }
513
+ }
514
+ .wg_shellToc__item--trail {
515
+ &::before {
516
+ border-left-color: var(--app-color-text-strong);
517
+ }
518
+ }
519
+ .wg_shellToc__item--current {
520
+ &::after {
521
+ border-left-color: var(--app-color-text-strong);
522
+ }
523
+ }
524
+ .wg_shellToc__sub {
525
+ margin: var(--app-space-tree-row) 0 4px var(--app-space-tree-indent);
526
+ padding: 0;
527
+ list-style: none;
528
+ }
529
+ .wg_shellToc__subItem {
530
+ position: relative;
531
+ &::before {
532
+ position: absolute;
533
+ top: 0;
534
+ bottom: 0;
535
+ left: 0;
536
+ border-left: 1px solid var(--app-color-border-soft);
537
+ content: "";
538
+ pointer-events: none;
539
+ }
540
+ &:where(:last-child)::before {
541
+ bottom: auto;
542
+ height: calc(0.5lh + var(--app-space-tree-row));
543
+ }
544
+ &::after {
545
+ position: absolute;
546
+ top: 0;
547
+ left: 0;
548
+ height: calc(0.5lh + var(--app-space-tree-row));
549
+ border-left: 1px solid transparent;
550
+ content: "";
551
+ pointer-events: none;
552
+ }
553
+ &:where(:hover)::after {
554
+ border-left-color: var(--app-color-text-strong);
555
+ }
556
+ &:where(:has(:focus-visible))::after {
557
+ border-left-color: var(--app-color-text-strong);
558
+ }
559
+ &:where(:has(~ .wg_shellToc__subItem:hover))::before {
560
+ border-left-color: var(--app-color-text-strong);
561
+ }
562
+ &:where(:has(~ .wg_shellToc__subItem :focus-visible))::before {
563
+ border-left-color: var(--app-color-text-strong);
564
+ }
565
+ }
566
+ .wg_shellToc__subItem--trail {
567
+ &::before {
568
+ border-left-color: var(--app-color-text-strong);
569
+ }
570
+ }
571
+ .wg_shellToc__subItem--current {
572
+ &::after {
573
+ border-left-color: var(--app-color-text-strong);
574
+ }
575
+ }
576
+ .wg_shellToc__subLink {
577
+ position: relative;
578
+ display: block;
579
+ padding: var(--app-space-tree-row) 0 var(--app-space-tree-row) calc(var(--app-space-tree-indent) + var(--app-space-inline));
580
+ color: var(--app-color-text-muted);
581
+ font-size: var(--app-font-size-detail);
582
+ line-height: var(--app-line-height-tight);
583
+ text-decoration: none;
584
+ &::before {
585
+ position: absolute;
586
+ top: calc(0.5lh + var(--app-space-tree-row));
587
+ left: 0;
588
+ width: var(--app-space-tree-indent);
589
+ border-top: 1px solid var(--app-color-border-soft);
590
+ content: "";
591
+ pointer-events: none;
592
+ }
593
+ &:where(:hover) {
594
+ color: var(--app-color-text-strong);
595
+ text-decoration: underline;
596
+ }
597
+ &:where(:hover)::before {
598
+ border-top-color: currentcolor;
599
+ }
600
+ &:where(:focus-visible) {
601
+ outline: none;
602
+ color: var(--app-color-text-strong);
603
+ text-decoration: underline;
604
+ }
605
+ &:where(:focus-visible)::before {
606
+ border-top-color: currentcolor;
607
+ }
608
+ }
609
+ .wg_shellToc__subLink--active {
610
+ color: var(--app-color-text-strong);
611
+ font-weight: var(--app-font-weight-active);
612
+ &::before {
613
+ border-top-color: currentcolor;
614
+ }
615
+ }
616
+
617
+ /* src/style/base.css */
618
+ * {
619
+ box-sizing: border-box;
620
+ }
621
+ :root {
622
+ background: var(--app-color-ground);
623
+ scrollbar-gutter: stable;
624
+ scroll-behavior: smooth;
625
+ }
626
+ @media (prefers-reduced-motion: reduce) {
627
+ *,
628
+ *::before,
629
+ *::after {
630
+ animation-duration: 0.01ms !important;
631
+ animation-delay: 0s !important;
632
+ animation-iteration-count: 1 !important;
633
+ transition-duration: 0.01ms !important;
634
+ transition-delay: 0s !important;
635
+ scroll-behavior: auto !important;
636
+ }
637
+ }
638
+
639
+ /* src/style/token.css */
640
+ :root {
641
+ color-scheme: light dark;
642
+ --app-color-ground: light-dark(#fff, #181818);
643
+ --app-color-surface: light-dark(#fff, #181818);
644
+ --app-color-code: light-dark(#f1f1eb, #22221f);
645
+ --app-color-backdrop: light-dark(rgb(0 0 0 / 30%), rgb(0 0 0 / 55%));
646
+ --app-color-text: light-dark(#333, #d5d5d5);
647
+ --app-color-text-strong: light-dark(#222, #eee);
648
+ --app-color-text-muted: light-dark(#666, #aaa);
649
+ --app-color-anchor-highlight: light-dark(#f4f58a, #666322);
650
+ --app-motion-duration-highlight-fade: 600ms;
651
+ --app-motion-easing-out: ease-out;
652
+ --app-color-border: light-dark(#aaa, #555);
653
+ --app-color-border-soft: light-dark(#ddd, #333);
654
+ --app-color-border-layout: light-dark(#eee, #2b2b2b);
655
+ --app-color-accent: light-dark(#555, #b5b5b5);
656
+ --app-color-accent-soft: light-dark(#f5f5f2, #222);
657
+ --app-color-link: light-dark(#11a, #9db8ff);
658
+ --app-color-link-visited: light-dark(#51a, #c5a5ed);
659
+ --app-color-link-hover: light-dark(#44d, #c1d1ff);
660
+ --app-color-verified: light-dark(#176b36, #82cf95);
661
+ --app-color-verified-soft: light-dark(#edf5ed, #1d2c20);
662
+ --app-color-unverified: light-dark(#855700, #dfb26c);
663
+ --app-color-unverified-soft: light-dark(#faf2df, #30291c);
664
+ --app-font-sans:
665
+ "Pretendard Variable",
666
+ system-ui,
667
+ "Apple SD Gothic Neo",
668
+ sans-serif;
669
+ --app-font-mono: "JetBrains Mono Variable", var(--app-font-sans);
670
+ --app-font-brand: "Architects Daughter", var(--app-font-sans);
671
+ --app-font-size-label: 12px;
672
+ --app-font-size-detail: 12px;
673
+ --app-font-size-dense: 12px;
674
+ --app-font-size-body: 12px;
675
+ --app-font-size-lead: 12px;
676
+ --app-font-size-part: 13px;
677
+ --app-font-size-section: 14px;
678
+ --app-font-size-title: 16px;
679
+ --app-font-weight-mark: 400;
680
+ --app-font-weight-active: 500;
681
+ --app-font-weight-strong: 600;
682
+ --app-font-weight-title: 600;
683
+ --app-line-height-title: 1.5;
684
+ --app-line-height-heading: 1.5;
685
+ --app-line-height-tight: 1.5;
686
+ --app-line-height-code: 1.65;
687
+ --app-line-height-body: 1.7;
688
+ --app-letter-spacing-label: 0;
689
+ --app-letter-spacing-brand: 0;
690
+ --app-letter-spacing-heading: -0.01em;
691
+ --app-letter-spacing-title: -0.015em;
692
+ --app-space-inline: 6px;
693
+ --app-space-stack: 10px;
694
+ --app-space-block: 14px;
695
+ --app-space-group: 20px;
696
+ --app-space-section: 32px;
697
+ --app-space-tree-row: 2px;
698
+ --app-space-tree-inset: 4px;
699
+ --app-space-tree-indent: 12px;
700
+ --app-space-page-top: 28px;
701
+ --app-space-gutter: 28px;
702
+ --app-space-column: 32px;
703
+ --app-space-sidebar-gap: 32px;
704
+ --app-size-sidebar: 200px;
705
+ --app-size-main: 900px;
706
+ --app-size-page: calc(var(--app-size-main) + (var(--app-size-sidebar) + var(--app-space-sidebar-gap) + var(--app-space-gutter)) * 2);
707
+ --app-size-brand: calc(var(--app-font-size-title) * var(--app-line-height-title) + var(--app-space-page-top) + var(--app-space-group));
708
+ --app-size-mobile-header: 56px;
709
+ --app-size-menu-button: 44px;
710
+ --app-size-drawer: 320px;
711
+ --app-space-anchor: 80px;
712
+ --app-radius-pill: 0;
713
+ --app-radius-card: 0;
714
+ --app-radius-box: 0;
715
+ --app-radius-inline: 0;
716
+ --app-radius-mark: 0;
717
+ --app-outline-focus: 2px solid var(--app-color-link);
718
+ --app-outline-focus-offset: 2px;
719
+ --app-z-index-sticky: 100;
720
+ --app-z-index-popper: 300;
721
+ --app-code-foreground: var(--app-color-text);
722
+ --app-code-background: var(--app-color-code);
723
+ --app-code-token-keyword: var(--app-color-text-strong);
724
+ --app-code-token-function: var(--app-color-accent);
725
+ --app-code-token-string: var(--app-color-verified);
726
+ --app-code-token-string-expression: var(--app-color-verified);
727
+ --app-code-token-constant: var(--app-color-unverified);
728
+ --app-code-token-parameter: var(--app-color-text);
729
+ --app-code-token-comment: var(--app-color-text-muted);
730
+ --app-code-token-punctuation: var(--app-color-text-muted);
731
+ --app-code-token-link: var(--app-color-link);
732
+ }
733
+ @media (width < 1024px) {
734
+ :root {
735
+ --app-space-page-top: 24px;
736
+ --app-space-gutter: 20px;
737
+ --app-space-tree-row: 7px;
738
+ --app-space-anchor: calc(var(--app-size-mobile-header) + var(--app-space-block));
739
+ }
740
+ }
741
+ @media (width < 640px) {
742
+ :root {
743
+ --app-space-page-top: 20px;
744
+ --app-space-gutter: 16px;
745
+ }
746
+ }
747
+
748
+ /* src/component/widget/shell/wg-shell.css */
749
+ .wg_shell__root {
750
+ display: grid;
751
+ max-width: var(--app-size-page);
752
+ margin: 0 auto;
753
+ padding: 0 var(--app-space-gutter);
754
+ grid-template: "nav main ." 1fr / calc(var(--app-size-sidebar) + var(--app-space-sidebar-gap)) minmax(0, var(--app-size-main)) minmax(0, 1fr);
755
+ background: var(--app-color-ground);
756
+ color: var(--app-color-text);
757
+ font-family: var(--app-font-sans);
758
+ font-size: var(--app-font-size-body);
759
+ line-height: var(--app-line-height-body);
760
+ word-break: keep-all;
761
+ overflow-wrap: break-word;
762
+ text-wrap: pretty;
763
+ -webkit-font-smoothing: antialiased;
764
+ }
765
+ .wg_shell__root--drawerOpen {
766
+ overflow: hidden;
767
+ }
768
+ .wg_shell__brandRow {
769
+ display: flex;
770
+ position: sticky;
771
+ top: 0;
772
+ z-index: var(--app-z-index-sticky);
773
+ align-self: start;
774
+ min-width: 0;
775
+ height: var(--app-size-brand);
776
+ padding-block: var(--app-space-page-top) var(--app-space-group);
777
+ background: var(--app-color-ground);
778
+ gap: var(--app-space-inline);
779
+ align-items: start;
780
+ }
781
+ .wg_shell__brand {
782
+ display: block;
783
+ flex: 1;
784
+ min-width: 0;
785
+ overflow: hidden;
786
+ color: var(--app-color-text-strong);
787
+ font-family: var(--app-font-brand);
788
+ font-size: var(--app-font-size-title);
789
+ font-weight: var(--app-font-weight-mark);
790
+ line-height: var(--app-line-height-title);
791
+ letter-spacing: var(--app-letter-spacing-brand);
792
+ text-decoration: none;
793
+ text-overflow: ellipsis;
794
+ white-space: nowrap;
795
+ &:hover {
796
+ text-decoration: underline;
797
+ }
798
+ &:focus-visible {
799
+ outline: none;
800
+ text-decoration: underline;
801
+ }
802
+ }
803
+ .wg_shell__menuIcon {
804
+ width: 20px;
805
+ height: 20px;
806
+ fill: none;
807
+ stroke: currentcolor;
808
+ stroke-linecap: round;
809
+ stroke-width: 1.5;
810
+ }
811
+ .wg_shell__menuToggle {
812
+ display: none;
813
+ align-items: center;
814
+ justify-content: center;
815
+ flex: none;
816
+ width: var(--app-size-menu-button);
817
+ height: var(--app-size-menu-button);
818
+ padding: 0;
819
+ border: 0;
820
+ border-radius: var(--app-radius-box);
821
+ background: transparent;
822
+ color: var(--app-color-text-strong);
823
+ cursor: pointer;
824
+ &:hover {
825
+ background: var(--app-color-accent-soft);
826
+ }
827
+ &:focus-visible {
828
+ outline: var(--app-outline-focus);
829
+ outline-offset: var(--app-outline-focus-offset);
830
+ }
831
+ }
832
+ .wg_shell__menuToggle--visible {
833
+ display: flex;
834
+ }
835
+ .wg_shell__sidebar {
836
+ grid-area: nav;
837
+ position: sticky;
838
+ top: 0;
839
+ align-self: start;
840
+ min-width: 0;
841
+ min-height: 100vh;
842
+ max-height: 100vh;
843
+ margin-inline-end: var(--app-space-sidebar-gap);
844
+ overflow-y: auto;
845
+ scroll-padding-block: var(--app-size-brand) var(--app-space-block);
846
+ }
847
+ .wg_shell__navigation {
848
+ min-width: 0;
849
+ }
850
+ .wg_shell__main {
851
+ grid-area: main;
852
+ min-width: 0;
853
+ max-width: var(--app-size-main);
854
+ border-inline: 1px solid var(--app-color-border-layout);
855
+ padding-block: var(--app-size-brand) calc(100vh - var(--app-space-anchor));
856
+ padding-inline: var(--app-space-column);
857
+ }
858
+ .wg_shell__drawer {
859
+ position: fixed;
860
+ inset: 0 auto 0 0;
861
+ width: min(var(--app-size-drawer), calc(100% - var(--app-space-gutter) * 2));
862
+ max-width: none;
863
+ height: 100dvh;
864
+ max-height: 100dvh;
865
+ margin: 0;
866
+ padding: 0 var(--app-space-gutter) var(--app-space-group);
867
+ border: 0;
868
+ border-right: 1px solid var(--app-color-border-layout);
869
+ background: var(--app-color-ground);
870
+ color: var(--app-color-text);
871
+ overscroll-behavior: contain;
872
+ scroll-padding-block: var(--app-size-mobile-header) var(--app-space-group);
873
+ &::backdrop {
874
+ background: var(--app-color-backdrop);
875
+ }
876
+ }
877
+ .wg_shell__drawerHeader {
878
+ position: sticky;
879
+ top: 0;
880
+ z-index: var(--app-z-index-sticky);
881
+ display: flex;
882
+ align-items: center;
883
+ justify-content: space-between;
884
+ gap: var(--app-space-inline);
885
+ min-height: var(--app-size-mobile-header);
886
+ margin-bottom: var(--app-space-block);
887
+ background: var(--app-color-ground);
888
+ }
889
+ .wg_shell__drawerTitle {
890
+ margin: 0;
891
+ font-size: var(--app-font-size-part);
892
+ font-weight: var(--app-font-weight-strong);
893
+ }
894
+ .wg_shell__drawerClose {
895
+ display: flex;
896
+ align-items: center;
897
+ justify-content: center;
898
+ flex: none;
899
+ width: var(--app-size-menu-button);
900
+ height: var(--app-size-menu-button);
901
+ padding: 0;
902
+ border: 0;
903
+ border-radius: var(--app-radius-box);
904
+ background: transparent;
905
+ color: var(--app-color-text-strong);
906
+ cursor: pointer;
907
+ &:hover {
908
+ background: var(--app-color-accent-soft);
909
+ }
910
+ &:focus-visible {
911
+ outline: var(--app-outline-focus);
912
+ outline-offset: var(--app-outline-focus-offset);
913
+ }
914
+ }
915
+ .wg_shell__drawerContent {
916
+ min-width: 0;
917
+ }
918
+ .wg_shell__cursorFace {
919
+ position: fixed;
920
+ top: 0;
921
+ left: 0;
922
+ z-index: var(--app-z-index-popper);
923
+ visibility: hidden;
924
+ pointer-events: none;
925
+ user-select: none;
926
+ image-rendering: pixelated;
927
+ }
928
+ .wg_shell__cursorFace--visible {
929
+ visibility: visible;
930
+ }
931
+ @media (width < 1024px) {
932
+ .wg_shell__root {
933
+ max-width: calc(var(--app-size-main) + var(--app-space-gutter) * 2);
934
+ grid-template: "nav" auto "main" 1fr / minmax(0, 1fr);
935
+ }
936
+ .wg_shell__sidebar {
937
+ position: static;
938
+ min-height: 0;
939
+ max-height: none;
940
+ overflow-y: visible;
941
+ margin-block-end: var(--app-space-block);
942
+ margin-inline-end: 0;
943
+ border-bottom: 1px solid var(--app-color-border-layout);
944
+ }
945
+ .wg_shell__sidebar--navigationReady {
946
+ position: sticky;
947
+ top: 0;
948
+ z-index: var(--app-z-index-sticky);
949
+ background: var(--app-color-ground);
950
+ }
951
+ .wg_shell__brandRow {
952
+ position: static;
953
+ height: var(--app-size-mobile-header);
954
+ padding-block: 0;
955
+ align-items: center;
956
+ }
957
+ .wg_shell__main {
958
+ padding-block-start: var(--app-space-page-top);
959
+ padding-inline: 0;
960
+ border-inline: 0;
961
+ }
962
+ }