Incorporo-user commited on
Commit
2c34739
·
verified ·
1 Parent(s): c2b84fb

Inkvec 0.2: the presentation page, and Inkvec Studio Lite under studio/

Browse files
studio/LICENSE CHANGED
@@ -1,201 +1,201 @@
1
- Apache License
2
- Version 2.0, January 2004
3
- http://www.apache.org/licenses/
4
-
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
-
7
- 1. Definitions.
8
-
9
- "License" shall mean the terms and conditions for use, reproduction,
10
- and distribution as defined by Sections 1 through 9 of this document.
11
-
12
- "Licensor" shall mean the copyright owner or entity authorized by
13
- the copyright owner that is granting the License.
14
-
15
- "Legal Entity" shall mean the union of the acting entity and all
16
- other entities that control, are controlled by, or are under common
17
- control with that entity. For the purposes of this definition,
18
- "control" means (i) the power, direct or indirect, to cause the
19
- direction or management of such entity, whether by contract or
20
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
- outstanding shares, or (iii) beneficial ownership of such entity.
22
-
23
- "You" (or "Your") shall mean an individual or Legal Entity
24
- exercising permissions granted by this License.
25
-
26
- "Source" form shall mean the preferred form for making modifications,
27
- including but not limited to software source code, documentation
28
- source, and configuration files.
29
-
30
- "Object" form shall mean any form resulting from mechanical
31
- transformation or translation of a Source form, including but
32
- not limited to compiled object code, generated documentation,
33
- and conversions to other media types.
34
-
35
- "Work" shall mean the work of authorship, whether in Source or
36
- Object form, made available under the License, as indicated by a
37
- copyright notice that is included in or attached to the work
38
- (an example is provided in the Appendix below).
39
-
40
- "Derivative Works" shall mean any work, whether in Source or Object
41
- form, that is based on (or derived from) the Work and for which the
42
- editorial revisions, annotations, elaborations, or other modifications
43
- represent, as a whole, an original work of authorship. For the purposes
44
- of this License, Derivative Works shall not include works that remain
45
- separable from, or merely link (or bind by name) to the interfaces of,
46
- the Work and Derivative Works thereof.
47
-
48
- "Contribution" shall mean any work of authorship, including
49
- the original version of the Work and any modifications or additions
50
- to that Work or Derivative Works thereof, that is intentionally
51
- submitted to Licensor for inclusion in the Work by the copyright owner
52
- or by an individual or Legal Entity authorized to submit on behalf of
53
- the copyright owner. For the purposes of this definition, "submitted"
54
- means any form of electronic, verbal, or written communication sent
55
- to the Licensor or its representatives, including but not limited to
56
- communication on electronic mailing lists, source code control systems,
57
- and issue tracking systems that are managed by, or on behalf of, the
58
- Licensor for the purpose of discussing and improving the Work, but
59
- excluding communication that is conspicuously marked or otherwise
60
- designated in writing by the copyright owner as "Not a Contribution."
61
-
62
- "Contributor" shall mean Licensor and any individual or Legal Entity
63
- on behalf of whom a Contribution has been received by Licensor and
64
- subsequently incorporated within the Work.
65
-
66
- 2. Grant of Copyright License. Subject to the terms and conditions of
67
- this License, each Contributor hereby grants to You a perpetual,
68
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
- copyright license to reproduce, prepare Derivative Works of,
70
- publicly display, publicly perform, sublicense, and distribute the
71
- Work and such Derivative Works in Source or Object form.
72
-
73
- 3. Grant of Patent License. Subject to the terms and conditions of
74
- this License, each Contributor hereby grants to You a perpetual,
75
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
- (except as stated in this section) patent license to make, have made,
77
- use, offer to sell, sell, import, and otherwise transfer the Work,
78
- where such license applies only to those patent claims licensable
79
- by such Contributor that are necessarily infringed by their
80
- Contribution(s) alone or by combination of their Contribution(s)
81
- with the Work to which such Contribution(s) was submitted. If You
82
- institute patent litigation against any entity (including a
83
- cross-claim or counterclaim in a lawsuit) alleging that the Work
84
- or a Contribution incorporated within the Work constitutes direct
85
- or contributory patent infringement, then any patent licenses
86
- granted to You under this License for that Work shall terminate
87
- as of the date such litigation is filed.
88
-
89
- 4. Redistribution. You may reproduce and distribute copies of the
90
- Work or Derivative Works thereof in any medium, with or without
91
- modifications, and in Source or Object form, provided that You
92
- meet the following conditions:
93
-
94
- (a) You must give any other recipients of the Work or
95
- Derivative Works a copy of this License; and
96
-
97
- (b) You must cause any modified files to carry prominent notices
98
- stating that You changed the files; and
99
-
100
- (c) You must retain, in the Source form of any Derivative Works
101
- that You distribute, all copyright, patent, trademark, and
102
- attribution notices from the Source form of the Work,
103
- excluding those notices that do not pertain to any part of
104
- the Derivative Works; and
105
-
106
- (d) If the Work includes a "NOTICE" text file as part of its
107
- distribution, then any Derivative Works that You distribute must
108
- include a readable copy of the attribution notices contained
109
- within such NOTICE file, excluding those notices that do not
110
- pertain to any part of the Derivative Works, in at least one
111
- of the following places: within a NOTICE text file distributed
112
- as part of the Derivative Works; within the Source form or
113
- documentation, if provided along with the Derivative Works; or,
114
- within a display generated by the Derivative Works, if and
115
- wherever such third-party notices normally appear. The contents
116
- of the NOTICE file are for informational purposes only and
117
- do not modify the License. You may add Your own attribution
118
- notices within Derivative Works that You distribute, alongside
119
- or as an addendum to the NOTICE text from the Work, provided
120
- that such additional attribution notices cannot be construed
121
- as modifying the License.
122
-
123
- You may add Your own copyright statement to Your modifications and
124
- may provide additional or different license terms and conditions
125
- for use, reproduction, or distribution of Your modifications, or
126
- for any such Derivative Works as a whole, provided Your use,
127
- reproduction, and distribution of the Work otherwise complies with
128
- the conditions stated in this License.
129
-
130
- 5. Submission of Contributions. Unless You explicitly state otherwise,
131
- any Contribution intentionally submitted for inclusion in the Work
132
- by You to the Licensor shall be under the terms and conditions of
133
- this License, without any additional terms or conditions.
134
- Notwithstanding the above, nothing herein shall supersede or modify
135
- the terms of any separate license agreement you may have executed
136
- with Licensor regarding such Contributions.
137
-
138
- 6. Trademarks. This License does not grant permission to use the trade
139
- names, trademarks, service marks, or product names of the Licensor,
140
- except as required for reasonable and customary use in describing the
141
- origin of the Work and reproducing the content of the NOTICE file.
142
-
143
- 7. Disclaimer of Warranty. Unless required by applicable law or
144
- agreed to in writing, Licensor provides the Work (and each
145
- Contributor provides its Contributions) on an "AS IS" BASIS,
146
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
- implied, including, without limitation, any warranties or conditions
148
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
- PARTICULAR PURPOSE. You are solely responsible for determining the
150
- appropriateness of using or redistributing the Work and assume any
151
- risks associated with Your exercise of permissions under this License.
152
-
153
- 8. Limitation of Liability. In no event and under no legal theory,
154
- whether in tort (including negligence), contract, or otherwise,
155
- unless required by applicable law (such as deliberate and grossly
156
- negligent acts) or agreed to in writing, shall any Contributor be
157
- liable to You for damages, including any direct, indirect, special,
158
- incidental, or consequential damages of any character arising as a
159
- result of this License or out of the use or inability to use the
160
- Work (including but not limited to damages for loss of goodwill,
161
- work stoppage, computer failure or malfunction, or any and all
162
- other commercial damages or losses), even if such Contributor
163
- has been advised of the possibility of such damages.
164
-
165
- 9. Accepting Warranty or Additional Liability. While redistributing
166
- the Work or Derivative Works thereof, You may choose to offer,
167
- and charge a fee for, acceptance of support, warranty, indemnity,
168
- or other liability obligations and/or rights consistent with this
169
- License. However, in accepting such obligations, You may act only
170
- on Your own behalf and on Your sole responsibility, not on behalf
171
- of any other Contributor, and only if You agree to indemnify,
172
- defend, and hold each Contributor harmless for any liability
173
- incurred by, or claims asserted against, such Contributor by reason
174
- of your accepting any such warranty or additional liability.
175
-
176
- END OF TERMS AND CONDITIONS
177
-
178
- APPENDIX: How to apply the Apache License to your work.
179
-
180
- To apply the Apache License to your work, attach the following
181
- boilerplate notice, with the fields enclosed by brackets "[]"
182
- replaced with your own identifying information. (Don't include
183
- the brackets!) The text should be enclosed in the appropriate
184
- comment syntax for the file format. We also recommend that a
185
- file or class name and description of purpose be included on the
186
- same "printed page" as the copyright notice for easier
187
- identification within third-party archives.
188
-
189
- Copyright [yyyy] [name of copyright owner]
190
-
191
- Licensed under the Apache License, Version 2.0 (the "License");
192
- you may not use this file except in compliance with the License.
193
- You may obtain a copy of the License at
194
-
195
- http://www.apache.org/licenses/LICENSE-2.0
196
-
197
- Unless required by applicable law or agreed to in writing, software
198
- distributed under the License is distributed on an "AS IS" BASIS,
199
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
- See the License for the specific language governing permissions and
201
- limitations under the License.
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
studio/STUDIO_THIRD_PARTY.md CHANGED
@@ -3,15 +3,15 @@
3
  Generated by `studio/tools/third_party.py`. Regenerate it after changing dependencies.
4
  Inkvec Studio itself is licensed under Apache-2.0 (`LICENSE`); Inkvec Studio Lite, its browser build, is the same code and the same licence.
5
 
6
- 450 Rust crates are compiled into the app (315 in every build; the rest only with the optional denoiser, only on the platform the Build column names, or only in the browser build).
7
 
8
  Not under a plainly permissive licence, with the smallest build that compiles them. None is copyleft in a way that reaches this app: MPL-2.0 is file-level and these crates are used unmodified.
9
 
10
- - `cssparser` — MPL-2.0 (default)
11
- - `cssparser-macros` — MPL-2.0 (default)
12
- - `dtoa-short` — MPL-2.0 (default)
13
  - `option-ext` — MPL-2.0 (default)
14
- - `selectors` — MPL-2.0 (default)
15
 
16
  ## Trademarks
17
 
@@ -42,18 +42,18 @@ removed from the showcases and the benchmark data.
42
  | `async-io` | Apache-2.0 OR MIT | linux |
43
  | `async-lock` | Apache-2.0 OR MIT | linux |
44
  | `async-process` | Apache-2.0 OR MIT | linux |
45
- | `async-recursion` | MIT OR Apache-2.0 | linux |
46
  | `async-signal` | Apache-2.0 OR MIT | linux |
47
  | `async-task` | Apache-2.0 OR MIT | linux |
48
- | `async-trait` | MIT OR Apache-2.0 | linux |
49
  | `atk` | MIT | linux |
50
  | `atk-sys` | MIT | linux |
51
  | `atomic-waker` | Apache-2.0 OR MIT | linux |
52
- | `autocfg` | Apache-2.0 OR MIT | default |
53
  | `base64` | MIT OR Apache-2.0 | default |
54
- | `base64ct` | Apache-2.0 OR MIT | default |
55
- | `bit-set` | Apache-2.0 OR MIT | default |
56
- | `bit-vec` | Apache-2.0 OR MIT | default |
57
  | `bitflags` | MIT OR Apache-2.0 | default |
58
  | `block-buffer` | MIT OR Apache-2.0 | default |
59
  | `block2` | MIT | macos |
@@ -67,16 +67,18 @@ removed from the showcases and the benchmark data.
67
  | `bytes` | MIT | default |
68
  | `cairo-rs` | MIT | linux |
69
  | `cairo-sys-rs` | MIT | linux |
70
- | `camino` | MIT OR Apache-2.0 | default |
71
- | `cargo-platform` | MIT OR Apache-2.0 | default |
72
- | `cargo_metadata` | MIT | default |
73
- | `cargo_toml` | Apache-2.0 OR MIT | default |
74
- | `cc` | MIT OR Apache-2.0 | default |
 
75
  | `cfb` | MIT | default |
76
- | `cfg-expr` | MIT OR Apache-2.0 | linux |
77
  | `cfg-if` | MIT OR Apache-2.0 | default |
78
- | `clipboard-win` | BSL-1.0 | default |
79
  | `color_quant` | MIT | default |
 
80
  | `concurrent-queue` | Apache-2.0 OR MIT | linux |
81
  | `console_error_panic_hook` | Apache-2.0/MIT | browser |
82
  | `const-oid` | Apache-2.0 OR MIT | default |
@@ -91,58 +93,59 @@ removed from the showcases and the benchmark data.
91
  | `crossbeam-deque` | MIT OR Apache-2.0 | default |
92
  | `crossbeam-epoch` | MIT OR Apache-2.0 | default |
93
  | `crossbeam-utils` | MIT OR Apache-2.0 | default |
 
94
  | `crypto-common` | MIT OR Apache-2.0 | default |
95
- | `cssparser` | MPL-2.0 | default |
96
- | `cssparser-macros` | MPL-2.0 | default |
97
  | `ctor` | Apache-2.0 OR MIT | default |
98
- | `ctor-proc-macro` | Apache-2.0 OR MIT | default |
99
- | `darling` | MIT | default |
100
- | `darling_core` | MIT | default |
101
- | `darling_macro` | MIT | default |
102
  | `data-url` | MIT OR Apache-2.0 | default |
103
  | `dbus` | Apache-2.0/MIT | linux |
104
- | `der` | Apache-2.0 OR MIT | default |
105
  | `deranged` | MIT OR Apache-2.0 | default |
106
- | `derive_more` | MIT | default |
107
- | `derive_more-impl` | MIT | default |
108
  | `digest` | MIT OR Apache-2.0 | default |
109
  | `dirs` | MIT OR Apache-2.0 | default |
110
  | `dirs-sys` | MIT OR Apache-2.0 | default |
111
  | `dispatch2` | Zlib OR Apache-2.0 OR MIT | macos |
112
- | `displaydoc` | MIT OR Apache-2.0 | default |
113
  | `dlopen2` | MIT | linux |
114
- | `dlopen2_derive` | MIT | linux |
115
- | `dom_query` | MIT | default |
116
  | `downcast-rs` | MIT/Apache-2.0 | linux |
117
  | `dpi` | Apache-2.0 AND MIT | default |
118
- | `dtoa` | MIT OR Apache-2.0 | default |
119
- | `dtoa-short` | MPL-2.0 | default |
120
  | `dunce` | CC0-1.0 OR MIT-0 OR Apache-2.0 | default |
121
- | `dyn-clone` | MIT OR Apache-2.0 | default |
122
  | `either` | MIT OR Apache-2.0 | default |
123
- | `embed-resource` | MIT | default |
124
  | `embed_plist` | MIT OR Apache-2.0 | macos |
125
  | `endi` | MIT | linux |
126
  | `enumflags2` | MIT OR Apache-2.0 | linux |
127
- | `enumflags2_derive` | MIT OR Apache-2.0 | linux |
128
  | `equivalent` | Apache-2.0 OR MIT | default |
129
  | `erased-serde` | MIT OR Apache-2.0 | default |
130
  | `errno` | MIT OR Apache-2.0 | linux |
131
- | `error-code` | BSL-1.0 | default |
132
  | `event-listener` | Apache-2.0 OR MIT | linux |
133
  | `event-listener-strategy` | Apache-2.0 OR MIT | linux |
134
- | `fastrand` | Apache-2.0 OR MIT | default |
135
  | `fax` | MIT | default |
136
  | `fdeflate` | MIT OR Apache-2.0 | default |
137
  | `field-offset` | MIT OR Apache-2.0 | linux |
138
- | `find-msvc-tools` | MIT OR Apache-2.0 | default |
139
  | `fixedbitset` | MIT OR Apache-2.0 | linux |
140
  | `flate2` | MIT OR Apache-2.0 | default |
141
  | `float-cmp` | MIT | default |
142
  | `fnv` | Apache-2.0 / MIT | default |
143
- | `foldhash` | Zlib | default |
144
  | `foreign-types` | MIT/Apache-2.0 | macos |
145
- | `foreign-types-macros` | MIT/Apache-2.0 | macos |
146
  | `foreign-types-shared` | MIT/Apache-2.0 | macos |
147
  | `form_urlencoded` | MIT OR Apache-2.0 | default |
148
  | `futures-channel` | MIT OR Apache-2.0 | linux |
@@ -150,7 +153,8 @@ removed from the showcases and the benchmark data.
150
  | `futures-executor` | MIT OR Apache-2.0 | linux |
151
  | `futures-io` | MIT OR Apache-2.0 | linux |
152
  | `futures-lite` | Apache-2.0 OR MIT | linux |
153
- | `futures-macro` | MIT OR Apache-2.0 | linux |
 
154
  | `futures-task` | MIT OR Apache-2.0 | linux |
155
  | `futures-util` | MIT OR Apache-2.0 | linux |
156
  | `gdk` | MIT | linux |
@@ -167,29 +171,34 @@ removed from the showcases and the benchmark data.
167
  | `gio` | MIT | linux |
168
  | `gio-sys` | MIT | linux |
169
  | `glib` | MIT | linux |
170
- | `glib-macros` | MIT | linux |
171
  | `glib-sys` | MIT | linux |
172
  | `glob` | MIT OR Apache-2.0 | default |
173
  | `gobject-sys` | MIT | linux |
174
  | `gtk` | MIT | linux |
175
  | `gtk-sys` | MIT | linux |
176
- | `gtk3-macros` | MIT | linux |
177
  | `half` | MIT OR Apache-2.0 | default |
178
  | `hashbrown` | MIT OR Apache-2.0 | default |
179
  | `heck` | MIT OR Apache-2.0 | default |
 
180
  | `hex` | MIT OR Apache-2.0 | linux |
181
- | `hmac-sha256` | ISC | default |
182
- | `html5ever` | MIT OR Apache-2.0 | default |
183
  | `http` | MIT OR Apache-2.0 | default |
 
 
184
  | `http-range` | MIT | default |
185
  | `httparse` | MIT OR Apache-2.0 | default |
186
  | `hybrid-array` | MIT OR Apache-2.0 | default |
 
 
187
  | `i_float` | MIT | default |
188
  | `i_key_sort` | MIT | default |
189
  | `i_overlay` | MIT OR Apache-2.0 | default |
190
  | `i_shape` | MIT | default |
191
  | `i_tree` | MIT | default |
192
- | `ico` | MIT | default |
193
  | `icu_collections` | Unicode-3.0 | default |
194
  | `icu_locale_core` | Unicode-3.0 | default |
195
  | `icu_normalizer` | Unicode-3.0 | default |
@@ -197,7 +206,7 @@ removed from the showcases and the benchmark data.
197
  | `icu_properties` | Unicode-3.0 | default |
198
  | `icu_properties_data` | Unicode-3.0 | default |
199
  | `icu_provider` | Unicode-3.0 | default |
200
- | `ident_case` | MIT/Apache-2.0 | default |
201
  | `idna` | MIT OR Apache-2.0 | default |
202
  | `idna_adapter` | Apache-2.0 OR MIT | default |
203
  | `image` | MIT OR Apache-2.0 | default |
@@ -205,11 +214,15 @@ removed from the showcases and the benchmark data.
205
  | `imagesize` | MIT | default |
206
  | `indexmap` | Apache-2.0 OR MIT | default |
207
  | `infer` | MIT | default |
 
208
  | `is-docker` | MIT | linux |
209
  | `is-wsl` | MIT | linux |
210
  | `itoa` | MIT OR Apache-2.0 | default |
211
  | `javascriptcore-rs` | MIT | linux |
212
  | `javascriptcore-rs-sys` | MIT | linux |
 
 
 
213
  | `js-sys` | MIT OR Apache-2.0 | browser |
214
  | `json-patch` | MIT/Apache-2.0 | default |
215
  | `jsonptr` | MIT OR Apache-2.0 | default |
@@ -218,12 +231,13 @@ removed from the showcases and the benchmark data.
218
  | `libc` | MIT OR Apache-2.0 | default |
219
  | `libdbus-sys` | Apache-2.0/MIT | linux |
220
  | `libm` | MIT | default |
 
221
  | `linux-raw-sys` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | linux |
222
  | `litemap` | Unicode-3.0 | default |
223
- | `lock_api` | MIT OR Apache-2.0 | default |
224
  | `log` | MIT OR Apache-2.0 | default |
225
- | `lzma-rust2` | Apache-2.0 | default |
226
- | `markup5ever` | MIT OR Apache-2.0 | default |
227
  | `memchr` | Unlicense OR MIT | default |
228
  | `memoffset` | MIT | linux |
229
  | `mime` | MIT OR Apache-2.0 | default |
@@ -231,21 +245,37 @@ removed from the showcases and the benchmark data.
231
  | `mio` | MIT | default |
232
  | `moxcms` | BSD-3-Clause OR Apache-2.0 | default |
233
  | `muda` | Apache-2.0 OR MIT | default |
234
- | `native-tls` | MIT OR Apache-2.0 | default |
235
- | `new_debug_unreachable` | MIT | default |
 
 
236
  | `nom` | MIT | linux |
237
  | `num-conv` | MIT OR Apache-2.0 | default |
238
  | `num-traits` | MIT OR Apache-2.0 | default |
 
 
239
  | `objc2` | MIT | macos |
240
  | `objc2-app-kit` | Zlib OR Apache-2.0 OR MIT | macos |
 
 
241
  | `objc2-core-foundation` | Zlib OR Apache-2.0 OR MIT | macos |
242
  | `objc2-core-graphics` | Zlib OR Apache-2.0 OR MIT | macos |
 
 
 
243
  | `objc2-encode` | MIT | macos |
244
  | `objc2-exception-helper` | Zlib OR Apache-2.0 OR MIT | macos |
245
  | `objc2-foundation` | MIT | macos |
 
 
 
246
  | `objc2-web-kit` | Zlib OR Apache-2.0 OR MIT | macos |
247
  | `once_cell` | MIT OR Apache-2.0 | default |
248
  | `open` | MIT | default |
 
 
 
 
249
  | `option-ext` | MPL-2.0 | default |
250
  | `ordered-stream` | MIT OR Apache-2.0 | linux |
251
  | `ort` | MIT OR Apache-2.0 | default |
@@ -254,76 +284,82 @@ removed from the showcases and the benchmark data.
254
  | `pango` | MIT | linux |
255
  | `pango-sys` | MIT | linux |
256
  | `parking` | Apache-2.0 OR MIT | linux |
257
- | `parking_lot` | MIT OR Apache-2.0 | default |
258
- | `parking_lot_core` | MIT OR Apache-2.0 | default |
259
- | `pem-rfc7468` | Apache-2.0 OR MIT | default |
260
  | `percent-encoding` | MIT OR Apache-2.0 | default |
261
  | `petgraph` | MIT OR Apache-2.0 | linux |
262
  | `phf` | MIT | default |
263
- | `phf_codegen` | MIT | default |
264
- | `phf_generator` | MIT | default |
265
- | `phf_macros` | MIT | default |
266
  | `phf_shared` | MIT | default |
267
  | `pico-args` | MIT | default |
268
  | `pin-project-lite` | Apache-2.0 OR MIT | default |
269
  | `piper` | MIT OR Apache-2.0 | linux |
270
- | `pkg-config` | MIT OR Apache-2.0 | linux |
271
  | `plist` | MIT | default |
272
  | `png` | MIT OR Apache-2.0 | default |
273
  | `polling` | Apache-2.0 OR MIT | linux |
274
  | `polycool` | MIT OR Apache-2.0 | default |
275
  | `potential_utf` | Unicode-3.0 | default |
276
  | `powerfmt` | MIT OR Apache-2.0 | default |
277
- | `precomputed-hash` | MIT | default |
278
- | `proc-macro-crate` | MIT OR Apache-2.0 | linux |
279
- | `proc-macro-error` | MIT OR Apache-2.0 | linux |
280
- | `proc-macro-error-attr` | MIT OR Apache-2.0 | linux |
281
- | `proc-macro2` | MIT OR Apache-2.0 | default |
282
  | `pxfm` | BSD-3-Clause OR Apache-2.0 | default |
283
  | `quick-error` | MIT/Apache-2.0 | default |
284
  | `quick-xml` | MIT | default |
285
- | `quote` | MIT OR Apache-2.0 | default |
 
286
  | `raw-window-handle` | MIT OR Apache-2.0 OR Zlib | default |
287
  | `rayon` | MIT OR Apache-2.0 | default |
288
  | `rayon-core` | MIT OR Apache-2.0 | default |
 
 
289
  | `regex` | MIT OR Apache-2.0 | default |
290
  | `regex-automata` | MIT OR Apache-2.0 | default |
291
  | `regex-syntax` | MIT OR Apache-2.0 | default |
 
292
  | `resvg` | Apache-2.0 OR MIT | default |
293
  | `rfd` | MIT | default |
294
  | `rgb` | MIT | default |
295
  | `ring` | Apache-2.0 AND ISC | default |
296
  | `robust` | MIT OR Apache-2.0 | default |
297
  | `roxmltree` | MIT OR Apache-2.0 | default |
298
- | `rustc-hash` | Apache-2.0 OR MIT | default |
299
- | `rustc_version` | MIT OR Apache-2.0 | default |
300
  | `rustix` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | linux |
301
  | `rustls` | Apache-2.0 OR ISC OR MIT | default |
302
  | `rustls-pki-types` | MIT OR Apache-2.0 | default |
303
  | `rustls-webpki` | ISC | default |
304
- | `rustversion` | MIT OR Apache-2.0 | browser |
305
  | `same-file` | Unlicense/MIT | default |
306
- | `schannel` | MIT | default |
307
- | `schemars` | MIT | default |
308
- | `schemars_derive` | MIT | default |
309
- | `scopeguard` | MIT OR Apache-2.0 | default |
310
- | `selectors` | MPL-2.0 | default |
 
 
311
  | `semver` | MIT OR Apache-2.0 | default |
312
  | `serde` | MIT OR Apache-2.0 | default |
313
  | `serde-untagged` | MIT OR Apache-2.0 | default |
314
  | `serde_core` | MIT OR Apache-2.0 | default |
315
- | `serde_derive` | MIT OR Apache-2.0 | default |
316
- | `serde_derive_internals` | MIT OR Apache-2.0 | default |
317
  | `serde_json` | MIT OR Apache-2.0 | default |
318
- | `serde_repr` | MIT OR Apache-2.0 | default |
319
  | `serde_spanned` | MIT OR Apache-2.0 | default |
320
  | `serde_with` | MIT OR Apache-2.0 | default |
321
- | `serde_with_macros` | MIT OR Apache-2.0 | default |
322
  | `serialize-to-javascript` | MIT OR Apache-2.0 | default |
323
- | `serialize-to-javascript-impl` | MIT OR Apache-2.0 | default |
324
- | `servo_arc` | MIT OR Apache-2.0 | default |
325
  | `sha2` | MIT OR Apache-2.0 | default |
326
- | `shlex` | MIT OR Apache-2.0 | default |
327
  | `signal-hook-registry` | MIT OR Apache-2.0 | linux |
328
  | `simd-adler32` | MIT | default |
329
  | `simplecss` | Apache-2.0 OR MIT | default |
@@ -331,27 +367,30 @@ removed from the showcases and the benchmark data.
331
  | `slab` | MIT | linux |
332
  | `smallvec` | MIT OR Apache-2.0 | default |
333
  | `socket2` | MIT OR Apache-2.0 | default |
334
- | `socks` | MIT/Apache-2.0 | default |
335
- | `softbuffer` | MIT OR Apache-2.0 | default |
336
  | `soup3` | MIT | linux |
337
  | `soup3-sys` | MIT | linux |
338
  | `stable_deref_trait` | MIT OR Apache-2.0 | default |
339
  | `strict-num` | MIT | default |
340
- | `string_cache` | MIT OR Apache-2.0 | default |
341
- | `string_cache_codegen` | MIT OR Apache-2.0 | default |
342
- | `strsim` | MIT | default |
343
  | `subtle` | BSD-3-Clause | default |
344
  | `svgtypes` | Apache-2.0 OR MIT | default |
345
- | `syn` | MIT OR Apache-2.0 | default |
346
- | `synstructure` | MIT | default |
347
- | `system-deps` | MIT OR Apache-2.0 | linux |
 
 
348
  | `tao` | Apache-2.0 | default |
349
- | `target-lexicon` | Apache-2.0 WITH LLVM-exception | linux |
 
350
  | `tauri` | Apache-2.0 OR MIT | default |
351
- | `tauri-build` | Apache-2.0 OR MIT | default |
352
- | `tauri-codegen` | Apache-2.0 OR MIT | default |
353
- | `tauri-macros` | Apache-2.0 OR MIT | default |
354
- | `tauri-plugin` | Apache-2.0 OR MIT | default |
355
  | `tauri-plugin-clipboard-manager` | Apache-2.0 OR MIT | default |
356
  | `tauri-plugin-dialog` | Apache-2.0 OR MIT | default |
357
  | `tauri-plugin-fs` | Apache-2.0 OR MIT | default |
@@ -360,36 +399,44 @@ removed from the showcases and the benchmark data.
360
  | `tauri-runtime` | Apache-2.0 OR MIT | default |
361
  | `tauri-runtime-wry` | Apache-2.0 OR MIT | default |
362
  | `tauri-utils` | Apache-2.0 OR MIT | default |
363
- | `tauri-winres` | MIT | default |
364
- | `tendril` | MIT OR Apache-2.0 | default |
 
365
  | `thiserror` | MIT OR Apache-2.0 | default |
366
- | `thiserror-impl` | MIT OR Apache-2.0 | default |
367
  | `tiff` | MIT | default |
368
  | `time` | MIT OR Apache-2.0 | default |
369
  | `time-core` | MIT OR Apache-2.0 | default |
370
- | `time-macros` | MIT OR Apache-2.0 | default |
371
  | `tiny-skia` | BSD-3-Clause | default |
372
  | `tiny-skia-path` | BSD-3-Clause | default |
373
  | `tinystr` | Unicode-3.0 | default |
374
  | `tokio` | MIT | default |
 
375
  | `toml` | MIT OR Apache-2.0 | default |
376
  | `toml_datetime` | MIT OR Apache-2.0 | default |
377
- | `toml_edit` | MIT OR Apache-2.0 | linux |
378
  | `toml_parser` | MIT OR Apache-2.0 | default |
379
  | `toml_writer` | MIT OR Apache-2.0 | default |
 
 
 
 
380
  | `tracing` | MIT | default |
381
- | `tracing-attributes` | MIT | default |
382
  | `tracing-core` | MIT | default |
383
  | `tree_magic_mini` | MIT | linux |
 
384
  | `typed-path` | MIT OR Apache-2.0 | default |
385
  | `typeid` | MIT OR Apache-2.0 | default |
386
  | `typenum` | MIT OR Apache-2.0 | default |
 
387
  | `unic-char-property` | MIT/Apache-2.0 | default |
388
  | `unic-char-range` | MIT/Apache-2.0 | default |
389
  | `unic-common` | MIT/Apache-2.0 | default |
390
  | `unic-ucd-ident` | MIT/Apache-2.0 | default |
391
  | `unic-ucd-version` | MIT/Apache-2.0 | default |
392
- | `unicode-ident` | (MIT OR Apache-2.0) AND Unicode-3.0 | default |
393
  | `unicode-segmentation` | MIT OR Apache-2.0 | default |
394
  | `untrusted` | ISC | default |
395
  | `ureq` | MIT OR Apache-2.0 | default |
@@ -400,54 +447,70 @@ removed from the showcases and the benchmark data.
400
  | `utf8-zero` | MIT OR Apache-2.0 | default |
401
  | `utf8_iter` | Apache-2.0 OR MIT | default |
402
  | `uuid` | Apache-2.0 OR MIT | default |
403
- | `version-compare` | MIT | linux |
404
- | `version_check` | MIT/Apache-2.0 | default |
405
- | `vswhom` | MIT | default |
406
- | `vswhom-sys` | MIT | default |
 
407
  | `walkdir` | Unlicense/MIT | default |
 
 
 
408
  | `wasm-bindgen` | MIT OR Apache-2.0 | browser |
409
- | `wasm-bindgen-macro` | MIT OR Apache-2.0 | browser |
410
- | `wasm-bindgen-macro-support` | MIT OR Apache-2.0 | browser |
 
411
  | `wasm-bindgen-rayon` | Apache-2.0 | browser, threads |
412
  | `wasm-bindgen-shared` | MIT OR Apache-2.0 | browser |
 
413
  | `wasm_sync` | MIT OR Apache-2.0 | browser, threads |
414
  | `wayland-backend` | MIT | linux |
415
  | `wayland-client` | MIT | linux |
416
  | `wayland-protocols` | MIT | linux |
417
  | `wayland-protocols-wlr` | MIT | linux |
418
- | `wayland-scanner` | MIT | linux |
419
  | `wayland-sys` | MIT | linux |
420
  | `web-sys` | MIT OR Apache-2.0 | browser, threads |
421
  | `web-time` | MIT OR Apache-2.0 | browser |
422
- | `web_atoms` | MIT OR Apache-2.0 | default |
423
  | `webkit2gtk` | MIT | linux |
424
  | `webkit2gtk-sys` | MIT | linux |
425
- | `webpki-root-certs` | CDLA-Permissive-2.0 | default |
426
  | `webpki-roots` | CDLA-Permissive-2.0 | default |
427
- | `webview2-com` | MIT | default |
428
- | `webview2-com-macros` | MIT | default |
429
- | `webview2-com-sys` | MIT | default |
430
  | `weezl` | MIT OR Apache-2.0 | default |
431
- | `winapi` | MIT/Apache-2.0 | default |
432
- | `winapi-util` | Unlicense OR MIT | default |
433
- | `window-vibrancy` | Apache-2.0 OR MIT | default |
434
- | `windows` | MIT OR Apache-2.0 | default |
435
- | `windows-collections` | MIT OR Apache-2.0 | default |
436
- | `windows-core` | MIT OR Apache-2.0 | default |
437
- | `windows-future` | MIT OR Apache-2.0 | default |
438
- | `windows-implement` | MIT OR Apache-2.0 | default |
439
- | `windows-interface` | MIT OR Apache-2.0 | default |
440
- | `windows-link` | MIT OR Apache-2.0 | default |
441
- | `windows-numerics` | MIT OR Apache-2.0 | default |
442
- | `windows-result` | MIT OR Apache-2.0 | default |
443
- | `windows-strings` | MIT OR Apache-2.0 | default |
444
- | `windows-sys` | MIT OR Apache-2.0 | default |
445
- | `windows-targets` | MIT OR Apache-2.0 | default |
446
- | `windows-threading` | MIT OR Apache-2.0 | default |
447
- | `windows-version` | MIT OR Apache-2.0 | default |
448
- | `windows_x86_64_msvc` | MIT OR Apache-2.0 | default |
 
 
 
 
 
 
 
 
 
449
  | `winnow` | MIT | default |
450
- | `winreg` | MIT | default |
 
451
  | `wl-clipboard-rs` | MIT/Apache-2.0 | linux |
452
  | `writeable` | Unicode-3.0 | default |
453
  | `wry` | Apache-2.0 OR MIT | default |
@@ -456,19 +519,19 @@ removed from the showcases and the benchmark data.
456
  | `x11rb` | MIT OR Apache-2.0 | linux |
457
  | `x11rb-protocol` | MIT OR Apache-2.0 | linux |
458
  | `yoke` | Unicode-3.0 | default |
459
- | `yoke-derive` | Unicode-3.0 | default |
460
  | `zbus` | MIT | linux |
461
- | `zbus_macros` | MIT | linux |
462
  | `zbus_names` | MIT | linux |
463
  | `zcheapstr` | MIT | linux |
464
  | `zerocopy` | BSD-2-Clause OR Apache-2.0 OR MIT | default |
465
- | `zerocopy-derive` | BSD-2-Clause OR Apache-2.0 OR MIT | default |
466
  | `zerofrom` | Unicode-3.0 | default |
467
- | `zerofrom-derive` | Unicode-3.0 | default |
468
  | `zeroize` | Apache-2.0 OR MIT | default |
469
  | `zerotrie` | Unicode-3.0 | default |
470
  | `zerovec` | Unicode-3.0 | default |
471
- | `zerovec-derive` | Unicode-3.0 | default |
472
  | `zip` | MIT | default |
473
  | `zlib-rs` | Zlib | default |
474
  | `zmij` | MIT | default |
@@ -476,7 +539,7 @@ removed from the showcases and the benchmark data.
476
  | `zune-core` | MIT OR Apache-2.0 OR Zlib | default |
477
  | `zune-jpeg` | MIT OR Apache-2.0 OR Zlib | default |
478
  | `zvariant` | MIT | linux |
479
- | `zvariant_derive` | MIT | linux |
480
  | `zvariant_utils` | MIT | linux |
481
 
482
  ## Bundled fonts
 
3
  Generated by `studio/tools/third_party.py`. Regenerate it after changing dependencies.
4
  Inkvec Studio itself is licensed under Apache-2.0 (`LICENSE`); Inkvec Studio Lite, its browser build, is the same code and the same licence.
5
 
6
+ 513 Rust crates are compiled into the app (206 in every build; the rest only with the optional denoiser, only on the platform the Build column names, only in the browser build, or, marked build, only by a build script or macro while compiling).
7
 
8
  Not under a plainly permissive licence, with the smallest build that compiles them. None is copyleft in a way that reaches this app: MPL-2.0 is file-level and these crates are used unmodified.
9
 
10
+ - `cssparser` — MPL-2.0 (build)
11
+ - `cssparser-macros` — MPL-2.0 (build)
12
+ - `dtoa-short` — MPL-2.0 (build)
13
  - `option-ext` — MPL-2.0 (default)
14
+ - `selectors` — MPL-2.0 (build)
15
 
16
  ## Trademarks
17
 
 
42
  | `async-io` | Apache-2.0 OR MIT | linux |
43
  | `async-lock` | Apache-2.0 OR MIT | linux |
44
  | `async-process` | Apache-2.0 OR MIT | linux |
45
+ | `async-recursion` | MIT OR Apache-2.0 | build |
46
  | `async-signal` | Apache-2.0 OR MIT | linux |
47
  | `async-task` | Apache-2.0 OR MIT | linux |
48
+ | `async-trait` | MIT OR Apache-2.0 | build |
49
  | `atk` | MIT | linux |
50
  | `atk-sys` | MIT | linux |
51
  | `atomic-waker` | Apache-2.0 OR MIT | linux |
52
+ | `autocfg` | Apache-2.0 OR MIT | build |
53
  | `base64` | MIT OR Apache-2.0 | default |
54
+ | `base64ct` | Apache-2.0 OR MIT | build |
55
+ | `bit-set` | Apache-2.0 OR MIT | build |
56
+ | `bit-vec` | Apache-2.0 OR MIT | build |
57
  | `bitflags` | MIT OR Apache-2.0 | default |
58
  | `block-buffer` | MIT OR Apache-2.0 | default |
59
  | `block2` | MIT | macos |
 
67
  | `bytes` | MIT | default |
68
  | `cairo-rs` | MIT | linux |
69
  | `cairo-sys-rs` | MIT | linux |
70
+ | `camino` | MIT OR Apache-2.0 | build |
71
+ | `cargo-platform` | MIT OR Apache-2.0 | build |
72
+ | `cargo_metadata` | MIT | build |
73
+ | `cargo_toml` | Apache-2.0 OR MIT | build |
74
+ | `cc` | MIT OR Apache-2.0 | build |
75
+ | `cesu8` | Apache-2.0/MIT | build |
76
  | `cfb` | MIT | default |
77
+ | `cfg-expr` | MIT OR Apache-2.0 | build |
78
  | `cfg-if` | MIT OR Apache-2.0 | default |
79
+ | `clipboard-win` | BSL-1.0 | windows |
80
  | `color_quant` | MIT | default |
81
+ | `combine` | MIT | build |
82
  | `concurrent-queue` | Apache-2.0 OR MIT | linux |
83
  | `console_error_panic_hook` | Apache-2.0/MIT | browser |
84
  | `const-oid` | Apache-2.0 OR MIT | default |
 
93
  | `crossbeam-deque` | MIT OR Apache-2.0 | default |
94
  | `crossbeam-epoch` | MIT OR Apache-2.0 | default |
95
  | `crossbeam-utils` | MIT OR Apache-2.0 | default |
96
+ | `crunchy` | MIT | build |
97
  | `crypto-common` | MIT OR Apache-2.0 | default |
98
+ | `cssparser` | MPL-2.0 | build |
99
+ | `cssparser-macros` | MPL-2.0 | build |
100
  | `ctor` | Apache-2.0 OR MIT | default |
101
+ | `ctor-proc-macro` | Apache-2.0 OR MIT | build |
102
+ | `darling` | MIT | build |
103
+ | `darling_core` | MIT | build |
104
+ | `darling_macro` | MIT | build |
105
  | `data-url` | MIT OR Apache-2.0 | default |
106
  | `dbus` | Apache-2.0/MIT | linux |
107
+ | `der` | Apache-2.0 OR MIT | build |
108
  | `deranged` | MIT OR Apache-2.0 | default |
109
+ | `derive_more` | MIT | build |
110
+ | `derive_more-impl` | MIT | build |
111
  | `digest` | MIT OR Apache-2.0 | default |
112
  | `dirs` | MIT OR Apache-2.0 | default |
113
  | `dirs-sys` | MIT OR Apache-2.0 | default |
114
  | `dispatch2` | Zlib OR Apache-2.0 OR MIT | macos |
115
+ | `displaydoc` | MIT OR Apache-2.0 | build |
116
  | `dlopen2` | MIT | linux |
117
+ | `dlopen2_derive` | MIT | build |
118
+ | `dom_query` | MIT | build |
119
  | `downcast-rs` | MIT/Apache-2.0 | linux |
120
  | `dpi` | Apache-2.0 AND MIT | default |
121
+ | `dtoa` | MIT OR Apache-2.0 | build |
122
+ | `dtoa-short` | MPL-2.0 | build |
123
  | `dunce` | CC0-1.0 OR MIT-0 OR Apache-2.0 | default |
124
+ | `dyn-clone` | MIT OR Apache-2.0 | build |
125
  | `either` | MIT OR Apache-2.0 | default |
126
+ | `embed-resource` | MIT | build |
127
  | `embed_plist` | MIT OR Apache-2.0 | macos |
128
  | `endi` | MIT | linux |
129
  | `enumflags2` | MIT OR Apache-2.0 | linux |
130
+ | `enumflags2_derive` | MIT OR Apache-2.0 | build |
131
  | `equivalent` | Apache-2.0 OR MIT | default |
132
  | `erased-serde` | MIT OR Apache-2.0 | default |
133
  | `errno` | MIT OR Apache-2.0 | linux |
134
+ | `error-code` | BSL-1.0 | windows |
135
  | `event-listener` | Apache-2.0 OR MIT | linux |
136
  | `event-listener-strategy` | Apache-2.0 OR MIT | linux |
137
+ | `fastrand` | Apache-2.0 OR MIT | linux |
138
  | `fax` | MIT | default |
139
  | `fdeflate` | MIT OR Apache-2.0 | default |
140
  | `field-offset` | MIT OR Apache-2.0 | linux |
141
+ | `find-msvc-tools` | MIT OR Apache-2.0 | build |
142
  | `fixedbitset` | MIT OR Apache-2.0 | linux |
143
  | `flate2` | MIT OR Apache-2.0 | default |
144
  | `float-cmp` | MIT | default |
145
  | `fnv` | Apache-2.0 / MIT | default |
146
+ | `foldhash` | Zlib | linux |
147
  | `foreign-types` | MIT/Apache-2.0 | macos |
148
+ | `foreign-types-macros` | MIT/Apache-2.0 | build |
149
  | `foreign-types-shared` | MIT/Apache-2.0 | macos |
150
  | `form_urlencoded` | MIT OR Apache-2.0 | default |
151
  | `futures-channel` | MIT OR Apache-2.0 | linux |
 
153
  | `futures-executor` | MIT OR Apache-2.0 | linux |
154
  | `futures-io` | MIT OR Apache-2.0 | linux |
155
  | `futures-lite` | Apache-2.0 OR MIT | linux |
156
+ | `futures-macro` | MIT OR Apache-2.0 | build |
157
+ | `futures-sink` | MIT OR Apache-2.0 | build |
158
  | `futures-task` | MIT OR Apache-2.0 | linux |
159
  | `futures-util` | MIT OR Apache-2.0 | linux |
160
  | `gdk` | MIT | linux |
 
171
  | `gio` | MIT | linux |
172
  | `gio-sys` | MIT | linux |
173
  | `glib` | MIT | linux |
174
+ | `glib-macros` | MIT | build |
175
  | `glib-sys` | MIT | linux |
176
  | `glob` | MIT OR Apache-2.0 | default |
177
  | `gobject-sys` | MIT | linux |
178
  | `gtk` | MIT | linux |
179
  | `gtk-sys` | MIT | linux |
180
+ | `gtk3-macros` | MIT | build |
181
  | `half` | MIT OR Apache-2.0 | default |
182
  | `hashbrown` | MIT OR Apache-2.0 | default |
183
  | `heck` | MIT OR Apache-2.0 | default |
184
+ | `hermit-abi` | MIT OR Apache-2.0 | build |
185
  | `hex` | MIT OR Apache-2.0 | linux |
186
+ | `hmac-sha256` | ISC | build |
187
+ | `html5ever` | MIT OR Apache-2.0 | build |
188
  | `http` | MIT OR Apache-2.0 | default |
189
+ | `http-body` | MIT | build |
190
+ | `http-body-util` | MIT | build |
191
  | `http-range` | MIT | default |
192
  | `httparse` | MIT OR Apache-2.0 | default |
193
  | `hybrid-array` | MIT OR Apache-2.0 | default |
194
+ | `hyper` | MIT | build |
195
+ | `hyper-util` | MIT | build |
196
  | `i_float` | MIT | default |
197
  | `i_key_sort` | MIT | default |
198
  | `i_overlay` | MIT OR Apache-2.0 | default |
199
  | `i_shape` | MIT | default |
200
  | `i_tree` | MIT | default |
201
+ | `ico` | MIT | build |
202
  | `icu_collections` | Unicode-3.0 | default |
203
  | `icu_locale_core` | Unicode-3.0 | default |
204
  | `icu_normalizer` | Unicode-3.0 | default |
 
206
  | `icu_properties` | Unicode-3.0 | default |
207
  | `icu_properties_data` | Unicode-3.0 | default |
208
  | `icu_provider` | Unicode-3.0 | default |
209
+ | `ident_case` | MIT/Apache-2.0 | build |
210
  | `idna` | MIT OR Apache-2.0 | default |
211
  | `idna_adapter` | Apache-2.0 OR MIT | default |
212
  | `image` | MIT OR Apache-2.0 | default |
 
214
  | `imagesize` | MIT | default |
215
  | `indexmap` | Apache-2.0 OR MIT | default |
216
  | `infer` | MIT | default |
217
+ | `ipnet` | MIT OR Apache-2.0 | build |
218
  | `is-docker` | MIT | linux |
219
  | `is-wsl` | MIT | linux |
220
  | `itoa` | MIT OR Apache-2.0 | default |
221
  | `javascriptcore-rs` | MIT | linux |
222
  | `javascriptcore-rs-sys` | MIT | linux |
223
+ | `jni` | MIT/Apache-2.0 | build |
224
+ | `jni-sys` | MIT OR Apache-2.0 | build |
225
+ | `jni-sys-macros` | MIT OR Apache-2.0 | build |
226
  | `js-sys` | MIT OR Apache-2.0 | browser |
227
  | `json-patch` | MIT/Apache-2.0 | default |
228
  | `jsonptr` | MIT OR Apache-2.0 | default |
 
231
  | `libc` | MIT OR Apache-2.0 | default |
232
  | `libdbus-sys` | Apache-2.0/MIT | linux |
233
  | `libm` | MIT | default |
234
+ | `libredox` | MIT | build |
235
  | `linux-raw-sys` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | linux |
236
  | `litemap` | Unicode-3.0 | default |
237
+ | `lock_api` | MIT OR Apache-2.0 | windows |
238
  | `log` | MIT OR Apache-2.0 | default |
239
+ | `lzma-rust2` | Apache-2.0 | build |
240
+ | `markup5ever` | MIT OR Apache-2.0 | build |
241
  | `memchr` | Unlicense OR MIT | default |
242
  | `memoffset` | MIT | linux |
243
  | `mime` | MIT OR Apache-2.0 | default |
 
245
  | `mio` | MIT | default |
246
  | `moxcms` | BSD-3-Clause OR Apache-2.0 | default |
247
  | `muda` | Apache-2.0 OR MIT | default |
248
+ | `native-tls` | MIT OR Apache-2.0 | build |
249
+ | `ndk` | MIT OR Apache-2.0 | build |
250
+ | `ndk-sys` | MIT OR Apache-2.0 | build |
251
+ | `new_debug_unreachable` | MIT | build |
252
  | `nom` | MIT | linux |
253
  | `num-conv` | MIT OR Apache-2.0 | default |
254
  | `num-traits` | MIT OR Apache-2.0 | default |
255
+ | `num_enum` | BSD-3-Clause OR MIT OR Apache-2.0 | build |
256
+ | `num_enum_derive` | BSD-3-Clause OR MIT OR Apache-2.0 | build |
257
  | `objc2` | MIT | macos |
258
  | `objc2-app-kit` | Zlib OR Apache-2.0 OR MIT | macos |
259
+ | `objc2-cloud-kit` | Zlib OR Apache-2.0 OR MIT | build |
260
+ | `objc2-core-data` | Zlib OR Apache-2.0 OR MIT | build |
261
  | `objc2-core-foundation` | Zlib OR Apache-2.0 OR MIT | macos |
262
  | `objc2-core-graphics` | Zlib OR Apache-2.0 OR MIT | macos |
263
+ | `objc2-core-image` | Zlib OR Apache-2.0 OR MIT | build |
264
+ | `objc2-core-location` | Zlib OR Apache-2.0 OR MIT | build |
265
+ | `objc2-core-text` | Zlib OR Apache-2.0 OR MIT | build |
266
  | `objc2-encode` | MIT | macos |
267
  | `objc2-exception-helper` | Zlib OR Apache-2.0 OR MIT | macos |
268
  | `objc2-foundation` | MIT | macos |
269
+ | `objc2-quartz-core` | Zlib OR Apache-2.0 OR MIT | build |
270
+ | `objc2-ui-kit` | Zlib OR Apache-2.0 OR MIT | build |
271
+ | `objc2-user-notifications` | Zlib OR Apache-2.0 OR MIT | build |
272
  | `objc2-web-kit` | Zlib OR Apache-2.0 OR MIT | macos |
273
  | `once_cell` | MIT OR Apache-2.0 | default |
274
  | `open` | MIT | default |
275
+ | `openssl` | Apache-2.0 | build |
276
+ | `openssl-macros` | MIT/Apache-2.0 | build |
277
+ | `openssl-probe` | MIT OR Apache-2.0 | build |
278
+ | `openssl-sys` | MIT | build |
279
  | `option-ext` | MPL-2.0 | default |
280
  | `ordered-stream` | MIT OR Apache-2.0 | linux |
281
  | `ort` | MIT OR Apache-2.0 | default |
 
284
  | `pango` | MIT | linux |
285
  | `pango-sys` | MIT | linux |
286
  | `parking` | Apache-2.0 OR MIT | linux |
287
+ | `parking_lot` | MIT OR Apache-2.0 | windows |
288
+ | `parking_lot_core` | MIT OR Apache-2.0 | windows |
289
+ | `pem-rfc7468` | Apache-2.0 OR MIT | build |
290
  | `percent-encoding` | MIT OR Apache-2.0 | default |
291
  | `petgraph` | MIT OR Apache-2.0 | linux |
292
  | `phf` | MIT | default |
293
+ | `phf_codegen` | MIT | build |
294
+ | `phf_generator` | MIT | build |
295
+ | `phf_macros` | MIT | build |
296
  | `phf_shared` | MIT | default |
297
  | `pico-args` | MIT | default |
298
  | `pin-project-lite` | Apache-2.0 OR MIT | default |
299
  | `piper` | MIT OR Apache-2.0 | linux |
300
+ | `pkg-config` | MIT OR Apache-2.0 | build |
301
  | `plist` | MIT | default |
302
  | `png` | MIT OR Apache-2.0 | default |
303
  | `polling` | Apache-2.0 OR MIT | linux |
304
  | `polycool` | MIT OR Apache-2.0 | default |
305
  | `potential_utf` | Unicode-3.0 | default |
306
  | `powerfmt` | MIT OR Apache-2.0 | default |
307
+ | `precomputed-hash` | MIT | build |
308
+ | `proc-macro-crate` | MIT OR Apache-2.0 | build |
309
+ | `proc-macro-error` | MIT OR Apache-2.0 | build |
310
+ | `proc-macro-error-attr` | MIT OR Apache-2.0 | build |
311
+ | `proc-macro2` | MIT OR Apache-2.0 | linux |
312
  | `pxfm` | BSD-3-Clause OR Apache-2.0 | default |
313
  | `quick-error` | MIT/Apache-2.0 | default |
314
  | `quick-xml` | MIT | default |
315
+ | `quote` | MIT OR Apache-2.0 | linux |
316
+ | `r-efi` | MIT OR Apache-2.0 OR LGPL-2.1-or-later | build |
317
  | `raw-window-handle` | MIT OR Apache-2.0 OR Zlib | default |
318
  | `rayon` | MIT OR Apache-2.0 | default |
319
  | `rayon-core` | MIT OR Apache-2.0 | default |
320
+ | `redox_syscall` | MIT | build |
321
+ | `redox_users` | MIT | build |
322
  | `regex` | MIT OR Apache-2.0 | default |
323
  | `regex-automata` | MIT OR Apache-2.0 | default |
324
  | `regex-syntax` | MIT OR Apache-2.0 | default |
325
+ | `reqwest` | MIT OR Apache-2.0 | build |
326
  | `resvg` | Apache-2.0 OR MIT | default |
327
  | `rfd` | MIT | default |
328
  | `rgb` | MIT | default |
329
  | `ring` | Apache-2.0 AND ISC | default |
330
  | `robust` | MIT OR Apache-2.0 | default |
331
  | `roxmltree` | MIT OR Apache-2.0 | default |
332
+ | `rustc-hash` | Apache-2.0 OR MIT | build |
333
+ | `rustc_version` | MIT OR Apache-2.0 | build |
334
  | `rustix` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | linux |
335
  | `rustls` | Apache-2.0 OR ISC OR MIT | default |
336
  | `rustls-pki-types` | MIT OR Apache-2.0 | default |
337
  | `rustls-webpki` | ISC | default |
338
+ | `rustversion` | MIT OR Apache-2.0 | build |
339
  | `same-file` | Unlicense/MIT | default |
340
+ | `schannel` | MIT | build |
341
+ | `schemars` | MIT | build |
342
+ | `schemars_derive` | MIT | build |
343
+ | `scopeguard` | MIT OR Apache-2.0 | windows |
344
+ | `security-framework` | MIT OR Apache-2.0 | build |
345
+ | `security-framework-sys` | MIT OR Apache-2.0 | build |
346
+ | `selectors` | MPL-2.0 | build |
347
  | `semver` | MIT OR Apache-2.0 | default |
348
  | `serde` | MIT OR Apache-2.0 | default |
349
  | `serde-untagged` | MIT OR Apache-2.0 | default |
350
  | `serde_core` | MIT OR Apache-2.0 | default |
351
+ | `serde_derive` | MIT OR Apache-2.0 | build |
352
+ | `serde_derive_internals` | MIT OR Apache-2.0 | build |
353
  | `serde_json` | MIT OR Apache-2.0 | default |
354
+ | `serde_repr` | MIT OR Apache-2.0 | build |
355
  | `serde_spanned` | MIT OR Apache-2.0 | default |
356
  | `serde_with` | MIT OR Apache-2.0 | default |
357
+ | `serde_with_macros` | MIT OR Apache-2.0 | build |
358
  | `serialize-to-javascript` | MIT OR Apache-2.0 | default |
359
+ | `serialize-to-javascript-impl` | MIT OR Apache-2.0 | build |
360
+ | `servo_arc` | MIT OR Apache-2.0 | build |
361
  | `sha2` | MIT OR Apache-2.0 | default |
362
+ | `shlex` | MIT OR Apache-2.0 | build |
363
  | `signal-hook-registry` | MIT OR Apache-2.0 | linux |
364
  | `simd-adler32` | MIT | default |
365
  | `simplecss` | Apache-2.0 OR MIT | default |
 
367
  | `slab` | MIT | linux |
368
  | `smallvec` | MIT OR Apache-2.0 | default |
369
  | `socket2` | MIT OR Apache-2.0 | default |
370
+ | `socks` | MIT/Apache-2.0 | build |
371
+ | `softbuffer` | MIT OR Apache-2.0 | windows |
372
  | `soup3` | MIT | linux |
373
  | `soup3-sys` | MIT | linux |
374
  | `stable_deref_trait` | MIT OR Apache-2.0 | default |
375
  | `strict-num` | MIT | default |
376
+ | `string_cache` | MIT OR Apache-2.0 | build |
377
+ | `string_cache_codegen` | MIT OR Apache-2.0 | build |
378
+ | `strsim` | MIT | build |
379
  | `subtle` | BSD-3-Clause | default |
380
  | `svgtypes` | Apache-2.0 OR MIT | default |
381
+ | `swift-rs` | MIT OR Apache-2.0 | build |
382
+ | `syn` | MIT OR Apache-2.0 | linux |
383
+ | `sync_wrapper` | Apache-2.0 | build |
384
+ | `synstructure` | MIT | build |
385
+ | `system-deps` | MIT OR Apache-2.0 | build |
386
  | `tao` | Apache-2.0 | default |
387
+ | `tao-macros` | MIT OR Apache-2.0 | build |
388
+ | `target-lexicon` | Apache-2.0 WITH LLVM-exception | build |
389
  | `tauri` | Apache-2.0 OR MIT | default |
390
+ | `tauri-build` | Apache-2.0 OR MIT | build |
391
+ | `tauri-codegen` | Apache-2.0 OR MIT | build |
392
+ | `tauri-macros` | Apache-2.0 OR MIT | build |
393
+ | `tauri-plugin` | Apache-2.0 OR MIT | build |
394
  | `tauri-plugin-clipboard-manager` | Apache-2.0 OR MIT | default |
395
  | `tauri-plugin-dialog` | Apache-2.0 OR MIT | default |
396
  | `tauri-plugin-fs` | Apache-2.0 OR MIT | default |
 
399
  | `tauri-runtime` | Apache-2.0 OR MIT | default |
400
  | `tauri-runtime-wry` | Apache-2.0 OR MIT | default |
401
  | `tauri-utils` | Apache-2.0 OR MIT | default |
402
+ | `tauri-winres` | MIT | build |
403
+ | `tempfile` | MIT OR Apache-2.0 | build |
404
+ | `tendril` | MIT OR Apache-2.0 | build |
405
  | `thiserror` | MIT OR Apache-2.0 | default |
406
+ | `thiserror-impl` | MIT OR Apache-2.0 | build |
407
  | `tiff` | MIT | default |
408
  | `time` | MIT OR Apache-2.0 | default |
409
  | `time-core` | MIT OR Apache-2.0 | default |
410
+ | `time-macros` | MIT OR Apache-2.0 | build |
411
  | `tiny-skia` | BSD-3-Clause | default |
412
  | `tiny-skia-path` | BSD-3-Clause | default |
413
  | `tinystr` | Unicode-3.0 | default |
414
  | `tokio` | MIT | default |
415
+ | `tokio-util` | MIT | build |
416
  | `toml` | MIT OR Apache-2.0 | default |
417
  | `toml_datetime` | MIT OR Apache-2.0 | default |
418
+ | `toml_edit` | MIT OR Apache-2.0 | build |
419
  | `toml_parser` | MIT OR Apache-2.0 | default |
420
  | `toml_writer` | MIT OR Apache-2.0 | default |
421
+ | `tower` | MIT | build |
422
+ | `tower-http` | MIT | build |
423
+ | `tower-layer` | MIT | build |
424
+ | `tower-service` | MIT | build |
425
  | `tracing` | MIT | default |
426
+ | `tracing-attributes` | MIT | build |
427
  | `tracing-core` | MIT | default |
428
  | `tree_magic_mini` | MIT | linux |
429
+ | `try-lock` | MIT | build |
430
  | `typed-path` | MIT OR Apache-2.0 | default |
431
  | `typeid` | MIT OR Apache-2.0 | default |
432
  | `typenum` | MIT OR Apache-2.0 | default |
433
+ | `uds_windows` | MIT | build |
434
  | `unic-char-property` | MIT/Apache-2.0 | default |
435
  | `unic-char-range` | MIT/Apache-2.0 | default |
436
  | `unic-common` | MIT/Apache-2.0 | default |
437
  | `unic-ucd-ident` | MIT/Apache-2.0 | default |
438
  | `unic-ucd-version` | MIT/Apache-2.0 | default |
439
+ | `unicode-ident` | (MIT OR Apache-2.0) AND Unicode-3.0 | linux |
440
  | `unicode-segmentation` | MIT OR Apache-2.0 | default |
441
  | `untrusted` | ISC | default |
442
  | `ureq` | MIT OR Apache-2.0 | default |
 
447
  | `utf8-zero` | MIT OR Apache-2.0 | default |
448
  | `utf8_iter` | Apache-2.0 OR MIT | default |
449
  | `uuid` | Apache-2.0 OR MIT | default |
450
+ | `vcpkg` | MIT/Apache-2.0 | build |
451
+ | `version-compare` | MIT | build |
452
+ | `version_check` | MIT/Apache-2.0 | build |
453
+ | `vswhom` | MIT | build |
454
+ | `vswhom-sys` | MIT | build |
455
  | `walkdir` | Unlicense/MIT | default |
456
+ | `want` | MIT | build |
457
+ | `wasi` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | build |
458
+ | `wasip2` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | build |
459
  | `wasm-bindgen` | MIT OR Apache-2.0 | browser |
460
+ | `wasm-bindgen-futures` | MIT OR Apache-2.0 | build |
461
+ | `wasm-bindgen-macro` | MIT OR Apache-2.0 | build |
462
+ | `wasm-bindgen-macro-support` | MIT OR Apache-2.0 | build |
463
  | `wasm-bindgen-rayon` | Apache-2.0 | browser, threads |
464
  | `wasm-bindgen-shared` | MIT OR Apache-2.0 | browser |
465
+ | `wasm-streams` | MIT OR Apache-2.0 | build |
466
  | `wasm_sync` | MIT OR Apache-2.0 | browser, threads |
467
  | `wayland-backend` | MIT | linux |
468
  | `wayland-client` | MIT | linux |
469
  | `wayland-protocols` | MIT | linux |
470
  | `wayland-protocols-wlr` | MIT | linux |
471
+ | `wayland-scanner` | MIT | build |
472
  | `wayland-sys` | MIT | linux |
473
  | `web-sys` | MIT OR Apache-2.0 | browser, threads |
474
  | `web-time` | MIT OR Apache-2.0 | browser |
475
+ | `web_atoms` | MIT OR Apache-2.0 | build |
476
  | `webkit2gtk` | MIT | linux |
477
  | `webkit2gtk-sys` | MIT | linux |
478
+ | `webpki-root-certs` | CDLA-Permissive-2.0 | build |
479
  | `webpki-roots` | CDLA-Permissive-2.0 | default |
480
+ | `webview2-com` | MIT | windows |
481
+ | `webview2-com-macros` | MIT | build |
482
+ | `webview2-com-sys` | MIT | windows |
483
  | `weezl` | MIT OR Apache-2.0 | default |
484
+ | `winapi` | MIT/Apache-2.0 | build |
485
+ | `winapi-i686-pc-windows-gnu` | MIT/Apache-2.0 | build |
486
+ | `winapi-util` | Unlicense OR MIT | windows |
487
+ | `winapi-x86_64-pc-windows-gnu` | MIT/Apache-2.0 | build |
488
+ | `window-vibrancy` | Apache-2.0 OR MIT | windows |
489
+ | `windows` | MIT OR Apache-2.0 | windows |
490
+ | `windows-collections` | MIT OR Apache-2.0 | windows |
491
+ | `windows-core` | MIT OR Apache-2.0 | windows |
492
+ | `windows-future` | MIT OR Apache-2.0 | windows |
493
+ | `windows-implement` | MIT OR Apache-2.0 | build |
494
+ | `windows-interface` | MIT OR Apache-2.0 | build |
495
+ | `windows-link` | MIT OR Apache-2.0 | windows |
496
+ | `windows-numerics` | MIT OR Apache-2.0 | windows |
497
+ | `windows-result` | MIT OR Apache-2.0 | windows |
498
+ | `windows-strings` | MIT OR Apache-2.0 | windows |
499
+ | `windows-sys` | MIT OR Apache-2.0 | windows |
500
+ | `windows-targets` | MIT OR Apache-2.0 | windows |
501
+ | `windows-threading` | MIT OR Apache-2.0 | windows |
502
+ | `windows-version` | MIT OR Apache-2.0 | windows |
503
+ | `windows_aarch64_gnullvm` | MIT OR Apache-2.0 | build |
504
+ | `windows_aarch64_msvc` | MIT OR Apache-2.0 | build |
505
+ | `windows_i686_gnu` | MIT OR Apache-2.0 | build |
506
+ | `windows_i686_gnullvm` | MIT OR Apache-2.0 | build |
507
+ | `windows_i686_msvc` | MIT OR Apache-2.0 | build |
508
+ | `windows_x86_64_gnu` | MIT OR Apache-2.0 | build |
509
+ | `windows_x86_64_gnullvm` | MIT OR Apache-2.0 | build |
510
+ | `windows_x86_64_msvc` | MIT OR Apache-2.0 | windows |
511
  | `winnow` | MIT | default |
512
+ | `winreg` | MIT | windows |
513
+ | `wit-bindgen` | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | build |
514
  | `wl-clipboard-rs` | MIT/Apache-2.0 | linux |
515
  | `writeable` | Unicode-3.0 | default |
516
  | `wry` | Apache-2.0 OR MIT | default |
 
519
  | `x11rb` | MIT OR Apache-2.0 | linux |
520
  | `x11rb-protocol` | MIT OR Apache-2.0 | linux |
521
  | `yoke` | Unicode-3.0 | default |
522
+ | `yoke-derive` | Unicode-3.0 | build |
523
  | `zbus` | MIT | linux |
524
+ | `zbus_macros` | MIT | build |
525
  | `zbus_names` | MIT | linux |
526
  | `zcheapstr` | MIT | linux |
527
  | `zerocopy` | BSD-2-Clause OR Apache-2.0 OR MIT | default |
528
+ | `zerocopy-derive` | BSD-2-Clause OR Apache-2.0 OR MIT | build |
529
  | `zerofrom` | Unicode-3.0 | default |
530
+ | `zerofrom-derive` | Unicode-3.0 | build |
531
  | `zeroize` | Apache-2.0 OR MIT | default |
532
  | `zerotrie` | Unicode-3.0 | default |
533
  | `zerovec` | Unicode-3.0 | default |
534
+ | `zerovec-derive` | Unicode-3.0 | build |
535
  | `zip` | MIT | default |
536
  | `zlib-rs` | Zlib | default |
537
  | `zmij` | MIT | default |
 
539
  | `zune-core` | MIT OR Apache-2.0 OR Zlib | default |
540
  | `zune-jpeg` | MIT OR Apache-2.0 OR Zlib | default |
541
  | `zvariant` | MIT | linux |
542
+ | `zvariant_derive` | MIT | build |
543
  | `zvariant_utils` | MIT | linux |
544
 
545
  ## Bundled fonts
studio/THIRD_PARTY.md CHANGED
@@ -3,7 +3,7 @@
3
  Generated by `tools/third_party.py` on 2026-09-26. Regenerate it after changing dependencies.
4
  Inkvec itself is licensed under Apache-2.0 (`LICENSE`).
5
 
6
- 518 Rust crates are compiled across all builds: 163 in every build, 42 more with the ONNX Runtime restorer, 313 more only with other optional features.
7
 
8
  Not under a permissive licence (or no licence declared), with the smallest build that compiles them:
9
 
@@ -57,7 +57,7 @@ them. An owner who objects to a mark being shown can open an issue at
57
  https://github.com/logolabs/inkvec/issues or write to office@incorpo.ro, and it will be
58
  removed from the showcases and the benchmark data.
59
 
60
- ## Rust crates (518)
61
 
62
  `builds` is the smallest build that compiles the crate: `default` (every workspace build),
63
  `restore-model` (only with the ONNX Runtime restorer), or `all features` (only with an optional
@@ -500,7 +500,6 @@ listed here is compiled but not necessarily linked into the binary.
500
  | toml_parser | 1.1.3+spec-1.1.0 | MIT OR Apache-2.0 | all features |
501
  | toml_writer | 1.1.2+spec-1.1.0 | MIT OR Apache-2.0 | all features |
502
  | tower | 0.5.3 | MIT | default |
503
- | tower-http | 0.7.1 | MIT | default |
504
  | tower-layer | 0.3.3 | MIT | default |
505
  | tower-service | 0.3.3 | MIT | default |
506
  | tracing | 0.1.44 | MIT | default |
 
3
  Generated by `tools/third_party.py` on 2026-09-26. Regenerate it after changing dependencies.
4
  Inkvec itself is licensed under Apache-2.0 (`LICENSE`).
5
 
6
+ 517 Rust crates are compiled across all builds: 162 in every build, 42 more with the ONNX Runtime restorer, 313 more only with other optional features.
7
 
8
  Not under a permissive licence (or no licence declared), with the smallest build that compiles them:
9
 
 
57
  https://github.com/logolabs/inkvec/issues or write to office@incorpo.ro, and it will be
58
  removed from the showcases and the benchmark data.
59
 
60
+ ## Rust crates (517)
61
 
62
  `builds` is the smallest build that compiles the crate: `default` (every workspace build),
63
  `restore-model` (only with the ONNX Runtime restorer), or `all features` (only with an optional
 
500
  | toml_parser | 1.1.3+spec-1.1.0 | MIT OR Apache-2.0 | all features |
501
  | toml_writer | 1.1.2+spec-1.1.0 | MIT OR Apache-2.0 | all features |
502
  | tower | 0.5.3 | MIT | default |
 
503
  | tower-layer | 0.3.3 | MIT | default |
504
  | tower-service | 0.3.3 | MIT | default |
505
  | tracing | 0.1.44 | MIT | default |
studio/assets/main--3-Ll9JM.js ADDED
The diff for this file is too large to render. See raw diff
 
studio/assets/main-C8vHcyec.css ADDED
@@ -0,0 +1 @@
 
 
1
+ @font-face{font-family:Inter Studio;src:url(../fonts/inter-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Studio;src:url(../fonts/playfair-latin.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:root[data-theme=dark]{color-scheme:dark;--void: #0c0a09;--stage: #141210;--paper: #1a1816;--card: #211f1c;--surface: #2a2724;--highlight: #35322e;--ink: #faf8f5;--dim: rgba(250, 248, 245, .75);--faint: rgba(250, 248, 245, .55);--muted: rgba(250, 248, 245, .4);--rule: rgba(250, 248, 245, .08);--rule2: #2a2724;--accent: #c9754a;--accent-text: #d4896a;--accent-hover: #d4896a;--accent-ink: #1a1816;--accent-soft: rgba(201, 117, 74, .12);--accent-subtle: rgba(201, 117, 74, .08);--gold: #b8976c;--gold-soft: rgba(184, 151, 108, .15);--good: #34d399;--goodbg: rgba(52, 211, 153, .15);--bad: #f87171;--badbg: rgba(248, 113, 113, .15);--anchor: #f87171;--handle: #b8976c;--wire: #faf8f5;--vt: #9a938c;--checker-a: #191715;--checker-b: #141210;--focus: rgba(201, 117, 74, .35);--focus-line: #c9754a;--state-draft: #b8976c;--state-final: #34d399;--state-stale: #c9754a;--shadow-sm: 0 4px 12px -2px rgba(12, 10, 9, .4);--shadow: 0 8px 24px -4px rgba(12, 10, 9, .5);--shadow-lg: 0 20px 50px -12px rgba(12, 10, 9, .6);--shadow-xl: 0 30px 70px -20px rgba(12, 10, 9, .7);--glow: 0 6px 20px rgba(201, 117, 74, .25)}:root[data-theme=light]{color-scheme:light;--void: #e6e1d9;--stage: #f0ece6;--paper: #faf8f5;--card: #ffffff;--surface: #eae5dd;--highlight: #ded8ce;--ink: #1a1816;--dim: rgba(26, 24, 22, .75);--faint: rgba(26, 24, 22, .58);--muted: rgba(26, 24, 22, .46);--rule: rgba(26, 24, 22, .1);--rule2: #d8d2c8;--accent: #c9754a;--accent-text: #9c5730;--accent-hover: #b3603a;--accent-ink: #faf8f5;--accent-soft: rgba(201, 117, 74, .14);--accent-subtle: rgba(201, 117, 74, .08);--gold: #8a6a3f;--gold-soft: rgba(138, 106, 63, .14);--good: #1c7a55;--goodbg: rgba(28, 122, 85, .14);--bad: #b83232;--badbg: rgba(184, 50, 50, .13);--anchor: #b83232;--handle: #8a6a3f;--wire: #1a1816;--vt: #6f6862;--checker-a: #ffffff;--checker-b: #e8e3db;--focus: rgba(201, 117, 74, .45);--focus-line: #9c5730;--state-draft: #8a6a3f;--state-final: #1c7a55;--state-stale: #9c5730;--shadow-sm: 0 4px 12px -2px rgba(90, 76, 60, .12);--shadow: 0 8px 24px -4px rgba(90, 76, 60, .16);--shadow-lg: 0 20px 50px -12px rgba(90, 76, 60, .2);--shadow-xl: 0 30px 70px -20px rgba(90, 76, 60, .24);--glow: 0 6px 20px rgba(201, 117, 74, .28)}:root{--font-display: "Playfair Studio", "Playfair Display", Georgia, serif;--font-body: "Inter Studio", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--h-compact: 28px;--h-control: 32px;--h-pill: 36px;--h-appbar: 46px;--h-status: 26px;--h-row: 30px;--t-chrome: 12.5px;--t-panel: 13px;--t-label: 11.5px;--t-eyebrow: 10px;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--rail-pad: 14px;--rail-w: 352px;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--d-micro: .15s;--d-fast: .2s;--d-normal: .4s}@media(prefers-reduced-motion:reduce){:root{--d-micro: 0ms;--d-fast: 0ms;--d-normal: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{background:var(--paper);color:var(--ink);font:400 var(--t-panel) / 1.5 var(--font-body);-webkit-font-smoothing:antialiased;user-select:none;cursor:default}#app{height:100%;display:flex;flex-direction:column}:focus{outline:none}:focus-visible{outline:2px solid var(--focus-line);outline-offset:2px;border-radius:var(--radius-sm)}a{color:var(--accent-text);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}.num{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.serif{font-family:var(--font-display);letter-spacing:-.03em}.eyebrow{font-size:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.dim{color:var(--dim)}.faint{color:var(--faint)}.muted{color:var(--muted)}.sep{width:1px;height:18px;background:var(--rule2);flex:none}.spacer{flex:1}kbd{font:500 10.5px var(--font-mono);border:1px solid var(--highlight);border-radius:4px;padding:1px 5px;color:var(--faint)}.btn{height:var(--h-control);padding:0 16px;border-radius:var(--radius-full);border:1px solid var(--rule2);background:transparent;color:var(--dim);font-weight:500;font-size:var(--t-chrome);display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;transition:transform var(--d-micro) var(--ease-smooth),background var(--d-micro),border-color var(--d-micro),box-shadow var(--d-micro)}.btn:hover:not(:disabled){border-color:var(--highlight);color:var(--ink)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{height:var(--h-pill);border-color:var(--accent);background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:var(--t-panel);box-shadow:var(--glow)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink);transform:translateY(-2px)}.btn.ghost{border-color:transparent}.btn.ghost:hover:not(:disabled){background:var(--surface)}.btn.compact{height:var(--h-compact);padding:0 11px;border-radius:var(--radius);font-size:var(--t-chrome)}.btn.icon{width:var(--h-control);padding:0}.btn.icon.compact{width:var(--h-compact)}.btn.danger{color:var(--bad)}.seg{display:inline-flex;gap:2px;padding:2px;background:var(--card);border:1px solid var(--rule2);border-radius:7px}.seg>button{font-size:var(--t-label);padding:4px 11px;border-radius:5px;color:var(--faint);white-space:nowrap;transition:background var(--d-micro),color var(--d-micro)}.seg>button:hover{color:var(--dim)}.seg>button[aria-pressed=true]{background:var(--highlight);color:var(--ink);font-weight:500}.seg>button:disabled{color:var(--muted);cursor:default}.toggle{font-size:var(--t-label);padding:3px 9px;border-radius:var(--radius-sm);border:1px solid transparent;color:var(--faint)}.toggle:hover{color:var(--dim)}.toggle[aria-pressed=true]{border-color:var(--highlight);background:var(--rule2);color:var(--ink)}.switch{width:32px;height:18px;flex:none;border-radius:var(--radius-full);background:var(--highlight);position:relative;transition:background var(--d-micro)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--faint);transition:transform var(--d-micro) var(--ease-smooth),background var(--d-micro)}.switch[aria-checked=true]{background:var(--accent)}.switch[aria-checked=true]:after{transform:translate(14px);background:var(--accent-ink)}.checkbox{width:15px;height:15px;flex:none;border-radius:4px;border:1px solid var(--highlight);display:grid;place-items:center;color:var(--accent-ink)}.checkbox[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.checkbox:not([aria-checked=true])>svg{visibility:hidden}.appbar{height:var(--h-appbar);flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--stage);border-bottom:1px solid var(--rule2);-webkit-app-region:drag}.appbar button,.appbar .seg,.appbar .filechip,.appbar .nodrag{-webkit-app-region:no-drag}.brand{display:flex;align-items:center;gap:8px;font-size:var(--t-chrome);font-weight:600;letter-spacing:-.01em;padding-right:4px}.brand>svg{color:var(--accent)}.filechip{display:flex;align-items:center;gap:8px;height:var(--h-compact);padding:0 10px;background:var(--card);border:1px solid var(--rule2);border-radius:var(--radius-sm);font-size:var(--t-chrome);max-width:340px}.filechip .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wincontrols{display:flex;gap:2px;margin-left:4px}.wincontrols button{width:30px;height:26px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--faint)}.wincontrols button:hover{background:var(--surface);color:var(--ink)}.wincontrols button.close:hover{background:var(--bad);color:#fff}.wincontrols i{display:block;background:currentColor}.wincontrols .min i{width:10px;height:1px}.wincontrols .max i{width:9px;height:9px;background:none;border:1px solid currentColor;border-radius:2px}.body{flex:1;min-height:0;display:flex}.stage{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--stage);position:relative}.viewertools{min-height:38px;flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:5px 12px;border-bottom:1px solid var(--rule2);background:color-mix(in srgb,var(--stage) 92%,transparent)}.legend{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--faint)}.legend span{display:flex;align-items:center;gap:5px}.legend i{display:block}.legend .anchor{width:7px;height:7px;border-radius:50%;background:var(--anchor)}.legend .handle{width:7px;height:7px;background:var(--handle);transform:rotate(45deg)}.legend .band{width:12px;height:6px;border-radius:2px}.legend .band.sure,.overlay .certainty .sure{--band: #30a46c}.legend .band.soft,.overlay .certainty .soft{--band: #f5a524}.legend .band.unsure,.overlay .certainty .unsure{--band: #e5484d}.legend .band{background:var(--band)}.overlay .certainty path{fill:var(--band);fill-rule:evenodd;fill-opacity:.45;stroke:var(--band);stroke-width:1;vector-effect:non-scaling-stroke}.legend .wire{width:12px;height:2px;background:var(--wire)}.panes{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.pane{flex:1;min-width:0;position:relative;overflow:hidden;display:grid;place-items:center;background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:16px 16px;cursor:grab;touch-action:none}.pane:active{cursor:grabbing}.pane.hidden{display:none}.panes.stacked .pane{position:absolute;inset:0}.panelabel{position:absolute;top:10px;left:12px;z-index:3;pointer-events:none}.chip{position:absolute;top:8px;right:12px;z-index:3;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--radius-full);font-size:var(--t-label);border:1px solid;pointer-events:none}.chip i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}.chip.draft{color:var(--state-draft);border-color:color-mix(in srgb,var(--state-draft) 45%,transparent);background:color-mix(in srgb,var(--state-draft) 15%,transparent)}.chip.final{color:var(--state-final);border-color:color-mix(in srgb,var(--state-final) 40%,transparent);background:color-mix(in srgb,var(--state-final) 15%,transparent)}.chip.stale{color:var(--state-stale);border-color:color-mix(in srgb,var(--state-stale) 45%,transparent);background:color-mix(in srgb,var(--state-stale) 15%,transparent)}.chip.swapped:after{content:"";position:absolute;left:10px;right:10px;bottom:-3px;height:1.5px;background:var(--accent);border-radius:1px;transform-origin:left;animation:sweep var(--d-normal) var(--ease-out-expo)}@keyframes sweep{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.art{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;pointer-events:none}.art img{display:block;image-rendering:pixelated}.art svg{display:block;overflow:visible}.art.swapping{animation:crossfade var(--d-normal) var(--ease-out-expo)}@keyframes crossfade{0%{opacity:.25}to{opacity:1}}.art.centred{position:static;place-self:stretch;min-width:0;min-height:0;padding:44px 32px 32px}.panes.onlight{--stage: #f3f0ea;--checker-a: #ffffff;--checker-b: #ebe7df}.panes.ondark{--stage: #1a1816;--checker-a: #26231f;--checker-b: #211f1c}.overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}.overlay .wireframe path{fill:none;stroke:var(--wire);stroke-width:1px;vector-effect:non-scaling-stroke}.overlay .handles path{fill:none;stroke:var(--handle);vector-effect:non-scaling-stroke}.overlay .handles .lines{stroke-width:.8px}.overlay .handles .knobs{stroke-width:2.4px;stroke-linecap:square}.pane>canvas.anchors{position:absolute;left:0;top:0;pointer-events:none}.wipehandle{position:absolute;top:0;bottom:0;width:2px;background:var(--ink);z-index:4;cursor:ew-resize;opacity:.7}.wipehandle:after{content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:2px solid var(--ink);background:var(--stage)}.detailpane{position:absolute;inset:0;z-index:5;background:var(--stage);display:flex;flex-direction:column}.detailhead{flex:none;display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--rule2);font-size:var(--t-label);color:var(--dim)}.detailbody{flex:1;min-height:0;position:relative;overflow:hidden;display:grid;place-items:center}.detailfoot{flex:none;padding:8px 12px;border-top:1px solid var(--rule2);font-size:var(--t-label);color:var(--faint)}.pixelgrid{position:absolute;inset:0;background-image:linear-gradient(to right,rgba(250,248,245,.07) 1px,transparent 1px),linear-gradient(to bottom,rgba(250,248,245,.07) 1px,transparent 1px);pointer-events:none}:root[data-theme=light] .pixelgrid{background-image:linear-gradient(to right,rgba(26,24,22,.1) 1px,transparent 1px),linear-gradient(to bottom,rgba(26,24,22,.1) 1px,transparent 1px)}.stagestate{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;padding:32px;text-align:center;background:var(--stage)}.stagestate .title{font-size:16px;font-weight:500}.stagestate .body{display:block;font-size:var(--t-chrome);line-height:1.6;color:var(--faint);max-width:46ch}.stagestate .action{font-size:var(--t-chrome);color:var(--accent-text);margin-top:2px}.statusstrip{height:var(--h-status);flex:none;display:flex;align-items:center;gap:10px;padding:0 12px;border-top:1px solid var(--rule2);background:var(--stage);font-size:var(--t-label);color:var(--faint);font-variant-numeric:tabular-nums}.statusstrip .lead{color:var(--dim)}.statusstrip .privacy{margin-left:auto}.statusstrip .updatechip{display:inline-flex;align-items:center;gap:6px;color:var(--gold)}.statusstrip .updatechip i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}.statusstrip .fetchchip{display:inline-flex;align-items:center;gap:8px;margin-left:12px;color:var(--faint);white-space:nowrap}.statusstrip .fetchchip.bad{color:var(--bad)}.fetchbar{width:64px;flex:none}.fetchnote{display:flex;flex-direction:column;gap:6px;font-size:11.5px;line-height:1.45;color:var(--faint)}.fetchnote .fetchbar{width:100%}.fetchnote .fetchline{color:var(--dim);font-variant-numeric:tabular-nums}.rail{width:var(--rail-w);flex:none;border-left:1px solid var(--rule2);background:var(--paper);display:flex;flex-direction:column;position:relative}.railscroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:var(--rail-pad);display:flex;flex-direction:column;gap:var(--rail-pad)}.railscroll::-webkit-scrollbar{width:10px}.railscroll::-webkit-scrollbar-thumb{background:var(--rule2);border-radius:5px;border:3px solid var(--paper)}.railscroll::-webkit-scrollbar-thumb:hover{background:var(--highlight)}.card{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);padding:13px;display:flex;flex-direction:column;gap:10px}.cardhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.railfoot{flex:none;border-top:1px solid var(--rule2);background:var(--stage);padding:12px var(--rail-pad);display:flex;flex-direction:column;gap:8px}.railfoot .row{display:flex;gap:8px}.railfoot .note{display:flex;justify-content:space-between;font-size:var(--t-label);color:var(--muted)}.presets{display:flex;flex-wrap:wrap;gap:5px}.preset{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;border:1px solid var(--rule2);background:var(--card);font-size:var(--t-chrome);color:var(--dim);transition:border-color var(--d-micro),background var(--d-micro),color var(--d-micro)}.preset:hover{border-color:var(--highlight);color:var(--ink)}.preset[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--ink);font-weight:500}.preset.saved{padding-right:22px}.preset{position:relative}.preset .forget{position:absolute;top:50%;margin-top:-8px;right:4px;width:16px;height:16px;border-radius:5px;opacity:0;transition:opacity var(--d-micro),background var(--d-micro)}.preset .forget:before,.preset .forget:after{content:"";position:absolute;left:4px;top:7.5px;width:8px;height:1.5px;border-radius:1px;background:var(--muted)}.preset .forget:before{transform:rotate(45deg)}.preset .forget:after{transform:rotate(-45deg)}.preset:hover .forget,.preset .forget:focus-visible{opacity:1}.preset .forget:hover{background:var(--highlight)}.preset .forget:hover:before,.preset .forget:hover:after{background:var(--bad)}.traybar{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:11px}.railmodes{flex:none;display:flex;flex-direction:column;gap:8px;padding:10px var(--rail-pad) 0}.railmodes-row{display:grid;grid-template-columns:1.75fr 1fr;gap:8px}.mode.mode-engine{background:var(--paper);border-color:var(--rule)}.mode{min-width:0;display:flex;flex-direction:column;gap:8px;padding:10px 11px 11px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card)}.modehead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-height:16px}.modetitle{font-size:12.5px;font-weight:600;color:var(--ink)}.modestate{font-size:10.5px;color:var(--muted);white-space:nowrap}.seg.big{display:flex;width:100%;padding:3px}.seg.big>button{flex:1;padding:7px 0;font-size:12.5px;text-align:center}.seg.big>button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);font-weight:600}.bigswitch{display:flex;align-items:center;gap:8px;height:34px;padding:0 4px;border:1px solid var(--rule2);border-radius:999px;background:var(--paper);color:var(--dim);font-size:12.5px;font-weight:600;transition:background var(--d-micro),border-color var(--d-micro),color var(--d-micro)}.bigswitch .knob{flex:none;width:24px;height:24px;border-radius:50%;background:var(--highlight);transition:background var(--d-micro)}.bigswitch .state{flex:1;text-align:center;padding-right:4px}.bigswitch[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.bigswitch[aria-checked=true]{flex-direction:row-reverse}.bigswitch[aria-checked=true] .knob{background:var(--accent-ink)}.bigswitch[aria-checked=true] .state{padding-right:0;padding-left:4px}.railtabs{flex:none;background:var(--stage);border-bottom:1px solid var(--rule2)}.railseg{display:flex;width:100%}.railseg>button{position:relative;flex:1;display:flex;align-items:baseline;justify-content:center;gap:8px;height:46px;padding:14px 12px 0;color:var(--muted);transition:color var(--d-micro),background var(--d-micro)}.railseg>button:hover:not([aria-selected=true]){color:var(--dim);background:color-mix(in srgb,var(--ink) 4%,transparent)}.railseg>button[aria-selected=true]{color:var(--ink);background:var(--paper)}.railseg>button:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent;transition:background var(--d-micro)}.railseg>button[aria-selected=true]:after{background:var(--accent)}.railseg .tablabel{font-size:14px;font-weight:600;letter-spacing:-.005em}.railseg .tabnote{font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--faint)}.railseg .tabnote:empty{display:none}.railseg>button[aria-selected=true] .tabnote{color:var(--accent-text)}.tabcaption{margin:0;padding:7px var(--rail-pad) 9px;background:var(--paper);font-size:11.5px;color:var(--muted)}.presetblock{display:flex;flex-direction:column;gap:8px}.presetblock .traybar .faint{min-width:0}.rail section.group{gap:0;border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg)}.rail section.group .grouphead{align-items:center;padding-right:13px}.groupbtn{flex:1;display:flex;align-items:center;gap:7px;padding:11px 9px 11px 13px;color:var(--muted);text-align:left;border-radius:var(--radius-lg)}.groupbtn:hover{color:var(--dim)}.groupbtn .changed{font-size:10.5px;color:var(--accent-text)}.groupbody{display:flex;flex-direction:column;gap:13px;padding:2px 13px 14px}.control.changed .controlhead .label:before{content:"";display:inline-block;width:5px;height:5px;margin-right:6px;border-radius:50%;background:var(--accent);vertical-align:1px}.emptycard p{margin:0;font-size:var(--t-chrome);line-height:1.55;color:var(--dim)}.structure .srow{display:grid;grid-template-columns:1fr auto;column-gap:8px;row-gap:5px;align-items:baseline}.structure .srow .k{font-size:var(--t-chrome);color:var(--dim)}.structure .srow .v{font-size:var(--t-panel);font-variant-numeric:tabular-nums}.structure .srow .v .of{margin-left:6px;font-size:10.5px;color:var(--muted)}.sbar{grid-column:1 / -1;position:relative;height:4px;margin-bottom:4px;border-radius:2px;background:var(--highlight)}.sbar i{position:absolute;inset:0 auto 0 0;border-radius:2px;background:var(--accent);transition:width var(--d-normal) var(--ease-out-expo)}.sbar b{position:absolute;top:-3px;bottom:-3px;width:2px;margin-left:-1px;border-radius:1px;background:var(--dim)}.readout{display:flex;flex-direction:column;min-height:54px;background:var(--rule2);border:1px solid var(--rule2);border-radius:var(--radius);overflow:hidden}.readout-badge-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 10px;background:var(--card);border-bottom:1px solid var(--rule2)}.engine-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;border:1px solid transparent;cursor:pointer;transition:all var(--d-micro);line-height:1.4;font-family:inherit}.engine-pill.fast{background:color-mix(in srgb,var(--accent) 15%,var(--paper));border-color:color-mix(in srgb,var(--accent) 40%,transparent);color:var(--accent)}.engine-pill.quality{background:color-mix(in srgb,var(--accent) 10%,var(--paper));border-color:color-mix(in srgb,var(--accent) 25%,transparent);color:var(--ink)}.engine-pill:hover{filter:brightness(1.08);border-color:var(--accent)}.time-pill{font-size:11px;font-weight:500;color:var(--muted);font-variant-numeric:tabular-nums}.readout-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px}.fastmode-banner{display:flex;align-items:center;gap:10px;padding:10px 12px;background:color-mix(in srgb,var(--accent) 10%,var(--card));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--rule2));border-radius:var(--radius-lg)}.fastmode-banner-icon{font-size:16px;line-height:1;flex:none}.fastmode-banner-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.fastmode-banner-title{font-weight:600;color:var(--ink);font-size:12px}.fastmode-banner-desc{color:var(--muted);font-size:11px;line-height:1.35}.fastmode-banner-btn{flex:none;padding:4px 8px;font-size:11px;font-weight:500;background:var(--paper);border:1px solid var(--rule2);border-radius:var(--radius);color:var(--ink);cursor:pointer;white-space:nowrap;transition:all var(--d-micro)}.fastmode-banner-btn:hover{background:var(--hover);border-color:var(--accent);color:var(--accent)}.quality-only-tag{display:inline-block;font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:1px 5px;border-radius:4px;background:color-mix(in srgb,var(--gold) 15%,transparent);color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 35%,transparent);line-height:1.3}.readout .cell{min-width:0;display:flex;flex-direction:column;gap:1px;padding:6px 10px;background:var(--paper)}.readout .v{font-size:15px;font-weight:500;line-height:1.25}.readout .k{font-size:10px;color:var(--muted)}.delta{font-size:10.5px;font-variant-numeric:tabular-nums;color:var(--muted)}.delta.better{color:var(--good)}.delta.worse{color:var(--gold)}.readout.busy,.readout.idle{display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--paper);font-size:var(--t-chrome)}.readout .stage{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--state-stale)}.pulse{flex:none;width:7px;height:7px;border-radius:50%;background:var(--state-stale);animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}.headline{display:flex;align-items:flex-end;gap:12px}.headline .figure{font-family:var(--font-display);font-size:52px;line-height:.85;letter-spacing:-.03em}.headline .of{display:flex;flex-direction:column;gap:2px;padding-bottom:4px}.meter{position:relative;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--good),var(--gold) 55%,var(--bad))}.meter .threshold{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--dim)}.meter .needle{position:absolute;top:-4px;width:2px;height:14px;background:var(--ink);border-radius:1px;transition:left var(--d-normal) var(--ease-out-expo)}.meterscale{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted)}.stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule2);border:1px solid var(--rule2);border-radius:var(--radius);overflow:hidden;font-variant-numeric:tabular-nums}.stats>div{background:var(--paper);padding:8px 10px;display:flex;flex-direction:column;gap:2px}.stats .k{font-size:10.5px;color:var(--muted)}.stats .v{font-size:var(--t-panel)}.benchmark{display:flex;gap:8px;padding:8px 10px;border:1px dashed var(--highlight);border-radius:var(--radius);background:color-mix(in srgb,var(--ink) 2%,transparent)}.benchmark .label{flex:none;padding-top:1px}.benchmark p{margin:0;font-size:var(--t-label);line-height:1.45;color:var(--faint)}.loss{display:flex;gap:9px;padding-bottom:9px;border-bottom:1px solid var(--rule2)}.loss:last-of-type{border-bottom:none;padding-bottom:0}.loss .glyph{flex:none;padding-top:2px;color:var(--gold)}.loss .text{font-size:var(--t-chrome);line-height:1.45;color:var(--dim)}.loss .meta{font-size:var(--t-label);color:var(--muted);display:flex;gap:6px;flex-wrap:wrap}.loss .why{font-size:var(--t-label);line-height:1.5;color:var(--faint);margin-top:4px;padding-left:9px;border-left:1px solid var(--rule2)}.loss .expand{color:var(--muted)}.loss .expand:hover{color:var(--dim)}.nothinglost{display:flex;gap:9px;align-items:center;font-size:var(--t-chrome);color:var(--faint)}.nothinglost .glyph{color:var(--good);flex:none;display:flex}.ink{display:flex;align-items:center;gap:9px;padding:2px 0;border-radius:var(--radius-sm);width:100%;text-align:left}.ink:hover{background:var(--surface)}.swatch{width:22px;height:22px;flex:none;border-radius:5px;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:8px 8px;position:relative;overflow:hidden}.swatch i{position:absolute;inset:0;display:block}.swatch.snapped{border:2px solid var(--accent)}.ink .hex{font-size:var(--t-chrome);font-variant-numeric:tabular-nums;color:var(--dim);width:72px}.ink .share{font-size:var(--t-label);color:var(--muted);font-variant-numeric:tabular-nums;width:44px}.ink .snap{margin-left:auto;font-size:var(--t-label);color:var(--muted)}.ink .snap.on{color:var(--accent-text)}.ink{gap:6px;touch-action:none}.ink.grouped .hex{color:var(--accent-text)}.inkpick{width:16px;height:16px;flex:none;border-radius:4px;border:1px solid var(--highlight);display:grid;place-items:center;color:var(--accent-ink)}.inkpick[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.inkmain{display:flex;align-items:center;gap:9px;flex:1;min-width:0;text-align:left}.inkmain[aria-disabled=true]{cursor:grab}.swatch.mini{width:16px;height:16px;border-radius:4px}.swatch.mini.ramp{width:26px}.inklist{display:flex;flex-direction:column;gap:1px;border-radius:var(--radius-sm)}.inklist,.cgroup{transition:box-shadow var(--d-fast),background var(--d-fast)}.mergebar{display:flex;align-items:center;gap:10px;font-size:var(--t-label)}.cgroups{display:flex;flex-direction:column;gap:7px}.cgroupshead{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.cgroup{border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);padding:8px;display:flex;flex-direction:column;gap:7px}.cgroup.suggested{border-style:dashed;background:transparent}.cchips{display:flex;flex-wrap:wrap;gap:4px}.cchip{display:inline-flex;align-items:center;border:1px solid var(--highlight);border-radius:999px;background:var(--card);touch-action:none;font-size:var(--t-label);color:var(--dim)}.cchip.target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.cchip.unmatched{border-color:var(--gold);border-style:dashed}.cchipmain{display:inline-flex;align-items:center;gap:5px;padding:2px 4px 2px 3px;border-radius:999px}.cchipmain .swatch.mini{border-radius:999px}.cchipx{display:grid;place-items:center;width:18px;height:18px;margin-right:2px;border-radius:999px;color:var(--muted)}.cchipx:hover{color:var(--ink);background:var(--surface)}.cresult{display:flex;align-items:center;gap:6px;font-size:var(--t-label)}.cresult>span{white-space:nowrap}.cresult .arrow{color:var(--muted)}.cresultchip{display:inline-flex;align-items:center;gap:5px;color:var(--dim)}.cactions{display:flex;align-items:center;gap:6px}.creport{font-size:11px;line-height:1.4;display:inline-flex;align-items:center;gap:5px;min-width:0}.creport.warn{color:var(--gold)}.creport.warn svg{flex:none}.simplifyrow{display:flex;align-items:center;gap:5px;font-size:var(--t-label)}.numberfield.simplify{min-width:0;width:40px;text-align:center}.dragghost{position:fixed;z-index:60;pointer-events:none;filter:drop-shadow(0 2px 6px rgba(0,0,0,.45))}body.dragging-ink,body.dragging-ink *{cursor:grabbing!important}body.dragging-ink [data-drop=list]{box-shadow:0 0 0 1px var(--rule2)}.dropping{box-shadow:0 0 0 2px var(--accent)!important;background:var(--accent-subtle)!important}.control{display:flex;flex-direction:column;gap:5px}.controlhead{display:flex;align-items:baseline;gap:8px}.controlhead .label{flex:1;font-size:var(--t-chrome);color:var(--dim)}.controlhead .unit{font-size:var(--t-label);color:var(--muted)}.numberfield{height:24px;min-width:58px;padding:0 6px;border:1px solid var(--highlight);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;text-align:center}.numberfield:focus-visible{border-color:var(--accent)}.slider{appearance:none;-webkit-appearance:none;width:100%;height:14px;background:none;margin:2px 0 0;cursor:pointer}.slider::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:var(--highlight)}.slider::-webkit-slider-thumb{-webkit-appearance:none;width:11px;height:11px;margin-top:-4px;border-radius:50%;background:var(--ink);border:none}.slider::-moz-range-track{height:3px;border-radius:2px;background:var(--highlight)}.slider::-moz-range-thumb{width:11px;height:11px;border:none;border-radius:50%;background:var(--ink)}.stops{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted);white-space:nowrap}.group{display:flex;flex-direction:column;gap:9px}.grouphead{display:flex;align-items:baseline;justify-content:space-between}.reset{font-size:var(--t-label);color:var(--accent-text)}.reset:disabled{color:var(--muted);cursor:default}.stagelist{display:flex;flex-direction:column;gap:5px;font-variant-numeric:tabular-nums}.stagerow{display:flex;align-items:baseline;gap:8px;font-size:var(--t-label);color:var(--muted)}.stagerow.done{color:var(--dim)}.stagerow .mark{width:10px;text-align:center;color:var(--muted)}.stagerow.done .mark{color:var(--good)}.stagerow .name{flex:1}.sweep{height:2px;background:var(--rule2);border-radius:2px;overflow:hidden}.sweep i{display:block;width:30%;height:100%;background:var(--accent);animation:sweepacross 1.6s var(--ease-out-expo) infinite}@keyframes sweepacross{0%{transform:translate(-100%)}to{transform:translate(340%)}}@media(prefers-reduced-motion:reduce){.sweep i{animation:none;width:100%;opacity:.4}.chip.swapped:after,.art.swapping,.callout,.pulse{animation:none}.dragging .drop{transition:none}}.firstrun{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px;background:var(--stage);padding:24px}.drop{width:min(620px,80%);padding:44px 24px;min-height:220px;justify-content:center;border:1.5px dashed var(--highlight);border-radius:var(--radius-xl);display:flex;flex-direction:column;align-items:center;gap:16px;background:color-mix(in srgb,var(--ink) 1.5%,transparent);text-align:center;transition:border-color var(--d-fast),background var(--d-fast)}.drop .glyph{color:var(--muted)}[hidden]{display:none!important}.drop.solid{background:var(--paper);border-style:solid;border-color:var(--rule2)}.panehint{max-width:34ch;text-align:center;font-size:12.5px;line-height:1.55}.drop .headline{font-family:var(--font-display);font-size:26px;letter-spacing:-.02em;display:block}.drop .release,.dragging .drop .resting{display:none}.dragging .drop .release{display:block}.dragging .drop{width:min(640px,90%);min-height:320px;transition:width var(--d-fast) var(--ease-out-expo),min-height var(--d-fast) var(--ease-out-expo),border-color var(--d-fast),background var(--d-fast)}.samples{display:flex;flex-direction:column;align-items:center;gap:12px}.samplerow{display:flex;gap:12px}.sample{width:112px;display:flex;flex-direction:column;gap:7px;align-items:center}.sample .thumb{width:112px;height:88px;border:1px solid var(--rule2);border-radius:10px;background-color:var(--card);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:12px 12px;display:grid;place-items:center;overflow:hidden;transition:border-color var(--d-micro),transform var(--d-micro)}.sample:hover .thumb{border-color:var(--accent);transform:translateY(-2px)}.sample img{max-width:76px;max-height:68px}.sample .label{font-size:var(--t-label);color:var(--faint)}.dragging .drop{border-color:var(--accent);background:var(--accent-soft)}.dragging .drop .glyph{color:var(--accent)}.dragging:after{content:"";position:fixed;inset:0;border:2px solid var(--accent);pointer-events:none;z-index:60}.dragging .stage>*:not(.stagestate){opacity:.6}.callout{position:absolute;left:20px;bottom:20px;z-index:8;max-width:320px;display:flex;flex-direction:column;gap:5px;padding:10px 13px;border-radius:var(--radius-lg);border:1px solid var(--rule2);background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(8px);font-size:11.5px;line-height:1.5;color:var(--dim);animation:rise var(--d-fast) var(--ease-out-expo)}.callout .head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}#overlays:empty{display:none}.scrim{position:fixed;inset:0;z-index:40;background:color-mix(in srgb,var(--void) 62%,transparent);display:grid;place-items:center;padding:24px}.modal{width:min(460px,100%);max-height:86vh;overflow-y:auto;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-xl);padding:22px;display:flex;flex-direction:column;gap:13px;box-shadow:var(--shadow-xl)}.modal h2{margin:0;font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:-.02em}.modal p{margin:0;font-size:var(--t-panel);line-height:1.7;color:var(--dim)}.modal .actions{display:flex;gap:8px;justify-content:flex-end}.modal.composer{width:min(1040px,100%);max-height:92vh;padding:0;gap:0;overflow:hidden}.composerhead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 22px 15px;border-bottom:1px solid var(--rule2)}.composerhead p{margin-top:3px;font-size:var(--t-chrome)}.composerbody{display:grid;grid-template-columns:minmax(0,1fr) 312px;min-height:0;overflow-y:auto}.composerpreview{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:22px;min-width:0;background:var(--stage)}.cardstage{--ar: 1.7778;position:relative;width:min(100%,calc(58vh * var(--ar)));aspect-ratio:var(--ar);border-radius:var(--radius);overflow:hidden;background:var(--paper);box-shadow:var(--shadow-lg)}.cardstage img{display:block;width:100%;height:100%;object-fit:contain}.cardbusy{position:absolute;inset:0;display:grid;place-items:center;opacity:0;pointer-events:none;background:color-mix(in srgb,var(--paper) 45%,transparent);transition:opacity var(--d-micro)}.cardstage.busy .cardbusy{opacity:1;transition-delay:.26s}.cardspin{width:20px;height:20px;border-radius:50%;border:2px solid var(--highlight);border-top-color:var(--accent);animation:cardspin .8s linear infinite}@keyframes cardspin{to{transform:rotate(360deg)}}.composerside{display:flex;flex-direction:column;gap:18px;padding:20px 22px;border-left:1px solid var(--rule2)}.optgroup{display:flex;flex-direction:column;gap:8px}.cardseg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:2px;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper)}.cardseg button{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 8px;border-radius:calc(var(--radius) - 2px);font-size:var(--t-chrome);color:var(--faint)}.cardseg button small{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.cardseg button:hover:not([aria-checked=true]){color:var(--ink)}.cardseg button[aria-checked=true]{color:var(--ink);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.optlist{display:flex;flex-direction:column;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper)}.optlist>*+*{border-top:1px solid var(--rule2)}.optrow{display:flex;align-items:center;gap:12px;width:100%;padding:9px 11px;text-align:left}.optrow:hover{background:var(--rule2)}.optext{display:flex;flex:1;flex-direction:column;gap:1px;min-width:0}.optlabel{font-size:12.5px;color:var(--ink)}.optnote{font-size:11px;line-height:1.4;color:var(--muted)}.optslider{display:flex;flex-direction:column;gap:4px;padding:9px 11px 8px;transition:opacity var(--d-micro)}.optslider.off{opacity:.4}.optslider.off .slider{cursor:default}.optsliderhead{display:flex;justify-content:space-between;font-size:12px;color:var(--dim)}.composeractions{display:flex;flex-direction:column;gap:8px;margin-top:auto}.composeractions .btn{justify-content:center;gap:7px}@media(max-width:860px){.composerbody{grid-template-columns:minmax(0,1fr)}.composerside{border-left:0;border-top:1px solid var(--rule2)}}.popover{position:fixed;z-index:45;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.menu{padding:6px;min-width:260px}.menu .item{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:var(--radius);width:100%;text-align:left;font-size:var(--t-chrome);color:var(--dim)}.menu .item:hover{background:var(--surface);color:var(--ink)}.menu .item .when{margin-left:auto;font-size:var(--t-label);color:var(--muted)}.menu .rule{height:1px;background:var(--rule2);margin:5px 0}.sheet{position:absolute;inset:0;z-index:20;background:color-mix(in srgb,var(--void) 55%,transparent);display:flex;align-items:flex-end}.sheetbody{width:100%;max-height:100%;overflow-y:auto;background:var(--card);border-top:1px solid var(--highlight);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:14px;display:flex;flex-direction:column;gap:11px;box-shadow:0 -20px 50px color-mix(in srgb,var(--void) 60%,transparent);animation:rise var(--d-fast) var(--ease-out-expo)}@keyframes rise{0%{transform:translateY(12px);opacity:0}}.format{display:flex;align-items:center;gap:9px;padding:7px 9px;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);width:100%;text-align:left;font-size:var(--t-chrome);color:var(--dim)}.format:hover{border-color:var(--highlight)}.format .size{margin-left:auto;font-size:var(--t-label);color:var(--muted);font-variant-numeric:tabular-nums}.tooltip{position:fixed;z-index:70;max-width:300px;background:var(--highlight);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:var(--radius);padding:10px 12px;font-size:var(--t-chrome);line-height:1.6;color:var(--dim);box-shadow:var(--shadow);pointer-events:none}#toasts{position:fixed;left:50%;bottom:40px;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{width:min(460px,90vw);background:var(--highlight);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:10px;padding:11px 13px;display:flex;align-items:center;gap:11px;box-shadow:var(--shadow-lg);animation:risein var(--d-fast) var(--ease-out-expo)}@keyframes risein{0%{transform:translateY(8px);opacity:0}}.toast .text{flex:1;font-size:var(--t-chrome);color:var(--dim)}.toast .glyph{display:flex}.toast .glyph.good{color:var(--good)}.toast .glyph.bad{color:var(--bad)}.screen{position:absolute;inset:0;z-index:30;background:var(--paper);display:flex;flex-direction:column}.screenbar{height:var(--h-appbar);flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--stage);border-bottom:1px solid var(--rule2);-webkit-app-region:drag}.screenbar button{-webkit-app-region:no-drag}.screenbody{flex:1;min-height:0;overflow-y:auto;background:var(--stage)}.settingsgrid{width:min(1128px,100%);margin:0 auto;padding:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px;align-content:start}.settinggroup{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);overflow:hidden;align-self:start}.settinggroup>.head{padding:11px 14px;border-bottom:1px solid var(--rule2)}.settingrow{display:flex;align-items:center;gap:16px;padding:11px 14px;border-bottom:1px solid color-mix(in srgb,var(--ink) 5%,transparent)}.settingrow:last-child{border-bottom:none}.settingrow .about{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.settingrow .label{font-size:var(--t-panel);color:var(--dim)}.settingrow .help{font-size:var(--t-label);line-height:1.5;color:var(--muted)}.settingrow .control{flex:none}.settingrow select,.settingrow input[type=text],.settingrow input[type=number]{height:var(--h-compact);padding:0 8px;border:1px solid var(--rule2);border-radius:7px;background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;max-width:220px}.privacycard{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:8px;align-self:start}.privacycard .line{font-family:var(--font-display);font-size:19px;letter-spacing:-.02em}.about{display:flex;min-height:100%}.aboutleft{width:520px;flex:none;background:var(--stage);border-right:1px solid var(--rule2);display:flex;flex-direction:column;justify-content:center;gap:22px;padding:56px}.aboutleft .mark{color:var(--accent)}.aboutright{flex:1;padding:56px;display:flex;flex-direction:column;gap:20px;justify-content:center;background:var(--paper)}.credit{border:1px solid var(--highlight);border-radius:var(--radius-lg);padding:20px;display:flex;flex-direction:column;gap:10px;background:var(--gold-soft)}.notices{border:1px solid var(--rule2);border-radius:var(--radius-lg);overflow:hidden}.notices .head{padding:11px 14px;border-bottom:1px solid var(--rule2);font-size:var(--t-chrome);color:var(--dim);display:flex;justify-content:space-between}.notices pre{margin:0;height:220px;overflow:auto;padding:12px 14px;font:11.5px / 1.75 var(--font-mono);color:var(--muted);background:var(--stage);white-space:pre-wrap;user-select:text}.minifyrail{width:400px;flex:none;border-left:1px solid var(--rule2);background:var(--paper);display:flex;flex-direction:column}.minifyresult{display:flex;flex-direction:column;gap:5px}.minifyresult .figure{font-family:var(--font-display);font-size:66px;line-height:.85;letter-spacing:-.04em;color:var(--accent-text)}.sentence{font-size:var(--t-panel);line-height:2;color:var(--dim)}.sentence .inlinefield{display:inline-flex;align-items:center;height:24px;padding:0 4px;border:1px solid var(--rule2);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;width:58px;text-align:center}.sentence .inlinefield.accent{border-color:var(--accent);background:var(--accent-soft)}.batchbar{height:44px;flex:none;display:flex;align-items:center;gap:8px;padding:0 14px;border-bottom:1px solid var(--rule2);background:var(--stage)}.batchhead,.batchrow{display:grid;grid-template-columns:24px minmax(0,1.4fr) 120px 104px 84px 104px 96px minmax(0,1.2fr);align-items:center;gap:12px;padding:0 14px}.batchhead{height:34px;flex:none;border-bottom:1px solid var(--rule2)}.batchrow{height:var(--h-row);border-bottom:1px solid color-mix(in srgb,var(--ink) 4%,transparent);font-size:var(--t-chrome);font-variant-numeric:tabular-nums}.batchrow.failed{background:color-mix(in srgb,var(--bad) 8%,transparent)}.batchrow.running{background:var(--accent-subtle)}.batchrow .trunc,.batchhead .trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batchrow .right,.batchhead .right{text-align:right}.batchrow .state{display:flex;align-items:center;gap:6px}.batchrow .state i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block;flex:none}.state.queued,.state.skipped{color:var(--muted)}.state.running{color:var(--accent-text)}.state.done{color:var(--good)}.state.failed{color:var(--bad)}.batchviewport{flex:1;min-height:0;overflow-y:auto;position:relative}.batchfoot{height:52px;flex:none;display:flex;align-items:center;gap:18px;padding:0 14px;border-top:1px solid var(--rule2);background:var(--stage);font-size:var(--t-chrome);font-variant-numeric:tabular-nums}.progress{height:3px;border-radius:2px;background:var(--highlight);overflow:hidden}.progress i{display:block;height:100%;background:var(--accent);transition:width var(--d-fast) var(--ease-smooth)}@media(max-width:1400px){:root{--rail-w: 330px}}@media(max-width:1180px){:root{--rail-w: 310px}.legend{display:none}}.chooser{position:absolute;left:50%;bottom:16px;transform:translate(-50%);z-index:8;width:min(560px,calc(100% - 32px));max-height:calc(100% - 70px);overflow-y:auto;display:flex;flex-direction:column;gap:9px;padding:10px 12px 11px;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);animation:rise var(--d-fast) var(--ease-out-expo)}.choosehead{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.choosehead .eyebrow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chooseintro{font-size:var(--t-label);line-height:1.5;color:var(--dim);padding:7px 10px;border-radius:var(--radius);background:var(--accent-subtle);border:1px solid var(--accent-soft)}.choices{display:flex;flex-direction:column;gap:6px}.choice{display:grid;grid-template-columns:92px 1fr auto;align-items:center;gap:12px;padding:8px 8px 8px 12px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--paper);min-width:0}.choice .btn{min-width:104px}.choicename{display:flex;align-items:center;gap:7px;font-family:var(--font-display);font-size:17px;letter-spacing:-.02em;color:var(--ink)}.choicename svg{color:var(--accent-text)}.choicebody{font-size:var(--t-chrome);line-height:1.5;color:var(--faint)}.choosenews{display:flex;flex-direction:column;gap:6px;padding-top:9px;border-top:1px solid var(--rule2)}.remember{display:flex;align-items:center;gap:7px;font-size:var(--t-label);color:var(--faint);cursor:pointer;align-self:flex-start}.remember input{accent-color:var(--accent);margin:0}.autochose{display:flex;flex-direction:column;gap:7px;font-size:var(--t-chrome)}.autolead{color:var(--dim);line-height:1.5}.autorow{display:flex;align-items:center;gap:10px;justify-content:space-between}.autorow.moved{padding-top:7px;border-top:1px dashed var(--rule2)}.autotext{display:flex;flex-direction:column;gap:2px;min-width:0}.autotitle{color:var(--ink)}.autotext .muted{font-size:var(--t-label)}.autobtns{display:flex;align-items:center;gap:10px;flex:none}.autorow .btn{flex:none}.autotaken{font-size:var(--t-label);color:var(--state-final);flex:none}.card.autocard{border-color:var(--accent-soft);background:color-mix(in srgb,var(--accent) 4%,var(--card))}.guideline{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:var(--t-label)}.rail.wizarding{width:max(var(--rail-w),400px)}.sheet.wizsheet{align-items:stretch;background:var(--paper)}.sheetbody.wizbody{height:100%;border-radius:0;border-top:none;box-shadow:none;padding:0;gap:0;overflow:hidden;background:var(--paper)}.wizhead{flex:none;display:flex;flex-direction:column;gap:9px;padding:14px 16px 12px;border-bottom:1px solid var(--rule2)}.wiztitle{font-size:24px;font-weight:500;line-height:1.1;color:var(--ink)}.wizdots{display:flex;gap:6px}.wizdots button{flex:1;height:4px;border-radius:2px;background:var(--highlight);transition:background var(--d-micro)}.wizdots button.done{background:color-mix(in srgb,var(--accent) 45%,var(--highlight))}.wizdots button[aria-selected=true]{background:var(--accent)}.wizdots button:hover{background:var(--accent-hover)}.wizcompare{display:flex;align-items:center;gap:8px;font-size:var(--t-label)}.wizcompare .seg>button{padding:3px 9px}.wizscroll{flex:1;min-height:0;overflow-y:auto;padding:14px 16px 18px;display:flex;flex-direction:column;gap:14px}.wizlead{font-size:var(--t-panel);line-height:1.55;color:var(--dim)}.wizguide{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--rule2)}.wizexplain{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;margin:0;font-size:var(--t-chrome);line-height:1.5}.wizexplain dt{font-size:var(--t-eyebrow);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:3px;white-space:nowrap}.wizexplain dd{margin:0;color:var(--dim)}.wizlearn{font-size:var(--t-label);color:var(--accent-text);align-self:flex-start;text-decoration:none}.wizlearn:hover{text-decoration:underline}.wizcontrols{display:flex;flex-direction:column;gap:12px;padding:12px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card)}.wizlive{display:flex;flex-direction:column;gap:12px}.wizrow{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:var(--t-chrome)}.wizsmall{font-size:var(--t-label);line-height:1.5}.wizwhy{font-size:var(--t-chrome);line-height:1.5;color:var(--dim)}.wizchoices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.wizchoice{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 11px;text-align:left;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);font-size:var(--t-label);line-height:1.45}.wizchoice .name{font-size:13px;font-weight:600;color:var(--ink)}.wizchoice:hover{border-color:var(--highlight)}.wizchoice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-subtle)}.wiznote{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 11px;border-radius:var(--radius);background:var(--accent-subtle);font-size:var(--t-label);line-height:1.5;color:var(--dim)}.wiznav{flex:none;display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--rule2);background:var(--paper)}.kinds{display:grid;grid-template-columns:1fr 1fr;gap:9px}.kind{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:7px 7px 9px;text-align:left;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card);min-width:0;transition:border-color var(--d-micro),background var(--d-micro)}.kind:hover{border-color:var(--highlight)}.kind[aria-checked=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--card));box-shadow:0 0 0 1px var(--accent)}.kthumb{position:relative;height:104px;border-radius:var(--radius);background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:10px 10px;display:grid;place-items:center;overflow:hidden;margin-bottom:3px}.kthumb img{max-width:92%;max-height:92%;object-fit:contain;image-rendering:auto}.kspin{position:absolute;inset:auto 0 0;height:2px;overflow:hidden;display:none}.kind.busy .kspin{display:block}.kspin:after{content:"";position:absolute;top:0;bottom:0;left:0;width:30%;background:var(--accent);animation:sweepacross 1.6s var(--ease-out-expo) infinite}@media(prefers-reduced-motion:reduce){.kspin:after{animation:none;width:100%;opacity:.5}}.kname{display:flex;align-items:baseline;justify-content:space-between;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink);padding:0 2px}.ksugg{font-size:9.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text)}.kwhy,.knote,.kstat{font-size:11px;line-height:1.4;padding:0 2px}.kwhy{color:var(--faint)}.knote{color:var(--muted);font-style:italic}.kstat{color:var(--muted);margin-top:2px}.wizreadout table{width:100%;border-collapse:collapse;font-size:var(--t-chrome)}.wizreadout th,.wizreadout td{padding:4px 0;text-align:right;font-weight:400}.wizreadout thead th{font-size:var(--t-eyebrow);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.wizreadout tbody th{text-align:left;color:var(--faint)}.wizreadout td{color:var(--ink);padding-left:10px}.wizreadout td.delta{width:70px}.wizreadout td.delta.same{color:var(--muted)}.wizchanges .wizchange{display:flex;justify-content:space-between;gap:10px;font-size:var(--t-chrome);color:var(--faint)}.wizchanges .wizchange .num{color:var(--ink)}.pane.source.comparing .panelabel{color:var(--accent-text)}.intro{width:min(620px,80%);display:flex;flex-direction:column;gap:12px;padding:16px 18px;border:1px solid var(--accent-soft);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--accent) 5%,var(--paper))}.intro ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.intro li{display:flex;gap:11px;align-items:baseline;font-size:var(--t-chrome);line-height:1.5}.intro li>div{display:flex;flex-direction:column}.introstep{width:20px;height:20px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:600;background:var(--accent);color:var(--accent-ink)}.introtitle{color:var(--ink);font-weight:500}.introfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:var(--t-label)}html.framed:not(.fullscreen) body{padding-top:6px;background:var(--void)}html.framed:not(.fullscreen) #app{position:relative;border-top:1px solid rgba(201,117,74,.35)}.desktopnote{margin:14px 0 0;font-size:12.5px;text-align:center}.webcontrols{display:flex;gap:2px;margin-left:4px}.webcontrols .btn{gap:6px}.phonenote{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--void) 82%,transparent)}.phonecard{max-width:420px;display:flex;flex-direction:column;gap:12px;padding:22px;border-radius:var(--radius-lg, 12px);background:var(--card);box-shadow:var(--shadow-lg)}.phonecard p{margin:0;font-size:13.5px;line-height:1.65;color:var(--dim)}.sc-loading{padding:40px;text-align:center}.sc-page{width:min(1320px,100%);margin:0 auto;padding:24px;display:flex;flex-direction:column;gap:18px}.sc-head h1{margin:0 0 6px;font-size:28px;font-weight:600}.sc-head p,.sc-results>p{margin:0;max-width:96ch;font-size:13px;line-height:1.6}.sc-main{display:grid;grid-template-columns:300px 1fr;gap:16px;min-height:0;align-items:start}.sc-list{height:560px;overflow-y:auto;overscroll-behavior:contain;padding:0 10px 10px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card);scrollbar-width:thin}.sc-sethead{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;padding:10px 2px 8px;background:var(--card);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--dim)}.sc-sethead span{color:var(--faint);font-weight:600}.sc-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:6px}.sc-case{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:0;overflow:hidden;padding:5px;border:1px solid var(--rule2);border-radius:var(--radius-sm);background:var(--stage);color:var(--dim);cursor:pointer;text-align:left}.sc-case[aria-pressed=true]{border-color:var(--accent);background:var(--accent-subtle);color:var(--accent)}.sc-thumb{aspect-ratio:1;width:100%;border-radius:5px;background:#fff;display:grid;place-items:center;overflow:hidden}.sc-thumb img{width:100%;height:100%;object-fit:contain}.sc-name{width:100%;font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sc-caption{margin:0;font-size:12.5px;color:var(--dim)}.sc-stagecol{display:flex;flex-direction:column;gap:10px;min-width:0}.sc-tools{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}.sc-tools .eyebrow{margin-left:6px}.sc-legend{margin-right:4px;display:inline-flex;align-items:center;gap:6px;font-size:11.5px}.sc-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.sc-dot.a{background:var(--anchor)}.sc-dot.hd{background:var(--handle);margin-left:6px}.sc-viewer{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sc-pane{position:relative;aspect-ratio:1;overflow:hidden;border:1px solid var(--rule2);border-radius:var(--radius-sm);background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:16px 16px;cursor:grab;touch-action:none;user-select:none}.sc-pane:active{cursor:grabbing}.sc-cam{position:absolute;left:0;top:0;width:100%;height:100%;transform-origin:0 0}.sc-cam>img,.sc-layer,.sc-layer>svg{position:absolute;inset:0;width:100%;height:100%;display:block}.sc-cam>img{object-fit:contain}.sc-tag{position:absolute;top:8px;left:8px;padding:4px 7px;border-radius:6px;font-size:11px;font-weight:600;background:color-mix(in srgb,var(--paper) 85%,transparent);color:var(--ink);pointer-events:none}.sc-wire path,.sc-wire circle,.sc-wire ellipse,.sc-wire rect,.sc-wire polygon{fill:none!important;stroke:var(--wire);stroke-width:1px;vector-effect:non-scaling-stroke;stroke-opacity:.9}.sc-ov{pointer-events:none}.sc-ov .h{stroke:var(--handle);stroke-width:1px;vector-effect:non-scaling-stroke;fill:none;stroke-opacity:.85}.sc-ov .hd{stroke:var(--handle);stroke-width:3.5px;vector-effect:non-scaling-stroke;stroke-linecap:round;fill:none}.sc-ov .a{stroke:var(--anchor);stroke-width:5px;vector-effect:non-scaling-stroke;stroke-linecap:round;fill:none}.sc-chips{display:flex;flex-wrap:wrap;gap:6px}.sc-chip{font-size:12px;padding:4px 9px;border-radius:999px;border:1px solid var(--rule2);color:var(--dim);font-variant-numeric:tabular-nums}.sc-chip.win{border-color:transparent;background:var(--goodbg);color:var(--good)}.sc-results{display:flex;flex-direction:column;gap:12px;padding-top:8px;border-top:1px solid var(--rule2)}.sc-results h2{margin:8px 0 0;font-size:22px;font-weight:600}.sc-bignums{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.sc-bignum{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card);font-size:12px}.sc-bignum .v{font-size:28px;color:var(--accent);line-height:1.1}.sc-table{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--card);border:1px solid var(--rule2);border-radius:var(--radius-lg);overflow:hidden}.sc-table th,.sc-table td{padding:8px 12px;text-align:right;border-bottom:1px solid var(--rule2);white-space:nowrap}.sc-table th:first-child,.sc-table td:first-child{text-align:left}.sc-table th{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}.sc-table td.num{font-variant-numeric:tabular-nums;color:var(--dim)}.sc-table tr.win td{color:var(--ink)}.sc-table tr.win td:first-child{color:var(--accent);font-weight:600}.sc-note{font-size:12px!important}.sc-table caption{text-align:left;padding:10px 12px 4px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}
studio/assets/main-DOUNaj7B.css DELETED
@@ -1 +0,0 @@
1
- @font-face{font-family:Inter Studio;src:url(../fonts/inter-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Studio;src:url(../fonts/playfair-latin.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:root[data-theme=dark]{color-scheme:dark;--void: #0c0a09;--stage: #141210;--paper: #1a1816;--card: #211f1c;--surface: #2a2724;--highlight: #35322e;--ink: #faf8f5;--dim: rgba(250, 248, 245, .75);--faint: rgba(250, 248, 245, .55);--muted: rgba(250, 248, 245, .4);--rule: rgba(250, 248, 245, .08);--rule2: #2a2724;--accent: #c9754a;--accent-text: #d4896a;--accent-hover: #d4896a;--accent-ink: #1a1816;--accent-soft: rgba(201, 117, 74, .12);--accent-subtle: rgba(201, 117, 74, .08);--gold: #b8976c;--gold-soft: rgba(184, 151, 108, .15);--good: #34d399;--goodbg: rgba(52, 211, 153, .15);--bad: #f87171;--badbg: rgba(248, 113, 113, .15);--anchor: #f87171;--handle: #b8976c;--wire: #faf8f5;--vt: #9a938c;--checker-a: #191715;--checker-b: #141210;--focus: rgba(201, 117, 74, .35);--focus-line: #c9754a;--state-draft: #b8976c;--state-final: #34d399;--state-stale: #c9754a;--shadow-sm: 0 4px 12px -2px rgba(12, 10, 9, .4);--shadow: 0 8px 24px -4px rgba(12, 10, 9, .5);--shadow-lg: 0 20px 50px -12px rgba(12, 10, 9, .6);--shadow-xl: 0 30px 70px -20px rgba(12, 10, 9, .7);--glow: 0 6px 20px rgba(201, 117, 74, .25)}:root[data-theme=light]{color-scheme:light;--void: #e6e1d9;--stage: #f0ece6;--paper: #faf8f5;--card: #ffffff;--surface: #eae5dd;--highlight: #ded8ce;--ink: #1a1816;--dim: rgba(26, 24, 22, .75);--faint: rgba(26, 24, 22, .58);--muted: rgba(26, 24, 22, .46);--rule: rgba(26, 24, 22, .1);--rule2: #d8d2c8;--accent: #c9754a;--accent-text: #9c5730;--accent-hover: #b3603a;--accent-ink: #faf8f5;--accent-soft: rgba(201, 117, 74, .14);--accent-subtle: rgba(201, 117, 74, .08);--gold: #8a6a3f;--gold-soft: rgba(138, 106, 63, .14);--good: #1c7a55;--goodbg: rgba(28, 122, 85, .14);--bad: #b83232;--badbg: rgba(184, 50, 50, .13);--anchor: #b83232;--handle: #8a6a3f;--wire: #1a1816;--vt: #6f6862;--checker-a: #ffffff;--checker-b: #e8e3db;--focus: rgba(201, 117, 74, .45);--focus-line: #9c5730;--state-draft: #8a6a3f;--state-final: #1c7a55;--state-stale: #9c5730;--shadow-sm: 0 4px 12px -2px rgba(90, 76, 60, .12);--shadow: 0 8px 24px -4px rgba(90, 76, 60, .16);--shadow-lg: 0 20px 50px -12px rgba(90, 76, 60, .2);--shadow-xl: 0 30px 70px -20px rgba(90, 76, 60, .24);--glow: 0 6px 20px rgba(201, 117, 74, .28)}:root{--font-display: "Playfair Studio", "Playfair Display", Georgia, serif;--font-body: "Inter Studio", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--h-compact: 28px;--h-control: 32px;--h-pill: 36px;--h-appbar: 46px;--h-status: 26px;--h-row: 30px;--t-chrome: 12.5px;--t-panel: 13px;--t-label: 11.5px;--t-eyebrow: 10px;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--rail-pad: 14px;--rail-w: 352px;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--d-micro: .15s;--d-fast: .2s;--d-normal: .4s}@media(prefers-reduced-motion:reduce){:root{--d-micro: 0ms;--d-fast: 0ms;--d-normal: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{background:var(--paper);color:var(--ink);font:400 var(--t-panel) / 1.5 var(--font-body);-webkit-font-smoothing:antialiased;user-select:none;cursor:default}#app{height:100%;display:flex;flex-direction:column}:focus{outline:none}:focus-visible{outline:2px solid var(--focus-line);outline-offset:2px;border-radius:var(--radius-sm)}a{color:var(--accent-text);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}.num{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.serif{font-family:var(--font-display);letter-spacing:-.03em}.eyebrow{font-size:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.dim{color:var(--dim)}.faint{color:var(--faint)}.muted{color:var(--muted)}.sep{width:1px;height:18px;background:var(--rule2);flex:none}.spacer{flex:1}kbd{font:500 10.5px var(--font-mono);border:1px solid var(--highlight);border-radius:4px;padding:1px 5px;color:var(--faint)}.btn{height:var(--h-control);padding:0 16px;border-radius:var(--radius-full);border:1px solid var(--rule2);background:transparent;color:var(--dim);font-weight:500;font-size:var(--t-chrome);display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;transition:transform var(--d-micro) var(--ease-smooth),background var(--d-micro),border-color var(--d-micro),box-shadow var(--d-micro)}.btn:hover:not(:disabled){border-color:var(--highlight);color:var(--ink)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{height:var(--h-pill);border-color:var(--accent);background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:var(--t-panel);box-shadow:var(--glow)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink);transform:translateY(-2px)}.btn.ghost{border-color:transparent}.btn.ghost:hover:not(:disabled){background:var(--surface)}.btn.compact{height:var(--h-compact);padding:0 11px;border-radius:var(--radius);font-size:var(--t-chrome)}.btn.icon{width:var(--h-control);padding:0}.btn.icon.compact{width:var(--h-compact)}.btn.danger{color:var(--bad)}.seg{display:inline-flex;gap:2px;padding:2px;background:var(--card);border:1px solid var(--rule2);border-radius:7px}.seg>button{font-size:var(--t-label);padding:4px 11px;border-radius:5px;color:var(--faint);white-space:nowrap;transition:background var(--d-micro),color var(--d-micro)}.seg>button:hover{color:var(--dim)}.seg>button[aria-pressed=true]{background:var(--highlight);color:var(--ink);font-weight:500}.seg>button:disabled{color:var(--muted);cursor:default}.toggle{font-size:var(--t-label);padding:3px 9px;border-radius:var(--radius-sm);border:1px solid transparent;color:var(--faint)}.toggle:hover{color:var(--dim)}.toggle[aria-pressed=true]{border-color:var(--highlight);background:var(--rule2);color:var(--ink)}.switch{width:32px;height:18px;flex:none;border-radius:var(--radius-full);background:var(--highlight);position:relative;transition:background var(--d-micro)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--faint);transition:transform var(--d-micro) var(--ease-smooth),background var(--d-micro)}.switch[aria-checked=true]{background:var(--accent)}.switch[aria-checked=true]:after{transform:translate(14px);background:var(--accent-ink)}.checkbox{width:15px;height:15px;flex:none;border-radius:4px;border:1px solid var(--highlight);display:grid;place-items:center;color:var(--accent-ink)}.checkbox[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.checkbox:not([aria-checked=true])>svg{visibility:hidden}.appbar{height:var(--h-appbar);flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--stage);border-bottom:1px solid var(--rule2);-webkit-app-region:drag}.appbar button,.appbar .seg,.appbar .filechip,.appbar .nodrag{-webkit-app-region:no-drag}.brand{display:flex;align-items:center;gap:8px;font-size:var(--t-chrome);font-weight:600;letter-spacing:-.01em;padding-right:4px}.brand>svg{color:var(--accent)}.filechip{display:flex;align-items:center;gap:8px;height:var(--h-compact);padding:0 10px;background:var(--card);border:1px solid var(--rule2);border-radius:var(--radius-sm);font-size:var(--t-chrome);max-width:340px}.filechip .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wincontrols{display:flex;gap:2px;margin-left:4px}.wincontrols button{width:30px;height:26px;display:grid;place-items:center;border-radius:var(--radius-sm);color:var(--faint)}.wincontrols button:hover{background:var(--surface);color:var(--ink)}.wincontrols button.close:hover{background:var(--bad);color:#fff}.wincontrols i{display:block;background:currentColor}.wincontrols .min i{width:10px;height:1px}.wincontrols .max i{width:9px;height:9px;background:none;border:1px solid currentColor;border-radius:2px}.body{flex:1;min-height:0;display:flex}.stage{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--stage);position:relative}.viewertools{min-height:38px;flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:5px 12px;border-bottom:1px solid var(--rule2);background:color-mix(in srgb,var(--stage) 92%,transparent)}.legend{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--faint)}.legend span{display:flex;align-items:center;gap:5px}.legend i{display:block}.legend .anchor{width:7px;height:7px;border-radius:50%;background:var(--anchor)}.legend .handle{width:7px;height:7px;background:var(--handle);transform:rotate(45deg)}.legend .band{width:12px;height:6px;border-radius:2px}.legend .band.sure,.overlay .certainty .sure{--band: #30a46c}.legend .band.soft,.overlay .certainty .soft{--band: #f5a524}.legend .band.unsure,.overlay .certainty .unsure{--band: #e5484d}.legend .band{background:var(--band)}.overlay .certainty path{fill:var(--band);fill-rule:evenodd;fill-opacity:.45;stroke:var(--band);stroke-width:1;vector-effect:non-scaling-stroke}.legend .wire{width:12px;height:2px;background:var(--wire)}.panes{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.pane{flex:1;min-width:0;position:relative;overflow:hidden;display:grid;place-items:center;background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:16px 16px;cursor:grab;touch-action:none}.pane:active{cursor:grabbing}.pane.hidden{display:none}.panes.stacked .pane{position:absolute;inset:0}.panelabel{position:absolute;top:10px;left:12px;z-index:3;pointer-events:none}.chip{position:absolute;top:8px;right:12px;z-index:3;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--radius-full);font-size:var(--t-label);border:1px solid;pointer-events:none}.chip i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}.chip.draft{color:var(--state-draft);border-color:color-mix(in srgb,var(--state-draft) 45%,transparent);background:color-mix(in srgb,var(--state-draft) 15%,transparent)}.chip.final{color:var(--state-final);border-color:color-mix(in srgb,var(--state-final) 40%,transparent);background:color-mix(in srgb,var(--state-final) 15%,transparent)}.chip.stale{color:var(--state-stale);border-color:color-mix(in srgb,var(--state-stale) 45%,transparent);background:color-mix(in srgb,var(--state-stale) 15%,transparent)}.chip.swapped:after{content:"";position:absolute;left:10px;right:10px;bottom:-3px;height:1.5px;background:var(--accent);border-radius:1px;transform-origin:left;animation:sweep var(--d-normal) var(--ease-out-expo)}@keyframes sweep{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.art{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;pointer-events:none}.art img{display:block;image-rendering:pixelated}.art svg{display:block;overflow:visible}.art.swapping{animation:crossfade var(--d-normal) var(--ease-out-expo)}@keyframes crossfade{0%{opacity:.25}to{opacity:1}}.art.centred{position:static;place-self:stretch;min-width:0;min-height:0;padding:44px 32px 32px}.panes.onlight{--stage: #f3f0ea;--checker-a: #ffffff;--checker-b: #ebe7df}.panes.ondark{--stage: #1a1816;--checker-a: #26231f;--checker-b: #211f1c}.overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}.overlay .wireframe path{fill:none;stroke:var(--wire);stroke-width:1px;vector-effect:non-scaling-stroke}.overlay .handles path{fill:none;stroke:var(--handle);vector-effect:non-scaling-stroke}.overlay .handles .lines{stroke-width:.8px}.overlay .handles .knobs{stroke-width:2.4px;stroke-linecap:square}.pane>canvas.anchors{position:absolute;left:0;top:0;pointer-events:none}.wipehandle{position:absolute;top:0;bottom:0;width:2px;background:var(--ink);z-index:4;cursor:ew-resize;opacity:.7}.wipehandle:after{content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:2px solid var(--ink);background:var(--stage)}.detailpane{position:absolute;inset:0;z-index:5;background:var(--stage);display:flex;flex-direction:column}.detailhead{flex:none;display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--rule2);font-size:var(--t-label);color:var(--dim)}.detailbody{flex:1;min-height:0;position:relative;overflow:hidden;display:grid;place-items:center}.detailfoot{flex:none;padding:8px 12px;border-top:1px solid var(--rule2);font-size:var(--t-label);color:var(--faint)}.pixelgrid{position:absolute;inset:0;background-image:linear-gradient(to right,rgba(250,248,245,.07) 1px,transparent 1px),linear-gradient(to bottom,rgba(250,248,245,.07) 1px,transparent 1px);pointer-events:none}:root[data-theme=light] .pixelgrid{background-image:linear-gradient(to right,rgba(26,24,22,.1) 1px,transparent 1px),linear-gradient(to bottom,rgba(26,24,22,.1) 1px,transparent 1px)}.stagestate{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;padding:32px;text-align:center;background:var(--stage)}.stagestate .title{font-size:16px;font-weight:500}.stagestate .body{display:block;font-size:var(--t-chrome);line-height:1.6;color:var(--faint);max-width:46ch}.stagestate .action{font-size:var(--t-chrome);color:var(--accent-text);margin-top:2px}.statusstrip{height:var(--h-status);flex:none;display:flex;align-items:center;gap:10px;padding:0 12px;border-top:1px solid var(--rule2);background:var(--stage);font-size:var(--t-label);color:var(--faint);font-variant-numeric:tabular-nums}.statusstrip .lead{color:var(--dim)}.statusstrip .privacy{margin-left:auto}.statusstrip .updatechip{display:inline-flex;align-items:center;gap:6px;color:var(--gold)}.statusstrip .updatechip i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}.statusstrip .fetchchip{display:inline-flex;align-items:center;gap:8px;margin-left:12px;color:var(--faint);white-space:nowrap}.statusstrip .fetchchip.bad{color:var(--bad)}.fetchbar{width:64px;flex:none}.fetchnote{display:flex;flex-direction:column;gap:6px;font-size:11.5px;line-height:1.45;color:var(--faint)}.fetchnote .fetchbar{width:100%}.fetchnote .fetchline{color:var(--dim);font-variant-numeric:tabular-nums}.rail{width:var(--rail-w);flex:none;border-left:1px solid var(--rule2);background:var(--paper);display:flex;flex-direction:column;position:relative}.railscroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:var(--rail-pad);display:flex;flex-direction:column;gap:var(--rail-pad)}.railscroll::-webkit-scrollbar{width:10px}.railscroll::-webkit-scrollbar-thumb{background:var(--rule2);border-radius:5px;border:3px solid var(--paper)}.railscroll::-webkit-scrollbar-thumb:hover{background:var(--highlight)}.card{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);padding:13px;display:flex;flex-direction:column;gap:10px}.cardhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.railfoot{flex:none;border-top:1px solid var(--rule2);background:var(--stage);padding:12px var(--rail-pad);display:flex;flex-direction:column;gap:8px}.railfoot .row{display:flex;gap:8px}.railfoot .note{display:flex;justify-content:space-between;font-size:var(--t-label);color:var(--muted)}.presets{display:flex;flex-wrap:wrap;gap:5px}.preset{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;border:1px solid var(--rule2);background:var(--card);font-size:var(--t-chrome);color:var(--dim);transition:border-color var(--d-micro),background var(--d-micro),color var(--d-micro)}.preset:hover{border-color:var(--highlight);color:var(--ink)}.preset[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--ink);font-weight:500}.preset.saved{padding-right:22px}.preset{position:relative}.preset .forget{position:absolute;top:50%;margin-top:-8px;right:4px;width:16px;height:16px;border-radius:5px;opacity:0;transition:opacity var(--d-micro),background var(--d-micro)}.preset .forget:before,.preset .forget:after{content:"";position:absolute;left:4px;top:7.5px;width:8px;height:1.5px;border-radius:1px;background:var(--muted)}.preset .forget:before{transform:rotate(45deg)}.preset .forget:after{transform:rotate(-45deg)}.preset:hover .forget,.preset .forget:focus-visible{opacity:1}.preset .forget:hover{background:var(--highlight)}.preset .forget:hover:before,.preset .forget:hover:after{background:var(--bad)}.traybar{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:11px}.railmodes{flex:none;display:grid;grid-template-columns:1.75fr 1fr;gap:8px;padding:10px var(--rail-pad) 0}.mode{min-width:0;display:flex;flex-direction:column;gap:8px;padding:10px 11px 11px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card)}.modehead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-height:16px}.modetitle{font-size:12.5px;font-weight:600;color:var(--ink)}.modestate{font-size:10.5px;color:var(--muted);white-space:nowrap}.seg.big{display:flex;width:100%;padding:3px}.seg.big>button{flex:1;padding:7px 0;font-size:12.5px;text-align:center}.seg.big>button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);font-weight:600}.bigswitch{display:flex;align-items:center;gap:8px;height:34px;padding:0 4px;border:1px solid var(--rule2);border-radius:999px;background:var(--paper);color:var(--dim);font-size:12.5px;font-weight:600;transition:background var(--d-micro),border-color var(--d-micro),color var(--d-micro)}.bigswitch .knob{flex:none;width:24px;height:24px;border-radius:50%;background:var(--highlight);transition:background var(--d-micro)}.bigswitch .state{flex:1;text-align:center;padding-right:4px}.bigswitch[aria-checked=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.bigswitch[aria-checked=true]{flex-direction:row-reverse}.bigswitch[aria-checked=true] .knob{background:var(--accent-ink)}.bigswitch[aria-checked=true] .state{padding-right:0;padding-left:4px}.railtabs{flex:none;background:var(--stage);border-bottom:1px solid var(--rule2)}.railseg{display:flex;width:100%}.railseg>button{position:relative;flex:1;display:flex;align-items:baseline;justify-content:center;gap:8px;height:46px;padding:14px 12px 0;color:var(--muted);transition:color var(--d-micro),background var(--d-micro)}.railseg>button:hover:not([aria-selected=true]){color:var(--dim);background:color-mix(in srgb,var(--ink) 4%,transparent)}.railseg>button[aria-selected=true]{color:var(--ink);background:var(--paper)}.railseg>button:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent;transition:background var(--d-micro)}.railseg>button[aria-selected=true]:after{background:var(--accent)}.railseg .tablabel{font-size:14px;font-weight:600;letter-spacing:-.005em}.railseg .tabnote{font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--faint)}.railseg .tabnote:empty{display:none}.railseg>button[aria-selected=true] .tabnote{color:var(--accent-text)}.tabcaption{margin:0;padding:7px var(--rail-pad) 9px;background:var(--paper);font-size:11.5px;color:var(--muted)}.presetblock{display:flex;flex-direction:column;gap:8px}.presetblock .traybar .faint{min-width:0}.rail section.group{gap:0;border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg)}.rail section.group .grouphead{align-items:center;padding-right:13px}.groupbtn{flex:1;display:flex;align-items:center;gap:7px;padding:11px 9px 11px 13px;color:var(--muted);text-align:left;border-radius:var(--radius-lg)}.groupbtn:hover{color:var(--dim)}.groupbtn .changed{font-size:10.5px;color:var(--accent-text)}.groupbody{display:flex;flex-direction:column;gap:13px;padding:2px 13px 14px}.control.changed .controlhead .label:before{content:"";display:inline-block;width:5px;height:5px;margin-right:6px;border-radius:50%;background:var(--accent);vertical-align:1px}.emptycard p{margin:0;font-size:var(--t-chrome);line-height:1.55;color:var(--dim)}.structure .srow{display:grid;grid-template-columns:1fr auto;column-gap:8px;row-gap:5px;align-items:baseline}.structure .srow .k{font-size:var(--t-chrome);color:var(--dim)}.structure .srow .v{font-size:var(--t-panel);font-variant-numeric:tabular-nums}.structure .srow .v .of{margin-left:6px;font-size:10.5px;color:var(--muted)}.sbar{grid-column:1 / -1;position:relative;height:4px;margin-bottom:4px;border-radius:2px;background:var(--highlight)}.sbar i{position:absolute;inset:0 auto 0 0;border-radius:2px;background:var(--accent);transition:width var(--d-normal) var(--ease-out-expo)}.sbar b{position:absolute;top:-3px;bottom:-3px;width:2px;margin-left:-1px;border-radius:1px;background:var(--dim)}.readout{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;min-height:54px;background:var(--rule2);border:1px solid var(--rule2);border-radius:var(--radius);overflow:hidden}.readout .cell{min-width:0;display:flex;flex-direction:column;gap:1px;padding:6px 10px;background:var(--paper)}.readout .v{font-size:15px;font-weight:500;line-height:1.25}.readout .k{font-size:10px;color:var(--muted)}.delta{font-size:10.5px;font-variant-numeric:tabular-nums;color:var(--muted)}.delta.better{color:var(--good)}.delta.worse{color:var(--gold)}.readout.busy,.readout.idle{display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--paper);font-size:var(--t-chrome)}.readout .stage{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--state-stale)}.pulse{flex:none;width:7px;height:7px;border-radius:50%;background:var(--state-stale);animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}.headline{display:flex;align-items:flex-end;gap:12px}.headline .figure{font-family:var(--font-display);font-size:52px;line-height:.85;letter-spacing:-.03em}.headline .of{display:flex;flex-direction:column;gap:2px;padding-bottom:4px}.meter{position:relative;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--good),var(--gold) 55%,var(--bad))}.meter .threshold{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--dim)}.meter .needle{position:absolute;top:-4px;width:2px;height:14px;background:var(--ink);border-radius:1px;transition:left var(--d-normal) var(--ease-out-expo)}.meterscale{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted)}.stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule2);border:1px solid var(--rule2);border-radius:var(--radius);overflow:hidden;font-variant-numeric:tabular-nums}.stats>div{background:var(--paper);padding:8px 10px;display:flex;flex-direction:column;gap:2px}.stats .k{font-size:10.5px;color:var(--muted)}.stats .v{font-size:var(--t-panel)}.benchmark{display:flex;gap:8px;padding:8px 10px;border:1px dashed var(--highlight);border-radius:var(--radius);background:color-mix(in srgb,var(--ink) 2%,transparent)}.benchmark .label{flex:none;padding-top:1px}.benchmark p{margin:0;font-size:var(--t-label);line-height:1.45;color:var(--faint)}.loss{display:flex;gap:9px;padding-bottom:9px;border-bottom:1px solid var(--rule2)}.loss:last-of-type{border-bottom:none;padding-bottom:0}.loss .glyph{flex:none;padding-top:2px;color:var(--gold)}.loss .text{font-size:var(--t-chrome);line-height:1.45;color:var(--dim)}.loss .meta{font-size:var(--t-label);color:var(--muted);display:flex;gap:6px;flex-wrap:wrap}.loss .why{font-size:var(--t-label);line-height:1.5;color:var(--faint);margin-top:4px;padding-left:9px;border-left:1px solid var(--rule2)}.loss .expand{color:var(--muted)}.loss .expand:hover{color:var(--dim)}.nothinglost{display:flex;gap:9px;align-items:center;font-size:var(--t-chrome);color:var(--faint)}.nothinglost .glyph{color:var(--good);flex:none;display:flex}.ink{display:flex;align-items:center;gap:9px;padding:2px 0;border-radius:var(--radius-sm);width:100%;text-align:left}.ink:hover{background:var(--surface)}.swatch{width:22px;height:22px;flex:none;border-radius:5px;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:8px 8px;position:relative;overflow:hidden}.swatch i{position:absolute;inset:0;display:block}.swatch.snapped{border:2px solid var(--accent)}.ink .hex{font-size:var(--t-chrome);font-variant-numeric:tabular-nums;color:var(--dim);width:72px}.ink .share{font-size:var(--t-label);color:var(--muted);font-variant-numeric:tabular-nums;width:44px}.ink .snap{margin-left:auto;font-size:var(--t-label);color:var(--muted)}.ink .snap.on{color:var(--accent-text)}.ink{gap:6px;touch-action:none}.ink.grouped .hex{color:var(--accent-text)}.inkpick{width:16px;height:16px;flex:none;border-radius:4px;border:1px solid var(--highlight);display:grid;place-items:center;color:var(--accent-ink)}.inkpick[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.inkmain{display:flex;align-items:center;gap:9px;flex:1;min-width:0;text-align:left}.inkmain[aria-disabled=true]{cursor:grab}.swatch.mini{width:16px;height:16px;border-radius:4px}.swatch.mini.ramp{width:26px}.inklist{display:flex;flex-direction:column;gap:1px;border-radius:var(--radius-sm)}.inklist,.cgroup{transition:box-shadow var(--d-fast),background var(--d-fast)}.mergebar{display:flex;align-items:center;gap:10px;font-size:var(--t-label)}.cgroups{display:flex;flex-direction:column;gap:7px}.cgroupshead{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.cgroup{border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);padding:8px;display:flex;flex-direction:column;gap:7px}.cgroup.suggested{border-style:dashed;background:transparent}.cchips{display:flex;flex-wrap:wrap;gap:4px}.cchip{display:inline-flex;align-items:center;border:1px solid var(--highlight);border-radius:999px;background:var(--card);touch-action:none;font-size:var(--t-label);color:var(--dim)}.cchip.target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.cchip.unmatched{border-color:var(--gold);border-style:dashed}.cchipmain{display:inline-flex;align-items:center;gap:5px;padding:2px 4px 2px 3px;border-radius:999px}.cchipmain .swatch.mini{border-radius:999px}.cchipx{display:grid;place-items:center;width:18px;height:18px;margin-right:2px;border-radius:999px;color:var(--muted)}.cchipx:hover{color:var(--ink);background:var(--surface)}.cresult{display:flex;align-items:center;gap:6px;font-size:var(--t-label)}.cresult>span{white-space:nowrap}.cresult .arrow{color:var(--muted)}.cresultchip{display:inline-flex;align-items:center;gap:5px;color:var(--dim)}.cactions{display:flex;align-items:center;gap:6px}.creport{font-size:11px;line-height:1.4;display:inline-flex;align-items:center;gap:5px;min-width:0}.creport.warn{color:var(--gold)}.creport.warn svg{flex:none}.simplifyrow{display:flex;align-items:center;gap:5px;font-size:var(--t-label)}.numberfield.simplify{min-width:0;width:40px;text-align:center}.dragghost{position:fixed;z-index:60;pointer-events:none;filter:drop-shadow(0 2px 6px rgba(0,0,0,.45))}body.dragging-ink,body.dragging-ink *{cursor:grabbing!important}body.dragging-ink [data-drop=list]{box-shadow:0 0 0 1px var(--rule2)}.dropping{box-shadow:0 0 0 2px var(--accent)!important;background:var(--accent-subtle)!important}.control{display:flex;flex-direction:column;gap:5px}.controlhead{display:flex;align-items:baseline;gap:8px}.controlhead .label{flex:1;font-size:var(--t-chrome);color:var(--dim)}.controlhead .unit{font-size:var(--t-label);color:var(--muted)}.numberfield{height:24px;min-width:58px;padding:0 6px;border:1px solid var(--highlight);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;text-align:center}.numberfield:focus-visible{border-color:var(--accent)}.slider{appearance:none;-webkit-appearance:none;width:100%;height:14px;background:none;margin:2px 0 0;cursor:pointer}.slider::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:var(--highlight)}.slider::-webkit-slider-thumb{-webkit-appearance:none;width:11px;height:11px;margin-top:-4px;border-radius:50%;background:var(--ink);border:none}.slider::-moz-range-track{height:3px;border-radius:2px;background:var(--highlight)}.slider::-moz-range-thumb{width:11px;height:11px;border:none;border-radius:50%;background:var(--ink)}.stops{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted);white-space:nowrap}.group{display:flex;flex-direction:column;gap:9px}.grouphead{display:flex;align-items:baseline;justify-content:space-between}.reset{font-size:var(--t-label);color:var(--accent-text)}.reset:disabled{color:var(--muted);cursor:default}.stagelist{display:flex;flex-direction:column;gap:5px;font-variant-numeric:tabular-nums}.stagerow{display:flex;align-items:baseline;gap:8px;font-size:var(--t-label);color:var(--muted)}.stagerow.done{color:var(--dim)}.stagerow .mark{width:10px;text-align:center;color:var(--muted)}.stagerow.done .mark{color:var(--good)}.stagerow .name{flex:1}.sweep{height:2px;background:var(--rule2);border-radius:2px;overflow:hidden}.sweep i{display:block;width:30%;height:100%;background:var(--accent);animation:sweepacross 1.6s var(--ease-out-expo) infinite}@keyframes sweepacross{0%{transform:translate(-100%)}to{transform:translate(340%)}}@media(prefers-reduced-motion:reduce){.sweep i{animation:none;width:100%;opacity:.4}.chip.swapped:after,.art.swapping,.callout,.pulse{animation:none}.dragging .drop{transition:none}}.firstrun{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px;background:var(--stage);padding:24px}.drop{width:min(620px,80%);padding:44px 24px;min-height:220px;justify-content:center;border:1.5px dashed var(--highlight);border-radius:var(--radius-xl);display:flex;flex-direction:column;align-items:center;gap:16px;background:color-mix(in srgb,var(--ink) 1.5%,transparent);text-align:center;transition:border-color var(--d-fast),background var(--d-fast)}.drop .glyph{color:var(--muted)}[hidden]{display:none!important}.drop.solid{background:var(--paper);border-style:solid;border-color:var(--rule2)}.panehint{max-width:34ch;text-align:center;font-size:12.5px;line-height:1.55}.drop .headline{font-family:var(--font-display);font-size:26px;letter-spacing:-.02em;display:block}.drop .release,.dragging .drop .resting{display:none}.dragging .drop .release{display:block}.dragging .drop{width:min(640px,90%);min-height:320px;transition:width var(--d-fast) var(--ease-out-expo),min-height var(--d-fast) var(--ease-out-expo),border-color var(--d-fast),background var(--d-fast)}.samples{display:flex;flex-direction:column;align-items:center;gap:12px}.samplerow{display:flex;gap:12px}.sample{width:112px;display:flex;flex-direction:column;gap:7px;align-items:center}.sample .thumb{width:112px;height:88px;border:1px solid var(--rule2);border-radius:10px;background-color:var(--card);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:12px 12px;display:grid;place-items:center;overflow:hidden;transition:border-color var(--d-micro),transform var(--d-micro)}.sample:hover .thumb{border-color:var(--accent);transform:translateY(-2px)}.sample img{max-width:76px;max-height:68px}.sample .label{font-size:var(--t-label);color:var(--faint)}.dragging .drop{border-color:var(--accent);background:var(--accent-soft)}.dragging .drop .glyph{color:var(--accent)}.dragging:after{content:"";position:fixed;inset:0;border:2px solid var(--accent);pointer-events:none;z-index:60}.dragging .stage>*:not(.stagestate){opacity:.6}.callout{position:absolute;left:20px;bottom:20px;z-index:8;max-width:320px;display:flex;flex-direction:column;gap:5px;padding:10px 13px;border-radius:var(--radius-lg);border:1px solid var(--rule2);background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(8px);font-size:11.5px;line-height:1.5;color:var(--dim);animation:rise var(--d-fast) var(--ease-out-expo)}.callout .head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}#overlays:empty{display:none}.scrim{position:fixed;inset:0;z-index:40;background:color-mix(in srgb,var(--void) 62%,transparent);display:grid;place-items:center;padding:24px}.modal{width:min(460px,100%);max-height:86vh;overflow-y:auto;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-xl);padding:22px;display:flex;flex-direction:column;gap:13px;box-shadow:var(--shadow-xl)}.modal h2{margin:0;font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:-.02em}.modal p{margin:0;font-size:var(--t-panel);line-height:1.7;color:var(--dim)}.modal .actions{display:flex;gap:8px;justify-content:flex-end}.modal.composer{width:min(1040px,100%);max-height:92vh;padding:0;gap:0;overflow:hidden}.composerhead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 22px 15px;border-bottom:1px solid var(--rule2)}.composerhead p{margin-top:3px;font-size:var(--t-chrome)}.composerbody{display:grid;grid-template-columns:minmax(0,1fr) 312px;min-height:0;overflow-y:auto}.composerpreview{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:22px;min-width:0;background:var(--stage)}.cardstage{--ar: 1.7778;position:relative;width:min(100%,calc(58vh * var(--ar)));aspect-ratio:var(--ar);border-radius:var(--radius);overflow:hidden;background:var(--paper);box-shadow:var(--shadow-lg)}.cardstage img{display:block;width:100%;height:100%;object-fit:contain}.cardbusy{position:absolute;inset:0;display:grid;place-items:center;opacity:0;pointer-events:none;background:color-mix(in srgb,var(--paper) 45%,transparent);transition:opacity var(--d-micro)}.cardstage.busy .cardbusy{opacity:1;transition-delay:.26s}.cardspin{width:20px;height:20px;border-radius:50%;border:2px solid var(--highlight);border-top-color:var(--accent);animation:cardspin .8s linear infinite}@keyframes cardspin{to{transform:rotate(360deg)}}.composerside{display:flex;flex-direction:column;gap:18px;padding:20px 22px;border-left:1px solid var(--rule2)}.optgroup{display:flex;flex-direction:column;gap:8px}.cardseg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:2px;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper)}.cardseg button{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 8px;border-radius:calc(var(--radius) - 2px);font-size:var(--t-chrome);color:var(--faint)}.cardseg button small{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.cardseg button:hover:not([aria-checked=true]){color:var(--ink)}.cardseg button[aria-checked=true]{color:var(--ink);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.optlist{display:flex;flex-direction:column;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper)}.optlist>*+*{border-top:1px solid var(--rule2)}.optrow{display:flex;align-items:center;gap:12px;width:100%;padding:9px 11px;text-align:left}.optrow:hover{background:var(--rule2)}.optext{display:flex;flex:1;flex-direction:column;gap:1px;min-width:0}.optlabel{font-size:12.5px;color:var(--ink)}.optnote{font-size:11px;line-height:1.4;color:var(--muted)}.optslider{display:flex;flex-direction:column;gap:4px;padding:9px 11px 8px;transition:opacity var(--d-micro)}.optslider.off{opacity:.4}.optslider.off .slider{cursor:default}.optsliderhead{display:flex;justify-content:space-between;font-size:12px;color:var(--dim)}.composeractions{display:flex;flex-direction:column;gap:8px;margin-top:auto}.composeractions .btn{justify-content:center;gap:7px}@media(max-width:860px){.composerbody{grid-template-columns:minmax(0,1fr)}.composerside{border-left:0;border-top:1px solid var(--rule2)}}.popover{position:fixed;z-index:45;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.menu{padding:6px;min-width:260px}.menu .item{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:var(--radius);width:100%;text-align:left;font-size:var(--t-chrome);color:var(--dim)}.menu .item:hover{background:var(--surface);color:var(--ink)}.menu .item .when{margin-left:auto;font-size:var(--t-label);color:var(--muted)}.menu .rule{height:1px;background:var(--rule2);margin:5px 0}.sheet{position:absolute;inset:0;z-index:20;background:color-mix(in srgb,var(--void) 55%,transparent);display:flex;align-items:flex-end}.sheetbody{width:100%;max-height:100%;overflow-y:auto;background:var(--card);border-top:1px solid var(--highlight);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:14px;display:flex;flex-direction:column;gap:11px;box-shadow:0 -20px 50px color-mix(in srgb,var(--void) 60%,transparent);animation:rise var(--d-fast) var(--ease-out-expo)}@keyframes rise{0%{transform:translateY(12px);opacity:0}}.format{display:flex;align-items:center;gap:9px;padding:7px 9px;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);width:100%;text-align:left;font-size:var(--t-chrome);color:var(--dim)}.format:hover{border-color:var(--highlight)}.format .size{margin-left:auto;font-size:var(--t-label);color:var(--muted);font-variant-numeric:tabular-nums}.tooltip{position:fixed;z-index:70;max-width:300px;background:var(--highlight);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:var(--radius);padding:10px 12px;font-size:var(--t-chrome);line-height:1.6;color:var(--dim);box-shadow:var(--shadow);pointer-events:none}#toasts{position:fixed;left:50%;bottom:40px;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{width:min(460px,90vw);background:var(--highlight);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:10px;padding:11px 13px;display:flex;align-items:center;gap:11px;box-shadow:var(--shadow-lg);animation:risein var(--d-fast) var(--ease-out-expo)}@keyframes risein{0%{transform:translateY(8px);opacity:0}}.toast .text{flex:1;font-size:var(--t-chrome);color:var(--dim)}.toast .glyph{display:flex}.toast .glyph.good{color:var(--good)}.toast .glyph.bad{color:var(--bad)}.screen{position:absolute;inset:0;z-index:30;background:var(--paper);display:flex;flex-direction:column}.screenbar{height:var(--h-appbar);flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--stage);border-bottom:1px solid var(--rule2);-webkit-app-region:drag}.screenbar button{-webkit-app-region:no-drag}.screenbody{flex:1;min-height:0;overflow-y:auto;background:var(--stage)}.settingsgrid{width:min(1128px,100%);margin:0 auto;padding:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px;align-content:start}.settinggroup{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);overflow:hidden;align-self:start}.settinggroup>.head{padding:11px 14px;border-bottom:1px solid var(--rule2)}.settingrow{display:flex;align-items:center;gap:16px;padding:11px 14px;border-bottom:1px solid color-mix(in srgb,var(--ink) 5%,transparent)}.settingrow:last-child{border-bottom:none}.settingrow .about{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.settingrow .label{font-size:var(--t-panel);color:var(--dim)}.settingrow .help{font-size:var(--t-label);line-height:1.5;color:var(--muted)}.settingrow .control{flex:none}.settingrow select,.settingrow input[type=text],.settingrow input[type=number]{height:var(--h-compact);padding:0 8px;border:1px solid var(--rule2);border-radius:7px;background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;max-width:220px}.privacycard{border:1px solid var(--rule2);background:var(--card);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:8px;align-self:start}.privacycard .line{font-family:var(--font-display);font-size:19px;letter-spacing:-.02em}.about{display:flex;min-height:100%}.aboutleft{width:520px;flex:none;background:var(--stage);border-right:1px solid var(--rule2);display:flex;flex-direction:column;justify-content:center;gap:22px;padding:56px}.aboutleft .mark{color:var(--accent)}.aboutright{flex:1;padding:56px;display:flex;flex-direction:column;gap:20px;justify-content:center;background:var(--paper)}.credit{border:1px solid var(--highlight);border-radius:var(--radius-lg);padding:20px;display:flex;flex-direction:column;gap:10px;background:var(--gold-soft)}.notices{border:1px solid var(--rule2);border-radius:var(--radius-lg);overflow:hidden}.notices .head{padding:11px 14px;border-bottom:1px solid var(--rule2);font-size:var(--t-chrome);color:var(--dim);display:flex;justify-content:space-between}.notices pre{margin:0;height:220px;overflow:auto;padding:12px 14px;font:11.5px / 1.75 var(--font-mono);color:var(--muted);background:var(--stage);white-space:pre-wrap;user-select:text}.minifyrail{width:400px;flex:none;border-left:1px solid var(--rule2);background:var(--paper);display:flex;flex-direction:column}.minifyresult{display:flex;flex-direction:column;gap:5px}.minifyresult .figure{font-family:var(--font-display);font-size:66px;line-height:.85;letter-spacing:-.04em;color:var(--accent-text)}.sentence{font-size:var(--t-panel);line-height:2;color:var(--dim)}.sentence .inlinefield{display:inline-flex;align-items:center;height:24px;padding:0 4px;border:1px solid var(--rule2);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);font:400 var(--t-chrome) var(--font-body);font-variant-numeric:tabular-nums;width:58px;text-align:center}.sentence .inlinefield.accent{border-color:var(--accent);background:var(--accent-soft)}.batchbar{height:44px;flex:none;display:flex;align-items:center;gap:8px;padding:0 14px;border-bottom:1px solid var(--rule2);background:var(--stage)}.batchhead,.batchrow{display:grid;grid-template-columns:24px minmax(0,1.4fr) 120px 104px 84px 104px 96px minmax(0,1.2fr);align-items:center;gap:12px;padding:0 14px}.batchhead{height:34px;flex:none;border-bottom:1px solid var(--rule2)}.batchrow{height:var(--h-row);border-bottom:1px solid color-mix(in srgb,var(--ink) 4%,transparent);font-size:var(--t-chrome);font-variant-numeric:tabular-nums}.batchrow.failed{background:color-mix(in srgb,var(--bad) 8%,transparent)}.batchrow.running{background:var(--accent-subtle)}.batchrow .trunc,.batchhead .trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batchrow .right,.batchhead .right{text-align:right}.batchrow .state{display:flex;align-items:center;gap:6px}.batchrow .state i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block;flex:none}.state.queued,.state.skipped{color:var(--muted)}.state.running{color:var(--accent-text)}.state.done{color:var(--good)}.state.failed{color:var(--bad)}.batchviewport{flex:1;min-height:0;overflow-y:auto;position:relative}.batchfoot{height:52px;flex:none;display:flex;align-items:center;gap:18px;padding:0 14px;border-top:1px solid var(--rule2);background:var(--stage);font-size:var(--t-chrome);font-variant-numeric:tabular-nums}.progress{height:3px;border-radius:2px;background:var(--highlight);overflow:hidden}.progress i{display:block;height:100%;background:var(--accent);transition:width var(--d-fast) var(--ease-smooth)}@media(max-width:1400px){:root{--rail-w: 330px}}@media(max-width:1180px){:root{--rail-w: 310px}.legend{display:none}}.chooser{position:absolute;left:50%;bottom:16px;transform:translate(-50%);z-index:8;width:min(560px,calc(100% - 32px));max-height:calc(100% - 70px);overflow-y:auto;display:flex;flex-direction:column;gap:9px;padding:10px 12px 11px;background:var(--card);border:1px solid var(--highlight);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);animation:rise var(--d-fast) var(--ease-out-expo)}.choosehead{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.choosehead .eyebrow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chooseintro{font-size:var(--t-label);line-height:1.5;color:var(--dim);padding:7px 10px;border-radius:var(--radius);background:var(--accent-subtle);border:1px solid var(--accent-soft)}.choices{display:flex;flex-direction:column;gap:6px}.choice{display:grid;grid-template-columns:92px 1fr auto;align-items:center;gap:12px;padding:8px 8px 8px 12px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--paper);min-width:0}.choice .btn{min-width:104px}.choicename{display:flex;align-items:center;gap:7px;font-family:var(--font-display);font-size:17px;letter-spacing:-.02em;color:var(--ink)}.choicename svg{color:var(--accent-text)}.choicebody{font-size:var(--t-chrome);line-height:1.5;color:var(--faint)}.choosenews{display:flex;flex-direction:column;gap:6px;padding-top:9px;border-top:1px solid var(--rule2)}.remember{display:flex;align-items:center;gap:7px;font-size:var(--t-label);color:var(--faint);cursor:pointer;align-self:flex-start}.remember input{accent-color:var(--accent);margin:0}.autochose{display:flex;flex-direction:column;gap:7px;font-size:var(--t-chrome)}.autolead{color:var(--dim);line-height:1.5}.autorow{display:flex;align-items:center;gap:10px;justify-content:space-between}.autorow.moved{padding-top:7px;border-top:1px dashed var(--rule2)}.autotext{display:flex;flex-direction:column;gap:2px;min-width:0}.autotitle{color:var(--ink)}.autotext .muted{font-size:var(--t-label)}.autobtns{display:flex;align-items:center;gap:10px;flex:none}.autorow .btn{flex:none}.autotaken{font-size:var(--t-label);color:var(--state-final);flex:none}.card.autocard{border-color:var(--accent-soft);background:color-mix(in srgb,var(--accent) 4%,var(--card))}.guideline{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:var(--t-label)}.rail.wizarding{width:max(var(--rail-w),400px)}.sheet.wizsheet{align-items:stretch;background:var(--paper)}.sheetbody.wizbody{height:100%;border-radius:0;border-top:none;box-shadow:none;padding:0;gap:0;overflow:hidden;background:var(--paper)}.wizhead{flex:none;display:flex;flex-direction:column;gap:9px;padding:14px 16px 12px;border-bottom:1px solid var(--rule2)}.wiztitle{font-size:24px;font-weight:500;line-height:1.1;color:var(--ink)}.wizdots{display:flex;gap:6px}.wizdots button{flex:1;height:4px;border-radius:2px;background:var(--highlight);transition:background var(--d-micro)}.wizdots button.done{background:color-mix(in srgb,var(--accent) 45%,var(--highlight))}.wizdots button[aria-selected=true]{background:var(--accent)}.wizdots button:hover{background:var(--accent-hover)}.wizcompare{display:flex;align-items:center;gap:8px;font-size:var(--t-label)}.wizcompare .seg>button{padding:3px 9px}.wizscroll{flex:1;min-height:0;overflow-y:auto;padding:14px 16px 18px;display:flex;flex-direction:column;gap:14px}.wizlead{font-size:var(--t-panel);line-height:1.55;color:var(--dim)}.wizguide{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--rule2)}.wizexplain{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;margin:0;font-size:var(--t-chrome);line-height:1.5}.wizexplain dt{font-size:var(--t-eyebrow);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:3px;white-space:nowrap}.wizexplain dd{margin:0;color:var(--dim)}.wizlearn{font-size:var(--t-label);color:var(--accent-text);align-self:flex-start;text-decoration:none}.wizlearn:hover{text-decoration:underline}.wizcontrols{display:flex;flex-direction:column;gap:12px;padding:12px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card)}.wizlive{display:flex;flex-direction:column;gap:12px}.wizrow{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:var(--t-chrome)}.wizsmall{font-size:var(--t-label);line-height:1.5}.wizwhy{font-size:var(--t-chrome);line-height:1.5;color:var(--dim)}.wizchoices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.wizchoice{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 11px;text-align:left;border:1px solid var(--rule2);border-radius:var(--radius);background:var(--paper);font-size:var(--t-label);line-height:1.45}.wizchoice .name{font-size:13px;font-weight:600;color:var(--ink)}.wizchoice:hover{border-color:var(--highlight)}.wizchoice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-subtle)}.wiznote{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 11px;border-radius:var(--radius);background:var(--accent-subtle);font-size:var(--t-label);line-height:1.5;color:var(--dim)}.wiznav{flex:none;display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--rule2);background:var(--paper)}.kinds{display:grid;grid-template-columns:1fr 1fr;gap:9px}.kind{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:7px 7px 9px;text-align:left;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card);min-width:0;transition:border-color var(--d-micro),background var(--d-micro)}.kind:hover{border-color:var(--highlight)}.kind[aria-checked=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--card));box-shadow:0 0 0 1px var(--accent)}.kthumb{position:relative;height:104px;border-radius:var(--radius);background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:10px 10px;display:grid;place-items:center;overflow:hidden;margin-bottom:3px}.kthumb img{max-width:92%;max-height:92%;object-fit:contain;image-rendering:auto}.kspin{position:absolute;inset:auto 0 0;height:2px;overflow:hidden;display:none}.kind.busy .kspin{display:block}.kspin:after{content:"";position:absolute;top:0;bottom:0;left:0;width:30%;background:var(--accent);animation:sweepacross 1.6s var(--ease-out-expo) infinite}@media(prefers-reduced-motion:reduce){.kspin:after{animation:none;width:100%;opacity:.5}}.kname{display:flex;align-items:baseline;justify-content:space-between;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink);padding:0 2px}.ksugg{font-size:9.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-text)}.kwhy,.knote,.kstat{font-size:11px;line-height:1.4;padding:0 2px}.kwhy{color:var(--faint)}.knote{color:var(--muted);font-style:italic}.kstat{color:var(--muted);margin-top:2px}.wizreadout table{width:100%;border-collapse:collapse;font-size:var(--t-chrome)}.wizreadout th,.wizreadout td{padding:4px 0;text-align:right;font-weight:400}.wizreadout thead th{font-size:var(--t-eyebrow);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.wizreadout tbody th{text-align:left;color:var(--faint)}.wizreadout td{color:var(--ink);padding-left:10px}.wizreadout td.delta{width:70px}.wizreadout td.delta.same{color:var(--muted)}.wizchanges .wizchange{display:flex;justify-content:space-between;gap:10px;font-size:var(--t-chrome);color:var(--faint)}.wizchanges .wizchange .num{color:var(--ink)}.pane.source.comparing .panelabel{color:var(--accent-text)}.intro{width:min(620px,80%);display:flex;flex-direction:column;gap:12px;padding:16px 18px;border:1px solid var(--accent-soft);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--accent) 5%,var(--paper))}.intro ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.intro li{display:flex;gap:11px;align-items:baseline;font-size:var(--t-chrome);line-height:1.5}.intro li>div{display:flex;flex-direction:column}.introstep{width:20px;height:20px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:600;background:var(--accent);color:var(--accent-ink)}.introtitle{color:var(--ink);font-weight:500}.introfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:var(--t-label)}html.framed:not(.fullscreen) body{padding-top:6px;background:var(--void)}html.framed:not(.fullscreen) #app{position:relative;border-top:1px solid rgba(201,117,74,.35)}.desktopnote{margin:14px 0 0;font-size:12.5px;text-align:center}.webcontrols{display:flex;gap:2px;margin-left:4px}.webcontrols .btn{gap:6px}.phonenote{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--void) 82%,transparent)}.phonecard{max-width:420px;display:flex;flex-direction:column;gap:12px;padding:22px;border-radius:var(--radius-lg, 12px);background:var(--card);box-shadow:var(--shadow-lg)}.phonecard p{margin:0;font-size:13.5px;line-height:1.65;color:var(--dim)}.sc-loading{padding:40px;text-align:center}.sc-page{width:min(1320px,100%);margin:0 auto;padding:24px;display:flex;flex-direction:column;gap:18px}.sc-head h1{margin:0 0 6px;font-size:28px;font-weight:600}.sc-head p,.sc-results>p{margin:0;max-width:96ch;font-size:13px;line-height:1.6}.sc-main{display:grid;grid-template-columns:300px 1fr;gap:16px;min-height:0;align-items:start}.sc-list{height:560px;overflow-y:auto;overscroll-behavior:contain;padding:0 10px 10px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card);scrollbar-width:thin}.sc-sethead{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;padding:10px 2px 8px;background:var(--card);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--dim)}.sc-sethead span{color:var(--faint);font-weight:600}.sc-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:6px}.sc-case{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:0;overflow:hidden;padding:5px;border:1px solid var(--rule2);border-radius:var(--radius-sm);background:var(--stage);color:var(--dim);cursor:pointer;text-align:left}.sc-case[aria-pressed=true]{border-color:var(--accent);background:var(--accent-subtle);color:var(--accent)}.sc-thumb{aspect-ratio:1;width:100%;border-radius:5px;background:#fff;display:grid;place-items:center;overflow:hidden}.sc-thumb img{width:100%;height:100%;object-fit:contain}.sc-name{width:100%;font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sc-caption{margin:0;font-size:12.5px;color:var(--dim)}.sc-stagecol{display:flex;flex-direction:column;gap:10px;min-width:0}.sc-tools{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}.sc-tools .eyebrow{margin-left:6px}.sc-legend{margin-right:4px;display:inline-flex;align-items:center;gap:6px;font-size:11.5px}.sc-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.sc-dot.a{background:var(--anchor)}.sc-dot.hd{background:var(--handle);margin-left:6px}.sc-viewer{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sc-pane{position:relative;aspect-ratio:1;overflow:hidden;border:1px solid var(--rule2);border-radius:var(--radius-sm);background-color:var(--stage);background-image:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%);background-size:16px 16px;cursor:grab;touch-action:none;user-select:none}.sc-pane:active{cursor:grabbing}.sc-cam{position:absolute;left:0;top:0;width:100%;height:100%;transform-origin:0 0}.sc-cam>img,.sc-layer,.sc-layer>svg{position:absolute;inset:0;width:100%;height:100%;display:block}.sc-cam>img{object-fit:contain}.sc-tag{position:absolute;top:8px;left:8px;padding:4px 7px;border-radius:6px;font-size:11px;font-weight:600;background:color-mix(in srgb,var(--paper) 85%,transparent);color:var(--ink);pointer-events:none}.sc-wire path,.sc-wire circle,.sc-wire ellipse,.sc-wire rect,.sc-wire polygon{fill:none!important;stroke:var(--wire);stroke-width:1px;vector-effect:non-scaling-stroke;stroke-opacity:.9}.sc-ov{pointer-events:none}.sc-ov .h{stroke:var(--handle);stroke-width:1px;vector-effect:non-scaling-stroke;fill:none;stroke-opacity:.85}.sc-ov .hd{stroke:var(--handle);stroke-width:3.5px;vector-effect:non-scaling-stroke;stroke-linecap:round;fill:none}.sc-ov .a{stroke:var(--anchor);stroke-width:5px;vector-effect:non-scaling-stroke;stroke-linecap:round;fill:none}.sc-chips{display:flex;flex-wrap:wrap;gap:6px}.sc-chip{font-size:12px;padding:4px 9px;border-radius:999px;border:1px solid var(--rule2);color:var(--dim);font-variant-numeric:tabular-nums}.sc-chip.win{border-color:transparent;background:var(--goodbg);color:var(--good)}.sc-results{display:flex;flex-direction:column;gap:12px;padding-top:8px;border-top:1px solid var(--rule2)}.sc-results h2{margin:8px 0 0;font-size:22px;font-weight:600}.sc-bignums{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.sc-bignum{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--rule2);border-radius:var(--radius-lg);background:var(--card);font-size:12px}.sc-bignum .v{font-size:28px;color:var(--accent);line-height:1.1}.sc-table{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--card);border:1px solid var(--rule2);border-radius:var(--radius-lg);overflow:hidden}.sc-table th,.sc-table td{padding:8px 12px;text-align:right;border-bottom:1px solid var(--rule2);white-space:nowrap}.sc-table th:first-child,.sc-table td:first-child{text-align:left}.sc-table th{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}.sc-table td.num{font-variant-numeric:tabular-nums;color:var(--dim)}.sc-table tr.win td{color:var(--ink)}.sc-table tr.win td:first-child{color:var(--accent);font-weight:600}.sc-note{font-size:12px!important}.sc-table caption{text-align:left;padding:10px 12px 4px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}
 
 
studio/assets/main-Dn0s9OJH.js DELETED
The diff for this file is too large to render. See raw diff
 
studio/index.html CHANGED
@@ -11,8 +11,8 @@
11
  <meta name="description" content="Turn a raster logo into an exact SVG, in your browser. Nothing is uploaded." />
12
  <link rel="icon" href="./favicon.svg" type="image/svg+xml" />
13
  <title>Inkvec Studio Lite</title>
14
- <script type="module" crossorigin src="./assets/main-Dn0s9OJH.js"></script>
15
- <link rel="stylesheet" crossorigin href="./assets/main-DOUNaj7B.css">
16
  <link rel="preload" href="./fonts/playfair-latin.woff2" as="font" type="font/woff2" crossorigin />
17
  <link rel="preload" href="./fonts/inter-latin.woff2" as="font" type="font/woff2" crossorigin />
18
  <style>
@@ -356,7 +356,7 @@ html.boot-go .boot-progress {
356
  </div>
357
  <footer class="boot-foot">
358
  <span>Runs in your browser. Your image never leaves this computer.</span>
359
- <span>Version 0.2.0 · Apache-2.0 · logolabs.org</span>
360
  </footer>
361
  </div>
362
  <div id="app"></div>
 
11
  <meta name="description" content="Turn a raster logo into an exact SVG, in your browser. Nothing is uploaded." />
12
  <link rel="icon" href="./favicon.svg" type="image/svg+xml" />
13
  <title>Inkvec Studio Lite</title>
14
+ <script type="module" crossorigin src="./assets/main--3-Ll9JM.js"></script>
15
+ <link rel="stylesheet" crossorigin href="./assets/main-C8vHcyec.css">
16
  <link rel="preload" href="./fonts/playfair-latin.woff2" as="font" type="font/woff2" crossorigin />
17
  <link rel="preload" href="./fonts/inter-latin.woff2" as="font" type="font/woff2" crossorigin />
18
  <style>
 
356
  </div>
357
  <footer class="boot-foot">
358
  <span>Runs in your browser. Your image never leaves this computer.</span>
359
+ <span>Version 0.2.1 · Apache-2.0 · logolabs.org</span>
360
  </footer>
361
  </div>
362
  <div id="app"></div>
studio/pkg-threads/inkvec_studio_wasm.js CHANGED
@@ -442,7 +442,7 @@ function __wbg_get_imports(memory) {
442
  const ret = Reflect.get(getObject(arg0), getObject(arg1));
443
  return addHeapObject(ret);
444
  }, arguments); },
445
- __wbg_inkvecDenoiseSync_e3d9896452b57bce: function() { return handleError(function (arg0, arg1, arg2, arg3) {
446
  const ret = globalThis.inkvecDenoiseSync(getArrayF32FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);
447
  return addHeapObject(ret);
448
  }, arguments); },
 
442
  const ret = Reflect.get(getObject(arg0), getObject(arg1));
443
  return addHeapObject(ret);
444
  }, arguments); },
445
+ __wbg_inkvecDenoiseSync_9b982eb59f0480ef: function() { return handleError(function (arg0, arg1, arg2, arg3) {
446
  const ret = globalThis.inkvecDenoiseSync(getArrayF32FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);
447
  return addHeapObject(ret);
448
  }, arguments); },
studio/pkg-threads/inkvec_studio_wasm_bg.wasm CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:85f3c9cc9cda6a5fb18856686d80c5c6b5dbd606925ec3abe1d58633d8341340
3
- size 5366604
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b5de05eb83836d1dd2ba57ecc43cc743b10d0f69d2cdb4ccd7440dc5aefedccf
3
+ size 5733382
studio/pkg-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js CHANGED
@@ -51,7 +51,7 @@ waitForMsgType(self, 'wasm_bindgen_worker_init').then(async ({ init, receiver })
51
  // OTOH, even though it can't be inlined, it should be still reasonably
52
  // cheap since the requested file is already in cache (it was loaded by
53
  // the main thread).
54
- const pkg = await import('../../../inkvec_studio_wasm.js?v=bb166903cf5e');
55
  await pkg.default(init);
56
  postMessage({ type: 'wasm_bindgen_worker_ready' });
57
  pkg.wbg_rayon_start_worker(receiver);
 
51
  // OTOH, even though it can't be inlined, it should be still reasonably
52
  // cheap since the requested file is already in cache (it was loaded by
53
  // the main thread).
54
+ const pkg = await import('../../../inkvec_studio_wasm.js?v=b192891e1025');
55
  await pkg.default(init);
56
  postMessage({ type: 'wasm_bindgen_worker_ready' });
57
  pkg.wbg_rayon_start_worker(receiver);
studio/pkg/inkvec_studio_wasm.js CHANGED
@@ -379,7 +379,7 @@ function __wbg_get_imports() {
379
  const ret = Reflect.get(getObject(arg0), getObject(arg1));
380
  return addHeapObject(ret);
381
  }, arguments); },
382
- __wbg_inkvecDenoiseSync_e3d9896452b57bce: function() { return handleError(function (arg0, arg1, arg2, arg3) {
383
  const ret = globalThis.inkvecDenoiseSync(getArrayF32FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);
384
  return addHeapObject(ret);
385
  }, arguments); },
 
379
  const ret = Reflect.get(getObject(arg0), getObject(arg1));
380
  return addHeapObject(ret);
381
  }, arguments); },
382
+ __wbg_inkvecDenoiseSync_9b982eb59f0480ef: function() { return handleError(function (arg0, arg1, arg2, arg3) {
383
  const ret = globalThis.inkvecDenoiseSync(getArrayF32FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);
384
  return addHeapObject(ret);
385
  }, arguments); },
studio/pkg/inkvec_studio_wasm_bg.wasm CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:73dd59e6e152d9e48d628c025900b5c64ad425c4bb7ac21c084c35fafdca7120
3
- size 5329722
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b9ac51390a9a4e76b2d89f7fff0093c66bb2ecd560ca5ad8267b10a5d6141396
3
+ size 5700735