@codeledger/insight-ui 0.9.1 → 0.9.2
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/dist/components/CockpitLayout.d.ts +12 -2
- package/dist/components/CockpitLayout.d.ts.map +1 -1
- package/dist/components/CockpitLayout.js +85 -6
- package/dist/components/CockpitLayout.js.map +1 -1
- package/dist/pages/Efficiency.d.ts.map +1 -1
- package/dist/pages/Efficiency.js +22 -2
- package/dist/pages/Efficiency.js.map +1 -1
- package/dist/pages/Integrity.d.ts.map +1 -1
- package/dist/pages/Integrity.js +7 -1
- package/dist/pages/Integrity.js.map +1 -1
- package/dist/pages/Knowledge.d.ts.map +1 -1
- package/dist/pages/Knowledge.js +1 -1
- package/dist/pages/Knowledge.js.map +1 -1
- package/dist/pages/Overview.d.ts.map +1 -1
- package/dist/pages/Overview.js +74 -1
- package/dist/pages/Overview.js.map +1 -1
- package/dist/pages/Quality.d.ts.map +1 -1
- package/dist/pages/Quality.js +1 -1
- package/dist/pages/Quality.js.map +1 -1
- package/dist/pages/Value.d.ts.map +1 -1
- package/dist/pages/Value.js +1 -1
- package/dist/pages/Value.js.map +1 -1
- package/dist/render.d.ts +26 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +182 -35
- package/dist/render.js.map +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +108 -9
- package/dist/theme.js.map +1 -1
- package/package.json +3 -3
package/dist/pages/Value.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Value.js","sourceRoot":"","sources":["../../src/pages/Value.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Value.js","sourceRoot":"","sources":["../../src/pages/Value.tsx"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
1
|
import type { InsightSnapshot } from '@codeledger/types';
|
|
2
|
-
|
|
2
|
+
/** Pre-computed evidence payload for static builds (no /api/ fetch needed) */
|
|
3
|
+
export interface EvidenceCache {
|
|
4
|
+
[metricKey: string]: {
|
|
5
|
+
explanation: string;
|
|
6
|
+
events: Array<Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Render a complete HTML page for the Insight dashboard.
|
|
11
|
+
*
|
|
12
|
+
* @param pathname - Route path (/, /integrity, /quality, etc.)
|
|
13
|
+
* @param snapshot - Complete InsightSnapshot with all metrics
|
|
14
|
+
* @param options.evidenceCache - Pre-computed evidence for static builds (embeds in HTML, no fetch needed)
|
|
15
|
+
* @param options.staticMode - When true, generates file://-compatible HTML (no server dependencies)
|
|
16
|
+
* @param options.pagePrefix - Prefix for inter-page links in static mode (e.g., '' for same-dir)
|
|
17
|
+
*/
|
|
18
|
+
export declare function renderInsightPage(pathname: string, snapshot: InsightSnapshot, options?: {
|
|
19
|
+
evidenceCache?: EvidenceCache;
|
|
20
|
+
staticMode?: boolean;
|
|
21
|
+
pagePrefix?: string;
|
|
22
|
+
}): string;
|
|
23
|
+
/**
|
|
24
|
+
* Render a full-page evidence view — no drawer, no side panel.
|
|
25
|
+
* Used when "Open full page" is clicked from the evidence drawer.
|
|
26
|
+
*/
|
|
27
|
+
export declare function renderEvidencePage(metric: string, explanation: string, events: Array<Record<string, unknown>>, filters: Record<string, unknown>): string;
|
|
3
28
|
//# sourceMappingURL=render.d.ts.map
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAmBzD,wBAAgB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAmBzD,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,CAAC,SAAS,EAAE,MAAM,GAAG;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACxC,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,MAAM,CAyDR;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CA0FR"}
|
package/dist/render.js
CHANGED
|
@@ -16,10 +16,59 @@ const routes = [
|
|
|
16
16
|
{ href: '/efficiency', label: 'Efficiency' },
|
|
17
17
|
{ href: '/value', label: 'Value' },
|
|
18
18
|
];
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Render a complete HTML page for the Insight dashboard.
|
|
21
|
+
*
|
|
22
|
+
* @param pathname - Route path (/, /integrity, /quality, etc.)
|
|
23
|
+
* @param snapshot - Complete InsightSnapshot with all metrics
|
|
24
|
+
* @param options.evidenceCache - Pre-computed evidence for static builds (embeds in HTML, no fetch needed)
|
|
25
|
+
* @param options.staticMode - When true, generates file://-compatible HTML (no server dependencies)
|
|
26
|
+
* @param options.pagePrefix - Prefix for inter-page links in static mode (e.g., '' for same-dir)
|
|
27
|
+
*/
|
|
28
|
+
export function renderInsightPage(pathname, snapshot, options) {
|
|
20
29
|
const active = pathname === '/' ? '/' : pathname;
|
|
21
30
|
const page = selectPage(active, snapshot);
|
|
22
|
-
return '<!doctype html>' + renderToStaticMarkup(_jsxs("html", { lang: "en", children: [_jsxs("head", { children: [_jsx("meta", { charSet: "utf-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }), _jsx("title", { children: "CodeLedger Insight" }), _jsx("style", { children: insightStyles })] }), _jsxs("body", { children: [_jsxs("div", { className: "shell", children: [_jsxs("header", { className: "header", children: [_jsxs("div", { children: [_jsx("p", { className: "kicker", children: "CodeLedger Insight" }), _jsx("h1", { className: "title", children: "Engineering work as a compounding asset" }), _jsx("p", { className: "subtitle", children: "Every metric is traceable to evidence. No manual logging." })] }), _jsxs("div", { className: "card snapshot-card", children: [_jsx("strong", { children: snapshot.eventCount }), _jsxs("span", { children: ["events \u00B7 ", snapshot.generatedAt.slice(0, 16).replace('T', ' ')] })] })] }), _jsx("nav", { className: "nav", children: routes.map((route) =>
|
|
31
|
+
return '<!doctype html>' + renderToStaticMarkup(_jsxs("html", { lang: "en", children: [_jsxs("head", { children: [_jsx("meta", { charSet: "utf-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }), _jsx("title", { children: "CodeLedger Insight" }), _jsx("style", { children: insightStyles })] }), _jsxs("body", { children: [_jsxs("div", { className: "shell", children: [_jsxs("header", { className: "header", children: [_jsxs("div", { children: [_jsx("p", { className: "kicker", children: "CodeLedger Insight" }), _jsx("h1", { className: "title", children: "Engineering work as a compounding asset" }), _jsx("p", { className: "subtitle", children: "Every metric is traceable to evidence. No manual logging." })] }), _jsxs("div", { className: "card snapshot-card", children: [_jsx("strong", { children: snapshot.eventCount }), _jsxs("span", { children: ["events \u00B7 ", snapshot.generatedAt.slice(0, 16).replace('T', ' ')] })] })] }), _jsx("nav", { className: "nav", children: routes.map((route) => {
|
|
32
|
+
const prefix = options?.pagePrefix ?? '';
|
|
33
|
+
const href = options?.staticMode
|
|
34
|
+
? (route.href === '/' ? `${prefix}index.html` : `${prefix}${route.href.slice(1)}.html`)
|
|
35
|
+
: route.href;
|
|
36
|
+
return _jsx("a", { href: href, className: route.href === active ? 'active' : '', children: route.label }, route.href);
|
|
37
|
+
}) }), _jsx(WelcomeBanner, { welcomeState: snapshot.welcomeState }), _jsx(ModeTabs, { snapshot: snapshot, pathname: active }), _jsx(OnboardingHint, { snapshot: snapshot }), _jsx(ScopeHeader, { snapshot: snapshot, pathname: active }), page, _jsx("p", { className: "footer-note", children: "Aggregate signals only \u2014 no individual productivity tracking." })] }), _jsx("div", { className: "drawer-backdrop", id: "drawer-backdrop" }), _jsxs("aside", { className: "evidence-drawer", id: "evidence-drawer", children: [_jsxs("div", { className: "drawer-sticky-header", children: [_jsx("button", { className: "drawer-close", id: "evidence-close", children: "Close" }), _jsx("a", { className: "drawer-newtab", id: "evidence-newtab", href: "#", target: "_blank", rel: "noopener", children: "Open full page" })] }), _jsx("div", { className: "drawer-body", id: "evidence-content" })] }), options?.evidenceCache && (_jsx("script", { dangerouslySetInnerHTML: { __html: `window.__EVIDENCE_CACHE__ = ${JSON.stringify(options.evidenceCache)};` } })), _jsx("script", { dangerouslySetInnerHTML: { __html: drawerScript } })] })] }));
|
|
38
|
+
}
|
|
39
|
+
/** Evidence detail — the metric help definitions, reused from CockpitLayout */
|
|
40
|
+
import { METRIC_HELP } from './components/CockpitLayout.js';
|
|
41
|
+
/**
|
|
42
|
+
* Render a full-page evidence view — no drawer, no side panel.
|
|
43
|
+
* Used when "Open full page" is clicked from the evidence drawer.
|
|
44
|
+
*/
|
|
45
|
+
export function renderEvidencePage(metric, explanation, events, filters) {
|
|
46
|
+
const labelMap = {
|
|
47
|
+
writeSafetySuccessRate: 'Write safety',
|
|
48
|
+
redactRate: 'Redaction rate',
|
|
49
|
+
rejectRate: 'Rejection rate',
|
|
50
|
+
integrityDrift: 'Integrity drift',
|
|
51
|
+
boundaryIntegrity: 'Boundary integrity',
|
|
52
|
+
cleanLedgerAdmissionRate: 'Clean ledger admission',
|
|
53
|
+
firstPassSuccessRate: 'First-pass success',
|
|
54
|
+
reworkRatio: 'Rework ratio',
|
|
55
|
+
executionReliability: 'Execution reliability',
|
|
56
|
+
patternReuseRate: 'Pattern reuse',
|
|
57
|
+
timeToContext: 'Time to context',
|
|
58
|
+
shadowKnowledgeIndex: 'Shadow knowledge',
|
|
59
|
+
goldenPathAdherence: 'Golden path adherence',
|
|
60
|
+
promptLift: 'Prompt lift',
|
|
61
|
+
contextCompression: 'Context compression',
|
|
62
|
+
wasteAvoided: 'Waste avoided',
|
|
63
|
+
estimatedSavings: 'Estimated savings',
|
|
64
|
+
};
|
|
65
|
+
const humanLabel = labelMap[metric] ?? metric;
|
|
66
|
+
const help = METRIC_HELP[metric];
|
|
67
|
+
return '<!doctype html>' + renderToStaticMarkup(_jsxs("html", { lang: "en", children: [_jsxs("head", { children: [_jsx("meta", { charSet: "utf-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }), _jsxs("title", { children: [humanLabel, " \u2014 CodeLedger Evidence"] }), _jsx("style", { children: insightStyles })] }), _jsx("body", { children: _jsxs("div", { className: "shell evidence-full-page", children: [_jsxs("header", { className: "evidence-fp-header", children: [_jsxs("div", { children: [_jsx("p", { className: "kicker", children: "Evidence" }), _jsx("h1", { className: "title", children: humanLabel }), _jsx("p", { className: "subtitle", children: explanation }), help && (_jsxs("p", { className: "scope-context", children: [_jsx("strong", { children: "Why this matters:" }), " ", help.whyItMatters] }))] }), _jsx("a", { href: "javascript:history.back()", className: "evidence-fp-back", children: "Back to dashboard" })] }), _jsx("section", { className: "evidence-fp-meta", children: Object.entries(filters).filter(([k]) => !['metric', 'syntheticOnly'].includes(k)).map(([k, v]) => (_jsxs("span", { className: "evidence-fp-filter", children: [k, ": ", String(v)] }, k))) }), events.length === 0 ? (_jsxs("section", { className: "panel evidence-fp-empty", children: [_jsx("p", { children: _jsx("strong", { children: "No evidence events yet." }) }), _jsxs("p", { children: ["Events will appear here as your team runs CodeLedger commands that produce ", humanLabel.toLowerCase(), " signals."] })] })) : (_jsxs("section", { className: "evidence-fp-list", children: [_jsxs("p", { className: "scope-context", children: [events.length, " evidence event", events.length !== 1 ? 's' : ''] }), events.slice(0, 50).map((entry, i) => {
|
|
68
|
+
const e = entry;
|
|
69
|
+
const isRefinement = e['type'] === 'PROMPT_REFINEMENT';
|
|
70
|
+
return (_jsxs("article", { className: "evidence-fp-row", children: [_jsxs("div", { className: "evidence-fp-row-header", children: [_jsx("strong", { children: String(e['type'] ?? 'Event') }), _jsx("span", { className: "evidence-fp-time", children: String(e['timestamp'] ?? '').slice(0, 16).replace('T', ' ') }), e['sourceLabel'] && _jsx("span", { className: "source-label", children: String(e['sourceLabel']) })] }), isRefinement && e['originalTask'] && (_jsxs("p", { className: "evidence-fp-detail", children: [_jsx("strong", { children: "Task:" }), " ", String(e['originalTask'])] })), isRefinement && e['refinedTask'] && e['refinedTask'] !== e['originalTask'] && (_jsxs("p", { className: "evidence-fp-detail", children: [_jsx("strong", { children: "Refined:" }), " ", String(e['refinedTask'])] })), e['impact'] && _jsx("p", { className: "evidence-fp-impact", children: String(e['impact']) }), (e['repo'] || e['command']) && (_jsxs("p", { className: "evidence-fp-meta-line", children: [String(e['repo'] ?? ''), " ", String(e['command'] ?? '')] }))] }, i));
|
|
71
|
+
})] })), _jsx("p", { className: "footer-note", children: "Aggregate signals only \u2014 no individual productivity tracking." })] }) })] }));
|
|
23
72
|
}
|
|
24
73
|
function selectPage(pathname, snapshot) {
|
|
25
74
|
switch (pathname) {
|
|
@@ -52,54 +101,152 @@ function OnboardingHint({ snapshot }) {
|
|
|
52
101
|
const drawerScript = `
|
|
53
102
|
const drawer = document.getElementById('evidence-drawer');
|
|
54
103
|
const content = document.getElementById('evidence-content');
|
|
55
|
-
document.getElementById('evidence-close')?.addEventListener('click', () => drawer?.classList.remove('open'));
|
|
56
|
-
document.addEventListener('click', async (event) => {
|
|
57
|
-
const target = event.target;
|
|
58
|
-
if (!(target instanceof HTMLElement)) return;
|
|
59
|
-
const metric = target.getAttribute('data-metric');
|
|
60
|
-
if (!metric) return;
|
|
61
104
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
105
|
+
// Human-readable labels — managers see language, not code
|
|
106
|
+
const METRIC_LABELS = {
|
|
107
|
+
writeSafetySuccessRate: 'Write safety',
|
|
108
|
+
redactRate: 'Redaction rate',
|
|
109
|
+
rejectRate: 'Rejection rate',
|
|
110
|
+
integrityDrift: 'Integrity drift',
|
|
111
|
+
boundaryIntegrity: 'Boundary integrity',
|
|
112
|
+
cleanLedgerAdmissionRate: 'Clean ledger admission',
|
|
113
|
+
firstPassSuccessRate: 'First-pass success',
|
|
114
|
+
reworkRatio: 'Rework ratio',
|
|
115
|
+
executionReliability: 'Execution reliability',
|
|
116
|
+
patternReuseRate: 'Pattern reuse',
|
|
117
|
+
timeToContext: 'Time to context',
|
|
118
|
+
shadowKnowledgeIndex: 'Shadow knowledge',
|
|
119
|
+
goldenPathAdherence: 'Golden path adherence',
|
|
120
|
+
primitiveAdoptionRate: 'Primitive adoption',
|
|
121
|
+
promptLift: 'Prompt lift',
|
|
122
|
+
contextCompression: 'Context compression',
|
|
123
|
+
wasteAvoided: 'Waste avoided',
|
|
124
|
+
estimatedSavings: 'Estimated savings',
|
|
125
|
+
};
|
|
126
|
+
function metricLabel(key) { return METRIC_LABELS[key] || key.replace(/([A-Z])/g, ' $$1').replace(/^./, function(s) { return s.toUpperCase(); }); }
|
|
69
127
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const events = (payload.events ?? []).slice(0, 12);
|
|
128
|
+
var backdrop = document.getElementById('drawer-backdrop');
|
|
129
|
+
var newtabLink = document.getElementById('evidence-newtab');
|
|
73
130
|
|
|
131
|
+
// ── Close drawer + clean URL ──────────────────────────────────────────────
|
|
132
|
+
function closeDrawer() {
|
|
133
|
+
drawer?.classList.remove('open');
|
|
134
|
+
backdrop?.classList.remove('open');
|
|
135
|
+
var url = new URL(window.location);
|
|
136
|
+
url.searchParams.delete('evidence');
|
|
137
|
+
history.replaceState(null, '', url.toString());
|
|
138
|
+
}
|
|
139
|
+
document.getElementById('evidence-close')?.addEventListener('click', closeDrawer);
|
|
140
|
+
backdrop?.addEventListener('click', closeDrawer);
|
|
141
|
+
document.addEventListener('keydown', function(e) {
|
|
142
|
+
if (e.key === 'Escape' && drawer?.classList.contains('open')) closeDrawer();
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
// ── Shared evidence renderer (used by both cache and fetch paths) ─────────
|
|
146
|
+
function renderEvidenceContent(humanLabel, explanation, events) {
|
|
147
|
+
events = (events || []).slice(0, 12);
|
|
74
148
|
if (events.length === 0) {
|
|
75
|
-
content.innerHTML = '<h2>' +
|
|
76
|
-
+ '<p>' + (
|
|
149
|
+
content.innerHTML = '<h2>' + humanLabel + '</h2>'
|
|
150
|
+
+ '<p>' + (explanation || '') + '</p>'
|
|
77
151
|
+ '<div class="empty-evidence">'
|
|
78
152
|
+ '<p><strong>No evidence events yet.</strong></p>'
|
|
79
|
-
+ '<p>Events will appear here as your team runs CodeLedger commands
|
|
153
|
+
+ '<p>Events will appear here as your team runs CodeLedger commands.</p>'
|
|
80
154
|
+ '</div>';
|
|
81
|
-
drawer?.classList.add('open');
|
|
82
155
|
return;
|
|
83
156
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const detail = entry.command ?? entry.path ?? entry.repo ?? '';
|
|
89
|
-
|
|
90
|
-
// Prompt refinement events get a richer summary
|
|
157
|
+
var rows = events.map(function(entry) {
|
|
158
|
+
var impact = entry.impact ? '<p class="impact">' + entry.impact + '</p>' : '';
|
|
159
|
+
var source = entry.sourceLabel ? '<span class="source-label">' + entry.sourceLabel + '</span>' : '';
|
|
160
|
+
var detail = entry.command || entry.path || entry.repo || '';
|
|
91
161
|
if (entry.type === 'PROMPT_REFINEMENT') {
|
|
92
|
-
|
|
93
|
-
|
|
162
|
+
var orig = entry.originalTask ? '<p class="evidence-task"><strong>Task:</strong> ' + entry.originalTask + '</p>' : '';
|
|
163
|
+
var refined = entry.refinedTask && entry.refinedTask !== entry.originalTask
|
|
94
164
|
? '<p class="evidence-task"><strong>Refined:</strong> ' + entry.refinedTask + '</p>' : '';
|
|
95
|
-
|
|
165
|
+
var ctx = entry.contextReductionPct > 0 ? '<p class="evidence-context">Context reduced ' + entry.contextReductionPct + '%</p>' : '';
|
|
96
166
|
return '<div class="row evidence-rich">' + orig + refined + ctx + impact + source + '</div>';
|
|
97
167
|
}
|
|
98
|
-
|
|
99
168
|
return '<div class="row"><div><strong>' + entry.type + '</strong><div>' + entry.timestamp + '</div>' + impact + '</div><div>' + detail + ' ' + source + '</div></div>';
|
|
100
169
|
}).join('');
|
|
101
|
-
content.innerHTML = '<h2>' +
|
|
102
|
-
|
|
170
|
+
content.innerHTML = '<h2>' + humanLabel + '</h2><p>' + (explanation || '') + '</p>' + rows;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// ── Core evidence loader ──────────────────────────────────────────────────
|
|
174
|
+
async function openEvidence(metric) {
|
|
175
|
+
var pageParams = new URLSearchParams(window.location.search);
|
|
176
|
+
var evidenceParams = new URLSearchParams();
|
|
177
|
+
evidenceParams.set('metric', metric);
|
|
178
|
+
['view','scenario','repo','team','scopeType','scopeId','dateFrom','dateTo'].forEach(function(key) {
|
|
179
|
+
if (pageParams.has(key)) evidenceParams.set(key, pageParams.get(key));
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// Update URL — makes the evidence state deep-linkable and shareable
|
|
183
|
+
var url = new URL(window.location);
|
|
184
|
+
url.searchParams.set('evidence', metric);
|
|
185
|
+
history.replaceState(null, '', url.toString());
|
|
186
|
+
|
|
187
|
+
// "Open full page" — links to /evidence?metric=... (formatted full-page view)
|
|
188
|
+
if (newtabLink) {
|
|
189
|
+
newtabLink.href = '/evidence?' + evidenceParams.toString();
|
|
190
|
+
newtabLink.textContent = 'Open full page';
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
var humanLabel = metricLabel(metric);
|
|
194
|
+
|
|
195
|
+
// Static mode: use pre-embedded evidence cache instead of fetch
|
|
196
|
+
if (window.__EVIDENCE_CACHE__ && window.__EVIDENCE_CACHE__[metric]) {
|
|
197
|
+
var cached = window.__EVIDENCE_CACHE__[metric];
|
|
198
|
+
renderEvidenceContent(humanLabel, cached.explanation || '', cached.events || []);
|
|
199
|
+
drawer?.classList.add('open'); backdrop?.classList.add('open');
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
var response;
|
|
204
|
+
try {
|
|
205
|
+
response = await fetch('/api/evidence?' + evidenceParams.toString());
|
|
206
|
+
if (!response.ok) throw new Error('HTTP ' + response.status);
|
|
207
|
+
} catch (err) {
|
|
208
|
+
content.innerHTML = '<h2>' + humanLabel + '</h2>'
|
|
209
|
+
+ '<div class="empty-evidence">'
|
|
210
|
+
+ '<p><strong>Unable to load evidence.</strong></p>'
|
|
211
|
+
+ '<p>The evidence API returned an error. Try refreshing the page.</p>'
|
|
212
|
+
+ '</div>';
|
|
213
|
+
drawer?.classList.add('open'); backdrop?.classList.add('open');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
var payload = await response.json();
|
|
218
|
+
renderEvidenceContent(humanLabel, payload.explanation, payload.events);
|
|
219
|
+
drawer?.classList.add('open'); backdrop?.classList.add('open');
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// ── Click handler ─────────────────────────────────────────────────────────
|
|
223
|
+
document.addEventListener('click', function(event) {
|
|
224
|
+
var target = event.target;
|
|
225
|
+
if (!(target instanceof HTMLElement)) return;
|
|
226
|
+
var metric = target.getAttribute('data-metric');
|
|
227
|
+
if (!metric) return;
|
|
228
|
+
openEvidence(metric);
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
// ── Deep-link: auto-open on page load if ?evidence= is present ────────────
|
|
232
|
+
(function() {
|
|
233
|
+
var params = new URLSearchParams(window.location.search);
|
|
234
|
+
var evidenceParam = params.get('evidence');
|
|
235
|
+
if (evidenceParam) {
|
|
236
|
+
setTimeout(function() { openEvidence(evidenceParam); }, 150);
|
|
237
|
+
}
|
|
238
|
+
})();
|
|
239
|
+
|
|
240
|
+
// ── Metric help toggle (inline expand/collapse) ──────────────────────────
|
|
241
|
+
document.addEventListener('click', function(event) {
|
|
242
|
+
var target = event.target;
|
|
243
|
+
if (!(target instanceof HTMLElement)) return;
|
|
244
|
+
var helpFor = target.getAttribute('data-help-for');
|
|
245
|
+
if (!helpFor) return;
|
|
246
|
+
var helpContent = document.querySelector('[data-help-content="' + helpFor + '"]');
|
|
247
|
+
if (helpContent) {
|
|
248
|
+
helpContent.classList.toggle('open');
|
|
249
|
+
}
|
|
103
250
|
});
|
|
104
251
|
`;
|
|
105
252
|
//# sourceMappingURL=render.js.map
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,GAAG;IACb,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE;IAChC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;IACtC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;CAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.tsx"],"names":[],"mappings":"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"}
|
package/dist/theme.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const insightStyles = "\n:root {\n --bg: #f3efe6;\n --panel: #fffdf8;\n --ink: #1e2430;\n --muted: #596275;\n --line: #d7d0c3;\n --accent: #0b6e4f;\n --accent-soft: #dcefe8;\n --warn: #bc6c25;\n --risk: #a23b2a;\n --shadow: rgba(30, 36, 48, 0.08);\n}\n* { box-sizing: border-box; }\nbody {\n margin: 0;\n font-family: \"Iowan Old Style\", \"Palatino Linotype\", Georgia, serif;\n color: var(--ink);\n background:\n radial-gradient(circle at top left, rgba(11,110,79,0.08), transparent 35%),\n linear-gradient(180deg, #f6f1e8 0%, #f2eee5 100%);\n}\na { color: inherit; text-decoration: none; }\n.shell { max-width: 1280px; margin: 0 auto; padding: 32px 20px 48px; }\n.header { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; margin-bottom: 24px; }\n.title { font-size: 40px; line-height: 1; margin: 0 0 8px; }\n.subtitle { margin: 0; color: var(--muted); max-width: 720px; }\n.nav { display: flex; gap: 10px; flex-wrap: wrap; margin: 20px 0 28px; }\n.nav a {\n padding: 10px 14px;\n border-radius: 999px;\n border: 1px solid var(--line);\n background: rgba(255,255,255,0.72);\n}\n.nav a.active { background: var(--ink); color: white; border-color: var(--ink); }\n.mode-tabs {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n margin-bottom: 12px;\n}\n.mode-pill {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 10px 14px;\n border-radius: 999px;\n border: 1px solid rgba(215, 208, 195, 0.9);\n background: rgba(255, 255, 255, 0.85);\n font-size: 14px;\n color: var(--ink);\n}\n.mode-pill small {\n font-size: 11px;\n letter-spacing: 0.02em;\n color: var(--muted);\n}\n.mode-pill.active {\n background: var(--accent-soft);\n border-color: var(--accent);\n color: var(--accent);\n}\n.scope-shell {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n padding: 18px 20px;\n background: rgba(255, 255, 255, 0.85);\n border: 1px solid rgba(215, 208, 195, 0.9);\n border-radius: 16px;\n box-shadow: 0 6px 30px rgba(30, 36, 48, 0.06);\n margin-bottom: 20px;\n}\n.scope-title {\n font-size: 18px;\n margin: 0 0 6px;\n}\n.scope-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 280px;\n}\n.scope-selector {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.scope-selector-label {\n font-size: 11px;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n}\n.scope-selector-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n.scope-pill {\n padding: 6px 12px;\n border-radius: 999px;\n border: 1px solid rgba(215, 208, 195, 0.9);\n background: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n color: var(--ink);\n}\n.scope-pill.active {\n background: var(--ink);\n color: white;\n border-color: var(--ink);\n}\n.comparison-panel {\n border-radius: 16px;\n background: var(--panel);\n}\n.comparison-grid {\n display: grid;\n gap: 12px;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n}\n.comparison-card {\n border-radius: 12px;\n border: 1px solid rgba(215, 208, 195, 0.85);\n padding: 12px;\n background: white;\n box-shadow: 0 8px 20px rgba(30, 36, 48, 0.04);\n}\n.comparison-card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 6px;\n gap: 12px;\n}\n.comparison-direction {\n font-size: 11px;\n text-transform: uppercase;\n border-radius: 999px;\n padding: 2px 8px;\n border: 1px solid rgba(215, 208, 195, 0.7);\n}\n.comparison-direction.above {\n color: #0b6e4f;\n border-color: rgba(11, 110, 79, 0.6);\n}\n.comparison-direction.below {\n color: #a23b2a;\n border-color: rgba(162, 59, 42, 0.6);\n}\n.comparison-direction.flat {\n color: var(--muted);\n border-color: rgba(215, 208, 195, 0.7);\n}\n.comparison-value {\n font-size: 22px;\n font-weight: 700;\n margin-bottom: 6px;\n}\n.comparison-detail {\n margin: 0;\n font-size: 13px;\n color: var(--muted);\n min-height: 36px;\n}\n.comparison-confidence {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n border-radius: 999px;\n padding: 4px 10px;\n border: 1px solid rgba(215, 208, 195, 0.9);\n}\n.comparison-confidence.high { color: var(--accent); border-color: var(--accent); }\n.comparison-confidence.medium { color: var(--warn); border-color: var(--warn); }\n.comparison-confidence.low { color: var(--risk); border-color: var(--risk); }\n.pattern-panel {\n margin-top: 16px;\n}\n.scenario-banner {\n border-radius: 12px;\n border: 1px solid rgba(215, 208, 195, 0.85);\n padding: 8px 12px;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: 12px;\n color: var(--muted);\n}\n.scenario-picker {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.scenario-picker-label {\n font-size: 11px;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n}\n.scenario-picker-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n.scenario-pill {\n padding: 6px 10px;\n border-radius: 999px;\n border: 1px solid rgba(215, 208, 195, 0.9);\n background: rgba(255, 255, 255, 0.7);\n font-size: 12px;\n color: var(--ink);\n}\n.scenario-pill.active {\n background: var(--ink);\n color: white;\n border-color: var(--ink);\n}\n.scenario-banner strong {\n color: var(--ink);\n}\n.grid { display: grid; gap: 16px; }\n.cards { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }\n.two-col { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); align-items: start; }\n.insights-panel ul { list-style:none; margin:0; padding:0; }\n.insights-panel li { padding: 12px 0; border-bottom:1px solid rgba(215,208,195,0.8); }\n.insights-panel li:last-child { border-bottom:none; }\n.insight-severity { font-size:12px; padding:3px 8px; border-radius:12px; margin-left:6px; border:1px solid rgba(215,208,195,0.9); }\n.insight-severity.info { background:#f0f7f4; color:#0b6e4f; }\n.insight-severity.warn { background:#fff4eb; color:#a23b2a; }\n.insight-severity.critical { background:#ffe0df; color:#a23b2a; border-color:#a23b2a; }\n.insight-actions { display:flex; gap:12px; align-items:center; justify-content:space-between; font-size:12px; margin-top:4px; }\n.storyline { display:flex; flex-wrap:wrap; gap:16px; align-items:center; margin-bottom:12px; }\n.scope-context { font-size:13px; color:var(--muted); }\n.scope-view-mode { font-style: italic; }\n.page-header { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:20px; padding:20px; border-radius:20px; border:1px solid rgba(215,208,195,0.8); background:var(--panel); box-shadow:0 10px 30px var(--shadow); }\n.page-title { font-size:20px; font-weight:700; margin:0; }\n.page-subtitle { margin:8px 0; color:var(--muted); }\n.scope-context-bar { display:flex; flex-wrap:wrap; gap:12px; font-size:12px; color:var(--muted); }\n.scope-context-bar span { padding:4px 8px; border-radius:10px; border:1px solid rgba(215,208,195,0.8); background:rgba(255,255,255,0.7); }\n.page-trend-note { margin-top:8px; font-size:13px; color:var(--muted); }\n.header-badges { display:flex; flex-direction:column; gap:6px; }\n.trend-note { font-size:14px; color:var(--muted); margin-top:8px; }\n.story-panel { flex-direction:column; }\n.story-panel .value-scope { margin-top:12px; display:flex; flex-wrap:wrap; gap:12px; font-size:13px; color:var(--muted); }\n.value-trend-note { font-size:13px; color:var(--muted); margin-top:8px; }\n.card, .panel {\n background: var(--panel);\n border: 1px solid rgba(215, 208, 195, 0.9);\n border-radius: 20px;\n padding: 18px;\n box-shadow: 0 14px 40px var(--shadow);\n}\n.metric-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px; margin-bottom:20px; }\n.metric-card { border-radius:18px; border:1px solid rgba(215,208,195,0.8); background:var(--panel); padding:18px; display:flex; flex-direction:column; gap:12px; box-shadow:0 10px 30px var(--shadow); }\n.metric-card header { display:flex; justify-content:space-between; align-items:center; }\n.metric-label { font-size:12px; letter-spacing:0.2em; text-transform:uppercase; color:var(--muted); }\n.metric-display strong { font-size:28px; }\n.metric-display span { font-size:13px; color:var(--muted); }\n.metric-severity { font-size:11px; padding:4px 10px; border-radius:999px; border:1px solid rgba(215,208,195,0.8); text-transform:uppercase; }\n.metric-severity.high { color:#a23b2a; border-color:#a23b2a; background:rgba(162,59,42,0.12); }\n.metric-severity.medium { color:#bc6c25; border-color:#bc6c25; background:rgba(188,108,37,0.12); }\n.metric-severity.low { color:#0b6e4f; border-color:#0b6e4f; background:rgba(11,110,79,0.12); }\n.value-hero { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; padding:20px; border-radius:20px; border:1px solid rgba(215,208,195,0.8); background:var(--panel); box-shadow:0 14px 36px var(--shadow); margin-bottom:20px; }\n.value-title { font-size:36px; margin:8px 0; }\n.action-callout { border-radius:18px; border:1px solid rgba(215,208,195,0.8); padding:20px; background:var(--panel); box-shadow:0 10px 30px var(--shadow); margin-bottom:20px; }\n.callout-grid { display:grid; gap:12px; margin-top:12px; }\n.callout-title { display:flex; justify-content:space-between; align-items:center; gap:8px; }\n.value-breakdown, .pattern-list, .hotspot-list { margin-bottom:20px; }\n.value-breakdown-row span { font-size:13px; color:var(--muted); }\n.value-breakdown .row strong, .pattern-list article strong { font-size:16px; }\n.value-formula {\n border-radius: 18px;\n border: 1px solid rgba(215, 208, 195, 0.8);\n padding: 20px;\n background: var(--panel);\n box-shadow: 0 10px 30px var(--shadow);\n margin: 16px 0;\n}\n.formula-metrics {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n margin-top: 12px;\n}\n.formula-metrics article {\n padding: 10px 12px;\n border-radius: 12px;\n border: 1px solid rgba(215, 208, 195, 0.7);\n background: rgba(255, 255, 255, 0.85);\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 140px;\n font-size: 12px;\n}\n.confidence-note { margin-top: 12px; font-size: 13px; color: var(--muted); }\n.insight-strip { margin:20px 0; }\n.insight-strip-panel { margin:0; }\n.hotspot-list { border-radius:18px; border:1px solid rgba(215,208,195,0.8); padding:20px; background:var(--panel); box-shadow:0 10px 30px var(--shadow); }\n.hotspot-items, .pattern-items { display:grid; gap:12px; margin-top:16px; }\n.hotspot-items article, .pattern-items article { border-radius:16px; border:1px solid rgba(215,208,195,0.8); padding:12px; background:#fff; }\n.hotspot-metrics { display:flex; gap:12px; font-size:12px; color:var(--muted); }\n.synthetic-pill { padding:4px 10px; border-radius:999px; border:1px solid rgba(215,208,195,0.8); background:#fff; font-size:12px; }\n.value-hero { display:flex; flex-direction:column; gap:8px; }\n.value-scope { margin-top:12px; display:flex; flex-wrap:wrap; gap:12px; font-size:13px; color:var(--muted); }\n.value-scope span { display:inline-flex; gap:6px; padding:4px 8px; border-radius:12px; border:1px solid rgba(215,208,195,0.8); background:rgba(255,255,255,0.5); }\n.confidence-badge { border-radius:999px; padding:4px 12px; font-size:12px; display:inline-flex; align-items:center; gap:6px; border:1px solid rgba(215,208,195,0.8); }\n.confidence-badge.high { background:var(--accent); color:#fff; border-color:var(--accent); }\n.confidence-badge.medium { background:var(--warn); color:#fff; border-color:var(--warn); }\n.confidence-badge.low { background:#fff4eb; color:#a23b2a; border-color:#a23b2a; }\n.value-breakdown .row strong, .value-assumptions .row strong { font-size:16px; }\n.kicker { font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }\n.metric { font-size: 34px; font-weight: 700; margin: 0; }\n.metric small { font-size: 14px; color: var(--muted); }\n.section-title { font-size: 24px; margin: 0 0 16px; }\n.knowledge-summary { margin-bottom:12px; font-size:14px; color:var(--muted); display:flex; flex-direction:column; gap:4px; }\n.list { display: grid; gap: 10px; }\n.hotspot-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:12px; margin-top:12px; }\n.hotspot-card, .shadow-card { border-radius:16px; padding:12px; border:1px solid rgba(215,208,195,0.8); display:flex; flex-direction:column; gap:8px; background:#fff; box-shadow:0 10px 30px rgba(30,36,48,0.05); }\n.hotspot-header { display:flex; justify-content:space-between; align-items:center; }\n.hotspot-body { display:flex; justify-content:space-between; gap:12px; }\n.hotspot-body span { font-size:12px; color:var(--muted); }\n.hotspot-note { margin:0; font-size:12px; color:var(--muted); }\n.trend-indicator { font-size:12px; text-transform:capitalize; border-radius:999px; padding:4px 10px; border:1px solid rgba(215,208,195,0.8); }\n.trend-indicator.up { color:#0b6e4f; border-color:#0b6e4f; background:rgba(11,110,79,0.12); }\n.trend-indicator.down { color:#a23b2a; border-color:#a23b2a; background:rgba(162,59,42,0.12); }\n.trend-indicator.flat { color:var(--muted); border-color:rgba(215,208,195,0.9); }\n.pattern-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:12px; margin-top:12px; }\n.pattern-card { border-radius:16px; padding:12px; border:1px solid rgba(215,208,195,0.8); background:#fff; box-shadow:0 10px 24px rgba(30,36,48,0.05); }\n.pattern-meta { display:flex; flex-direction:column; font-size:12px; color:var(--muted); margin-top:6px; gap:2px; }\n.row { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-top: 1px solid var(--line); }\n.row:first-child { border-top: 0; padding-top: 0; }\n.value-breakdown .row div, .value-assumptions .row div { font-size: 13px; color: var(--muted); }\n.badge { display: inline-flex; padding: 4px 10px; border-radius: 999px; font-size: 12px; border: 1px solid var(--line); }\n.badge.high { color: white; background: var(--risk); border-color: var(--risk); }\n.badge.medium { color: white; background: var(--warn); border-color: var(--warn); }\n.badge.low { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }\n.btn-link {\n border: 0; background: none; padding: 0; color: var(--accent); cursor: pointer; font: inherit; text-align: left;\n}\n.evidence-drawer {\n position: fixed; top: 0; right: 0; width: min(420px, 100vw); height: 100vh; background: var(--panel);\n border-left: 1px solid var(--line); box-shadow: -12px 0 40px var(--shadow); padding: 20px; overflow: auto; display: none;\n}\n.evidence-drawer.open { display: block; }\n.drawer-close { border: 0; background: var(--ink); color: white; border-radius: 999px; padding: 8px 12px; cursor: pointer; }\n.chart-wrap svg { overflow: visible; }\n.footer-note { color: var(--muted); font-size: 11px; margin-top: 32px; text-align: center; opacity: 0.6; }\n.impact { font-size: 12px; color: var(--muted); margin-top: 4px; }\n.empty-evidence { text-align: center; padding: 24px 0; color: var(--muted); }\n.empty-evidence strong { color: var(--ink); }\n.source-label { font-size: 11px; padding: 2px 6px; border-radius: 4px; background: #ede9df; color: var(--muted); }\n.evidence-rich { padding: 12px 0; border-bottom: 1px solid var(--line); }\n.evidence-task { margin: 4px 0; font-size: 13px; line-height: 1.5; }\n.evidence-context { margin: 4px 0; font-size: 12px; color: var(--accent); }\n.system-health-card { text-align: center; padding: 24px 20px; }\n.health-headline { margin-bottom: 16px; }\n.health-score { font-size: 48px; display: block; line-height: 1; color: var(--accent); }\n.health-sentence { font-size: 15px; color: var(--muted); }\n.health-sub-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }\n.health-sub {\n display: flex; flex-direction: column; align-items: center; gap: 2px;\n text-decoration: none; color: inherit; border-radius: 8px; padding: 8px 4px;\n transition: background 0.15s;\n}\n.health-sub:hover { background: rgba(11,110,79,0.06); }\n.health-sub-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); }\n.health-sub strong { font-size: 18px; }\n.severity-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }\n.severity-dot.green { background: var(--accent); }\n.severity-dot.amber { background: var(--warn); }\n.severity-dot.red { background: var(--risk); }\n.drivers-section { }\n.drivers-subtitle { margin: 0 0 12px; font-size: 13px; color: var(--muted); }\n.drivers-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }\n.driver-item { display: flex; flex-direction: column; align-items: center; gap: 4px; }\n.driver-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); }\n.driver-item strong { font-size: 22px; }\n.detail-section { margin-top: 16px; opacity: 0.85; }\n.detail-section .panel { padding: 14px 18px; }\n.detail-section .kicker { margin-bottom: 6px; }\n.snapshot-card { display: flex; flex-direction: column; align-items: center; gap: 2px; }\n.snapshot-card strong { font-size: 28px; }\n.snapshot-card span { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; }\n.efficiency-zero-state { text-align: center; padding: 24px; }\n.efficiency-zero-state .causal-chain {\n font-style: italic; color: var(--accent); font-size: 15px; margin-top: 12px;\n}\n.efficiency-strip-row {\n display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 8px;\n}\n.efficiency-strip-item {\n display: flex; flex-direction: column; align-items: center; gap: 4px;\n}\n.efficiency-strip-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); }\n.efficiency-strip-item strong { font-size: 22px; }\n.trend-compact {\n display: flex; gap: 6px; align-items: flex-end; height: 70px; margin-top: 12px;\n}\n.trend-bar-group { display: flex; gap: 2px; align-items: flex-end; }\n.trend-bar { width: 8px; border-radius: 2px 2px 0 0; min-height: 2px; }\n.trend-bar-lift { background: var(--accent); }\n.trend-bar-quality { background: var(--warn); }\n.trend-legend { display: flex; gap: 16px; margin-top: 8px; font-size: 12px; color: var(--muted); }\n.legend-item { display: flex; align-items: center; gap: 4px; }\n.dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }\n.dot-lift { background: var(--accent); }\n.dot-quality { background: var(--warn); }\n.welcome-banner {\n background: linear-gradient(135deg, var(--accent-soft), #eef6f2);\n border: 1px solid var(--accent);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 20px;\n}\n.welcome-banner strong { display: block; font-size: 16px; margin-bottom: 4px; color: var(--accent); }\n.welcome-banner p { margin: 0; color: var(--muted); font-size: 14px; }\n.onboarding-hint {\n background: var(--panel);\n border: 1px dashed var(--line);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 20px;\n}\n.onboarding-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n.onboarding-col { font-size: 14px; line-height: 1.5; }\n.onboarding-note { color: var(--accent); font-style: italic; }\n.onboarding-steps { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }\n.onboarding-steps p { margin: 0 0 8px; font-size: 14px; font-weight: 600; }\n.onboarding-steps ol { margin: 0; padding-left: 20px; font-size: 13px; line-height: 1.7; }\n.onboarding-steps code { background: #ede9df; padding: 2px 6px; border-radius: 4px; font-size: 12px; }\n@media (max-width: 900px) {\n .two-col { grid-template-columns: 1fr; }\n .title { font-size: 30px; }\n .onboarding-columns { grid-template-columns: 1fr; }\n}\n";
|
|
1
|
+
export declare const insightStyles = "\n:root {\n --bg: #f3efe6;\n --panel: #fffdf8;\n --ink: #1e2430;\n --muted: #596275;\n --line: #d7d0c3;\n --accent: #0b6e4f;\n --accent-soft: #dcefe8;\n --warn: #bc6c25;\n --risk: #a23b2a;\n --shadow: rgba(30, 36, 48, 0.08);\n}\n* { box-sizing: border-box; }\nbody {\n margin: 0;\n font-family: \"Iowan Old Style\", \"Palatino Linotype\", Georgia, serif;\n color: var(--ink);\n line-height: 1.5;\n letter-spacing: -0.01em;\n word-spacing: 0.02em;\n -webkit-font-smoothing: antialiased;\n background:\n radial-gradient(circle at top left, rgba(11,110,79,0.08), transparent 35%),\n linear-gradient(180deg, #f6f1e8 0%, #f2eee5 100%);\n}\na { color: inherit; text-decoration: none; }\np { line-height: 1.55; margin: 0 0 8px; }\n.shell { max-width: 1280px; margin: 0 auto; padding: 32px 20px 48px; }\n.header { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; margin-bottom: 24px; }\n.title { font-size: 40px; line-height: 1.1; margin: 0 0 8px; letter-spacing: -0.02em; }\n.subtitle { margin: 0; color: var(--muted); max-width: 720px; line-height: 1.45; }\n.nav { display: flex; gap: 10px; flex-wrap: wrap; margin: 20px 0 28px; }\n.nav a {\n padding: 10px 14px;\n border-radius: 999px;\n border: 1px solid var(--line);\n background: rgba(255,255,255,0.72);\n}\n.nav a.active { background: var(--ink); color: white; border-color: var(--ink); }\n.mode-tabs {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n margin-bottom: 12px;\n}\n.mode-pill {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 10px 14px;\n border-radius: 999px;\n border: 1px solid rgba(215, 208, 195, 0.9);\n background: rgba(255, 255, 255, 0.85);\n font-size: 14px;\n color: var(--ink);\n}\n.mode-pill small {\n font-size: 11px;\n letter-spacing: 0.02em;\n color: var(--muted);\n}\n.mode-pill.active {\n background: var(--accent-soft);\n border-color: var(--accent);\n color: var(--accent);\n}\n.scope-shell {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n padding: 18px 20px;\n background: rgba(255, 255, 255, 0.85);\n border: 1px solid rgba(215, 208, 195, 0.9);\n border-radius: 16px;\n box-shadow: 0 6px 30px rgba(30, 36, 48, 0.06);\n margin-bottom: 20px;\n}\n.scope-title {\n font-size: 18px;\n margin: 0 0 6px;\n}\n.scope-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 280px;\n}\n.scope-selector {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.scope-selector-label {\n font-size: 11px;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n}\n.scope-selector-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n.scope-pill {\n padding: 6px 12px;\n border-radius: 999px;\n border: 1px solid rgba(215, 208, 195, 0.9);\n background: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n color: var(--ink);\n}\n.scope-pill.active {\n background: var(--ink);\n color: white;\n border-color: var(--ink);\n}\n.comparison-panel {\n border-radius: 16px;\n background: var(--panel);\n}\n.comparison-grid {\n display: grid;\n gap: 12px;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n}\n.comparison-card {\n border-radius: 12px;\n border: 1px solid rgba(215, 208, 195, 0.85);\n padding: 12px;\n background: white;\n box-shadow: 0 8px 20px rgba(30, 36, 48, 0.04);\n}\n.comparison-card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 6px;\n gap: 12px;\n}\n.comparison-direction {\n font-size: 11px;\n text-transform: uppercase;\n border-radius: 999px;\n padding: 2px 8px;\n border: 1px solid rgba(215, 208, 195, 0.7);\n}\n.comparison-direction.above {\n color: #0b6e4f;\n border-color: rgba(11, 110, 79, 0.6);\n}\n.comparison-direction.below {\n color: #a23b2a;\n border-color: rgba(162, 59, 42, 0.6);\n}\n.comparison-direction.flat {\n color: var(--muted);\n border-color: rgba(215, 208, 195, 0.7);\n}\n.comparison-value {\n font-size: 22px;\n font-weight: 700;\n margin-bottom: 6px;\n}\n.comparison-detail {\n margin: 0;\n font-size: 13px;\n color: var(--muted);\n min-height: 36px;\n}\n.comparison-confidence {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n border-radius: 999px;\n padding: 4px 10px;\n border: 1px solid rgba(215, 208, 195, 0.9);\n}\n.comparison-confidence.high { color: var(--accent); border-color: var(--accent); }\n.comparison-confidence.medium { color: var(--warn); border-color: var(--warn); }\n.comparison-confidence.low { color: var(--risk); border-color: var(--risk); }\n.pattern-panel {\n margin-top: 16px;\n}\n.scenario-banner {\n border-radius: 12px;\n border: 1px solid rgba(215, 208, 195, 0.85);\n padding: 8px 12px;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: 12px;\n color: var(--muted);\n}\n.scenario-picker {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.scenario-picker-label {\n font-size: 11px;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n}\n.scenario-picker-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n.scenario-pill {\n padding: 6px 10px;\n border-radius: 999px;\n border: 1px solid rgba(215, 208, 195, 0.9);\n background: rgba(255, 255, 255, 0.7);\n font-size: 12px;\n color: var(--ink);\n}\n.scenario-pill.active {\n background: var(--ink);\n color: white;\n border-color: var(--ink);\n}\n.scenario-banner strong {\n color: var(--ink);\n}\n.grid { display: grid; gap: 16px; }\n.cards { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }\n.two-col { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); align-items: start; }\n.insights-panel ul { list-style:none; margin:0; padding:0; }\n.insights-panel li { padding: 12px 0; border-bottom:1px solid rgba(215,208,195,0.8); }\n.insights-panel li:last-child { border-bottom:none; }\n.insight-severity { font-size:12px; padding:3px 8px; border-radius:12px; margin-left:6px; border:1px solid rgba(215,208,195,0.9); }\n.insight-severity.info { background:#f0f7f4; color:#0b6e4f; }\n.insight-severity.warn { background:#fff4eb; color:#a23b2a; }\n.insight-severity.critical { background:#ffe0df; color:#a23b2a; border-color:#a23b2a; }\n.insight-actions { display:flex; gap:12px; align-items:center; justify-content:space-between; font-size:12px; margin-top:4px; }\n.storyline { display:flex; flex-wrap:wrap; gap:16px; align-items:center; margin-bottom:12px; }\n.scope-context { font-size:13px; color:var(--muted); line-height:1.45; }\n.scope-view-mode { font-style: italic; }\n.page-header { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:20px; padding:20px; border-radius:20px; border:1px solid rgba(215,208,195,0.8); background:var(--panel); box-shadow:0 10px 30px var(--shadow); }\n.page-title { font-size:20px; font-weight:700; margin:0; }\n.page-subtitle { margin:8px 0; color:var(--muted); }\n.scope-context-bar { display:flex; flex-wrap:wrap; gap:12px; font-size:12px; color:var(--muted); }\n.scope-context-bar span { padding:4px 8px; border-radius:10px; border:1px solid rgba(215,208,195,0.8); background:rgba(255,255,255,0.7); }\n.page-trend-note { margin-top:8px; font-size:13px; color:var(--muted); }\n.header-badges { display:flex; flex-direction:column; gap:6px; }\n.trend-note { font-size:14px; color:var(--muted); margin-top:8px; }\n.story-panel { flex-direction:column; }\n.story-panel .value-scope { margin-top:12px; display:flex; flex-wrap:wrap; gap:12px; font-size:13px; color:var(--muted); }\n.value-trend-note { font-size:13px; color:var(--muted); margin-top:8px; }\n.card, .panel {\n background: var(--panel);\n border: 1px solid rgba(215, 208, 195, 0.9);\n border-radius: 20px;\n padding: 18px;\n box-shadow: 0 14px 40px var(--shadow);\n}\n.metric-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px; margin-bottom:20px; }\n.metric-card { border-radius:18px; border:1px solid rgba(215,208,195,0.8); background:var(--panel); padding:18px; display:flex; flex-direction:column; gap:12px; box-shadow:0 10px 30px var(--shadow); }\n.metric-card header { display:flex; justify-content:space-between; align-items:center; }\n.metric-label { font-size:12px; letter-spacing:0.2em; text-transform:uppercase; color:var(--muted); }\n.metric-display strong { font-size:28px; }\n.metric-display span { font-size:13px; color:var(--muted); display:block; }\n.metric-secondary { font-size:11px !important; color:var(--muted) !important; opacity:0.7; margin-top:2px; font-style:italic; }\n.signal-synthesis { padding:16px 20px; border-radius:16px; background:linear-gradient(135deg, rgba(11,110,79,0.06) 0%, rgba(255,253,248,0.9) 100%); border:1px solid rgba(11,110,79,0.15); margin-bottom:20px; }\n.synthesis-text { font-size:15px; line-height:1.5; color:var(--ink); margin:0; }\n.stale-badge { font-size:12px; color:var(--warn); border:1px solid rgba(188,108,37,0.4); padding:4px 10px; border-radius:999px; }\n.stale-refresh { color:var(--accent); text-decoration:underline; font-weight:600; }\n.metric-header-actions { display:flex; align-items:center; gap:6px; }\n.metric-help-toggle { width:20px; height:20px; border-radius:50%; border:1px solid var(--line); background:transparent; color:var(--muted); font-size:11px; font-weight:600; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; line-height:1; }\n.metric-help-toggle:hover { background:var(--accent-soft); color:var(--accent); border-color:var(--accent); }\n.metric-help-content { display:none; padding:10px 0 4px; border-top:1px solid rgba(215,208,195,0.5); margin-top:8px; }\n.metric-help-content.open { display:block; }\n.metric-help-definition { font-size:12px; color:var(--muted); margin:0 0 4px; }\n.metric-help-why { font-size:12px; color:var(--ink); margin:0; }\n.metric-grid-wrapper { margin-bottom:20px; }\n.metric-group-label { font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--muted); margin-bottom:8px; padding-left:2px; }\n.metric-severity { font-size:11px; padding:4px 10px; border-radius:999px; border:1px solid rgba(215,208,195,0.8); text-transform:uppercase; }\n.metric-severity.high { color:#a23b2a; border-color:#a23b2a; background:rgba(162,59,42,0.12); }\n.metric-severity.medium { color:#bc6c25; border-color:#bc6c25; background:rgba(188,108,37,0.12); }\n.metric-severity.low { color:#0b6e4f; border-color:#0b6e4f; background:rgba(11,110,79,0.12); }\n.value-hero { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; padding:20px; border-radius:20px; border:1px solid rgba(215,208,195,0.8); background:var(--panel); box-shadow:0 14px 36px var(--shadow); margin-bottom:20px; }\n.value-title { font-size:36px; margin:8px 0; }\n.action-callout { border-radius:18px; border:1px solid rgba(215,208,195,0.8); padding:20px; background:var(--panel); box-shadow:0 10px 30px var(--shadow); margin-bottom:20px; }\n.callout-grid { display:grid; gap:12px; margin-top:12px; }\n.callout-title { display:flex; justify-content:space-between; align-items:center; gap:8px; }\n.value-breakdown, .pattern-list, .hotspot-list { margin-bottom:20px; }\n.value-breakdown-row span { font-size:13px; color:var(--muted); }\n.value-breakdown .row strong, .pattern-list article strong { font-size:16px; }\n.value-formula {\n border-radius: 18px;\n border: 1px solid rgba(215, 208, 195, 0.8);\n padding: 20px;\n background: var(--panel);\n box-shadow: 0 10px 30px var(--shadow);\n margin: 16px 0;\n}\n.formula-metrics {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n margin-top: 12px;\n}\n.formula-metrics article {\n padding: 10px 12px;\n border-radius: 12px;\n border: 1px solid rgba(215, 208, 195, 0.7);\n background: rgba(255, 255, 255, 0.85);\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 140px;\n font-size: 12px;\n}\n.confidence-note { margin-top: 12px; font-size: 13px; color: var(--muted); }\n.insight-strip { margin:20px 0; }\n.insight-strip-panel { margin:0; }\n.hotspot-list { border-radius:18px; border:1px solid rgba(215,208,195,0.8); padding:20px; background:var(--panel); box-shadow:0 10px 30px var(--shadow); }\n.hotspot-items, .pattern-items { display:grid; gap:12px; margin-top:16px; }\n.hotspot-items article, .pattern-items article { border-radius:16px; border:1px solid rgba(215,208,195,0.8); padding:12px; background:#fff; }\n.hotspot-metrics { display:flex; gap:12px; font-size:12px; color:var(--muted); }\n.synthetic-pill { padding:4px 10px; border-radius:999px; border:1px solid rgba(215,208,195,0.8); background:#fff; font-size:12px; }\n.value-hero { display:flex; flex-direction:column; gap:8px; }\n.value-scope { margin-top:12px; display:flex; flex-wrap:wrap; gap:12px; font-size:13px; color:var(--muted); }\n.value-scope span { display:inline-flex; gap:6px; padding:4px 8px; border-radius:12px; border:1px solid rgba(215,208,195,0.8); background:rgba(255,255,255,0.5); }\n.confidence-badge { border-radius:999px; padding:4px 12px; font-size:12px; display:inline-flex; align-items:center; gap:6px; border:1px solid rgba(215,208,195,0.8); }\n.confidence-badge.high { background:var(--accent); color:#fff; border-color:var(--accent); }\n.confidence-badge.medium { background:var(--warn); color:#fff; border-color:var(--warn); }\n.confidence-badge.low { background:#fff4eb; color:#a23b2a; border-color:#a23b2a; }\n.value-breakdown .row strong, .value-assumptions .row strong { font-size:16px; }\n.kicker { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin-bottom: 10px; word-spacing: 0.05em; }\n.metric { font-size: 34px; font-weight: 700; margin: 0; }\n.metric small { font-size: 14px; color: var(--muted); }\n.section-title { font-size: 24px; margin: 0 0 16px; }\n.knowledge-summary { margin-bottom:12px; font-size:14px; color:var(--muted); display:flex; flex-direction:column; gap:4px; }\n.list { display: grid; gap: 10px; }\n.hotspot-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:12px; margin-top:12px; }\n.hotspot-card, .shadow-card { border-radius:16px; padding:12px; border:1px solid rgba(215,208,195,0.8); display:flex; flex-direction:column; gap:8px; background:#fff; box-shadow:0 10px 30px rgba(30,36,48,0.05); }\n.hotspot-header { display:flex; justify-content:space-between; align-items:center; }\n.hotspot-body { display:flex; justify-content:space-between; gap:12px; }\n.hotspot-body span { font-size:12px; color:var(--muted); }\n.hotspot-note { margin:0; font-size:12px; color:var(--muted); }\n.trend-indicator { font-size:12px; text-transform:capitalize; border-radius:999px; padding:4px 10px; border:1px solid rgba(215,208,195,0.8); }\n.trend-indicator.up { color:#0b6e4f; border-color:#0b6e4f; background:rgba(11,110,79,0.12); }\n.trend-indicator.down { color:#a23b2a; border-color:#a23b2a; background:rgba(162,59,42,0.12); }\n.trend-indicator.flat { color:var(--muted); border-color:rgba(215,208,195,0.9); }\n.pattern-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:12px; margin-top:12px; }\n.pattern-card { border-radius:16px; padding:12px; border:1px solid rgba(215,208,195,0.8); background:#fff; box-shadow:0 10px 24px rgba(30,36,48,0.05); }\n.pattern-meta { display:flex; flex-direction:column; font-size:12px; color:var(--muted); margin-top:6px; gap:2px; }\n.row { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-top: 1px solid var(--line); }\n.row:first-child { border-top: 0; padding-top: 0; }\n.value-breakdown .row div, .value-assumptions .row div { font-size: 13px; color: var(--muted); }\n.badge { display: inline-flex; padding: 4px 10px; border-radius: 999px; font-size: 12px; border: 1px solid var(--line); }\n.badge.high { color: white; background: var(--risk); border-color: var(--risk); }\n.badge.medium { color: white; background: var(--warn); border-color: var(--warn); }\n.badge.low { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }\n.btn-link {\n border: 0; background: none; padding: 0; color: var(--accent); cursor: pointer; font: inherit; text-align: left;\n}\n/* \u2500\u2500 Drawer backdrop \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.drawer-backdrop {\n position: fixed; top: 0; left: 0; right: 0; bottom: 0;\n background: rgba(30, 36, 48, 0.18); z-index: 99;\n display: none; cursor: pointer;\n}\n.drawer-backdrop.open { display: block; }\n\n/* \u2500\u2500 Evidence drawer \u2014 full-height, wider, sticky header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.evidence-drawer {\n position: fixed; top: 0; right: 0;\n width: min(540px, 92vw); height: 100vh;\n background: var(--panel);\n border-left: 1px solid var(--line);\n box-shadow: -16px 0 60px rgba(30, 36, 48, 0.12);\n display: none; z-index: 100;\n overflow: hidden;\n flex-direction: column;\n}\n.evidence-drawer.open { display: flex; }\n\n/* Sticky header \u2014 always visible regardless of scroll position */\n.drawer-sticky-header {\n display: flex; align-items: center; justify-content: space-between;\n padding: 14px 20px; border-bottom: 1px solid var(--line);\n background: var(--panel); flex-shrink: 0;\n}\n.drawer-close {\n border: 0; background: var(--ink); color: white;\n border-radius: 999px; padding: 8px 16px; cursor: pointer;\n font-size: 13px; font-family: inherit;\n}\n.drawer-close:hover { background: #2a3040; }\n.drawer-newtab {\n font-size: 12px; color: var(--accent); text-decoration: underline;\n font-family: inherit;\n}\n\n/* Scrollable body \u2014 content scrolls independently from header */\n.drawer-body {\n flex: 1; overflow-y: auto; overflow-x: hidden;\n padding: 20px 24px 32px;\n}\n.drawer-body h2 { font-size: 22px; margin: 0 0 8px; line-height: 1.2; }\n.drawer-body p { line-height: 1.5; }\n.drawer-body .row {\n padding: 14px 0; border-bottom: 1px solid rgba(215, 208, 195, 0.5);\n display: flex; flex-wrap: wrap; gap: 8px 16px;\n}\n.drawer-body .evidence-rich {\n flex-direction: column; gap: 6px;\n}\n.drawer-body .evidence-task { margin: 2px 0; font-size: 13px; line-height: 1.4; }\n.drawer-body .evidence-context { font-size: 12px; color: var(--accent); margin: 2px 0; }\n.drawer-body .impact { font-size: 12px; color: var(--muted); margin: 4px 0 0; }\n.drawer-body .source-label {\n font-size: 10px; padding: 2px 8px; border-radius: 999px;\n border: 1px solid var(--line); color: var(--muted);\n white-space: nowrap;\n}\n.drawer-body .empty-evidence { padding: 24px 0; }\n\n/* \u2500\u2500 Full-page evidence view \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.evidence-full-page { max-width: 900px; }\n.evidence-fp-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; margin-bottom: 20px; }\n.evidence-fp-back { font-size: 13px; color: var(--accent); text-decoration: underline; white-space: nowrap; padding-top: 8px; }\n.evidence-fp-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }\n.evidence-fp-filter { font-size: 11px; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--line); color: var(--muted); background: rgba(255,255,255,0.7); }\n.evidence-fp-empty { padding: 32px 20px; text-align: center; }\n.evidence-fp-list { margin-bottom: 24px; }\n.evidence-fp-row { padding: 16px 20px; border-radius: 14px; border: 1px solid rgba(215,208,195,0.7); background: var(--panel); margin-bottom: 10px; box-shadow: 0 4px 16px var(--shadow); }\n.evidence-fp-row-header { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; flex-wrap: wrap; }\n.evidence-fp-time { font-size: 12px; color: var(--muted); }\n.evidence-fp-detail { font-size: 13px; margin: 4px 0; line-height: 1.45; }\n.evidence-fp-impact { font-size: 12px; color: var(--muted); margin: 4px 0 0; line-height: 1.4; }\n.evidence-fp-meta-line { font-size: 11px; color: var(--muted); margin: 4px 0 0; }\n\n/* \u2500\u2500 Intelligence sections \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.intelligence-section { margin-bottom: 16px; }\n.intelligence-list { display: flex; flex-direction: column; gap: 10px; }\n.intelligence-item { display: flex; flex-direction: column; gap: 2px; }\n.intelligence-item.friction strong { color: var(--warn); }\n.compounding-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }\n.compounding-item { display: flex; flex-direction: column; gap: 2px; text-align: center; }\n.compounding-label { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); }\n.compounding-item strong { font-size: 14px; }\n.chart-wrap svg { overflow: visible; }\n.footer-note { color: var(--muted); font-size: 11px; margin-top: 32px; text-align: center; opacity: 0.6; }\n.impact { font-size: 12px; color: var(--muted); margin-top: 4px; }\n.empty-evidence { text-align: center; padding: 24px 0; color: var(--muted); }\n.empty-evidence strong { color: var(--ink); }\n.source-label { font-size: 11px; padding: 2px 6px; border-radius: 4px; background: #ede9df; color: var(--muted); }\n.evidence-rich { padding: 12px 0; border-bottom: 1px solid var(--line); }\n.evidence-task { margin: 4px 0; font-size: 13px; line-height: 1.5; }\n.evidence-context { margin: 4px 0; font-size: 12px; color: var(--accent); }\n.system-health-card { text-align: center; padding: 24px 20px; }\n.health-headline { margin-bottom: 16px; }\n.health-score { font-size: 48px; display: block; line-height: 1; color: var(--accent); }\n.health-sentence { font-size: 15px; color: var(--muted); }\n.health-sub-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }\n.health-sub {\n display: flex; flex-direction: column; align-items: center; gap: 2px;\n text-decoration: none; color: inherit; border-radius: 8px; padding: 8px 4px;\n transition: background 0.15s;\n}\n.health-sub:hover { background: rgba(11,110,79,0.06); }\n.health-sub-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); }\n.health-sub strong { font-size: 18px; }\n.severity-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }\n.severity-dot.green { background: var(--accent); }\n.severity-dot.amber { background: var(--warn); }\n.severity-dot.red { background: var(--risk); }\n.drivers-section { }\n.drivers-subtitle { margin: 0 0 12px; font-size: 13px; color: var(--muted); }\n.drivers-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }\n.driver-item { display: flex; flex-direction: column; align-items: center; gap: 4px; }\n.driver-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); }\n.driver-item strong { font-size: 22px; }\n.detail-section { margin-top: 16px; opacity: 0.85; }\n.detail-section .panel { padding: 14px 18px; }\n.detail-section .kicker { margin-bottom: 6px; }\n.snapshot-card { display: flex; flex-direction: column; align-items: center; gap: 2px; }\n.snapshot-card strong { font-size: 28px; }\n.snapshot-card span { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; }\n.efficiency-zero-state { text-align: center; padding: 24px; }\n.efficiency-zero-state .causal-chain {\n font-style: italic; color: var(--accent); font-size: 15px; margin-top: 12px;\n}\n.efficiency-strip-row {\n display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 8px;\n}\n.efficiency-strip-item {\n display: flex; flex-direction: column; align-items: center; gap: 4px;\n}\n.efficiency-strip-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); }\n.efficiency-strip-item strong { font-size: 22px; }\n.trend-compact {\n display: flex; gap: 6px; align-items: flex-end; height: 70px; margin-top: 12px;\n}\n.trend-bar-group { display: flex; gap: 2px; align-items: flex-end; }\n.trend-bar { width: 8px; border-radius: 2px 2px 0 0; min-height: 2px; }\n.trend-bar-lift { background: var(--accent); }\n.trend-bar-quality { background: var(--warn); }\n.trend-legend { display: flex; gap: 16px; margin-top: 8px; font-size: 12px; color: var(--muted); }\n.legend-item { display: flex; align-items: center; gap: 4px; }\n.dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }\n.dot-lift { background: var(--accent); }\n.dot-quality { background: var(--warn); }\n.welcome-banner {\n background: linear-gradient(135deg, var(--accent-soft), #eef6f2);\n border: 1px solid var(--accent);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 20px;\n}\n.welcome-banner strong { display: block; font-size: 16px; margin-bottom: 4px; color: var(--accent); }\n.welcome-banner p { margin: 0; color: var(--muted); font-size: 14px; }\n.onboarding-hint {\n background: var(--panel);\n border: 1px dashed var(--line);\n border-radius: 12px;\n padding: 16px 20px;\n margin-bottom: 20px;\n}\n.onboarding-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n.onboarding-col { font-size: 14px; line-height: 1.5; }\n.onboarding-note { color: var(--accent); font-style: italic; }\n.onboarding-steps { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }\n.onboarding-steps p { margin: 0 0 8px; font-size: 14px; font-weight: 600; }\n.onboarding-steps ol { margin: 0; padding-left: 20px; font-size: 13px; line-height: 1.7; }\n.onboarding-steps code { background: #ede9df; padding: 2px 6px; border-radius: 4px; font-size: 12px; }\n@media (max-width: 900px) {\n .two-col { grid-template-columns: 1fr; }\n .title { font-size: 30px; }\n .onboarding-columns { grid-template-columns: 1fr; }\n}\n";
|
|
2
2
|
//# sourceMappingURL=theme.d.ts.map
|
package/dist/theme.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,04zBA2hBzB,CAAC"}
|
package/dist/theme.js
CHANGED
|
@@ -16,15 +16,20 @@ body {
|
|
|
16
16
|
margin: 0;
|
|
17
17
|
font-family: "Iowan Old Style", "Palatino Linotype", Georgia, serif;
|
|
18
18
|
color: var(--ink);
|
|
19
|
+
line-height: 1.5;
|
|
20
|
+
letter-spacing: -0.01em;
|
|
21
|
+
word-spacing: 0.02em;
|
|
22
|
+
-webkit-font-smoothing: antialiased;
|
|
19
23
|
background:
|
|
20
24
|
radial-gradient(circle at top left, rgba(11,110,79,0.08), transparent 35%),
|
|
21
25
|
linear-gradient(180deg, #f6f1e8 0%, #f2eee5 100%);
|
|
22
26
|
}
|
|
23
27
|
a { color: inherit; text-decoration: none; }
|
|
28
|
+
p { line-height: 1.55; margin: 0 0 8px; }
|
|
24
29
|
.shell { max-width: 1280px; margin: 0 auto; padding: 32px 20px 48px; }
|
|
25
30
|
.header { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; margin-bottom: 24px; }
|
|
26
|
-
.title { font-size: 40px; line-height: 1; margin: 0 0 8px; }
|
|
27
|
-
.subtitle { margin: 0; color: var(--muted); max-width: 720px; }
|
|
31
|
+
.title { font-size: 40px; line-height: 1.1; margin: 0 0 8px; letter-spacing: -0.02em; }
|
|
32
|
+
.subtitle { margin: 0; color: var(--muted); max-width: 720px; line-height: 1.45; }
|
|
28
33
|
.nav { display: flex; gap: 10px; flex-wrap: wrap; margin: 20px 0 28px; }
|
|
29
34
|
.nav a {
|
|
30
35
|
padding: 10px 14px;
|
|
@@ -234,7 +239,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
234
239
|
.insight-severity.critical { background:#ffe0df; color:#a23b2a; border-color:#a23b2a; }
|
|
235
240
|
.insight-actions { display:flex; gap:12px; align-items:center; justify-content:space-between; font-size:12px; margin-top:4px; }
|
|
236
241
|
.storyline { display:flex; flex-wrap:wrap; gap:16px; align-items:center; margin-bottom:12px; }
|
|
237
|
-
.scope-context { font-size:13px; color:var(--muted); }
|
|
242
|
+
.scope-context { font-size:13px; color:var(--muted); line-height:1.45; }
|
|
238
243
|
.scope-view-mode { font-style: italic; }
|
|
239
244
|
.page-header { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:20px; padding:20px; border-radius:20px; border:1px solid rgba(215,208,195,0.8); background:var(--panel); box-shadow:0 10px 30px var(--shadow); }
|
|
240
245
|
.page-title { font-size:20px; font-weight:700; margin:0; }
|
|
@@ -259,7 +264,21 @@ a { color: inherit; text-decoration: none; }
|
|
|
259
264
|
.metric-card header { display:flex; justify-content:space-between; align-items:center; }
|
|
260
265
|
.metric-label { font-size:12px; letter-spacing:0.2em; text-transform:uppercase; color:var(--muted); }
|
|
261
266
|
.metric-display strong { font-size:28px; }
|
|
262
|
-
.metric-display span { font-size:13px; color:var(--muted); }
|
|
267
|
+
.metric-display span { font-size:13px; color:var(--muted); display:block; }
|
|
268
|
+
.metric-secondary { font-size:11px !important; color:var(--muted) !important; opacity:0.7; margin-top:2px; font-style:italic; }
|
|
269
|
+
.signal-synthesis { padding:16px 20px; border-radius:16px; background:linear-gradient(135deg, rgba(11,110,79,0.06) 0%, rgba(255,253,248,0.9) 100%); border:1px solid rgba(11,110,79,0.15); margin-bottom:20px; }
|
|
270
|
+
.synthesis-text { font-size:15px; line-height:1.5; color:var(--ink); margin:0; }
|
|
271
|
+
.stale-badge { font-size:12px; color:var(--warn); border:1px solid rgba(188,108,37,0.4); padding:4px 10px; border-radius:999px; }
|
|
272
|
+
.stale-refresh { color:var(--accent); text-decoration:underline; font-weight:600; }
|
|
273
|
+
.metric-header-actions { display:flex; align-items:center; gap:6px; }
|
|
274
|
+
.metric-help-toggle { width:20px; height:20px; border-radius:50%; border:1px solid var(--line); background:transparent; color:var(--muted); font-size:11px; font-weight:600; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; line-height:1; }
|
|
275
|
+
.metric-help-toggle:hover { background:var(--accent-soft); color:var(--accent); border-color:var(--accent); }
|
|
276
|
+
.metric-help-content { display:none; padding:10px 0 4px; border-top:1px solid rgba(215,208,195,0.5); margin-top:8px; }
|
|
277
|
+
.metric-help-content.open { display:block; }
|
|
278
|
+
.metric-help-definition { font-size:12px; color:var(--muted); margin:0 0 4px; }
|
|
279
|
+
.metric-help-why { font-size:12px; color:var(--ink); margin:0; }
|
|
280
|
+
.metric-grid-wrapper { margin-bottom:20px; }
|
|
281
|
+
.metric-group-label { font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--muted); margin-bottom:8px; padding-left:2px; }
|
|
263
282
|
.metric-severity { font-size:11px; padding:4px 10px; border-radius:999px; border:1px solid rgba(215,208,195,0.8); text-transform:uppercase; }
|
|
264
283
|
.metric-severity.high { color:#a23b2a; border-color:#a23b2a; background:rgba(162,59,42,0.12); }
|
|
265
284
|
.metric-severity.medium { color:#bc6c25; border-color:#bc6c25; background:rgba(188,108,37,0.12); }
|
|
@@ -313,7 +332,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
313
332
|
.confidence-badge.medium { background:var(--warn); color:#fff; border-color:var(--warn); }
|
|
314
333
|
.confidence-badge.low { background:#fff4eb; color:#a23b2a; border-color:#a23b2a; }
|
|
315
334
|
.value-breakdown .row strong, .value-assumptions .row strong { font-size:16px; }
|
|
316
|
-
.kicker { font-size:
|
|
335
|
+
.kicker { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin-bottom: 10px; word-spacing: 0.05em; }
|
|
317
336
|
.metric { font-size: 34px; font-weight: 700; margin: 0; }
|
|
318
337
|
.metric small { font-size: 14px; color: var(--muted); }
|
|
319
338
|
.section-title { font-size: 24px; margin: 0 0 16px; }
|
|
@@ -342,12 +361,92 @@ a { color: inherit; text-decoration: none; }
|
|
|
342
361
|
.btn-link {
|
|
343
362
|
border: 0; background: none; padding: 0; color: var(--accent); cursor: pointer; font: inherit; text-align: left;
|
|
344
363
|
}
|
|
364
|
+
/* ── Drawer backdrop ──────────────────────────────────────────────────── */
|
|
365
|
+
.drawer-backdrop {
|
|
366
|
+
position: fixed; top: 0; left: 0; right: 0; bottom: 0;
|
|
367
|
+
background: rgba(30, 36, 48, 0.18); z-index: 99;
|
|
368
|
+
display: none; cursor: pointer;
|
|
369
|
+
}
|
|
370
|
+
.drawer-backdrop.open { display: block; }
|
|
371
|
+
|
|
372
|
+
/* ── Evidence drawer — full-height, wider, sticky header ─────────────── */
|
|
345
373
|
.evidence-drawer {
|
|
346
|
-
position: fixed; top: 0; right: 0;
|
|
347
|
-
|
|
374
|
+
position: fixed; top: 0; right: 0;
|
|
375
|
+
width: min(540px, 92vw); height: 100vh;
|
|
376
|
+
background: var(--panel);
|
|
377
|
+
border-left: 1px solid var(--line);
|
|
378
|
+
box-shadow: -16px 0 60px rgba(30, 36, 48, 0.12);
|
|
379
|
+
display: none; z-index: 100;
|
|
380
|
+
overflow: hidden;
|
|
381
|
+
flex-direction: column;
|
|
348
382
|
}
|
|
349
|
-
.evidence-drawer.open { display:
|
|
350
|
-
|
|
383
|
+
.evidence-drawer.open { display: flex; }
|
|
384
|
+
|
|
385
|
+
/* Sticky header — always visible regardless of scroll position */
|
|
386
|
+
.drawer-sticky-header {
|
|
387
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
388
|
+
padding: 14px 20px; border-bottom: 1px solid var(--line);
|
|
389
|
+
background: var(--panel); flex-shrink: 0;
|
|
390
|
+
}
|
|
391
|
+
.drawer-close {
|
|
392
|
+
border: 0; background: var(--ink); color: white;
|
|
393
|
+
border-radius: 999px; padding: 8px 16px; cursor: pointer;
|
|
394
|
+
font-size: 13px; font-family: inherit;
|
|
395
|
+
}
|
|
396
|
+
.drawer-close:hover { background: #2a3040; }
|
|
397
|
+
.drawer-newtab {
|
|
398
|
+
font-size: 12px; color: var(--accent); text-decoration: underline;
|
|
399
|
+
font-family: inherit;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/* Scrollable body — content scrolls independently from header */
|
|
403
|
+
.drawer-body {
|
|
404
|
+
flex: 1; overflow-y: auto; overflow-x: hidden;
|
|
405
|
+
padding: 20px 24px 32px;
|
|
406
|
+
}
|
|
407
|
+
.drawer-body h2 { font-size: 22px; margin: 0 0 8px; line-height: 1.2; }
|
|
408
|
+
.drawer-body p { line-height: 1.5; }
|
|
409
|
+
.drawer-body .row {
|
|
410
|
+
padding: 14px 0; border-bottom: 1px solid rgba(215, 208, 195, 0.5);
|
|
411
|
+
display: flex; flex-wrap: wrap; gap: 8px 16px;
|
|
412
|
+
}
|
|
413
|
+
.drawer-body .evidence-rich {
|
|
414
|
+
flex-direction: column; gap: 6px;
|
|
415
|
+
}
|
|
416
|
+
.drawer-body .evidence-task { margin: 2px 0; font-size: 13px; line-height: 1.4; }
|
|
417
|
+
.drawer-body .evidence-context { font-size: 12px; color: var(--accent); margin: 2px 0; }
|
|
418
|
+
.drawer-body .impact { font-size: 12px; color: var(--muted); margin: 4px 0 0; }
|
|
419
|
+
.drawer-body .source-label {
|
|
420
|
+
font-size: 10px; padding: 2px 8px; border-radius: 999px;
|
|
421
|
+
border: 1px solid var(--line); color: var(--muted);
|
|
422
|
+
white-space: nowrap;
|
|
423
|
+
}
|
|
424
|
+
.drawer-body .empty-evidence { padding: 24px 0; }
|
|
425
|
+
|
|
426
|
+
/* ── Full-page evidence view ───────────────────────────────────────────── */
|
|
427
|
+
.evidence-full-page { max-width: 900px; }
|
|
428
|
+
.evidence-fp-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; margin-bottom: 20px; }
|
|
429
|
+
.evidence-fp-back { font-size: 13px; color: var(--accent); text-decoration: underline; white-space: nowrap; padding-top: 8px; }
|
|
430
|
+
.evidence-fp-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
|
|
431
|
+
.evidence-fp-filter { font-size: 11px; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--line); color: var(--muted); background: rgba(255,255,255,0.7); }
|
|
432
|
+
.evidence-fp-empty { padding: 32px 20px; text-align: center; }
|
|
433
|
+
.evidence-fp-list { margin-bottom: 24px; }
|
|
434
|
+
.evidence-fp-row { padding: 16px 20px; border-radius: 14px; border: 1px solid rgba(215,208,195,0.7); background: var(--panel); margin-bottom: 10px; box-shadow: 0 4px 16px var(--shadow); }
|
|
435
|
+
.evidence-fp-row-header { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; flex-wrap: wrap; }
|
|
436
|
+
.evidence-fp-time { font-size: 12px; color: var(--muted); }
|
|
437
|
+
.evidence-fp-detail { font-size: 13px; margin: 4px 0; line-height: 1.45; }
|
|
438
|
+
.evidence-fp-impact { font-size: 12px; color: var(--muted); margin: 4px 0 0; line-height: 1.4; }
|
|
439
|
+
.evidence-fp-meta-line { font-size: 11px; color: var(--muted); margin: 4px 0 0; }
|
|
440
|
+
|
|
441
|
+
/* ── Intelligence sections ─────────────────────────────────────────────── */
|
|
442
|
+
.intelligence-section { margin-bottom: 16px; }
|
|
443
|
+
.intelligence-list { display: flex; flex-direction: column; gap: 10px; }
|
|
444
|
+
.intelligence-item { display: flex; flex-direction: column; gap: 2px; }
|
|
445
|
+
.intelligence-item.friction strong { color: var(--warn); }
|
|
446
|
+
.compounding-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
|
|
447
|
+
.compounding-item { display: flex; flex-direction: column; gap: 2px; text-align: center; }
|
|
448
|
+
.compounding-label { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); }
|
|
449
|
+
.compounding-item strong { font-size: 14px; }
|
|
351
450
|
.chart-wrap svg { overflow: visible; }
|
|
352
451
|
.footer-note { color: var(--muted); font-size: 11px; margin-top: 32px; text-align: center; opacity: 0.6; }
|
|
353
452
|
.impact { font-size: 12px; color: var(--muted); margin-top: 4px; }
|