@anyknown/ui 0.4.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/brand.css +627 -0
- package/dist/components/markdown/Formula.d.ts +18 -0
- package/dist/components/markdown/Formula.js +75 -0
- package/dist/components/markdown/Markdown.d.ts +30 -0
- package/dist/components/markdown/Markdown.js +223 -0
- package/dist/components/markdown/math.d.ts +10 -0
- package/dist/components/markdown/math.js +86 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/package.json +11 -7
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@ AnyKnown 全產品線共用的 design system,以 [StyleX](https://stylexjs.com)
|
|
|
7
7
|
- `src/tokens.stylex.ts` — semantic tokens(color / font / text / space / radius / motion / shadow)。light 為預設,dark 跟隨 OS。**唯一真相**。
|
|
8
8
|
- `src/tokens.css` — 同一組值的純 CSS variables(`--ak-*`),給非 StyleX 的使用端(desktop 的 Tailwind v4 `@theme` 直接引用)。import 路徑:`@anyknown/ui/tokens.css`。
|
|
9
9
|
- `src/themes.stylex.ts` — `light` / `dark` theme,給有手動切換主題的 app:`<div {...stylex.props(...light)}>`。**由 `pnpm gen:themes` 從 tokens 生成**,不要手改(`themes.test.ts` 會擋住不同步)。
|
|
10
|
+
- `src/brand.css` — 給沒有 bundler 的一次性頁面(報告、提案、benchmark)的有界詞彙,二十來個 `ak-*` class。build 時內聯 tokens、接 Google Fonts、把按鈕織體預渲染成 SVG data URI(`scripts/brand-css.mjs`),出 `dist/brand.css` 與 <https://ui.anyknown.com/brand.css>。判斷寫在根目錄的 [DESIGN.md](./DESIGN.md),`pnpm check` 會擋文件與詞彙不同步。
|
|
10
11
|
- `src/scrollbar.css` — 客製捲軸(全域套用)。StyleX 做不了 `::-webkit-scrollbar` 偽元素,所以獨立成 css 檔。
|
|
11
12
|
- `src/components/` — 34 個元件,每個一個 folder(`<Name>.tsx` + `<Name>.test.tsx`)。清單與共同決策見 [components/README.md](./src/components/README.md),定案理由與走過的彎路見 [components/COMPONENTS.md](./src/components/COMPONENTS.md)。
|
|
12
13
|
- `src/lib/` — 共用 hooks 與生成邏輯(reduced-motion、controllable state、clipboard、diff、`styled` 與 `reset.control`)。織體幾何在 `weave.ts`(靜態)與 `silk.ts`(動態),規格見 [components/TEXTURE-GUIDE.md](./src/components/TEXTURE-GUIDE.md)。
|
|
@@ -65,6 +66,8 @@ CI 驗不了的只剩視覺:發之前 `pnpm playground` 開一輪看視覺與動
|
|
|
65
66
|
| repo | <https://github.com/anyknown-com/ui>(public、MIT) |
|
|
66
67
|
| npm | `@anyknown/ui`,trusted publisher 綁 `anyknown-com/ui` → `release.yml` |
|
|
67
68
|
| 文檔站 | <https://ui.anyknown.com>(Cloudflare Workers) |
|
|
69
|
+
| design.md | <https://ui.anyknown.com/design.md>,`DESIGN.md` 原文 + 生成的 token 表與 `brand.css` 詞彙表;`llms.txt` 第一條 |
|
|
70
|
+
| brand.css | <https://ui.anyknown.com/brand.css>,外部 agent 做一次性頁面 `<link>` 這份就好;同時是套件的 `@anyknown/ui/brand.css` |
|
|
68
71
|
| remote cache | `turbo.anyknown.com`,team `anyknown-ui`;token 在 repo secret `TURBO_TOKEN`,本機 `export TURBO_TOKEN=<token>`(worker 端的來源是 `anyknown-com/turbo-cache` 的 secret binding) |
|
|
69
72
|
|
|
70
73
|
## 在各 app 使用(Vite)
|
package/dist/brand.css
ADDED
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
/* brand.css — Ledger 的有界詞彙,給沒有 bundler 的一次性頁面。
|
|
2
|
+
*
|
|
3
|
+
* 這是原始檔。發佈版 dist/brand.css 由 scripts/brand-css.mjs 生成:
|
|
4
|
+
* Google Fonts @import、tokens.css 內聯、ak-theme-* 兩個手動主題、
|
|
5
|
+
* 織體 SVG 預渲染成 data URI 都在 build 時接進來。
|
|
6
|
+
*
|
|
7
|
+
* 每個 class 上面一行「//」註解是它的用途,design.md 的詞彙表從這裡掃出來。
|
|
8
|
+
* 詞彙刻意小,不在這裡的 class 就是不准用;要新的排版需求先回來改這份,再改 DESIGN.md。 */
|
|
9
|
+
|
|
10
|
+
@import url("https://fonts.googleapis.com/css2?family=Geist:wght@100..900&family=Geist+Mono:wght@100..900&family=Newsreader:ital,opsz,wght@0,6..72,200..800;1,6..72,200..800&display=swap");
|
|
11
|
+
/* Ledger tokens as plain CSS variables — for non-StyleX consumers
|
|
12
|
+
* (desktop uses Tailwind v4 @theme; reference these vars there).
|
|
13
|
+
* Source of truth: tokens.stylex.ts. Keep values in sync manually for now. */
|
|
14
|
+
|
|
15
|
+
/* 展開/收合讓頁面長高時捲軸出現 → 置中內容左移;永遠留捲軸的位置。 */
|
|
16
|
+
html {
|
|
17
|
+
scrollbar-gutter: stable;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
:root {
|
|
21
|
+
--ak-bg: #fafaf6;
|
|
22
|
+
--ak-surface: #ffffff;
|
|
23
|
+
--ak-surface-raised: #ffffff;
|
|
24
|
+
--ak-border: #e3e0d5;
|
|
25
|
+
--ak-border-strong: #c8c3b4;
|
|
26
|
+
--ak-text: #23211d;
|
|
27
|
+
--ak-text-muted: #635d52;
|
|
28
|
+
--ak-text-faint: #9c958a;
|
|
29
|
+
--ak-accent: #23705a;
|
|
30
|
+
--ak-accent-text: #fcfcf9;
|
|
31
|
+
--ak-accent-subtle: #e7f0eb;
|
|
32
|
+
--ak-danger: #b3402e;
|
|
33
|
+
--ak-danger-subtle: #f7e7e3;
|
|
34
|
+
--ak-success: #23705a;
|
|
35
|
+
--ak-success-subtle: #e7f0eb;
|
|
36
|
+
--ak-warning: #9a6a1b;
|
|
37
|
+
--ak-warning-subtle: #f5ebd9;
|
|
38
|
+
--ak-info: #2c5c86;
|
|
39
|
+
--ak-info-subtle: #e4edf5;
|
|
40
|
+
--ak-focus-ring: #23705a;
|
|
41
|
+
--ak-bone: #ece9df;
|
|
42
|
+
--ak-sheen: #f6f4ec;
|
|
43
|
+
--ak-success-hl: #c6e0c6;
|
|
44
|
+
--ak-danger-hl: #efcec3;
|
|
45
|
+
|
|
46
|
+
--ak-shadow-popover: 0 8px 24px rgba(35, 33, 29, 0.1);
|
|
47
|
+
--ak-shadow-raised: 0 1px 2px rgba(35, 33, 29, 0.08);
|
|
48
|
+
|
|
49
|
+
--ak-font-display: "Newsreader Variable", Georgia, "Times New Roman", serif;
|
|
50
|
+
--ak-font-body: "Geist Variable", system-ui, sans-serif;
|
|
51
|
+
--ak-font-mono: "Geist Mono Variable", ui-monospace, monospace;
|
|
52
|
+
|
|
53
|
+
--ak-radius-sm: 0.375rem;
|
|
54
|
+
--ak-radius-md: 0.5rem;
|
|
55
|
+
--ak-radius-lg: 0.75rem;
|
|
56
|
+
--ak-radius-xl: 1rem;
|
|
57
|
+
|
|
58
|
+
--ak-motion-fast: 120ms;
|
|
59
|
+
--ak-motion-normal: 200ms;
|
|
60
|
+
--ak-motion-slow: 400ms;
|
|
61
|
+
--ak-motion-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
62
|
+
--ak-motion-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
63
|
+
/* 過衝曲線:全站規則是「動畫不回彈」,沒有元件在用,新的也不要用 */
|
|
64
|
+
--ak-motion-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@media (prefers-color-scheme: dark) {
|
|
68
|
+
:root:not([data-theme="light"]) {
|
|
69
|
+
--ak-bg: #181613;
|
|
70
|
+
--ak-surface: #201d18;
|
|
71
|
+
--ak-surface-raised: #282420;
|
|
72
|
+
--ak-border: #35302a;
|
|
73
|
+
--ak-border-strong: #4a443c;
|
|
74
|
+
--ak-text: #eae6dc;
|
|
75
|
+
--ak-text-muted: #b0a697;
|
|
76
|
+
--ak-text-faint: #736a5d;
|
|
77
|
+
--ak-accent: #4fa184;
|
|
78
|
+
--ak-accent-text: #14120f;
|
|
79
|
+
--ak-accent-subtle: #22352e;
|
|
80
|
+
--ak-danger: #dd7059;
|
|
81
|
+
--ak-danger-subtle: #3d231e;
|
|
82
|
+
--ak-success: #4fa184;
|
|
83
|
+
--ak-success-subtle: #22352e;
|
|
84
|
+
--ak-warning: #d9a254;
|
|
85
|
+
--ak-warning-subtle: #3a2f1d;
|
|
86
|
+
--ak-info: #6fa3ce;
|
|
87
|
+
--ak-info-subtle: #1e2c38;
|
|
88
|
+
--ak-focus-ring: #4fa184;
|
|
89
|
+
--ak-bone: #2a2620;
|
|
90
|
+
--ak-sheen: #35302a;
|
|
91
|
+
--ak-success-hl: #2f4a2e;
|
|
92
|
+
--ak-danger-hl: #573328;
|
|
93
|
+
|
|
94
|
+
--ak-shadow-popover: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
95
|
+
--ak-shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
[data-theme="dark"] {
|
|
100
|
+
--ak-bone: #2a2620;
|
|
101
|
+
--ak-sheen: #35302a;
|
|
102
|
+
--ak-success-hl: #2f4a2e;
|
|
103
|
+
--ak-danger-hl: #573328;
|
|
104
|
+
--ak-shadow-popover: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
105
|
+
--ak-shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
106
|
+
--ak-bg: #181613;
|
|
107
|
+
--ak-surface: #201d18;
|
|
108
|
+
--ak-surface-raised: #282420;
|
|
109
|
+
--ak-border: #35302a;
|
|
110
|
+
--ak-border-strong: #4a443c;
|
|
111
|
+
--ak-text: #eae6dc;
|
|
112
|
+
--ak-text-muted: #b0a697;
|
|
113
|
+
--ak-text-faint: #736a5d;
|
|
114
|
+
--ak-accent: #4fa184;
|
|
115
|
+
--ak-accent-text: #14120f;
|
|
116
|
+
--ak-accent-subtle: #22352e;
|
|
117
|
+
--ak-danger: #dd7059;
|
|
118
|
+
--ak-danger-subtle: #3d231e;
|
|
119
|
+
--ak-success: #4fa184;
|
|
120
|
+
--ak-success-subtle: #22352e;
|
|
121
|
+
--ak-warning: #d9a254;
|
|
122
|
+
--ak-warning-subtle: #3a2f1d;
|
|
123
|
+
--ak-info: #6fa3ce;
|
|
124
|
+
--ak-info-subtle: #1e2c38;
|
|
125
|
+
--ak-focus-ring: #4fa184;
|
|
126
|
+
}
|
|
127
|
+
/* 織體與手動主題:由 scripts/brand-css.mjs 生成 */
|
|
128
|
+
:root {
|
|
129
|
+
--ak-weave-primary-light: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 36' preserveAspectRatio='none'%3e%3crect width='120' height='36' fill='%2311362C'/%3e%3cg fill='none' stroke-linecap='round'%3e%3cg stroke='%23123C31' opacity='.5'%3e%3cpath d='M-4.0,0.8L0.0,0.9L4.0,1.0L8.0,1.0L12.0,1.1L16.0,1.2L20.0,1.3L24.0,1.4L28.0,1.5L32.0,1.5L36.0,1.6L40.0,1.7L44.0,1.7L48.0,1.8L52.0,1.8L56.0,1.8L60.0,1.8L64.0,1.8L68.0,1.8L72.0,1.7L76.0,1.7L80.0,1.6L84.0,1.5L88.0,1.5L92.0,1.4L96.0,1.3L100.0,1.2L104.0,1.2L108.0,1.1L112.0,1.1L116.0,1.0L120.0,1.0L124.0,1.0' stroke-width='0.78'/%3e%3cpath d='M-4.0,3.3L0.0,3.4L4.0,3.4L8.0,3.5L12.0,3.6L16.0,3.7L20.0,3.8L24.0,3.9L28.0,4.0L32.0,4.0L36.0,4.1L40.0,4.1L44.0,4.2L48.0,4.2L52.0,4.2L56.0,4.2L60.0,4.2L64.0,4.2L68.0,4.1L72.0,4.1L76.0,4.0L80.0,3.9L84.0,3.9L88.0,3.8L92.0,3.7L96.0,3.6L100.0,3.6L104.0,3.5L108.0,3.4L112.0,3.4L116.0,3.4L120.0,3.4L124.0,3.4' stroke-width='0.59'/%3e%3cpath d='M-4.0,5.8L0.0,5.8L4.0,5.9L8.0,6.0L12.0,6.1L16.0,6.2L20.0,6.3L24.0,6.4L28.0,6.4L32.0,6.5L36.0,6.5L40.0,6.6L44.0,6.6L48.0,6.6L52.0,6.6L56.0,6.6L60.0,6.6L64.0,6.5L68.0,6.5L72.0,6.4L76.0,6.3L80.0,6.3L84.0,6.2L88.0,6.1L92.0,6.0L96.0,5.9L100.0,5.9L104.0,5.8L108.0,5.8L112.0,5.7L116.0,5.7L120.0,5.7L124.0,5.8' stroke-width='0.55'/%3e%3cpath d='M-4.0,8.3L0.0,8.3L4.0,8.4L8.0,8.5L12.0,8.6L16.0,8.7L20.0,8.8L24.0,8.8L28.0,8.9L32.0,8.9L36.0,9.0L40.0,9.0L44.0,9.0L48.0,9.0L52.0,9.0L56.0,9.0L60.0,8.9L64.0,8.9L68.0,8.8L72.0,8.7L76.0,8.6L80.0,8.6L84.0,8.5L88.0,8.4L92.0,8.3L96.0,8.3L100.0,8.2L104.0,8.2L108.0,8.1L112.0,8.1L116.0,8.1L120.0,8.1L124.0,8.2' stroke-width='0.78'/%3e%3cpath d='M-4.0,10.7L0.0,10.8L4.0,10.9L8.0,11.0L12.0,11.1L16.0,11.2L20.0,11.2L24.0,11.3L28.0,11.3L32.0,11.4L36.0,11.4L40.0,11.4L44.0,11.4L48.0,11.4L52.0,11.4L56.0,11.3L60.0,11.3L64.0,11.2L68.0,11.1L72.0,11.0L76.0,11.0L80.0,10.9L84.0,10.8L88.0,10.7L92.0,10.6L96.0,10.6L100.0,10.5L104.0,10.5L108.0,10.5L112.0,10.5L116.0,10.5L120.0,10.6L124.0,10.6' stroke-width='0.78'/%3e%3cpath d='M-4.0,13.2L0.0,13.3L4.0,13.4L8.0,13.5L12.0,13.6L16.0,13.6L20.0,13.7L24.0,13.7L28.0,13.8L32.0,13.8L36.0,13.8L40.0,13.8L44.0,13.8L48.0,13.8L52.0,13.7L56.0,13.6L60.0,13.6L64.0,13.5L68.0,13.4L72.0,13.3L76.0,13.3L80.0,13.2L84.0,13.1L88.0,13.0L92.0,13.0L96.0,12.9L100.0,12.9L104.0,12.9L108.0,12.9L112.0,12.9L116.0,12.9L120.0,13.0L124.0,13.1' stroke-width='0.67'/%3e%3cpath d='M-4.0,15.7L0.0,15.8L4.0,15.9L8.0,16.0L12.0,16.0L16.0,16.1L20.0,16.1L24.0,16.2L28.0,16.2L32.0,16.2L36.0,16.2L40.0,16.2L44.0,16.2L48.0,16.1L52.0,16.0L56.0,16.0L60.0,15.9L64.0,15.8L68.0,15.7L72.0,15.6L76.0,15.6L80.0,15.5L84.0,15.4L88.0,15.4L92.0,15.3L96.0,15.3L100.0,15.3L104.0,15.3L108.0,15.3L112.0,15.3L116.0,15.4L120.0,15.4L124.0,15.5' stroke-width='0.79'/%3e%3cpath d='M-4.0,18.2L0.0,18.3L4.0,18.4L8.0,18.4L12.0,18.5L16.0,18.6L20.0,18.6L24.0,18.6L28.0,18.6L32.0,18.6L36.0,18.6L40.0,18.5L44.0,18.5L48.0,18.4L52.0,18.4L56.0,18.3L60.0,18.2L64.0,18.1L68.0,18.0L72.0,18.0L76.0,17.9L80.0,17.8L84.0,17.7L88.0,17.7L92.0,17.7L96.0,17.6L100.0,17.6L104.0,17.7L108.0,17.7L112.0,17.8L116.0,17.8L120.0,17.9L124.0,18.0' stroke-width='0.61'/%3e%3cpath d='M-4.0,20.7L0.0,20.8L4.0,20.9L8.0,20.9L12.0,21.0L16.0,21.0L20.0,21.0L24.0,21.0L28.0,21.0L32.0,21.0L36.0,20.9L40.0,20.9L44.0,20.8L48.0,20.8L52.0,20.7L56.0,20.6L60.0,20.5L64.0,20.4L68.0,20.3L72.0,20.3L76.0,20.2L80.0,20.1L84.0,20.1L88.0,20.0L92.0,20.0L96.0,20.0L100.0,20.0L104.0,20.1L108.0,20.1L112.0,20.2L116.0,20.3L120.0,20.4L124.0,20.5' stroke-width='0.60'/%3e%3cpath d='M-4.0,23.2L0.0,23.3L4.0,23.3L8.0,23.4L12.0,23.4L16.0,23.4L20.0,23.4L24.0,23.4L28.0,23.4L32.0,23.3L36.0,23.3L40.0,23.2L44.0,23.2L48.0,23.1L52.0,23.0L56.0,22.9L60.0,22.8L64.0,22.7L68.0,22.7L72.0,22.6L76.0,22.5L80.0,22.5L84.0,22.4L88.0,22.4L92.0,22.4L96.0,22.4L100.0,22.5L104.0,22.5L108.0,22.6L112.0,22.7L116.0,22.8L120.0,22.9L124.0,23.0' stroke-width='0.80'/%3e%3cpath d='M-4.0,25.7L0.0,25.7L4.0,25.8L8.0,25.8L12.0,25.8L16.0,25.8L20.0,25.8L24.0,25.8L28.0,25.7L32.0,25.7L36.0,25.6L40.0,25.6L44.0,25.5L48.0,25.4L52.0,25.3L56.0,25.2L60.0,25.1L64.0,25.0L68.0,25.0L72.0,24.9L76.0,24.8L80.0,24.8L84.0,24.8L88.0,24.8L92.0,24.8L96.0,24.8L100.0,24.9L104.0,25.0L108.0,25.0L112.0,25.2L116.0,25.3L120.0,25.4L124.0,25.6' stroke-width='0.58'/%3e%3cpath d='M-4.0,28.1L0.0,28.2L4.0,28.2L8.0,28.2L12.0,28.2L16.0,28.2L20.0,28.2L24.0,28.1L28.0,28.1L32.0,28.0L36.0,28.0L40.0,27.9L44.0,27.8L48.0,27.7L52.0,27.6L56.0,27.5L60.0,27.4L64.0,27.4L68.0,27.3L72.0,27.2L76.0,27.2L80.0,27.2L84.0,27.2L88.0,27.2L92.0,27.2L96.0,27.3L100.0,27.3L104.0,27.4L108.0,27.5L112.0,27.7L116.0,27.8L120.0,27.9L124.0,28.1' stroke-width='0.70'/%3e%3cpath d='M-4.0,30.6L0.0,30.6L4.0,30.6L8.0,30.6L12.0,30.6L16.0,30.6L20.0,30.6L24.0,30.5L28.0,30.4L32.0,30.4L36.0,30.3L40.0,30.2L44.0,30.1L48.0,30.0L52.0,29.9L56.0,29.8L60.0,29.7L64.0,29.7L68.0,29.6L72.0,29.6L76.0,29.5L80.0,29.5L84.0,29.6L88.0,29.6L92.0,29.6L96.0,29.7L100.0,29.8L104.0,29.9L108.0,30.0L112.0,30.2L116.0,30.3L120.0,30.5L124.0,30.6' stroke-width='0.73'/%3e%3cpath d='M-4.0,33.0L0.0,33.0L4.0,33.0L8.0,33.0L12.0,33.0L16.0,33.0L20.0,32.9L24.0,32.8L28.0,32.8L32.0,32.7L36.0,32.6L40.0,32.5L44.0,32.4L48.0,32.3L52.0,32.2L56.0,32.1L60.0,32.1L64.0,32.0L68.0,32.0L72.0,31.9L76.0,31.9L80.0,31.9L84.0,32.0L88.0,32.0L92.0,32.1L96.0,32.2L100.0,32.3L104.0,32.4L108.0,32.5L112.0,32.7L116.0,32.8L120.0,33.0L124.0,33.2' stroke-width='0.70'/%3e%3cpath d='M-4.0,35.4L0.0,35.4L4.0,35.4L8.0,35.4L12.0,35.4L16.0,35.3L20.0,35.2L24.0,35.2L28.0,35.1L32.0,35.0L36.0,34.9L40.0,34.8L44.0,34.7L48.0,34.6L52.0,34.5L56.0,34.4L60.0,34.4L64.0,34.3L68.0,34.3L72.0,34.3L76.0,34.3L80.0,34.3L84.0,34.4L88.0,34.5L92.0,34.5L96.0,34.7L100.0,34.8L104.0,34.9L108.0,35.1L112.0,35.2L116.0,35.4L120.0,35.6L124.0,35.7' stroke-width='0.53'/%3e%3c/g%3e%3cg stroke='%231E6250'%3e%3c/g%3e%3cg stroke='%23216A55'%3e%3cpath d='M-4.0,26.5L0.0,26.6L4.0,26.6L8.0,26.6L12.0,26.6L16.0,26.6L20.0,26.6L24.0,26.6L28.0,26.6L32.0,26.5L36.0,26.4L40.0,26.4L44.0,26.3L48.0,26.2L52.0,26.1L56.0,26.0L60.0,25.9L64.0,25.8L68.0,25.8L72.0,25.7L76.0,25.6L80.0,25.6L84.0,25.6L88.0,25.6L92.0,25.6L96.0,25.7L100.0,25.7L104.0,25.8L108.0,25.9L112.0,26.0L116.0,26.1L120.0,26.3L124.0,26.4' stroke-width='0.76'/%3e%3cpath d='M-4.0,31.6L0.0,31.6L4.0,31.7L8.0,31.7L12.0,31.6L16.0,31.6L20.0,31.6L24.0,31.5L28.0,31.4L32.0,31.3L36.0,31.3L40.0,31.2L44.0,31.1L48.0,31.0L52.0,30.9L56.0,30.8L60.0,30.7L64.0,30.7L68.0,30.6L72.0,30.6L76.0,30.6L80.0,30.6L84.0,30.6L88.0,30.6L92.0,30.7L96.0,30.8L100.0,30.9L104.0,31.0L108.0,31.1L112.0,31.2L116.0,31.4L120.0,31.6L124.0,31.7' stroke-width='0.87'/%3e%3cpath d='M-4.0,34.0L0.0,34.0L4.0,34.0L8.0,34.0L12.0,33.9L16.0,33.9L20.0,33.8L24.0,33.7L28.0,33.7L32.0,33.6L36.0,33.5L40.0,33.4L44.0,33.3L48.0,33.2L52.0,33.1L56.0,33.0L60.0,33.0L64.0,32.9L68.0,32.9L72.0,32.9L76.0,32.8L80.0,32.9L84.0,32.9L88.0,33.0L92.0,33.0L96.0,33.1L100.0,33.2L104.0,33.4L108.0,33.5L112.0,33.7L116.0,33.8L120.0,34.0L124.0,34.2' stroke-width='0.86'/%3e%3cpath d='M-4.0,36.4L0.0,36.4L4.0,36.3L8.0,36.3L12.0,36.3L16.0,36.2L20.0,36.1L24.0,36.0L28.0,36.0L32.0,35.9L36.0,35.8L40.0,35.7L44.0,35.6L48.0,35.5L52.0,35.4L56.0,35.3L60.0,35.3L64.0,35.2L68.0,35.2L72.0,35.2L76.0,35.2L80.0,35.3L84.0,35.3L88.0,35.4L92.0,35.5L96.0,35.6L100.0,35.7L104.0,35.9L108.0,36.0L112.0,36.2L116.0,36.4L120.0,36.5L124.0,36.7' stroke-width='0.86'/%3e%3c/g%3e%3cg stroke='%2323705A'%3e%3cpath d='M-4.0,16.4L0.0,16.5L4.0,16.5L8.0,16.6L12.0,16.7L16.0,16.7L20.0,16.8L24.0,16.8L28.0,16.8L32.0,16.8L36.0,16.8L40.0,16.8L44.0,16.8L48.0,16.7L52.0,16.6L56.0,16.6L60.0,16.5L64.0,16.4L68.0,16.3L72.0,16.2L76.0,16.2L80.0,16.1L84.0,16.0L88.0,16.0L92.0,15.9L96.0,15.9L100.0,15.9L104.0,15.9L108.0,15.9L112.0,15.9L116.0,16.0L120.0,16.1L124.0,16.2' stroke-width='0.62'/%3e%3cpath d='M-4.0,17.7L0.0,17.8L4.0,17.8L8.0,17.9L12.0,18.0L16.0,18.0L20.0,18.1L24.0,18.1L28.0,18.1L32.0,18.1L36.0,18.1L40.0,18.0L44.0,18.0L48.0,17.9L52.0,17.9L56.0,17.8L60.0,17.7L64.0,17.6L68.0,17.5L72.0,17.5L76.0,17.4L80.0,17.3L84.0,17.2L88.0,17.2L92.0,17.1L96.0,17.1L100.0,17.1L104.0,17.1L108.0,17.2L112.0,17.2L116.0,17.3L120.0,17.4L124.0,17.5' stroke-width='0.66'/%3e%3cpath d='M-4.0,19.0L0.0,19.1L4.0,19.1L8.0,19.2L12.0,19.3L16.0,19.3L20.0,19.3L24.0,19.3L28.0,19.4L32.0,19.3L36.0,19.3L40.0,19.3L44.0,19.2L48.0,19.2L52.0,19.1L56.0,19.0L60.0,18.9L64.0,18.8L68.0,18.7L72.0,18.7L76.0,18.6L80.0,18.5L84.0,18.5L88.0,18.4L92.0,18.4L96.0,18.4L100.0,18.4L104.0,18.4L108.0,18.4L112.0,18.5L116.0,18.6L120.0,18.7L124.0,18.8' stroke-width='0.79'/%3e%3cpath d='M-4.0,22.8L0.0,22.8L4.0,22.9L8.0,22.9L12.0,23.0L16.0,23.0L20.0,23.0L24.0,23.0L28.0,23.0L32.0,22.9L36.0,22.9L40.0,22.8L44.0,22.8L48.0,22.7L52.0,22.6L56.0,22.5L60.0,22.4L64.0,22.3L68.0,22.3L72.0,22.2L76.0,22.1L80.0,22.1L84.0,22.0L88.0,22.0L92.0,22.0L96.0,22.0L100.0,22.0L104.0,22.1L108.0,22.2L112.0,22.2L116.0,22.3L120.0,22.5L124.0,22.6' stroke-width='1.18'/%3e%3cpath d='M-4.0,23.9L0.0,23.9L4.0,24.0L8.0,24.0L12.0,24.1L16.0,24.1L20.0,24.1L24.0,24.1L28.0,24.0L32.0,24.0L36.0,23.9L40.0,23.9L44.0,23.8L48.0,23.7L52.0,23.6L56.0,23.6L60.0,23.5L64.0,23.4L68.0,23.3L72.0,23.2L76.0,23.2L80.0,23.1L84.0,23.1L88.0,23.1L92.0,23.1L96.0,23.1L100.0,23.1L104.0,23.2L108.0,23.3L112.0,23.4L116.0,23.5L120.0,23.6L124.0,23.7' stroke-width='0.84'/%3e%3cpath d='M-4.0,27.9L0.0,27.9L4.0,28.0L8.0,28.0L12.0,28.0L16.0,28.0L20.0,28.0L24.0,27.9L28.0,27.9L32.0,27.8L36.0,27.7L40.0,27.6L44.0,27.6L48.0,27.5L52.0,27.4L56.0,27.3L60.0,27.2L64.0,27.1L68.0,27.1L72.0,27.0L76.0,27.0L80.0,26.9L84.0,26.9L88.0,26.9L92.0,27.0L96.0,27.0L100.0,27.1L104.0,27.2L108.0,27.3L112.0,27.4L116.0,27.5L120.0,27.7L124.0,27.8' stroke-width='1.31'/%3e%3cpath d='M-4.0,29.2L0.0,29.2L4.0,29.2L8.0,29.2L12.0,29.2L16.0,29.2L20.0,29.2L24.0,29.1L28.0,29.1L32.0,29.0L36.0,28.9L40.0,28.8L44.0,28.7L48.0,28.7L52.0,28.6L56.0,28.5L60.0,28.4L64.0,28.3L68.0,28.3L72.0,28.2L76.0,28.2L80.0,28.2L84.0,28.2L88.0,28.2L92.0,28.2L96.0,28.3L100.0,28.4L104.0,28.5L108.0,28.6L112.0,28.7L116.0,28.8L120.0,29.0L124.0,29.1' stroke-width='1.29'/%3e%3cpath d='M-4.0,30.5L0.0,30.5L4.0,30.5L8.0,30.5L12.0,30.5L16.0,30.5L20.0,30.5L24.0,30.4L28.0,30.3L32.0,30.3L36.0,30.2L40.0,30.1L44.0,30.0L48.0,29.9L52.0,29.8L56.0,29.7L60.0,29.7L64.0,29.6L68.0,29.5L72.0,29.5L76.0,29.5L80.0,29.5L84.0,29.5L88.0,29.5L92.0,29.5L96.0,29.6L100.0,29.7L104.0,29.8L108.0,29.9L112.0,30.1L116.0,30.2L120.0,30.4L124.0,30.5' stroke-width='0.89'/%3e%3cpath d='M-4.0,32.7L0.0,32.7L4.0,32.7L8.0,32.7L12.0,32.7L16.0,32.7L20.0,32.6L24.0,32.6L28.0,32.5L32.0,32.4L36.0,32.3L40.0,32.2L44.0,32.1L48.0,32.0L52.0,31.9L56.0,31.9L60.0,31.8L64.0,31.7L68.0,31.7L72.0,31.6L76.0,31.6L80.0,31.6L84.0,31.7L88.0,31.7L92.0,31.8L96.0,31.9L100.0,32.0L104.0,32.1L108.0,32.2L112.0,32.4L116.0,32.5L120.0,32.7L124.0,32.9' stroke-width='0.66'/%3e%3cpath d='M-4.0,35.2L0.0,35.2L4.0,35.2L8.0,35.1L12.0,35.1L16.0,35.0L20.0,35.0L24.0,34.9L28.0,34.8L32.0,34.7L36.0,34.6L40.0,34.5L44.0,34.4L48.0,34.3L52.0,34.3L56.0,34.2L60.0,34.1L64.0,34.1L68.0,34.0L72.0,34.0L76.0,34.0L80.0,34.1L84.0,34.1L88.0,34.2L92.0,34.3L96.0,34.4L100.0,34.5L104.0,34.6L108.0,34.8L112.0,34.9L116.0,35.1L120.0,35.3L124.0,35.4' stroke-width='0.70'/%3e%3c/g%3e%3cg stroke='%2328795F'%3e%3cpath d='M-4.0,2.2L0.0,2.3L4.0,2.3L8.0,2.4L12.0,2.5L16.0,2.6L20.0,2.7L24.0,2.8L28.0,2.8L32.0,2.9L36.0,3.0L40.0,3.0L44.0,3.1L48.0,3.1L52.0,3.1L56.0,3.1L60.0,3.1L64.0,3.1L68.0,3.1L72.0,3.0L76.0,3.0L80.0,2.9L84.0,2.8L88.0,2.7L92.0,2.7L96.0,2.6L100.0,2.5L104.0,2.4L108.0,2.4L112.0,2.3L116.0,2.3L120.0,2.3L124.0,2.3' stroke-width='0.91'/%3e%3cpath d='M-4.0,9.8L0.0,9.8L4.0,9.9L8.0,10.0L12.0,10.1L16.0,10.2L20.0,10.3L24.0,10.3L28.0,10.4L32.0,10.4L36.0,10.5L40.0,10.5L44.0,10.5L48.0,10.5L52.0,10.4L56.0,10.4L60.0,10.3L64.0,10.3L68.0,10.2L72.0,10.1L76.0,10.0L80.0,10.0L84.0,9.9L88.0,9.8L92.0,9.7L96.0,9.7L100.0,9.6L104.0,9.6L108.0,9.6L112.0,9.6L116.0,9.6L120.0,9.6L124.0,9.7' stroke-width='1.37'/%3e%3cpath d='M-4.0,13.8L0.0,13.9L4.0,13.9L8.0,14.0L12.0,14.1L16.0,14.2L20.0,14.2L24.0,14.3L28.0,14.3L32.0,14.3L36.0,14.3L40.0,14.3L44.0,14.3L48.0,14.3L52.0,14.2L56.0,14.2L60.0,14.1L64.0,14.0L68.0,13.9L72.0,13.8L76.0,13.8L80.0,13.7L84.0,13.6L88.0,13.5L92.0,13.5L96.0,13.4L100.0,13.4L104.0,13.4L108.0,13.4L112.0,13.4L116.0,13.5L120.0,13.5L124.0,13.6' stroke-width='0.73'/%3e%3cpath d='M-4.0,15.1L0.0,15.2L4.0,15.3L8.0,15.4L12.0,15.5L16.0,15.5L20.0,15.6L24.0,15.6L28.0,15.6L32.0,15.6L36.0,15.6L40.0,15.6L44.0,15.6L48.0,15.6L52.0,15.5L56.0,15.4L60.0,15.4L64.0,15.3L68.0,15.2L72.0,15.1L76.0,15.0L80.0,14.9L84.0,14.9L88.0,14.8L92.0,14.8L96.0,14.7L100.0,14.7L104.0,14.7L108.0,14.7L112.0,14.7L116.0,14.8L120.0,14.9L124.0,15.0' stroke-width='0.85'/%3e%3cpath d='M-4.0,20.3L0.0,20.4L4.0,20.5L8.0,20.5L12.0,20.6L16.0,20.6L20.0,20.7L24.0,20.7L28.0,20.7L32.0,20.6L36.0,20.6L40.0,20.5L44.0,20.5L48.0,20.4L52.0,20.3L56.0,20.3L60.0,20.2L64.0,20.1L68.0,20.0L72.0,19.9L76.0,19.8L80.0,19.8L84.0,19.7L88.0,19.7L92.0,19.7L96.0,19.7L100.0,19.7L104.0,19.7L108.0,19.8L112.0,19.8L116.0,19.9L120.0,20.0L124.0,20.1' stroke-width='1.00'/%3e%3cpath d='M-4.0,21.5L0.0,21.6L4.0,21.7L8.0,21.7L12.0,21.8L16.0,21.8L20.0,21.8L24.0,21.8L28.0,21.8L32.0,21.8L36.0,21.7L40.0,21.7L44.0,21.6L48.0,21.5L52.0,21.5L56.0,21.4L60.0,21.3L64.0,21.2L68.0,21.1L72.0,21.0L76.0,21.0L80.0,20.9L84.0,20.9L88.0,20.8L92.0,20.8L96.0,20.8L100.0,20.8L104.0,20.9L108.0,20.9L112.0,21.0L116.0,21.1L120.0,21.2L124.0,21.4' stroke-width='1.29'/%3e%3cpath d='M-4.0,25.2L0.0,25.3L4.0,25.3L8.0,25.4L12.0,25.4L16.0,25.4L20.0,25.4L24.0,25.4L28.0,25.3L32.0,25.3L36.0,25.2L40.0,25.1L44.0,25.1L48.0,25.0L52.0,24.9L56.0,24.8L60.0,24.7L64.0,24.6L68.0,24.6L72.0,24.5L76.0,24.4L80.0,24.4L84.0,24.4L88.0,24.4L92.0,24.4L96.0,24.4L100.0,24.4L104.0,24.5L108.0,24.6L112.0,24.7L116.0,24.8L120.0,25.0L124.0,25.1' stroke-width='0.62'/%3e%3c/g%3e%3cg stroke='%232E8266'%3e%3cpath d='M-4.0,-0.1L0.0,-0.1L4.0,-0.0L8.0,0.0L12.0,0.1L16.0,0.2L20.0,0.2L24.0,0.3L28.0,0.4L32.0,0.5L36.0,0.6L40.0,0.7L44.0,0.7L48.0,0.8L52.0,0.8L56.0,0.8L60.0,0.8L64.0,0.8L68.0,0.8L72.0,0.8L76.0,0.7L80.0,0.6L84.0,0.6L88.0,0.5L92.0,0.4L96.0,0.4L100.0,0.3L104.0,0.2L108.0,0.1L112.0,0.1L116.0,0.0L120.0,0.0L124.0,0.0' stroke-width='0.94'/%3e%3cpath d='M-4.0,1.0L0.0,1.1L4.0,1.1L8.0,1.2L12.0,1.3L16.0,1.4L20.0,1.5L24.0,1.6L28.0,1.7L32.0,1.7L36.0,1.8L40.0,1.9L44.0,1.9L48.0,2.0L52.0,2.0L56.0,2.0L60.0,2.0L64.0,2.0L68.0,2.0L72.0,1.9L76.0,1.9L80.0,1.8L84.0,1.7L88.0,1.7L92.0,1.6L96.0,1.5L100.0,1.4L104.0,1.4L108.0,1.3L112.0,1.2L116.0,1.2L120.0,1.2L124.0,1.2' stroke-width='1.31'/%3e%3cpath d='M-4.0,3.5L0.0,3.6L4.0,3.7L8.0,3.8L12.0,3.9L16.0,3.9L20.0,4.0L24.0,4.1L28.0,4.2L32.0,4.3L36.0,4.3L40.0,4.4L44.0,4.4L48.0,4.5L52.0,4.5L56.0,4.5L60.0,4.4L64.0,4.4L68.0,4.4L72.0,4.3L76.0,4.2L80.0,4.2L84.0,4.1L88.0,4.0L92.0,3.9L96.0,3.9L100.0,3.8L104.0,3.7L108.0,3.7L112.0,3.6L116.0,3.6L120.0,3.6L124.0,3.6' stroke-width='0.90'/%3e%3cpath d='M-4.0,4.7L0.0,4.8L4.0,4.9L8.0,5.0L12.0,5.1L16.0,5.1L20.0,5.2L24.0,5.3L28.0,5.4L32.0,5.5L36.0,5.5L40.0,5.6L44.0,5.6L48.0,5.6L52.0,5.6L56.0,5.6L60.0,5.6L64.0,5.5L68.0,5.5L72.0,5.4L76.0,5.4L80.0,5.3L84.0,5.2L88.0,5.1L92.0,5.0L96.0,5.0L100.0,4.9L104.0,4.8L108.0,4.8L112.0,4.8L116.0,4.7L120.0,4.7L124.0,4.7' stroke-width='1.03'/%3e%3cpath d='M-4.0,6.1L0.0,6.1L4.0,6.2L8.0,6.3L12.0,6.4L16.0,6.5L20.0,6.6L24.0,6.7L28.0,6.7L32.0,6.8L36.0,6.8L40.0,6.9L44.0,6.9L48.0,6.9L52.0,6.9L56.0,6.9L60.0,6.8L64.0,6.8L68.0,6.7L72.0,6.7L76.0,6.6L80.0,6.5L84.0,6.4L88.0,6.4L92.0,6.3L96.0,6.2L100.0,6.2L104.0,6.1L108.0,6.1L112.0,6.0L116.0,6.0L120.0,6.0L124.0,6.1' stroke-width='1.00'/%3e%3cpath d='M-4.0,7.3L0.0,7.3L4.0,7.4L8.0,7.5L12.0,7.6L16.0,7.7L20.0,7.8L24.0,7.8L28.0,7.9L32.0,8.0L36.0,8.0L40.0,8.0L44.0,8.0L48.0,8.0L52.0,8.0L56.0,8.0L60.0,8.0L64.0,7.9L68.0,7.9L72.0,7.8L76.0,7.7L80.0,7.6L84.0,7.5L88.0,7.5L92.0,7.4L96.0,7.3L100.0,7.3L104.0,7.2L108.0,7.2L112.0,7.2L116.0,7.2L120.0,7.2L124.0,7.2' stroke-width='1.05'/%3e%3cpath d='M-4.0,8.5L0.0,8.5L4.0,8.6L8.0,8.7L12.0,8.8L16.0,8.9L20.0,8.9L24.0,9.0L28.0,9.1L32.0,9.1L36.0,9.2L40.0,9.2L44.0,9.2L48.0,9.2L52.0,9.2L56.0,9.1L60.0,9.1L64.0,9.0L68.0,9.0L72.0,8.9L76.0,8.8L80.0,8.7L84.0,8.7L88.0,8.6L92.0,8.5L96.0,8.4L100.0,8.4L104.0,8.3L108.0,8.3L112.0,8.3L116.0,8.3L120.0,8.3L124.0,8.4' stroke-width='0.79'/%3e%3cpath d='M-4.0,11.0L0.0,11.1L4.0,11.2L8.0,11.2L12.0,11.3L16.0,11.4L20.0,11.5L24.0,11.5L28.0,11.6L32.0,11.6L36.0,11.6L40.0,11.6L44.0,11.6L48.0,11.6L52.0,11.6L56.0,11.5L60.0,11.5L64.0,11.4L68.0,11.3L72.0,11.3L76.0,11.2L80.0,11.1L84.0,11.0L88.0,10.9L92.0,10.9L96.0,10.8L100.0,10.8L104.0,10.7L108.0,10.7L112.0,10.7L116.0,10.8L120.0,10.8L124.0,10.9' stroke-width='1.36'/%3e%3cpath d='M-4.0,12.4L0.0,12.5L4.0,12.6L8.0,12.6L12.0,12.7L16.0,12.8L20.0,12.9L24.0,12.9L28.0,12.9L32.0,13.0L36.0,13.0L40.0,13.0L44.0,13.0L48.0,12.9L52.0,12.9L56.0,12.8L60.0,12.8L64.0,12.7L68.0,12.6L72.0,12.6L76.0,12.5L80.0,12.4L84.0,12.3L88.0,12.2L92.0,12.2L96.0,12.1L100.0,12.1L104.0,12.1L108.0,12.1L112.0,12.1L116.0,12.1L120.0,12.2L124.0,12.2' stroke-width='0.73'/%3e%3c/g%3e%3cg stroke='%235CAA89' opacity='.45'%3e%3cpath d='M-4.0,15.8L0.0,15.9L4.0,15.9L8.0,16.0L12.0,16.1L16.0,16.1L20.0,16.2L24.0,16.2L28.0,16.2L32.0,16.2L36.0,16.2L40.0,16.2L44.0,16.2L48.0,16.1L52.0,16.1L56.0,16.0L60.0,15.9L64.0,15.9L68.0,15.8L72.0,15.7L76.0,15.6L80.0,15.5L84.0,15.5L88.0,15.4L92.0,15.3L96.0,15.3L100.0,15.3L104.0,15.3L108.0,15.3L112.0,15.4L116.0,15.4L120.0,15.5L124.0,15.6' stroke-width='0.69'/%3e%3cpath d='M-4.0,14.5L0.0,14.6L4.0,14.7L8.0,14.8L12.0,14.8L16.0,14.9L20.0,15.0L24.0,15.0L28.0,15.0L32.0,15.0L36.0,15.0L40.0,15.0L44.0,15.0L48.0,15.0L52.0,14.9L56.0,14.8L60.0,14.8L64.0,14.7L68.0,14.6L72.0,14.5L76.0,14.4L80.0,14.4L84.0,14.3L88.0,14.2L92.0,14.2L96.0,14.1L100.0,14.1L104.0,14.1L108.0,14.1L112.0,14.1L116.0,14.2L120.0,14.3L124.0,14.3' stroke-width='0.60'/%3e%3cpath d='M-4.0,15.4L0.0,15.5L4.0,15.5L8.0,15.6L12.0,15.7L16.0,15.7L20.0,15.8L24.0,15.8L28.0,15.9L32.0,15.9L36.0,15.9L40.0,15.8L44.0,15.8L48.0,15.8L52.0,15.7L56.0,15.6L60.0,15.6L64.0,15.5L68.0,15.4L72.0,15.3L76.0,15.2L80.0,15.1L84.0,15.1L88.0,15.0L92.0,15.0L96.0,14.9L100.0,14.9L104.0,14.9L108.0,14.9L112.0,15.0L116.0,15.0L120.0,15.1L124.0,15.2' stroke-width='0.47'/%3e%3cpath d='M-4.0,11.3L0.0,11.4L4.0,11.5L8.0,11.6L12.0,11.7L16.0,11.7L20.0,11.8L24.0,11.9L28.0,11.9L32.0,11.9L36.0,12.0L40.0,12.0L44.0,12.0L48.0,11.9L52.0,11.9L56.0,11.9L60.0,11.8L64.0,11.7L68.0,11.6L72.0,11.6L76.0,11.5L80.0,11.4L84.0,11.3L88.0,11.3L92.0,11.2L96.0,11.1L100.0,11.1L104.0,11.1L108.0,11.1L112.0,11.1L116.0,11.1L120.0,11.1L124.0,11.2' stroke-width='0.45'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e");
|
|
130
|
+
--ak-weave-secondary-light: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 36' preserveAspectRatio='none'%3e%3crect width='120' height='36' fill='%23CBC5B4'/%3e%3cg fill='none' stroke-linecap='round'%3e%3cg stroke='%23C9C4B4' opacity='.5'%3e%3cpath d='M-4.0,0.8L0.0,0.9L4.0,1.0L8.0,1.0L12.0,1.1L16.0,1.2L20.0,1.3L24.0,1.4L28.0,1.5L32.0,1.5L36.0,1.6L40.0,1.7L44.0,1.7L48.0,1.8L52.0,1.8L56.0,1.8L60.0,1.8L64.0,1.8L68.0,1.8L72.0,1.7L76.0,1.7L80.0,1.6L84.0,1.5L88.0,1.5L92.0,1.4L96.0,1.3L100.0,1.2L104.0,1.2L108.0,1.1L112.0,1.1L116.0,1.0L120.0,1.0L124.0,1.0' stroke-width='0.78'/%3e%3cpath d='M-4.0,3.3L0.0,3.4L4.0,3.4L8.0,3.5L12.0,3.6L16.0,3.7L20.0,3.8L24.0,3.9L28.0,4.0L32.0,4.0L36.0,4.1L40.0,4.1L44.0,4.2L48.0,4.2L52.0,4.2L56.0,4.2L60.0,4.2L64.0,4.2L68.0,4.1L72.0,4.1L76.0,4.0L80.0,3.9L84.0,3.9L88.0,3.8L92.0,3.7L96.0,3.6L100.0,3.6L104.0,3.5L108.0,3.4L112.0,3.4L116.0,3.4L120.0,3.4L124.0,3.4' stroke-width='0.59'/%3e%3cpath d='M-4.0,5.8L0.0,5.8L4.0,5.9L8.0,6.0L12.0,6.1L16.0,6.2L20.0,6.3L24.0,6.4L28.0,6.4L32.0,6.5L36.0,6.5L40.0,6.6L44.0,6.6L48.0,6.6L52.0,6.6L56.0,6.6L60.0,6.6L64.0,6.5L68.0,6.5L72.0,6.4L76.0,6.3L80.0,6.3L84.0,6.2L88.0,6.1L92.0,6.0L96.0,5.9L100.0,5.9L104.0,5.8L108.0,5.8L112.0,5.7L116.0,5.7L120.0,5.7L124.0,5.8' stroke-width='0.55'/%3e%3cpath d='M-4.0,8.3L0.0,8.3L4.0,8.4L8.0,8.5L12.0,8.6L16.0,8.7L20.0,8.8L24.0,8.8L28.0,8.9L32.0,8.9L36.0,9.0L40.0,9.0L44.0,9.0L48.0,9.0L52.0,9.0L56.0,9.0L60.0,8.9L64.0,8.9L68.0,8.8L72.0,8.7L76.0,8.6L80.0,8.6L84.0,8.5L88.0,8.4L92.0,8.3L96.0,8.3L100.0,8.2L104.0,8.2L108.0,8.1L112.0,8.1L116.0,8.1L120.0,8.1L124.0,8.2' stroke-width='0.78'/%3e%3cpath d='M-4.0,10.7L0.0,10.8L4.0,10.9L8.0,11.0L12.0,11.1L16.0,11.2L20.0,11.2L24.0,11.3L28.0,11.3L32.0,11.4L36.0,11.4L40.0,11.4L44.0,11.4L48.0,11.4L52.0,11.4L56.0,11.3L60.0,11.3L64.0,11.2L68.0,11.1L72.0,11.0L76.0,11.0L80.0,10.9L84.0,10.8L88.0,10.7L92.0,10.6L96.0,10.6L100.0,10.5L104.0,10.5L108.0,10.5L112.0,10.5L116.0,10.5L120.0,10.6L124.0,10.6' stroke-width='0.78'/%3e%3cpath d='M-4.0,13.2L0.0,13.3L4.0,13.4L8.0,13.5L12.0,13.6L16.0,13.6L20.0,13.7L24.0,13.7L28.0,13.8L32.0,13.8L36.0,13.8L40.0,13.8L44.0,13.8L48.0,13.8L52.0,13.7L56.0,13.6L60.0,13.6L64.0,13.5L68.0,13.4L72.0,13.3L76.0,13.3L80.0,13.2L84.0,13.1L88.0,13.0L92.0,13.0L96.0,12.9L100.0,12.9L104.0,12.9L108.0,12.9L112.0,12.9L116.0,12.9L120.0,13.0L124.0,13.1' stroke-width='0.67'/%3e%3cpath d='M-4.0,15.7L0.0,15.8L4.0,15.9L8.0,16.0L12.0,16.0L16.0,16.1L20.0,16.1L24.0,16.2L28.0,16.2L32.0,16.2L36.0,16.2L40.0,16.2L44.0,16.2L48.0,16.1L52.0,16.0L56.0,16.0L60.0,15.9L64.0,15.8L68.0,15.7L72.0,15.6L76.0,15.6L80.0,15.5L84.0,15.4L88.0,15.4L92.0,15.3L96.0,15.3L100.0,15.3L104.0,15.3L108.0,15.3L112.0,15.3L116.0,15.4L120.0,15.4L124.0,15.5' stroke-width='0.79'/%3e%3cpath d='M-4.0,18.2L0.0,18.3L4.0,18.4L8.0,18.4L12.0,18.5L16.0,18.6L20.0,18.6L24.0,18.6L28.0,18.6L32.0,18.6L36.0,18.6L40.0,18.5L44.0,18.5L48.0,18.4L52.0,18.4L56.0,18.3L60.0,18.2L64.0,18.1L68.0,18.0L72.0,18.0L76.0,17.9L80.0,17.8L84.0,17.7L88.0,17.7L92.0,17.7L96.0,17.6L100.0,17.6L104.0,17.7L108.0,17.7L112.0,17.8L116.0,17.8L120.0,17.9L124.0,18.0' stroke-width='0.61'/%3e%3cpath d='M-4.0,20.7L0.0,20.8L4.0,20.9L8.0,20.9L12.0,21.0L16.0,21.0L20.0,21.0L24.0,21.0L28.0,21.0L32.0,21.0L36.0,20.9L40.0,20.9L44.0,20.8L48.0,20.8L52.0,20.7L56.0,20.6L60.0,20.5L64.0,20.4L68.0,20.3L72.0,20.3L76.0,20.2L80.0,20.1L84.0,20.1L88.0,20.0L92.0,20.0L96.0,20.0L100.0,20.0L104.0,20.1L108.0,20.1L112.0,20.2L116.0,20.3L120.0,20.4L124.0,20.5' stroke-width='0.60'/%3e%3cpath d='M-4.0,23.2L0.0,23.3L4.0,23.3L8.0,23.4L12.0,23.4L16.0,23.4L20.0,23.4L24.0,23.4L28.0,23.4L32.0,23.3L36.0,23.3L40.0,23.2L44.0,23.2L48.0,23.1L52.0,23.0L56.0,22.9L60.0,22.8L64.0,22.7L68.0,22.7L72.0,22.6L76.0,22.5L80.0,22.5L84.0,22.4L88.0,22.4L92.0,22.4L96.0,22.4L100.0,22.5L104.0,22.5L108.0,22.6L112.0,22.7L116.0,22.8L120.0,22.9L124.0,23.0' stroke-width='0.80'/%3e%3cpath d='M-4.0,25.7L0.0,25.7L4.0,25.8L8.0,25.8L12.0,25.8L16.0,25.8L20.0,25.8L24.0,25.8L28.0,25.7L32.0,25.7L36.0,25.6L40.0,25.6L44.0,25.5L48.0,25.4L52.0,25.3L56.0,25.2L60.0,25.1L64.0,25.0L68.0,25.0L72.0,24.9L76.0,24.8L80.0,24.8L84.0,24.8L88.0,24.8L92.0,24.8L96.0,24.8L100.0,24.9L104.0,25.0L108.0,25.0L112.0,25.2L116.0,25.3L120.0,25.4L124.0,25.6' stroke-width='0.58'/%3e%3cpath d='M-4.0,28.1L0.0,28.2L4.0,28.2L8.0,28.2L12.0,28.2L16.0,28.2L20.0,28.2L24.0,28.1L28.0,28.1L32.0,28.0L36.0,28.0L40.0,27.9L44.0,27.8L48.0,27.7L52.0,27.6L56.0,27.5L60.0,27.4L64.0,27.4L68.0,27.3L72.0,27.2L76.0,27.2L80.0,27.2L84.0,27.2L88.0,27.2L92.0,27.2L96.0,27.3L100.0,27.3L104.0,27.4L108.0,27.5L112.0,27.7L116.0,27.8L120.0,27.9L124.0,28.1' stroke-width='0.70'/%3e%3cpath d='M-4.0,30.6L0.0,30.6L4.0,30.6L8.0,30.6L12.0,30.6L16.0,30.6L20.0,30.6L24.0,30.5L28.0,30.4L32.0,30.4L36.0,30.3L40.0,30.2L44.0,30.1L48.0,30.0L52.0,29.9L56.0,29.8L60.0,29.7L64.0,29.7L68.0,29.6L72.0,29.6L76.0,29.5L80.0,29.5L84.0,29.6L88.0,29.6L92.0,29.6L96.0,29.7L100.0,29.8L104.0,29.9L108.0,30.0L112.0,30.2L116.0,30.3L120.0,30.5L124.0,30.6' stroke-width='0.73'/%3e%3cpath d='M-4.0,33.0L0.0,33.0L4.0,33.0L8.0,33.0L12.0,33.0L16.0,33.0L20.0,32.9L24.0,32.8L28.0,32.8L32.0,32.7L36.0,32.6L40.0,32.5L44.0,32.4L48.0,32.3L52.0,32.2L56.0,32.1L60.0,32.1L64.0,32.0L68.0,32.0L72.0,31.9L76.0,31.9L80.0,31.9L84.0,32.0L88.0,32.0L92.0,32.1L96.0,32.2L100.0,32.3L104.0,32.4L108.0,32.5L112.0,32.7L116.0,32.8L120.0,33.0L124.0,33.2' stroke-width='0.70'/%3e%3cpath d='M-4.0,35.4L0.0,35.4L4.0,35.4L8.0,35.4L12.0,35.4L16.0,35.3L20.0,35.2L24.0,35.2L28.0,35.1L32.0,35.0L36.0,34.9L40.0,34.8L44.0,34.7L48.0,34.6L52.0,34.5L56.0,34.4L60.0,34.4L64.0,34.3L68.0,34.3L72.0,34.3L76.0,34.3L80.0,34.3L84.0,34.4L88.0,34.5L92.0,34.5L96.0,34.7L100.0,34.8L104.0,34.9L108.0,35.1L112.0,35.2L116.0,35.4L120.0,35.6L124.0,35.7' stroke-width='0.53'/%3e%3c/g%3e%3cg stroke='%23E4E0D3'%3e%3c/g%3e%3cg stroke='%23E8E5D9'%3e%3cpath d='M-4.0,26.5L0.0,26.6L4.0,26.6L8.0,26.6L12.0,26.6L16.0,26.6L20.0,26.6L24.0,26.6L28.0,26.6L32.0,26.5L36.0,26.4L40.0,26.4L44.0,26.3L48.0,26.2L52.0,26.1L56.0,26.0L60.0,25.9L64.0,25.8L68.0,25.8L72.0,25.7L76.0,25.6L80.0,25.6L84.0,25.6L88.0,25.6L92.0,25.6L96.0,25.7L100.0,25.7L104.0,25.8L108.0,25.9L112.0,26.0L116.0,26.1L120.0,26.3L124.0,26.4' stroke-width='0.76'/%3e%3cpath d='M-4.0,31.6L0.0,31.6L4.0,31.7L8.0,31.7L12.0,31.6L16.0,31.6L20.0,31.6L24.0,31.5L28.0,31.4L32.0,31.3L36.0,31.3L40.0,31.2L44.0,31.1L48.0,31.0L52.0,30.9L56.0,30.8L60.0,30.7L64.0,30.7L68.0,30.6L72.0,30.6L76.0,30.6L80.0,30.6L84.0,30.6L88.0,30.6L92.0,30.7L96.0,30.8L100.0,30.9L104.0,31.0L108.0,31.1L112.0,31.2L116.0,31.4L120.0,31.6L124.0,31.7' stroke-width='0.87'/%3e%3cpath d='M-4.0,34.0L0.0,34.0L4.0,34.0L8.0,34.0L12.0,33.9L16.0,33.9L20.0,33.8L24.0,33.7L28.0,33.7L32.0,33.6L36.0,33.5L40.0,33.4L44.0,33.3L48.0,33.2L52.0,33.1L56.0,33.0L60.0,33.0L64.0,32.9L68.0,32.9L72.0,32.9L76.0,32.8L80.0,32.9L84.0,32.9L88.0,33.0L92.0,33.0L96.0,33.1L100.0,33.2L104.0,33.4L108.0,33.5L112.0,33.7L116.0,33.8L120.0,34.0L124.0,34.2' stroke-width='0.86'/%3e%3cpath d='M-4.0,36.4L0.0,36.4L4.0,36.3L8.0,36.3L12.0,36.3L16.0,36.2L20.0,36.1L24.0,36.0L28.0,36.0L32.0,35.9L36.0,35.8L40.0,35.7L44.0,35.6L48.0,35.5L52.0,35.4L56.0,35.3L60.0,35.3L64.0,35.2L68.0,35.2L72.0,35.2L76.0,35.2L80.0,35.3L84.0,35.3L88.0,35.4L92.0,35.5L96.0,35.6L100.0,35.7L104.0,35.9L108.0,36.0L112.0,36.2L116.0,36.4L120.0,36.5L124.0,36.7' stroke-width='0.86'/%3e%3c/g%3e%3cg stroke='%23EDEAE0'%3e%3cpath d='M-4.0,16.4L0.0,16.5L4.0,16.5L8.0,16.6L12.0,16.7L16.0,16.7L20.0,16.8L24.0,16.8L28.0,16.8L32.0,16.8L36.0,16.8L40.0,16.8L44.0,16.8L48.0,16.7L52.0,16.6L56.0,16.6L60.0,16.5L64.0,16.4L68.0,16.3L72.0,16.2L76.0,16.2L80.0,16.1L84.0,16.0L88.0,16.0L92.0,15.9L96.0,15.9L100.0,15.9L104.0,15.9L108.0,15.9L112.0,15.9L116.0,16.0L120.0,16.1L124.0,16.2' stroke-width='0.62'/%3e%3cpath d='M-4.0,17.7L0.0,17.8L4.0,17.8L8.0,17.9L12.0,18.0L16.0,18.0L20.0,18.1L24.0,18.1L28.0,18.1L32.0,18.1L36.0,18.1L40.0,18.0L44.0,18.0L48.0,17.9L52.0,17.9L56.0,17.8L60.0,17.7L64.0,17.6L68.0,17.5L72.0,17.5L76.0,17.4L80.0,17.3L84.0,17.2L88.0,17.2L92.0,17.1L96.0,17.1L100.0,17.1L104.0,17.1L108.0,17.2L112.0,17.2L116.0,17.3L120.0,17.4L124.0,17.5' stroke-width='0.66'/%3e%3cpath d='M-4.0,19.0L0.0,19.1L4.0,19.1L8.0,19.2L12.0,19.3L16.0,19.3L20.0,19.3L24.0,19.3L28.0,19.4L32.0,19.3L36.0,19.3L40.0,19.3L44.0,19.2L48.0,19.2L52.0,19.1L56.0,19.0L60.0,18.9L64.0,18.8L68.0,18.7L72.0,18.7L76.0,18.6L80.0,18.5L84.0,18.5L88.0,18.4L92.0,18.4L96.0,18.4L100.0,18.4L104.0,18.4L108.0,18.4L112.0,18.5L116.0,18.6L120.0,18.7L124.0,18.8' stroke-width='0.79'/%3e%3cpath d='M-4.0,22.8L0.0,22.8L4.0,22.9L8.0,22.9L12.0,23.0L16.0,23.0L20.0,23.0L24.0,23.0L28.0,23.0L32.0,22.9L36.0,22.9L40.0,22.8L44.0,22.8L48.0,22.7L52.0,22.6L56.0,22.5L60.0,22.4L64.0,22.3L68.0,22.3L72.0,22.2L76.0,22.1L80.0,22.1L84.0,22.0L88.0,22.0L92.0,22.0L96.0,22.0L100.0,22.0L104.0,22.1L108.0,22.2L112.0,22.2L116.0,22.3L120.0,22.5L124.0,22.6' stroke-width='1.18'/%3e%3cpath d='M-4.0,23.9L0.0,23.9L4.0,24.0L8.0,24.0L12.0,24.1L16.0,24.1L20.0,24.1L24.0,24.1L28.0,24.0L32.0,24.0L36.0,23.9L40.0,23.9L44.0,23.8L48.0,23.7L52.0,23.6L56.0,23.6L60.0,23.5L64.0,23.4L68.0,23.3L72.0,23.2L76.0,23.2L80.0,23.1L84.0,23.1L88.0,23.1L92.0,23.1L96.0,23.1L100.0,23.1L104.0,23.2L108.0,23.3L112.0,23.4L116.0,23.5L120.0,23.6L124.0,23.7' stroke-width='0.84'/%3e%3cpath d='M-4.0,27.9L0.0,27.9L4.0,28.0L8.0,28.0L12.0,28.0L16.0,28.0L20.0,28.0L24.0,27.9L28.0,27.9L32.0,27.8L36.0,27.7L40.0,27.6L44.0,27.6L48.0,27.5L52.0,27.4L56.0,27.3L60.0,27.2L64.0,27.1L68.0,27.1L72.0,27.0L76.0,27.0L80.0,26.9L84.0,26.9L88.0,26.9L92.0,27.0L96.0,27.0L100.0,27.1L104.0,27.2L108.0,27.3L112.0,27.4L116.0,27.5L120.0,27.7L124.0,27.8' stroke-width='1.31'/%3e%3cpath d='M-4.0,29.2L0.0,29.2L4.0,29.2L8.0,29.2L12.0,29.2L16.0,29.2L20.0,29.2L24.0,29.1L28.0,29.1L32.0,29.0L36.0,28.9L40.0,28.8L44.0,28.7L48.0,28.7L52.0,28.6L56.0,28.5L60.0,28.4L64.0,28.3L68.0,28.3L72.0,28.2L76.0,28.2L80.0,28.2L84.0,28.2L88.0,28.2L92.0,28.2L96.0,28.3L100.0,28.4L104.0,28.5L108.0,28.6L112.0,28.7L116.0,28.8L120.0,29.0L124.0,29.1' stroke-width='1.29'/%3e%3cpath d='M-4.0,30.5L0.0,30.5L4.0,30.5L8.0,30.5L12.0,30.5L16.0,30.5L20.0,30.5L24.0,30.4L28.0,30.3L32.0,30.3L36.0,30.2L40.0,30.1L44.0,30.0L48.0,29.9L52.0,29.8L56.0,29.7L60.0,29.7L64.0,29.6L68.0,29.5L72.0,29.5L76.0,29.5L80.0,29.5L84.0,29.5L88.0,29.5L92.0,29.5L96.0,29.6L100.0,29.7L104.0,29.8L108.0,29.9L112.0,30.1L116.0,30.2L120.0,30.4L124.0,30.5' stroke-width='0.89'/%3e%3cpath d='M-4.0,32.7L0.0,32.7L4.0,32.7L8.0,32.7L12.0,32.7L16.0,32.7L20.0,32.6L24.0,32.6L28.0,32.5L32.0,32.4L36.0,32.3L40.0,32.2L44.0,32.1L48.0,32.0L52.0,31.9L56.0,31.9L60.0,31.8L64.0,31.7L68.0,31.7L72.0,31.6L76.0,31.6L80.0,31.6L84.0,31.7L88.0,31.7L92.0,31.8L96.0,31.9L100.0,32.0L104.0,32.1L108.0,32.2L112.0,32.4L116.0,32.5L120.0,32.7L124.0,32.9' stroke-width='0.66'/%3e%3cpath d='M-4.0,35.2L0.0,35.2L4.0,35.2L8.0,35.1L12.0,35.1L16.0,35.0L20.0,35.0L24.0,34.9L28.0,34.8L32.0,34.7L36.0,34.6L40.0,34.5L44.0,34.4L48.0,34.3L52.0,34.3L56.0,34.2L60.0,34.1L64.0,34.1L68.0,34.0L72.0,34.0L76.0,34.0L80.0,34.1L84.0,34.1L88.0,34.2L92.0,34.3L96.0,34.4L100.0,34.5L104.0,34.6L108.0,34.8L112.0,34.9L116.0,35.1L120.0,35.3L124.0,35.4' stroke-width='0.70'/%3e%3c/g%3e%3cg stroke='%23F1EEE6'%3e%3cpath d='M-4.0,2.2L0.0,2.3L4.0,2.3L8.0,2.4L12.0,2.5L16.0,2.6L20.0,2.7L24.0,2.8L28.0,2.8L32.0,2.9L36.0,3.0L40.0,3.0L44.0,3.1L48.0,3.1L52.0,3.1L56.0,3.1L60.0,3.1L64.0,3.1L68.0,3.1L72.0,3.0L76.0,3.0L80.0,2.9L84.0,2.8L88.0,2.7L92.0,2.7L96.0,2.6L100.0,2.5L104.0,2.4L108.0,2.4L112.0,2.3L116.0,2.3L120.0,2.3L124.0,2.3' stroke-width='0.91'/%3e%3cpath d='M-4.0,9.8L0.0,9.8L4.0,9.9L8.0,10.0L12.0,10.1L16.0,10.2L20.0,10.3L24.0,10.3L28.0,10.4L32.0,10.4L36.0,10.5L40.0,10.5L44.0,10.5L48.0,10.5L52.0,10.4L56.0,10.4L60.0,10.3L64.0,10.3L68.0,10.2L72.0,10.1L76.0,10.0L80.0,10.0L84.0,9.9L88.0,9.8L92.0,9.7L96.0,9.7L100.0,9.6L104.0,9.6L108.0,9.6L112.0,9.6L116.0,9.6L120.0,9.6L124.0,9.7' stroke-width='1.37'/%3e%3cpath d='M-4.0,13.8L0.0,13.9L4.0,13.9L8.0,14.0L12.0,14.1L16.0,14.2L20.0,14.2L24.0,14.3L28.0,14.3L32.0,14.3L36.0,14.3L40.0,14.3L44.0,14.3L48.0,14.3L52.0,14.2L56.0,14.2L60.0,14.1L64.0,14.0L68.0,13.9L72.0,13.8L76.0,13.8L80.0,13.7L84.0,13.6L88.0,13.5L92.0,13.5L96.0,13.4L100.0,13.4L104.0,13.4L108.0,13.4L112.0,13.4L116.0,13.5L120.0,13.5L124.0,13.6' stroke-width='0.73'/%3e%3cpath d='M-4.0,15.1L0.0,15.2L4.0,15.3L8.0,15.4L12.0,15.5L16.0,15.5L20.0,15.6L24.0,15.6L28.0,15.6L32.0,15.6L36.0,15.6L40.0,15.6L44.0,15.6L48.0,15.6L52.0,15.5L56.0,15.4L60.0,15.4L64.0,15.3L68.0,15.2L72.0,15.1L76.0,15.0L80.0,14.9L84.0,14.9L88.0,14.8L92.0,14.8L96.0,14.7L100.0,14.7L104.0,14.7L108.0,14.7L112.0,14.7L116.0,14.8L120.0,14.9L124.0,15.0' stroke-width='0.85'/%3e%3cpath d='M-4.0,20.3L0.0,20.4L4.0,20.5L8.0,20.5L12.0,20.6L16.0,20.6L20.0,20.7L24.0,20.7L28.0,20.7L32.0,20.6L36.0,20.6L40.0,20.5L44.0,20.5L48.0,20.4L52.0,20.3L56.0,20.3L60.0,20.2L64.0,20.1L68.0,20.0L72.0,19.9L76.0,19.8L80.0,19.8L84.0,19.7L88.0,19.7L92.0,19.7L96.0,19.7L100.0,19.7L104.0,19.7L108.0,19.8L112.0,19.8L116.0,19.9L120.0,20.0L124.0,20.1' stroke-width='1.00'/%3e%3cpath d='M-4.0,21.5L0.0,21.6L4.0,21.7L8.0,21.7L12.0,21.8L16.0,21.8L20.0,21.8L24.0,21.8L28.0,21.8L32.0,21.8L36.0,21.7L40.0,21.7L44.0,21.6L48.0,21.5L52.0,21.5L56.0,21.4L60.0,21.3L64.0,21.2L68.0,21.1L72.0,21.0L76.0,21.0L80.0,20.9L84.0,20.9L88.0,20.8L92.0,20.8L96.0,20.8L100.0,20.8L104.0,20.9L108.0,20.9L112.0,21.0L116.0,21.1L120.0,21.2L124.0,21.4' stroke-width='1.29'/%3e%3cpath d='M-4.0,25.2L0.0,25.3L4.0,25.3L8.0,25.4L12.0,25.4L16.0,25.4L20.0,25.4L24.0,25.4L28.0,25.3L32.0,25.3L36.0,25.2L40.0,25.1L44.0,25.1L48.0,25.0L52.0,24.9L56.0,24.8L60.0,24.7L64.0,24.6L68.0,24.6L72.0,24.5L76.0,24.4L80.0,24.4L84.0,24.4L88.0,24.4L92.0,24.4L96.0,24.4L100.0,24.4L104.0,24.5L108.0,24.6L112.0,24.7L116.0,24.8L120.0,25.0L124.0,25.1' stroke-width='0.62'/%3e%3c/g%3e%3cg stroke='%23F5F3EC'%3e%3cpath d='M-4.0,-0.1L0.0,-0.1L4.0,-0.0L8.0,0.0L12.0,0.1L16.0,0.2L20.0,0.2L24.0,0.3L28.0,0.4L32.0,0.5L36.0,0.6L40.0,0.7L44.0,0.7L48.0,0.8L52.0,0.8L56.0,0.8L60.0,0.8L64.0,0.8L68.0,0.8L72.0,0.8L76.0,0.7L80.0,0.6L84.0,0.6L88.0,0.5L92.0,0.4L96.0,0.4L100.0,0.3L104.0,0.2L108.0,0.1L112.0,0.1L116.0,0.0L120.0,0.0L124.0,0.0' stroke-width='0.94'/%3e%3cpath d='M-4.0,1.0L0.0,1.1L4.0,1.1L8.0,1.2L12.0,1.3L16.0,1.4L20.0,1.5L24.0,1.6L28.0,1.7L32.0,1.7L36.0,1.8L40.0,1.9L44.0,1.9L48.0,2.0L52.0,2.0L56.0,2.0L60.0,2.0L64.0,2.0L68.0,2.0L72.0,1.9L76.0,1.9L80.0,1.8L84.0,1.7L88.0,1.7L92.0,1.6L96.0,1.5L100.0,1.4L104.0,1.4L108.0,1.3L112.0,1.2L116.0,1.2L120.0,1.2L124.0,1.2' stroke-width='1.31'/%3e%3cpath d='M-4.0,3.5L0.0,3.6L4.0,3.7L8.0,3.8L12.0,3.9L16.0,3.9L20.0,4.0L24.0,4.1L28.0,4.2L32.0,4.3L36.0,4.3L40.0,4.4L44.0,4.4L48.0,4.5L52.0,4.5L56.0,4.5L60.0,4.4L64.0,4.4L68.0,4.4L72.0,4.3L76.0,4.2L80.0,4.2L84.0,4.1L88.0,4.0L92.0,3.9L96.0,3.9L100.0,3.8L104.0,3.7L108.0,3.7L112.0,3.6L116.0,3.6L120.0,3.6L124.0,3.6' stroke-width='0.90'/%3e%3cpath d='M-4.0,4.7L0.0,4.8L4.0,4.9L8.0,5.0L12.0,5.1L16.0,5.1L20.0,5.2L24.0,5.3L28.0,5.4L32.0,5.5L36.0,5.5L40.0,5.6L44.0,5.6L48.0,5.6L52.0,5.6L56.0,5.6L60.0,5.6L64.0,5.5L68.0,5.5L72.0,5.4L76.0,5.4L80.0,5.3L84.0,5.2L88.0,5.1L92.0,5.0L96.0,5.0L100.0,4.9L104.0,4.8L108.0,4.8L112.0,4.8L116.0,4.7L120.0,4.7L124.0,4.7' stroke-width='1.03'/%3e%3cpath d='M-4.0,6.1L0.0,6.1L4.0,6.2L8.0,6.3L12.0,6.4L16.0,6.5L20.0,6.6L24.0,6.7L28.0,6.7L32.0,6.8L36.0,6.8L40.0,6.9L44.0,6.9L48.0,6.9L52.0,6.9L56.0,6.9L60.0,6.8L64.0,6.8L68.0,6.7L72.0,6.7L76.0,6.6L80.0,6.5L84.0,6.4L88.0,6.4L92.0,6.3L96.0,6.2L100.0,6.2L104.0,6.1L108.0,6.1L112.0,6.0L116.0,6.0L120.0,6.0L124.0,6.1' stroke-width='1.00'/%3e%3cpath d='M-4.0,7.3L0.0,7.3L4.0,7.4L8.0,7.5L12.0,7.6L16.0,7.7L20.0,7.8L24.0,7.8L28.0,7.9L32.0,8.0L36.0,8.0L40.0,8.0L44.0,8.0L48.0,8.0L52.0,8.0L56.0,8.0L60.0,8.0L64.0,7.9L68.0,7.9L72.0,7.8L76.0,7.7L80.0,7.6L84.0,7.5L88.0,7.5L92.0,7.4L96.0,7.3L100.0,7.3L104.0,7.2L108.0,7.2L112.0,7.2L116.0,7.2L120.0,7.2L124.0,7.2' stroke-width='1.05'/%3e%3cpath d='M-4.0,8.5L0.0,8.5L4.0,8.6L8.0,8.7L12.0,8.8L16.0,8.9L20.0,8.9L24.0,9.0L28.0,9.1L32.0,9.1L36.0,9.2L40.0,9.2L44.0,9.2L48.0,9.2L52.0,9.2L56.0,9.1L60.0,9.1L64.0,9.0L68.0,9.0L72.0,8.9L76.0,8.8L80.0,8.7L84.0,8.7L88.0,8.6L92.0,8.5L96.0,8.4L100.0,8.4L104.0,8.3L108.0,8.3L112.0,8.3L116.0,8.3L120.0,8.3L124.0,8.4' stroke-width='0.79'/%3e%3cpath d='M-4.0,11.0L0.0,11.1L4.0,11.2L8.0,11.2L12.0,11.3L16.0,11.4L20.0,11.5L24.0,11.5L28.0,11.6L32.0,11.6L36.0,11.6L40.0,11.6L44.0,11.6L48.0,11.6L52.0,11.6L56.0,11.5L60.0,11.5L64.0,11.4L68.0,11.3L72.0,11.3L76.0,11.2L80.0,11.1L84.0,11.0L88.0,10.9L92.0,10.9L96.0,10.8L100.0,10.8L104.0,10.7L108.0,10.7L112.0,10.7L116.0,10.8L120.0,10.8L124.0,10.9' stroke-width='1.36'/%3e%3cpath d='M-4.0,12.4L0.0,12.5L4.0,12.6L8.0,12.6L12.0,12.7L16.0,12.8L20.0,12.9L24.0,12.9L28.0,12.9L32.0,13.0L36.0,13.0L40.0,13.0L44.0,13.0L48.0,12.9L52.0,12.9L56.0,12.8L60.0,12.8L64.0,12.7L68.0,12.6L72.0,12.6L76.0,12.5L80.0,12.4L84.0,12.3L88.0,12.2L92.0,12.2L96.0,12.1L100.0,12.1L104.0,12.1L108.0,12.1L112.0,12.1L116.0,12.1L120.0,12.2L124.0,12.2' stroke-width='0.73'/%3e%3c/g%3e%3cg stroke='%23FFFFFF' opacity='.45'%3e%3cpath d='M-4.0,15.8L0.0,15.9L4.0,15.9L8.0,16.0L12.0,16.1L16.0,16.1L20.0,16.2L24.0,16.2L28.0,16.2L32.0,16.2L36.0,16.2L40.0,16.2L44.0,16.2L48.0,16.1L52.0,16.1L56.0,16.0L60.0,15.9L64.0,15.9L68.0,15.8L72.0,15.7L76.0,15.6L80.0,15.5L84.0,15.5L88.0,15.4L92.0,15.3L96.0,15.3L100.0,15.3L104.0,15.3L108.0,15.3L112.0,15.4L116.0,15.4L120.0,15.5L124.0,15.6' stroke-width='0.69'/%3e%3cpath d='M-4.0,14.5L0.0,14.6L4.0,14.7L8.0,14.8L12.0,14.8L16.0,14.9L20.0,15.0L24.0,15.0L28.0,15.0L32.0,15.0L36.0,15.0L40.0,15.0L44.0,15.0L48.0,15.0L52.0,14.9L56.0,14.8L60.0,14.8L64.0,14.7L68.0,14.6L72.0,14.5L76.0,14.4L80.0,14.4L84.0,14.3L88.0,14.2L92.0,14.2L96.0,14.1L100.0,14.1L104.0,14.1L108.0,14.1L112.0,14.1L116.0,14.2L120.0,14.3L124.0,14.3' stroke-width='0.60'/%3e%3cpath d='M-4.0,15.4L0.0,15.5L4.0,15.5L8.0,15.6L12.0,15.7L16.0,15.7L20.0,15.8L24.0,15.8L28.0,15.9L32.0,15.9L36.0,15.9L40.0,15.8L44.0,15.8L48.0,15.8L52.0,15.7L56.0,15.6L60.0,15.6L64.0,15.5L68.0,15.4L72.0,15.3L76.0,15.2L80.0,15.1L84.0,15.1L88.0,15.0L92.0,15.0L96.0,14.9L100.0,14.9L104.0,14.9L108.0,14.9L112.0,15.0L116.0,15.0L120.0,15.1L124.0,15.2' stroke-width='0.47'/%3e%3cpath d='M-4.0,11.3L0.0,11.4L4.0,11.5L8.0,11.6L12.0,11.7L16.0,11.7L20.0,11.8L24.0,11.9L28.0,11.9L32.0,11.9L36.0,12.0L40.0,12.0L44.0,12.0L48.0,11.9L52.0,11.9L56.0,11.9L60.0,11.8L64.0,11.7L68.0,11.6L72.0,11.6L76.0,11.5L80.0,11.4L84.0,11.3L88.0,11.3L92.0,11.2L96.0,11.1L100.0,11.1L104.0,11.1L108.0,11.1L112.0,11.1L116.0,11.1L120.0,11.1L124.0,11.2' stroke-width='0.45'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e");
|
|
131
|
+
--ak-weave-primary-dark: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 36' preserveAspectRatio='none'%3e%3crect width='120' height='36' fill='%23173629'/%3e%3cg fill='none' stroke-linecap='round'%3e%3cg stroke='%231B4437' opacity='.5'%3e%3cpath d='M-4.0,0.8L0.0,0.9L4.0,1.0L8.0,1.0L12.0,1.1L16.0,1.2L20.0,1.3L24.0,1.4L28.0,1.5L32.0,1.5L36.0,1.6L40.0,1.7L44.0,1.7L48.0,1.8L52.0,1.8L56.0,1.8L60.0,1.8L64.0,1.8L68.0,1.8L72.0,1.7L76.0,1.7L80.0,1.6L84.0,1.5L88.0,1.5L92.0,1.4L96.0,1.3L100.0,1.2L104.0,1.2L108.0,1.1L112.0,1.1L116.0,1.0L120.0,1.0L124.0,1.0' stroke-width='0.78'/%3e%3cpath d='M-4.0,3.3L0.0,3.4L4.0,3.4L8.0,3.5L12.0,3.6L16.0,3.7L20.0,3.8L24.0,3.9L28.0,4.0L32.0,4.0L36.0,4.1L40.0,4.1L44.0,4.2L48.0,4.2L52.0,4.2L56.0,4.2L60.0,4.2L64.0,4.2L68.0,4.1L72.0,4.1L76.0,4.0L80.0,3.9L84.0,3.9L88.0,3.8L92.0,3.7L96.0,3.6L100.0,3.6L104.0,3.5L108.0,3.4L112.0,3.4L116.0,3.4L120.0,3.4L124.0,3.4' stroke-width='0.59'/%3e%3cpath d='M-4.0,5.8L0.0,5.8L4.0,5.9L8.0,6.0L12.0,6.1L16.0,6.2L20.0,6.3L24.0,6.4L28.0,6.4L32.0,6.5L36.0,6.5L40.0,6.6L44.0,6.6L48.0,6.6L52.0,6.6L56.0,6.6L60.0,6.6L64.0,6.5L68.0,6.5L72.0,6.4L76.0,6.3L80.0,6.3L84.0,6.2L88.0,6.1L92.0,6.0L96.0,5.9L100.0,5.9L104.0,5.8L108.0,5.8L112.0,5.7L116.0,5.7L120.0,5.7L124.0,5.8' stroke-width='0.55'/%3e%3cpath d='M-4.0,8.3L0.0,8.3L4.0,8.4L8.0,8.5L12.0,8.6L16.0,8.7L20.0,8.8L24.0,8.8L28.0,8.9L32.0,8.9L36.0,9.0L40.0,9.0L44.0,9.0L48.0,9.0L52.0,9.0L56.0,9.0L60.0,8.9L64.0,8.9L68.0,8.8L72.0,8.7L76.0,8.6L80.0,8.6L84.0,8.5L88.0,8.4L92.0,8.3L96.0,8.3L100.0,8.2L104.0,8.2L108.0,8.1L112.0,8.1L116.0,8.1L120.0,8.1L124.0,8.2' stroke-width='0.78'/%3e%3cpath d='M-4.0,10.7L0.0,10.8L4.0,10.9L8.0,11.0L12.0,11.1L16.0,11.2L20.0,11.2L24.0,11.3L28.0,11.3L32.0,11.4L36.0,11.4L40.0,11.4L44.0,11.4L48.0,11.4L52.0,11.4L56.0,11.3L60.0,11.3L64.0,11.2L68.0,11.1L72.0,11.0L76.0,11.0L80.0,10.9L84.0,10.8L88.0,10.7L92.0,10.6L96.0,10.6L100.0,10.5L104.0,10.5L108.0,10.5L112.0,10.5L116.0,10.5L120.0,10.6L124.0,10.6' stroke-width='0.78'/%3e%3cpath d='M-4.0,13.2L0.0,13.3L4.0,13.4L8.0,13.5L12.0,13.6L16.0,13.6L20.0,13.7L24.0,13.7L28.0,13.8L32.0,13.8L36.0,13.8L40.0,13.8L44.0,13.8L48.0,13.8L52.0,13.7L56.0,13.6L60.0,13.6L64.0,13.5L68.0,13.4L72.0,13.3L76.0,13.3L80.0,13.2L84.0,13.1L88.0,13.0L92.0,13.0L96.0,12.9L100.0,12.9L104.0,12.9L108.0,12.9L112.0,12.9L116.0,12.9L120.0,13.0L124.0,13.1' stroke-width='0.67'/%3e%3cpath d='M-4.0,15.7L0.0,15.8L4.0,15.9L8.0,16.0L12.0,16.0L16.0,16.1L20.0,16.1L24.0,16.2L28.0,16.2L32.0,16.2L36.0,16.2L40.0,16.2L44.0,16.2L48.0,16.1L52.0,16.0L56.0,16.0L60.0,15.9L64.0,15.8L68.0,15.7L72.0,15.6L76.0,15.6L80.0,15.5L84.0,15.4L88.0,15.4L92.0,15.3L96.0,15.3L100.0,15.3L104.0,15.3L108.0,15.3L112.0,15.3L116.0,15.4L120.0,15.4L124.0,15.5' stroke-width='0.79'/%3e%3cpath d='M-4.0,18.2L0.0,18.3L4.0,18.4L8.0,18.4L12.0,18.5L16.0,18.6L20.0,18.6L24.0,18.6L28.0,18.6L32.0,18.6L36.0,18.6L40.0,18.5L44.0,18.5L48.0,18.4L52.0,18.4L56.0,18.3L60.0,18.2L64.0,18.1L68.0,18.0L72.0,18.0L76.0,17.9L80.0,17.8L84.0,17.7L88.0,17.7L92.0,17.7L96.0,17.6L100.0,17.6L104.0,17.7L108.0,17.7L112.0,17.8L116.0,17.8L120.0,17.9L124.0,18.0' stroke-width='0.61'/%3e%3cpath d='M-4.0,20.7L0.0,20.8L4.0,20.9L8.0,20.9L12.0,21.0L16.0,21.0L20.0,21.0L24.0,21.0L28.0,21.0L32.0,21.0L36.0,20.9L40.0,20.9L44.0,20.8L48.0,20.8L52.0,20.7L56.0,20.6L60.0,20.5L64.0,20.4L68.0,20.3L72.0,20.3L76.0,20.2L80.0,20.1L84.0,20.1L88.0,20.0L92.0,20.0L96.0,20.0L100.0,20.0L104.0,20.1L108.0,20.1L112.0,20.2L116.0,20.3L120.0,20.4L124.0,20.5' stroke-width='0.60'/%3e%3cpath d='M-4.0,23.2L0.0,23.3L4.0,23.3L8.0,23.4L12.0,23.4L16.0,23.4L20.0,23.4L24.0,23.4L28.0,23.4L32.0,23.3L36.0,23.3L40.0,23.2L44.0,23.2L48.0,23.1L52.0,23.0L56.0,22.9L60.0,22.8L64.0,22.7L68.0,22.7L72.0,22.6L76.0,22.5L80.0,22.5L84.0,22.4L88.0,22.4L92.0,22.4L96.0,22.4L100.0,22.5L104.0,22.5L108.0,22.6L112.0,22.7L116.0,22.8L120.0,22.9L124.0,23.0' stroke-width='0.80'/%3e%3cpath d='M-4.0,25.7L0.0,25.7L4.0,25.8L8.0,25.8L12.0,25.8L16.0,25.8L20.0,25.8L24.0,25.8L28.0,25.7L32.0,25.7L36.0,25.6L40.0,25.6L44.0,25.5L48.0,25.4L52.0,25.3L56.0,25.2L60.0,25.1L64.0,25.0L68.0,25.0L72.0,24.9L76.0,24.8L80.0,24.8L84.0,24.8L88.0,24.8L92.0,24.8L96.0,24.8L100.0,24.9L104.0,25.0L108.0,25.0L112.0,25.2L116.0,25.3L120.0,25.4L124.0,25.6' stroke-width='0.58'/%3e%3cpath d='M-4.0,28.1L0.0,28.2L4.0,28.2L8.0,28.2L12.0,28.2L16.0,28.2L20.0,28.2L24.0,28.1L28.0,28.1L32.0,28.0L36.0,28.0L40.0,27.9L44.0,27.8L48.0,27.7L52.0,27.6L56.0,27.5L60.0,27.4L64.0,27.4L68.0,27.3L72.0,27.2L76.0,27.2L80.0,27.2L84.0,27.2L88.0,27.2L92.0,27.2L96.0,27.3L100.0,27.3L104.0,27.4L108.0,27.5L112.0,27.7L116.0,27.8L120.0,27.9L124.0,28.1' stroke-width='0.70'/%3e%3cpath d='M-4.0,30.6L0.0,30.6L4.0,30.6L8.0,30.6L12.0,30.6L16.0,30.6L20.0,30.6L24.0,30.5L28.0,30.4L32.0,30.4L36.0,30.3L40.0,30.2L44.0,30.1L48.0,30.0L52.0,29.9L56.0,29.8L60.0,29.7L64.0,29.7L68.0,29.6L72.0,29.6L76.0,29.5L80.0,29.5L84.0,29.6L88.0,29.6L92.0,29.6L96.0,29.7L100.0,29.8L104.0,29.9L108.0,30.0L112.0,30.2L116.0,30.3L120.0,30.5L124.0,30.6' stroke-width='0.73'/%3e%3cpath d='M-4.0,33.0L0.0,33.0L4.0,33.0L8.0,33.0L12.0,33.0L16.0,33.0L20.0,32.9L24.0,32.8L28.0,32.8L32.0,32.7L36.0,32.6L40.0,32.5L44.0,32.4L48.0,32.3L52.0,32.2L56.0,32.1L60.0,32.1L64.0,32.0L68.0,32.0L72.0,31.9L76.0,31.9L80.0,31.9L84.0,32.0L88.0,32.0L92.0,32.1L96.0,32.2L100.0,32.3L104.0,32.4L108.0,32.5L112.0,32.7L116.0,32.8L120.0,33.0L124.0,33.2' stroke-width='0.70'/%3e%3cpath d='M-4.0,35.4L0.0,35.4L4.0,35.4L8.0,35.4L12.0,35.4L16.0,35.3L20.0,35.2L24.0,35.2L28.0,35.1L32.0,35.0L36.0,34.9L40.0,34.8L44.0,34.7L48.0,34.6L52.0,34.5L56.0,34.4L60.0,34.4L64.0,34.3L68.0,34.3L72.0,34.3L76.0,34.3L80.0,34.3L84.0,34.4L88.0,34.5L92.0,34.5L96.0,34.7L100.0,34.8L104.0,34.9L108.0,35.1L112.0,35.2L116.0,35.4L120.0,35.6L124.0,35.7' stroke-width='0.53'/%3e%3c/g%3e%3cg stroke='%233F8A70'%3e%3c/g%3e%3cg stroke='%2347957A'%3e%3cpath d='M-4.0,26.5L0.0,26.6L4.0,26.6L8.0,26.6L12.0,26.6L16.0,26.6L20.0,26.6L24.0,26.6L28.0,26.6L32.0,26.5L36.0,26.4L40.0,26.4L44.0,26.3L48.0,26.2L52.0,26.1L56.0,26.0L60.0,25.9L64.0,25.8L68.0,25.8L72.0,25.7L76.0,25.6L80.0,25.6L84.0,25.6L88.0,25.6L92.0,25.6L96.0,25.7L100.0,25.7L104.0,25.8L108.0,25.9L112.0,26.0L116.0,26.1L120.0,26.3L124.0,26.4' stroke-width='0.76'/%3e%3cpath d='M-4.0,31.6L0.0,31.6L4.0,31.7L8.0,31.7L12.0,31.6L16.0,31.6L20.0,31.6L24.0,31.5L28.0,31.4L32.0,31.3L36.0,31.3L40.0,31.2L44.0,31.1L48.0,31.0L52.0,30.9L56.0,30.8L60.0,30.7L64.0,30.7L68.0,30.6L72.0,30.6L76.0,30.6L80.0,30.6L84.0,30.6L88.0,30.6L92.0,30.7L96.0,30.8L100.0,30.9L104.0,31.0L108.0,31.1L112.0,31.2L116.0,31.4L120.0,31.6L124.0,31.7' stroke-width='0.87'/%3e%3cpath d='M-4.0,34.0L0.0,34.0L4.0,34.0L8.0,34.0L12.0,33.9L16.0,33.9L20.0,33.8L24.0,33.7L28.0,33.7L32.0,33.6L36.0,33.5L40.0,33.4L44.0,33.3L48.0,33.2L52.0,33.1L56.0,33.0L60.0,33.0L64.0,32.9L68.0,32.9L72.0,32.9L76.0,32.8L80.0,32.9L84.0,32.9L88.0,33.0L92.0,33.0L96.0,33.1L100.0,33.2L104.0,33.4L108.0,33.5L112.0,33.7L116.0,33.8L120.0,34.0L124.0,34.2' stroke-width='0.86'/%3e%3cpath d='M-4.0,36.4L0.0,36.4L4.0,36.3L8.0,36.3L12.0,36.3L16.0,36.2L20.0,36.1L24.0,36.0L28.0,36.0L32.0,35.9L36.0,35.8L40.0,35.7L44.0,35.6L48.0,35.5L52.0,35.4L56.0,35.3L60.0,35.3L64.0,35.2L68.0,35.2L72.0,35.2L76.0,35.2L80.0,35.3L84.0,35.3L88.0,35.4L92.0,35.5L96.0,35.6L100.0,35.7L104.0,35.9L108.0,36.0L112.0,36.2L116.0,36.4L120.0,36.5L124.0,36.7' stroke-width='0.86'/%3e%3c/g%3e%3cg stroke='%234FA184'%3e%3cpath d='M-4.0,16.4L0.0,16.5L4.0,16.5L8.0,16.6L12.0,16.7L16.0,16.7L20.0,16.8L24.0,16.8L28.0,16.8L32.0,16.8L36.0,16.8L40.0,16.8L44.0,16.8L48.0,16.7L52.0,16.6L56.0,16.6L60.0,16.5L64.0,16.4L68.0,16.3L72.0,16.2L76.0,16.2L80.0,16.1L84.0,16.0L88.0,16.0L92.0,15.9L96.0,15.9L100.0,15.9L104.0,15.9L108.0,15.9L112.0,15.9L116.0,16.0L120.0,16.1L124.0,16.2' stroke-width='0.62'/%3e%3cpath d='M-4.0,17.7L0.0,17.8L4.0,17.8L8.0,17.9L12.0,18.0L16.0,18.0L20.0,18.1L24.0,18.1L28.0,18.1L32.0,18.1L36.0,18.1L40.0,18.0L44.0,18.0L48.0,17.9L52.0,17.9L56.0,17.8L60.0,17.7L64.0,17.6L68.0,17.5L72.0,17.5L76.0,17.4L80.0,17.3L84.0,17.2L88.0,17.2L92.0,17.1L96.0,17.1L100.0,17.1L104.0,17.1L108.0,17.2L112.0,17.2L116.0,17.3L120.0,17.4L124.0,17.5' stroke-width='0.66'/%3e%3cpath d='M-4.0,19.0L0.0,19.1L4.0,19.1L8.0,19.2L12.0,19.3L16.0,19.3L20.0,19.3L24.0,19.3L28.0,19.4L32.0,19.3L36.0,19.3L40.0,19.3L44.0,19.2L48.0,19.2L52.0,19.1L56.0,19.0L60.0,18.9L64.0,18.8L68.0,18.7L72.0,18.7L76.0,18.6L80.0,18.5L84.0,18.5L88.0,18.4L92.0,18.4L96.0,18.4L100.0,18.4L104.0,18.4L108.0,18.4L112.0,18.5L116.0,18.6L120.0,18.7L124.0,18.8' stroke-width='0.79'/%3e%3cpath d='M-4.0,22.8L0.0,22.8L4.0,22.9L8.0,22.9L12.0,23.0L16.0,23.0L20.0,23.0L24.0,23.0L28.0,23.0L32.0,22.9L36.0,22.9L40.0,22.8L44.0,22.8L48.0,22.7L52.0,22.6L56.0,22.5L60.0,22.4L64.0,22.3L68.0,22.3L72.0,22.2L76.0,22.1L80.0,22.1L84.0,22.0L88.0,22.0L92.0,22.0L96.0,22.0L100.0,22.0L104.0,22.1L108.0,22.2L112.0,22.2L116.0,22.3L120.0,22.5L124.0,22.6' stroke-width='1.18'/%3e%3cpath d='M-4.0,23.9L0.0,23.9L4.0,24.0L8.0,24.0L12.0,24.1L16.0,24.1L20.0,24.1L24.0,24.1L28.0,24.0L32.0,24.0L36.0,23.9L40.0,23.9L44.0,23.8L48.0,23.7L52.0,23.6L56.0,23.6L60.0,23.5L64.0,23.4L68.0,23.3L72.0,23.2L76.0,23.2L80.0,23.1L84.0,23.1L88.0,23.1L92.0,23.1L96.0,23.1L100.0,23.1L104.0,23.2L108.0,23.3L112.0,23.4L116.0,23.5L120.0,23.6L124.0,23.7' stroke-width='0.84'/%3e%3cpath d='M-4.0,27.9L0.0,27.9L4.0,28.0L8.0,28.0L12.0,28.0L16.0,28.0L20.0,28.0L24.0,27.9L28.0,27.9L32.0,27.8L36.0,27.7L40.0,27.6L44.0,27.6L48.0,27.5L52.0,27.4L56.0,27.3L60.0,27.2L64.0,27.1L68.0,27.1L72.0,27.0L76.0,27.0L80.0,26.9L84.0,26.9L88.0,26.9L92.0,27.0L96.0,27.0L100.0,27.1L104.0,27.2L108.0,27.3L112.0,27.4L116.0,27.5L120.0,27.7L124.0,27.8' stroke-width='1.31'/%3e%3cpath d='M-4.0,29.2L0.0,29.2L4.0,29.2L8.0,29.2L12.0,29.2L16.0,29.2L20.0,29.2L24.0,29.1L28.0,29.1L32.0,29.0L36.0,28.9L40.0,28.8L44.0,28.7L48.0,28.7L52.0,28.6L56.0,28.5L60.0,28.4L64.0,28.3L68.0,28.3L72.0,28.2L76.0,28.2L80.0,28.2L84.0,28.2L88.0,28.2L92.0,28.2L96.0,28.3L100.0,28.4L104.0,28.5L108.0,28.6L112.0,28.7L116.0,28.8L120.0,29.0L124.0,29.1' stroke-width='1.29'/%3e%3cpath d='M-4.0,30.5L0.0,30.5L4.0,30.5L8.0,30.5L12.0,30.5L16.0,30.5L20.0,30.5L24.0,30.4L28.0,30.3L32.0,30.3L36.0,30.2L40.0,30.1L44.0,30.0L48.0,29.9L52.0,29.8L56.0,29.7L60.0,29.7L64.0,29.6L68.0,29.5L72.0,29.5L76.0,29.5L80.0,29.5L84.0,29.5L88.0,29.5L92.0,29.5L96.0,29.6L100.0,29.7L104.0,29.8L108.0,29.9L112.0,30.1L116.0,30.2L120.0,30.4L124.0,30.5' stroke-width='0.89'/%3e%3cpath d='M-4.0,32.7L0.0,32.7L4.0,32.7L8.0,32.7L12.0,32.7L16.0,32.7L20.0,32.6L24.0,32.6L28.0,32.5L32.0,32.4L36.0,32.3L40.0,32.2L44.0,32.1L48.0,32.0L52.0,31.9L56.0,31.9L60.0,31.8L64.0,31.7L68.0,31.7L72.0,31.6L76.0,31.6L80.0,31.6L84.0,31.7L88.0,31.7L92.0,31.8L96.0,31.9L100.0,32.0L104.0,32.1L108.0,32.2L112.0,32.4L116.0,32.5L120.0,32.7L124.0,32.9' stroke-width='0.66'/%3e%3cpath d='M-4.0,35.2L0.0,35.2L4.0,35.2L8.0,35.1L12.0,35.1L16.0,35.0L20.0,35.0L24.0,34.9L28.0,34.8L32.0,34.7L36.0,34.6L40.0,34.5L44.0,34.4L48.0,34.3L52.0,34.3L56.0,34.2L60.0,34.1L64.0,34.1L68.0,34.0L72.0,34.0L76.0,34.0L80.0,34.1L84.0,34.1L88.0,34.2L92.0,34.3L96.0,34.4L100.0,34.5L104.0,34.6L108.0,34.8L112.0,34.9L116.0,35.1L120.0,35.3L124.0,35.4' stroke-width='0.70'/%3e%3c/g%3e%3cg stroke='%2356A98B'%3e%3cpath d='M-4.0,2.2L0.0,2.3L4.0,2.3L8.0,2.4L12.0,2.5L16.0,2.6L20.0,2.7L24.0,2.8L28.0,2.8L32.0,2.9L36.0,3.0L40.0,3.0L44.0,3.1L48.0,3.1L52.0,3.1L56.0,3.1L60.0,3.1L64.0,3.1L68.0,3.1L72.0,3.0L76.0,3.0L80.0,2.9L84.0,2.8L88.0,2.7L92.0,2.7L96.0,2.6L100.0,2.5L104.0,2.4L108.0,2.4L112.0,2.3L116.0,2.3L120.0,2.3L124.0,2.3' stroke-width='0.91'/%3e%3cpath d='M-4.0,9.8L0.0,9.8L4.0,9.9L8.0,10.0L12.0,10.1L16.0,10.2L20.0,10.3L24.0,10.3L28.0,10.4L32.0,10.4L36.0,10.5L40.0,10.5L44.0,10.5L48.0,10.5L52.0,10.4L56.0,10.4L60.0,10.3L64.0,10.3L68.0,10.2L72.0,10.1L76.0,10.0L80.0,10.0L84.0,9.9L88.0,9.8L92.0,9.7L96.0,9.7L100.0,9.6L104.0,9.6L108.0,9.6L112.0,9.6L116.0,9.6L120.0,9.6L124.0,9.7' stroke-width='1.37'/%3e%3cpath d='M-4.0,13.8L0.0,13.9L4.0,13.9L8.0,14.0L12.0,14.1L16.0,14.2L20.0,14.2L24.0,14.3L28.0,14.3L32.0,14.3L36.0,14.3L40.0,14.3L44.0,14.3L48.0,14.3L52.0,14.2L56.0,14.2L60.0,14.1L64.0,14.0L68.0,13.9L72.0,13.8L76.0,13.8L80.0,13.7L84.0,13.6L88.0,13.5L92.0,13.5L96.0,13.4L100.0,13.4L104.0,13.4L108.0,13.4L112.0,13.4L116.0,13.5L120.0,13.5L124.0,13.6' stroke-width='0.73'/%3e%3cpath d='M-4.0,15.1L0.0,15.2L4.0,15.3L8.0,15.4L12.0,15.5L16.0,15.5L20.0,15.6L24.0,15.6L28.0,15.6L32.0,15.6L36.0,15.6L40.0,15.6L44.0,15.6L48.0,15.6L52.0,15.5L56.0,15.4L60.0,15.4L64.0,15.3L68.0,15.2L72.0,15.1L76.0,15.0L80.0,14.9L84.0,14.9L88.0,14.8L92.0,14.8L96.0,14.7L100.0,14.7L104.0,14.7L108.0,14.7L112.0,14.7L116.0,14.8L120.0,14.9L124.0,15.0' stroke-width='0.85'/%3e%3cpath d='M-4.0,20.3L0.0,20.4L4.0,20.5L8.0,20.5L12.0,20.6L16.0,20.6L20.0,20.7L24.0,20.7L28.0,20.7L32.0,20.6L36.0,20.6L40.0,20.5L44.0,20.5L48.0,20.4L52.0,20.3L56.0,20.3L60.0,20.2L64.0,20.1L68.0,20.0L72.0,19.9L76.0,19.8L80.0,19.8L84.0,19.7L88.0,19.7L92.0,19.7L96.0,19.7L100.0,19.7L104.0,19.7L108.0,19.8L112.0,19.8L116.0,19.9L120.0,20.0L124.0,20.1' stroke-width='1.00'/%3e%3cpath d='M-4.0,21.5L0.0,21.6L4.0,21.7L8.0,21.7L12.0,21.8L16.0,21.8L20.0,21.8L24.0,21.8L28.0,21.8L32.0,21.8L36.0,21.7L40.0,21.7L44.0,21.6L48.0,21.5L52.0,21.5L56.0,21.4L60.0,21.3L64.0,21.2L68.0,21.1L72.0,21.0L76.0,21.0L80.0,20.9L84.0,20.9L88.0,20.8L92.0,20.8L96.0,20.8L100.0,20.8L104.0,20.9L108.0,20.9L112.0,21.0L116.0,21.1L120.0,21.2L124.0,21.4' stroke-width='1.29'/%3e%3cpath d='M-4.0,25.2L0.0,25.3L4.0,25.3L8.0,25.4L12.0,25.4L16.0,25.4L20.0,25.4L24.0,25.4L28.0,25.3L32.0,25.3L36.0,25.2L40.0,25.1L44.0,25.1L48.0,25.0L52.0,24.9L56.0,24.8L60.0,24.7L64.0,24.6L68.0,24.6L72.0,24.5L76.0,24.4L80.0,24.4L84.0,24.4L88.0,24.4L92.0,24.4L96.0,24.4L100.0,24.4L104.0,24.5L108.0,24.6L112.0,24.7L116.0,24.8L120.0,25.0L124.0,25.1' stroke-width='0.62'/%3e%3c/g%3e%3cg stroke='%235EB193'%3e%3cpath d='M-4.0,-0.1L0.0,-0.1L4.0,-0.0L8.0,0.0L12.0,0.1L16.0,0.2L20.0,0.2L24.0,0.3L28.0,0.4L32.0,0.5L36.0,0.6L40.0,0.7L44.0,0.7L48.0,0.8L52.0,0.8L56.0,0.8L60.0,0.8L64.0,0.8L68.0,0.8L72.0,0.8L76.0,0.7L80.0,0.6L84.0,0.6L88.0,0.5L92.0,0.4L96.0,0.4L100.0,0.3L104.0,0.2L108.0,0.1L112.0,0.1L116.0,0.0L120.0,0.0L124.0,0.0' stroke-width='0.94'/%3e%3cpath d='M-4.0,1.0L0.0,1.1L4.0,1.1L8.0,1.2L12.0,1.3L16.0,1.4L20.0,1.5L24.0,1.6L28.0,1.7L32.0,1.7L36.0,1.8L40.0,1.9L44.0,1.9L48.0,2.0L52.0,2.0L56.0,2.0L60.0,2.0L64.0,2.0L68.0,2.0L72.0,1.9L76.0,1.9L80.0,1.8L84.0,1.7L88.0,1.7L92.0,1.6L96.0,1.5L100.0,1.4L104.0,1.4L108.0,1.3L112.0,1.2L116.0,1.2L120.0,1.2L124.0,1.2' stroke-width='1.31'/%3e%3cpath d='M-4.0,3.5L0.0,3.6L4.0,3.7L8.0,3.8L12.0,3.9L16.0,3.9L20.0,4.0L24.0,4.1L28.0,4.2L32.0,4.3L36.0,4.3L40.0,4.4L44.0,4.4L48.0,4.5L52.0,4.5L56.0,4.5L60.0,4.4L64.0,4.4L68.0,4.4L72.0,4.3L76.0,4.2L80.0,4.2L84.0,4.1L88.0,4.0L92.0,3.9L96.0,3.9L100.0,3.8L104.0,3.7L108.0,3.7L112.0,3.6L116.0,3.6L120.0,3.6L124.0,3.6' stroke-width='0.90'/%3e%3cpath d='M-4.0,4.7L0.0,4.8L4.0,4.9L8.0,5.0L12.0,5.1L16.0,5.1L20.0,5.2L24.0,5.3L28.0,5.4L32.0,5.5L36.0,5.5L40.0,5.6L44.0,5.6L48.0,5.6L52.0,5.6L56.0,5.6L60.0,5.6L64.0,5.5L68.0,5.5L72.0,5.4L76.0,5.4L80.0,5.3L84.0,5.2L88.0,5.1L92.0,5.0L96.0,5.0L100.0,4.9L104.0,4.8L108.0,4.8L112.0,4.8L116.0,4.7L120.0,4.7L124.0,4.7' stroke-width='1.03'/%3e%3cpath d='M-4.0,6.1L0.0,6.1L4.0,6.2L8.0,6.3L12.0,6.4L16.0,6.5L20.0,6.6L24.0,6.7L28.0,6.7L32.0,6.8L36.0,6.8L40.0,6.9L44.0,6.9L48.0,6.9L52.0,6.9L56.0,6.9L60.0,6.8L64.0,6.8L68.0,6.7L72.0,6.7L76.0,6.6L80.0,6.5L84.0,6.4L88.0,6.4L92.0,6.3L96.0,6.2L100.0,6.2L104.0,6.1L108.0,6.1L112.0,6.0L116.0,6.0L120.0,6.0L124.0,6.1' stroke-width='1.00'/%3e%3cpath d='M-4.0,7.3L0.0,7.3L4.0,7.4L8.0,7.5L12.0,7.6L16.0,7.7L20.0,7.8L24.0,7.8L28.0,7.9L32.0,8.0L36.0,8.0L40.0,8.0L44.0,8.0L48.0,8.0L52.0,8.0L56.0,8.0L60.0,8.0L64.0,7.9L68.0,7.9L72.0,7.8L76.0,7.7L80.0,7.6L84.0,7.5L88.0,7.5L92.0,7.4L96.0,7.3L100.0,7.3L104.0,7.2L108.0,7.2L112.0,7.2L116.0,7.2L120.0,7.2L124.0,7.2' stroke-width='1.05'/%3e%3cpath d='M-4.0,8.5L0.0,8.5L4.0,8.6L8.0,8.7L12.0,8.8L16.0,8.9L20.0,8.9L24.0,9.0L28.0,9.1L32.0,9.1L36.0,9.2L40.0,9.2L44.0,9.2L48.0,9.2L52.0,9.2L56.0,9.1L60.0,9.1L64.0,9.0L68.0,9.0L72.0,8.9L76.0,8.8L80.0,8.7L84.0,8.7L88.0,8.6L92.0,8.5L96.0,8.4L100.0,8.4L104.0,8.3L108.0,8.3L112.0,8.3L116.0,8.3L120.0,8.3L124.0,8.4' stroke-width='0.79'/%3e%3cpath d='M-4.0,11.0L0.0,11.1L4.0,11.2L8.0,11.2L12.0,11.3L16.0,11.4L20.0,11.5L24.0,11.5L28.0,11.6L32.0,11.6L36.0,11.6L40.0,11.6L44.0,11.6L48.0,11.6L52.0,11.6L56.0,11.5L60.0,11.5L64.0,11.4L68.0,11.3L72.0,11.3L76.0,11.2L80.0,11.1L84.0,11.0L88.0,10.9L92.0,10.9L96.0,10.8L100.0,10.8L104.0,10.7L108.0,10.7L112.0,10.7L116.0,10.8L120.0,10.8L124.0,10.9' stroke-width='1.36'/%3e%3cpath d='M-4.0,12.4L0.0,12.5L4.0,12.6L8.0,12.6L12.0,12.7L16.0,12.8L20.0,12.9L24.0,12.9L28.0,12.9L32.0,13.0L36.0,13.0L40.0,13.0L44.0,13.0L48.0,12.9L52.0,12.9L56.0,12.8L60.0,12.8L64.0,12.7L68.0,12.6L72.0,12.6L76.0,12.5L80.0,12.4L84.0,12.3L88.0,12.2L92.0,12.2L96.0,12.1L100.0,12.1L104.0,12.1L108.0,12.1L112.0,12.1L116.0,12.1L120.0,12.2L124.0,12.2' stroke-width='0.73'/%3e%3c/g%3e%3cg stroke='%238FD2B4' opacity='.45'%3e%3cpath d='M-4.0,15.8L0.0,15.9L4.0,15.9L8.0,16.0L12.0,16.1L16.0,16.1L20.0,16.2L24.0,16.2L28.0,16.2L32.0,16.2L36.0,16.2L40.0,16.2L44.0,16.2L48.0,16.1L52.0,16.1L56.0,16.0L60.0,15.9L64.0,15.9L68.0,15.8L72.0,15.7L76.0,15.6L80.0,15.5L84.0,15.5L88.0,15.4L92.0,15.3L96.0,15.3L100.0,15.3L104.0,15.3L108.0,15.3L112.0,15.4L116.0,15.4L120.0,15.5L124.0,15.6' stroke-width='0.69'/%3e%3cpath d='M-4.0,14.5L0.0,14.6L4.0,14.7L8.0,14.8L12.0,14.8L16.0,14.9L20.0,15.0L24.0,15.0L28.0,15.0L32.0,15.0L36.0,15.0L40.0,15.0L44.0,15.0L48.0,15.0L52.0,14.9L56.0,14.8L60.0,14.8L64.0,14.7L68.0,14.6L72.0,14.5L76.0,14.4L80.0,14.4L84.0,14.3L88.0,14.2L92.0,14.2L96.0,14.1L100.0,14.1L104.0,14.1L108.0,14.1L112.0,14.1L116.0,14.2L120.0,14.3L124.0,14.3' stroke-width='0.60'/%3e%3cpath d='M-4.0,15.4L0.0,15.5L4.0,15.5L8.0,15.6L12.0,15.7L16.0,15.7L20.0,15.8L24.0,15.8L28.0,15.9L32.0,15.9L36.0,15.9L40.0,15.8L44.0,15.8L48.0,15.8L52.0,15.7L56.0,15.6L60.0,15.6L64.0,15.5L68.0,15.4L72.0,15.3L76.0,15.2L80.0,15.1L84.0,15.1L88.0,15.0L92.0,15.0L96.0,14.9L100.0,14.9L104.0,14.9L108.0,14.9L112.0,15.0L116.0,15.0L120.0,15.1L124.0,15.2' stroke-width='0.47'/%3e%3cpath d='M-4.0,11.3L0.0,11.4L4.0,11.5L8.0,11.6L12.0,11.7L16.0,11.7L20.0,11.8L24.0,11.9L28.0,11.9L32.0,11.9L36.0,12.0L40.0,12.0L44.0,12.0L48.0,11.9L52.0,11.9L56.0,11.9L60.0,11.8L64.0,11.7L68.0,11.6L72.0,11.6L76.0,11.5L80.0,11.4L84.0,11.3L88.0,11.3L92.0,11.2L96.0,11.1L100.0,11.1L104.0,11.1L108.0,11.1L112.0,11.1L116.0,11.1L120.0,11.1L124.0,11.2' stroke-width='0.45'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e");
|
|
132
|
+
--ak-weave-secondary-dark: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 36' preserveAspectRatio='none'%3e%3crect width='120' height='36' fill='%230E0C09'/%3e%3cg fill='none' stroke-linecap='round'%3e%3cg stroke='%2315120E' opacity='.5'%3e%3cpath d='M-4.0,0.8L0.0,0.9L4.0,1.0L8.0,1.0L12.0,1.1L16.0,1.2L20.0,1.3L24.0,1.4L28.0,1.5L32.0,1.5L36.0,1.6L40.0,1.7L44.0,1.7L48.0,1.8L52.0,1.8L56.0,1.8L60.0,1.8L64.0,1.8L68.0,1.8L72.0,1.7L76.0,1.7L80.0,1.6L84.0,1.5L88.0,1.5L92.0,1.4L96.0,1.3L100.0,1.2L104.0,1.2L108.0,1.1L112.0,1.1L116.0,1.0L120.0,1.0L124.0,1.0' stroke-width='0.78'/%3e%3cpath d='M-4.0,3.3L0.0,3.4L4.0,3.4L8.0,3.5L12.0,3.6L16.0,3.7L20.0,3.8L24.0,3.9L28.0,4.0L32.0,4.0L36.0,4.1L40.0,4.1L44.0,4.2L48.0,4.2L52.0,4.2L56.0,4.2L60.0,4.2L64.0,4.2L68.0,4.1L72.0,4.1L76.0,4.0L80.0,3.9L84.0,3.9L88.0,3.8L92.0,3.7L96.0,3.6L100.0,3.6L104.0,3.5L108.0,3.4L112.0,3.4L116.0,3.4L120.0,3.4L124.0,3.4' stroke-width='0.59'/%3e%3cpath d='M-4.0,5.8L0.0,5.8L4.0,5.9L8.0,6.0L12.0,6.1L16.0,6.2L20.0,6.3L24.0,6.4L28.0,6.4L32.0,6.5L36.0,6.5L40.0,6.6L44.0,6.6L48.0,6.6L52.0,6.6L56.0,6.6L60.0,6.6L64.0,6.5L68.0,6.5L72.0,6.4L76.0,6.3L80.0,6.3L84.0,6.2L88.0,6.1L92.0,6.0L96.0,5.9L100.0,5.9L104.0,5.8L108.0,5.8L112.0,5.7L116.0,5.7L120.0,5.7L124.0,5.8' stroke-width='0.55'/%3e%3cpath d='M-4.0,8.3L0.0,8.3L4.0,8.4L8.0,8.5L12.0,8.6L16.0,8.7L20.0,8.8L24.0,8.8L28.0,8.9L32.0,8.9L36.0,9.0L40.0,9.0L44.0,9.0L48.0,9.0L52.0,9.0L56.0,9.0L60.0,8.9L64.0,8.9L68.0,8.8L72.0,8.7L76.0,8.6L80.0,8.6L84.0,8.5L88.0,8.4L92.0,8.3L96.0,8.3L100.0,8.2L104.0,8.2L108.0,8.1L112.0,8.1L116.0,8.1L120.0,8.1L124.0,8.2' stroke-width='0.78'/%3e%3cpath d='M-4.0,10.7L0.0,10.8L4.0,10.9L8.0,11.0L12.0,11.1L16.0,11.2L20.0,11.2L24.0,11.3L28.0,11.3L32.0,11.4L36.0,11.4L40.0,11.4L44.0,11.4L48.0,11.4L52.0,11.4L56.0,11.3L60.0,11.3L64.0,11.2L68.0,11.1L72.0,11.0L76.0,11.0L80.0,10.9L84.0,10.8L88.0,10.7L92.0,10.6L96.0,10.6L100.0,10.5L104.0,10.5L108.0,10.5L112.0,10.5L116.0,10.5L120.0,10.6L124.0,10.6' stroke-width='0.78'/%3e%3cpath d='M-4.0,13.2L0.0,13.3L4.0,13.4L8.0,13.5L12.0,13.6L16.0,13.6L20.0,13.7L24.0,13.7L28.0,13.8L32.0,13.8L36.0,13.8L40.0,13.8L44.0,13.8L48.0,13.8L52.0,13.7L56.0,13.6L60.0,13.6L64.0,13.5L68.0,13.4L72.0,13.3L76.0,13.3L80.0,13.2L84.0,13.1L88.0,13.0L92.0,13.0L96.0,12.9L100.0,12.9L104.0,12.9L108.0,12.9L112.0,12.9L116.0,12.9L120.0,13.0L124.0,13.1' stroke-width='0.67'/%3e%3cpath d='M-4.0,15.7L0.0,15.8L4.0,15.9L8.0,16.0L12.0,16.0L16.0,16.1L20.0,16.1L24.0,16.2L28.0,16.2L32.0,16.2L36.0,16.2L40.0,16.2L44.0,16.2L48.0,16.1L52.0,16.0L56.0,16.0L60.0,15.9L64.0,15.8L68.0,15.7L72.0,15.6L76.0,15.6L80.0,15.5L84.0,15.4L88.0,15.4L92.0,15.3L96.0,15.3L100.0,15.3L104.0,15.3L108.0,15.3L112.0,15.3L116.0,15.4L120.0,15.4L124.0,15.5' stroke-width='0.79'/%3e%3cpath d='M-4.0,18.2L0.0,18.3L4.0,18.4L8.0,18.4L12.0,18.5L16.0,18.6L20.0,18.6L24.0,18.6L28.0,18.6L32.0,18.6L36.0,18.6L40.0,18.5L44.0,18.5L48.0,18.4L52.0,18.4L56.0,18.3L60.0,18.2L64.0,18.1L68.0,18.0L72.0,18.0L76.0,17.9L80.0,17.8L84.0,17.7L88.0,17.7L92.0,17.7L96.0,17.6L100.0,17.6L104.0,17.7L108.0,17.7L112.0,17.8L116.0,17.8L120.0,17.9L124.0,18.0' stroke-width='0.61'/%3e%3cpath d='M-4.0,20.7L0.0,20.8L4.0,20.9L8.0,20.9L12.0,21.0L16.0,21.0L20.0,21.0L24.0,21.0L28.0,21.0L32.0,21.0L36.0,20.9L40.0,20.9L44.0,20.8L48.0,20.8L52.0,20.7L56.0,20.6L60.0,20.5L64.0,20.4L68.0,20.3L72.0,20.3L76.0,20.2L80.0,20.1L84.0,20.1L88.0,20.0L92.0,20.0L96.0,20.0L100.0,20.0L104.0,20.1L108.0,20.1L112.0,20.2L116.0,20.3L120.0,20.4L124.0,20.5' stroke-width='0.60'/%3e%3cpath d='M-4.0,23.2L0.0,23.3L4.0,23.3L8.0,23.4L12.0,23.4L16.0,23.4L20.0,23.4L24.0,23.4L28.0,23.4L32.0,23.3L36.0,23.3L40.0,23.2L44.0,23.2L48.0,23.1L52.0,23.0L56.0,22.9L60.0,22.8L64.0,22.7L68.0,22.7L72.0,22.6L76.0,22.5L80.0,22.5L84.0,22.4L88.0,22.4L92.0,22.4L96.0,22.4L100.0,22.5L104.0,22.5L108.0,22.6L112.0,22.7L116.0,22.8L120.0,22.9L124.0,23.0' stroke-width='0.80'/%3e%3cpath d='M-4.0,25.7L0.0,25.7L4.0,25.8L8.0,25.8L12.0,25.8L16.0,25.8L20.0,25.8L24.0,25.8L28.0,25.7L32.0,25.7L36.0,25.6L40.0,25.6L44.0,25.5L48.0,25.4L52.0,25.3L56.0,25.2L60.0,25.1L64.0,25.0L68.0,25.0L72.0,24.9L76.0,24.8L80.0,24.8L84.0,24.8L88.0,24.8L92.0,24.8L96.0,24.8L100.0,24.9L104.0,25.0L108.0,25.0L112.0,25.2L116.0,25.3L120.0,25.4L124.0,25.6' stroke-width='0.58'/%3e%3cpath d='M-4.0,28.1L0.0,28.2L4.0,28.2L8.0,28.2L12.0,28.2L16.0,28.2L20.0,28.2L24.0,28.1L28.0,28.1L32.0,28.0L36.0,28.0L40.0,27.9L44.0,27.8L48.0,27.7L52.0,27.6L56.0,27.5L60.0,27.4L64.0,27.4L68.0,27.3L72.0,27.2L76.0,27.2L80.0,27.2L84.0,27.2L88.0,27.2L92.0,27.2L96.0,27.3L100.0,27.3L104.0,27.4L108.0,27.5L112.0,27.7L116.0,27.8L120.0,27.9L124.0,28.1' stroke-width='0.70'/%3e%3cpath d='M-4.0,30.6L0.0,30.6L4.0,30.6L8.0,30.6L12.0,30.6L16.0,30.6L20.0,30.6L24.0,30.5L28.0,30.4L32.0,30.4L36.0,30.3L40.0,30.2L44.0,30.1L48.0,30.0L52.0,29.9L56.0,29.8L60.0,29.7L64.0,29.7L68.0,29.6L72.0,29.6L76.0,29.5L80.0,29.5L84.0,29.6L88.0,29.6L92.0,29.6L96.0,29.7L100.0,29.8L104.0,29.9L108.0,30.0L112.0,30.2L116.0,30.3L120.0,30.5L124.0,30.6' stroke-width='0.73'/%3e%3cpath d='M-4.0,33.0L0.0,33.0L4.0,33.0L8.0,33.0L12.0,33.0L16.0,33.0L20.0,32.9L24.0,32.8L28.0,32.8L32.0,32.7L36.0,32.6L40.0,32.5L44.0,32.4L48.0,32.3L52.0,32.2L56.0,32.1L60.0,32.1L64.0,32.0L68.0,32.0L72.0,31.9L76.0,31.9L80.0,31.9L84.0,32.0L88.0,32.0L92.0,32.1L96.0,32.2L100.0,32.3L104.0,32.4L108.0,32.5L112.0,32.7L116.0,32.8L120.0,33.0L124.0,33.2' stroke-width='0.70'/%3e%3cpath d='M-4.0,35.4L0.0,35.4L4.0,35.4L8.0,35.4L12.0,35.4L16.0,35.3L20.0,35.2L24.0,35.2L28.0,35.1L32.0,35.0L36.0,34.9L40.0,34.8L44.0,34.7L48.0,34.6L52.0,34.5L56.0,34.4L60.0,34.4L64.0,34.3L68.0,34.3L72.0,34.3L76.0,34.3L80.0,34.3L84.0,34.4L88.0,34.5L92.0,34.5L96.0,34.7L100.0,34.8L104.0,34.9L108.0,35.1L112.0,35.2L116.0,35.4L120.0,35.6L124.0,35.7' stroke-width='0.53'/%3e%3c/g%3e%3cg stroke='%232B2620'%3e%3c/g%3e%3cg stroke='%232F2A23'%3e%3cpath d='M-4.0,26.5L0.0,26.6L4.0,26.6L8.0,26.6L12.0,26.6L16.0,26.6L20.0,26.6L24.0,26.6L28.0,26.6L32.0,26.5L36.0,26.4L40.0,26.4L44.0,26.3L48.0,26.2L52.0,26.1L56.0,26.0L60.0,25.9L64.0,25.8L68.0,25.8L72.0,25.7L76.0,25.6L80.0,25.6L84.0,25.6L88.0,25.6L92.0,25.6L96.0,25.7L100.0,25.7L104.0,25.8L108.0,25.9L112.0,26.0L116.0,26.1L120.0,26.3L124.0,26.4' stroke-width='0.76'/%3e%3cpath d='M-4.0,31.6L0.0,31.6L4.0,31.7L8.0,31.7L12.0,31.6L16.0,31.6L20.0,31.6L24.0,31.5L28.0,31.4L32.0,31.3L36.0,31.3L40.0,31.2L44.0,31.1L48.0,31.0L52.0,30.9L56.0,30.8L60.0,30.7L64.0,30.7L68.0,30.6L72.0,30.6L76.0,30.6L80.0,30.6L84.0,30.6L88.0,30.6L92.0,30.7L96.0,30.8L100.0,30.9L104.0,31.0L108.0,31.1L112.0,31.2L116.0,31.4L120.0,31.6L124.0,31.7' stroke-width='0.87'/%3e%3cpath d='M-4.0,34.0L0.0,34.0L4.0,34.0L8.0,34.0L12.0,33.9L16.0,33.9L20.0,33.8L24.0,33.7L28.0,33.7L32.0,33.6L36.0,33.5L40.0,33.4L44.0,33.3L48.0,33.2L52.0,33.1L56.0,33.0L60.0,33.0L64.0,32.9L68.0,32.9L72.0,32.9L76.0,32.8L80.0,32.9L84.0,32.9L88.0,33.0L92.0,33.0L96.0,33.1L100.0,33.2L104.0,33.4L108.0,33.5L112.0,33.7L116.0,33.8L120.0,34.0L124.0,34.2' stroke-width='0.86'/%3e%3cpath d='M-4.0,36.4L0.0,36.4L4.0,36.3L8.0,36.3L12.0,36.3L16.0,36.2L20.0,36.1L24.0,36.0L28.0,36.0L32.0,35.9L36.0,35.8L40.0,35.7L44.0,35.6L48.0,35.5L52.0,35.4L56.0,35.3L60.0,35.3L64.0,35.2L68.0,35.2L72.0,35.2L76.0,35.2L80.0,35.3L84.0,35.3L88.0,35.4L92.0,35.5L96.0,35.6L100.0,35.7L104.0,35.9L108.0,36.0L112.0,36.2L116.0,36.4L120.0,36.5L124.0,36.7' stroke-width='0.86'/%3e%3c/g%3e%3cg stroke='%23332E26'%3e%3cpath d='M-4.0,16.4L0.0,16.5L4.0,16.5L8.0,16.6L12.0,16.7L16.0,16.7L20.0,16.8L24.0,16.8L28.0,16.8L32.0,16.8L36.0,16.8L40.0,16.8L44.0,16.8L48.0,16.7L52.0,16.6L56.0,16.6L60.0,16.5L64.0,16.4L68.0,16.3L72.0,16.2L76.0,16.2L80.0,16.1L84.0,16.0L88.0,16.0L92.0,15.9L96.0,15.9L100.0,15.9L104.0,15.9L108.0,15.9L112.0,15.9L116.0,16.0L120.0,16.1L124.0,16.2' stroke-width='0.62'/%3e%3cpath d='M-4.0,17.7L0.0,17.8L4.0,17.8L8.0,17.9L12.0,18.0L16.0,18.0L20.0,18.1L24.0,18.1L28.0,18.1L32.0,18.1L36.0,18.1L40.0,18.0L44.0,18.0L48.0,17.9L52.0,17.9L56.0,17.8L60.0,17.7L64.0,17.6L68.0,17.5L72.0,17.5L76.0,17.4L80.0,17.3L84.0,17.2L88.0,17.2L92.0,17.1L96.0,17.1L100.0,17.1L104.0,17.1L108.0,17.2L112.0,17.2L116.0,17.3L120.0,17.4L124.0,17.5' stroke-width='0.66'/%3e%3cpath d='M-4.0,19.0L0.0,19.1L4.0,19.1L8.0,19.2L12.0,19.3L16.0,19.3L20.0,19.3L24.0,19.3L28.0,19.4L32.0,19.3L36.0,19.3L40.0,19.3L44.0,19.2L48.0,19.2L52.0,19.1L56.0,19.0L60.0,18.9L64.0,18.8L68.0,18.7L72.0,18.7L76.0,18.6L80.0,18.5L84.0,18.5L88.0,18.4L92.0,18.4L96.0,18.4L100.0,18.4L104.0,18.4L108.0,18.4L112.0,18.5L116.0,18.6L120.0,18.7L124.0,18.8' stroke-width='0.79'/%3e%3cpath d='M-4.0,22.8L0.0,22.8L4.0,22.9L8.0,22.9L12.0,23.0L16.0,23.0L20.0,23.0L24.0,23.0L28.0,23.0L32.0,22.9L36.0,22.9L40.0,22.8L44.0,22.8L48.0,22.7L52.0,22.6L56.0,22.5L60.0,22.4L64.0,22.3L68.0,22.3L72.0,22.2L76.0,22.1L80.0,22.1L84.0,22.0L88.0,22.0L92.0,22.0L96.0,22.0L100.0,22.0L104.0,22.1L108.0,22.2L112.0,22.2L116.0,22.3L120.0,22.5L124.0,22.6' stroke-width='1.18'/%3e%3cpath d='M-4.0,23.9L0.0,23.9L4.0,24.0L8.0,24.0L12.0,24.1L16.0,24.1L20.0,24.1L24.0,24.1L28.0,24.0L32.0,24.0L36.0,23.9L40.0,23.9L44.0,23.8L48.0,23.7L52.0,23.6L56.0,23.6L60.0,23.5L64.0,23.4L68.0,23.3L72.0,23.2L76.0,23.2L80.0,23.1L84.0,23.1L88.0,23.1L92.0,23.1L96.0,23.1L100.0,23.1L104.0,23.2L108.0,23.3L112.0,23.4L116.0,23.5L120.0,23.6L124.0,23.7' stroke-width='0.84'/%3e%3cpath d='M-4.0,27.9L0.0,27.9L4.0,28.0L8.0,28.0L12.0,28.0L16.0,28.0L20.0,28.0L24.0,27.9L28.0,27.9L32.0,27.8L36.0,27.7L40.0,27.6L44.0,27.6L48.0,27.5L52.0,27.4L56.0,27.3L60.0,27.2L64.0,27.1L68.0,27.1L72.0,27.0L76.0,27.0L80.0,26.9L84.0,26.9L88.0,26.9L92.0,27.0L96.0,27.0L100.0,27.1L104.0,27.2L108.0,27.3L112.0,27.4L116.0,27.5L120.0,27.7L124.0,27.8' stroke-width='1.31'/%3e%3cpath d='M-4.0,29.2L0.0,29.2L4.0,29.2L8.0,29.2L12.0,29.2L16.0,29.2L20.0,29.2L24.0,29.1L28.0,29.1L32.0,29.0L36.0,28.9L40.0,28.8L44.0,28.7L48.0,28.7L52.0,28.6L56.0,28.5L60.0,28.4L64.0,28.3L68.0,28.3L72.0,28.2L76.0,28.2L80.0,28.2L84.0,28.2L88.0,28.2L92.0,28.2L96.0,28.3L100.0,28.4L104.0,28.5L108.0,28.6L112.0,28.7L116.0,28.8L120.0,29.0L124.0,29.1' stroke-width='1.29'/%3e%3cpath d='M-4.0,30.5L0.0,30.5L4.0,30.5L8.0,30.5L12.0,30.5L16.0,30.5L20.0,30.5L24.0,30.4L28.0,30.3L32.0,30.3L36.0,30.2L40.0,30.1L44.0,30.0L48.0,29.9L52.0,29.8L56.0,29.7L60.0,29.7L64.0,29.6L68.0,29.5L72.0,29.5L76.0,29.5L80.0,29.5L84.0,29.5L88.0,29.5L92.0,29.5L96.0,29.6L100.0,29.7L104.0,29.8L108.0,29.9L112.0,30.1L116.0,30.2L120.0,30.4L124.0,30.5' stroke-width='0.89'/%3e%3cpath d='M-4.0,32.7L0.0,32.7L4.0,32.7L8.0,32.7L12.0,32.7L16.0,32.7L20.0,32.6L24.0,32.6L28.0,32.5L32.0,32.4L36.0,32.3L40.0,32.2L44.0,32.1L48.0,32.0L52.0,31.9L56.0,31.9L60.0,31.8L64.0,31.7L68.0,31.7L72.0,31.6L76.0,31.6L80.0,31.6L84.0,31.7L88.0,31.7L92.0,31.8L96.0,31.9L100.0,32.0L104.0,32.1L108.0,32.2L112.0,32.4L116.0,32.5L120.0,32.7L124.0,32.9' stroke-width='0.66'/%3e%3cpath d='M-4.0,35.2L0.0,35.2L4.0,35.2L8.0,35.1L12.0,35.1L16.0,35.0L20.0,35.0L24.0,34.9L28.0,34.8L32.0,34.7L36.0,34.6L40.0,34.5L44.0,34.4L48.0,34.3L52.0,34.3L56.0,34.2L60.0,34.1L64.0,34.1L68.0,34.0L72.0,34.0L76.0,34.0L80.0,34.1L84.0,34.1L88.0,34.2L92.0,34.3L96.0,34.4L100.0,34.5L104.0,34.6L108.0,34.8L112.0,34.9L116.0,35.1L120.0,35.3L124.0,35.4' stroke-width='0.70'/%3e%3c/g%3e%3cg stroke='%2338322A'%3e%3cpath d='M-4.0,2.2L0.0,2.3L4.0,2.3L8.0,2.4L12.0,2.5L16.0,2.6L20.0,2.7L24.0,2.8L28.0,2.8L32.0,2.9L36.0,3.0L40.0,3.0L44.0,3.1L48.0,3.1L52.0,3.1L56.0,3.1L60.0,3.1L64.0,3.1L68.0,3.1L72.0,3.0L76.0,3.0L80.0,2.9L84.0,2.8L88.0,2.7L92.0,2.7L96.0,2.6L100.0,2.5L104.0,2.4L108.0,2.4L112.0,2.3L116.0,2.3L120.0,2.3L124.0,2.3' stroke-width='0.91'/%3e%3cpath d='M-4.0,9.8L0.0,9.8L4.0,9.9L8.0,10.0L12.0,10.1L16.0,10.2L20.0,10.3L24.0,10.3L28.0,10.4L32.0,10.4L36.0,10.5L40.0,10.5L44.0,10.5L48.0,10.5L52.0,10.4L56.0,10.4L60.0,10.3L64.0,10.3L68.0,10.2L72.0,10.1L76.0,10.0L80.0,10.0L84.0,9.9L88.0,9.8L92.0,9.7L96.0,9.7L100.0,9.6L104.0,9.6L108.0,9.6L112.0,9.6L116.0,9.6L120.0,9.6L124.0,9.7' stroke-width='1.37'/%3e%3cpath d='M-4.0,13.8L0.0,13.9L4.0,13.9L8.0,14.0L12.0,14.1L16.0,14.2L20.0,14.2L24.0,14.3L28.0,14.3L32.0,14.3L36.0,14.3L40.0,14.3L44.0,14.3L48.0,14.3L52.0,14.2L56.0,14.2L60.0,14.1L64.0,14.0L68.0,13.9L72.0,13.8L76.0,13.8L80.0,13.7L84.0,13.6L88.0,13.5L92.0,13.5L96.0,13.4L100.0,13.4L104.0,13.4L108.0,13.4L112.0,13.4L116.0,13.5L120.0,13.5L124.0,13.6' stroke-width='0.73'/%3e%3cpath d='M-4.0,15.1L0.0,15.2L4.0,15.3L8.0,15.4L12.0,15.5L16.0,15.5L20.0,15.6L24.0,15.6L28.0,15.6L32.0,15.6L36.0,15.6L40.0,15.6L44.0,15.6L48.0,15.6L52.0,15.5L56.0,15.4L60.0,15.4L64.0,15.3L68.0,15.2L72.0,15.1L76.0,15.0L80.0,14.9L84.0,14.9L88.0,14.8L92.0,14.8L96.0,14.7L100.0,14.7L104.0,14.7L108.0,14.7L112.0,14.7L116.0,14.8L120.0,14.9L124.0,15.0' stroke-width='0.85'/%3e%3cpath d='M-4.0,20.3L0.0,20.4L4.0,20.5L8.0,20.5L12.0,20.6L16.0,20.6L20.0,20.7L24.0,20.7L28.0,20.7L32.0,20.6L36.0,20.6L40.0,20.5L44.0,20.5L48.0,20.4L52.0,20.3L56.0,20.3L60.0,20.2L64.0,20.1L68.0,20.0L72.0,19.9L76.0,19.8L80.0,19.8L84.0,19.7L88.0,19.7L92.0,19.7L96.0,19.7L100.0,19.7L104.0,19.7L108.0,19.8L112.0,19.8L116.0,19.9L120.0,20.0L124.0,20.1' stroke-width='1.00'/%3e%3cpath d='M-4.0,21.5L0.0,21.6L4.0,21.7L8.0,21.7L12.0,21.8L16.0,21.8L20.0,21.8L24.0,21.8L28.0,21.8L32.0,21.8L36.0,21.7L40.0,21.7L44.0,21.6L48.0,21.5L52.0,21.5L56.0,21.4L60.0,21.3L64.0,21.2L68.0,21.1L72.0,21.0L76.0,21.0L80.0,20.9L84.0,20.9L88.0,20.8L92.0,20.8L96.0,20.8L100.0,20.8L104.0,20.9L108.0,20.9L112.0,21.0L116.0,21.1L120.0,21.2L124.0,21.4' stroke-width='1.29'/%3e%3cpath d='M-4.0,25.2L0.0,25.3L4.0,25.3L8.0,25.4L12.0,25.4L16.0,25.4L20.0,25.4L24.0,25.4L28.0,25.3L32.0,25.3L36.0,25.2L40.0,25.1L44.0,25.1L48.0,25.0L52.0,24.9L56.0,24.8L60.0,24.7L64.0,24.6L68.0,24.6L72.0,24.5L76.0,24.4L80.0,24.4L84.0,24.4L88.0,24.4L92.0,24.4L96.0,24.4L100.0,24.4L104.0,24.5L108.0,24.6L112.0,24.7L116.0,24.8L120.0,25.0L124.0,25.1' stroke-width='0.62'/%3e%3c/g%3e%3cg stroke='%233D372E'%3e%3cpath d='M-4.0,-0.1L0.0,-0.1L4.0,-0.0L8.0,0.0L12.0,0.1L16.0,0.2L20.0,0.2L24.0,0.3L28.0,0.4L32.0,0.5L36.0,0.6L40.0,0.7L44.0,0.7L48.0,0.8L52.0,0.8L56.0,0.8L60.0,0.8L64.0,0.8L68.0,0.8L72.0,0.8L76.0,0.7L80.0,0.6L84.0,0.6L88.0,0.5L92.0,0.4L96.0,0.4L100.0,0.3L104.0,0.2L108.0,0.1L112.0,0.1L116.0,0.0L120.0,0.0L124.0,0.0' stroke-width='0.94'/%3e%3cpath d='M-4.0,1.0L0.0,1.1L4.0,1.1L8.0,1.2L12.0,1.3L16.0,1.4L20.0,1.5L24.0,1.6L28.0,1.7L32.0,1.7L36.0,1.8L40.0,1.9L44.0,1.9L48.0,2.0L52.0,2.0L56.0,2.0L60.0,2.0L64.0,2.0L68.0,2.0L72.0,1.9L76.0,1.9L80.0,1.8L84.0,1.7L88.0,1.7L92.0,1.6L96.0,1.5L100.0,1.4L104.0,1.4L108.0,1.3L112.0,1.2L116.0,1.2L120.0,1.2L124.0,1.2' stroke-width='1.31'/%3e%3cpath d='M-4.0,3.5L0.0,3.6L4.0,3.7L8.0,3.8L12.0,3.9L16.0,3.9L20.0,4.0L24.0,4.1L28.0,4.2L32.0,4.3L36.0,4.3L40.0,4.4L44.0,4.4L48.0,4.5L52.0,4.5L56.0,4.5L60.0,4.4L64.0,4.4L68.0,4.4L72.0,4.3L76.0,4.2L80.0,4.2L84.0,4.1L88.0,4.0L92.0,3.9L96.0,3.9L100.0,3.8L104.0,3.7L108.0,3.7L112.0,3.6L116.0,3.6L120.0,3.6L124.0,3.6' stroke-width='0.90'/%3e%3cpath d='M-4.0,4.7L0.0,4.8L4.0,4.9L8.0,5.0L12.0,5.1L16.0,5.1L20.0,5.2L24.0,5.3L28.0,5.4L32.0,5.5L36.0,5.5L40.0,5.6L44.0,5.6L48.0,5.6L52.0,5.6L56.0,5.6L60.0,5.6L64.0,5.5L68.0,5.5L72.0,5.4L76.0,5.4L80.0,5.3L84.0,5.2L88.0,5.1L92.0,5.0L96.0,5.0L100.0,4.9L104.0,4.8L108.0,4.8L112.0,4.8L116.0,4.7L120.0,4.7L124.0,4.7' stroke-width='1.03'/%3e%3cpath d='M-4.0,6.1L0.0,6.1L4.0,6.2L8.0,6.3L12.0,6.4L16.0,6.5L20.0,6.6L24.0,6.7L28.0,6.7L32.0,6.8L36.0,6.8L40.0,6.9L44.0,6.9L48.0,6.9L52.0,6.9L56.0,6.9L60.0,6.8L64.0,6.8L68.0,6.7L72.0,6.7L76.0,6.6L80.0,6.5L84.0,6.4L88.0,6.4L92.0,6.3L96.0,6.2L100.0,6.2L104.0,6.1L108.0,6.1L112.0,6.0L116.0,6.0L120.0,6.0L124.0,6.1' stroke-width='1.00'/%3e%3cpath d='M-4.0,7.3L0.0,7.3L4.0,7.4L8.0,7.5L12.0,7.6L16.0,7.7L20.0,7.8L24.0,7.8L28.0,7.9L32.0,8.0L36.0,8.0L40.0,8.0L44.0,8.0L48.0,8.0L52.0,8.0L56.0,8.0L60.0,8.0L64.0,7.9L68.0,7.9L72.0,7.8L76.0,7.7L80.0,7.6L84.0,7.5L88.0,7.5L92.0,7.4L96.0,7.3L100.0,7.3L104.0,7.2L108.0,7.2L112.0,7.2L116.0,7.2L120.0,7.2L124.0,7.2' stroke-width='1.05'/%3e%3cpath d='M-4.0,8.5L0.0,8.5L4.0,8.6L8.0,8.7L12.0,8.8L16.0,8.9L20.0,8.9L24.0,9.0L28.0,9.1L32.0,9.1L36.0,9.2L40.0,9.2L44.0,9.2L48.0,9.2L52.0,9.2L56.0,9.1L60.0,9.1L64.0,9.0L68.0,9.0L72.0,8.9L76.0,8.8L80.0,8.7L84.0,8.7L88.0,8.6L92.0,8.5L96.0,8.4L100.0,8.4L104.0,8.3L108.0,8.3L112.0,8.3L116.0,8.3L120.0,8.3L124.0,8.4' stroke-width='0.79'/%3e%3cpath d='M-4.0,11.0L0.0,11.1L4.0,11.2L8.0,11.2L12.0,11.3L16.0,11.4L20.0,11.5L24.0,11.5L28.0,11.6L32.0,11.6L36.0,11.6L40.0,11.6L44.0,11.6L48.0,11.6L52.0,11.6L56.0,11.5L60.0,11.5L64.0,11.4L68.0,11.3L72.0,11.3L76.0,11.2L80.0,11.1L84.0,11.0L88.0,10.9L92.0,10.9L96.0,10.8L100.0,10.8L104.0,10.7L108.0,10.7L112.0,10.7L116.0,10.8L120.0,10.8L124.0,10.9' stroke-width='1.36'/%3e%3cpath d='M-4.0,12.4L0.0,12.5L4.0,12.6L8.0,12.6L12.0,12.7L16.0,12.8L20.0,12.9L24.0,12.9L28.0,12.9L32.0,13.0L36.0,13.0L40.0,13.0L44.0,13.0L48.0,12.9L52.0,12.9L56.0,12.8L60.0,12.8L64.0,12.7L68.0,12.6L72.0,12.6L76.0,12.5L80.0,12.4L84.0,12.3L88.0,12.2L92.0,12.2L96.0,12.1L100.0,12.1L104.0,12.1L108.0,12.1L112.0,12.1L116.0,12.1L120.0,12.2L124.0,12.2' stroke-width='0.73'/%3e%3c/g%3e%3cg stroke='%235E5546' opacity='.45'%3e%3cpath d='M-4.0,15.8L0.0,15.9L4.0,15.9L8.0,16.0L12.0,16.1L16.0,16.1L20.0,16.2L24.0,16.2L28.0,16.2L32.0,16.2L36.0,16.2L40.0,16.2L44.0,16.2L48.0,16.1L52.0,16.1L56.0,16.0L60.0,15.9L64.0,15.9L68.0,15.8L72.0,15.7L76.0,15.6L80.0,15.5L84.0,15.5L88.0,15.4L92.0,15.3L96.0,15.3L100.0,15.3L104.0,15.3L108.0,15.3L112.0,15.4L116.0,15.4L120.0,15.5L124.0,15.6' stroke-width='0.69'/%3e%3cpath d='M-4.0,14.5L0.0,14.6L4.0,14.7L8.0,14.8L12.0,14.8L16.0,14.9L20.0,15.0L24.0,15.0L28.0,15.0L32.0,15.0L36.0,15.0L40.0,15.0L44.0,15.0L48.0,15.0L52.0,14.9L56.0,14.8L60.0,14.8L64.0,14.7L68.0,14.6L72.0,14.5L76.0,14.4L80.0,14.4L84.0,14.3L88.0,14.2L92.0,14.2L96.0,14.1L100.0,14.1L104.0,14.1L108.0,14.1L112.0,14.1L116.0,14.2L120.0,14.3L124.0,14.3' stroke-width='0.60'/%3e%3cpath d='M-4.0,15.4L0.0,15.5L4.0,15.5L8.0,15.6L12.0,15.7L16.0,15.7L20.0,15.8L24.0,15.8L28.0,15.9L32.0,15.9L36.0,15.9L40.0,15.8L44.0,15.8L48.0,15.8L52.0,15.7L56.0,15.6L60.0,15.6L64.0,15.5L68.0,15.4L72.0,15.3L76.0,15.2L80.0,15.1L84.0,15.1L88.0,15.0L92.0,15.0L96.0,14.9L100.0,14.9L104.0,14.9L108.0,14.9L112.0,15.0L116.0,15.0L120.0,15.1L124.0,15.2' stroke-width='0.47'/%3e%3cpath d='M-4.0,11.3L0.0,11.4L4.0,11.5L8.0,11.6L12.0,11.7L16.0,11.7L20.0,11.8L24.0,11.9L28.0,11.9L32.0,11.9L36.0,12.0L40.0,12.0L44.0,12.0L48.0,11.9L52.0,11.9L56.0,11.9L60.0,11.8L64.0,11.7L68.0,11.6L72.0,11.6L76.0,11.5L80.0,11.4L84.0,11.3L88.0,11.3L92.0,11.2L96.0,11.1L100.0,11.1L104.0,11.1L108.0,11.1L112.0,11.1L116.0,11.1L120.0,11.1L124.0,11.2' stroke-width='0.45'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e");
|
|
133
|
+
--ak-weave-primary: var(--ak-weave-primary-light);
|
|
134
|
+
--ak-weave-primary-shadow: drop-shadow(0 1px 1.5px rgba(18, 60, 49, 0.3));
|
|
135
|
+
--ak-weave-secondary: var(--ak-weave-secondary-light);
|
|
136
|
+
--ak-weave-secondary-shadow: drop-shadow(0 1px 1.5px rgba(80, 74, 60, 0.22));
|
|
137
|
+
}
|
|
138
|
+
@media (prefers-color-scheme: dark) {
|
|
139
|
+
:root:not([data-theme="light"]) {
|
|
140
|
+
--ak-weave-primary: var(--ak-weave-primary-dark);
|
|
141
|
+
--ak-weave-primary-shadow: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45));
|
|
142
|
+
--ak-weave-secondary: var(--ak-weave-secondary-dark);
|
|
143
|
+
--ak-weave-secondary-shadow: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
[data-theme="dark"] {
|
|
147
|
+
--ak-weave-primary: var(--ak-weave-primary-dark);
|
|
148
|
+
--ak-weave-primary-shadow: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45));
|
|
149
|
+
--ak-weave-secondary: var(--ak-weave-secondary-dark);
|
|
150
|
+
--ak-weave-secondary-shadow: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5));
|
|
151
|
+
}
|
|
152
|
+
/* 手動鎖定淺色;放在 html 上就整頁鎖,放在子樹上只鎖那塊。 */
|
|
153
|
+
:root.ak-theme-light,
|
|
154
|
+
.ak-theme-light {
|
|
155
|
+
--ak-bg: #fafaf6;
|
|
156
|
+
--ak-surface: #ffffff;
|
|
157
|
+
--ak-surface-raised: #ffffff;
|
|
158
|
+
--ak-border: #e3e0d5;
|
|
159
|
+
--ak-border-strong: #c8c3b4;
|
|
160
|
+
--ak-text: #23211d;
|
|
161
|
+
--ak-text-muted: #635d52;
|
|
162
|
+
--ak-text-faint: #9c958a;
|
|
163
|
+
--ak-accent: #23705a;
|
|
164
|
+
--ak-accent-text: #fcfcf9;
|
|
165
|
+
--ak-accent-subtle: #e7f0eb;
|
|
166
|
+
--ak-danger: #b3402e;
|
|
167
|
+
--ak-danger-subtle: #f7e7e3;
|
|
168
|
+
--ak-success: #23705a;
|
|
169
|
+
--ak-success-subtle: #e7f0eb;
|
|
170
|
+
--ak-warning: #9a6a1b;
|
|
171
|
+
--ak-warning-subtle: #f5ebd9;
|
|
172
|
+
--ak-info: #2c5c86;
|
|
173
|
+
--ak-info-subtle: #e4edf5;
|
|
174
|
+
--ak-focus-ring: #23705a;
|
|
175
|
+
--ak-bone: #ece9df;
|
|
176
|
+
--ak-sheen: #f6f4ec;
|
|
177
|
+
--ak-success-hl: #c6e0c6;
|
|
178
|
+
--ak-danger-hl: #efcec3;
|
|
179
|
+
--ak-shadow-popover: 0 8px 24px rgba(35, 33, 29, 0.1);
|
|
180
|
+
--ak-shadow-raised: 0 1px 2px rgba(35, 33, 29, 0.08);
|
|
181
|
+
--ak-font-display: "Newsreader Variable", Georgia, "Times New Roman", serif;
|
|
182
|
+
--ak-font-body: "Geist Variable", system-ui, sans-serif;
|
|
183
|
+
--ak-font-mono: "Geist Mono Variable", ui-monospace, monospace;
|
|
184
|
+
--ak-radius-sm: 0.375rem;
|
|
185
|
+
--ak-radius-md: 0.5rem;
|
|
186
|
+
--ak-radius-lg: 0.75rem;
|
|
187
|
+
--ak-radius-xl: 1rem;
|
|
188
|
+
--ak-motion-fast: 120ms;
|
|
189
|
+
--ak-motion-normal: 200ms;
|
|
190
|
+
--ak-motion-slow: 400ms;
|
|
191
|
+
--ak-motion-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
192
|
+
--ak-motion-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
193
|
+
--ak-motion-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
194
|
+
--ak-weave-primary: var(--ak-weave-primary-light);
|
|
195
|
+
--ak-weave-primary-shadow: drop-shadow(0 1px 1.5px rgba(18, 60, 49, 0.3));
|
|
196
|
+
--ak-weave-secondary: var(--ak-weave-secondary-light);
|
|
197
|
+
--ak-weave-secondary-shadow: drop-shadow(0 1px 1.5px rgba(80, 74, 60, 0.22));
|
|
198
|
+
}
|
|
199
|
+
/* 手動鎖定暗色。 */
|
|
200
|
+
:root.ak-theme-dark,
|
|
201
|
+
.ak-theme-dark {
|
|
202
|
+
--ak-bone: #2a2620;
|
|
203
|
+
--ak-sheen: #35302a;
|
|
204
|
+
--ak-success-hl: #2f4a2e;
|
|
205
|
+
--ak-danger-hl: #573328;
|
|
206
|
+
--ak-shadow-popover: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
207
|
+
--ak-shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
208
|
+
--ak-bg: #181613;
|
|
209
|
+
--ak-surface: #201d18;
|
|
210
|
+
--ak-surface-raised: #282420;
|
|
211
|
+
--ak-border: #35302a;
|
|
212
|
+
--ak-border-strong: #4a443c;
|
|
213
|
+
--ak-text: #eae6dc;
|
|
214
|
+
--ak-text-muted: #b0a697;
|
|
215
|
+
--ak-text-faint: #736a5d;
|
|
216
|
+
--ak-accent: #4fa184;
|
|
217
|
+
--ak-accent-text: #14120f;
|
|
218
|
+
--ak-accent-subtle: #22352e;
|
|
219
|
+
--ak-danger: #dd7059;
|
|
220
|
+
--ak-danger-subtle: #3d231e;
|
|
221
|
+
--ak-success: #4fa184;
|
|
222
|
+
--ak-success-subtle: #22352e;
|
|
223
|
+
--ak-warning: #d9a254;
|
|
224
|
+
--ak-warning-subtle: #3a2f1d;
|
|
225
|
+
--ak-info: #6fa3ce;
|
|
226
|
+
--ak-info-subtle: #1e2c38;
|
|
227
|
+
--ak-focus-ring: #4fa184;
|
|
228
|
+
--ak-weave-primary: var(--ak-weave-primary-dark);
|
|
229
|
+
--ak-weave-primary-shadow: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45));
|
|
230
|
+
--ak-weave-secondary: var(--ak-weave-secondary-dark);
|
|
231
|
+
--ak-weave-secondary-shadow: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5));
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
:root {
|
|
235
|
+
/* Google Fonts 的家族名沒有 Variable 後綴;兩個名字都列,fontsource 或 Google Fonts 都能接上 */
|
|
236
|
+
--ak-font-display: "Newsreader Variable", "Newsreader", Georgia, "Times New Roman", serif;
|
|
237
|
+
--ak-font-body: "Geist Variable", "Geist", system-ui, sans-serif;
|
|
238
|
+
--ak-font-mono: "Geist Mono Variable", "Geist Mono", ui-monospace, monospace;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
body {
|
|
242
|
+
margin: 0;
|
|
243
|
+
background: var(--ak-bg);
|
|
244
|
+
color: var(--ak-text);
|
|
245
|
+
font-family: var(--ak-font-body);
|
|
246
|
+
font-size: 1rem;
|
|
247
|
+
line-height: 1.6;
|
|
248
|
+
-webkit-font-smoothing: antialiased;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* ---- 骨架 ---- */
|
|
252
|
+
|
|
253
|
+
/* 頁面容器:最大寬、左右留白、紙底。一頁一個。 */
|
|
254
|
+
.ak-page {
|
|
255
|
+
max-width: 64rem;
|
|
256
|
+
margin-inline: auto;
|
|
257
|
+
padding: 3rem 1.5rem;
|
|
258
|
+
background: var(--ak-bg);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* 分段:上方一條髮線加留白。結論在前的頁面用它切證據段。 */
|
|
262
|
+
.ak-section {
|
|
263
|
+
margin-top: 3rem;
|
|
264
|
+
padding-top: 2rem;
|
|
265
|
+
border-top: 1px solid var(--ak-border);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* 兩欄網格,375 寬以下折成單欄。 */
|
|
269
|
+
.ak-grid-2 {
|
|
270
|
+
display: grid;
|
|
271
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
272
|
+
gap: 1.5rem;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/* 三欄網格,375 寬以下折成單欄。stat 一排最多放這麼多再加一。 */
|
|
276
|
+
.ak-grid-3 {
|
|
277
|
+
display: grid;
|
|
278
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
279
|
+
gap: 1.5rem;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
@media (max-width: 40rem) {
|
|
283
|
+
.ak-page {
|
|
284
|
+
padding: 2rem 1rem;
|
|
285
|
+
}
|
|
286
|
+
.ak-grid-2,
|
|
287
|
+
.ak-grid-3 {
|
|
288
|
+
grid-template-columns: minmax(0, 1fr);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/* ---- 文字 ---- */
|
|
293
|
+
|
|
294
|
+
/* display 級標題,serif。一頁一個。 */
|
|
295
|
+
.ak-display {
|
|
296
|
+
font-family: var(--ak-font-display);
|
|
297
|
+
font-optical-sizing: auto;
|
|
298
|
+
font-size: 2.25rem;
|
|
299
|
+
font-weight: 500;
|
|
300
|
+
line-height: 1.2;
|
|
301
|
+
letter-spacing: -0.01em;
|
|
302
|
+
margin: 0 0 1rem;
|
|
303
|
+
text-wrap: balance;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/* section 標題,serif。 */
|
|
307
|
+
.ak-h1 {
|
|
308
|
+
font-family: var(--ak-font-display);
|
|
309
|
+
font-optical-sizing: auto;
|
|
310
|
+
font-size: 1.75rem;
|
|
311
|
+
font-weight: 500;
|
|
312
|
+
line-height: 1.2;
|
|
313
|
+
margin: 0 0 0.75rem;
|
|
314
|
+
text-wrap: balance;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/* section 內的分節標題,serif。 */
|
|
318
|
+
.ak-h2 {
|
|
319
|
+
font-family: var(--ak-font-display);
|
|
320
|
+
font-optical-sizing: auto;
|
|
321
|
+
font-size: 1.375rem;
|
|
322
|
+
font-weight: 500;
|
|
323
|
+
line-height: 1.4;
|
|
324
|
+
margin: 2rem 0 0.5rem;
|
|
325
|
+
text-wrap: balance;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/* 正文區:p / ul / ol / a / code / pre / blockquote / h3 的階層與行長。 */
|
|
329
|
+
.ak-prose {
|
|
330
|
+
max-width: 68ch;
|
|
331
|
+
font-size: 1rem;
|
|
332
|
+
line-height: 1.6;
|
|
333
|
+
}
|
|
334
|
+
.ak-prose p,
|
|
335
|
+
.ak-prose ul,
|
|
336
|
+
.ak-prose ol,
|
|
337
|
+
.ak-prose pre,
|
|
338
|
+
.ak-prose blockquote {
|
|
339
|
+
margin: 0 0 1rem;
|
|
340
|
+
}
|
|
341
|
+
.ak-prose ul,
|
|
342
|
+
.ak-prose ol {
|
|
343
|
+
padding-inline-start: 1.5rem;
|
|
344
|
+
}
|
|
345
|
+
.ak-prose li {
|
|
346
|
+
margin-bottom: 0.25rem;
|
|
347
|
+
}
|
|
348
|
+
.ak-prose a {
|
|
349
|
+
color: var(--ak-accent);
|
|
350
|
+
text-decoration: underline;
|
|
351
|
+
text-decoration-color: var(--ak-border-strong);
|
|
352
|
+
text-underline-offset: 0.15em;
|
|
353
|
+
}
|
|
354
|
+
.ak-prose a:hover {
|
|
355
|
+
text-decoration-color: currentColor;
|
|
356
|
+
}
|
|
357
|
+
.ak-prose h3 {
|
|
358
|
+
font-family: var(--ak-font-body);
|
|
359
|
+
font-size: 1.125rem;
|
|
360
|
+
font-weight: 600;
|
|
361
|
+
line-height: 1.4;
|
|
362
|
+
margin: 1.5rem 0 0.5rem;
|
|
363
|
+
}
|
|
364
|
+
.ak-prose code {
|
|
365
|
+
font-family: var(--ak-font-mono);
|
|
366
|
+
font-size: 0.8125rem;
|
|
367
|
+
background: var(--ak-bone);
|
|
368
|
+
border-radius: 0.375rem;
|
|
369
|
+
padding: 0.1em 0.35em;
|
|
370
|
+
}
|
|
371
|
+
.ak-prose pre {
|
|
372
|
+
font-family: var(--ak-font-mono);
|
|
373
|
+
font-size: 0.8125rem;
|
|
374
|
+
line-height: 1.5;
|
|
375
|
+
background: var(--ak-bone);
|
|
376
|
+
border-radius: 0.5rem;
|
|
377
|
+
padding: 0.75rem 1rem;
|
|
378
|
+
overflow-x: auto;
|
|
379
|
+
}
|
|
380
|
+
.ak-prose pre code {
|
|
381
|
+
background: none;
|
|
382
|
+
padding: 0;
|
|
383
|
+
font-size: inherit;
|
|
384
|
+
}
|
|
385
|
+
.ak-prose blockquote {
|
|
386
|
+
border-inline-start: 2px solid var(--ak-border-strong);
|
|
387
|
+
padding-inline-start: 1rem;
|
|
388
|
+
color: var(--ak-text-muted);
|
|
389
|
+
}
|
|
390
|
+
.ak-prose hr {
|
|
391
|
+
border: 0;
|
|
392
|
+
border-top: 1px solid var(--ak-border);
|
|
393
|
+
margin: 2rem 0;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/* 次要說明:顏色降一階,字級不變。 */
|
|
397
|
+
.ak-muted {
|
|
398
|
+
color: var(--ak-text-muted);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/* 等寬:數據、代碼、識別碼。不當裝飾。 */
|
|
402
|
+
.ak-mono {
|
|
403
|
+
font-family: var(--ak-font-mono);
|
|
404
|
+
font-size: 0.875em;
|
|
405
|
+
font-variant-numeric: tabular-nums;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/* ---- 證據 ---- */
|
|
409
|
+
|
|
410
|
+
/* 證據表:滿版、tabular-nums、斑馬用 bone。數字欄加 data-num 靠右。 */
|
|
411
|
+
.ak-table {
|
|
412
|
+
width: 100%;
|
|
413
|
+
border-collapse: collapse;
|
|
414
|
+
font-size: 0.875rem;
|
|
415
|
+
line-height: 1.5;
|
|
416
|
+
font-variant-numeric: tabular-nums;
|
|
417
|
+
margin: 1rem 0;
|
|
418
|
+
}
|
|
419
|
+
.ak-table th,
|
|
420
|
+
.ak-table td {
|
|
421
|
+
text-align: start;
|
|
422
|
+
vertical-align: top;
|
|
423
|
+
padding: 0.5rem 0.75rem;
|
|
424
|
+
border-bottom: 1px solid var(--ak-border);
|
|
425
|
+
}
|
|
426
|
+
.ak-table th {
|
|
427
|
+
font-weight: 500;
|
|
428
|
+
color: var(--ak-text-muted);
|
|
429
|
+
border-bottom-color: var(--ak-border-strong);
|
|
430
|
+
}
|
|
431
|
+
.ak-table tbody tr:nth-child(even) {
|
|
432
|
+
background: var(--ak-bone);
|
|
433
|
+
}
|
|
434
|
+
.ak-table [data-num] {
|
|
435
|
+
text-align: end;
|
|
436
|
+
font-variant-numeric: tabular-nums;
|
|
437
|
+
}
|
|
438
|
+
.ak-table caption {
|
|
439
|
+
text-align: start;
|
|
440
|
+
color: var(--ak-text-muted);
|
|
441
|
+
font-size: 0.875rem;
|
|
442
|
+
padding-bottom: 0.5rem;
|
|
443
|
+
}
|
|
444
|
+
@media (max-width: 40rem) {
|
|
445
|
+
.ak-table {
|
|
446
|
+
display: block;
|
|
447
|
+
overflow-x: auto;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/* 結論級的大數字:serif 數字加 muted 小標。一排最多四個。 */
|
|
452
|
+
.ak-stat {
|
|
453
|
+
display: flex;
|
|
454
|
+
flex-direction: column;
|
|
455
|
+
gap: 0.25rem;
|
|
456
|
+
padding: 1rem 0;
|
|
457
|
+
border-top: 1px solid var(--ak-border);
|
|
458
|
+
}
|
|
459
|
+
/* ak-stat 的數字。 */
|
|
460
|
+
.ak-stat-value {
|
|
461
|
+
font-family: var(--ak-font-display);
|
|
462
|
+
font-optical-sizing: auto;
|
|
463
|
+
font-size: 2.25rem;
|
|
464
|
+
font-weight: 500;
|
|
465
|
+
line-height: 1.2;
|
|
466
|
+
letter-spacing: -0.01em;
|
|
467
|
+
font-variant-numeric: tabular-nums;
|
|
468
|
+
}
|
|
469
|
+
/* ak-stat 的小標。 */
|
|
470
|
+
.ak-stat-label {
|
|
471
|
+
font-size: 0.875rem;
|
|
472
|
+
color: var(--ak-text-muted);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/* 提示框:左側一條色線加淡底,語意由 ak-callout-info / -warning / -danger 決定。 */
|
|
476
|
+
.ak-callout {
|
|
477
|
+
border-inline-start: 2px solid var(--ak-border-strong);
|
|
478
|
+
background: var(--ak-sheen);
|
|
479
|
+
padding: 0.75rem 1rem;
|
|
480
|
+
margin: 1rem 0;
|
|
481
|
+
font-size: 0.875rem;
|
|
482
|
+
line-height: 1.5;
|
|
483
|
+
border-radius: 0 0.5rem 0.5rem 0;
|
|
484
|
+
}
|
|
485
|
+
.ak-callout > :first-child {
|
|
486
|
+
margin-top: 0;
|
|
487
|
+
}
|
|
488
|
+
.ak-callout > :last-child {
|
|
489
|
+
margin-bottom: 0;
|
|
490
|
+
}
|
|
491
|
+
/* 說明性提示。 */
|
|
492
|
+
.ak-callout-info {
|
|
493
|
+
border-color: var(--ak-info);
|
|
494
|
+
background: var(--ak-info-subtle);
|
|
495
|
+
}
|
|
496
|
+
/* 要注意但不擋路。 */
|
|
497
|
+
.ak-callout-warning {
|
|
498
|
+
border-color: var(--ak-warning);
|
|
499
|
+
background: var(--ak-warning-subtle);
|
|
500
|
+
}
|
|
501
|
+
/* 會出事。 */
|
|
502
|
+
.ak-callout-danger {
|
|
503
|
+
border-color: var(--ak-danger);
|
|
504
|
+
background: var(--ak-danger-subtle);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/* ---- 動作 ---- */
|
|
508
|
+
|
|
509
|
+
/* 表單欄位:label 在上、控件在下,input / textarea / select 都給一樣的邊框與焦點環。 */
|
|
510
|
+
.ak-field {
|
|
511
|
+
display: flex;
|
|
512
|
+
flex-direction: column;
|
|
513
|
+
gap: 0.25rem;
|
|
514
|
+
max-width: 24rem;
|
|
515
|
+
margin: 0 0 1rem;
|
|
516
|
+
font-size: 0.875rem;
|
|
517
|
+
}
|
|
518
|
+
.ak-field > label {
|
|
519
|
+
font-weight: 500;
|
|
520
|
+
}
|
|
521
|
+
.ak-field input,
|
|
522
|
+
.ak-field textarea,
|
|
523
|
+
.ak-field select {
|
|
524
|
+
font: inherit;
|
|
525
|
+
font-family: var(--ak-font-body);
|
|
526
|
+
color: var(--ak-text);
|
|
527
|
+
background: var(--ak-surface);
|
|
528
|
+
border: 1px solid var(--ak-border-strong);
|
|
529
|
+
border-radius: 0.5rem;
|
|
530
|
+
padding: 0.5rem 0.75rem;
|
|
531
|
+
min-height: 2.25rem;
|
|
532
|
+
box-sizing: border-box;
|
|
533
|
+
width: 100%;
|
|
534
|
+
}
|
|
535
|
+
.ak-field textarea {
|
|
536
|
+
min-height: 5rem;
|
|
537
|
+
resize: vertical;
|
|
538
|
+
}
|
|
539
|
+
.ak-field input:focus-visible,
|
|
540
|
+
.ak-field textarea:focus-visible,
|
|
541
|
+
.ak-field select:focus-visible {
|
|
542
|
+
outline: 2px solid var(--ak-focus-ring);
|
|
543
|
+
outline-offset: 2px;
|
|
544
|
+
}
|
|
545
|
+
.ak-field input::placeholder,
|
|
546
|
+
.ak-field textarea::placeholder {
|
|
547
|
+
color: var(--ak-text-faint);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/* 主動作按鈕:viridian 織體,一頁一顆。 */
|
|
551
|
+
.ak-btn {
|
|
552
|
+
display: inline-flex;
|
|
553
|
+
align-items: center;
|
|
554
|
+
justify-content: center;
|
|
555
|
+
gap: 0.5rem;
|
|
556
|
+
min-height: 2.25rem;
|
|
557
|
+
padding: 0.5rem 1rem;
|
|
558
|
+
border: 0;
|
|
559
|
+
border-radius: 0.5rem;
|
|
560
|
+
font-family: var(--ak-font-body);
|
|
561
|
+
font-size: 0.875rem;
|
|
562
|
+
font-weight: 500;
|
|
563
|
+
line-height: 1.2;
|
|
564
|
+
color: var(--ak-accent-text);
|
|
565
|
+
background-color: var(--ak-accent);
|
|
566
|
+
background-image: var(--ak-weave-primary);
|
|
567
|
+
background-size: 100% 100%;
|
|
568
|
+
background-repeat: no-repeat;
|
|
569
|
+
filter: var(--ak-weave-primary-shadow);
|
|
570
|
+
cursor: pointer;
|
|
571
|
+
text-decoration: none;
|
|
572
|
+
transition: opacity var(--ak-motion-fast) var(--ak-motion-ease-out);
|
|
573
|
+
}
|
|
574
|
+
.ak-btn:hover {
|
|
575
|
+
opacity: 0.92;
|
|
576
|
+
}
|
|
577
|
+
.ak-btn:active {
|
|
578
|
+
opacity: 0.85;
|
|
579
|
+
}
|
|
580
|
+
.ak-btn:focus-visible,
|
|
581
|
+
.ak-btn-secondary:focus-visible {
|
|
582
|
+
outline: 2px solid var(--ak-focus-ring);
|
|
583
|
+
outline-offset: 3px;
|
|
584
|
+
}
|
|
585
|
+
.ak-btn:disabled,
|
|
586
|
+
.ak-btn-secondary:disabled {
|
|
587
|
+
opacity: 0.5;
|
|
588
|
+
cursor: not-allowed;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/* 次要按鈕:淺色織體,其他動作都用它。 */
|
|
592
|
+
.ak-btn-secondary {
|
|
593
|
+
display: inline-flex;
|
|
594
|
+
align-items: center;
|
|
595
|
+
justify-content: center;
|
|
596
|
+
gap: 0.5rem;
|
|
597
|
+
min-height: 2.25rem;
|
|
598
|
+
padding: 0.5rem 1rem;
|
|
599
|
+
border: 0;
|
|
600
|
+
border-radius: 0.5rem;
|
|
601
|
+
font-family: var(--ak-font-body);
|
|
602
|
+
font-size: 0.875rem;
|
|
603
|
+
font-weight: 500;
|
|
604
|
+
line-height: 1.2;
|
|
605
|
+
color: var(--ak-text);
|
|
606
|
+
background-color: var(--ak-bone);
|
|
607
|
+
background-image: var(--ak-weave-secondary);
|
|
608
|
+
background-size: 100% 100%;
|
|
609
|
+
background-repeat: no-repeat;
|
|
610
|
+
filter: var(--ak-weave-secondary-shadow);
|
|
611
|
+
cursor: pointer;
|
|
612
|
+
text-decoration: none;
|
|
613
|
+
transition: opacity var(--ak-motion-fast) var(--ak-motion-ease-out);
|
|
614
|
+
}
|
|
615
|
+
.ak-btn-secondary:hover {
|
|
616
|
+
opacity: 0.92;
|
|
617
|
+
}
|
|
618
|
+
.ak-btn-secondary:active {
|
|
619
|
+
opacity: 0.85;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
@media (prefers-reduced-motion: reduce) {
|
|
623
|
+
.ak-btn,
|
|
624
|
+
.ak-btn-secondary {
|
|
625
|
+
transition: none;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type StyleArg } from "../../lib/styled.js";
|
|
2
|
+
export type FormulaProps = {
|
|
3
|
+
children: string;
|
|
4
|
+
display?: boolean;
|
|
5
|
+
sx?: StyleArg;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* TeX → MathML, rendered by the browser itself.
|
|
9
|
+
*
|
|
10
|
+
* Temml emits MathML rather than a pile of positioned spans, which is why this component needs no
|
|
11
|
+
* stylesheet and no web font — the two things a KaTeX integration would push onto every consumer
|
|
12
|
+
* of this package. It also means a screen reader gets the actual maths, not a div soup.
|
|
13
|
+
*
|
|
14
|
+
* Temml writes into the node directly (`temml.render`), so nothing here ever hands a string to
|
|
15
|
+
* `dangerouslySetInnerHTML` — this package does not use it anywhere and maths is not the place to
|
|
16
|
+
* start, given the TeX usually arrives from a language model.
|
|
17
|
+
*/
|
|
18
|
+
export declare function Formula({ children, display, sx }: FormulaProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as stylex from "@stylexjs/stylex";
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import { styled } from "../../lib/styled.js";
|
|
5
|
+
import { color, space, text } from "../../tokens.stylex.js";
|
|
6
|
+
const styles = stylex.create({
|
|
7
|
+
// Display maths is the one block that routinely overflows a phone: a long equation cannot be
|
|
8
|
+
// re-wrapped the way a paragraph can, so it gets its own scroller rather than widening the page.
|
|
9
|
+
block: {
|
|
10
|
+
display: "block",
|
|
11
|
+
overflowX: "auto",
|
|
12
|
+
overflowY: "hidden",
|
|
13
|
+
paddingBlock: space.xs,
|
|
14
|
+
marginBlock: space.xs,
|
|
15
|
+
color: color.text,
|
|
16
|
+
},
|
|
17
|
+
inline: {
|
|
18
|
+
display: "inline-block",
|
|
19
|
+
maxWidth: "100%",
|
|
20
|
+
overflowX: "auto",
|
|
21
|
+
verticalAlign: "middle",
|
|
22
|
+
color: color.text,
|
|
23
|
+
},
|
|
24
|
+
// What a caller sees when the TeX itself is wrong. Showing the source beats showing nothing:
|
|
25
|
+
// the reader can still read the formula, and it is obvious who to blame.
|
|
26
|
+
error: {
|
|
27
|
+
fontFamily: "ui-monospace, monospace",
|
|
28
|
+
fontSize: text.xs,
|
|
29
|
+
color: color.danger,
|
|
30
|
+
overflowWrap: "anywhere",
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* TeX → MathML, rendered by the browser itself.
|
|
35
|
+
*
|
|
36
|
+
* Temml emits MathML rather than a pile of positioned spans, which is why this component needs no
|
|
37
|
+
* stylesheet and no web font — the two things a KaTeX integration would push onto every consumer
|
|
38
|
+
* of this package. It also means a screen reader gets the actual maths, not a div soup.
|
|
39
|
+
*
|
|
40
|
+
* Temml writes into the node directly (`temml.render`), so nothing here ever hands a string to
|
|
41
|
+
* `dangerouslySetInnerHTML` — this package does not use it anywhere and maths is not the place to
|
|
42
|
+
* start, given the TeX usually arrives from a language model.
|
|
43
|
+
*/
|
|
44
|
+
export function Formula({ children, display = false, sx }) {
|
|
45
|
+
const host = useRef(null);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
const node = host.current;
|
|
48
|
+
if (!node)
|
|
49
|
+
return;
|
|
50
|
+
let live = true;
|
|
51
|
+
// Temml is ~250KB and most messages contain no maths at all, so it arrives only when the
|
|
52
|
+
// first formula does.
|
|
53
|
+
void import("temml")
|
|
54
|
+
.then((temml) => {
|
|
55
|
+
if (!live || !host.current)
|
|
56
|
+
return;
|
|
57
|
+
temml.default.render(children, host.current, {
|
|
58
|
+
displayMode: display,
|
|
59
|
+
// `throwOnError: false` renders the offending source in red instead of blowing up the
|
|
60
|
+
// whole message; `trust: false` (the default) keeps \href and friends inert.
|
|
61
|
+
throwOnError: false,
|
|
62
|
+
errorColor: "currentColor",
|
|
63
|
+
});
|
|
64
|
+
})
|
|
65
|
+
// Nothing about one formula is worth taking a message down for. `throwOnError` covers bad
|
|
66
|
+
// TeX, this covers everything else: a chunk that fails to load, or a DOM that will not
|
|
67
|
+
// take MathML at all (jsdom builds those elements without a `style`, so Temml throws
|
|
68
|
+
// there and only there). The source TeX is already on screen and simply stays.
|
|
69
|
+
.catch(() => { });
|
|
70
|
+
return () => {
|
|
71
|
+
live = false;
|
|
72
|
+
};
|
|
73
|
+
}, [children, display]);
|
|
74
|
+
return (_jsx("span", { ref: host, ...styled({}, display ? styles.block : styles.inline, sx), ...(display ? { role: "math" } : {}), children: _jsx("span", { ...stylex.props(styles.error), children: children }) }));
|
|
75
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from "react";
|
|
2
|
+
import { type StyleArg } from "../../lib/styled.js";
|
|
3
|
+
/** A fenced block a shell wants to draw itself — mermaid, a chart spec, anything. */
|
|
4
|
+
export type MarkdownBlock = {
|
|
5
|
+
lang: string;
|
|
6
|
+
code: string;
|
|
7
|
+
};
|
|
8
|
+
export type MarkdownProps = Omit<ComponentProps<"div">, "children"> & {
|
|
9
|
+
children: string;
|
|
10
|
+
/**
|
|
11
|
+
* Draws a fenced block instead of the built-in code block. Returning `undefined` (or not
|
|
12
|
+
* passing this at all) falls back to the code block, which is why a shell that has no mermaid
|
|
13
|
+
* bundled still shows the source rather than nothing.
|
|
14
|
+
*
|
|
15
|
+
* This package deliberately does not depend on any diagram library: mermaid alone unpacks to
|
|
16
|
+
* ~84MB, which no design system should push onto every app that installs it.
|
|
17
|
+
*/
|
|
18
|
+
renderBlock?: (block: MarkdownBlock) => ReactNode | undefined;
|
|
19
|
+
/** Passed through to code blocks, so a shell can localise their copy button. */
|
|
20
|
+
copyLabel?: string;
|
|
21
|
+
copiedLabel?: string;
|
|
22
|
+
sx?: StyleArg;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Markdown as a conversation renders it: GFM tables, fenced code, TeX maths, task lists.
|
|
26
|
+
*
|
|
27
|
+
* Nothing here goes through `innerHTML`. The markdown is tokenised and every token is turned into
|
|
28
|
+
* a React element, so a model that emits `<script>` gets its source shown, not run.
|
|
29
|
+
*/
|
|
30
|
+
export declare function Markdown({ children, renderBlock, copyLabel, copiedLabel, sx, ...rest }: MarkdownProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as stylex from "@stylexjs/stylex";
|
|
3
|
+
import { Marked } from "marked";
|
|
4
|
+
import { styled } from "../../lib/styled.js";
|
|
5
|
+
import { color, radius, space, text } from "../../tokens.stylex.js";
|
|
6
|
+
import { Checkbox } from "../checkbox/Checkbox.js";
|
|
7
|
+
import { CodeBlock, InlineCode } from "../code-block/CodeBlock.js";
|
|
8
|
+
import { Formula } from "./Formula.js";
|
|
9
|
+
import { isMathToken, mathExtensions } from "./math.js";
|
|
10
|
+
// Its own Marked instance, not the module-level `marked`: `marked.use()` is global, and a design
|
|
11
|
+
// system must not reach into whatever else the host app parses.
|
|
12
|
+
//
|
|
13
|
+
// `breaks: true` because this renders what a person or a model just typed into a conversation. In
|
|
14
|
+
// a document a lone newline is a space; in a chat message it is a line the writer meant to break.
|
|
15
|
+
const parser = new Marked({ gfm: true, breaks: true }).use({ extensions: mathExtensions });
|
|
16
|
+
const styles = stylex.create({
|
|
17
|
+
root: {
|
|
18
|
+
display: "grid",
|
|
19
|
+
gap: space.sm,
|
|
20
|
+
// Set, never inherited. Every other component in this package states its own colour and
|
|
21
|
+
// size for the same reason: a host whose text colour is wrong (or missing, as when a page
|
|
22
|
+
// forgets tokens.css) would otherwise paint this black on a dark ground.
|
|
23
|
+
color: color.text,
|
|
24
|
+
fontSize: text.sm,
|
|
25
|
+
lineHeight: text.leadingRelaxed,
|
|
26
|
+
// Model output is full of things with no spaces in them — URLs, file paths, hashes. On a
|
|
27
|
+
// 390px screen any one of them would otherwise push the whole conversation sideways.
|
|
28
|
+
overflowWrap: "anywhere",
|
|
29
|
+
minWidth: 0,
|
|
30
|
+
},
|
|
31
|
+
p: { margin: 0, lineHeight: text.leadingNormal },
|
|
32
|
+
heading: { margin: 0, lineHeight: text.leadingSnug, fontWeight: 600 },
|
|
33
|
+
h1: { fontSize: text.lg },
|
|
34
|
+
// h2 and below are body-sized and carry their weight instead: these are headings inside one
|
|
35
|
+
// chat message, not a page outline, and a message that shouts three sizes at you reads worse.
|
|
36
|
+
h2: { fontSize: text.base },
|
|
37
|
+
h3: { fontSize: text.base },
|
|
38
|
+
list: { margin: 0, paddingInlineStart: "1.5em", display: "grid", gap: space.xxs },
|
|
39
|
+
item: { lineHeight: text.leadingNormal },
|
|
40
|
+
// The item's own text follows it on the same line, so the box must not take the whole row.
|
|
41
|
+
task: { display: "inline-flex", marginInlineEnd: space.xxs, verticalAlign: "middle" },
|
|
42
|
+
quote: {
|
|
43
|
+
margin: 0,
|
|
44
|
+
paddingInlineStart: space.sm,
|
|
45
|
+
borderInlineStartWidth: 2,
|
|
46
|
+
borderInlineStartStyle: "solid",
|
|
47
|
+
borderInlineStartColor: color.border,
|
|
48
|
+
color: color.textMuted,
|
|
49
|
+
display: "grid",
|
|
50
|
+
gap: space.xs,
|
|
51
|
+
},
|
|
52
|
+
rule: {
|
|
53
|
+
border: "none",
|
|
54
|
+
borderBlockStartWidth: 1,
|
|
55
|
+
borderBlockStartStyle: "solid",
|
|
56
|
+
borderBlockStartColor: color.border,
|
|
57
|
+
margin: 0,
|
|
58
|
+
},
|
|
59
|
+
link: { color: color.accent, textUnderlineOffset: "0.15em" },
|
|
60
|
+
image: { maxWidth: "100%", height: "auto", borderRadius: radius.md },
|
|
61
|
+
// The table itself must not shrink to fit; the wrapper scrolls instead. A squashed table on a
|
|
62
|
+
// phone is unreadable, a scrolling one is merely narrow.
|
|
63
|
+
tableWrap: { overflowX: "auto", maxWidth: "100%" },
|
|
64
|
+
// Sized by its own content, not stretched to the message width: a two-column table pulled out
|
|
65
|
+
// to full width puts its cells at opposite ends of the screen and is harder to read, not easier.
|
|
66
|
+
table: { borderCollapse: "collapse" },
|
|
67
|
+
cell: {
|
|
68
|
+
borderWidth: 1,
|
|
69
|
+
borderStyle: "solid",
|
|
70
|
+
borderColor: color.border,
|
|
71
|
+
paddingBlock: space.xxs,
|
|
72
|
+
paddingInline: space.xs,
|
|
73
|
+
textAlign: "start",
|
|
74
|
+
verticalAlign: "top",
|
|
75
|
+
},
|
|
76
|
+
head: { backgroundColor: color.surface, fontWeight: 600 },
|
|
77
|
+
});
|
|
78
|
+
const ALIGN = { left: "start", center: "center", right: "end" };
|
|
79
|
+
function inlineTokens(token) {
|
|
80
|
+
return token.tokens;
|
|
81
|
+
}
|
|
82
|
+
function renderInline(tokens, context, keyPrefix) {
|
|
83
|
+
if (!tokens)
|
|
84
|
+
return null;
|
|
85
|
+
return tokens.map((token, index) => {
|
|
86
|
+
const key = `${keyPrefix}.${index}`;
|
|
87
|
+
if (isMathToken(token)) {
|
|
88
|
+
return (_jsx(Formula, { display: token.display, children: token.text }, key));
|
|
89
|
+
}
|
|
90
|
+
switch (token.type) {
|
|
91
|
+
case "text":
|
|
92
|
+
case "escape": {
|
|
93
|
+
const nested = inlineTokens(token);
|
|
94
|
+
// A `text` token carries children only when it contains inline markup; otherwise the
|
|
95
|
+
// string itself is the whole of it.
|
|
96
|
+
return nested ? (_jsx("span", { children: renderInline(nested, context, key) }, key)) : (token.text);
|
|
97
|
+
}
|
|
98
|
+
case "strong":
|
|
99
|
+
return _jsx("strong", { children: renderInline(inlineTokens(token), context, key) }, key);
|
|
100
|
+
case "em":
|
|
101
|
+
return _jsx("em", { children: renderInline(inlineTokens(token), context, key) }, key);
|
|
102
|
+
case "del":
|
|
103
|
+
return _jsx("del", { children: renderInline(inlineTokens(token), context, key) }, key);
|
|
104
|
+
case "codespan":
|
|
105
|
+
return _jsx(InlineCode, { children: token.text }, key);
|
|
106
|
+
case "br":
|
|
107
|
+
return _jsx("br", {}, key);
|
|
108
|
+
// The list draws the box itself; this token is the source `[x]` and would double it.
|
|
109
|
+
case "checkbox":
|
|
110
|
+
return null;
|
|
111
|
+
case "link": {
|
|
112
|
+
const link = token;
|
|
113
|
+
return (_jsx("a", { href: link.href, title: link.title ?? undefined, target: "_blank",
|
|
114
|
+
// Model output is untrusted: never hand a new tab a live `window.opener`.
|
|
115
|
+
rel: "noopener noreferrer nofollow", ...stylex.props(styles.link), children: renderInline(inlineTokens(token), context, key) }, key));
|
|
116
|
+
}
|
|
117
|
+
case "image": {
|
|
118
|
+
const image = token;
|
|
119
|
+
return (_jsx("img", { src: image.href, alt: image.text, title: image.title ?? undefined, loading: "lazy", ...stylex.props(styles.image) }, key));
|
|
120
|
+
}
|
|
121
|
+
// `html` inline: shown as text, never parsed. See renderBlocks.
|
|
122
|
+
case "html":
|
|
123
|
+
return _jsx("span", { children: token.raw }, key);
|
|
124
|
+
default:
|
|
125
|
+
return _jsx("span", { children: token.raw ?? "" }, key);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* A list item's children are a mix: its own sentence arrives as inline tokens, but a nested list
|
|
131
|
+
* or fenced block is block-level. Sending the whole lot to one renderer is what flattened
|
|
132
|
+
* "巢狀:\n 1. 第一\n 2. 第二" into a single line.
|
|
133
|
+
*/
|
|
134
|
+
function renderItem(item, context, key) {
|
|
135
|
+
return item.tokens.map((token, index) => {
|
|
136
|
+
const childKey = `${key}.${index}`;
|
|
137
|
+
return token.type === "text" || token.type === "checkbox"
|
|
138
|
+
? renderInline([token], context, childKey)
|
|
139
|
+
: renderBlocks([token], context, childKey);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function renderList(token, context, key) {
|
|
143
|
+
const Tag = token.ordered ? "ol" : "ul";
|
|
144
|
+
return (_jsx(Tag, { ...(token.ordered && token.start !== "" ? { start: token.start } : {}), ...stylex.props(styles.list), children: token.items.map((item, index) => (_jsxs("li", { ...stylex.props(styles.item), children: [item.task && (
|
|
145
|
+
// The design system's own box, not a native <input>: that one paints itself in the
|
|
146
|
+
// OS accent colour and ignores the theme entirely.
|
|
147
|
+
_jsx(Checkbox, { checked: item.checked ?? false, disabled: true, readOnly: true, "aria-label": item.checked ? "已完成" : "未完成", sx: styles.task })), renderItem(item, context, `${key}.${index}`)] }, `${key}.${index}`))) }, key));
|
|
148
|
+
}
|
|
149
|
+
function renderTable(token, context, key) {
|
|
150
|
+
return (_jsx("div", { ...stylex.props(styles.tableWrap), children: _jsxs("table", { ...stylex.props(styles.table), children: [_jsx("thead", { children: _jsx("tr", { children: token.header.map((cell, index) => (_jsx("th", { ...stylex.props(styles.cell, styles.head), style: { textAlign: ALIGN[token.align[index] ?? "left"] }, children: renderInline(cell.tokens, context, `${key}.h.${index}`) }, index))) }) }), _jsx("tbody", { children: token.rows.map((row, rowIndex) => (_jsx("tr", { children: row.map((cell, index) => (_jsx("td", { ...stylex.props(styles.cell), style: { textAlign: ALIGN[token.align[index] ?? "left"] }, children: renderInline(cell.tokens, context, `${key}.${rowIndex}.${index}`) }, index))) }, rowIndex))) })] }) }, key));
|
|
151
|
+
}
|
|
152
|
+
function renderBlocks(tokens, context, keyPrefix = "b") {
|
|
153
|
+
const out = [];
|
|
154
|
+
tokens.forEach((token, index) => {
|
|
155
|
+
const key = `${keyPrefix}.${index}`;
|
|
156
|
+
if (isMathToken(token)) {
|
|
157
|
+
out.push(_jsx(Formula, { display: true, children: token.text }, key));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
switch (token.type) {
|
|
161
|
+
case "space":
|
|
162
|
+
return;
|
|
163
|
+
case "paragraph":
|
|
164
|
+
out.push(_jsx("p", { ...stylex.props(styles.p), children: renderInline(inlineTokens(token), context, key) }, key));
|
|
165
|
+
return;
|
|
166
|
+
case "heading": {
|
|
167
|
+
const heading = token;
|
|
168
|
+
const level = headingLevel(heading.depth);
|
|
169
|
+
const Tag = `h${level}`;
|
|
170
|
+
out.push(_jsx(Tag, { ...stylex.props(styles.heading, styles[Tag]), children: renderInline(inlineTokens(token), context, key) }, key));
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
case "code": {
|
|
174
|
+
const block = token;
|
|
175
|
+
const lang = (block.lang ?? "").trim().split(/\s+/)[0] ?? "";
|
|
176
|
+
const custom = context.renderBlock?.({ lang, code: block.text });
|
|
177
|
+
out.push(custom !== undefined && custom !== null ? (_jsx("div", { children: custom }, key)) : (_jsx(CodeBlock, { code: block.text, ...(lang ? { lang } : {}), ...(context.copyLabel ? { copyLabel: context.copyLabel } : {}), ...(context.copiedLabel ? { copiedLabel: context.copiedLabel } : {}) }, key)));
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
case "table":
|
|
181
|
+
out.push(renderTable(token, context, key));
|
|
182
|
+
return;
|
|
183
|
+
case "list":
|
|
184
|
+
out.push(renderList(token, context, key));
|
|
185
|
+
return;
|
|
186
|
+
case "blockquote":
|
|
187
|
+
out.push(_jsx("blockquote", { ...stylex.props(styles.quote), children: renderBlocks(inlineTokens(token) ?? [], context, key) }, key));
|
|
188
|
+
return;
|
|
189
|
+
case "hr":
|
|
190
|
+
out.push(_jsx("hr", { ...stylex.props(styles.rule) }, key));
|
|
191
|
+
return;
|
|
192
|
+
case "html":
|
|
193
|
+
// Never parsed, never injected — the source is shown as code. Markdown from a model is
|
|
194
|
+
// untrusted input and this package has no sanitiser to lean on, so `<script>` is
|
|
195
|
+
// something to display, not something to run.
|
|
196
|
+
out.push(_jsx(CodeBlock, { lang: "html", code: token.raw.trimEnd(), ...(context.copyLabel ? { copyLabel: context.copyLabel } : {}), ...(context.copiedLabel ? { copiedLabel: context.copiedLabel } : {}) }, key));
|
|
197
|
+
return;
|
|
198
|
+
case "text": {
|
|
199
|
+
const nested = inlineTokens(token);
|
|
200
|
+
out.push(_jsx("p", { ...stylex.props(styles.p), children: nested ? renderInline(nested, context, key) : token.text }, key));
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// `def` is a link reference definition: it defines, it does not render.
|
|
204
|
+
default:
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
return out;
|
|
209
|
+
}
|
|
210
|
+
/** Headings inside a message never go past h3; deeper ones would be smaller than the body. */
|
|
211
|
+
function headingLevel(depth) {
|
|
212
|
+
return depth <= 1 ? 1 : depth === 2 ? 2 : 3;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Markdown as a conversation renders it: GFM tables, fenced code, TeX maths, task lists.
|
|
216
|
+
*
|
|
217
|
+
* Nothing here goes through `innerHTML`. The markdown is tokenised and every token is turned into
|
|
218
|
+
* a React element, so a model that emits `<script>` gets its source shown, not run.
|
|
219
|
+
*/
|
|
220
|
+
export function Markdown({ children, renderBlock, copyLabel, copiedLabel, sx, ...rest }) {
|
|
221
|
+
const tokens = parser.lexer(children);
|
|
222
|
+
return (_jsx("div", { ...rest, ...styled(rest, styles.root, sx), children: renderBlocks(tokens, { renderBlock, copyLabel, copiedLabel }) }));
|
|
223
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TokenizerAndRendererExtension, Tokens } from "marked";
|
|
2
|
+
export type MathToken = Tokens.Generic & {
|
|
3
|
+
type: "math";
|
|
4
|
+
text: string;
|
|
5
|
+
display: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare const mathExtensions: TokenizerAndRendererExtension[];
|
|
8
|
+
export declare function isMathToken(token: {
|
|
9
|
+
type: string;
|
|
10
|
+
}): token is MathToken;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// 數學是 marked 沒有的語法,所以走 extension 自己 tokenize。兩種寫法都收:$…$ / $$…$$ 是
|
|
2
|
+
// TeX 的慣例,\( … \) / \[ … \] 是 LaTeX 自己的,兩種模型都會吐。
|
|
3
|
+
//
|
|
4
|
+
// `$` 的難處在它同時是錢:「$5 到 $10」不是公式。所以開頭的 `$` 後面不能是空白,結尾的
|
|
5
|
+
// `$` 前面不能是空白、後面不能接數字——GitHub 與 KaTeX 的 auto-render 用的是同一組條件。
|
|
6
|
+
const INLINE_DOLLAR = /^\$(?![\s$])((?:\\.|[^\n$\\])+?)(?<!\s)\$(?!\d)/;
|
|
7
|
+
const INLINE_PAREN = /^\\\(([\s\S]+?)\\\)/;
|
|
8
|
+
const BLOCK_DOLLAR = /^\$\$([\s\S]+?)\$\$/;
|
|
9
|
+
const BLOCK_BRACKET = /^\\\[([\s\S]+?)\\\]/;
|
|
10
|
+
function first(src, ...patterns) {
|
|
11
|
+
for (const pattern of patterns) {
|
|
12
|
+
const match = pattern.exec(src);
|
|
13
|
+
if (match)
|
|
14
|
+
return match;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Where the next real match starts.
|
|
20
|
+
*
|
|
21
|
+
* This has to be exact, not merely "the next `$`". marked splits the surrounding text token at
|
|
22
|
+
* whatever index `start` names, and with `breaks: true` a fragment that is left as trailing
|
|
23
|
+
* whitespace before the split becomes a `<br>` — so pointing at a `$` that turns out to be a
|
|
24
|
+
* dollar sign inserted line breaks into "從 $5 漲到 $10".
|
|
25
|
+
*/
|
|
26
|
+
function startWith(...patterns) {
|
|
27
|
+
return (src) => {
|
|
28
|
+
let at = src.search(/[$\\]/);
|
|
29
|
+
while (at !== -1) {
|
|
30
|
+
if (first(src.slice(at), ...patterns))
|
|
31
|
+
return at;
|
|
32
|
+
const next = src.slice(at + 1).search(/[$\\]/);
|
|
33
|
+
if (next === -1)
|
|
34
|
+
return undefined;
|
|
35
|
+
at += 1 + next;
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// The block hint must ignore inline maths. `start` is where marked *cuts*, and a block-level
|
|
41
|
+
// extension cuts the paragraph itself — so pointing at the `$` in "行內數學 $E = mc^2$" split that
|
|
42
|
+
// sentence in half and left the two pieces as separate lines.
|
|
43
|
+
const startBlock = startWith(BLOCK_DOLLAR, BLOCK_BRACKET);
|
|
44
|
+
const startInline = startWith(BLOCK_DOLLAR, BLOCK_BRACKET, INLINE_DOLLAR, INLINE_PAREN);
|
|
45
|
+
export const mathExtensions = [
|
|
46
|
+
{
|
|
47
|
+
name: "math",
|
|
48
|
+
level: "block",
|
|
49
|
+
start: startBlock,
|
|
50
|
+
tokenizer(src) {
|
|
51
|
+
const match = first(src, BLOCK_DOLLAR, BLOCK_BRACKET);
|
|
52
|
+
if (!match)
|
|
53
|
+
return undefined;
|
|
54
|
+
const token = {
|
|
55
|
+
type: "math",
|
|
56
|
+
raw: match[0],
|
|
57
|
+
text: (match[1] ?? "").trim(),
|
|
58
|
+
display: true,
|
|
59
|
+
};
|
|
60
|
+
return token;
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "inlineMath",
|
|
65
|
+
level: "inline",
|
|
66
|
+
start: startInline,
|
|
67
|
+
tokenizer(src) {
|
|
68
|
+
// A `$$…$$` that sits inside a paragraph is still display maths; the block tokenizer
|
|
69
|
+
// only ever sees it when it starts its own line.
|
|
70
|
+
const block = first(src, BLOCK_DOLLAR, BLOCK_BRACKET);
|
|
71
|
+
const match = block ?? first(src, INLINE_DOLLAR, INLINE_PAREN);
|
|
72
|
+
if (!match)
|
|
73
|
+
return undefined;
|
|
74
|
+
const token = {
|
|
75
|
+
type: "math",
|
|
76
|
+
raw: match[0],
|
|
77
|
+
text: (match[1] ?? "").trim(),
|
|
78
|
+
display: block !== null,
|
|
79
|
+
};
|
|
80
|
+
return token;
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
export function isMathToken(token) {
|
|
85
|
+
return token.type === "math";
|
|
86
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -53,3 +53,5 @@ export type { FileRowProps, FileListProps, FileItem, FileRowAction } from "./com
|
|
|
53
53
|
export { DiffViewer, type DiffViewerProps, type DiffFile } from "./components/diff-viewer/DiffViewer.js";
|
|
54
54
|
export { DataTable } from "./components/data-table/DataTable.js";
|
|
55
55
|
export type { DataTableProps, DataTableColumn, SortState } from "./components/data-table/DataTable.js";
|
|
56
|
+
export { Markdown, type MarkdownProps, type MarkdownBlock } from "./components/markdown/Markdown.js";
|
|
57
|
+
export { Formula, type FormulaProps } from "./components/markdown/Formula.js";
|
package/dist/index.js
CHANGED
|
@@ -36,3 +36,5 @@ export { Dropzone, UploadList } from "./components/dropzone/Dropzone.js";
|
|
|
36
36
|
export { FileRow, FileList } from "./components/file-row/FileRow.js";
|
|
37
37
|
export { DiffViewer } from "./components/diff-viewer/DiffViewer.js";
|
|
38
38
|
export { DataTable } from "./components/data-table/DataTable.js";
|
|
39
|
+
export { Markdown } from "./components/markdown/Markdown.js";
|
|
40
|
+
export { Formula } from "./components/markdown/Formula.js";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anyknown/ui",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "AnyKnown design system — StyleX tokens, themes, and
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "AnyKnown design system — StyleX tokens, themes, and 36 components",
|
|
5
5
|
"homepage": "https://ui.anyknown.com",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/anyknown-com/ui/issues"
|
|
@@ -31,19 +31,22 @@
|
|
|
31
31
|
"default": "./dist/themes.stylex.js"
|
|
32
32
|
},
|
|
33
33
|
"./tokens.css": "./dist/tokens.css",
|
|
34
|
-
"./scrollbar.css": "./dist/scrollbar.css"
|
|
34
|
+
"./scrollbar.css": "./dist/scrollbar.css",
|
|
35
|
+
"./brand.css": "./dist/brand.css"
|
|
35
36
|
},
|
|
36
37
|
"publishConfig": {
|
|
37
38
|
"access": "public"
|
|
38
39
|
},
|
|
39
40
|
"scripts": {
|
|
40
|
-
"build": "rm -rf dist && tsc -p tsconfig.build.json && node scripts/esm-extensions.mjs && cp src/tokens.css src/scrollbar.css dist/",
|
|
41
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json && node scripts/esm-extensions.mjs && cp src/tokens.css src/scrollbar.css dist/ && node scripts/brand-css.mjs",
|
|
41
42
|
"typecheck": "tsc --noEmit",
|
|
42
43
|
"lint": "oxlint src",
|
|
43
44
|
"fmt": "oxfmt",
|
|
44
45
|
"fmt:check": "oxfmt --check",
|
|
45
46
|
"gen:themes": "node -e \"import('./scripts/themes.mjs').then(async m => (await import('node:fs')).writeFileSync('src/themes.stylex.ts', m.generate()))\" && oxfmt src/themes.stylex.ts",
|
|
46
|
-
"check": "turbo run typecheck lint fmt:check",
|
|
47
|
+
"check": "turbo run typecheck lint fmt:check design:check",
|
|
48
|
+
"design:check": "node scripts/design-check.mjs",
|
|
49
|
+
"design:lint": "node scripts/design-lint.mjs",
|
|
47
50
|
"test": "vitest run",
|
|
48
51
|
"playground": "vite --config playground/vite.config.ts",
|
|
49
52
|
"site": "vite --config site/vite.config.ts",
|
|
@@ -56,7 +59,9 @@
|
|
|
56
59
|
"dependencies": {
|
|
57
60
|
"@base-ui/react": "^1.7.0",
|
|
58
61
|
"@stylexjs/stylex": "^0.19.0",
|
|
59
|
-
"diff": "^9.0.0"
|
|
62
|
+
"diff": "^9.0.0",
|
|
63
|
+
"marked": "^18.0.11",
|
|
64
|
+
"temml": "^0.13.5"
|
|
60
65
|
},
|
|
61
66
|
"devDependencies": {
|
|
62
67
|
"@babel/core": "^8.0.1",
|
|
@@ -73,7 +78,6 @@
|
|
|
73
78
|
"@vitest/coverage-v8": "^4.1.11",
|
|
74
79
|
"autoprefixer": "^10.5.4",
|
|
75
80
|
"jsdom": "^30.0.1",
|
|
76
|
-
"marked": "^18.0.11",
|
|
77
81
|
"oxfmt": "^0.65.0",
|
|
78
82
|
"oxlint": "^1.80.0",
|
|
79
83
|
"postcss": "^8.5.26",
|