@refrakt-md/lumina 0.6.0 → 0.7.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/dist/config.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Lumina theme configuration — extends base with icon SVGs */
2
- export declare const luminaConfig: import("@refrakt-md/theme-base").ThemeConfig;
2
+ export declare const luminaConfig: import("@refrakt-md/transform").ThemeConfig;
3
3
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,eAAO,MAAM,YAAY,8CAUvB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,+DAA+D;AAC/D,eAAO,MAAM,YAAY,6CAUvB,CAAC"}
package/dist/config.js CHANGED
@@ -1,4 +1,5 @@
1
- import { baseConfig, mergeThemeConfig } from '@refrakt-md/theme-base';
1
+ import { baseConfig } from '@refrakt-md/runes';
2
+ import { mergeThemeConfig } from '@refrakt-md/transform';
2
3
  import { icons as lucideIcons } from './icons.js';
3
4
  /** Lumina theme configuration — extends base with icon SVGs */
4
5
  export const luminaConfig = mergeThemeConfig(baseConfig, {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAElD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC,UAAU,EAAE;IACxD,KAAK,EAAE;QACN,IAAI,EAAE;YACL,IAAI,EAAE,4SAA4S;YAClT,OAAO,EAAE,iXAAiX;YAC1X,OAAO,EAAE,uSAAuS;YAChT,KAAK,EAAE,qRAAqR;SAC5R;QACD,MAAM,EAAE,WAAW;KACnB;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AAElD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC,UAAU,EAAE;IACxD,KAAK,EAAE;QACN,IAAI,EAAE;YACL,IAAI,EAAE,4SAA4S;YAClT,OAAO,EAAE,iXAAiX;YAC1X,OAAO,EAAE,uSAAuS;YAChT,KAAK,EAAE,qRAAqR;SAC5R;QACD,MAAM,EAAE,WAAW;KACnB;CACD,CAAC,CAAC"}
package/index.css CHANGED
@@ -18,14 +18,19 @@
18
18
  @import './styles/layouts/docs.css';
19
19
  @import './styles/layouts/blog.css';
20
20
  @import './styles/layouts/on-this-page.css';
21
+ @import './styles/layouts/search.css';
22
+ @import './styles/layouts/version-switcher.css';
21
23
 
22
24
  /* Runes */
23
25
  @import './styles/runes/accordion.css';
24
26
  @import './styles/runes/annotate.css';
25
27
  @import './styles/runes/api.css';
26
28
  @import './styles/runes/bento.css';
29
+ @import './styles/runes/bond.css';
27
30
  @import './styles/runes/breadcrumb.css';
31
+ @import './styles/runes/budget.css';
28
32
  @import './styles/runes/cast.css';
33
+ @import './styles/runes/character.css';
29
34
  @import './styles/runes/changelog.css';
30
35
  @import './styles/runes/chart.css';
31
36
  @import './styles/runes/compare.css';
@@ -39,6 +44,7 @@
39
44
  @import './styles/runes/codegroup.css';
40
45
  @import './styles/runes/embed.css';
41
46
  @import './styles/runes/event.css';
47
+ @import './styles/runes/faction.css';
42
48
  @import './styles/runes/feature.css';
43
49
  @import './styles/runes/figure.css';
44
50
  @import './styles/runes/form.css';
@@ -46,13 +52,17 @@
46
52
  @import './styles/runes/hero.css';
47
53
  @import './styles/runes/hint.css';
48
54
  @import './styles/runes/howto.css';
55
+ @import './styles/runes/lore.css';
56
+ @import './styles/runes/itinerary.css';
49
57
  @import './styles/runes/map.css';
50
58
  @import './styles/runes/nav.css';
51
59
  @import './styles/runes/organization.css';
52
60
  @import './styles/runes/page-section.css';
61
+ @import './styles/runes/plot.css';
53
62
  @import './styles/runes/preview.css';
54
63
  @import './styles/runes/pricing.css';
55
64
  @import './styles/runes/sandbox.css';
65
+ @import './styles/runes/realm.css';
56
66
  @import './styles/runes/recipe.css';
57
67
  @import './styles/runes/reveal.css';
58
68
  @import './styles/runes/sidenote.css';
@@ -68,3 +78,6 @@
68
78
  @import './styles/runes/typography.css';
69
79
  @import './styles/runes/spacing.css';
70
80
  @import './styles/runes/design-context.css';
81
+ @import './styles/runes/pullquote.css';
82
+ @import './styles/runes/textblock.css';
83
+ @import './styles/runes/mediatext.css';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@refrakt-md/lumina",
3
3
  "description": "Lumina theme for refrakt.md — design tokens, CSS, identity transform, and framework adapters",
4
- "version": "0.6.0",
4
+ "version": "0.7.1",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -46,10 +46,10 @@
46
46
  "build": "tsc"
47
47
  },
48
48
  "dependencies": {
49
- "@refrakt-md/theme-base": "0.6.0",
50
- "@refrakt-md/transform": "0.6.0",
51
- "@refrakt-md/types": "0.6.0",
52
- "@refrakt-md/svelte": "0.6.0"
49
+ "@refrakt-md/runes": "0.7.1",
50
+ "@refrakt-md/transform": "0.7.1",
51
+ "@refrakt-md/types": "0.7.1",
52
+ "@refrakt-md/svelte": "0.7.1"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "svelte": "^5.0.0",
@@ -7,9 +7,18 @@
7
7
  .rf-blog-header__inner {
8
8
  display: flex;
9
9
  align-items: center;
10
- justify-content: space-between;
10
+ gap: 1rem;
11
11
  padding: 1.125rem 1.5rem;
12
12
  }
13
+ .rf-blog-header__inner .rf-search-trigger {
14
+ margin-left: auto;
15
+ }
16
+ .rf-blog-header__inner p ~ p {
17
+ order: 1;
18
+ }
19
+ .rf-blog-header__inner .rf-mobile-menu-btn {
20
+ order: 2;
21
+ }
13
22
  .rf-blog-header p {
14
23
  margin: 0;
15
24
  line-height: 1;
@@ -5,9 +5,18 @@
5
5
  .rf-header__inner {
6
6
  display: flex;
7
7
  align-items: center;
8
- justify-content: space-between;
8
+ gap: 1rem;
9
9
  padding: 1.125rem 1.5rem;
10
10
  }
11
+ .rf-header__inner .rf-search-trigger {
12
+ margin-left: auto;
13
+ }
14
+ .rf-header__inner p ~ p {
15
+ order: 1;
16
+ }
17
+ .rf-header__inner .rf-mobile-menu-btn {
18
+ order: 2;
19
+ }
11
20
  .rf-header p {
12
21
  margin: 0;
13
22
  line-height: 1;
@@ -13,9 +13,18 @@
13
13
  .rf-docs-header__inner {
14
14
  display: flex;
15
15
  align-items: center;
16
- justify-content: space-between;
16
+ gap: 1rem;
17
17
  padding: 1.125rem 1.5rem;
18
18
  }
19
+ .rf-docs-header__inner .rf-search-trigger {
20
+ margin-left: auto;
21
+ }
22
+ .rf-docs-header__inner p ~ p {
23
+ order: 1;
24
+ }
25
+ .rf-docs-header__inner .rf-mobile-menu-btn {
26
+ order: 2;
27
+ }
19
28
  .rf-docs-header p {
20
29
  margin: 0;
21
30
  line-height: 1;
@@ -90,8 +99,8 @@
90
99
  }
91
100
  .rf-docs-content__inner--has-toc {
92
101
  display: flex;
93
- gap: 0;
94
- max-width: calc(60rem + 220px);
102
+ gap: 6rem;
103
+ max-width: calc(60rem + 220px + 6rem);
95
104
  }
96
105
  .rf-docs-content__inner--has-toc .rf-docs-content__body {
97
106
  flex: 1;
@@ -0,0 +1,210 @@
1
+ /* Search trigger button */
2
+ .rf-search-trigger {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ gap: 0.5rem;
6
+ padding: 0.375rem 0.625rem 0.375rem 0.5rem;
7
+ border: 1px solid var(--rf-color-border);
8
+ border-radius: var(--rf-radius-full);
9
+ background: var(--rf-color-surface);
10
+ color: var(--rf-color-muted);
11
+ font-size: 0.8rem;
12
+ font-family: var(--rf-font-sans);
13
+ cursor: pointer;
14
+ transition: border-color 0.15s, color 0.15s, background 0.15s;
15
+ line-height: 1;
16
+ white-space: nowrap;
17
+ flex-shrink: 0;
18
+ }
19
+ .rf-search-trigger:hover {
20
+ border-color: var(--rf-color-primary);
21
+ color: var(--rf-color-text);
22
+ background: var(--rf-color-surface-hover);
23
+ }
24
+ .rf-search-trigger svg {
25
+ width: 16px;
26
+ height: 16px;
27
+ flex-shrink: 0;
28
+ }
29
+ .rf-search-trigger__label {
30
+ pointer-events: none;
31
+ }
32
+ .rf-search-trigger__kbd {
33
+ display: inline-flex;
34
+ align-items: center;
35
+ padding: 0.125rem 0.375rem;
36
+ border: 1px solid var(--rf-color-border);
37
+ border-radius: var(--rf-radius-sm);
38
+ background: var(--rf-color-bg);
39
+ font-family: var(--rf-font-sans);
40
+ font-size: 0.7rem;
41
+ line-height: 1.2;
42
+ color: var(--rf-color-muted);
43
+ }
44
+
45
+ /* Search dialog */
46
+ .rf-search-dialog {
47
+ position: fixed;
48
+ top: 15vh;
49
+ left: 50%;
50
+ transform: translateX(-50%);
51
+ width: min(560px, calc(100vw - 2rem));
52
+ max-height: 70vh;
53
+ margin: 0;
54
+ padding: 0;
55
+ border: 1px solid var(--rf-color-border);
56
+ border-radius: var(--rf-radius-lg);
57
+ background: var(--rf-color-bg);
58
+ box-shadow: var(--rf-shadow-lg);
59
+ overflow: hidden;
60
+ font-family: var(--rf-font-sans);
61
+ }
62
+ .rf-search-dialog[open] {
63
+ display: flex;
64
+ flex-direction: column;
65
+ }
66
+ .rf-search-dialog::backdrop {
67
+ background: rgba(0, 0, 0, 0.4);
68
+ }
69
+
70
+ /* Dialog header */
71
+ .rf-search-dialog__header {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 0.75rem;
75
+ padding: 0.875rem 1rem;
76
+ border-bottom: 1px solid var(--rf-color-border);
77
+ }
78
+ .rf-search-dialog__icon {
79
+ flex-shrink: 0;
80
+ color: var(--rf-color-muted);
81
+ }
82
+ .rf-search-dialog__input {
83
+ flex: 1;
84
+ border: none;
85
+ outline: none;
86
+ background: transparent;
87
+ font-size: 1rem;
88
+ font-family: var(--rf-font-sans);
89
+ color: var(--rf-color-text);
90
+ }
91
+ .rf-search-dialog__input::placeholder {
92
+ color: var(--rf-color-muted);
93
+ }
94
+ /* Hide native search clear button */
95
+ .rf-search-dialog__input::-webkit-search-cancel-button {
96
+ display: none;
97
+ }
98
+ .rf-search-dialog__esc {
99
+ display: inline-flex;
100
+ align-items: center;
101
+ padding: 0.125rem 0.375rem;
102
+ border: 1px solid var(--rf-color-border);
103
+ border-radius: var(--rf-radius-sm);
104
+ background: var(--rf-color-surface);
105
+ font-family: var(--rf-font-sans);
106
+ font-size: 0.7rem;
107
+ color: var(--rf-color-muted);
108
+ flex-shrink: 0;
109
+ }
110
+
111
+ /* Dialog body */
112
+ .rf-search-dialog__body {
113
+ flex: 1;
114
+ overflow-y: auto;
115
+ overscroll-behavior: contain;
116
+ }
117
+
118
+ /* Results */
119
+ .rf-search-dialog__results {
120
+ padding: 0.5rem;
121
+ }
122
+ .rf-search-result {
123
+ display: block;
124
+ padding: 0.625rem 0.75rem;
125
+ border-radius: var(--rf-radius-md);
126
+ text-decoration: none;
127
+ color: var(--rf-color-text);
128
+ cursor: pointer;
129
+ }
130
+ .rf-search-result:hover,
131
+ .rf-search-result[data-active] {
132
+ background: var(--rf-color-surface-hover);
133
+ }
134
+ .rf-search-result__title {
135
+ display: block;
136
+ font-weight: 500;
137
+ font-size: 0.875rem;
138
+ line-height: 1.4;
139
+ margin-bottom: 0.125rem;
140
+ }
141
+ .rf-search-result__excerpt {
142
+ display: block;
143
+ font-size: 0.8rem;
144
+ line-height: 1.5;
145
+ color: var(--rf-color-muted);
146
+ }
147
+ .rf-search-result__excerpt mark {
148
+ background: var(--rf-color-primary-100);
149
+ color: var(--rf-color-primary-700);
150
+ border-radius: 2px;
151
+ padding: 0 1px;
152
+ }
153
+
154
+ /* Empty / unavailable state */
155
+ .rf-search-dialog__empty {
156
+ text-align: center;
157
+ padding: 2rem 1rem;
158
+ font-size: 0.875rem;
159
+ color: var(--rf-color-muted);
160
+ }
161
+
162
+ /* Footer */
163
+ .rf-search-dialog__footer {
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 1rem;
167
+ padding: 0.5rem 1rem;
168
+ border-top: 1px solid var(--rf-color-border);
169
+ font-size: 0.7rem;
170
+ color: var(--rf-color-muted);
171
+ }
172
+ .rf-search-dialog__footer kbd {
173
+ display: inline-flex;
174
+ align-items: center;
175
+ justify-content: center;
176
+ min-width: 1.25rem;
177
+ padding: 0 0.25rem;
178
+ border: 1px solid var(--rf-color-border);
179
+ border-radius: 3px;
180
+ background: var(--rf-color-surface);
181
+ font-family: var(--rf-font-sans);
182
+ font-size: 0.65rem;
183
+ line-height: 1.4;
184
+ }
185
+
186
+ /* Mobile */
187
+ @media (max-width: 768px) {
188
+ .rf-search-trigger__label,
189
+ .rf-search-trigger__kbd {
190
+ display: none;
191
+ }
192
+ .rf-search-trigger {
193
+ padding: 0.375rem;
194
+ border-radius: var(--rf-radius-sm);
195
+ }
196
+ .rf-search-dialog[open] {
197
+ top: 0;
198
+ left: 0;
199
+ right: 0;
200
+ bottom: 0;
201
+ transform: none;
202
+ width: 100%;
203
+ max-height: 100vh;
204
+ border-radius: 0;
205
+ border: none;
206
+ }
207
+ .rf-search-dialog__footer {
208
+ display: none;
209
+ }
210
+ }
@@ -0,0 +1,45 @@
1
+ /* Version Switcher — page-level version dropdown */
2
+
3
+ .rf-version-switcher {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ gap: 0.5rem;
7
+ margin-bottom: 1.5rem;
8
+ font-size: 0.85rem;
9
+ }
10
+
11
+ .rf-version-switcher__label {
12
+ color: var(--rf-color-muted);
13
+ font-weight: 500;
14
+ font-size: 0.8rem;
15
+ text-transform: uppercase;
16
+ letter-spacing: 0.03em;
17
+ }
18
+
19
+ .rf-version-switcher__select {
20
+ appearance: none;
21
+ -webkit-appearance: none;
22
+ background: var(--rf-color-surface);
23
+ border: 1px solid var(--rf-color-border);
24
+ border-radius: var(--rf-radius-sm, 0.25rem);
25
+ color: var(--rf-color-text);
26
+ font-size: 0.85rem;
27
+ font-family: inherit;
28
+ padding: 0.3rem 2rem 0.3rem 0.6rem;
29
+ cursor: pointer;
30
+ line-height: 1.4;
31
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
32
+ background-repeat: no-repeat;
33
+ background-position: right 0.5rem center;
34
+ transition: border-color 150ms ease, box-shadow 150ms ease;
35
+ }
36
+
37
+ .rf-version-switcher__select:hover {
38
+ border-color: var(--rf-color-primary);
39
+ }
40
+
41
+ .rf-version-switcher__select:focus-visible {
42
+ outline: none;
43
+ border-color: var(--rf-color-primary);
44
+ box-shadow: 0 0 0 2px var(--rf-color-primary-100, rgba(14, 165, 233, 0.15));
45
+ }
@@ -0,0 +1,77 @@
1
+ /* Bond */
2
+ .rf-bond {
3
+ display: flex;
4
+ align-items: center;
5
+ gap: 1rem;
6
+ border: 1px solid var(--rf-color-border);
7
+ border-radius: var(--rf-radius-lg);
8
+ padding: 1rem 1.5rem;
9
+ margin: 1rem 0;
10
+ }
11
+ .rf-bond > span[property="from"],
12
+ .rf-bond > span[property="to"] {
13
+ font-weight: 600;
14
+ font-size: 1rem;
15
+ color: var(--rf-color-heading);
16
+ white-space: nowrap;
17
+ }
18
+ .rf-bond__connector {
19
+ display: flex;
20
+ align-items: center;
21
+ flex-shrink: 0;
22
+ }
23
+ .rf-bond__arrow {
24
+ display: inline-block;
25
+ width: 2rem;
26
+ height: 2px;
27
+ background: var(--rf-color-border);
28
+ position: relative;
29
+ }
30
+ .rf-bond__arrow::after {
31
+ content: '';
32
+ position: absolute;
33
+ right: -1px;
34
+ top: 50%;
35
+ transform: translateY(-50%);
36
+ border: 4px solid transparent;
37
+ border-left: 6px solid var(--rf-color-border);
38
+ }
39
+ .rf-bond[data-bidirectional="true"] .rf-bond__arrow::before {
40
+ content: '';
41
+ position: absolute;
42
+ left: -1px;
43
+ top: 50%;
44
+ transform: translateY(-50%);
45
+ border: 4px solid transparent;
46
+ border-right: 6px solid var(--rf-color-border);
47
+ }
48
+ .rf-bond__body {
49
+ flex: 1;
50
+ font-size: 0.875rem;
51
+ color: var(--rf-color-muted);
52
+ }
53
+
54
+ /* Status variants */
55
+ .rf-bond--active .rf-bond__arrow,
56
+ .rf-bond--active .rf-bond__arrow::after {
57
+ border-left-color: var(--rf-color-primary);
58
+ }
59
+ .rf-bond--active .rf-bond__arrow {
60
+ background: var(--rf-color-primary);
61
+ }
62
+ .rf-bond--active[data-bidirectional="true"] .rf-bond__arrow::before {
63
+ border-right-color: var(--rf-color-primary);
64
+ }
65
+
66
+ .rf-bond[data-status="broken"] .rf-bond__arrow {
67
+ background: repeating-linear-gradient(
68
+ 90deg,
69
+ var(--rf-color-muted) 0,
70
+ var(--rf-color-muted) 4px,
71
+ transparent 4px,
72
+ transparent 8px
73
+ );
74
+ }
75
+ .rf-bond[data-status="broken"] {
76
+ opacity: 0.6;
77
+ }
@@ -0,0 +1,164 @@
1
+ /* Budget */
2
+ .rf-budget {
3
+ border: 1px solid var(--rf-color-border);
4
+ border-radius: var(--rf-radius-lg);
5
+ padding: 2rem;
6
+ margin: 1.5rem 0;
7
+ }
8
+ .rf-budget__header {
9
+ margin-bottom: 1.5rem;
10
+ padding-bottom: 1rem;
11
+ border-bottom: 1px solid var(--rf-color-border);
12
+ }
13
+ .rf-budget__title {
14
+ margin: 0 0 0.5rem;
15
+ font-size: 1.25rem;
16
+ font-weight: 700;
17
+ color: var(--rf-color-text);
18
+ }
19
+ .rf-budget__meta {
20
+ display: flex;
21
+ flex-wrap: wrap;
22
+ gap: 1rem;
23
+ align-items: center;
24
+ }
25
+ .rf-budget__meta-item {
26
+ font-size: 0.8125rem;
27
+ font-weight: 500;
28
+ color: var(--rf-color-muted);
29
+ padding: 0.125rem 0.5rem;
30
+ background: var(--rf-color-surface);
31
+ border-radius: var(--rf-radius-full);
32
+ }
33
+ .rf-budget__categories {
34
+ display: flex;
35
+ flex-direction: column;
36
+ gap: 1.25rem;
37
+ }
38
+
39
+ /* Budget Category */
40
+ .rf-budget-category {
41
+ border: 1px solid var(--rf-color-border);
42
+ border-radius: var(--rf-radius-md);
43
+ padding: 1rem 1.25rem;
44
+ background: var(--rf-color-bg);
45
+ }
46
+ .rf-budget-category--estimate {
47
+ border-style: dashed;
48
+ border-color: var(--rf-color-warning);
49
+ }
50
+ .rf-budget-category__header {
51
+ display: flex;
52
+ justify-content: space-between;
53
+ align-items: center;
54
+ margin-bottom: 0.75rem;
55
+ padding-bottom: 0.5rem;
56
+ border-bottom: 1px solid var(--rf-color-border);
57
+ }
58
+ .rf-budget-category--estimate .rf-budget-category__header::after {
59
+ content: 'est.';
60
+ font-size: 0.6875rem;
61
+ font-weight: 600;
62
+ text-transform: uppercase;
63
+ letter-spacing: 0.05em;
64
+ color: var(--rf-color-warning);
65
+ background: var(--rf-color-warning-bg);
66
+ padding: 0.0625rem 0.375rem;
67
+ border-radius: var(--rf-radius-full);
68
+ margin-left: 0.5rem;
69
+ }
70
+ .rf-budget-category__label {
71
+ font-size: 0.9375rem;
72
+ font-weight: 600;
73
+ color: var(--rf-color-text);
74
+ }
75
+ .rf-budget-category__subtotal {
76
+ font-size: 0.9375rem;
77
+ font-weight: 600;
78
+ color: var(--rf-color-text);
79
+ white-space: nowrap;
80
+ }
81
+ .rf-budget-category__line-items {
82
+ list-style: none;
83
+ padding: 0;
84
+ margin: 0;
85
+ }
86
+
87
+ /* Budget Line Item */
88
+ .rf-budget-line-item {
89
+ display: flex;
90
+ justify-content: space-between;
91
+ align-items: baseline;
92
+ padding: 0.3125rem 0;
93
+ gap: 1rem;
94
+ }
95
+ .rf-budget-line-item + .rf-budget-line-item {
96
+ border-top: 1px solid var(--rf-color-border-light, var(--rf-color-border));
97
+ }
98
+ .rf-budget-line-item__description {
99
+ font-size: 0.875rem;
100
+ color: var(--rf-color-muted);
101
+ flex: 1;
102
+ min-width: 0;
103
+ }
104
+ .rf-budget-line-item__amount {
105
+ font-size: 0.875rem;
106
+ font-weight: 500;
107
+ color: var(--rf-color-text);
108
+ white-space: nowrap;
109
+ font-variant-numeric: tabular-nums;
110
+ }
111
+
112
+ /* Budget Footer (injected by postTransform) */
113
+ .rf-budget__footer {
114
+ margin-top: 1.5rem;
115
+ padding-top: 1rem;
116
+ border-top: 2px solid var(--rf-color-text);
117
+ display: flex;
118
+ flex-direction: column;
119
+ gap: 0.5rem;
120
+ }
121
+ .rf-budget__total {
122
+ display: flex;
123
+ justify-content: space-between;
124
+ align-items: baseline;
125
+ }
126
+ .rf-budget__total-label {
127
+ font-size: 1rem;
128
+ font-weight: 700;
129
+ color: var(--rf-color-text);
130
+ }
131
+ .rf-budget__total-amount {
132
+ font-size: 1.25rem;
133
+ font-weight: 700;
134
+ color: var(--rf-color-text);
135
+ font-variant-numeric: tabular-nums;
136
+ }
137
+ .rf-budget__per-person,
138
+ .rf-budget__per-day {
139
+ display: flex;
140
+ justify-content: space-between;
141
+ align-items: baseline;
142
+ }
143
+ .rf-budget__per-person-label,
144
+ .rf-budget__per-day-label {
145
+ font-size: 0.8125rem;
146
+ color: var(--rf-color-muted);
147
+ }
148
+ .rf-budget__per-person-amount,
149
+ .rf-budget__per-day-amount {
150
+ font-size: 0.9375rem;
151
+ font-weight: 500;
152
+ color: var(--rf-color-muted);
153
+ font-variant-numeric: tabular-nums;
154
+ }
155
+
156
+ /* Summary style — hide line items, show only category headers */
157
+ [data-style="summary"] .rf-budget-category__line-items {
158
+ display: none;
159
+ }
160
+ [data-style="summary"] .rf-budget-category__header {
161
+ margin-bottom: 0;
162
+ padding-bottom: 0;
163
+ border-bottom: none;
164
+ }