willa 0.0.1 → 0.0.3

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 (165) hide show
  1. package/README.md +3 -0
  2. package/dist/es/AudioEmbed/index.d.ts +5 -0
  3. package/dist/es/AudioEmbed/index.js +2 -0
  4. package/dist/es/AudioEmbed/style/index.css +1 -0
  5. package/dist/es/AudioLink/index.d.ts +5 -0
  6. package/dist/es/AudioLink/index.js +2 -0
  7. package/dist/es/AudioLink/style/index.css +1 -0
  8. package/dist/es/Callout/index.d.ts +6 -0
  9. package/dist/es/Callout/index.js +2 -0
  10. package/dist/es/Callout/style/index.css +1 -0
  11. package/dist/es/ChatThread/index.d.ts +5 -0
  12. package/dist/es/ChatThread/index.js +2 -0
  13. package/dist/es/ChatThread/style/index.css +1 -0
  14. package/dist/es/CodeBlock/index.d.ts +2 -0
  15. package/dist/es/CodeBlock/index.js +2 -0
  16. package/dist/es/CodeBlock/style/index.css +1 -0
  17. package/dist/es/DetailsBlock/index.d.ts +5 -0
  18. package/dist/es/DetailsBlock/index.js +2 -0
  19. package/dist/es/DetailsBlock/style/index.css +1 -0
  20. package/dist/es/EnglishCards/index.d.ts +5 -0
  21. package/dist/es/EnglishCards/index.js +2 -0
  22. package/dist/es/EnglishCards/style/index.css +1 -0
  23. package/dist/es/FancyList/index.d.ts +6 -0
  24. package/dist/es/FancyList/index.js +2 -0
  25. package/dist/es/FancyList/style/index.css +1 -0
  26. package/dist/es/GitHubMention/index.d.ts +5 -0
  27. package/dist/es/GitHubMention/index.js +2 -0
  28. package/dist/es/GitHubMention/style/index.css +1 -0
  29. package/dist/es/GitHubRepo/index.d.ts +5 -0
  30. package/dist/es/GitHubRepo/index.js +2 -0
  31. package/dist/es/GitHubRepo/style/index.css +1 -0
  32. package/dist/es/Image/index.d.ts +2 -0
  33. package/dist/es/Image/index.js +2 -0
  34. package/dist/es/Image/style/index.css +1 -0
  35. package/dist/es/ImageGallery/index.d.ts +6 -0
  36. package/dist/es/ImageGallery/index.js +2 -0
  37. package/dist/es/ImageGallery/style/index.css +1 -0
  38. package/dist/es/Lightbox/index.d.ts +14 -0
  39. package/dist/es/Lightbox/index.js +5 -0
  40. package/dist/es/Lightbox/style/index.css +1 -0
  41. package/dist/es/Mdx/index.d.ts +2 -0
  42. package/dist/es/Mdx/index.js +2 -0
  43. package/dist/es/Mdx/style/index.css +1 -0
  44. package/dist/es/Poem/index.d.ts +2 -0
  45. package/dist/es/Poem/index.js +2 -0
  46. package/dist/es/Poem/style/index.css +1 -0
  47. package/dist/es/Skeleton/index.d.ts +2 -0
  48. package/dist/es/Skeleton/index.js +2 -0
  49. package/dist/es/Skeleton/style/index.css +1 -0
  50. package/dist/es/Step/index.d.ts +2 -0
  51. package/dist/es/Step/index.js +2 -0
  52. package/dist/es/Step/style/index.css +1 -0
  53. package/dist/es/Steps/index.d.ts +2 -0
  54. package/dist/es/Steps/index.js +2 -0
  55. package/dist/es/Steps/style/index.css +1 -0
  56. package/dist/es/SummaryCards/index.d.ts +5 -0
  57. package/dist/es/SummaryCards/index.js +2 -0
  58. package/dist/es/SummaryCards/style/index.css +1 -0
  59. package/dist/es/UrlLink/index.d.ts +2 -0
  60. package/dist/es/UrlLink/index.js +2 -0
  61. package/dist/es/UrlLink/style/index.css +1 -0
  62. package/dist/es/VideoEmbed/index.d.ts +5 -0
  63. package/dist/es/VideoEmbed/index.js +2 -0
  64. package/dist/es/VideoEmbed/style/index.css +1 -0
  65. package/dist/es/VideoLink/index.d.ts +5 -0
  66. package/dist/es/VideoLink/index.js +2 -0
  67. package/dist/es/VideoLink/style/index.css +1 -0
  68. package/dist/es/WebEmbed/index.d.ts +2 -0
  69. package/dist/es/WebEmbed/index.js +2 -0
  70. package/dist/es/WebEmbed/style/index.css +1 -0
  71. package/dist/es/XPostEmbed/index.d.ts +5 -0
  72. package/dist/es/XPostEmbed/index.js +2 -0
  73. package/dist/es/XPostEmbed/style/index.css +1 -0
  74. package/dist/es/index.d.ts +2 -0
  75. package/dist/es/index.js +2 -0
  76. package/dist/es/style/external.css +2 -0
  77. package/dist/es/style/index.css +2 -0
  78. package/dist/es/themes/dark.css +2 -0
  79. package/dist/es/themes/light.css +2 -0
  80. package/dist/index.cjs +22 -0
  81. package/dist/index.css +3731 -0
  82. package/dist/index.d.cts +6 -0
  83. package/dist/index.global.js +54920 -0
  84. package/dist/index.js +6 -0
  85. package/dist/index.mjs +6 -0
  86. package/dist/lib/AudioEmbed/index.d.ts +5 -0
  87. package/dist/lib/AudioEmbed/index.js +8 -0
  88. package/dist/lib/AudioEmbed/style/index.css +1 -0
  89. package/dist/lib/AudioLink/index.d.ts +5 -0
  90. package/dist/lib/AudioLink/index.js +8 -0
  91. package/dist/lib/AudioLink/style/index.css +1 -0
  92. package/dist/lib/Callout/index.d.ts +6 -0
  93. package/dist/lib/Callout/index.js +8 -0
  94. package/dist/lib/Callout/style/index.css +1 -0
  95. package/dist/lib/ChatThread/index.d.ts +5 -0
  96. package/dist/lib/ChatThread/index.js +8 -0
  97. package/dist/lib/ChatThread/style/index.css +1 -0
  98. package/dist/lib/CodeBlock/index.d.ts +2 -0
  99. package/dist/lib/CodeBlock/index.js +8 -0
  100. package/dist/lib/CodeBlock/style/index.css +1 -0
  101. package/dist/lib/DetailsBlock/index.d.ts +5 -0
  102. package/dist/lib/DetailsBlock/index.js +8 -0
  103. package/dist/lib/DetailsBlock/style/index.css +1 -0
  104. package/dist/lib/EnglishCards/index.d.ts +5 -0
  105. package/dist/lib/EnglishCards/index.js +8 -0
  106. package/dist/lib/EnglishCards/style/index.css +1 -0
  107. package/dist/lib/FancyList/index.d.ts +6 -0
  108. package/dist/lib/FancyList/index.js +8 -0
  109. package/dist/lib/FancyList/style/index.css +1 -0
  110. package/dist/lib/GitHubMention/index.d.ts +5 -0
  111. package/dist/lib/GitHubMention/index.js +8 -0
  112. package/dist/lib/GitHubMention/style/index.css +1 -0
  113. package/dist/lib/GitHubRepo/index.d.ts +5 -0
  114. package/dist/lib/GitHubRepo/index.js +8 -0
  115. package/dist/lib/GitHubRepo/style/index.css +1 -0
  116. package/dist/lib/Image/index.d.ts +2 -0
  117. package/dist/lib/Image/index.js +8 -0
  118. package/dist/lib/Image/style/index.css +1 -0
  119. package/dist/lib/ImageGallery/index.d.ts +6 -0
  120. package/dist/lib/ImageGallery/index.js +8 -0
  121. package/dist/lib/ImageGallery/style/index.css +1 -0
  122. package/dist/lib/Lightbox/index.d.ts +14 -0
  123. package/dist/lib/Lightbox/index.js +14 -0
  124. package/dist/lib/Lightbox/style/index.css +1 -0
  125. package/dist/lib/Mdx/index.d.ts +2 -0
  126. package/dist/lib/Mdx/index.js +8 -0
  127. package/dist/lib/Mdx/style/index.css +1 -0
  128. package/dist/lib/Poem/index.d.ts +2 -0
  129. package/dist/lib/Poem/index.js +8 -0
  130. package/dist/lib/Poem/style/index.css +1 -0
  131. package/dist/lib/Skeleton/index.d.ts +2 -0
  132. package/dist/lib/Skeleton/index.js +8 -0
  133. package/dist/lib/Skeleton/style/index.css +1 -0
  134. package/dist/lib/Step/index.d.ts +2 -0
  135. package/dist/lib/Step/index.js +8 -0
  136. package/dist/lib/Step/style/index.css +1 -0
  137. package/dist/lib/Steps/index.d.ts +2 -0
  138. package/dist/lib/Steps/index.js +8 -0
  139. package/dist/lib/Steps/style/index.css +1 -0
  140. package/dist/lib/SummaryCards/index.d.ts +5 -0
  141. package/dist/lib/SummaryCards/index.js +8 -0
  142. package/dist/lib/SummaryCards/style/index.css +1 -0
  143. package/dist/lib/UrlLink/index.d.ts +2 -0
  144. package/dist/lib/UrlLink/index.js +8 -0
  145. package/dist/lib/UrlLink/style/index.css +1 -0
  146. package/dist/lib/VideoEmbed/index.d.ts +5 -0
  147. package/dist/lib/VideoEmbed/index.js +8 -0
  148. package/dist/lib/VideoEmbed/style/index.css +1 -0
  149. package/dist/lib/VideoLink/index.d.ts +5 -0
  150. package/dist/lib/VideoLink/index.js +8 -0
  151. package/dist/lib/VideoLink/style/index.css +1 -0
  152. package/dist/lib/WebEmbed/index.d.ts +2 -0
  153. package/dist/lib/WebEmbed/index.js +8 -0
  154. package/dist/lib/WebEmbed/style/index.css +1 -0
  155. package/dist/lib/XPostEmbed/index.d.ts +5 -0
  156. package/dist/lib/XPostEmbed/index.js +8 -0
  157. package/dist/lib/XPostEmbed/style/index.css +1 -0
  158. package/dist/lib/index.d.ts +2 -0
  159. package/dist/lib/index.js +20 -0
  160. package/dist/lib/style/external.css +2 -0
  161. package/dist/lib/style/index.css +2 -0
  162. package/dist/lib/themes/dark.css +2 -0
  163. package/dist/lib/themes/light.css +2 -0
  164. package/package.json +76 -7
  165. package/index.js +0 -1
package/dist/index.css ADDED
@@ -0,0 +1,3731 @@
1
+ :root[data-wk-theme="dark"] .willa-shell,
2
+ :root[data-wk-theme="dark"] .willa-lightbox {
3
+ --willa-surface-soft: rgba(255, 255, 255, 0.045);
4
+ --willa-surface-tint: rgba(255, 255, 255, 0.03);
5
+ --willa-text-strong: #f3f4f6;
6
+ --willa-text: rgba(255, 255, 255, 0.86);
7
+ --willa-text-soft: rgba(255, 255, 255, 0.68);
8
+ --willa-text-faint: rgba(255, 255, 255, 0.52);
9
+ --willa-line: rgba(255, 255, 255, 0.11);
10
+ --willa-line-strong: rgba(255, 255, 255, 0.18);
11
+ --willa-accent: #7dd3fc;
12
+ --willa-accent-2: #86efac;
13
+ --willa-accent-2-soft: rgba(134, 239, 172, 0.12);
14
+ --willa-focus-ring: rgba(122, 162, 247, 0.5);
15
+ --willa-panel-bg: rgba(28, 31, 36, 0.98);
16
+ --willa-skeleton-bg: linear-gradient(
17
+ 90deg,
18
+ rgba(148, 163, 184, 0.1),
19
+ rgba(148, 163, 184, 0.22),
20
+ rgba(148, 163, 184, 0.1)
21
+ );
22
+ --willa-cover-bg: #111317;
23
+ --willa-image-bg: #151d29;
24
+ --willa-floating-bg: rgba(29, 32, 37, 0.96);
25
+ --willa-lightbox-bg: rgba(17, 19, 23, 0.68);
26
+ --willa-lightbox-solid-bg: #111317;
27
+ --willa-code-block-bg: #151d29;
28
+ --willa-code-block-border: rgba(255, 255, 255, 0.06);
29
+ --willa-code-line-highlight: rgba(0, 0, 0, 0.36);
30
+ --willa-code-meta-border: transparent;
31
+ --willa-code-lang-bg: transparent;
32
+ --willa-code-lang-color: rgba(235, 235, 245, 0.38);
33
+ --willa-code-copy-copied-border: rgba(134, 239, 172, 0.42);
34
+ --willa-code-text: #c9d1d9;
35
+ --willa-code-muted: #8b949e;
36
+ --willa-code-keyword: #ff7b72;
37
+ --willa-code-string: #a5d6ff;
38
+ --willa-code-number: #79c0ff;
39
+ --willa-code-title: #d2a8ff;
40
+ --willa-code-comment: #8b949e;
41
+ --willa-code-attr: #79c0ff;
42
+ --willa-code-symbol: #ffa657;
43
+ --willa-code-deletion: #ffdcd7;
44
+ --willa-code-addition: #aff5b4;
45
+ --willa-audio-border: rgba(134, 239, 172, 0.18);
46
+ --willa-audio-border-hover: rgba(134, 239, 172, 0.22);
47
+ --willa-audio-bg:
48
+ linear-gradient(135deg, rgba(134, 239, 172, 0.09), transparent 62%),
49
+ var(--willa-surface-tint);
50
+ --willa-audio-bg-hover: var(--willa-audio-bg);
51
+ --willa-audio-inline-bg:
52
+ linear-gradient(135deg, rgba(134, 239, 172, 0.11), transparent 58%),
53
+ rgba(134, 239, 172, 0.06);
54
+ --willa-audio-visual-bg: rgba(134, 239, 172, 0.1);
55
+ --willa-audio-fallback-bg:
56
+ radial-gradient(
57
+ circle at 50% 22%,
58
+ rgba(134, 239, 172, 0.22),
59
+ transparent 34%
60
+ ),
61
+ rgba(134, 239, 172, 0.08);
62
+ --willa-audio-accent: #86efac;
63
+ --willa-audio-player-border: rgba(134, 239, 172, 0.22);
64
+ --willa-audio-player-bg:
65
+ linear-gradient(180deg, rgba(255, 255, 255, 0.04), transparent 100%),
66
+ rgba(134, 239, 172, 0.08);
67
+ --willa-audio-progress-bg: rgba(255, 255, 255, 0.1);
68
+ --willa-audio-progress-fill: linear-gradient(90deg, #34d399, #86efac);
69
+ --willa-audio-status-bg: rgba(134, 239, 172, 0.12);
70
+ --willa-audio-status-color: #86efac;
71
+ --willa-audio-error-bg: rgba(248, 113, 113, 0.1);
72
+ --willa-audio-error-border: rgba(248, 113, 113, 0.28);
73
+ --willa-audio-error-status-bg: rgba(248, 113, 113, 0.14);
74
+ --willa-audio-error-status-color: #fca5a5;
75
+ --willa-video-border: rgba(125, 211, 252, 0.2);
76
+ --willa-video-border-hover: rgba(125, 211, 252, 0.24);
77
+ --willa-video-inline-bg:
78
+ linear-gradient(135deg, rgba(135, 188, 221, 0.11), transparent 58%),
79
+ rgba(135, 188, 221, 0.06);
80
+ --willa-video-fallback-bg:
81
+ linear-gradient(135deg, rgba(125, 211, 252, 0.09), transparent 52%),
82
+ linear-gradient(315deg, rgba(134, 239, 172, 0.08), transparent 56%),
83
+ var(--willa-image-bg);
84
+ --willa-video-play-bg: rgba(17, 24, 39, 0.9);
85
+ --willa-video-play-color: #ffffff;
86
+ --willa-video-play-shadow: 0 10px 24px rgba(0, 0, 0, 0.28);
87
+ --willa-video-link-border: rgba(135, 188, 221, 0.24);
88
+ --willa-video-link-border-hover: rgba(135, 188, 221, 0.32);
89
+ --willa-video-link-bg: rgba(135, 188, 221, 0.08);
90
+ --willa-video-link-bg-hover: rgba(135, 188, 221, 0.12);
91
+ --willa-video-link-icon: #bae6fd;
92
+ --willa-media-popover-shadow: 0 18px 40px rgba(0, 0, 0, 0.34);
93
+ --willa-step-marker-bg: #f3f4f6;
94
+ --willa-step-marker-color: #111827;
95
+ --willa-step-line: rgba(255, 255, 255, 0.16);
96
+ --willa-callout-note-accent: #93c5fd;
97
+ --willa-callout-note-bg: rgba(96, 165, 250, 0.14);
98
+ --willa-callout-note-border: rgba(147, 197, 253, 0.28);
99
+ --willa-callout-note-shadow: transparent;
100
+ --willa-callout-tip-accent: #86efac;
101
+ --willa-callout-tip-bg: rgba(74, 222, 128, 0.13);
102
+ --willa-callout-tip-border: rgba(134, 239, 172, 0.26);
103
+ --willa-callout-tip-shadow: transparent;
104
+ --willa-callout-warning-accent: #fbbf24;
105
+ --willa-callout-warning-bg: rgba(251, 191, 36, 0.14);
106
+ --willa-callout-warning-border: rgba(251, 191, 36, 0.3);
107
+ --willa-callout-warning-shadow: transparent;
108
+ --willa-callout-success-accent: var(--willa-callout-tip-accent);
109
+ --willa-callout-success-bg: var(--willa-callout-tip-bg);
110
+ --willa-callout-success-border: var(--willa-callout-tip-border);
111
+ --willa-callout-success-shadow: var(--willa-callout-tip-shadow);
112
+ --willa-callout-error-accent: #fca5a5;
113
+ --willa-callout-error-bg: rgba(248, 113, 113, 0.13);
114
+ --willa-callout-error-border: rgba(252, 165, 165, 0.28);
115
+ --willa-callout-error-shadow: transparent;
116
+ --willa-fancy-list-title: #93c5fd;
117
+ --willa-fancy-list-border: rgba(96, 165, 250, 0.22);
118
+ --willa-fancy-list-bg: rgba(37, 99, 235, 0.12);
119
+ --willa-fancy-list-divider: rgba(96, 165, 250, 0.2);
120
+ --willa-fancy-list-line: rgba(219, 234, 254, 0.82);
121
+ --willa-chat-bg: rgba(255, 255, 255, 0.04);
122
+ --willa-chat-avatar-bg: rgba(255, 255, 255, 0.1);
123
+ --willa-chat-avatar-assistant-bg: rgba(125, 211, 252, 0.18);
124
+ --willa-chat-avatar-assistant-color: #b9e6ff;
125
+ --willa-chat-avatar-sparkles-bg: rgba(192, 132, 252, 0.18);
126
+ --willa-chat-avatar-sparkles-color: #e9d5ff;
127
+ --willa-chat-avatar-cat-bg: rgba(251, 146, 60, 0.18);
128
+ --willa-chat-avatar-cat-color: #fed7aa;
129
+ --willa-chat-avatar-idea-bg: rgba(250, 204, 21, 0.18);
130
+ --willa-chat-avatar-idea-color: #fde68a;
131
+ --willa-chat-avatar-book-bg: rgba(56, 189, 248, 0.18);
132
+ --willa-chat-avatar-book-color: #bae6fd;
133
+ --willa-chat-avatar-moon-bg: rgba(129, 140, 248, 0.18);
134
+ --willa-chat-avatar-moon-color: #c7d2fe;
135
+ --willa-chat-avatar-system-bg: rgba(255, 255, 255, 0.1);
136
+ --willa-chat-avatar-user-bg: rgba(255, 255, 255, 0.1);
137
+ --willa-chat-bubble-bg: rgba(24, 24, 27, 0.96);
138
+ --willa-chat-bubble-assistant-bg: rgba(5, 150, 105, 0.18);
139
+ --willa-chat-bubble-system-bg: rgba(38, 38, 42, 0.96);
140
+ --willa-chat-bubble-user-bg: rgba(37, 99, 235, 0.18);
141
+ --willa-chat-bubble-left-border: rgba(52, 211, 153, 0.24);
142
+ --willa-chat-bubble-right-border: rgba(96, 165, 250, 0.34);
143
+ --willa-url-link-bg: rgba(255, 255, 255, 0.14);
144
+ --willa-url-link-bg-hover: rgba(125, 211, 252, 0.18);
145
+ --willa-poem-bg: rgba(255, 255, 255, 0.075);
146
+ --willa-poem-border: rgba(255, 255, 255, 0.09);
147
+ --willa-poem-divider: rgba(255, 255, 255, 0.08);
148
+ --willa-summary-card-bg: rgba(255, 255, 255, 0.045);
149
+ }
150
+ .willa-shell,
151
+ .willa-lightbox {
152
+ --willa-body-font: var(--site-font-body, system-ui, sans-serif);
153
+ --willa-title-font: var(--site-font-title, system-ui, sans-serif);
154
+ --willa-code-font:
155
+ "SFMono-Regular", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
156
+ --willa-surface-soft: rgba(15, 23, 42, 0.045);
157
+ --willa-surface-tint: rgba(15, 23, 42, 0.03);
158
+ --willa-text-strong: #111827;
159
+ --willa-text: rgba(17, 24, 39, 0.88);
160
+ --willa-text-soft: rgba(31, 41, 55, 0.72);
161
+ --willa-text-faint: rgba(31, 41, 55, 0.52);
162
+ --willa-line: rgba(15, 23, 42, 0.11);
163
+ --willa-line-strong: rgba(15, 23, 42, 0.18);
164
+ --willa-accent: #2563eb;
165
+ --willa-accent-2: #059669;
166
+ --willa-accent-2-soft: rgba(5, 150, 105, 0.1);
167
+ --willa-focus-ring: rgba(37, 99, 235, 0.34);
168
+ --willa-panel-bg: rgba(255, 255, 255, 0.98);
169
+ --willa-skeleton-bg: linear-gradient(
170
+ 90deg,
171
+ rgba(148, 163, 184, 0.14),
172
+ rgba(148, 163, 184, 0.28),
173
+ rgba(148, 163, 184, 0.14)
174
+ );
175
+ --willa-cover-bg: #e5e7eb;
176
+ --willa-image-bg: var(--willa-code-block-bg);
177
+ --willa-floating-bg: rgba(255, 255, 255, 0.96);
178
+ --willa-lightbox-bg: rgba(248, 250, 252, 0.68);
179
+ --willa-lightbox-solid-bg: #f8fafc;
180
+ --willa-code-block-bg: #f6f6f7;
181
+ --willa-code-block-border: rgba(60, 60, 67, 0.12);
182
+ --willa-code-line-highlight: rgba(60, 60, 67, 0.1);
183
+ --willa-code-meta-border: transparent;
184
+ --willa-code-lang-bg: transparent;
185
+ --willa-code-lang-color: rgba(60, 60, 67, 0.56);
186
+ --willa-code-copy-copied-border: rgba(5, 150, 105, 0.5);
187
+ --willa-code-text: #24292e;
188
+ --willa-code-muted: #6a737d;
189
+ --willa-code-keyword: #d73a49;
190
+ --willa-code-string: #032f62;
191
+ --willa-code-number: #005cc5;
192
+ --willa-code-title: #6f42c1;
193
+ --willa-code-comment: #6a737d;
194
+ --willa-code-attr: #005cc5;
195
+ --willa-code-symbol: #e36209;
196
+ --willa-code-deletion: #b31d28;
197
+ --willa-code-addition: #22863a;
198
+ --willa-audio-border: rgba(5, 150, 105, 0.22);
199
+ --willa-audio-border-hover: rgba(5, 150, 105, 0.38);
200
+ --willa-audio-bg:
201
+ linear-gradient(135deg, rgba(5, 150, 105, 0.08), transparent 62%),
202
+ var(--willa-surface-tint);
203
+ --willa-audio-bg-hover:
204
+ linear-gradient(135deg, rgba(5, 150, 105, 0.1), transparent 62%),
205
+ var(--willa-surface-soft);
206
+ --willa-audio-inline-bg:
207
+ linear-gradient(135deg, rgba(5, 150, 105, 0.1), transparent 58%),
208
+ rgba(5, 150, 105, 0.04);
209
+ --willa-audio-visual-bg: rgba(5, 150, 105, 0.1);
210
+ --willa-audio-fallback-bg:
211
+ radial-gradient(
212
+ circle at 50% 22%,
213
+ rgba(5, 150, 105, 0.24),
214
+ transparent 34%
215
+ ),
216
+ rgba(5, 150, 105, 0.08);
217
+ --willa-audio-accent: #059669;
218
+ --willa-audio-player-border: rgba(5, 150, 105, 0.16);
219
+ --willa-audio-player-bg:
220
+ linear-gradient(180deg, rgba(255, 255, 255, 0.3), transparent 100%),
221
+ rgba(5, 150, 105, 0.06);
222
+ --willa-audio-toggle-bg: linear-gradient(135deg, #10b981 0%, #059669 100%);
223
+ --willa-audio-toggle-playing-bg: linear-gradient(
224
+ 135deg,
225
+ #059669 0%,
226
+ #047857 100%
227
+ );
228
+ --willa-audio-toggle-loading-bg: linear-gradient(
229
+ 135deg,
230
+ #34d399 0%,
231
+ #10b981 100%
232
+ );
233
+ --willa-audio-toggle-error-bg: linear-gradient(
234
+ 135deg,
235
+ #ef4444 0%,
236
+ #dc2626 100%
237
+ );
238
+ --willa-audio-toggle-color: #ffffff;
239
+ --willa-audio-toggle-shadow: 0 10px 24px rgba(5, 150, 105, 0.2);
240
+ --willa-audio-toggle-shadow-hover: 0 12px 28px rgba(5, 150, 105, 0.24);
241
+ --willa-audio-progress-bg: rgba(15, 23, 42, 0.08);
242
+ --willa-audio-progress-fill: linear-gradient(90deg, #10b981, #34d399);
243
+ --willa-audio-thumb-border: #ffffff;
244
+ --willa-audio-thumb-bg: #059669;
245
+ --willa-audio-thumb-shadow: 0 2px 8px rgba(5, 150, 105, 0.28);
246
+ --willa-audio-status-bg: rgba(5, 150, 105, 0.1);
247
+ --willa-audio-status-color: #047857;
248
+ --willa-audio-error-bg: rgba(220, 38, 38, 0.08);
249
+ --willa-audio-error-border: rgba(220, 38, 38, 0.24);
250
+ --willa-audio-error-status-bg: rgba(220, 38, 38, 0.12);
251
+ --willa-audio-error-status-color: #b91c1c;
252
+ --willa-video-border: rgba(37, 99, 235, 0.18);
253
+ --willa-video-border-hover: rgba(37, 99, 235, 0.3);
254
+ --willa-video-inline-bg:
255
+ linear-gradient(135deg, rgba(37, 99, 235, 0.09), transparent 58%),
256
+ rgba(37, 99, 235, 0.035);
257
+ --willa-video-fallback-bg:
258
+ linear-gradient(135deg, rgba(37, 99, 235, 0.11), transparent 52%),
259
+ linear-gradient(315deg, rgba(5, 150, 105, 0.12), transparent 56%),
260
+ var(--willa-image-bg);
261
+ --willa-video-play-bg: rgba(255, 255, 255, 0.92);
262
+ --willa-video-play-color: #111827;
263
+ --willa-video-play-shadow: 0 10px 24px rgba(15, 23, 42, 0.2);
264
+ --willa-video-link-border: rgba(37, 99, 235, 0.24);
265
+ --willa-video-link-border-hover: rgba(37, 99, 235, 0.4);
266
+ --willa-video-link-bg: rgba(37, 99, 235, 0.07);
267
+ --willa-video-link-bg-hover: rgba(37, 99, 235, 0.11);
268
+ --willa-video-link-icon: #2563eb;
269
+ --willa-media-popover-shadow: 0 18px 40px rgba(15, 23, 42, 0.14);
270
+ --willa-step-marker-bg: #111827;
271
+ --willa-step-marker-color: #ffffff;
272
+ --willa-step-line: var(--willa-line-strong);
273
+ --willa-callout-note-accent: #2563eb;
274
+ --willa-callout-note-bg: #f8fbff;
275
+ --willa-callout-note-border: #bfdbfe;
276
+ --willa-callout-note-shadow: rgba(37, 99, 235, 0.08);
277
+ --willa-callout-tip-accent: #2f9461;
278
+ --willa-callout-tip-bg: #f6fbf8;
279
+ --willa-callout-tip-border: #bfe8d0;
280
+ --willa-callout-tip-shadow: rgba(47, 148, 97, 0.08);
281
+ --willa-callout-warning-accent: #d28a17;
282
+ --willa-callout-warning-bg: #fffaf0;
283
+ --willa-callout-warning-border: #f4d59c;
284
+ --willa-callout-warning-shadow: rgba(210, 138, 23, 0.1);
285
+ --willa-callout-success-accent: var(--willa-callout-tip-accent);
286
+ --willa-callout-success-bg: var(--willa-callout-tip-bg);
287
+ --willa-callout-success-border: var(--willa-callout-tip-border);
288
+ --willa-callout-success-shadow: var(--willa-callout-tip-shadow);
289
+ --willa-callout-error-accent: #ef4444;
290
+ --willa-callout-error-bg: #fff7f7;
291
+ --willa-callout-error-border: #fecaca;
292
+ --willa-callout-error-shadow: rgba(239, 68, 68, 0.08);
293
+ --willa-fancy-list-title: #1d4ed8;
294
+ --willa-fancy-list-border: rgba(37, 99, 235, 0.14);
295
+ --willa-fancy-list-bg: rgba(59, 130, 246, 0.045);
296
+ --willa-fancy-list-divider: rgba(37, 99, 235, 0.16);
297
+ --willa-fancy-list-line: rgba(30, 64, 175, 0.86);
298
+ --willa-chat-bg: rgba(15, 23, 42, 0.035);
299
+ --willa-chat-avatar-bg: rgba(15, 23, 42, 0.08);
300
+ --willa-chat-avatar-assistant-bg: rgba(37, 99, 235, 0.12);
301
+ --willa-chat-avatar-assistant-color: #2453b7;
302
+ --willa-chat-avatar-sparkles-bg: rgba(168, 85, 247, 0.12);
303
+ --willa-chat-avatar-sparkles-color: #7e22ce;
304
+ --willa-chat-avatar-cat-bg: rgba(249, 115, 22, 0.12);
305
+ --willa-chat-avatar-cat-color: #c2410c;
306
+ --willa-chat-avatar-idea-bg: rgba(245, 158, 11, 0.14);
307
+ --willa-chat-avatar-idea-color: #b45309;
308
+ --willa-chat-avatar-book-bg: rgba(14, 165, 233, 0.12);
309
+ --willa-chat-avatar-book-color: #0369a1;
310
+ --willa-chat-avatar-moon-bg: rgba(99, 102, 241, 0.12);
311
+ --willa-chat-avatar-moon-color: #4338ca;
312
+ --willa-chat-avatar-system-bg: rgba(15, 23, 42, 0.1);
313
+ --willa-chat-avatar-user-bg: rgba(15, 23, 42, 0.12);
314
+ --willa-chat-bubble-bg: rgba(255, 255, 255, 0.78);
315
+ --willa-chat-bubble-assistant-bg: rgba(5, 150, 105, 0.1);
316
+ --willa-chat-bubble-system-bg: rgba(15, 23, 42, 0.06);
317
+ --willa-chat-bubble-user-bg: rgba(37, 99, 235, 0.09);
318
+ --willa-chat-bubble-left-border: rgba(5, 150, 105, 0.32);
319
+ --willa-chat-bubble-right-border: rgba(37, 99, 235, 0.28);
320
+ --willa-url-link-bg: rgba(15, 23, 42, 0.06);
321
+ --willa-url-link-bg-hover: rgba(15, 23, 42, 0.09);
322
+ --willa-poem-bg: rgba(15, 23, 42, 0.035);
323
+ --willa-poem-border: transparent;
324
+ --willa-poem-divider: rgba(15, 23, 42, 0.08);
325
+ --willa-summary-card-bg: rgba(15, 23, 42, 0.04);
326
+ }
327
+ .willa-prose-audio-embed {
328
+ display: grid;
329
+ grid-template-columns: 5.6rem minmax(0, 1fr) auto;
330
+ align-items: stretch;
331
+ min-height: 7rem;
332
+ margin: 0 0 1.35rem;
333
+ overflow: hidden;
334
+ border: 1px solid var(--willa-audio-border);
335
+ border-radius: 10px;
336
+ background: var(--willa-audio-bg);
337
+ color: inherit;
338
+ text-decoration: none;
339
+ text-shadow: none;
340
+ transition:
341
+ border-color 180ms ease,
342
+ background-color 180ms ease,
343
+ transform 180ms ease;
344
+ }
345
+ .willa-prose-audio-embed:hover {
346
+ border-color: var(--willa-audio-border-hover);
347
+ background: var(--willa-audio-bg-hover);
348
+ transform: translateY(-1px);
349
+ }
350
+ .willa-prose-audio-embed--inline {
351
+ grid-template-columns: minmax(0, 1fr) auto;
352
+ min-height: auto;
353
+ background: var(--willa-audio-inline-bg);
354
+ }
355
+ .willa-prose-audio-embed:focus-visible {
356
+ outline: 2px solid var(--willa-focus-ring);
357
+ outline-offset: 2px;
358
+ }
359
+ .willa-prose-audio-embed-visual {
360
+ display: block;
361
+ min-height: 100%;
362
+ background: var(--willa-audio-visual-bg);
363
+ }
364
+ .willa-prose-audio-embed-fallback {
365
+ display: flex;
366
+ width: 100%;
367
+ min-height: 7rem;
368
+ height: 100%;
369
+ align-items: center;
370
+ justify-content: center;
371
+ flex-direction: column;
372
+ gap: 0.82rem;
373
+ background: var(--willa-audio-fallback-bg);
374
+ }
375
+ .willa-prose-audio-embed-kind-icon {
376
+ width: 1.55rem;
377
+ height: 1.55rem;
378
+ color: var(--willa-audio-accent);
379
+ }
380
+ .willa-prose-audio-embed-wave {
381
+ display: inline-flex;
382
+ align-items: center;
383
+ gap: 3px;
384
+ height: 1.3rem;
385
+ }
386
+ .willa-prose-audio-embed-wave span {
387
+ width: 3px;
388
+ border-radius: 999px;
389
+ background: var(--willa-audio-accent);
390
+ }
391
+ .willa-prose-audio-embed-wave span:nth-child(1) {
392
+ height: 0.52rem;
393
+ opacity: 0.58;
394
+ }
395
+ .willa-prose-audio-embed-wave span:nth-child(2) {
396
+ height: 1.15rem;
397
+ opacity: 0.9;
398
+ }
399
+ .willa-prose-audio-embed-wave span:nth-child(3) {
400
+ height: 0.82rem;
401
+ opacity: 0.72;
402
+ }
403
+ .willa-prose-audio-embed-wave span:nth-child(4) {
404
+ height: 1.3rem;
405
+ opacity: 0.96;
406
+ }
407
+ .willa-prose-audio-embed-content {
408
+ display: flex;
409
+ min-width: 0;
410
+ flex-direction: column;
411
+ justify-content: center;
412
+ gap: 0.42rem;
413
+ padding: 1.05rem 1.1rem;
414
+ }
415
+ .willa-prose-audio-embed--inline .willa-prose-audio-embed-content {
416
+ padding-right: 0.8rem;
417
+ }
418
+ .willa-prose-audio-embed-kicker {
419
+ display: flex;
420
+ flex-wrap: wrap;
421
+ align-items: center;
422
+ gap: 0.38rem 0.55rem;
423
+ color: var(--willa-text-faint);
424
+ font-size: 0.78rem;
425
+ font-weight: 650;
426
+ line-height: 1.4;
427
+ }
428
+ .willa-prose-audio-embed-inline-icon {
429
+ flex: none;
430
+ width: 0.92rem;
431
+ height: 0.92rem;
432
+ }
433
+ .willa-prose-audio-embed-duration {
434
+ color: var(--willa-text-soft);
435
+ font-family: var(--willa-code-font);
436
+ font-size: 0.75rem;
437
+ font-weight: 500;
438
+ }
439
+ .willa-prose-audio-embed-title {
440
+ color: var(--willa-text-strong);
441
+ font-family: var(--willa-title-font);
442
+ font-size: 1.08rem;
443
+ font-weight: 650;
444
+ line-height: 1.45;
445
+ }
446
+ .willa-prose-audio-embed-description {
447
+ display: -webkit-box;
448
+ overflow: hidden;
449
+ color: var(--willa-text-soft);
450
+ font-size: 0.9rem;
451
+ font-weight: 500;
452
+ line-height: 1.7;
453
+ -webkit-box-orient: vertical;
454
+ -webkit-line-clamp: 2;
455
+ }
456
+ .willa-prose-audio-embed-external {
457
+ width: 1rem;
458
+ height: 1rem;
459
+ margin: 1rem 1rem 0 0;
460
+ color: var(--willa-text-faint);
461
+ }
462
+ .willa-prose-audio-embed-external-link {
463
+ display: inline-flex;
464
+ align-self: start;
465
+ margin: 1rem 1rem 0 0;
466
+ color: var(--willa-text-faint);
467
+ }
468
+ .willa-prose-audio-embed-external-link:hover {
469
+ color: var(--willa-text-strong);
470
+ }
471
+ .willa-prose-audio-embed-external-link .willa-prose-audio-embed-external {
472
+ margin: 0;
473
+ }
474
+ .willa-prose-audio-embed-external--placeholder {
475
+ opacity: 0;
476
+ }
477
+ .willa-prose-audio-embed-player-shell {
478
+ grid-column: 1 / -1;
479
+ margin: 0 1rem 1rem;
480
+ padding-top: 0.95rem;
481
+ border-top: 1px solid var(--willa-line);
482
+ }
483
+ .willa-prose-audio-embed-player {
484
+ display: grid;
485
+ grid-template-columns: auto minmax(0, 1fr);
486
+ align-items: start;
487
+ gap: 0.9rem;
488
+ width: 100%;
489
+ min-height: 4rem;
490
+ padding: 0.8rem 0.9rem;
491
+ border: 1px solid var(--willa-audio-player-border);
492
+ border-radius: 12px;
493
+ background: var(--willa-audio-player-bg);
494
+ }
495
+ .willa-prose-audio-embed-toggle {
496
+ display: inline-flex;
497
+ width: 2.55rem;
498
+ height: 2.55rem;
499
+ align-self: start;
500
+ margin-top: 0.18rem;
501
+ align-items: center;
502
+ justify-content: center;
503
+ border: none;
504
+ border-radius: 999px;
505
+ background: var(--willa-audio-toggle-bg);
506
+ color: var(--willa-audio-toggle-color);
507
+ box-shadow: var(--willa-audio-toggle-shadow);
508
+ cursor: pointer;
509
+ transition:
510
+ transform 180ms ease,
511
+ box-shadow 180ms ease,
512
+ background-color 180ms ease;
513
+ }
514
+ .willa-prose-audio-embed-toggle:disabled {
515
+ cursor: not-allowed;
516
+ opacity: 0.72;
517
+ transform: none;
518
+ box-shadow: none;
519
+ }
520
+ .willa-prose-audio-embed-toggle:hover {
521
+ transform: translateY(-1px);
522
+ box-shadow: var(--willa-audio-toggle-shadow-hover);
523
+ }
524
+ .willa-prose-audio-embed-toggle:focus-visible {
525
+ outline: 2px solid var(--willa-focus-ring);
526
+ outline-offset: 2px;
527
+ }
528
+ .willa-prose-audio-embed-toggle--playing {
529
+ background: var(--willa-audio-toggle-playing-bg);
530
+ }
531
+ .willa-prose-audio-embed-toggle--loading {
532
+ background: var(--willa-audio-toggle-loading-bg);
533
+ }
534
+ .willa-prose-audio-embed-toggle--error {
535
+ background: var(--willa-audio-toggle-error-bg);
536
+ }
537
+ .willa-prose-audio-embed-toggle svg {
538
+ width: 1.1rem;
539
+ height: 1.1rem;
540
+ }
541
+ .willa-prose-audio-embed-timeline {
542
+ display: flex;
543
+ min-width: 0;
544
+ flex-direction: column;
545
+ justify-content: flex-start;
546
+ gap: 0.44rem;
547
+ padding-top: 0.1rem;
548
+ }
549
+ .willa-prose-audio-embed-scrubber {
550
+ display: grid;
551
+ grid-template-columns: minmax(0, 1fr) auto;
552
+ align-items: center;
553
+ gap: 0.8rem;
554
+ min-height: 2.55rem;
555
+ }
556
+ .willa-prose-audio-embed-progress {
557
+ --willa-audio-progress: 0%;
558
+ position: relative;
559
+ height: 0.45rem;
560
+ display: flex;
561
+ align-items: center;
562
+ border-radius: 999px;
563
+ background: var(--willa-audio-progress-bg);
564
+ overflow: visible;
565
+ }
566
+ .willa-prose-audio-embed-progress::before {
567
+ content: "";
568
+ position: absolute;
569
+ inset: 0 auto 0 0;
570
+ width: var(--willa-audio-progress);
571
+ border-radius: inherit;
572
+ background: var(--willa-audio-progress-fill);
573
+ pointer-events: none;
574
+ }
575
+ .willa-prose-audio-embed-progress input[type="range"] {
576
+ position: absolute;
577
+ inset: 50% 0 auto;
578
+ display: block;
579
+ z-index: 1;
580
+ width: 100%;
581
+ height: 0.45rem;
582
+ margin: 0;
583
+ appearance: none;
584
+ background: transparent;
585
+ cursor: pointer;
586
+ transform: translateY(-50%);
587
+ }
588
+ .willa-prose-audio-embed-progress input[type="range"]::-webkit-slider-thumb {
589
+ appearance: none;
590
+ width: 0.9rem;
591
+ height: 0.9rem;
592
+ margin-top: -0.225rem;
593
+ border: 2px solid var(--willa-audio-thumb-border);
594
+ border-radius: 999px;
595
+ background: var(--willa-audio-thumb-bg);
596
+ box-shadow: var(--willa-audio-thumb-shadow);
597
+ }
598
+ .willa-prose-audio-embed-progress
599
+ input[type="range"]::-webkit-slider-runnable-track {
600
+ height: 0.45rem;
601
+ border-radius: 999px;
602
+ background: transparent;
603
+ }
604
+ .willa-prose-audio-embed-progress input[type="range"]::-moz-range-thumb {
605
+ width: 0.9rem;
606
+ height: 0.9rem;
607
+ border: 2px solid var(--willa-audio-thumb-border);
608
+ border-radius: 999px;
609
+ background: var(--willa-audio-thumb-bg);
610
+ box-shadow: var(--willa-audio-thumb-shadow);
611
+ }
612
+ .willa-prose-audio-embed-progress input[type="range"]::-moz-range-track {
613
+ height: 0.45rem;
614
+ border: none;
615
+ border-radius: 999px;
616
+ background: transparent;
617
+ }
618
+ .willa-prose-audio-embed-progress input[type="range"]:disabled {
619
+ cursor: default;
620
+ }
621
+ .willa-prose-audio-embed-time {
622
+ display: inline-flex;
623
+ align-items: center;
624
+ justify-content: flex-end;
625
+ gap: 0.28rem;
626
+ white-space: nowrap;
627
+ color: var(--willa-text-faint);
628
+ font-family: var(--willa-code-font);
629
+ font-size: 0.76rem;
630
+ font-variant-numeric: tabular-nums;
631
+ }
632
+ .willa-prose-audio-embed-meta {
633
+ display: flex;
634
+ justify-content: flex-end;
635
+ }
636
+ .willa-prose-audio-embed-status {
637
+ display: inline-flex;
638
+ align-items: center;
639
+ padding: 0.06rem 0.38rem;
640
+ border-radius: 999px;
641
+ background: var(--willa-audio-status-bg);
642
+ color: var(--willa-audio-status-color);
643
+ font-size: 0.68rem;
644
+ font-weight: 650;
645
+ letter-spacing: 0.01em;
646
+ text-transform: lowercase;
647
+ }
648
+ .willa-prose-audio-embed-native {
649
+ display: none;
650
+ }
651
+ @media (max-width: 767px) {
652
+ .willa-prose-audio-embed {
653
+ grid-template-columns: 1fr auto;
654
+ }
655
+
656
+ .willa-prose-audio-embed-visual {
657
+ grid-column: 1 / -1;
658
+ min-height: 9rem;
659
+ }
660
+
661
+ .willa-prose-audio-embed-content {
662
+ padding: 0.95rem 1rem 1rem;
663
+ }
664
+
665
+ .willa-prose-audio-embed-player-shell {
666
+ margin: 0 0.9rem 0.9rem;
667
+ padding-top: 0.85rem;
668
+ }
669
+
670
+ .willa-prose-audio-embed-player {
671
+ gap: 0.75rem;
672
+ padding: 0.72rem 0.8rem;
673
+ }
674
+
675
+ .willa-prose-audio-embed-toggle {
676
+ width: 2.35rem;
677
+ height: 2.35rem;
678
+ }
679
+
680
+ .willa-prose-audio-embed-time {
681
+ justify-content: flex-start;
682
+ }
683
+
684
+ .willa-prose-audio-embed-meta {
685
+ justify-content: flex-start;
686
+ }
687
+ }
688
+ .willa-prose-audio-link,
689
+ .willa-prose-audio-link--player {
690
+ display: inline-flex;
691
+ align-items: center;
692
+ gap: 0.32rem;
693
+ max-width: 100%;
694
+ margin: 0 0.12rem;
695
+ padding: 0.12rem 0.42rem;
696
+ border: 1px solid var(--willa-audio-border);
697
+ border-radius: 999px;
698
+ background: var(--willa-audio-visual-bg);
699
+ color: var(--willa-text-strong);
700
+ font-size: 0.88em;
701
+ font-weight: 650;
702
+ line-height: 1.38;
703
+ text-decoration: none;
704
+ text-shadow: none;
705
+ vertical-align: 0.02em;
706
+ transition:
707
+ border-color 180ms ease,
708
+ background-color 180ms ease,
709
+ color 180ms ease;
710
+ }
711
+ .willa-prose-audio-link--player {
712
+ cursor: pointer;
713
+ }
714
+ .willa-prose-audio-link--player:disabled {
715
+ cursor: not-allowed;
716
+ opacity: 0.78;
717
+ }
718
+ .willa-prose-audio-link:hover,
719
+ .willa-prose-audio-link--player:hover {
720
+ border-color: var(--willa-audio-border-hover);
721
+ background: var(--willa-audio-status-bg);
722
+ color: var(--willa-text-strong);
723
+ text-decoration: none;
724
+ }
725
+ .willa-prose-audio-link--playing {
726
+ border-color: var(--willa-audio-border-hover);
727
+ background: var(--willa-audio-status-bg);
728
+ }
729
+ .willa-prose-audio-link--loading {
730
+ background: var(--willa-audio-status-bg);
731
+ }
732
+ .willa-prose-audio-link--error {
733
+ border-color: var(--willa-audio-error-border);
734
+ background: var(--willa-audio-error-bg);
735
+ }
736
+ .willa-prose-audio-link-wrap {
737
+ position: relative;
738
+ display: inline-flex;
739
+ align-items: center;
740
+ gap: 0.32rem;
741
+ max-width: 100%;
742
+ vertical-align: 0.02em;
743
+ }
744
+ .willa-prose-audio-link-icon,
745
+ .willa-prose-media-link-external {
746
+ flex: none;
747
+ width: 0.86em;
748
+ height: 0.86em;
749
+ color: var(--willa-audio-accent);
750
+ }
751
+ .willa-prose-audio-link-icon--trigger {
752
+ width: 0.92em;
753
+ height: 0.92em;
754
+ }
755
+ .willa-prose-audio-link-trigger {
756
+ position: relative;
757
+ display: inline-flex;
758
+ width: 0.92em;
759
+ height: 0.92em;
760
+ flex: none;
761
+ align-items: center;
762
+ justify-content: center;
763
+ }
764
+ .willa-prose-audio-link-trigger .willa-prose-audio-link-icon--trigger {
765
+ position: absolute;
766
+ inset: 0;
767
+ margin: auto;
768
+ transition: opacity 140ms ease;
769
+ }
770
+ .willa-prose-audio-link-icon--pause {
771
+ opacity: 0;
772
+ }
773
+ .willa-prose-audio-link-trigger[data-state="playing"]
774
+ .willa-prose-audio-link-icon--play {
775
+ opacity: 0;
776
+ }
777
+ .willa-prose-audio-link-trigger[data-state="playing"]
778
+ .willa-prose-audio-link-icon--pause {
779
+ opacity: 1;
780
+ }
781
+ .willa-prose-media-link-external {
782
+ color: var(--willa-text-faint);
783
+ }
784
+ .willa-prose-audio-link-external-action {
785
+ display: inline-flex;
786
+ align-items: center;
787
+ justify-content: center;
788
+ color: var(--willa-text-faint);
789
+ }
790
+ .willa-prose-audio-link-status {
791
+ display: inline-flex;
792
+ align-items: center;
793
+ padding: 0.02rem 0.32rem;
794
+ min-width: 0;
795
+ border-radius: 999px;
796
+ background: var(--willa-audio-status-bg);
797
+ color: var(--willa-audio-status-color);
798
+ font-size: 0.72em;
799
+ font-weight: 700;
800
+ line-height: 1.2;
801
+ text-transform: lowercase;
802
+ }
803
+ .willa-prose-audio-link-status[data-visible="false"] {
804
+ width: 0;
805
+ padding: 0;
806
+ overflow: hidden;
807
+ opacity: 0;
808
+ }
809
+ .willa-prose-audio-link--error .willa-prose-audio-link-status {
810
+ background: var(--willa-audio-error-status-bg);
811
+ color: var(--willa-audio-error-status-color);
812
+ }
813
+ .willa-prose-media-link-content {
814
+ display: flex;
815
+ min-width: 0;
816
+ align-items: center;
817
+ gap: 0.32rem;
818
+ }
819
+ .willa-prose-media-link-kicker {
820
+ color: var(--willa-text-faint);
821
+ font-size: 0.92em;
822
+ }
823
+ .willa-prose-media-link-title {
824
+ min-width: 0;
825
+ }
826
+ .willa-prose-audio-link-audio {
827
+ display: none;
828
+ }
829
+ .willa-callout {
830
+ --willa-callout-accent: var(--willa-callout-note-accent);
831
+ --willa-callout-bg: var(--willa-callout-note-bg);
832
+ --willa-callout-border: var(--willa-callout-note-border);
833
+ --willa-callout-shadow: var(--willa-callout-note-shadow);
834
+
835
+ margin: 1.42rem 0;
836
+ padding: 1rem 1.08rem 1.02rem;
837
+ border: 1px solid var(--willa-callout-border);
838
+ border-left: 4px solid var(--willa-callout-accent);
839
+ border-radius: 8px;
840
+ background: var(--willa-callout-bg);
841
+ box-shadow: 0 12px 32px var(--willa-callout-shadow);
842
+ }
843
+ .willa-callout-header {
844
+ display: flex;
845
+ align-items: center;
846
+ gap: 0.56rem;
847
+ margin-bottom: 0.36rem;
848
+ }
849
+ .willa-callout-icon {
850
+ display: inline-flex;
851
+ flex: 0 0 auto;
852
+ align-items: center;
853
+ justify-content: center;
854
+ width: 1.2rem;
855
+ height: 1.2rem;
856
+ color: var(--willa-callout-accent);
857
+ }
858
+ .willa-callout-icon svg {
859
+ width: 1.16rem;
860
+ height: 1.16rem;
861
+ }
862
+ .willa-callout-title {
863
+ color: var(--willa-text-strong);
864
+ font-family: var(--willa-title-font);
865
+ font-size: 0.96rem;
866
+ font-weight: 600;
867
+ line-height: 1.45;
868
+ }
869
+ .willa-callout-body,
870
+ .willa-callout-body .willa-prose-p,
871
+ .willa-callout-body .willa-prose-ul,
872
+ .willa-callout-body .willa-prose-ol,
873
+ .willa-callout-body .willa-prose-li {
874
+ color: var(--willa-text-soft);
875
+ font-size: 0.96rem;
876
+ line-height: 1.72;
877
+ text-shadow: none;
878
+ }
879
+ .willa-callout-body > :last-child,
880
+ .willa-callout-body .willa-prose-p:last-child,
881
+ .willa-callout-body .willa-prose-ul:last-child,
882
+ .willa-callout-body .willa-prose-ol:last-child,
883
+ .willa-callout-body .willa-prose-quote:last-child {
884
+ margin-bottom: 0;
885
+ }
886
+ .willa-callout--tip {
887
+ --willa-callout-accent: var(--willa-callout-tip-accent);
888
+ --willa-callout-bg: var(--willa-callout-tip-bg);
889
+ --willa-callout-border: var(--willa-callout-tip-border);
890
+ --willa-callout-shadow: var(--willa-callout-tip-shadow);
891
+ }
892
+ .willa-callout--warning {
893
+ --willa-callout-accent: var(--willa-callout-warning-accent);
894
+ --willa-callout-bg: var(--willa-callout-warning-bg);
895
+ --willa-callout-border: var(--willa-callout-warning-border);
896
+ --willa-callout-shadow: var(--willa-callout-warning-shadow);
897
+ }
898
+ .willa-callout--success {
899
+ --willa-callout-accent: var(--willa-callout-success-accent);
900
+ --willa-callout-bg: var(--willa-callout-success-bg);
901
+ --willa-callout-border: var(--willa-callout-success-border);
902
+ --willa-callout-shadow: var(--willa-callout-success-shadow);
903
+ }
904
+ .willa-callout--error {
905
+ --willa-callout-accent: var(--willa-callout-error-accent);
906
+ --willa-callout-bg: var(--willa-callout-error-bg);
907
+ --willa-callout-border: var(--willa-callout-error-border);
908
+ --willa-callout-shadow: var(--willa-callout-error-shadow);
909
+ }
910
+ @media (max-width: 767px) {
911
+ .willa-callout {
912
+ margin: 1.2rem 0;
913
+ padding: 0.82rem 0.86rem;
914
+ }
915
+ }
916
+ .willa-chat {
917
+ margin: 1.8rem 0;
918
+ padding: 1rem;
919
+ border-radius: 16px;
920
+ background: var(--willa-chat-bg);
921
+ }
922
+ .willa-chat-header {
923
+ margin-bottom: 0.9rem;
924
+ }
925
+ .willa-chat-title {
926
+ margin: 0;
927
+ color: var(--willa-text-strong);
928
+ font-family: var(--willa-title-font);
929
+ font-size: 1rem;
930
+ font-weight: 600;
931
+ line-height: 1.45;
932
+ }
933
+ .willa-chat-list {
934
+ display: flex;
935
+ flex-direction: column;
936
+ gap: 0.9rem;
937
+ }
938
+ .willa-chat-item {
939
+ display: flex;
940
+ flex-direction: column;
941
+ gap: 0.34rem;
942
+ max-width: min(100%, 32rem);
943
+ }
944
+ .willa-chat-item--right {
945
+ align-self: flex-end;
946
+ align-items: flex-end;
947
+ }
948
+ .willa-chat-item--left {
949
+ align-self: flex-start;
950
+ align-items: flex-start;
951
+ }
952
+ .willa-chat-meta {
953
+ display: inline-flex;
954
+ align-items: center;
955
+ gap: 0.5rem;
956
+ }
957
+ .willa-chat-item--right .willa-chat-meta {
958
+ flex-direction: row-reverse;
959
+ }
960
+ .willa-chat-avatar {
961
+ display: inline-flex;
962
+ align-items: center;
963
+ justify-content: center;
964
+ width: 1.6rem;
965
+ height: 1.6rem;
966
+ border-radius: 999px;
967
+ color: var(--willa-text-strong);
968
+ font-size: 0.9rem;
969
+ line-height: 1;
970
+ background: var(--willa-chat-avatar-bg);
971
+ }
972
+ .willa-chat-item--avatar-assistant .willa-chat-avatar {
973
+ background: var(--willa-chat-avatar-assistant-bg);
974
+ color: var(--willa-chat-avatar-assistant-color);
975
+ }
976
+ .willa-chat-item--avatar-sparkles .willa-chat-avatar {
977
+ background: var(--willa-chat-avatar-sparkles-bg);
978
+ color: var(--willa-chat-avatar-sparkles-color);
979
+ }
980
+ .willa-chat-item--avatar-cat .willa-chat-avatar {
981
+ background: var(--willa-chat-avatar-cat-bg);
982
+ color: var(--willa-chat-avatar-cat-color);
983
+ }
984
+ .willa-chat-item--avatar-idea .willa-chat-avatar {
985
+ background: var(--willa-chat-avatar-idea-bg);
986
+ color: var(--willa-chat-avatar-idea-color);
987
+ }
988
+ .willa-chat-item--avatar-book .willa-chat-avatar {
989
+ background: var(--willa-chat-avatar-book-bg);
990
+ color: var(--willa-chat-avatar-book-color);
991
+ }
992
+ .willa-chat-item--avatar-moon .willa-chat-avatar {
993
+ background: var(--willa-chat-avatar-moon-bg);
994
+ color: var(--willa-chat-avatar-moon-color);
995
+ }
996
+ .willa-chat-item--avatar-system .willa-chat-avatar {
997
+ background: var(--willa-chat-avatar-system-bg);
998
+ color: var(--willa-text-soft);
999
+ }
1000
+ .willa-chat-item--avatar-user .willa-chat-avatar {
1001
+ background: var(--willa-chat-avatar-user-bg);
1002
+ }
1003
+ .willa-chat-name {
1004
+ margin: 0;
1005
+ color: var(--willa-text-faint);
1006
+ font-size: 0.76rem;
1007
+ font-weight: 600;
1008
+ letter-spacing: 0.04em;
1009
+ }
1010
+ .willa-chat-bubble-wrap {
1011
+ display: flex;
1012
+ }
1013
+ .willa-chat-item--right .willa-chat-bubble-wrap {
1014
+ justify-content: flex-end;
1015
+ }
1016
+ .willa-chat-bubble {
1017
+ min-width: 0;
1018
+ padding: 0.72rem 0.88rem;
1019
+ border-radius: 14px;
1020
+ background: var(--willa-chat-bubble-bg);
1021
+ }
1022
+ .willa-chat-item--avatar-assistant .willa-chat-bubble {
1023
+ background: var(--willa-chat-bubble-assistant-bg);
1024
+ }
1025
+ .willa-chat-item--left .willa-chat-bubble {
1026
+ border-left: 3px solid var(--willa-chat-bubble-left-border);
1027
+ }
1028
+ .willa-chat-item--avatar-system .willa-chat-bubble {
1029
+ background: var(--willa-chat-bubble-system-bg);
1030
+ }
1031
+ .willa-chat-item--avatar-user .willa-chat-bubble {
1032
+ background: var(--willa-chat-bubble-user-bg);
1033
+ }
1034
+ .willa-chat-item--right .willa-chat-bubble {
1035
+ border-right: 3px solid var(--willa-chat-bubble-right-border);
1036
+ }
1037
+ .willa-chat-line {
1038
+ margin: 0;
1039
+ color: var(--willa-text);
1040
+ font-size: 0.88rem;
1041
+ line-height: 1.66;
1042
+ }
1043
+ .willa-chat-line + .willa-chat-line {
1044
+ margin-top: 0.34rem;
1045
+ }
1046
+ @media (max-width: 767px) {
1047
+ .willa-chat {
1048
+ margin: 1.5rem 0;
1049
+ padding: 0.9rem;
1050
+ border-radius: 14px;
1051
+ }
1052
+
1053
+ .willa-chat-item {
1054
+ max-width: min(100%, 100%);
1055
+ }
1056
+
1057
+ .willa-chat-line {
1058
+ font-size: 0.86rem;
1059
+ line-height: 1.6;
1060
+ }
1061
+ }
1062
+ .willa-prose-pre {
1063
+ margin: 0 0 1.08rem;
1064
+ overflow-x: auto;
1065
+ padding: 0;
1066
+ border-radius: 8px;
1067
+ background: var(--willa-code-block-bg);
1068
+ border: 0;
1069
+ box-shadow: none;
1070
+ }
1071
+ .willa-prose-pre--copied {
1072
+ background: var(--willa-accent-2-soft);
1073
+ }
1074
+ .willa-prose-code-block {
1075
+ position: relative;
1076
+ margin: 0;
1077
+ min-width: max-content;
1078
+ padding-bottom: 0;
1079
+ }
1080
+ .willa-prose-code-meta {
1081
+ position: absolute;
1082
+ top: 0.42rem;
1083
+ right: 0.78rem;
1084
+ z-index: 1;
1085
+ display: flex;
1086
+ align-items: center;
1087
+ justify-content: flex-end;
1088
+ gap: 12px;
1089
+ margin: 0;
1090
+ padding: 0;
1091
+ border-bottom: 1px solid var(--willa-code-meta-border);
1092
+ pointer-events: none;
1093
+ }
1094
+ .willa-prose-code-copy {
1095
+ display: inline-flex;
1096
+ align-items: center;
1097
+ gap: 0;
1098
+ padding: 0.22rem 0.52rem;
1099
+ border-radius: 2px;
1100
+ border: 1px solid var(--willa-code-block-border);
1101
+ background: var(--willa-surface-tint);
1102
+ color: var(--willa-code-lang-color);
1103
+ font-family: var(--willa-code-font);
1104
+ font-size: 0.72rem;
1105
+ line-height: 1;
1106
+ cursor: pointer;
1107
+ user-select: none;
1108
+ pointer-events: auto;
1109
+ opacity: 0;
1110
+ transition:
1111
+ opacity 180ms ease,
1112
+ background 180ms ease;
1113
+ }
1114
+ .willa-prose-code-block:hover .willa-prose-code-copy,
1115
+ .willa-prose-code-copy:focus-visible {
1116
+ opacity: 1;
1117
+ }
1118
+ @media (hover: none) {
1119
+ .willa-prose-code-copy {
1120
+ opacity: 1;
1121
+ }
1122
+ }
1123
+ .willa-prose-code-copy:hover {
1124
+ background: var(--willa-surface-soft);
1125
+ }
1126
+ .willa-prose-code-copy--copied {
1127
+ background: var(--willa-accent-2-soft);
1128
+ border-color: var(--willa-code-copy-copied-border);
1129
+ color: var(--willa-accent-2);
1130
+ }
1131
+ .willa-prose-code-copy:focus-visible {
1132
+ outline: 2px solid var(--willa-focus-ring);
1133
+ outline-offset: 2px;
1134
+ }
1135
+ .willa-prose-code-lang {
1136
+ display: inline-flex;
1137
+ align-items: center;
1138
+ padding: 0;
1139
+ border-radius: 999px;
1140
+ background: var(--willa-code-lang-bg);
1141
+ font-size: 0.72rem;
1142
+ font-weight: 600;
1143
+ letter-spacing: 0;
1144
+ color: var(--willa-code-lang-color);
1145
+ font-family: var(--willa-code-font);
1146
+ }
1147
+ .willa-prose-code-block > code,
1148
+ .willa-prose-code-block code {
1149
+ font-family: var(--willa-code-font);
1150
+ }
1151
+ .willa-prose-code {
1152
+ color: var(--willa-code-text);
1153
+ font-family: var(--willa-code-font);
1154
+ padding: 1rem 0;
1155
+ font-size: 0.86rem;
1156
+ line-height: 1.7;
1157
+ white-space: pre;
1158
+ tab-size: 2;
1159
+ font-variant-ligatures: contextual;
1160
+ font-feature-settings:
1161
+ "ss01" 1,
1162
+ "ss02" 1,
1163
+ "ss03" 1,
1164
+ "ss06" 1,
1165
+ "zero" 1;
1166
+ }
1167
+ .willa-prose-code-line {
1168
+ display: grid;
1169
+ grid-template-columns: 2.25rem minmax(0, 1fr);
1170
+ column-gap: 0.8rem;
1171
+ min-height: 1.7em;
1172
+ padding: 0 1rem;
1173
+ }
1174
+ .willa-prose-code-line:first-child {
1175
+ padding-right: 8.8rem;
1176
+ }
1177
+ .willa-prose-code-line--single {
1178
+ display: block;
1179
+ }
1180
+ .willa-prose-code-line-number {
1181
+ color: var(--willa-code-muted);
1182
+ text-align: right;
1183
+ user-select: none;
1184
+ }
1185
+ .willa-prose-code-line-content {
1186
+ min-width: 0;
1187
+ }
1188
+ .willa-prose-code-line--single .willa-prose-code-line-content {
1189
+ display: inline;
1190
+ }
1191
+ .willa-prose-code-line--highlight {
1192
+ background: var(--willa-code-line-highlight);
1193
+ }
1194
+ .willa-prose-pre .hljs {
1195
+ background: transparent;
1196
+ padding: 0;
1197
+ white-space: pre;
1198
+ }
1199
+ .willa-prose-code.hljs,
1200
+ .willa-prose-code-block > .hljs,
1201
+ .willa-prose-code-block > code.hljs {
1202
+ display: block;
1203
+ background: transparent !important;
1204
+ }
1205
+ .willa-prose-code.hljs {
1206
+ padding: 1rem 0;
1207
+ }
1208
+ .willa-prose-pre .hljs,
1209
+ .willa-prose-pre .hljs-subst {
1210
+ color: var(--willa-code-text);
1211
+ }
1212
+ .willa-prose-pre .hljs,
1213
+ .willa-prose-pre .hljs * {
1214
+ font-style: normal !important;
1215
+ }
1216
+ .willa-prose-pre .hljs-comment,
1217
+ .willa-prose-pre .hljs-quote,
1218
+ .willa-prose-pre .hljs-doctag {
1219
+ color: var(--willa-code-comment) !important;
1220
+ }
1221
+ .willa-prose-pre .hljs-keyword,
1222
+ .willa-prose-pre .hljs-selector-tag,
1223
+ .willa-prose-pre .hljs-type,
1224
+ .willa-prose-pre .hljs-template-tag {
1225
+ color: var(--willa-code-keyword) !important;
1226
+ }
1227
+ .willa-prose-pre .hljs-string,
1228
+ .willa-prose-pre .hljs-regexp,
1229
+ .willa-prose-pre .hljs-meta .hljs-string {
1230
+ color: var(--willa-code-string) !important;
1231
+ }
1232
+ .willa-prose-pre .hljs-attr,
1233
+ .willa-prose-pre .hljs-attribute,
1234
+ .willa-prose-pre .hljs-property,
1235
+ .willa-prose-pre .hljs-params {
1236
+ color: var(--willa-code-attr) !important;
1237
+ }
1238
+ .willa-prose-pre .hljs-number,
1239
+ .willa-prose-pre .hljs-literal,
1240
+ .willa-prose-pre .hljs-bullet {
1241
+ color: var(--willa-code-number) !important;
1242
+ }
1243
+ .willa-prose-pre .hljs-built_in,
1244
+ .willa-prose-pre .hljs-symbol,
1245
+ .willa-prose-pre .hljs-variable,
1246
+ .willa-prose-pre .hljs-template-variable,
1247
+ .willa-prose-pre .hljs-selector-id,
1248
+ .willa-prose-pre .hljs-selector-class {
1249
+ color: var(--willa-code-symbol) !important;
1250
+ }
1251
+ .willa-prose-pre .hljs-title,
1252
+ .willa-prose-pre .hljs-title.function_,
1253
+ .willa-prose-pre .hljs-title.class_,
1254
+ .willa-prose-pre .hljs-name,
1255
+ .willa-prose-pre .hljs-section,
1256
+ .willa-prose-pre .hljs-function {
1257
+ color: var(--willa-code-title) !important;
1258
+ }
1259
+ .willa-prose-pre .hljs-meta,
1260
+ .willa-prose-pre .hljs-tag,
1261
+ .willa-prose-pre .hljs-selector-attr,
1262
+ .willa-prose-pre .hljs-selector-pseudo {
1263
+ color: var(--willa-code-muted) !important;
1264
+ }
1265
+ .willa-prose-pre .hljs-deletion {
1266
+ color: var(--willa-code-deletion) !important;
1267
+ }
1268
+ .willa-prose-pre .hljs-addition {
1269
+ color: var(--willa-code-addition) !important;
1270
+ }
1271
+ .willa-prose-pre .hljs-emphasis {
1272
+ font-style: italic !important;
1273
+ }
1274
+ .willa-prose-pre .hljs-strong {
1275
+ font-weight: 700;
1276
+ }
1277
+ @media (max-width: 767px) {
1278
+ .willa-prose-code-line {
1279
+ grid-template-columns: 0 minmax(0, 1fr);
1280
+ column-gap: 0;
1281
+ }
1282
+
1283
+ .willa-prose-code-line-number {
1284
+ display: none;
1285
+ }
1286
+
1287
+ .willa-prose-code {
1288
+ padding-top: 1rem;
1289
+ }
1290
+
1291
+ .willa-prose-code.hljs {
1292
+ margin-top: 0;
1293
+ }
1294
+ }
1295
+ .willa-details {
1296
+ display: block;
1297
+ }
1298
+ .willa-details-summary {
1299
+ display: flex;
1300
+ align-items: center;
1301
+ justify-content: space-between;
1302
+ gap: 1rem;
1303
+ cursor: pointer;
1304
+ list-style: none;
1305
+ }
1306
+ .willa-details-summary::-webkit-details-marker {
1307
+ display: none;
1308
+ }
1309
+ .willa-details-summary-text {
1310
+ color: var(--willa-text-strong);
1311
+ font-family: var(--willa-title-font);
1312
+ font-size: 1rem;
1313
+ font-weight: 600;
1314
+ line-height: 1.45;
1315
+ }
1316
+ .willa-details-summary-hint {
1317
+ color: var(--willa-text-faint);
1318
+ font-size: 0.82rem;
1319
+ line-height: 1.4;
1320
+ }
1321
+ .willa-details-body {
1322
+ margin-top: 0.9rem;
1323
+ }
1324
+ @media (max-width: 767px) {
1325
+ .willa-details-summary {
1326
+ align-items: baseline;
1327
+ }
1328
+ }
1329
+ .willa-fancy-list-block {
1330
+ margin: 1.7rem 0;
1331
+ }
1332
+ .willa-fancy-list-block-title {
1333
+ margin: 0 0 0.58rem;
1334
+ color: var(--willa-fancy-list-title);
1335
+ font-family: var(--willa-title-font);
1336
+ font-size: 0.98rem;
1337
+ font-weight: 650;
1338
+ line-height: 1.4;
1339
+ }
1340
+ .willa-fancy-list {
1341
+ display: grid;
1342
+ gap: 0;
1343
+ border: 1px solid var(--willa-fancy-list-border);
1344
+ border-radius: 14px;
1345
+ background: var(--willa-fancy-list-bg);
1346
+ }
1347
+ .willa-fancy-list-item {
1348
+ position: relative;
1349
+ padding: 0.72rem 0.9rem;
1350
+ }
1351
+ .willa-fancy-list-item + .willa-fancy-list-item {
1352
+ border-top: none;
1353
+ }
1354
+ .willa-fancy-list-item + .willa-fancy-list-item::before {
1355
+ content: "";
1356
+ position: absolute;
1357
+ top: 0;
1358
+ left: 1.2rem;
1359
+ right: 1.2rem;
1360
+ height: 1px;
1361
+ background: var(--willa-fancy-list-divider);
1362
+ }
1363
+ .willa-fancy-list-item-body {
1364
+ min-width: 0;
1365
+ }
1366
+ .willa-fancy-list-item-title {
1367
+ margin: 0;
1368
+ color: var(--willa-fancy-list-title);
1369
+ font-family: var(--willa-title-font);
1370
+ font-size: 0.94rem;
1371
+ font-weight: 620;
1372
+ line-height: 1.4;
1373
+ }
1374
+ .willa-fancy-list-item-copy {
1375
+ margin-top: 0.12rem;
1376
+ }
1377
+ .willa-fancy-list-item-line {
1378
+ margin: 0;
1379
+ color: var(--willa-fancy-list-line);
1380
+ font-size: 0.92rem;
1381
+ line-height: 1.72;
1382
+ }
1383
+ .willa-fancy-list-item-line + .willa-fancy-list-item-line {
1384
+ margin-top: 0.22rem;
1385
+ }
1386
+ @media (max-width: 767px) {
1387
+ .willa-fancy-list {
1388
+ }
1389
+
1390
+ .willa-fancy-list-block {
1391
+ margin: 1.5rem 0;
1392
+ }
1393
+
1394
+ .willa-fancy-list-block-title {
1395
+ margin-bottom: 0.52rem;
1396
+ font-size: 0.94rem;
1397
+ }
1398
+
1399
+ .willa-fancy-list-item {
1400
+ padding: 0.66rem 0.72rem;
1401
+ }
1402
+
1403
+ .willa-fancy-list-item + .willa-fancy-list-item::before {
1404
+ left: 0.92rem;
1405
+ right: 0.92rem;
1406
+ }
1407
+
1408
+ .willa-fancy-list-item-title {
1409
+ font-size: 0.92rem;
1410
+ }
1411
+
1412
+ .willa-fancy-list-item-line {
1413
+ font-size: 0.9rem;
1414
+ line-height: 1.68;
1415
+ }
1416
+ }
1417
+ .willa-prose-image,
1418
+ .willa-prose-gallery {
1419
+ margin: 0 0 1.35rem;
1420
+ }
1421
+ .willa-prose-image,
1422
+ .willa-prose-gallery-item {
1423
+ margin-left: 0;
1424
+ margin-right: 0;
1425
+ }
1426
+ .willa-prose-image-button,
1427
+ .willa-prose-gallery-button {
1428
+ display: block;
1429
+ width: 100%;
1430
+ padding: 0;
1431
+ border: 0;
1432
+ border-radius: 10px;
1433
+ background: var(--willa-image-bg);
1434
+ cursor: zoom-in;
1435
+ overflow: hidden;
1436
+ touch-action: pan-y;
1437
+ }
1438
+ .willa-prose-image-button:focus-visible,
1439
+ .willa-prose-gallery-button:focus-visible {
1440
+ outline: 2px solid var(--willa-focus-ring);
1441
+ outline-offset: 2px;
1442
+ }
1443
+ .willa-prose-image-asset,
1444
+ .willa-prose-gallery-asset {
1445
+ display: block;
1446
+ width: 100%;
1447
+ background: var(--willa-image-bg);
1448
+ transition:
1449
+ transform 180ms ease,
1450
+ opacity 180ms ease;
1451
+ }
1452
+ .willa-prose-image-asset {
1453
+ max-height: 34rem;
1454
+ object-fit: contain;
1455
+ }
1456
+ .willa-prose-gallery {
1457
+ --willa-gallery-columns: 2;
1458
+ display: grid;
1459
+ grid-template-columns: repeat(var(--willa-gallery-columns), minmax(0, 1fr));
1460
+ gap: 12px;
1461
+ }
1462
+ .willa-prose-gallery-item {
1463
+ display: flex;
1464
+ flex-direction: column;
1465
+ gap: 8px;
1466
+ min-width: 0;
1467
+ }
1468
+ .willa-prose-gallery-asset {
1469
+ aspect-ratio: 1 / 1;
1470
+ object-fit: contain;
1471
+ }
1472
+ .willa-prose-image-button:hover .willa-prose-image-asset,
1473
+ .willa-prose-gallery-button:hover .willa-prose-gallery-asset {
1474
+ opacity: 0.96;
1475
+ }
1476
+ .willa-prose-image-caption {
1477
+ margin-top: 8px;
1478
+ }
1479
+ .willa-prose-image-caption,
1480
+ .willa-prose-gallery-caption {
1481
+ color: var(--willa-text-faint);
1482
+ font-size: 0.82rem;
1483
+ font-weight: 500;
1484
+ line-height: 1.7;
1485
+ }
1486
+ @media (max-width: 767px) {
1487
+ .willa-prose-gallery {
1488
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1489
+ gap: 10px;
1490
+ }
1491
+ }
1492
+ .willa-lightbox {
1493
+ position: fixed;
1494
+ inset: 0;
1495
+ z-index: 80;
1496
+ display: flex;
1497
+ align-items: center;
1498
+ justify-content: center;
1499
+ padding: 0;
1500
+ background: var(--willa-lightbox-bg);
1501
+ backdrop-filter: blur(8px);
1502
+ }
1503
+ .willa-lightbox--solid {
1504
+ background: var(--willa-lightbox-solid-bg);
1505
+ backdrop-filter: none;
1506
+ }
1507
+ .willa-lightbox-nav {
1508
+ position: absolute;
1509
+ top: 50%;
1510
+ display: inline-flex;
1511
+ align-items: center;
1512
+ justify-content: center;
1513
+ width: 44px;
1514
+ height: 44px;
1515
+ margin-top: -22px;
1516
+ border: 0;
1517
+ border-radius: 999px;
1518
+ background: var(--willa-floating-bg);
1519
+ color: var(--willa-text-strong);
1520
+ cursor: pointer;
1521
+ }
1522
+ .willa-lightbox-nav:focus-visible {
1523
+ outline: 2px solid var(--willa-focus-ring);
1524
+ outline-offset: 2px;
1525
+ }
1526
+ .willa-lightbox-nav--prev {
1527
+ left: 50px;
1528
+ }
1529
+ .willa-lightbox-nav--next {
1530
+ right: 50px;
1531
+ }
1532
+ .willa-lightbox-figure {
1533
+ margin: 0;
1534
+ display: flex;
1535
+ flex-direction: column;
1536
+ align-items: center;
1537
+ justify-content: center;
1538
+ gap: 12px;
1539
+ width: 100%;
1540
+ height: 100%;
1541
+ max-height: 100%;
1542
+ padding: 24px;
1543
+ box-sizing: border-box;
1544
+ touch-action: pan-y pinch-zoom;
1545
+ }
1546
+ .willa-lightbox-image {
1547
+ display: block;
1548
+ width: 100%;
1549
+ height: auto;
1550
+ max-width: 100%;
1551
+ max-height: calc(100vh - 96px);
1552
+ border-radius: 0;
1553
+ object-fit: contain;
1554
+ cursor: zoom-out;
1555
+ }
1556
+ .willa-lightbox-image--slide-next {
1557
+ animation: willa-lightbox-slide-next 260ms cubic-bezier(0.22, 1, 0.36, 1);
1558
+ }
1559
+ .willa-lightbox-image--slide-prev {
1560
+ animation: willa-lightbox-slide-prev 260ms cubic-bezier(0.22, 1, 0.36, 1);
1561
+ }
1562
+ .willa-lightbox-caption {
1563
+ color: var(--willa-text-faint);
1564
+ font-size: 0.82rem;
1565
+ font-weight: 500;
1566
+ line-height: 1.7;
1567
+ text-align: center;
1568
+ }
1569
+ @keyframes willa-lightbox-slide-next {
1570
+ from {
1571
+ opacity: 0.36;
1572
+ transform: translate3d(34px, 0, 0);
1573
+ }
1574
+
1575
+ to {
1576
+ opacity: 1;
1577
+ transform: translate3d(0, 0, 0);
1578
+ }
1579
+ }
1580
+ @keyframes willa-lightbox-slide-prev {
1581
+ from {
1582
+ opacity: 0.36;
1583
+ transform: translate3d(-34px, 0, 0);
1584
+ }
1585
+
1586
+ to {
1587
+ opacity: 1;
1588
+ transform: translate3d(0, 0, 0);
1589
+ }
1590
+ }
1591
+ @media (max-width: 767px) {
1592
+ .willa-lightbox {
1593
+ padding: 20px 16px;
1594
+ }
1595
+
1596
+ .willa-lightbox-nav {
1597
+ display: none;
1598
+ }
1599
+
1600
+ .willa-lightbox-image {
1601
+ max-height: calc(100vh - 96px);
1602
+ }
1603
+ }
1604
+ .willa-poem {
1605
+ margin: 1.8rem 0;
1606
+ padding: 1.4rem 1.5rem;
1607
+ border: 1px solid var(--willa-poem-border);
1608
+ border-radius: 14px;
1609
+ background: var(--willa-poem-bg);
1610
+ }
1611
+ .willa-poem-header {
1612
+ margin-bottom: 1.1rem;
1613
+ text-align: center;
1614
+ }
1615
+ .willa-poem-byline {
1616
+ margin: 0.42rem 0 0;
1617
+ color: var(--willa-text-faint);
1618
+ font-size: 0.76rem;
1619
+ font-weight: 600;
1620
+ letter-spacing: 0.08em;
1621
+ }
1622
+ .willa-poem-title {
1623
+ margin: 0;
1624
+ color: var(--willa-text-strong);
1625
+ font-family: var(--willa-title-font);
1626
+ font-size: 1.28rem;
1627
+ font-weight: 600;
1628
+ line-height: 1.45;
1629
+ text-align: center;
1630
+ }
1631
+ .willa-poem-body {
1632
+ display: flex;
1633
+ flex-direction: column;
1634
+ gap: 1rem;
1635
+ align-items: center;
1636
+ }
1637
+ .willa-poem-preface {
1638
+ display: flex;
1639
+ flex-direction: column;
1640
+ gap: 0.28rem;
1641
+ align-items: center;
1642
+ max-width: 28rem;
1643
+ margin: 0 auto 1.15rem;
1644
+ padding-bottom: 0.95rem;
1645
+ border-bottom: 1px solid var(--willa-poem-divider);
1646
+ }
1647
+ .willa-poem-preface-line {
1648
+ margin: 0;
1649
+ color: var(--willa-text-soft);
1650
+ font-size: 0.8rem;
1651
+ line-height: 1.72;
1652
+ text-align: center;
1653
+ }
1654
+ .willa-poem-stanza {
1655
+ display: flex;
1656
+ flex-direction: column;
1657
+ gap: 0.36rem;
1658
+ align-items: center;
1659
+ }
1660
+ .willa-poem-line {
1661
+ margin: 0;
1662
+ color: var(--willa-text);
1663
+ font-family: var(--willa-title-font);
1664
+ font-size: 0.94rem;
1665
+ line-height: 1.9;
1666
+ letter-spacing: 0.02em;
1667
+ text-align: center;
1668
+ }
1669
+ @media (max-width: 767px) {
1670
+ .willa-poem {
1671
+ margin: 1.5rem 0;
1672
+ padding: 1.15rem 1.05rem;
1673
+ border-radius: 12px;
1674
+ }
1675
+
1676
+ .willa-poem-title {
1677
+ font-size: 1.16rem;
1678
+ }
1679
+
1680
+ .willa-poem-byline {
1681
+ font-size: 0.74rem;
1682
+ }
1683
+
1684
+ .willa-poem-preface-line {
1685
+ font-size: 0.76rem;
1686
+ line-height: 1.68;
1687
+ }
1688
+
1689
+ .willa-poem-line {
1690
+ font-size: 0.92rem;
1691
+ line-height: 1.84;
1692
+ }
1693
+ }
1694
+ .willa-prose-skeleton {
1695
+ display: block;
1696
+ position: relative;
1697
+ }
1698
+ .willa-prose-skeleton-content {
1699
+ display: block;
1700
+ }
1701
+ .willa-prose-skeleton--inline,
1702
+ .willa-prose-skeleton--inline .willa-prose-skeleton-placeholder,
1703
+ .willa-prose-skeleton--inline .willa-prose-skeleton-content {
1704
+ display: inline-block;
1705
+ }
1706
+ .willa-prose-skeleton-placeholder {
1707
+ --willa-skeleton-block-height: 220px;
1708
+ display: grid;
1709
+ width: 100%;
1710
+ gap: 0.8rem;
1711
+ }
1712
+ .willa-prose-skeleton-lines {
1713
+ display: grid;
1714
+ gap: 0.52rem;
1715
+ }
1716
+ .willa-prose-skeleton-line,
1717
+ .willa-prose-skeleton-block {
1718
+ display: block;
1719
+ overflow: hidden;
1720
+ border-radius: 6px;
1721
+ background: var(--willa-skeleton-bg);
1722
+ background-size: 220% 100%;
1723
+ animation: willa-skeleton-shimmer 1.4s ease-in-out infinite;
1724
+ }
1725
+ .willa-prose-skeleton-line {
1726
+ width: var(--willa-skeleton-line-width, 100%);
1727
+ height: var(--willa-skeleton-line-height, 0.9rem);
1728
+ }
1729
+ .willa-prose-skeleton-block {
1730
+ height: var(--willa-skeleton-block-height);
1731
+ }
1732
+ .willa-prose-skeleton[data-loading="true"][data-keep-children-mounted="true"]
1733
+ .willa-prose-skeleton-content {
1734
+ position: absolute;
1735
+ width: 1px;
1736
+ height: 1px;
1737
+ overflow: hidden;
1738
+ clip: rect(0 0 0 0);
1739
+ clip-path: inset(50%);
1740
+ white-space: nowrap;
1741
+ }
1742
+ @keyframes willa-skeleton-shimmer {
1743
+ 0% {
1744
+ background-position: 120% 0;
1745
+ }
1746
+
1747
+ 100% {
1748
+ background-position: -120% 0;
1749
+ }
1750
+ }
1751
+ .willa-steps-block {
1752
+ margin: 1.7rem 0;
1753
+ }
1754
+ .willa-steps-block-title {
1755
+ margin-bottom: 0.9rem;
1756
+ color: var(--willa-text-strong);
1757
+ font-family: var(--willa-title-font);
1758
+ font-size: 1rem;
1759
+ font-weight: 600;
1760
+ line-height: 1.45;
1761
+ }
1762
+ .willa-steps-list {
1763
+ margin: 0;
1764
+ padding: 0;
1765
+ list-style: none;
1766
+ counter-reset: willa-steps;
1767
+ }
1768
+ .willa-steps-block--horizontal .willa-steps-list {
1769
+ display: grid;
1770
+ grid-template-columns: repeat(auto-fit, minmax(10.5rem, 1fr));
1771
+ column-gap: 1.25rem;
1772
+ }
1773
+ .willa-step {
1774
+ position: relative;
1775
+ padding: 0 0 1.15rem 3rem;
1776
+ counter-increment: willa-steps;
1777
+ }
1778
+ .willa-step::before {
1779
+ content: counter(willa-steps);
1780
+ position: absolute;
1781
+ top: 0.02rem;
1782
+ left: 0;
1783
+ display: inline-flex;
1784
+ align-items: center;
1785
+ justify-content: center;
1786
+ width: 1.85rem;
1787
+ height: 1.85rem;
1788
+ border-radius: 999px;
1789
+ background: var(--willa-step-marker-bg);
1790
+ color: var(--willa-step-marker-color);
1791
+ font-family: var(--willa-code-font);
1792
+ font-size: 0.84rem;
1793
+ font-weight: 700;
1794
+ line-height: 1;
1795
+ }
1796
+ .willa-step::after {
1797
+ content: "";
1798
+ position: absolute;
1799
+ top: 2.1rem;
1800
+ bottom: 0.2rem;
1801
+ left: 0.92rem;
1802
+ width: 1px;
1803
+ background: var(--willa-step-line);
1804
+ }
1805
+ .willa-step:last-child {
1806
+ padding-bottom: 0;
1807
+ }
1808
+ .willa-step:last-child::after {
1809
+ display: none;
1810
+ }
1811
+ .willa-steps-block--horizontal .willa-step {
1812
+ min-width: 0;
1813
+ padding: 2.75rem 0 0;
1814
+ }
1815
+ .willa-steps-block--horizontal .willa-step::before {
1816
+ top: 0;
1817
+ left: 0;
1818
+ }
1819
+ .willa-steps-block--horizontal .willa-step::after {
1820
+ top: 0.92rem;
1821
+ right: -0.45rem;
1822
+ bottom: auto;
1823
+ left: 2.35rem;
1824
+ width: auto;
1825
+ height: 1px;
1826
+ }
1827
+ .willa-step-title {
1828
+ margin-bottom: 0.44rem;
1829
+ color: var(--willa-text-strong);
1830
+ font-size: 0.96rem;
1831
+ font-weight: 600;
1832
+ line-height: 1.48;
1833
+ }
1834
+ .willa-step-body,
1835
+ .willa-step-body .willa-prose-p,
1836
+ .willa-step-body .willa-prose-ul,
1837
+ .willa-step-body .willa-prose-ol,
1838
+ .willa-step-body .willa-prose-li {
1839
+ color: var(--willa-text-soft);
1840
+ font-size: 0.94rem;
1841
+ font-weight: 500;
1842
+ line-height: 1.78;
1843
+ text-shadow: none;
1844
+ }
1845
+ .willa-step-body .willa-prose-p,
1846
+ .willa-step-body .willa-prose-ul,
1847
+ .willa-step-body .willa-prose-ol {
1848
+ margin-bottom: 0.62rem;
1849
+ }
1850
+ .willa-step-body .willa-prose-li + .willa-prose-li {
1851
+ margin-top: 0.46rem;
1852
+ }
1853
+ .willa-step-line + .willa-step-line {
1854
+ margin-top: 0.5rem;
1855
+ }
1856
+ .willa-step-line > :last-child {
1857
+ margin-bottom: 0;
1858
+ }
1859
+ @media (max-width: 767px) {
1860
+ .willa-steps-block {
1861
+ margin: 1.5rem 0;
1862
+ }
1863
+
1864
+ .willa-steps-block--horizontal .willa-steps-list {
1865
+ display: block;
1866
+ }
1867
+
1868
+ .willa-steps-block--horizontal .willa-step,
1869
+ .willa-step {
1870
+ padding-left: 2.7rem;
1871
+ }
1872
+
1873
+ .willa-steps-block--horizontal .willa-step {
1874
+ padding-top: 0;
1875
+ padding-bottom: 1.15rem;
1876
+ }
1877
+
1878
+ .willa-steps-block--horizontal .willa-step:last-child {
1879
+ padding-bottom: 0;
1880
+ }
1881
+
1882
+ .willa-steps-block--horizontal .willa-step::before,
1883
+ .willa-step::before {
1884
+ top: 0.02rem;
1885
+ left: 0;
1886
+ width: 1.7rem;
1887
+ height: 1.7rem;
1888
+ }
1889
+
1890
+ .willa-steps-block--horizontal .willa-step::after,
1891
+ .willa-step::after {
1892
+ top: 2.1rem;
1893
+ right: auto;
1894
+ bottom: 0.2rem;
1895
+ left: 0.84rem;
1896
+ width: 1px;
1897
+ height: auto;
1898
+ }
1899
+ }
1900
+ .willa-summary-cards {
1901
+ display: grid;
1902
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1903
+ gap: 1rem;
1904
+ margin: 1.8rem 0;
1905
+ }
1906
+ .willa-summary-card {
1907
+ padding: 1rem 1rem 0.95rem;
1908
+ border-radius: 14px;
1909
+ background: var(--willa-summary-card-bg);
1910
+ }
1911
+ .willa-summary-card-title {
1912
+ margin: 0;
1913
+ color: var(--willa-text-strong);
1914
+ font-family: var(--willa-title-font);
1915
+ font-size: 0.96rem;
1916
+ font-weight: 600;
1917
+ line-height: 1.45;
1918
+ }
1919
+ .willa-summary-card-body {
1920
+ margin-top: 0.72rem;
1921
+ }
1922
+ .willa-summary-card-line {
1923
+ margin: 0;
1924
+ color: var(--willa-text-soft);
1925
+ font-size: 0.92rem;
1926
+ line-height: 1.82;
1927
+ }
1928
+ .willa-summary-card-line + .willa-summary-card-line {
1929
+ margin-top: 0.48rem;
1930
+ }
1931
+ @media (max-width: 767px) {
1932
+ .willa-summary-cards {
1933
+ grid-template-columns: 1fr;
1934
+ gap: 0.88rem;
1935
+ margin: 1.5rem 0;
1936
+ }
1937
+
1938
+ .willa-summary-card {
1939
+ padding: 0.92rem 0.92rem 0.88rem;
1940
+ border-radius: 12px;
1941
+ }
1942
+
1943
+ .willa-summary-card-line {
1944
+ font-size: 0.9rem;
1945
+ line-height: 1.76;
1946
+ }
1947
+ }
1948
+ .willa-prose-url-link {
1949
+ display: inline-flex;
1950
+ align-items: baseline;
1951
+ gap: 0.38rem;
1952
+ max-width: 100%;
1953
+ margin: 0 0.14rem;
1954
+ padding: 0.2rem 0.54rem 0.2rem 0.34rem;
1955
+ border-radius: 999px;
1956
+ background: var(--willa-url-link-bg);
1957
+ color: var(--willa-text-strong);
1958
+ text-decoration: none;
1959
+ text-shadow: none;
1960
+ vertical-align: middle;
1961
+ transition:
1962
+ color 180ms ease,
1963
+ background-color 180ms ease;
1964
+ }
1965
+ .willa-prose-url-link:hover {
1966
+ background: var(--willa-url-link-bg-hover);
1967
+ color: var(--willa-accent);
1968
+ }
1969
+ .willa-prose-url-link:focus-visible {
1970
+ outline: 2px solid var(--willa-focus-ring);
1971
+ outline-offset: 2px;
1972
+ }
1973
+ .willa-prose-url-link-icon {
1974
+ width: 0.9rem;
1975
+ height: 0.9rem;
1976
+ flex: none;
1977
+ transform: translateY(0.16em);
1978
+ }
1979
+ .willa-prose-url-link-name {
1980
+ min-width: 0;
1981
+ color: currentColor;
1982
+ font-size: 0.88rem;
1983
+ font-weight: 600;
1984
+ line-height: 1.2;
1985
+ white-space: nowrap;
1986
+ }
1987
+ @media (max-width: 767px) {
1988
+ .willa-prose-url-link {
1989
+ gap: 0.34rem;
1990
+ }
1991
+ }
1992
+ .willa-prose-video-embed {
1993
+ display: grid;
1994
+ grid-template-columns: minmax(8.5rem, 34%) minmax(0, 1fr) auto;
1995
+ align-items: stretch;
1996
+ min-height: 8.25rem;
1997
+ margin: 0 0 1.35rem;
1998
+ overflow: hidden;
1999
+ border: 1px solid var(--willa-video-border);
2000
+ border-radius: 10px;
2001
+ background: var(--willa-surface-tint);
2002
+ color: inherit;
2003
+ text-decoration: none;
2004
+ text-shadow: none;
2005
+ transition:
2006
+ border-color 180ms ease,
2007
+ background-color 180ms ease,
2008
+ transform 180ms ease;
2009
+ }
2010
+ .willa-prose-video-embed:hover {
2011
+ border-color: var(--willa-video-border-hover);
2012
+ background: var(--willa-surface-soft);
2013
+ transform: translateY(-1px);
2014
+ }
2015
+ .willa-prose-video-embed--inline {
2016
+ grid-template-columns: minmax(0, 1fr) auto;
2017
+ min-height: auto;
2018
+ background: var(--willa-video-inline-bg);
2019
+ }
2020
+ .willa-prose-video-embed:focus-visible {
2021
+ outline: 2px solid var(--willa-focus-ring);
2022
+ outline-offset: 2px;
2023
+ }
2024
+ .willa-prose-video-embed-visual {
2025
+ position: relative;
2026
+ display: block;
2027
+ min-height: 100%;
2028
+ background: var(--willa-image-bg);
2029
+ overflow: hidden;
2030
+ }
2031
+ .willa-prose-video-embed-poster {
2032
+ display: block;
2033
+ width: 100%;
2034
+ height: 100%;
2035
+ min-height: 8.25rem;
2036
+ object-fit: cover;
2037
+ transition:
2038
+ transform 180ms ease,
2039
+ opacity 180ms ease;
2040
+ }
2041
+ .willa-prose-video-embed:hover .willa-prose-video-embed-poster {
2042
+ opacity: 0.94;
2043
+ transform: scale(1.02);
2044
+ }
2045
+ .willa-prose-video-embed-fallback {
2046
+ display: flex;
2047
+ width: 100%;
2048
+ height: 100%;
2049
+ min-height: 8.25rem;
2050
+ align-items: center;
2051
+ justify-content: center;
2052
+ background: var(--willa-video-fallback-bg);
2053
+ }
2054
+ .willa-prose-video-embed-kind-icon {
2055
+ width: 2.2rem;
2056
+ height: 2.2rem;
2057
+ color: var(--willa-text-faint);
2058
+ }
2059
+ .willa-prose-video-embed-play {
2060
+ position: absolute;
2061
+ left: 50%;
2062
+ top: 50%;
2063
+ display: inline-flex;
2064
+ width: 2.7rem;
2065
+ height: 2.7rem;
2066
+ align-items: center;
2067
+ justify-content: center;
2068
+ border-radius: 999px;
2069
+ background: var(--willa-video-play-bg);
2070
+ color: var(--willa-video-play-color);
2071
+ box-shadow: var(--willa-video-play-shadow);
2072
+ transform: translate(-50%, -50%);
2073
+ }
2074
+ .willa-prose-video-embed-play svg {
2075
+ width: 1.18rem;
2076
+ height: 1.18rem;
2077
+ }
2078
+ .willa-prose-video-embed-content {
2079
+ display: flex;
2080
+ min-width: 0;
2081
+ flex-direction: column;
2082
+ justify-content: center;
2083
+ gap: 0.42rem;
2084
+ padding: 1.05rem 1.1rem;
2085
+ }
2086
+ .willa-prose-video-embed--inline .willa-prose-video-embed-content {
2087
+ padding-right: 0.8rem;
2088
+ }
2089
+ .willa-prose-video-embed-kicker {
2090
+ display: flex;
2091
+ flex-wrap: wrap;
2092
+ align-items: center;
2093
+ gap: 0.38rem 0.55rem;
2094
+ color: var(--willa-text-faint);
2095
+ font-size: 0.78rem;
2096
+ font-weight: 650;
2097
+ line-height: 1.4;
2098
+ }
2099
+ .willa-prose-video-embed-inline-icon {
2100
+ flex: none;
2101
+ width: 0.92rem;
2102
+ height: 0.92rem;
2103
+ }
2104
+ .willa-prose-video-embed-duration {
2105
+ color: var(--willa-text-soft);
2106
+ font-family: var(--willa-code-font);
2107
+ font-size: 0.75rem;
2108
+ font-weight: 500;
2109
+ }
2110
+ .willa-prose-video-embed-title {
2111
+ color: var(--willa-text-strong);
2112
+ font-family: var(--willa-title-font);
2113
+ font-size: 1.08rem;
2114
+ font-weight: 650;
2115
+ line-height: 1.45;
2116
+ }
2117
+ .willa-prose-video-embed-description {
2118
+ display: -webkit-box;
2119
+ overflow: hidden;
2120
+ color: var(--willa-text-soft);
2121
+ font-size: 0.9rem;
2122
+ font-weight: 500;
2123
+ line-height: 1.7;
2124
+ -webkit-box-orient: vertical;
2125
+ -webkit-line-clamp: 2;
2126
+ }
2127
+ .willa-prose-video-embed-external {
2128
+ width: 1rem;
2129
+ height: 1rem;
2130
+ margin: 1rem 1rem 0 0;
2131
+ color: var(--willa-text-faint);
2132
+ }
2133
+ .willa-prose-video-embed-external-link {
2134
+ display: inline-flex;
2135
+ align-self: start;
2136
+ margin: 1rem 1rem 0 0;
2137
+ color: var(--willa-text-faint);
2138
+ }
2139
+ .willa-prose-video-embed-external-link:hover {
2140
+ color: var(--willa-text-strong);
2141
+ }
2142
+ .willa-prose-video-embed-external-link .willa-prose-video-embed-external {
2143
+ margin: 0;
2144
+ }
2145
+ .willa-prose-video-embed-external--placeholder {
2146
+ opacity: 0;
2147
+ }
2148
+ .willa-prose-video-embed-player-shell {
2149
+ grid-column: 1 / -1;
2150
+ margin: 0 1rem 1rem;
2151
+ padding-top: 0.95rem;
2152
+ border-top: 1px solid var(--willa-line);
2153
+ }
2154
+ .willa-prose-video-embed-player {
2155
+ display: block;
2156
+ width: 100%;
2157
+ aspect-ratio: 16 / 9;
2158
+ overflow: hidden;
2159
+ border: 1px solid var(--willa-line);
2160
+ border-radius: 10px;
2161
+ background: var(--willa-panel-bg);
2162
+ }
2163
+ @media (max-width: 767px) {
2164
+ .willa-prose-video-embed {
2165
+ grid-template-columns: 1fr auto;
2166
+ }
2167
+
2168
+ .willa-prose-video-embed-visual {
2169
+ grid-column: 1 / -1;
2170
+ min-height: 9rem;
2171
+ }
2172
+
2173
+ .willa-prose-video-embed-content {
2174
+ padding: 0.95rem 1rem 1rem;
2175
+ }
2176
+
2177
+ .willa-prose-video-embed-player-shell {
2178
+ margin: 0 0.9rem 0.9rem;
2179
+ padding-top: 0.85rem;
2180
+ }
2181
+ }
2182
+ .willa-prose-video-link,
2183
+ .willa-prose-video-link--player {
2184
+ display: inline-flex;
2185
+ align-items: center;
2186
+ gap: 0.32rem;
2187
+ max-width: 100%;
2188
+ margin: 0 0.12rem;
2189
+ padding: 0.12rem 0.42rem;
2190
+ border: 1px solid var(--willa-video-link-border);
2191
+ border-radius: 999px;
2192
+ background: var(--willa-video-link-bg);
2193
+ color: var(--willa-text-strong);
2194
+ font-size: 0.88em;
2195
+ font-weight: 650;
2196
+ line-height: 1.38;
2197
+ text-decoration: none;
2198
+ text-shadow: none;
2199
+ vertical-align: 0.02em;
2200
+ transition:
2201
+ border-color 180ms ease,
2202
+ background-color 180ms ease,
2203
+ color 180ms ease;
2204
+ }
2205
+ .willa-prose-video-link--player {
2206
+ cursor: pointer;
2207
+ }
2208
+ .willa-prose-video-link:hover,
2209
+ .willa-prose-video-link--player:hover {
2210
+ border-color: var(--willa-video-link-border-hover);
2211
+ background: var(--willa-video-link-bg-hover);
2212
+ color: var(--willa-text-strong);
2213
+ text-decoration: none;
2214
+ }
2215
+ .willa-prose-video-link-wrap {
2216
+ position: relative;
2217
+ display: inline-flex;
2218
+ align-items: center;
2219
+ gap: 0.32rem;
2220
+ max-width: 100%;
2221
+ vertical-align: 0.02em;
2222
+ }
2223
+ .willa-prose-video-link-icon,
2224
+ .willa-prose-media-link-external {
2225
+ flex: none;
2226
+ width: 0.86em;
2227
+ height: 0.86em;
2228
+ color: var(--willa-video-link-icon);
2229
+ }
2230
+ .willa-prose-video-link-icon--trigger {
2231
+ width: 0.92em;
2232
+ height: 0.92em;
2233
+ }
2234
+ .willa-prose-media-link-external {
2235
+ color: var(--willa-text-faint);
2236
+ }
2237
+ .willa-prose-video-link-external-action {
2238
+ display: inline-flex;
2239
+ align-items: center;
2240
+ justify-content: center;
2241
+ color: var(--willa-text-faint);
2242
+ }
2243
+ .willa-prose-media-link-content {
2244
+ display: flex;
2245
+ min-width: 0;
2246
+ align-items: center;
2247
+ gap: 0.32rem;
2248
+ }
2249
+ .willa-prose-media-link-kicker {
2250
+ color: var(--willa-text-faint);
2251
+ font-size: 0.92em;
2252
+ }
2253
+ .willa-prose-media-link-title {
2254
+ min-width: 0;
2255
+ }
2256
+ .willa-prose-video-link-popover {
2257
+ position: absolute;
2258
+ left: 0;
2259
+ top: calc(100% + 0.55rem);
2260
+ z-index: 20;
2261
+ display: block;
2262
+ width: min(24rem, calc(100vw - 3rem));
2263
+ padding: 0.7rem;
2264
+ border: 1px solid var(--willa-line);
2265
+ border-radius: 12px;
2266
+ background: var(--willa-panel-bg);
2267
+ box-shadow: var(--willa-media-popover-shadow);
2268
+ }
2269
+ .willa-prose-video-link-player {
2270
+ display: block;
2271
+ width: 100%;
2272
+ aspect-ratio: 16 / 9;
2273
+ border: 1px solid var(--willa-line);
2274
+ border-radius: 10px;
2275
+ background: var(--willa-panel-bg);
2276
+ }
2277
+ @media (max-width: 767px) {
2278
+ .willa-prose-video-link-popover {
2279
+ width: min(20rem, calc(100vw - 2rem));
2280
+ }
2281
+ }
2282
+ :root[data-wk-theme="dark"] .willa-shell {
2283
+ --willa-inline-code-bg: #242832;
2284
+ --willa-heading-1: #ffffff;
2285
+ --willa-heading-2: #dbeafe;
2286
+ --willa-heading-3: #bfdbfe;
2287
+ --willa-heading-4: #cbd5e1;
2288
+ --willa-heading-5: #94a3b8;
2289
+ --willa-heading-6: #64748b;
2290
+ --willa-prose-selection-bg: rgb(223, 223, 223);
2291
+ --willa-prose-selection-color: inherit;
2292
+ --willa-prose-marker-color: #8a8f98;
2293
+ --willa-prose-nested-marker-color: #6c7280;
2294
+ --willa-prose-mark-bg: rgba(250, 204, 21, 0.16);
2295
+ --willa-prose-quote-color: rgba(255, 255, 255, 0.5);
2296
+ --willa-prose-quote-border: rgba(255, 255, 255, 0.18);
2297
+ --willa-prose-link-color: #e5e5e5;
2298
+ --willa-prose-link-hover-color: #ffffff;
2299
+ --willa-prose-link-decoration: #6c7280;
2300
+ --willa-prose-link-hover-decoration: #9ca3af;
2301
+ --willa-prose-link-decoration-thickness: 1.25px;
2302
+ --willa-english-cards-border: rgba(255, 255, 255, 0.18);
2303
+ --willa-english-cards-bg: #111318;
2304
+ --willa-english-cards-shadow: 0 16px 38px rgba(0, 0, 0, 0.42);
2305
+ --willa-english-control-border: rgba(255, 255, 255, 0.18);
2306
+ --willa-english-control-bg: #242832;
2307
+ --willa-english-control-border-hover: rgba(156, 185, 221, 0.18);
2308
+ --willa-english-control-bg-hover: rgba(255, 255, 255, 0.07);
2309
+ --willa-english-control-color-hover: var(--willa-text-strong);
2310
+ --willa-english-card-accent: #9cb9dd;
2311
+ --willa-english-card-bg: #171d26;
2312
+ --willa-english-card-border: rgba(156, 185, 221, 0.12);
2313
+ --willa-english-card-section-bg: rgba(255, 255, 255, 0.045);
2314
+ --willa-english-card-section-strong-bg: rgba(96, 165, 250, 0.055);
2315
+ --willa-english-card-section-border: rgba(156, 185, 221, 0.12);
2316
+ --willa-english-card-shadow: 0 10px 26px rgba(0, 0, 0, 0.32);
2317
+ --willa-english-card-divider: rgba(255, 255, 255, 0.08);
2318
+ --willa-english-card-translation-border: var(
2319
+ --willa-english-card-section-border
2320
+ );
2321
+ --willa-english-card-openapi-border: rgba(156, 185, 221, 0.12);
2322
+ --willa-english-card-openapi-bg: rgba(96, 165, 250, 0.055);
2323
+ --willa-english-card-openapi-color: #c0d2e8;
2324
+ --willa-english-card-openapi-error-border: rgba(248, 113, 113, 0.2);
2325
+ --willa-english-card-openapi-error-bg: rgba(248, 113, 113, 0.08);
2326
+ --willa-english-card-openapi-error-color: #fca5a5;
2327
+ --willa-english-card-chip-border: rgba(255, 255, 255, 0.1);
2328
+ --willa-english-card-chip-bg: rgba(255, 255, 255, 0.045);
2329
+ --willa-english-card-meta-bg: rgba(255, 255, 255, 0.045);
2330
+ --willa-english-card-action-hover-bg: rgba(255, 255, 255, 0.07);
2331
+ --willa-english-card-link-bg: rgba(255, 255, 255, 0.045);
2332
+ --willa-english-card-link-bg-hover: rgba(255, 255, 255, 0.07);
2333
+ --willa-english-card-link-border-hover: rgba(156, 185, 221, 0.18);
2334
+ --willa-english-card-resource-bg: #1a1d21;
2335
+ --willa-english-card-resource-border: rgba(255, 255, 255, 0.1);
2336
+ --willa-english-card-resource-shadow: 0 16px 38px rgba(0, 0, 0, 0.36);
2337
+ --willa-english-card-practice-input-border: rgba(255, 255, 255, 0.18);
2338
+ --willa-english-card-practice-input-bg: #101319;
2339
+ --willa-english-card-practice-input-focus-border: rgba(156, 185, 221, 0.22);
2340
+ --willa-english-card-practice-input-focus-shadow: 0 0 0 3px
2341
+ rgba(156, 185, 221, 0.08);
2342
+ --willa-english-card-result-correct: #86efac;
2343
+ --willa-english-card-result-incorrect: #fcd34d;
2344
+ --willa-english-card-example-underline: color-mix(
2345
+ in srgb,
2346
+ var(--willa-english-card-accent) 58%,
2347
+ transparent
2348
+ );
2349
+ --willa-github-pill-bg: rgba(255, 255, 255, 0.14);
2350
+ --willa-github-pill-bg-hover: rgba(125, 211, 252, 0.18);
2351
+ --willa-github-hover-card-fill: #1a1d21;
2352
+ --willa-github-hover-card-border: rgba(255, 255, 255, 0.1);
2353
+ --willa-github-hover-card-shadow: 0 20px 46px rgba(0, 0, 0, 0.28);
2354
+ --willa-github-hover-card-arrow-shadow: -4px -4px 14px rgba(0, 0, 0, 0.12);
2355
+ --willa-github-hover-card-meta-bg: rgba(255, 255, 255, 0.08);
2356
+ --willa-github-hover-card-error: #fda29b;
2357
+ --willa-web-embed-border: rgba(125, 211, 252, 0.2);
2358
+ --willa-web-embed-bg:
2359
+ linear-gradient(135deg, rgba(125, 211, 252, 0.09), transparent 58%),
2360
+ rgba(255, 255, 255, 0.02);
2361
+ --willa-web-embed-shadow: 0 18px 38px rgba(0, 0, 0, 0.22);
2362
+ --willa-web-embed-hover-bg: rgba(125, 211, 252, 0.12);
2363
+ --willa-web-embed-title-hover: #bae6fd;
2364
+ --willa-web-embed-frame-bg:
2365
+ linear-gradient(180deg, rgba(255, 255, 255, 0.04), transparent 100%),
2366
+ var(--willa-panel-bg);
2367
+ --willa-web-embed-iframe-bg: #ffffff;
2368
+ }
2369
+ .willa-shell {
2370
+ --willa-inline-code-bg: #f7f7f7;
2371
+ --willa-heading-1: #111827;
2372
+ --willa-heading-2: #1f2937;
2373
+ --willa-heading-3: #374151;
2374
+ --willa-heading-4: #4b5563;
2375
+ --willa-heading-5: #6b7280;
2376
+ --willa-heading-6: #9ca3af;
2377
+ --willa-prose-selection-bg: rgb(223, 223, 223);
2378
+ --willa-prose-selection-color: inherit;
2379
+ --willa-prose-marker-color: var(--willa-text-faint);
2380
+ --willa-prose-nested-marker-color: var(--willa-text-faint);
2381
+ --willa-prose-mark-bg: rgba(250, 204, 21, 0.22);
2382
+ --willa-prose-quote-color: var(--willa-text-soft);
2383
+ --willa-prose-quote-border: var(--willa-line-strong);
2384
+ --willa-prose-link-color: var(--willa-text-strong);
2385
+ --willa-prose-link-hover-color: var(--willa-text-strong);
2386
+ --willa-prose-link-decoration: #d1d5db;
2387
+ --willa-prose-link-hover-decoration: #9ca3af;
2388
+ --willa-prose-link-decoration-thickness: 1px;
2389
+ --willa-english-cards-border: rgba(15, 23, 42, 0.1);
2390
+ --willa-english-cards-bg: linear-gradient(180deg, #fbfbf8 0%, #f7f6f1 100%);
2391
+ --willa-english-cards-shadow: none;
2392
+ --willa-english-control-border: rgba(15, 23, 42, 0.12);
2393
+ --willa-english-control-bg: rgba(255, 255, 255, 0.72);
2394
+ --willa-english-control-border-hover: rgba(59, 111, 182, 0.24);
2395
+ --willa-english-control-bg-hover: rgba(232, 240, 252, 0.72);
2396
+ --willa-english-control-color-hover: #315f9d;
2397
+ --willa-english-card-accent: #3b6fb6;
2398
+ --willa-english-card-bg: rgba(255, 255, 255, 0.76);
2399
+ --willa-english-card-border: rgba(15, 23, 42, 0.1);
2400
+ --willa-english-card-section-bg: rgba(248, 250, 252, 0.62);
2401
+ --willa-english-card-section-strong-bg: rgba(239, 246, 255, 0.5);
2402
+ --willa-english-card-section-border: rgba(15, 23, 42, 0.075);
2403
+ --willa-english-card-shadow: none;
2404
+ --willa-english-card-divider: rgba(15, 23, 42, 0.07);
2405
+ --willa-english-card-translation-border: rgba(37, 99, 235, 0.14);
2406
+ --willa-english-card-openapi-border: rgba(59, 111, 182, 0.1);
2407
+ --willa-english-card-openapi-bg: rgba(232, 240, 252, 0.56);
2408
+ --willa-english-card-openapi-color: #315f9d;
2409
+ --willa-english-card-openapi-error-border: rgba(220, 38, 38, 0.16);
2410
+ --willa-english-card-openapi-error-bg: rgba(254, 242, 242, 0.64);
2411
+ --willa-english-card-openapi-error-color: #b91c1c;
2412
+ --willa-english-card-chip-border: rgba(15, 23, 42, 0.08);
2413
+ --willa-english-card-chip-bg: rgba(255, 255, 255, 0.5);
2414
+ --willa-english-card-meta-bg: rgba(15, 23, 42, 0.035);
2415
+ --willa-english-card-action-hover-bg: rgba(59, 111, 182, 0.08);
2416
+ --willa-english-card-link-bg: rgba(255, 255, 255, 0.52);
2417
+ --willa-english-card-link-bg-hover: rgba(255, 255, 255, 0.72);
2418
+ --willa-english-card-link-border-hover: rgba(59, 111, 182, 0.2);
2419
+ --willa-english-card-resource-bg: #ffffff;
2420
+ --willa-english-card-resource-border: rgba(15, 23, 42, 0.1);
2421
+ --willa-english-card-resource-shadow: 0 14px 34px rgba(15, 23, 42, 0.14);
2422
+ --willa-english-card-practice-input-border: rgba(15, 23, 42, 0.12);
2423
+ --willa-english-card-practice-input-bg: rgba(255, 255, 255, 0.84);
2424
+ --willa-english-card-practice-input-focus-border: rgba(59, 111, 182, 0.28);
2425
+ --willa-english-card-practice-input-focus-shadow: 0 0 0 3px
2426
+ rgba(59, 111, 182, 0.08);
2427
+ --willa-english-card-result-correct: #15803d;
2428
+ --willa-english-card-result-incorrect: #b45309;
2429
+ --willa-english-card-example-underline: color-mix(
2430
+ in srgb,
2431
+ var(--willa-english-card-accent) 58%,
2432
+ transparent
2433
+ );
2434
+ --willa-github-pill-bg: rgba(15, 23, 42, 0.06);
2435
+ --willa-github-pill-bg-hover: rgba(15, 23, 42, 0.09);
2436
+ --willa-github-hover-card-fill: #f6f6f7;
2437
+ --willa-github-hover-card-border: rgba(15, 23, 42, 0.08);
2438
+ --willa-github-hover-card-shadow: 0 18px 44px rgba(15, 23, 42, 0.14);
2439
+ --willa-github-hover-card-arrow-shadow: -4px -4px 12px rgba(15, 23, 42, 0.03);
2440
+ --willa-github-hover-card-meta-bg: rgba(15, 23, 42, 0.06);
2441
+ --willa-github-hover-card-error: #b42318;
2442
+ --willa-web-embed-border: rgba(14, 165, 233, 0.18);
2443
+ --willa-web-embed-bg:
2444
+ linear-gradient(135deg, rgba(14, 165, 233, 0.08), transparent 58%),
2445
+ var(--willa-surface-tint);
2446
+ --willa-web-embed-shadow: 0 18px 38px rgba(15, 23, 42, 0.08);
2447
+ --willa-web-embed-hover-bg: rgba(14, 165, 233, 0.1);
2448
+ --willa-web-embed-title-hover: var(--willa-accent);
2449
+ --willa-web-embed-frame-bg:
2450
+ linear-gradient(180deg, rgba(255, 255, 255, 0.12), transparent 100%),
2451
+ var(--willa-panel-bg);
2452
+ --willa-web-embed-iframe-bg: #ffffff;
2453
+ }
2454
+ .willa-english-cards {
2455
+ margin: 1.8rem 0;
2456
+ padding: 1rem;
2457
+ border: 1px solid var(--willa-english-cards-border);
2458
+ border-radius: 12px;
2459
+ background: var(--willa-english-cards-bg);
2460
+ box-shadow: var(--willa-english-cards-shadow);
2461
+ }
2462
+ .willa-english-cards-header {
2463
+ display: flex;
2464
+ align-items: center;
2465
+ justify-content: space-between;
2466
+ gap: 1rem;
2467
+ margin-bottom: 1rem;
2468
+ }
2469
+ .willa-english-cards-title {
2470
+ margin: 0;
2471
+ color: var(--willa-text-strong);
2472
+ font-family: var(--willa-title-font);
2473
+ font-size: 1rem;
2474
+ font-weight: 600;
2475
+ line-height: 1.45;
2476
+ }
2477
+ .willa-english-cards-summary {
2478
+ margin: 0.18rem 0 0;
2479
+ color: var(--willa-text-faint);
2480
+ font-size: 0.82rem;
2481
+ line-height: 1.45;
2482
+ text-shadow: none;
2483
+ }
2484
+ .willa-english-cards-mode,
2485
+ .willa-english-card-reveal,
2486
+ .willa-english-card-speak,
2487
+ .willa-english-card-collapse {
2488
+ display: inline-flex;
2489
+ align-items: center;
2490
+ justify-content: center;
2491
+ gap: 0.38rem;
2492
+ border: 1px solid var(--willa-english-control-border);
2493
+ border-radius: 999px;
2494
+ background: var(--willa-english-control-bg);
2495
+ color: var(--willa-text-strong);
2496
+ font-family: inherit;
2497
+ font-size: 0.82rem;
2498
+ font-weight: 600;
2499
+ line-height: 1;
2500
+ cursor: pointer;
2501
+ transition:
2502
+ border-color 160ms ease,
2503
+ background-color 160ms ease,
2504
+ color 160ms ease;
2505
+ }
2506
+ .willa-english-cards-mode {
2507
+ min-height: 2rem;
2508
+ padding: 0 0.74rem;
2509
+ }
2510
+ .willa-english-card-reveal,
2511
+ .willa-english-card-speak {
2512
+ min-height: 1.84rem;
2513
+ padding: 0 0.64rem;
2514
+ white-space: nowrap;
2515
+ }
2516
+ .willa-english-card-collapse {
2517
+ width: 1.84rem;
2518
+ height: 1.84rem;
2519
+ padding: 0;
2520
+ }
2521
+ .willa-english-card-speak {
2522
+ min-height: 1.45rem;
2523
+ padding: 0 0.46rem;
2524
+ font-family: inherit;
2525
+ font-size: 0.74rem;
2526
+ }
2527
+ .willa-english-cards-mode:hover,
2528
+ .willa-english-card-reveal:hover,
2529
+ .willa-english-card-speak:hover,
2530
+ .willa-english-card-collapse:hover {
2531
+ border-color: var(--willa-english-control-border-hover);
2532
+ background: var(--willa-english-control-bg-hover);
2533
+ color: var(--willa-english-control-color-hover);
2534
+ }
2535
+ .willa-english-cards-mode svg,
2536
+ .willa-english-card-reveal svg,
2537
+ .willa-english-card-speak svg,
2538
+ .willa-english-card-collapse svg {
2539
+ width: 0.95rem;
2540
+ height: 0.95rem;
2541
+ }
2542
+ .willa-english-cards-list {
2543
+ display: grid;
2544
+ grid-template-columns: minmax(0, 1fr);
2545
+ gap: 0.95rem;
2546
+ }
2547
+ .willa-english-card {
2548
+ min-width: 0;
2549
+ display: flex;
2550
+ flex-direction: column;
2551
+ padding: 1rem;
2552
+ border: 1px solid var(--willa-english-card-border);
2553
+ border-radius: 10px;
2554
+ background: var(--willa-english-card-bg);
2555
+ box-shadow: var(--willa-english-card-shadow);
2556
+ }
2557
+ .willa-english-card-head {
2558
+ display: flex;
2559
+ align-items: center;
2560
+ justify-content: space-between;
2561
+ gap: 0.8rem;
2562
+ }
2563
+ .willa-english-card--expanded .willa-english-card-head {
2564
+ padding-bottom: 0.74rem;
2565
+ border-bottom: 1px solid var(--willa-english-card-divider);
2566
+ }
2567
+ .willa-english-card-head-actions {
2568
+ display: inline-flex;
2569
+ align-items: center;
2570
+ flex: 0 0 auto;
2571
+ gap: 0.42rem;
2572
+ }
2573
+ .willa-english-card-word-row {
2574
+ display: flex;
2575
+ align-items: center;
2576
+ flex-wrap: wrap;
2577
+ gap: 0.46rem;
2578
+ }
2579
+ .willa-english-card-word {
2580
+ margin: 0;
2581
+ color: var(--willa-text-strong);
2582
+ font-family: var(--willa-title-font);
2583
+ font-size: 1.16rem;
2584
+ font-weight: 650;
2585
+ line-height: 1.25;
2586
+ }
2587
+ .willa-english-card-part {
2588
+ color: var(--willa-english-card-accent);
2589
+ font-family: var(--willa-code-font);
2590
+ font-size: 0.76rem;
2591
+ font-weight: 600;
2592
+ line-height: 1;
2593
+ }
2594
+ .willa-english-card-phonetic {
2595
+ color: var(--willa-text-faint);
2596
+ font-family: var(--willa-code-font);
2597
+ font-size: 0.8rem;
2598
+ line-height: 1;
2599
+ text-shadow: none;
2600
+ }
2601
+ .willa-english-card-content {
2602
+ display: grid;
2603
+ gap: 0.72rem;
2604
+ margin-top: 0.82rem;
2605
+ }
2606
+ .willa-english-card-section {
2607
+ padding: 0.72rem 0.78rem;
2608
+ border: 1px solid var(--willa-english-card-section-border);
2609
+ border-radius: 8px;
2610
+ background: var(--willa-english-card-section-bg);
2611
+ }
2612
+ .willa-english-card-section--translation {
2613
+ border-color: var(--willa-english-card-translation-border);
2614
+ background: var(--willa-english-card-section-strong-bg);
2615
+ }
2616
+ .willa-english-card-section--definition,
2617
+ .willa-english-card-section--examples,
2618
+ .willa-english-card-section--details {
2619
+ background: var(--willa-english-card-section-bg);
2620
+ }
2621
+ .willa-english-card-openapi {
2622
+ display: flex;
2623
+ align-items: center;
2624
+ gap: 0.38rem;
2625
+ padding: 0.46rem 0.56rem;
2626
+ border: 1px solid var(--willa-english-card-openapi-border);
2627
+ border-radius: 8px;
2628
+ background: var(--willa-english-card-openapi-bg);
2629
+ color: var(--willa-english-card-openapi-color);
2630
+ font-size: 0.78rem;
2631
+ font-weight: 600;
2632
+ line-height: 1.45;
2633
+ text-shadow: none;
2634
+ }
2635
+ .willa-english-card-openapi--error {
2636
+ border-color: var(--willa-english-card-openapi-error-border);
2637
+ background: var(--willa-english-card-openapi-error-bg);
2638
+ color: var(--willa-english-card-openapi-error-color);
2639
+ }
2640
+ .willa-english-card-openapi svg {
2641
+ flex: 0 0 auto;
2642
+ width: 0.9rem;
2643
+ height: 0.9rem;
2644
+ }
2645
+ .willa-english-card-label {
2646
+ margin-bottom: 0.32rem;
2647
+ color: var(--willa-text-faint);
2648
+ font-size: 0.74rem;
2649
+ font-weight: 600;
2650
+ line-height: 1.4;
2651
+ }
2652
+ .willa-english-card-line,
2653
+ .willa-english-card-example-translation {
2654
+ margin: 0;
2655
+ color: var(--willa-text-soft);
2656
+ font-size: 0.9rem;
2657
+ line-height: 1.68;
2658
+ text-shadow: none;
2659
+ }
2660
+ .willa-english-card-section--examples .willa-english-card-line {
2661
+ font-weight: 550;
2662
+ }
2663
+ .willa-english-card-section--translation .willa-english-card-line {
2664
+ color: var(--willa-text-strong);
2665
+ font-size: 1rem;
2666
+ font-weight: 650;
2667
+ line-height: 1.55;
2668
+ }
2669
+ .willa-english-card-line + .willa-english-card-line,
2670
+ .willa-english-card-example + .willa-english-card-example {
2671
+ margin-top: 0.4rem;
2672
+ }
2673
+ .willa-english-card-line--empty {
2674
+ color: var(--willa-text-faint);
2675
+ }
2676
+ .willa-english-card-example-translation {
2677
+ margin-top: 0.18rem;
2678
+ color: var(--willa-text-faint);
2679
+ font-size: 0.86rem;
2680
+ }
2681
+ .willa-english-card-example-word {
2682
+ padding: 0;
2683
+ background: transparent;
2684
+ color: inherit;
2685
+ font-weight: 650;
2686
+ text-decoration: underline;
2687
+ text-decoration-color: var(--willa-english-card-example-underline);
2688
+ text-decoration-thickness: 0.1em;
2689
+ text-underline-offset: 0.18em;
2690
+ }
2691
+ .willa-english-card-details {
2692
+ display: grid;
2693
+ gap: 0.56rem;
2694
+ }
2695
+ .willa-english-card-detail {
2696
+ display: grid;
2697
+ gap: 0.28rem;
2698
+ }
2699
+ .willa-english-card-detail-label {
2700
+ color: var(--willa-text-faint);
2701
+ font-size: 0.68rem;
2702
+ font-weight: 600;
2703
+ line-height: 1.35;
2704
+ text-shadow: none;
2705
+ }
2706
+ .willa-english-card-detail-items {
2707
+ display: flex;
2708
+ flex-wrap: wrap;
2709
+ gap: 0.34rem;
2710
+ }
2711
+ .willa-english-card-detail-items span {
2712
+ display: inline-flex;
2713
+ align-items: center;
2714
+ gap: 0.24rem;
2715
+ max-width: 100%;
2716
+ min-height: 1.55rem;
2717
+ padding: 0.16rem 0.46rem;
2718
+ border: 1px solid var(--willa-english-card-chip-border);
2719
+ border-radius: 999px;
2720
+ background: var(--willa-english-card-chip-bg);
2721
+ color: var(--willa-text-soft);
2722
+ font-size: 0.78rem;
2723
+ line-height: 1.35;
2724
+ text-shadow: none;
2725
+ }
2726
+ .willa-english-card-detail-speak {
2727
+ display: inline-flex;
2728
+ align-items: center;
2729
+ justify-content: center;
2730
+ width: 1.1rem;
2731
+ height: 1.1rem;
2732
+ margin-right: -0.18rem;
2733
+ border: 0;
2734
+ border-radius: 999px;
2735
+ background: transparent;
2736
+ color: var(--willa-english-card-accent);
2737
+ cursor: pointer;
2738
+ }
2739
+ .willa-english-card-detail-speak:hover {
2740
+ background: var(--willa-english-card-action-hover-bg);
2741
+ }
2742
+ .willa-english-card-detail-speak svg {
2743
+ width: 0.74rem;
2744
+ height: 0.74rem;
2745
+ }
2746
+ .willa-english-card-meta {
2747
+ display: flex;
2748
+ flex-wrap: wrap;
2749
+ gap: 0.38rem;
2750
+ margin-top: 0.06rem;
2751
+ }
2752
+ .willa-english-card-meta span {
2753
+ padding: 0.18rem 0.44rem;
2754
+ border: 1px solid var(--willa-english-card-chip-border);
2755
+ border-radius: 999px;
2756
+ background: var(--willa-english-card-meta-bg);
2757
+ color: var(--willa-text-faint);
2758
+ font-size: 0.74rem;
2759
+ line-height: 1.25;
2760
+ text-shadow: none;
2761
+ }
2762
+ .willa-english-card-actions {
2763
+ display: flex;
2764
+ flex-wrap: wrap;
2765
+ gap: 0.44rem;
2766
+ margin-top: 0.06rem;
2767
+ padding-top: 0.68rem;
2768
+ border-top: 1px solid var(--willa-english-card-divider);
2769
+ }
2770
+ .willa-english-card-resource {
2771
+ position: relative;
2772
+ display: inline-flex;
2773
+ }
2774
+ .willa-english-card-link {
2775
+ display: inline-flex;
2776
+ align-items: center;
2777
+ gap: 0.3rem;
2778
+ min-height: 1.7rem;
2779
+ padding: 0 0.48rem;
2780
+ border: 1px solid var(--willa-english-card-chip-border);
2781
+ border-radius: 999px;
2782
+ background: var(--willa-english-card-link-bg);
2783
+ color: var(--willa-english-card-accent);
2784
+ font-size: 0.78rem;
2785
+ font-weight: 600;
2786
+ line-height: 1;
2787
+ text-decoration: none;
2788
+ text-shadow: none;
2789
+ }
2790
+ .willa-english-card-link:hover {
2791
+ border-color: var(--willa-english-card-link-border-hover);
2792
+ background: var(--willa-english-card-link-bg-hover);
2793
+ text-decoration: none;
2794
+ }
2795
+ .willa-english-card-link svg {
2796
+ width: 0.86rem;
2797
+ height: 0.86rem;
2798
+ }
2799
+ .willa-english-card-resource-card {
2800
+ position: absolute;
2801
+ left: 0;
2802
+ bottom: calc(100% + 0.48rem);
2803
+ z-index: 3;
2804
+ display: grid;
2805
+ width: min(18rem, calc(100vw - 2rem));
2806
+ gap: 0.24rem;
2807
+ padding: 0.68rem 0.74rem;
2808
+ border: 1px solid var(--willa-english-card-resource-border);
2809
+ border-radius: 8px;
2810
+ background: var(--willa-english-card-resource-bg);
2811
+ box-shadow: var(--willa-english-card-resource-shadow);
2812
+ opacity: 0;
2813
+ pointer-events: none;
2814
+ transform: translateY(0.18rem);
2815
+ transition:
2816
+ opacity 140ms ease,
2817
+ transform 140ms ease;
2818
+ }
2819
+ .willa-english-card-resource-card::after {
2820
+ content: "";
2821
+ position: absolute;
2822
+ left: 0.9rem;
2823
+ bottom: -0.34rem;
2824
+ width: 0.62rem;
2825
+ height: 0.62rem;
2826
+ border-right: 1px solid var(--willa-english-card-resource-border);
2827
+ border-bottom: 1px solid var(--willa-english-card-resource-border);
2828
+ background: var(--willa-english-card-resource-bg);
2829
+ transform: rotate(45deg);
2830
+ }
2831
+ .willa-english-card-resource:hover .willa-english-card-resource-card,
2832
+ .willa-english-card-resource:focus-within .willa-english-card-resource-card {
2833
+ opacity: 1;
2834
+ transform: translateY(0);
2835
+ }
2836
+ .willa-english-card-resource-title,
2837
+ .willa-english-card-resource-description,
2838
+ .willa-english-card-resource-url {
2839
+ display: block;
2840
+ text-shadow: none;
2841
+ }
2842
+ .willa-english-card-resource-title {
2843
+ color: var(--willa-text-strong);
2844
+ font-size: 0.84rem;
2845
+ font-weight: 650;
2846
+ line-height: 1.42;
2847
+ }
2848
+ .willa-english-card-resource-description {
2849
+ color: var(--willa-text-soft);
2850
+ font-size: 0.78rem;
2851
+ line-height: 1.55;
2852
+ }
2853
+ .willa-english-card-resource-url {
2854
+ color: var(--willa-text-faint);
2855
+ font-family: var(--willa-code-font);
2856
+ font-size: 0.72rem;
2857
+ line-height: 1.4;
2858
+ }
2859
+ .willa-english-card-practice {
2860
+ margin-top: 0.86rem;
2861
+ padding: 0.72rem 0.78rem;
2862
+ border: 1px dashed var(--willa-english-card-section-border);
2863
+ border-radius: 8px;
2864
+ background: var(--willa-english-card-section-strong-bg);
2865
+ }
2866
+ .willa-english-card-practice-label {
2867
+ display: block;
2868
+ margin-bottom: 0.42rem;
2869
+ color: var(--willa-text-faint);
2870
+ font-size: 0.74rem;
2871
+ font-weight: 650;
2872
+ line-height: 1.4;
2873
+ text-shadow: none;
2874
+ }
2875
+ .willa-english-card-practice-row {
2876
+ display: flex;
2877
+ gap: 0.48rem;
2878
+ }
2879
+ .willa-english-card-practice-input {
2880
+ min-width: 0;
2881
+ flex: 1;
2882
+ height: 2.1rem;
2883
+ padding: 0 0.62rem;
2884
+ border: 1px solid var(--willa-english-card-practice-input-border);
2885
+ border-radius: 8px;
2886
+ background: var(--willa-english-card-practice-input-bg);
2887
+ color: var(--willa-text-strong);
2888
+ font: inherit;
2889
+ font-size: 0.86rem;
2890
+ outline: none;
2891
+ }
2892
+ .willa-english-card-practice-input:focus {
2893
+ border-color: var(--willa-english-card-practice-input-focus-border);
2894
+ box-shadow: var(--willa-english-card-practice-input-focus-shadow);
2895
+ }
2896
+ .willa-english-card-practice-check {
2897
+ display: inline-flex;
2898
+ align-items: center;
2899
+ justify-content: center;
2900
+ min-width: 3.2rem;
2901
+ height: 2.1rem;
2902
+ padding: 0 0.72rem;
2903
+ border: 1px solid var(--willa-english-card-section-border);
2904
+ border-radius: 8px;
2905
+ background: var(--willa-english-card-section-bg);
2906
+ color: var(--willa-english-card-accent);
2907
+ font: inherit;
2908
+ font-size: 0.82rem;
2909
+ font-weight: 650;
2910
+ cursor: pointer;
2911
+ }
2912
+ .willa-english-card-practice-result {
2913
+ margin-top: 0.42rem;
2914
+ color: var(--willa-text-faint);
2915
+ font-size: 0.78rem;
2916
+ line-height: 1.45;
2917
+ text-shadow: none;
2918
+ }
2919
+ .willa-english-card-practice-result--correct {
2920
+ color: var(--willa-english-card-result-correct);
2921
+ font-weight: 650;
2922
+ }
2923
+ .willa-english-card-practice-result--incorrect {
2924
+ color: var(--willa-english-card-result-incorrect);
2925
+ }
2926
+ @media (max-width: 767px) {
2927
+ .willa-english-cards {
2928
+ margin: 1.5rem 0;
2929
+ padding: 0.84rem;
2930
+ }
2931
+
2932
+ .willa-english-cards-header {
2933
+ align-items: flex-start;
2934
+ flex-direction: column;
2935
+ gap: 0.7rem;
2936
+ }
2937
+
2938
+ .willa-english-cards-list {
2939
+ grid-template-columns: 1fr;
2940
+ }
2941
+
2942
+ .willa-english-card {
2943
+ padding: 0.88rem;
2944
+ }
2945
+ }
2946
+ .willa-prose-skeleton {
2947
+ display: block;
2948
+ position: relative;
2949
+ }
2950
+ .willa-prose-skeleton-content {
2951
+ display: block;
2952
+ }
2953
+ .willa-prose-skeleton--inline,
2954
+ .willa-prose-skeleton--inline .willa-prose-skeleton-placeholder,
2955
+ .willa-prose-skeleton--inline .willa-prose-skeleton-content {
2956
+ display: inline-block;
2957
+ }
2958
+ .willa-prose-skeleton-placeholder {
2959
+ --willa-skeleton-block-height: 220px;
2960
+ display: grid;
2961
+ width: 100%;
2962
+ gap: 0.8rem;
2963
+ }
2964
+ .willa-prose-skeleton-lines {
2965
+ display: grid;
2966
+ gap: 0.52rem;
2967
+ }
2968
+ .willa-prose-skeleton-line,
2969
+ .willa-prose-skeleton-block {
2970
+ display: block;
2971
+ overflow: hidden;
2972
+ border-radius: 6px;
2973
+ background: var(--willa-skeleton-bg);
2974
+ background-size: 220% 100%;
2975
+ animation: willa-skeleton-shimmer 1.4s ease-in-out infinite;
2976
+ }
2977
+ .willa-prose-skeleton-line {
2978
+ width: var(--willa-skeleton-line-width, 100%);
2979
+ height: var(--willa-skeleton-line-height, 0.9rem);
2980
+ }
2981
+ .willa-prose-skeleton-block {
2982
+ height: var(--willa-skeleton-block-height);
2983
+ }
2984
+ .willa-prose-skeleton[data-loading="true"][data-keep-children-mounted="true"]
2985
+ .willa-prose-skeleton-content {
2986
+ position: absolute;
2987
+ width: 1px;
2988
+ height: 1px;
2989
+ overflow: hidden;
2990
+ clip: rect(0 0 0 0);
2991
+ clip-path: inset(50%);
2992
+ white-space: nowrap;
2993
+ }
2994
+ @keyframes willa-skeleton-shimmer {
2995
+ 0% {
2996
+ background-position: 120% 0;
2997
+ }
2998
+
2999
+ 100% {
3000
+ background-position: -120% 0;
3001
+ }
3002
+ }
3003
+ .willa-prose-github-mention-wrap {
3004
+ position: relative;
3005
+ display: inline-flex;
3006
+ vertical-align: middle;
3007
+ }
3008
+ .willa-prose-github-mention {
3009
+ display: inline-flex;
3010
+ align-items: center;
3011
+ gap: 0.44rem;
3012
+ max-width: 100%;
3013
+ margin: 0 0.14rem;
3014
+ padding: 0.12rem 0.42rem 0.12rem 0.22rem;
3015
+ border-radius: 999px;
3016
+ background: var(--willa-github-pill-bg);
3017
+ color: var(--willa-text-strong);
3018
+ text-decoration: none;
3019
+ text-shadow: none;
3020
+ vertical-align: middle;
3021
+ transition:
3022
+ color 180ms ease,
3023
+ opacity 180ms ease;
3024
+ }
3025
+ .willa-prose-github-mention:hover {
3026
+ background: var(--willa-github-pill-bg-hover);
3027
+ color: var(--willa-accent);
3028
+ }
3029
+ .willa-prose-github-mention:focus-visible {
3030
+ outline: 2px solid var(--willa-focus-ring);
3031
+ outline-offset: 2px;
3032
+ }
3033
+ .willa-prose-github-mention-avatar {
3034
+ display: block;
3035
+ width: 1rem;
3036
+ height: 1rem;
3037
+ flex: none;
3038
+ border-radius: 999px;
3039
+ object-fit: cover;
3040
+ background: var(--willa-cover-bg);
3041
+ transform: none;
3042
+ }
3043
+ .willa-prose-github-mention-copy {
3044
+ display: flex;
3045
+ min-width: 0;
3046
+ align-items: center;
3047
+ }
3048
+ .willa-prose-github-mention-name {
3049
+ display: inline-flex;
3050
+ align-items: center;
3051
+ gap: 0;
3052
+ color: currentColor;
3053
+ font-size: 0.86rem;
3054
+ font-weight: 600;
3055
+ line-height: 1;
3056
+ }
3057
+ .willa-prose-github-hover-card {
3058
+ position: absolute;
3059
+ left: 0;
3060
+ top: calc(100% + 14px);
3061
+ z-index: 12;
3062
+ display: flex;
3063
+ width: min(20rem, calc(100vw - 2rem));
3064
+ flex-direction: column;
3065
+ gap: 0.78rem;
3066
+ padding: 0.9rem 1rem;
3067
+ border: 1px solid var(--willa-github-hover-card-border);
3068
+ border-radius: 18px;
3069
+ background: var(--willa-github-hover-card-fill);
3070
+ box-shadow: var(--willa-github-hover-card-shadow);
3071
+ opacity: 0;
3072
+ pointer-events: none;
3073
+ transform: translateY(-14px) scale(0.96);
3074
+ transform-origin: left top;
3075
+ will-change: opacity, transform;
3076
+ transition:
3077
+ opacity 260ms cubic-bezier(0.22, 1, 0.36, 1),
3078
+ transform 300ms cubic-bezier(0.22, 1, 0.36, 1);
3079
+ }
3080
+ .willa-prose-github-hover-card::before {
3081
+ content: "";
3082
+ position: absolute;
3083
+ left: 1.15rem;
3084
+ bottom: 100%;
3085
+ width: 14px;
3086
+ height: 14px;
3087
+ background: var(--willa-github-hover-card-fill);
3088
+ border-left: 1px solid var(--willa-github-hover-card-border);
3089
+ border-top: 1px solid var(--willa-github-hover-card-border);
3090
+ box-shadow: var(--willa-github-hover-card-arrow-shadow);
3091
+ transform: translateY(7px) rotate(45deg);
3092
+ }
3093
+ .willa-prose-github-mention-wrap[data-open="true"]
3094
+ .willa-prose-github-hover-card {
3095
+ opacity: 1;
3096
+ pointer-events: auto;
3097
+ transform: translateY(0) scale(1);
3098
+ }
3099
+ .willa-prose-github-hover-card-head {
3100
+ display: flex;
3101
+ align-items: center;
3102
+ gap: 0.82rem;
3103
+ }
3104
+ .willa-prose-github-hover-card-avatar {
3105
+ display: block;
3106
+ width: 3rem;
3107
+ height: 3rem;
3108
+ flex: none;
3109
+ border-radius: 999px;
3110
+ object-fit: cover;
3111
+ background: var(--willa-cover-bg);
3112
+ }
3113
+ .willa-prose-github-hover-card-avatar--fallback {
3114
+ display: inline-flex;
3115
+ align-items: center;
3116
+ justify-content: center;
3117
+ color: var(--willa-text-faint);
3118
+ }
3119
+ .willa-prose-github-hover-card-copy {
3120
+ display: flex;
3121
+ min-width: 0;
3122
+ flex-direction: column;
3123
+ gap: 0.18rem;
3124
+ }
3125
+ .willa-prose-github-hover-card-title {
3126
+ color: var(--willa-text-strong);
3127
+ font-family: var(--willa-title-font);
3128
+ font-size: 1.04rem;
3129
+ font-weight: 650;
3130
+ line-height: 1.24;
3131
+ }
3132
+ .willa-prose-github-hover-card-subtitle {
3133
+ color: var(--willa-text-faint);
3134
+ font-size: 0.82rem;
3135
+ font-weight: 600;
3136
+ line-height: 1.2;
3137
+ }
3138
+ .willa-prose-github-hover-card-description {
3139
+ color: var(--willa-text-soft);
3140
+ font-size: 0.88rem;
3141
+ font-weight: 500;
3142
+ line-height: 1.62;
3143
+ }
3144
+ .willa-prose-github-hover-card-loading,
3145
+ .willa-prose-github-hover-card-error {
3146
+ display: inline-flex;
3147
+ align-items: center;
3148
+ gap: 0.46rem;
3149
+ color: var(--willa-text-soft);
3150
+ font-size: 0.84rem;
3151
+ font-weight: 500;
3152
+ line-height: 1.5;
3153
+ }
3154
+ .willa-prose-github-hover-card-loading {
3155
+ width: min(100%, 13rem);
3156
+ }
3157
+ .willa-prose-github-hover-card-error {
3158
+ color: var(--willa-github-hover-card-error);
3159
+ }
3160
+ .willa-prose-github-hover-card-error svg {
3161
+ width: 0.96rem;
3162
+ height: 0.96rem;
3163
+ flex: none;
3164
+ }
3165
+ .willa-prose-github-hover-card-meta {
3166
+ display: flex;
3167
+ flex-wrap: wrap;
3168
+ gap: 0.48rem;
3169
+ }
3170
+ .willa-prose-github-hover-card-meta-item {
3171
+ display: inline-flex;
3172
+ align-items: center;
3173
+ padding: 0.24rem 0.5rem;
3174
+ border-radius: 999px;
3175
+ background: var(--willa-github-hover-card-meta-bg);
3176
+ color: var(--willa-text-faint);
3177
+ font-size: 0.76rem;
3178
+ font-weight: 600;
3179
+ line-height: 1.2;
3180
+ }
3181
+ @media (max-width: 767px) {
3182
+ .willa-prose-github-mention {
3183
+ gap: 0.4rem;
3184
+ }
3185
+ }
3186
+ .willa-prose-github-repo-wrap {
3187
+ position: relative;
3188
+ display: inline-flex;
3189
+ }
3190
+ .willa-prose-github-repo {
3191
+ display: inline-flex;
3192
+ align-items: baseline;
3193
+ gap: 0.38rem;
3194
+ max-width: 100%;
3195
+ margin: 0 0.14rem;
3196
+ padding: 0.2rem 0.54rem 0.2rem 0.34rem;
3197
+ border-radius: 999px;
3198
+ background: var(--willa-github-pill-bg);
3199
+ color: var(--willa-text-strong);
3200
+ text-decoration: none;
3201
+ text-shadow: none;
3202
+ vertical-align: middle;
3203
+ transition:
3204
+ color 180ms ease,
3205
+ background-color 180ms ease;
3206
+ }
3207
+ .willa-prose-github-repo:hover {
3208
+ background: var(--willa-github-pill-bg-hover);
3209
+ color: var(--willa-accent);
3210
+ }
3211
+ .willa-prose-github-repo:focus-visible {
3212
+ outline: 2px solid var(--willa-focus-ring);
3213
+ outline-offset: 2px;
3214
+ }
3215
+ .willa-prose-github-repo-icon {
3216
+ width: 0.9rem;
3217
+ height: 0.9rem;
3218
+ flex: none;
3219
+ transform: translateY(0.16em);
3220
+ }
3221
+ .willa-prose-github-repo-name {
3222
+ min-width: 0;
3223
+ color: currentColor;
3224
+ font-family: var(--willa-code-font);
3225
+ font-size: 0.88rem;
3226
+ font-weight: 600;
3227
+ line-height: 1.2;
3228
+ white-space: nowrap;
3229
+ }
3230
+ .willa-prose-github-hover-card {
3231
+ position: absolute;
3232
+ left: 0;
3233
+ top: calc(100% + 14px);
3234
+ z-index: 12;
3235
+ display: flex;
3236
+ width: min(20rem, calc(100vw - 2rem));
3237
+ flex-direction: column;
3238
+ gap: 0.78rem;
3239
+ padding: 0.9rem 1rem;
3240
+ border: 1px solid var(--willa-github-hover-card-border);
3241
+ border-radius: 18px;
3242
+ background: var(--willa-github-hover-card-fill);
3243
+ box-shadow: var(--willa-github-hover-card-shadow);
3244
+ opacity: 0;
3245
+ pointer-events: none;
3246
+ transform: translateY(-14px) scale(0.96);
3247
+ transform-origin: left top;
3248
+ will-change: opacity, transform;
3249
+ transition:
3250
+ opacity 260ms cubic-bezier(0.22, 1, 0.36, 1),
3251
+ transform 300ms cubic-bezier(0.22, 1, 0.36, 1);
3252
+ }
3253
+ .willa-prose-github-hover-card::before {
3254
+ content: "";
3255
+ position: absolute;
3256
+ left: 1.15rem;
3257
+ bottom: 100%;
3258
+ width: 14px;
3259
+ height: 14px;
3260
+ background: var(--willa-github-hover-card-fill);
3261
+ border-left: 1px solid var(--willa-github-hover-card-border);
3262
+ border-top: 1px solid var(--willa-github-hover-card-border);
3263
+ box-shadow: var(--willa-github-hover-card-arrow-shadow);
3264
+ transform: translateY(7px) rotate(45deg);
3265
+ }
3266
+ .willa-prose-github-repo-wrap[data-open="true"] .willa-prose-github-hover-card {
3267
+ opacity: 1;
3268
+ pointer-events: auto;
3269
+ transform: translateY(0) scale(1);
3270
+ }
3271
+ .willa-prose-github-hover-card-head {
3272
+ display: flex;
3273
+ align-items: center;
3274
+ gap: 0.82rem;
3275
+ }
3276
+ .willa-prose-github-hover-card-avatar {
3277
+ display: block;
3278
+ width: 3rem;
3279
+ height: 3rem;
3280
+ flex: none;
3281
+ border-radius: 999px;
3282
+ object-fit: cover;
3283
+ background: var(--willa-cover-bg);
3284
+ }
3285
+ .willa-prose-github-hover-card-avatar--fallback {
3286
+ display: inline-flex;
3287
+ align-items: center;
3288
+ justify-content: center;
3289
+ color: var(--willa-text-faint);
3290
+ }
3291
+ .willa-prose-github-hover-card-copy {
3292
+ display: flex;
3293
+ min-width: 0;
3294
+ flex-direction: column;
3295
+ gap: 0.18rem;
3296
+ }
3297
+ .willa-prose-github-hover-card-title {
3298
+ color: var(--willa-text-strong);
3299
+ font-family: var(--willa-title-font);
3300
+ font-size: 1.04rem;
3301
+ font-weight: 650;
3302
+ line-height: 1.24;
3303
+ }
3304
+ .willa-prose-github-hover-card-subtitle {
3305
+ color: var(--willa-text-faint);
3306
+ font-size: 0.82rem;
3307
+ font-weight: 600;
3308
+ line-height: 1.2;
3309
+ }
3310
+ .willa-prose-github-hover-card-description {
3311
+ color: var(--willa-text-soft);
3312
+ font-size: 0.88rem;
3313
+ font-weight: 500;
3314
+ line-height: 1.62;
3315
+ }
3316
+ .willa-prose-github-hover-card-loading,
3317
+ .willa-prose-github-hover-card-error {
3318
+ display: inline-flex;
3319
+ align-items: center;
3320
+ gap: 0.46rem;
3321
+ color: var(--willa-text-soft);
3322
+ font-size: 0.84rem;
3323
+ font-weight: 500;
3324
+ line-height: 1.5;
3325
+ }
3326
+ .willa-prose-github-hover-card-loading {
3327
+ width: min(100%, 13rem);
3328
+ }
3329
+ .willa-prose-github-hover-card-error {
3330
+ color: var(--willa-github-hover-card-error);
3331
+ }
3332
+ .willa-prose-github-hover-card-error svg {
3333
+ width: 0.96rem;
3334
+ height: 0.96rem;
3335
+ flex: none;
3336
+ }
3337
+ .willa-prose-github-hover-card-meta {
3338
+ display: flex;
3339
+ flex-wrap: wrap;
3340
+ gap: 0.48rem;
3341
+ }
3342
+ .willa-prose-github-hover-card-meta-item {
3343
+ display: inline-flex;
3344
+ align-items: center;
3345
+ padding: 0.24rem 0.5rem;
3346
+ border-radius: 999px;
3347
+ background: var(--willa-github-hover-card-meta-bg);
3348
+ color: var(--willa-text-faint);
3349
+ font-size: 0.76rem;
3350
+ font-weight: 600;
3351
+ line-height: 1.2;
3352
+ }
3353
+ @media (max-width: 767px) {
3354
+ .willa-prose-github-repo {
3355
+ gap: 0.34rem;
3356
+ }
3357
+ }
3358
+ .willa-prose {
3359
+ font-family: var(--willa-body-font);
3360
+ font-size: 1rem;
3361
+ font-weight: 500;
3362
+ font-synthesis: none;
3363
+ line-height: 1.62;
3364
+ color: var(--willa-text);
3365
+ text-shadow: 0.018em 0 0 currentColor;
3366
+ }
3367
+ .willa-prose code {
3368
+ font-family: var(--willa-code-font);
3369
+ }
3370
+ .willa-prose::selection,
3371
+ .willa-prose *::selection {
3372
+ background-color: var(--willa-prose-selection-bg) !important;
3373
+ color: var(--willa-prose-selection-color) !important;
3374
+ text-shadow: none !important;
3375
+ }
3376
+ .willa-prose::-moz-selection,
3377
+ .willa-prose *::-moz-selection {
3378
+ background-color: var(--willa-prose-selection-bg) !important;
3379
+ color: var(--willa-prose-selection-color) !important;
3380
+ text-shadow: none !important;
3381
+ }
3382
+ .willa-prose strong,
3383
+ .willa-prose b {
3384
+ font-weight: 600;
3385
+ color: var(--willa-text-strong);
3386
+ }
3387
+ .willa-prose-h1,
3388
+ .willa-prose-h2,
3389
+ .willa-prose-h3,
3390
+ .willa-prose-h4,
3391
+ .willa-prose-h5,
3392
+ .willa-prose-h6 {
3393
+ margin: 0;
3394
+ font-family: var(--willa-title-font);
3395
+ font-weight: 600;
3396
+ }
3397
+ .willa-prose-h1 {
3398
+ margin-bottom: 1.1rem;
3399
+ color: var(--willa-heading-1);
3400
+ font-size: 1.5rem;
3401
+ line-height: 1.5;
3402
+ }
3403
+ .willa-prose-h2 {
3404
+ margin-top: 2.4rem;
3405
+ margin-bottom: 0.9rem;
3406
+ color: var(--willa-heading-2);
3407
+ font-size: 1.24rem;
3408
+ line-height: 1.62;
3409
+ scroll-margin-top: 12px;
3410
+ }
3411
+ .willa-prose-h3 {
3412
+ margin-top: 1.8rem;
3413
+ margin-bottom: 0.74rem;
3414
+ color: var(--willa-heading-3);
3415
+ font-size: 1.08rem;
3416
+ line-height: 1.66;
3417
+ scroll-margin-top: 12px;
3418
+ }
3419
+ .willa-prose-h4 {
3420
+ margin-top: 1.5rem;
3421
+ margin-bottom: 0.62rem;
3422
+ color: var(--willa-heading-4);
3423
+ font-size: 1rem;
3424
+ line-height: 1.7;
3425
+ scroll-margin-top: 12px;
3426
+ }
3427
+ .willa-prose-h5 {
3428
+ margin-top: 1.28rem;
3429
+ margin-bottom: 0.54rem;
3430
+ color: var(--willa-heading-5);
3431
+ font-size: 0.92rem;
3432
+ line-height: 1.72;
3433
+ scroll-margin-top: 12px;
3434
+ }
3435
+ .willa-prose-h6 {
3436
+ margin-top: 1.1rem;
3437
+ margin-bottom: 0.48rem;
3438
+ color: var(--willa-heading-6);
3439
+ font-size: 0.86rem;
3440
+ line-height: 1.74;
3441
+ scroll-margin-top: 12px;
3442
+ }
3443
+ .willa-prose-heading-link {
3444
+ position: relative;
3445
+ display: inline-block;
3446
+ color: inherit;
3447
+ text-decoration: none;
3448
+ }
3449
+ .willa-prose-heading-link::before {
3450
+ content: "#";
3451
+ position: absolute;
3452
+ top: 50%;
3453
+ right: 100%;
3454
+ margin-right: 0.3em;
3455
+ color: var(--willa-text-faint);
3456
+ opacity: 0;
3457
+ transform: translateY(-50%);
3458
+ transition:
3459
+ opacity 180ms ease,
3460
+ color 180ms ease;
3461
+ }
3462
+ .willa-prose-heading-link:hover::before,
3463
+ .willa-prose-heading-link:focus-visible::before {
3464
+ opacity: 1;
3465
+ }
3466
+ .willa-prose-heading-link:focus-visible {
3467
+ outline: 2px solid var(--willa-focus-ring);
3468
+ outline-offset: 4px;
3469
+ border-radius: 4px;
3470
+ }
3471
+ .willa-prose-p,
3472
+ .willa-prose-ul,
3473
+ .willa-prose-ol,
3474
+ .willa-prose-quote {
3475
+ margin: 0 0 1.08rem;
3476
+ }
3477
+ .willa-prose-media-block {
3478
+ margin: 0 0 1.35rem;
3479
+ }
3480
+ .willa-prose-p {
3481
+ margin: 0 0 11px;
3482
+ color: var(--willa-text);
3483
+ font-size: 1rem;
3484
+ font-weight: 500;
3485
+ line-height: 1.62;
3486
+ }
3487
+ .willa-prose-ul,
3488
+ .willa-prose-ol {
3489
+ padding-left: 1.7rem;
3490
+ color: var(--willa-text);
3491
+ font-size: 1rem;
3492
+ font-weight: 500;
3493
+ line-height: 1.62;
3494
+ list-style-position: outside;
3495
+ }
3496
+ .willa-prose-ul {
3497
+ list-style-type: disc;
3498
+ }
3499
+ .willa-prose-ol {
3500
+ list-style-type: decimal;
3501
+ }
3502
+ .willa-prose-li + .willa-prose-li {
3503
+ margin-top: 12px;
3504
+ }
3505
+ .willa-prose-li {
3506
+ padding-left: 0.8rem;
3507
+ }
3508
+ .willa-prose-li::marker {
3509
+ color: var(--willa-prose-marker-color);
3510
+ }
3511
+ .willa-prose-li > .willa-prose-ol,
3512
+ .willa-prose-li > .willa-prose-ul {
3513
+ margin-top: 1rem;
3514
+ margin-bottom: 0;
3515
+ padding-left: 1.15rem;
3516
+ }
3517
+ .willa-prose-li > .willa-prose-ol .willa-prose-li::marker,
3518
+ .willa-prose-li > .willa-prose-ul .willa-prose-li::marker {
3519
+ color: var(--willa-prose-nested-marker-color);
3520
+ }
3521
+ .willa-prose-mark {
3522
+ padding: 0.08em 0.26em;
3523
+ border-radius: 4px;
3524
+ background: var(--willa-prose-mark-bg);
3525
+ color: inherit;
3526
+ -webkit-box-decoration-break: clone;
3527
+ box-decoration-break: clone;
3528
+ }
3529
+ .willa-prose-color-text {
3530
+ font-weight: 500;
3531
+ }
3532
+ .willa-prose-quote {
3533
+ padding: 0.12rem 0 0.12rem 1rem;
3534
+ color: var(--willa-prose-quote-color);
3535
+ font-weight: 500;
3536
+ border-left: 3px solid var(--willa-prose-quote-border);
3537
+ }
3538
+ .willa-prose-quote,
3539
+ .willa-prose-quote .willa-prose-p,
3540
+ .willa-prose-quote .willa-prose-ul,
3541
+ .willa-prose-quote .willa-prose-ol,
3542
+ .willa-prose-quote .willa-prose-li {
3543
+ font-size: 0.94rem;
3544
+ line-height: 1.85;
3545
+ }
3546
+ .willa-prose-quote > :first-child {
3547
+ margin-top: 0;
3548
+ }
3549
+ .willa-prose-quote > :last-child {
3550
+ margin-bottom: 0;
3551
+ }
3552
+ .willa-prose-link {
3553
+ color: var(--willa-prose-link-color);
3554
+ font-weight: 600;
3555
+ text-decoration: underline;
3556
+ text-decoration-thickness: var(--willa-prose-link-decoration-thickness);
3557
+ text-underline-offset: 0.18em;
3558
+ text-decoration-color: var(--willa-prose-link-decoration);
3559
+ }
3560
+ .willa-prose-link:hover {
3561
+ color: var(--willa-prose-link-hover-color);
3562
+ text-decoration-color: var(--willa-prose-link-hover-decoration);
3563
+ }
3564
+ .willa-prose-color-text .willa-prose-link,
3565
+ .willa-prose-color-text .willa-prose-link:hover {
3566
+ color: inherit;
3567
+ text-decoration-color: currentColor;
3568
+ }
3569
+ .willa-prose-inline-code {
3570
+ padding: 0.3rem 0.34rem;
3571
+ border-radius: 5px;
3572
+ background: var(--willa-inline-code-bg);
3573
+ color: var(--willa-text-strong);
3574
+ font-family: var(--willa-code-font);
3575
+ font-size: 0.86em;
3576
+ font-weight: 500;
3577
+ line-height: 1.45;
3578
+ vertical-align: 0.04em;
3579
+ font-variant-ligatures: contextual;
3580
+ font-feature-settings:
3581
+ "ss01" 1,
3582
+ "ss02" 1,
3583
+ "ss03" 1,
3584
+ "ss06" 1,
3585
+ "zero" 1;
3586
+ }
3587
+ .willa-prose-color-text .willa-prose-inline-code {
3588
+ color: inherit;
3589
+ }
3590
+ .willa-prose-hr {
3591
+ height: 1px;
3592
+ margin: 1.6rem 0;
3593
+ border: 0;
3594
+ background: var(--willa-line);
3595
+ }
3596
+ .willa-prose-web-embed {
3597
+ margin: 0 0 1.35rem;
3598
+ overflow: hidden;
3599
+ border: 1px solid var(--willa-web-embed-border);
3600
+ border-radius: 14px;
3601
+ background: var(--willa-web-embed-bg);
3602
+ box-shadow: var(--willa-web-embed-shadow);
3603
+ }
3604
+ .willa-prose-web-embed-header {
3605
+ display: grid;
3606
+ grid-template-columns: minmax(0, 1fr) auto;
3607
+ gap: 1rem;
3608
+ padding: 1rem 1rem 0.92rem;
3609
+ }
3610
+ .willa-prose-web-embed-copy {
3611
+ min-width: 0;
3612
+ }
3613
+ .willa-prose-web-embed-kicker {
3614
+ display: inline-flex;
3615
+ align-items: center;
3616
+ gap: 0.42rem;
3617
+ color: var(--willa-text-faint);
3618
+ font-size: 0.78rem;
3619
+ font-weight: 650;
3620
+ line-height: 1.4;
3621
+ }
3622
+ .willa-prose-web-embed-icon {
3623
+ width: 0.94rem;
3624
+ height: 0.94rem;
3625
+ }
3626
+ .willa-prose-web-embed-title {
3627
+ display: block;
3628
+ margin-top: 0.32rem;
3629
+ color: var(--willa-text-strong);
3630
+ font-family: var(--willa-title-font);
3631
+ font-size: 1.06rem;
3632
+ font-weight: 650;
3633
+ line-height: 1.42;
3634
+ }
3635
+ .willa-prose-web-embed-title-link {
3636
+ text-decoration: none;
3637
+ }
3638
+ .willa-prose-web-embed-title-link:hover {
3639
+ color: var(--willa-web-embed-title-hover);
3640
+ }
3641
+ .willa-prose-web-embed-description {
3642
+ margin: 0.46rem 0 0;
3643
+ color: var(--willa-text-soft);
3644
+ font-size: 0.9rem;
3645
+ font-weight: 500;
3646
+ line-height: 1.68;
3647
+ }
3648
+ .willa-prose-web-embed-external {
3649
+ display: inline-flex;
3650
+ width: 2rem;
3651
+ height: 2rem;
3652
+ align-items: center;
3653
+ justify-content: center;
3654
+ border-radius: 999px;
3655
+ color: var(--willa-text-faint);
3656
+ text-decoration: none;
3657
+ transition:
3658
+ background-color 180ms ease,
3659
+ color 180ms ease;
3660
+ }
3661
+ .willa-prose-web-embed-external:hover {
3662
+ background: var(--willa-web-embed-hover-bg);
3663
+ color: var(--willa-text-strong);
3664
+ }
3665
+ .willa-prose-web-embed-frame-shell {
3666
+ --willa-web-embed-height: 420px;
3667
+ position: relative;
3668
+ height: var(--willa-web-embed-height);
3669
+ border-top: 1px solid var(--willa-line);
3670
+ background: var(--willa-web-embed-frame-bg);
3671
+ }
3672
+ .willa-prose-web-embed-frame {
3673
+ display: block;
3674
+ width: 100%;
3675
+ height: 100%;
3676
+ border: 0;
3677
+ background: var(--willa-web-embed-iframe-bg);
3678
+ }
3679
+ @media (max-width: 767px) {
3680
+ .willa-prose-web-embed-header {
3681
+ gap: 0.8rem;
3682
+ padding: 0.92rem 0.92rem 0.86rem;
3683
+ }
3684
+
3685
+ .willa-prose-web-embed-frame-shell {
3686
+ --willa-web-embed-height: 360px;
3687
+ }
3688
+ }
3689
+ .willa-prose-x-post-embed {
3690
+ margin: 0 0 1.35rem;
3691
+ display: block;
3692
+ }
3693
+ .willa-prose-x-post-embed-widget [twdiv="yes"] {
3694
+ display: flex !important;
3695
+ justify-content: center !important;
3696
+ }
3697
+ .willa-prose-x-post-embed-loading,
3698
+ .willa-prose-x-post-embed-error {
3699
+ display: inline-flex;
3700
+ justify-content: center;
3701
+ align-items: center;
3702
+ width: 100%;
3703
+ min-height: 220px;
3704
+ padding: 1rem 1.2rem;
3705
+ color: var(--willa-text-faint);
3706
+ font-size: 0.9rem;
3707
+ text-align: center;
3708
+ }
3709
+ .willa-prose-x-post-embed-loading {
3710
+ position: relative;
3711
+ }
3712
+ .willa-prose-x-post-embed-loading-placeholder {
3713
+ width: min(100%, 520px);
3714
+ }
3715
+ .willa-prose-x-post-embed-loading .willa-prose-skeleton-line {
3716
+ height: 12px;
3717
+ border-radius: 999px;
3718
+ }
3719
+ .willa-prose-x-post-embed-widget .twitter-tweet.twitter-tweet-rendered {
3720
+ border-radius: 13px !important;
3721
+ overflow: hidden !important;
3722
+ }
3723
+ @media (max-width: 767px) {
3724
+ .willa-prose-x-post-embed-widget {
3725
+ width: 100%;
3726
+ }
3727
+
3728
+ .willa-prose-x-post-embed-widget > div {
3729
+ width: 100% !important;
3730
+ }
3731
+ }