rcf-lite 0.28.4 → 0.29.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.
- package/CHANGELOG.md +107 -1
- package/bin/rcf.js +4 -0
- package/fixtures/canary-manifest.json +9 -9
- package/guidance/define-draft-shapes.md +89 -0
- package/guidance/define-intake.md +97 -0
- package/guidance/define-intent.md +107 -0
- package/guidance/discover-prototype.md +67 -0
- package/guidance/discovery-prototypes.md +69 -0
- package/guidance/harness-template.md +34 -0
- package/guidance/managed/agent-instructions-block.hash +1 -1
- package/guidance/managed/agent-instructions-block.md +34 -0
- package/guidance/manifest.json +9 -2
- package/package.json +1 -1
- package/rcf/adrs/adr-4124-define-freeze-verb.json +30 -0
- package/rcf/adrs/adr-4126-persona-tagged-blockers-two-levels.json +40 -0
- package/rcf/adrs/adr-4127-readiness-tab-order-and-register.json +40 -0
- package/rcf/adrs/adr-4129-questions-harness-driven-loop.json +25 -0
- package/rcf/adrs/adr-4130-intake-harness-split-tool-scanned.json +20 -0
- package/rcf/adrs/adr-4132-prototypes-in-discovery-as-evidence.json +20 -0
- package/rcf/adrs/adr-4133-dag-dependency-depth-layout.json +40 -0
- package/rcf/adrs/adr-4134-index-json-route.json +35 -0
- package/rcf/adrs/adr-4135-readiness-po-register-and-adapter.json +35 -0
- package/rcf/adrs/adr-4136-embedding-host-fixture.json +35 -0
- package/rcf/code-nodes/cn-725.json +18 -2
- package/rcf/code-nodes/cn-726.json +10 -2
- package/rcf/code-nodes/cn-727.json +13 -4
- package/rcf/code-nodes/cn-728.json +18 -2
- package/rcf/code-nodes/cn-729.json +10 -2
- package/rcf/code-nodes/cn-730.json +13 -3
- package/rcf/code-nodes/cn-731.json +20 -0
- package/rcf/code-nodes/cn-732.json +14 -0
- package/rcf/code-nodes/cn-733.json +14 -0
- package/rcf/code-nodes/cn-734.json +14 -0
- package/rcf/code-nodes/cn-735.json +20 -0
- package/rcf/code-nodes/cn-736.json +14 -0
- package/rcf/code-nodes/cn-737.json +14 -0
- package/rcf/code-nodes/cn-738.json +14 -0
- package/rcf/code-nodes/cn-739.json +18 -0
- package/rcf/code-nodes/cn-740.json +19 -0
- package/rcf/code-nodes/cn-741.json +16 -0
- package/rcf/code-nodes/cn-742.json +16 -0
- package/rcf/code-nodes/cn-743.json +15 -0
- package/rcf/code-nodes/cn-744.json +22 -0
- package/rcf/code-nodes/cn-745.json +16 -0
- package/rcf/code-nodes/cn-746.json +14 -0
- package/rcf/code-nodes/cn-747.json +18 -0
- package/rcf/code-nodes/cn-748.json +16 -0
- package/rcf/code-nodes/cn-749.json +16 -0
- package/rcf/code-nodes/cn-750.json +15 -0
- package/rcf/code-nodes/cn-751.json +18 -0
- package/rcf/code-nodes/cn-752.json +14 -0
- package/rcf/fbs/fbs-196.json +13 -5
- package/rcf/fbs/fbs-198.json +42 -0
- package/rcf/fbs/fbs-199.json +59 -0
- package/rcf/fbs/fbs-200.json +46 -0
- package/rcf/fbs/fbs-201.json +49 -0
- package/rcf/fbs/fbs-202.json +110 -0
- package/rcf/fbs/fbs-203.json +100 -0
- package/rcf/requirements/req-002.json +2 -2
- package/rcf/requirements/req-173.json +2 -2
- package/rcf/requirements/req-174.json +10 -4
- package/rcf/requirements/req-175.json +10 -4
- package/rcf/requirements/req-176.json +25 -0
- package/rcf/requirements/req-180.json +31 -0
- package/rcf/requirements/req-181.json +31 -0
- package/rcf/requirements/req-182.json +25 -0
- package/rcf/requirements/req-186.json +25 -0
- package/rcf/requirements/req-187.json +31 -0
- package/rcf/requirements/req-188.json +25 -0
- package/rcf/tacs/tac-4121-define-ledgers.json +15 -3
- package/rcf/tacs/tac-4122-define-gates.json +40 -4
- package/rcf/tacs/tac-4123-define-readiness.json +39 -3
- package/rcf/tacs/tac-4124-define-freeze.json +28 -0
- package/rcf/tacs/tac-4127-readiness-view.json +49 -0
- package/rcf/tacs/tac-4128-define-guidance.json +53 -0
- package/rcf/tacs/tac-4129-define-questions.json +45 -0
- package/rcf/tacs/tac-4130-define-intake-brief.json +35 -0
- package/rcf/tacs/tac-4131-build-dag-view.json +39 -0
- package/rcf/tacs/tac-4132-id-lookup.json +42 -0
- package/rcf/tacs/tac-4133-readiness-po-layer.json +37 -0
- package/rcf/tacs/tac-4134-wespa-host-fixture.json +54 -0
- package/rcf/test-suites/ts-016.json +3 -3
- package/rcf/test-suites/ts-215.json +148 -4
- package/rcf/test-suites/ts-216.json +19 -3
- package/rcf/test-suites/ts-218.json +78 -0
- package/rcf/test-suites/ts-219.json +70 -0
- package/rcf/test-suites/ts-220.json +78 -0
- package/rcf/test-suites/ts-221.json +78 -0
- package/rcf/test-suites/ts-222.json +100 -0
- package/rcf/test-suites/ts-223.json +94 -0
- package/rcf/test-suites/ts-224.json +70 -0
- package/rcf/test-suites/ts-225.json +78 -0
- package/rcf/test-suites/ts-226.json +158 -0
- package/rcf/test-suites/ts-227.json +38 -0
- package/rcf/test-suites/ts-228.json +86 -0
- package/rcf/test-suites/ts-229.json +83 -0
- package/rcf/user-stories/us-17302.json +50 -0
- package/rcf/user-stories/us-17401.json +14 -2
- package/rcf/user-stories/us-17402.json +55 -0
- package/rcf/user-stories/us-17403.json +60 -0
- package/rcf/user-stories/us-17502.json +60 -0
- package/rcf/user-stories/us-17503.json +65 -0
- package/rcf/user-stories/us-17601.json +58 -0
- package/rcf/user-stories/us-18001.json +55 -0
- package/rcf/user-stories/us-18002.json +35 -0
- package/rcf/user-stories/us-18101.json +35 -0
- package/rcf/user-stories/us-18202.json +40 -0
- package/rcf/user-stories/us-18601.json +55 -0
- package/rcf/user-stories/us-18602.json +50 -0
- package/rcf/user-stories/us-18603.json +45 -0
- package/rcf/user-stories/us-18701.json +50 -0
- package/rcf/user-stories/us-18702.json +50 -0
- package/rcf/user-stories/us-18801.json +45 -0
- package/rcf/user-stories/us-204.json +59 -0
- package/rcf/user-stories/us-205.json +64 -0
- package/rcf/user-stories/us-206.json +54 -0
- package/releases/releases.yaml +11 -1
- package/src/cli/freeze.js +730 -0
- package/src/cli/help.js +12 -0
- package/src/cli/ledger.js +228 -12
- package/src/cli/questions.js +288 -0
- package/src/cli/readiness.js +267 -49
- package/src/cli/view.js +29 -0
- package/src/define/freeze-record.js +30 -15
- package/src/define/ledgers.js +210 -11
- package/src/intake/index.js +1 -1
- package/src/intake/orchestrator.js +117 -0
- package/src/mcp/tools.js +354 -0
- package/src/query/delta.js +6 -0
- package/src/query/gates.js +314 -39
- package/src/query/index.js +16 -2
- package/src/query/questions.js +438 -0
- package/src/query/readiness.js +248 -7
- package/src/server/index.js +24 -2
- package/src/server/routes.js +68 -1
- package/src/setup/identity-seed.js +17 -0
- package/src/view/build-dag.js +563 -0
- package/src/view/components/badge.js +41 -0
- package/src/view/components/diff.js +72 -0
- package/src/view/components/doc-row.js +62 -0
- package/src/view/components/empty-state.js +35 -0
- package/src/view/components/entity-selector.js +137 -0
- package/src/view/components/filter-bar.js +97 -0
- package/src/view/components/findings-list.js +49 -0
- package/src/view/components/index.js +12 -0
- package/src/view/components/pill.js +46 -0
- package/src/view/components/sub-tab-strip.js +43 -0
- package/src/view/components/toast.js +25 -0
- package/src/view/components-fixture.js +265 -0
- package/src/view/doc-renderers/architecture.js +304 -0
- package/src/view/doc-renderers/build.js +160 -0
- package/src/view/doc-renderers/index.js +2 -0
- package/src/view/doc-renderers/prd.js +35 -6
- package/src/view/html-page.js +700 -602
- package/src/view/index.js +96 -3
- package/src/view/live-client.js +39 -6
- package/src/view/needs-work.js +79 -0
- package/src/view/page-init.js +2193 -0
- package/src/view/readiness/phrasebook.js +115 -0
- package/src/view/readiness/po-layer.js +288 -0
- package/src/view/readiness/question-adapter.js +329 -0
- package/src/view/readiness/stage-legend.js +71 -0
- package/src/view/readiness.js +505 -0
- package/src/view/style.css +2017 -382
- package/src/view/test-host/embed-client.js +121 -0
- package/src/view/test-host/fixture.js +183 -0
- package/src/view/test-host/lints.js +220 -0
- package/src/view/view-index.js +323 -0
package/src/view/style.css
CHANGED
|
@@ -1,37 +1,52 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* RCF view stylesheet.
|
|
3
|
-
* Document-type colour tokens match the Mermaid classDef palette in
|
|
4
|
-
* mermaid-diagram.js so the diagram and the page agree visually.
|
|
2
|
+
* RCF view stylesheet.
|
|
5
3
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Viewer UI refresh PR 1 (w-2026-10-02-dave-010, Dex / wespa relay
|
|
5
|
+
* f0384046 on 2026-10-02): replaces the earlier single-theme indigo
|
|
6
|
+
* palette with the Stravica brand kit tokens (--sv-* cobalt / ink /
|
|
7
|
+
* paper) in a light + dark pair. theme=light|dark on the root page
|
|
8
|
+
* wins; theme=auto (and absent) falls through to prefers-color-scheme,
|
|
9
|
+
* with absent defaulting to light per Dex's wespa requirements.
|
|
10
|
+
*
|
|
11
|
+
* The viewer fills the viewport height and owns its scrolling (the
|
|
12
|
+
* host is a fixed box in wespa, 56px header plus a sidebar); nothing
|
|
13
|
+
* scrolls horizontally at narrow widths; the tab nav stays sticky
|
|
14
|
+
* while content scrolls. embed=1 stamps data-embed on <html>, which
|
|
15
|
+
* hides the brand block and the footer but keeps the tabstrip.
|
|
16
|
+
*
|
|
17
|
+
* Legacy --colour-* names are kept as aliases that map to the new
|
|
18
|
+
* tokens, so every doc-renderer / mermaid / product-map rule written
|
|
19
|
+
* against the old palette still works and gets dark theme for free.
|
|
9
20
|
*/
|
|
10
21
|
|
|
11
|
-
:root
|
|
22
|
+
:root,
|
|
23
|
+
:root[data-theme="light"] {
|
|
12
24
|
color-scheme: light;
|
|
13
25
|
|
|
14
|
-
/*
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
--
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
--
|
|
22
|
-
--
|
|
23
|
-
--
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
--
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
-
--
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
--
|
|
33
|
-
--
|
|
34
|
-
--
|
|
26
|
+
/* Stravica brand kit, light. */
|
|
27
|
+
--sv-canvas: #F6F8FC;
|
|
28
|
+
--sv-surface: #FFFFFF;
|
|
29
|
+
--sv-raised: #EEF2F8;
|
|
30
|
+
--sv-ink: #111927;
|
|
31
|
+
--sv-muted: #536176;
|
|
32
|
+
--sv-border: #D8DFEA;
|
|
33
|
+
--sv-control: #738198;
|
|
34
|
+
--sv-link: #2447EB;
|
|
35
|
+
--sv-hover: #1737C7;
|
|
36
|
+
--sv-active: #E9EEFF;
|
|
37
|
+
--sv-button: #2447EB;
|
|
38
|
+
--sv-onbutton: #FFFFFF;
|
|
39
|
+
--sv-code: #EEF2F8;
|
|
40
|
+
--sv-success: #116B4D;
|
|
41
|
+
--sv-successbg: #E7F4ED;
|
|
42
|
+
--sv-warning: #895000;
|
|
43
|
+
--sv-warningbg: #FFF3DC;
|
|
44
|
+
--sv-danger: #B4233B;
|
|
45
|
+
--sv-dangerbg: #FDECF0;
|
|
46
|
+
--sv-focus: #2447EB;
|
|
47
|
+
|
|
48
|
+
--sv-font: Arial, Helvetica, sans-serif;
|
|
49
|
+
--sv-mono: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
|
|
35
50
|
|
|
36
51
|
/* Doc-type palette - kept in sync with mermaid classDef */
|
|
37
52
|
--colour-prd: #fde68a;
|
|
@@ -46,152 +61,262 @@
|
|
|
46
61
|
--colour-ts: #99f6e4;
|
|
47
62
|
--colour-tc: #d9f99d;
|
|
48
63
|
|
|
49
|
-
/* Elevation */
|
|
50
64
|
--shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04), 0 1px 3px rgba(15, 23, 42, 0.03);
|
|
51
65
|
--shadow-md: 0 4px 10px rgba(15, 23, 42, 0.05), 0 2px 4px rgba(15, 23, 42, 0.04);
|
|
52
66
|
--shadow-lg: 0 12px 28px rgba(15, 23, 42, 0.08), 0 4px 8px rgba(15, 23, 42, 0.04);
|
|
53
67
|
|
|
54
|
-
/* Radii */
|
|
55
68
|
--radius-sm: 6px;
|
|
56
69
|
--radius-md: 10px;
|
|
57
70
|
--radius-lg: 14px;
|
|
58
71
|
|
|
59
|
-
/* Transitions */
|
|
60
72
|
--t-fast: 120ms ease;
|
|
61
73
|
--t-med: 180ms ease;
|
|
74
|
+
|
|
75
|
+
/* Legacy --colour-* aliases over --sv-* so pre-existing rules keep
|
|
76
|
+
their meaning and inherit dark theme automatically. */
|
|
77
|
+
--colour-text: var(--sv-ink);
|
|
78
|
+
--colour-heading: var(--sv-ink);
|
|
79
|
+
--colour-muted: var(--sv-muted);
|
|
80
|
+
--colour-subtle: var(--sv-control);
|
|
81
|
+
--colour-bg: var(--sv-surface);
|
|
82
|
+
--colour-surface: var(--sv-raised);
|
|
83
|
+
--colour-surface-2: var(--sv-raised);
|
|
84
|
+
--colour-border: var(--sv-border);
|
|
85
|
+
--colour-border-strong: var(--sv-control);
|
|
86
|
+
--colour-accent: var(--sv-link);
|
|
87
|
+
--colour-accent-hover: var(--sv-hover);
|
|
88
|
+
--colour-accent-subtle: var(--sv-active);
|
|
89
|
+
--colour-link: var(--sv-link);
|
|
90
|
+
--colour-broken-bg: var(--sv-dangerbg);
|
|
91
|
+
--colour-broken-text: var(--sv-danger);
|
|
92
|
+
--colour-broken-border: var(--sv-danger);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:root[data-theme="dark"] {
|
|
96
|
+
color-scheme: dark;
|
|
97
|
+
|
|
98
|
+
--sv-canvas: #0B111B;
|
|
99
|
+
--sv-surface: #101925;
|
|
100
|
+
--sv-raised: #182334;
|
|
101
|
+
--sv-ink: #EDF2FA;
|
|
102
|
+
--sv-muted: #AAB7CA;
|
|
103
|
+
--sv-border: #2C3A4F;
|
|
104
|
+
--sv-control: #75859D;
|
|
105
|
+
--sv-link: #A3B5FF;
|
|
106
|
+
--sv-hover: #C0CDFF;
|
|
107
|
+
--sv-active: #1D2C50;
|
|
108
|
+
--sv-button: #A3B5FF;
|
|
109
|
+
--sv-onbutton: #0B111B;
|
|
110
|
+
--sv-code: #0D1521;
|
|
111
|
+
--sv-success: #80D9B1;
|
|
112
|
+
--sv-successbg: #102D24;
|
|
113
|
+
--sv-warning: #F1CA7A;
|
|
114
|
+
--sv-warningbg: #322712;
|
|
115
|
+
--sv-danger: #FFA3B3;
|
|
116
|
+
--sv-dangerbg: #361C28;
|
|
117
|
+
--sv-focus: #A3B5FF;
|
|
118
|
+
|
|
119
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
120
|
+
--shadow-md: 0 4px 10px rgba(0, 0, 0, 0.45), 0 2px 4px rgba(0, 0, 0, 0.35);
|
|
121
|
+
--shadow-lg: 0 12px 28px rgba(0, 0, 0, 0.55), 0 4px 8px rgba(0, 0, 0, 0.4);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@media (prefers-color-scheme: dark) {
|
|
125
|
+
:root:not([data-theme="light"]):not([data-theme="dark"]) {
|
|
126
|
+
color-scheme: dark;
|
|
127
|
+
|
|
128
|
+
--sv-canvas: #0B111B;
|
|
129
|
+
--sv-surface: #101925;
|
|
130
|
+
--sv-raised: #182334;
|
|
131
|
+
--sv-ink: #EDF2FA;
|
|
132
|
+
--sv-muted: #AAB7CA;
|
|
133
|
+
--sv-border: #2C3A4F;
|
|
134
|
+
--sv-control: #75859D;
|
|
135
|
+
--sv-link: #A3B5FF;
|
|
136
|
+
--sv-hover: #C0CDFF;
|
|
137
|
+
--sv-active: #1D2C50;
|
|
138
|
+
--sv-button: #A3B5FF;
|
|
139
|
+
--sv-onbutton: #0B111B;
|
|
140
|
+
--sv-code: #0D1521;
|
|
141
|
+
--sv-success: #80D9B1;
|
|
142
|
+
--sv-successbg: #102D24;
|
|
143
|
+
--sv-warning: #F1CA7A;
|
|
144
|
+
--sv-warningbg: #322712;
|
|
145
|
+
--sv-danger: #FFA3B3;
|
|
146
|
+
--sv-dangerbg: #361C28;
|
|
147
|
+
--sv-focus: #A3B5FF;
|
|
148
|
+
|
|
149
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
150
|
+
--shadow-md: 0 4px 10px rgba(0, 0, 0, 0.45), 0 2px 4px rgba(0, 0, 0, 0.35);
|
|
151
|
+
--shadow-lg: 0 12px 28px rgba(0, 0, 0, 0.55), 0 4px 8px rgba(0, 0, 0, 0.4);
|
|
152
|
+
}
|
|
62
153
|
}
|
|
63
154
|
|
|
64
155
|
* { box-sizing: border-box; }
|
|
65
156
|
|
|
66
157
|
html { font-size: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
|
|
67
158
|
|
|
159
|
+
/* Viewport-height scroll box: the viewer owns scrolling inside the
|
|
160
|
+
host iframe. The host sizes the frame; we fill it, reflow on resize,
|
|
161
|
+
and never produce a horizontal page scroll (lists wrap, the DAG and
|
|
162
|
+
mermaid svgs scroll inside their own panels). */
|
|
163
|
+
html, body {
|
|
164
|
+
height: 100%;
|
|
165
|
+
margin: 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
68
168
|
body {
|
|
69
|
-
font-family:
|
|
169
|
+
font-family: var(--sv-font);
|
|
70
170
|
line-height: 1.55;
|
|
71
|
-
color: var(--
|
|
72
|
-
background: var(--
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
171
|
+
color: var(--sv-ink);
|
|
172
|
+
background: var(--sv-canvas);
|
|
173
|
+
min-height: 100vh;
|
|
174
|
+
display: flex;
|
|
175
|
+
flex-direction: column;
|
|
176
|
+
overflow-x: hidden;
|
|
76
177
|
font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
|
|
77
178
|
}
|
|
78
179
|
|
|
79
180
|
/* --------------------------------------------------------------------
|
|
80
|
-
*
|
|
181
|
+
* App shell: compact header with brand, sticky tabstrip, tools well.
|
|
81
182
|
* -------------------------------------------------------------------- */
|
|
82
183
|
|
|
83
|
-
header {
|
|
84
|
-
|
|
85
|
-
|
|
184
|
+
header.app-header {
|
|
185
|
+
position: sticky;
|
|
186
|
+
top: 0;
|
|
187
|
+
z-index: 20;
|
|
188
|
+
background: var(--sv-surface);
|
|
189
|
+
border-bottom: 1px solid var(--sv-border);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
header.app-header .bar {
|
|
193
|
+
max-width: 1280px;
|
|
194
|
+
margin: 0 auto;
|
|
195
|
+
padding: 0.5rem 1rem 0;
|
|
86
196
|
display: flex;
|
|
87
|
-
|
|
88
|
-
gap:
|
|
197
|
+
align-items: center;
|
|
198
|
+
gap: 1rem;
|
|
89
199
|
}
|
|
90
200
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
letter-spacing: -0.02em;
|
|
96
|
-
color: var(--colour-heading);
|
|
201
|
+
/* D17: icon mark only; the tool name is NOT shown as text. The stack
|
|
202
|
+
under review (project name) is the prominent text in .product, with
|
|
203
|
+
a muted "review surface" sub-label; no technology chip. */
|
|
204
|
+
.brand {
|
|
97
205
|
display: flex;
|
|
98
206
|
align-items: center;
|
|
99
|
-
gap: 0.
|
|
207
|
+
gap: 0.4rem;
|
|
208
|
+
color: var(--sv-muted);
|
|
209
|
+
white-space: nowrap;
|
|
100
210
|
}
|
|
101
211
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
212
|
+
.brand .mark {
|
|
213
|
+
/* Inline SVG of the Stravica kit mark from
|
|
214
|
+
stravica.ai/public/brand/assets/icons/favicon.svg (same paths and
|
|
215
|
+
colours as the favicon above). The SVG carries its own ink tile
|
|
216
|
+
and radius so no background styling is needed here. */
|
|
217
|
+
width: 18px;
|
|
218
|
+
height: 18px;
|
|
107
219
|
display: inline-block;
|
|
108
|
-
width: 2rem;
|
|
109
|
-
height: 2rem;
|
|
110
220
|
flex-shrink: 0;
|
|
111
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 136 180' width='136' height='180' role='img'%3E%3Ctitle%3EStravica ribbon symbol%3C/title%3E%3Cdesc%3E%3C/desc%3E%3Cdefs%3E%3ClinearGradient id='ma' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop stop-color='%23174CFF'/%3E%3Cstop offset='1' stop-color='%23263BFF'/%3E%3C/linearGradient%3E%3ClinearGradient id='mb' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop stop-color='%231674FF'/%3E%3Cstop offset='1' stop-color='%232854FF'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg transform='translate(0 0) scale(1.0)'%3E%3Cpath fill='url(%23ma)' d='M86 4 L10 48 Q4 51 4 58 L4 81 Q4 87 10 84 L80 45 Q86 42 86 35 Z'/%3E%3Cpath fill='url(%23ma)' d='M88 108 L129 125 L47 172 Q41 176 41 170 L41 142 Q41 136 47 133 Z'/%3E%3Cpath fill='url(%23mb)' d='M41 84 L74 65 Q78 63 83 66 L124 88 Q130 91 130 98 L130 121 Q130 126 124 123 Z'/%3E%3C/g%3E%3C/svg%3E");
|
|
112
|
-
background-repeat: no-repeat;
|
|
113
|
-
background-position: center;
|
|
114
|
-
background-size: contain;
|
|
115
|
-
border-radius: var(--radius-sm);
|
|
116
|
-
box-shadow: var(--shadow-sm);
|
|
117
221
|
}
|
|
118
222
|
|
|
119
|
-
.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
223
|
+
.product {
|
|
224
|
+
display: flex;
|
|
225
|
+
align-items: center;
|
|
226
|
+
gap: 0.5rem;
|
|
227
|
+
white-space: nowrap;
|
|
228
|
+
min-width: 0;
|
|
229
|
+
padding-left: 0.75rem;
|
|
230
|
+
border-left: 1px solid var(--sv-border);
|
|
123
231
|
}
|
|
124
232
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
233
|
+
.product .name {
|
|
234
|
+
font-weight: 700;
|
|
235
|
+
font-size: 1.05rem;
|
|
236
|
+
color: var(--sv-ink);
|
|
237
|
+
overflow: hidden;
|
|
238
|
+
text-overflow: ellipsis;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.product .sub {
|
|
242
|
+
font-size: 0.72rem;
|
|
243
|
+
font-weight: 500;
|
|
244
|
+
color: var(--sv-muted);
|
|
245
|
+
}
|
|
128
246
|
|
|
129
247
|
nav.tabs {
|
|
130
248
|
display: flex;
|
|
131
|
-
flex-wrap: wrap;
|
|
132
249
|
gap: 0.25rem;
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
backdrop-filter: saturate(180%) blur(12px);
|
|
139
|
-
-webkit-backdrop-filter: saturate(180%) blur(12px);
|
|
140
|
-
border-bottom: 1px solid var(--colour-border);
|
|
141
|
-
margin: 0 -0.5rem;
|
|
250
|
+
margin-left: 1rem;
|
|
251
|
+
flex: 1 1 auto;
|
|
252
|
+
min-width: 0;
|
|
253
|
+
overflow-x: auto;
|
|
254
|
+
-webkit-overflow-scrolling: touch;
|
|
142
255
|
}
|
|
143
256
|
|
|
144
257
|
nav.tabs button {
|
|
145
258
|
appearance: none;
|
|
146
|
-
border:
|
|
147
|
-
border-radius: var(--radius-md) var(--radius-md) 0 0;
|
|
259
|
+
border: none;
|
|
148
260
|
background: transparent;
|
|
149
|
-
color: var(--
|
|
150
|
-
|
|
261
|
+
color: var(--sv-muted);
|
|
262
|
+
display: inline-flex;
|
|
263
|
+
align-items: center;
|
|
264
|
+
min-height: 2.5rem;
|
|
265
|
+
padding: 0 0.85rem;
|
|
266
|
+
text-decoration: none;
|
|
267
|
+
border-bottom: 3px solid transparent;
|
|
268
|
+
white-space: nowrap;
|
|
269
|
+
font-family: inherit;
|
|
151
270
|
font-size: 0.95rem;
|
|
152
271
|
font-weight: 500;
|
|
153
272
|
cursor: pointer;
|
|
154
|
-
font-family: inherit;
|
|
155
273
|
transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
|
|
156
|
-
margin-bottom: -1px;
|
|
157
|
-
position: relative;
|
|
158
274
|
}
|
|
159
275
|
|
|
160
276
|
nav.tabs button:hover {
|
|
161
|
-
|
|
162
|
-
|
|
277
|
+
color: var(--sv-ink);
|
|
278
|
+
background: var(--sv-raised);
|
|
163
279
|
}
|
|
164
280
|
|
|
165
281
|
nav.tabs button[aria-selected="true"] {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
border-color: var(--colour-border);
|
|
170
|
-
border-bottom-color: var(--colour-bg);
|
|
282
|
+
color: var(--sv-ink);
|
|
283
|
+
font-weight: 700;
|
|
284
|
+
border-bottom-color: var(--sv-link);
|
|
171
285
|
}
|
|
172
286
|
|
|
173
|
-
nav.tabs button
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
left: 0.9rem;
|
|
177
|
-
right: 0.9rem;
|
|
178
|
-
bottom: -1px;
|
|
179
|
-
height: 2px;
|
|
180
|
-
background: var(--colour-accent);
|
|
181
|
-
border-radius: 2px;
|
|
287
|
+
nav.tabs button:focus-visible {
|
|
288
|
+
outline: 3px solid var(--sv-focus);
|
|
289
|
+
outline-offset: -3px;
|
|
182
290
|
}
|
|
183
291
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
292
|
+
.tools {
|
|
293
|
+
display: flex;
|
|
294
|
+
align-items: center;
|
|
295
|
+
gap: 0.5rem;
|
|
296
|
+
flex-shrink: 0;
|
|
187
297
|
}
|
|
188
298
|
|
|
299
|
+
/* Embed contract (D10): data-embed="1" suppresses the footer and
|
|
300
|
+
left-aligns the tab nav; the icon mark and project name stay (D17
|
|
301
|
+
keeps the stack under review named even under embed). */
|
|
302
|
+
html[data-embed="1"] .app-footer { display: none; }
|
|
303
|
+
html[data-embed="1"] nav.tabs { margin-left: 0; }
|
|
304
|
+
|
|
189
305
|
/* --------------------------------------------------------------------
|
|
190
|
-
*
|
|
306
|
+
* Main content area
|
|
191
307
|
* -------------------------------------------------------------------- */
|
|
192
308
|
|
|
309
|
+
main {
|
|
310
|
+
flex: 1 1 auto;
|
|
311
|
+
max-width: 1280px;
|
|
312
|
+
width: 100%;
|
|
313
|
+
margin: 0 auto;
|
|
314
|
+
padding: 1.25rem 1rem 3rem;
|
|
315
|
+
overflow-x: hidden;
|
|
316
|
+
}
|
|
317
|
+
|
|
193
318
|
section[role="tabpanel"] {
|
|
194
|
-
padding-top:
|
|
319
|
+
padding-top: 1rem;
|
|
195
320
|
}
|
|
196
321
|
|
|
197
322
|
section[role="tabpanel"][hidden] {
|
|
@@ -202,50 +327,33 @@ h2.tab-heading {
|
|
|
202
327
|
font-size: 1.5rem;
|
|
203
328
|
font-weight: 700;
|
|
204
329
|
letter-spacing: -0.015em;
|
|
205
|
-
color: var(--
|
|
330
|
+
color: var(--sv-ink);
|
|
206
331
|
margin: 0 0 1.25rem;
|
|
207
332
|
padding-bottom: 0.5rem;
|
|
208
|
-
border-bottom: 1px solid var(--
|
|
209
|
-
position: relative;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
h2.tab-heading::before {
|
|
213
|
-
content: '';
|
|
214
|
-
position: absolute;
|
|
215
|
-
left: 0;
|
|
216
|
-
bottom: -1px;
|
|
217
|
-
width: 3rem;
|
|
218
|
-
height: 2px;
|
|
219
|
-
background: var(--colour-accent);
|
|
220
|
-
border-radius: 2px;
|
|
333
|
+
border-bottom: 1px solid var(--sv-border);
|
|
221
334
|
}
|
|
222
335
|
|
|
223
336
|
.group-heading {
|
|
224
|
-
font-size:
|
|
337
|
+
font-size: 0.8rem;
|
|
225
338
|
font-weight: 600;
|
|
226
339
|
margin-top: 2.25rem;
|
|
227
340
|
margin-bottom: 1rem;
|
|
228
|
-
color: var(--
|
|
341
|
+
color: var(--sv-ink);
|
|
229
342
|
text-transform: uppercase;
|
|
230
343
|
letter-spacing: 0.06em;
|
|
231
|
-
font-size: 0.8rem;
|
|
232
344
|
}
|
|
233
345
|
|
|
234
|
-
/* --------------------------------------------------------------------
|
|
235
|
-
* Overview diagram
|
|
236
|
-
* -------------------------------------------------------------------- */
|
|
237
|
-
|
|
238
346
|
/* --------------------------------------------------------------------
|
|
239
347
|
* Doc article - the rendered doc body inside a card
|
|
240
348
|
* -------------------------------------------------------------------- */
|
|
241
349
|
|
|
242
350
|
article.doc {
|
|
243
|
-
border: 1px solid var(--
|
|
351
|
+
border: 1px solid var(--sv-border);
|
|
244
352
|
border-left-width: 5px;
|
|
245
353
|
padding: 1.25rem 1.5rem;
|
|
246
354
|
border-radius: var(--radius-md);
|
|
247
355
|
margin-bottom: 1.5rem;
|
|
248
|
-
background: var(--
|
|
356
|
+
background: var(--sv-surface);
|
|
249
357
|
box-shadow: var(--shadow-sm);
|
|
250
358
|
transition: box-shadow var(--t-med), transform var(--t-med);
|
|
251
359
|
}
|
|
@@ -254,15 +362,10 @@ article.doc h3 {
|
|
|
254
362
|
margin: 0 0 0.85rem;
|
|
255
363
|
font-size: 1.2rem;
|
|
256
364
|
font-weight: 600;
|
|
257
|
-
color: var(--
|
|
365
|
+
color: var(--sv-ink);
|
|
258
366
|
letter-spacing: -0.01em;
|
|
259
367
|
}
|
|
260
368
|
|
|
261
|
-
/* When the article is embedded inside a doc-details wrapper, the parent
|
|
262
|
-
* details already carries the border + shadow + radius + background +
|
|
263
|
-
* coloured left accent. Strip the article's own card treatment so we
|
|
264
|
-
* don't render a card inside a card. Also hide the article's own h3 -
|
|
265
|
-
* the summary line already carries the title. */
|
|
266
369
|
details.doc-details > article.doc {
|
|
267
370
|
border: none;
|
|
268
371
|
border-radius: 0;
|
|
@@ -286,18 +389,17 @@ article.doc-fbs { border-left-color: var(--colour-fbs); }
|
|
|
286
389
|
article.doc-ts { border-left-color: var(--colour-ts); }
|
|
287
390
|
|
|
288
391
|
article.doc p { margin: 0.45rem 0; }
|
|
289
|
-
article.doc h4 { margin: 1.1rem 0 0.45rem; font-size: 1rem; font-weight: 600; color: var(--
|
|
290
|
-
article.doc h5 { margin: 0.6rem 0 0.3rem; font-size: 0.925rem; font-weight: 600; color: var(--
|
|
392
|
+
article.doc h4 { margin: 1.1rem 0 0.45rem; font-size: 1rem; font-weight: 600; color: var(--sv-ink); }
|
|
393
|
+
article.doc h5 { margin: 0.6rem 0 0.3rem; font-size: 0.925rem; font-weight: 600; color: var(--sv-ink); }
|
|
291
394
|
|
|
292
395
|
.field-list { margin: 0.85rem 0; }
|
|
293
396
|
.field-list ul { margin: 0.3rem 0; padding-left: 1.5rem; }
|
|
294
397
|
.field-list ul li { margin: 0.2rem 0; }
|
|
295
|
-
.field-list dl dt { font-weight: 600; margin-top: 0.5rem; color: var(--
|
|
398
|
+
.field-list dl dt { font-weight: 600; margin-top: 0.5rem; color: var(--sv-ink); }
|
|
296
399
|
.field-list dl dd { margin-left: 0; margin-bottom: 0.35rem; }
|
|
297
|
-
/* 0.28.2 (issue #235): structured TAD fields render as a table. */
|
|
298
400
|
.field-list table.field-table { border-collapse: collapse; width: 100%; margin: 0.35rem 0 0.85rem; font-size: 0.95em; }
|
|
299
|
-
.field-list table.field-table th, .field-list table.field-table td { text-align: left; padding: 0.35rem 0.55rem; border-bottom: 1px solid var(--
|
|
300
|
-
.field-list table.field-table th { font-weight: 600; color: var(--
|
|
401
|
+
.field-list table.field-table th, .field-list table.field-table td { text-align: left; padding: 0.35rem 0.55rem; border-bottom: 1px solid var(--sv-border); vertical-align: top; }
|
|
402
|
+
.field-list table.field-table th { font-weight: 600; color: var(--sv-ink); background: var(--sv-raised); }
|
|
301
403
|
.field-list table.field-table tr:last-child td { border-bottom: 0; }
|
|
302
404
|
|
|
303
405
|
/* --------------------------------------------------------------------
|
|
@@ -316,15 +418,11 @@ article.doc h5 { margin: 0.6rem 0 0.3rem; font-size: 0.925rem; font-weight: 600;
|
|
|
316
418
|
box-shadow: none;
|
|
317
419
|
}
|
|
318
420
|
|
|
319
|
-
.ac-list .ac-item:last-child {
|
|
320
|
-
margin-bottom: 0;
|
|
321
|
-
}
|
|
322
|
-
|
|
421
|
+
.ac-list .ac-item:last-child { margin-bottom: 0; }
|
|
323
422
|
.ac-list .ac-item p { margin: 0.3rem 0; }
|
|
324
423
|
.ac-list .ac-gwt p { margin: 0.2rem 0; }
|
|
325
|
-
.ac-meta { color: var(--
|
|
424
|
+
.ac-meta { color: var(--sv-muted); font-size: 0.875rem; }
|
|
326
425
|
|
|
327
|
-
/* AC pills (used in FBS -> AC nav on the Build tab) */
|
|
328
426
|
.ac-pills {
|
|
329
427
|
display: flex;
|
|
330
428
|
flex-wrap: wrap;
|
|
@@ -337,16 +435,16 @@ article.doc h5 { margin: 0.6rem 0 0.3rem; font-size: 0.925rem; font-weight: 600;
|
|
|
337
435
|
padding: 0.22rem 0.7rem;
|
|
338
436
|
border-radius: 999px;
|
|
339
437
|
background: var(--colour-ac);
|
|
340
|
-
color:
|
|
438
|
+
color: var(--sv-link);
|
|
341
439
|
text-decoration: none;
|
|
342
440
|
font-size: 0.85rem;
|
|
343
441
|
font-weight: 500;
|
|
344
|
-
border: 1px solid
|
|
442
|
+
border: 1px solid var(--sv-border);
|
|
345
443
|
transition: background var(--t-fast), transform var(--t-fast), box-shadow var(--t-fast);
|
|
346
444
|
}
|
|
347
445
|
|
|
348
446
|
.ac-pills .ac-pill:hover {
|
|
349
|
-
background:
|
|
447
|
+
background: var(--sv-active);
|
|
350
448
|
box-shadow: var(--shadow-sm);
|
|
351
449
|
transform: translateY(-1px);
|
|
352
450
|
}
|
|
@@ -361,8 +459,8 @@ article.doc h5 { margin: 0.6rem 0 0.3rem; font-size: 0.925rem; font-weight: 600;
|
|
|
361
459
|
}
|
|
362
460
|
|
|
363
461
|
.ac-resolved.broken {
|
|
364
|
-
border-left-color: var(--
|
|
365
|
-
background: var(--
|
|
462
|
+
border-left-color: var(--sv-danger);
|
|
463
|
+
background: var(--sv-dangerbg);
|
|
366
464
|
}
|
|
367
465
|
|
|
368
466
|
.tc {
|
|
@@ -381,9 +479,10 @@ article.doc h5 { margin: 0.6rem 0 0.3rem; font-size: 0.925rem; font-weight: 600;
|
|
|
381
479
|
.subdiagram {
|
|
382
480
|
margin: 1.25rem 0;
|
|
383
481
|
padding: 0.85rem;
|
|
384
|
-
background: var(--
|
|
385
|
-
border: 1px solid var(--
|
|
482
|
+
background: var(--sv-raised);
|
|
483
|
+
border: 1px solid var(--sv-border);
|
|
386
484
|
border-radius: var(--radius-md);
|
|
485
|
+
overflow-x: auto;
|
|
387
486
|
}
|
|
388
487
|
|
|
389
488
|
pre.mermaid {
|
|
@@ -401,28 +500,26 @@ pre.mermaid {
|
|
|
401
500
|
* -------------------------------------------------------------------- */
|
|
402
501
|
|
|
403
502
|
details.doc-details {
|
|
404
|
-
border: 1px solid var(--
|
|
503
|
+
border: 1px solid var(--sv-border);
|
|
405
504
|
border-radius: var(--radius-md);
|
|
406
505
|
margin-bottom: 0.85rem;
|
|
407
|
-
background: var(--
|
|
506
|
+
background: var(--sv-surface);
|
|
408
507
|
box-shadow: var(--shadow-sm);
|
|
409
508
|
transition: box-shadow var(--t-med), border-color var(--t-med);
|
|
410
509
|
}
|
|
411
510
|
|
|
412
511
|
details.doc-details:hover {
|
|
413
512
|
box-shadow: var(--shadow-md);
|
|
414
|
-
border-color: var(--
|
|
513
|
+
border-color: var(--sv-control);
|
|
415
514
|
}
|
|
416
515
|
|
|
417
|
-
details.doc-details[open] {
|
|
418
|
-
box-shadow: var(--shadow-md);
|
|
419
|
-
}
|
|
516
|
+
details.doc-details[open] { box-shadow: var(--shadow-md); }
|
|
420
517
|
|
|
421
518
|
details.doc-details > summary {
|
|
422
519
|
cursor: pointer;
|
|
423
520
|
padding: 0.75rem 1rem;
|
|
424
521
|
font-weight: 500;
|
|
425
|
-
color: var(--
|
|
522
|
+
color: var(--sv-ink);
|
|
426
523
|
list-style: none;
|
|
427
524
|
display: flex;
|
|
428
525
|
align-items: center;
|
|
@@ -444,33 +541,28 @@ details.doc-details > summary > .status {
|
|
|
444
541
|
margin-left: auto;
|
|
445
542
|
}
|
|
446
543
|
|
|
447
|
-
details.doc-details > summary:hover {
|
|
448
|
-
background: var(--colour-surface);
|
|
449
|
-
}
|
|
544
|
+
details.doc-details > summary:hover { background: var(--sv-raised); }
|
|
450
545
|
|
|
451
546
|
details.doc-details > summary::-webkit-details-marker { display: none; }
|
|
452
547
|
|
|
453
|
-
/* Custom chevron */
|
|
454
548
|
details.doc-details > summary::before {
|
|
455
549
|
content: '';
|
|
456
550
|
display: inline-block;
|
|
457
551
|
width: 0.6rem;
|
|
458
552
|
height: 0.6rem;
|
|
459
|
-
border-right: 2px solid var(--
|
|
460
|
-
border-bottom: 2px solid var(--
|
|
553
|
+
border-right: 2px solid var(--sv-control);
|
|
554
|
+
border-bottom: 2px solid var(--sv-control);
|
|
461
555
|
transform: rotate(-45deg);
|
|
462
556
|
transition: transform var(--t-fast);
|
|
463
557
|
flex-shrink: 0;
|
|
464
558
|
margin-right: 0.15rem;
|
|
465
559
|
}
|
|
466
560
|
|
|
467
|
-
details.doc-details[open] > summary::before {
|
|
468
|
-
transform: rotate(45deg);
|
|
469
|
-
}
|
|
561
|
+
details.doc-details[open] > summary::before { transform: rotate(45deg); }
|
|
470
562
|
|
|
471
563
|
details.doc-details[open] > summary {
|
|
472
564
|
border-radius: var(--radius-md) var(--radius-md) 0 0;
|
|
473
|
-
border-bottom: 1px solid var(--
|
|
565
|
+
border-bottom: 1px solid var(--sv-border);
|
|
474
566
|
}
|
|
475
567
|
|
|
476
568
|
details.doc-details > article,
|
|
@@ -487,25 +579,21 @@ details.doc-details.doc-adr-wrap { border-left: 4px solid var(--colour-adr); }
|
|
|
487
579
|
details.doc-details.doc-fbs-wrap { border-left: 4px solid var(--colour-fbs); }
|
|
488
580
|
details.doc-details.doc-ts-wrap { border-left: 4px solid var(--colour-ts); }
|
|
489
581
|
|
|
490
|
-
.nested-details {
|
|
491
|
-
margin: 0 1rem 1rem;
|
|
492
|
-
}
|
|
582
|
+
.nested-details { margin: 0 1rem 1rem; }
|
|
493
583
|
|
|
494
584
|
.nested-details > h4 {
|
|
495
585
|
margin: 0.75rem 0 0.6rem;
|
|
496
|
-
color: var(--
|
|
586
|
+
color: var(--sv-muted);
|
|
497
587
|
font-size: 0.85rem;
|
|
498
588
|
font-weight: 600;
|
|
499
589
|
text-transform: uppercase;
|
|
500
590
|
letter-spacing: 0.04em;
|
|
501
591
|
}
|
|
502
592
|
|
|
503
|
-
/*
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
* visible, drop border/radius/shadow/background on the other sides.
|
|
508
|
-
* -------------------------------------------------------------------- */
|
|
593
|
+
/* Nested details: strip the outer-card treatment so a REQ card
|
|
594
|
+
expanded to show its US children doesn't render "card inside card
|
|
595
|
+
inside card". Keep the coloured left accent so hierarchy is still
|
|
596
|
+
visible, drop border/radius/shadow/background on the other sides. */
|
|
509
597
|
|
|
510
598
|
details.doc-details details.doc-details {
|
|
511
599
|
border-top-color: transparent;
|
|
@@ -518,9 +606,7 @@ details.doc-details details.doc-details {
|
|
|
518
606
|
}
|
|
519
607
|
|
|
520
608
|
details.doc-details details.doc-details:hover,
|
|
521
|
-
details.doc-details details.doc-details[open] {
|
|
522
|
-
box-shadow: none;
|
|
523
|
-
}
|
|
609
|
+
details.doc-details details.doc-details[open] { box-shadow: none; }
|
|
524
610
|
|
|
525
611
|
details.doc-details details.doc-details:hover {
|
|
526
612
|
border-top-color: transparent;
|
|
@@ -533,12 +619,10 @@ details.doc-details details.doc-details > summary {
|
|
|
533
619
|
border-radius: 0;
|
|
534
620
|
}
|
|
535
621
|
|
|
536
|
-
details.doc-details details.doc-details > summary:hover {
|
|
537
|
-
background: var(--colour-surface);
|
|
538
|
-
}
|
|
622
|
+
details.doc-details details.doc-details > summary:hover { background: var(--sv-raised); }
|
|
539
623
|
|
|
540
624
|
details.doc-details details.doc-details[open] > summary {
|
|
541
|
-
border-bottom: 1px dashed var(--
|
|
625
|
+
border-bottom: 1px dashed var(--sv-border);
|
|
542
626
|
border-radius: 0;
|
|
543
627
|
}
|
|
544
628
|
|
|
@@ -552,26 +636,26 @@ details.doc-details details.doc-details > .us-body {
|
|
|
552
636
|
/* Raw-JSON disclosure (dev-facing, quiet) */
|
|
553
637
|
details.raw-json {
|
|
554
638
|
margin-top: 1rem;
|
|
555
|
-
border-top: 1px dashed var(--
|
|
639
|
+
border-top: 1px dashed var(--sv-border);
|
|
556
640
|
padding-top: 0.75rem;
|
|
557
641
|
}
|
|
558
642
|
|
|
559
643
|
details.raw-json summary {
|
|
560
644
|
cursor: pointer;
|
|
561
|
-
color: var(--
|
|
645
|
+
color: var(--sv-muted);
|
|
562
646
|
font-size: 0.8125rem;
|
|
563
647
|
padding: 0.15rem 0;
|
|
564
648
|
}
|
|
565
649
|
|
|
566
|
-
details.raw-json summary:hover { color: var(--
|
|
650
|
+
details.raw-json summary:hover { color: var(--sv-link); }
|
|
567
651
|
|
|
568
652
|
details.raw-json pre {
|
|
569
|
-
background: var(--
|
|
653
|
+
background: var(--sv-raised);
|
|
570
654
|
padding: 0.85rem 1rem;
|
|
571
655
|
border-radius: var(--radius-sm);
|
|
572
656
|
overflow-x: auto;
|
|
573
657
|
font-size: 0.8rem;
|
|
574
|
-
border: 1px solid var(--
|
|
658
|
+
border: 1px solid var(--sv-border);
|
|
575
659
|
margin-top: 0.5rem;
|
|
576
660
|
}
|
|
577
661
|
|
|
@@ -580,27 +664,31 @@ details.raw-json pre {
|
|
|
580
664
|
* -------------------------------------------------------------------- */
|
|
581
665
|
|
|
582
666
|
a {
|
|
583
|
-
color: var(--
|
|
667
|
+
color: var(--sv-link);
|
|
584
668
|
text-decoration: none;
|
|
585
669
|
transition: color var(--t-fast);
|
|
586
670
|
}
|
|
587
671
|
|
|
588
672
|
a:hover {
|
|
589
|
-
color: var(--
|
|
673
|
+
color: var(--sv-hover);
|
|
590
674
|
text-decoration: underline;
|
|
591
675
|
text-underline-offset: 3px;
|
|
592
676
|
}
|
|
593
677
|
|
|
678
|
+
:where(a, button, input, select, summary, [tabindex]):focus-visible {
|
|
679
|
+
outline: 3px solid var(--sv-focus);
|
|
680
|
+
outline-offset: 2px;
|
|
681
|
+
}
|
|
682
|
+
|
|
594
683
|
code {
|
|
595
|
-
background: var(--
|
|
684
|
+
background: var(--sv-code);
|
|
596
685
|
padding: 0.12rem 0.35rem;
|
|
597
686
|
border-radius: 4px;
|
|
598
687
|
font-size: 0.875em;
|
|
599
|
-
font-family:
|
|
600
|
-
color:
|
|
688
|
+
font-family: var(--sv-mono);
|
|
689
|
+
color: var(--sv-link);
|
|
601
690
|
}
|
|
602
691
|
|
|
603
|
-
/* Status pill (compact, coloured by status) */
|
|
604
692
|
.status {
|
|
605
693
|
display: inline-block;
|
|
606
694
|
padding: 0.15rem 0.6rem;
|
|
@@ -613,33 +701,33 @@ code {
|
|
|
613
701
|
}
|
|
614
702
|
|
|
615
703
|
.status.notStarted {
|
|
616
|
-
color: var(--
|
|
617
|
-
background: var(--
|
|
618
|
-
border-color: var(--
|
|
704
|
+
color: var(--sv-muted);
|
|
705
|
+
background: var(--sv-raised);
|
|
706
|
+
border-color: var(--sv-border);
|
|
619
707
|
}
|
|
620
708
|
|
|
621
709
|
.status.inProgress {
|
|
622
|
-
color:
|
|
623
|
-
background:
|
|
624
|
-
border-color:
|
|
710
|
+
color: var(--sv-link);
|
|
711
|
+
background: var(--sv-active);
|
|
712
|
+
border-color: var(--sv-link);
|
|
625
713
|
}
|
|
626
714
|
|
|
627
715
|
.status.complete {
|
|
628
|
-
color:
|
|
629
|
-
background:
|
|
630
|
-
border-color:
|
|
716
|
+
color: var(--sv-success);
|
|
717
|
+
background: var(--sv-successbg);
|
|
718
|
+
border-color: var(--sv-success);
|
|
631
719
|
}
|
|
632
720
|
|
|
633
721
|
.status.verified {
|
|
634
|
-
color:
|
|
635
|
-
background:
|
|
636
|
-
border-color:
|
|
722
|
+
color: var(--sv-success);
|
|
723
|
+
background: var(--sv-successbg);
|
|
724
|
+
border-color: var(--sv-success);
|
|
637
725
|
}
|
|
638
726
|
|
|
639
727
|
.status.blocked {
|
|
640
|
-
color: var(--
|
|
641
|
-
background: var(--
|
|
642
|
-
border-color: var(--
|
|
728
|
+
color: var(--sv-danger);
|
|
729
|
+
background: var(--sv-dangerbg);
|
|
730
|
+
border-color: var(--sv-danger);
|
|
643
731
|
}
|
|
644
732
|
|
|
645
733
|
.status.draft,
|
|
@@ -650,38 +738,33 @@ code {
|
|
|
650
738
|
.status.deprecated,
|
|
651
739
|
.status.proposed,
|
|
652
740
|
.status.accepted {
|
|
653
|
-
color: var(--
|
|
654
|
-
background: var(--
|
|
655
|
-
border-color: var(--
|
|
741
|
+
color: var(--sv-muted);
|
|
742
|
+
background: var(--sv-raised);
|
|
743
|
+
border-color: var(--sv-border);
|
|
656
744
|
}
|
|
657
745
|
|
|
658
746
|
.status.approved,
|
|
659
|
-
.status.accepted { color:
|
|
747
|
+
.status.accepted { color: var(--sv-success); background: var(--sv-successbg); border-color: var(--sv-success); }
|
|
660
748
|
.status.deprecated,
|
|
661
|
-
.status.superseded { color: var(--
|
|
749
|
+
.status.superseded { color: var(--sv-muted); background: var(--sv-raised); border-color: var(--sv-border); }
|
|
662
750
|
|
|
663
|
-
/* Broken doc / tree error banner */
|
|
664
751
|
.broken {
|
|
665
|
-
background: var(--
|
|
666
|
-
border: 1px solid var(--
|
|
667
|
-
color: var(--
|
|
752
|
+
background: var(--sv-dangerbg);
|
|
753
|
+
border: 1px solid var(--sv-danger);
|
|
754
|
+
color: var(--sv-danger);
|
|
668
755
|
padding: 0.65rem 0.9rem;
|
|
669
756
|
border-radius: var(--radius-sm);
|
|
670
757
|
margin-bottom: 0.85rem;
|
|
671
758
|
}
|
|
672
759
|
|
|
673
|
-
.broken ul {
|
|
674
|
-
margin: 0.3rem 0 0 1.35rem;
|
|
675
|
-
}
|
|
760
|
+
.broken ul { margin: 0.3rem 0 0 1.35rem; }
|
|
676
761
|
|
|
677
|
-
.broken-doc {
|
|
678
|
-
border-left-color: var(--colour-broken-border);
|
|
679
|
-
}
|
|
762
|
+
.broken-doc { border-left-color: var(--sv-danger); }
|
|
680
763
|
|
|
681
764
|
.tree-errors {
|
|
682
|
-
background: var(--
|
|
683
|
-
border: 1px solid var(--
|
|
684
|
-
color: var(--
|
|
765
|
+
background: var(--sv-dangerbg);
|
|
766
|
+
border: 1px solid var(--sv-danger);
|
|
767
|
+
color: var(--sv-danger);
|
|
685
768
|
padding: 1.1rem 1.35rem;
|
|
686
769
|
border-radius: var(--radius-md);
|
|
687
770
|
margin-bottom: 2rem;
|
|
@@ -692,7 +775,7 @@ code {
|
|
|
692
775
|
margin: 0 0 0.5rem;
|
|
693
776
|
font-size: 1.15rem;
|
|
694
777
|
font-weight: 700;
|
|
695
|
-
color: var(--
|
|
778
|
+
color: var(--sv-danger);
|
|
696
779
|
border: none;
|
|
697
780
|
padding: 0;
|
|
698
781
|
}
|
|
@@ -701,27 +784,72 @@ code {
|
|
|
701
784
|
* Footer
|
|
702
785
|
* -------------------------------------------------------------------- */
|
|
703
786
|
|
|
704
|
-
footer
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
787
|
+
/* Shell footer: one compact muted line - version, GitHub, docs
|
|
788
|
+
links (new tab, rel="noopener", never target="_top") and the
|
|
789
|
+
live-update pill as the current viewer's connection dot. Hidden
|
|
790
|
+
under data-embed="1" per the Dex / wespa contract. */
|
|
791
|
+
footer.app-footer {
|
|
792
|
+
max-width: 1280px;
|
|
793
|
+
width: 100%;
|
|
794
|
+
margin: 0 auto;
|
|
795
|
+
padding: 0.55rem 1rem;
|
|
796
|
+
border-top: 1px solid var(--sv-border);
|
|
797
|
+
color: var(--sv-muted);
|
|
798
|
+
font-size: 0.78rem;
|
|
799
|
+
flex-shrink: 0;
|
|
800
|
+
display: flex;
|
|
801
|
+
align-items: center;
|
|
802
|
+
flex-wrap: wrap;
|
|
803
|
+
gap: 0.6rem;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
footer.app-footer a {
|
|
807
|
+
color: var(--sv-link);
|
|
808
|
+
text-decoration: none;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
footer.app-footer a:hover { text-decoration: underline; }
|
|
812
|
+
|
|
813
|
+
footer.app-footer .sep { color: var(--sv-control); }
|
|
814
|
+
|
|
815
|
+
footer.app-footer .live {
|
|
816
|
+
margin-left: auto;
|
|
817
|
+
display: inline-flex;
|
|
818
|
+
align-items: center;
|
|
819
|
+
gap: 0.4rem;
|
|
820
|
+
padding: 0.2rem 0.55rem;
|
|
821
|
+
border: 1px solid var(--sv-control);
|
|
822
|
+
border-radius: 999px;
|
|
823
|
+
background: var(--sv-raised);
|
|
824
|
+
white-space: nowrap;
|
|
825
|
+
color: var(--sv-muted);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
footer.app-footer .live .dot {
|
|
829
|
+
width: 8px;
|
|
830
|
+
height: 8px;
|
|
831
|
+
border-radius: 50%;
|
|
832
|
+
background: #4c9a2a;
|
|
833
|
+
display: inline-block;
|
|
710
834
|
}
|
|
711
835
|
|
|
836
|
+
footer.app-footer .live.reconnecting .dot { background: #d68f00; }
|
|
837
|
+
footer.app-footer .live.disconnected .dot { background: #b03a2e; }
|
|
838
|
+
|
|
712
839
|
/* --------------------------------------------------------------------
|
|
713
840
|
* Print
|
|
714
841
|
* -------------------------------------------------------------------- */
|
|
715
842
|
|
|
716
843
|
@media print {
|
|
717
|
-
body {
|
|
844
|
+
html, body { height: auto; }
|
|
845
|
+
body { max-width: none; padding: 0; display: block; }
|
|
846
|
+
header.app-header { position: static; border: none; }
|
|
718
847
|
nav.tabs { display: none; }
|
|
719
848
|
section[role="tabpanel"][hidden] { display: block !important; }
|
|
720
849
|
pre.mermaid { page-break-inside: avoid; }
|
|
721
850
|
article.doc { page-break-inside: avoid; box-shadow: none; }
|
|
722
851
|
details.doc-details { break-inside: avoid; box-shadow: none; }
|
|
723
852
|
details.doc-details[open] > summary { border: none; }
|
|
724
|
-
header h1::before { display: none; }
|
|
725
853
|
}
|
|
726
854
|
|
|
727
855
|
/* --------------------------------------------------------------------
|
|
@@ -729,9 +857,13 @@ footer {
|
|
|
729
857
|
* -------------------------------------------------------------------- */
|
|
730
858
|
|
|
731
859
|
@media (max-width: 720px) {
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
860
|
+
header.app-header .bar { flex-wrap: wrap; gap: 0.75rem; padding: 0.5rem 0.75rem 0; }
|
|
861
|
+
.product { flex: 1; }
|
|
862
|
+
.product .sub { display: none; }
|
|
863
|
+
/* Narrow: tabs wrap beneath the bar as their own full-width row. */
|
|
864
|
+
nav.tabs { order: 3; flex: 1 1 100%; margin-left: 0; }
|
|
865
|
+
nav.tabs button { padding: 0 0.65rem; font-size: 0.9rem; }
|
|
866
|
+
main { padding: 1rem 0.75rem 2rem; }
|
|
735
867
|
article.doc { padding: 1rem 1.15rem; }
|
|
736
868
|
details.doc-details > article,
|
|
737
869
|
details.doc-details > section,
|
|
@@ -741,19 +873,6 @@ footer {
|
|
|
741
873
|
|
|
742
874
|
/* --------------------------------------------------------------------
|
|
743
875
|
* Deep-link scope overlay (w-2026-08-30-dave-020)
|
|
744
|
-
*
|
|
745
|
-
* When body.rcf-scoped is present the client has applied a URL-driven
|
|
746
|
-
* scope (blueprint / node). Everything inside #rcf-live-content is
|
|
747
|
-
* dimmed except:
|
|
748
|
-
* - .rcf-in-scope a doc that IS in the scope set
|
|
749
|
-
* - .rcf-scope-ancestor an ancestor of an in-scope doc (kept full
|
|
750
|
-
* strength so the drill-down chain is legible)
|
|
751
|
-
* - .rcf-customised an in-scope doc whose bytes differ from
|
|
752
|
-
* the shipping blueprint source (a project
|
|
753
|
-
* customisation over the applied contribution)
|
|
754
|
-
*
|
|
755
|
-
* Left visible-but-dimmed rather than hidden so the reader can see
|
|
756
|
-
* where in the tree the scoped set sits.
|
|
757
876
|
* -------------------------------------------------------------------- */
|
|
758
877
|
|
|
759
878
|
body.rcf-scoped #rcf-live-content [data-doc-id]:not(.rcf-in-scope):not(.rcf-scope-ancestor) {
|
|
@@ -762,38 +881,32 @@ body.rcf-scoped #rcf-live-content [data-doc-id]:not(.rcf-in-scope):not(.rcf-scop
|
|
|
762
881
|
}
|
|
763
882
|
body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope {
|
|
764
883
|
opacity: 1;
|
|
765
|
-
outline: 2px solid
|
|
884
|
+
outline: 2px solid var(--sv-success);
|
|
766
885
|
outline-offset: 2px;
|
|
767
886
|
}
|
|
768
887
|
body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
769
|
-
outline-color:
|
|
770
|
-
box-shadow: 0 0 0 3px
|
|
888
|
+
outline-color: var(--sv-warning);
|
|
889
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--sv-warning) 20%, transparent);
|
|
771
890
|
}
|
|
772
891
|
|
|
773
892
|
#rcf-scope-banner {
|
|
774
893
|
margin: 0 0 1rem;
|
|
775
894
|
padding: 0.5rem 0.8rem;
|
|
776
|
-
border: 1px solid
|
|
777
|
-
background:
|
|
778
|
-
color:
|
|
895
|
+
border: 1px solid var(--sv-warning);
|
|
896
|
+
background: var(--sv-warningbg);
|
|
897
|
+
color: var(--sv-warning);
|
|
779
898
|
font-size: 0.9rem;
|
|
780
899
|
border-radius: 4px;
|
|
781
900
|
}
|
|
782
|
-
#rcf-scope-banner a { color:
|
|
901
|
+
#rcf-scope-banner a { color: var(--sv-danger); text-decoration: underline; }
|
|
783
902
|
|
|
784
903
|
/* --------------------------------------------------------------------
|
|
785
904
|
* Product Map tab (REQ-170, US-17001..17007)
|
|
786
|
-
*
|
|
787
|
-
* Controls, jump nav, bucket cards, status mini pills, empty rollup.
|
|
788
|
-
* Language is the viewer's existing indigo + rounded + soft-shadow
|
|
789
|
-
* tokens; no new palette entries, so light and dark stay coherent. The
|
|
790
|
-
* layout is single-column at the max page width the viewer uses
|
|
791
|
-
* elsewhere (80rem); mobile is not the target (never breaks at 1024px).
|
|
792
905
|
* -------------------------------------------------------------------- */
|
|
793
906
|
|
|
794
907
|
.pm-controls {
|
|
795
908
|
position: sticky;
|
|
796
|
-
top:
|
|
909
|
+
top: 3rem;
|
|
797
910
|
z-index: 5;
|
|
798
911
|
display: flex;
|
|
799
912
|
flex-wrap: wrap;
|
|
@@ -801,20 +914,20 @@ body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
|
801
914
|
gap: 0.75rem 1rem;
|
|
802
915
|
padding: 0.6rem 0.9rem;
|
|
803
916
|
margin: 0 0 1.1rem;
|
|
804
|
-
background:
|
|
805
|
-
|
|
806
|
-
-webkit-backdrop-filter: saturate(180%) blur(8px);
|
|
807
|
-
border: 1px solid var(--colour-border);
|
|
917
|
+
background: var(--sv-surface);
|
|
918
|
+
border: 1px solid var(--sv-border);
|
|
808
919
|
border-radius: var(--radius-md);
|
|
809
920
|
box-shadow: var(--shadow-sm);
|
|
810
921
|
}
|
|
811
922
|
|
|
923
|
+
html[data-embed="1"] .pm-controls { top: 3rem; }
|
|
924
|
+
|
|
812
925
|
.pm-group-tabs {
|
|
813
926
|
display: inline-flex;
|
|
814
927
|
gap: 0.15rem;
|
|
815
928
|
padding: 0.2rem;
|
|
816
|
-
background: var(--
|
|
817
|
-
border: 1px solid var(--
|
|
929
|
+
background: var(--sv-raised);
|
|
930
|
+
border: 1px solid var(--sv-border);
|
|
818
931
|
border-radius: var(--radius-md);
|
|
819
932
|
}
|
|
820
933
|
|
|
@@ -822,7 +935,7 @@ body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
|
822
935
|
appearance: none;
|
|
823
936
|
border: 1px solid transparent;
|
|
824
937
|
background: transparent;
|
|
825
|
-
color: var(--
|
|
938
|
+
color: var(--sv-muted);
|
|
826
939
|
font-family: inherit;
|
|
827
940
|
font-size: 0.9rem;
|
|
828
941
|
font-weight: 500;
|
|
@@ -833,52 +946,42 @@ body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
|
833
946
|
}
|
|
834
947
|
|
|
835
948
|
.pm-group-btn:hover {
|
|
836
|
-
color: var(--
|
|
837
|
-
background: var(--
|
|
949
|
+
color: var(--sv-ink);
|
|
950
|
+
background: var(--sv-surface);
|
|
838
951
|
}
|
|
839
952
|
|
|
840
953
|
.pm-group-btn[aria-selected="true"] {
|
|
841
|
-
background: var(--
|
|
842
|
-
color: var(--
|
|
954
|
+
background: var(--sv-surface);
|
|
955
|
+
color: var(--sv-ink);
|
|
843
956
|
font-weight: 600;
|
|
844
957
|
box-shadow: var(--shadow-sm);
|
|
845
|
-
border-color: var(--
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
.pm-group-btn:focus-visible {
|
|
849
|
-
outline: 2px solid var(--colour-accent);
|
|
850
|
-
outline-offset: 2px;
|
|
958
|
+
border-color: var(--sv-border);
|
|
851
959
|
}
|
|
852
960
|
|
|
853
961
|
.pm-status-filter {
|
|
854
962
|
display: inline-flex;
|
|
855
963
|
align-items: center;
|
|
856
964
|
gap: 0.5rem;
|
|
857
|
-
color: var(--
|
|
965
|
+
color: var(--sv-muted);
|
|
858
966
|
font-size: 0.85rem;
|
|
859
967
|
}
|
|
860
968
|
|
|
861
969
|
.pm-status-select {
|
|
862
970
|
appearance: none;
|
|
863
971
|
-webkit-appearance: none;
|
|
864
|
-
border: 1px solid var(--
|
|
972
|
+
border: 1px solid var(--sv-control);
|
|
865
973
|
border-radius: var(--radius-sm);
|
|
866
|
-
background: var(--
|
|
974
|
+
background: var(--sv-surface);
|
|
867
975
|
padding: 0.35rem 2rem 0.35rem 0.75rem;
|
|
868
976
|
font-family: inherit;
|
|
869
977
|
font-size: 0.9rem;
|
|
870
|
-
color: var(--
|
|
978
|
+
color: var(--sv-ink);
|
|
871
979
|
cursor: pointer;
|
|
872
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12'%3E%3Cpath fill='%
|
|
980
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12'%3E%3Cpath fill='%23738198' d='M2 4l4 4 4-4z'/%3E%3C/svg%3E");
|
|
873
981
|
background-repeat: no-repeat;
|
|
874
982
|
background-position: right 0.55rem center;
|
|
875
983
|
}
|
|
876
984
|
|
|
877
|
-
.pm-status-select:focus-visible {
|
|
878
|
-
outline: 2px solid var(--colour-accent);
|
|
879
|
-
outline-offset: 2px;
|
|
880
|
-
}
|
|
881
|
-
|
|
882
985
|
.pm-bulk {
|
|
883
986
|
display: inline-flex;
|
|
884
987
|
gap: 0.4rem;
|
|
@@ -887,9 +990,9 @@ body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
|
887
990
|
|
|
888
991
|
.pm-bulk-btn {
|
|
889
992
|
appearance: none;
|
|
890
|
-
border: 1px solid var(--
|
|
891
|
-
background: var(--
|
|
892
|
-
color: var(--
|
|
993
|
+
border: 1px solid var(--sv-border);
|
|
994
|
+
background: var(--sv-surface);
|
|
995
|
+
color: var(--sv-muted);
|
|
893
996
|
font-family: inherit;
|
|
894
997
|
font-size: 0.8rem;
|
|
895
998
|
font-weight: 500;
|
|
@@ -900,18 +1003,17 @@ body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
|
900
1003
|
}
|
|
901
1004
|
|
|
902
1005
|
.pm-bulk-btn:hover {
|
|
903
|
-
color: var(--
|
|
904
|
-
background: var(--
|
|
905
|
-
border-color: var(--
|
|
1006
|
+
color: var(--sv-ink);
|
|
1007
|
+
background: var(--sv-active);
|
|
1008
|
+
border-color: var(--sv-link);
|
|
906
1009
|
}
|
|
907
1010
|
|
|
908
|
-
/* Grouping heading and jump nav */
|
|
909
1011
|
.pm-group-heading {
|
|
910
1012
|
font-size: 0.8rem;
|
|
911
1013
|
font-weight: 600;
|
|
912
1014
|
text-transform: uppercase;
|
|
913
1015
|
letter-spacing: 0.06em;
|
|
914
|
-
color: var(--
|
|
1016
|
+
color: var(--sv-muted);
|
|
915
1017
|
margin: 0.5rem 0 0.75rem;
|
|
916
1018
|
}
|
|
917
1019
|
|
|
@@ -921,16 +1023,16 @@ body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
|
921
1023
|
gap: 0.35rem;
|
|
922
1024
|
padding: 0.55rem 0.7rem;
|
|
923
1025
|
margin-bottom: 1rem;
|
|
924
|
-
background: var(--
|
|
925
|
-
border: 1px solid var(--
|
|
1026
|
+
background: var(--sv-raised);
|
|
1027
|
+
border: 1px solid var(--sv-border);
|
|
926
1028
|
border-radius: var(--radius-md);
|
|
927
1029
|
}
|
|
928
1030
|
|
|
929
1031
|
.pm-jump-chip {
|
|
930
1032
|
appearance: none;
|
|
931
|
-
border: 1px solid var(--
|
|
932
|
-
background: var(--
|
|
933
|
-
color: var(--
|
|
1033
|
+
border: 1px solid var(--sv-border);
|
|
1034
|
+
background: var(--sv-surface);
|
|
1035
|
+
color: var(--sv-ink);
|
|
934
1036
|
padding: 0.25rem 0.65rem;
|
|
935
1037
|
border-radius: 999px;
|
|
936
1038
|
font-family: inherit;
|
|
@@ -945,9 +1047,9 @@ body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
|
945
1047
|
}
|
|
946
1048
|
|
|
947
1049
|
.pm-jump-chip:hover {
|
|
948
|
-
background: var(--
|
|
949
|
-
border-color:
|
|
950
|
-
color: var(--
|
|
1050
|
+
background: var(--sv-active);
|
|
1051
|
+
border-color: var(--sv-link);
|
|
1052
|
+
color: var(--sv-hover);
|
|
951
1053
|
}
|
|
952
1054
|
|
|
953
1055
|
.pm-jump-chip .pm-jump-label {
|
|
@@ -957,27 +1059,21 @@ body.rcf-scoped #rcf-live-content [data-doc-id].rcf-in-scope.rcf-customised {
|
|
|
957
1059
|
}
|
|
958
1060
|
|
|
959
1061
|
.pm-jump-chip .pm-jump-count {
|
|
960
|
-
color: var(--
|
|
1062
|
+
color: var(--sv-muted);
|
|
961
1063
|
font-variant-numeric: tabular-nums;
|
|
962
1064
|
font-size: 0.75rem;
|
|
963
1065
|
}
|
|
964
1066
|
|
|
965
|
-
.pm-jump-chip:focus-visible {
|
|
966
|
-
outline: 2px solid var(--colour-accent);
|
|
967
|
-
outline-offset: 2px;
|
|
968
|
-
}
|
|
969
|
-
|
|
970
|
-
/* Buckets: <details class="pm-bucket"> */
|
|
971
1067
|
details.pm-bucket {
|
|
972
|
-
border: 1px solid var(--
|
|
1068
|
+
border: 1px solid var(--sv-border);
|
|
973
1069
|
border-radius: var(--radius-md);
|
|
974
|
-
background: var(--
|
|
1070
|
+
background: var(--sv-surface);
|
|
975
1071
|
box-shadow: var(--shadow-sm);
|
|
976
1072
|
margin-bottom: 0.6rem;
|
|
977
1073
|
transition: box-shadow var(--t-med), border-color var(--t-med);
|
|
978
1074
|
}
|
|
979
1075
|
|
|
980
|
-
details.pm-bucket:hover { border-color: var(--
|
|
1076
|
+
details.pm-bucket:hover { border-color: var(--sv-control); }
|
|
981
1077
|
details.pm-bucket[open] { box-shadow: var(--shadow-md); }
|
|
982
1078
|
|
|
983
1079
|
details.pm-bucket > summary.pm-bucket-heading {
|
|
@@ -988,33 +1084,30 @@ details.pm-bucket > summary.pm-bucket-heading {
|
|
|
988
1084
|
align-items: center;
|
|
989
1085
|
gap: 0.65rem;
|
|
990
1086
|
border-radius: var(--radius-md);
|
|
991
|
-
color: var(--
|
|
1087
|
+
color: var(--sv-ink);
|
|
992
1088
|
font-weight: 600;
|
|
993
1089
|
font-size: 0.95rem;
|
|
994
1090
|
}
|
|
995
1091
|
|
|
996
1092
|
details.pm-bucket > summary.pm-bucket-heading::-webkit-details-marker { display: none; }
|
|
997
1093
|
|
|
998
|
-
/* Custom chevron matching the doc-details drilldowns */
|
|
999
1094
|
details.pm-bucket > summary.pm-bucket-heading::before {
|
|
1000
1095
|
content: '';
|
|
1001
1096
|
display: inline-block;
|
|
1002
1097
|
width: 0.6rem;
|
|
1003
1098
|
height: 0.6rem;
|
|
1004
|
-
border-right: 2px solid var(--
|
|
1005
|
-
border-bottom: 2px solid var(--
|
|
1099
|
+
border-right: 2px solid var(--sv-control);
|
|
1100
|
+
border-bottom: 2px solid var(--sv-control);
|
|
1006
1101
|
transform: rotate(-45deg);
|
|
1007
1102
|
transition: transform var(--t-fast);
|
|
1008
1103
|
flex-shrink: 0;
|
|
1009
1104
|
}
|
|
1010
1105
|
|
|
1011
|
-
details.pm-bucket[open] > summary.pm-bucket-heading::before {
|
|
1012
|
-
transform: rotate(45deg);
|
|
1013
|
-
}
|
|
1106
|
+
details.pm-bucket[open] > summary.pm-bucket-heading::before { transform: rotate(45deg); }
|
|
1014
1107
|
|
|
1015
1108
|
details.pm-bucket[open] > summary.pm-bucket-heading {
|
|
1016
1109
|
border-radius: var(--radius-md) var(--radius-md) 0 0;
|
|
1017
|
-
border-bottom: 1px solid var(--
|
|
1110
|
+
border-bottom: 1px solid var(--sv-border);
|
|
1018
1111
|
}
|
|
1019
1112
|
|
|
1020
1113
|
.pm-bucket-label {
|
|
@@ -1026,14 +1119,12 @@ details.pm-bucket[open] > summary.pm-bucket-heading {
|
|
|
1026
1119
|
}
|
|
1027
1120
|
|
|
1028
1121
|
.pm-bucket-count {
|
|
1029
|
-
color: var(--
|
|
1122
|
+
color: var(--sv-muted);
|
|
1030
1123
|
font-weight: 500;
|
|
1031
1124
|
font-variant-numeric: tabular-nums;
|
|
1032
1125
|
}
|
|
1033
1126
|
|
|
1034
|
-
.pm-bucket-anchor {
|
|
1035
|
-
display: none;
|
|
1036
|
-
}
|
|
1127
|
+
.pm-bucket-anchor { display: none; }
|
|
1037
1128
|
|
|
1038
1129
|
.pm-mini-row {
|
|
1039
1130
|
display: inline-flex;
|
|
@@ -1050,38 +1141,32 @@ details.pm-bucket[open] > summary.pm-bucket-heading {
|
|
|
1050
1141
|
font-size: 0.72rem;
|
|
1051
1142
|
font-weight: 600;
|
|
1052
1143
|
text-align: center;
|
|
1053
|
-
color: var(--
|
|
1054
|
-
background: var(--
|
|
1055
|
-
border: 1px solid var(--
|
|
1144
|
+
color: var(--sv-muted);
|
|
1145
|
+
background: var(--sv-raised);
|
|
1146
|
+
border: 1px solid var(--sv-border);
|
|
1056
1147
|
font-variant-numeric: tabular-nums;
|
|
1057
1148
|
}
|
|
1058
1149
|
|
|
1059
|
-
.pm-mini-approved { color:
|
|
1060
|
-
.pm-mini-review { color:
|
|
1061
|
-
.pm-mini-draft { color: var(--
|
|
1062
|
-
.pm-mini-needsRevision { color: var(--
|
|
1063
|
-
.pm-mini-superseded { color: var(--
|
|
1064
|
-
|
|
1065
|
-
.pm-bucket-body {
|
|
1066
|
-
padding: 0.75rem 1rem 1rem;
|
|
1067
|
-
}
|
|
1150
|
+
.pm-mini-approved { color: var(--sv-success); background: var(--sv-successbg); border-color: var(--sv-success); }
|
|
1151
|
+
.pm-mini-review { color: var(--sv-link); background: var(--sv-active); border-color: var(--sv-link); }
|
|
1152
|
+
.pm-mini-draft { color: var(--sv-muted); background: var(--sv-raised); border-color: var(--sv-border); }
|
|
1153
|
+
.pm-mini-needsRevision { color: var(--sv-danger); background: var(--sv-dangerbg); border-color: var(--sv-danger); }
|
|
1154
|
+
.pm-mini-superseded { color: var(--sv-control); background: var(--sv-raised); border-color: var(--sv-border); }
|
|
1068
1155
|
|
|
1156
|
+
.pm-bucket-body { padding: 0.75rem 1rem 1rem; }
|
|
1069
1157
|
.pm-bucket-body .pm-tad-root { margin-bottom: 0.65rem; }
|
|
1070
1158
|
|
|
1071
1159
|
.pm-bucket-empty {
|
|
1072
|
-
color: var(--
|
|
1160
|
+
color: var(--sv-muted);
|
|
1073
1161
|
font-size: 0.85rem;
|
|
1074
1162
|
}
|
|
1075
1163
|
|
|
1076
|
-
|
|
1077
|
-
.pm-empty-roll {
|
|
1078
|
-
margin-bottom: 0.75rem;
|
|
1079
|
-
}
|
|
1164
|
+
.pm-empty-roll { margin-bottom: 0.75rem; }
|
|
1080
1165
|
.pm-empty-toggle {
|
|
1081
1166
|
appearance: none;
|
|
1082
|
-
border: 1px dashed var(--
|
|
1083
|
-
background: var(--
|
|
1084
|
-
color: var(--
|
|
1167
|
+
border: 1px dashed var(--sv-control);
|
|
1168
|
+
background: var(--sv-raised);
|
|
1169
|
+
color: var(--sv-muted);
|
|
1085
1170
|
padding: 0.4rem 0.8rem;
|
|
1086
1171
|
border-radius: var(--radius-sm);
|
|
1087
1172
|
font-family: inherit;
|
|
@@ -1090,28 +1175,22 @@ details.pm-bucket[open] > summary.pm-bucket-heading {
|
|
|
1090
1175
|
cursor: pointer;
|
|
1091
1176
|
}
|
|
1092
1177
|
.pm-empty-toggle:hover {
|
|
1093
|
-
color: var(--
|
|
1094
|
-
background: var(--
|
|
1178
|
+
color: var(--sv-ink);
|
|
1179
|
+
background: var(--sv-active);
|
|
1095
1180
|
}
|
|
1096
1181
|
|
|
1097
|
-
|
|
1098
|
-
.pm-group.pm-hide-empty details.pm-bucket[data-pm-empty-under-filter="true"] {
|
|
1099
|
-
display: none;
|
|
1100
|
-
}
|
|
1182
|
+
.pm-group.pm-hide-empty details.pm-bucket[data-pm-empty-under-filter="true"] { display: none; }
|
|
1101
1183
|
|
|
1102
|
-
/* Loading state */
|
|
1103
1184
|
.pm-group[data-pm-loading="true"] .pm-jump-nav::after {
|
|
1104
1185
|
content: 'Loading grouping...';
|
|
1105
|
-
color: var(--
|
|
1186
|
+
color: var(--sv-muted);
|
|
1106
1187
|
font-size: 0.8rem;
|
|
1107
1188
|
margin-left: 0.5rem;
|
|
1108
1189
|
}
|
|
1109
1190
|
|
|
1110
|
-
/* Compact spacing for nested pm-req cards inside a bucket body */
|
|
1111
1191
|
.pm-bucket-body details.doc-req-wrap.pm-req { margin-bottom: 0.5rem; }
|
|
1112
1192
|
.pm-bucket-body .pm-comp-story details.doc-us-wrap.pm-us { margin-bottom: 0.5rem; }
|
|
1113
1193
|
|
|
1114
|
-
/* Print: reveal every bucket */
|
|
1115
1194
|
@media print {
|
|
1116
1195
|
details.pm-bucket { break-inside: avoid; box-shadow: none; }
|
|
1117
1196
|
details.pm-bucket[open] > summary.pm-bucket-heading { border-bottom: none; }
|
|
@@ -1119,10 +1198,6 @@ details.pm-bucket[open] > summary.pm-bucket-heading {
|
|
|
1119
1198
|
.pm-jump-nav { display: none; }
|
|
1120
1199
|
}
|
|
1121
1200
|
|
|
1122
|
-
/* Blueprint badge (AC-17008-1). Rendered inside every pm-req summary
|
|
1123
|
-
whose REQ came from an applied blueprint, and inside pm-req-parent
|
|
1124
|
-
lines. Compact, low-contrast pill so it reads as attribution rather
|
|
1125
|
-
than status. */
|
|
1126
1201
|
.pm-blueprint-badge {
|
|
1127
1202
|
display: inline-block;
|
|
1128
1203
|
margin-left: 0.4rem;
|
|
@@ -1130,31 +1205,1591 @@ details.pm-bucket[open] > summary.pm-bucket-heading {
|
|
|
1130
1205
|
border-radius: 999px;
|
|
1131
1206
|
font-size: 0.68rem;
|
|
1132
1207
|
font-weight: 600;
|
|
1133
|
-
color: var(--
|
|
1134
|
-
background: var(--
|
|
1135
|
-
border: 1px solid var(--
|
|
1208
|
+
color: var(--sv-muted);
|
|
1209
|
+
background: var(--sv-raised);
|
|
1210
|
+
border: 1px solid var(--sv-border);
|
|
1136
1211
|
font-variant-numeric: tabular-nums;
|
|
1137
1212
|
letter-spacing: 0.01em;
|
|
1138
1213
|
vertical-align: baseline;
|
|
1139
1214
|
text-transform: none;
|
|
1140
1215
|
}
|
|
1141
1216
|
|
|
1142
|
-
.pm-blueprint-cap {
|
|
1143
|
-
margin: 0.85rem 0 0.25rem;
|
|
1144
|
-
}
|
|
1217
|
+
.pm-blueprint-cap { margin: 0.85rem 0 0.25rem; }
|
|
1145
1218
|
.pm-blueprint-cap-heading {
|
|
1146
1219
|
margin: 0 0 0.35rem;
|
|
1147
1220
|
font-size: 0.85rem;
|
|
1148
1221
|
font-weight: 600;
|
|
1149
|
-
color: var(--
|
|
1222
|
+
color: var(--sv-muted);
|
|
1150
1223
|
text-transform: uppercase;
|
|
1151
1224
|
letter-spacing: 0.03em;
|
|
1152
1225
|
}
|
|
1153
1226
|
.pm-blueprint-cap-count {
|
|
1154
1227
|
font-weight: 500;
|
|
1155
|
-
color: var(--
|
|
1228
|
+
color: var(--sv-control);
|
|
1156
1229
|
margin-left: 0.25rem;
|
|
1157
1230
|
}
|
|
1158
|
-
.pm-blueprint-cap-body {
|
|
1159
|
-
|
|
1231
|
+
.pm-blueprint-cap-body { display: block; }
|
|
1232
|
+
|
|
1233
|
+
/* --------------------------------------------------------------------
|
|
1234
|
+
* Viewer UI refresh PR 2 (w-2026-10-02-dave-010): shared component
|
|
1235
|
+
* stylesheet. Mounted alongside the pre-existing selectors so each
|
|
1236
|
+
* component (DocRow, FilterBar, Badge, EmptyState, Toast, SubTabStrip)
|
|
1237
|
+
* can be mounted by later tabs without touching the base rules.
|
|
1238
|
+
* Compact density is a requirement, not a default - the paddings here
|
|
1239
|
+
* are deliberately tighter than the pre-PR-1 shell (decision 13).
|
|
1240
|
+
* -------------------------------------------------------------------- */
|
|
1241
|
+
|
|
1242
|
+
/* DocRow (replaces details.doc-details under the new component model;
|
|
1243
|
+
old and new coexist until each tab is cut over, PRs 3-6). */
|
|
1244
|
+
details.rcf-row {
|
|
1245
|
+
background: var(--sv-surface);
|
|
1246
|
+
border: 1px solid var(--sv-border);
|
|
1247
|
+
border-radius: var(--radius-md);
|
|
1248
|
+
margin-bottom: 0.4rem;
|
|
1249
|
+
box-shadow: var(--shadow-sm);
|
|
1250
|
+
transition: box-shadow var(--t-med), border-color var(--t-med);
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
details.rcf-row:hover { border-color: var(--sv-control); }
|
|
1254
|
+
details.rcf-row[open] { box-shadow: var(--shadow-md); }
|
|
1255
|
+
details.rcf-row[hidden] { display: none; }
|
|
1256
|
+
|
|
1257
|
+
details.rcf-row > summary {
|
|
1258
|
+
list-style: none;
|
|
1259
|
+
cursor: pointer;
|
|
1260
|
+
padding: 0.55rem 0.75rem;
|
|
1261
|
+
display: flex;
|
|
1262
|
+
align-items: center;
|
|
1263
|
+
gap: 0.6rem;
|
|
1264
|
+
border-radius: var(--radius-md);
|
|
1265
|
+
color: var(--sv-ink);
|
|
1266
|
+
font-weight: 500;
|
|
1267
|
+
transition: background var(--t-fast);
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
details.rcf-row > summary::-webkit-details-marker { display: none; }
|
|
1271
|
+
|
|
1272
|
+
details.rcf-row > summary::before {
|
|
1273
|
+
content: '';
|
|
1274
|
+
display: inline-block;
|
|
1275
|
+
width: 0.45rem;
|
|
1276
|
+
height: 0.45rem;
|
|
1277
|
+
border-right: 2px solid var(--sv-control);
|
|
1278
|
+
border-bottom: 2px solid var(--sv-control);
|
|
1279
|
+
transform: rotate(-45deg);
|
|
1280
|
+
transition: transform var(--t-fast);
|
|
1281
|
+
flex-shrink: 0;
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
details.rcf-row[open] > summary::before { transform: rotate(45deg); }
|
|
1285
|
+
|
|
1286
|
+
details.rcf-row > summary:hover { background: var(--sv-raised); }
|
|
1287
|
+
|
|
1288
|
+
details.rcf-row > summary .id {
|
|
1289
|
+
font-family: var(--sv-mono);
|
|
1290
|
+
font-size: 0.85rem;
|
|
1291
|
+
color: var(--sv-link);
|
|
1292
|
+
flex-shrink: 0;
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
details.rcf-row > summary .title {
|
|
1296
|
+
flex: 1 1 auto;
|
|
1297
|
+
min-width: 0;
|
|
1298
|
+
overflow: hidden;
|
|
1299
|
+
text-overflow: ellipsis;
|
|
1300
|
+
white-space: nowrap;
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
details.rcf-row > summary .meta {
|
|
1304
|
+
display: flex;
|
|
1305
|
+
flex-wrap: wrap;
|
|
1306
|
+
gap: 0.3rem;
|
|
1307
|
+
align-items: center;
|
|
1308
|
+
flex-shrink: 0;
|
|
1309
|
+
margin-left: auto;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
details.rcf-row[open] > summary {
|
|
1313
|
+
border-radius: var(--radius-md) var(--radius-md) 0 0;
|
|
1314
|
+
border-bottom: 1px solid var(--sv-border);
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
details.rcf-row > .rcf-row-body {
|
|
1318
|
+
padding: 0.65rem 0.9rem 0.85rem 1.95rem;
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
details.rcf-row > .rcf-row-body > p:first-child { margin-top: 0; }
|
|
1322
|
+
details.rcf-row > .rcf-row-body > p:last-child { margin-bottom: 0; }
|
|
1323
|
+
|
|
1324
|
+
/* Badge: count / facet / accent variants. */
|
|
1325
|
+
.rcf-badge {
|
|
1326
|
+
display: inline-flex;
|
|
1327
|
+
align-items: baseline;
|
|
1328
|
+
gap: 0.3rem;
|
|
1329
|
+
padding: 0 0.5rem;
|
|
1330
|
+
min-height: 1.1rem;
|
|
1331
|
+
border-radius: 0.3rem;
|
|
1332
|
+
font-size: 0.72rem;
|
|
1333
|
+
font-weight: 700;
|
|
1334
|
+
border: 1px solid var(--sv-border);
|
|
1335
|
+
background: var(--sv-raised);
|
|
1336
|
+
color: var(--sv-muted);
|
|
1337
|
+
white-space: nowrap;
|
|
1338
|
+
font-variant-numeric: tabular-nums;
|
|
1339
|
+
line-height: 1.4;
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
.rcf-badge .rcf-badge-label {
|
|
1343
|
+
color: var(--sv-muted);
|
|
1344
|
+
font-weight: 500;
|
|
1345
|
+
text-transform: uppercase;
|
|
1346
|
+
letter-spacing: 0.04em;
|
|
1347
|
+
font-size: 0.65rem;
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
.rcf-badge .rcf-badge-value {
|
|
1351
|
+
color: var(--sv-ink);
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1354
|
+
.rcf-badge--facet {
|
|
1355
|
+
background: var(--sv-raised);
|
|
1356
|
+
color: var(--sv-ink);
|
|
1357
|
+
border-color: var(--sv-border);
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
.rcf-badge--facet .rcf-badge-value {
|
|
1361
|
+
color: var(--sv-ink);
|
|
1362
|
+
font-weight: 600;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
.rcf-badge--accent {
|
|
1366
|
+
background: var(--sv-active);
|
|
1367
|
+
border-color: var(--sv-link);
|
|
1368
|
+
color: var(--sv-link);
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
.rcf-badge--accent .rcf-badge-label { color: var(--sv-link); }
|
|
1372
|
+
.rcf-badge--accent .rcf-badge-value { color: var(--sv-link); }
|
|
1373
|
+
|
|
1374
|
+
/* FilterBar: sticky under the tabstrip, inline controls with a right-
|
|
1375
|
+
hand live count and an Expand all affordance. */
|
|
1376
|
+
.rcf-filterbar {
|
|
1377
|
+
display: flex;
|
|
1378
|
+
flex-wrap: wrap;
|
|
1379
|
+
gap: 0.5rem 0.75rem;
|
|
1380
|
+
align-items: center;
|
|
1381
|
+
padding: 0.55rem 0.75rem;
|
|
1382
|
+
margin: 0 0 0.75rem;
|
|
1383
|
+
background: var(--sv-surface);
|
|
1384
|
+
border: 1px solid var(--sv-border);
|
|
1385
|
+
border-radius: var(--radius-md);
|
|
1386
|
+
position: sticky;
|
|
1387
|
+
top: 3rem;
|
|
1388
|
+
z-index: 10;
|
|
1389
|
+
box-shadow: var(--shadow-sm);
|
|
1390
|
+
}
|
|
1391
|
+
|
|
1392
|
+
.rcf-filterbar .rcf-filter-text {
|
|
1393
|
+
flex: 1 1 16rem;
|
|
1394
|
+
min-width: 10rem;
|
|
1395
|
+
min-height: 2.1rem;
|
|
1396
|
+
padding: 0 0.55rem;
|
|
1397
|
+
border: 1px solid var(--sv-control);
|
|
1398
|
+
border-radius: var(--radius-sm);
|
|
1399
|
+
background: var(--sv-surface);
|
|
1400
|
+
color: var(--sv-ink);
|
|
1401
|
+
font: inherit;
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
.rcf-filterbar .rcf-filter-label {
|
|
1405
|
+
display: inline-flex;
|
|
1406
|
+
gap: 0.4rem;
|
|
1407
|
+
align-items: center;
|
|
1408
|
+
color: var(--sv-muted);
|
|
1409
|
+
font-size: 0.85rem;
|
|
1410
|
+
white-space: nowrap;
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
.rcf-filterbar .rcf-filter-select {
|
|
1414
|
+
min-height: 2.1rem;
|
|
1415
|
+
padding: 0 0.5rem;
|
|
1416
|
+
border: 1px solid var(--sv-control);
|
|
1417
|
+
border-radius: var(--radius-sm);
|
|
1418
|
+
background: var(--sv-surface);
|
|
1419
|
+
color: var(--sv-ink);
|
|
1420
|
+
font: inherit;
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
.rcf-filterbar .rcf-filter-toggle {
|
|
1424
|
+
display: inline-flex;
|
|
1425
|
+
align-items: center;
|
|
1426
|
+
gap: 0.35rem;
|
|
1427
|
+
color: var(--sv-muted);
|
|
1428
|
+
font-size: 0.85rem;
|
|
1429
|
+
white-space: nowrap;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
.rcf-filterbar .rcf-filter-toggle input {
|
|
1433
|
+
margin: 0;
|
|
1434
|
+
accent-color: var(--sv-link);
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
.rcf-filterbar .rcf-filter-count {
|
|
1438
|
+
margin-left: auto;
|
|
1439
|
+
color: var(--sv-muted);
|
|
1440
|
+
font-size: 0.85rem;
|
|
1441
|
+
font-variant-numeric: tabular-nums;
|
|
1442
|
+
white-space: nowrap;
|
|
1443
|
+
}
|
|
1444
|
+
|
|
1445
|
+
.rcf-filterbar .rcf-filter-expand {
|
|
1446
|
+
appearance: none;
|
|
1447
|
+
background: none;
|
|
1448
|
+
border: 0;
|
|
1449
|
+
padding: 0;
|
|
1450
|
+
color: var(--sv-link);
|
|
1451
|
+
cursor: pointer;
|
|
1452
|
+
font: inherit;
|
|
1453
|
+
font-size: 0.85rem;
|
|
1454
|
+
text-decoration: underline;
|
|
1455
|
+
text-underline-offset: 2px;
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
.rcf-filterbar .rcf-filter-expand:hover { color: var(--sv-hover); }
|
|
1459
|
+
|
|
1460
|
+
html[data-embed="1"] .rcf-filterbar { top: 2.75rem; }
|
|
1461
|
+
|
|
1462
|
+
/* EmptyState: dashed outline, centred muted text. */
|
|
1463
|
+
.rcf-empty-state {
|
|
1464
|
+
padding: 1rem;
|
|
1465
|
+
border: 1px dashed var(--sv-control);
|
|
1466
|
+
border-radius: var(--radius-md);
|
|
1467
|
+
color: var(--sv-muted);
|
|
1468
|
+
text-align: center;
|
|
1469
|
+
background: var(--sv-raised);
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
.rcf-empty-state .rcf-empty-state-title {
|
|
1473
|
+
margin: 0;
|
|
1474
|
+
font-weight: 600;
|
|
1475
|
+
color: var(--sv-ink);
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
.rcf-empty-state .rcf-empty-state-hint {
|
|
1479
|
+
margin: 0.3rem 0 0;
|
|
1480
|
+
font-size: 0.9rem;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
.rcf-empty-state .rcf-empty-state-action {
|
|
1484
|
+
margin: 0.5rem 0 0;
|
|
1485
|
+
font-size: 0.85rem;
|
|
1486
|
+
color: var(--sv-ink);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
.rcf-empty-state .rcf-empty-state-action code {
|
|
1490
|
+
background: var(--sv-surface);
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1493
|
+
/* Toast: shell-mounted container, bottom-centre, opacity-fades. */
|
|
1494
|
+
.rcf-toast {
|
|
1495
|
+
position: fixed;
|
|
1496
|
+
left: 50%;
|
|
1497
|
+
bottom: 1.5rem;
|
|
1498
|
+
transform: translateX(-50%);
|
|
1499
|
+
background: var(--sv-ink);
|
|
1500
|
+
color: var(--sv-canvas);
|
|
1501
|
+
padding: 0.55rem 1rem;
|
|
1502
|
+
border-radius: var(--radius-sm);
|
|
1503
|
+
font-size: 0.85rem;
|
|
1504
|
+
box-shadow: var(--shadow-md);
|
|
1505
|
+
opacity: 0;
|
|
1506
|
+
transition: opacity 0.15s ease;
|
|
1507
|
+
pointer-events: none;
|
|
1508
|
+
max-width: 90vw;
|
|
1509
|
+
z-index: 50;
|
|
1510
|
+
}
|
|
1511
|
+
|
|
1512
|
+
.rcf-toast.show { opacity: 1; }
|
|
1513
|
+
|
|
1514
|
+
/* SubTabStrip: chip-like row under a tab heading. */
|
|
1515
|
+
.rcf-subtabs {
|
|
1516
|
+
display: flex;
|
|
1517
|
+
gap: 0.25rem;
|
|
1518
|
+
border-bottom: 1px solid var(--sv-border);
|
|
1519
|
+
margin: 0 0 1rem;
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
.rcf-subtabs button {
|
|
1523
|
+
appearance: none;
|
|
1524
|
+
background: transparent;
|
|
1525
|
+
border: 0;
|
|
1526
|
+
padding: 0.45rem 0.9rem;
|
|
1527
|
+
color: var(--sv-muted);
|
|
1528
|
+
font: inherit;
|
|
1529
|
+
font-size: 0.95rem;
|
|
1530
|
+
font-weight: 500;
|
|
1531
|
+
cursor: pointer;
|
|
1532
|
+
border-bottom: 2px solid transparent;
|
|
1533
|
+
margin-bottom: -1px;
|
|
1534
|
+
transition: color var(--t-fast), border-color var(--t-fast), background var(--t-fast);
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
.rcf-subtabs button:hover {
|
|
1538
|
+
color: var(--sv-ink);
|
|
1539
|
+
background: var(--sv-raised);
|
|
1540
|
+
}
|
|
1541
|
+
|
|
1542
|
+
.rcf-subtabs button[aria-selected="true"] {
|
|
1543
|
+
color: var(--sv-ink);
|
|
1544
|
+
font-weight: 700;
|
|
1545
|
+
border-bottom-color: var(--sv-link);
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
.rcf-subtabs button:focus-visible {
|
|
1549
|
+
outline: 3px solid var(--sv-focus);
|
|
1550
|
+
outline-offset: -3px;
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
/* Decision 17: when the tree carries no project name, the .product
|
|
1554
|
+
block collapses to nothing and the brand icon is on its own. */
|
|
1555
|
+
.product:empty { display: none; }
|
|
1556
|
+
|
|
1557
|
+
/* -----------------------------------------------------------------
|
|
1558
|
+
Viewer UI refresh PR 3: Requirements tab and PRD EntitySelector
|
|
1559
|
+
----------------------------------------------------------------- */
|
|
1560
|
+
|
|
1561
|
+
/* The Requirements list column: tighter spacing than the generic
|
|
1562
|
+
doc-details so a long list stays scannable. */
|
|
1563
|
+
.rcf-requirements-list { display: block; }
|
|
1564
|
+
.rcf-requirements-list > details.rcf-row { margin-bottom: 0.4rem; }
|
|
1565
|
+
|
|
1566
|
+
/* "Needs work" marker on a REQ row: accent border on the left so it
|
|
1567
|
+
stands out in the long list without screaming. */
|
|
1568
|
+
details.rcf-row.needs-work { border-left: 3px solid var(--sv-warning); }
|
|
1569
|
+
details.rcf-row.needs-work > summary .rcf-badge--accent { color: var(--sv-warning); border-color: var(--sv-warning); }
|
|
1570
|
+
|
|
1571
|
+
.rcf-req-description { margin-top: 0.4rem; }
|
|
1572
|
+
.rcf-req-rationale { font-size: 0.9rem; }
|
|
1573
|
+
.rcf-req-tags { display: flex; flex-wrap: wrap; gap: 0.25rem; margin: 0.5rem 0; }
|
|
1574
|
+
.rcf-req-needswork {
|
|
1575
|
+
padding: 0.4rem 0.6rem;
|
|
1576
|
+
border-left: 3px solid var(--sv-warning);
|
|
1577
|
+
background: var(--sv-warningbg);
|
|
1578
|
+
color: var(--sv-warning);
|
|
1579
|
+
border-radius: var(--radius-sm);
|
|
1580
|
+
margin: 0.4rem 0 0.6rem;
|
|
1581
|
+
font-size: 0.9rem;
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
.rcf-req-stories { margin-top: 0.9rem; }
|
|
1585
|
+
.rcf-req-stories > h4 {
|
|
1586
|
+
margin: 0 0 0.4rem;
|
|
1587
|
+
color: var(--sv-muted);
|
|
1588
|
+
font-size: 0.8rem;
|
|
1589
|
+
text-transform: uppercase;
|
|
1590
|
+
letter-spacing: 0.05em;
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
/* Inner rows (user stories nested under a REQ): slightly recessed. */
|
|
1594
|
+
details.rcf-row.rcf-row--inner {
|
|
1595
|
+
background: var(--sv-canvas);
|
|
1596
|
+
border-color: var(--sv-border);
|
|
1597
|
+
margin-bottom: 0.3rem;
|
|
1598
|
+
}
|
|
1599
|
+
details.rcf-row.rcf-row--inner > summary { padding: 0.4rem 0.6rem; }
|
|
1600
|
+
|
|
1601
|
+
/* Collapsed slice diagram and raw JSON disclosures on a REQ row. */
|
|
1602
|
+
.rcf-req-slice, .rcf-req-raw {
|
|
1603
|
+
margin: 0.6rem 0 0;
|
|
1604
|
+
border: 1px solid var(--sv-border);
|
|
1605
|
+
border-radius: var(--radius-sm);
|
|
1606
|
+
background: var(--sv-canvas);
|
|
1607
|
+
}
|
|
1608
|
+
.rcf-req-slice > summary, .rcf-req-raw > summary {
|
|
1609
|
+
padding: 0.4rem 0.6rem;
|
|
1610
|
+
cursor: pointer;
|
|
1611
|
+
color: var(--sv-muted);
|
|
1612
|
+
font-size: 0.85rem;
|
|
1613
|
+
}
|
|
1614
|
+
.rcf-req-slice-body { padding: 0.5rem 0.75rem 0.75rem; }
|
|
1615
|
+
.rcf-req-raw > pre { padding: 0.6rem 0.75rem; margin: 0; overflow: auto; }
|
|
1616
|
+
|
|
1617
|
+
/* PRD tab (viewer UI refresh PR 3): the five lists collapsed, each
|
|
1618
|
+
with a count badge; EntitySelector sits below the article. */
|
|
1619
|
+
.rcf-prd-list {
|
|
1620
|
+
margin: 0.4rem 0;
|
|
1621
|
+
padding: 0;
|
|
1622
|
+
background: var(--sv-canvas);
|
|
1623
|
+
border: 1px solid var(--sv-border);
|
|
1624
|
+
border-radius: var(--radius-sm);
|
|
1625
|
+
}
|
|
1626
|
+
.rcf-prd-list > summary {
|
|
1627
|
+
list-style: none;
|
|
1628
|
+
display: flex;
|
|
1629
|
+
align-items: center;
|
|
1630
|
+
gap: 0.5rem;
|
|
1631
|
+
padding: 0.5rem 0.75rem;
|
|
1632
|
+
cursor: pointer;
|
|
1633
|
+
}
|
|
1634
|
+
.rcf-prd-list > summary::-webkit-details-marker { display: none; }
|
|
1635
|
+
.rcf-prd-list > summary::before {
|
|
1636
|
+
content: "";
|
|
1637
|
+
width: 0.4rem;
|
|
1638
|
+
height: 0.4rem;
|
|
1639
|
+
border-right: 2px solid var(--sv-control);
|
|
1640
|
+
border-bottom: 2px solid var(--sv-control);
|
|
1641
|
+
transform: rotate(-45deg);
|
|
1642
|
+
transition: transform 0.12s;
|
|
1643
|
+
flex: none;
|
|
1644
|
+
}
|
|
1645
|
+
.rcf-prd-list[open] > summary::before { transform: rotate(45deg); }
|
|
1646
|
+
.rcf-prd-list > summary:hover { background: var(--sv-raised); }
|
|
1647
|
+
.rcf-prd-list-body { padding: 0.25rem 1.25rem 0.75rem; }
|
|
1648
|
+
.rcf-prd-list-body ul { margin: 0.3rem 0; padding-left: 1.1rem; }
|
|
1649
|
+
|
|
1650
|
+
.rcf-prd-requirements {
|
|
1651
|
+
margin-top: 1rem;
|
|
1652
|
+
padding: 0.75rem;
|
|
1653
|
+
background: var(--sv-surface);
|
|
1654
|
+
border: 1px solid var(--sv-border);
|
|
1655
|
+
border-radius: var(--radius-md);
|
|
1656
|
+
}
|
|
1657
|
+
.rcf-prd-requirements-head {
|
|
1658
|
+
display: flex;
|
|
1659
|
+
align-items: baseline;
|
|
1660
|
+
gap: 0.75rem;
|
|
1661
|
+
flex-wrap: wrap;
|
|
1662
|
+
margin-bottom: 0.5rem;
|
|
1663
|
+
}
|
|
1664
|
+
.rcf-prd-requirements-head h3 { margin: 0; }
|
|
1665
|
+
.rcf-prd-requirements-open {
|
|
1666
|
+
margin-left: auto;
|
|
1667
|
+
color: var(--sv-link);
|
|
1668
|
+
text-decoration: none;
|
|
1669
|
+
font-size: 0.9rem;
|
|
1670
|
+
}
|
|
1671
|
+
.rcf-prd-requirements-open:hover { text-decoration: underline; }
|
|
1672
|
+
|
|
1673
|
+
/* EntitySelector itself: total line, type-ahead input + results pane,
|
|
1674
|
+
chip row of area facets. */
|
|
1675
|
+
.rcf-entity-selector {
|
|
1676
|
+
display: block;
|
|
1677
|
+
margin-top: 0.25rem;
|
|
1678
|
+
}
|
|
1679
|
+
.rcf-entity-selector-head {
|
|
1680
|
+
display: flex;
|
|
1681
|
+
align-items: baseline;
|
|
1682
|
+
gap: 0.5rem;
|
|
1683
|
+
margin-bottom: 0.4rem;
|
|
1684
|
+
color: var(--sv-muted);
|
|
1685
|
+
font-size: 0.9rem;
|
|
1686
|
+
}
|
|
1687
|
+
.rcf-entity-selector-total { color: var(--sv-ink); font-weight: 600; }
|
|
1688
|
+
.rcf-entity-selector-jump {
|
|
1689
|
+
position: relative;
|
|
1690
|
+
margin-bottom: 0.5rem;
|
|
1691
|
+
}
|
|
1692
|
+
.rcf-entity-selector-input {
|
|
1693
|
+
width: 100%;
|
|
1694
|
+
min-height: 2.3rem;
|
|
1695
|
+
padding: 0 0.6rem;
|
|
1696
|
+
border: 1px solid var(--sv-control);
|
|
1697
|
+
border-radius: var(--radius-sm);
|
|
1698
|
+
background: var(--sv-surface);
|
|
1699
|
+
color: var(--sv-ink);
|
|
1700
|
+
font: inherit;
|
|
1701
|
+
}
|
|
1702
|
+
.rcf-entity-selector-results {
|
|
1703
|
+
position: absolute;
|
|
1704
|
+
left: 0;
|
|
1705
|
+
right: 0;
|
|
1706
|
+
top: 100%;
|
|
1707
|
+
z-index: 5;
|
|
1708
|
+
margin-top: 0.25rem;
|
|
1709
|
+
padding: 0.25rem;
|
|
1710
|
+
max-height: 20rem;
|
|
1711
|
+
overflow: auto;
|
|
1712
|
+
background: var(--sv-surface);
|
|
1713
|
+
border: 1px solid var(--sv-border);
|
|
1714
|
+
border-radius: var(--radius-sm);
|
|
1715
|
+
box-shadow: var(--shadow-md);
|
|
1716
|
+
}
|
|
1717
|
+
.rcf-entity-selector-result {
|
|
1718
|
+
display: flex;
|
|
1719
|
+
gap: 0.6rem;
|
|
1720
|
+
padding: 0.4rem 0.5rem;
|
|
1721
|
+
text-decoration: none;
|
|
1722
|
+
color: var(--sv-ink);
|
|
1723
|
+
border-radius: var(--radius-sm);
|
|
1724
|
+
}
|
|
1725
|
+
.rcf-entity-selector-result:hover { background: var(--sv-raised); }
|
|
1726
|
+
.rcf-entity-selector-result-id {
|
|
1727
|
+
color: var(--sv-link);
|
|
1728
|
+
font-family: var(--sv-mono, ui-monospace, monospace);
|
|
1729
|
+
font-size: 0.85rem;
|
|
1730
|
+
flex: none;
|
|
1731
|
+
}
|
|
1732
|
+
.rcf-entity-selector-result-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1733
|
+
.rcf-entity-selector-result-facet {
|
|
1734
|
+
color: var(--sv-muted);
|
|
1735
|
+
font-size: 0.8rem;
|
|
1736
|
+
}
|
|
1737
|
+
.rcf-entity-selector-empty { padding: 0.5rem 0.75rem; }
|
|
1738
|
+
.rcf-entity-selector-facets-lead { margin-bottom: 0.35rem; }
|
|
1739
|
+
.rcf-entity-selector-facets {
|
|
1740
|
+
display: flex;
|
|
1741
|
+
flex-wrap: wrap;
|
|
1742
|
+
gap: 0.35rem;
|
|
1743
|
+
}
|
|
1744
|
+
.rcf-entity-selector-chip {
|
|
1745
|
+
display: inline-flex;
|
|
1746
|
+
align-items: center;
|
|
1747
|
+
gap: 0.3rem;
|
|
1748
|
+
padding: 0.15rem 0.6rem;
|
|
1749
|
+
border-radius: 999px;
|
|
1750
|
+
border: 1px solid var(--sv-control);
|
|
1751
|
+
background: var(--sv-surface);
|
|
1752
|
+
color: var(--sv-ink);
|
|
1753
|
+
text-decoration: none;
|
|
1754
|
+
font-size: 0.8rem;
|
|
1755
|
+
}
|
|
1756
|
+
.rcf-entity-selector-chip:hover {
|
|
1757
|
+
background: var(--sv-active);
|
|
1758
|
+
border-color: var(--sv-link);
|
|
1759
|
+
color: var(--sv-link);
|
|
1760
|
+
}
|
|
1761
|
+
.rcf-entity-selector-chip .rcf-badge { background: transparent; }
|
|
1762
|
+
.rcf-entity-selector-chip:hover .rcf-badge-value { color: var(--sv-link); }
|
|
1763
|
+
|
|
1764
|
+
/* ---- Architecture tab (viewer UI refresh PR 4) --------------------- */
|
|
1765
|
+
|
|
1766
|
+
.rcf-architecture-head {
|
|
1767
|
+
display: flex;
|
|
1768
|
+
align-items: center;
|
|
1769
|
+
gap: 0.6rem;
|
|
1770
|
+
margin: 0 0 0.75rem 0;
|
|
1771
|
+
padding: 0.3rem 0;
|
|
1772
|
+
flex-wrap: wrap;
|
|
1773
|
+
}
|
|
1774
|
+
.rcf-architecture-head-id {
|
|
1775
|
+
font-weight: 600;
|
|
1776
|
+
color: var(--sv-ink);
|
|
1777
|
+
}
|
|
1778
|
+
.rcf-architecture-head-title {
|
|
1779
|
+
margin: 0;
|
|
1780
|
+
font-size: 1.1rem;
|
|
1781
|
+
}
|
|
1782
|
+
|
|
1783
|
+
.rcf-tad-group-heading,
|
|
1784
|
+
.rcf-architecture-components > .group-heading,
|
|
1785
|
+
.rcf-architecture-decisions > .group-heading {
|
|
1786
|
+
margin: 1.1rem 0 0.5rem 0;
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
.rcf-tad-sections {
|
|
1790
|
+
display: flex;
|
|
1791
|
+
flex-direction: column;
|
|
1792
|
+
gap: 0.4rem;
|
|
1793
|
+
margin-bottom: 0.5rem;
|
|
1794
|
+
}
|
|
1795
|
+
.rcf-tad-section > summary {
|
|
1796
|
+
display: flex;
|
|
1797
|
+
align-items: baseline;
|
|
1798
|
+
gap: 0.5rem;
|
|
1799
|
+
}
|
|
1800
|
+
.rcf-tad-section > summary::before {
|
|
1801
|
+
flex: 0 0 auto;
|
|
1802
|
+
}
|
|
1803
|
+
.rcf-tad-section-title {
|
|
1804
|
+
display: inline-flex;
|
|
1805
|
+
flex-wrap: wrap;
|
|
1806
|
+
align-items: baseline;
|
|
1807
|
+
gap: 0.4rem;
|
|
1808
|
+
min-width: 0;
|
|
1809
|
+
flex: 1 1 auto;
|
|
1810
|
+
}
|
|
1811
|
+
.rcf-tad-section-title > strong {
|
|
1812
|
+
color: var(--sv-ink);
|
|
1813
|
+
}
|
|
1814
|
+
.rcf-tad-preview {
|
|
1815
|
+
color: var(--sv-muted);
|
|
1816
|
+
font-weight: 400;
|
|
1817
|
+
overflow: hidden;
|
|
1818
|
+
text-overflow: ellipsis;
|
|
1819
|
+
white-space: nowrap;
|
|
1820
|
+
max-width: min(60ch, 70vw);
|
|
1821
|
+
}
|
|
1822
|
+
.rcf-tad-section--empty .rcf-tad-preview {
|
|
1823
|
+
font-style: italic;
|
|
1824
|
+
}
|
|
1825
|
+
.rcf-tad-empty {
|
|
1826
|
+
color: var(--sv-muted);
|
|
1827
|
+
margin: 0;
|
|
1828
|
+
}
|
|
1829
|
+
.rcf-tad-empty-command {
|
|
1830
|
+
background: var(--sv-code);
|
|
1831
|
+
padding: 0.1rem 0.35rem;
|
|
1832
|
+
border-radius: var(--r);
|
|
1833
|
+
font-family: var(--sv-mono);
|
|
1834
|
+
font-size: 0.85em;
|
|
1835
|
+
word-break: break-all;
|
|
1836
|
+
}
|
|
1837
|
+
.rcf-tad-raw {
|
|
1838
|
+
margin: 0.6rem 0 1rem 0;
|
|
1839
|
+
}
|
|
1840
|
+
.rcf-tad-raw > summary {
|
|
1841
|
+
cursor: pointer;
|
|
1842
|
+
color: var(--sv-muted);
|
|
1843
|
+
}
|
|
1844
|
+
.rcf-tad-raw > pre {
|
|
1845
|
+
background: var(--sv-code);
|
|
1846
|
+
padding: 0.5rem;
|
|
1847
|
+
overflow: auto;
|
|
1848
|
+
max-height: 24rem;
|
|
1849
|
+
border-radius: var(--r);
|
|
1850
|
+
}
|
|
1851
|
+
.rcf-tad-anchor {
|
|
1852
|
+
display: inline-block;
|
|
1853
|
+
width: 0;
|
|
1854
|
+
height: 0;
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1857
|
+
.rcf-arch-row > summary .id {
|
|
1858
|
+
font-family: var(--sv-mono);
|
|
1859
|
+
font-size: 0.85em;
|
|
1860
|
+
color: var(--sv-muted);
|
|
1861
|
+
max-width: 14ch;
|
|
1862
|
+
overflow: hidden;
|
|
1863
|
+
text-overflow: ellipsis;
|
|
1864
|
+
white-space: nowrap;
|
|
1865
|
+
}
|
|
1866
|
+
.rcf-tac-list,
|
|
1867
|
+
.rcf-adr-list {
|
|
1868
|
+
display: flex;
|
|
1869
|
+
flex-direction: column;
|
|
1870
|
+
gap: 0.35rem;
|
|
1871
|
+
}
|
|
1872
|
+
.rcf-architecture-components,
|
|
1873
|
+
.rcf-architecture-decisions {
|
|
1874
|
+
margin-top: 0.5rem;
|
|
1875
|
+
}
|
|
1876
|
+
|
|
1877
|
+
/* ---- Build tab (viewer UI refresh PR 5) --------------------------- */
|
|
1878
|
+
|
|
1879
|
+
.rcf-build-head {
|
|
1880
|
+
display: flex;
|
|
1881
|
+
align-items: baseline;
|
|
1882
|
+
flex-wrap: wrap;
|
|
1883
|
+
gap: 0.5rem;
|
|
1884
|
+
margin: 0 0 0.75rem 0;
|
|
1885
|
+
}
|
|
1886
|
+
.rcf-build-head-id {
|
|
1887
|
+
font-weight: 600;
|
|
1888
|
+
color: var(--sv-ink);
|
|
1889
|
+
}
|
|
1890
|
+
|
|
1891
|
+
.rcf-build-stats {
|
|
1892
|
+
margin: 0 0 1rem 0;
|
|
1893
|
+
}
|
|
1894
|
+
.rcf-build-stats-row {
|
|
1895
|
+
display: flex;
|
|
1896
|
+
flex-wrap: wrap;
|
|
1897
|
+
gap: 1.5rem;
|
|
1898
|
+
}
|
|
1899
|
+
.rcf-build-stat {
|
|
1900
|
+
display: flex;
|
|
1901
|
+
flex-direction: column;
|
|
1902
|
+
gap: 0.1rem;
|
|
1903
|
+
}
|
|
1904
|
+
.rcf-build-stat-n {
|
|
1905
|
+
font-size: 1.5rem;
|
|
1906
|
+
font-weight: 700;
|
|
1907
|
+
line-height: 1.1;
|
|
1908
|
+
color: var(--sv-ink);
|
|
1909
|
+
}
|
|
1910
|
+
.rcf-build-stat-l {
|
|
1911
|
+
color: var(--sv-muted);
|
|
1912
|
+
font-size: 0.8rem;
|
|
1913
|
+
}
|
|
1914
|
+
.rcf-build-progress {
|
|
1915
|
+
margin-top: 0.6rem;
|
|
1916
|
+
height: 0.5rem;
|
|
1917
|
+
background: var(--sv-raised);
|
|
1918
|
+
border-radius: 999px;
|
|
1919
|
+
overflow: hidden;
|
|
1920
|
+
display: flex;
|
|
1921
|
+
}
|
|
1922
|
+
.rcf-build-progress-seg {
|
|
1923
|
+
display: block;
|
|
1924
|
+
height: 100%;
|
|
1925
|
+
}
|
|
1926
|
+
.rcf-build-progress-seg--verified { background: var(--sv-success); }
|
|
1927
|
+
.rcf-build-progress-seg--complete { background: var(--sv-success); opacity: 0.6; }
|
|
1928
|
+
.rcf-build-progress-seg--inprogress { background: var(--sv-warning); }
|
|
1929
|
+
|
|
1930
|
+
.rcf-build-anchor {
|
|
1931
|
+
display: inline-block;
|
|
1932
|
+
width: 0;
|
|
1933
|
+
height: 0;
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
.rcf-build-subpanel {
|
|
1937
|
+
margin-top: 0.2rem;
|
|
1938
|
+
}
|
|
1939
|
+
.rcf-build-subpanel[hidden] {
|
|
1940
|
+
display: none;
|
|
1941
|
+
}
|
|
1942
|
+
|
|
1943
|
+
.rcf-build-specs-list {
|
|
1944
|
+
display: flex;
|
|
1945
|
+
flex-direction: column;
|
|
1946
|
+
gap: 0.35rem;
|
|
1947
|
+
}
|
|
1948
|
+
|
|
1949
|
+
.rcf-build-row > summary .id {
|
|
1950
|
+
display: inline-flex;
|
|
1951
|
+
align-items: baseline;
|
|
1952
|
+
gap: 0.4rem;
|
|
1953
|
+
flex: none;
|
|
1954
|
+
}
|
|
1955
|
+
.rcf-spec-order {
|
|
1956
|
+
min-width: 1.6rem;
|
|
1957
|
+
text-align: right;
|
|
1958
|
+
color: var(--sv-muted);
|
|
1959
|
+
}
|
|
1960
|
+
.rcf-spec-id {
|
|
1961
|
+
color: var(--sv-link);
|
|
1962
|
+
}
|
|
1963
|
+
|
|
1964
|
+
.rcf-pill--build-queue {
|
|
1965
|
+
background: var(--sv-active);
|
|
1966
|
+
color: var(--sv-link);
|
|
1967
|
+
border-color: transparent;
|
|
1968
|
+
}
|
|
1969
|
+
|
|
1970
|
+
.rcf-spec-summary { margin: 0.4rem 0 0.6rem; }
|
|
1971
|
+
.rcf-spec-block { margin: 0.6rem 0 0; }
|
|
1972
|
+
.rcf-spec-block > h4 {
|
|
1973
|
+
margin: 0 0 0.3rem;
|
|
1974
|
+
color: var(--sv-muted);
|
|
1975
|
+
font-size: 0.8rem;
|
|
1976
|
+
text-transform: uppercase;
|
|
1977
|
+
letter-spacing: 0.05em;
|
|
1978
|
+
}
|
|
1979
|
+
.rcf-spec-block > p,
|
|
1980
|
+
.rcf-spec-block > ul { margin: 0.2rem 0; }
|
|
1981
|
+
.rcf-spec-link-row {
|
|
1982
|
+
font-size: 0.9rem;
|
|
1983
|
+
}
|
|
1984
|
+
.rcf-spec-deliverables,
|
|
1985
|
+
.rcf-spec-deps {
|
|
1986
|
+
margin: 0.3rem 0 0.3rem 1.2rem;
|
|
1987
|
+
padding: 0;
|
|
1988
|
+
font-size: 0.9rem;
|
|
1989
|
+
}
|
|
1990
|
+
.rcf-spec-deliverables > li,
|
|
1991
|
+
.rcf-spec-deps > li {
|
|
1992
|
+
margin: 0.1rem 0;
|
|
1993
|
+
}
|
|
1994
|
+
.rcf-spec-dag {
|
|
1995
|
+
margin: 0.8rem 0 0.2rem;
|
|
1996
|
+
font-size: 0.9rem;
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
/* ---- Build / DAG (viewer UI refresh PR 6, TAC-4131, ADR-4133) -------- */
|
|
2000
|
+
|
|
2001
|
+
.rcf-dag {
|
|
2002
|
+
display: flex;
|
|
2003
|
+
flex-direction: column;
|
|
2004
|
+
gap: 0.75rem;
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
.rcf-dag-toolbar {
|
|
2008
|
+
background: var(--sv-surface);
|
|
2009
|
+
border: 1px solid var(--sv-border);
|
|
2010
|
+
border-radius: 10px;
|
|
2011
|
+
padding: 0.6rem 0.75rem;
|
|
2012
|
+
display: flex;
|
|
2013
|
+
flex-direction: column;
|
|
2014
|
+
gap: 0.5rem;
|
|
2015
|
+
}
|
|
2016
|
+
.rcf-dag-toolbar-row {
|
|
2017
|
+
display: flex;
|
|
2018
|
+
flex-wrap: wrap;
|
|
2019
|
+
gap: 0.5rem;
|
|
2020
|
+
align-items: center;
|
|
2021
|
+
}
|
|
2022
|
+
.rcf-dag-toolbar-findings {
|
|
2023
|
+
border-top: 1px dashed var(--sv-border);
|
|
2024
|
+
padding-top: 0.5rem;
|
|
2025
|
+
}
|
|
2026
|
+
|
|
2027
|
+
.rcf-dag-label {
|
|
2028
|
+
display: inline-flex;
|
|
2029
|
+
gap: 0.35rem;
|
|
2030
|
+
align-items: center;
|
|
2031
|
+
}
|
|
2032
|
+
.rcf-dag-select {
|
|
2033
|
+
min-height: 2.1rem;
|
|
2034
|
+
padding: 0 0.5rem;
|
|
2035
|
+
border: 1px solid var(--sv-control);
|
|
2036
|
+
border-radius: 6px;
|
|
2037
|
+
background: var(--sv-surface);
|
|
2038
|
+
color: var(--sv-ink);
|
|
2039
|
+
}
|
|
2040
|
+
|
|
2041
|
+
.rcf-dag-chip {
|
|
2042
|
+
display: inline-flex;
|
|
2043
|
+
align-items: center;
|
|
2044
|
+
gap: 0.3rem;
|
|
2045
|
+
padding: 0.15rem 0.6rem;
|
|
2046
|
+
border-radius: 999px;
|
|
2047
|
+
border: 1px solid var(--sv-control);
|
|
2048
|
+
background: var(--sv-surface);
|
|
2049
|
+
color: var(--sv-ink);
|
|
2050
|
+
font-size: 0.8rem;
|
|
2051
|
+
cursor: pointer;
|
|
2052
|
+
min-height: 1.9rem;
|
|
2053
|
+
}
|
|
2054
|
+
.rcf-dag-chip:hover { background: var(--sv-raised); }
|
|
2055
|
+
.rcf-dag-chip[aria-pressed="true"] {
|
|
2056
|
+
background: var(--sv-active);
|
|
2057
|
+
border-color: var(--sv-link);
|
|
2058
|
+
color: var(--sv-link);
|
|
2059
|
+
font-weight: 700;
|
|
2060
|
+
}
|
|
2061
|
+
|
|
2062
|
+
.rcf-dag-grid {
|
|
2063
|
+
display: grid;
|
|
2064
|
+
grid-template-columns: minmax(0, 1fr) 20rem;
|
|
2065
|
+
gap: 0.75rem;
|
|
2066
|
+
align-items: start;
|
|
2067
|
+
}
|
|
2068
|
+
@media (max-width: 900px) {
|
|
2069
|
+
.rcf-dag-grid { grid-template-columns: minmax(0, 1fr); }
|
|
2070
|
+
}
|
|
2071
|
+
|
|
2072
|
+
.rcf-dag-canvas-wrap {
|
|
2073
|
+
padding: 0.5rem;
|
|
2074
|
+
overflow: auto;
|
|
2075
|
+
max-height: 70vh;
|
|
2076
|
+
min-height: 24rem;
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2079
|
+
.rcf-dag-canvas {
|
|
2080
|
+
position: relative;
|
|
2081
|
+
color: var(--sv-ink);
|
|
2082
|
+
}
|
|
2083
|
+
|
|
2084
|
+
.rcf-dag-edges {
|
|
2085
|
+
position: absolute;
|
|
2086
|
+
left: 0;
|
|
2087
|
+
top: 0;
|
|
2088
|
+
pointer-events: none;
|
|
2089
|
+
}
|
|
2090
|
+
.rcf-dag-edge {
|
|
2091
|
+
fill: none;
|
|
2092
|
+
stroke: var(--sv-border);
|
|
2093
|
+
stroke-width: 1.2;
|
|
2094
|
+
opacity: 1;
|
|
2095
|
+
transition: opacity 120ms ease, stroke 120ms ease, stroke-width 120ms ease;
|
|
2096
|
+
}
|
|
2097
|
+
.rcf-dag-canvas[data-rcf-dag-sel] .rcf-dag-edge { opacity: 0.22; }
|
|
2098
|
+
.rcf-dag-edge[data-rcf-dag-edge-role="up"] {
|
|
2099
|
+
stroke: var(--sv-link);
|
|
2100
|
+
stroke-width: 2.2;
|
|
2101
|
+
opacity: 1;
|
|
2102
|
+
marker-end: url(#rcf-dag-arrow-up);
|
|
2103
|
+
}
|
|
2104
|
+
.rcf-dag-edge[data-rcf-dag-edge-role="down"] {
|
|
2105
|
+
stroke: var(--sv-warning);
|
|
2106
|
+
stroke-width: 2.2;
|
|
2107
|
+
opacity: 1;
|
|
2108
|
+
marker-end: url(#rcf-dag-arrow-down);
|
|
2109
|
+
}
|
|
2110
|
+
.rcf-dag-edge[data-rcf-dag-hidden="1"] { opacity: 0.08; }
|
|
2111
|
+
|
|
2112
|
+
.rcf-dag-colhead {
|
|
2113
|
+
position: absolute;
|
|
2114
|
+
font-size: 0.7rem;
|
|
2115
|
+
color: var(--sv-muted);
|
|
2116
|
+
font-weight: 700;
|
|
2117
|
+
letter-spacing: 0.05em;
|
|
2118
|
+
text-transform: uppercase;
|
|
2119
|
+
pointer-events: none;
|
|
2120
|
+
}
|
|
2121
|
+
|
|
2122
|
+
.rcf-dag-lane-head {
|
|
2123
|
+
position: absolute;
|
|
2124
|
+
border-top: 1px dashed var(--sv-control);
|
|
2125
|
+
padding-top: 0.4rem;
|
|
2126
|
+
font-size: 0.7rem;
|
|
2127
|
+
color: var(--sv-muted);
|
|
2128
|
+
font-weight: 700;
|
|
2129
|
+
letter-spacing: 0.05em;
|
|
2130
|
+
text-transform: uppercase;
|
|
2131
|
+
pointer-events: none;
|
|
2132
|
+
}
|
|
2133
|
+
.rcf-dag-canvas:not([data-has-unconnected="1"]) .rcf-dag-lane-head { display: none; }
|
|
2134
|
+
.rcf-dag-canvas[data-rcf-dag-unconnected-hidden="1"] .rcf-dag-lane-head,
|
|
2135
|
+
.rcf-dag-canvas[data-rcf-dag-unconnected-hidden="1"] .rcf-dag-node[data-unconnected="1"] {
|
|
2136
|
+
display: none;
|
|
2137
|
+
}
|
|
2138
|
+
|
|
2139
|
+
.rcf-dag-node {
|
|
2140
|
+
position: absolute;
|
|
2141
|
+
display: flex;
|
|
2142
|
+
align-items: center;
|
|
2143
|
+
gap: 0.4rem;
|
|
2144
|
+
padding: 0 0.5rem;
|
|
2145
|
+
border: 1px solid var(--sv-border);
|
|
2146
|
+
border-radius: 6px;
|
|
2147
|
+
background: var(--sv-surface);
|
|
2148
|
+
color: var(--sv-ink);
|
|
2149
|
+
cursor: pointer;
|
|
2150
|
+
text-align: left;
|
|
2151
|
+
font-size: 0.78rem;
|
|
2152
|
+
transition: opacity 120ms ease, border-color 120ms ease, border-width 120ms ease, box-shadow 120ms ease;
|
|
2153
|
+
overflow: hidden;
|
|
2154
|
+
}
|
|
2155
|
+
.rcf-dag-node:hover { background: var(--sv-raised); }
|
|
2156
|
+
.rcf-dag-node:focus-visible { outline: 2px solid var(--sv-focus); outline-offset: 2px; }
|
|
2157
|
+
.rcf-dag-canvas[data-rcf-dag-sel] .rcf-dag-node { opacity: 0.3; }
|
|
2158
|
+
.rcf-dag-node[data-rcf-dag-role="sel"] {
|
|
2159
|
+
opacity: 1;
|
|
2160
|
+
border: 2px solid var(--sv-ink);
|
|
2161
|
+
}
|
|
2162
|
+
.rcf-dag-node[data-rcf-dag-role="up"] {
|
|
2163
|
+
opacity: 1;
|
|
2164
|
+
border: 2px solid var(--sv-link);
|
|
2165
|
+
}
|
|
2166
|
+
.rcf-dag-node[data-rcf-dag-role="down"] {
|
|
2167
|
+
opacity: 1;
|
|
2168
|
+
border: 2px solid var(--sv-warning);
|
|
2169
|
+
}
|
|
2170
|
+
.rcf-dag-node[data-rcf-dag-hidden="1"] { opacity: 0.15; pointer-events: none; }
|
|
2171
|
+
.rcf-dag-node[data-rcf-dag-critical="on"] {
|
|
2172
|
+
box-shadow: 0 0 0 3px var(--sv-warningbg);
|
|
2173
|
+
}
|
|
2174
|
+
.rcf-dag-node-id {
|
|
2175
|
+
color: var(--sv-link);
|
|
2176
|
+
flex: none;
|
|
2177
|
+
}
|
|
2178
|
+
.rcf-dag-node-title {
|
|
2179
|
+
flex: 1;
|
|
2180
|
+
min-width: 0;
|
|
2181
|
+
overflow: hidden;
|
|
2182
|
+
text-overflow: ellipsis;
|
|
2183
|
+
white-space: nowrap;
|
|
2184
|
+
}
|
|
2185
|
+
.rcf-dag-node-dot {
|
|
2186
|
+
width: 0.55rem;
|
|
2187
|
+
height: 0.55rem;
|
|
2188
|
+
border-radius: 50%;
|
|
2189
|
+
background: var(--sv-control);
|
|
2190
|
+
flex: none;
|
|
2191
|
+
}
|
|
2192
|
+
.rcf-dag-node-dot--ok { background: var(--sv-success); }
|
|
2193
|
+
.rcf-dag-node-dot--warn { background: var(--sv-warning); }
|
|
2194
|
+
.rcf-dag-node-dot--none { background: var(--sv-control); }
|
|
2195
|
+
.rcf-dag-node-tag {
|
|
2196
|
+
font-size: 0.6rem;
|
|
2197
|
+
font-weight: 700;
|
|
2198
|
+
text-transform: uppercase;
|
|
2199
|
+
letter-spacing: 0.03em;
|
|
2200
|
+
padding: 0 0.3rem;
|
|
2201
|
+
border-radius: 999px;
|
|
2202
|
+
background: var(--sv-active);
|
|
2203
|
+
color: var(--sv-link);
|
|
2204
|
+
border: 1px solid transparent;
|
|
2205
|
+
flex: none;
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2208
|
+
.rcf-dag-inspector {
|
|
2209
|
+
padding: 0.75rem;
|
|
2210
|
+
position: sticky;
|
|
2211
|
+
top: 3.6rem;
|
|
2212
|
+
max-height: 70vh;
|
|
2213
|
+
overflow: auto;
|
|
2214
|
+
}
|
|
2215
|
+
.rcf-dag-inspector-body h3 {
|
|
2216
|
+
margin: 0.2rem 0 0.5rem;
|
|
2217
|
+
font-size: 1rem;
|
|
2218
|
+
}
|
|
2219
|
+
.rcf-dag-inspector-body h4 {
|
|
2220
|
+
margin: 0.7rem 0 0.2rem;
|
|
2221
|
+
color: var(--sv-muted);
|
|
2222
|
+
font-size: 0.75rem;
|
|
2223
|
+
text-transform: uppercase;
|
|
2224
|
+
letter-spacing: 0.05em;
|
|
2225
|
+
}
|
|
2226
|
+
.rcf-dag-inspector-body ul.rcf-dag-inspector-list {
|
|
2227
|
+
list-style: none;
|
|
2228
|
+
padding: 0;
|
|
2229
|
+
margin: 0;
|
|
2230
|
+
font-size: 0.85rem;
|
|
2231
|
+
}
|
|
2232
|
+
.rcf-dag-inspector-body ul.rcf-dag-inspector-list li {
|
|
2233
|
+
display: flex;
|
|
2234
|
+
gap: 0.3rem;
|
|
2235
|
+
align-items: baseline;
|
|
2236
|
+
margin: 0.15rem 0;
|
|
2237
|
+
}
|
|
2238
|
+
.rcf-dag-inspector-body .rcf-dag-inspector-meta {
|
|
2239
|
+
display: flex;
|
|
2240
|
+
gap: 0.3rem;
|
|
2241
|
+
flex-wrap: wrap;
|
|
2242
|
+
margin-bottom: 0.6rem;
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2245
|
+
.rcf-dag-legend {
|
|
2246
|
+
margin: 0;
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
/* --------------------------------------------------------------------
|
|
2250
|
+
* ID lookup (viewer UI refresh PR 7, TAC-4132)
|
|
2251
|
+
*
|
|
2252
|
+
* SearchButton sits inside `.tools` right of the tabstrip; the
|
|
2253
|
+
* LookupModal is portalled into the shell outside #rcf-live-content
|
|
2254
|
+
* so the SSE innerHTML swap never blows it away. Tokens reuse the
|
|
2255
|
+
* Stravica brand palette so both themes work with no dark-only edge.
|
|
2256
|
+
* -------------------------------------------------------------------- */
|
|
2257
|
+
|
|
2258
|
+
.rcf-search-btn {
|
|
2259
|
+
display: inline-flex;
|
|
2260
|
+
align-items: center;
|
|
2261
|
+
gap: 0.35rem;
|
|
2262
|
+
padding: 0.3rem 0.6rem;
|
|
2263
|
+
background: var(--sv-surface, #ffffff);
|
|
2264
|
+
color: var(--sv-text, inherit);
|
|
2265
|
+
border: 1px solid var(--sv-border, #d6dbe3);
|
|
2266
|
+
border-radius: 999px;
|
|
2267
|
+
font: inherit;
|
|
2268
|
+
font-size: 0.85rem;
|
|
2269
|
+
line-height: 1;
|
|
2270
|
+
cursor: pointer;
|
|
2271
|
+
transition: background-color 0.1s ease-out, border-color 0.1s ease-out;
|
|
2272
|
+
}
|
|
2273
|
+
.rcf-search-btn:hover { background: var(--sv-surface-hover, #f0f3f8); }
|
|
2274
|
+
.rcf-search-btn:focus-visible { outline: 3px solid var(--sv-focus); outline-offset: 2px; }
|
|
2275
|
+
.rcf-search-btn .rcf-search-icon { flex-shrink: 0; opacity: 0.75; }
|
|
2276
|
+
.rcf-search-btn .rcf-search-kbd {
|
|
2277
|
+
display: inline-flex;
|
|
2278
|
+
gap: 0.1rem;
|
|
2279
|
+
margin-left: 0.1rem;
|
|
2280
|
+
color: var(--sv-muted);
|
|
2281
|
+
font-size: 0.7rem;
|
|
2282
|
+
}
|
|
2283
|
+
.rcf-search-btn .rcf-search-kbd kbd {
|
|
2284
|
+
padding: 0 0.25rem;
|
|
2285
|
+
border: 1px solid var(--sv-border, #d6dbe3);
|
|
2286
|
+
border-radius: 3px;
|
|
2287
|
+
background: var(--sv-surface, #ffffff);
|
|
2288
|
+
font-family: inherit;
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2291
|
+
@media (max-width: 640px) {
|
|
2292
|
+
.rcf-search-btn .rcf-search-kbd { display: none; }
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2295
|
+
.rcf-lookup[hidden] { display: none !important; }
|
|
2296
|
+
.rcf-lookup {
|
|
2297
|
+
position: fixed;
|
|
2298
|
+
inset: 0;
|
|
2299
|
+
z-index: 1000;
|
|
2300
|
+
display: flex;
|
|
2301
|
+
align-items: flex-start;
|
|
2302
|
+
justify-content: center;
|
|
2303
|
+
padding: 4rem 1rem 1rem;
|
|
2304
|
+
pointer-events: none;
|
|
2305
|
+
}
|
|
2306
|
+
.rcf-lookup-backdrop {
|
|
2307
|
+
position: absolute;
|
|
2308
|
+
inset: 0;
|
|
2309
|
+
background: rgba(8, 15, 25, 0.4);
|
|
2310
|
+
pointer-events: auto;
|
|
2311
|
+
}
|
|
2312
|
+
.rcf-lookup-panel {
|
|
2313
|
+
position: relative;
|
|
2314
|
+
width: min(42rem, 100%);
|
|
2315
|
+
max-height: calc(100vh - 6rem);
|
|
2316
|
+
display: flex;
|
|
2317
|
+
flex-direction: column;
|
|
2318
|
+
gap: 0.75rem;
|
|
2319
|
+
padding: 1rem 1rem 0.75rem;
|
|
2320
|
+
background: var(--sv-surface, #ffffff);
|
|
2321
|
+
color: var(--sv-text, inherit);
|
|
2322
|
+
border: 1px solid var(--sv-border, #d6dbe3);
|
|
2323
|
+
border-radius: 10px;
|
|
2324
|
+
box-shadow: 0 20px 50px -20px rgba(8, 15, 25, 0.4);
|
|
2325
|
+
pointer-events: auto;
|
|
2326
|
+
overflow: hidden;
|
|
2327
|
+
}
|
|
2328
|
+
.rcf-lookup-head {
|
|
2329
|
+
display: flex;
|
|
2330
|
+
align-items: center;
|
|
2331
|
+
justify-content: space-between;
|
|
2332
|
+
gap: 1rem;
|
|
2333
|
+
}
|
|
2334
|
+
.rcf-lookup-heading {
|
|
2335
|
+
margin: 0;
|
|
2336
|
+
font-size: 1rem;
|
|
2337
|
+
color: var(--sv-text);
|
|
2338
|
+
}
|
|
2339
|
+
.rcf-lookup-close {
|
|
2340
|
+
background: transparent;
|
|
2341
|
+
border: 1px solid transparent;
|
|
2342
|
+
color: var(--sv-muted);
|
|
2343
|
+
font: inherit;
|
|
2344
|
+
font-size: 0.8rem;
|
|
2345
|
+
padding: 0.25rem 0.5rem;
|
|
2346
|
+
border-radius: 4px;
|
|
2347
|
+
cursor: pointer;
|
|
2348
|
+
}
|
|
2349
|
+
.rcf-lookup-close:hover { color: var(--sv-text); border-color: var(--sv-border); }
|
|
2350
|
+
.rcf-lookup-close:focus-visible { outline: 3px solid var(--sv-focus); outline-offset: 1px; }
|
|
2351
|
+
|
|
2352
|
+
.rcf-lookup-field { display: flex; flex-direction: column; gap: 0.25rem; }
|
|
2353
|
+
.rcf-lookup-label {
|
|
2354
|
+
font-size: 0.75rem;
|
|
2355
|
+
color: var(--sv-muted);
|
|
2356
|
+
text-transform: uppercase;
|
|
2357
|
+
letter-spacing: 0.05em;
|
|
2358
|
+
}
|
|
2359
|
+
.rcf-lookup-input {
|
|
2360
|
+
padding: 0.55rem 0.75rem;
|
|
2361
|
+
font: inherit;
|
|
2362
|
+
font-size: 0.95rem;
|
|
2363
|
+
border: 1px solid var(--sv-border, #d6dbe3);
|
|
2364
|
+
border-radius: 6px;
|
|
2365
|
+
background: var(--sv-surface-sub, #fbfcfe);
|
|
2366
|
+
color: var(--sv-text);
|
|
2367
|
+
}
|
|
2368
|
+
.rcf-lookup-input:focus-visible { outline: 3px solid var(--sv-focus); outline-offset: 1px; border-color: var(--sv-link, #3a5bb5); }
|
|
2369
|
+
|
|
2370
|
+
.rcf-lookup-status { margin: 0; font-size: 0.75rem; color: var(--sv-muted); min-height: 1rem; }
|
|
2371
|
+
|
|
2372
|
+
.rcf-lookup-results {
|
|
2373
|
+
list-style: none;
|
|
2374
|
+
padding: 0;
|
|
2375
|
+
margin: 0;
|
|
2376
|
+
overflow-y: auto;
|
|
2377
|
+
flex: 1 1 auto;
|
|
2378
|
+
display: flex;
|
|
2379
|
+
flex-direction: column;
|
|
2380
|
+
gap: 0.1rem;
|
|
2381
|
+
}
|
|
2382
|
+
.rcf-lookup-row {
|
|
2383
|
+
display: grid;
|
|
2384
|
+
grid-template-columns: auto auto 1fr auto;
|
|
2385
|
+
align-items: baseline;
|
|
2386
|
+
gap: 0.5rem;
|
|
2387
|
+
padding: 0.4rem 0.5rem;
|
|
2388
|
+
border-radius: 6px;
|
|
2389
|
+
cursor: pointer;
|
|
2390
|
+
border: 1px solid transparent;
|
|
2391
|
+
}
|
|
2392
|
+
.rcf-lookup-row:hover { background: var(--sv-surface-hover, #f0f3f8); }
|
|
2393
|
+
.rcf-lookup-row.is-active {
|
|
2394
|
+
background: var(--sv-surface-hover, #f0f3f8);
|
|
2395
|
+
border-color: var(--sv-link, #3a5bb5);
|
|
2396
|
+
}
|
|
2397
|
+
.rcf-lookup-row mark {
|
|
2398
|
+
background: var(--sv-highlight, rgba(114, 149, 255, 0.35));
|
|
2399
|
+
color: inherit;
|
|
2400
|
+
padding: 0 1px;
|
|
2401
|
+
border-radius: 2px;
|
|
2402
|
+
}
|
|
2403
|
+
.rcf-lookup-kind {
|
|
2404
|
+
grid-column: 1;
|
|
2405
|
+
display: inline-flex;
|
|
2406
|
+
align-items: center;
|
|
2407
|
+
padding: 0 0.4rem;
|
|
2408
|
+
font-size: 0.7rem;
|
|
2409
|
+
font-weight: 600;
|
|
2410
|
+
text-transform: uppercase;
|
|
2411
|
+
letter-spacing: 0.05em;
|
|
2412
|
+
background: var(--sv-pill-bg, #e4e9f4);
|
|
2413
|
+
color: var(--sv-pill-text, #2a3550);
|
|
2414
|
+
border-radius: 999px;
|
|
2415
|
+
line-height: 1.6;
|
|
2416
|
+
}
|
|
2417
|
+
.rcf-lookup-kind-ac { background: #ede1ff; color: #4a2a7a; }
|
|
2418
|
+
.rcf-lookup-kind-us { background: #d8e8ff; color: #1f3f78; }
|
|
2419
|
+
.rcf-lookup-kind-req { background: #d5efe0; color: #1f5733; }
|
|
2420
|
+
.rcf-lookup-kind-tac { background: #ffe6cc; color: #704000; }
|
|
2421
|
+
.rcf-lookup-kind-adr { background: #ffd9d9; color: #7a2222; }
|
|
2422
|
+
.rcf-lookup-kind-fbs { background: #e2e7f2; color: #2a3550; }
|
|
2423
|
+
.rcf-lookup-kind-ts { background: #f3dbff; color: #5a2070; }
|
|
2424
|
+
.rcf-lookup-kind-prd { background: #fff2b8; color: #705300; }
|
|
2425
|
+
.rcf-lookup-kind-tad { background: #cfe9ff; color: #0f3f6a; }
|
|
2426
|
+
.rcf-lookup-kind-bs { background: #e4e4e4; color: #333333; }
|
|
2427
|
+
|
|
2428
|
+
.rcf-lookup-id {
|
|
2429
|
+
grid-column: 2;
|
|
2430
|
+
font-family: var(--sv-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
|
|
2431
|
+
font-weight: 600;
|
|
2432
|
+
color: var(--sv-text);
|
|
2433
|
+
font-size: 0.85rem;
|
|
2434
|
+
}
|
|
2435
|
+
.rcf-lookup-title {
|
|
2436
|
+
grid-column: 3;
|
|
2437
|
+
font-size: 0.9rem;
|
|
2438
|
+
color: var(--sv-text);
|
|
2439
|
+
}
|
|
2440
|
+
.rcf-lookup-parent {
|
|
2441
|
+
grid-column: 4;
|
|
2442
|
+
font-size: 0.75rem;
|
|
2443
|
+
color: var(--sv-muted);
|
|
2444
|
+
}
|
|
2445
|
+
.rcf-lookup-snippet {
|
|
2446
|
+
grid-column: 1 / -1;
|
|
2447
|
+
margin: 0.1rem 0 0 0;
|
|
2448
|
+
font-size: 0.78rem;
|
|
2449
|
+
color: var(--sv-muted);
|
|
2450
|
+
line-height: 1.35;
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2453
|
+
.rcf-lookup-empty {
|
|
2454
|
+
padding: 1rem 0.5rem 0.75rem;
|
|
2455
|
+
text-align: center;
|
|
2456
|
+
color: var(--sv-muted);
|
|
2457
|
+
font-size: 0.85rem;
|
|
2458
|
+
}
|
|
2459
|
+
.rcf-lookup-empty-msg { margin: 0 0 0.5rem; }
|
|
2460
|
+
.rcf-lookup-reload {
|
|
2461
|
+
padding: 0.35rem 0.75rem;
|
|
2462
|
+
background: var(--sv-surface, #ffffff);
|
|
2463
|
+
color: var(--sv-text);
|
|
2464
|
+
border: 1px solid var(--sv-border, #d6dbe3);
|
|
2465
|
+
border-radius: 6px;
|
|
2466
|
+
cursor: pointer;
|
|
2467
|
+
font: inherit;
|
|
2468
|
+
font-size: 0.85rem;
|
|
2469
|
+
}
|
|
2470
|
+
.rcf-lookup-reload:hover { background: var(--sv-surface-hover, #f0f3f8); }
|
|
2471
|
+
.rcf-lookup-reload:focus-visible { outline: 3px solid var(--sv-focus); outline-offset: 1px; }
|
|
2472
|
+
|
|
2473
|
+
html[data-theme="dark"] .rcf-lookup-backdrop { background: rgba(0, 0, 0, 0.55); }
|
|
2474
|
+
html[data-theme="dark"] .rcf-lookup-kind { background: rgba(255, 255, 255, 0.08); color: var(--sv-text); }
|
|
2475
|
+
html[data-theme="dark"] .rcf-lookup-kind-ac { background: rgba(140, 90, 220, 0.3); color: #e2c9ff; }
|
|
2476
|
+
html[data-theme="dark"] .rcf-lookup-kind-us { background: rgba(80, 130, 220, 0.3); color: #c4dcff; }
|
|
2477
|
+
html[data-theme="dark"] .rcf-lookup-kind-req { background: rgba(80, 170, 110, 0.3); color: #c3eacc; }
|
|
2478
|
+
html[data-theme="dark"] .rcf-lookup-kind-tac { background: rgba(200, 130, 60, 0.3); color: #ffd4a8; }
|
|
2479
|
+
html[data-theme="dark"] .rcf-lookup-kind-adr { background: rgba(220, 100, 100, 0.3); color: #ffc9c9; }
|
|
2480
|
+
html[data-theme="dark"] .rcf-lookup-kind-ts { background: rgba(180, 110, 220, 0.3); color: #e8c9ff; }
|
|
2481
|
+
html[data-theme="dark"] .rcf-lookup-kind-fbs { background: rgba(140, 150, 170, 0.3); color: #d4dbea; }
|
|
2482
|
+
html[data-theme="dark"] .rcf-lookup-kind-prd { background: rgba(200, 170, 60, 0.3); color: #ffe88b; }
|
|
2483
|
+
html[data-theme="dark"] .rcf-lookup-kind-tad { background: rgba(80, 160, 220, 0.3); color: #c7e6ff; }
|
|
2484
|
+
html[data-theme="dark"] .rcf-lookup-kind-bs { background: rgba(160, 160, 160, 0.3); color: #d9d9d9; }
|
|
2485
|
+
|
|
2486
|
+
html[data-rcf-lookup-open] { overflow: hidden; }
|
|
2487
|
+
|
|
2488
|
+
/* ID lookup landing highlight (design section 6: "scrolls and flashes
|
|
2489
|
+
the target"). A short brand-cobalt wash fades out so the picked
|
|
2490
|
+
entity reads unambiguously in a long tree. */
|
|
2491
|
+
@keyframes rcfLookupFlash {
|
|
2492
|
+
0% { background-color: var(--sv-cobalt, #1e40af); color: #ffffff; }
|
|
2493
|
+
40% { background-color: var(--sv-cobalt, #1e40af); color: #ffffff; }
|
|
2494
|
+
100% { background-color: transparent; color: inherit; }
|
|
2495
|
+
}
|
|
2496
|
+
.is-rcf-lookup-flash {
|
|
2497
|
+
animation: rcfLookupFlash 1200ms ease-out 1;
|
|
2498
|
+
border-radius: 2px;
|
|
2499
|
+
}
|
|
2500
|
+
|
|
2501
|
+
/* ---- Shared pill colour variants (used by Readiness PO layer PR 8) ---- */
|
|
2502
|
+
|
|
2503
|
+
.rcf-pill {
|
|
2504
|
+
display: inline-flex;
|
|
2505
|
+
align-items: center;
|
|
2506
|
+
gap: 0.3rem;
|
|
2507
|
+
padding: 0.05rem 0.6rem;
|
|
2508
|
+
border-radius: 999px;
|
|
2509
|
+
font-size: 0.78rem;
|
|
2510
|
+
font-weight: 700;
|
|
2511
|
+
border: 1px solid var(--sv-border);
|
|
2512
|
+
background: var(--sv-raised);
|
|
2513
|
+
color: var(--sv-ink);
|
|
2514
|
+
white-space: nowrap;
|
|
2515
|
+
}
|
|
2516
|
+
.rcf-pill--ok {
|
|
2517
|
+
background: var(--sv-successbg);
|
|
2518
|
+
color: var(--sv-success);
|
|
2519
|
+
border-color: transparent;
|
|
2520
|
+
}
|
|
2521
|
+
.rcf-pill--warn {
|
|
2522
|
+
background: var(--sv-warningbg);
|
|
2523
|
+
color: var(--sv-warning);
|
|
2524
|
+
border-color: transparent;
|
|
2525
|
+
}
|
|
2526
|
+
.rcf-pill--fail {
|
|
2527
|
+
background: var(--sv-dangerbg);
|
|
2528
|
+
color: var(--sv-danger);
|
|
2529
|
+
border-color: transparent;
|
|
2530
|
+
}
|
|
2531
|
+
.rcf-pill--info {
|
|
2532
|
+
background: var(--sv-active);
|
|
2533
|
+
color: var(--sv-link);
|
|
2534
|
+
border-color: transparent;
|
|
2535
|
+
}
|
|
2536
|
+
|
|
2537
|
+
/* ---- Readiness PO layer (viewer UI refresh PR 8, TAC-4133, ADR-4135) --- */
|
|
2538
|
+
|
|
2539
|
+
.rcf-po-verdicts {
|
|
2540
|
+
display: grid;
|
|
2541
|
+
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
|
|
2542
|
+
gap: 0.75rem;
|
|
2543
|
+
align-items: stretch;
|
|
2544
|
+
margin: 0.5rem 0 1rem;
|
|
2545
|
+
}
|
|
2546
|
+
.rcf-po-verdict {
|
|
2547
|
+
background: var(--sv-surface);
|
|
2548
|
+
border: 1px solid var(--sv-border);
|
|
2549
|
+
border-radius: 10px;
|
|
2550
|
+
padding: 1rem;
|
|
2551
|
+
display: flex;
|
|
2552
|
+
flex-direction: column;
|
|
2553
|
+
gap: 0.3rem;
|
|
2554
|
+
height: 100%;
|
|
2555
|
+
}
|
|
2556
|
+
.rcf-po-verdict--build { opacity: 0.95; }
|
|
2557
|
+
.rcf-po-verdict__eyebrow {
|
|
2558
|
+
font-size: 0.78rem;
|
|
2559
|
+
text-transform: uppercase;
|
|
2560
|
+
letter-spacing: 0.05em;
|
|
2561
|
+
margin: 0;
|
|
2562
|
+
}
|
|
2563
|
+
.rcf-po-verdict__heading {
|
|
2564
|
+
font-size: 1.2rem;
|
|
2565
|
+
margin: 0.1rem 0 0.3rem;
|
|
2566
|
+
display: flex;
|
|
2567
|
+
align-items: center;
|
|
2568
|
+
gap: 0.4rem;
|
|
2569
|
+
flex-wrap: wrap;
|
|
2570
|
+
}
|
|
2571
|
+
.rcf-po-verdict__count {
|
|
2572
|
+
margin: 0.1rem 0;
|
|
2573
|
+
}
|
|
2574
|
+
.rcf-po-verdict__verdict {
|
|
2575
|
+
margin-top: auto;
|
|
2576
|
+
padding-top: 0.4rem;
|
|
2577
|
+
font-size: 0.78rem;
|
|
2578
|
+
}
|
|
2579
|
+
.rcf-po-verdict__verdict code {
|
|
2580
|
+
background: var(--sv-code);
|
|
2581
|
+
padding: 0.1rem 0.3rem;
|
|
2582
|
+
border-radius: 0.25rem;
|
|
2583
|
+
word-break: break-word;
|
|
2584
|
+
display: inline-block;
|
|
2585
|
+
max-width: 100%;
|
|
2586
|
+
}
|
|
2587
|
+
.rcf-chain-term {
|
|
2588
|
+
font-family: var(--sv-mono);
|
|
2589
|
+
font-size: 0.72rem;
|
|
2590
|
+
font-weight: 400;
|
|
2591
|
+
color: var(--sv-muted);
|
|
2592
|
+
margin-left: 0.25rem;
|
|
2593
|
+
vertical-align: middle;
|
|
2594
|
+
}
|
|
2595
|
+
|
|
2596
|
+
.rcf-po-questions,
|
|
2597
|
+
.rcf-po-next,
|
|
2598
|
+
.rcf-po-reqwork,
|
|
2599
|
+
.rcf-po-engineer-section {
|
|
2600
|
+
margin-top: 1.25rem;
|
|
2601
|
+
}
|
|
2602
|
+
.rcf-po-questions__head,
|
|
2603
|
+
.rcf-po-reqwork > h2 {
|
|
2604
|
+
display: flex;
|
|
2605
|
+
align-items: baseline;
|
|
2606
|
+
gap: 0.5rem;
|
|
2607
|
+
}
|
|
2608
|
+
.rcf-po-questions__head h2 { margin: 0; font-size: 1.2rem; }
|
|
2609
|
+
.rcf-po-reqwork > h2 { font-size: 1.2rem; margin: 0 0 0.3rem; }
|
|
2610
|
+
.rcf-po-next > h2 { font-size: 1.2rem; margin: 0 0 0.4rem; }
|
|
2611
|
+
|
|
2612
|
+
.rcf-po-question-group {
|
|
2613
|
+
background: var(--sv-surface);
|
|
2614
|
+
border: 1px solid var(--sv-border);
|
|
2615
|
+
border-radius: 10px;
|
|
2616
|
+
padding: 0.75rem 1rem;
|
|
2617
|
+
margin: 0.75rem 0 0;
|
|
2618
|
+
}
|
|
2619
|
+
.rcf-po-question-group--optional {
|
|
2620
|
+
border-style: dashed;
|
|
2621
|
+
}
|
|
2622
|
+
.rcf-po-question-group__head { margin-bottom: 0.3rem; }
|
|
2623
|
+
.rcf-po-question-group__head h3 {
|
|
2624
|
+
margin: 0;
|
|
2625
|
+
color: var(--sv-muted);
|
|
2626
|
+
font-size: 0.85rem;
|
|
2627
|
+
text-transform: uppercase;
|
|
2628
|
+
letter-spacing: 0.05em;
|
|
2629
|
+
}
|
|
2630
|
+
.rcf-po-question {
|
|
2631
|
+
padding: 0.55rem 0;
|
|
2632
|
+
border-top: 1px solid var(--sv-border);
|
|
2633
|
+
}
|
|
2634
|
+
.rcf-po-question:first-of-type { border-top: 0; }
|
|
2635
|
+
.rcf-po-question__head {
|
|
2636
|
+
display: flex;
|
|
2637
|
+
align-items: baseline;
|
|
2638
|
+
gap: 0.5rem;
|
|
2639
|
+
}
|
|
2640
|
+
.rcf-po-question__heading {
|
|
2641
|
+
margin: 0;
|
|
2642
|
+
font-size: 1rem;
|
|
2643
|
+
}
|
|
2644
|
+
.rcf-po-question__ask {
|
|
2645
|
+
margin: 0.35rem 0 0.2rem;
|
|
2646
|
+
}
|
|
2647
|
+
.rcf-po-question__hint { margin: 0; }
|
|
2648
|
+
.rcf-po-question__detail {
|
|
2649
|
+
margin-top: 0.4rem;
|
|
2650
|
+
}
|
|
2651
|
+
.rcf-po-question__detail summary { cursor: pointer; }
|
|
2652
|
+
|
|
2653
|
+
.rcf-badge--q {
|
|
2654
|
+
display: inline-block;
|
|
2655
|
+
padding: 0 0.5rem;
|
|
2656
|
+
border-radius: 0.3rem;
|
|
2657
|
+
font-size: 0.72rem;
|
|
2658
|
+
font-weight: 700;
|
|
2659
|
+
background: var(--sv-raised);
|
|
2660
|
+
color: var(--sv-muted);
|
|
2661
|
+
border: 1px solid var(--sv-border);
|
|
2662
|
+
white-space: nowrap;
|
|
2663
|
+
}
|
|
2664
|
+
.rcf-badge--count {
|
|
2665
|
+
display: inline-block;
|
|
2666
|
+
padding: 0 0.5rem;
|
|
2667
|
+
border-radius: 0.3rem;
|
|
2668
|
+
font-size: 0.78rem;
|
|
2669
|
+
font-weight: 700;
|
|
2670
|
+
background: var(--sv-raised);
|
|
2671
|
+
color: var(--sv-muted);
|
|
2672
|
+
border: 1px solid var(--sv-border);
|
|
2673
|
+
white-space: nowrap;
|
|
2674
|
+
}
|
|
2675
|
+
|
|
2676
|
+
.rcf-po-next__card {
|
|
2677
|
+
background: var(--sv-surface);
|
|
2678
|
+
border: 1px solid var(--sv-border);
|
|
2679
|
+
border-radius: 10px;
|
|
2680
|
+
padding: 0.75rem 1rem;
|
|
2681
|
+
}
|
|
2682
|
+
.rcf-po-next__card p { margin: 0.35rem 0; }
|
|
2683
|
+
|
|
2684
|
+
.rcf-po-reqwork__table {
|
|
2685
|
+
width: 100%;
|
|
2686
|
+
border-collapse: collapse;
|
|
2687
|
+
font-size: 0.9rem;
|
|
2688
|
+
margin-top: 0.3rem;
|
|
2689
|
+
}
|
|
2690
|
+
.rcf-po-reqwork__table th,
|
|
2691
|
+
.rcf-po-reqwork__table td {
|
|
2692
|
+
text-align: left;
|
|
2693
|
+
padding: 0.45rem 0.5rem;
|
|
2694
|
+
border-bottom: 1px solid var(--sv-border);
|
|
2695
|
+
vertical-align: top;
|
|
2696
|
+
}
|
|
2697
|
+
.rcf-po-reqwork__table th {
|
|
2698
|
+
color: var(--sv-muted);
|
|
2699
|
+
font-weight: 700;
|
|
2700
|
+
font-size: 0.75rem;
|
|
2701
|
+
text-transform: uppercase;
|
|
2702
|
+
letter-spacing: 0.05em;
|
|
2703
|
+
}
|
|
2704
|
+
.rcf-po-reqwork__id {
|
|
2705
|
+
color: var(--sv-link);
|
|
2706
|
+
font-family: var(--sv-mono);
|
|
2707
|
+
}
|
|
2708
|
+
.rcf-po-reqwork__empty {
|
|
2709
|
+
padding: 1rem;
|
|
2710
|
+
border: 1px dashed var(--sv-control);
|
|
2711
|
+
border-radius: 0.5rem;
|
|
2712
|
+
color: var(--sv-muted);
|
|
2713
|
+
text-align: center;
|
|
2714
|
+
margin: 0.3rem 0 0;
|
|
2715
|
+
}
|
|
2716
|
+
|
|
2717
|
+
.rcf-po-engineer-section .rcf-row.doc-row {
|
|
2718
|
+
border: 1px solid var(--sv-border);
|
|
2719
|
+
border-radius: 10px;
|
|
2720
|
+
background: var(--sv-surface);
|
|
2721
|
+
}
|
|
2722
|
+
.rcf-po-engineer-section .rcf-row.doc-row > summary {
|
|
2723
|
+
padding: 0.6rem 0.9rem;
|
|
2724
|
+
}
|
|
2725
|
+
.rcf-po-engineer-section .rcf-row.doc-row > summary .id {
|
|
2726
|
+
font-family: var(--sv-font);
|
|
2727
|
+
color: var(--sv-ink);
|
|
2728
|
+
font-weight: 700;
|
|
2729
|
+
}
|
|
2730
|
+
|
|
2731
|
+
.rcf-stage-legend {
|
|
2732
|
+
border: 1px solid var(--sv-border);
|
|
2733
|
+
border-radius: 10px;
|
|
2734
|
+
background: var(--sv-surface);
|
|
2735
|
+
color: var(--sv-ink);
|
|
2736
|
+
padding: 1rem 1.25rem;
|
|
2737
|
+
max-width: 48rem;
|
|
2738
|
+
width: calc(100vw - 2rem);
|
|
2739
|
+
}
|
|
2740
|
+
.rcf-stage-legend::backdrop { background: rgba(17, 25, 39, 0.45); }
|
|
2741
|
+
.rcf-stage-legend__head {
|
|
2742
|
+
display: flex;
|
|
2743
|
+
align-items: baseline;
|
|
2744
|
+
gap: 0.75rem;
|
|
2745
|
+
margin-bottom: 0.4rem;
|
|
2746
|
+
}
|
|
2747
|
+
.rcf-stage-legend__head h2 {
|
|
2748
|
+
flex: 1;
|
|
2749
|
+
font-size: 1.1rem;
|
|
2750
|
+
margin: 0;
|
|
2751
|
+
}
|
|
2752
|
+
.rcf-stage-legend__intro {
|
|
2753
|
+
margin: 0.1rem 0 0.6rem;
|
|
2754
|
+
font-size: 0.85rem;
|
|
2755
|
+
}
|
|
2756
|
+
.rcf-stage-legend__table {
|
|
2757
|
+
width: 100%;
|
|
2758
|
+
border-collapse: collapse;
|
|
2759
|
+
font-size: 0.9rem;
|
|
2760
|
+
}
|
|
2761
|
+
.rcf-stage-legend__table th,
|
|
2762
|
+
.rcf-stage-legend__table td {
|
|
2763
|
+
text-align: left;
|
|
2764
|
+
padding: 0.4rem 0.5rem;
|
|
2765
|
+
border-bottom: 1px solid var(--sv-border);
|
|
2766
|
+
vertical-align: top;
|
|
2767
|
+
}
|
|
2768
|
+
.rcf-stage-legend__table th {
|
|
2769
|
+
color: var(--sv-muted);
|
|
2770
|
+
font-size: 0.75rem;
|
|
2771
|
+
text-transform: uppercase;
|
|
2772
|
+
letter-spacing: 0.05em;
|
|
2773
|
+
}
|
|
2774
|
+
.rcf-stage-legend__table tr.rcf-stage-legend__highlighted td {
|
|
2775
|
+
background: var(--sv-active);
|
|
2776
|
+
}
|
|
2777
|
+
.rcf-stage-legend__table .rcf-stage-legend__code code {
|
|
2778
|
+
color: var(--sv-link);
|
|
2779
|
+
}
|
|
2780
|
+
.rcf-stage-legend__close {
|
|
2781
|
+
min-height: 2rem;
|
|
2782
|
+
padding: 0 0.75rem;
|
|
2783
|
+
border-radius: 0.375rem;
|
|
2784
|
+
border: 1px solid var(--sv-control);
|
|
2785
|
+
background: var(--sv-surface);
|
|
2786
|
+
color: var(--sv-ink);
|
|
2787
|
+
cursor: pointer;
|
|
2788
|
+
}
|
|
2789
|
+
.rcf-stage-legend__close:hover { background: var(--sv-raised); }
|
|
2790
|
+
|
|
2791
|
+
[data-rcf-stage-ref] { cursor: pointer; }
|
|
2792
|
+
[data-rcf-stage-ref]:focus-visible {
|
|
2793
|
+
outline: 2px solid var(--sv-focus);
|
|
2794
|
+
outline-offset: 1px;
|
|
1160
2795
|
}
|