freecodego 0.1.7-rc.2.2 → 0.1.7-rc.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.i18n.yaml +4 -4
- package/README.md +9 -9
- package/README.zh.md +9 -9
- package/dist/bootstrap.js +358 -71
- package/dist/client.cjs +828 -133
- package/package.json +3 -3
package/dist/client.cjs
CHANGED
|
@@ -4516,6 +4516,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4516
4516
|
array(lazy(() => JsonValueRemoteCodec$schema9())),
|
|
4517
4517
|
record(string(), lazy(() => JsonValueRemoteCodec$schema9())).readonly()
|
|
4518
4518
|
]);
|
|
4519
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountAnnouncements_result$schema$value;
|
|
4520
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountAnnouncements_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountAnnouncements_result$schema$value ??= array(object$1({
|
|
4521
|
+
"id": number().readonly(),
|
|
4522
|
+
"title": string().readonly(),
|
|
4523
|
+
"content": string().readonly(),
|
|
4524
|
+
"notifyMode": union([literal("silent"), literal("popup")]).readonly(),
|
|
4525
|
+
"readAt": string().readonly().optional(),
|
|
4526
|
+
"createdAt": string().readonly()
|
|
4527
|
+
}));
|
|
4519
4528
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountDetail_result$schema$value;
|
|
4520
4529
|
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountDetail_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountDetail_result$schema$value ??= object$1({
|
|
4521
4530
|
"status": union([
|
|
@@ -4608,6 +4617,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4608
4617
|
}).readonly()
|
|
4609
4618
|
})
|
|
4610
4619
|
]);
|
|
4620
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMarkAnnouncementRead_parameter_0$schema$value;
|
|
4621
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMarkAnnouncementRead_parameter_0$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMarkAnnouncementRead_parameter_0$schema$value ??= number();
|
|
4622
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMarkAnnouncementRead_result$schema$value;
|
|
4623
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMarkAnnouncementRead_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMarkAnnouncementRead_result$schema$value ??= boolean();
|
|
4611
4624
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMfaComplete_parameter_0$schema$value;
|
|
4612
4625
|
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMfaComplete_parameter_0$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMfaComplete_parameter_0$schema$value ??= string();
|
|
4613
4626
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMfaComplete_parameter_1$schema$value;
|
|
@@ -12265,6 +12278,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12265
12278
|
const TYPERT_REMOTE = {
|
|
12266
12279
|
package: "@deepseek-ai/dsh-freecodego-harness-plugin",
|
|
12267
12280
|
descriptors: [
|
|
12281
|
+
{
|
|
12282
|
+
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountAnnouncements",
|
|
12283
|
+
service: "freeCodeGoHarness",
|
|
12284
|
+
namespace: "freeCodeGoHarness",
|
|
12285
|
+
method: "accountAnnouncements",
|
|
12286
|
+
implementation: "announcements",
|
|
12287
|
+
invocation: { kind: "direct" },
|
|
12288
|
+
parameters: [],
|
|
12289
|
+
result: {
|
|
12290
|
+
mode: "strict",
|
|
12291
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountAnnouncements:result",
|
|
12292
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountAnnouncements_result$schema
|
|
12293
|
+
},
|
|
12294
|
+
sourceLocation: {
|
|
12295
|
+
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12296
|
+
"line": 6556,
|
|
12297
|
+
"column": 9
|
|
12298
|
+
}
|
|
12299
|
+
},
|
|
12268
12300
|
{
|
|
12269
12301
|
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountDetail",
|
|
12270
12302
|
service: "freeCodeGoHarness",
|
|
@@ -12377,6 +12409,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12377
12409
|
"column": 9
|
|
12378
12410
|
}
|
|
12379
12411
|
},
|
|
12412
|
+
{
|
|
12413
|
+
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountMarkAnnouncementRead",
|
|
12414
|
+
service: "freeCodeGoHarness",
|
|
12415
|
+
namespace: "freeCodeGoHarness",
|
|
12416
|
+
method: "accountMarkAnnouncementRead",
|
|
12417
|
+
implementation: "markAnnouncementRead",
|
|
12418
|
+
invocation: { kind: "direct" },
|
|
12419
|
+
parameters: [{
|
|
12420
|
+
name: "announcementId",
|
|
12421
|
+
wire: "announcementId",
|
|
12422
|
+
source: "json",
|
|
12423
|
+
codec: {
|
|
12424
|
+
mode: "strict",
|
|
12425
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountMarkAnnouncementRead:announcementId",
|
|
12426
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMarkAnnouncementRead_parameter_0$schema
|
|
12427
|
+
}
|
|
12428
|
+
}],
|
|
12429
|
+
result: {
|
|
12430
|
+
mode: "strict",
|
|
12431
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountMarkAnnouncementRead:result",
|
|
12432
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountMarkAnnouncementRead_result$schema
|
|
12433
|
+
},
|
|
12434
|
+
sourceLocation: {
|
|
12435
|
+
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12436
|
+
"line": 6566,
|
|
12437
|
+
"column": 9
|
|
12438
|
+
}
|
|
12439
|
+
},
|
|
12380
12440
|
{
|
|
12381
12441
|
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountMfaComplete",
|
|
12382
12442
|
service: "freeCodeGoHarness",
|
|
@@ -12665,7 +12725,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12665
12725
|
},
|
|
12666
12726
|
sourceLocation: {
|
|
12667
12727
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12668
|
-
"line":
|
|
12728
|
+
"line": 6584,
|
|
12669
12729
|
"column": 9
|
|
12670
12730
|
}
|
|
12671
12731
|
},
|
|
@@ -12693,7 +12753,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12693
12753
|
},
|
|
12694
12754
|
sourceLocation: {
|
|
12695
12755
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12696
|
-
"line":
|
|
12756
|
+
"line": 6576,
|
|
12697
12757
|
"column": 9
|
|
12698
12758
|
}
|
|
12699
12759
|
},
|
|
@@ -12767,7 +12827,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12767
12827
|
},
|
|
12768
12828
|
sourceLocation: {
|
|
12769
12829
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12770
|
-
"line":
|
|
12830
|
+
"line": 7202,
|
|
12771
12831
|
"column": 9
|
|
12772
12832
|
}
|
|
12773
12833
|
},
|
|
@@ -12803,7 +12863,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12803
12863
|
},
|
|
12804
12864
|
sourceLocation: {
|
|
12805
12865
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12806
|
-
"line":
|
|
12866
|
+
"line": 7184,
|
|
12807
12867
|
"column": 9
|
|
12808
12868
|
}
|
|
12809
12869
|
},
|
|
@@ -12831,7 +12891,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12831
12891
|
},
|
|
12832
12892
|
sourceLocation: {
|
|
12833
12893
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12834
|
-
"line":
|
|
12894
|
+
"line": 7226,
|
|
12835
12895
|
"column": 9
|
|
12836
12896
|
}
|
|
12837
12897
|
},
|
|
@@ -12859,7 +12919,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12859
12919
|
},
|
|
12860
12920
|
sourceLocation: {
|
|
12861
12921
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12862
|
-
"line":
|
|
12922
|
+
"line": 7218,
|
|
12863
12923
|
"column": 9
|
|
12864
12924
|
}
|
|
12865
12925
|
},
|
|
@@ -12908,7 +12968,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12908
12968
|
},
|
|
12909
12969
|
sourceLocation: {
|
|
12910
12970
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12911
|
-
"line":
|
|
12971
|
+
"line": 7194,
|
|
12912
12972
|
"column": 9
|
|
12913
12973
|
}
|
|
12914
12974
|
},
|
|
@@ -12935,7 +12995,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12935
12995
|
},
|
|
12936
12996
|
sourceLocation: {
|
|
12937
12997
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12938
|
-
"line":
|
|
12998
|
+
"line": 7210,
|
|
12939
12999
|
"column": 9
|
|
12940
13000
|
}
|
|
12941
13001
|
},
|
|
@@ -12984,7 +13044,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12984
13044
|
},
|
|
12985
13045
|
sourceLocation: {
|
|
12986
13046
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12987
|
-
"line":
|
|
13047
|
+
"line": 7175,
|
|
12988
13048
|
"column": 9
|
|
12989
13049
|
}
|
|
12990
13050
|
},
|
|
@@ -13011,7 +13071,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13011
13071
|
},
|
|
13012
13072
|
sourceLocation: {
|
|
13013
13073
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13014
|
-
"line":
|
|
13074
|
+
"line": 7165,
|
|
13015
13075
|
"column": 9
|
|
13016
13076
|
}
|
|
13017
13077
|
},
|
|
@@ -13038,7 +13098,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13038
13098
|
},
|
|
13039
13099
|
sourceLocation: {
|
|
13040
13100
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13041
|
-
"line":
|
|
13101
|
+
"line": 7157,
|
|
13042
13102
|
"column": 9
|
|
13043
13103
|
}
|
|
13044
13104
|
},
|
|
@@ -13056,7 +13116,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13056
13116
|
},
|
|
13057
13117
|
sourceLocation: {
|
|
13058
13118
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13059
|
-
"line":
|
|
13119
|
+
"line": 7149,
|
|
13060
13120
|
"column": 9
|
|
13061
13121
|
}
|
|
13062
13122
|
},
|
|
@@ -13119,7 +13179,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13119
13179
|
},
|
|
13120
13180
|
sourceLocation: {
|
|
13121
13181
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13122
|
-
"line":
|
|
13182
|
+
"line": 7084,
|
|
13123
13183
|
"column": 9
|
|
13124
13184
|
}
|
|
13125
13185
|
},
|
|
@@ -13137,7 +13197,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13137
13197
|
},
|
|
13138
13198
|
sourceLocation: {
|
|
13139
13199
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13140
|
-
"line":
|
|
13200
|
+
"line": 6597,
|
|
13141
13201
|
"column": 9
|
|
13142
13202
|
}
|
|
13143
13203
|
},
|
|
@@ -13155,7 +13215,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13155
13215
|
},
|
|
13156
13216
|
sourceLocation: {
|
|
13157
13217
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13158
|
-
"line":
|
|
13218
|
+
"line": 7092,
|
|
13159
13219
|
"column": 9
|
|
13160
13220
|
}
|
|
13161
13221
|
},
|
|
@@ -13173,7 +13233,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13173
13233
|
},
|
|
13174
13234
|
sourceLocation: {
|
|
13175
13235
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13176
|
-
"line":
|
|
13236
|
+
"line": 7100,
|
|
13177
13237
|
"column": 9
|
|
13178
13238
|
}
|
|
13179
13239
|
},
|
|
@@ -13200,7 +13260,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13200
13260
|
},
|
|
13201
13261
|
sourceLocation: {
|
|
13202
13262
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13203
|
-
"line":
|
|
13263
|
+
"line": 7110,
|
|
13204
13264
|
"column": 9
|
|
13205
13265
|
}
|
|
13206
13266
|
},
|
|
@@ -13400,7 +13460,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13400
13460
|
},
|
|
13401
13461
|
sourceLocation: {
|
|
13402
13462
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13403
|
-
"line":
|
|
13463
|
+
"line": 7047,
|
|
13404
13464
|
"column": 9
|
|
13405
13465
|
}
|
|
13406
13466
|
},
|
|
@@ -13418,7 +13478,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13418
13478
|
},
|
|
13419
13479
|
sourceLocation: {
|
|
13420
13480
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13421
|
-
"line":
|
|
13481
|
+
"line": 7076,
|
|
13422
13482
|
"column": 9
|
|
13423
13483
|
}
|
|
13424
13484
|
},
|
|
@@ -13445,7 +13505,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13445
13505
|
},
|
|
13446
13506
|
sourceLocation: {
|
|
13447
13507
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13448
|
-
"line":
|
|
13508
|
+
"line": 7037,
|
|
13449
13509
|
"column": 9
|
|
13450
13510
|
}
|
|
13451
13511
|
},
|
|
@@ -13473,7 +13533,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13473
13533
|
},
|
|
13474
13534
|
sourceLocation: {
|
|
13475
13535
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13476
|
-
"line":
|
|
13536
|
+
"line": 7067,
|
|
13477
13537
|
"column": 9
|
|
13478
13538
|
}
|
|
13479
13539
|
},
|
|
@@ -13500,7 +13560,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13500
13560
|
},
|
|
13501
13561
|
sourceLocation: {
|
|
13502
13562
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13503
|
-
"line":
|
|
13563
|
+
"line": 7057,
|
|
13504
13564
|
"column": 9
|
|
13505
13565
|
}
|
|
13506
13566
|
},
|
|
@@ -13518,7 +13578,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13518
13578
|
},
|
|
13519
13579
|
sourceLocation: {
|
|
13520
13580
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13521
|
-
"line":
|
|
13581
|
+
"line": 7027,
|
|
13522
13582
|
"column": 9
|
|
13523
13583
|
}
|
|
13524
13584
|
},
|
|
@@ -13536,7 +13596,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13536
13596
|
},
|
|
13537
13597
|
sourceLocation: {
|
|
13538
13598
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13539
|
-
"line":
|
|
13599
|
+
"line": 7018,
|
|
13540
13600
|
"column": 9
|
|
13541
13601
|
}
|
|
13542
13602
|
},
|
|
@@ -15594,7 +15654,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15594
15654
|
},
|
|
15595
15655
|
sourceLocation: {
|
|
15596
15656
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15597
|
-
"line":
|
|
15657
|
+
"line": 7260,
|
|
15598
15658
|
"column": 9
|
|
15599
15659
|
}
|
|
15600
15660
|
},
|
|
@@ -15644,7 +15704,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15644
15704
|
},
|
|
15645
15705
|
sourceLocation: {
|
|
15646
15706
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15647
|
-
"line":
|
|
15707
|
+
"line": 6628,
|
|
15648
15708
|
"column": 9
|
|
15649
15709
|
}
|
|
15650
15710
|
},
|
|
@@ -15806,7 +15866,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15806
15866
|
},
|
|
15807
15867
|
sourceLocation: {
|
|
15808
15868
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15809
|
-
"line":
|
|
15869
|
+
"line": 6657,
|
|
15810
15870
|
"column": 9
|
|
15811
15871
|
}
|
|
15812
15872
|
},
|
|
@@ -15833,7 +15893,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15833
15893
|
},
|
|
15834
15894
|
sourceLocation: {
|
|
15835
15895
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15836
|
-
"line":
|
|
15896
|
+
"line": 6647,
|
|
15837
15897
|
"column": 9
|
|
15838
15898
|
}
|
|
15839
15899
|
},
|
|
@@ -15860,7 +15920,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15860
15920
|
},
|
|
15861
15921
|
sourceLocation: {
|
|
15862
15922
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15863
|
-
"line":
|
|
15923
|
+
"line": 6667,
|
|
15864
15924
|
"column": 9
|
|
15865
15925
|
}
|
|
15866
15926
|
},
|
|
@@ -15878,7 +15938,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15878
15938
|
},
|
|
15879
15939
|
sourceLocation: {
|
|
15880
15940
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15881
|
-
"line":
|
|
15941
|
+
"line": 6637,
|
|
15882
15942
|
"column": 9
|
|
15883
15943
|
}
|
|
15884
15944
|
},
|
|
@@ -16094,7 +16154,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16094
16154
|
},
|
|
16095
16155
|
sourceLocation: {
|
|
16096
16156
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16097
|
-
"line":
|
|
16157
|
+
"line": 6705,
|
|
16098
16158
|
"column": 9
|
|
16099
16159
|
}
|
|
16100
16160
|
},
|
|
@@ -16112,7 +16172,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16112
16172
|
},
|
|
16113
16173
|
sourceLocation: {
|
|
16114
16174
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16115
|
-
"line":
|
|
16175
|
+
"line": 6695,
|
|
16116
16176
|
"column": 9
|
|
16117
16177
|
}
|
|
16118
16178
|
},
|
|
@@ -16139,7 +16199,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16139
16199
|
},
|
|
16140
16200
|
sourceLocation: {
|
|
16141
16201
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16142
|
-
"line":
|
|
16202
|
+
"line": 7318,
|
|
16143
16203
|
"column": 9
|
|
16144
16204
|
}
|
|
16145
16205
|
},
|
|
@@ -16157,7 +16217,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16157
16217
|
},
|
|
16158
16218
|
sourceLocation: {
|
|
16159
16219
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16160
|
-
"line":
|
|
16220
|
+
"line": 7242,
|
|
16161
16221
|
"column": 9
|
|
16162
16222
|
}
|
|
16163
16223
|
},
|
|
@@ -16217,7 +16277,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16217
16277
|
},
|
|
16218
16278
|
sourceLocation: {
|
|
16219
16279
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16220
|
-
"line":
|
|
16280
|
+
"line": 7289,
|
|
16221
16281
|
"column": 9
|
|
16222
16282
|
}
|
|
16223
16283
|
},
|
|
@@ -16235,7 +16295,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16235
16295
|
},
|
|
16236
16296
|
sourceLocation: {
|
|
16237
16297
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16238
|
-
"line":
|
|
16298
|
+
"line": 7250,
|
|
16239
16299
|
"column": 9
|
|
16240
16300
|
}
|
|
16241
16301
|
},
|
|
@@ -16262,7 +16322,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16262
16322
|
},
|
|
16263
16323
|
sourceLocation: {
|
|
16264
16324
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16265
|
-
"line":
|
|
16325
|
+
"line": 7298,
|
|
16266
16326
|
"column": 9
|
|
16267
16327
|
}
|
|
16268
16328
|
},
|
|
@@ -16280,7 +16340,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16280
16340
|
},
|
|
16281
16341
|
sourceLocation: {
|
|
16282
16342
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16283
|
-
"line":
|
|
16343
|
+
"line": 7277,
|
|
16284
16344
|
"column": 9
|
|
16285
16345
|
}
|
|
16286
16346
|
},
|
|
@@ -16298,7 +16358,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16298
16358
|
},
|
|
16299
16359
|
sourceLocation: {
|
|
16300
16360
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16301
|
-
"line":
|
|
16361
|
+
"line": 7233,
|
|
16302
16362
|
"column": 9
|
|
16303
16363
|
}
|
|
16304
16364
|
},
|
|
@@ -16325,7 +16385,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16325
16385
|
},
|
|
16326
16386
|
sourceLocation: {
|
|
16327
16387
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16328
|
-
"line":
|
|
16388
|
+
"line": 7338,
|
|
16329
16389
|
"column": 9
|
|
16330
16390
|
}
|
|
16331
16391
|
},
|
|
@@ -16352,7 +16412,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16352
16412
|
},
|
|
16353
16413
|
sourceLocation: {
|
|
16354
16414
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16355
|
-
"line":
|
|
16415
|
+
"line": 7328,
|
|
16356
16416
|
"column": 9
|
|
16357
16417
|
}
|
|
16358
16418
|
},
|
|
@@ -16379,7 +16439,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16379
16439
|
},
|
|
16380
16440
|
sourceLocation: {
|
|
16381
16441
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16382
|
-
"line":
|
|
16442
|
+
"line": 7353,
|
|
16383
16443
|
"column": 9
|
|
16384
16444
|
}
|
|
16385
16445
|
},
|
|
@@ -16406,7 +16466,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16406
16466
|
},
|
|
16407
16467
|
sourceLocation: {
|
|
16408
16468
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16409
|
-
"line":
|
|
16469
|
+
"line": 7308,
|
|
16410
16470
|
"column": 9
|
|
16411
16471
|
}
|
|
16412
16472
|
},
|
|
@@ -16650,7 +16710,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16650
16710
|
},
|
|
16651
16711
|
sourceLocation: {
|
|
16652
16712
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16653
|
-
"line":
|
|
16713
|
+
"line": 6908,
|
|
16654
16714
|
"column": 9
|
|
16655
16715
|
}
|
|
16656
16716
|
},
|
|
@@ -16668,7 +16728,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16668
16728
|
},
|
|
16669
16729
|
sourceLocation: {
|
|
16670
16730
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16671
|
-
"line":
|
|
16731
|
+
"line": 6870,
|
|
16672
16732
|
"column": 9
|
|
16673
16733
|
}
|
|
16674
16734
|
},
|
|
@@ -16695,7 +16755,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16695
16755
|
},
|
|
16696
16756
|
sourceLocation: {
|
|
16697
16757
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16698
|
-
"line":
|
|
16758
|
+
"line": 6861,
|
|
16699
16759
|
"column": 9
|
|
16700
16760
|
}
|
|
16701
16761
|
},
|
|
@@ -16713,7 +16773,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16713
16773
|
},
|
|
16714
16774
|
sourceLocation: {
|
|
16715
16775
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16716
|
-
"line":
|
|
16776
|
+
"line": 6899,
|
|
16717
16777
|
"column": 9
|
|
16718
16778
|
}
|
|
16719
16779
|
},
|
|
@@ -16740,7 +16800,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16740
16800
|
},
|
|
16741
16801
|
sourceLocation: {
|
|
16742
16802
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16743
|
-
"line":
|
|
16803
|
+
"line": 6880,
|
|
16744
16804
|
"column": 9
|
|
16745
16805
|
}
|
|
16746
16806
|
},
|
|
@@ -16767,7 +16827,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16767
16827
|
},
|
|
16768
16828
|
sourceLocation: {
|
|
16769
16829
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16770
|
-
"line":
|
|
16830
|
+
"line": 6890,
|
|
16771
16831
|
"column": 9
|
|
16772
16832
|
}
|
|
16773
16833
|
},
|
|
@@ -16785,7 +16845,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16785
16845
|
},
|
|
16786
16846
|
sourceLocation: {
|
|
16787
16847
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16788
|
-
"line":
|
|
16848
|
+
"line": 6851,
|
|
16789
16849
|
"column": 9
|
|
16790
16850
|
}
|
|
16791
16851
|
},
|
|
@@ -16803,7 +16863,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16803
16863
|
},
|
|
16804
16864
|
sourceLocation: {
|
|
16805
16865
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16806
|
-
"line":
|
|
16866
|
+
"line": 6842,
|
|
16807
16867
|
"column": 9
|
|
16808
16868
|
}
|
|
16809
16869
|
},
|
|
@@ -17055,7 +17115,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17055
17115
|
},
|
|
17056
17116
|
sourceLocation: {
|
|
17057
17117
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17058
|
-
"line":
|
|
17118
|
+
"line": 6686,
|
|
17059
17119
|
"column": 9
|
|
17060
17120
|
}
|
|
17061
17121
|
},
|
|
@@ -17073,7 +17133,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17073
17133
|
},
|
|
17074
17134
|
sourceLocation: {
|
|
17075
17135
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17076
|
-
"line":
|
|
17136
|
+
"line": 6676,
|
|
17077
17137
|
"column": 9
|
|
17078
17138
|
}
|
|
17079
17139
|
},
|
|
@@ -17426,7 +17486,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17426
17486
|
},
|
|
17427
17487
|
sourceLocation: {
|
|
17428
17488
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17429
|
-
"line":
|
|
17489
|
+
"line": 6724,
|
|
17430
17490
|
"column": 9
|
|
17431
17491
|
}
|
|
17432
17492
|
},
|
|
@@ -17444,7 +17504,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17444
17504
|
},
|
|
17445
17505
|
sourceLocation: {
|
|
17446
17506
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17447
|
-
"line":
|
|
17507
|
+
"line": 6714,
|
|
17448
17508
|
"column": 9
|
|
17449
17509
|
}
|
|
17450
17510
|
},
|
|
@@ -17462,7 +17522,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17462
17522
|
},
|
|
17463
17523
|
sourceLocation: {
|
|
17464
17524
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17465
|
-
"line":
|
|
17525
|
+
"line": 6733,
|
|
17466
17526
|
"column": 9
|
|
17467
17527
|
}
|
|
17468
17528
|
},
|
|
@@ -17489,7 +17549,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17489
17549
|
},
|
|
17490
17550
|
sourceLocation: {
|
|
17491
17551
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17492
|
-
"line":
|
|
17552
|
+
"line": 7140,
|
|
17493
17553
|
"column": 9
|
|
17494
17554
|
}
|
|
17495
17555
|
},
|
|
@@ -17516,7 +17576,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17516
17576
|
},
|
|
17517
17577
|
sourceLocation: {
|
|
17518
17578
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17519
|
-
"line":
|
|
17579
|
+
"line": 7130,
|
|
17520
17580
|
"column": 9
|
|
17521
17581
|
}
|
|
17522
17582
|
},
|
|
@@ -17543,7 +17603,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17543
17603
|
},
|
|
17544
17604
|
sourceLocation: {
|
|
17545
17605
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17546
|
-
"line":
|
|
17606
|
+
"line": 7120,
|
|
17547
17607
|
"column": 9
|
|
17548
17608
|
}
|
|
17549
17609
|
},
|
|
@@ -17561,7 +17621,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17561
17621
|
},
|
|
17562
17622
|
sourceLocation: {
|
|
17563
17623
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17564
|
-
"line":
|
|
17624
|
+
"line": 6960,
|
|
17565
17625
|
"column": 9
|
|
17566
17626
|
}
|
|
17567
17627
|
},
|
|
@@ -17579,7 +17639,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17579
17639
|
},
|
|
17580
17640
|
sourceLocation: {
|
|
17581
17641
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17582
|
-
"line":
|
|
17642
|
+
"line": 7007,
|
|
17583
17643
|
"column": 9
|
|
17584
17644
|
}
|
|
17585
17645
|
},
|
|
@@ -17597,7 +17657,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17597
17657
|
},
|
|
17598
17658
|
sourceLocation: {
|
|
17599
17659
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17600
|
-
"line":
|
|
17660
|
+
"line": 6978,
|
|
17601
17661
|
"column": 9
|
|
17602
17662
|
}
|
|
17603
17663
|
},
|
|
@@ -17615,7 +17675,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17615
17675
|
},
|
|
17616
17676
|
sourceLocation: {
|
|
17617
17677
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17618
|
-
"line":
|
|
17678
|
+
"line": 6969,
|
|
17619
17679
|
"column": 9
|
|
17620
17680
|
}
|
|
17621
17681
|
},
|
|
@@ -17633,7 +17693,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17633
17693
|
},
|
|
17634
17694
|
sourceLocation: {
|
|
17635
17695
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17636
|
-
"line":
|
|
17696
|
+
"line": 6941,
|
|
17637
17697
|
"column": 9
|
|
17638
17698
|
}
|
|
17639
17699
|
},
|
|
@@ -17660,7 +17720,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17660
17720
|
},
|
|
17661
17721
|
sourceLocation: {
|
|
17662
17722
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17663
|
-
"line":
|
|
17723
|
+
"line": 6988,
|
|
17664
17724
|
"column": 9
|
|
17665
17725
|
}
|
|
17666
17726
|
},
|
|
@@ -17687,7 +17747,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17687
17747
|
},
|
|
17688
17748
|
sourceLocation: {
|
|
17689
17749
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17690
|
-
"line":
|
|
17750
|
+
"line": 6998,
|
|
17691
17751
|
"column": 9
|
|
17692
17752
|
}
|
|
17693
17753
|
},
|
|
@@ -17715,7 +17775,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17715
17775
|
},
|
|
17716
17776
|
sourceLocation: {
|
|
17717
17777
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17718
|
-
"line":
|
|
17778
|
+
"line": 6931,
|
|
17719
17779
|
"column": 9
|
|
17720
17780
|
}
|
|
17721
17781
|
},
|
|
@@ -17733,7 +17793,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17733
17793
|
},
|
|
17734
17794
|
sourceLocation: {
|
|
17735
17795
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17736
|
-
"line":
|
|
17796
|
+
"line": 6921,
|
|
17737
17797
|
"column": 9
|
|
17738
17798
|
}
|
|
17739
17799
|
},
|
|
@@ -17760,7 +17820,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17760
17820
|
},
|
|
17761
17821
|
sourceLocation: {
|
|
17762
17822
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17763
|
-
"line":
|
|
17823
|
+
"line": 6951,
|
|
17764
17824
|
"column": 9
|
|
17765
17825
|
}
|
|
17766
17826
|
},
|
|
@@ -17869,7 +17929,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17869
17929
|
},
|
|
17870
17930
|
sourceLocation: {
|
|
17871
17931
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17872
|
-
"line":
|
|
17932
|
+
"line": 6616,
|
|
17873
17933
|
"column": 9
|
|
17874
17934
|
}
|
|
17875
17935
|
},
|
|
@@ -17887,7 +17947,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17887
17947
|
},
|
|
17888
17948
|
sourceLocation: {
|
|
17889
17949
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17890
|
-
"line":
|
|
17950
|
+
"line": 6606,
|
|
17891
17951
|
"column": 9
|
|
17892
17952
|
}
|
|
17893
17953
|
},
|
|
@@ -17950,7 +18010,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17950
18010
|
},
|
|
17951
18011
|
sourceLocation: {
|
|
17952
18012
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17953
|
-
"line":
|
|
18013
|
+
"line": 6755,
|
|
17954
18014
|
"column": 9
|
|
17955
18015
|
}
|
|
17956
18016
|
},
|
|
@@ -17968,7 +18028,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17968
18028
|
},
|
|
17969
18029
|
sourceLocation: {
|
|
17970
18030
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17971
|
-
"line":
|
|
18031
|
+
"line": 6792,
|
|
17972
18032
|
"column": 9
|
|
17973
18033
|
}
|
|
17974
18034
|
},
|
|
@@ -17986,7 +18046,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17986
18046
|
},
|
|
17987
18047
|
sourceLocation: {
|
|
17988
18048
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17989
|
-
"line":
|
|
18049
|
+
"line": 6764,
|
|
17990
18050
|
"column": 9
|
|
17991
18051
|
}
|
|
17992
18052
|
},
|
|
@@ -18013,7 +18073,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18013
18073
|
},
|
|
18014
18074
|
sourceLocation: {
|
|
18015
18075
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
18016
|
-
"line":
|
|
18076
|
+
"line": 6783,
|
|
18017
18077
|
"column": 9
|
|
18018
18078
|
}
|
|
18019
18079
|
},
|
|
@@ -18031,7 +18091,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18031
18091
|
},
|
|
18032
18092
|
sourceLocation: {
|
|
18033
18093
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
18034
|
-
"line":
|
|
18094
|
+
"line": 6831,
|
|
18035
18095
|
"column": 9
|
|
18036
18096
|
}
|
|
18037
18097
|
},
|
|
@@ -18058,7 +18118,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18058
18118
|
},
|
|
18059
18119
|
sourceLocation: {
|
|
18060
18120
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
18061
|
-
"line":
|
|
18121
|
+
"line": 6822,
|
|
18062
18122
|
"column": 9
|
|
18063
18123
|
}
|
|
18064
18124
|
},
|
|
@@ -18085,7 +18145,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18085
18145
|
},
|
|
18086
18146
|
sourceLocation: {
|
|
18087
18147
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
18088
|
-
"line":
|
|
18148
|
+
"line": 6802,
|
|
18089
18149
|
"column": 9
|
|
18090
18150
|
}
|
|
18091
18151
|
},
|
|
@@ -18112,7 +18172,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18112
18172
|
},
|
|
18113
18173
|
sourceLocation: {
|
|
18114
18174
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
18115
|
-
"line":
|
|
18175
|
+
"line": 6812,
|
|
18116
18176
|
"column": 9
|
|
18117
18177
|
}
|
|
18118
18178
|
},
|
|
@@ -18130,7 +18190,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18130
18190
|
},
|
|
18131
18191
|
sourceLocation: {
|
|
18132
18192
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
18133
|
-
"line":
|
|
18193
|
+
"line": 6773,
|
|
18134
18194
|
"column": 9
|
|
18135
18195
|
}
|
|
18136
18196
|
},
|
|
@@ -18148,7 +18208,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18148
18208
|
},
|
|
18149
18209
|
sourceLocation: {
|
|
18150
18210
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
18151
|
-
"line":
|
|
18211
|
+
"line": 6746,
|
|
18152
18212
|
"column": 9
|
|
18153
18213
|
}
|
|
18154
18214
|
}
|
|
@@ -18379,13 +18439,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18379
18439
|
}
|
|
18380
18440
|
//#endregion
|
|
18381
18441
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/settings-tab.module.css.mjs
|
|
18382
|
-
const css$7 = ".fnB0BW_root{box-sizing:border-box;width:100%;min-width:0;max-width:100%;color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);overflow:hidden}.fnB0BW_toolbar{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:0 0 12px;display:flex}.fnB0BW_toolbarTitle{min-width:0}.fnB0BW_kicker{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.08em;text-transform:uppercase;font-weight:600;line-height:18px}.fnB0BW_title{font-size:var(--fcg-font-section);margin:1px 0 0;font-weight:600;line-height:24px}.fnB0BW_toolbarAction,.fnB0BW_button{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:32px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);justify-content:center;align-items:center;padding:5px 13px;line-height:18px;text-decoration:none;display:inline-flex}.fnB0BW_toolbarAction:hover,.fnB0BW_button:hover{background:var(--fcg-bg-hover)}.fnB0BW_button:disabled{cursor:not-allowed;opacity:.45}.fnB0BW_button:focus-visible,.fnB0BW_toolbarAction:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_buttonPrimary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-btn-primary-fill) 30%, transparent)}.fnB0BW_buttonPrimary{background:var(--fcg-btn-primary-fill);color:var(--fcg-text-on-brand);border-color:#0000}.fnB0BW_buttonPrimary:hover:not(:disabled){background:var(--fcg-btn-primary-hover);border-color:#0000}.fnB0BW_buttonPrimary:hover{background:var(--fcg-btn-primary-hover)}.fnB0BW_buttonDanger{color:var(--fcg-danger)}.fnB0BW_loading,.fnB0BW_error{color:var(--fcg-text-tertiary);padding:18px 0}.fnB0BW_error{color:var(--fcg-danger)}.fnB0BW_syncNotice{border:1px solid color-mix(in srgb, var(--fcg-brand) 24%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 6%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:10px;margin:14px 0 0;padding:10px 14px;line-height:18px;display:flex}.fnB0BW_syncNoticeOffline{border-color:color-mix(in srgb, var(--fcg-warn-label) 34%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-warn-label) 7%, var(--fcg-bg-layer-1));color:var(--fcg-warn-label)}.fnB0BW_syncDot{border-radius:var(--fcg-radius-full);background:var(--fcg-brand);flex:none;width:7px;height:7px;animation:1.25s ease-in-out infinite fnB0BW_sync-pulse}.fnB0BW_syncNoticeOffline .fnB0BW_syncDot{background:var(--fcg-warn-label);animation:none}@keyframes fnB0BW_sync-pulse{50%{opacity:.38;transform:scale(.8)}}.fnB0BW_sections{gap:0;display:grid}.fnB0BW_pageTabs{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-tip);gap:4px;margin:0 0 14px;padding:3px;display:flex}.fnB0BW_pageTab{min-height:30px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;border-radius:5px;flex:1;padding:5px 10px}.fnB0BW_pageTabActive{background:var(--fcg-bg-layer-2);color:var(--fcg-text-primary);box-shadow:var(--fcg-shadow-1);font-weight:600}.fnB0BW_modelCategoryActions{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;margin-top:8px;display:grid}.fnB0BW_modelCategoryActions .fnB0BW_select{width:100%;min-width:0}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions){align-items:start}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_pageTabs{box-sizing:border-box;grid-column:2;width:100%;margin:0}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_select{grid-area:2/1;width:100%}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_modelCategoryActions{grid-area:2/2;margin-top:0}.fnB0BW_modelCategoryActions .fnB0BW_button{min-height:42px}.fnB0BW_community{min-width:0;padding:4px 0 17px}.fnB0BW_communityHeader{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:flex-start;gap:12px;padding:13px 0 14px;display:flex}.fnB0BW_communityIntro{max-width:520px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:5px 0 0;line-height:18px}.fnB0BW_communityFilterBar{justify-content:space-between;align-items:center;gap:12px;padding:12px 0 2px;display:flex}.fnB0BW_communityFilters{scrollbar-width:none;gap:6px;min-width:0;display:flex;overflow-x:auto}.fnB0BW_communityFilter{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;padding:4px 10px}.fnB0BW_communityFilter:hover{background:var(--fcg-bg-hover)}.fnB0BW_communityFilterActive{border-color:var(--fcg-text-primary);background:var(--fcg-text-primary);color:var(--fcg-bg-layer-2)}.fnB0BW_communityInstalledEntry{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:30px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;flex:none;padding:5px 10px;font-weight:600}.fnB0BW_communityInstalledEntry:hover{background:var(--fcg-bg-hover)}.fnB0BW_communityInstalledEntryActive{border-color:var(--fcg-text-primary);background:var(--fcg-text-primary);color:var(--fcg-bg-layer-2)}.fnB0BW_capabilityCommunity{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);margin-top:12px;padding:14px}.fnB0BW_capabilityCommunityHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_capabilityCommunityGrid{grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:9px;margin-top:11px;display:grid}.fnB0BW_marketplaceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin-top:13px;display:grid}.fnB0BW_capabilityCommunityCard{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:8px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_capabilityCommunityCard strong{font-size:var(--fcg-font-body)}.fnB0BW_capabilityCommunityCard p{min-height:36px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.fnB0BW_capabilityCommunityCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_capabilityCommunityCard .fnB0BW_button{width:100%;margin-top:2px}.fnB0BW_capabilityCommunityTop{justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_capabilityCommunityKind{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.07em;font-weight:700}.fnB0BW_marketplaceIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.fnB0BW_capabilityIcon{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);width:28px;height:28px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);object-fit:cover;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex;overflow:hidden}.fnB0BW_capabilityIconMcp{border-color:color-mix(in srgb, var(--fcg-brand) 35%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-brand) 11%, var(--fcg-bg-layer-1));color:var(--fcg-brand)}.fnB0BW_marketplaceControls{grid-template-columns:minmax(0,1fr) minmax(140px,.4fr);gap:8px;margin-top:12px;display:grid}.fnB0BW_marketplaceLink{appearance:none;cursor:pointer;font:inherit;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0;text-decoration:none}.fnB0BW_marketplaceLink:hover{color:var(--fcg-text-primary);text-decoration:underline}.fnB0BW_marketplacePagination{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:center;align-items:center;gap:10px;margin-top:13px;display:flex}.fnB0BW_communitySearch{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;margin-top:12px;display:grid}.fnB0BW_communityGrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;padding-top:14px;display:grid}.fnB0BW_communityCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;min-width:0;transition:border-color var(--fcg-fast) var(--fcg-ease), transform var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);flex-direction:column;gap:9px;padding:12px;display:flex}.fnB0BW_communityCard:hover,.fnB0BW_communityCard:focus-visible{border-color:var(--fcg-line-strong);box-shadow:var(--fcg-shadow-2);outline:none;transform:translateY(-1px)}.fnB0BW_communityCardTop{align-items:center;gap:8px;min-width:0;display:flex}img.fnB0BW_communityPluginIcon{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);object-fit:cover;flex:none;width:34px;height:34px;display:block;overflow:hidden}.fnB0BW_communityIdentity{gap:1px;min-width:0;display:grid}.fnB0BW_communityIdentity strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body);overflow:hidden}.fnB0BW_communityIdentity small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityCategory{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-left:auto;padding:2px 6px}.fnB0BW_communityDescription{min-height:54px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:18px;display:-webkit-box;overflow:hidden}.fnB0BW_communityFeatures,.fnB0BW_communityFeatureList{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_communityStats{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);gap:10px;display:flex}.fnB0BW_communityState{color:var(--fcg-success);font-size:var(--fcg-font-caption);font-weight:600}.fnB0BW_communityIncompatible{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);min-height:30px;color:var(--fcg-warn-label);font-size:var(--fcg-font-caption);padding:5px 8px;line-height:18px}.fnB0BW_communityInstall{width:100%;margin-top:auto}.fnB0BW_communityProgress{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityRestart{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding:10px 11px;line-height:18px;display:flex}.fnB0BW_communityFootnote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:13px;line-height:18px;display:block}.fnB0BW_communityModalBackdrop{z-index:20;background:#0f172a61;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.fnB0BW_communityModal{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-2);width:min(760px,100%);min-width:0;max-height:min(820px,92vh);box-shadow:var(--fcg-shadow-pop);flex-direction:column;gap:12px;padding:18px;display:flex;overflow:hidden}.fnB0BW_communityModalHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_communityModalTitle{font-size:var(--fcg-font-section);margin:2px 0 0;line-height:25px}.fnB0BW_communityModalOwner{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityModalSummary{color:var(--fcg-text-secondary);font-size:var(--fcg-font-body);margin:0;line-height:20px}.fnB0BW_communityModalHeader img.fnB0BW_communityPluginIcon{width:40px;height:40px;margin-top:8px}.fnB0BW_communityModalStats{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:12px;display:flex}.fnB0BW_communityModalStats a{color:var(--fcg-text-primary)}.fnB0BW_communityReadme{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);min-height:180px;overflow:auto}.fnB0BW_communityReadme pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/19px var(--fcg-font-mono);margin:0;padding:13px}.fnB0BW_communityModalFooter{justify-content:flex-end;gap:8px;display:flex}.fnB0BW_section{border-bottom:1px solid var(--fcg-line-subtle);min-width:0;padding:24px 0}.fnB0BW_section:last-child{border-bottom:0}.fnB0BW_sectionHeader{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.fnB0BW_sectionName{font-size:var(--fcg-font-body-lg);letter-spacing:-.01em;font-weight:650;line-height:20px}.fnB0BW_sectionMeta{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_badge{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 8px;line-height:18px}.fnB0BW_badgeLive{color:var(--fcg-success)}.fnB0BW_badgeDanger{color:var(--fcg-danger)}.fnB0BW_inspectStatus{background:0 0;align-self:start}.fnB0BW_diagnosticsDump{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);max-height:240px;color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);font-size:var(--fcg-font-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0 0;padding:8px 10px;line-height:18px;overflow:auto}.fnB0BW_grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.fnB0BW_routingGrid{grid-template-columns:1fr;gap:8px}.fnB0BW_routingCell{grid-template-columns:minmax(150px,.7fr) minmax(0,1fr);align-items:center;gap:18px;min-height:0;padding:12px 14px;display:grid}.fnB0BW_routingCell.fnB0BW_selectCell{grid-template-rows:none;align-content:normal}.fnB0BW_routingCell .fnB0BW_select{min-height:42px}.fnB0BW_routingCopy{gap:2px;min-width:0;display:grid}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_routingCopy{grid-column:1/-1;grid-template-columns:minmax(150px,.7fr) auto minmax(0,1fr);align-items:center;gap:10px}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_cellHint{margin-top:0}.fnB0BW_infoCell{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);min-width:0;padding:14px}.fnB0BW_cellLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-bottom:4px;display:block}.fnB0BW_cellValue{text-overflow:ellipsis;white-space:nowrap;font-weight:500;display:block;overflow:hidden}.fnB0BW_cellHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block}.fnB0BW_feedbackRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 18px;display:flex}.fnB0BW_feedbackRow>.fnB0BW_routingCopy{flex:220px}.fnB0BW_telegramLink{flex:none;gap:7px;text-decoration:none}.fnB0BW_telegramIcon{flex:none;display:block}.fnB0BW_selectCell{gap:5px;display:grid}.fnB0BW_select,.fnB0BW_input{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);width:100%;min-width:0;color:var(--fcg-text-primary);font:inherit;font-size:var(--fcg-font-body);transition:border-color var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);outline:none;padding:8px 11px}.fnB0BW_select:hover,.fnB0BW_input:hover{border-color:var(--fcg-line-strong)}.fnB0BW_select:focus,.fnB0BW_input:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_accountList{flex-direction:column;gap:8px;display:flex}.fnB0BW_accountManager{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:10px;margin-top:10px;padding:14px;display:grid}.fnB0BW_extensionList{gap:6px;margin-top:14px;display:grid}.fnB0BW_extensionRow{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:11px 12px;display:flex}.fnB0BW_extensionRow span{gap:3px;min-width:0;display:grid}.fnB0BW_extensionRow small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_engineSelect{cursor:pointer;flex:none;width:216px}.fnB0BW_switch{-webkit-appearance:none;appearance:none;border:1px solid var(--fcg-line-strong);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);cursor:pointer;width:36px;height:20px;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease);outline:none;flex:none;margin:0;position:relative}.fnB0BW_switch:before{content:\"\";corner-shape:round;background:var(--fcg-bg-layer-2);width:14px;height:14px;box-shadow:var(--fcg-shadow-1);transition:transform var(--fcg-fast) var(--fcg-ease);border-radius:50%;position:absolute;top:2px;left:2px}.fnB0BW_switch:checked{border-color:var(--fcg-brand);background:var(--fcg-brand)}.fnB0BW_switch:checked:before{transform:translate(16px)}.fnB0BW_switch:hover:not(:disabled){border-color:var(--fcg-brand)}.fnB0BW_switch:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent)}.fnB0BW_switch:disabled{cursor:not-allowed;opacity:.45}.fnB0BW_capabilityForm{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px;padding:14px;display:grid}.fnB0BW_capabilityForm label{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_capabilityFormHead{grid-column:1/-1;justify-content:space-between;align-items:center;gap:10px;display:flex}.fnB0BW_capabilityFull{grid-column:1/-1}.fnB0BW_skillList{gap:8px;margin-top:12px;display:grid}.fnB0BW_capabilityStats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_capabilityStats div{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:2px;padding:12px 14px;display:grid}.fnB0BW_capabilityStats strong{font-size:var(--fcg-font-section);line-height:21px}.fnB0BW_capabilityStats small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_engineeringSection .fnB0BW_capabilityStats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.fnB0BW_manualEntry{border-top:1px solid var(--fcg-line);gap:6px;padding-top:10px;display:grid}.fnB0BW_manualEntry>small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_manualEntry summary{cursor:pointer;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryPanel{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:12px;margin-top:16px;padding:14px;display:grid}.fnB0BW_memoryHeader,.fnB0BW_memoryDetailHeader{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.fnB0BW_memoryHeader>div:first-child,.fnB0BW_memoryDetailHeader>div{gap:3px;min-width:0;display:grid}.fnB0BW_memoryHeader strong,.fnB0BW_memoryDetailHeader strong{font-size:var(--fcg-font-body)}.fnB0BW_memoryHeader small,.fnB0BW_memoryDetailHeader small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_memoryActions,.fnB0BW_memoryRecordActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:6px;display:flex}.fnB0BW_memoryActions .fnB0BW_button,.fnB0BW_memoryRecordActions .fnB0BW_button{min-height:26px;font-size:var(--fcg-font-caption);padding:3px 8px}.fnB0BW_memorySearchRow{align-items:center;gap:7px;display:flex}.fnB0BW_memorySearchRow .fnB0BW_input{flex:auto}.fnB0BW_memorySearchRow .fnB0BW_button{min-height:30px;font-size:var(--fcg-font-caption);flex:none;padding:4px 10px}.fnB0BW_memoryRecall{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:6px;padding:9px 11px;display:grid}.fnB0BW_memoryRecallHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.fnB0BW_memoryRecallHead span{gap:2px;min-width:0;display:grid}.fnB0BW_memoryRecallHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_memoryRecallHead .fnB0BW_button{min-height:24px;font-size:var(--fcg-font-caption);flex:none;padding:2px 8px}.fnB0BW_memoryRecallList{flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_memoryRecallList span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 9px}.fnB0BW_memoryList{gap:7px;max-height:360px;padding-right:3px;display:grid;overflow:auto}.fnB0BW_memoryRecord{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 12px;display:grid}.fnB0BW_memoryRecordSelected{box-shadow:inset 0 0 0 1px var(--fcg-brand)}.fnB0BW_memoryRecordSelect{min-width:0;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:0;display:flex}.fnB0BW_memoryRecordSelect:disabled{cursor:not-allowed;opacity:.6}.fnB0BW_memoryRecordSelect>span{gap:3px;min-width:0;display:grid}.fnB0BW_memoryRecordSelect strong,.fnB0BW_memoryRecordSelect small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_memoryRecordSelect strong{font-size:var(--fcg-font-caption)}.fnB0BW_memoryRecordSelect small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryTrust{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex:none;padding:2px 6px;font-weight:600}.fnB0BW_memoryTrustReviewed{background:color-mix(in srgb, var(--fcg-success) 12%, var(--fcg-bg-layer-2));color:var(--fcg-success)}.fnB0BW_memoryTrustDraft{background:color-mix(in srgb, var(--fcg-warn) 13%, var(--fcg-bg-layer-2));color:var(--fcg-warn-label)}.fnB0BW_memoryDetail{border:1px solid color-mix(in srgb, var(--fcg-text-primary) 18%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:9px;padding:11px;display:grid}.fnB0BW_memoryDetail p{max-height:240px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:19px;overflow:auto}.fnB0BW_memoryTags{flex-wrap:wrap;gap:5px;display:flex}.fnB0BW_memoryTags span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);padding:2px 6px}.fnB0BW_memoryTimeline{border-top:1px solid var(--fcg-line);gap:5px;padding-top:9px;display:grid}.fnB0BW_memoryTimeline strong{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryTimeline button{color:var(--fcg-text-tertiary);cursor:pointer;font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:0;overflow:hidden}.fnB0BW_memoryTimeline button:hover,.fnB0BW_memoryTimelineCurrent{color:var(--fcg-text-primary)!important}.fnB0BW_graphPanel{border:1px solid color-mix(in srgb, var(--fcg-brand) 24%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--fcg-brand) 5%, var(--fcg-bg-layer-2)), var(--fcg-bg-layer-1));gap:10px;margin-top:14px;padding:12px;display:grid}.fnB0BW_graphState{border-left:2px solid var(--fcg-brand);background:var(--fcg-bg-layer-2);gap:3px;padding:10px 11px;display:grid}.fnB0BW_graphState strong{font-size:var(--fcg-font-caption)}.fnB0BW_graphState small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_graphInstallList{gap:8px;display:grid}.fnB0BW_graphInstallRow{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.fnB0BW_graphInstallRow>div{flex:1;gap:4px;min-width:0;display:grid}.fnB0BW_graphInstallRow strong{font-size:var(--fcg-font-caption)}.fnB0BW_graphInstallRow small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_graphInstallRow .fnB0BW_input{margin-top:4px}.fnB0BW_verificationGrid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:7px;display:grid}.fnB0BW_verificationGrid article{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:4px;min-width:0;padding:10px 12px;display:grid}.fnB0BW_verificationGrid strong{font-size:var(--fcg-font-caption);text-transform:uppercase}.fnB0BW_verificationGrid small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_verificationGrid pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:120px;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/19px var(--fcg-font-mono);margin:0;overflow:auto}.fnB0BW_mcpTemplateBar{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:7px;margin-top:12px;display:flex}.fnB0BW_templateButton{border:1px dashed var(--fcg-line-strong);border-radius:var(--fcg-radius-sm);min-height:26px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;align-items:center;gap:4px;padding:3px 8px;display:inline-flex}.fnB0BW_templateButton:hover{border-style:solid;border-color:var(--fcg-text-primary);color:var(--fcg-text-primary)}.fnB0BW_mcpPresetHeading{justify-content:space-between;align-items:baseline;gap:10px;margin-top:14px;display:flex}.fnB0BW_mcpPresetHeading strong{font-size:var(--fcg-font-caption)}.fnB0BW_mcpPresetHeading small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_mcpPresetGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpPresetCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));min-width:0;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;display:grid}.fnB0BW_mcpPresetCard:hover{border-color:var(--fcg-line-strong);box-shadow:var(--fcg-shadow-1);transform:translateY(-1px)}.fnB0BW_mcpPresetCard:disabled{cursor:not-allowed;opacity:.55;transform:none}.fnB0BW_mcpPresetCard>span:not(.fnB0BW_mcpPresetIcon){gap:2px;min-width:0;display:grid}.fnB0BW_mcpPresetCard strong{font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpPresetCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.fnB0BW_mcpPresetCard b{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;font-weight:500}.fnB0BW_mcpPresetIcon,.fnB0BW_mcpServerIcon{border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 12%, var(--fcg-bg-layer-2));width:30px;height:30px;color:var(--fcg-brand);flex:none;place-items:center;display:grid}.fnB0BW_mcpServerIcon{width:32px;height:32px}.fnB0BW_mcpMarketplaceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpMarketplaceCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));grid-template-columns:auto minmax(0,1fr);gap:9px;min-width:0;padding:10px;display:grid}.fnB0BW_mcpMarketplaceIcon{object-fit:cover;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);flex:none;width:30px;height:30px}.fnB0BW_mcpMarketplaceCopy{gap:3px;min-width:0;display:grid}.fnB0BW_mcpMarketplaceCopy>div{justify-content:space-between;align-items:center;gap:6px;display:flex}.fnB0BW_mcpMarketplaceCopy strong,.fnB0BW_mcpMarketplaceCopy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpMarketplaceCopy strong{font-size:var(--fcg-font-caption)}.fnB0BW_mcpMarketplaceCopy span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);flex:none;padding:2px 6px}.fnB0BW_mcpMarketplaceCopy small,.fnB0BW_mcpMarketplaceCopy em{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);font-style:normal;line-height:18px}.fnB0BW_mcpMarketplaceActions{grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_mcpMarketplaceActions a{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-decoration:none}.fnB0BW_mcpMarketplaceActions a:hover{color:var(--fcg-text-primary);text-decoration:underline}.fnB0BW_mcpMarketplaceActions .fnB0BW_button{min-height:27px;font-size:var(--fcg-font-caption);padding:3px 8px}.fnB0BW_mcpJsonPanel{border:1px solid color-mix(in srgb, var(--fcg-brand) 32%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-brand) 4%, var(--fcg-bg-layer-1));gap:9px;margin-top:12px;padding:11px;display:grid}.fnB0BW_mcpJsonPanel .fnB0BW_capabilityFormHead{grid-template-columns:1fr auto;align-items:start;gap:4px 10px;display:grid}.fnB0BW_mcpJsonPanel .fnB0BW_capabilityFormHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);grid-column:1/-1;line-height:18px}.fnB0BW_mcpJsonInput{box-sizing:border-box;resize:vertical;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;min-height:170px;color:var(--fcg-text-primary);font:var(--fcg-font-caption)/18px var(--fcg-font-mono);outline:none;padding:10px}.fnB0BW_mcpJsonInput:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_mcpServerList{gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpServerCard{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:12px 14px;display:flex}.fnB0BW_mcpServerMain{gap:4px;min-width:0;display:grid}.fnB0BW_mcpServerMain>small{color:var(--fcg-text-tertiary);font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpServerTitle{align-items:center;gap:7px;min-width:0;display:flex}.fnB0BW_mcpServerTitle strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body);overflow:hidden}.fnB0BW_mcpServerActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:7px;display:flex}.fnB0BW_inlineSwitch{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:4px;display:inline-flex}.fnB0BW_inlineSwitch input{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_emptyCapability{border:1px dashed var(--fcg-line-strong);border-radius:var(--fcg-radius-md);color:var(--fcg-text-secondary);text-align:center;gap:4px;margin-top:12px;padding:18px 14px;display:grid}.fnB0BW_emptyCapability small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_skillPanel{gap:8px;margin-top:14px;padding-top:1px;display:grid}.fnB0BW_skillPanelHeader{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.fnB0BW_skillPanelHeader small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_skillCard{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);border:1px solid #0000;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.fnB0BW_skillCard:hover{border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.fnB0BW_skillCardBody{min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;flex:1;gap:4px;padding:0;display:grid}.fnB0BW_skillCardBody:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_skillCardControl{flex:none;justify-items:end;gap:2px;padding-top:2px;display:grid}.fnB0BW_skillCardToggle{color:var(--fcg-text-tertiary);cursor:pointer;font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;gap:6px;display:flex}.fnB0BW_skillCardToggle input{margin:0}.fnB0BW_skillCardClear{color:var(--fcg-brand);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0}.fnB0BW_skillCardClear:disabled{opacity:.5;cursor:default}.fnB0BW_skillDetailControl{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:10px;padding:9px 12px;display:flex}.fnB0BW_skillDetailControl>small{flex-basis:100%}.fnB0BW_skillForward{margin-top:12px}.fnB0BW_skillForwardHead{gap:2px;margin-bottom:6px;display:grid}.fnB0BW_skillForwardHead strong{font-size:var(--fcg-font-caption)}.fnB0BW_skillForwardHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_skillCardHead{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_skillCard strong{font-size:var(--fcg-font-caption)}.fnB0BW_skillCard p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.fnB0BW_skillCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_skillFileBar{flex-wrap:wrap;gap:6px;margin:12px 0 0;display:flex}.fnB0BW_skillFileChip{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);max-width:100%;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;padding:4px 9px;overflow:hidden}.fnB0BW_skillFileChip:hover{background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_skillFileChipActive{border-color:var(--fcg-brand);color:var(--fcg-text-primary)}.fnB0BW_skillFileChip:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_workbuddyHeaderActions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.fnB0BW_accountManagerButton{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;padding:4px 9px}.fnB0BW_accountManagerButton:hover{background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_accountRow{justify-content:space-between;align-items:center;gap:14px;min-width:0;display:flex}.fnB0BW_accountIdentity{min-width:0}.fnB0BW_accountIdentityWithAvatar{align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_accountText{min-width:0}.fnB0BW_accountAvatar{border-radius:var(--fcg-radius-md);border:1px solid #0000;flex:none;place-items:center;width:42px;height:42px;display:inline-grid;overflow:hidden;box-shadow:0 2px 8px #0f172a1a}.fnB0BW_accountAvatarRemote{border-color:var(--fcg-line);background:#fff}.fnB0BW_accountAvatarRemote img{object-fit:cover;width:100%;height:100%}.fnB0BW_accountAvatarMonogram{font-size:var(--fcg-font-section);letter-spacing:-.04em;font-weight:800;line-height:1}.fnB0BW_accountAvatarQq{color:#fff;background:linear-gradient(145deg,#38bdf8,#1263bd);border-color:#1688d8}.fnB0BW_accountAvatarGoogle{background:linear-gradient(145deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));color:#4285f4;text-shadow:1px 0 #ea4335,0 1px #34a853,-1px 0 #fbbc05;border-color:#d8dce5}.fnB0BW_accountAvatarGeneric{border-color:var(--fcg-line);background:var(--fcg-bg-layer-1);color:var(--fcg-text-tertiary)}.fnB0BW_accountAvatarGeneric svg{fill:currentColor;width:22px;height:22px}.fnB0BW_accountName{text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:block;overflow:hidden}.fnB0BW_accountEmail{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block;overflow:hidden}.fnB0BW_accountActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;display:flex}.fnB0BW_clineUsage{gap:7px;margin-top:4px;display:grid}.fnB0BW_clineUsageHead{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_clineUsageRow{grid-template-columns:84px minmax(0,1fr) 44px;align-items:center;gap:10px;display:grid}.fnB0BW_clineUsageLabel{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-caption);overflow:hidden}.fnB0BW_clineUsageValue{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;text-align:right}.fnB0BW_clineUsageMeter{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);height:4px;overflow:hidden}.fnB0BW_clineUsageFill{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width .3s}.fnB0BW_clineUsageFillHigh{background:var(--fcg-warn)}.fnB0BW_balance{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-success);font-size:var(--fcg-font-body-lg);font-variant-numeric:tabular-nums;align-items:baseline;gap:7px;padding:5px 11px;font-weight:600;display:inline-flex}.fnB0BW_balanceLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);font-weight:500}.fnB0BW_authForm{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;display:grid}.fnB0BW_authPanel{box-sizing:border-box;border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);width:100%;box-shadow:var(--fcg-shadow-2);gap:16px;padding:26px 24px 22px;display:grid}.fnB0BW_authLayout{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:20px;margin-top:6px;display:grid}.fnB0BW_authHead{text-align:center;justify-items:center;gap:6px;display:grid}.fnB0BW_authTitle{color:var(--fcg-text-primary);letter-spacing:-.01em;font-size:17px;font-weight:650;line-height:24px}.fnB0BW_authSubtitle{max-width:300px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_authTabs{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-tip);grid-template-columns:1fr 1fr;gap:2px;padding:3px;display:grid}.fnB0BW_authTab{min-height:32px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;border-radius:8px}.fnB0BW_authTab:hover{color:var(--fcg-text-primary)}.fnB0BW_authTab:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authTabActive{background:var(--fcg-bg-layer-1);box-shadow:var(--fcg-shadow-1);color:var(--fcg-text-primary);font-weight:600}.fnB0BW_authStack{gap:11px;display:grid}.fnB0BW_authPanel .fnB0BW_input{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-tip);min-height:42px;font-size:var(--fcg-font-body);border-color:#0000;padding:10px 13px}.fnB0BW_authPanel .fnB0BW_input::placeholder{color:var(--fcg-text-tertiary)}.fnB0BW_authPanel .fnB0BW_input:hover:not(:focus){border-color:var(--fcg-line)}.fnB0BW_authPanel .fnB0BW_input:focus{border-color:var(--fcg-brand);background:var(--fcg-bg-layer-1);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill,.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill:hover,.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill:focus{-webkit-text-fill-color:var(--fcg-text-primary);box-shadow:0 0 0 60px var(--fcg-bg-tip) inset}.fnB0BW_authCodeRow{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.fnB0BW_authCodeSend{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);min-height:42px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;white-space:nowrap;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);padding:0 14px}.fnB0BW_authCodeSend:hover:not(:disabled){border-color:var(--fcg-line-strong);background:var(--fcg-bg-hover)}.fnB0BW_authCodeSend:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authCodeSend:disabled{cursor:not-allowed;color:var(--fcg-text-tertiary)}.fnB0BW_authSubmit{border-radius:var(--fcg-radius-md);background:var(--fcg-brand);width:100%;min-height:42px;color:var(--fcg-text-on-brand-fixed);cursor:pointer;font:inherit;font-size:var(--fcg-font-body);letter-spacing:.01em;transition:background var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease), transform var(--fcg-fast) var(--fcg-ease);border:1px solid #0000;font-weight:600}.fnB0BW_authSubmit:hover:not(:disabled){background:var(--fcg-brand-strong)}.fnB0BW_authSubmit:active:not(:disabled){transform:translateY(1px)}.fnB0BW_authSubmit:disabled{cursor:not-allowed;opacity:.5}.fnB0BW_authSubmit:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 30%, transparent);outline:none}.fnB0BW_authNote,.fnB0BW_authStep{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-align:center;line-height:18px}.fnB0BW_authStep{color:var(--fcg-text-secondary)}.fnB0BW_authSocialRow{grid-template-columns:1fr 1fr;gap:9px;display:grid}.fnB0BW_authSocialButton{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);min-height:42px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-body);transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);justify-content:center;align-items:center;gap:8px;font-weight:550;display:inline-flex}.fnB0BW_authSocialButton svg{flex:none;width:16px;height:16px}.fnB0BW_authSocialButton:hover:not(:disabled){border-color:var(--fcg-line-strong);background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_authSocialButton:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authSocialButton:disabled{cursor:progress;opacity:.6}.fnB0BW_authDivider{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:10px;display:flex}.fnB0BW_authDivider:before,.fnB0BW_authDivider:after{background:var(--fcg-line);content:\"\";flex:1;height:1px}.fnB0BW_authNotice{border:1px solid color-mix(in srgb, var(--fcg-brand) 26%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 6%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-align:center;padding:9px 11px;line-height:18px}.fnB0BW_authNoticeAlert{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-align:left;grid-column:1/-1;justify-content:space-between;align-items:flex-start;gap:10px;padding:9px 11px;line-height:19px;display:flex}.fnB0BW_authNoticeAlert button{flex:none}.fnB0BW_authFull{grid-column:1/-1}.fnB0BW_remember{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);align-items:center;gap:8px;display:flex}.fnB0BW_remember input{width:15px;height:15px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_rememberRow{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.fnB0BW_passwordField{min-width:0;display:flex;position:relative}.fnB0BW_authPanel .fnB0BW_passwordField .fnB0BW_input{width:100%;padding-right:64px}.fnB0BW_passwordToggle{border-radius:var(--fcg-radius-sm);color:var(--fcg-text-tertiary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:4px 6px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.fnB0BW_passwordToggle:hover{color:var(--fcg-text-primary)}.fnB0BW_paymentBar{border-bottom:1px solid var(--fcg-line-subtle);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px 16px;margin-bottom:18px;padding-bottom:16px;display:grid}.fnB0BW_paymentBarDetail{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;grid-column:1/-1;line-height:17px}.fnB0BW_paymentPicker{justify-items:end;gap:6px;min-width:0;display:grid}.fnB0BW_paymentHeading{font-size:var(--fcg-font-title);letter-spacing:-.01em;color:var(--fcg-text-primary);margin-bottom:3px;font-weight:600;display:block}.fnB0BW_paymentMethod{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:8px;display:inline-flex}.fnB0BW_paymentMethod>span{white-space:nowrap;flex:none}.fnB0BW_paymentMethod .fnB0BW_select{width:auto;min-width:176px;max-width:100%}.fnB0BW_alert{border:1px solid color-mix(in srgb, var(--fcg-danger) 28%, transparent);border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-danger) 7%, var(--fcg-bg-layer-2));color:var(--fcg-danger);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin-bottom:10px;padding:9px 11px;line-height:18px}.fnB0BW_alert button{color:inherit;font-size:var(--fcg-font-caption);cursor:pointer;white-space:nowrap;background:0 0;border:0;margin-left:10px;padding:0;text-decoration:underline}.fnB0BW_pending{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));gap:8px;margin-bottom:12px;padding:10px 11px;display:grid}.fnB0BW_pendingTitle{font-weight:600}.fnB0BW_pendingHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_pendingRow{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_pendingText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.fnB0BW_plans,.fnB0BW_planShared,.fnB0BW_payDialog{--pixel-ink:color-mix(in srgb, var(--fcg-brand) 58%, var(--fcg-text-primary));--pixel-face:var(--fcg-bg-layer-1);--pixel-recess:color-mix(in srgb, var(--fcg-text-primary) 4%, var(--fcg-bg-layer-1));--pixel-recess-edge:color-mix(in srgb, var(--pixel-ink) 26%, transparent);--pixel-recess-rule:color-mix(in srgb, var(--pixel-ink) 22%, transparent);--pixel-rule:color-mix(in srgb, var(--pixel-ink) 18%, transparent);--pixel-notch:polygon(0 8px, 4px 8px, 4px 4px, 8px 4px, 8px 0, calc(100% - 8px) 0, calc(100% - 8px) 4px, calc(100% - 4px) 4px, calc(100% - 4px) 8px, 100% 8px, 100% calc(100% - 8px), calc(100% - 4px) calc(100% - 8px), calc(100% - 4px) calc(100% - 4px), calc(100% - 8px) calc(100% - 4px), calc(100% - 8px) 100%, 8px 100%, 8px calc(100% - 4px), 4px calc(100% - 4px), 4px calc(100% - 8px), 0 calc(100% - 8px));--pixel-chip:polygon(0 3px, 3px 3px, 3px 0, calc(100% - 3px) 0, calc(100% - 3px) 3px, 100% 3px, 100% calc(100% - 3px), calc(100% - 3px) calc(100% - 3px), calc(100% - 3px) 100%, 3px 100%, 3px calc(100% - 3px), 0 calc(100% - 3px))}.fnB0BW_plans{grid-template-columns:repeat(auto-fit,minmax(236px,1fr));gap:16px;padding:0 6px 6px 0;display:grid}.fnB0BW_planShell{display:flex;position:relative}.fnB0BW_planShell:before{background:var(--pixel-ink);clip-path:var(--pixel-notch);content:\"\";transition:transform var(--fcg-fast) var(--fcg-ease);position:absolute;inset:0;transform:translate(6px,6px)}.fnB0BW_planShell:hover:before{transform:translate(8px,8px)}.fnB0BW_plan{border:2px solid var(--pixel-ink);background:var(--pixel-face);min-width:0;clip-path:var(--pixel-notch);transition:transform var(--fcg-fast) var(--fcg-ease);flex-direction:column;flex:1;gap:11px;padding:16px 16px 14px;display:flex;position:relative}.fnB0BW_plan:hover{transform:translate(-2px,-2px)}.fnB0BW_planTop{border-bottom:2px solid var(--pixel-rule);align-items:center;gap:8px;padding-bottom:9px;display:flex}.fnB0BW_planDot{border:1px solid var(--pixel-ink);background:var(--fcg-brand);width:9px;height:9px;box-shadow:1px 1px 0 0 var(--pixel-ink);flex:none}.fnB0BW_planName{min-width:0;color:var(--fcg-text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body-lg);letter-spacing:-.012em;flex:1;font-weight:800;overflow:hidden}.fnB0BW_planTag{border:1px solid var(--pixel-ink);background:var(--fcg-brand);color:var(--fcg-text-on-brand-fixed);font-family:var(--fcg-font-mono);letter-spacing:.06em;white-space:nowrap;clip-path:var(--pixel-chip);flex:none;padding:2px 8px;font-size:10px;font-weight:700}.fnB0BW_planSave{border:1px solid color-mix(in srgb, var(--fcg-success) 52%, var(--pixel-ink));background:color-mix(in srgb, var(--fcg-success) 13%, transparent);color:var(--fcg-success);letter-spacing:.04em;white-space:nowrap;clip-path:var(--pixel-chip);flex:none;padding:2px 7px;font-size:10px;font-weight:700}.fnB0BW_planFeatured .fnB0BW_planRecess{background:color-mix(in srgb, var(--fcg-brand) 8%, var(--pixel-recess))}.fnB0BW_planShared{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex-wrap:wrap;align-items:center;gap:14px;margin-top:16px;padding:10px 12px;display:flex}.fnB0BW_planShared small{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);letter-spacing:.1em;font-size:10px;font-weight:700}.fnB0BW_planShared span{align-items:center;gap:6px;display:inline-flex}.fnB0BW_planRecess{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);align-items:stretch;padding:10px 12px;display:flex}.fnB0BW_planCreditBlock{flex:auto;gap:3px;min-width:0;display:grid}.fnB0BW_planPriceLabel{color:var(--fcg-brand);letter-spacing:.08em;align-items:center;gap:5px;font-size:10px;font-weight:700;display:flex}.fnB0BW_planRecessCode{font-family:var(--fcg-font-mono);letter-spacing:.14em}.fnB0BW_planPriceRow{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.fnB0BW_planPrice{color:var(--fcg-text-primary);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:26px;font-weight:800;line-height:1}.fnB0BW_planOriginalPrice{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-decoration:line-through}.fnB0BW_planPayBlock{border-left:2px solid var(--pixel-recess-rule);align-content:center;justify-items:end;gap:3px;margin-left:12px;padding-left:12px;display:grid}.fnB0BW_planPayLabel{color:var(--fcg-text-tertiary);font-size:10px;font-weight:600}.fnB0BW_planPayable{color:var(--fcg-brand);font-size:var(--fcg-font-title);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:800}.fnB0BW_features{border-top:2px solid var(--pixel-rule);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:6px;padding-top:10px;line-height:17px;display:grid}.fnB0BW_features>span{grid-template-columns:12px minmax(0,1fr);align-items:start;gap:8px;display:grid}.fnB0BW_planCheck{border:1px solid var(--pixel-ink);background:var(--fcg-brand);width:7px;height:7px;margin-top:5px;display:block}.fnB0BW_planFeatureText{min-width:0}.fnB0BW_planButton{border:2px solid var(--pixel-ink);background:var(--fcg-brand);width:100%;min-height:40px;color:var(--fcg-text-on-brand-fixed);letter-spacing:.04em;box-shadow:inset 0 2px 0 0 #ffffff61, 0 3px 0 0 var(--pixel-ink);transition:background var(--fcg-fast) var(--fcg-ease), box-shadow 60ms linear, transform 60ms linear;border-radius:0;margin-top:auto;font-weight:700}.fnB0BW_planButton:hover:not(:disabled){background:var(--fcg-brand-strong);box-shadow:inset 0 2px 0 0 #ffffff7a, 0 4px 0 0 var(--pixel-ink)}.fnB0BW_planButton:active:not(:disabled){box-shadow:inset 0 1px 0 0 #0000002e, 0 0 0 0 var(--pixel-ink);transform:translateY(3px)}.fnB0BW_planBlurb{gap:3px;display:grid}.fnB0BW_planPerk{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_planLead{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_planFootnote{color:var(--fcg-text-tertiary);align-items:center;gap:6px;font-size:11px;display:flex}.fnB0BW_planDotOk{background:var(--fcg-success);flex:none;width:6px;height:6px}.fnB0BW_planBrandMark{color:var(--fcg-brand);font-family:var(--fcg-font-mono);letter-spacing:.05em;margin-left:auto;font-size:10px;font-weight:700}.fnB0BW_pricingSection{border-top:1px solid var(--fcg-line);gap:10px;margin-top:20px;padding-top:18px;display:grid}.fnB0BW_pricingHeader{justify-content:space-between;align-items:end;gap:14px;display:flex}.fnB0BW_pricingHeader>div{gap:3px;display:grid}.fnB0BW_pricingSearch{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:min(250px,100%);min-height:32px;color:var(--fcg-text-primary);font:inherit;font-size:var(--fcg-font-caption);outline:none;padding:6px 10px}.fnB0BW_pricingSearch:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_pricingNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:8px 10px}.fnB0BW_pricingTableWrap{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);width:100%;overflow:auto hidden}.fnB0BW_pricingTable{table-layout:fixed;border-collapse:collapse;width:100%;min-width:660px;font-size:var(--fcg-font-caption)}.fnB0BW_pricingTable th{border-bottom:1px solid var(--fcg-line-subtle);background:var(--fcg-bg-layer-1);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.02em;text-align:left;white-space:nowrap;padding:10px 14px;font-weight:600}.fnB0BW_pricingTable td{border-bottom:1px solid var(--fcg-line-subtle);color:var(--fcg-text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;padding:10px 12px}.fnB0BW_pricingTable tbody tr:last-child td{border-bottom:0}.fnB0BW_pricingTable tbody tr:hover{background:var(--fcg-bg-hover)}.fnB0BW_pricingFreeSection{border-top:1px dashed var(--fcg-line-subtle);gap:8px;margin-top:6px;padding-top:14px;display:grid}.fnB0BW_pricingFreeHeader{gap:2px;display:grid}.fnB0BW_pricingFreeHeader strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-weight:650}.fnB0BW_paymentMethods{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;margin-top:0;display:flex}.fnB0BW_paymentMethodChip{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.01em;white-space:nowrap;padding:2px 9px;font-weight:550}@media (width<=520px){.fnB0BW_paymentBar{grid-template-columns:minmax(0,1fr)}.fnB0BW_paymentPicker{justify-items:stretch}.fnB0BW_paymentMethod .fnB0BW_select{width:100%}.fnB0BW_paymentMethods{justify-content:flex-start}}.fnB0BW_pricingTable th:first-child,.fnB0BW_pricingTable td:first-child{width:34%}.fnB0BW_pricingTable td:first-child{white-space:normal}.fnB0BW_pricingSection .fnB0BW_pricingTable th:first-child,.fnB0BW_pricingSection .fnB0BW_pricingTable td:first-child{width:26%}.fnB0BW_pricingSection .fnB0BW_pricingTable th:nth-child(2),.fnB0BW_pricingSection .fnB0BW_pricingTable td:nth-child(2){width:22%}.fnB0BW_pricingSection .fnB0BW_pricingTable td.fnB0BW_pricingGroup{white-space:normal}.fnB0BW_pricingTable strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:600;display:block}.fnB0BW_pricingTable code{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;display:block;overflow:hidden}.fnB0BW_pricingTable small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block}.fnB0BW_tokenHero{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:flex-end;gap:16px;margin:-2px 0 14px;padding:10px 0 14px;display:flex}.fnB0BW_tokenEyebrow{color:var(--fcg-brand);font-weight:650;font-size:var(--fcg-font-caption);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:8px;display:flex}.fnB0BW_tokenPulse{corner-shape:round;background:var(--fcg-success);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-success) 18%, transparent);border-radius:50%}.fnB0BW_tokenTitle{font-size:var(--fcg-font-display);letter-spacing:-.03em;margin:3px 0 0;line-height:31px}.fnB0BW_tokenSourceTabs{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:2px;padding:3px;display:inline-flex}.fnB0BW_tokenSourceTabs button{min-height:30px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;border-radius:5px;padding:5px 14px}.fnB0BW_tokenSourceTabs button:hover{background:var(--fcg-bg-hover)}.fnB0BW_tokenSourceTabs .fnB0BW_tokenSourceActive{background:var(--fcg-bg-layer-2);color:var(--fcg-text-primary);box-shadow:var(--fcg-shadow-1);font-weight:600}.fnB0BW_tokenBalRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);align-items:center;gap:10px;margin-top:14px;padding:12px 16px;display:flex}.fnB0BW_tokenBalDot{corner-shape:round;background:var(--fcg-success);width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-success) 18%, transparent);border-radius:50%;flex:none}.fnB0BW_tokenBalDot[data-level=low]{background:var(--fcg-warn);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-warn) 18%, transparent)}.fnB0BW_tokenBalDot[data-level=danger]{background:var(--fcg-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-danger) 18%, transparent)}.fnB0BW_tokenBalAmount{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:20px;font-weight:700}.fnB0BW_tokenBalBadge{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 12%, transparent);color:var(--fcg-success);font-size:var(--fcg-font-caption);white-space:nowrap;padding:2px 9px;line-height:18px}.fnB0BW_tokenBalBadge[data-level=low]{background:color-mix(in srgb, var(--fcg-warn) 13%, transparent);color:var(--fcg-warn-label)}.fnB0BW_tokenBalBadge[data-level=danger]{background:color-mix(in srgb, var(--fcg-danger) 12%, transparent);color:var(--fcg-danger)}.fnB0BW_tokenBalUpdated{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenBalHint{min-width:0;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.fnB0BW_tokenBalRefresh{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:color var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease);background:0 0;margin-left:auto;padding:4px 12px}.fnB0BW_tokenBalRefresh:hover{border-color:var(--fcg-line-strong);color:var(--fcg-text-primary)}.fnB0BW_tokenSessionRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding:10px 16px;display:flex}.fnB0BW_tokenSessionRow strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWaste{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);flex-direction:column;gap:10px;margin-top:10px;padding:14px 16px;display:flex}.fnB0BW_tokenCacheWasteHead{align-items:baseline;gap:8px;display:flex}.fnB0BW_tokenCacheWasteHead strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body)}.fnB0BW_tokenCacheWasteClean{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_tokenCacheWasteStats{flex-wrap:wrap;gap:8px;display:flex}.fnB0BW_tokenCacheWasteStat{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);flex-direction:column;flex:120px;gap:2px;padding:8px 10px;display:flex}.fnB0BW_tokenCacheWasteStat span{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_tokenCacheWasteStat b{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteStat[data-tone=warn] b{color:var(--fcg-warn-label)}.fnB0BW_tokenCacheWasteCauses{flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_tokenCacheWasteCause{border-radius:var(--fcg-radius-full);font-size:var(--fcg-font-caption);background:color-mix(in srgb, var(--fcg-warn) 10%, transparent);color:var(--fcg-text-secondary);padding:2px 9px;line-height:18px}.fnB0BW_tokenCacheWasteCause[data-cause=idle-gap]{background:color-mix(in srgb, var(--fcg-warn) 10%, transparent)}.fnB0BW_tokenCacheWasteCause[data-cause=model-changed]{background:color-mix(in srgb, var(--fcg-danger) 10%, transparent)}.fnB0BW_tokenCacheWasteCause[data-cause=prefix-changed]{background:color-mix(in srgb, var(--fcg-text-tertiary) 12%, transparent)}.fnB0BW_tokenCacheWasteCause b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteWorst{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.fnB0BW_tokenCacheWasteWorst li{font-size:var(--fcg-font-caption);color:var(--fcg-text-secondary);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:baseline;gap:10px;display:grid}.fnB0BW_tokenCacheWasteWorstHead{color:var(--fcg-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.fnB0BW_tokenCacheWasteWorstModel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenCacheWasteWorstTokens{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteWorstCause{text-align:right;color:var(--fcg-text-tertiary)}.fnB0BW_tokenCacheWasteFoot{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:0;line-height:1.5}.fnB0BW_tokenSummaryGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:9px;display:grid}.fnB0BW_tokenMetric{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:4px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_tokenMetric span{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenMetric strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:22px;font-weight:700;line-height:26px;overflow:hidden}.fnB0BW_tokenMetric small{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.fnB0BW_tokenPanel{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);margin-top:12px;padding:14px 16px}.fnB0BW_tokenPanelHeader{justify-content:space-between;align-items:center;gap:10px;min-height:30px;margin-bottom:10px;display:flex}.fnB0BW_tokenPanelTitle{gap:2px;min-width:0;display:grid}.fnB0BW_tokenPanelHeader strong{font-size:15px}.fnB0BW_tokenPanelKicker{color:var(--fcg-brand);font:700 var(--fcg-font-caption)/16px var(--fcg-font-mono);letter-spacing:.11em}.fnB0BW_tokenRangePills{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);scrollbar-width:none;flex-wrap:nowrap;flex:0 auto;gap:2px;max-width:100%;padding:2px;display:inline-flex;overflow-x:auto}.fnB0BW_tokenRangePills::-webkit-scrollbar{display:none}.fnB0BW_tokenRangePills button{min-height:22px;color:var(--fcg-text-tertiary);cursor:pointer;font:var(--fcg-font-caption)/16px var(--fcg-font-mono);white-space:nowrap;background:0 0;border:0;border-radius:5px;flex:none;padding:2px 8px}.fnB0BW_tokenRangePills .fnB0BW_tokenRangeActive{background:var(--fcg-brand-subtle);color:var(--fcg-brand);font-weight:650}.fnB0BW_tokenHeatFilter{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:10px;display:flex}.fnB0BW_tokenHeatFilterLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-right:2px}.fnB0BW_tokenHeatFilterBtn{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);max-width:150px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;background:0 0;align-items:center;gap:6px;padding:2px 9px;line-height:18px;display:inline-flex;overflow:hidden}.fnB0BW_tokenHeatFilterBtn:hover{border-color:var(--fcg-line-strong);color:var(--fcg-text-primary)}.fnB0BW_tokenHeatFilterBtnActive{background:color-mix(in srgb, var(--model-color,var(--fcg-brand)) 14%, transparent);color:var(--model-color,var(--fcg-brand));border-color:#0000;font-weight:600}.fnB0BW_tokenPillDot{corner-shape:round;background:var(--model-color,var(--fcg-text-tertiary));border-radius:50%;flex:none;width:7px;height:7px}.fnB0BW_tokenChartHead{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.fnB0BW_tokenChartTitle{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-weight:600}.fnB0BW_tokenChartTotal{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-weight:650}.fnB0BW_tokenChartModel{color:var(--model-color,var(--fcg-brand));font:600 var(--fcg-font-caption)/18px var(--fcg-font-mono);margin-left:auto}.fnB0BW_tokenChartWrap{--fcg-chart-hit:#bcd7f8;--fcg-chart-miss:#7aaff0;--fcg-chart-out:#2f6fe0;--fcg-chart-tip-bg:#fff;--fcg-chart-tip-fg:#1a1a1c;--fcg-chart-tip-muted:#6b7280;min-width:0;position:relative}body[data-ds-dark-theme] .fnB0BW_tokenChartWrap{--fcg-chart-hit:#a9c8f0;--fcg-chart-miss:#5f97e8;--fcg-chart-out:#3d7ef0;--fcg-chart-tip-bg:#1f1f21;--fcg-chart-tip-fg:#f5f6f8;--fcg-chart-tip-muted:#a1a1a8}.fnB0BW_tokenChartPlot{position:relative}.fnB0BW_tokenChartGrid{background:var(--fcg-line-subtle);opacity:.8;pointer-events:none;height:1px;position:absolute;left:0;right:0}.fnB0BW_tokenChartGrid span{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:1;position:absolute;bottom:3px;left:0}.fnB0BW_tokenChartBar{background:var(--fcg-chart-out);transition:filter 90ms var(--fcg-ease);cursor:pointer;border-radius:3px 3px 0 0;position:absolute;bottom:0;overflow:hidden}.fnB0BW_tokenChartBar[data-active]{filter:brightness(1.14)}.fnB0BW_tokenChartBar[data-empty]{background:var(--fcg-line-subtle);opacity:.3}.fnB0BW_tokenChartCross{pointer-events:none;border-left:1px solid color-mix(in srgb, var(--fcg-text-tertiary) 40%, transparent);position:absolute;top:0;bottom:0}.fnB0BW_tokenChartSeg{width:100%;position:absolute;left:0}.fnB0BW_tokenChartSeg[data-top]{border-radius:3px 3px 0 0}.fnB0BW_tokenChartLegend{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 16px;margin-top:6px;line-height:18px;display:flex}.fnB0BW_tokenChartLegend span{align-items:center;gap:6px;min-width:0;display:inline-flex}.fnB0BW_tokenChartLegend i{border-radius:2px;flex:none;width:8px;height:8px}.fnB0BW_tokenChartTip{z-index:5;background:var(--fcg-chart-tip-bg);color:var(--fcg-chart-tip-muted);pointer-events:none;font-size:var(--fcg-font-caption);border-radius:8px;gap:3px;padding:8px 10px;line-height:14px;display:grid;position:absolute;box-shadow:0 10px 30px #00000047}.fnB0BW_tokenChartTipHead{color:var(--fcg-chart-tip-fg);justify-content:space-between;gap:14px;margin-bottom:2px;font-size:13px;display:flex}.fnB0BW_tokenChartTipHead b{font-variant-numeric:tabular-nums}.fnB0BW_tokenChartTipRow{align-items:center;gap:7px;min-width:0;display:flex}.fnB0BW_tokenChartTipRow b{color:var(--fcg-chart-tip-fg);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.fnB0BW_tokenChartSwatch{background:var(--fcg-line-strong);border-radius:2px;flex:none;width:8px;height:8px}.fnB0BW_tokenChartSwatch[data-tone=hit]{background:var(--fcg-chart-hit)}.fnB0BW_tokenChartSwatch[data-tone=miss]{background:var(--fcg-chart-miss)}.fnB0BW_tokenChartSwatch[data-tone=out]{background:var(--fcg-chart-out)}.fnB0BW_tokenChartSwatch[data-tone=req]{corner-shape:round;background:var(--fcg-chart-tip-muted);border-radius:50%}.fnB0BW_tokenChartAxis{height:18px;margin-top:2px;padding-left:46px;position:relative}.fnB0BW_tokenChartAxis span{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px;position:absolute;transform:translate(-50%)}.fnB0BW_tokenChartAxis span:first-child{transform:none}.fnB0BW_tokenChartAxis span:last-child{transform:translate(-100%)}.fnB0BW_tokenHeatTotals{border-top:1px solid var(--fcg-line-subtle);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-top:10px;padding-top:9px;display:flex}.fnB0BW_tokenHeatTotals b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;margin-right:3px;font-weight:650}.fnB0BW_tokenHeatDaily{margin-left:auto}.fnB0BW_tokenModelBars{gap:6px;margin-bottom:12px;display:grid}.fnB0BW_tokenModelBarRow{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;grid-template-columns:minmax(90px,180px) minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fnB0BW_tokenModelBarName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenModelBarTrack{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);height:4px;overflow:hidden}.fnB0BW_tokenModelBarTrack i{border-radius:inherit;background:var(--model-color,var(--fcg-brand));height:100%;display:block}.fnB0BW_tokenModelBarRow b{color:var(--fcg-text-primary);font-weight:600}.fnB0BW_tokenModelDot{corner-shape:round;background:var(--model-color,var(--fcg-text-tertiary));border-radius:50%;flex:none;width:7px;height:7px;margin-right:6px;display:inline-block}.fnB0BW_tokenNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line-subtle));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-warn) 8%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin-top:10px;padding:10px 14px}.fnB0BW_tokenGatewayTable{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);overflow-x:auto}.fnB0BW_tokenGatewayTable .fnB0BW_pricingTable{min-width:560px}.fnB0BW_tokenEmpty{min-height:90px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);place-items:center;display:grid}@media (width<=700px){.fnB0BW_tokenSummaryGrid{grid-template-columns:1fr 1fr}}@media (width<=520px){.fnB0BW_tokenHero{flex-direction:column;align-items:flex-start}.fnB0BW_tokenTitle{font-size:22px}.fnB0BW_tokenSummaryGrid{grid-template-columns:1fr}.fnB0BW_tokenPanelHeader{gap:6px}.fnB0BW_tokenChartTip{width:190px}.fnB0BW_tokenHeatTotals{gap:4px 10px}.fnB0BW_tokenHeatDaily{margin-left:0}.fnB0BW_tokenModelBarRow{grid-template-columns:minmax(70px,110px) minmax(0,1fr) auto}}.fnB0BW_pricePair{gap:1px;min-width:0;line-height:18px;display:grid}.fnB0BW_priceOriginal{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;text-decoration:line-through;overflow:hidden}.fnB0BW_pricingTable .fnB0BW_priceCurrent,.fnB0BW_pricingTable .fnB0BW_priceCurrentDiscount{color:var(--fcg-brand);font-size:var(--fcg-font-body);letter-spacing:-.01em;font-weight:650;display:block}.fnB0BW_pricingTable .fnB0BW_priceCurrentDiscount{color:var(--fcg-success)}.fnB0BW_pricingRequest{font-weight:600;color:var(--fcg-text-primary)!important}.fnB0BW_imageTiers{flex-wrap:wrap;align-items:start;gap:4px 18px;display:inline-flex}.fnB0BW_imageTier{gap:1px;min-width:0;display:grid}.fnB0BW_imageTierLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.02em;font-style:normal;font-weight:600}.fnB0BW_pricingEmpty{text-align:center;color:var(--fcg-text-tertiary)!important;padding:28px!important}.fnB0BW_order{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);gap:10px;margin-top:20px;padding:18px;display:grid}.fnB0BW_orderTitle{font-size:var(--fcg-font-body);letter-spacing:-.01em;font-weight:600}.fnB0BW_orderActions{flex-wrap:wrap;gap:7px;display:flex}.fnB0BW_qr{object-fit:contain;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:#fff;width:160px;max-width:100%;height:160px}.fnB0BW_qrWrap{justify-items:start;gap:8px;display:grid}.fnB0BW_textarea{resize:vertical;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);width:100%;min-height:72px;color:var(--fcg-text-primary);font:inherit;transition:border-color var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);outline:none;padding:10px 12px;line-height:1.5}.fnB0BW_textarea:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_qrText{overflow-wrap:anywhere;max-width:min(100%,520px);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}@media (width<=800px){.fnB0BW_marketplaceGrid,.fnB0BW_mcpMarketplaceGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.fnB0BW_poolManager{gap:12px;display:grid}.fnB0BW_poolToolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.fnB0BW_poolToolbarNote{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_poolToolbarActions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fnB0BW_poolToggle{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);align-items:center;gap:7px;display:inline-flex}.fnB0BW_poolToggle input{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_poolList{gap:10px;display:grid}.fnB0BW_poolAccount{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease);gap:10px;padding:12px;display:grid}.fnB0BW_poolAccount:hover{border-color:var(--fcg-line-strong);background:var(--fcg-bg-layer-2)}.fnB0BW_poolAccountHead{align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_poolIdentity{flex:auto;align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_poolMonogram{background:var(--fcg-brand-subtle);width:30px;height:30px;color:var(--fcg-brand);font:650 11px/1 var(--fcg-font-mono);letter-spacing:.02em;text-transform:uppercase;border-radius:9px;flex:none;place-items:center;display:grid}.fnB0BW_poolIdentityText{min-width:0}.fnB0BW_poolName{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-weight:600;display:block;overflow:hidden}.fnB0BW_poolSub{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;margin-top:2px;display:block;overflow:hidden}.fnB0BW_poolChips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fnB0BW_poolChip{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);white-space:nowrap;padding:2px 8px;font-size:11px;line-height:16px}.fnB0BW_poolChipLive{background:color-mix(in srgb, var(--fcg-success) 14%, transparent);color:var(--fcg-success)}.fnB0BW_poolChipWarn{background:color-mix(in srgb, var(--fcg-warn) 16%, transparent);color:var(--fcg-warn)}.fnB0BW_poolChipDanger{background:color-mix(in srgb, var(--fcg-danger) 14%, transparent);color:var(--fcg-danger)}.fnB0BW_poolMeterRow{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fnB0BW_poolMeterTrack{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);height:5px;display:block;overflow:hidden}.fnB0BW_poolMeterFill{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width .3s var(--fcg-ease);display:block}.fnB0BW_poolMeterFillWarn{background:var(--fcg-warn)}.fnB0BW_poolMeterFillDanger{background:var(--fcg-danger)}.fnB0BW_poolMetric{color:var(--fcg-text-secondary);font:600 var(--fcg-font-caption)/1 var(--fcg-font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.fnB0BW_poolActions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fnB0BW_poolFootnote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}@media (width<=520px){.fnB0BW_poolAccountHead{flex-wrap:wrap;align-items:flex-start}.fnB0BW_poolIdentity{flex-basis:100%}.fnB0BW_poolActions{justify-content:flex-start}.fnB0BW_mcpServerCard{flex-direction:column;align-items:flex-start}.fnB0BW_mcpServerActions{justify-content:flex-start}.fnB0BW_skillPanelHeader,.fnB0BW_pricingHeader{flex-direction:column;align-items:flex-start;gap:7px}.fnB0BW_pricingSearch{width:100%}.fnB0BW_marketplaceControls,.fnB0BW_mcpMarketplaceGrid,.fnB0BW_marketplaceGrid{grid-template-columns:1fr}.fnB0BW_communityGrid,.fnB0BW_capabilityCommunityGrid{grid-template-columns:1fr}.fnB0BW_capabilityCommunityHeader{flex-direction:column;align-items:flex-start}.fnB0BW_communityFilterBar{gap:8px}.fnB0BW_communityInstalledEntry{padding-inline:8px}.fnB0BW_routingCell{grid-template-columns:1fr;gap:8px}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_routingCopy{grid-template-columns:1fr;gap:2px}.fnB0BW_authForm,.fnB0BW_capabilityForm{grid-template-columns:1fr}.fnB0BW_authFull,.fnB0BW_capabilityFull{grid-column:auto}.fnB0BW_capabilityStats{grid-template-columns:1fr}.fnB0BW_accountRow{flex-direction:column;align-items:flex-start}.fnB0BW_accountActions{justify-content:flex-start}.fnB0BW_plans{grid-template-columns:repeat(2,minmax(0,1fr))}.fnB0BW_communityGrid,.fnB0BW_capabilityCommunityGrid{grid-template-columns:1fr}.fnB0BW_communityRestart{flex-direction:column;align-items:flex-start}.fnB0BW_communityModalBackdrop{padding:10px}.fnB0BW_communityModal{max-height:95vh;padding:14px}.fnB0BW_communityModalStats{flex-direction:column;align-items:flex-start;gap:4px}}@media (width<=360px){.fnB0BW_plans{grid-template-columns:1fr}}.fnB0BW_statGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(112px,1fr));display:grid}.fnB0BW_statCell{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:2px;min-width:0;padding:10px 12px;display:grid}.fnB0BW_statLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}.fnB0BW_statValue{color:var(--fcg-text-primary);font-size:var(--fcg-font-title);font-variant-numeric:tabular-nums;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:650;line-height:20px;overflow:hidden}.fnB0BW_details{margin-top:var(--fcg-space-2)}.fnB0BW_detailsSummary{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);padding:5px 0;line-height:18px}.fnB0BW_detailsSummary:hover{color:var(--fcg-text-primary)}.fnB0BW_detailsSummary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);border-radius:var(--fcg-radius-sm);outline:none}.fnB0BW_chipGrid{padding:var(--fcg-space-1) 0 var(--fcg-space-2);flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_statChip{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;gap:6px;padding:3px 9px;line-height:18px;display:inline-flex}.fnB0BW_statChip b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;font-weight:650}.fnB0BW_statChipIdle{color:var(--fcg-text-tertiary);opacity:.62}.fnB0BW_statChipIdle b{color:var(--fcg-text-tertiary)}@media (width<=520px){.fnB0BW_statGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.fnB0BW_toggleGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-2);grid-template-columns:repeat(auto-fit,minmax(168px,1fr));display:grid}.fnB0BW_toggleCard{justify-content:space-between;align-items:center;gap:var(--fcg-space-2);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;min-width:0;transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease);padding:9px 11px;display:flex}.fnB0BW_toggleCard:hover{border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.fnB0BW_toggleCardDisabled{cursor:not-allowed;opacity:.55}.fnB0BW_toggleCardDisabled:hover{border-color:var(--fcg-line-subtle);background:var(--fcg-bg-layer-1)}.fnB0BW_toggleCardText{gap:1px;min-width:0;display:grid}.fnB0BW_toggleCardText strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:18px;overflow:hidden}.fnB0BW_toggleCardText small{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.fnB0BW_toggleCardNote{color:var(--fcg-warn-label);font-size:11px;line-height:15px}.fnB0BW_tuningGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(132px,1fr));display:grid}.fnB0BW_tuningCell{gap:4px;min-width:0;display:grid}.fnB0BW_tuningLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}.fnB0BW_tuningHint{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.fnB0BW_tuningCell .fnB0BW_select{min-height:32px;padding:5px 9px}.fnB0BW_subGroup{gap:var(--fcg-space-2);margin-top:var(--fcg-space-4);display:grid}.fnB0BW_subGroupLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.02em;font-weight:600;line-height:18px}.fnB0BW_councilJob{gap:var(--fcg-space-3);display:grid}.fnB0BW_councilJobHead{align-items:baseline;gap:var(--fcg-space-2);flex-wrap:wrap;min-width:0;display:flex}.fnB0BW_councilJobId{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.fnB0BW_councilState{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;font-weight:600;line-height:18px}.fnB0BW_councilStateOk{background:var(--fcg-success-subtle);color:var(--fcg-success)}.fnB0BW_councilStateBlocked{background:var(--fcg-danger-subtle);color:var(--fcg-danger)}.fnB0BW_councilStateNowrap{white-space:nowrap;word-break:keep-all;flex:none;max-width:none}.fnB0BW_councilCallout{border-left:2px solid var(--fcg-line-strong);border-radius:0 var(--fcg-radius-sm) var(--fcg-radius-sm) 0;background:var(--fcg-bg-layer-2);gap:2px;padding:9px 11px;display:grid}.fnB0BW_councilCallout p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}.fnB0BW_councilCalloutBlocked{border-left-color:var(--fcg-danger);background:color-mix(in srgb, var(--fcg-danger) 6%, var(--fcg-bg-layer-2))}.fnB0BW_findingList{gap:6px;margin:0;padding:0;list-style:none;display:grid}.fnB0BW_findingRow{align-items:start;gap:var(--fcg-space-2);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);grid-template-columns:auto minmax(0,1fr) auto;padding:8px 10px;display:grid}.fnB0BW_findingBody{gap:2px;min-width:0;display:grid}.fnB0BW_findingTitle{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:600;line-height:18px}.fnB0BW_findingEvidence{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:17px}.fnB0BW_findingEngine{color:var(--fcg-text-tertiary);white-space:nowrap;flex:none;font-size:11px;line-height:18px}.fnB0BW_findingSeverity{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);color:var(--fcg-text-secondary);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;flex:none;padding:1px 7px;font-size:10px;font-weight:600;line-height:16px}@media (width<=520px){.fnB0BW_toggleGrid,.fnB0BW_tuningGrid{grid-template-columns:1fr}.fnB0BW_findingRow{grid-template-columns:auto minmax(0,1fr)}.fnB0BW_findingEngine{grid-column:2}}.fnB0BW_engineeringHeader{justify-content:space-between;align-items:flex-start;gap:var(--fcg-space-3);display:flex}.fnB0BW_engineeringHeader>div:first-child{gap:3px;min-width:0;display:grid}.fnB0BW_engineeringHeader strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg)}.fnB0BW_engineeringHeader small{max-width:620px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_engineeringKicker{color:var(--fcg-text-tertiary);letter-spacing:.08em;font-size:11px;font-weight:650}.fnB0BW_engineeringSummary{margin-top:var(--fcg-space-2);flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_engineeringSummary span{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 9px}.fnB0BW_engineeringSummary b{color:var(--fcg-text-primary)}.fnB0BW_actionMenu{position:relative}.fnB0BW_actionMenu summary{list-style:none}.fnB0BW_actionMenu summary::-webkit-details-marker{display:none}.fnB0BW_actionMenuPop{z-index:4;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);min-width:150px;box-shadow:var(--fcg-shadow-2);gap:4px;padding:6px;display:grid;position:absolute;top:calc(100% + 5px);right:0}.fnB0BW_actionMenuPop .fnB0BW_button{background:0 0;border-color:#0000;justify-content:flex-start}.fnB0BW_actionMenuPop .fnB0BW_button:hover{background:var(--fcg-bg-hover)}.fnB0BW_engineeringComposer{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);padding:var(--fcg-space-3);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);grid-template-columns:minmax(0,1fr) auto;display:grid}.fnB0BW_engineeringComposer .fnB0BW_input{min-width:0}@media (width<=520px){.fnB0BW_engineeringHeader{flex-direction:column}.fnB0BW_engineeringComposer{grid-template-columns:1fr}}.fnB0BW_composerLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin-bottom:5px;font-weight:600;line-height:16px;display:block}.fnB0BW_engineeringComposer>div{min-width:0}.fnB0BW_engineeringComposer>div:first-child,.fnB0BW_engineeringComposer>div:nth-child(2){align-content:start;display:grid}.fnB0BW_pricingTable .fnB0BW_priceFree{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 14%, transparent);color:var(--fcg-success);font-size:var(--fcg-font-caption);letter-spacing:.04em;padding:1px 7px;font-weight:700}.fnB0BW_paymentNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:flex-start;gap:10px;margin-top:14px;padding:10px 12px;line-height:19px;display:flex}.fnB0BW_invoicePanel{border-top:1px solid var(--fcg-line);gap:12px;margin-top:20px;padding-top:18px;display:grid}.fnB0BW_invoiceHead{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.fnB0BW_invoiceOrders{gap:6px;display:grid}.fnB0BW_invoiceOrderRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.fnB0BW_invoiceOrderText{gap:2px;min-width:0;display:grid}.fnB0BW_invoiceOrderText small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_invoiceForm{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.fnB0BW_invoiceForm label{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_invoiceForm .fnB0BW_input{min-width:0}.fnB0BW_invoiceActions{flex-wrap:wrap;gap:8px;display:flex}.fnB0BW_invoiceNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:8px 10px}.fnB0BW_invoicePreview{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;color:var(--fcg-text-primary);font-family:var(--fcg-font-mono);font-size:var(--fcg-font-caption);resize:vertical;padding:10px 12px;line-height:18px}.fnB0BW_invoicePanel>.fnB0BW_sectionMeta{line-height:18px}body .fnB0BW_payDialog{border:2px solid var(--pixel-ink);background:var(--pixel-face);width:min(392px,100vw - 36px);box-shadow:6px 6px 0 0 var(--pixel-ink);border-radius:0;padding-bottom:20px}.fnB0BW_payDialog h2{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);letter-spacing:-.012em;margin:0;font-weight:800}.fnB0BW_payDialog h2+button{border:1px solid var(--pixel-ink);color:var(--pixel-ink);border-radius:0}.fnB0BW_payDialog h2+button:hover{background:var(--pixel-recess)}.fnB0BW_payDialogBody{gap:12px;display:grid}.fnB0BW_payDialogHead{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);gap:3px;padding:12px;display:grid}.fnB0BW_payDialogLabel{color:var(--fcg-brand);font-family:var(--fcg-font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700}.fnB0BW_payDialogAmount{color:var(--fcg-text-primary);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:27px;font-weight:800;line-height:34px}.fnB0BW_payDialogMeta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:5px;display:flex}.fnB0BW_payDialogCredit{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_payDialogCredit strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;font-weight:700}.fnB0BW_payDialogState{border:1px solid var(--pixel-ink);background:var(--pixel-face);color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);letter-spacing:.06em;white-space:nowrap;clip-path:var(--pixel-chip);margin-left:auto;padding:2px 9px;font-size:10px;font-weight:700}.fnB0BW_payDialogSlot{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);justify-items:start;gap:10px;padding:12px;display:grid}.fnB0BW_payDialogQr{text-align:center;justify-items:center}.fnB0BW_payDialogSlot .fnB0BW_paymentNotice{border-width:2px;border-radius:0;margin-top:0}.fnB0BW_payDialogSlot .fnB0BW_payDialogElement{width:100%;min-height:0}.fnB0BW_payDialogPaid{border:2px solid color-mix(in srgb, var(--fcg-success) 42%, var(--pixel-ink));background:color-mix(in srgb, var(--fcg-success) 10%, var(--pixel-face));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:10px 12px}.fnB0BW_payDialogNote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px;display:block}.fnB0BW_payDialogFooter{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.fnB0BW_payDialogFooter .fnB0BW_button,.fnB0BW_payDialogSlot .fnB0BW_button{border:2px solid var(--pixel-ink);background:var(--pixel-face);min-height:40px;color:var(--fcg-text-primary);letter-spacing:.04em;box-shadow:0 3px 0 0 var(--pixel-ink);transition:background var(--fcg-fast) var(--fcg-ease), box-shadow 60ms linear, transform 60ms linear;border-radius:0;font-weight:700}.fnB0BW_payDialogFooter .fnB0BW_button:hover:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_button:hover:not(:disabled){background:var(--pixel-recess)}.fnB0BW_payDialogFooter .fnB0BW_button:active:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_button:active:not(:disabled){box-shadow:0 0 0 0 var(--pixel-ink);transform:translateY(3px)}.fnB0BW_payDialogFooter .fnB0BW_buttonPrimary,.fnB0BW_payDialogSlot .fnB0BW_buttonPrimary{border-color:var(--pixel-ink);background:var(--fcg-brand);color:var(--fcg-text-on-brand-fixed);box-shadow:inset 0 2px 0 0 #ffffff61, 0 3px 0 0 var(--pixel-ink)}.fnB0BW_payDialogFooter .fnB0BW_buttonPrimary:hover:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_buttonPrimary:hover:not(:disabled){border-color:var(--pixel-ink);background:var(--fcg-brand-strong);box-shadow:inset 0 2px 0 0 #ffffff7a, 0 4px 0 0 var(--pixel-ink)}.fnB0BW_payDialogFooter .fnB0BW_buttonDanger{color:var(--fcg-danger)}.fnB0BW_payDialogFooter .fnB0BW_button:focus-visible,.fnB0BW_payDialogSlot .fnB0BW_button:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 26%, transparent), 0 3px 0 0 var(--pixel-ink);outline:none}.fnB0BW_planReviewBody{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);max-height:300px;display:grid;overflow:auto}.fnB0BW_planReviewLine{width:100%;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-align:left;background:0 0;border:0;grid-template-columns:44px minmax(0,1fr);gap:8px;padding:2px 10px;line-height:18px;display:grid}.fnB0BW_planReviewLine:hover{background:var(--fcg-bg-hover)}.fnB0BW_planReviewLineSelected{background:var(--fcg-bg-active)}.fnB0BW_planReviewLineNumber{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);text-align:right}.fnB0BW_planReviewLineText{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.fnB0BW_planReviewRemark{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:8px;padding:10px 11px;display:grid}.fnB0BW_pickerVisibilityPanel{gap:var(--fcg-space-2);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);padding:12px;display:grid}.fnB0BW_pickerVisibilityPanel[data-open=false]{padding:9px 12px}.fnB0BW_pickerVisibilityToggle{width:100%;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:0;display:flex}.fnB0BW_pickerVisibilityToggle:hover{color:var(--fcg-text-primary)}.fnB0BW_pickerVisibilityToggle:focus-visible{border-radius:var(--fcg-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_pickerVisibilityGear{flex:none;align-items:center;display:inline-flex}.fnB0BW_pickerVisibilityToggleLabel{min-width:0;font-size:var(--fcg-font-caption);flex:auto;font-weight:620;line-height:18px}.fnB0BW_pickerVisibilityBadge{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-tertiary);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:600;line-height:16px}.fnB0BW_pickerVisibilityChevron{flex:none;align-items:center;transition:transform .12s;display:inline-flex}.fnB0BW_pickerVisibilityToggle[aria-expanded=true] .fnB0BW_pickerVisibilityChevron{transform:rotate(180deg)}.fnB0BW_pickerVisibilityMaster{cursor:pointer;align-items:center;gap:10px;display:flex}.fnB0BW_pickerVisibilityText{gap:2px;min-width:0;display:grid}.fnB0BW_pickerVisibilityText strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:620;line-height:18px}.fnB0BW_pickerVisibilityText small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_pickerVisibilityHead{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.fnB0BW_pickerVisibilityLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_pickerVisibilityActions{align-items:center;gap:10px;display:flex}.fnB0BW_pickerVisibilityLink{color:var(--fcg-brand);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0;line-height:18px}.fnB0BW_pickerVisibilityLink:hover{text-decoration:underline}.fnB0BW_pickerVisibilityLink:focus-visible{border-radius:var(--fcg-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_pickerVisibilityList{scrollbar-color:var(--fcg-line-strong) transparent;scrollbar-width:thin;gap:2px;max-height:224px;display:grid;overflow-y:auto}.fnB0BW_pickerVisibilityList[data-visible=false]{opacity:.5}.fnB0BW_pickerVisibilityRow{border-radius:var(--fcg-radius-sm);cursor:pointer;align-items:center;gap:8px;min-width:0;padding:4px 6px;display:flex}.fnB0BW_pickerVisibilityRow:hover{background:var(--fcg-bg-layer-2)}.fnB0BW_pickerVisibilityCheck{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;flex:none;margin:0}.fnB0BW_pickerVisibilityName{min-width:0;color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:11px;line-height:18px;overflow:hidden}.fnB0BW_pickerVisibilityPaid{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-danger) 12%, transparent);color:var(--fcg-danger);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:700;line-height:16px}.fnB0BW_pickerVisibilityFree{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 12%, transparent);color:var(--fcg-success);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:700;line-height:16px}.fnB0BW_pickerVisibilityEmpty{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}";
|
|
18383
|
-
const tagId$
|
|
18384
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
18442
|
+
const css$8 = ".fnB0BW_root{box-sizing:border-box;width:100%;min-width:0;max-width:100%;color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);overflow:hidden}.fnB0BW_toolbar{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:0 0 12px;display:flex}.fnB0BW_toolbarTitle{min-width:0}.fnB0BW_kicker{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.08em;text-transform:uppercase;font-weight:600;line-height:18px}.fnB0BW_title{font-size:var(--fcg-font-section);margin:1px 0 0;font-weight:600;line-height:24px}.fnB0BW_toolbarAction,.fnB0BW_button{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:32px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);justify-content:center;align-items:center;padding:5px 13px;line-height:18px;text-decoration:none;display:inline-flex}.fnB0BW_toolbarAction:hover,.fnB0BW_button:hover{background:var(--fcg-bg-hover)}.fnB0BW_button:disabled{cursor:not-allowed;opacity:.45}.fnB0BW_button:focus-visible,.fnB0BW_toolbarAction:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_buttonPrimary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-btn-primary-fill) 30%, transparent)}.fnB0BW_buttonPrimary{background:var(--fcg-btn-primary-fill);color:var(--fcg-text-on-brand);border-color:#0000}.fnB0BW_buttonPrimary:hover:not(:disabled){background:var(--fcg-btn-primary-hover);border-color:#0000}.fnB0BW_buttonPrimary:hover{background:var(--fcg-btn-primary-hover)}.fnB0BW_buttonDanger{color:var(--fcg-danger)}.fnB0BW_loading,.fnB0BW_error{color:var(--fcg-text-tertiary);padding:18px 0}.fnB0BW_error{color:var(--fcg-danger)}.fnB0BW_syncNotice{border:1px solid color-mix(in srgb, var(--fcg-brand) 24%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 6%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:10px;margin:14px 0 0;padding:10px 14px;line-height:18px;display:flex}.fnB0BW_syncNoticeOffline{border-color:color-mix(in srgb, var(--fcg-warn-label) 34%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-warn-label) 7%, var(--fcg-bg-layer-1));color:var(--fcg-warn-label)}.fnB0BW_syncDot{border-radius:var(--fcg-radius-full);background:var(--fcg-brand);flex:none;width:7px;height:7px;animation:1.25s ease-in-out infinite fnB0BW_sync-pulse}.fnB0BW_syncNoticeOffline .fnB0BW_syncDot{background:var(--fcg-warn-label);animation:none}@keyframes fnB0BW_sync-pulse{50%{opacity:.38;transform:scale(.8)}}.fnB0BW_sections{gap:0;display:grid}.fnB0BW_pageTabs{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-tip);gap:4px;margin:0 0 14px;padding:3px;display:flex}.fnB0BW_pageTab{min-height:30px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;border-radius:5px;flex:1;padding:5px 10px}.fnB0BW_pageTabActive{background:var(--fcg-bg-layer-2);color:var(--fcg-text-primary);box-shadow:var(--fcg-shadow-1);font-weight:600}.fnB0BW_modelCategoryActions{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;margin-top:8px;display:grid}.fnB0BW_modelCategoryActions .fnB0BW_select{width:100%;min-width:0}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions){align-items:start}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_pageTabs{box-sizing:border-box;grid-column:2;width:100%;margin:0}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_select{grid-area:2/1;width:100%}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_modelCategoryActions{grid-area:2/2;margin-top:0}.fnB0BW_modelCategoryActions .fnB0BW_button{min-height:42px}.fnB0BW_community{min-width:0;padding:4px 0 17px}.fnB0BW_communityHeader{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:flex-start;gap:12px;padding:13px 0 14px;display:flex}.fnB0BW_communityIntro{max-width:520px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:5px 0 0;line-height:18px}.fnB0BW_communityFilterBar{justify-content:space-between;align-items:center;gap:12px;padding:12px 0 2px;display:flex}.fnB0BW_communityFilters{scrollbar-width:none;gap:6px;min-width:0;display:flex;overflow-x:auto}.fnB0BW_communityFilter{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;padding:4px 10px}.fnB0BW_communityFilter:hover{background:var(--fcg-bg-hover)}.fnB0BW_communityFilterActive{border-color:var(--fcg-text-primary);background:var(--fcg-text-primary);color:var(--fcg-bg-layer-2)}.fnB0BW_communityInstalledEntry{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:30px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;flex:none;padding:5px 10px;font-weight:600}.fnB0BW_communityInstalledEntry:hover{background:var(--fcg-bg-hover)}.fnB0BW_communityInstalledEntryActive{border-color:var(--fcg-text-primary);background:var(--fcg-text-primary);color:var(--fcg-bg-layer-2)}.fnB0BW_capabilityCommunity{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);margin-top:12px;padding:14px}.fnB0BW_capabilityCommunityHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_capabilityCommunityGrid{grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:9px;margin-top:11px;display:grid}.fnB0BW_marketplaceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin-top:13px;display:grid}.fnB0BW_capabilityCommunityCard{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:8px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_capabilityCommunityCard strong{font-size:var(--fcg-font-body)}.fnB0BW_capabilityCommunityCard p{min-height:36px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.fnB0BW_capabilityCommunityCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_capabilityCommunityCard .fnB0BW_button{width:100%;margin-top:2px}.fnB0BW_capabilityCommunityTop{justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_capabilityCommunityKind{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.07em;font-weight:700}.fnB0BW_marketplaceIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.fnB0BW_capabilityIcon{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);width:28px;height:28px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);object-fit:cover;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex;overflow:hidden}.fnB0BW_capabilityIconMcp{border-color:color-mix(in srgb, var(--fcg-brand) 35%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-brand) 11%, var(--fcg-bg-layer-1));color:var(--fcg-brand)}.fnB0BW_marketplaceControls{grid-template-columns:minmax(0,1fr) minmax(140px,.4fr);gap:8px;margin-top:12px;display:grid}.fnB0BW_marketplaceLink{appearance:none;cursor:pointer;font:inherit;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0;text-decoration:none}.fnB0BW_marketplaceLink:hover{color:var(--fcg-text-primary);text-decoration:underline}.fnB0BW_marketplacePagination{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:center;align-items:center;gap:10px;margin-top:13px;display:flex}.fnB0BW_communitySearch{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;margin-top:12px;display:grid}.fnB0BW_communityGrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;padding-top:14px;display:grid}.fnB0BW_communityCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;min-width:0;transition:border-color var(--fcg-fast) var(--fcg-ease), transform var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);flex-direction:column;gap:9px;padding:12px;display:flex}.fnB0BW_communityCard:hover,.fnB0BW_communityCard:focus-visible{border-color:var(--fcg-line-strong);box-shadow:var(--fcg-shadow-2);outline:none;transform:translateY(-1px)}.fnB0BW_communityCardTop{align-items:center;gap:8px;min-width:0;display:flex}img.fnB0BW_communityPluginIcon{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);object-fit:cover;flex:none;width:34px;height:34px;display:block;overflow:hidden}.fnB0BW_communityIdentity{gap:1px;min-width:0;display:grid}.fnB0BW_communityIdentity strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body);overflow:hidden}.fnB0BW_communityIdentity small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityCategory{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-left:auto;padding:2px 6px}.fnB0BW_communityDescription{min-height:54px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:18px;display:-webkit-box;overflow:hidden}.fnB0BW_communityFeatures,.fnB0BW_communityFeatureList{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_communityStats{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);gap:10px;display:flex}.fnB0BW_communityState{color:var(--fcg-success);font-size:var(--fcg-font-caption);font-weight:600}.fnB0BW_communityIncompatible{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);min-height:30px;color:var(--fcg-warn-label);font-size:var(--fcg-font-caption);padding:5px 8px;line-height:18px}.fnB0BW_communityInstall{width:100%;margin-top:auto}.fnB0BW_communityProgress{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityRestart{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding:10px 11px;line-height:18px;display:flex}.fnB0BW_communityFootnote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:13px;line-height:18px;display:block}.fnB0BW_communityModalBackdrop{z-index:20;background:#0f172a61;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.fnB0BW_communityModal{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-2);width:min(760px,100%);min-width:0;max-height:min(820px,92vh);box-shadow:var(--fcg-shadow-pop);flex-direction:column;gap:12px;padding:18px;display:flex;overflow:hidden}.fnB0BW_communityModalHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_communityModalTitle{font-size:var(--fcg-font-section);margin:2px 0 0;line-height:25px}.fnB0BW_communityModalOwner{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityModalSummary{color:var(--fcg-text-secondary);font-size:var(--fcg-font-body);margin:0;line-height:20px}.fnB0BW_communityModalHeader img.fnB0BW_communityPluginIcon{width:40px;height:40px;margin-top:8px}.fnB0BW_communityModalStats{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:12px;display:flex}.fnB0BW_communityModalStats a{color:var(--fcg-text-primary)}.fnB0BW_communityReadme{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);min-height:180px;overflow:auto}.fnB0BW_communityReadme pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/19px var(--fcg-font-mono);margin:0;padding:13px}.fnB0BW_communityModalFooter{justify-content:flex-end;gap:8px;display:flex}.fnB0BW_section{border-bottom:1px solid var(--fcg-line-subtle);min-width:0;padding:24px 0}.fnB0BW_section:last-child{border-bottom:0}.fnB0BW_sectionHeader{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.fnB0BW_sectionName{font-size:var(--fcg-font-body-lg);letter-spacing:-.01em;font-weight:650;line-height:20px}.fnB0BW_sectionMeta{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_badge{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 8px;line-height:18px}.fnB0BW_badgeLive{color:var(--fcg-success)}.fnB0BW_badgeDanger{color:var(--fcg-danger)}.fnB0BW_inspectStatus{background:0 0;align-self:start}.fnB0BW_diagnosticsDump{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);max-height:240px;color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);font-size:var(--fcg-font-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0 0;padding:8px 10px;line-height:18px;overflow:auto}.fnB0BW_grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.fnB0BW_routingGrid{grid-template-columns:1fr;gap:8px}.fnB0BW_routingCell{grid-template-columns:minmax(150px,.7fr) minmax(0,1fr);align-items:center;gap:18px;min-height:0;padding:12px 14px;display:grid}.fnB0BW_routingCell.fnB0BW_selectCell{grid-template-rows:none;align-content:normal}.fnB0BW_routingCell .fnB0BW_select{min-height:42px}.fnB0BW_routingCopy{gap:2px;min-width:0;display:grid}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_routingCopy{grid-column:1/-1;grid-template-columns:minmax(150px,.7fr) auto minmax(0,1fr);align-items:center;gap:10px}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_cellHint{margin-top:0}.fnB0BW_infoCell{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);min-width:0;padding:14px}.fnB0BW_cellLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-bottom:4px;display:block}.fnB0BW_cellValue{text-overflow:ellipsis;white-space:nowrap;font-weight:500;display:block;overflow:hidden}.fnB0BW_cellHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block}.fnB0BW_feedbackRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 18px;display:flex}.fnB0BW_feedbackRow>.fnB0BW_routingCopy{flex:220px}.fnB0BW_telegramLink{flex:none;gap:7px;text-decoration:none}.fnB0BW_telegramIcon{flex:none;display:block}.fnB0BW_selectCell{gap:5px;display:grid}.fnB0BW_select,.fnB0BW_input{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);width:100%;min-width:0;color:var(--fcg-text-primary);font:inherit;font-size:var(--fcg-font-body);transition:border-color var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);outline:none;padding:8px 11px}.fnB0BW_select:hover,.fnB0BW_input:hover{border-color:var(--fcg-line-strong)}.fnB0BW_select:focus,.fnB0BW_input:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_accountList{flex-direction:column;gap:8px;display:flex}.fnB0BW_accountManager{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:10px;margin-top:10px;padding:14px;display:grid}.fnB0BW_extensionList{gap:6px;margin-top:14px;display:grid}.fnB0BW_extensionRow{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:11px 12px;display:flex}.fnB0BW_extensionRow span{gap:3px;min-width:0;display:grid}.fnB0BW_extensionRow small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_engineSelect{cursor:pointer;flex:none;width:216px}.fnB0BW_switch{-webkit-appearance:none;appearance:none;border:1px solid var(--fcg-line-strong);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);cursor:pointer;width:36px;height:20px;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease);outline:none;flex:none;margin:0;position:relative}.fnB0BW_switch:before{content:\"\";corner-shape:round;background:var(--fcg-bg-layer-2);width:14px;height:14px;box-shadow:var(--fcg-shadow-1);transition:transform var(--fcg-fast) var(--fcg-ease);border-radius:50%;position:absolute;top:2px;left:2px}.fnB0BW_switch:checked{border-color:var(--fcg-brand);background:var(--fcg-brand)}.fnB0BW_switch:checked:before{transform:translate(16px)}.fnB0BW_switch:hover:not(:disabled){border-color:var(--fcg-brand)}.fnB0BW_switch:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent)}.fnB0BW_switch:disabled{cursor:not-allowed;opacity:.45}.fnB0BW_capabilityForm{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px;padding:14px;display:grid}.fnB0BW_capabilityForm label{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_capabilityFormHead{grid-column:1/-1;justify-content:space-between;align-items:center;gap:10px;display:flex}.fnB0BW_capabilityFull{grid-column:1/-1}.fnB0BW_skillList{gap:8px;margin-top:12px;display:grid}.fnB0BW_capabilityStats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_capabilityStats div{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:2px;padding:12px 14px;display:grid}.fnB0BW_capabilityStats strong{font-size:var(--fcg-font-section);line-height:21px}.fnB0BW_capabilityStats small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_engineeringSection .fnB0BW_capabilityStats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.fnB0BW_manualEntry{border-top:1px solid var(--fcg-line);gap:6px;padding-top:10px;display:grid}.fnB0BW_manualEntry>small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_manualEntry summary{cursor:pointer;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryPanel{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:12px;margin-top:16px;padding:14px;display:grid}.fnB0BW_memoryHeader,.fnB0BW_memoryDetailHeader{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.fnB0BW_memoryHeader>div:first-child,.fnB0BW_memoryDetailHeader>div{gap:3px;min-width:0;display:grid}.fnB0BW_memoryHeader strong,.fnB0BW_memoryDetailHeader strong{font-size:var(--fcg-font-body)}.fnB0BW_memoryHeader small,.fnB0BW_memoryDetailHeader small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_memoryActions,.fnB0BW_memoryRecordActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:6px;display:flex}.fnB0BW_memoryActions .fnB0BW_button,.fnB0BW_memoryRecordActions .fnB0BW_button{min-height:26px;font-size:var(--fcg-font-caption);padding:3px 8px}.fnB0BW_memorySearchRow{align-items:center;gap:7px;display:flex}.fnB0BW_memorySearchRow .fnB0BW_input{flex:auto}.fnB0BW_memorySearchRow .fnB0BW_button{min-height:30px;font-size:var(--fcg-font-caption);flex:none;padding:4px 10px}.fnB0BW_memoryRecall{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:6px;padding:9px 11px;display:grid}.fnB0BW_memoryRecallHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.fnB0BW_memoryRecallHead span{gap:2px;min-width:0;display:grid}.fnB0BW_memoryRecallHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_memoryRecallHead .fnB0BW_button{min-height:24px;font-size:var(--fcg-font-caption);flex:none;padding:2px 8px}.fnB0BW_memoryRecallList{flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_memoryRecallList span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 9px}.fnB0BW_memoryList{gap:7px;max-height:360px;padding-right:3px;display:grid;overflow:auto}.fnB0BW_memoryRecord{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 12px;display:grid}.fnB0BW_memoryRecordSelected{box-shadow:inset 0 0 0 1px var(--fcg-brand)}.fnB0BW_memoryRecordSelect{min-width:0;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:0;display:flex}.fnB0BW_memoryRecordSelect:disabled{cursor:not-allowed;opacity:.6}.fnB0BW_memoryRecordSelect>span{gap:3px;min-width:0;display:grid}.fnB0BW_memoryRecordSelect strong,.fnB0BW_memoryRecordSelect small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_memoryRecordSelect strong{font-size:var(--fcg-font-caption)}.fnB0BW_memoryRecordSelect small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryTrust{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex:none;padding:2px 6px;font-weight:600}.fnB0BW_memoryTrustReviewed{background:color-mix(in srgb, var(--fcg-success) 12%, var(--fcg-bg-layer-2));color:var(--fcg-success)}.fnB0BW_memoryTrustDraft{background:color-mix(in srgb, var(--fcg-warn) 13%, var(--fcg-bg-layer-2));color:var(--fcg-warn-label)}.fnB0BW_memoryDetail{border:1px solid color-mix(in srgb, var(--fcg-text-primary) 18%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:9px;padding:11px;display:grid}.fnB0BW_memoryDetail p{max-height:240px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:19px;overflow:auto}.fnB0BW_memoryTags{flex-wrap:wrap;gap:5px;display:flex}.fnB0BW_memoryTags span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);padding:2px 6px}.fnB0BW_memoryTimeline{border-top:1px solid var(--fcg-line);gap:5px;padding-top:9px;display:grid}.fnB0BW_memoryTimeline strong{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryTimeline button{color:var(--fcg-text-tertiary);cursor:pointer;font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:0;overflow:hidden}.fnB0BW_memoryTimeline button:hover,.fnB0BW_memoryTimelineCurrent{color:var(--fcg-text-primary)!important}.fnB0BW_graphPanel{border:1px solid color-mix(in srgb, var(--fcg-brand) 24%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--fcg-brand) 5%, var(--fcg-bg-layer-2)), var(--fcg-bg-layer-1));gap:10px;margin-top:14px;padding:12px;display:grid}.fnB0BW_graphState{border-left:2px solid var(--fcg-brand);background:var(--fcg-bg-layer-2);gap:3px;padding:10px 11px;display:grid}.fnB0BW_graphState strong{font-size:var(--fcg-font-caption)}.fnB0BW_graphState small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_graphInstallList{gap:8px;display:grid}.fnB0BW_graphInstallRow{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.fnB0BW_graphInstallRow>div{flex:1;gap:4px;min-width:0;display:grid}.fnB0BW_graphInstallRow strong{font-size:var(--fcg-font-caption)}.fnB0BW_graphInstallRow small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_graphInstallRow .fnB0BW_input{margin-top:4px}.fnB0BW_verificationGrid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:7px;display:grid}.fnB0BW_verificationGrid article{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:4px;min-width:0;padding:10px 12px;display:grid}.fnB0BW_verificationGrid strong{font-size:var(--fcg-font-caption);text-transform:uppercase}.fnB0BW_verificationGrid small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_verificationGrid pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:120px;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/19px var(--fcg-font-mono);margin:0;overflow:auto}.fnB0BW_mcpTemplateBar{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:7px;margin-top:12px;display:flex}.fnB0BW_templateButton{border:1px dashed var(--fcg-line-strong);border-radius:var(--fcg-radius-sm);min-height:26px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;align-items:center;gap:4px;padding:3px 8px;display:inline-flex}.fnB0BW_templateButton:hover{border-style:solid;border-color:var(--fcg-text-primary);color:var(--fcg-text-primary)}.fnB0BW_mcpPresetHeading{justify-content:space-between;align-items:baseline;gap:10px;margin-top:14px;display:flex}.fnB0BW_mcpPresetHeading strong{font-size:var(--fcg-font-caption)}.fnB0BW_mcpPresetHeading small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_mcpPresetGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpPresetCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));min-width:0;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;display:grid}.fnB0BW_mcpPresetCard:hover{border-color:var(--fcg-line-strong);box-shadow:var(--fcg-shadow-1);transform:translateY(-1px)}.fnB0BW_mcpPresetCard:disabled{cursor:not-allowed;opacity:.55;transform:none}.fnB0BW_mcpPresetCard>span:not(.fnB0BW_mcpPresetIcon){gap:2px;min-width:0;display:grid}.fnB0BW_mcpPresetCard strong{font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpPresetCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.fnB0BW_mcpPresetCard b{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;font-weight:500}.fnB0BW_mcpPresetIcon,.fnB0BW_mcpServerIcon{border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 12%, var(--fcg-bg-layer-2));width:30px;height:30px;color:var(--fcg-brand);flex:none;place-items:center;display:grid}.fnB0BW_mcpServerIcon{width:32px;height:32px}.fnB0BW_mcpMarketplaceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpMarketplaceCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));grid-template-columns:auto minmax(0,1fr);gap:9px;min-width:0;padding:10px;display:grid}.fnB0BW_mcpMarketplaceIcon{object-fit:cover;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);flex:none;width:30px;height:30px}.fnB0BW_mcpMarketplaceCopy{gap:3px;min-width:0;display:grid}.fnB0BW_mcpMarketplaceCopy>div{justify-content:space-between;align-items:center;gap:6px;display:flex}.fnB0BW_mcpMarketplaceCopy strong,.fnB0BW_mcpMarketplaceCopy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpMarketplaceCopy strong{font-size:var(--fcg-font-caption)}.fnB0BW_mcpMarketplaceCopy span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);flex:none;padding:2px 6px}.fnB0BW_mcpMarketplaceCopy small,.fnB0BW_mcpMarketplaceCopy em{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);font-style:normal;line-height:18px}.fnB0BW_mcpMarketplaceActions{grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_mcpMarketplaceActions a{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-decoration:none}.fnB0BW_mcpMarketplaceActions a:hover{color:var(--fcg-text-primary);text-decoration:underline}.fnB0BW_mcpMarketplaceActions .fnB0BW_button{min-height:27px;font-size:var(--fcg-font-caption);padding:3px 8px}.fnB0BW_mcpJsonPanel{border:1px solid color-mix(in srgb, var(--fcg-brand) 32%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-brand) 4%, var(--fcg-bg-layer-1));gap:9px;margin-top:12px;padding:11px;display:grid}.fnB0BW_mcpJsonPanel .fnB0BW_capabilityFormHead{grid-template-columns:1fr auto;align-items:start;gap:4px 10px;display:grid}.fnB0BW_mcpJsonPanel .fnB0BW_capabilityFormHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);grid-column:1/-1;line-height:18px}.fnB0BW_mcpJsonInput{box-sizing:border-box;resize:vertical;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;min-height:170px;color:var(--fcg-text-primary);font:var(--fcg-font-caption)/18px var(--fcg-font-mono);outline:none;padding:10px}.fnB0BW_mcpJsonInput:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_mcpServerList{gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpServerCard{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:12px 14px;display:flex}.fnB0BW_mcpServerMain{gap:4px;min-width:0;display:grid}.fnB0BW_mcpServerMain>small{color:var(--fcg-text-tertiary);font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpServerTitle{align-items:center;gap:7px;min-width:0;display:flex}.fnB0BW_mcpServerTitle strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body);overflow:hidden}.fnB0BW_mcpServerActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:7px;display:flex}.fnB0BW_inlineSwitch{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:4px;display:inline-flex}.fnB0BW_inlineSwitch input{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_emptyCapability{border:1px dashed var(--fcg-line-strong);border-radius:var(--fcg-radius-md);color:var(--fcg-text-secondary);text-align:center;gap:4px;margin-top:12px;padding:18px 14px;display:grid}.fnB0BW_emptyCapability small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_skillPanel{gap:8px;margin-top:14px;padding-top:1px;display:grid}.fnB0BW_skillPanelHeader{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.fnB0BW_skillPanelHeader small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_skillCard{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);border:1px solid #0000;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.fnB0BW_skillCard:hover{border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.fnB0BW_skillCardBody{min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;flex:1;gap:4px;padding:0;display:grid}.fnB0BW_skillCardBody:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_skillCardControl{flex:none;justify-items:end;gap:2px;padding-top:2px;display:grid}.fnB0BW_skillCardToggle{color:var(--fcg-text-tertiary);cursor:pointer;font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;gap:6px;display:flex}.fnB0BW_skillCardToggle input{margin:0}.fnB0BW_skillCardClear{color:var(--fcg-brand);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0}.fnB0BW_skillCardClear:disabled{opacity:.5;cursor:default}.fnB0BW_skillDetailControl{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:10px;padding:9px 12px;display:flex}.fnB0BW_skillDetailControl>small{flex-basis:100%}.fnB0BW_skillForward{margin-top:12px}.fnB0BW_skillForwardHead{gap:2px;margin-bottom:6px;display:grid}.fnB0BW_skillForwardHead strong{font-size:var(--fcg-font-caption)}.fnB0BW_skillForwardHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_skillCardHead{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_skillCard strong{font-size:var(--fcg-font-caption)}.fnB0BW_skillCard p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.fnB0BW_skillCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_skillFileBar{flex-wrap:wrap;gap:6px;margin:12px 0 0;display:flex}.fnB0BW_skillFileChip{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);max-width:100%;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;padding:4px 9px;overflow:hidden}.fnB0BW_skillFileChip:hover{background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_skillFileChipActive{border-color:var(--fcg-brand);color:var(--fcg-text-primary)}.fnB0BW_skillFileChip:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_workbuddyHeaderActions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.fnB0BW_accountManagerButton{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;padding:4px 9px}.fnB0BW_accountManagerButton:hover{background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_accountRow{justify-content:space-between;align-items:center;gap:14px;min-width:0;display:flex}.fnB0BW_accountIdentity{min-width:0}.fnB0BW_accountIdentityWithAvatar{align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_accountText{min-width:0}.fnB0BW_accountAvatar{border-radius:var(--fcg-radius-md);border:1px solid #0000;flex:none;place-items:center;width:42px;height:42px;display:inline-grid;overflow:hidden;box-shadow:0 2px 8px #0f172a1a}.fnB0BW_accountAvatarRemote{border-color:var(--fcg-line);background:#fff}.fnB0BW_accountAvatarRemote img{object-fit:cover;width:100%;height:100%}.fnB0BW_accountAvatarMonogram{font-size:var(--fcg-font-section);letter-spacing:-.04em;font-weight:800;line-height:1}.fnB0BW_accountAvatarQq{color:#fff;background:linear-gradient(145deg,#38bdf8,#1263bd);border-color:#1688d8}.fnB0BW_accountAvatarGoogle{background:linear-gradient(145deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));color:#4285f4;text-shadow:1px 0 #ea4335,0 1px #34a853,-1px 0 #fbbc05;border-color:#d8dce5}.fnB0BW_accountAvatarGeneric{border-color:var(--fcg-line);background:var(--fcg-bg-layer-1);color:var(--fcg-text-tertiary)}.fnB0BW_accountAvatarGeneric svg{fill:currentColor;width:22px;height:22px}.fnB0BW_accountName{text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:block;overflow:hidden}.fnB0BW_accountEmail{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block;overflow:hidden}.fnB0BW_accountActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;display:flex}.fnB0BW_clineUsage{gap:7px;margin-top:4px;display:grid}.fnB0BW_clineUsageHead{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_clineUsageRow{grid-template-columns:84px minmax(0,1fr) 44px;align-items:center;gap:10px;display:grid}.fnB0BW_clineUsageLabel{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-caption);overflow:hidden}.fnB0BW_clineUsageValue{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;text-align:right}.fnB0BW_clineUsageMeter{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);height:4px;overflow:hidden}.fnB0BW_clineUsageFill{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width .3s}.fnB0BW_clineUsageFillHigh{background:var(--fcg-warn)}.fnB0BW_balance{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-success);font-size:var(--fcg-font-body-lg);font-variant-numeric:tabular-nums;align-items:baseline;gap:7px;padding:5px 11px;font-weight:600;display:inline-flex}.fnB0BW_balanceLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);font-weight:500}.fnB0BW_authForm{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;display:grid}.fnB0BW_authPanel{box-sizing:border-box;border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);width:100%;box-shadow:var(--fcg-shadow-2);gap:16px;padding:26px 24px 22px;display:grid}.fnB0BW_authLayout{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:20px;margin-top:6px;display:grid}.fnB0BW_authHead{text-align:center;justify-items:center;gap:6px;display:grid}.fnB0BW_authTitle{color:var(--fcg-text-primary);letter-spacing:-.01em;font-size:17px;font-weight:650;line-height:24px}.fnB0BW_authSubtitle{max-width:300px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_authTabs{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-tip);grid-template-columns:1fr 1fr;gap:2px;padding:3px;display:grid}.fnB0BW_authTab{min-height:32px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;border-radius:8px}.fnB0BW_authTab:hover{color:var(--fcg-text-primary)}.fnB0BW_authTab:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authTabActive{background:var(--fcg-bg-layer-1);box-shadow:var(--fcg-shadow-1);color:var(--fcg-text-primary);font-weight:600}.fnB0BW_authStack{gap:11px;display:grid}.fnB0BW_authPanel .fnB0BW_input{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-tip);min-height:42px;font-size:var(--fcg-font-body);border-color:#0000;padding:10px 13px}.fnB0BW_authPanel .fnB0BW_input::placeholder{color:var(--fcg-text-tertiary)}.fnB0BW_authPanel .fnB0BW_input:hover:not(:focus){border-color:var(--fcg-line)}.fnB0BW_authPanel .fnB0BW_input:focus{border-color:var(--fcg-brand);background:var(--fcg-bg-layer-1);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill,.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill:hover,.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill:focus{-webkit-text-fill-color:var(--fcg-text-primary);box-shadow:0 0 0 60px var(--fcg-bg-tip) inset}.fnB0BW_authCodeRow{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.fnB0BW_authCodeSend{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);min-height:42px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;white-space:nowrap;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);padding:0 14px}.fnB0BW_authCodeSend:hover:not(:disabled){border-color:var(--fcg-line-strong);background:var(--fcg-bg-hover)}.fnB0BW_authCodeSend:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authCodeSend:disabled{cursor:not-allowed;color:var(--fcg-text-tertiary)}.fnB0BW_authSubmit{border-radius:var(--fcg-radius-md);background:var(--fcg-brand);width:100%;min-height:42px;color:var(--fcg-text-on-brand-fixed);cursor:pointer;font:inherit;font-size:var(--fcg-font-body);letter-spacing:.01em;transition:background var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease), transform var(--fcg-fast) var(--fcg-ease);border:1px solid #0000;font-weight:600}.fnB0BW_authSubmit:hover:not(:disabled){background:var(--fcg-brand-strong)}.fnB0BW_authSubmit:active:not(:disabled){transform:translateY(1px)}.fnB0BW_authSubmit:disabled{cursor:not-allowed;opacity:.5}.fnB0BW_authSubmit:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 30%, transparent);outline:none}.fnB0BW_authNote,.fnB0BW_authStep{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-align:center;line-height:18px}.fnB0BW_authStep{color:var(--fcg-text-secondary)}.fnB0BW_authSocialRow{grid-template-columns:1fr 1fr;gap:9px;display:grid}.fnB0BW_authSocialButton{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);min-height:42px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-body);transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);justify-content:center;align-items:center;gap:8px;font-weight:550;display:inline-flex}.fnB0BW_authSocialButton svg{flex:none;width:16px;height:16px}.fnB0BW_authSocialButton:hover:not(:disabled){border-color:var(--fcg-line-strong);background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_authSocialButton:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authSocialButton:disabled{cursor:progress;opacity:.6}.fnB0BW_authDivider{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:10px;display:flex}.fnB0BW_authDivider:before,.fnB0BW_authDivider:after{background:var(--fcg-line);content:\"\";flex:1;height:1px}.fnB0BW_authNotice{border:1px solid color-mix(in srgb, var(--fcg-brand) 26%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 6%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-align:center;padding:9px 11px;line-height:18px}.fnB0BW_authNoticeAlert{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-align:left;grid-column:1/-1;justify-content:space-between;align-items:flex-start;gap:10px;padding:9px 11px;line-height:19px;display:flex}.fnB0BW_authNoticeAlert button{flex:none}.fnB0BW_authFull{grid-column:1/-1}.fnB0BW_remember{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);align-items:center;gap:8px;display:flex}.fnB0BW_remember input{width:15px;height:15px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_rememberRow{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.fnB0BW_passwordField{min-width:0;display:flex;position:relative}.fnB0BW_authPanel .fnB0BW_passwordField .fnB0BW_input{width:100%;padding-right:64px}.fnB0BW_passwordToggle{border-radius:var(--fcg-radius-sm);color:var(--fcg-text-tertiary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:4px 6px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.fnB0BW_passwordToggle:hover{color:var(--fcg-text-primary)}.fnB0BW_paymentBar{border-bottom:1px solid var(--fcg-line-subtle);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px 16px;margin-bottom:18px;padding-bottom:16px;display:grid}.fnB0BW_paymentBarDetail{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;grid-column:1/-1;line-height:17px}.fnB0BW_paymentPicker{justify-items:end;gap:6px;min-width:0;display:grid}.fnB0BW_paymentHeading{font-size:var(--fcg-font-title);letter-spacing:-.01em;color:var(--fcg-text-primary);margin-bottom:3px;font-weight:600;display:block}.fnB0BW_paymentMethod{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:8px;display:inline-flex}.fnB0BW_paymentMethod>span{white-space:nowrap;flex:none}.fnB0BW_paymentMethod .fnB0BW_select{width:auto;min-width:176px;max-width:100%}.fnB0BW_alert{border:1px solid color-mix(in srgb, var(--fcg-danger) 28%, transparent);border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-danger) 7%, var(--fcg-bg-layer-2));color:var(--fcg-danger);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin-bottom:10px;padding:9px 11px;line-height:18px}.fnB0BW_alert button{color:inherit;font-size:var(--fcg-font-caption);cursor:pointer;white-space:nowrap;background:0 0;border:0;margin-left:10px;padding:0;text-decoration:underline}.fnB0BW_pending{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));gap:8px;margin-bottom:12px;padding:10px 11px;display:grid}.fnB0BW_pendingTitle{font-weight:600}.fnB0BW_pendingHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_pendingRow{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_pendingText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.fnB0BW_plans,.fnB0BW_planShared,.fnB0BW_payDialog{--pixel-ink:color-mix(in srgb, var(--fcg-brand) 58%, var(--fcg-text-primary));--pixel-face:var(--fcg-bg-layer-1);--pixel-recess:color-mix(in srgb, var(--fcg-text-primary) 4%, var(--fcg-bg-layer-1));--pixel-recess-edge:color-mix(in srgb, var(--pixel-ink) 26%, transparent);--pixel-recess-rule:color-mix(in srgb, var(--pixel-ink) 22%, transparent);--pixel-rule:color-mix(in srgb, var(--pixel-ink) 18%, transparent);--pixel-notch:polygon(0 8px, 4px 8px, 4px 4px, 8px 4px, 8px 0, calc(100% - 8px) 0, calc(100% - 8px) 4px, calc(100% - 4px) 4px, calc(100% - 4px) 8px, 100% 8px, 100% calc(100% - 8px), calc(100% - 4px) calc(100% - 8px), calc(100% - 4px) calc(100% - 4px), calc(100% - 8px) calc(100% - 4px), calc(100% - 8px) 100%, 8px 100%, 8px calc(100% - 4px), 4px calc(100% - 4px), 4px calc(100% - 8px), 0 calc(100% - 8px));--pixel-chip:polygon(0 3px, 3px 3px, 3px 0, calc(100% - 3px) 0, calc(100% - 3px) 3px, 100% 3px, 100% calc(100% - 3px), calc(100% - 3px) calc(100% - 3px), calc(100% - 3px) 100%, 3px 100%, 3px calc(100% - 3px), 0 calc(100% - 3px))}.fnB0BW_plans{grid-template-columns:repeat(auto-fit,minmax(236px,1fr));gap:16px;padding:0 6px 6px 0;display:grid}.fnB0BW_planShell{display:flex;position:relative}.fnB0BW_planShell:before{background:var(--pixel-ink);clip-path:var(--pixel-notch);content:\"\";transition:transform var(--fcg-fast) var(--fcg-ease);position:absolute;inset:0;transform:translate(6px,6px)}.fnB0BW_planShell:hover:before{transform:translate(8px,8px)}.fnB0BW_plan{border:2px solid var(--pixel-ink);background:var(--pixel-face);min-width:0;clip-path:var(--pixel-notch);transition:transform var(--fcg-fast) var(--fcg-ease);flex-direction:column;flex:1;gap:11px;padding:16px 16px 14px;display:flex;position:relative}.fnB0BW_plan:hover{transform:translate(-2px,-2px)}.fnB0BW_planTop{border-bottom:2px solid var(--pixel-rule);align-items:center;gap:8px;padding-bottom:9px;display:flex}.fnB0BW_planDot{border:1px solid var(--pixel-ink);background:var(--fcg-brand);width:9px;height:9px;box-shadow:1px 1px 0 0 var(--pixel-ink);flex:none}.fnB0BW_planName{min-width:0;color:var(--fcg-text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body-lg);letter-spacing:-.012em;flex:1;font-weight:800;overflow:hidden}.fnB0BW_planTag{border:1px solid var(--pixel-ink);background:var(--fcg-brand);color:var(--fcg-text-on-brand-fixed);font-family:var(--fcg-font-mono);letter-spacing:.06em;white-space:nowrap;clip-path:var(--pixel-chip);flex:none;padding:2px 8px;font-size:10px;font-weight:700}.fnB0BW_planSave{border:1px solid color-mix(in srgb, var(--fcg-success) 52%, var(--pixel-ink));background:color-mix(in srgb, var(--fcg-success) 13%, transparent);color:var(--fcg-success);letter-spacing:.04em;white-space:nowrap;clip-path:var(--pixel-chip);flex:none;padding:2px 7px;font-size:10px;font-weight:700}.fnB0BW_planFeatured .fnB0BW_planRecess{background:color-mix(in srgb, var(--fcg-brand) 8%, var(--pixel-recess))}.fnB0BW_planShared{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex-wrap:wrap;align-items:center;gap:14px;margin-top:16px;padding:10px 12px;display:flex}.fnB0BW_planShared small{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);letter-spacing:.1em;font-size:10px;font-weight:700}.fnB0BW_planShared span{align-items:center;gap:6px;display:inline-flex}.fnB0BW_planRecess{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);align-items:stretch;padding:10px 12px;display:flex}.fnB0BW_planCreditBlock{flex:auto;gap:3px;min-width:0;display:grid}.fnB0BW_planPriceLabel{color:var(--fcg-brand);letter-spacing:.08em;align-items:center;gap:5px;font-size:10px;font-weight:700;display:flex}.fnB0BW_planRecessCode{font-family:var(--fcg-font-mono);letter-spacing:.14em}.fnB0BW_planPriceRow{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.fnB0BW_planPrice{color:var(--fcg-text-primary);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:26px;font-weight:800;line-height:1}.fnB0BW_planOriginalPrice{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-decoration:line-through}.fnB0BW_planPayBlock{border-left:2px solid var(--pixel-recess-rule);align-content:center;justify-items:end;gap:3px;margin-left:12px;padding-left:12px;display:grid}.fnB0BW_planPayLabel{color:var(--fcg-text-tertiary);font-size:10px;font-weight:600}.fnB0BW_planPayable{color:var(--fcg-brand);font-size:var(--fcg-font-title);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:800}.fnB0BW_features{border-top:2px solid var(--pixel-rule);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:6px;padding-top:10px;line-height:17px;display:grid}.fnB0BW_features>span{grid-template-columns:12px minmax(0,1fr);align-items:start;gap:8px;display:grid}.fnB0BW_planCheck{border:1px solid var(--pixel-ink);background:var(--fcg-brand);width:7px;height:7px;margin-top:5px;display:block}.fnB0BW_planFeatureText{min-width:0}.fnB0BW_planButton{border:2px solid var(--pixel-ink);background:var(--fcg-brand);width:100%;min-height:40px;color:var(--fcg-text-on-brand-fixed);letter-spacing:.04em;box-shadow:inset 0 2px 0 0 #ffffff61, 0 3px 0 0 var(--pixel-ink);transition:background var(--fcg-fast) var(--fcg-ease), box-shadow 60ms linear, transform 60ms linear;border-radius:0;margin-top:auto;font-weight:700}.fnB0BW_planButton:hover:not(:disabled){background:var(--fcg-brand-strong);box-shadow:inset 0 2px 0 0 #ffffff7a, 0 4px 0 0 var(--pixel-ink)}.fnB0BW_planButton:active:not(:disabled){box-shadow:inset 0 1px 0 0 #0000002e, 0 0 0 0 var(--pixel-ink);transform:translateY(3px)}.fnB0BW_planBlurb{gap:3px;display:grid}.fnB0BW_planPerk{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_planLead{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_planFootnote{color:var(--fcg-text-tertiary);align-items:center;gap:6px;font-size:11px;display:flex}.fnB0BW_planDotOk{background:var(--fcg-success);flex:none;width:6px;height:6px}.fnB0BW_planBrandMark{color:var(--fcg-brand);font-family:var(--fcg-font-mono);letter-spacing:.05em;margin-left:auto;font-size:10px;font-weight:700}.fnB0BW_pricingSection{border-top:1px solid var(--fcg-line);gap:10px;margin-top:20px;padding-top:18px;display:grid}.fnB0BW_pricingHeader{justify-content:space-between;align-items:end;gap:14px;display:flex}.fnB0BW_pricingHeader>div{gap:3px;display:grid}.fnB0BW_pricingSearch{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:min(250px,100%);min-height:32px;color:var(--fcg-text-primary);font:inherit;font-size:var(--fcg-font-caption);outline:none;padding:6px 10px}.fnB0BW_pricingSearch:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_pricingNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:8px 10px}.fnB0BW_pricingTableWrap{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);width:100%;overflow:auto hidden}.fnB0BW_pricingTable{table-layout:fixed;border-collapse:collapse;width:100%;min-width:660px;font-size:var(--fcg-font-caption)}.fnB0BW_pricingTable th{border-bottom:1px solid var(--fcg-line-subtle);background:var(--fcg-bg-layer-1);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.02em;text-align:left;white-space:nowrap;padding:10px 14px;font-weight:600}.fnB0BW_pricingTable td{border-bottom:1px solid var(--fcg-line-subtle);color:var(--fcg-text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;padding:10px 12px}.fnB0BW_pricingTable tbody tr:last-child td{border-bottom:0}.fnB0BW_pricingTable tbody tr:hover{background:var(--fcg-bg-hover)}.fnB0BW_pricingFreeSection{border-top:1px dashed var(--fcg-line-subtle);gap:8px;margin-top:6px;padding-top:14px;display:grid}.fnB0BW_pricingFreeHeader{gap:2px;display:grid}.fnB0BW_pricingFreeHeader strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-weight:650}.fnB0BW_paymentMethods{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;margin-top:0;display:flex}.fnB0BW_paymentMethodChip{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.01em;white-space:nowrap;padding:2px 9px;font-weight:550}@media (width<=520px){.fnB0BW_paymentBar{grid-template-columns:minmax(0,1fr)}.fnB0BW_paymentPicker{justify-items:stretch}.fnB0BW_paymentMethod .fnB0BW_select{width:100%}.fnB0BW_paymentMethods{justify-content:flex-start}}.fnB0BW_pricingTable th:first-child,.fnB0BW_pricingTable td:first-child{width:34%}.fnB0BW_pricingTable td:first-child{white-space:normal}.fnB0BW_pricingSection .fnB0BW_pricingTable th:first-child,.fnB0BW_pricingSection .fnB0BW_pricingTable td:first-child{width:26%}.fnB0BW_pricingSection .fnB0BW_pricingTable th:nth-child(2),.fnB0BW_pricingSection .fnB0BW_pricingTable td:nth-child(2){width:22%}.fnB0BW_pricingSection .fnB0BW_pricingTable td.fnB0BW_pricingGroup{white-space:normal}.fnB0BW_pricingTable strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:600;display:block}.fnB0BW_pricingTable code{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;display:block;overflow:hidden}.fnB0BW_pricingTable small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block}.fnB0BW_tokenHero{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:flex-end;gap:16px;margin:-2px 0 14px;padding:10px 0 14px;display:flex}.fnB0BW_tokenEyebrow{color:var(--fcg-brand);font-weight:650;font-size:var(--fcg-font-caption);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:8px;display:flex}.fnB0BW_tokenPulse{corner-shape:round;background:var(--fcg-success);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-success) 18%, transparent);border-radius:50%}.fnB0BW_tokenTitle{font-size:var(--fcg-font-display);letter-spacing:-.03em;margin:3px 0 0;line-height:31px}.fnB0BW_tokenSourceTabs{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:2px;padding:3px;display:inline-flex}.fnB0BW_tokenSourceTabs button{min-height:30px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;border-radius:5px;padding:5px 14px}.fnB0BW_tokenSourceTabs button:hover{background:var(--fcg-bg-hover)}.fnB0BW_tokenSourceTabs .fnB0BW_tokenSourceActive{background:var(--fcg-bg-layer-2);color:var(--fcg-text-primary);box-shadow:var(--fcg-shadow-1);font-weight:600}.fnB0BW_tokenBalRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);align-items:center;gap:10px;margin-top:14px;padding:12px 16px;display:flex}.fnB0BW_tokenBalDot{corner-shape:round;background:var(--fcg-success);width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-success) 18%, transparent);border-radius:50%;flex:none}.fnB0BW_tokenBalDot[data-level=low]{background:var(--fcg-warn);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-warn) 18%, transparent)}.fnB0BW_tokenBalDot[data-level=danger]{background:var(--fcg-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-danger) 18%, transparent)}.fnB0BW_tokenBalAmount{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:20px;font-weight:700}.fnB0BW_tokenBalBadge{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 12%, transparent);color:var(--fcg-success);font-size:var(--fcg-font-caption);white-space:nowrap;padding:2px 9px;line-height:18px}.fnB0BW_tokenBalBadge[data-level=low]{background:color-mix(in srgb, var(--fcg-warn) 13%, transparent);color:var(--fcg-warn-label)}.fnB0BW_tokenBalBadge[data-level=danger]{background:color-mix(in srgb, var(--fcg-danger) 12%, transparent);color:var(--fcg-danger)}.fnB0BW_tokenBalUpdated{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenBalHint{min-width:0;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.fnB0BW_tokenBalRefresh{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:color var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease);background:0 0;margin-left:auto;padding:4px 12px}.fnB0BW_tokenBalRefresh:hover{border-color:var(--fcg-line-strong);color:var(--fcg-text-primary)}.fnB0BW_tokenSessionRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding:10px 16px;display:flex}.fnB0BW_tokenSessionRow strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWaste{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);flex-direction:column;gap:10px;margin-top:10px;padding:14px 16px;display:flex}.fnB0BW_tokenCacheWasteHead{align-items:baseline;gap:8px;display:flex}.fnB0BW_tokenCacheWasteHead strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body)}.fnB0BW_tokenCacheWasteClean{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_tokenCacheWasteStats{flex-wrap:wrap;gap:8px;display:flex}.fnB0BW_tokenCacheWasteStat{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);flex-direction:column;flex:120px;gap:2px;padding:8px 10px;display:flex}.fnB0BW_tokenCacheWasteStat span{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_tokenCacheWasteStat b{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteStat[data-tone=warn] b{color:var(--fcg-warn-label)}.fnB0BW_tokenCacheWasteCauses{flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_tokenCacheWasteCause{border-radius:var(--fcg-radius-full);font-size:var(--fcg-font-caption);background:color-mix(in srgb, var(--fcg-warn) 10%, transparent);color:var(--fcg-text-secondary);padding:2px 9px;line-height:18px}.fnB0BW_tokenCacheWasteCause[data-cause=idle-gap]{background:color-mix(in srgb, var(--fcg-warn) 10%, transparent)}.fnB0BW_tokenCacheWasteCause[data-cause=model-changed]{background:color-mix(in srgb, var(--fcg-danger) 10%, transparent)}.fnB0BW_tokenCacheWasteCause[data-cause=prefix-changed]{background:color-mix(in srgb, var(--fcg-text-tertiary) 12%, transparent)}.fnB0BW_tokenCacheWasteCause b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteWorst{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.fnB0BW_tokenCacheWasteWorst li{font-size:var(--fcg-font-caption);color:var(--fcg-text-secondary);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:baseline;gap:10px;display:grid}.fnB0BW_tokenCacheWasteWorstHead{color:var(--fcg-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.fnB0BW_tokenCacheWasteWorstModel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenCacheWasteWorstTokens{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteWorstCause{text-align:right;color:var(--fcg-text-tertiary)}.fnB0BW_tokenCacheWasteFoot{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:0;line-height:1.5}.fnB0BW_tokenSummaryGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:9px;display:grid}.fnB0BW_tokenMetric{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:4px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_tokenMetric span{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenMetric strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:22px;font-weight:700;line-height:26px;overflow:hidden}.fnB0BW_tokenMetric small{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.fnB0BW_tokenPanel{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);margin-top:12px;padding:14px 16px}.fnB0BW_tokenPanelHeader{justify-content:space-between;align-items:center;gap:10px;min-height:30px;margin-bottom:10px;display:flex}.fnB0BW_tokenPanelTitle{gap:2px;min-width:0;display:grid}.fnB0BW_tokenPanelHeader strong{font-size:15px}.fnB0BW_tokenPanelKicker{color:var(--fcg-brand);font:700 var(--fcg-font-caption)/16px var(--fcg-font-mono);letter-spacing:.11em}.fnB0BW_tokenRangePills{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);scrollbar-width:none;flex-wrap:nowrap;flex:0 auto;gap:2px;max-width:100%;padding:2px;display:inline-flex;overflow-x:auto}.fnB0BW_tokenRangePills::-webkit-scrollbar{display:none}.fnB0BW_tokenRangePills button{min-height:22px;color:var(--fcg-text-tertiary);cursor:pointer;font:var(--fcg-font-caption)/16px var(--fcg-font-mono);white-space:nowrap;background:0 0;border:0;border-radius:5px;flex:none;padding:2px 8px}.fnB0BW_tokenRangePills .fnB0BW_tokenRangeActive{background:var(--fcg-brand-subtle);color:var(--fcg-brand);font-weight:650}.fnB0BW_tokenHeatFilter{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:10px;display:flex}.fnB0BW_tokenHeatFilterLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-right:2px}.fnB0BW_tokenHeatFilterBtn{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);max-width:150px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;background:0 0;align-items:center;gap:6px;padding:2px 9px;line-height:18px;display:inline-flex;overflow:hidden}.fnB0BW_tokenHeatFilterBtn:hover{border-color:var(--fcg-line-strong);color:var(--fcg-text-primary)}.fnB0BW_tokenHeatFilterBtnActive{background:color-mix(in srgb, var(--model-color,var(--fcg-brand)) 14%, transparent);color:var(--model-color,var(--fcg-brand));border-color:#0000;font-weight:600}.fnB0BW_tokenPillDot{corner-shape:round;background:var(--model-color,var(--fcg-text-tertiary));border-radius:50%;flex:none;width:7px;height:7px}.fnB0BW_tokenChartHead{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.fnB0BW_tokenChartTitle{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-weight:600}.fnB0BW_tokenChartTotal{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-weight:650}.fnB0BW_tokenChartModel{color:var(--model-color,var(--fcg-brand));font:600 var(--fcg-font-caption)/18px var(--fcg-font-mono);margin-left:auto}.fnB0BW_tokenChartWrap{--fcg-chart-hit:#bcd7f8;--fcg-chart-miss:#7aaff0;--fcg-chart-out:#2f6fe0;--fcg-chart-tip-bg:#fff;--fcg-chart-tip-fg:#1a1a1c;--fcg-chart-tip-muted:#6b7280;min-width:0;position:relative}body[data-ds-dark-theme] .fnB0BW_tokenChartWrap{--fcg-chart-hit:#a9c8f0;--fcg-chart-miss:#5f97e8;--fcg-chart-out:#3d7ef0;--fcg-chart-tip-bg:#1f1f21;--fcg-chart-tip-fg:#f5f6f8;--fcg-chart-tip-muted:#a1a1a8}.fnB0BW_tokenChartPlot{position:relative}.fnB0BW_tokenChartGrid{background:var(--fcg-line-subtle);opacity:.8;pointer-events:none;height:1px;position:absolute;left:0;right:0}.fnB0BW_tokenChartGrid span{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:1;position:absolute;bottom:3px;left:0}.fnB0BW_tokenChartBar{background:var(--fcg-chart-out);transition:filter 90ms var(--fcg-ease);cursor:pointer;border-radius:3px 3px 0 0;position:absolute;bottom:0;overflow:hidden}.fnB0BW_tokenChartBar[data-active]{filter:brightness(1.14)}.fnB0BW_tokenChartBar[data-empty]{background:var(--fcg-line-subtle);opacity:.3}.fnB0BW_tokenChartCross{pointer-events:none;border-left:1px solid color-mix(in srgb, var(--fcg-text-tertiary) 40%, transparent);position:absolute;top:0;bottom:0}.fnB0BW_tokenChartSeg{width:100%;position:absolute;left:0}.fnB0BW_tokenChartSeg[data-top]{border-radius:3px 3px 0 0}.fnB0BW_tokenChartLegend{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 16px;margin-top:6px;line-height:18px;display:flex}.fnB0BW_tokenChartLegend span{align-items:center;gap:6px;min-width:0;display:inline-flex}.fnB0BW_tokenChartLegend i{border-radius:2px;flex:none;width:8px;height:8px}.fnB0BW_tokenChartTip{z-index:5;background:var(--fcg-chart-tip-bg);color:var(--fcg-chart-tip-muted);pointer-events:none;font-size:var(--fcg-font-caption);border-radius:8px;gap:3px;padding:8px 10px;line-height:14px;display:grid;position:absolute;box-shadow:0 10px 30px #00000047}.fnB0BW_tokenChartTipHead{color:var(--fcg-chart-tip-fg);justify-content:space-between;gap:14px;margin-bottom:2px;font-size:13px;display:flex}.fnB0BW_tokenChartTipHead b{font-variant-numeric:tabular-nums}.fnB0BW_tokenChartTipRow{align-items:center;gap:7px;min-width:0;display:flex}.fnB0BW_tokenChartTipRow b{color:var(--fcg-chart-tip-fg);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.fnB0BW_tokenChartSwatch{background:var(--fcg-line-strong);border-radius:2px;flex:none;width:8px;height:8px}.fnB0BW_tokenChartSwatch[data-tone=hit]{background:var(--fcg-chart-hit)}.fnB0BW_tokenChartSwatch[data-tone=miss]{background:var(--fcg-chart-miss)}.fnB0BW_tokenChartSwatch[data-tone=out]{background:var(--fcg-chart-out)}.fnB0BW_tokenChartSwatch[data-tone=req]{corner-shape:round;background:var(--fcg-chart-tip-muted);border-radius:50%}.fnB0BW_tokenChartAxis{height:18px;margin-top:2px;padding-left:46px;position:relative}.fnB0BW_tokenChartAxis span{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px;position:absolute;transform:translate(-50%)}.fnB0BW_tokenChartAxis span:first-child{transform:none}.fnB0BW_tokenChartAxis span:last-child{transform:translate(-100%)}.fnB0BW_tokenHeatTotals{border-top:1px solid var(--fcg-line-subtle);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-top:10px;padding-top:9px;display:flex}.fnB0BW_tokenHeatTotals b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;margin-right:3px;font-weight:650}.fnB0BW_tokenHeatDaily{margin-left:auto}.fnB0BW_tokenModelBars{gap:6px;margin-bottom:12px;display:grid}.fnB0BW_tokenModelBarRow{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;grid-template-columns:minmax(90px,180px) minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fnB0BW_tokenModelBarName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenModelBarTrack{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);height:4px;overflow:hidden}.fnB0BW_tokenModelBarTrack i{border-radius:inherit;background:var(--model-color,var(--fcg-brand));height:100%;display:block}.fnB0BW_tokenModelBarRow b{color:var(--fcg-text-primary);font-weight:600}.fnB0BW_tokenModelDot{corner-shape:round;background:var(--model-color,var(--fcg-text-tertiary));border-radius:50%;flex:none;width:7px;height:7px;margin-right:6px;display:inline-block}.fnB0BW_tokenNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line-subtle));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-warn) 8%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin-top:10px;padding:10px 14px}.fnB0BW_tokenGatewayTable{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);overflow-x:auto}.fnB0BW_tokenGatewayTable .fnB0BW_pricingTable{min-width:560px}.fnB0BW_tokenEmpty{min-height:90px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);place-items:center;display:grid}@media (width<=700px){.fnB0BW_tokenSummaryGrid{grid-template-columns:1fr 1fr}}@media (width<=520px){.fnB0BW_tokenHero{flex-direction:column;align-items:flex-start}.fnB0BW_tokenTitle{font-size:22px}.fnB0BW_tokenSummaryGrid{grid-template-columns:1fr}.fnB0BW_tokenPanelHeader{gap:6px}.fnB0BW_tokenChartTip{width:190px}.fnB0BW_tokenHeatTotals{gap:4px 10px}.fnB0BW_tokenHeatDaily{margin-left:0}.fnB0BW_tokenModelBarRow{grid-template-columns:minmax(70px,110px) minmax(0,1fr) auto}}.fnB0BW_pricePair{gap:1px;min-width:0;line-height:18px;display:grid}.fnB0BW_priceOriginal{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;text-decoration:line-through;overflow:hidden}.fnB0BW_pricingTable .fnB0BW_priceCurrent,.fnB0BW_pricingTable .fnB0BW_priceCurrentDiscount{color:var(--fcg-brand);font-size:var(--fcg-font-body);letter-spacing:-.01em;font-weight:650;display:block}.fnB0BW_pricingTable .fnB0BW_priceCurrentDiscount{color:var(--fcg-success)}.fnB0BW_pricingRequest{font-weight:600;color:var(--fcg-text-primary)!important}.fnB0BW_imageTiers{flex-wrap:wrap;align-items:start;gap:4px 18px;display:inline-flex}.fnB0BW_imageTier{gap:1px;min-width:0;display:grid}.fnB0BW_imageTierLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.02em;font-style:normal;font-weight:600}.fnB0BW_pricingEmpty{text-align:center;color:var(--fcg-text-tertiary)!important;padding:28px!important}.fnB0BW_order{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);gap:10px;margin-top:20px;padding:18px;display:grid}.fnB0BW_orderTitle{font-size:var(--fcg-font-body);letter-spacing:-.01em;font-weight:600}.fnB0BW_orderActions{flex-wrap:wrap;gap:7px;display:flex}.fnB0BW_qr{object-fit:contain;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:#fff;width:160px;max-width:100%;height:160px}.fnB0BW_qrWrap{justify-items:start;gap:8px;display:grid}.fnB0BW_textarea{resize:vertical;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);width:100%;min-height:72px;color:var(--fcg-text-primary);font:inherit;transition:border-color var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);outline:none;padding:10px 12px;line-height:1.5}.fnB0BW_textarea:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_qrText{overflow-wrap:anywhere;max-width:min(100%,520px);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}@media (width<=800px){.fnB0BW_marketplaceGrid,.fnB0BW_mcpMarketplaceGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.fnB0BW_poolManager{gap:12px;display:grid}.fnB0BW_poolToolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.fnB0BW_poolToolbarNote{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_poolToolbarActions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fnB0BW_poolToggle{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);align-items:center;gap:7px;display:inline-flex}.fnB0BW_poolToggle input{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_poolList{gap:10px;display:grid}.fnB0BW_poolAccount{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease);gap:10px;padding:12px;display:grid}.fnB0BW_poolAccount:hover{border-color:var(--fcg-line-strong);background:var(--fcg-bg-layer-2)}.fnB0BW_poolAccountHead{align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_poolIdentity{flex:auto;align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_poolMonogram{background:var(--fcg-brand-subtle);width:30px;height:30px;color:var(--fcg-brand);font:650 11px/1 var(--fcg-font-mono);letter-spacing:.02em;text-transform:uppercase;border-radius:9px;flex:none;place-items:center;display:grid}.fnB0BW_poolIdentityText{min-width:0}.fnB0BW_poolName{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-weight:600;display:block;overflow:hidden}.fnB0BW_poolSub{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;margin-top:2px;display:block;overflow:hidden}.fnB0BW_poolChips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fnB0BW_poolChip{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);white-space:nowrap;padding:2px 8px;font-size:11px;line-height:16px}.fnB0BW_poolChipLive{background:color-mix(in srgb, var(--fcg-success) 14%, transparent);color:var(--fcg-success)}.fnB0BW_poolChipWarn{background:color-mix(in srgb, var(--fcg-warn) 16%, transparent);color:var(--fcg-warn)}.fnB0BW_poolChipDanger{background:color-mix(in srgb, var(--fcg-danger) 14%, transparent);color:var(--fcg-danger)}.fnB0BW_poolMeterRow{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fnB0BW_poolMeterTrack{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);height:5px;display:block;overflow:hidden}.fnB0BW_poolMeterFill{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width .3s var(--fcg-ease);display:block}.fnB0BW_poolMeterFillWarn{background:var(--fcg-warn)}.fnB0BW_poolMeterFillDanger{background:var(--fcg-danger)}.fnB0BW_poolMetric{color:var(--fcg-text-secondary);font:600 var(--fcg-font-caption)/1 var(--fcg-font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.fnB0BW_poolActions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fnB0BW_poolFootnote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}@media (width<=520px){.fnB0BW_poolAccountHead{flex-wrap:wrap;align-items:flex-start}.fnB0BW_poolIdentity{flex-basis:100%}.fnB0BW_poolActions{justify-content:flex-start}.fnB0BW_mcpServerCard{flex-direction:column;align-items:flex-start}.fnB0BW_mcpServerActions{justify-content:flex-start}.fnB0BW_skillPanelHeader,.fnB0BW_pricingHeader{flex-direction:column;align-items:flex-start;gap:7px}.fnB0BW_pricingSearch{width:100%}.fnB0BW_marketplaceControls,.fnB0BW_mcpMarketplaceGrid,.fnB0BW_marketplaceGrid{grid-template-columns:1fr}.fnB0BW_communityGrid,.fnB0BW_capabilityCommunityGrid{grid-template-columns:1fr}.fnB0BW_capabilityCommunityHeader{flex-direction:column;align-items:flex-start}.fnB0BW_communityFilterBar{gap:8px}.fnB0BW_communityInstalledEntry{padding-inline:8px}.fnB0BW_routingCell{grid-template-columns:1fr;gap:8px}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_routingCopy{grid-template-columns:1fr;gap:2px}.fnB0BW_authForm,.fnB0BW_capabilityForm{grid-template-columns:1fr}.fnB0BW_authFull,.fnB0BW_capabilityFull{grid-column:auto}.fnB0BW_capabilityStats{grid-template-columns:1fr}.fnB0BW_accountRow{flex-direction:column;align-items:flex-start}.fnB0BW_accountActions{justify-content:flex-start}.fnB0BW_plans{grid-template-columns:repeat(2,minmax(0,1fr))}.fnB0BW_communityGrid,.fnB0BW_capabilityCommunityGrid{grid-template-columns:1fr}.fnB0BW_communityRestart{flex-direction:column;align-items:flex-start}.fnB0BW_communityModalBackdrop{padding:10px}.fnB0BW_communityModal{max-height:95vh;padding:14px}.fnB0BW_communityModalStats{flex-direction:column;align-items:flex-start;gap:4px}}@media (width<=360px){.fnB0BW_plans{grid-template-columns:1fr}}.fnB0BW_statGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(112px,1fr));display:grid}.fnB0BW_statCell{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:2px;min-width:0;padding:10px 12px;display:grid}.fnB0BW_statLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}.fnB0BW_statValue{color:var(--fcg-text-primary);font-size:var(--fcg-font-title);font-variant-numeric:tabular-nums;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:650;line-height:20px;overflow:hidden}.fnB0BW_details{margin-top:var(--fcg-space-2)}.fnB0BW_detailsSummary{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);padding:5px 0;line-height:18px}.fnB0BW_detailsSummary:hover{color:var(--fcg-text-primary)}.fnB0BW_detailsSummary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);border-radius:var(--fcg-radius-sm);outline:none}.fnB0BW_chipGrid{padding:var(--fcg-space-1) 0 var(--fcg-space-2);flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_statChip{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;gap:6px;padding:3px 9px;line-height:18px;display:inline-flex}.fnB0BW_statChip b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;font-weight:650}.fnB0BW_statChipIdle{color:var(--fcg-text-tertiary);opacity:.62}.fnB0BW_statChipIdle b{color:var(--fcg-text-tertiary)}@media (width<=520px){.fnB0BW_statGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.fnB0BW_toggleGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-2);grid-template-columns:repeat(auto-fit,minmax(168px,1fr));display:grid}.fnB0BW_toggleCard{justify-content:space-between;align-items:center;gap:var(--fcg-space-2);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;min-width:0;transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease);padding:9px 11px;display:flex}.fnB0BW_toggleCard:hover{border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.fnB0BW_toggleCardDisabled{cursor:not-allowed;opacity:.55}.fnB0BW_toggleCardDisabled:hover{border-color:var(--fcg-line-subtle);background:var(--fcg-bg-layer-1)}.fnB0BW_toggleCardText{gap:1px;min-width:0;display:grid}.fnB0BW_toggleCardText strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:18px;overflow:hidden}.fnB0BW_toggleCardText small{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.fnB0BW_toggleCardNote{color:var(--fcg-warn-label);font-size:11px;line-height:15px}.fnB0BW_tuningGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(132px,1fr));display:grid}.fnB0BW_tuningCell{gap:4px;min-width:0;display:grid}.fnB0BW_tuningLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}.fnB0BW_tuningHint{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.fnB0BW_tuningCell .fnB0BW_select{min-height:32px;padding:5px 9px}.fnB0BW_subGroup{gap:var(--fcg-space-2);margin-top:var(--fcg-space-4);display:grid}.fnB0BW_subGroupLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.02em;font-weight:600;line-height:18px}.fnB0BW_councilJob{gap:var(--fcg-space-3);display:grid}.fnB0BW_councilJobHead{align-items:baseline;gap:var(--fcg-space-2);flex-wrap:wrap;min-width:0;display:flex}.fnB0BW_councilJobId{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.fnB0BW_councilState{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;font-weight:600;line-height:18px}.fnB0BW_councilStateOk{background:var(--fcg-success-subtle);color:var(--fcg-success)}.fnB0BW_councilStateBlocked{background:var(--fcg-danger-subtle);color:var(--fcg-danger)}.fnB0BW_councilStateNowrap{white-space:nowrap;word-break:keep-all;flex:none;max-width:none}.fnB0BW_councilCallout{border-left:2px solid var(--fcg-line-strong);border-radius:0 var(--fcg-radius-sm) var(--fcg-radius-sm) 0;background:var(--fcg-bg-layer-2);gap:2px;padding:9px 11px;display:grid}.fnB0BW_councilCallout p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}.fnB0BW_councilCalloutBlocked{border-left-color:var(--fcg-danger);background:color-mix(in srgb, var(--fcg-danger) 6%, var(--fcg-bg-layer-2))}.fnB0BW_findingList{gap:6px;margin:0;padding:0;list-style:none;display:grid}.fnB0BW_findingRow{align-items:start;gap:var(--fcg-space-2);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);grid-template-columns:auto minmax(0,1fr) auto;padding:8px 10px;display:grid}.fnB0BW_findingBody{gap:2px;min-width:0;display:grid}.fnB0BW_findingTitle{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:600;line-height:18px}.fnB0BW_findingEvidence{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:17px}.fnB0BW_findingEngine{color:var(--fcg-text-tertiary);white-space:nowrap;flex:none;font-size:11px;line-height:18px}.fnB0BW_findingSeverity{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);color:var(--fcg-text-secondary);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;flex:none;padding:1px 7px;font-size:10px;font-weight:600;line-height:16px}@media (width<=520px){.fnB0BW_toggleGrid,.fnB0BW_tuningGrid{grid-template-columns:1fr}.fnB0BW_findingRow{grid-template-columns:auto minmax(0,1fr)}.fnB0BW_findingEngine{grid-column:2}}.fnB0BW_engineeringHeader{justify-content:space-between;align-items:flex-start;gap:var(--fcg-space-3);display:flex}.fnB0BW_engineeringHeader>div:first-child{gap:3px;min-width:0;display:grid}.fnB0BW_engineeringHeader strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg)}.fnB0BW_engineeringHeader small{max-width:620px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_engineeringKicker{color:var(--fcg-text-tertiary);letter-spacing:.08em;font-size:11px;font-weight:650}.fnB0BW_engineeringSummary{margin-top:var(--fcg-space-2);flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_engineeringSummary span{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 9px}.fnB0BW_engineeringSummary b{color:var(--fcg-text-primary)}.fnB0BW_actionMenu{position:relative}.fnB0BW_actionMenu summary{list-style:none}.fnB0BW_actionMenu summary::-webkit-details-marker{display:none}.fnB0BW_actionMenuPop{z-index:4;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);min-width:150px;box-shadow:var(--fcg-shadow-2);gap:4px;padding:6px;display:grid;position:absolute;top:calc(100% + 5px);right:0}.fnB0BW_actionMenuPop .fnB0BW_button{background:0 0;border-color:#0000;justify-content:flex-start}.fnB0BW_actionMenuPop .fnB0BW_button:hover{background:var(--fcg-bg-hover)}.fnB0BW_engineeringComposer{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);padding:var(--fcg-space-3);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);grid-template-columns:minmax(0,1fr) auto;display:grid}.fnB0BW_engineeringComposer .fnB0BW_input{min-width:0}@media (width<=520px){.fnB0BW_engineeringHeader{flex-direction:column}.fnB0BW_engineeringComposer{grid-template-columns:1fr}}.fnB0BW_composerLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin-bottom:5px;font-weight:600;line-height:16px;display:block}.fnB0BW_engineeringComposer>div{min-width:0}.fnB0BW_engineeringComposer>div:first-child,.fnB0BW_engineeringComposer>div:nth-child(2){align-content:start;display:grid}.fnB0BW_pricingTable .fnB0BW_priceFree{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 14%, transparent);color:var(--fcg-success);font-size:var(--fcg-font-caption);letter-spacing:.04em;padding:1px 7px;font-weight:700}.fnB0BW_paymentNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:flex-start;gap:10px;margin-top:14px;padding:10px 12px;line-height:19px;display:flex}.fnB0BW_invoicePanel{border-top:1px solid var(--fcg-line);gap:12px;margin-top:20px;padding-top:18px;display:grid}.fnB0BW_invoiceHead{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.fnB0BW_invoiceOrders{gap:6px;display:grid}.fnB0BW_invoiceOrderRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.fnB0BW_invoiceOrderText{gap:2px;min-width:0;display:grid}.fnB0BW_invoiceOrderText small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_invoiceForm{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.fnB0BW_invoiceForm label{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_invoiceForm .fnB0BW_input{min-width:0}.fnB0BW_invoiceActions{flex-wrap:wrap;gap:8px;display:flex}.fnB0BW_invoiceNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:8px 10px}.fnB0BW_invoicePreview{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;color:var(--fcg-text-primary);font-family:var(--fcg-font-mono);font-size:var(--fcg-font-caption);resize:vertical;padding:10px 12px;line-height:18px}.fnB0BW_invoicePanel>.fnB0BW_sectionMeta{line-height:18px}body .fnB0BW_payDialog{border:2px solid var(--pixel-ink);background:var(--pixel-face);width:min(392px,100vw - 36px);box-shadow:6px 6px 0 0 var(--pixel-ink);border-radius:0;padding-bottom:20px}.fnB0BW_payDialog h2{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);letter-spacing:-.012em;margin:0;font-weight:800}.fnB0BW_payDialog h2+button{border:1px solid var(--pixel-ink);color:var(--pixel-ink);border-radius:0}.fnB0BW_payDialog h2+button:hover{background:var(--pixel-recess)}.fnB0BW_payDialogBody{gap:12px;display:grid}.fnB0BW_payDialogHead{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);gap:3px;padding:12px;display:grid}.fnB0BW_payDialogLabel{color:var(--fcg-brand);font-family:var(--fcg-font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700}.fnB0BW_payDialogAmount{color:var(--fcg-text-primary);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:27px;font-weight:800;line-height:34px}.fnB0BW_payDialogMeta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:5px;display:flex}.fnB0BW_payDialogCredit{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_payDialogCredit strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;font-weight:700}.fnB0BW_payDialogState{border:1px solid var(--pixel-ink);background:var(--pixel-face);color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);letter-spacing:.06em;white-space:nowrap;clip-path:var(--pixel-chip);margin-left:auto;padding:2px 9px;font-size:10px;font-weight:700}.fnB0BW_payDialogSlot{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);justify-items:start;gap:10px;padding:12px;display:grid}.fnB0BW_payDialogQr{text-align:center;justify-items:center}.fnB0BW_payDialogSlot .fnB0BW_paymentNotice{border-width:2px;border-radius:0;margin-top:0}.fnB0BW_payDialogSlot .fnB0BW_payDialogElement{width:100%;min-height:0}.fnB0BW_payDialogPaid{border:2px solid color-mix(in srgb, var(--fcg-success) 42%, var(--pixel-ink));background:color-mix(in srgb, var(--fcg-success) 10%, var(--pixel-face));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:10px 12px}.fnB0BW_payDialogNote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px;display:block}.fnB0BW_payDialogFooter{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.fnB0BW_payDialogFooter .fnB0BW_button,.fnB0BW_payDialogSlot .fnB0BW_button{border:2px solid var(--pixel-ink);background:var(--pixel-face);min-height:40px;color:var(--fcg-text-primary);letter-spacing:.04em;box-shadow:0 3px 0 0 var(--pixel-ink);transition:background var(--fcg-fast) var(--fcg-ease), box-shadow 60ms linear, transform 60ms linear;border-radius:0;font-weight:700}.fnB0BW_payDialogFooter .fnB0BW_button:hover:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_button:hover:not(:disabled){background:var(--pixel-recess)}.fnB0BW_payDialogFooter .fnB0BW_button:active:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_button:active:not(:disabled){box-shadow:0 0 0 0 var(--pixel-ink);transform:translateY(3px)}.fnB0BW_payDialogFooter .fnB0BW_buttonPrimary,.fnB0BW_payDialogSlot .fnB0BW_buttonPrimary{border-color:var(--pixel-ink);background:var(--fcg-brand);color:var(--fcg-text-on-brand-fixed);box-shadow:inset 0 2px 0 0 #ffffff61, 0 3px 0 0 var(--pixel-ink)}.fnB0BW_payDialogFooter .fnB0BW_buttonPrimary:hover:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_buttonPrimary:hover:not(:disabled){border-color:var(--pixel-ink);background:var(--fcg-brand-strong);box-shadow:inset 0 2px 0 0 #ffffff7a, 0 4px 0 0 var(--pixel-ink)}.fnB0BW_payDialogFooter .fnB0BW_buttonDanger{color:var(--fcg-danger)}.fnB0BW_payDialogFooter .fnB0BW_button:focus-visible,.fnB0BW_payDialogSlot .fnB0BW_button:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 26%, transparent), 0 3px 0 0 var(--pixel-ink);outline:none}.fnB0BW_planReviewBody{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);max-height:300px;display:grid;overflow:auto}.fnB0BW_planReviewLine{width:100%;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-align:left;background:0 0;border:0;grid-template-columns:44px minmax(0,1fr);gap:8px;padding:2px 10px;line-height:18px;display:grid}.fnB0BW_planReviewLine:hover{background:var(--fcg-bg-hover)}.fnB0BW_planReviewLineSelected{background:var(--fcg-bg-active)}.fnB0BW_planReviewLineNumber{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);text-align:right}.fnB0BW_planReviewLineText{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.fnB0BW_planReviewRemark{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:8px;padding:10px 11px;display:grid}.fnB0BW_pickerVisibilityPanel{gap:var(--fcg-space-2);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);padding:12px;display:grid}.fnB0BW_pickerVisibilityPanel[data-open=false]{padding:9px 12px}.fnB0BW_pickerVisibilityToggle{width:100%;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:0;display:flex}.fnB0BW_pickerVisibilityToggle:hover{color:var(--fcg-text-primary)}.fnB0BW_pickerVisibilityToggle:focus-visible{border-radius:var(--fcg-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_pickerVisibilityGear{flex:none;align-items:center;display:inline-flex}.fnB0BW_pickerVisibilityToggleLabel{min-width:0;font-size:var(--fcg-font-caption);flex:auto;font-weight:620;line-height:18px}.fnB0BW_pickerVisibilityBadge{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-tertiary);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:600;line-height:16px}.fnB0BW_pickerVisibilityChevron{flex:none;align-items:center;transition:transform .12s;display:inline-flex}.fnB0BW_pickerVisibilityToggle[aria-expanded=true] .fnB0BW_pickerVisibilityChevron{transform:rotate(180deg)}.fnB0BW_pickerVisibilityMaster{cursor:pointer;align-items:center;gap:10px;display:flex}.fnB0BW_pickerVisibilityText{gap:2px;min-width:0;display:grid}.fnB0BW_pickerVisibilityText strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:620;line-height:18px}.fnB0BW_pickerVisibilityText small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_pickerVisibilityHead{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.fnB0BW_pickerVisibilityLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_pickerVisibilityActions{align-items:center;gap:10px;display:flex}.fnB0BW_pickerVisibilityLink{color:var(--fcg-brand);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0;line-height:18px}.fnB0BW_pickerVisibilityLink:hover{text-decoration:underline}.fnB0BW_pickerVisibilityLink:focus-visible{border-radius:var(--fcg-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_pickerVisibilityList{scrollbar-color:var(--fcg-line-strong) transparent;scrollbar-width:thin;gap:2px;max-height:224px;display:grid;overflow-y:auto}.fnB0BW_pickerVisibilityList[data-visible=false]{opacity:.5}.fnB0BW_pickerVisibilityRow{border-radius:var(--fcg-radius-sm);cursor:pointer;align-items:center;gap:8px;min-width:0;padding:4px 6px;display:flex}.fnB0BW_pickerVisibilityRow:hover{background:var(--fcg-bg-layer-2)}.fnB0BW_pickerVisibilityCheck{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;flex:none;margin:0}.fnB0BW_pickerVisibilityName{min-width:0;color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:11px;line-height:18px;overflow:hidden}.fnB0BW_pickerVisibilityPaid{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-danger) 12%, transparent);color:var(--fcg-danger);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:700;line-height:16px}.fnB0BW_pickerVisibilityFree{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 12%, transparent);color:var(--fcg-success);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:700;line-height:16px}.fnB0BW_pickerVisibilityEmpty{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}";
|
|
18443
|
+
const tagId$8 = "freecodego/settings-tab.module.css";
|
|
18444
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
|
|
18385
18445
|
const tag = document.createElement("style");
|
|
18386
18446
|
tag.dataset.plugin = "freecodego";
|
|
18387
|
-
tag.dataset.pluginCss = tagId$
|
|
18388
|
-
tag.textContent = css$
|
|
18447
|
+
tag.dataset.pluginCss = tagId$8;
|
|
18448
|
+
tag.textContent = css$8;
|
|
18389
18449
|
document.head.appendChild(tag);
|
|
18390
18450
|
}
|
|
18391
18451
|
var settings_tab_module_css_default = {
|
|
@@ -21633,13 +21693,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21633
21693
|
}
|
|
21634
21694
|
//#endregion
|
|
21635
21695
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/provider-card.module.css.mjs
|
|
21636
|
-
const css$
|
|
21637
|
-
const tagId$
|
|
21638
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
21696
|
+
const css$7 = "._166XFq_card{gap:var(--fcg-space-3);padding:var(--fcg-space-4);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);transition:border-color var(--fcg-fast) var(--fcg-ease);display:grid}._166XFq_card:hover{border-color:var(--fcg-line)}._166XFq_head{justify-content:space-between;align-items:flex-start;gap:var(--fcg-space-3);min-width:0;display:flex}._166XFq_identity{align-items:center;gap:var(--fcg-space-3);min-width:0;display:flex}._166XFq_mark{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);width:34px;height:34px;color:var(--fcg-text-secondary);flex:none;place-items:center;display:grid}._166XFq_names{gap:2px;min-width:0;display:grid}._166XFq_name{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:650;line-height:20px;overflow:hidden}._166XFq_title{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}._166XFq_status{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;flex:none;align-items:center;gap:6px;line-height:18px;display:inline-flex}._166XFq_statusDot{corner-shape:round;background:currentColor;border-radius:50%;width:6px;height:6px}._166XFq_statusLive{color:var(--fcg-success)}._166XFq_statusWarn{color:var(--fcg-warn-label)}._166XFq_statusIdle{color:var(--fcg-text-tertiary)}._166XFq_summary{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:18px}._166XFq_description{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}._166XFq_cloud{flex-wrap:wrap;gap:6px;display:flex}._166XFq_tag{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);max-width:100%;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;align-items:center;padding:3px 9px;line-height:18px;display:inline-flex;overflow:hidden}._166XFq_tagMono{font-family:var(--fcg-font-mono);font-size:11px}._166XFq_more{color:var(--fcg-text-tertiary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;align-self:flex-start;padding:0;line-height:18px}._166XFq_more:hover{color:var(--fcg-brand)}._166XFq_more:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);border-radius:var(--fcg-radius-sm);outline:none}._166XFq_actions{justify-content:flex-end;align-items:center;gap:var(--fcg-space-2);flex-wrap:wrap;display:flex}._166XFq_body{gap:var(--fcg-space-2);min-width:0;display:grid}@media (width<=520px){._166XFq_head{flex-direction:column;align-items:stretch}._166XFq_status{align-self:flex-start}}._166XFq_notice{border:1px solid color-mix(in srgb, var(--fcg-success) 28%, var(--fcg-line-subtle));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-success) 8%, var(--fcg-bg-layer-1));color:var(--fcg-success);font-size:var(--fcg-font-caption);align-items:center;gap:7px;padding:7px 9px;font-weight:600;line-height:18px;display:flex}._166XFq_noticeDot{corner-shape:round;background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}";
|
|
21697
|
+
const tagId$7 = "freecodego/provider-card.module.css";
|
|
21698
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
21639
21699
|
const tag = document.createElement("style");
|
|
21640
21700
|
tag.dataset.plugin = "freecodego";
|
|
21641
|
-
tag.dataset.pluginCss = tagId$
|
|
21642
|
-
tag.textContent = css$
|
|
21701
|
+
tag.dataset.pluginCss = tagId$7;
|
|
21702
|
+
tag.textContent = css$7;
|
|
21643
21703
|
document.head.appendChild(tag);
|
|
21644
21704
|
}
|
|
21645
21705
|
var provider_card_module_css_default = {
|
|
@@ -22061,7 +22121,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22061
22121
|
*/
|
|
22062
22122
|
/** Where the preference lives. Versioned: a future shape change must not be
|
|
22063
22123
|
* read as this one. */
|
|
22064
|
-
const STORAGE_KEY = "freecodego.modelPicker.visibility.v1";
|
|
22124
|
+
const STORAGE_KEY$1 = "freecodego.modelPicker.visibility.v1";
|
|
22065
22125
|
/** Document event that announces a change to every live reader. */
|
|
22066
22126
|
const MODEL_VISIBILITY_EVENT = "fcg:model-visibility-changed";
|
|
22067
22127
|
/** Nothing hidden: the picker as the Host composed it. */
|
|
@@ -22119,7 +22179,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22119
22179
|
}
|
|
22120
22180
|
return out;
|
|
22121
22181
|
}
|
|
22122
|
-
function storage() {
|
|
22182
|
+
function storage$1() {
|
|
22123
22183
|
try {
|
|
22124
22184
|
return globalThis.localStorage;
|
|
22125
22185
|
} catch {
|
|
@@ -22131,10 +22191,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22131
22191
|
* @returns the stored decisions, or the empty default when nothing is stored.
|
|
22132
22192
|
*/
|
|
22133
22193
|
function readModelPickerVisibility() {
|
|
22134
|
-
const store = storage();
|
|
22194
|
+
const store = storage$1();
|
|
22135
22195
|
if (store === void 0) return EMPTY_MODEL_PICKER_VISIBILITY;
|
|
22136
22196
|
try {
|
|
22137
|
-
const raw = store.getItem(STORAGE_KEY);
|
|
22197
|
+
const raw = store.getItem(STORAGE_KEY$1);
|
|
22138
22198
|
if (raw === null || raw === "") return EMPTY_MODEL_PICKER_VISIBILITY;
|
|
22139
22199
|
return normalizeModelPickerVisibility(JSON.parse(raw));
|
|
22140
22200
|
} catch {
|
|
@@ -22146,9 +22206,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22146
22206
|
* @param visibility - the decisions to store.
|
|
22147
22207
|
*/
|
|
22148
22208
|
function writeModelPickerVisibility(visibility) {
|
|
22149
|
-
const store = storage();
|
|
22209
|
+
const store = storage$1();
|
|
22150
22210
|
try {
|
|
22151
|
-
store?.setItem(STORAGE_KEY, JSON.stringify(normalizeModelPickerVisibility(visibility)));
|
|
22211
|
+
store?.setItem(STORAGE_KEY$1, JSON.stringify(normalizeModelPickerVisibility(visibility)));
|
|
22152
22212
|
} catch {}
|
|
22153
22213
|
document.dispatchEvent(new Event(MODEL_VISIBILITY_EVENT));
|
|
22154
22214
|
}
|
|
@@ -22158,7 +22218,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22158
22218
|
*/
|
|
22159
22219
|
function clearModelPickerVisibility() {
|
|
22160
22220
|
try {
|
|
22161
|
-
storage()?.removeItem(STORAGE_KEY);
|
|
22221
|
+
storage$1()?.removeItem(STORAGE_KEY$1);
|
|
22162
22222
|
} catch {}
|
|
22163
22223
|
document.dispatchEvent(new Event(MODEL_VISIBILITY_EVENT));
|
|
22164
22224
|
return EMPTY_MODEL_PICKER_VISIBILITY;
|
|
@@ -36924,13 +36984,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36924
36984
|
}
|
|
36925
36985
|
//#endregion
|
|
36926
36986
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/toolbar-actions.module.css.mjs
|
|
36927
|
-
const css$
|
|
36928
|
-
const tagId$
|
|
36929
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
36987
|
+
const css$6 = "._0YUfBa_action,._0YUfBa_engine{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:6px;display:inline-flex}._0YUfBa_action{cursor:pointer;padding:0 9px}._0YUfBa_action:hover{color:var(--fcg-text-primary);background:var(--fcg-bg-hover)}._0YUfBa_sessionDeleteError{z-index:61;border:1px solid color-mix(in srgb, var(--fcg-danger) 28%, transparent);border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-danger) 7%, var(--fcg-bg-layer-2));max-width:min(420px,100vw - 24px);color:var(--fcg-danger);font-size:var(--fcg-font-caption);box-shadow:var(--fcg-shadow-2);align-items:center;gap:8px;padding:8px 12px;line-height:18px;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%)}._0YUfBa_sessionDeleteError span{overflow-wrap:anywhere}._0YUfBa_sessionDeleteError button{color:inherit;cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:15px;line-height:1}._0YUfBa_engine{padding-left:9px}._0YUfBa_engineControl{align-items:center;display:inline-flex;position:relative}._0YUfBa_engineLabel{color:var(--fcg-text-tertiary)}._0YUfBa_engineSelect{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;outline:0;padding:4px 8px 4px 0}._0YUfBa_execution{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);min-height:24px;color:var(--fcg-text-tertiary);background:var(--fcg-bg-layer-2);font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;padding:0 8px;display:inline-flex}._0YUfBa_executionNative{border-color:color-mix(in srgb, var(--fcg-success) 42%, var(--fcg-line));color:var(--fcg-success);background:color-mix(in srgb, var(--fcg-success) 7%, var(--fcg-bg-layer-2))}._0YUfBa_engineNotice{z-index:20;border:1px solid color-mix(in srgb, var(--fcg-warn) 45%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);width:248px;color:var(--fcg-text-secondary);box-shadow:var(--fcg-shadow-2);font-size:var(--fcg-font-caption);grid-template-columns:1fr auto;gap:2px 10px;padding:10px 28px 10px 12px;line-height:1.45;display:grid;position:absolute;top:calc(100% + 8px);left:0}._0YUfBa_engineNotice strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption)}._0YUfBa_engineNotice span{grid-column:1/-1}._0YUfBa_engineNotice button{color:var(--fcg-text-tertiary);cursor:pointer;background:0 0;border:0;padding:0;font-size:17px;line-height:1;position:absolute;top:6px;right:7px}._0YUfBa_engineError{z-index:20;border:1px solid color-mix(in srgb, var(--fcg-danger) 32%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-danger) 7%, var(--fcg-bg-layer-2));width:248px;color:var(--fcg-danger);font-size:var(--fcg-font-caption);box-shadow:var(--fcg-shadow-2);overflow-wrap:anywhere;padding:9px 12px;line-height:1.45;position:absolute;top:calc(100% + 8px);left:0}._0YUfBa_engineError span{display:block}._0YUfBa_engineRetry{border:1px solid color-mix(in srgb, var(--fcg-danger) 32%, var(--fcg-line));border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:inherit;font:inherit;cursor:pointer;margin-top:6px;padding:2px 8px}._0YUfBa_engineRetry:hover{background:color-mix(in srgb, var(--fcg-danger) 12%, var(--fcg-bg-layer-2))}";
|
|
36988
|
+
const tagId$6 = "freecodego/toolbar-actions.module.css";
|
|
36989
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
36930
36990
|
const tag = document.createElement("style");
|
|
36931
36991
|
tag.dataset.plugin = "freecodego";
|
|
36932
|
-
tag.dataset.pluginCss = tagId$
|
|
36933
|
-
tag.textContent = css$
|
|
36992
|
+
tag.dataset.pluginCss = tagId$6;
|
|
36993
|
+
tag.textContent = css$6;
|
|
36934
36994
|
document.head.appendChild(tag);
|
|
36935
36995
|
}
|
|
36936
36996
|
var toolbar_actions_module_css_default = {
|
|
@@ -37006,13 +37066,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
37006
37066
|
}
|
|
37007
37067
|
//#endregion
|
|
37008
37068
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/web-search-provider-section.module.css.mjs
|
|
37009
|
-
const css$
|
|
37010
|
-
const tagId$
|
|
37011
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
37069
|
+
const css$5 = ".i0u2iW_section{border-top:1px solid var(--fcg-line-subtle);gap:6px;padding:16px 0 4px;display:grid}.i0u2iW_head{justify-content:space-between;align-items:center;gap:12px;display:flex}.i0u2iW_title{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);margin:0;font-weight:650;line-height:20px}.i0u2iW_hint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.i0u2iW_current{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}.i0u2iW_reset{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-secondary);font:inherit;font-size:var(--fcg-font-caption);cursor:pointer;padding:2px 10px}.i0u2iW_reset:hover{border-color:var(--fcg-line-strong,var(--fcg-line));color:var(--fcg-text-primary)}.i0u2iW_group{gap:4px;margin-top:6px;display:grid}.i0u2iW_provider{color:var(--fcg-text-tertiary);letter-spacing:.04em;text-transform:uppercase;font-size:11px}.i0u2iW_rows{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;display:grid}.i0u2iW_row{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);text-align:left;font:inherit;cursor:pointer;grid-template-columns:minmax(0,1fr);gap:1px;padding:6px 10px;display:grid}.i0u2iW_row:hover:not(:disabled){border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.i0u2iW_row:disabled{cursor:progress;opacity:.6}.i0u2iW_rowActive{border-color:color-mix(in srgb, var(--fcg-brand) 45%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-brand) 7%, var(--fcg-bg-layer-1));color:var(--fcg-text-primary)}.i0u2iW_rowLabel{color:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.i0u2iW_rowMeta{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.i0u2iW_done{color:var(--fcg-success);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.i0u2iW_problem{color:var(--fcg-danger);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}";
|
|
37070
|
+
const tagId$5 = "freecodego/web-search-provider-section.module.css";
|
|
37071
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
37012
37072
|
const tag = document.createElement("style");
|
|
37013
37073
|
tag.dataset.plugin = "freecodego";
|
|
37014
|
-
tag.dataset.pluginCss = tagId$
|
|
37015
|
-
tag.textContent = css$
|
|
37074
|
+
tag.dataset.pluginCss = tagId$5;
|
|
37075
|
+
tag.textContent = css$5;
|
|
37016
37076
|
document.head.appendChild(tag);
|
|
37017
37077
|
}
|
|
37018
37078
|
var web_search_provider_section_module_css_default = {
|
|
@@ -37374,13 +37434,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
37374
37434
|
}
|
|
37375
37435
|
//#endregion
|
|
37376
37436
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/design-section.module.css.mjs
|
|
37377
|
-
const css$
|
|
37378
|
-
const tagId$
|
|
37379
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
37437
|
+
const css$4 = ".sFfOKq_page{flex-direction:column;gap:18px;padding:4px 0 24px;display:flex}.sFfOKq_head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.sFfOKq_title{margin:0 0 6px;font-size:15px;font-weight:600}.sFfOKq_intro{color:var(--dsh-text-secondary,#8b93a1);max-width:62ch;margin:0;font-size:12px;line-height:1.6}.sFfOKq_list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.sFfOKq_row{border:1px solid var(--dsh-border,#2b3040);border-radius:10px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.sFfOKq_rowHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.sFfOKq_rowTitle{font-size:13px;font-weight:600}.sFfOKq_rowBody{color:var(--dsh-text-secondary,#8b93a1);white-space:pre-line;font-size:12px;line-height:1.65}.sFfOKq_meta{color:var(--dsh-text-tertiary,#6d7484);font-size:11px;line-height:1.6}.sFfOKq_tools{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.sFfOKq_tool{background:var(--dsh-surface-raised,#1d2130);font-family:var(--dsh-font-mono,ui-monospace, monospace);border-radius:5px;padding:2px 6px;font-size:10px}.sFfOKq_switch{cursor:pointer;flex:none;width:36px;height:20px;display:inline-flex;position:relative}.sFfOKq_switchInput{opacity:0;width:100%;height:100%;margin:0;position:absolute}.sFfOKq_track{background:var(--dsh-border,#39404f);pointer-events:none;border-radius:999px;width:100%;height:100%;transition:background .12s}.sFfOKq_track:after{content:\"\";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .12s;position:absolute;top:3px;left:3px}.sFfOKq_switchInput:checked+.sFfOKq_track{background:var(--dsh-accent,#438de7)}.sFfOKq_switchInput:checked+.sFfOKq_track:after{transform:translate(16px)}.sFfOKq_switchInput:disabled+.sFfOKq_track{cursor:not-allowed;opacity:.45}.sFfOKq_switchInput:focus-visible+.sFfOKq_track{outline:2px solid var(--dsh-accent,#438de7);outline-offset:2px}.sFfOKq_loading{color:var(--dsh-text-secondary,#8b93a1);font-size:12px}.sFfOKq_error{color:#e46c61;font-size:12px}";
|
|
37438
|
+
const tagId$4 = "freecodego/design-section.module.css";
|
|
37439
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
37380
37440
|
const tag = document.createElement("style");
|
|
37381
37441
|
tag.dataset.plugin = "freecodego";
|
|
37382
|
-
tag.dataset.pluginCss = tagId$
|
|
37383
|
-
tag.textContent = css$
|
|
37442
|
+
tag.dataset.pluginCss = tagId$4;
|
|
37443
|
+
tag.textContent = css$4;
|
|
37384
37444
|
document.head.appendChild(tag);
|
|
37385
37445
|
}
|
|
37386
37446
|
var design_section_module_css_default = {
|
|
@@ -40796,7 +40856,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40796
40856
|
* them would be the strip contradicting the session it describes — and these are
|
|
40797
40857
|
* the only poses whose words a reader meets at rest.
|
|
40798
40858
|
*/
|
|
40799
|
-
const zh$
|
|
40859
|
+
const zh$3 = {
|
|
40800
40860
|
idle: "空闲",
|
|
40801
40861
|
wink: "眨眼",
|
|
40802
40862
|
wide: "睁大眼",
|
|
@@ -40814,7 +40874,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40814
40874
|
alert: "等待你的确认"
|
|
40815
40875
|
};
|
|
40816
40876
|
/** {@link zh}, in English. */
|
|
40817
|
-
const en$
|
|
40877
|
+
const en$3 = {
|
|
40818
40878
|
idle: "Idle",
|
|
40819
40879
|
wink: "Wink",
|
|
40820
40880
|
wide: "Wide-eyed",
|
|
@@ -42719,13 +42779,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
42719
42779
|
}
|
|
42720
42780
|
//#endregion
|
|
42721
42781
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/companion/companion.module.css.mjs
|
|
42722
|
-
const css$
|
|
42723
|
-
const tagId$
|
|
42724
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
42782
|
+
const css$3 = ".fx4Y-W_root{box-sizing:border-box;width:calc(100% - var(--dsh-composer-side-clearance,16px) - var(--dsh-composer-side-clearance,16px));max-width:var(--dsh-composer-card-max-width,100%);padding:0 var(--dsh-composer-side-clearance,16px);gap:var(--fcg-space-3);flex:none;align-items:center;min-height:72px;margin:0 auto;display:flex}.fx4Y-W_mark{color:var(--fcg-text-primary);flex:none;display:block}.fx4Y-W_label{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-body);letter-spacing:.01em;white-space:nowrap;text-overflow:ellipsis;line-height:1.4;overflow:hidden}";
|
|
42783
|
+
const tagId$3 = "freecodego/companion.module.css";
|
|
42784
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
42725
42785
|
const tag = document.createElement("style");
|
|
42726
42786
|
tag.dataset.plugin = "freecodego";
|
|
42727
|
-
tag.dataset.pluginCss = tagId$
|
|
42728
|
-
tag.textContent = css$
|
|
42787
|
+
tag.dataset.pluginCss = tagId$3;
|
|
42788
|
+
tag.textContent = css$3;
|
|
42729
42789
|
document.head.appendChild(tag);
|
|
42730
42790
|
}
|
|
42731
42791
|
var companion_module_css_default = {
|
|
@@ -43397,8 +43457,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
43397
43457
|
*/
|
|
43398
43458
|
function installCompanion(ctx) {
|
|
43399
43459
|
ctx.effect(() => ctx.locale.register(NS$2, {
|
|
43400
|
-
zh: zh$
|
|
43401
|
-
en: en$
|
|
43460
|
+
zh: zh$3,
|
|
43461
|
+
en: en$3
|
|
43402
43462
|
}), "freecodego-ui: Companion");
|
|
43403
43463
|
const activity = createCompanionActivity(ctx.sessions);
|
|
43404
43464
|
ctx.effect(() => () => {
|
|
@@ -46251,13 +46311,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
46251
46311
|
const NS$1 = "freecodego.agent-progress";
|
|
46252
46312
|
//#endregion
|
|
46253
46313
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/agent-progress.module.css.mjs
|
|
46254
|
-
const css$
|
|
46255
|
-
const tagId$
|
|
46256
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
46314
|
+
const css$2 = ".PvOOxq_root{margin:var(--fcg-space-3) 0;border:1px solid var(--fcg-line-subtle);background:var(--fcg-bg-layer-1);border-radius:var(--fcg-radius-md);box-shadow:var(--fcg-shadow-1);font-size:var(--fcg-font-body);overflow:hidden}.PvOOxq_header{gap:var(--fcg-space-3);padding:var(--fcg-space-3) var(--fcg-space-4);border-bottom:1px solid var(--fcg-line-subtle);background:var(--fcg-bg-layer-2);align-items:center;display:flex}.PvOOxq_headerText{flex:1;gap:2px;min-width:0;display:grid}.PvOOxq_headerText strong{font-size:var(--fcg-font-body-lg);color:var(--fcg-text-primary);letter-spacing:-.01em;font-weight:600}.PvOOxq_headerMeta{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.PvOOxq_headerProgress{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);flex:none;width:72px;height:4px;overflow:hidden}.PvOOxq_headerProgressBar{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width var(--fcg-slow) var(--fcg-ease)}.PvOOxq_headerProgressDone{background:var(--fcg-success)}.PvOOxq_headerProgressFailed{background:var(--fcg-danger)}.PvOOxq_tree{padding:var(--fcg-space-2) var(--fcg-space-2) var(--fcg-space-3);gap:2px;display:grid}.PvOOxq_row{gap:var(--fcg-space-2);border-radius:var(--fcg-radius-sm);min-height:44px;transition:background var(--fcg-fast) var(--fcg-ease);align-items:stretch;display:flex}.PvOOxq_row:hover{background:var(--fcg-bg-hover)}.PvOOxq_stateCell{flex:none;justify-content:center;width:20px;padding-top:14px;display:flex}.PvOOxq_dot{corner-shape:round;background:var(--fcg-text-tertiary);border-radius:50%;width:8px;height:8px}.PvOOxq_dotRunning{background:var(--fcg-brand);animation:PvOOxq_fcg-agent-pulse 1.6s var(--fcg-ease) infinite}.PvOOxq_dotQueued{background:var(--fcg-text-tertiary)}.PvOOxq_dotStalled{background:var(--fcg-warn)}.PvOOxq_dotCompleted{background:var(--fcg-success)}.PvOOxq_dotFailed{background:var(--fcg-danger)}@keyframes PvOOxq_fcg-agent-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--fcg-brand) 45%, transparent)}70%{box-shadow:0 0 0 7px #0000}to{box-shadow:0 0 #0000}}.PvOOxq_contentButton{min-width:0;padding:var(--fcg-space-2) var(--fcg-space-1);color:inherit;text-align:left;cursor:pointer;font:inherit;background:0 0;border:0;flex:1;display:flex}.PvOOxq_contentButton:disabled{cursor:default}.PvOOxq_contentButton:not(:disabled):hover .PvOOxq_title strong{color:var(--fcg-brand)}.PvOOxq_content{flex:1;gap:3px;min-width:0;display:grid}.PvOOxq_title{gap:var(--fcg-space-2);align-items:center;min-width:0;display:flex}.PvOOxq_title strong{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-primary);transition:color var(--fcg-fast) var(--fcg-ease);font-weight:600;overflow:hidden}.PvOOxq_status{border-radius:var(--fcg-radius-full);color:var(--fcg-text-tertiary);background:var(--fcg-bg-tip);font-size:var(--fcg-font-caption);letter-spacing:.01em;flex:none;padding:1px 8px;line-height:17px}.PvOOxq_statusRunning{color:var(--fcg-brand);background:var(--fcg-brand-subtle)}.PvOOxq_statusCompleted{color:var(--fcg-success);background:var(--fcg-success-subtle)}.PvOOxq_statusFailed,.PvOOxq_statusCancelled{color:var(--fcg-danger);background:var(--fcg-danger-subtle)}.PvOOxq_statusStalled{color:var(--fcg-warn-label);background:var(--fcg-warn-subtle)}.PvOOxq_detail{gap:var(--fcg-space-2);color:var(--fcg-text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:var(--fcg-font-caption);align-items:baseline;display:flex;overflow:hidden}.PvOOxq_metrics{color:var(--fcg-text-caption);font-variant-numeric:tabular-nums;flex:none}.PvOOxq_activity{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);height:3px;overflow:hidden}.PvOOxq_activityBar{border-radius:inherit;background:linear-gradient(90deg, transparent, var(--fcg-brand), transparent);width:40%;height:100%;animation:PvOOxq_fcg-agent-indeterminate 1.4s var(--fcg-ease) infinite}@keyframes PvOOxq_fcg-agent-indeterminate{0%{transform:translate(-120%)}to{transform:translate(320%)}}.PvOOxq_error{color:var(--fcg-danger);white-space:normal;font-size:var(--fcg-font-caption)}.PvOOxq_todos{gap:var(--fcg-space-2);margin:var(--fcg-space-3) var(--fcg-space-4) 0;padding:var(--fcg-space-2) var(--fcg-space-3);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-tip);display:grid}.PvOOxq_todosHeader{gap:var(--fcg-space-2);align-items:center;display:flex}.PvOOxq_todosTitle{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;flex:none;font-weight:600}.PvOOxq_todosBar{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);flex:1;height:3px;overflow:hidden}.PvOOxq_todosBarFill{border-radius:inherit;background:var(--fcg-success);height:100%;transition:width var(--fcg-slow) var(--fcg-ease)}.PvOOxq_todoList{gap:2px;margin:0;padding:0;list-style:none;display:grid}.PvOOxq_todo{gap:var(--fcg-space-2);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:baseline;line-height:1.45;display:flex}.PvOOxq_todoMark{text-align:center;width:12px;color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;flex:none}.PvOOxq_todoText{overflow-wrap:anywhere;min-width:0}.PvOOxq_todoActive{color:var(--fcg-text-primary)}.PvOOxq_todoActive .PvOOxq_todoMark{color:var(--fcg-brand);font-weight:700}.PvOOxq_todoCompleted{color:var(--fcg-text-tertiary);text-decoration:line-through;text-decoration-color:var(--fcg-line-subtle)}.PvOOxq_todoCompleted .PvOOxq_todoMark{color:var(--fcg-success)}.PvOOxq_actions{align-self:center;gap:var(--fcg-space-1);padding-right:var(--fcg-space-2);flex:none;display:flex}.PvOOxq_actionButton{border-radius:var(--fcg-radius-full);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);cursor:pointer;transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;padding:3px 10px;line-height:18px}.PvOOxq_actionButton:hover:not(:disabled){background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.PvOOxq_actionButton:disabled{opacity:.5;cursor:default}.PvOOxq_actionStop:hover:not(:disabled){color:var(--fcg-danger);background:var(--dsw-alias-interactive-bg-hover-danger)}.PvOOxq_actionResume:hover:not(:disabled){color:var(--fcg-brand);background:var(--fcg-bg-hover)}";
|
|
46315
|
+
const tagId$2 = "freecodego/agent-progress.module.css";
|
|
46316
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
46257
46317
|
const tag = document.createElement("style");
|
|
46258
46318
|
tag.dataset.plugin = "freecodego";
|
|
46259
|
-
tag.dataset.pluginCss = tagId$
|
|
46260
|
-
tag.textContent = css$
|
|
46319
|
+
tag.dataset.pluginCss = tagId$2;
|
|
46320
|
+
tag.textContent = css$2;
|
|
46261
46321
|
document.head.appendChild(tag);
|
|
46262
46322
|
}
|
|
46263
46323
|
var agent_progress_module_css_default = {
|
|
@@ -46616,8 +46676,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
46616
46676
|
/** Register the durable event Definition and its keyed Chat renderer. */
|
|
46617
46677
|
function registerAgentProgressUi(ctx) {
|
|
46618
46678
|
ctx.effect(() => ctx.locale.register(NS$1, {
|
|
46619
|
-
zh: zh$
|
|
46620
|
-
en: en$
|
|
46679
|
+
zh: zh$2,
|
|
46680
|
+
en: en$2
|
|
46621
46681
|
}), "freecodego-ui: Agent progress");
|
|
46622
46682
|
ctx.uiConversation.events.register(progressDefinition);
|
|
46623
46683
|
ctx.inject([
|
|
@@ -46657,7 +46717,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
46657
46717
|
}, AgentProgressNodeView));
|
|
46658
46718
|
});
|
|
46659
46719
|
}
|
|
46660
|
-
const zh$
|
|
46720
|
+
const zh$2 = {
|
|
46661
46721
|
"summary.running": "{running}/{total} 个 Agent 正在工作",
|
|
46662
46722
|
"summary.finished": "{completed}/{total} 个 Agent 已完成",
|
|
46663
46723
|
"summary.failed": "{failed}/{total} 个 Agent 失败或取消",
|
|
@@ -46675,7 +46735,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
46675
46735
|
resume: "继续",
|
|
46676
46736
|
focusChain: "任务计划"
|
|
46677
46737
|
};
|
|
46678
|
-
const en$
|
|
46738
|
+
const en$2 = {
|
|
46679
46739
|
"summary.running": "{running}/{total} agents working",
|
|
46680
46740
|
"summary.finished": "{completed}/{total} agents finished",
|
|
46681
46741
|
"summary.failed": "{failed}/{total} agents failed or cancelled",
|
|
@@ -46695,8 +46755,170 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
46695
46755
|
};
|
|
46696
46756
|
//#endregion
|
|
46697
46757
|
//#region \0dsh-global-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/theme.css.mjs
|
|
46698
|
-
const css = "body{--fcg-space-1:4px;--fcg-space-2:8px;--fcg-space-3:12px;--fcg-space-4:16px;--fcg-space-5:20px;--fcg-space-6:24px;--fcg-space-8:32px;--fcg-radius-sm:6px;--fcg-radius-md:10px;--fcg-radius-lg:14px;--fcg-radius-full:999px;--fcg-font-caption:12px;--fcg-font-body:13px;--fcg-font-body-lg:14px;--fcg-font-title:15px;--fcg-font-section:20px;--fcg-font-display:28px;--fcg-font-mono:ui-monospace, \"SF Mono\", \"Cascadia Mono\", Consolas, monospace;--fcg-shadow-1:0 1px 2px #0f172a0d;--fcg-shadow-2:0 8px 24px #0f172a1f;--fcg-shadow-pop:0 12px 40px #0f172a33;--fcg-bg-base:var(--dsw-alias-bg-module-platform);--fcg-bg-layer-1:var(--dsw-alias-bg-layer-1);--fcg-bg-layer-2:var(--dsw-alias-bg-layer-2);--fcg-bg-layer-3:var(--dsw-alias-bg-layer-3);--fcg-bg-input:var(--dsw-specific-input-major);--fcg-bg-hover:var(--dsw-alias-interactive-bg-hover);--fcg-bg-active:var(--dsw-alias-interactive-bg-active);--fcg-bg-tip:var(--dsw-specific-tip);--fcg-line-subtle:var(--dsw-alias-border-l1);--fcg-line:var(--dsw-alias-border-l2);--fcg-line-strong:var(--dsw-alias-border-l4);--fcg-text-primary:var(--dsw-alias-label-primary);--fcg-text-secondary:var(--dsw-alias-label-secondary);--fcg-text-tertiary:var(--dsw-alias-label-tertiary);--fcg-text-caption:var(--dsw-alias-label-caption);--fcg-text-on-brand:var(--dsw-alias-label-primary-foreground);--fcg-text-on-brand-fixed:var(--dsw-static-neutral-bluish-00);--fcg-companion-halo:none;--fcg-brand:var(--dsw-static-deepseek-500);--fcg-brand-strong:var(--dsw-static-deepseek-600);--fcg-brand-subtle:var(--dsw-static-deepseek-100);--fcg-success:var(--dsw-alias-state-success-primary);--fcg-success-subtle:var(--dsw-alias-state-success-tertiary);--fcg-warn:var(--dsw-alias-state-warn-primary);--fcg-warn-label:var(--dsw-alias-state-warn-label);--fcg-warn-subtle:var(--dsw-alias-state-warn-tertiary);--fcg-danger:var(--dsw-alias-state-error-primary);--fcg-danger-subtle:var(--dsw-static-red-50);--fcg-btn-primary-fill:var(--dsw-alias-button-info-fill);--fcg-btn-primary-hover:var(--dsw-alias-button-info-hover);--fcg-btn-ghost-hover:var(--dsw-alias-interactive-bg-hover-solid);--fcg-btn-ghost-active:var(--dsw-alias-button-ghost-active-fill);--fcg-ease:cubic-bezier(.2, 0, 0, 1);--fcg-fast:.14s;--fcg-slow:.28s}body[data-ds-dark-theme]{--fcg-shadow-1:0 1px 2px #0006;--fcg-shadow-2:0 8px 24px #00000080;--fcg-shadow-pop:0 12px 40px #0009;--fcg-danger-subtle:var(--dsw-static-red-900);--fcg-brand-subtle:var(--dsw-static-deepseek-800);--fcg-companion-halo:drop-shadow(0 0 1px #ffffff73) drop-shadow(0 0 6px #fff3)}";
|
|
46699
|
-
const tagId = "freecodego/theme.css";
|
|
46758
|
+
const css$1 = "body{--fcg-space-1:4px;--fcg-space-2:8px;--fcg-space-3:12px;--fcg-space-4:16px;--fcg-space-5:20px;--fcg-space-6:24px;--fcg-space-8:32px;--fcg-radius-sm:6px;--fcg-radius-md:10px;--fcg-radius-lg:14px;--fcg-radius-full:999px;--fcg-font-caption:12px;--fcg-font-body:13px;--fcg-font-body-lg:14px;--fcg-font-title:15px;--fcg-font-section:20px;--fcg-font-display:28px;--fcg-font-mono:ui-monospace, \"SF Mono\", \"Cascadia Mono\", Consolas, monospace;--fcg-shadow-1:0 1px 2px #0f172a0d;--fcg-shadow-2:0 8px 24px #0f172a1f;--fcg-shadow-pop:0 12px 40px #0f172a33;--fcg-bg-base:var(--dsw-alias-bg-module-platform);--fcg-bg-layer-1:var(--dsw-alias-bg-layer-1);--fcg-bg-layer-2:var(--dsw-alias-bg-layer-2);--fcg-bg-layer-3:var(--dsw-alias-bg-layer-3);--fcg-bg-input:var(--dsw-specific-input-major);--fcg-bg-hover:var(--dsw-alias-interactive-bg-hover);--fcg-bg-active:var(--dsw-alias-interactive-bg-active);--fcg-bg-tip:var(--dsw-specific-tip);--fcg-line-subtle:var(--dsw-alias-border-l1);--fcg-line:var(--dsw-alias-border-l2);--fcg-line-strong:var(--dsw-alias-border-l4);--fcg-text-primary:var(--dsw-alias-label-primary);--fcg-text-secondary:var(--dsw-alias-label-secondary);--fcg-text-tertiary:var(--dsw-alias-label-tertiary);--fcg-text-caption:var(--dsw-alias-label-caption);--fcg-text-on-brand:var(--dsw-alias-label-primary-foreground);--fcg-text-on-brand-fixed:var(--dsw-static-neutral-bluish-00);--fcg-companion-halo:none;--fcg-brand:var(--dsw-static-deepseek-500);--fcg-brand-strong:var(--dsw-static-deepseek-600);--fcg-brand-subtle:var(--dsw-static-deepseek-100);--fcg-success:var(--dsw-alias-state-success-primary);--fcg-success-subtle:var(--dsw-alias-state-success-tertiary);--fcg-warn:var(--dsw-alias-state-warn-primary);--fcg-warn-label:var(--dsw-alias-state-warn-label);--fcg-warn-subtle:var(--dsw-alias-state-warn-tertiary);--fcg-danger:var(--dsw-alias-state-error-primary);--fcg-danger-subtle:var(--dsw-static-red-50);--fcg-btn-primary-fill:var(--dsw-alias-button-info-fill);--fcg-btn-primary-hover:var(--dsw-alias-button-info-hover);--fcg-btn-ghost-hover:var(--dsw-alias-interactive-bg-hover-solid);--fcg-btn-ghost-active:var(--dsw-alias-button-ghost-active-fill);--fcg-ease:cubic-bezier(.2, 0, 0, 1);--fcg-fast:.14s;--fcg-slow:.28s}body[data-ds-dark-theme]{--fcg-shadow-1:0 1px 2px #0006;--fcg-shadow-2:0 8px 24px #00000080;--fcg-shadow-pop:0 12px 40px #0009;--fcg-danger-subtle:var(--dsw-static-red-900);--fcg-brand-subtle:var(--dsw-static-deepseek-800);--fcg-companion-halo:drop-shadow(0 0 1px #ffffff73) drop-shadow(0 0 6px #fff3)}";
|
|
46759
|
+
const tagId$1 = "freecodego/theme.css";
|
|
46760
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
46761
|
+
const tag = document.createElement("style");
|
|
46762
|
+
tag.dataset.plugin = "freecodego";
|
|
46763
|
+
tag.dataset.pluginCss = tagId$1;
|
|
46764
|
+
tag.textContent = css$1;
|
|
46765
|
+
document.head.appendChild(tag);
|
|
46766
|
+
}
|
|
46767
|
+
//#endregion
|
|
46768
|
+
//#region src/client/announcement-preference.ts
|
|
46769
|
+
/**
|
|
46770
|
+
* Where the announcement bar's own decisions are kept.
|
|
46771
|
+
*
|
|
46772
|
+
* Two things live here, and both are the *client's* rather than the account's:
|
|
46773
|
+
* whether the bar is shown at all, and which announcements this browser has
|
|
46774
|
+
* already closed. The second exists because closing a notice is a round trip —
|
|
46775
|
+
* the read record is the backend's, so it holds on the account's other machines
|
|
46776
|
+
* (see `account-remotes.ts`), and this list is what keeps a notice closed when
|
|
46777
|
+
* that round trip fails. Without it, a failed acknowledgement would resurrect
|
|
46778
|
+
* the bar on the next poll, which reads as "the close button does not work".
|
|
46779
|
+
*
|
|
46780
|
+
* The list is bounded and pruned against what the backend still returns, so it
|
|
46781
|
+
* cannot grow forever: an announcement that has ended, or whose account read
|
|
46782
|
+
* record has caught up, is forgotten the next time the bar polls.
|
|
46783
|
+
*
|
|
46784
|
+
* @module client/announcement-preference
|
|
46785
|
+
*/
|
|
46786
|
+
/** Where the preference lives. Versioned: a future shape change must not be read as this one. */
|
|
46787
|
+
const STORAGE_KEY = "freecodego.announcements.v1";
|
|
46788
|
+
/** Document event that announces a change to every live reader. */
|
|
46789
|
+
const ANNOUNCEMENT_PREFERENCE_EVENT = "fcg:announcement-preference-changed";
|
|
46790
|
+
/** The default: the bar is shown, nothing is dismissed. */
|
|
46791
|
+
const DEFAULT_ANNOUNCEMENT_PREFERENCE = {
|
|
46792
|
+
bar: true,
|
|
46793
|
+
dismissed: []
|
|
46794
|
+
};
|
|
46795
|
+
/** Keep only well-formed ids, so one corrupt entry cannot silence an unrelated notice. */
|
|
46796
|
+
function normalizeDismissed(value) {
|
|
46797
|
+
if (!Array.isArray(value)) return [];
|
|
46798
|
+
const ids = [];
|
|
46799
|
+
for (const entry of value) {
|
|
46800
|
+
if (typeof entry !== "number" || !Number.isFinite(entry) || entry <= 0) continue;
|
|
46801
|
+
if (ids.includes(entry)) continue;
|
|
46802
|
+
ids.push(entry);
|
|
46803
|
+
}
|
|
46804
|
+
return ids.slice(-50);
|
|
46805
|
+
}
|
|
46806
|
+
/**
|
|
46807
|
+
* Normalize any parsed document into the current shape.
|
|
46808
|
+
* @param value - the parsed `localStorage` document.
|
|
46809
|
+
* @returns the decisions it carries, with unknown fields dropped.
|
|
46810
|
+
*/
|
|
46811
|
+
function normalizeAnnouncementPreference(value) {
|
|
46812
|
+
if (typeof value !== "object" || value === null) return DEFAULT_ANNOUNCEMENT_PREFERENCE;
|
|
46813
|
+
const record = value;
|
|
46814
|
+
return {
|
|
46815
|
+
bar: record.bar !== false,
|
|
46816
|
+
dismissed: normalizeDismissed(record.dismissed)
|
|
46817
|
+
};
|
|
46818
|
+
}
|
|
46819
|
+
function storage() {
|
|
46820
|
+
try {
|
|
46821
|
+
return globalThis.localStorage;
|
|
46822
|
+
} catch {
|
|
46823
|
+
return;
|
|
46824
|
+
}
|
|
46825
|
+
}
|
|
46826
|
+
/**
|
|
46827
|
+
* Read the stored decisions.
|
|
46828
|
+
* @returns the stored decisions, or the default when nothing is stored.
|
|
46829
|
+
*/
|
|
46830
|
+
function readAnnouncementPreference() {
|
|
46831
|
+
const store = storage();
|
|
46832
|
+
if (store === void 0) return DEFAULT_ANNOUNCEMENT_PREFERENCE;
|
|
46833
|
+
try {
|
|
46834
|
+
const raw = store.getItem(STORAGE_KEY);
|
|
46835
|
+
if (raw === null || raw === "") return DEFAULT_ANNOUNCEMENT_PREFERENCE;
|
|
46836
|
+
return normalizeAnnouncementPreference(JSON.parse(raw));
|
|
46837
|
+
} catch {
|
|
46838
|
+
return DEFAULT_ANNOUNCEMENT_PREFERENCE;
|
|
46839
|
+
}
|
|
46840
|
+
}
|
|
46841
|
+
/**
|
|
46842
|
+
* Persist decisions and tell every live reader.
|
|
46843
|
+
* @param preference - the decisions to store.
|
|
46844
|
+
*/
|
|
46845
|
+
function writeAnnouncementPreference(preference) {
|
|
46846
|
+
const normalized = normalizeAnnouncementPreference(preference);
|
|
46847
|
+
try {
|
|
46848
|
+
storage()?.setItem(STORAGE_KEY, JSON.stringify(normalized));
|
|
46849
|
+
} catch {}
|
|
46850
|
+
document.dispatchEvent(new Event(ANNOUNCEMENT_PREFERENCE_EVENT));
|
|
46851
|
+
}
|
|
46852
|
+
/**
|
|
46853
|
+
* Turn the bar on or off.
|
|
46854
|
+
* @param visible - whether the bar may be rendered.
|
|
46855
|
+
*/
|
|
46856
|
+
function setAnnouncementBarVisible(visible) {
|
|
46857
|
+
const current = readAnnouncementPreference();
|
|
46858
|
+
if (current.bar === visible) return;
|
|
46859
|
+
writeAnnouncementPreference({
|
|
46860
|
+
...current,
|
|
46861
|
+
bar: visible
|
|
46862
|
+
});
|
|
46863
|
+
}
|
|
46864
|
+
/**
|
|
46865
|
+
* Remember that this browser closed one announcement.
|
|
46866
|
+
*
|
|
46867
|
+
* The bound is applied by dropping the oldest entries, so a busy account keeps
|
|
46868
|
+
* the narrow window of notices it is actually being shown.
|
|
46869
|
+
* @param announcementId - the announcement the user closed.
|
|
46870
|
+
*/
|
|
46871
|
+
function dismissAnnouncement(announcementId) {
|
|
46872
|
+
const current = readAnnouncementPreference();
|
|
46873
|
+
if (current.dismissed.includes(announcementId)) return;
|
|
46874
|
+
writeAnnouncementPreference({
|
|
46875
|
+
...current,
|
|
46876
|
+
dismissed: [...current.dismissed, announcementId]
|
|
46877
|
+
});
|
|
46878
|
+
}
|
|
46879
|
+
/**
|
|
46880
|
+
* Forget dismissals the backend no longer returns.
|
|
46881
|
+
*
|
|
46882
|
+
* The list is the client's memory of its own round trips, and every entry it
|
|
46883
|
+
* still holds is an id the bar keeps consulting; once the backend stops
|
|
46884
|
+
* returning an announcement — it ended, or the read record caught up — the entry
|
|
46885
|
+
* has no work left to do. Called on every poll so the document stays as small as
|
|
46886
|
+
* the notices it is about.
|
|
46887
|
+
* @param liveIds - the ids the backend just returned.
|
|
46888
|
+
*/
|
|
46889
|
+
function pruneAnnouncements(liveIds) {
|
|
46890
|
+
const current = readAnnouncementPreference();
|
|
46891
|
+
if (current.dismissed.length === 0) return;
|
|
46892
|
+
const live = new Set(liveIds);
|
|
46893
|
+
const kept = current.dismissed.filter((id) => live.has(id));
|
|
46894
|
+
if (kept.length === current.dismissed.length) return;
|
|
46895
|
+
writeAnnouncementPreference({
|
|
46896
|
+
...current,
|
|
46897
|
+
dismissed: kept
|
|
46898
|
+
});
|
|
46899
|
+
}
|
|
46900
|
+
/**
|
|
46901
|
+
* Run a listener whenever the decisions change from anywhere in the page.
|
|
46902
|
+
*
|
|
46903
|
+
* Both writers are in the same document — the bar's close button and the page
|
|
46904
|
+
* that holds the switch — so the event is the whole channel. The `storage` event
|
|
46905
|
+
* is included for a second browser tab, where the same preference is the same
|
|
46906
|
+
* user's intent.
|
|
46907
|
+
* @param listener - called after every change.
|
|
46908
|
+
* @returns a disposer that removes the listeners.
|
|
46909
|
+
*/
|
|
46910
|
+
function subscribeAnnouncementPreference(listener) {
|
|
46911
|
+
document.addEventListener(ANNOUNCEMENT_PREFERENCE_EVENT, listener);
|
|
46912
|
+
window.addEventListener("storage", listener);
|
|
46913
|
+
return () => {
|
|
46914
|
+
document.removeEventListener(ANNOUNCEMENT_PREFERENCE_EVENT, listener);
|
|
46915
|
+
window.removeEventListener("storage", listener);
|
|
46916
|
+
};
|
|
46917
|
+
}
|
|
46918
|
+
//#endregion
|
|
46919
|
+
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/announcement-bar.module.css.mjs
|
|
46920
|
+
const css = "._8Q7yhG_bar{left:var(--dsh-windows-sidebar-width,0px);right:0;top:calc(var(--dsh-windows-titlebar-height,0px) + 40px);z-index:2;pointer-events:auto;border-bottom:1px solid #0000;border-bottom-left-radius:6px;align-items:center;gap:8px;height:28px;padding:0 8px;font-size:12px;line-height:1;display:flex;position:absolute}[data-platform=darwin] ._8Q7yhG_bar{top:var(--dsh-frame-top-clearance,48px);left:0}._8Q7yhG_bonus{color:#d8ffcd;background:linear-gradient(90deg,#052a0d 0%,#0b3d16 55%,#052a0d 100%);border-bottom-color:#39ff14;box-shadow:0 2px 14px #39ff1459}._8Q7yhG_bonus ._8Q7yhG_badge{color:#04220a;background:#39ff14}._8Q7yhG_urgent{color:#ffdcd8;background:linear-gradient(90deg,#380709 0%,#4d0b0f 55%,#380709 100%);border-bottom-color:#ff3b30;box-shadow:0 2px 16px #ff3b3073}._8Q7yhG_urgent ._8Q7yhG_badge{color:#fdecea;background:#ff3b30}._8Q7yhG_badge{letter-spacing:.02em;border-radius:4px;flex:none;padding:2px 6px;font-size:11px;font-weight:600}._8Q7yhG_track{flex:auto;align-items:center;min-width:0;display:flex;overflow:hidden}._8Q7yhG_marquee{white-space:nowrap;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding-left:100%;animation:linear infinite _8Q7yhG_announcement-marquee;display:inline-block}._8Q7yhG_marquee:hover{text-decoration:underline}@keyframes _8Q7yhG_announcement-marquee{0%{transform:translate(0)}to{transform:translate(-100%)}}@media (prefers-reduced-motion:reduce){._8Q7yhG_marquee{text-overflow:ellipsis;max-width:100%;padding-left:0;animation:none;overflow:hidden}}._8Q7yhG_action{color:inherit;font:inherit;cursor:pointer;opacity:.9;background:#00000040;border:1px solid;border-radius:4px;flex:none;padding:3px 8px}._8Q7yhG_action:hover{opacity:1}._8Q7yhG_document{max-height:52vh;overflow:auto}._8Q7yhG_rows{max-height:52vh;margin:0;padding:0;list-style:none;overflow:auto}._8Q7yhG_row{border-bottom:1px solid var(--dsw-alias-border-secondary,#7f7f7f33);align-items:center;gap:8px;padding:6px 0;display:flex}._8Q7yhG_rowTitle{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;flex:auto;align-items:center;gap:6px;display:flex;overflow:hidden}._8Q7yhG_rowTitle:hover{text-decoration:underline}._8Q7yhG_rowState{opacity:.7;flex:none;font-size:11px}._8Q7yhG_dot{border-radius:50%;flex:none;width:7px;height:7px}._8Q7yhG_dotBonus{background:#39ff14}._8Q7yhG_dotUrgent{background:#ff3b30}._8Q7yhG_switch{opacity:.85;align-items:center;gap:6px;font-size:12px;display:flex}._8Q7yhG_footerButtons{justify-content:flex-end;gap:8px;display:flex}._8Q7yhG_primary{background:var(--dsw-alias-bg-brand,#1f6feb);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:6px;padding:6px 14px}._8Q7yhG_empty{opacity:.8;margin:0}._8Q7yhG_section{flex-direction:column;gap:6px;display:flex}._8Q7yhG_sectionHint{opacity:.72;font-size:12px}";
|
|
46921
|
+
const tagId = "freecodego/announcement-bar.module.css";
|
|
46700
46922
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
46701
46923
|
const tag = document.createElement("style");
|
|
46702
46924
|
tag.dataset.plugin = "freecodego";
|
|
@@ -46704,6 +46926,446 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
46704
46926
|
tag.textContent = css;
|
|
46705
46927
|
document.head.appendChild(tag);
|
|
46706
46928
|
}
|
|
46929
|
+
var announcement_bar_module_css_default = {
|
|
46930
|
+
"action": "_8Q7yhG_action",
|
|
46931
|
+
"announcement-marquee": "_8Q7yhG_announcement-marquee",
|
|
46932
|
+
"badge": "_8Q7yhG_badge",
|
|
46933
|
+
"bar": "_8Q7yhG_bar",
|
|
46934
|
+
"bonus": "_8Q7yhG_bonus",
|
|
46935
|
+
"document": "_8Q7yhG_document",
|
|
46936
|
+
"dot": "_8Q7yhG_dot",
|
|
46937
|
+
"dotBonus": "_8Q7yhG_dotBonus",
|
|
46938
|
+
"dotUrgent": "_8Q7yhG_dotUrgent",
|
|
46939
|
+
"empty": "_8Q7yhG_empty",
|
|
46940
|
+
"footerButtons": "_8Q7yhG_footerButtons",
|
|
46941
|
+
"marquee": "_8Q7yhG_marquee",
|
|
46942
|
+
"primary": "_8Q7yhG_primary",
|
|
46943
|
+
"row": "_8Q7yhG_row",
|
|
46944
|
+
"rowState": "_8Q7yhG_rowState",
|
|
46945
|
+
"rowTitle": "_8Q7yhG_rowTitle",
|
|
46946
|
+
"rows": "_8Q7yhG_rows",
|
|
46947
|
+
"section": "_8Q7yhG_section",
|
|
46948
|
+
"sectionHint": "_8Q7yhG_sectionHint",
|
|
46949
|
+
"switch": "_8Q7yhG_switch",
|
|
46950
|
+
"track": "_8Q7yhG_track",
|
|
46951
|
+
"urgent": "_8Q7yhG_urgent"
|
|
46952
|
+
};
|
|
46953
|
+
//#endregion
|
|
46954
|
+
//#region src/client/announcement-bar.tsx
|
|
46955
|
+
/**
|
|
46956
|
+
* The backend's announcements, on the client's own surface.
|
|
46957
|
+
*
|
|
46958
|
+
* One channel: the top bar. Every announcement the backend returns rides it, and
|
|
46959
|
+
* the notify mode is the only emphasis signal the announcement schema carries —
|
|
46960
|
+
* there is no colour or priority field — so it decides the tone instead (green
|
|
46961
|
+
* for a quiet 静默 notice, red for a 弹窗 one). The plugin deliberately opens no
|
|
46962
|
+
* dialog of its own: a notice nobody asked for must not take the screen, and the
|
|
46963
|
+
* full text is a click away, here and in the settings section.
|
|
46964
|
+
*
|
|
46965
|
+
* The bar shows one announcement at a time — the newest — and offers the rest
|
|
46966
|
+
* behind a count, because a stripe that cycles through everything at once is a
|
|
46967
|
+
* stripe nobody reads.
|
|
46968
|
+
*
|
|
46969
|
+
* Closing a notice is the account's record, not this browser's: the click calls
|
|
46970
|
+
* the backend's mark-read route through the Host, so the same announcement stays
|
|
46971
|
+
* closed on the account's other machines and the administrator's read report
|
|
46972
|
+
* counts it. The client keeps its own dismissal list as a fallback (see
|
|
46973
|
+
* {@link ./announcement-preference}) so a failed round trip cannot resurrect a
|
|
46974
|
+
* notice the user already closed.
|
|
46975
|
+
*
|
|
46976
|
+
* The settings section renders the same feed as a list, which is also how a user
|
|
46977
|
+
* who hid the bar gets it back — a switch that lives only on the surface it
|
|
46978
|
+
* hides would be a one-way door.
|
|
46979
|
+
*
|
|
46980
|
+
* @module client/announcement-bar
|
|
46981
|
+
*/
|
|
46982
|
+
/**
|
|
46983
|
+
* How often the bar asks the backend for notices.
|
|
46984
|
+
*
|
|
46985
|
+
* The plugin has no push channel — announcements are a plain authenticated GET —
|
|
46986
|
+
* so "in time" is this poll. Long enough that the request is invisible in a
|
|
46987
|
+
* normal session, short enough that a 福利 posted while someone works is seen
|
|
46988
|
+
* without a reload.
|
|
46989
|
+
*/
|
|
46990
|
+
const POLL_MS = 12e4;
|
|
46991
|
+
const zh$1 = {
|
|
46992
|
+
barLabel: "公告",
|
|
46993
|
+
bonus: "福利",
|
|
46994
|
+
urgent: "重要",
|
|
46995
|
+
details: "详情",
|
|
46996
|
+
more: (count) => `还有 ${count} 条`,
|
|
46997
|
+
close: (title) => `关闭公告「${title}」`,
|
|
46998
|
+
dismiss: "关闭",
|
|
46999
|
+
gotIt: "知道了",
|
|
47000
|
+
listTitle: "公告",
|
|
47001
|
+
listDetail: "关闭即标记为已读,账号在其它设备上也不会再提示。",
|
|
47002
|
+
markRead: "标记已读",
|
|
47003
|
+
read: "已读",
|
|
47004
|
+
unread: "未读",
|
|
47005
|
+
showBar: "显示顶部公告栏",
|
|
47006
|
+
showBarHint: "公告会在对话页顶部滚动显示。",
|
|
47007
|
+
settingsTitle: "公告",
|
|
47008
|
+
settingsDetail: "后端发布的通知。关闭后账号在其它设备上也不会再提示,仍可在此重新查看。",
|
|
47009
|
+
empty: "当前没有公告。",
|
|
47010
|
+
closeDialog: "关闭",
|
|
47011
|
+
codeCopy: "复制",
|
|
47012
|
+
codeCopied: "已复制",
|
|
47013
|
+
footnotes: "脚注"
|
|
47014
|
+
};
|
|
47015
|
+
const en$1 = {
|
|
47016
|
+
barLabel: "Announcement",
|
|
47017
|
+
bonus: "Update",
|
|
47018
|
+
urgent: "Important",
|
|
47019
|
+
details: "Details",
|
|
47020
|
+
more: (count) => `${count} more`,
|
|
47021
|
+
close: (title) => `Close announcement “${title}”`,
|
|
47022
|
+
dismiss: "Close",
|
|
47023
|
+
gotIt: "Got it",
|
|
47024
|
+
listTitle: "Announcements",
|
|
47025
|
+
listDetail: "Closing one marks it read, so the account stops showing it on your other devices.",
|
|
47026
|
+
markRead: "Mark read",
|
|
47027
|
+
read: "Read",
|
|
47028
|
+
unread: "Unread",
|
|
47029
|
+
showBar: "Show the top announcement bar",
|
|
47030
|
+
showBarHint: "Announcements scroll along the top of the conversation.",
|
|
47031
|
+
settingsTitle: "Announcements",
|
|
47032
|
+
settingsDetail: "Notices published by the backend. Closing one marks it read for the account; it stays listed here.",
|
|
47033
|
+
empty: "There are no announcements right now.",
|
|
47034
|
+
closeDialog: "Close",
|
|
47035
|
+
codeCopy: "Copy",
|
|
47036
|
+
codeCopied: "Copied",
|
|
47037
|
+
footnotes: "Footnotes"
|
|
47038
|
+
};
|
|
47039
|
+
/**
|
|
47040
|
+
* The live feed both surfaces render.
|
|
47041
|
+
*
|
|
47042
|
+
* One poll, one dismissal path, one preference reader: the bar and the settings
|
|
47043
|
+
* list are two views of the same account data, and a second copy of either would
|
|
47044
|
+
* be the place they disagree.
|
|
47045
|
+
* @param props - the backend calls and the locale to render in.
|
|
47046
|
+
* @returns the announcements, the client preference, and the two mutators.
|
|
47047
|
+
*/
|
|
47048
|
+
function useAnnouncementFeed({ list, markRead, language }) {
|
|
47049
|
+
const text = language === "zh" ? zh$1 : en$1;
|
|
47050
|
+
const [items, setItems] = (0, react.useState)([]);
|
|
47051
|
+
const [preference, setPreference] = (0, react.useState)(readAnnouncementPreference);
|
|
47052
|
+
(0, react.useEffect)(() => subscribeAnnouncementPreference(() => {
|
|
47053
|
+
setPreference(readAnnouncementPreference());
|
|
47054
|
+
}), []);
|
|
47055
|
+
const poll = (0, react.useCallback)(async () => {
|
|
47056
|
+
let fetched;
|
|
47057
|
+
try {
|
|
47058
|
+
fetched = await list();
|
|
47059
|
+
} catch {
|
|
47060
|
+
return;
|
|
47061
|
+
}
|
|
47062
|
+
const ordered = [...fetched].sort((left, right) => right.id - left.id);
|
|
47063
|
+
setItems(ordered);
|
|
47064
|
+
pruneAnnouncements(ordered.map((item) => item.id));
|
|
47065
|
+
setPreference(readAnnouncementPreference());
|
|
47066
|
+
}, [list]);
|
|
47067
|
+
(0, react.useEffect)(() => {
|
|
47068
|
+
poll();
|
|
47069
|
+
const timer = globalThis.setInterval(() => {
|
|
47070
|
+
poll();
|
|
47071
|
+
}, POLL_MS);
|
|
47072
|
+
const onVisible = () => {
|
|
47073
|
+
if (document.visibilityState === "visible") poll();
|
|
47074
|
+
};
|
|
47075
|
+
document.addEventListener("visibilitychange", onVisible);
|
|
47076
|
+
return () => {
|
|
47077
|
+
globalThis.clearInterval(timer);
|
|
47078
|
+
document.removeEventListener("visibilitychange", onVisible);
|
|
47079
|
+
};
|
|
47080
|
+
}, [poll]);
|
|
47081
|
+
const close = (0, react.useCallback)((announcement) => {
|
|
47082
|
+
dismissAnnouncement(announcement.id);
|
|
47083
|
+
setPreference(readAnnouncementPreference());
|
|
47084
|
+
setItems((current) => current.map((item) => item.id === announcement.id ? {
|
|
47085
|
+
...item,
|
|
47086
|
+
readAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
47087
|
+
} : item));
|
|
47088
|
+
markRead(announcement.id).catch(() => false);
|
|
47089
|
+
}, [markRead]);
|
|
47090
|
+
const setBar = (0, react.useCallback)((visible) => {
|
|
47091
|
+
setAnnouncementBarVisible(visible);
|
|
47092
|
+
setPreference(readAnnouncementPreference());
|
|
47093
|
+
}, []);
|
|
47094
|
+
return {
|
|
47095
|
+
text,
|
|
47096
|
+
items,
|
|
47097
|
+
unread: (0, react.useMemo)(() => items.filter((item) => item.readAt === void 0 && !preference.dismissed.includes(item.id)), [items, preference.dismissed]),
|
|
47098
|
+
preference,
|
|
47099
|
+
close,
|
|
47100
|
+
setBar,
|
|
47101
|
+
poll
|
|
47102
|
+
};
|
|
47103
|
+
}
|
|
47104
|
+
/** The Markdown chrome a rendered announcement needs; the plugin supplies its own copy. */
|
|
47105
|
+
function useMarkdownLabels(text) {
|
|
47106
|
+
return (0, react.useMemo)(() => ({
|
|
47107
|
+
code: {
|
|
47108
|
+
copyLabel: text.codeCopy,
|
|
47109
|
+
copiedLabel: text.codeCopied
|
|
47110
|
+
},
|
|
47111
|
+
footnotes: text.footnotes
|
|
47112
|
+
}), [text]);
|
|
47113
|
+
}
|
|
47114
|
+
/** One line for the moving bar: the title, then as much of the body as fits without markup. */
|
|
47115
|
+
function marqueeOf(announcement) {
|
|
47116
|
+
const body = (0, _deepseek_ai_dsh_client_ui_primitives.extractMarkdownPlainText)(announcement.content, { mode: "all" }).replace(/\s+/gu, " ").trim();
|
|
47117
|
+
return body === "" ? announcement.title : `${announcement.title}:${body}`;
|
|
47118
|
+
}
|
|
47119
|
+
/**
|
|
47120
|
+
* The announcement bar.
|
|
47121
|
+
*
|
|
47122
|
+
* Rendered from a root-level shell slot, so one instance owns the whole app: an
|
|
47123
|
+
* announcement is not tied to a session, and a second registration would show
|
|
47124
|
+
* the same notice twice.
|
|
47125
|
+
* @param props - the backend calls and the locale to render in.
|
|
47126
|
+
* @returns the bar, the dialogs a click opens, or null while there is nothing to show.
|
|
47127
|
+
*/
|
|
47128
|
+
function AnnouncementBar(props) {
|
|
47129
|
+
const { text, items, unread, preference, close, setBar } = useAnnouncementFeed(props);
|
|
47130
|
+
const [panel, setPanel] = (0, react.useState)();
|
|
47131
|
+
const labels = useMarkdownLabels(text);
|
|
47132
|
+
const current = unread[0];
|
|
47133
|
+
const detail = panel?.kind === "detail" ? items.find((item) => item.id === panel.id) : void 0;
|
|
47134
|
+
/** The close path the bar and both dialogs share: leaving a notice on screen after the user acknowledged it is the one thing a close button must not do. */
|
|
47135
|
+
const dismiss = (0, react.useCallback)((announcement) => {
|
|
47136
|
+
close(announcement);
|
|
47137
|
+
setPanel((currentPanel) => currentPanel !== void 0 && currentPanel.kind === "detail" && currentPanel.id === announcement.id ? void 0 : currentPanel);
|
|
47138
|
+
}, [close]);
|
|
47139
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
47140
|
+
current !== void 0 && preference.bar ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
47141
|
+
className: `${announcement_bar_module_css_default.bar} ${current.notifyMode === "popup" ? announcement_bar_module_css_default.urgent : announcement_bar_module_css_default.bonus}`,
|
|
47142
|
+
role: "status",
|
|
47143
|
+
"aria-label": text.barLabel,
|
|
47144
|
+
children: [
|
|
47145
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
47146
|
+
className: announcement_bar_module_css_default.badge,
|
|
47147
|
+
children: current.notifyMode === "popup" ? text.urgent : text.bonus
|
|
47148
|
+
}),
|
|
47149
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
47150
|
+
className: announcement_bar_module_css_default.track,
|
|
47151
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
47152
|
+
className: announcement_bar_module_css_default.marquee,
|
|
47153
|
+
type: "button",
|
|
47154
|
+
title: text.details,
|
|
47155
|
+
style: { animationDuration: `${Math.min(60, Math.max(14, Math.round(marqueeOf(current).length * .4)))}s` },
|
|
47156
|
+
onClick: () => {
|
|
47157
|
+
setPanel({
|
|
47158
|
+
kind: "detail",
|
|
47159
|
+
id: current.id
|
|
47160
|
+
});
|
|
47161
|
+
},
|
|
47162
|
+
children: marqueeOf(current)
|
|
47163
|
+
})
|
|
47164
|
+
}),
|
|
47165
|
+
unread.length > 1 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
47166
|
+
className: announcement_bar_module_css_default.action,
|
|
47167
|
+
type: "button",
|
|
47168
|
+
onClick: () => {
|
|
47169
|
+
setPanel({ kind: "list" });
|
|
47170
|
+
},
|
|
47171
|
+
children: text.more(unread.length - 1)
|
|
47172
|
+
}) : null,
|
|
47173
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
47174
|
+
className: announcement_bar_module_css_default.action,
|
|
47175
|
+
type: "button",
|
|
47176
|
+
"aria-label": text.close(current.title),
|
|
47177
|
+
onClick: () => {
|
|
47178
|
+
dismiss(current);
|
|
47179
|
+
},
|
|
47180
|
+
children: text.dismiss
|
|
47181
|
+
})
|
|
47182
|
+
]
|
|
47183
|
+
}) : null,
|
|
47184
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
47185
|
+
open: detail !== void 0,
|
|
47186
|
+
onClose: () => {
|
|
47187
|
+
setPanel(void 0);
|
|
47188
|
+
},
|
|
47189
|
+
title: detail?.title ?? "",
|
|
47190
|
+
closeLabel: text.closeDialog,
|
|
47191
|
+
footer: detail === void 0 ? void 0 : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
47192
|
+
className: announcement_bar_module_css_default.switch,
|
|
47193
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
47194
|
+
type: "checkbox",
|
|
47195
|
+
checked: preference.bar,
|
|
47196
|
+
onChange: (event) => {
|
|
47197
|
+
setBar(event.target.checked);
|
|
47198
|
+
}
|
|
47199
|
+
}), text.showBar]
|
|
47200
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
47201
|
+
className: announcement_bar_module_css_default.footerButtons,
|
|
47202
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
47203
|
+
className: announcement_bar_module_css_default.primary,
|
|
47204
|
+
type: "button",
|
|
47205
|
+
onClick: () => {
|
|
47206
|
+
if (detail !== void 0) dismiss(detail);
|
|
47207
|
+
},
|
|
47208
|
+
children: text.gotIt
|
|
47209
|
+
})
|
|
47210
|
+
})] }),
|
|
47211
|
+
children: detail === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
47212
|
+
className: announcement_bar_module_css_default.document,
|
|
47213
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, {
|
|
47214
|
+
text: detail.content,
|
|
47215
|
+
labels,
|
|
47216
|
+
variant: "compact"
|
|
47217
|
+
})
|
|
47218
|
+
})
|
|
47219
|
+
}),
|
|
47220
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
47221
|
+
open: panel?.kind === "list",
|
|
47222
|
+
onClose: () => {
|
|
47223
|
+
setPanel(void 0);
|
|
47224
|
+
},
|
|
47225
|
+
title: text.listTitle,
|
|
47226
|
+
closeLabel: text.closeDialog,
|
|
47227
|
+
description: text.listDetail,
|
|
47228
|
+
footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
47229
|
+
className: announcement_bar_module_css_default.switch,
|
|
47230
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
47231
|
+
type: "checkbox",
|
|
47232
|
+
checked: preference.bar,
|
|
47233
|
+
onChange: (event) => {
|
|
47234
|
+
setBar(event.target.checked);
|
|
47235
|
+
}
|
|
47236
|
+
}), text.showBar]
|
|
47237
|
+
}),
|
|
47238
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AnnouncementRows, {
|
|
47239
|
+
items,
|
|
47240
|
+
text,
|
|
47241
|
+
onOpen: (id) => {
|
|
47242
|
+
setPanel({
|
|
47243
|
+
kind: "detail",
|
|
47244
|
+
id
|
|
47245
|
+
});
|
|
47246
|
+
},
|
|
47247
|
+
onMarkRead: (announcement) => {
|
|
47248
|
+
dismiss(announcement);
|
|
47249
|
+
}
|
|
47250
|
+
})
|
|
47251
|
+
})
|
|
47252
|
+
] });
|
|
47253
|
+
}
|
|
47254
|
+
/** The list body both the bar's dialog and the settings section render. */
|
|
47255
|
+
function AnnouncementRows({ items, text, onOpen, onMarkRead }) {
|
|
47256
|
+
if (items.length === 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
47257
|
+
className: announcement_bar_module_css_default.empty,
|
|
47258
|
+
children: text.empty
|
|
47259
|
+
});
|
|
47260
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
|
|
47261
|
+
className: announcement_bar_module_css_default.rows,
|
|
47262
|
+
children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
47263
|
+
className: announcement_bar_module_css_default.row,
|
|
47264
|
+
children: [
|
|
47265
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
47266
|
+
className: announcement_bar_module_css_default.rowTitle,
|
|
47267
|
+
type: "button",
|
|
47268
|
+
onClick: () => {
|
|
47269
|
+
onOpen(item.id);
|
|
47270
|
+
},
|
|
47271
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
47272
|
+
className: `${announcement_bar_module_css_default.dot} ${item.notifyMode === "popup" ? announcement_bar_module_css_default.dotUrgent : announcement_bar_module_css_default.dotBonus}`,
|
|
47273
|
+
"aria-hidden": "true"
|
|
47274
|
+
}), item.title]
|
|
47275
|
+
}),
|
|
47276
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
47277
|
+
className: announcement_bar_module_css_default.rowState,
|
|
47278
|
+
children: item.readAt === void 0 ? text.unread : text.read
|
|
47279
|
+
}),
|
|
47280
|
+
item.readAt === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
47281
|
+
className: announcement_bar_module_css_default.action,
|
|
47282
|
+
type: "button",
|
|
47283
|
+
onClick: () => {
|
|
47284
|
+
onMarkRead(item);
|
|
47285
|
+
},
|
|
47286
|
+
children: text.markRead
|
|
47287
|
+
}) : null
|
|
47288
|
+
]
|
|
47289
|
+
}, item.id))
|
|
47290
|
+
});
|
|
47291
|
+
}
|
|
47292
|
+
/**
|
|
47293
|
+
* The settings section: the announcement history, and the switch that brings the
|
|
47294
|
+
* bar back.
|
|
47295
|
+
*
|
|
47296
|
+
* This is the other half of "hide the bar" — the bar's own switch disappears with
|
|
47297
|
+
* the bar, so a section that lists the same feed is what keeps a hidden notice
|
|
47298
|
+
* reachable rather than lost.
|
|
47299
|
+
* @param props - the backend calls and the locale to render in.
|
|
47300
|
+
* @returns the section's rows and its switch.
|
|
47301
|
+
*/
|
|
47302
|
+
function AnnouncementSettingsSection(props) {
|
|
47303
|
+
const { text, items, preference, close, setBar } = useAnnouncementFeed(props);
|
|
47304
|
+
const [openId, setOpenId] = (0, react.useState)();
|
|
47305
|
+
const labels = useMarkdownLabels(text);
|
|
47306
|
+
const detail = openId === void 0 ? void 0 : items.find((item) => item.id === openId);
|
|
47307
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
47308
|
+
className: announcement_bar_module_css_default.section,
|
|
47309
|
+
children: [
|
|
47310
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
47311
|
+
className: announcement_bar_module_css_default.switch,
|
|
47312
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
47313
|
+
type: "checkbox",
|
|
47314
|
+
checked: preference.bar,
|
|
47315
|
+
onChange: (event) => {
|
|
47316
|
+
setBar(event.target.checked);
|
|
47317
|
+
}
|
|
47318
|
+
}), text.showBar]
|
|
47319
|
+
}),
|
|
47320
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
47321
|
+
className: announcement_bar_module_css_default.sectionHint,
|
|
47322
|
+
children: text.showBarHint
|
|
47323
|
+
}),
|
|
47324
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
47325
|
+
className: announcement_bar_module_css_default.sectionHint,
|
|
47326
|
+
children: text.settingsDetail
|
|
47327
|
+
}),
|
|
47328
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(AnnouncementRows, {
|
|
47329
|
+
items,
|
|
47330
|
+
text,
|
|
47331
|
+
onOpen: (id) => {
|
|
47332
|
+
setOpenId(id);
|
|
47333
|
+
},
|
|
47334
|
+
onMarkRead: (announcement) => {
|
|
47335
|
+
close(announcement);
|
|
47336
|
+
}
|
|
47337
|
+
}),
|
|
47338
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
47339
|
+
open: detail !== void 0,
|
|
47340
|
+
onClose: () => {
|
|
47341
|
+
setOpenId(void 0);
|
|
47342
|
+
},
|
|
47343
|
+
title: detail?.title ?? "",
|
|
47344
|
+
closeLabel: text.closeDialog,
|
|
47345
|
+
footer: detail === void 0 ? void 0 : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
47346
|
+
className: announcement_bar_module_css_default.footerButtons,
|
|
47347
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
47348
|
+
className: announcement_bar_module_css_default.primary,
|
|
47349
|
+
type: "button",
|
|
47350
|
+
onClick: () => {
|
|
47351
|
+
close(detail);
|
|
47352
|
+
setOpenId(void 0);
|
|
47353
|
+
},
|
|
47354
|
+
children: detail.readAt === void 0 ? text.gotIt : text.closeDialog
|
|
47355
|
+
})
|
|
47356
|
+
}),
|
|
47357
|
+
children: detail === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
47358
|
+
className: announcement_bar_module_css_default.document,
|
|
47359
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, {
|
|
47360
|
+
text: detail.content,
|
|
47361
|
+
labels,
|
|
47362
|
+
variant: "compact"
|
|
47363
|
+
})
|
|
47364
|
+
})
|
|
47365
|
+
})
|
|
47366
|
+
]
|
|
47367
|
+
});
|
|
47368
|
+
}
|
|
46707
47369
|
//#endregion
|
|
46708
47370
|
//#region src/client/index.ts
|
|
46709
47371
|
const NS = "settings.freecodego";
|
|
@@ -46756,6 +47418,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
46756
47418
|
*/
|
|
46757
47419
|
const zh = {
|
|
46758
47420
|
tab: "FreeCodeGo",
|
|
47421
|
+
announcements: "公告",
|
|
46759
47422
|
"language.switch": "切换中英文",
|
|
46760
47423
|
engineShort: "引擎",
|
|
46761
47424
|
engineHint: "选择新会话使用的 Agent 引擎",
|
|
@@ -46884,6 +47547,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
46884
47547
|
*/
|
|
46885
47548
|
const en = {
|
|
46886
47549
|
tab: "FreeCodeGo",
|
|
47550
|
+
announcements: "Announcements",
|
|
46887
47551
|
"language.switch": "Switch language",
|
|
46888
47552
|
engineShort: "Engine",
|
|
46889
47553
|
engineHint: "Choose the Agent engine for new sessions",
|
|
@@ -47842,6 +48506,37 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
47842
48506
|
disposeSkill?.();
|
|
47843
48507
|
};
|
|
47844
48508
|
});
|
|
48509
|
+
const announcementFeed = {
|
|
48510
|
+
list: async () => {
|
|
48511
|
+
const result = await backendCall("accountAnnouncements");
|
|
48512
|
+
return result.ok ? result.value : [];
|
|
48513
|
+
},
|
|
48514
|
+
markRead: async (announcementId) => {
|
|
48515
|
+
const result = await backendCall("accountMarkAnnouncementRead", announcementId);
|
|
48516
|
+
return result.ok ? result.value : false;
|
|
48517
|
+
}
|
|
48518
|
+
};
|
|
48519
|
+
ctx.inject(["slots"], (scope) => scope.slots.inject("shell.overlay", () => scope.slots.register({
|
|
48520
|
+
name: "shell.overlay",
|
|
48521
|
+
id: "freecodego-announcements",
|
|
48522
|
+
order: 5,
|
|
48523
|
+
locale: NS,
|
|
48524
|
+
inject: () => ({
|
|
48525
|
+
...announcementFeed,
|
|
48526
|
+
language: settingsLanguage()
|
|
48527
|
+
})
|
|
48528
|
+
}, AnnouncementBar)));
|
|
48529
|
+
ctx.inject(["slots"], (scope) => scope.slots.inject("settings.section", () => scope.slots.register({
|
|
48530
|
+
name: "settings.section",
|
|
48531
|
+
id: "freecodego-announcements",
|
|
48532
|
+
order: 36,
|
|
48533
|
+
label: () => t("announcements"),
|
|
48534
|
+
locale: NS,
|
|
48535
|
+
inject: () => ({
|
|
48536
|
+
...announcementFeed,
|
|
48537
|
+
language: settingsLanguage()
|
|
48538
|
+
})
|
|
48539
|
+
}, AnnouncementSettingsSection)));
|
|
47845
48540
|
ctx.inject(["slots", "sessions"], (scope) => scope.slots.inject("settings.section", () => {
|
|
47846
48541
|
let disposeEngineering;
|
|
47847
48542
|
let registrationEpoch = 0;
|