@amityco/social-plus-vise 1.4.6 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -98,41 +98,273 @@
98
98
  .capcard .chipline{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;}
99
99
  .capcard .chipline span{font-family:var(--mono);font-size:10.5px;color:var(--brand-dark);background:var(--brand-soft);border:1px solid #B9DBCF;border-radius:999px;padding:5px 8px;}
100
100
 
101
- .bench-shell{display:grid;gap:14px;}
102
- .bench-hero{display:grid;grid-template-columns:1.1fr .9fr;gap:14px;align-items:stretch;}
103
- .bench-scoreboard{border:1px solid var(--line);border-radius:16px;background:#FFFFFF;padding:18px;box-shadow:0 16px 42px rgba(32,47,75,.08);}
104
- .bench-scoreboard h3,.bench-method h3{font-size:18px;margin:0 0 12px;}
105
- .bench-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
106
- .bench-metric{border:1px solid #E2E8F0;border-radius:12px;background:#F8FAFC;padding:14px;}
107
- .bench-metric b{display:block;font-family:var(--mono);font-size:30px;line-height:1;color:var(--ink);letter-spacing:0;}
108
- .bench-metric span{display:block;font-size:12px;color:var(--ink-soft);margin-top:7px;}
109
- .bench-metric.lift{background:var(--good-soft);border-color:var(--good-line);}
110
- .bench-metric.lift b{color:var(--good);}
111
- .bench-bars{display:grid;gap:10px;margin-top:16px;}
112
- .bench-bar{display:grid;grid-template-columns:92px minmax(0,1fr) 48px;gap:10px;align-items:center;font-family:var(--mono);font-size:11px;color:var(--ink-soft);}
113
- .bench-track{height:10px;border-radius:999px;background:#E7ECF3;overflow:hidden;}
114
- .bench-fill{height:100%;border-radius:999px;background:var(--brand);}
115
- .bench-fill.control{background:#AAB4C3;}
116
- .bench-callout{border:1px solid #CDE8DC;border-radius:16px;background:linear-gradient(180deg,#F7FCF9,#E6F4EC);padding:18px;}
117
- .bench-callout b{display:block;font-size:15px;color:var(--good);margin-bottom:8px;}
118
- .bench-callout p{margin:0;color:var(--ink-soft);font-size:13.5px;}
119
- .platform-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;}
120
- .platform-card{border:1px solid var(--line);border-radius:12px;background:#FFFFFF;padding:13px;min-width:0;}
121
- .platform-card h3{font-size:13px;margin:0 0 4px;color:var(--ink);}
122
- .platform-card p{font-size:11.5px;color:var(--ink-soft);margin:0 0 12px;line-height:1.35;min-height:48px;}
123
- .score-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);margin:7px 0;}
124
- .score-row b{font-size:13px;color:var(--ink);}
125
- .mini-track{grid-column:1 / -1;height:6px;border-radius:999px;background:#E7ECF3;overflow:hidden;}
126
- .mini-fill{display:block;height:100%;border-radius:999px;background:var(--brand);}
127
- .mini-fill.control{background:#AAB4C3;}
128
- .delta-pill{display:inline-flex;align-items:center;justify-content:center;margin-top:8px;border-radius:999px;background:var(--good-soft);border:1px solid var(--good-line);color:var(--good);font-family:var(--mono);font-size:11px;font-weight:900;padding:5px 8px;}
129
- .bench-method{border:1px solid var(--line);border-radius:16px;background:#FFFFFF;padding:18px;box-shadow:0 10px 30px rgba(32,47,75,.06);}
130
- .weight-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:12px 0 14px;}
131
- .weight-card{border:1px solid #E2E8F0;border-radius:10px;background:#F8FAFC;padding:10px;}
132
- .weight-card b{display:block;font-family:var(--mono);font-size:18px;color:var(--brand-dark);}
133
- .weight-card span{display:block;font-size:11px;color:var(--ink-soft);line-height:1.25;margin-top:4px;}
134
- .bench-method p,.bench-footnote{font-size:13px;color:var(--ink-soft);margin:0;max-width:86ch;}
135
- .bench-footnote{border:1px solid #FED7AA;border-radius:12px;background:#FFF7ED;padding:12px 14px;color:#7C3A11;}
101
+ /* ============ ONE-GLANCE RECONCILIATION ============ */
102
+ .bx-recon{border:1px solid var(--line);border-radius:16px;background:var(--paper-raised);padding:16px 18px 18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 16px 42px rgba(32,47,75,.08);}
103
+ .bx-recon-tag{font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);}
104
+ .bx-recon-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
105
+ .bx-recon-cell{display:flex;flex-direction:column;gap:5px;border:1px solid var(--line);border-radius:12px;background:var(--paper-elevated);padding:13px 15px;min-width:0;}
106
+ .bx-recon-cell-key{border:2px solid var(--brand);background:var(--brand-soft);box-shadow:0 10px 30px rgba(23,107,87,.12);}
107
+ .bx-recon-num{font-family:var(--mono);font-size:30px;line-height:1;color:var(--ink-soft);letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
108
+ .bx-recon-num-key{color:var(--brand-dark);}
109
+ .bx-recon-lab{font-size:12.5px;font-weight:700;color:var(--ink);letter-spacing:-.005em;}
110
+ .bx-recon-cell-key .bx-recon-lab{color:var(--brand-dark);}
111
+ .bx-recon-note{font-size:12px;line-height:1.45;color:var(--ink-soft);}
112
+ .bx-recon-note b{color:var(--ink);}
113
+ .bx-recon-note em{color:var(--verified);font-style:normal;}
114
+
115
+ /* ============ CROSS-MODEL BAND ============ */
116
+ .bx-xm{display:flex;flex-direction:column;gap:16px;border:1px solid var(--line);border-radius:18px;background:var(--paper-elevated);padding:18px 18px 20px;}
117
+ .bx-xm-head{display:flex;flex-direction:column;gap:7px;}
118
+ .bx-xm-copy{margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft);max-width:92ch;}
119
+ .bx-xm-copy b{color:var(--ink);}
120
+ .bx-xm-copy em{color:var(--brand-dark);font-style:normal;}
121
+
122
+ .bx-xm-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:stretch;}
123
+ .bx-xm-card{border:1px solid var(--line);border-radius:16px;background:var(--paper-raised);padding:18px 20px;display:flex;flex-direction:column;gap:14px;min-width:0;box-shadow:0 16px 42px rgba(32,47,75,.08);}
124
+ .bx-xm-anchor{border:2px solid var(--brand);box-shadow:0 20px 50px rgba(23,107,87,.14);}
125
+ .bx-xm-caveated{border-color:var(--line);background:linear-gradient(180deg,var(--paper-elevated),var(--paper-raised));}
126
+ .bx-xm-card-head{display:flex;flex-direction:column;gap:6px;}
127
+ .bx-xm-model{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
128
+ .bx-xm-name{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
129
+ .bx-xm-badge{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;}
130
+ .bx-xm-badge-anchor{color:var(--brand-dark);background:var(--brand-soft);border:1px solid var(--good-line);font-weight:600;}
131
+ .bx-xm-badge-dot{width:7px;height:7px;border-radius:50%;background:var(--brand);flex:0 0 auto;}
132
+ .bx-xm-badge-earlier{color:var(--ink-soft);background:var(--paper-elevated);border:1px solid var(--line);}
133
+ .bx-xm-proto{margin:0;font-size:11.5px;line-height:1.4;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.01em;}
134
+ .bx-xm-nums{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap;}
135
+ .bx-xm-stat{display:flex;flex-direction:column;gap:5px;}
136
+ .bx-xm-stat b{font-family:var(--mono);font-size:32px;line-height:1;color:var(--ink);letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
137
+ .bx-xm-stat span{font-size:11px;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.03em;}
138
+ .bx-xm-lift b{color:var(--good);}
139
+ .bx-xm-lift-soft b{color:var(--ink-soft);display:inline-flex;align-items:baseline;gap:3px;}
140
+ .bx-xm-lift-soft .bx-strike{color:var(--ink-soft);}
141
+ .bx-xm-lift-soft .bx-capmark{font-size:11px;}
142
+ .bx-xm-foot{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-soft);display:flex;gap:8px;align-items:flex-start;}
143
+ .bx-xm-foot b{color:var(--ink);}
144
+ .bx-xm-foot-clean{color:var(--brand-dark);}
145
+ .bx-xm-foot-mark{color:var(--good);font-weight:700;flex:0 0 auto;}
146
+ .bx-xm-chip{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-left:3px solid var(--verified);border-radius:10px;background:var(--paper-elevated);padding:11px 13px;margin-top:auto;}
147
+ .bx-xm-chip-mark{color:var(--verified);font-size:9px;flex:0 0 auto;margin-top:3px;}
148
+ .bx-xm-chip-text{font-size:12px;line-height:1.5;color:var(--ink-soft);}
149
+ .bx-xm-chip-text b{color:var(--ink);}
150
+ .bx-xm-chip-text code{font-family:var(--mono);font-size:11px;background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;padding:0 4px;color:var(--verified);}
151
+
152
+ /* CONVERGENCE STRIP */
153
+ .bx-conv{border:1px solid var(--good-line);border-radius:14px;background:linear-gradient(180deg,var(--good-soft),var(--paper-raised));padding:16px 18px;display:flex;flex-direction:column;gap:14px;}
154
+ .bx-conv-head{display:flex;flex-direction:column;gap:6px;}
155
+ .bx-conv-tag{align-self:flex-start;font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--good);font-weight:600;}
156
+ .bx-conv-lead{margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft);max-width:92ch;}
157
+ .bx-conv-lead b{color:var(--brand-dark);}
158
+ .bx-conv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
159
+ .bx-conv-plat{border:1px solid var(--good-line);border-radius:12px;background:var(--paper-raised);padding:13px 16px;display:flex;flex-direction:column;gap:10px;min-width:0;}
160
+ .bx-conv-plat-name{font-size:14px;font-weight:700;color:var(--ink);}
161
+ .bx-conv-pair{display:flex;align-items:stretch;gap:12px;}
162
+ .bx-conv-cell{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:4px;}
163
+ .bx-conv-agent{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;color:var(--ink-soft);white-space:nowrap;}
164
+ .bx-conv-num{font-family:var(--mono);font-size:24px;font-weight:700;color:var(--good);font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1;}
165
+ .bx-conv-vs{align-self:center;font-family:var(--mono);font-size:18px;color:var(--ink-faint);flex:0 0 auto;}
166
+ .bx-conv-spread{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;color:var(--good);align-self:flex-start;padding:2px 8px;border-radius:999px;background:var(--good-soft);border:1px solid var(--good-line);}
167
+ .bx-conv-note{margin:0;font-size:12px;line-height:1.5;color:var(--ink-soft);}
168
+ .bx-conv-note b{color:var(--ink);}
169
+ .bx-conv-note em{color:var(--verified);font-style:normal;}
170
+
171
+ /* deep-dive header divider */
172
+ .bx-deep{display:flex;flex-direction:column;gap:0;border-top:1px dashed var(--line);padding-top:20px;margin-top:4px;}
173
+ .bx-deep-head{display:flex;flex-direction:column;gap:7px;}
174
+
175
+ /* ============ existing rules below (reused) ============ */
176
+ .bx-shell{display:flex;flex-direction:column;gap:20px;margin-top:6px;}
177
+ .bx-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
178
+
179
+ /* legend */
180
+ .bx-legend{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;font-family:var(--mono);font-size:11px;letter-spacing:.02em;color:var(--ink-soft);}
181
+ .bx-key{display:inline-flex;align-items:center;gap:7px;}
182
+ .bx-swatch{width:12px;height:12px;border-radius:3px;flex:0 0 auto;}
183
+ .bx-swatch-vise{background:var(--brand);}
184
+ .bx-swatch-ctrl{background:#AAB4C3;}
185
+ .bx-key-note{color:var(--ink-soft);letter-spacing:.05em;}
186
+
187
+ /* ============ HEADLINE: two composites ============ */
188
+ .bx-headline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
189
+ .bx-head-primary,.bx-head-secondary{border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:0 16px 42px rgba(32,47,75,.08);display:flex;flex-direction:column;gap:12px;min-width:0;}
190
+ .bx-head-primary{background:var(--paper-raised);}
191
+ .bx-head-secondary{background:linear-gradient(180deg,var(--good-soft),var(--paper-raised));border-color:var(--good-line);}
192
+ .bx-head-tag{font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);}
193
+ .bx-head-tag-alt{color:var(--good);font-weight:600;}
194
+ .bx-head-nums{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap;}
195
+ .bx-head-stat{display:flex;flex-direction:column;gap:5px;}
196
+ .bx-head-stat b{font-family:var(--mono);font-size:30px;line-height:1;color:var(--ink);letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
197
+ .bx-ctrl-num{color:var(--ink-soft)!important;}
198
+ .bx-head-stat span{font-size:11px;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.03em;}
199
+ .bx-head-lift b{color:var(--good);}
200
+ .bx-head-copy{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-soft);}
201
+ .bx-head-copy b{color:var(--ink);}
202
+ .bx-head-secondary .bx-head-copy b{color:var(--brand-dark);}
203
+ .bx-head-round{display:block;margin-top:6px;font-family:var(--mono);font-size:10.5px;line-height:1.5;letter-spacing:.01em;color:var(--ink-soft);}
204
+ .bx-head-secondary .bx-head-copy .bx-head-round b{color:var(--ink-soft);}
205
+
206
+ /* ============ DIMENSION LEDGER ============ */
207
+ .bx-dims{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
208
+ .bx-dims-lead{grid-column:1 / -1;margin:2px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink-soft);}
209
+ .bx-dims-lead b{color:var(--ink);}
210
+ .bx-dim{border:1px solid var(--line);border-radius:14px;background:var(--paper-raised);padding:16px 18px;box-shadow:0 16px 42px rgba(32,47,75,.08);display:flex;flex-direction:column;min-width:0;}
211
+ .bx-dim-win{border-left:3px solid var(--good);}
212
+ .bx-dim-tie{border-left:3px solid var(--ink-faint);}
213
+ .bx-dim-struct{grid-column:1 / -1;background:var(--paper-elevated);border-style:dashed;border-color:var(--line);border-left:3px dashed var(--line);box-shadow:none;}
214
+ .bx-dim-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;}
215
+ .bx-dim-name{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
216
+ .bx-dim-kind{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:999px;white-space:nowrap;}
217
+ .bx-kind-win{color:var(--good);background:var(--good-soft);border:1px solid var(--good-line);}
218
+ .bx-kind-tie{color:var(--ink-soft);background:var(--paper-elevated);border:1px solid var(--line);}
219
+ .bx-kind-budget{color:var(--verified);background:var(--paper-elevated);border:1px solid var(--line);text-transform:none;letter-spacing:.02em;}
220
+ .bx-kind-struct{color:var(--ink-soft);background:repeating-linear-gradient(-45deg,var(--paper-elevated),var(--paper-elevated) 4px,var(--paper-raised) 4px,var(--paper-raised) 8px);border:1px solid var(--line);}
221
+ .bx-dim-sub{margin:7px 0 14px;font-size:12.5px;line-height:1.45;color:var(--ink-soft);}
222
+ .bx-dim-sub b{color:var(--ink);}
223
+ .bx-dim-weight{display:inline-block;font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);letter-spacing:.03em;white-space:nowrap;}
224
+ .bx-body{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;}
225
+ .bx-plot{display:flex;flex-direction:column;gap:8px;min-width:0;}
226
+ .bx-row{display:grid;grid-template-columns:68px minmax(0,1fr) 46px;align-items:center;gap:10px;}
227
+ .bx-arm{font-family:var(--mono);font-size:11px;color:var(--ink-soft);letter-spacing:.02em;}
228
+ .bx-track{position:relative;height:9px;border-radius:999px;background:#E7ECF3;overflow:hidden;}
229
+ .bx-fill{height:100%;border-radius:999px;}
230
+ .bx-fill-vise{background:var(--brand);}
231
+ .bx-fill-ctrl{background:#AAB4C3;}
232
+ .bx-fill-struct{background:repeating-linear-gradient(-45deg,var(--ink-faint),var(--ink-faint) 5px,#AAB4C3 5px,#AAB4C3 10px);}
233
+ .bx-track-zero{overflow:visible;background:#E7ECF3;}
234
+ .bx-zero-label{position:absolute;left:8px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:10px;color:var(--ink-soft);letter-spacing:.02em;white-space:nowrap;}
235
+ .bx-val{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;}
236
+ .bx-val-ctrl{color:var(--ink-soft);font-weight:500;}
237
+ .bx-val-struct{color:var(--ink-soft);}
238
+ .bx-delta{display:flex;flex-direction:column;align-items:flex-end;line-height:1;padding-left:14px;border-left:1px solid var(--line);min-width:82px;}
239
+ .bx-delta-lead{font-family:var(--mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px;}
240
+ .bx-delta-num{font-family:var(--mono);font-size:26px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
241
+ .bx-delta-cap{font-family:var(--mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;margin-top:5px;color:var(--ink-soft);}
242
+ .bx-delta-win .bx-delta-num{color:var(--good);}
243
+ .bx-delta-tie .bx-delta-num{color:var(--ink-soft);}
244
+ .bx-delta-struct .bx-delta-num{color:var(--ink-soft);font-weight:600;font-size:22px;}
245
+
246
+ /* tie note */
247
+ .bx-tie-note{border:1px solid var(--line);border-left:3px solid var(--verified);border-radius:12px;background:var(--paper-raised);padding:13px 16px;font-size:13.5px;line-height:1.5;color:var(--ink-soft);}
248
+ .bx-tie-note b{color:var(--ink);}
249
+ .bx-tie-note em{color:var(--verified);font-style:normal;}
250
+
251
+ /* ============ PER-PLATFORM DUMBBELL LADDER ============ */
252
+ .bx-platforms{display:flex;flex-direction:column;gap:14px;}
253
+ .bx-plat-head{display:flex;flex-direction:column;gap:7px;}
254
+ /* rust reserved for genuine caveats; neutral section kickers use ink-soft */
255
+ .bx-tag,.bx-note-tag{align-self:flex-start;font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--verified);}
256
+ .bx-tag-neutral{color:var(--ink-soft);}
257
+ .bx-plat-copy{margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft);max-width:92ch;}
258
+ .bx-plat-copy b{color:var(--ink);}
259
+ .bx-plat-copy em{color:var(--brand-dark);font-style:normal;}
260
+ .bx-plat-list{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:14px;background:var(--paper-raised);box-shadow:0 10px 30px rgba(32,47,75,.06);padding:6px;}
261
+ .bx-plat{padding:13px 16px 15px;border-radius:10px;}
262
+ .bx-plat + .bx-plat{border-top:1px solid var(--line);border-top-left-radius:0;border-top-right-radius:0;}
263
+ .bx-plat-avg{background:var(--brand-soft);border:1px solid var(--good-line);margin-bottom:4px;}
264
+ .bx-plat-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap;}
265
+ .bx-plat-name{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap;}
266
+ .bx-plat-fix{display:inline;font-weight:400;font-size:12px;color:var(--ink-soft);white-space:normal;margin-left:8px;}
267
+ .bx-plat-meta{display:inline-flex;align-items:center;gap:10px;flex-shrink:0;}
268
+ .bx-plat-delta{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--good);font-variant-numeric:tabular-nums;}
269
+ .bx-plat-avg .bx-plat-delta{font-size:18px;}
270
+ .bx-sig{display:inline-block;padding:1px 8px;border-radius:999px;font-family:var(--mono);font-size:10.5px;background:var(--good-soft);color:var(--good);border:1px solid var(--good-line);white-space:nowrap;}
271
+ .bx-sig-full{background:var(--good-soft);color:var(--good);border:1px solid var(--good-line);}
272
+ .bx-sig-low{background:var(--paper-elevated);color:var(--verified);border-color:var(--line);}
273
+
274
+ /* the axis / dumbbell */
275
+ .bx-axis{position:relative;height:22px;}
276
+ .bx-gridlines{position:absolute;inset:0;}
277
+ .bx-gridlines i{position:absolute;top:-2px;bottom:-2px;width:1px;background:var(--line);}
278
+ .bx-gridlines i:first-child,.bx-gridlines i:last-child{background:var(--ink-faint);opacity:.5;}
279
+ .bx-connector{position:absolute;top:50%;height:4px;transform:translateY(-50%);border-radius:999px;background:linear-gradient(90deg,#AAB4C3,var(--brand));}
280
+ .bx-plat-avg .bx-connector{height:5px;}
281
+ .bx-dot{position:absolute;top:50%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 3px var(--paper-raised);}
282
+ .bx-plat-avg .bx-dot{box-shadow:0 0 0 3px var(--brand-soft);width:16px;height:16px;}
283
+ .bx-dot-ctrl{background:#AAB4C3;z-index:1;}
284
+ .bx-dot-vise{background:var(--brand);z-index:2;}
285
+ .bx-dot-capped{background:var(--brand);}
286
+ .bx-dot-lab{position:absolute;left:50%;top:-2px;transform:translate(-50%,-100%);font-family:var(--mono);font-size:11px;font-weight:600;color:var(--brand-dark);white-space:nowrap;font-variant-numeric:tabular-nums;}
287
+ .bx-dot-ctrl .bx-dot-lab{color:var(--ink-soft);font-weight:500;}
288
+ .bx-dot-lab-below{top:auto;bottom:-2px;transform:translate(-50%,100%);}
289
+ /* edge-aware labels: a dot sitting near the axis right edge (Web 88.3, RN 89.7)
290
+ right-aligns its nowrap label to the dot center so it never overhangs the
291
+ axis padding-box, independent of the host page's outer padding. */
292
+ .bx-dot-edge .bx-dot-lab{left:auto;right:50%;transform:translate(50%,-100%);}
293
+ .bx-capmark{color:var(--verified);font-size:8px;vertical-align:super;margin-left:1px;}
294
+ .bx-axis-scale{position:relative;height:16px;margin:0 6px;font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);font-variant-numeric:tabular-nums;}
295
+ .bx-axis-scale span{position:absolute;transform:translateX(-50%);}
296
+ .bx-axis-scale span:first-child{transform:translateX(0);}
297
+ .bx-axis-scale span:last-child{transform:translateX(-100%);}
298
+
299
+ /* notes */
300
+ .bx-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
301
+ .bx-note{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--paper-raised);}
302
+ .bx-note-cost{border-left:3px solid var(--verified);}
303
+ .bx-note-super{border-left:3px solid var(--ink-faint);}
304
+ .bx-note-tag{display:block;margin-bottom:6px;}
305
+ .bx-note-cost .bx-note-tag{color:var(--verified);}
306
+ .bx-note-super .bx-note-tag{color:var(--ink-soft);}
307
+ .bx-note p{margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft);}
308
+ .bx-note b{color:var(--ink);}
309
+ .bx-note em{font-style:italic;}
310
+ .bx-strike{text-decoration:line-through;color:var(--ink-soft);text-decoration-color:var(--verified);}
311
+ .bx-footnote{margin:0;font-size:12px;line-height:1.55;color:var(--ink-soft);max-width:100%;border-top:1px dashed var(--line);padding-top:14px;}
312
+ .bx-footnote b{color:var(--ink);}
313
+ .bx-pt-head{font-size:13px;color:var(--ink);margin:0 0 8px;}
314
+ .bx-pt-head b{color:var(--ink);}
315
+ .bx-pt-scroll{overflow-x:auto;}
316
+ .bx-pt{width:100%;min-width:360px;border-collapse:collapse;font-size:13px;}
317
+ .bx-pt th,.bx-pt td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap;}
318
+ .bx-pt th{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);font-weight:700;}
319
+ .bx-pt td:first-child,.bx-pt th:first-child{text-align:left;font-family:var(--sans);color:var(--ink);}
320
+ .bx-pt td.v{color:var(--ink);font-weight:600;}
321
+ .bx-pt td.lift{color:var(--good);font-weight:700;}
322
+ .bx-pt tr:last-child td{border-bottom:none;border-top:2px solid var(--line);color:var(--ink);font-weight:700;}
323
+
324
+ @media (max-width:860px){
325
+ .bx-recon-grid{grid-template-columns:1fr;}
326
+ .bx-xm-cards{grid-template-columns:1fr;}
327
+ .bx-conv-grid{grid-template-columns:1fr;}
328
+ .bx-headline{grid-template-columns:1fr;}
329
+ .bx-dims{grid-template-columns:1fr;}
330
+ .bx-dim-struct{grid-column:auto;}
331
+ .bx-notes{grid-template-columns:1fr;}
332
+ }
333
+ @media (max-width:520px){
334
+ .bx-xm{padding:14px;}
335
+ .bx-xm-card{padding:15px 16px;}
336
+ .bx-xm-stat b{font-size:26px;}
337
+ .bx-xm-nums{gap:16px;}
338
+ .bx-recon{padding:14px;}
339
+ .bx-conv-num{font-size:20px;}
340
+ .bx-dim{padding:14px;}
341
+ .bx-body{grid-template-columns:1fr;gap:12px;}
342
+ .bx-delta{flex-direction:row;align-items:baseline;gap:8px;padding-left:0;border-left:0;border-top:1px solid var(--line);padding-top:10px;width:100%;justify-content:space-between;}
343
+ .bx-delta-lead{margin-bottom:0;order:1;}
344
+ .bx-delta-num{order:2;font-size:22px;}
345
+ .bx-delta-cap{order:3;margin-top:0;}
346
+ .bx-head-nums{gap:16px;}
347
+ .bx-head-stat b{font-size:24px;}
348
+ .bx-row{grid-template-columns:64px minmax(0,1fr) 42px;gap:8px;}
349
+ .bx-plat-name{white-space:normal;}
350
+ .bx-plat-fix{display:block;margin-left:0;margin-top:3px;}
351
+ .bx-plat-top{margin-bottom:22px;}
352
+ }
353
+ /* tightest stop: force the triple mono stats to a stable 3-col grid instead of ad-hoc wrap */
354
+ @media (max-width:390px){
355
+ .bx-xm-nums,.bx-head-nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end;}
356
+ .bx-xm-stat b,.bx-head-stat b{font-size:21px;}
357
+ .bx-xm-stat span,.bx-head-stat span{font-size:10px;}
358
+ .bx-recon-num{font-size:26px;}
359
+ .bx-conv-pair{gap:8px;}
360
+ .bx-conv-num{font-size:18px;}
361
+ .bx-conv-vs{font-size:14px;}
362
+ /* inset the dumbbell axis at the narrowest width so no dot label leans on
363
+ the host page's outer padding to stay inside; the edge-aligned rightmost
364
+ labels then sit comfortably within the padded axis parent. */
365
+ .bx-axis{margin:0 8px;}
366
+ .bx-axis-scale{margin:0 14px;}
367
+ }
136
368
 
137
369
  .catgroup{padding-top:22px;}
138
370
  .cathead{display:grid;grid-template-columns:72px minmax(0,1fr);gap:20px;align-items:flex-start;padding:62px 0 18px;scroll-margin-top:16px;}
@@ -503,9 +735,6 @@
503
735
  .hero h1{max-width:14ch;}
504
736
  .panel-stat{grid-template-columns:1fr 1fr;}
505
737
  .capgrid{grid-template-columns:1fr;}
506
- .bench-hero{grid-template-columns:1fr;}
507
- .platform-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
508
- .weight-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
509
738
  .cathead{grid-template-columns:52px 1fr;}
510
739
  .cathead .catletter{font-size:42px;}
511
740
  .diffrow{grid-template-columns:1fr;}
@@ -522,9 +751,6 @@
522
751
  section.problem{padding:18px;border-radius:12px;}
523
752
  .phone .pbody{min-height:128px;}
524
753
  .panel-stat{grid-template-columns:1fr 1fr;}
525
- .bench-metrics,.platform-grid,.weight-grid{grid-template-columns:1fr;}
526
- .platform-card p{min-height:0;}
527
- .bench-bar{grid-template-columns:78px minmax(0,1fr) 44px;}
528
754
  .uth{grid-template-columns:1fr;}
529
755
  .phone-hero h4{font-size:24px;}
530
756
  .phone-metrics{grid-template-columns:1fr;}
@@ -646,80 +872,67 @@
646
872
 
647
873
  <section class="benchmark reveal" id="benchmark">
648
874
  <p class="section-kicker">Real E2E benchmark evidence</p>
649
- <h2>The current scorecard shows the workflow lift.</h2>
650
- <p class="intro">Vise was measured on complete brownfield social.plus integrations across five platform families. Agents had to preserve an existing product app, add social surfaces in-context, and produce runnable evidence. The July 2026 scorecard is directional product evidence from representative fixtures, not a third-party audit.</p>
651
-
652
- <div class="bench-shell">
653
- <div class="bench-hero">
654
- <div class="bench-scoreboard">
655
- <h3>Head-to-head average</h3>
656
- <div class="bench-metrics">
657
- <div class="bench-metric"><b>91.8</b><span>average with Vise</span></div>
658
- <div class="bench-metric"><b>48.0</b><span>average without Vise</span></div>
659
- <div class="bench-metric lift"><b>+43.8</b><span>average point lift</span></div>
875
+ <h2>Vise vs no-Vise, on two coding agents &mdash; Vise scored higher every time.</h2>
876
+ <p class="intro">We built the same brownfield social.plus integration twice on each of five platforms &mdash; once through Vise&rsquo;s governed workflow, once from a plain checklist with Vise switched off &mdash; using two coding agents. With both agents, the Vise arm scored higher on every platform.</p>
877
+
878
+ <div class="bx-shell">
879
+
880
+ <div class="bx-legend" role="note">
881
+ <span class="bx-key"><span class="bx-swatch bx-swatch-vise"></span>With Vise&nbsp;(governed)</span>
882
+ <span class="bx-key"><span class="bx-swatch bx-swatch-ctrl"></span>Without Vise&nbsp;(checklist)</span>
883
+ <span class="bx-key bx-key-note">0&ndash;100 composite &middot; averaged across 5 platforms</span>
884
+ </div>
885
+
886
+ <div class="bx-xm-cards">
887
+
888
+ <div class="bx-xm-card bx-xm-anchor">
889
+ <div class="bx-xm-card-head">
890
+ <div class="bx-xm-model"><span class="bx-xm-name">Claude&nbsp;Sonnet&nbsp;5</span></div>
891
+ <p class="bx-xm-proto">Clean run &middot; current hardened protocol</p>
660
892
  </div>
661
- <div class="bench-bars" aria-label="Average score comparison">
662
- <div class="bench-bar"><span>With Vise</span><div class="bench-track"><div class="bench-fill" style="width:91.8%;"></div></div><b>91.8</b></div>
663
- <div class="bench-bar"><span>No Vise</span><div class="bench-track"><div class="bench-fill control" style="width:48%;"></div></div><b>48.0</b></div>
893
+ <div class="bx-plot" style="margin-top:16px;">
894
+ <div class="bx-row"><span class="bx-arm">With&nbsp;Vise</span><div class="bx-track"><div class="bx-fill bx-fill-vise" style="width:82.2%"></div></div><b class="bx-val">82.2</b></div>
895
+ <div class="bx-row"><span class="bx-arm">Without</span><div class="bx-track"><div class="bx-fill bx-fill-ctrl" style="width:53.1%"></div></div><b class="bx-val bx-val-ctrl">53.1</b></div>
664
896
  </div>
897
+ <p class="bx-xm-foot bx-xm-foot-clean"><span class="bx-xm-foot-mark" aria-hidden="true">&#10003;</span>Vise ahead on all 5 platforms.</p>
665
898
  </div>
666
- <div class="bench-callout">
667
- <b>What improved in the Vise arm</b>
668
- <p>The agent started from a grounded plan, selected an experience direction, used SDK facts instead of guessing APIs, discovered social targets naturally, validated requested surfaces, and treated runtime proof as separate from a successful build.</p>
899
+
900
+ <div class="bx-xm-card">
901
+ <div class="bx-xm-card-head">
902
+ <div class="bx-xm-model"><span class="bx-xm-name">OpenAI&nbsp;Codex&nbsp;GPT-5.4</span><span class="bx-xm-badge bx-xm-badge-earlier">directional</span></div>
903
+ <p class="bx-xm-proto">Second agent &middot; earlier, higher-variance harness</p>
904
+ </div>
905
+ <div class="bx-plot" style="margin-top:16px;">
906
+ <div class="bx-row"><span class="bx-arm">With&nbsp;Vise</span><div class="bx-track"><div class="bx-fill bx-fill-vise" style="width:92%"></div></div><b class="bx-val">~92</b></div>
907
+ <div class="bx-row"><span class="bx-arm">Without</span><div class="bx-track"><div class="bx-fill bx-fill-ctrl" style="width:66%"></div></div><b class="bx-val bx-val-ctrl">~66</b></div>
908
+ </div>
909
+ <p class="bx-xm-foot"><span class="bx-xm-foot-mark" aria-hidden="true">&#10003;</span>Vise ahead on all 5 platforms.</p>
669
910
  </div>
911
+
670
912
  </div>
671
913
 
672
- <div class="platform-grid" aria-label="Current platform benchmark rows">
673
- <article class="platform-card">
674
- <h3>Android</h3>
675
- <p>Investor watchlist app with social circles.</p>
676
- <div class="score-row"><span>Vise</span><b>94.3</b><span class="mini-track"><span class="mini-fill" style="width:94.3%;"></span></span></div>
677
- <div class="score-row"><span>No Vise</span><b>31.2</b><span class="mini-track"><span class="mini-fill control" style="width:31.2%;"></span></span></div>
678
- <span class="delta-pill">+63.1</span>
679
- </article>
680
- <article class="platform-card">
681
- <h3>iOS</h3>
682
- <p>Editorial audio app with curator clubs.</p>
683
- <div class="score-row"><span>Vise</span><b>90.1</b><span class="mini-track"><span class="mini-fill" style="width:90.1%;"></span></span></div>
684
- <div class="score-row"><span>No Vise</span><b>43.0</b><span class="mini-track"><span class="mini-fill control" style="width:43%;"></span></span></div>
685
- <span class="delta-pill">+47.1</span>
686
- </article>
687
- <article class="platform-card">
688
- <h3>Web</h3>
689
- <p>Fitness media app with program communities.</p>
690
- <div class="score-row"><span>Vise</span><b>91.4</b><span class="mini-track"><span class="mini-fill" style="width:91.4%;"></span></span></div>
691
- <div class="score-row"><span>No Vise</span><b>65.6</b><span class="mini-track"><span class="mini-fill control" style="width:65.6%;"></span></span></div>
692
- <span class="delta-pill">+25.8</span>
693
- </article>
694
- <article class="platform-card">
695
- <h3>Flutter</h3>
696
- <p>Training clubhouse with squad discussions.</p>
697
- <div class="score-row"><span>Vise</span><b>92.8</b><span class="mini-track"><span class="mini-fill" style="width:92.8%;"></span></span></div>
698
- <div class="score-row"><span>No Vise</span><b>33.0</b><span class="mini-track"><span class="mini-fill control" style="width:33%;"></span></span></div>
699
- <span class="delta-pill">+59.8</span>
700
- </article>
701
- <article class="platform-card">
702
- <h3>React Native</h3>
703
- <p>Athlete training app with clubhouse feed.</p>
704
- <div class="score-row"><span>Vise</span><b>90.3</b><span class="mini-track"><span class="mini-fill" style="width:90.3%;"></span></span></div>
705
- <div class="score-row"><span>No Vise</span><b>67.3</b><span class="mini-track"><span class="mini-fill control" style="width:67.3%;"></span></span></div>
706
- <span class="delta-pill">+23.0</span>
707
- </article>
914
+ <div class="bx-pt-scroll">
915
+ <p class="bx-pt-head"><b>Per platform</b> &mdash; Claude&nbsp;Sonnet&nbsp;5, the clean uniform run. (Codex&nbsp;GPT-5.4 led on all five too, but its no-Vise controls are high-variance, so it stays a directional aggregate above rather than precise per-platform numbers.)</p>
916
+ <table class="bx-pt">
917
+ <thead><tr><th>Platform</th><th>With&nbsp;Vise</th><th>Without</th><th>Lift</th></tr></thead>
918
+ <tbody>
919
+ <tr><td>Web</td><td class="v">88.3</td><td>56.8</td><td class="lift">+31.5</td></tr>
920
+ <tr><td>React&nbsp;Native</td><td class="v">89.7</td><td>62.1</td><td class="lift">+27.6</td></tr>
921
+ <tr><td>iOS</td><td class="v">77.5</td><td>48.0</td><td class="lift">+29.5</td></tr>
922
+ <tr><td>Android</td><td class="v">77.5</td><td>50.1</td><td class="lift">+27.4</td></tr>
923
+ <tr><td>Flutter</td><td class="v">78.0</td><td>48.5</td><td class="lift">+29.5</td></tr>
924
+ <tr><td>Average</td><td class="v">82.2</td><td>53.1</td><td class="lift">+29.1</td></tr>
925
+ </tbody>
926
+ </table>
708
927
  </div>
709
928
 
710
- <div class="bench-method">
711
- <h3>How the score is calculated</h3>
712
- <div class="weight-grid" aria-label="Benchmark scoring weights">
713
- <div class="weight-card"><b>25%</b><span>capability activation</span></div>
714
- <div class="weight-card"><b>25%</b><span>product outcome</span></div>
715
- <div class="weight-card"><b>20%</b><span>design integration</span></div>
716
- <div class="weight-card"><b>20%</b><span>correctness</span></div>
717
- <div class="weight-card"><b>10%</b><span>efficiency</span></div>
718
- </div>
719
- <p>Each run is scored from 0-100. Product outcome and design integration are judged from runtime-visible social surfaces and screenshots. Correctness covers build/runtime hygiene, SDK-backed source, no leaked secrets, no hardcoded social object IDs, and completed handoff. Efficiency rewards validated SDK-backed outcomes within the run budget.</p>
929
+ <div class="bx-note" role="note">
930
+ <span class="bx-note-tag">How it&rsquo;s scored</span>
931
+ <p>Same brownfield app, same agent, built twice per platform &mdash; once through Vise&rsquo;s governed workflow, once from a plain checklist with Vise off. Each run is launched on a real emulator / simulator / browser and scored <b>0&ndash;100</b> as a weighted composite: capability activation&nbsp;25% (used the governed workflow), product outcome&nbsp;25% (social surfaces that actually load), design integration&nbsp;20%, runtime hygiene&nbsp;20% (builds &amp; launches clean), efficiency&nbsp;10%. The table and card scores are that composite; each card number is the average across all five platforms.</p>
720
932
  </div>
721
933
 
722
- <p class="bench-footnote">Benchmark context: produced with the Codex GPT-5.4 Medium harness and designed for equivalent-tier coding models such as Claude Sonnet 4.6 or Gemini Flash 3.5. Each Vise/no-Vise pair should stay on the same model and reasoning setting when used for a formal comparison.</p>
934
+ <p class="bx-footnote"><b>Vise is the deterministic CLI under test, not an AI model.</b> About a quarter of each score is capability activation &mdash; adopting Vise&rsquo;s governed workflow, which the no-Vise control can&rsquo;t earn by construction &mdash; so part of every gap is definitional; set that axis aside and Vise still comes out ahead, driven mainly by product and design quality (runtime hygiene is roughly a tie). Codex ran on an earlier, higher-variance harness, so its figures are directional (rounded). July&nbsp;2026 directional product evidence, n&nbsp;=&nbsp;1 per arm &mdash; not a third-party audit.</p>
935
+
723
936
  </div>
724
937
  </section>
725
938
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amityco/social-plus-vise",
3
- "version": "1.4.6",
3
+ "version": "1.6.0",
4
4
  "description": "Skill-guided deterministic CLI for social.plus SDK integration assistance.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",