@chrisdudek/yg 5.4.1 → 5.5.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.
@@ -0,0 +1,258 @@
1
+ /*
2
+ * V7 Flows + V8 Suppressions styles.
3
+ *
4
+ * The business-language flow lens (V7: gallery + detail, three honest flow states) and the
5
+ * risk-first waiver inventory (V8). Tokens come from tokens.css; every verdict / waived color is
6
+ * resolved through the shared state classes (`.state-*`), so this file invents no green — a flow
7
+ * pill and a participant dot read their treatment from the shared honest-state model.
8
+ */
9
+
10
+ /* ── V7 Flows ────────────────────────────────────────────────────────────── */
11
+ .fl-layout {
12
+ display: grid;
13
+ grid-template-columns: 290px 1fr;
14
+ gap: 18px;
15
+ }
16
+ .fl-gallery {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: 10px;
20
+ }
21
+ .fl-card {
22
+ text-align: left;
23
+ border: 1px solid var(--border-subtle);
24
+ border-radius: 10px;
25
+ padding: 12px 14px;
26
+ background: var(--surface-1);
27
+ font: inherit;
28
+ cursor: pointer;
29
+ }
30
+ .fl-card-sel {
31
+ border-color: var(--accent);
32
+ box-shadow: inset 2px 0 0 var(--accent);
33
+ }
34
+ .fl-card-top {
35
+ display: flex;
36
+ align-items: center;
37
+ gap: 8px;
38
+ }
39
+ .fl-card-top b {
40
+ font-weight: 600;
41
+ }
42
+ .fl-card-d {
43
+ color: var(--text-muted);
44
+ font-size: 12px;
45
+ margin-top: 3px;
46
+ line-height: 1.45;
47
+ }
48
+ .fl-state {
49
+ margin-left: auto;
50
+ font-size: 10px;
51
+ font-weight: 700;
52
+ border-radius: 5px;
53
+ padding: 1px 7px;
54
+ border: 1px solid currentColor;
55
+ }
56
+ .fl-detail {
57
+ border: 1px solid var(--border-subtle);
58
+ border-radius: 12px;
59
+ background: var(--surface-1);
60
+ padding: 18px;
61
+ }
62
+ .fl-detail-head {
63
+ display: flex;
64
+ align-items: center;
65
+ gap: 10px;
66
+ }
67
+ .fl-detail-head h2 {
68
+ margin: 0;
69
+ font-size: 17px;
70
+ }
71
+ .fl-detail-head .fl-state {
72
+ margin-left: 0;
73
+ }
74
+ .fl-detail-d {
75
+ color: var(--text-secondary);
76
+ margin: 6px 0 16px;
77
+ font-size: 13px;
78
+ line-height: 1.55;
79
+ }
80
+ .fl-h5 {
81
+ margin: 14px 0 9px;
82
+ font-size: 11px;
83
+ text-transform: uppercase;
84
+ letter-spacing: 0.6px;
85
+ color: var(--text-muted);
86
+ }
87
+ .fl-parts {
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: 7px;
91
+ }
92
+ .fl-part {
93
+ display: flex;
94
+ align-items: center;
95
+ gap: 9px;
96
+ font: inherit;
97
+ font-size: 13px;
98
+ border: 1px solid var(--border-subtle);
99
+ border-radius: 8px;
100
+ padding: 6px 11px;
101
+ background: var(--bg);
102
+ cursor: pointer;
103
+ text-align: left;
104
+ }
105
+ .fl-part:hover {
106
+ border-color: var(--border-strong);
107
+ }
108
+ .fl-part-desc {
109
+ margin-left: 18px;
110
+ }
111
+ .fl-part-path {
112
+ min-width: 0;
113
+ }
114
+ .fl-part-tag {
115
+ margin-left: auto;
116
+ font-size: 10px;
117
+ color: var(--text-muted);
118
+ border: 1px dashed var(--border);
119
+ border-radius: 5px;
120
+ padding: 0 6px;
121
+ }
122
+ .fl-asps {
123
+ display: inline-flex;
124
+ gap: 7px;
125
+ flex-wrap: wrap;
126
+ }
127
+ .fl-asp {
128
+ font-size: 11px;
129
+ border: 1px solid var(--border-subtle);
130
+ border-radius: 5px;
131
+ padding: 1px 7px;
132
+ color: var(--text-secondary);
133
+ background: var(--bg);
134
+ cursor: pointer;
135
+ }
136
+ .fl-asp:hover {
137
+ border-color: var(--border-strong);
138
+ }
139
+ .fl-rel-none {
140
+ color: var(--text-muted);
141
+ font-size: 12px;
142
+ }
143
+ .fl-foot {
144
+ margin-top: 14px;
145
+ color: var(--text-muted);
146
+ font-size: 11.5px;
147
+ font-style: italic;
148
+ line-height: 1.5;
149
+ }
150
+
151
+ /* ── V8 Suppressions ─────────────────────────────────────────────────────── */
152
+ .sup-banner {
153
+ display: flex;
154
+ align-items: center;
155
+ gap: 9px;
156
+ background: var(--unverified-bg);
157
+ border: 1px solid color-mix(in srgb, var(--unverified) 40%, transparent);
158
+ color: var(--unverified);
159
+ border-radius: 8px;
160
+ padding: 8px 12px;
161
+ font-size: 12.5px;
162
+ margin-bottom: 16px;
163
+ font-weight: 500;
164
+ }
165
+ .sup-table {
166
+ width: 100%;
167
+ border-collapse: collapse;
168
+ }
169
+ .sup-table thead td {
170
+ font-size: 10px;
171
+ text-transform: uppercase;
172
+ letter-spacing: 0.5px;
173
+ color: var(--text-muted);
174
+ padding: 6px 10px;
175
+ border-bottom: 1px solid var(--border);
176
+ }
177
+ .sup-table tbody td {
178
+ padding: 10px;
179
+ border-bottom: 1px solid var(--border-subtle);
180
+ font-size: 12.5px;
181
+ vertical-align: top;
182
+ }
183
+ .sup-locbtn {
184
+ display: inline-flex;
185
+ align-items: center;
186
+ gap: 7px;
187
+ border: 0;
188
+ background: none;
189
+ padding: 0;
190
+ font: inherit;
191
+ cursor: pointer;
192
+ text-align: left;
193
+ }
194
+ .sup-locbtn:disabled {
195
+ cursor: default;
196
+ }
197
+ .sup-locpath {
198
+ color: var(--accent-text);
199
+ font-size: 12px;
200
+ }
201
+ .sup-asp {
202
+ border: 1px solid color-mix(in srgb, var(--waived) 40%, transparent);
203
+ color: var(--waived);
204
+ background: none;
205
+ border-radius: 5px;
206
+ padding: 1px 6px;
207
+ font-size: 11px;
208
+ white-space: nowrap;
209
+ cursor: pointer;
210
+ }
211
+ .sup-flag {
212
+ font-size: 10px;
213
+ font-weight: 700;
214
+ border-radius: 5px;
215
+ padding: 1px 7px;
216
+ white-space: nowrap;
217
+ }
218
+ .sup-flag-wild {
219
+ /* A waiver RISK flag, not a verdict — kept off the reserved refused-verdict red so a risky
220
+ waiver never reads as a failed check. Amber, matching the sibling unbounded-range flag. */
221
+ color: var(--unverified);
222
+ background: var(--unverified-bg);
223
+ }
224
+ .sup-flag-unb {
225
+ color: var(--unverified);
226
+ background: var(--unverified-bg);
227
+ }
228
+ .sup-flag-other {
229
+ color: var(--text-secondary);
230
+ border: 1px solid var(--border);
231
+ }
232
+ .sup-flag-ok {
233
+ color: var(--text-muted);
234
+ border: 1px solid var(--border-subtle);
235
+ }
236
+ .sup-reason {
237
+ color: var(--text-secondary);
238
+ line-height: 1.5;
239
+ }
240
+ .sup-empty {
241
+ border: 1px solid var(--border);
242
+ border-radius: 12px;
243
+ background: var(--surface-1);
244
+ padding: 22px;
245
+ display: flex;
246
+ flex-direction: column;
247
+ align-items: flex-start;
248
+ gap: 8px;
249
+ }
250
+ .sup-empty b {
251
+ font-size: 15px;
252
+ }
253
+ .sup-empty p {
254
+ margin: 0;
255
+ color: var(--text-secondary);
256
+ font-size: 13px;
257
+ line-height: 1.5;
258
+ }
@@ -0,0 +1,249 @@
1
+ /*
2
+ * Node Attestation panel (SHELL-panel) styles.
3
+ *
4
+ * Split from views.css so each CSS file stays a focused unit under the size cap. Tokens come
5
+ * from tokens.css (including the honest status palette); the only saturated color is a state.
6
+ */
7
+
8
+ /* ── SHELL-panel: Node Attestation ───────────────────────────────────────── */
9
+ .pan-head {
10
+ border-bottom: 1px solid var(--border-subtle);
11
+ padding-bottom: 12px;
12
+ margin-bottom: 12px;
13
+ }
14
+ /* Anchored to the panel's top-right corner (the panel is a positioned containing block in both
15
+ the wide grid-column and the narrow fixed-overlay layouts). */
16
+ .pan-close {
17
+ position: absolute;
18
+ top: 14px;
19
+ right: 14px;
20
+ z-index: 1;
21
+ border: 0;
22
+ background: none;
23
+ color: var(--text-muted);
24
+ font-size: 20px;
25
+ line-height: 1;
26
+ cursor: pointer;
27
+ padding: 2px 7px;
28
+ border-radius: 6px;
29
+ }
30
+ .pan-close:hover {
31
+ color: var(--text-primary);
32
+ background: var(--surface-2);
33
+ }
34
+ /* Aspect inspector: a flex badge row, and the rule prose as a wrapped, scrollable mono block. */
35
+ .pan-aspect .pan-meta {
36
+ display: flex;
37
+ flex-wrap: wrap;
38
+ align-items: center;
39
+ gap: 6px;
40
+ margin-top: 6px;
41
+ }
42
+ .pan-rule {
43
+ white-space: pre-wrap;
44
+ word-break: break-word;
45
+ margin: 0;
46
+ padding: 10px 12px;
47
+ border: 1px solid var(--border-subtle);
48
+ border-radius: 8px;
49
+ background: var(--surface-1);
50
+ font-family: 'JetBrains Mono', ui-monospace, monospace;
51
+ font-size: 12px;
52
+ line-height: 1.5;
53
+ color: var(--text-secondary);
54
+ max-height: 340px;
55
+ overflow-y: auto;
56
+ }
57
+ .pan-rule-h {
58
+ font-size: 11px;
59
+ color: var(--text-muted);
60
+ margin: 0 0 6px;
61
+ }
62
+ .pan-rule-code {
63
+ font-size: 11px;
64
+ max-height: 420px;
65
+ }
66
+ .pan-title {
67
+ display: flex;
68
+ align-items: center;
69
+ gap: 9px;
70
+ font-size: 15px;
71
+ font-weight: 600;
72
+ }
73
+ .pan-path {
74
+ font-size: 12px;
75
+ color: var(--text-secondary);
76
+ margin-top: 4px;
77
+ word-break: break-all;
78
+ }
79
+ .pan-meta {
80
+ font-size: 12px;
81
+ color: var(--text-muted);
82
+ margin-top: 2px;
83
+ }
84
+ .pan-desc {
85
+ font-size: 12.5px;
86
+ color: var(--text-secondary);
87
+ line-height: 1.5;
88
+ margin: 8px 0 0;
89
+ }
90
+ .pan-copy,
91
+ .pan-norule-link,
92
+ .pan-rellink,
93
+ .pan-aspname,
94
+ .pan-viol-link {
95
+ border: 0;
96
+ background: none;
97
+ font: inherit;
98
+ cursor: pointer;
99
+ color: var(--accent-text);
100
+ padding: 0;
101
+ }
102
+ .pan-copy {
103
+ margin-top: 10px;
104
+ border: 1px solid var(--border);
105
+ background: var(--bg);
106
+ border-radius: 7px;
107
+ padding: 5px 10px;
108
+ font-size: 12px;
109
+ color: var(--text-secondary);
110
+ }
111
+ .pan-sect {
112
+ border-top: 1px solid var(--surface-2);
113
+ padding: 12px 0;
114
+ }
115
+ .pan-h {
116
+ font-size: 12px;
117
+ text-transform: uppercase;
118
+ letter-spacing: 0.5px;
119
+ color: var(--text-muted);
120
+ margin: 0 0 9px;
121
+ }
122
+ .pan-count {
123
+ color: var(--text-muted);
124
+ }
125
+ .pan-asprow {
126
+ display: flex;
127
+ align-items: center;
128
+ gap: 8px;
129
+ flex-wrap: wrap;
130
+ padding: 6px 0;
131
+ font-size: 12.5px;
132
+ }
133
+ .pan-aspname {
134
+ font-weight: 500;
135
+ }
136
+ .pan-badge {
137
+ font-size: 10.5px;
138
+ border-radius: 5px;
139
+ padding: 1px 6px;
140
+ color: var(--text-secondary);
141
+ background: var(--surface-2);
142
+ }
143
+ .pan-badge-llm {
144
+ color: var(--accent-text);
145
+ }
146
+ .pan-chan {
147
+ font-size: 10px;
148
+ color: var(--text-muted);
149
+ border: 1px solid var(--border-subtle);
150
+ border-radius: 5px;
151
+ padding: 0 5px;
152
+ }
153
+ .pan-drill {
154
+ flex-basis: 100%;
155
+ border-left: 2px solid var(--verified);
156
+ padding: 6px 0 6px 10px;
157
+ margin: 2px 0 0 4px;
158
+ }
159
+ .pan-drill-h {
160
+ font-size: 11.5px;
161
+ color: var(--text-secondary);
162
+ margin-bottom: 4px;
163
+ }
164
+ .pan-check {
165
+ display: flex;
166
+ gap: 7px;
167
+ font-size: 11.5px;
168
+ }
169
+ .pan-check-c {
170
+ color: var(--verified);
171
+ }
172
+ .pan-caveat {
173
+ font-size: 11px;
174
+ color: var(--text-muted);
175
+ margin-top: 6px;
176
+ line-height: 1.45;
177
+ }
178
+ .pan-reason {
179
+ flex-basis: 100%;
180
+ border-left: 2px solid var(--refused);
181
+ margin: 4px 0 0;
182
+ padding: 4px 10px;
183
+ font-size: 12px;
184
+ color: var(--text-secondary);
185
+ }
186
+ .pan-rels,
187
+ .pan-na {
188
+ list-style: none;
189
+ margin: 0;
190
+ padding: 0;
191
+ }
192
+ .pan-rel,
193
+ .pan-na-item {
194
+ display: flex;
195
+ align-items: center;
196
+ gap: 8px;
197
+ padding: 3px 0;
198
+ font-size: 12.5px;
199
+ }
200
+ .pan-reltype {
201
+ font-size: 10.5px;
202
+ color: var(--text-muted);
203
+ border: 1px solid var(--border-subtle);
204
+ border-radius: 5px;
205
+ padding: 0 5px;
206
+ }
207
+ .pan-na-why {
208
+ color: var(--text-muted);
209
+ font-size: 11px;
210
+ }
211
+ .pan-supp {
212
+ display: flex;
213
+ align-items: center;
214
+ gap: 8px;
215
+ flex-wrap: wrap;
216
+ font-size: 12px;
217
+ margin-bottom: 8px;
218
+ }
219
+ .pan-supp-reason {
220
+ flex-basis: 100%;
221
+ color: var(--text-secondary);
222
+ font-size: 11.5px;
223
+ line-height: 1.5;
224
+ }
225
+ .pan-risk {
226
+ font-size: 10px;
227
+ color: var(--refused);
228
+ border: 1px solid var(--refused);
229
+ border-radius: 5px;
230
+ padding: 0 5px;
231
+ }
232
+ .pan-log {
233
+ margin-bottom: 10px;
234
+ }
235
+ .pan-log-when {
236
+ font-size: 11px;
237
+ color: var(--text-muted);
238
+ }
239
+ .pan-log-body {
240
+ font-size: 12.5px;
241
+ color: var(--text-secondary);
242
+ line-height: 1.5;
243
+ }
244
+ .pan-norule {
245
+ font-size: 12.5px;
246
+ color: var(--text-secondary);
247
+ line-height: 1.5;
248
+ }
249
+
@@ -0,0 +1,218 @@
1
+ /*
2
+ * Relations & Boundaries (V4) styles — the fan-in/out hubs, the live boundary (phantom /
3
+ * forbidden-type violations + the neutral declared-only class + the UNKNOWN degraded state),
4
+ * and the Canvas allowed-relations matrix with its DOM mirror.
5
+ *
6
+ * Split from views.css so each CSS file stays a focused unit under the size cap. Tokens come
7
+ * from tokens.css; relation-presence hues in the matrix are the one non-state accent and are
8
+ * clearly labelled as relation types, not verdicts.
9
+ */
10
+
11
+ /* ── V4 Relations & Boundaries ───────────────────────────────────────────── */
12
+ .rel-part {
13
+ margin-bottom: 26px;
14
+ }
15
+ .rel-parth {
16
+ font-size: 15px;
17
+ margin: 0 0 10px;
18
+ }
19
+ .rel-hubcols {
20
+ display: grid;
21
+ grid-template-columns: 1fr 1fr;
22
+ gap: 20px;
23
+ }
24
+ .rel-hubh {
25
+ font-size: 13px;
26
+ margin: 0 0 2px;
27
+ }
28
+ .rel-hubcap {
29
+ font-size: 11.5px;
30
+ color: var(--text-muted);
31
+ margin-bottom: 8px;
32
+ }
33
+ .rel-hubrow {
34
+ display: flex;
35
+ align-items: center;
36
+ gap: 10px;
37
+ width: 100%;
38
+ border: 0;
39
+ background: none;
40
+ font: inherit;
41
+ cursor: pointer;
42
+ padding: 4px 0;
43
+ text-align: left;
44
+ }
45
+ .rel-hubrow:hover {
46
+ background: var(--surface-2);
47
+ }
48
+ .rel-hubname {
49
+ flex: 1;
50
+ font-size: 12.5px;
51
+ }
52
+ .rel-hubbar {
53
+ height: 8px;
54
+ border-radius: 4px;
55
+ background: var(--accent);
56
+ opacity: 0.65;
57
+ }
58
+ .rel-hubn {
59
+ font-family: 'JetBrains Mono', ui-monospace, monospace;
60
+ font-size: 12px;
61
+ color: var(--text-secondary);
62
+ width: 28px;
63
+ text-align: right;
64
+ }
65
+ .rel-bhead {
66
+ display: flex;
67
+ align-items: center;
68
+ gap: 8px;
69
+ font-size: 11.5px;
70
+ color: var(--text-muted);
71
+ margin-bottom: 12px;
72
+ }
73
+ .rel-summary {
74
+ display: flex;
75
+ gap: 12px;
76
+ flex-wrap: wrap;
77
+ margin-bottom: 14px;
78
+ }
79
+ .rel-scard {
80
+ border: 1px solid var(--border-subtle);
81
+ border-radius: 10px;
82
+ padding: 12px 16px;
83
+ background: var(--surface-1);
84
+ min-width: 150px;
85
+ }
86
+ .rel-scard b {
87
+ font-size: 22px;
88
+ }
89
+ .rel-scard-l {
90
+ font-size: 11.5px;
91
+ color: var(--text-secondary);
92
+ margin-top: 2px;
93
+ }
94
+ .rel-scard-err {
95
+ border-color: var(--refused);
96
+ }
97
+ .rel-class {
98
+ margin-bottom: 16px;
99
+ }
100
+ .rel-classh {
101
+ font-size: 13px;
102
+ margin: 0 0 8px;
103
+ }
104
+ .rel-clean {
105
+ color: var(--verified);
106
+ font-size: 12.5px;
107
+ }
108
+ .rel-empty,
109
+ .rel-decl-intro {
110
+ color: var(--text-muted);
111
+ font-size: 12px;
112
+ }
113
+ .rel-viol {
114
+ display: flex;
115
+ align-items: center;
116
+ gap: 10px;
117
+ flex-wrap: wrap;
118
+ padding: 8px 0;
119
+ font-size: 12.5px;
120
+ }
121
+ .rel-viol-src {
122
+ border: 0;
123
+ background: none;
124
+ font: inherit;
125
+ cursor: pointer;
126
+ color: var(--text-primary);
127
+ }
128
+ .rel-stanza {
129
+ flex-basis: 100%;
130
+ margin: 4px 0 0;
131
+ padding: 8px 10px;
132
+ background: var(--surface-2);
133
+ border-radius: 7px;
134
+ font-size: 11.5px;
135
+ color: var(--text-secondary);
136
+ white-space: pre;
137
+ }
138
+ .rel-decl {
139
+ display: flex;
140
+ align-items: center;
141
+ gap: 8px;
142
+ padding: 5px 0;
143
+ font-size: 12.5px;
144
+ }
145
+ .rel-decl-mark {
146
+ color: var(--accent-text);
147
+ }
148
+ .rel-decl-note {
149
+ margin-left: auto;
150
+ color: var(--text-muted);
151
+ font-size: 11px;
152
+ }
153
+ .rel-unknown {
154
+ border: 1px dashed var(--unverified);
155
+ border-radius: 10px;
156
+ padding: 14px 16px;
157
+ background: var(--unverified-bg);
158
+ }
159
+ .rel-unknown p {
160
+ margin: 8px 0 0;
161
+ font-size: 12.5px;
162
+ color: var(--text-secondary);
163
+ line-height: 1.5;
164
+ }
165
+
166
+ /* ── V4 matrix (Canvas + DOM mirror) ─────────────────────────────────────── */
167
+ .mtx-scroll {
168
+ max-width: 100%;
169
+ overflow-x: auto;
170
+ margin-bottom: 10px;
171
+ }
172
+ .mtx-canvas {
173
+ display: block;
174
+ border: 1px solid var(--border-subtle);
175
+ border-radius: 8px;
176
+ background: var(--surface-1);
177
+ }
178
+ .mtx-legend {
179
+ display: flex;
180
+ gap: 14px;
181
+ flex-wrap: wrap;
182
+ margin: 10px 0;
183
+ font-size: 12px;
184
+ color: var(--text-secondary);
185
+ }
186
+ .mtx-legend-k {
187
+ display: inline-flex;
188
+ align-items: center;
189
+ gap: 6px;
190
+ }
191
+ .mtx-legend-empty {
192
+ color: var(--text-muted);
193
+ }
194
+ .mtx-swatch {
195
+ width: 12px;
196
+ height: 12px;
197
+ border-radius: 50%;
198
+ }
199
+ .mtx-mirror {
200
+ border: 1px solid var(--border-subtle);
201
+ border-radius: 8px;
202
+ padding: 10px 12px;
203
+ background: var(--bg);
204
+ font-size: 12px;
205
+ }
206
+ .mtx-mirror-row {
207
+ padding: 2px 0;
208
+ }
209
+ .mtx-arrow {
210
+ color: var(--text-muted);
211
+ }
212
+ .mtx-rels {
213
+ color: var(--accent-text);
214
+ }
215
+ .mtx-empty {
216
+ color: var(--text-muted);
217
+ margin: 0;
218
+ }