@refrakt-md/lumina 0.15.0 → 0.16.1
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/base.css +1 -0
- package/contracts/structures.json +71 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +11 -0
- package/dist/tokens.js.map +1 -1
- package/index.css +7 -5
- package/package.json +4 -4
- package/styles/elements/code.css +72 -0
- package/styles/layouts/docs.css +17 -0
- package/styles/layouts/split.css +53 -11
- package/styles/layouts/theme-toggle.css +67 -0
- package/styles/runes/accordion.css +56 -16
- package/styles/runes/aggregate.css +75 -0
- package/styles/runes/badge.css +20 -16
- package/styles/runes/card.css +83 -0
- package/styles/runes/codegroup.css +13 -0
- package/styles/runes/collection.css +166 -0
- package/styles/runes/conversation.css +8 -3
- package/styles/runes/diff.css +77 -9
- package/styles/runes/drawer.css +51 -6
- package/styles/runes/file-ref.css +31 -0
- package/styles/runes/nav.css +15 -0
- package/styles/runes/progress.css +49 -0
- package/styles/runes/relationships.css +132 -0
- package/tokens/base.css +14 -0
- package/styles/runes/backlog.css +0 -108
- package/styles/runes/decision-log.css +0 -46
- package/styles/runes/plan-activity.css +0 -87
- package/styles/runes/plan-entity-tabs.css +0 -88
- package/styles/runes/plan-relationships.css +0 -40
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* progress — generic completion bar (SPEC-072 / WORK-285).
|
|
2
|
+
*
|
|
3
|
+
* Presentational: the fill width is driven by the `--rf-progress` custom
|
|
4
|
+
* property set on the root from the computed percent. Generalized from the
|
|
5
|
+
* former plan milestone progress bar.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.rf-progress {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-wrap: wrap;
|
|
11
|
+
align-items: baseline;
|
|
12
|
+
gap: var(--rf-spacing-xs) var(--rf-spacing-sm);
|
|
13
|
+
margin: var(--rf-spacing-sm) 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.rf-progress__label {
|
|
17
|
+
font-weight: 600;
|
|
18
|
+
color: var(--rf-color-text);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.rf-progress__value {
|
|
22
|
+
font-weight: 600;
|
|
23
|
+
color: var(--rf-color-text);
|
|
24
|
+
margin-left: auto;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.rf-progress__track {
|
|
28
|
+
flex-basis: 100%;
|
|
29
|
+
height: 0.5rem;
|
|
30
|
+
border-radius: var(--rf-radius-pill, 999px);
|
|
31
|
+
background: var(--rf-color-surface-hover);
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.rf-progress__fill {
|
|
36
|
+
display: block;
|
|
37
|
+
height: 100%;
|
|
38
|
+
width: var(--rf-progress, 0%);
|
|
39
|
+
border-radius: inherit;
|
|
40
|
+
background: var(--rf-color-primary);
|
|
41
|
+
transition: width 0.3s ease;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Sentiment variants tint the fill; the neutral default uses the primary.
|
|
45
|
+
* Token names follow the sentiment scheme in dimensions/metadata.css
|
|
46
|
+
* (positive→success, caution→warning, negative→danger). */
|
|
47
|
+
.rf-progress--positive .rf-progress__fill { background: var(--rf-color-success); }
|
|
48
|
+
.rf-progress--caution .rf-progress__fill { background: var(--rf-color-warning); }
|
|
49
|
+
.rf-progress--negative .rf-progress__fill { background: var(--rf-color-danger); }
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/* Relationships — an entity's graph edges, grouped by kind (SPEC-072).
|
|
2
|
+
*
|
|
3
|
+
* Generic over kind: the rune emits `data-kind` on each item and a humanized
|
|
4
|
+
* group heading per kind. Mirrors collection's list chrome.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
.rf-relationships {
|
|
8
|
+
margin: var(--rf-spacing-md) 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.rf-relationships__preamble > :first-child { margin-top: 0; }
|
|
12
|
+
|
|
13
|
+
.rf-relationships__empty {
|
|
14
|
+
color: var(--rf-color-muted);
|
|
15
|
+
font-size: 0.9375em;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.rf-relationships__items {
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
gap: var(--rf-spacing-sm);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* grid arranges edges into responsive columns; list stays a stacked flow.
|
|
25
|
+
* Mirrors collection: item chrome comes from the item (the card built-in, or
|
|
26
|
+
* a {% card %} in the body template), not the layout. */
|
|
27
|
+
.rf-relationships[data-layout='grid'] .rf-relationships__items {
|
|
28
|
+
display: grid;
|
|
29
|
+
grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
|
|
30
|
+
gap: var(--rf-spacing-md);
|
|
31
|
+
align-items: stretch;
|
|
32
|
+
}
|
|
33
|
+
.rf-relationships[data-layout='grid'] .rf-relationships__item {
|
|
34
|
+
display: flex;
|
|
35
|
+
}
|
|
36
|
+
.rf-relationships[data-layout='grid'] .rf-relationships__item > * {
|
|
37
|
+
flex: 1;
|
|
38
|
+
min-width: 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Grouped grid: the grid belongs to each group (its items are the cells), not
|
|
42
|
+
* to __items — whose children are the group blocks (or the accordion wrapper).
|
|
43
|
+
* Left on __items, each group collapses into a single column. So __items stacks
|
|
44
|
+
* the groups and each group becomes the grid, with its title spanning. */
|
|
45
|
+
.rf-relationships[data-layout='grid'] .rf-relationships__items:has(.rf-relationships__group),
|
|
46
|
+
.rf-relationships[data-layout='grid'] .rf-relationships__items:has(.rf-accordion) {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
gap: var(--rf-spacing-md);
|
|
50
|
+
}
|
|
51
|
+
.rf-relationships[data-layout='grid'] .rf-relationships__group {
|
|
52
|
+
display: grid;
|
|
53
|
+
grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
|
|
54
|
+
gap: var(--rf-spacing-md);
|
|
55
|
+
align-items: stretch;
|
|
56
|
+
}
|
|
57
|
+
.rf-relationships[data-layout='grid'] .rf-relationships__group-title {
|
|
58
|
+
grid-column: 1 / -1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.rf-relationships__group {
|
|
62
|
+
margin-top: var(--rf-spacing-md);
|
|
63
|
+
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
/* Tight default for the built-in inline shape (title + field spans). */
|
|
66
|
+
gap: var(--rf-spacing-xs);
|
|
67
|
+
}
|
|
68
|
+
.rf-relationships__group:first-child {
|
|
69
|
+
margin-top: 0;
|
|
70
|
+
}
|
|
71
|
+
/* Modestly roomier when items carry a body template (block content — more than
|
|
72
|
+
* a one-liner). Body-template items are marked `data-block` by the resolver;
|
|
73
|
+
* the built-in inline title+field rows are not. */
|
|
74
|
+
.rf-relationships__group:has(.rf-relationships__item[data-block]) {
|
|
75
|
+
gap: var(--rf-spacing-sm);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.rf-relationships__group-title {
|
|
79
|
+
margin: 0 0 var(--rf-spacing-sm);
|
|
80
|
+
font-size: 0.875em;
|
|
81
|
+
text-transform: uppercase;
|
|
82
|
+
letter-spacing: 0.05em;
|
|
83
|
+
color: var(--rf-color-muted);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.rf-relationships__item {
|
|
87
|
+
display: flex;
|
|
88
|
+
flex-wrap: wrap;
|
|
89
|
+
align-items: baseline;
|
|
90
|
+
gap: var(--rf-spacing-xs) var(--rf-spacing-sm);
|
|
91
|
+
}
|
|
92
|
+
/* Block-content item — let the body template (card / callout / etc.) fill the
|
|
93
|
+
* container width instead of shrink-fitting. Same `data-block` signal as the
|
|
94
|
+
* group spacing above; trim the template's outer block margins so the group
|
|
95
|
+
* `gap` governs spacing (works for any block content, not a wrapper element). */
|
|
96
|
+
.rf-relationships__item[data-block] {
|
|
97
|
+
display: block;
|
|
98
|
+
}
|
|
99
|
+
.rf-relationships__item[data-block] > :first-child {
|
|
100
|
+
margin-top: 0;
|
|
101
|
+
}
|
|
102
|
+
.rf-relationships__item[data-block] > :last-child {
|
|
103
|
+
margin-bottom: 0;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Card chrome for the grid built-in (mirrors collection's __card). */
|
|
107
|
+
.rf-relationships__card {
|
|
108
|
+
display: flex;
|
|
109
|
+
flex-direction: column;
|
|
110
|
+
gap: var(--rf-spacing-xs);
|
|
111
|
+
padding: var(--rf-spacing-md);
|
|
112
|
+
border: 1px solid var(--rf-color-border);
|
|
113
|
+
border-radius: var(--rf-radius-md);
|
|
114
|
+
background: var(--rf-color-surface);
|
|
115
|
+
}
|
|
116
|
+
.rf-relationships__card:hover {
|
|
117
|
+
background: var(--rf-color-surface-hover);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.rf-relationships__title {
|
|
121
|
+
font-weight: 600;
|
|
122
|
+
color: var(--rf-color-text);
|
|
123
|
+
text-decoration: none;
|
|
124
|
+
}
|
|
125
|
+
.rf-relationships__title:hover {
|
|
126
|
+
color: var(--rf-color-primary);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.rf-relationships__field {
|
|
130
|
+
font-size: 0.875em;
|
|
131
|
+
color: var(--rf-color-muted);
|
|
132
|
+
}
|
package/tokens/base.css
CHANGED
|
@@ -52,6 +52,20 @@
|
|
|
52
52
|
--rf-color-success-bg: #e0eee4;
|
|
53
53
|
--rf-color-success-border: #b8d4be;
|
|
54
54
|
|
|
55
|
+
/* WORK-304 — neutral tint for line highlight (the third
|
|
56
|
+
* `[data-line-status]` value that snippet / codegroup / diff share).
|
|
57
|
+
* Subtle surface tint so highlighted rows read as emphasized but not
|
|
58
|
+
* status-coloured (which would compete with diff's add/remove channel
|
|
59
|
+
* and the semantic palette above). `*-rail` is the optional left-edge
|
|
60
|
+
* border colour; falls back to the primary accent via the consuming
|
|
61
|
+
* CSS for themes that don't override it. */
|
|
62
|
+
--rf-color-line-highlight: color-mix(in srgb, var(--rf-color-text) 6%, transparent);
|
|
63
|
+
--rf-color-line-highlight-rail: var(--rf-color-primary, var(--rf-color-text));
|
|
64
|
+
/* Gutter colour for `pre[data-linenumbers]` line counter. Defers to
|
|
65
|
+
* the existing muted text token by default; themes can pin a
|
|
66
|
+
* dedicated hue without overriding muted. */
|
|
67
|
+
--rf-color-line-number: var(--rf-color-muted);
|
|
68
|
+
|
|
55
69
|
/* Radii */
|
|
56
70
|
--rf-radius-sm: 6px;
|
|
57
71
|
--rf-radius-md: 10px;
|
package/styles/runes/backlog.css
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/* Backlog */
|
|
2
|
-
|
|
3
|
-
/* Group sections */
|
|
4
|
-
.rf-backlog__group {
|
|
5
|
-
margin-bottom: 1.5rem;
|
|
6
|
-
}
|
|
7
|
-
.rf-backlog__group-title {
|
|
8
|
-
font-size: 0.8125rem;
|
|
9
|
-
font-weight: 700;
|
|
10
|
-
text-transform: uppercase;
|
|
11
|
-
letter-spacing: 0.05em;
|
|
12
|
-
color: var(--rf-color-muted);
|
|
13
|
-
margin: 0 0 0.5rem;
|
|
14
|
-
padding-bottom: 0.375rem;
|
|
15
|
-
border-bottom: 1px solid var(--rf-color-border);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* Cards — mini rune surface */
|
|
19
|
-
.rf-backlog__card {
|
|
20
|
-
display: flex;
|
|
21
|
-
flex-direction: column;
|
|
22
|
-
gap: 0.375rem;
|
|
23
|
-
padding: 0.75rem 1rem;
|
|
24
|
-
border-radius: var(--rf-radius-md);
|
|
25
|
-
background: var(--rf-color-surface);
|
|
26
|
-
margin-bottom: 0.5rem;
|
|
27
|
-
transition: box-shadow 200ms ease;
|
|
28
|
-
}
|
|
29
|
-
.rf-backlog__card:hover {
|
|
30
|
-
box-shadow: var(--rf-shadow-md);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/* Card link — suppress underline */
|
|
34
|
-
.rf-backlog__card-link {
|
|
35
|
-
text-decoration: none;
|
|
36
|
-
color: inherit;
|
|
37
|
-
display: flex;
|
|
38
|
-
flex-direction: column;
|
|
39
|
-
gap: 0.375rem;
|
|
40
|
-
}
|
|
41
|
-
.rf-backlog__card-link:hover {
|
|
42
|
-
text-decoration: none;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/* ─── Header row: ID left, status + progress right ──────────────────── */
|
|
46
|
-
.rf-backlog__card [data-section="header"] {
|
|
47
|
-
display: flex;
|
|
48
|
-
align-items: center;
|
|
49
|
-
justify-content: space-between;
|
|
50
|
-
gap: 0.5rem;
|
|
51
|
-
margin-bottom: 0;
|
|
52
|
-
}
|
|
53
|
-
.rf-backlog__card-header-left,
|
|
54
|
-
.rf-backlog__card-header-right {
|
|
55
|
-
display: inline-flex;
|
|
56
|
-
align-items: center;
|
|
57
|
-
gap: 0.5rem;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/* Strip borders and pill styling from header badges — doubled class for specificity */
|
|
61
|
-
.rf-backlog__card [data-section="header"] [data-meta-type][data-meta-type] {
|
|
62
|
-
border: none;
|
|
63
|
-
padding: 0;
|
|
64
|
-
border-radius: 0;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/* Suppress sentiment circles in header */
|
|
68
|
-
.rf-backlog__card [data-section="header"] [data-meta-sentiment]::before {
|
|
69
|
-
display: none;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/* ─── Body: title ───────────────────────────────────────────────────── */
|
|
73
|
-
.rf-backlog__card [data-section="title"] {
|
|
74
|
-
font-size: 0.9375rem;
|
|
75
|
-
font-weight: 600;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/* ─── Footer row: uniform secondary pills ───────────────────────────── */
|
|
79
|
-
.rf-backlog__card [data-section="footer"] {
|
|
80
|
-
display: flex;
|
|
81
|
-
flex-wrap: wrap;
|
|
82
|
-
align-items: center;
|
|
83
|
-
gap: 0.375rem;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/* Normalize all footer pills to same size regardless of rank/type */
|
|
87
|
-
.rf-backlog__card [data-section="footer"] [data-meta-type] {
|
|
88
|
-
font-size: 0.75rem;
|
|
89
|
-
padding: 0.25em 0.75em;
|
|
90
|
-
opacity: 1;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/* Checklist progress badge — plain text in header.
|
|
94
|
-
Override checklist dimension styles that match [data-checked]. */
|
|
95
|
-
.rf-backlog__card-progress {
|
|
96
|
-
font-family: var(--rf-font-mono);
|
|
97
|
-
font-size: 0.75rem;
|
|
98
|
-
font-weight: 600;
|
|
99
|
-
color: var(--rf-color-muted);
|
|
100
|
-
border: none;
|
|
101
|
-
padding: 0;
|
|
102
|
-
padding-left: 0;
|
|
103
|
-
margin-left: 0;
|
|
104
|
-
position: static;
|
|
105
|
-
}
|
|
106
|
-
.rf-backlog__card-progress::before {
|
|
107
|
-
display: none;
|
|
108
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/* Decision Log */
|
|
2
|
-
|
|
3
|
-
/* Entry list */
|
|
4
|
-
.rf-decision-log__list {
|
|
5
|
-
list-style: none;
|
|
6
|
-
padding: 0;
|
|
7
|
-
margin: 0;
|
|
8
|
-
}
|
|
9
|
-
.rf-decision-log__entry {
|
|
10
|
-
display: flex;
|
|
11
|
-
flex-direction: column;
|
|
12
|
-
gap: 0.25rem;
|
|
13
|
-
padding: 0.75rem 1rem;
|
|
14
|
-
border-radius: var(--rf-radius-md);
|
|
15
|
-
background: var(--rf-color-surface);
|
|
16
|
-
margin-bottom: 0.5rem;
|
|
17
|
-
transition: box-shadow 200ms ease;
|
|
18
|
-
}
|
|
19
|
-
.rf-decision-log__entry:hover {
|
|
20
|
-
box-shadow: var(--rf-shadow-md);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/* Entry link — suppress underline */
|
|
24
|
-
.rf-decision-log__link {
|
|
25
|
-
text-decoration: none;
|
|
26
|
-
color: inherit;
|
|
27
|
-
display: flex;
|
|
28
|
-
flex-direction: column;
|
|
29
|
-
gap: 0.25rem;
|
|
30
|
-
}
|
|
31
|
-
.rf-decision-log__link:hover {
|
|
32
|
-
text-decoration: none;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/* Entry title — smaller than full rune */
|
|
36
|
-
.rf-decision-log__entry [data-section="title"] {
|
|
37
|
-
font-size: 0.9375rem;
|
|
38
|
-
font-weight: 600;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/* Superseded/deprecated entries — muted with strikethrough */
|
|
42
|
-
.rf-decision-log__entry[data-status="superseded"] [data-section="title"],
|
|
43
|
-
.rf-decision-log__entry[data-status="deprecated"] [data-section="title"] {
|
|
44
|
-
color: var(--rf-color-muted);
|
|
45
|
-
text-decoration: line-through;
|
|
46
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/* Plan Activity */
|
|
2
|
-
.rf-plan-activity__list {
|
|
3
|
-
list-style: none;
|
|
4
|
-
padding: 0;
|
|
5
|
-
margin: 0;
|
|
6
|
-
}
|
|
7
|
-
.rf-plan-activity__entry {
|
|
8
|
-
display: flex;
|
|
9
|
-
align-items: baseline;
|
|
10
|
-
gap: 0.5rem;
|
|
11
|
-
padding: 0.25rem 0.5rem;
|
|
12
|
-
border-radius: var(--rf-radius-sm);
|
|
13
|
-
font-size: 0.8125rem;
|
|
14
|
-
}
|
|
15
|
-
.rf-plan-activity__entry:nth-child(odd) {
|
|
16
|
-
background: var(--rf-color-surface);
|
|
17
|
-
}
|
|
18
|
-
.rf-plan-activity__date {
|
|
19
|
-
font-family: var(--rf-font-mono);
|
|
20
|
-
font-size: 0.75rem;
|
|
21
|
-
color: var(--rf-color-muted);
|
|
22
|
-
white-space: nowrap;
|
|
23
|
-
}
|
|
24
|
-
.rf-plan-activity__type {
|
|
25
|
-
font-size: 0.75rem;
|
|
26
|
-
text-transform: uppercase;
|
|
27
|
-
letter-spacing: 0.05em;
|
|
28
|
-
color: var(--rf-color-muted);
|
|
29
|
-
min-width: 4rem;
|
|
30
|
-
}
|
|
31
|
-
.rf-plan-activity__id {
|
|
32
|
-
font-family: var(--rf-font-mono);
|
|
33
|
-
font-size: 0.75rem;
|
|
34
|
-
color: var(--rf-color-primary);
|
|
35
|
-
white-space: nowrap;
|
|
36
|
-
}
|
|
37
|
-
.rf-plan-activity__status {
|
|
38
|
-
font-size: 0.75rem;
|
|
39
|
-
padding: 0.0625rem 0.375rem;
|
|
40
|
-
border-radius: var(--rf-radius-sm);
|
|
41
|
-
white-space: nowrap;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* Status badge colors */
|
|
45
|
-
.rf-plan-activity__status[data-status="done"],
|
|
46
|
-
.rf-plan-activity__status[data-status="fixed"],
|
|
47
|
-
.rf-plan-activity__status[data-status="accepted"] {
|
|
48
|
-
color: var(--rf-color-success);
|
|
49
|
-
background: var(--rf-color-success-bg);
|
|
50
|
-
}
|
|
51
|
-
.rf-plan-activity__status[data-status="in-progress"],
|
|
52
|
-
.rf-plan-activity__status[data-status="confirmed"],
|
|
53
|
-
.rf-plan-activity__status[data-status="review"] {
|
|
54
|
-
color: var(--rf-color-warning);
|
|
55
|
-
background: var(--rf-color-warning-bg);
|
|
56
|
-
}
|
|
57
|
-
.rf-plan-activity__status[data-status="ready"],
|
|
58
|
-
.rf-plan-activity__status[data-status="reported"],
|
|
59
|
-
.rf-plan-activity__status[data-status="proposed"] {
|
|
60
|
-
color: var(--rf-color-info);
|
|
61
|
-
background: var(--rf-color-info-bg);
|
|
62
|
-
}
|
|
63
|
-
.rf-plan-activity__status[data-status="blocked"] {
|
|
64
|
-
color: var(--rf-color-danger);
|
|
65
|
-
background: var(--rf-color-danger-bg);
|
|
66
|
-
}
|
|
67
|
-
.rf-plan-activity__status[data-status="draft"] {
|
|
68
|
-
color: var(--rf-color-muted);
|
|
69
|
-
background: var(--rf-color-surface-active);
|
|
70
|
-
}
|
|
71
|
-
.rf-plan-activity__title {
|
|
72
|
-
color: var(--rf-color-text);
|
|
73
|
-
overflow: hidden;
|
|
74
|
-
text-overflow: ellipsis;
|
|
75
|
-
white-space: nowrap;
|
|
76
|
-
}
|
|
77
|
-
.rf-plan-activity__link {
|
|
78
|
-
display: flex;
|
|
79
|
-
align-items: baseline;
|
|
80
|
-
gap: 0.5rem;
|
|
81
|
-
color: inherit;
|
|
82
|
-
text-decoration: none;
|
|
83
|
-
width: 100%;
|
|
84
|
-
}
|
|
85
|
-
.rf-plan-activity__link:hover .rf-plan-activity__title {
|
|
86
|
-
color: var(--rf-color-primary);
|
|
87
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/* Plan Entity Tabs — page-level tab navigation for spec/work/bug/decision pages */
|
|
2
|
-
|
|
3
|
-
.rf-plan-entity-tabs {
|
|
4
|
-
margin-block-start: var(--rf-spacing-lg, 1.5rem);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
/* Tab bar — underline style matching the core tabs rune */
|
|
8
|
-
.rf-plan-entity-tabs__tabs {
|
|
9
|
-
display: flex;
|
|
10
|
-
border-bottom: 1px solid var(--rf-color-border, #dee2e6);
|
|
11
|
-
gap: 0;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/* Tab buttons */
|
|
15
|
-
.rf-plan-entity-tabs__tab {
|
|
16
|
-
flex: 0 0 auto;
|
|
17
|
-
padding: 0.625rem 1.25rem;
|
|
18
|
-
font-size: 0.875rem;
|
|
19
|
-
font-weight: 500;
|
|
20
|
-
font-family: inherit;
|
|
21
|
-
color: var(--rf-color-muted, #868e96);
|
|
22
|
-
background: none;
|
|
23
|
-
border: none;
|
|
24
|
-
border-bottom: 2px solid transparent;
|
|
25
|
-
cursor: pointer;
|
|
26
|
-
transition: color 200ms ease, border-color 200ms ease;
|
|
27
|
-
white-space: nowrap;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.rf-plan-entity-tabs__tab:hover {
|
|
31
|
-
color: var(--rf-color-text, #212529);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.rf-plan-entity-tabs__tab--active,
|
|
35
|
-
.rf-plan-entity-tabs__tab[data-state="active"] {
|
|
36
|
-
color: var(--rf-color-primary, #228be6);
|
|
37
|
-
border-bottom-color: var(--rf-color-primary, #228be6);
|
|
38
|
-
font-weight: 600;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/* Panels container */
|
|
42
|
-
.rf-plan-entity-tabs__panels {
|
|
43
|
-
padding: 0;
|
|
44
|
-
margin: 0;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/* Individual panel */
|
|
48
|
-
.rf-plan-entity-tabs__panel {
|
|
49
|
-
padding-block-start: var(--rf-spacing-lg, 1.5rem);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.rf-plan-entity-tabs__panel > *:first-child {
|
|
53
|
-
margin-top: 0;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.rf-plan-entity-tabs__panel > *:last-child {
|
|
57
|
-
margin-bottom: 0;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/* When inside entity tabs, relationships and history sections don't need
|
|
61
|
-
their own heading — the tab label provides the context */
|
|
62
|
-
.rf-plan-entity-tabs__panel .rf-plan-relationships__heading,
|
|
63
|
-
.rf-plan-entity-tabs__panel .rf-plan-history__heading {
|
|
64
|
-
display: none;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/* Remove top margin, padding, and border from relationships/history sections when inside a tab panel */
|
|
68
|
-
.rf-plan-entity-tabs__panel .rf-plan-relationships,
|
|
69
|
-
.rf-plan-entity-tabs__panel .rf-plan-history {
|
|
70
|
-
margin-block-start: 0;
|
|
71
|
-
padding-block-start: 0;
|
|
72
|
-
border-block-start: none;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/* ---- TOC dimming when non-Overview tab is active ---- */
|
|
76
|
-
|
|
77
|
-
/* Desktop TOC: dim when a non-overview tab is active */
|
|
78
|
-
:has([data-active-tab]:not([data-active-tab="overview"])) .rf-plan-toc {
|
|
79
|
-
opacity: 0.3;
|
|
80
|
-
pointer-events: none;
|
|
81
|
-
transition: opacity 200ms ease;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
:has([data-active-tab="overview"]) .rf-plan-toc {
|
|
85
|
-
opacity: 1;
|
|
86
|
-
pointer-events: auto;
|
|
87
|
-
transition: opacity 200ms ease;
|
|
88
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/* Plan relationships section */
|
|
2
|
-
|
|
3
|
-
.rf-plan-relationships {
|
|
4
|
-
margin-top: 2rem;
|
|
5
|
-
padding-top: 1.5rem;
|
|
6
|
-
border-top: 1px solid var(--rf-color-border, #dee2e6);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.rf-plan-relationships__heading {
|
|
10
|
-
font-size: 1.125rem;
|
|
11
|
-
font-weight: 600;
|
|
12
|
-
color: var(--rf-color-text, #212529);
|
|
13
|
-
margin: 0 0 1rem;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.rf-plan-relationships__group {
|
|
17
|
-
margin-bottom: 1rem;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.rf-plan-relationships__group-title {
|
|
21
|
-
font-size: 0.8125rem;
|
|
22
|
-
font-weight: 600;
|
|
23
|
-
text-transform: uppercase;
|
|
24
|
-
letter-spacing: 0.04em;
|
|
25
|
-
color: var(--rf-color-muted, #6c757d);
|
|
26
|
-
margin: 0 0 0.375rem;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.rf-plan-relationships__group[data-kind="blocked-by"] .rf-plan-relationships__group-title {
|
|
30
|
-
color: var(--rf-color-danger, #ff6b6b);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.rf-plan-relationships__group[data-kind="blocks"] .rf-plan-relationships__group-title {
|
|
34
|
-
color: var(--rf-color-warning, #f59f00);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.rf-plan-relationships__cards {
|
|
38
|
-
display: flex;
|
|
39
|
-
flex-direction: column;
|
|
40
|
-
}
|