@refrakt-md/lumina 0.7.2 → 0.8.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.
@@ -0,0 +1,53 @@
1
+ /* Background — Directive rune for background images, video, overlays, blur */
2
+
3
+ /* Background layer — absolute positioned behind content */
4
+ [data-name="bg"] {
5
+ position: absolute;
6
+ inset: 0;
7
+ z-index: 0;
8
+ overflow: hidden;
9
+ background-image: var(--bg-image);
10
+ background-size: var(--bg-fit, cover);
11
+ background-position: var(--bg-position, center);
12
+ background-repeat: no-repeat;
13
+ }
14
+ /* Blur and opacity applied when set via custom properties */
15
+ [data-name="bg"][style*="--bg-blur"] {
16
+ filter: blur(var(--bg-blur));
17
+ }
18
+ [data-name="bg"][style*="--bg-opacity"] {
19
+ opacity: var(--bg-opacity);
20
+ }
21
+ /* Fixed (parallax) background */
22
+ [data-name="bg"][data-bg-fixed] {
23
+ background-attachment: fixed;
24
+ }
25
+ /* Content above background — any sibling of bg layer gets z-index */
26
+ .rf-has-bg > :not([data-name="bg"]) {
27
+ position: relative;
28
+ z-index: 1;
29
+ }
30
+ /* Video background */
31
+ [data-name="bg-video"] {
32
+ width: 100%;
33
+ height: 100%;
34
+ object-fit: cover;
35
+ object-position: var(--bg-position, center);
36
+ }
37
+ [data-name="bg-video"][style*="--bg-blur"] {
38
+ filter: blur(var(--bg-blur));
39
+ }
40
+ [data-name="bg-video"][style*="--bg-opacity"] {
41
+ opacity: var(--bg-opacity);
42
+ }
43
+ /* Overlay */
44
+ [data-name="bg-overlay"] {
45
+ position: absolute;
46
+ inset: 0;
47
+ }
48
+ [data-name="bg-overlay"][data-bg-overlay="dark"] {
49
+ background: rgba(0, 0, 0, 0.5);
50
+ }
51
+ [data-name="bg-overlay"][data-bg-overlay="light"] {
52
+ background: rgba(255, 255, 255, 0.6);
53
+ }
@@ -154,10 +154,10 @@
154
154
  }
155
155
 
156
156
  /* Summary style — hide line items, show only category headers */
157
- [data-style="summary"] .rf-budget-category__line-items {
157
+ [data-variant="summary"] .rf-budget-category__line-items {
158
158
  display: none;
159
159
  }
160
- [data-style="summary"] .rf-budget-category__header {
160
+ [data-variant="summary"] .rf-budget-category__header {
161
161
  margin-bottom: 0;
162
162
  padding-bottom: 0;
163
163
  border-bottom: none;
@@ -45,7 +45,7 @@
45
45
  color: var(--rf-color-muted);
46
46
  }
47
47
  .rf-cast-member__body:empty { display: none; }
48
- .rf-cast-member__body span[property] { display: none; }
48
+ .rf-cast-member__body > span[property] { display: none; }
49
49
  .rf-cast-member img {
50
50
  width: 80px;
51
51
  height: 80px;
@@ -75,3 +75,12 @@
75
75
  font-family: var(--rf-font-mono);
76
76
  font-size: 0.85rem;
77
77
  }
78
+ /* Overflow modes */
79
+ .rf-codegroup[data-overflow="wrap"] pre {
80
+ white-space: pre-wrap;
81
+ word-break: break-word;
82
+ overflow-x: hidden;
83
+ }
84
+ .rf-codegroup[data-overflow="hide"] pre {
85
+ overflow-x: hidden;
86
+ }
@@ -16,8 +16,8 @@
16
16
  font-weight: 700;
17
17
  color: var(--rf-color-text);
18
18
  }
19
- .rf-comparison meta,
20
- .rf-comparison span[property] { display: none; }
19
+ .rf-comparison > meta,
20
+ .rf-comparison > span[property] { display: none; }
21
21
  /* Table layout */
22
22
  .rf-comparison__table-wrapper {
23
23
  overflow-x: auto;
@@ -48,7 +48,7 @@
48
48
  }
49
49
  .rf-conversation-message__body p { margin: 0; }
50
50
  .rf-conversation-message__body p + p { margin-top: 0.5rem; }
51
- .rf-conversation-message__body span[property],
52
- .rf-conversation-message__body meta { display: none; }
53
- .rf-conversation-message span[property="speaker"],
54
- .rf-conversation-message meta[property] { display: none; }
51
+ .rf-conversation-message__body > span[property],
52
+ .rf-conversation-message__body > meta { display: none; }
53
+ .rf-conversation-message > span[property="speaker"],
54
+ .rf-conversation-message > meta[property] { display: none; }
@@ -1,8 +1,12 @@
1
1
  /* Call to Action */
2
2
  .rf-cta {
3
- text-align: center;
4
3
  padding: 3.5rem 2rem 3rem;
5
4
  }
5
+ .rf-cta .rf-cta__header,
6
+ .rf-cta > h1, .rf-cta > h2, .rf-cta > h3,
7
+ .rf-cta > p {
8
+ text-align: center;
9
+ }
6
10
  .rf-cta__header {
7
11
  margin-bottom: 1.5rem;
8
12
  }
@@ -124,9 +128,13 @@
124
128
 
125
129
  /* Context-aware: CTA inside pricing — compact, left-aligned */
126
130
  .rf-cta--in-pricing {
127
- text-align: left;
128
131
  padding: 1.5rem 0 0;
129
132
  }
133
+ .rf-cta--in-pricing .rf-cta__header,
134
+ .rf-cta--in-pricing > h1, .rf-cta--in-pricing > h2, .rf-cta--in-pricing > h3,
135
+ .rf-cta--in-pricing > p {
136
+ text-align: left;
137
+ }
130
138
  .rf-cta--in-pricing p {
131
139
  margin: 0 0 1rem;
132
140
  max-width: none;
@@ -4,7 +4,6 @@
4
4
  }
5
5
  .rf-feature__header {
6
6
  margin-bottom: 1.5rem;
7
- text-align: center;
8
7
  }
9
8
  .rf-feature__eyebrow {
10
9
  font-size: 0.8125rem;
@@ -35,47 +34,56 @@
35
34
  .rf-feature__blurb {
36
35
  color: var(--rf-color-muted);
37
36
  margin-bottom: 0;
37
+ max-width: 40rem;
38
38
  }
39
39
  .rf-feature__image {
40
40
  margin-bottom: 1rem;
41
41
  }
42
- .rf-feature__body {
42
+ .rf-feature__content {
43
43
  display: contents;
44
44
  }
45
45
  .rf-feature h2 {
46
- text-align: center;
47
46
  margin-bottom: 2rem;
48
47
  }
48
+ .rf-feature[data-align="center"] .rf-feature__header,
49
+ .rf-feature[data-align="center"] h2 {
50
+ text-align: center;
51
+ }
52
+ .rf-feature[data-align="left"] .rf-feature__header,
53
+ .rf-feature[data-align="left"] h2 {
54
+ text-align: left;
55
+ }
56
+ .rf-feature[data-align="right"] .rf-feature__header,
57
+ .rf-feature[data-align="right"] h2 {
58
+ text-align: right;
59
+ }
49
60
  .rf-feature dl {
50
61
  display: grid;
51
- grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
62
+ grid-template-columns: repeat(auto-fit, minmax(max(240px, calc((100% - 3rem) / 3)), 1fr));
52
63
  gap: 1.5rem;
53
64
  margin: 0;
54
65
  }
55
- .rf-feature--split {
56
- display: grid;
57
- align-items: center;
58
- grid-template-columns: 1fr 1fr;
59
- gap: 3rem;
60
- }
61
- .rf-feature--split .rf-feature__body {
66
+ /* Split layout: override defaults when in split mode */
67
+ .rf-feature[data-layout="split"] .rf-feature__content,
68
+ .rf-feature[data-layout="split-reverse"] .rf-feature__content {
62
69
  display: block;
63
70
  }
64
- .rf-feature--split .rf-feature__header,
65
- .rf-feature--split h2 {
71
+ .rf-feature[data-layout="split"] .rf-feature__header,
72
+ .rf-feature[data-layout="split-reverse"] .rf-feature__header,
73
+ .rf-feature[data-layout="split"] h2,
74
+ .rf-feature[data-layout="split-reverse"] h2 {
66
75
  text-align: left;
67
76
  }
68
- .rf-feature--split dl {
77
+ .rf-feature[data-layout="split"] dl,
78
+ .rf-feature[data-layout="split-reverse"] dl {
69
79
  display: block;
70
80
  }
71
- .rf-feature--split .rf-feature-definition {
81
+ .rf-feature[data-layout="split"] .rf-feature-definition,
82
+ .rf-feature[data-layout="split-reverse"] .rf-feature-definition {
72
83
  border: none;
73
84
  background: none;
74
85
  padding: 0.75rem 0;
75
86
  }
76
- .rf-feature--mirror .rf-feature__showcase {
77
- order: -1;
78
- }
79
87
  .rf-feature-definition {
80
88
  padding: 1.75rem;
81
89
  border-radius: var(--rf-radius-md);
@@ -84,7 +92,7 @@
84
92
  }
85
93
  .rf-feature-definition dt {
86
94
  font-weight: 650;
87
- font-size: 1.05rem;
95
+ font-size: 1.125rem;
88
96
  margin-bottom: 0.75rem;
89
97
  letter-spacing: -0.01em;
90
98
  color: var(--rf-color-text);
@@ -0,0 +1,182 @@
1
+ /* Gallery — Multi-image container with grid/carousel/masonry layout */
2
+ .rf-gallery {
3
+ margin: 1.5rem 0;
4
+ position: relative;
5
+ }
6
+
7
+ /* Layout modifier classes */
8
+ .rf-gallery--grid {}
9
+ .rf-gallery--carousel {}
10
+ .rf-gallery--masonry {}
11
+
12
+ /* Items container — grid layout by default */
13
+ .rf-gallery__items {
14
+ display: grid;
15
+ grid-template-columns: repeat(var(--gallery-columns, 3), 1fr);
16
+ gap: var(--gallery-gap, var(--rf-spacing-md));
17
+ }
18
+
19
+ /* Individual gallery items */
20
+ .rf-gallery__item {
21
+ position: relative;
22
+ overflow: hidden;
23
+ border-radius: var(--rf-radius-md);
24
+ }
25
+ .rf-gallery__item img {
26
+ width: 100%;
27
+ height: 100%;
28
+ object-fit: cover;
29
+ display: block;
30
+ }
31
+ .rf-gallery__item figcaption {
32
+ position: absolute;
33
+ bottom: 0;
34
+ left: 0;
35
+ right: 0;
36
+ padding: 0.5rem 0.75rem;
37
+ background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));
38
+ color: white;
39
+ font-size: 0.825rem;
40
+ }
41
+
42
+ /* Gallery caption */
43
+ .rf-gallery > figcaption {
44
+ margin-top: 0.625rem;
45
+ font-size: 0.825rem;
46
+ color: var(--rf-color-muted);
47
+ text-align: center;
48
+ font-style: italic;
49
+ }
50
+
51
+ /* Carousel layout */
52
+ .rf-gallery[data-layout="carousel"] .rf-gallery__items {
53
+ display: flex;
54
+ overflow-x: auto;
55
+ scroll-snap-type: x mandatory;
56
+ -webkit-overflow-scrolling: touch;
57
+ }
58
+ .rf-gallery[data-layout="carousel"] .rf-gallery__item {
59
+ flex: 0 0 calc(100% / var(--gallery-columns, 3));
60
+ scroll-snap-align: start;
61
+ }
62
+
63
+ /* Carousel nav buttons */
64
+ .rf-gallery__nav {
65
+ position: absolute;
66
+ top: 50%;
67
+ transform: translateY(-50%);
68
+ z-index: 2;
69
+ width: 2.5rem;
70
+ height: 2.5rem;
71
+ border-radius: 50%;
72
+ border: none;
73
+ background: var(--rf-color-surface);
74
+ color: var(--rf-color-text);
75
+ box-shadow: var(--rf-shadow-md);
76
+ cursor: pointer;
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: center;
80
+ font-size: 1.25rem;
81
+ opacity: 0.8;
82
+ transition: opacity 0.2s;
83
+ }
84
+ .rf-gallery__nav:hover {
85
+ opacity: 1;
86
+ }
87
+ .rf-gallery__nav--prev {
88
+ left: 0.5rem;
89
+ }
90
+ .rf-gallery__nav--next {
91
+ right: 0.5rem;
92
+ }
93
+
94
+ /* Masonry layout (CSS progressive enhancement) */
95
+ .rf-gallery[data-layout="masonry"] .rf-gallery__items {
96
+ grid-template-rows: masonry;
97
+ }
98
+
99
+ /* Lightbox cursor hint */
100
+ .rf-gallery[data-lightbox="true"] .rf-gallery__item {
101
+ cursor: zoom-in;
102
+ }
103
+
104
+ /* Lightbox overlay */
105
+ .rf-gallery__lightbox {
106
+ position: fixed;
107
+ inset: 0;
108
+ z-index: 9999;
109
+ background: rgba(0, 0, 0, 0.9);
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ }
114
+ .rf-gallery__lightbox img {
115
+ max-width: 90vw;
116
+ max-height: 90vh;
117
+ object-fit: contain;
118
+ border-radius: var(--rf-radius-md);
119
+ }
120
+ .rf-gallery__lightbox-close {
121
+ position: absolute;
122
+ top: 1rem;
123
+ right: 1rem;
124
+ width: 2.5rem;
125
+ height: 2.5rem;
126
+ border-radius: 50%;
127
+ border: none;
128
+ background: rgba(255, 255, 255, 0.15);
129
+ color: white;
130
+ font-size: 1.5rem;
131
+ cursor: pointer;
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ }
136
+ .rf-gallery__lightbox-nav {
137
+ position: absolute;
138
+ top: 50%;
139
+ transform: translateY(-50%);
140
+ width: 3rem;
141
+ height: 3rem;
142
+ border-radius: 50%;
143
+ border: none;
144
+ background: rgba(255, 255, 255, 0.15);
145
+ color: white;
146
+ font-size: 1.5rem;
147
+ cursor: pointer;
148
+ display: flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ }
152
+ .rf-gallery__lightbox-nav--prev {
153
+ left: 1rem;
154
+ }
155
+ .rf-gallery__lightbox-nav--next {
156
+ right: 1rem;
157
+ }
158
+
159
+ /* Column count overrides */
160
+ .rf-gallery[data-columns="1"] .rf-gallery__items { grid-template-columns: 1fr; }
161
+ .rf-gallery[data-columns="2"] .rf-gallery__items { grid-template-columns: repeat(2, 1fr); }
162
+ .rf-gallery[data-columns="4"] .rf-gallery__items { grid-template-columns: repeat(4, 1fr); }
163
+ .rf-gallery[data-columns="5"] .rf-gallery__items { grid-template-columns: repeat(5, 1fr); }
164
+ .rf-gallery[data-columns="6"] .rf-gallery__items { grid-template-columns: repeat(6, 1fr); }
165
+
166
+ /* Responsive: collapse to fewer columns on small screens */
167
+ @media (max-width: 768px) {
168
+ .rf-gallery__items {
169
+ grid-template-columns: repeat(2, 1fr);
170
+ }
171
+ .rf-gallery[data-layout="carousel"] .rf-gallery__item {
172
+ flex-basis: 80%;
173
+ }
174
+ }
175
+ @media (max-width: 480px) {
176
+ .rf-gallery__items {
177
+ grid-template-columns: 1fr;
178
+ }
179
+ .rf-gallery[data-layout="carousel"] .rf-gallery__item {
180
+ flex-basis: 100%;
181
+ }
182
+ }
@@ -4,8 +4,9 @@
4
4
  }
5
5
  .rf-grid [data-layout="grid"] {
6
6
  display: grid;
7
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
8
- gap: 1.5rem;
7
+ grid-template-columns: var(--grid-ratio, repeat(auto-fit, minmax(250px, 1fr)));
8
+ align-items: var(--grid-valign, stretch);
9
+ gap: var(--grid-gap, 1.5rem);
9
10
  }
10
11
  /* Explicit column counts override auto-fit */
11
12
  .rf-grid [data-columns="1"] { grid-template-columns: 1fr; }
@@ -26,6 +27,39 @@
26
27
  .rf-grid [data-rowspan="2"] { grid-row: span 2; }
27
28
  .rf-grid [data-rowspan="3"] { grid-row: span 3; }
28
29
  .rf-grid [data-rowspan="4"] { grid-row: span 4; }
29
- /* Item styling */
30
- .rf-grid [data-name="item"] p:first-child { margin-top: 0; }
31
- .rf-grid [data-name="item"] p:last-child { margin-bottom: 0; }
30
+ /* Cell styling */
31
+ .rf-grid [data-name="cell"] p:first-child { margin-top: 0; }
32
+ .rf-grid [data-name="cell"] p:last-child { margin-bottom: 0; }
33
+ /* Auto mode — responsive auto-fill */
34
+ .rf-grid[data-mode="auto"] [data-layout="grid"] {
35
+ grid-template-columns: repeat(auto-fill, minmax(var(--grid-min, 250px), 1fr));
36
+ }
37
+ /* Masonry mode — progressive enhancement */
38
+ .rf-grid[data-mode="masonry"] [data-layout="grid"] {
39
+ grid-template-rows: masonry;
40
+ }
41
+ /* Aspect ratio enforcement on cells */
42
+ .rf-grid[data-aspect] [data-name="cell"] {
43
+ aspect-ratio: var(--grid-aspect);
44
+ overflow: hidden;
45
+ }
46
+ .rf-grid[data-aspect] [data-name="cell"] > img,
47
+ .rf-grid[data-aspect] [data-name="cell"] > video {
48
+ width: 100%;
49
+ height: 100%;
50
+ object-fit: cover;
51
+ }
52
+ /* Stack order when collapsed */
53
+ .rf-grid[data-stack="reverse"] [data-name="cell"]:last-child {
54
+ order: -1;
55
+ }
56
+ /* Collapse breakpoints */
57
+ @media (max-width: 640px) {
58
+ .rf-grid[data-collapse="sm"] [data-layout="grid"] { grid-template-columns: 1fr; }
59
+ }
60
+ @media (max-width: 768px) {
61
+ .rf-grid[data-collapse="md"] [data-layout="grid"] { grid-template-columns: 1fr; }
62
+ }
63
+ @media (max-width: 1024px) {
64
+ .rf-grid[data-collapse="lg"] [data-layout="grid"] { grid-template-columns: 1fr; }
65
+ }
@@ -1,10 +1,9 @@
1
1
  /* Hero */
2
2
  .rf-hero {
3
3
  position: relative;
4
- padding: 5rem 2rem 4.5rem;
4
+ padding: 7rem 2rem 6.5rem;
5
5
  background-size: cover;
6
6
  background-position: center;
7
- overflow: hidden;
8
7
  }
9
8
  .rf-hero__header {
10
9
  margin-bottom: 2rem;
@@ -57,23 +56,29 @@
57
56
  gap: 0.75rem;
58
57
  flex-wrap: wrap;
59
58
  }
60
- .rf-hero--center {
59
+ .rf-hero[data-align="center"] .rf-hero__header,
60
+ .rf-hero[data-align="center"] > h1,
61
+ .rf-hero[data-align="center"] > p {
61
62
  text-align: center;
62
63
  }
63
- .rf-hero--center .rf-hero__actions {
64
+ .rf-hero[data-align="center"] .rf-hero__actions {
64
65
  margin: 0 auto;
65
66
  justify-content: center;
66
67
  }
67
- .rf-hero--left {
68
+ .rf-hero[data-align="left"] .rf-hero__header,
69
+ .rf-hero[data-align="left"] > h1,
70
+ .rf-hero[data-align="left"] > p {
68
71
  text-align: left;
69
72
  }
70
- .rf-hero--left .rf-hero__actions {
73
+ .rf-hero[data-align="left"] .rf-hero__actions {
71
74
  margin: 0;
72
75
  }
73
- .rf-hero--right {
76
+ .rf-hero[data-align="right"] .rf-hero__header,
77
+ .rf-hero[data-align="right"] > h1,
78
+ .rf-hero[data-align="right"] > p {
74
79
  text-align: right;
75
80
  }
76
- .rf-hero--right .rf-hero__actions {
81
+ .rf-hero[data-align="right"] .rf-hero__actions {
77
82
  margin: 0 0 0 auto;
78
83
  }
79
84
  .rf-hero__actions pre {
@@ -105,9 +110,10 @@
105
110
  line-height: 1.65;
106
111
  color: var(--rf-color-muted);
107
112
  margin: 0 0 2rem;
113
+ max-width: 40rem;
108
114
  }
109
- .rf-hero--center p,
110
- .rf-hero--center .rf-hero__blurb {
115
+ .rf-hero[data-align="center"] > p,
116
+ .rf-hero[data-align="center"] .rf-hero__blurb {
111
117
  max-width: 560px;
112
118
  margin-left: auto;
113
119
  margin-right: auto;
@@ -122,8 +128,8 @@
122
128
  padding: 0;
123
129
  margin: 0;
124
130
  }
125
- .rf-hero--center ul,
126
- .rf-hero--center nav {
131
+ .rf-hero[data-align="center"] ul,
132
+ .rf-hero[data-align="center"] nav {
127
133
  justify-content: center;
128
134
  }
129
135
  .rf-hero li {
@@ -162,3 +168,15 @@
162
168
  border-color: var(--rf-color-surface-active);
163
169
  text-decoration: none;
164
170
  }
171
+ .rf-hero__media {
172
+ margin-top: 3rem;
173
+ border-radius: var(--rf-radius-lg);
174
+ }
175
+ .rf-hero__media img {
176
+ display: block;
177
+ width: 100%;
178
+ height: auto;
179
+ }
180
+ .rf-hero__media pre {
181
+ margin: 0;
182
+ }
@@ -1,6 +1,8 @@
1
1
  /* Itinerary */
2
2
  .rf-itinerary {
3
3
  margin: 2rem 0;
4
+ padding-left: 0.75rem;
5
+ padding-right: 0.75rem;
4
6
  }
5
7
  .rf-itinerary > header {
6
8
  margin-bottom: 1.5rem;