@haklex/rich-editor 0.0.44 → 0.0.45

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.
@@ -12,7 +12,7 @@ import { ListPlugin } from "@lexical/react/LexicalListPlugin";
12
12
  import { RichTextPlugin } from "@lexical/react/LexicalRichTextPlugin";
13
13
  import { TabIndentationPlugin } from "@lexical/react/LexicalTabIndentationPlugin";
14
14
  import { TablePlugin } from "@lexical/react/LexicalTablePlugin";
15
- import { a0 as $isAlertQuoteNode, d as RendererWrapper, a1 as AlertRenderer, a2 as SpoilerNode, V as MentionNode, a3 as FootnoteNode, Q as KaTeXInlineNode, a4 as AlertQuoteNode, f as editorTheme, a5 as $isBannerNode, a6 as BannerRenderer, a7 as BannerNode, a8 as normalizeBannerType, a9 as $isCodeBlockNode, aa as CodeBlockRenderer, ab as CodeBlockNode, i as useFootnoteDefinitions, K as FootnoteSectionNode, w as $isGridContainerNode, M as GridContainerNode, b as builtinNodes, P as KaTeXBlockNode, O as ImageNode, ac as VideoNode, T as LinkCardNode, ad as DetailsNode, W as MermaidNode, Y as RubyNode, F as FootnoteDefinitionsProvider, p as $createImageNode, Z as computeImageMeta, X as OPEN_IMAGE_UPLOAD_DIALOG_COMMAND, ae as $createKaTeXInlineNode, af as $createKaTeXBlockNode, ag as $createDetailsNode, ah as $createFootnoteNode, v as $isFootnoteSectionNode, $ as $createFootnoteSectionNode, r as $createMentionNode, g as extractTextContent, t as $createRubyNode, ai as $createSpoilerNode, s as $createMermaidNode, C as ColorSchemeProvider, R as RendererConfigProvider } from "./theme-CYXOCE-K.js";
15
+ import { a2 as $isAlertQuoteNode, d as RendererWrapper, a3 as AlertRenderer, a4 as SpoilerNode, X as MentionNode, a5 as FootnoteNode, T as KaTeXInlineNode, a6 as AlertQuoteNode, f as editorTheme, a7 as $isBannerNode, a8 as BannerRenderer, a9 as BannerNode, aa as normalizeBannerType, ab as $isCodeBlockNode, ac as CodeBlockRenderer, ad as CodeBlockNode, j as useFootnoteDefinitions, M as FootnoteSectionNode, y as $isGridContainerNode, P as GridContainerNode, b as builtinNodes, S as KaTeXBlockNode, Q as ImageNode, ae as VideoNode, V as LinkCardNode, af as DetailsNode, Y as MermaidNode, _ as RubyNode, F as FootnoteDefinitionsProvider, r as $createImageNode, a0 as computeImageMeta, Z as OPEN_IMAGE_UPLOAD_DIALOG_COMMAND, ag as $createKaTeXInlineNode, ah as $createKaTeXBlockNode, g as getHostname, p as probeFavicon, ai as $createDetailsNode, aj as $createFootnoteNode, x as $isFootnoteSectionNode, $ as $createFootnoteSectionNode, t as $createMentionNode, h as extractTextContent, w as $createRubyNode, ak as $createSpoilerNode, v as $createMermaidNode, C as ColorSchemeProvider, R as RendererConfigProvider } from "./favicon-BSvQNu9R.js";
16
16
  import { $getNodeByKey, KEY_ENTER_COMMAND, COMMAND_PRIORITY_CRITICAL, KEY_ARROW_DOWN_COMMAND, COMMAND_PRIORITY_HIGH, $getRoot, $createParagraphNode, $isParagraphNode, $getSelection, $isRangeSelection, $insertNodes, createEditor, $isElementNode, $isDecoratorNode, $createNodeSelection, $setSelection, $nodesOfType, createCommand, COMMAND_PRIORITY_EDITOR, $isRootNode, $isNodeSelection, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, KEY_ARROW_UP_COMMAND, $isTextNode, createState, $getState, $addUpdateTag, $setState, $parseSerializedNode, PASTE_COMMAND, $createTextNode, $createLineBreakNode } from "lexical";
17
17
  import { Info, Lightbulb, TriangleAlert, Flag, LayoutGrid, Plus, Minus, Check, Upload, Link2 } from "lucide-react";
18
18
  import { useCallback, useEffect, createElement, useState, createContext, use, useRef, useMemo } from "react";
@@ -2083,6 +2083,45 @@ function KaTeXPlugin() {
2083
2083
  }, [editor]);
2084
2084
  return null;
2085
2085
  }
2086
+ function applyFavicon(dom, href) {
2087
+ if (dom.dataset.faviconHref === href) return;
2088
+ dom.dataset.faviconHref = href;
2089
+ const hostname = getHostname(href);
2090
+ if (!hostname) return;
2091
+ probeFavicon(hostname).then((faviconUrl) => {
2092
+ if (faviconUrl) {
2093
+ dom.style.setProperty("--rc-link-favicon", `url(${faviconUrl})`);
2094
+ dom.dataset.favicon = "loaded";
2095
+ }
2096
+ });
2097
+ }
2098
+ function LinkFaviconPlugin() {
2099
+ const [editor] = useLexicalComposerContext();
2100
+ useEffect(() => {
2101
+ const handleMutations = (mutations) => {
2102
+ for (const [nodeKey, mutation] of mutations) {
2103
+ if (mutation === "destroyed") continue;
2104
+ const dom = editor.getElementByKey(nodeKey);
2105
+ if (!dom) continue;
2106
+ const href = dom.getAttribute("href");
2107
+ if (href) applyFavicon(dom, href);
2108
+ }
2109
+ };
2110
+ const unregisterLink = editor.registerMutationListener(
2111
+ LinkNode,
2112
+ handleMutations
2113
+ );
2114
+ const unregisterAutoLink = editor.registerMutationListener(
2115
+ AutoLinkNode,
2116
+ handleMutations
2117
+ );
2118
+ return () => {
2119
+ unregisterLink();
2120
+ unregisterAutoLink();
2121
+ };
2122
+ }, [editor]);
2123
+ return null;
2124
+ }
2086
2125
  const ALERT_TYPE_MAP = {
2087
2126
  NOTE: "note",
2088
2127
  TIP: "tip",
@@ -2555,6 +2594,7 @@ function RichEditor({
2555
2594
  /* @__PURE__ */ jsx(CheckListPlugin, {}),
2556
2595
  /* @__PURE__ */ jsx(BlockExitPlugin, {}),
2557
2596
  /* @__PURE__ */ jsx(AutoLinkPlugin, {}),
2597
+ /* @__PURE__ */ jsx(LinkFaviconPlugin, {}),
2558
2598
  /* @__PURE__ */ jsx(BlockIdPlugin, {}),
2559
2599
  /* @__PURE__ */ jsx(EditorRefPlugin, { onEditorReady }),
2560
2600
  autoFocus && /* @__PURE__ */ jsx(AutoFocusPlugin, {}),
@@ -0,0 +1,4 @@
1
+ export declare function LinkFavicon({ href }: {
2
+ href: string;
3
+ }): import("react").JSX.Element | null;
4
+ //# sourceMappingURL=LinkFavicon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkFavicon.d.ts","sourceRoot":"","sources":["../../src/components/LinkFavicon.tsx"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,sCA4BrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"RichEditor.d.ts","sourceRoot":"","sources":["../../src/components/RichEditor.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI/C,wBAAgB,UAAU,CAAC,EACzB,YAAY,EACZ,QAAQ,EACR,OAAmB,EACnB,KAAe,EACf,WAAkC,EAClC,QAAQ,EACR,SAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,OAAO,EACP,aAAa,EACb,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,QAAQ,GACT,EAAE,eAAe,+BA2EjB"}
1
+ {"version":3,"file":"RichEditor.d.ts","sourceRoot":"","sources":["../../src/components/RichEditor.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI/C,wBAAgB,UAAU,CAAC,EACzB,YAAY,EACZ,QAAQ,EACR,OAAmB,EACnB,KAAe,EACf,WAAkC,EAClC,QAAQ,EACR,SAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,OAAO,EACP,aAAa,EACb,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,QAAQ,GACT,EAAE,eAAe,+BA4EjB"}
package/dist/editor.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { R, a, c, g, s } from "./RichEditor-BAg5icdE.js";
2
- import { a as a2, b, c as c2 } from "./theme-CYXOCE-K.js";
1
+ import { R, a, c, g, s } from "./RichEditor-aTCMdx5E.js";
2
+ import { a as a2, b, c as c2 } from "./favicon-BSvQNu9R.js";
3
3
  export {
4
4
  R as RichEditor,
5
5
  a as allEditNodes,
@@ -2338,78 +2338,119 @@ const editorTheme = {
2338
2338
  /** Used by @lexical/extension HorizontalRuleNode */
2339
2339
  hr: "rich-hr"
2340
2340
  };
2341
+ const FAVICON_VARIANTS = [
2342
+ "/favicon.ico",
2343
+ "/favicon.png",
2344
+ "/favicon.svg",
2345
+ "/apple-touch-icon.png",
2346
+ "/apple-touch-icon-precomposed.png"
2347
+ ];
2348
+ const faviconCache = /* @__PURE__ */ new Map();
2349
+ function getHostname(href) {
2350
+ try {
2351
+ const url = new URL(href);
2352
+ if (url.protocol !== "http:" && url.protocol !== "https:") return null;
2353
+ return url.hostname;
2354
+ } catch {
2355
+ return null;
2356
+ }
2357
+ }
2358
+ function probeImage(url) {
2359
+ return new Promise((resolve) => {
2360
+ const img = new Image();
2361
+ img.onload = () => resolve(url);
2362
+ img.onerror = () => resolve(null);
2363
+ img.src = url;
2364
+ });
2365
+ }
2366
+ async function probeFavicon(hostname) {
2367
+ const cached = faviconCache.get(hostname);
2368
+ if (cached !== void 0) return cached;
2369
+ for (const variant of FAVICON_VARIANTS) {
2370
+ const url = `https://${hostname}${variant}`;
2371
+ const result = await probeImage(url);
2372
+ if (result) {
2373
+ faviconCache.set(hostname, result);
2374
+ return result;
2375
+ }
2376
+ }
2377
+ faviconCache.set(hostname, null);
2378
+ return null;
2379
+ }
2341
2380
  export {
2342
2381
  $createFootnoteSectionNode as $,
2343
- $isLinkCardNode as A,
2344
- $isMentionNode as B,
2382
+ $isKaTeXBlockNode as A,
2383
+ $isKaTeXInlineNode as B,
2345
2384
  ColorSchemeProvider as C,
2346
- $isMermaidNode as D,
2347
- $isRubyNode as E,
2385
+ $isLinkCardNode as D,
2386
+ $isMentionNode as E,
2348
2387
  FootnoteDefinitionsProvider as F,
2349
- ALERT_LABELS as G,
2350
- ALERT_TYPES as H,
2351
- BANNER_LABELS as I,
2352
- BANNER_TYPES as J,
2353
- FootnoteSectionNode as K,
2354
- FootnoteStaticRenderer as L,
2355
- GridContainerNode as M,
2388
+ $isMermaidNode as G,
2389
+ $isRubyNode as H,
2390
+ ALERT_LABELS as I,
2391
+ ALERT_TYPES as J,
2392
+ BANNER_LABELS as K,
2393
+ BANNER_TYPES as L,
2394
+ FootnoteSectionNode as M,
2356
2395
  NestedContentRendererProvider as N,
2357
- ImageNode as O,
2358
- KaTeXBlockNode as P,
2359
- KaTeXInlineNode as Q,
2396
+ FootnoteStaticRenderer as O,
2397
+ GridContainerNode as P,
2398
+ ImageNode as Q,
2360
2399
  RendererConfigProvider as R,
2361
- KaTeXRenderer as S,
2362
- LinkCardNode as T,
2363
- LinkCardRenderer as U,
2364
- MentionNode as V,
2365
- MermaidNode as W,
2366
- OPEN_IMAGE_UPLOAD_DIALOG_COMMAND as X,
2367
- RubyNode as Y,
2368
- computeImageMeta as Z,
2369
- decodeThumbHash as _,
2400
+ KaTeXBlockNode as S,
2401
+ KaTeXInlineNode as T,
2402
+ KaTeXRenderer as U,
2403
+ LinkCardNode as V,
2404
+ LinkCardRenderer as W,
2405
+ MentionNode as X,
2406
+ MermaidNode as Y,
2407
+ OPEN_IMAGE_UPLOAD_DIALOG_COMMAND as Z,
2408
+ RubyNode as _,
2370
2409
  allNodes as a,
2371
- $isAlertQuoteNode as a0,
2372
- AlertRenderer as a1,
2373
- SpoilerNode as a2,
2374
- FootnoteNode as a3,
2375
- AlertQuoteNode as a4,
2376
- $isBannerNode as a5,
2377
- BannerRenderer as a6,
2378
- BannerNode as a7,
2379
- normalizeBannerType as a8,
2380
- $isCodeBlockNode as a9,
2381
- CodeBlockRenderer as aa,
2382
- CodeBlockNode as ab,
2383
- VideoNode as ac,
2384
- DetailsNode as ad,
2385
- $createKaTeXInlineNode as ae,
2386
- $createKaTeXBlockNode as af,
2387
- $createDetailsNode as ag,
2388
- $createFootnoteNode as ah,
2389
- $createSpoilerNode as ai,
2410
+ computeImageMeta as a0,
2411
+ decodeThumbHash as a1,
2412
+ $isAlertQuoteNode as a2,
2413
+ AlertRenderer as a3,
2414
+ SpoilerNode as a4,
2415
+ FootnoteNode as a5,
2416
+ AlertQuoteNode as a6,
2417
+ $isBannerNode as a7,
2418
+ BannerRenderer as a8,
2419
+ BannerNode as a9,
2420
+ normalizeBannerType as aa,
2421
+ $isCodeBlockNode as ab,
2422
+ CodeBlockRenderer as ac,
2423
+ CodeBlockNode as ad,
2424
+ VideoNode as ae,
2425
+ DetailsNode as af,
2426
+ $createKaTeXInlineNode as ag,
2427
+ $createKaTeXBlockNode as ah,
2428
+ $createDetailsNode as ai,
2429
+ $createFootnoteNode as aj,
2430
+ $createSpoilerNode as ak,
2390
2431
  builtinNodes as b,
2391
2432
  customNodes as c,
2392
2433
  RendererWrapper as d,
2393
2434
  createRendererDecoration as e,
2394
2435
  editorTheme as f,
2395
- extractTextContent as g,
2396
- useFootnoteContent as h,
2397
- useFootnoteDefinitions as i,
2398
- useFootnoteDisplayNumber as j,
2399
- useNestedContentRenderer as k,
2400
- useRendererConfig as l,
2401
- useRendererMode as m,
2402
- useVariant as n,
2403
- $createGridContainerNode as o,
2404
- $createImageNode as p,
2405
- $createLinkCardNode as q,
2406
- $createMentionNode as r,
2407
- $createMermaidNode as s,
2408
- $createRubyNode as t,
2436
+ getHostname as g,
2437
+ extractTextContent as h,
2438
+ useFootnoteContent as i,
2439
+ useFootnoteDefinitions as j,
2440
+ useFootnoteDisplayNumber as k,
2441
+ useNestedContentRenderer as l,
2442
+ useRendererConfig as m,
2443
+ useRendererMode as n,
2444
+ useVariant as o,
2445
+ probeFavicon as p,
2446
+ $createGridContainerNode as q,
2447
+ $createImageNode as r,
2448
+ $createLinkCardNode as s,
2449
+ $createMentionNode as t,
2409
2450
  useColorScheme as u,
2410
- $isFootnoteSectionNode as v,
2411
- $isGridContainerNode as w,
2412
- $isImageNode as x,
2413
- $isKaTeXBlockNode as y,
2414
- $isKaTeXInlineNode as z
2451
+ $createMermaidNode as v,
2452
+ $createRubyNode as w,
2453
+ $isFootnoteSectionNode as x,
2454
+ $isGridContainerNode as y,
2455
+ $isImageNode as z
2415
2456
  };
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { b as blockIdState } from "./RichEditor-BAg5icdE.js";
2
- import { A, F, d, I, e, f, h, i, N, R, a, c, j, g, s, u } from "./RichEditor-BAg5icdE.js";
3
- import { h as useFootnoteContent, j as useFootnoteDisplayNumber } from "./theme-CYXOCE-K.js";
4
- import { $, o, p, q, r, s as s2, t, v, w, x, y, z, A as A2, B, D, E, G, H, I as I2, J, C, F as F2, K, L, M, O, P, Q, S, T, U, V, W, N as N2, X, Y, a as a2, b, Z, e as e2, c as c2, _, f as f2, g as g2, u as u2, i as i2, k, l, m, n } from "./theme-CYXOCE-K.js";
5
- import { a as a3, c as c3, g as g3, n as n2 } from "./utils-fpeaZV1R.js";
1
+ import { b as blockIdState } from "./RichEditor-aTCMdx5E.js";
2
+ import { A, F, d, I, e, f, h, i, N, R, a, c, j, g, s, u } from "./RichEditor-aTCMdx5E.js";
3
+ import { i as useFootnoteContent, k as useFootnoteDisplayNumber } from "./favicon-BSvQNu9R.js";
4
+ import { $, q, r, s as s2, t, v, w, x, y, z, A as A2, B, D, E, G, H, I as I2, J, K, L, C, F as F2, M, O, P, Q, S, T, U, V, W, X, Y, N as N2, Z, _, a as a2, b, a0, e as e2, c as c2, a1, f as f2, h as h2, u as u2, j as j2, l, m, n, o } from "./favicon-BSvQNu9R.js";
5
+ import { a as a3, c as c3, g as g2, n as n2 } from "./utils-fpeaZV1R.js";
6
6
  import { r as r2 } from "./shared.css-BqX4HjVE.js";
7
7
  import { articleTheme, commentTheme, noteTheme, vars } from "@haklex/rich-style-token";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -56,8 +56,8 @@ function computeBlockFingerprint(block) {
56
56
  const text = block.getTextContent();
57
57
  const input = text.slice(0, 200) + String(text.length);
58
58
  let hash = 5381;
59
- for (let i3 = 0; i3 < input.length; i3++) {
60
- hash = (hash << 5) + hash + (input.codePointAt(i3) ?? 0) | 0;
59
+ for (let i2 = 0; i2 < input.length; i2++) {
60
+ hash = (hash << 5) + hash + (input.codePointAt(i2) ?? 0) | 0;
61
61
  }
62
62
  return (hash >>> 0).toString(16);
63
63
  }
@@ -209,52 +209,52 @@ function buildRangeAnchor(editor) {
209
209
  }
210
210
  export {
211
211
  $ as $createFootnoteSectionNode,
212
- o as $createGridContainerNode,
213
- p as $createImageNode,
214
- q as $createLinkCardNode,
215
- r as $createMentionNode,
216
- s2 as $createMermaidNode,
217
- t as $createRubyNode,
218
- v as $isFootnoteSectionNode,
219
- w as $isGridContainerNode,
220
- x as $isImageNode,
221
- y as $isKaTeXBlockNode,
222
- z as $isKaTeXInlineNode,
223
- A2 as $isLinkCardNode,
224
- B as $isMentionNode,
225
- D as $isMermaidNode,
226
- E as $isRubyNode,
227
- G as ALERT_LABELS,
228
- H as ALERT_TYPES,
212
+ q as $createGridContainerNode,
213
+ r as $createImageNode,
214
+ s2 as $createLinkCardNode,
215
+ t as $createMentionNode,
216
+ v as $createMermaidNode,
217
+ w as $createRubyNode,
218
+ x as $isFootnoteSectionNode,
219
+ y as $isGridContainerNode,
220
+ z as $isImageNode,
221
+ A2 as $isKaTeXBlockNode,
222
+ B as $isKaTeXInlineNode,
223
+ D as $isLinkCardNode,
224
+ E as $isMentionNode,
225
+ G as $isMermaidNode,
226
+ H as $isRubyNode,
227
+ I2 as ALERT_LABELS,
228
+ J as ALERT_TYPES,
229
229
  A as ALL_TRANSFORMERS,
230
- I2 as BANNER_LABELS,
231
- J as BANNER_TYPES,
230
+ K as BANNER_LABELS,
231
+ L as BANNER_TYPES,
232
232
  C as ColorSchemeProvider,
233
233
  F2 as FootnoteDefinitionsProvider,
234
234
  F as FootnotePlugin,
235
235
  FootnoteRenderer,
236
236
  d as FootnoteSectionEditNode,
237
- K as FootnoteSectionNode,
238
- L as FootnoteStaticRenderer,
239
- M as GridContainerNode,
237
+ M as FootnoteSectionNode,
238
+ O as FootnoteStaticRenderer,
239
+ P as GridContainerNode,
240
240
  I as INSERT_ALERT_COMMAND,
241
241
  e as INSERT_IMAGE_COMMAND,
242
242
  f as INSERT_KATEX_BLOCK_COMMAND,
243
243
  h as INSERT_KATEX_INLINE_COMMAND,
244
244
  i as INSERT_MERMAID_COMMAND,
245
- O as ImageNode,
246
- P as KaTeXBlockNode,
247
- Q as KaTeXInlineNode,
248
- S as KaTeXRenderer,
249
- T as LinkCardNode,
250
- U as LinkCardRenderer,
251
- V as MentionNode,
252
- W as MermaidNode,
245
+ Q as ImageNode,
246
+ S as KaTeXBlockNode,
247
+ T as KaTeXInlineNode,
248
+ U as KaTeXRenderer,
249
+ V as LinkCardNode,
250
+ W as LinkCardRenderer,
251
+ X as MentionNode,
252
+ Y as MermaidNode,
253
253
  N as NESTED_EDITOR_NODES,
254
254
  N2 as NestedContentRendererProvider,
255
- X as OPEN_IMAGE_UPLOAD_DIALOG_COMMAND,
255
+ Z as OPEN_IMAGE_UPLOAD_DIALOG_COMMAND,
256
256
  R as RichEditor,
257
- Y as RubyNode,
257
+ _ as RubyNode,
258
258
  R2 as RubyRenderer,
259
259
  a as allEditNodes,
260
260
  a2 as allNodes,
@@ -266,28 +266,28 @@ export {
266
266
  b as builtinNodes,
267
267
  commentTheme,
268
268
  c3 as commentVariant,
269
- Z as computeImageMeta,
269
+ a0 as computeImageMeta,
270
270
  e2 as createRendererDecoration,
271
271
  c as customEditNodes,
272
272
  c2 as customNodes,
273
- _ as decodeThumbHash,
273
+ a1 as decodeThumbHash,
274
274
  j as defaultImageUpload,
275
275
  f2 as editorTheme,
276
- g2 as extractTextContent,
276
+ h2 as extractTextContent,
277
277
  g as getResolvedEditNodes,
278
- g3 as getVariantClass,
278
+ g2 as getVariantClass,
279
279
  noteTheme,
280
280
  n2 as noteVariant,
281
281
  r2 as richContent,
282
282
  s as setResolvedEditNodes,
283
283
  u2 as useColorScheme,
284
284
  useFootnoteContent,
285
- i2 as useFootnoteDefinitions,
285
+ j2 as useFootnoteDefinitions,
286
286
  useFootnoteDisplayNumber,
287
287
  u as useImageUpload,
288
- k as useNestedContentRenderer,
289
- l as useRendererConfig,
290
- m as useRendererMode,
291
- n as useVariant,
288
+ l as useNestedContentRenderer,
289
+ m as useRendererConfig,
290
+ n as useRendererMode,
291
+ o as useVariant,
292
292
  vars
293
293
  };
@@ -0,0 +1,2 @@
1
+ export declare function LinkFaviconPlugin(): null;
2
+ //# sourceMappingURL=LinkFaviconPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkFaviconPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/LinkFaviconPlugin.tsx"],"names":[],"mappings":"AAqBA,wBAAgB,iBAAiB,SAgChC"}
@@ -1 +1 @@
1
- :root{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}:root.dark{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._13h71jk0{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._13h71jk1{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.8;--rc-line-height-tight: 1.4;--rc-font-family: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._13h71jk2{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #a1a1aa;--rc-quote-bg: #fafafa;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: none;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 2px;--rc-space-sm: 4px;--rc-space-md: 10px;--rc-space-lg: 16px;--rc-space-xl: 20px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 14px;--rc-font-size-small: 12px;--rc-line-height: 1.5;--rc-line-height-tight: 1.3;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 3px;--rc-radius-md: 6px;--rc-radius-lg: 8px}.dark ._13h71jk0,[data-theme=dark] ._13h71jk0,.dark._13h71jk0,[data-theme=dark]._13h71jk0,.dark ._13h71jk1,[data-theme=dark] ._13h71jk1,.dark._13h71jk1,[data-theme=dark]._13h71jk1,.dark ._13h71jk2,[data-theme=dark] ._13h71jk2,.dark._13h71jk2,[data-theme=dark]._13h71jk2{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4)}@keyframes r8uj4t1{to{--rc-hl-highlighted: 1}}@keyframes r8uj4t2{0%{background-color:#ef44443d}to{background-color:transparent}}.r8uj4t0{font-family:var(--rc-font-family);font-size:var(--rc-font-size-base);line-height:var(--rc-line-height);color:var(--rc-text);word-wrap:break-word;overflow-wrap:break-word}.r8uj4t0 .rich-paragraph{margin:0 0 1em;line-height:var(--rc-line-height)}.r8uj4t0 .rich-text-bold{font-weight:700}.r8uj4t0 .rich-text-italic{font-style:italic}.r8uj4t0 .rich-text-underline{text-decoration:underline}.r8uj4t0 .rich-text-strikethrough{text-decoration:line-through}.r8uj4t0 .rich-text-superscript{vertical-align:super;font-size:.8em}.r8uj4t0 .rich-text-subscript{vertical-align:sub;font-size:.8em}.r8uj4t0 .rich-text-code{font-family:var(--rc-font-mono);font-size:.9em;background-color:var(--rc-code-bg);color:var(--rc-code-text);padding:2px 6px;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border)}.r8uj4t0 mark{background:transparent}.r8uj4t0 .rich-text-highlight{--rc-hl-lightness: .3;--rc-hl-highlighted: 1;--rc-hl-color: oklch(from var(--rc-accent) l c h / var(--rc-hl-lightness));background:linear-gradient(120deg,var(--rc-hl-color, lightblue) 50%,transparent 50%) 110% 0 / 200% 100% no-repeat;background-position:calc((1 - var(--rc-hl-highlighted)) * 110%) 0;color:var(--rc-text);transition:background-position 1s}[contenteditable=true] .rich-text-highlight{--rc-hl-highlighted: 1;animation:none}[data-theme=dark] .r8uj4t0 .rich-text-highlight{--rc-hl-lightness: .35}.r8uj4t0 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6){position:relative}.r8uj4t0 .rich-heading-anchor{position:absolute;left:-1.25em;top:0;bottom:0;display:flex;align-items:center;text-decoration:none;color:var(--rc-text-secondary);opacity:0;transition:opacity .15s ease;font-size:.8em}.r8uj4t0 .rich-heading-anchor:before{content:"#"}.r8uj4t0 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor{opacity:.5}.r8uj4t0 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor:hover{opacity:1}.r8uj4t0 .rich-heading-h1{font-size:2em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.5em;margin-bottom:.5em}.r8uj4t0 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.4em;margin-bottom:.45em}.r8uj4t0 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.3em;margin-bottom:.4em}.r8uj4t0 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.2em;margin-bottom:.35em}.r8uj4t0 .rich-heading-h5{font-size:1em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.1em;margin-bottom:.3em}.r8uj4t0 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1em;margin-bottom:.25em;color:var(--rc-text)}.r8uj4t0 .rich-link{color:var(--rc-link);text-decoration:none;transition:color .2s ease}.r8uj4t0 .rich-link:hover{text-decoration:underline}.r8uj4t0 .rich-list-ol{list-style-type:decimal;padding-left:var(--rc-space-lg);margin-bottom:1em}.r8uj4t0 .rich-list-ul{list-style-type:disc;padding-left:var(--rc-space-lg);margin-bottom:1em}.r8uj4t0 .rich-list-item{margin-bottom:.25em}.r8uj4t0 .rich-list-nested-item{list-style-type:none}.r8uj4t0 .rich-list-nested-item .rich-list-ol{list-style-type:lower-alpha}.r8uj4t0 .rich-list-nested-item .rich-list-ul{list-style-type:circle}.r8uj4t0 .rich-checklist{list-style-type:none;padding-left:0}.r8uj4t0 .rich-list-item.rich-list-item-checked,.r8uj4t0 .rich-list-item.rich-list-item-unchecked{position:relative;padding-left:1.9em;list-style-type:none;outline:none}.r8uj4t0 .rich-list-item.rich-list-item-unchecked:before,.r8uj4t0 .rich-list-item.rich-list-item-checked:before{content:"";width:16px;height:16px;border:1px solid var(--rc-border);border-radius:var(--rc-radius-sm);position:absolute;left:0;top:calc((1lh - 16px)/2);box-sizing:border-box}.r8uj4t0 .rich-list-item.rich-list-item-checked:before{background-color:var(--rc-accent);border-color:var(--rc-accent)}.r8uj4t0 .rich-list-item.rich-list-item-checked:after{content:"";position:absolute;left:5px;top:calc((1lh - 16px)/2 + 5px);width:6px;height:3px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg);box-sizing:border-box}.r8uj4t0 .rich-list-item-checked{text-decoration:line-through;color:var(--rc-text-secondary)}.r8uj4t0 .rich-quote{border-left:4px solid var(--rc-quote-border);background-color:var(--rc-quote-bg);margin:var(--rc-space-md) 0;padding:var(--rc-space-sm) var(--rc-space-md);font-style:italic;color:var(--rc-text-secondary);border-radius:0 var(--rc-radius-sm) var(--rc-radius-sm) 0}.r8uj4t0 .rich-quote>.rich-paragraph:first-child{margin-top:0}.r8uj4t0 .rich-quote>.rich-paragraph:last-child{margin-bottom:0}.r8uj4t0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}.r8uj4t0 .rich-table-scrollable-wrapper{overflow-x:auto}.r8uj4t0 .rich-table{width:100%;border-collapse:separate;border-spacing:0;margin:var(--rc-space-lg) 0;font-size:var(--rc-font-size-small);border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);overflow:hidden}.r8uj4t0 .rich-table-cell{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:1.25em var(--rc-space-lg);text-align:left;vertical-align:middle;line-height:1.5}.r8uj4t0 .rich-table-cell:last-child{border-right:none}.r8uj4t0 .rich-table tbody tr:last-child .rich-table-cell{border-bottom:none}.r8uj4t0 .rich-table-cell .rich-paragraph{margin:0;padding:0;line-height:inherit}.r8uj4t0 .rich-table-cell>:first-child{margin-top:0}.r8uj4t0 .rich-table-cell>:last-child{margin-bottom:0}.r8uj4t0 .rich-table-cell-header{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:var(--rc-space-md) var(--rc-space-lg);text-align:left;font-weight:600;font-size:.75em;text-transform:uppercase;letter-spacing:.05em;color:var(--rc-text-secondary);background-color:var(--rc-bg-secondary);vertical-align:middle;line-height:1.5;position:sticky;top:0;z-index:1}.r8uj4t0 .rich-table-cell-header:last-child{border-right:none}.r8uj4t0 .rich-table-cell-header .rich-paragraph{margin:0;padding:0;line-height:inherit}.r8uj4t0 .rich-table-cell-header>:first-child{margin-top:0}.r8uj4t0 .rich-table-cell-header>:last-child{margin-bottom:0}.r8uj4t0 img{max-width:100%;height:auto;border-radius:var(--rc-radius-md)}.r8uj4t0 .rich-spoiler{background-color:var(--rc-text);color:transparent;border-radius:var(--rc-radius-sm);padding-inline:4px;cursor:pointer;transition:background-color .3s ease,color .3s ease;user-select:none}[contenteditable=true] .rich-spoiler{background-color:color-mix(in srgb,var(--rc-text) 30%,transparent);color:inherit;user-select:auto;cursor:text}.r8uj4t0 .rich-spoiler:hover,.r8uj4t0 .rich-spoiler-revealed{background-color:transparent;color:inherit;user-select:auto}.r8uj4t0 .rich-ruby{ruby-position:over;ruby-align:center}.r8uj4t0 .rich-ruby-rt{font-size:.58em;line-height:1;color:var(--rc-text-secondary);user-select:none}[contenteditable=true] .rich-ruby[data-ruby]{position:relative;display:inline-block;padding-top:.72em;line-height:1.2}[contenteditable=true] .rich-ruby[data-ruby]:before{content:attr(data-ruby);position:absolute;left:0;right:0;top:0;transform:translateY(-.68em);font-size:.58em;line-height:1;text-align:center;color:var(--rc-text-secondary);pointer-events:none;white-space:nowrap}.r8uj4t0 .rich-footnote{vertical-align:super;font-size:.8em}.r8uj4t0 .rich-footnote-ref{display:inline-flex;align-items:center;justify-content:center;min-width:1.5em;text-decoration:none;color:var(--rc-accent);background-color:var(--rc-accent-light);border-radius:999px;padding:0 .35em;line-height:1.45;font-weight:600;font-size:.82em;transition:filter .15s ease}.r8uj4t0 .rich-footnote-ref:hover{filter:brightness(.96)}.r8uj4t0 .rich-footnote-highlight{animation:r8uj4t2 1.2s ease-out}.r8uj4t0 .rich-footnote-ref-wrapper{position:relative;display:inline}.r8uj4t0 .rich-footnote-section{margin-top:var(--rc-space-lg)}.r8uj4t0 .rich-footnote-section-divider{border:none;border-top:1px solid var(--rc-border);margin:var(--rc-space-lg) 0 var(--rc-space-md)}.r8uj4t0 .rich-footnote-section-list{list-style-type:decimal;padding-left:var(--rc-space-lg);font-size:var(--rc-font-size-small);color:var(--rc-text-secondary);line-height:1.6}.r8uj4t0 .rich-footnote-section-item{margin-bottom:var(--rc-space-sm);padding-left:var(--rc-space-xs)}.r8uj4t0 .rich-footnote-back-ref{display:inline-flex;align-items:center;margin-left:var(--rc-space-xs);color:var(--rc-accent);text-decoration:none;font-size:.85em;transition:opacity .15s ease;font-family:var(--rc-font-mono)}.r8uj4t0 .rich-footnote-back-ref:hover{opacity:.7}.r8uj4t0 .rich-footnote-section-item-edit{display:flex;align-items:center;gap:var(--rc-space-sm);list-style-type:none}.r8uj4t0 .rich-footnote-section-item-num{flex-shrink:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-small);font-weight:600;min-width:1.5em}.r8uj4t0 .rich-footnote-section-item-input{flex:1;border:1px solid var(--rc-border);border-radius:var(--rc-radius-sm);padding:var(--rc-space-xs) var(--rc-space-sm);font-size:var(--rc-font-size-small);color:var(--rc-text);background-color:transparent;outline:none;transition:border-color .15s ease}.r8uj4t0 .rich-footnote-section-item-input:focus{border-color:var(--rc-accent)}.r8uj4t0 .rich-footnote-section-item-remove{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:none;color:var(--rc-text-secondary);cursor:pointer;border-radius:var(--rc-radius-sm);font-size:14px;transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-footnote-section-item-remove:hover{color:#ef4444;background-color:#ef44441a}.rich-drag-handle{position:absolute;display:flex;align-items:center;justify-content:center;width:20px;height:20px;cursor:grab;border-radius:var(--rc-radius-sm);color:var(--rc-text-secondary);opacity:.4;transition:opacity .15s ease,background-color .15s ease;z-index:10}.rich-drag-handle:hover{opacity:1;background-color:var(--rc-bg-secondary)}.rich-drag-handle:active{cursor:grabbing}.rich-drop-indicator{position:absolute;height:2px;background-color:var(--rc-accent);border-radius:1px;pointer-events:none;z-index:10}.r8uj4t0 .rich-alert{margin:2em 0;padding:0 1em;background-color:transparent;border:none;border-radius:0}.r8uj4t0>*:first-child,.r8uj4t0 .rich-editor__content>*:first-child{margin-top:0}.r8uj4t0>*:last-child,.r8uj4t0 .rich-editor__content>*:last-child{margin-bottom:0}@supports (animation-timeline: view()){.r8uj4t0 .rich-text-highlight{--rc-hl-highlighted: 0;animation:r8uj4t1 steps(1) both;animation-timeline:view();animation-range:entry 100% cover 10%}}.v10dui0{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.75;color:var(--rc-text)}.v10dui0 .rich-paragraph{margin-top:1.5em;margin-bottom:1.5em}.v10dui0 .rich-heading-h1{color:var(--rc-text);font-weight:800;font-size:3em;margin-top:0;margin-bottom:.8333333333333334em;line-height:1}.v10dui0 .rich-heading-h2{color:var(--rc-text);font-weight:700;font-size:1.875em;margin-top:1.8666666666666667em;margin-bottom:1.0666666666666667em;line-height:1.3333333}.v10dui0 .rich-heading-h3{color:var(--rc-text);font-weight:600;font-size:1.5em;margin-top:1.6666666666666667em;margin-bottom:.6666666666666666em;line-height:1.5}.v10dui0 .rich-heading-h4{color:var(--rc-text);font-weight:600;margin-top:2em;margin-bottom:.5em;line-height:1.5625}.v10dui0 .rich-heading-h2+*,.v10dui0 .rich-heading-h3+*,.v10dui0 .rich-heading-h4+*{margin-top:0}.v10dui0 .rich-quote{font-weight:500;font-style:italic;color:var(--rc-text);border-left-width:.25rem;border-left-style:solid;border-left-color:var(--rc-quote-border);margin-top:2.5em;margin-bottom:2.5em;padding-left:1.5em;background-color:transparent;border-radius:0;quotes:"“""”""‘""’"}.v10dui0 .rich-quote .rich-paragraph:first-of-type:before{content:open-quote}.v10dui0 .rich-quote .rich-paragraph:last-of-type:after{content:close-quote}.v10dui0 .rich-quote .rich-paragraph:first-child{margin-top:0}.v10dui0 .rich-quote .rich-paragraph:last-child{margin-bottom:0}.v10dui0 .rich-text-code{color:var(--rc-text);font-weight:600;font-size:.875em;background-color:var(--rc-code-bg);padding:.2em .4em;border-radius:var(--rc-radius-sm);font-family:var(--rc-font-mono)}.v10dui0 .rich-text-code:before,.v10dui0 .rich-text-code:after{content:"`";color:var(--rc-text-secondary);opacity:.5}.v10dui0 .rich-code-block{color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:.375rem;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.75}.v10dui0 .rich-code-block pre{padding:1em 1.5em;margin:0}.v10dui0 .rich-list-ul,.v10dui0 .rich-list-ol{margin-top:1.5em;margin-bottom:1.5em;padding-left:1.75em}.v10dui0 .rich-list-item{margin-top:.75em;margin-bottom:.75em;padding-left:.5em}.v10dui0 .rich-list-item .rich-paragraph{margin-top:1em;margin-bottom:1em}.v10dui0 .rich-list-item>.rich-paragraph:first-child{margin-top:1.5em}.v10dui0 .rich-list-item>.rich-paragraph:last-child{margin-bottom:1.5em}.v10dui0 .rich-list-ul .rich-list-ul,.v10dui0 .rich-list-ul .rich-list-ol,.v10dui0 .rich-list-ol .rich-list-ul,.v10dui0 .rich-list-ol .rich-list-ol{margin-top:1em;margin-bottom:1em}.v10dui0 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.5}.v10dui0 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.v10dui0 .rich-image{margin-top:2em;margin-bottom:2em}.v10dui0 .rich-image>*{margin-top:0;margin-bottom:0}.v10dui0 .rich-image figcaption{color:var(--rc-text-secondary);font-size:.875em;line-height:1.5;margin-top:1em}.v10dui0 .rich-hr{border-color:var(--rc-hr-border);border-top-width:1px;width:60px;margin:3.5em auto}.v10dui0 .rich-hr+*{margin-top:0}.v10dui0 .rich-link{font-weight:500;text-decoration:underline}.v10dui0 .rich-banner,.v10dui0 .rich-code-snippet,.v10dui0 .rich-details{margin:2em 0}.v10dui0>*:first-child{margin-top:0}.v10dui0>*:last-child{margin-bottom:0}._14ko36c0{font-size:var(--rc-font-size-base);line-height:var(--rc-line-height)}._14ko36c0 .rich-paragraph{margin-bottom:.6em}._14ko36c0 .rich-heading-h1{font-size:1.35em;font-weight:700;margin-top:.8em;margin-bottom:.3em}._14ko36c0 .rich-heading-h2{font-size:1.2em;font-weight:700;margin-top:.7em;margin-bottom:.25em}._14ko36c0 .rich-heading-h3{font-size:1.1em;font-weight:600;margin-top:.6em;margin-bottom:.2em}._14ko36c0 .rich-heading-h4{font-size:1em;font-weight:600;margin-top:.5em;margin-bottom:.15em}._14ko36c0 .rich-heading-h5{font-size:.9em;font-weight:600;margin-top:.45em;margin-bottom:.1em}._14ko36c0 .rich-heading-h6{font-size:.85em;font-weight:600;margin-top:.4em;margin-bottom:.1em}._14ko36c0 .rich-quote{border-left-width:3px;padding:var(--rc-space-sm) var(--rc-space-md);margin:var(--rc-space-sm) 0;font-size:.95em}._14ko36c0 .rich-list-ol,._14ko36c0 .rich-list-ul{margin-bottom:.6em;padding-left:var(--rc-space-md)}._14ko36c0 .rich-list-item{margin-bottom:.1em}._14ko36c0 .rich-code-block{margin:var(--rc-space-sm) 0;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-small)}._14ko36c0 .rich-code-block pre{padding:var(--rc-space-sm)}._14ko36c0 .line:before{display:none!important}._14ko36c0 .rich-table{margin:var(--rc-space-sm) 0;font-size:var(--rc-font-size-small)}._14ko36c0 .rich-table-cell,._14ko36c0 .rich-table-cell-header{padding:var(--rc-space-xs) var(--rc-space-sm)}._14ko36c0 .rich-image{margin:var(--rc-space-sm) 0}._14ko36c0 .rich-image figcaption{font-size:var(--rc-font-size-small)}._14ko36c0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}._14ko36c0 .rich-alert{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:var(--rc-space-lg);margin:var(--rc-space-sm) 0}._14ko36c0 .rich-katex-block{padding:var(--rc-space-sm) 0;margin:var(--rc-space-sm) 0}.ys4fw90{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.8;color:var(--rc-text)}.ys4fw90>.rich-paragraph,.ys4fw90 .rich-editor__content>.rich-paragraph,.ys4fw90 .rich-content__body>.rich-paragraph{margin-top:1.25em;margin-bottom:1.25em;line-height:1.8}.ys4fw90>.rich-paragraph:first-of-type,.ys4fw90 .rich-editor__content>.rich-paragraph:first-of-type,.ys4fw90 .rich-content__body>.rich-paragraph:first-of-type{margin-top:0;margin-bottom:2rem}.ys4fw90>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.ys4fw90 .rich-editor__content>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.ys4fw90 .rich-content__body>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child{margin-inline-start:2rem}.ys4fw90>.rich-paragraph:first-of-type:first-letter,.ys4fw90 .rich-content__body>.rich-paragraph:first-of-type:first-letter{float:left;font-size:2.4em;margin-right:.2em;line-height:1}.ys4fw90 .rich-editor__content>.rich-paragraph:first-of-type:first-letter{font-size:1.5em;font-weight:700;color:var(--rc-accent)}.ys4fw90>.rich-paragraph:last-child,.ys4fw90 .rich-editor__content>.rich-paragraph:last-child,.ys4fw90 .rich-content__body>.rich-paragraph:last-child{margin-bottom:0}.ys4fw90 .rich-text-bold{font-family:var(--rc-font-family);font-weight:600;color:var(--rc-text)}.ys4fw90 .rich-heading-h1{font-size:2.25em;font-weight:800;line-height:1.1111111;margin-top:0;margin-bottom:.8888889em;letter-spacing:-.025em;color:var(--rc-text)}.ys4fw90 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:1.3333333;margin-top:2em;margin-bottom:1em;letter-spacing:-.025em;color:var(--rc-text)}.ys4fw90 .rich-heading-h2+*{margin-top:0}.ys4fw90 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:1.6;margin-top:1.6em;margin-bottom:.6em;letter-spacing:-.025em;color:var(--rc-text)}.ys4fw90 .rich-heading-h3+*{margin-top:0}.ys4fw90 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.ys4fw90 .rich-heading-h4+*{margin-top:0}.ys4fw90 .rich-heading-h5{font-size:1em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.ys4fw90 .rich-heading-h5+*{margin-top:0}.ys4fw90 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text);text-transform:uppercase}.ys4fw90 .rich-heading-h6+*{margin-top:0}.ys4fw90 .rich-quote{font-style:normal;line-height:1.8;color:inherit;border-left:none;background-color:color-mix(in srgb,var(--rc-accent) 10%,transparent);margin-top:1.6em;margin-bottom:1.6em;margin-left:-1rem;margin-right:-1rem;padding:1em 2em;border-radius:0}.ys4fw90 .rich-quote .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.ys4fw90 .rich-link{font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}.ys4fw90 .rich-link:hover{text-decoration-thickness:2px}.ys4fw90 .rich-text-code{font-size:.875em;font-family:var(--rc-font-mono);font-weight:500;padding:.2em .4em;border-radius:var(--rc-radius-sm);background-color:var(--rc-code-bg)}.ys4fw90 .rich-list-ol,.ys4fw90 .rich-list-ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.ys4fw90 .rich-list-ol{list-style-type:decimal}.ys4fw90 .rich-list-ul{list-style-type:disc}.ys4fw90 .rich-list-item{margin-top:.5em;margin-bottom:.5em;padding-left:.375em}.ys4fw90 .rich-list-item::marker{color:var(--rc-text-secondary)}.ys4fw90 .rich-code-block{font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:var(--rc-radius-md);overflow-x:auto}.ys4fw90 .rich-code-block pre{padding:.8571429em 1.1428571em;margin:0}.ys4fw90 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.ys4fw90 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.ys4fw90 .rich-table .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.ys4fw90 .rich-image{margin-top:2em;margin-bottom:2em}.ys4fw90 .rich-image img{border-radius:var(--rc-radius-md)}.ys4fw90 .rich-image figcaption{font-size:.875em;line-height:1.4285714;margin-top:.8571429em;color:var(--rc-text-secondary);text-align:center}.ys4fw90 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);opacity:.2;margin-top:.5rem;margin-bottom:.5rem;width:60px;margin-left:auto;margin-right:auto}.ys4fw90 .rich-katex-block{margin-top:1.6em;margin-bottom:1.6em;overflow-x:auto;padding:1em 0}.ys4fw90 .rich-spoiler{border-radius:var(--rc-radius-sm);padding-inline:.25em}.ys4fw90>*:first-child{margin-top:0}.ys4fw90>*:last-child{margin-bottom:0}@keyframes _1x58dbf0{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes _1x58dbf6{to{transform:rotate(360deg)}}.rich-image-upload-dragging{position:relative;border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-accent) 6%,transparent)}.rich-image-upload-dragging .rich-editor__content{outline:2px dashed color-mix(in srgb,var(--rc-accent) 48%,transparent);outline-offset:-2px}._1x58dbf1{position:absolute;right:.75rem;bottom:.75rem;z-index:25;display:flex;flex-direction:column;align-items:flex-end;gap:.375rem;pointer-events:none}._1x58dbf2{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .625rem;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);background-color:color-mix(in srgb,var(--rc-bg) 95%,transparent);color:var(--rc-text);font-size:var(--rc-font-size-xs);line-height:1.2;box-shadow:var(--rc-shadow-top-bar);animation:_1x58dbf0 .12s ease-out}._1x58dbf4{border-color:color-mix(in srgb,var(--rc-accent) 35%,transparent)}._1x58dbf5{border-color:color-mix(in srgb,var(--rc-alert-caution) 45%,transparent);color:var(--rc-alert-caution)}._1x58dbf7{width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in srgb,var(--rc-text-secondary) 35%,transparent);border-top-color:color-mix(in srgb,var(--rc-text) 65%,transparent);animation:_1x58dbf6 .75s linear infinite}._1x58dbf8._1x58dbf8{padding:0;gap:0;width:min(560px,calc(100vw - 2rem));overflow:hidden}._1x58dbf9{padding:.875rem 1rem .75rem;border-bottom:1px solid var(--rc-border)}._1x58dbfa{font-size:var(--rc-font-size-md);font-weight:600;color:var(--rc-text)}._1x58dbfb{display:flex;flex-direction:column;gap:.875rem;padding:.875rem 1rem}._1x58dbfc{display:flex;align-items:center;gap:.5rem}._1x58dbfd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--rc-radius-md);border:1.5px dashed var(--rc-border);min-height:190px;padding:1.2rem;color:var(--rc-text-secondary);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,color .15s ease}._1x58dbfd:hover{border-color:color-mix(in srgb,var(--rc-accent) 35%,transparent);background-color:color-mix(in srgb,var(--rc-accent) 6%,transparent);color:var(--rc-text)}._1x58dbff{border-color:color-mix(in srgb,var(--rc-accent) 55%,transparent);background-color:color-mix(in srgb,var(--rc-accent) 8%,transparent);color:var(--rc-text);transform:scale(1.01)}._1x58dbfg{cursor:progress;opacity:.9}._1x58dbfh{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-text) 6%,transparent)}._1x58dbfi{font-size:var(--rc-font-size-sm);font-weight:600;color:var(--rc-text)}._1x58dbfj{font-size:var(--rc-font-size-xs);color:var(--rc-text-secondary);text-align:center}._1x58dbfk{display:none}._1x58dbfl{display:flex;flex-direction:column;align-items:center;gap:.5rem}._1x58dbfm{display:inline-flex;align-items:center;gap:.375rem;font-size:var(--rc-font-size-sm);color:var(--rc-text)}._1x58dbfn{display:flex;align-items:center;gap:.5rem}._1x58dbfo{width:100%;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);background-color:var(--rc-bg);color:var(--rc-text);height:34px;padding:0 .625rem;font-size:var(--rc-font-size-sm);outline:none;transition:border-color .15s ease}._1x58dbfo:focus{border-color:color-mix(in srgb,var(--rc-accent) 50%,transparent)}._1x58dbfo::placeholder{color:var(--rc-text-secondary)}._1x58dbfp{height:34px;border-radius:var(--rc-radius-sm);border:1px solid transparent;font-size:var(--rc-font-size-xs);font-weight:600;cursor:pointer;padding:0 .75rem;transition:background-color .15s ease,border-color .15s ease,color .15s ease}._1x58dbfq{background-color:var(--rc-text);color:var(--rc-bg)}._1x58dbfq:hover{background-color:color-mix(in srgb,var(--rc-text) 85%,transparent)}._1x58dbfq:disabled{opacity:.45;cursor:not-allowed}._1x58dbfr{border-color:var(--rc-border);background-color:var(--rc-bg);color:var(--rc-text-secondary)}._1x58dbfr:hover{color:var(--rc-text);background-color:color-mix(in srgb,var(--rc-text) 4%,transparent)}._1x58dbfr:disabled{opacity:.45;cursor:not-allowed}._1x58dbfs{border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:hidden;background-color:color-mix(in srgb,var(--rc-text) 2%,transparent)}._1x58dbft{display:block;width:100%;max-height:220px;object-fit:cover}._1x58dbfu{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--rc-font-size-xs);color:var(--rc-text-secondary)}._1x58dbfv{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-top:1px solid var(--rc-border);background-color:color-mix(in srgb,var(--rc-text) 2%,transparent);padding:.65rem 1rem}._1x58dbfw{display:flex;align-items:center;gap:.5rem}.r8uj4t0 .rich-katex-inline{display:inline;padding:0 2px;vertical-align:middle}.r8uj4t0 .rich-katex-block{display:block;text-align:center;padding:var(--rc-space-md) 0;overflow-x:auto;margin:var(--rc-space-md) 0}.r8uj4t0 .rich-katex-fallback{font-family:var(--rc-font-mono);font-size:.9em;color:var(--rc-code-text);background-color:var(--rc-code-bg);padding:2px 6px;border-radius:var(--rc-radius-sm)}.r8uj4t0 .rich-details{margin:var(--rc-space-md) 0;border:none;interpolate-size:allow-keywords}.r8uj4t0 .rich-details-summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:pointer;user-select:none;font-weight:500;font-size:.9375rem;line-height:1.5;padding:.75rem 0;color:var(--rc-text);list-style:none;transition:color .2s ease}.r8uj4t0 .rich-details-summary:hover{opacity:.8}.r8uj4t0 .rich-details-summary::-webkit-details-marker{display:none}.r8uj4t0 .rich-details-summary::marker{content:"";display:none}.r8uj4t0 .rich-details-summary-text{flex:1}.r8uj4t0 .rich-details-chevron{display:inline-flex;flex-shrink:0;color:var(--rc-text-secondary);transition:transform .35s cubic-bezier(.4,0,.2,1)}.r8uj4t0 .rich-details[open] .rich-details-chevron{transform:rotate(180deg)}.r8uj4t0 .rich-details::details-content{display:block;height:0;overflow:hidden;opacity:0;content-visibility:hidden;transition:height .4s cubic-bezier(.4,0,.2,1),opacity .4s cubic-bezier(.4,0,.2,1),content-visibility .4s cubic-bezier(.4,0,.2,1) allow-discrete}.r8uj4t0 .rich-details[open]::details-content{height:auto;opacity:1;content-visibility:visible}.r8uj4t0 .rich-details-content{padding:0 0 .75rem;color:var(--rc-text-secondary)}[contenteditable=true] .rich-details-content{background-color:var(--rc-bg-secondary);border-radius:var(--rc-radius-sm);padding:var(--rc-space-sm) var(--rc-space-md);margin-top:var(--rc-space-xs)}.r8uj4t0 .rich-details-content>.rich-paragraph:first-child{margin-top:0}.r8uj4t0 .rich-details-content>.rich-paragraph:last-child{margin-bottom:0}.r8uj4t0 .rich-grid-container{position:relative;margin:var(--rc-space-md) 0}.r8uj4t0 .rich-grid-toolbar{position:absolute;top:-36px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:2px;padding:4px 6px;border-radius:var(--rc-radius-md);pointer-events:none;background:var(--rc-bg);border:1px solid var(--rc-border);box-shadow:var(--rc-shadow-top-bar);z-index:10;user-select:none;white-space:nowrap;opacity:0;transition:opacity .15s ease}.r8uj4t0 .rich-grid-container:hover .rich-grid-toolbar,.r8uj4t0 .rich-grid-container:focus-within .rich-grid-toolbar{opacity:1;pointer-events:auto}.r8uj4t0 .rich-grid-toolbar-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--rc-text-secondary);flex-shrink:0}.r8uj4t0 .rich-grid-col-btn{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--rc-radius-sm);border:none;background:transparent;cursor:pointer;font-size:12px;font-weight:500;color:var(--rc-text-secondary);line-height:1;transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-grid-col-btn:hover{background-color:var(--rc-bg-secondary);color:var(--rc-text)}.r8uj4t0 .rich-grid-col-btn-active{background:var(--rc-bg-secondary);font-weight:600;color:var(--rc-text)}.r8uj4t0 .rich-grid-toolbar-divider{width:1px;height:16px;background:var(--rc-border);margin:0 2px;flex-shrink:0}.r8uj4t0 .rich-grid-action-btn{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--rc-radius-sm);border:none;background:transparent;cursor:pointer;color:var(--rc-text-secondary);transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-grid-action-btn:hover{background-color:var(--rc-bg-secondary);color:var(--rc-text)}.r8uj4t0 .rich-grid-inner{display:grid;gap:var(--rc-space-md)}.r8uj4t0 .rich-grid-cell{min-width:0}.r8uj4t0 .rich-grid-cell-editable{outline:none}
1
+ :root{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}:root.dark{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._13h71jk0{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._13h71jk1{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.8;--rc-line-height-tight: 1.4;--rc-font-family: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._13h71jk2{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #a1a1aa;--rc-quote-bg: #fafafa;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: none;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 2px;--rc-space-sm: 4px;--rc-space-md: 10px;--rc-space-lg: 16px;--rc-space-xl: 20px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 14px;--rc-font-size-small: 12px;--rc-line-height: 1.5;--rc-line-height-tight: 1.3;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 3px;--rc-radius-md: 6px;--rc-radius-lg: 8px}.dark ._13h71jk0,[data-theme=dark] ._13h71jk0,.dark._13h71jk0,[data-theme=dark]._13h71jk0,.dark ._13h71jk1,[data-theme=dark] ._13h71jk1,.dark._13h71jk1,[data-theme=dark]._13h71jk1,.dark ._13h71jk2,[data-theme=dark] ._13h71jk2,.dark._13h71jk2,[data-theme=dark]._13h71jk2{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4)}@keyframes r8uj4t1{to{--rc-hl-highlighted: 1}}@keyframes r8uj4t2{0%{background-color:#ef44443d}to{background-color:transparent}}.r8uj4t0{font-family:var(--rc-font-family);font-size:var(--rc-font-size-base);line-height:var(--rc-line-height);color:var(--rc-text);word-wrap:break-word;overflow-wrap:break-word}.r8uj4t0 .rich-paragraph{margin:0 0 1em;line-height:var(--rc-line-height)}.r8uj4t0 .rich-text-bold{font-weight:700}.r8uj4t0 .rich-text-italic{font-style:italic}.r8uj4t0 .rich-text-underline{text-decoration:underline}.r8uj4t0 .rich-text-strikethrough{text-decoration:line-through}.r8uj4t0 .rich-text-superscript{vertical-align:super;font-size:.8em}.r8uj4t0 .rich-text-subscript{vertical-align:sub;font-size:.8em}.r8uj4t0 .rich-text-code{font-family:var(--rc-font-mono);font-size:.9em;background-color:var(--rc-code-bg);color:var(--rc-code-text);padding:2px 6px;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border)}.r8uj4t0 mark{background:transparent}.r8uj4t0 .rich-text-highlight{--rc-hl-lightness: .3;--rc-hl-highlighted: 1;--rc-hl-color: oklch(from var(--rc-accent) l c h / var(--rc-hl-lightness));background:linear-gradient(120deg,var(--rc-hl-color, lightblue) 50%,transparent 50%) 110% 0 / 200% 100% no-repeat;background-position:calc((1 - var(--rc-hl-highlighted)) * 110%) 0;color:var(--rc-text);transition:background-position 1s}[contenteditable=true] .rich-text-highlight{--rc-hl-highlighted: 1;animation:none}[data-theme=dark] .r8uj4t0 .rich-text-highlight{--rc-hl-lightness: .35}.r8uj4t0 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6){position:relative}.r8uj4t0 .rich-heading-anchor{position:absolute;left:-1.25em;top:0;bottom:0;display:flex;align-items:center;text-decoration:none;color:var(--rc-text-secondary);opacity:0;transition:opacity .15s ease;font-size:.8em}.r8uj4t0 .rich-heading-anchor:before{content:"#"}.r8uj4t0 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor{opacity:.5}.r8uj4t0 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor:hover{opacity:1}[contenteditable=true] .rich-heading-h1:before,[contenteditable=true] .rich-heading-h2:before,[contenteditable=true] .rich-heading-h3:before,[contenteditable=true] .rich-heading-h4:before,[contenteditable=true] .rich-heading-h5:before,[contenteditable=true] .rich-heading-h6:before{position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}[contenteditable=true] .rich-heading-h1:before{content:"H1"}[contenteditable=true] .rich-heading-h2:before{content:"H2"}[contenteditable=true] .rich-heading-h3:before{content:"H3"}[contenteditable=true] .rich-heading-h4:before{content:"H4"}[contenteditable=true] .rich-heading-h5:before{content:"H5"}[contenteditable=true] .rich-heading-h6:before{content:"H6"}.r8uj4t0 .rich-heading-h1{font-size:2em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.5em;margin-bottom:.5em}.r8uj4t0 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.4em;margin-bottom:.45em}.r8uj4t0 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.3em;margin-bottom:.4em}.r8uj4t0 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.2em;margin-bottom:.35em}.r8uj4t0 .rich-heading-h5{font-size:1em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.1em;margin-bottom:.3em}.r8uj4t0 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1em;margin-bottom:.25em;color:var(--rc-text)}.r8uj4t0 .rich-link{color:var(--rc-link);text-decoration:none;transition:color .2s ease}.r8uj4t0 .rich-link:hover{text-decoration:underline}.r8uj4t0 .rich-link[data-favicon=loaded]:before{content:"";display:inline-block;width:1em;height:1em;margin-right:.2em;vertical-align:-.125em;background-image:var(--rc-link-favicon);background-size:contain;background-repeat:no-repeat;background-position:center;border-radius:2px}.r8uj4t0 .rich-link-favicon{display:inline;width:1em;height:1em;margin-right:.15em;vertical-align:-.125em;border-radius:2px;object-fit:contain}.r8uj4t0 .rich-list-ol{list-style-type:decimal;padding-left:var(--rc-space-lg);margin-bottom:1em}.r8uj4t0 .rich-list-ul{list-style-type:disc;padding-left:var(--rc-space-lg);margin-bottom:1em}.r8uj4t0 .rich-list-item{margin-bottom:.25em}.r8uj4t0 .rich-list-nested-item{list-style-type:none}.r8uj4t0 .rich-list-nested-item .rich-list-ol{list-style-type:lower-alpha}.r8uj4t0 .rich-list-nested-item .rich-list-ul{list-style-type:circle}.r8uj4t0 .rich-checklist{list-style-type:none;padding-left:0}.r8uj4t0 .rich-list-item.rich-list-item-checked,.r8uj4t0 .rich-list-item.rich-list-item-unchecked{--rc-cb-size: 1.125rem;position:relative;padding-left:2em;list-style-type:none;outline:none}.r8uj4t0 .rich-list-item.rich-list-item-unchecked:before,.r8uj4t0 .rich-list-item.rich-list-item-checked:before{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);border:2px solid color-mix(in oklab,var(--rc-text-secondary) 60%,transparent);border-radius:var(--rc-radius-sm);box-sizing:border-box;cursor:pointer;vertical-align:middle;color:var(--rc-text);background-color:transparent;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}[contenteditable=true] .r8uj4t0 .rich-list-item.rich-list-item-unchecked:hover:before{border-color:color-mix(in oklab,var(--rc-text-secondary) 80%,transparent)}.r8uj4t0 .rich-list-item.rich-list-item-unchecked:after,.r8uj4t0 .rich-list-item.rich-list-item-checked:after{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);background-color:#fff;box-sizing:border-box;display:block;pointer-events:none;transform:rotate(45deg);transform-origin:center;transition:clip-path .25s cubic-bezier(.34,1.56,.64,1),opacity .15s}.r8uj4t0 .rich-list-item.rich-list-item-checked:before{background-color:var(--rc-accent);border-color:var(--rc-accent);box-shadow:0 0 0 1px var(--rc-accent)}.r8uj4t0 .rich-list-item.rich-list-item-checked:after{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1;transform:rotate(45deg) scale(.7)}.r8uj4t0 .rich-list-item-checked{text-decoration:line-through;color:var(--rc-text-secondary)}.r8uj4t0 .rich-quote{border-left:4px solid var(--rc-quote-border);background-color:var(--rc-quote-bg);margin:var(--rc-space-md) 0;padding:var(--rc-space-sm) var(--rc-space-md);font-style:italic;color:var(--rc-text-secondary);border-radius:0 var(--rc-radius-sm) var(--rc-radius-sm) 0}.r8uj4t0 .rich-quote>.rich-paragraph:first-child{margin-top:0}.r8uj4t0 .rich-quote>.rich-paragraph:last-child{margin-bottom:0}.r8uj4t0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}.r8uj4t0 .rich-table-scrollable-wrapper{overflow-x:auto}.r8uj4t0 .rich-table{width:100%;border-collapse:separate;border-spacing:0;margin:var(--rc-space-lg) 0;font-size:var(--rc-font-size-small);border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);overflow:hidden}.r8uj4t0 .rich-table-cell{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:1.25em var(--rc-space-lg);text-align:left;vertical-align:middle;line-height:1.5}.r8uj4t0 .rich-table-cell:last-child{border-right:none}.r8uj4t0 .rich-table tbody tr:last-child .rich-table-cell{border-bottom:none}.r8uj4t0 .rich-table-cell .rich-paragraph{margin:0;padding:0;line-height:inherit}.r8uj4t0 .rich-table-cell>:first-child{margin-top:0}.r8uj4t0 .rich-table-cell>:last-child{margin-bottom:0}.r8uj4t0 .rich-table-cell-header{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:var(--rc-space-md) var(--rc-space-lg);text-align:left;font-weight:600;font-size:.75em;text-transform:uppercase;letter-spacing:.05em;color:var(--rc-text-secondary);background-color:var(--rc-bg-secondary);vertical-align:middle;line-height:1.5;position:sticky;top:0;z-index:1}.r8uj4t0 .rich-table-cell-header:last-child{border-right:none}.r8uj4t0 .rich-table-cell-header .rich-paragraph{margin:0;padding:0;line-height:inherit}.r8uj4t0 .rich-table-cell-header>:first-child{margin-top:0}.r8uj4t0 .rich-table-cell-header>:last-child{margin-bottom:0}.r8uj4t0 img{max-width:100%;height:auto;border-radius:var(--rc-radius-md)}.r8uj4t0 .rich-spoiler{background-color:var(--rc-text);color:transparent;border-radius:var(--rc-radius-sm);padding-inline:4px;cursor:pointer;transition:background-color .3s ease,color .3s ease;user-select:none}[contenteditable=true] .rich-spoiler{background-color:color-mix(in srgb,var(--rc-text) 30%,transparent);color:inherit;user-select:auto;cursor:text}.r8uj4t0 .rich-spoiler:hover,.r8uj4t0 .rich-spoiler-revealed{background-color:transparent;color:inherit;user-select:auto}.r8uj4t0 .rich-ruby{ruby-position:over;ruby-align:center}.r8uj4t0 .rich-ruby-rt{font-size:.58em;line-height:1;color:var(--rc-text-secondary);user-select:none}[contenteditable=true] .rich-ruby[data-ruby]{position:relative;display:inline-block;padding-top:.72em;line-height:1.2}[contenteditable=true] .rich-ruby[data-ruby]:before{content:attr(data-ruby);position:absolute;left:0;right:0;top:0;transform:translateY(-.68em);font-size:.58em;line-height:1;text-align:center;color:var(--rc-text-secondary);pointer-events:none;white-space:nowrap}.r8uj4t0 .rich-footnote{vertical-align:super;font-size:.8em}.r8uj4t0 .rich-footnote-ref{display:inline-flex;align-items:center;justify-content:center;min-width:1.5em;text-decoration:none;color:var(--rc-accent);background-color:var(--rc-accent-light);border-radius:999px;padding:0 .35em;line-height:1.45;font-weight:600;font-size:.82em;transition:filter .15s ease}.r8uj4t0 .rich-footnote-ref:hover{filter:brightness(.96)}.r8uj4t0 .rich-footnote-highlight{animation:r8uj4t2 1.2s ease-out}.r8uj4t0 .rich-footnote-ref-wrapper{position:relative;display:inline}.r8uj4t0 .rich-footnote-section{margin-top:var(--rc-space-lg)}.r8uj4t0 .rich-footnote-section-divider{border:none;border-top:1px solid var(--rc-border);margin:var(--rc-space-lg) 0 var(--rc-space-md)}.r8uj4t0 .rich-footnote-section-list{list-style-type:decimal;padding-left:var(--rc-space-lg);font-size:var(--rc-font-size-small);color:var(--rc-text-secondary);line-height:1.6}.r8uj4t0 .rich-footnote-section-item{margin-bottom:var(--rc-space-sm);padding-left:var(--rc-space-xs)}.r8uj4t0 .rich-footnote-back-ref{display:inline-flex;align-items:center;margin-left:var(--rc-space-xs);color:var(--rc-accent);text-decoration:none;font-size:.85em;transition:opacity .15s ease;font-family:var(--rc-font-mono)}.r8uj4t0 .rich-footnote-back-ref:hover{opacity:.7}.r8uj4t0 .rich-footnote-section-item-edit{display:flex;align-items:center;gap:var(--rc-space-sm);list-style-type:none}.r8uj4t0 .rich-footnote-section-item-num{flex-shrink:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-small);font-weight:600;min-width:1.5em}.r8uj4t0 .rich-footnote-section-item-input{flex:1;border:1px solid var(--rc-border);border-radius:var(--rc-radius-sm);padding:var(--rc-space-xs) var(--rc-space-sm);font-size:var(--rc-font-size-small);color:var(--rc-text);background-color:transparent;outline:none;transition:border-color .15s ease}.r8uj4t0 .rich-footnote-section-item-input:focus{border-color:var(--rc-accent)}.r8uj4t0 .rich-footnote-section-item-remove{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:none;color:var(--rc-text-secondary);cursor:pointer;border-radius:var(--rc-radius-sm);font-size:14px;transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-footnote-section-item-remove:hover{color:#ef4444;background-color:#ef44441a}.rich-drag-handle{position:absolute;display:flex;align-items:center;justify-content:center;width:20px;height:20px;cursor:grab;border-radius:var(--rc-radius-sm);color:var(--rc-text-secondary);opacity:.4;transition:opacity .15s ease,background-color .15s ease;z-index:10}.rich-drag-handle:hover{opacity:1;background-color:var(--rc-bg-secondary)}.rich-drag-handle:active{cursor:grabbing}.rich-drop-indicator{position:absolute;height:2px;background-color:var(--rc-accent);border-radius:1px;pointer-events:none;z-index:10}.r8uj4t0 .rich-alert{margin:2em 0;padding:0 1em;background-color:transparent;border:none;border-radius:0}.r8uj4t0>*:first-child,.r8uj4t0 .rich-editor__content>*:first-child{margin-top:0}.r8uj4t0>*:last-child,.r8uj4t0 .rich-editor__content>*:last-child{margin-bottom:0}@supports (animation-timeline: view()){.r8uj4t0 .rich-text-highlight{--rc-hl-highlighted: 0;animation:r8uj4t1 steps(1) both;animation-timeline:view();animation-range:entry 100% cover 10%}}.v10dui0{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.75;color:var(--rc-text)}.v10dui0 .rich-paragraph{margin-top:1.5em;margin-bottom:1.5em}.v10dui0 .rich-heading-h1{color:var(--rc-text);font-weight:800;font-size:3em;margin-top:0;margin-bottom:.8333333333333334em;line-height:1}.v10dui0 .rich-heading-h2{color:var(--rc-text);font-weight:700;font-size:1.875em;margin-top:1.8666666666666667em;margin-bottom:1.0666666666666667em;line-height:1.3333333}.v10dui0 .rich-heading-h3{color:var(--rc-text);font-weight:600;font-size:1.5em;margin-top:1.6666666666666667em;margin-bottom:.6666666666666666em;line-height:1.5}.v10dui0 .rich-heading-h4{color:var(--rc-text);font-weight:600;margin-top:2em;margin-bottom:.5em;line-height:1.5625}.v10dui0 .rich-heading-h2+*,.v10dui0 .rich-heading-h3+*,.v10dui0 .rich-heading-h4+*{margin-top:0}.v10dui0 .rich-quote{font-weight:500;font-style:italic;color:var(--rc-text);border-left-width:.25rem;border-left-style:solid;border-left-color:var(--rc-quote-border);margin-top:2.5em;margin-bottom:2.5em;padding-left:1.5em;background-color:transparent;border-radius:0;quotes:"“""”""‘""’"}.v10dui0 .rich-quote .rich-paragraph:first-of-type:before{content:open-quote}.v10dui0 .rich-quote .rich-paragraph:last-of-type:after{content:close-quote}.v10dui0 .rich-quote .rich-paragraph:first-child{margin-top:0}.v10dui0 .rich-quote .rich-paragraph:last-child{margin-bottom:0}.v10dui0 .rich-text-code{color:var(--rc-text);font-weight:600;font-size:.875em;background-color:var(--rc-code-bg);padding:.2em .4em;border-radius:var(--rc-radius-sm);font-family:var(--rc-font-mono)}.v10dui0 .rich-text-code:before,.v10dui0 .rich-text-code:after{content:"`";color:var(--rc-text-secondary);opacity:.5}.v10dui0 .rich-code-block{color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:.375rem;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.75}.v10dui0 .rich-code-block pre{padding:1em 1.5em;margin:0}.v10dui0 .rich-list-ul,.v10dui0 .rich-list-ol{margin-top:1.5em;margin-bottom:1.5em;padding-left:1.75em}.v10dui0 .rich-list-item{margin-top:.75em;margin-bottom:.75em;padding-left:.5em}.v10dui0 .rich-list-item .rich-paragraph{margin-top:1em;margin-bottom:1em}.v10dui0 .rich-list-item>.rich-paragraph:first-child{margin-top:1.5em}.v10dui0 .rich-list-item>.rich-paragraph:last-child{margin-bottom:1.5em}.v10dui0 .rich-list-ul .rich-list-ul,.v10dui0 .rich-list-ul .rich-list-ol,.v10dui0 .rich-list-ol .rich-list-ul,.v10dui0 .rich-list-ol .rich-list-ol{margin-top:1em;margin-bottom:1em}.v10dui0 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.5}.v10dui0 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.v10dui0 .rich-image{margin-top:2em;margin-bottom:2em}.v10dui0 .rich-image>*{margin-top:0;margin-bottom:0}.v10dui0 .rich-image figcaption{color:var(--rc-text-secondary);font-size:.875em;line-height:1.5;margin-top:1em}.v10dui0 .rich-hr{border-color:var(--rc-hr-border);border-top-width:1px;width:60px;margin:3.5em auto}.v10dui0 .rich-hr+*{margin-top:0}.v10dui0 .rich-link{font-weight:500;text-decoration:underline}.v10dui0 .rich-banner,.v10dui0 .rich-code-snippet,.v10dui0 .rich-details{margin:2em 0}.v10dui0>*:first-child{margin-top:0}.v10dui0>*:last-child{margin-bottom:0}._14ko36c0{font-size:var(--rc-font-size-base);line-height:var(--rc-line-height)}._14ko36c0 .rich-paragraph{margin-bottom:.6em}._14ko36c0 .rich-heading-h1{font-size:1.35em;font-weight:700;margin-top:.8em;margin-bottom:.3em}._14ko36c0 .rich-heading-h2{font-size:1.2em;font-weight:700;margin-top:.7em;margin-bottom:.25em}._14ko36c0 .rich-heading-h3{font-size:1.1em;font-weight:600;margin-top:.6em;margin-bottom:.2em}._14ko36c0 .rich-heading-h4{font-size:1em;font-weight:600;margin-top:.5em;margin-bottom:.15em}._14ko36c0 .rich-heading-h5{font-size:.9em;font-weight:600;margin-top:.45em;margin-bottom:.1em}._14ko36c0 .rich-heading-h6{font-size:.85em;font-weight:600;margin-top:.4em;margin-bottom:.1em}._14ko36c0 .rich-quote{border-left-width:3px;padding:var(--rc-space-sm) var(--rc-space-md);margin:var(--rc-space-sm) 0;font-size:.95em}._14ko36c0 .rich-list-ol,._14ko36c0 .rich-list-ul{margin-bottom:.6em;padding-left:var(--rc-space-md)}._14ko36c0 .rich-list-item{margin-bottom:.1em}._14ko36c0 .rich-code-block{margin:var(--rc-space-sm) 0;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-small)}._14ko36c0 .rich-code-block pre{padding:var(--rc-space-sm)}._14ko36c0 .line:before{display:none!important}._14ko36c0 .rich-table{margin:var(--rc-space-sm) 0;font-size:var(--rc-font-size-small)}._14ko36c0 .rich-table-cell,._14ko36c0 .rich-table-cell-header{padding:var(--rc-space-xs) var(--rc-space-sm)}._14ko36c0 .rich-image{margin:var(--rc-space-sm) 0}._14ko36c0 .rich-image figcaption{font-size:var(--rc-font-size-small)}._14ko36c0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}._14ko36c0 .rich-alert{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:var(--rc-space-lg);margin:var(--rc-space-sm) 0}._14ko36c0 .rich-katex-block{padding:var(--rc-space-sm) 0;margin:var(--rc-space-sm) 0}.ys4fw90{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.8;color:var(--rc-text)}.ys4fw90>.rich-paragraph,.ys4fw90 .rich-editor__content>.rich-paragraph,.ys4fw90 .rich-content__body>.rich-paragraph{margin-top:1.25em;margin-bottom:1.25em;line-height:1.8}.ys4fw90>.rich-paragraph:first-of-type,.ys4fw90 .rich-editor__content>.rich-paragraph:first-of-type,.ys4fw90 .rich-content__body>.rich-paragraph:first-of-type{margin-top:0;margin-bottom:2rem}.ys4fw90>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.ys4fw90 .rich-editor__content>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.ys4fw90 .rich-content__body>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child{margin-inline-start:2rem}.ys4fw90>.rich-paragraph:first-of-type:first-letter,.ys4fw90 .rich-content__body>.rich-paragraph:first-of-type:first-letter{float:left;font-size:2.4em;margin-right:.2em;line-height:1}.ys4fw90 .rich-editor__content>.rich-paragraph:first-of-type:first-letter{font-size:1.5em;font-weight:700;color:var(--rc-accent)}.ys4fw90>.rich-paragraph:last-child,.ys4fw90 .rich-editor__content>.rich-paragraph:last-child,.ys4fw90 .rich-content__body>.rich-paragraph:last-child{margin-bottom:0}.ys4fw90 .rich-text-bold{font-family:var(--rc-font-family);font-weight:600;color:var(--rc-text)}.ys4fw90 .rich-heading-h1{font-size:2.25em;font-weight:800;line-height:1.1111111;margin-top:0;margin-bottom:.8888889em;letter-spacing:-.025em;color:var(--rc-text)}.ys4fw90 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:1.3333333;margin-top:2em;margin-bottom:1em;letter-spacing:-.025em;color:var(--rc-text)}.ys4fw90 .rich-heading-h2+*{margin-top:0}.ys4fw90 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:1.6;margin-top:1.6em;margin-bottom:.6em;letter-spacing:-.025em;color:var(--rc-text)}.ys4fw90 .rich-heading-h3+*{margin-top:0}.ys4fw90 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.ys4fw90 .rich-heading-h4+*{margin-top:0}.ys4fw90 .rich-heading-h5{font-size:1em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.ys4fw90 .rich-heading-h5+*{margin-top:0}.ys4fw90 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text);text-transform:uppercase}.ys4fw90 .rich-heading-h6+*{margin-top:0}.ys4fw90 .rich-quote{font-style:normal;line-height:1.8;color:inherit;border-left:none;background-color:color-mix(in srgb,var(--rc-accent) 10%,transparent);margin-top:1.6em;margin-bottom:1.6em;margin-left:-1rem;margin-right:-1rem;padding:1em 2em;border-radius:0}.ys4fw90 .rich-quote .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.ys4fw90 .rich-link{font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}.ys4fw90 .rich-link:hover{text-decoration-thickness:2px}.ys4fw90 .rich-text-code{font-size:.875em;font-family:var(--rc-font-mono);font-weight:500;padding:.2em .4em;border-radius:var(--rc-radius-sm);background-color:var(--rc-code-bg)}.ys4fw90 .rich-list-ol,.ys4fw90 .rich-list-ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.ys4fw90 .rich-list-ol{list-style-type:decimal}.ys4fw90 .rich-list-ul{list-style-type:disc}.ys4fw90 .rich-list-item{margin-top:.5em;margin-bottom:.5em;padding-left:.375em}.ys4fw90 .rich-list-item::marker{color:var(--rc-text-secondary)}.ys4fw90 .rich-code-block{font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:var(--rc-radius-md);overflow-x:auto}.ys4fw90 .rich-code-block pre{padding:.8571429em 1.1428571em;margin:0}.ys4fw90 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.ys4fw90 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.ys4fw90 .rich-table .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.ys4fw90 .rich-image{margin-top:2em;margin-bottom:2em}.ys4fw90 .rich-image img{border-radius:var(--rc-radius-md)}.ys4fw90 .rich-image figcaption{font-size:.875em;line-height:1.4285714;margin-top:.8571429em;color:var(--rc-text-secondary);text-align:center}.ys4fw90 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);opacity:.2;margin-top:.5rem;margin-bottom:.5rem;width:60px;margin-left:auto;margin-right:auto}.ys4fw90 .rich-katex-block{margin-top:1.6em;margin-bottom:1.6em;overflow-x:auto;padding:1em 0}.ys4fw90 .rich-spoiler{border-radius:var(--rc-radius-sm);padding-inline:.25em}.ys4fw90>*:first-child{margin-top:0}.ys4fw90>*:last-child{margin-bottom:0}@keyframes _1x58dbf0{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes _1x58dbf6{to{transform:rotate(360deg)}}.rich-image-upload-dragging{position:relative;border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-accent) 6%,transparent)}.rich-image-upload-dragging .rich-editor__content{outline:2px dashed color-mix(in srgb,var(--rc-accent) 48%,transparent);outline-offset:-2px}._1x58dbf1{position:absolute;right:.75rem;bottom:.75rem;z-index:25;display:flex;flex-direction:column;align-items:flex-end;gap:.375rem;pointer-events:none}._1x58dbf2{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .625rem;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);background-color:color-mix(in srgb,var(--rc-bg) 95%,transparent);color:var(--rc-text);font-size:var(--rc-font-size-xs);line-height:1.2;box-shadow:var(--rc-shadow-top-bar);animation:_1x58dbf0 .12s ease-out}._1x58dbf4{border-color:color-mix(in srgb,var(--rc-accent) 35%,transparent)}._1x58dbf5{border-color:color-mix(in srgb,var(--rc-alert-caution) 45%,transparent);color:var(--rc-alert-caution)}._1x58dbf7{width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in srgb,var(--rc-text-secondary) 35%,transparent);border-top-color:color-mix(in srgb,var(--rc-text) 65%,transparent);animation:_1x58dbf6 .75s linear infinite}._1x58dbf8._1x58dbf8{padding:0;gap:0;width:min(560px,calc(100vw - 2rem));overflow:hidden}._1x58dbf9{padding:.875rem 1rem .75rem;border-bottom:1px solid var(--rc-border)}._1x58dbfa{font-size:var(--rc-font-size-md);font-weight:600;color:var(--rc-text)}._1x58dbfb{display:flex;flex-direction:column;gap:.875rem;padding:.875rem 1rem}._1x58dbfc{display:flex;align-items:center;gap:.5rem}._1x58dbfd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--rc-radius-md);border:1.5px dashed var(--rc-border);min-height:190px;padding:1.2rem;color:var(--rc-text-secondary);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,color .15s ease}._1x58dbfd:hover{border-color:color-mix(in srgb,var(--rc-accent) 35%,transparent);background-color:color-mix(in srgb,var(--rc-accent) 6%,transparent);color:var(--rc-text)}._1x58dbff{border-color:color-mix(in srgb,var(--rc-accent) 55%,transparent);background-color:color-mix(in srgb,var(--rc-accent) 8%,transparent);color:var(--rc-text);transform:scale(1.01)}._1x58dbfg{cursor:progress;opacity:.9}._1x58dbfh{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-text) 6%,transparent)}._1x58dbfi{font-size:var(--rc-font-size-sm);font-weight:600;color:var(--rc-text)}._1x58dbfj{font-size:var(--rc-font-size-xs);color:var(--rc-text-secondary);text-align:center}._1x58dbfk{display:none}._1x58dbfl{display:flex;flex-direction:column;align-items:center;gap:.5rem}._1x58dbfm{display:inline-flex;align-items:center;gap:.375rem;font-size:var(--rc-font-size-sm);color:var(--rc-text)}._1x58dbfn{display:flex;align-items:center;gap:.5rem}._1x58dbfo{width:100%;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);background-color:var(--rc-bg);color:var(--rc-text);height:34px;padding:0 .625rem;font-size:var(--rc-font-size-sm);outline:none;transition:border-color .15s ease}._1x58dbfo:focus{border-color:color-mix(in srgb,var(--rc-accent) 50%,transparent)}._1x58dbfo::placeholder{color:var(--rc-text-secondary)}._1x58dbfp{height:34px;border-radius:var(--rc-radius-sm);border:1px solid transparent;font-size:var(--rc-font-size-xs);font-weight:600;cursor:pointer;padding:0 .75rem;transition:background-color .15s ease,border-color .15s ease,color .15s ease}._1x58dbfq{background-color:var(--rc-text);color:var(--rc-bg)}._1x58dbfq:hover{background-color:color-mix(in srgb,var(--rc-text) 85%,transparent)}._1x58dbfq:disabled{opacity:.45;cursor:not-allowed}._1x58dbfr{border-color:var(--rc-border);background-color:var(--rc-bg);color:var(--rc-text-secondary)}._1x58dbfr:hover{color:var(--rc-text);background-color:color-mix(in srgb,var(--rc-text) 4%,transparent)}._1x58dbfr:disabled{opacity:.45;cursor:not-allowed}._1x58dbfs{border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:hidden;background-color:color-mix(in srgb,var(--rc-text) 2%,transparent)}._1x58dbft{display:block;width:100%;max-height:220px;object-fit:cover}._1x58dbfu{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--rc-font-size-xs);color:var(--rc-text-secondary)}._1x58dbfv{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-top:1px solid var(--rc-border);background-color:color-mix(in srgb,var(--rc-text) 2%,transparent);padding:.65rem 1rem}._1x58dbfw{display:flex;align-items:center;gap:.5rem}.r8uj4t0 .rich-katex-inline{display:inline;padding:0 2px;vertical-align:middle}.r8uj4t0 .rich-katex-block{display:block;text-align:center;padding:var(--rc-space-md) 0;overflow-x:auto;margin:var(--rc-space-md) 0}.r8uj4t0 .rich-katex-fallback{font-family:var(--rc-font-mono);font-size:.9em;color:var(--rc-code-text);background-color:var(--rc-code-bg);padding:2px 6px;border-radius:var(--rc-radius-sm)}.r8uj4t0 .rich-details{margin:var(--rc-space-md) 0;border:none;interpolate-size:allow-keywords}.r8uj4t0 .rich-details-summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:pointer;user-select:none;font-weight:500;font-size:.9375rem;line-height:1.5;padding:.75rem 0;color:var(--rc-text);list-style:none;transition:color .2s ease}.r8uj4t0 .rich-details-summary:hover{opacity:.8}.r8uj4t0 .rich-details-summary::-webkit-details-marker{display:none}.r8uj4t0 .rich-details-summary::marker{content:"";display:none}.r8uj4t0 .rich-details-summary-text{flex:1}.r8uj4t0 .rich-details-chevron{display:inline-flex;flex-shrink:0;color:var(--rc-text-secondary);transition:transform .35s cubic-bezier(.4,0,.2,1)}.r8uj4t0 .rich-details[open] .rich-details-chevron{transform:rotate(180deg)}.r8uj4t0 .rich-details::details-content{display:block;height:0;overflow:hidden;opacity:0;content-visibility:hidden;transition:height .4s cubic-bezier(.4,0,.2,1),opacity .4s cubic-bezier(.4,0,.2,1),content-visibility .4s cubic-bezier(.4,0,.2,1) allow-discrete}.r8uj4t0 .rich-details[open]::details-content{height:auto;opacity:1;content-visibility:visible}.r8uj4t0 .rich-details-content{padding:0 0 .75rem;color:var(--rc-text-secondary)}[contenteditable=true] .rich-details-content{background-color:var(--rc-bg-secondary);border-radius:var(--rc-radius-sm);padding:var(--rc-space-sm) var(--rc-space-md);margin-top:var(--rc-space-xs)}.r8uj4t0 .rich-details-content>.rich-paragraph:first-child{margin-top:0}.r8uj4t0 .rich-details-content>.rich-paragraph:last-child{margin-bottom:0}.r8uj4t0 .rich-grid-container{position:relative;margin:var(--rc-space-md) 0}.r8uj4t0 .rich-grid-toolbar{position:absolute;top:-36px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:2px;padding:4px 6px;border-radius:var(--rc-radius-md);pointer-events:none;background:var(--rc-bg);border:1px solid var(--rc-border);box-shadow:var(--rc-shadow-top-bar);z-index:10;user-select:none;white-space:nowrap;opacity:0;transition:opacity .15s ease}.r8uj4t0 .rich-grid-container:hover .rich-grid-toolbar,.r8uj4t0 .rich-grid-container:focus-within .rich-grid-toolbar{opacity:1;pointer-events:auto}.r8uj4t0 .rich-grid-toolbar-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--rc-text-secondary);flex-shrink:0}.r8uj4t0 .rich-grid-col-btn{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--rc-radius-sm);border:none;background:transparent;cursor:pointer;font-size:12px;font-weight:500;color:var(--rc-text-secondary);line-height:1;transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-grid-col-btn:hover{background-color:var(--rc-bg-secondary);color:var(--rc-text)}.r8uj4t0 .rich-grid-col-btn-active{background:var(--rc-bg-secondary);font-weight:600;color:var(--rc-text)}.r8uj4t0 .rich-grid-toolbar-divider{width:1px;height:16px;background:var(--rc-border);margin:0 2px;flex-shrink:0}.r8uj4t0 .rich-grid-action-btn{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--rc-radius-sm);border:none;background:transparent;cursor:pointer;color:var(--rc-text-secondary);transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-grid-action-btn:hover{background-color:var(--rc-bg-secondary);color:var(--rc-text)}.r8uj4t0 .rich-grid-inner{display:grid;gap:var(--rc-space-md)}.r8uj4t0 .rich-grid-cell{min-width:0}.r8uj4t0 .rich-grid-cell-editable{outline:none}
@@ -1,3 +1,4 @@
1
+ export { LinkFavicon } from './components/LinkFavicon';
1
2
  export type { RubyRendererProps } from './components/renderers/RubyRenderer';
2
3
  export { RubyRenderer } from './components/renderers/RubyRenderer';
3
4
  export type { RendererKey } from './components/RendererWrapper';
@@ -1 +1 @@
1
- {"version":3,"file":"static-entry.d.ts","sourceRoot":"","sources":["../src/static-entry.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EACL,wBAAwB,EACxB,eAAe,GAChB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EACL,mBAAmB,EACnB,cAAc,GACf,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAA;AAC3F,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAA;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,wCAAwC,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,GACL,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"static-entry.d.ts","sourceRoot":"","sources":["../src/static-entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EACL,wBAAwB,EACxB,eAAe,GAChB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EACL,mBAAmB,EACnB,cAAc,GACf,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAA;AAC3F,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAA;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,wCAAwC,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,GACL,MAAM,0BAA0B,CAAA"}
@@ -1,15 +1,45 @@
1
- import { R } from "./RubyRenderer-DbeobSoH.js";
2
- import { C, F, N, R as R2, d, a, b, e, c, f, g, u, h, i, j, k, l, m, n } from "./theme-CYXOCE-K.js";
3
- import { a as a2, c as c2, g as g2, n as n2 } from "./utils-fpeaZV1R.js";
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ import { g as getHostname, p as probeFavicon } from "./favicon-BSvQNu9R.js";
4
+ import { C, F, N, R, d, a, b, e, c, f, h, u, i, j, k, l, m, n, o } from "./favicon-BSvQNu9R.js";
5
+ import { R as R2 } from "./RubyRenderer-DbeobSoH.js";
6
+ import { a as a2, c as c2, g, n as n2 } from "./utils-fpeaZV1R.js";
4
7
  import { r } from "./shared.css-BqX4HjVE.js";
5
8
  import { articleTheme, commentTheme, noteTheme, vars } from "@haklex/rich-style-token";
9
+ function LinkFavicon({ href }) {
10
+ const [faviconUrl, setFaviconUrl] = useState(null);
11
+ useEffect(() => {
12
+ const hostname = getHostname(href);
13
+ if (!hostname) return;
14
+ let cancelled = false;
15
+ probeFavicon(hostname).then((url) => {
16
+ if (!cancelled) setFaviconUrl(url);
17
+ });
18
+ return () => {
19
+ cancelled = true;
20
+ };
21
+ }, [href]);
22
+ if (!faviconUrl) return null;
23
+ return /* @__PURE__ */ jsx(
24
+ "img",
25
+ {
26
+ className: "rich-link-favicon",
27
+ src: faviconUrl,
28
+ alt: "",
29
+ width: 14,
30
+ height: 14,
31
+ "aria-hidden": "true"
32
+ }
33
+ );
34
+ }
6
35
  export {
7
36
  C as ColorSchemeProvider,
8
37
  F as FootnoteDefinitionsProvider,
38
+ LinkFavicon,
9
39
  N as NestedContentRendererProvider,
10
- R2 as RendererConfigProvider,
40
+ R as RendererConfigProvider,
11
41
  d as RendererWrapper,
12
- R as RubyRenderer,
42
+ R2 as RubyRenderer,
13
43
  a as allNodes,
14
44
  articleTheme,
15
45
  a2 as articleVariant,
@@ -19,18 +49,18 @@ export {
19
49
  e as createRendererDecoration,
20
50
  c as customNodes,
21
51
  f as editorTheme,
22
- g as extractTextContent,
23
- g2 as getVariantClass,
52
+ h as extractTextContent,
53
+ g as getVariantClass,
24
54
  noteTheme,
25
55
  n2 as noteVariant,
26
56
  r as richContent,
27
57
  u as useColorScheme,
28
- h as useFootnoteContent,
29
- i as useFootnoteDefinitions,
30
- j as useFootnoteDisplayNumber,
31
- k as useNestedContentRenderer,
32
- l as useRendererConfig,
33
- m as useRendererMode,
34
- n as useVariant,
58
+ i as useFootnoteContent,
59
+ j as useFootnoteDefinitions,
60
+ k as useFootnoteDisplayNumber,
61
+ l as useNestedContentRenderer,
62
+ m as useRendererConfig,
63
+ n as useRendererMode,
64
+ o as useVariant,
35
65
  vars
36
66
  };
@@ -0,0 +1,3 @@
1
+ export declare function getHostname(href: string): string | null;
2
+ export declare function probeFavicon(hostname: string): Promise<string | null>;
3
+ //# sourceMappingURL=favicon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"favicon.d.ts","sourceRoot":"","sources":["../../src/utils/favicon.ts"],"names":[],"mappings":"AAUA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvD;AAWD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAe3E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haklex/rich-editor",
3
- "version": "0.0.44",
3
+ "version": "0.0.45",
4
4
  "description": "Core rich text editor based on Lexical",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -30,9 +30,9 @@
30
30
  "dependencies": {
31
31
  "nanoid": "^5.1.6",
32
32
  "thumbhash": "^0.1.1",
33
- "@haklex/rich-editor-ui": "0.0.44",
34
- "@haklex/rich-style-token": "0.0.44",
35
- "@haklex/rich-headless": "0.0.44"
33
+ "@haklex/rich-editor-ui": "0.0.45",
34
+ "@haklex/rich-headless": "0.0.45",
35
+ "@haklex/rich-style-token": "0.0.45"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@base-ui/react": "^1.2.0",