mandat 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +293 -3
  3. package/dist/approvals/approvals.d.ts +136 -0
  4. package/dist/approvals/approvals.js +262 -0
  5. package/dist/bridge.d.ts +38 -0
  6. package/dist/bridge.js +117 -0
  7. package/dist/cli/args.d.ts +9 -0
  8. package/dist/cli/args.js +39 -0
  9. package/dist/cli/bin.d.ts +2 -0
  10. package/dist/cli/bin.js +3 -0
  11. package/dist/cli/main.d.ts +1 -0
  12. package/dist/cli/main.js +649 -0
  13. package/dist/cli/templates.d.ts +91 -0
  14. package/dist/cli/templates.js +57 -0
  15. package/dist/client.d.ts +54 -0
  16. package/dist/client.js +88 -0
  17. package/dist/controlplane/config.d.ts +48 -0
  18. package/dist/controlplane/config.js +33 -0
  19. package/dist/controlplane/console/.claude-flow/neural/patterns.json +402 -0
  20. package/dist/controlplane/console/.claude-flow/neural/stats.json +6 -0
  21. package/dist/controlplane/console/.claude-flow/policy/ledger-anchors.json +3 -0
  22. package/dist/controlplane/console/.claude-flow/policy/state.json +54 -0
  23. package/dist/controlplane/console/app.css +93 -0
  24. package/dist/controlplane/console/app.js +330 -0
  25. package/dist/controlplane/console/index.html +70 -0
  26. package/dist/controlplane/server.d.ts +17 -0
  27. package/dist/controlplane/server.js +427 -0
  28. package/dist/guard/guard.d.ts +154 -0
  29. package/dist/guard/guard.js +290 -0
  30. package/dist/guard/pinning.d.ts +46 -0
  31. package/dist/guard/pinning.js +49 -0
  32. package/dist/guard/remote.d.ts +78 -0
  33. package/dist/guard/remote.js +185 -0
  34. package/dist/index.d.ts +43 -0
  35. package/dist/index.js +67 -0
  36. package/dist/ledger/export.d.ts +27 -0
  37. package/dist/ledger/export.js +169 -0
  38. package/dist/ledger/ledger.d.ts +117 -0
  39. package/dist/ledger/ledger.js +139 -0
  40. package/dist/ledger/redact.d.ts +13 -0
  41. package/dist/ledger/redact.js +73 -0
  42. package/dist/ledger/report.d.ts +71 -0
  43. package/dist/ledger/report.js +128 -0
  44. package/dist/mcp/protect.d.ts +8 -0
  45. package/dist/mcp/protect.js +68 -0
  46. package/dist/mcp/server.d.ts +49 -0
  47. package/dist/mcp/server.js +211 -0
  48. package/dist/oidc.d.ts +52 -0
  49. package/dist/oidc.js +194 -0
  50. package/dist/policy/engine.d.ts +135 -0
  51. package/dist/policy/engine.js +243 -0
  52. package/dist/policy/expr.d.ts +56 -0
  53. package/dist/policy/expr.js +506 -0
  54. package/dist/scan/findings.d.ts +32 -0
  55. package/dist/scan/findings.js +105 -0
  56. package/dist/scan/remote.d.ts +7 -0
  57. package/dist/scan/remote.js +225 -0
  58. package/dist/scan/static.d.ts +15 -0
  59. package/dist/scan/static.js +245 -0
  60. package/dist/store.d.ts +14 -0
  61. package/dist/store.js +40 -0
  62. package/dist/sts/jwt.d.ts +64 -0
  63. package/dist/sts/jwt.js +168 -0
  64. package/dist/sts/revocation.d.ts +38 -0
  65. package/dist/sts/revocation.js +52 -0
  66. package/dist/sts/sts.d.ts +83 -0
  67. package/dist/sts/sts.js +239 -0
  68. package/dist/util.d.ts +28 -0
  69. package/dist/util.js +137 -0
  70. package/package.json +47 -4
@@ -0,0 +1,402 @@
1
+ [
2
+ {
3
+ "id": "pattern-1793702620723-pcr1",
4
+ "type": "action",
5
+ "content": "Edit D:\\Projects\\Mandat1\\src\\index.ts: success",
6
+ "embedding": [
7
+ -0.017218178138136864,
8
+ -0.0065802037715911865,
9
+ -0.08675456792116165,
10
+ 0.03195727989077568,
11
+ 0.0491698756814003,
12
+ 0.0023155498784035444,
13
+ 0.04447365552186966,
14
+ -0.016227079555392265,
15
+ 0.0034601567313075066,
16
+ 0.08281828463077545,
17
+ 0.018235113471746445,
18
+ 0.006132139358669519,
19
+ -0.041646651923656464,
20
+ -0.020780477672815323,
21
+ -0.06125575676560402,
22
+ 0.030922111123800278,
23
+ -0.11686234921216965,
24
+ -0.06083272770047188,
25
+ 0.08677129447460175,
26
+ -0.020619817078113556,
27
+ 0.06523068994283676,
28
+ 0.11982741951942444,
29
+ 0.012490630149841309,
30
+ -0.06800605356693268,
31
+ 0.008316677063703537,
32
+ -0.035887617617845535,
33
+ -0.01323838159441948,
34
+ 0.03609301149845123,
35
+ -0.005198854021728039,
36
+ -0.026954952627420425,
37
+ -0.02158253639936447,
38
+ 0.024588633328676224,
39
+ 0.01915893889963627,
40
+ -0.02625376731157303,
41
+ 0.08931181579828262,
42
+ 0.07068951427936554,
43
+ 0.039354123175144196,
44
+ -0.04141120985150337,
45
+ 0.01039849128574133,
46
+ 0.012263654731214046,
47
+ 0.01139114424586296,
48
+ 0.045452214777469635,
49
+ 0.05323309823870659,
50
+ -0.05556752532720566,
51
+ -0.01483387965708971,
52
+ -0.009014945477247238,
53
+ -0.026271212846040726,
54
+ -0.08659133315086365,
55
+ 0.06292426586151123,
56
+ 0.01899636536836624,
57
+ -0.07483936846256256,
58
+ -0.03856891393661499,
59
+ -0.07780660688877106,
60
+ -0.07369272410869598,
61
+ 0.05395813286304474,
62
+ -0.015878336504101753,
63
+ -0.049116022884845734,
64
+ 0.04854212701320648,
65
+ 0.017703227698802948,
66
+ -0.09541358798742294,
67
+ 0.15358488261699677,
68
+ 0.03729003667831421,
69
+ 0.032134756445884705,
70
+ -0.05292171612381935,
71
+ 0.10421908646821976,
72
+ -0.03008023090660572,
73
+ -0.053967926651239395,
74
+ 0.06945151835680008,
75
+ 0.015471100807189941,
76
+ 0.004680803511291742,
77
+ 0.03378886356949806,
78
+ -0.03382790461182594,
79
+ -0.17480094730854034,
80
+ -0.012139962054789066,
81
+ 0.0003815967938862741,
82
+ -0.020429018884897232,
83
+ -0.08745144307613373,
84
+ 0.0108040701597929,
85
+ 0.05536511912941933,
86
+ -0.04435131698846817,
87
+ 0.04625554382801056,
88
+ -0.03751938045024872,
89
+ 0.04653042182326317,
90
+ 0.022482139989733696,
91
+ -0.025739239528775215,
92
+ 0.028279004618525505,
93
+ 0.057021114975214005,
94
+ -0.00559659581631422,
95
+ 0.0572408027946949,
96
+ -0.04932835325598717,
97
+ 0.006219787057489157,
98
+ -0.08493312448263168,
99
+ 0.06572435796260834,
100
+ 0.04818299785256386,
101
+ -0.050092510879039764,
102
+ 0.012869587168097496,
103
+ -0.0175273809581995,
104
+ 0.10445544868707657,
105
+ -0.011693565174937248,
106
+ 0.024857601150870323,
107
+ -0.05571982264518738,
108
+ -0.05202660709619522,
109
+ -0.10473866015672684,
110
+ 0.01973728835582733,
111
+ -0.05343562737107277,
112
+ 0.0319230780005455,
113
+ 0.03619639202952385,
114
+ 0.044039346277713776,
115
+ 0.03656318411231041,
116
+ 0.0016887764213606715,
117
+ -0.09902344644069672,
118
+ 0.07238438725471497,
119
+ -0.11512530595064163,
120
+ -0.08251142501831055,
121
+ -0.036830902099609375,
122
+ -0.14118652045726776,
123
+ -0.043936196714639664,
124
+ 0.005034956149756908,
125
+ -0.0421956367790699,
126
+ -0.020182818174362183,
127
+ -0.023592079058289528,
128
+ 0.00916056428104639,
129
+ 0.04897397384047508,
130
+ 0.04723386839032173,
131
+ -0.03094649128615856,
132
+ -0.0893031507730484,
133
+ -0.05045868456363678,
134
+ -1.265639063660514e-33,
135
+ 0.0451003722846508,
136
+ -0.012297959998250008,
137
+ 0.03443276137113571,
138
+ 0.036495011299848557,
139
+ 0.0027222984936088324,
140
+ -0.04286540672183037,
141
+ 0.021954666823148727,
142
+ -0.01788625866174698,
143
+ -0.030774284154176712,
144
+ 0.006963491905480623,
145
+ -0.01714821718633175,
146
+ -0.030267290771007538,
147
+ -0.04886133596301079,
148
+ -0.02672206424176693,
149
+ -0.07435483485460281,
150
+ -0.056679390370845795,
151
+ 0.015085119754076004,
152
+ 0.015503081493079662,
153
+ 0.013670234940946102,
154
+ -0.029487337917089462,
155
+ -0.02896343730390072,
156
+ 0.06507009267807007,
157
+ -0.027976011857390404,
158
+ -0.03187597543001175,
159
+ 0.06452732533216476,
160
+ -0.025403961539268494,
161
+ 0.011942477896809578,
162
+ -0.01634412258863449,
163
+ 0.03970333933830261,
164
+ -0.000294030673103407,
165
+ 0.035578735172748566,
166
+ 0.01931585930287838,
167
+ 0.002790124388411641,
168
+ 0.012022716924548149,
169
+ 0.00818975456058979,
170
+ 0.054827649146318436,
171
+ -0.017398957163095474,
172
+ 0.02943936362862587,
173
+ -0.01416519284248352,
174
+ 0.06830562651157379,
175
+ 0.06739659607410431,
176
+ 0.054965537041425705,
177
+ -0.05937062203884125,
178
+ -0.04260953888297081,
179
+ -0.014122053980827332,
180
+ 0.060230933129787445,
181
+ 0.05139396712183952,
182
+ 0.07277975231409073,
183
+ 0.07769662886857986,
184
+ -0.04346514865756035,
185
+ -0.08318433165550232,
186
+ 0.0796302929520607,
187
+ -0.040109921246767044,
188
+ 0.0238513071089983,
189
+ 0.048215772956609726,
190
+ 0.00018377689411863685,
191
+ 0.01828887313604355,
192
+ 0.07532522827386856,
193
+ 0.06220647320151329,
194
+ 0.0054445997811853886,
195
+ 0.010723552666604519,
196
+ -0.007478856947273016,
197
+ -0.009161196649074554,
198
+ 0.06030869111418724,
199
+ 0.04449961706995964,
200
+ 0.03546497970819473,
201
+ 0.06631366163492203,
202
+ -0.031189586967229843,
203
+ 0.10265588015317917,
204
+ 0.011036902666091919,
205
+ -0.060894981026649475,
206
+ -0.0752612054347992,
207
+ 0.08761958032846451,
208
+ 0.022466694936156273,
209
+ -0.004088130313903093,
210
+ -0.024074573069810867,
211
+ -0.11657459288835526,
212
+ 0.04550822824239731,
213
+ -0.0448729544878006,
214
+ 0.0022779935970902443,
215
+ -0.06153386831283569,
216
+ -0.04154567793011665,
217
+ -0.060760822147130966,
218
+ -0.0896272286772728,
219
+ 0.07170072197914124,
220
+ -0.012434786185622215,
221
+ -0.032391827553510666,
222
+ -0.06842197477817535,
223
+ -0.01768452487885952,
224
+ -0.04204914718866348,
225
+ 0.01760958880186081,
226
+ 0.03332166373729706,
227
+ -0.06071589142084122,
228
+ -0.015011154115200043,
229
+ -0.0015530138043686748,
230
+ -1.0266528887791848e-34,
231
+ 0.0531301349401474,
232
+ -0.023645691573619843,
233
+ 0.05309109017252922,
234
+ -0.05798391252756119,
235
+ -0.028695059940218925,
236
+ -0.02793954685330391,
237
+ 0.07418962568044662,
238
+ -0.05385272577404976,
239
+ 0.055651869624853134,
240
+ 0.12402983009815216,
241
+ 0.08303988724946976,
242
+ -0.042296551167964935,
243
+ -0.034064773470163345,
244
+ -0.03693142905831337,
245
+ -0.061882492154836655,
246
+ -0.02468346804380417,
247
+ 0.024353882297873497,
248
+ -0.06978058069944382,
249
+ -0.08534473180770874,
250
+ 0.0005760010099038482,
251
+ -0.06978767365217209,
252
+ 0.09203432500362396,
253
+ 0.016570206731557846,
254
+ 0.028686461970210075,
255
+ -0.0327838771045208,
256
+ 0.018713075667619705,
257
+ 0.04026288539171219,
258
+ 0.011163976974785328,
259
+ -0.00762081379070878,
260
+ -0.06645683199167252,
261
+ 0.023633219301700592,
262
+ 0.027847830206155777,
263
+ -0.14265917241573334,
264
+ 0.028073960915207863,
265
+ 0.004523073323071003,
266
+ 0.03382810205221176,
267
+ -0.01643240824341774,
268
+ -0.04921797662973404,
269
+ 0.019672436639666557,
270
+ 0.07994142919778824,
271
+ 0.02788890153169632,
272
+ 0.0736129879951477,
273
+ -0.0068453224375844,
274
+ 0.026630781590938568,
275
+ 0.026153840124607086,
276
+ -0.05233224108815193,
277
+ -0.006478506606072187,
278
+ 0.043543219566345215,
279
+ 0.03036455065011978,
280
+ -0.0645054280757904,
281
+ -0.0006454378599300981,
282
+ -0.005700037349015474,
283
+ -0.001836536917835474,
284
+ -0.11992691457271576,
285
+ 0.09533162415027618,
286
+ -0.03403695672750473,
287
+ 0.0905817374587059,
288
+ 0.010484395548701286,
289
+ -0.012641037814319134,
290
+ 0.02840588241815567,
291
+ 0.030714351683855057,
292
+ 0.055020522326231,
293
+ -0.00646886695176363,
294
+ 0.03270748630166054,
295
+ -0.0456080324947834,
296
+ -0.014400800690054893,
297
+ -0.015519690699875355,
298
+ 0.022520799189805984,
299
+ 0.02295766770839691,
300
+ -0.07156027108430862,
301
+ -0.012932989746332169,
302
+ -0.03395077586174011,
303
+ 0.09069294482469559,
304
+ -0.02827930450439453,
305
+ -0.007701563183218241,
306
+ -0.07705322653055191,
307
+ 0.03934762626886368,
308
+ 0.06800384819507599,
309
+ 0.08316998183727264,
310
+ -0.034657854586839676,
311
+ -0.027468539774417877,
312
+ 0.025118842720985413,
313
+ 0.028997138142585754,
314
+ -0.014213679358363152,
315
+ -0.02077704854309559,
316
+ 0.03596453368663788,
317
+ -0.01024594809859991,
318
+ 0.05238763988018036,
319
+ -0.007330389227718115,
320
+ 0.04276474565267563,
321
+ -0.04650560021400452,
322
+ -0.01028324756771326,
323
+ 0.10057450085878372,
324
+ 0.08926928043365479,
325
+ 0.009987556375563145,
326
+ -2.377533370179208e-8,
327
+ -0.0382356233894825,
328
+ 0.01332191750407219,
329
+ -0.008316206745803356,
330
+ -0.013109949417412281,
331
+ 0.0022777155973017216,
332
+ -0.044958584010601044,
333
+ -0.10731372982263565,
334
+ 0.06794209778308868,
335
+ 0.06359416246414185,
336
+ -0.026924889534711838,
337
+ -0.05927937105298042,
338
+ 0.03643321245908737,
339
+ -0.07107263803482056,
340
+ 0.060366466641426086,
341
+ -0.030798733234405518,
342
+ -0.09523231536149979,
343
+ -0.027256976813077927,
344
+ 0.05515575408935547,
345
+ 0.010571631602942944,
346
+ -0.0644804984331131,
347
+ 0.03182753920555115,
348
+ 0.03963628038764,
349
+ 0.052118100225925446,
350
+ -0.04024958610534668,
351
+ 0.05446828529238701,
352
+ 0.011138738133013248,
353
+ -0.0022388079669326544,
354
+ -0.00874056201428175,
355
+ -0.05549697205424309,
356
+ 0.043617475777864456,
357
+ 0.04543517902493477,
358
+ 0.017102118581533432,
359
+ -0.03406793624162674,
360
+ 0.014395375736057758,
361
+ 0.08163143694400787,
362
+ -0.015881741419434547,
363
+ 0.1176360473036766,
364
+ 0.09943727403879166,
365
+ -0.018026310950517654,
366
+ 0.025986572727560997,
367
+ 0.02519579418003559,
368
+ 0.04233752191066742,
369
+ 0.026186563074588776,
370
+ 0.04476939141750336,
371
+ -0.008352363482117653,
372
+ 0.008436817675828934,
373
+ -0.04849851503968239,
374
+ 0.06919355690479279,
375
+ 0.00019718831754289567,
376
+ -0.12404042482376099,
377
+ -0.01205325685441494,
378
+ 0.00810775812715292,
379
+ -0.03748977184295654,
380
+ -0.002827318385243416,
381
+ -0.02086372673511505,
382
+ 0.03777473792433739,
383
+ 0.02095755562186241,
384
+ 0.010216165333986282,
385
+ -0.04753487929701805,
386
+ -0.06491657346487045,
387
+ 0.05832459777593613,
388
+ -0.046849075704813004,
389
+ -0.024800946936011314,
390
+ -0.03385988250374794
391
+ ],
392
+ "confidence": 0.8,
393
+ "metadata": {
394
+ "hook": "post-edit",
395
+ "filePath": "D:\\Projects\\Mandat1\\src\\index.ts",
396
+ "success": true
397
+ },
398
+ "createdAt": 1793702620723,
399
+ "usageCount": 0,
400
+ "lastUsedAt": 1793702620723
401
+ }
402
+ ]
@@ -0,0 +1,6 @@
1
+ {
2
+ "trajectoriesRecorded": 1,
3
+ "patternsLearned": 1,
4
+ "signalsProcessed": 0,
5
+ "lastAdaptation": 1793702620724
6
+ }
@@ -0,0 +1,3 @@
1
+ {"version":1,"entries":[
2
+ {"seq":0,"length":1,"headHash":"sha256:a9893a2e6ad3b86d5fe9b21b0723609404397027160be41fa0db8406ed40f8cf","prevAnchorHash":null,"ts":1793702619967,"event":"append","hash":"d3ed1b409592eab0da43465180ee32f329373118820582cc6a1a399273440ea1"}
3
+ ]}
@@ -0,0 +1,54 @@
1
+ {
2
+ "version": 2,
3
+ "mode": "legacy",
4
+ "rules": [],
5
+ "budgets": [],
6
+ "usage": [],
7
+ "approvals": [],
8
+ "receipts": [
9
+ {
10
+ "payload": {
11
+ "receiptId": "sha256:388dc8fa2968709b2072829cb901fe73f7e598ed6cfa9eb07fee2916837e18c5",
12
+ "previousReceiptHash": null,
13
+ "sequence": 0,
14
+ "issuedAt": 1793702619943,
15
+ "request": {
16
+ "identity": {
17
+ "id": "legacy-cli",
18
+ "type": "legacy"
19
+ },
20
+ "action": {
21
+ "type": "mcp.tool.call",
22
+ "resource": "hooks_post-edit",
23
+ "tool": "hooks_post-edit",
24
+ "server": "ruflo",
25
+ "network": false,
26
+ "destructive": false
27
+ },
28
+ "context": {
29
+ "metadata": {
30
+ "inputDigest": "sha256:7c9954e84ffae674103991ec73f421ca340d1e4d846ba7e4afebbcd32577cd42"
31
+ },
32
+ "now": 1793702619943
33
+ },
34
+ "requestId": "1140a582-ffab-4f2e-b9fc-40df7f45542f"
35
+ },
36
+ "decision": {
37
+ "requestId": "1140a582-ffab-4f2e-b9fc-40df7f45542f",
38
+ "outcome": "allowed",
39
+ "enforcedOutcome": "allowed",
40
+ "mode": "legacy",
41
+ "reason": "legacy-default-allow",
42
+ "matchedRules": [],
43
+ "obligations": []
44
+ },
45
+ "policyHash": "sha256:00b63b2f746eb8b9095bbd5e1dbae4ddd74fd92a6740b72f59f4069fbfda4737"
46
+ },
47
+ "hash": "sha256:a9893a2e6ad3b86d5fe9b21b0723609404397027160be41fa0db8406ed40f8cf"
48
+ }
49
+ ],
50
+ "migratedAt": 1793702619942,
51
+ "migratedFrom": "pre-ADR-324; capabilities=none-detected",
52
+ "ledgerHead": "sha256:a9893a2e6ad3b86d5fe9b21b0723609404397027160be41fa0db8406ed40f8cf",
53
+ "ledgerLength": 1
54
+ }
@@ -0,0 +1,93 @@
1
+ :root {
2
+ --bg: #f6f4ef;
3
+ --panel: #ffffff;
4
+ --ink: #1b1d22;
5
+ --muted: #6b6f78;
6
+ --line: #e2ded4;
7
+ --accent: #23395b;
8
+ --allow: #1f7a4d;
9
+ --deny: #a3262a;
10
+ --pending: #a86b00;
11
+ --chip: #efece4;
12
+ --mono: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;
13
+ color-scheme: light;
14
+ }
15
+ @media (prefers-color-scheme: dark) {
16
+ :root {
17
+ --bg: #14161a; --panel: #1c1f25; --ink: #e8e6e1; --muted: #9a9ea8; --line: #2c3038;
18
+ --accent: #8fb0e6; --allow: #4cc38a; --deny: #ff6b6b; --pending: #f0b44c; --chip: #262a32;
19
+ color-scheme: dark;
20
+ }
21
+ }
22
+ * { box-sizing: border-box; }
23
+ body { margin: 0; background: var(--bg); color: var(--ink); font: 14px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; padding: 0 20px 40px; }
24
+ code, pre, .mono { font-family: var(--mono); font-size: 12.5px; }
25
+
26
+ .top { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; padding: 18px 0 14px; border-bottom: 1px solid var(--line); }
27
+ .brand { display: flex; gap: 12px; align-items: center; }
28
+ .seal { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; font-weight: 800; font-size: 18px; color: var(--panel); background: var(--accent); box-shadow: 0 0 0 3px var(--bg), 0 0 0 4px var(--accent); }
29
+ .name { font-weight: 750; font-size: 18px; letter-spacing: .01em; }
30
+ .tag { color: var(--muted); font-size: 12px; }
31
+ .login { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
32
+ .who { color: var(--muted); font-size: 12px; }
33
+
34
+ input, select, textarea, button { font: inherit; color: inherit; }
35
+ input, select, textarea { background: var(--panel); border: 1px solid var(--line); border-radius: 6px; padding: 6px 9px; min-width: 0; }
36
+ textarea { width: 100%; font-family: var(--mono); font-size: 12.5px; }
37
+ button { cursor: pointer; border: 1px solid var(--line); background: var(--panel); border-radius: 6px; padding: 6px 12px; }
38
+ button:hover { border-color: var(--accent); }
39
+ button.primary { background: var(--accent); color: var(--panel); border-color: var(--accent); }
40
+ button.allow { background: var(--allow); color: #fff; border-color: var(--allow); }
41
+ button.deny { background: var(--deny); color: #fff; border-color: var(--deny); }
42
+ button:disabled { opacity: .5; cursor: not-allowed; }
43
+
44
+ .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; margin: 16px 0; }
45
+ .stat { background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; }
46
+ .stat .v { font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; }
47
+ .stat .l { color: var(--muted); font-size: 12px; }
48
+
49
+ .tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--line); overflow-x: auto; }
50
+ .tabs button { border: none; border-bottom: 2px solid transparent; border-radius: 0; background: none; padding: 9px 14px; color: var(--muted); white-space: nowrap; }
51
+ .tabs button[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--accent); font-weight: 600; }
52
+ .badge { background: var(--pending); color: #fff; border-radius: 10px; padding: 0 7px; font-size: 11px; margin-left: 4px; }
53
+ .panel { padding-top: 16px; }
54
+ .empty { color: var(--muted); padding: 24px 0; }
55
+
56
+ .card { background: var(--panel); border: 1px solid var(--line); border-left: 4px solid var(--pending); border-radius: 8px; padding: 14px 16px; margin-bottom: 12px; }
57
+ .card.approved { border-left-color: var(--allow); }
58
+ .card.denied, .card.expired { border-left-color: var(--deny); }
59
+ .card.focus { outline: 2px solid var(--accent); }
60
+ .card h3 { margin: 0 0 6px; font-size: 15px; }
61
+ .card .meta { color: var(--muted); font-size: 12px; display: flex; flex-wrap: wrap; gap: 4px 14px; }
62
+ .card pre { background: var(--chip); padding: 8px 10px; border-radius: 6px; overflow-x: auto; margin: 10px 0; max-height: 220px; }
63
+ .card .actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
64
+ .warn { color: var(--pending); font-weight: 600; font-size: 12.5px; margin: 6px 0; }
65
+ .chain { font-family: var(--mono); font-size: 12px; }
66
+
67
+ .filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
68
+ .scroll { overflow-x: auto; background: var(--panel); border: 1px solid var(--line); border-radius: 8px; }
69
+ table { border-collapse: collapse; width: 100%; font-size: 13px; }
70
+ th, td { text-align: left; padding: 7px 10px; border-bottom: 1px solid var(--line); vertical-align: top; white-space: nowrap; }
71
+ td.wrap { white-space: normal; min-width: 220px; }
72
+ th { color: var(--muted); font-weight: 600; font-size: 12px; position: sticky; top: 0; background: var(--panel); }
73
+ tr.click { cursor: pointer; }
74
+ tr.click:hover td { background: var(--chip); }
75
+ .pill { display: inline-block; border-radius: 10px; padding: 1px 8px; font-size: 11.5px; font-weight: 600; background: var(--chip); }
76
+ .pill.allow, .pill.approved, .pill.success, .pill.active { color: var(--allow); }
77
+ .pill.deny, .pill.denied, .pill.blocked, .pill.expired, .pill.revoked, .pill.error { color: var(--deny); }
78
+ .pill.pending { color: var(--pending); }
79
+ .record { background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 12px; overflow-x: auto; margin-top: 12px; max-height: 420px; }
80
+
81
+ .grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; }
82
+ .box { background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 14px 16px; }
83
+ .box h3 { margin: 0 0 10px; font-size: 14px; }
84
+ .form { display: grid; gap: 8px; }
85
+ .form label { display: grid; gap: 3px; font-size: 12px; color: var(--muted); }
86
+ .secret { background: var(--chip); padding: 10px; border-radius: 6px; word-break: break-all; }
87
+ .ok { color: var(--allow); font-weight: 600; }
88
+ .bad { color: var(--deny); font-weight: 600; }
89
+ .toast { position: fixed; bottom: 20px; right: 20px; background: var(--ink); color: var(--panel); padding: 10px 14px; border-radius: 8px; max-width: min(420px, calc(100vw - 40px)); box-shadow: 0 6px 20px rgba(0,0,0,.2); }
90
+ .md { white-space: pre-wrap; background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 14px; overflow-x: auto; max-height: 520px; }
91
+ .mt { margin-top: 16px; }
92
+ .mb { margin-bottom: 8px; }
93
+ .row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }