@refrakt-md/lumina 0.4.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.
Files changed (98) hide show
  1. package/contracts/structures.json +5 -0
  2. package/dist/config.d.ts +4 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +238 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/lib/engine.d.ts +13 -0
  7. package/dist/lib/engine.d.ts.map +1 -0
  8. package/dist/lib/engine.js +218 -0
  9. package/dist/lib/engine.js.map +1 -0
  10. package/dist/lib/helpers.d.ts +14 -0
  11. package/dist/lib/helpers.d.ts.map +1 -0
  12. package/dist/lib/helpers.js +26 -0
  13. package/dist/lib/helpers.js.map +1 -0
  14. package/dist/lib/types.d.ts +74 -0
  15. package/dist/lib/types.d.ts.map +1 -0
  16. package/dist/lib/types.js +2 -0
  17. package/dist/lib/types.js.map +1 -0
  18. package/dist/transform.d.ts +5 -0
  19. package/dist/transform.d.ts.map +1 -0
  20. package/dist/transform.js +7 -0
  21. package/dist/transform.js.map +1 -0
  22. package/index.css +57 -0
  23. package/manifest.json +13 -0
  24. package/package.json +62 -0
  25. package/styles/elements/blockquote.css +22 -0
  26. package/styles/elements/table.css +26 -0
  27. package/styles/global.css +138 -0
  28. package/styles/layouts/default.css +45 -0
  29. package/styles/layouts/docs.css +94 -0
  30. package/styles/runes/accordion.css +55 -0
  31. package/styles/runes/annotate.css +87 -0
  32. package/styles/runes/api.css +77 -0
  33. package/styles/runes/bento.css +48 -0
  34. package/styles/runes/breadcrumb.css +46 -0
  35. package/styles/runes/cast.css +56 -0
  36. package/styles/runes/changelog.css +53 -0
  37. package/styles/runes/chart.css +33 -0
  38. package/styles/runes/codegroup.css +72 -0
  39. package/styles/runes/compare.css +41 -0
  40. package/styles/runes/comparison.css +211 -0
  41. package/styles/runes/conversation.css +54 -0
  42. package/styles/runes/cta.css +87 -0
  43. package/styles/runes/datatable.css +112 -0
  44. package/styles/runes/details.css +44 -0
  45. package/styles/runes/diagram.css +27 -0
  46. package/styles/runes/diff.css +74 -0
  47. package/styles/runes/embed.css +32 -0
  48. package/styles/runes/event.css +57 -0
  49. package/styles/runes/feature.css +67 -0
  50. package/styles/runes/figure.css +24 -0
  51. package/styles/runes/form.css +184 -0
  52. package/styles/runes/grid.css +13 -0
  53. package/styles/runes/hero.css +102 -0
  54. package/styles/runes/hint.css +97 -0
  55. package/styles/runes/howto.css +37 -0
  56. package/styles/runes/nav.css +50 -0
  57. package/styles/runes/organization.css +26 -0
  58. package/styles/runes/page-section.css +20 -0
  59. package/styles/runes/pricing.css +109 -0
  60. package/styles/runes/recipe.css +47 -0
  61. package/styles/runes/reveal.css +55 -0
  62. package/styles/runes/sidenote.css +28 -0
  63. package/styles/runes/steps.css +59 -0
  64. package/styles/runes/storyboard.css +65 -0
  65. package/styles/runes/tabs.css +50 -0
  66. package/styles/runes/testimonial.css +59 -0
  67. package/styles/runes/timeline.css +67 -0
  68. package/styles/runes/toc.css +43 -0
  69. package/sveltekit/components/Accordion.svelte +26 -0
  70. package/sveltekit/components/Bento.svelte +50 -0
  71. package/sveltekit/components/Chart.svelte +121 -0
  72. package/sveltekit/components/CodeGroup.svelte +88 -0
  73. package/sveltekit/components/Comparison.svelte +209 -0
  74. package/sveltekit/components/DataTable.svelte +154 -0
  75. package/sveltekit/components/Details.svelte +23 -0
  76. package/sveltekit/components/Diagram.svelte +45 -0
  77. package/sveltekit/components/Embed.svelte +36 -0
  78. package/sveltekit/components/Form.svelte +194 -0
  79. package/sveltekit/components/Grid.svelte +42 -0
  80. package/sveltekit/components/Nav.svelte +62 -0
  81. package/sveltekit/components/Pricing.svelte +20 -0
  82. package/sveltekit/components/Reveal.svelte +62 -0
  83. package/sveltekit/components/Storyboard.svelte +41 -0
  84. package/sveltekit/components/Tabs.svelte +75 -0
  85. package/sveltekit/components/Testimonial.svelte +26 -0
  86. package/sveltekit/elements/Blockquote.svelte +37 -0
  87. package/sveltekit/elements/Pre.svelte +77 -0
  88. package/sveltekit/elements/Table.svelte +40 -0
  89. package/sveltekit/elements.ts +11 -0
  90. package/sveltekit/index.ts +32 -0
  91. package/sveltekit/layouts/BlogLayout.svelte +382 -0
  92. package/sveltekit/layouts/DefaultLayout.svelte +70 -0
  93. package/sveltekit/layouts/DocsLayout.svelte +133 -0
  94. package/sveltekit/manifest.json +51 -0
  95. package/sveltekit/registry.ts +59 -0
  96. package/sveltekit/tokens.css +71 -0
  97. package/tokens/base.css +78 -0
  98. package/tokens/dark.css +102 -0
@@ -0,0 +1,77 @@
1
+ /* Api */
2
+ .rf-api {
3
+ border: 1px solid var(--rf-color-border);
4
+ border-radius: var(--rf-radius-lg);
5
+ margin: 1.5rem 0;
6
+ overflow: hidden;
7
+ }
8
+ .rf-api__header {
9
+ display: flex;
10
+ align-items: center;
11
+ gap: 0.75rem;
12
+ padding: 1rem 1.25rem;
13
+ background: var(--rf-color-surface-hover);
14
+ border-bottom: 1px solid var(--rf-color-border);
15
+ }
16
+ .rf-api__method {
17
+ font-weight: 700;
18
+ font-size: 0.75rem;
19
+ padding: 0.25rem 0.5rem;
20
+ border-radius: var(--rf-radius-sm);
21
+ font-family: var(--rf-font-mono);
22
+ }
23
+ .rf-api__path {
24
+ font-family: var(--rf-font-mono);
25
+ font-size: 0.9375rem;
26
+ font-weight: 500;
27
+ color: var(--rf-color-text);
28
+ }
29
+ .rf-api__auth {
30
+ margin-left: auto;
31
+ font-size: 0.75rem;
32
+ color: var(--rf-color-muted);
33
+ background: var(--rf-color-surface-active);
34
+ padding: 0.125rem 0.5rem;
35
+ border-radius: var(--rf-radius-sm);
36
+ }
37
+ /* Method colors driven by data-method attribute from engine */
38
+ [data-method="GET"] .rf-api__method { color: var(--rf-color-success); background: var(--rf-color-success-bg); }
39
+ [data-method="POST"] .rf-api__method { color: var(--rf-color-info); background: var(--rf-color-info-bg); }
40
+ [data-method="PUT"] .rf-api__method { color: var(--rf-color-warning); background: var(--rf-color-warning-bg); }
41
+ [data-method="PATCH"] .rf-api__method { color: var(--rf-color-warning); background: var(--rf-color-warning-bg); }
42
+ [data-method="DELETE"] .rf-api__method { color: var(--rf-color-danger); background: var(--rf-color-danger-bg); }
43
+ [data-method="HEAD"] .rf-api__method { color: var(--rf-color-muted); background: var(--rf-color-surface); }
44
+ [data-method="OPTIONS"] .rf-api__method { color: var(--rf-color-muted); background: var(--rf-color-surface); }
45
+ .rf-api__body {
46
+ padding: 1.25rem;
47
+ }
48
+ .rf-api__body table {
49
+ width: 100%;
50
+ border-collapse: collapse;
51
+ margin: 1rem 0;
52
+ }
53
+ .rf-api__body th {
54
+ text-align: left;
55
+ padding: 0.5rem 0.75rem;
56
+ font-size: 0.75rem;
57
+ font-weight: 600;
58
+ text-transform: uppercase;
59
+ color: var(--rf-color-muted);
60
+ border-bottom: 2px solid var(--rf-color-border);
61
+ }
62
+ .rf-api__body td {
63
+ padding: 0.5rem 0.75rem;
64
+ border-bottom: 1px solid var(--rf-color-border);
65
+ font-size: 0.875rem;
66
+ }
67
+ .rf-api__body pre {
68
+ border-radius: var(--rf-radius-md);
69
+ margin: 1rem 0;
70
+ }
71
+ .rf-api__body blockquote {
72
+ border-left: 3px solid var(--rf-color-warning-border);
73
+ background: var(--rf-color-warning-bg);
74
+ padding: 0.75rem 1rem;
75
+ border-radius: 0 var(--rf-radius-md) var(--rf-radius-md) 0;
76
+ margin: 1rem 0;
77
+ }
@@ -0,0 +1,48 @@
1
+ /* Bento */
2
+ .rf-bento {
3
+ margin: 1.5rem 0;
4
+ }
5
+ .rf-bento__grid {
6
+ display: grid;
7
+ }
8
+ .rf-bento-cell {
9
+ border: 1px solid var(--rf-color-border);
10
+ border-radius: var(--rf-radius-md);
11
+ padding: 1.25rem;
12
+ background: var(--rf-color-surface);
13
+ overflow: hidden;
14
+ }
15
+ .rf-bento-cell--large {
16
+ grid-column: span 2;
17
+ grid-row: span 2;
18
+ }
19
+ .rf-bento-cell--medium {
20
+ grid-column: span 2;
21
+ }
22
+ .rf-bento-cell--small {
23
+ grid-column: span 1;
24
+ }
25
+ .rf-bento-cell__title {
26
+ font-size: 1rem;
27
+ font-weight: 600;
28
+ margin: 0 0 0.5rem;
29
+ }
30
+ .rf-bento-cell__body span[property],
31
+ .rf-bento-cell__body meta { display: none; }
32
+ .rf-bento-cell__body p:last-child { margin-bottom: 0; }
33
+ .rf-bento-cell img {
34
+ width: 100%;
35
+ height: auto;
36
+ border-radius: var(--rf-radius-sm);
37
+ margin-bottom: 0.75rem;
38
+ }
39
+ @media (max-width: 768px) {
40
+ .rf-bento__grid { grid-template-columns: repeat(2, 1fr) !important; }
41
+ .rf-bento-cell--large { grid-column: span 2; grid-row: span 1; }
42
+ .rf-bento-cell--medium { grid-column: span 2; }
43
+ }
44
+ @media (max-width: 480px) {
45
+ .rf-bento__grid { grid-template-columns: 1fr !important; }
46
+ .rf-bento-cell--large,
47
+ .rf-bento-cell--medium { grid-column: span 1; }
48
+ }
@@ -0,0 +1,46 @@
1
+ /* Breadcrumb */
2
+ .rf-breadcrumb {
3
+ font-size: 0.85rem;
4
+ margin: 0 0 1.5rem;
5
+ }
6
+ .rf-breadcrumb__items {
7
+ display: contents;
8
+ }
9
+ .rf-breadcrumb-item {
10
+ display: contents;
11
+ }
12
+ .rf-breadcrumb ol {
13
+ display: flex;
14
+ align-items: center;
15
+ flex-wrap: wrap;
16
+ gap: 0.25rem;
17
+ list-style: none;
18
+ padding: 0;
19
+ margin: 0;
20
+ }
21
+ .rf-breadcrumb li {
22
+ display: flex;
23
+ align-items: center;
24
+ gap: 0.25rem;
25
+ padding: 0;
26
+ margin: 0;
27
+ }
28
+ .rf-breadcrumb li + li::before {
29
+ content: var(--separator);
30
+ color: var(--rf-color-muted);
31
+ opacity: 0.5;
32
+ margin-right: 0.125rem;
33
+ }
34
+ .rf-breadcrumb a {
35
+ color: var(--rf-color-muted);
36
+ text-decoration: none;
37
+ transition: color 150ms ease;
38
+ }
39
+ .rf-breadcrumb a:hover {
40
+ color: var(--rf-color-primary);
41
+ text-decoration: none;
42
+ }
43
+ .rf-breadcrumb li:last-child span {
44
+ color: var(--rf-color-text);
45
+ font-weight: 500;
46
+ }
@@ -0,0 +1,56 @@
1
+ /* Cast */
2
+ .rf-cast {
3
+ margin: 1.5rem 0;
4
+ }
5
+ .rf-cast__members {
6
+ display: contents;
7
+ }
8
+ .rf-cast--grid ul {
9
+ display: grid;
10
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
11
+ gap: 1rem;
12
+ list-style: none;
13
+ padding: 0;
14
+ }
15
+ .rf-cast--list ul {
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: 0.75rem;
19
+ list-style: none;
20
+ padding: 0;
21
+ }
22
+ .rf-cast-member {
23
+ border: 1px solid var(--rf-color-border);
24
+ border-radius: var(--rf-radius-md);
25
+ padding: 1.25rem;
26
+ text-align: center;
27
+ }
28
+ .rf-cast-member__info {
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: 0.25rem;
32
+ }
33
+ .rf-cast-member__name {
34
+ font-weight: 600;
35
+ font-size: 1rem;
36
+ color: var(--rf-color-text);
37
+ }
38
+ .rf-cast-member__role {
39
+ font-size: 0.875rem;
40
+ color: var(--rf-color-muted);
41
+ }
42
+ .rf-cast-member__body {
43
+ margin-top: 0.75rem;
44
+ font-size: 0.875rem;
45
+ color: var(--rf-color-muted);
46
+ }
47
+ .rf-cast-member__body:empty { display: none; }
48
+ .rf-cast-member__body span[property] { display: none; }
49
+ .rf-cast-member img {
50
+ width: 80px;
51
+ height: 80px;
52
+ border-radius: var(--rf-radius-full);
53
+ object-fit: cover;
54
+ margin: 0 auto 0.75rem;
55
+ display: block;
56
+ }
@@ -0,0 +1,53 @@
1
+ /* Changelog */
2
+ .rf-changelog {
3
+ margin: 2rem 0;
4
+ }
5
+ .rf-changelog__releases {
6
+ display: contents;
7
+ }
8
+ .rf-changelog-release {
9
+ padding: 1.5rem 0;
10
+ border-bottom: 1px solid var(--rf-color-border);
11
+ }
12
+ .rf-changelog-release:last-child {
13
+ border-bottom: none;
14
+ }
15
+ .rf-changelog-release__body {
16
+ display: contents;
17
+ }
18
+ .rf-changelog-release h3 {
19
+ font-size: 1.25rem;
20
+ font-weight: 700;
21
+ margin: 0 0 0.25rem;
22
+ color: var(--rf-color-text);
23
+ }
24
+ .rf-changelog-release time {
25
+ display: block;
26
+ font-size: 0.8rem;
27
+ color: var(--rf-color-muted);
28
+ margin-bottom: 0.75rem;
29
+ }
30
+ .rf-changelog-release ul {
31
+ padding-left: 1.25rem;
32
+ margin: 0;
33
+ }
34
+ .rf-changelog-release li {
35
+ font-size: 0.925rem;
36
+ line-height: 1.65;
37
+ margin-bottom: 0.25rem;
38
+ }
39
+ .rf-changelog-release strong {
40
+ display: inline-block;
41
+ font-size: 0.7rem;
42
+ font-weight: 700;
43
+ text-transform: uppercase;
44
+ letter-spacing: 0.05em;
45
+ padding: 0.1rem 0.4rem;
46
+ border-radius: var(--rf-radius-sm);
47
+ margin-right: 0.375rem;
48
+ vertical-align: middle;
49
+ }
50
+ .rf-changelog-release li strong:first-child {
51
+ background: var(--rf-color-success-bg);
52
+ color: var(--rf-color-success);
53
+ }
@@ -0,0 +1,33 @@
1
+ /* Chart */
2
+ .rf-chart {
3
+ border: 1px solid var(--rf-color-border);
4
+ border-radius: var(--rf-radius-lg);
5
+ padding: 1.5rem;
6
+ margin: 1.5rem 0;
7
+ }
8
+ .rf-chart__title {
9
+ font-weight: 600;
10
+ font-size: 1rem;
11
+ margin-bottom: 1rem;
12
+ text-align: center;
13
+ }
14
+ .rf-chart__container { width: 100%; }
15
+ .rf-chart__svg { width: 100%; height: auto; }
16
+ .rf-chart__legend {
17
+ display: flex;
18
+ justify-content: center;
19
+ gap: 1rem;
20
+ margin-top: 1rem;
21
+ }
22
+ .rf-chart__legend-item {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: 0.375rem;
26
+ font-size: 0.8125rem;
27
+ color: var(--rf-color-muted);
28
+ }
29
+ .rf-chart__legend-color {
30
+ width: 12px;
31
+ height: 12px;
32
+ border-radius: 2px;
33
+ }
@@ -0,0 +1,72 @@
1
+ /* Code Group */
2
+ .rf-codegroup {
3
+ border: 1px solid var(--rf-color-border);
4
+ border-radius: var(--rf-radius-md);
5
+ overflow: hidden;
6
+ margin: 1.5rem 0;
7
+ background: var(--rf-color-code-bg);
8
+ color: var(--rf-color-code-text);
9
+ box-shadow: var(--rf-shadow-md);
10
+ }
11
+ .rf-codegroup__topbar {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 0.375rem;
15
+ padding: 0.75rem 1rem;
16
+ background: rgba(255, 255, 255, 0.03);
17
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
18
+ }
19
+ .rf-codegroup__dot {
20
+ width: 10px;
21
+ height: 10px;
22
+ border-radius: var(--rf-radius-full);
23
+ opacity: 0.8;
24
+ }
25
+ .rf-codegroup__dot:nth-child(1) { background: #ef4444; }
26
+ .rf-codegroup__dot:nth-child(2) { background: #f59e0b; }
27
+ .rf-codegroup__dot:nth-child(3) { background: #22c55e; }
28
+ .rf-codegroup__title {
29
+ margin-left: 0.5rem;
30
+ font-family: var(--rf-font-mono);
31
+ font-size: 0.8rem;
32
+ opacity: 0.7;
33
+ }
34
+ .rf-codegroup__tabs {
35
+ display: flex;
36
+ background: rgba(255, 255, 255, 0.03);
37
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
38
+ overflow-x: auto;
39
+ overflow-y: hidden;
40
+ }
41
+ .rf-codegroup__tab {
42
+ flex: 0 0 auto;
43
+ padding: 0.5rem 1rem;
44
+ font-size: 0.8rem;
45
+ font-family: var(--rf-font-mono);
46
+ color: rgba(255, 255, 255, 0.5);
47
+ background: none;
48
+ border: none;
49
+ border-bottom: 2px solid transparent;
50
+ cursor: pointer;
51
+ transition: color 200ms ease, border-color 200ms ease;
52
+ white-space: nowrap;
53
+ }
54
+ .rf-codegroup__tab:hover {
55
+ color: rgba(255, 255, 255, 0.8);
56
+ }
57
+ .rf-codegroup__tab--active {
58
+ color: rgba(255, 255, 255, 0.95);
59
+ border-bottom-color: var(--rf-color-primary);
60
+ }
61
+ .rf-codegroup__content pre {
62
+ margin: 0;
63
+ padding: 1rem 1.25rem;
64
+ overflow-x: auto;
65
+ background: none;
66
+ border: none;
67
+ border-radius: 0;
68
+ }
69
+ .rf-codegroup__content code {
70
+ font-family: var(--rf-font-mono);
71
+ font-size: 0.85rem;
72
+ }
@@ -0,0 +1,41 @@
1
+ /* Compare */
2
+ .rf-compare {
3
+ margin: 1.5rem 0;
4
+ border: 1px solid var(--rf-color-border);
5
+ border-radius: var(--rf-radius-md);
6
+ overflow: hidden;
7
+ }
8
+ .rf-compare--side-by-side .rf-compare__panels {
9
+ display: grid;
10
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
11
+ }
12
+ .rf-compare--stacked .rf-compare__panels {
13
+ display: flex;
14
+ flex-direction: column;
15
+ }
16
+ .rf-compare [data-panel] {
17
+ min-width: 0;
18
+ overflow: auto;
19
+ }
20
+ .rf-compare--side-by-side [data-panel] + [data-panel] {
21
+ border-left: 1px solid var(--rf-color-border);
22
+ }
23
+ .rf-compare--stacked [data-panel] + [data-panel] {
24
+ border-top: 1px solid var(--rf-color-border);
25
+ }
26
+ .rf-compare [data-label] {
27
+ display: block;
28
+ padding: 0.5rem 1rem;
29
+ font-size: 0.75rem;
30
+ font-weight: 600;
31
+ text-transform: uppercase;
32
+ letter-spacing: 0.05em;
33
+ color: var(--rf-color-muted);
34
+ background: var(--rf-color-surface);
35
+ border-bottom: 1px solid var(--rf-color-border);
36
+ }
37
+ .rf-compare pre {
38
+ margin: 0;
39
+ border: none;
40
+ border-radius: 0;
41
+ }
@@ -0,0 +1,211 @@
1
+ /* Comparison */
2
+ .rf-comparison {
3
+ margin: 2rem 0;
4
+ }
5
+ .rf-comparison__grid {
6
+ display: contents;
7
+ }
8
+ .rf-comparison-column__body,
9
+ .rf-comparison-row__body {
10
+ display: contents;
11
+ }
12
+ .rf-comparison__title {
13
+ text-align: center;
14
+ margin: 0 0 1.5rem;
15
+ font-size: 1.5rem;
16
+ font-weight: 700;
17
+ color: var(--rf-color-text);
18
+ }
19
+ .rf-comparison meta,
20
+ .rf-comparison span[property] { display: none; }
21
+ /* Table layout */
22
+ .rf-comparison__table-wrapper {
23
+ overflow-x: auto;
24
+ -webkit-overflow-scrolling: touch;
25
+ margin: 0 -1rem;
26
+ padding: 0 1rem;
27
+ }
28
+ .rf-comparison__table {
29
+ width: 100%;
30
+ border-collapse: collapse;
31
+ font-size: 0.9375rem;
32
+ }
33
+ .rf-comparison__table thead {
34
+ position: sticky;
35
+ top: 0;
36
+ z-index: 1;
37
+ }
38
+ .rf-comparison__table th,
39
+ .rf-comparison__table td {
40
+ padding: 0.75rem 1rem;
41
+ text-align: left;
42
+ border-bottom: 1px solid var(--rf-color-border);
43
+ }
44
+ .rf-comparison__table thead th {
45
+ background: var(--rf-color-bg);
46
+ font-weight: 700;
47
+ font-size: 1rem;
48
+ color: var(--rf-color-text);
49
+ border-bottom: 2px solid var(--rf-color-border);
50
+ vertical-align: bottom;
51
+ }
52
+ .rf-comparison__col-header--highlighted {
53
+ background: color-mix(in srgb, var(--rf-color-primary) 5%, var(--rf-color-bg));
54
+ border-bottom-color: var(--rf-color-primary);
55
+ }
56
+ .rf-comparison__recommended-badge {
57
+ display: block;
58
+ font-size: 0.6875rem;
59
+ font-weight: 600;
60
+ text-transform: uppercase;
61
+ letter-spacing: 0.05em;
62
+ color: var(--rf-color-primary);
63
+ margin-top: 0.25rem;
64
+ }
65
+ .rf-comparison__label-col {
66
+ width: 1%;
67
+ white-space: nowrap;
68
+ }
69
+ .rf-comparison__row-label {
70
+ font-weight: 600;
71
+ color: var(--rf-color-text);
72
+ white-space: nowrap;
73
+ background: var(--rf-color-bg);
74
+ }
75
+ .rf-comparison__cell {
76
+ color: var(--rf-color-muted);
77
+ vertical-align: middle;
78
+ }
79
+ .rf-comparison__cell--highlighted {
80
+ background: color-mix(in srgb, var(--rf-color-primary) 3%, transparent);
81
+ }
82
+ .rf-comparison__cell p { margin: 0; font-size: 0.875rem; }
83
+ .rf-comparison__cell strong { display: none; }
84
+ .rf-comparison__cell em {
85
+ font-style: italic;
86
+ color: var(--rf-color-muted);
87
+ }
88
+ .rf-comparison__cell--empty {
89
+ color: var(--rf-color-muted);
90
+ }
91
+ /* Row icons */
92
+ .rf-comparison__row-icon {
93
+ font-weight: 700;
94
+ font-size: 1.125rem;
95
+ }
96
+ .rf-comparison__row-icon--check {
97
+ color: var(--rf-color-success);
98
+ }
99
+ .rf-comparison__row-icon--cross {
100
+ color: var(--rf-color-danger);
101
+ }
102
+ /* Negative content */
103
+ .rf-comparison__negative {
104
+ color: var(--rf-color-danger);
105
+ opacity: 0.85;
106
+ }
107
+ .rf-comparison__negative del,
108
+ .rf-comparison__negative s {
109
+ text-decoration: line-through;
110
+ }
111
+ /* Callout badge */
112
+ .rf-comparison__callout-badge {
113
+ display: inline-block;
114
+ background: color-mix(in srgb, var(--rf-color-primary) 10%, transparent);
115
+ color: var(--rf-color-primary);
116
+ font-size: 0.75rem;
117
+ font-weight: 600;
118
+ padding: 0.125rem 0.5rem;
119
+ border-radius: 999px;
120
+ }
121
+ .rf-comparison__callout-badge p { margin: 0; font-size: inherit; }
122
+ /* Cards layout */
123
+ .rf-comparison__cards {
124
+ display: grid;
125
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
126
+ gap: 1.5rem;
127
+ align-items: start;
128
+ }
129
+ .rf-comparison-card {
130
+ border: 1px solid var(--rf-color-border);
131
+ border-radius: var(--rf-radius-md);
132
+ padding: 1.5rem;
133
+ background: var(--rf-color-bg);
134
+ position: relative;
135
+ transition: box-shadow 200ms ease, transform 200ms ease;
136
+ }
137
+ .rf-comparison-card:hover {
138
+ box-shadow: var(--rf-shadow-md);
139
+ }
140
+ .rf-comparison-card--highlighted {
141
+ border-color: var(--rf-color-primary);
142
+ box-shadow: var(--rf-shadow-lg);
143
+ transform: scale(1.02);
144
+ }
145
+ .rf-comparison-card__badge {
146
+ position: absolute;
147
+ top: -0.625rem;
148
+ left: 50%;
149
+ transform: translateX(-50%);
150
+ background: var(--rf-color-primary);
151
+ color: white;
152
+ font-size: 0.6875rem;
153
+ font-weight: 700;
154
+ text-transform: uppercase;
155
+ letter-spacing: 0.05em;
156
+ padding: 0.125rem 0.75rem;
157
+ border-radius: 999px;
158
+ white-space: nowrap;
159
+ }
160
+ .rf-comparison-card__name {
161
+ margin: 0 0 1rem;
162
+ font-size: 1.125rem;
163
+ font-weight: 700;
164
+ color: var(--rf-color-text);
165
+ }
166
+ .rf-comparison-card__rows {
167
+ list-style: none;
168
+ padding: 0;
169
+ margin: 0;
170
+ }
171
+ .rf-comparison-card__row {
172
+ padding: 0.5rem 0;
173
+ font-size: 0.875rem;
174
+ color: var(--rf-color-muted);
175
+ border-bottom: 1px solid var(--rf-color-border);
176
+ display: flex;
177
+ align-items: baseline;
178
+ gap: 0.5rem;
179
+ }
180
+ .rf-comparison-card__row:last-child { border-bottom: none; }
181
+ .rf-comparison-card__row strong { color: var(--rf-color-text); white-space: nowrap; }
182
+ .rf-comparison-card__row p { margin: 0; display: inline; }
183
+ .rf-comparison-card__row--negative { opacity: 0.7; }
184
+ .rf-comparison-card__row--callout {
185
+ border-bottom: none;
186
+ padding: 0.75rem 0 0.25rem;
187
+ }
188
+ /* Verdict */
189
+ .rf-comparison__verdict {
190
+ text-align: center;
191
+ font-size: 0.9375rem;
192
+ color: var(--rf-color-muted);
193
+ font-style: italic;
194
+ margin: 1.5rem auto 0;
195
+ max-width: 48rem;
196
+ }
197
+ /* Fallback column/row */
198
+ .rf-comparison-column { margin-bottom: 1rem; }
199
+ .rf-comparison-column--highlighted {
200
+ border-left: 3px solid var(--rf-color-primary);
201
+ padding-left: 1rem;
202
+ }
203
+ .rf-comparison-row { padding: 0.25rem 0; }
204
+ /* Responsive */
205
+ @media (max-width: 640px) {
206
+ .rf-comparison__cards { grid-template-columns: 1fr; }
207
+ .rf-comparison-card--highlighted { transform: none; }
208
+ .rf-comparison__table { font-size: 0.8125rem; }
209
+ .rf-comparison__table th,
210
+ .rf-comparison__table td { padding: 0.5rem 0.625rem; }
211
+ }
@@ -0,0 +1,54 @@
1
+ /* Conversation */
2
+ .rf-conversation {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: 1rem;
6
+ margin: 1.5rem 0;
7
+ max-width: 40rem;
8
+ }
9
+ .rf-conversation__messages {
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: 1rem;
13
+ }
14
+ .rf-conversation-message {
15
+ display: flex;
16
+ flex-direction: column;
17
+ max-width: 80%;
18
+ }
19
+ .rf-conversation-message--left {
20
+ align-self: flex-start;
21
+ align-items: flex-start;
22
+ }
23
+ .rf-conversation-message--right {
24
+ align-self: flex-end;
25
+ align-items: flex-end;
26
+ }
27
+ .rf-conversation-message__speaker {
28
+ font-size: 0.75rem;
29
+ font-weight: 600;
30
+ color: var(--rf-color-muted);
31
+ margin-bottom: 0.25rem;
32
+ padding: 0 0.75rem;
33
+ }
34
+ .rf-conversation-message__body {
35
+ padding: 0.75rem 1rem;
36
+ border-radius: 1rem;
37
+ font-size: 0.9375rem;
38
+ line-height: 1.5;
39
+ }
40
+ .rf-conversation-message--left .rf-conversation-message__body {
41
+ background: var(--rf-color-surface);
42
+ border-bottom-left-radius: 0.25rem;
43
+ }
44
+ .rf-conversation-message--right .rf-conversation-message__body {
45
+ background: var(--rf-color-primary);
46
+ color: white;
47
+ border-bottom-right-radius: 0.25rem;
48
+ }
49
+ .rf-conversation-message__body p { margin: 0; }
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; }