@refrakt-md/lumina 0.21.0 → 0.23.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 (131) hide show
  1. package/base.css +2 -1
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +7 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/tokens.d.ts +5 -3
  6. package/dist/tokens.d.ts.map +1 -1
  7. package/dist/tokens.js +44 -3
  8. package/dist/tokens.js.map +1 -1
  9. package/index.css +11 -1
  10. package/package.json +7 -5
  11. package/styles/base/attributes.css +6 -7
  12. package/styles/dimensions/checklist.css +7 -36
  13. package/styles/dimensions/cover.css +13 -95
  14. package/styles/dimensions/density.css +6 -3
  15. package/styles/dimensions/frame.css +7 -4
  16. package/styles/dimensions/media.css +14 -61
  17. package/styles/dimensions/metadata.css +30 -80
  18. package/styles/dimensions/sections.css +16 -30
  19. package/styles/dimensions/sequence.css +17 -82
  20. package/styles/dimensions/state.css +39 -56
  21. package/styles/dimensions/substrate.css +3 -0
  22. package/styles/dimensions/surfaces.css +73 -113
  23. package/styles/elements/blockquote.css +3 -2
  24. package/styles/elements/code.css +3 -0
  25. package/styles/elements/table.css +3 -0
  26. package/styles/global.css +24 -63
  27. package/styles/layouts/blog.css +34 -95
  28. package/styles/layouts/default.css +12 -86
  29. package/styles/layouts/docs.css +9 -159
  30. package/styles/layouts/mobile.css +3 -52
  31. package/styles/layouts/on-this-page.css +8 -7
  32. package/styles/layouts/plan.css +27 -158
  33. package/styles/layouts/search.css +17 -82
  34. package/styles/layouts/split.css +24 -169
  35. package/styles/layouts/theme-toggle.css +3 -29
  36. package/styles/layouts/version-switcher.css +9 -10
  37. package/styles/runes/accordion.css +25 -68
  38. package/styles/runes/aggregate.css +4 -13
  39. package/styles/runes/annotate.css +11 -40
  40. package/styles/runes/api.css +4 -1
  41. package/styles/runes/audio.css +12 -50
  42. package/styles/runes/badge.css +5 -2
  43. package/styles/runes/bar.css +3 -0
  44. package/styles/runes/bento.css +18 -161
  45. package/styles/runes/bg.css +3 -37
  46. package/styles/runes/blog.css +18 -20
  47. package/styles/runes/bond.css +6 -26
  48. package/styles/runes/breadcrumb.css +7 -15
  49. package/styles/runes/budget.css +23 -45
  50. package/styles/runes/bug.css +5 -2
  51. package/styles/runes/card.css +27 -95
  52. package/styles/runes/cast.css +10 -27
  53. package/styles/runes/changelog.css +13 -17
  54. package/styles/runes/character.css +6 -20
  55. package/styles/runes/chart.css +15 -57
  56. package/styles/runes/codegroup.css +18 -26
  57. package/styles/runes/collection.css +8 -85
  58. package/styles/runes/compare.css +8 -19
  59. package/styles/runes/comparison.css +29 -56
  60. package/styles/runes/conversation.css +9 -31
  61. package/styles/runes/cta.css +17 -40
  62. package/styles/runes/datatable.css +33 -48
  63. package/styles/runes/decision.css +5 -2
  64. package/styles/runes/design-context.css +5 -4
  65. package/styles/runes/details.css +9 -17
  66. package/styles/runes/diagram.css +8 -16
  67. package/styles/runes/diff.css +11 -94
  68. package/styles/runes/drawer.css +9 -113
  69. package/styles/runes/embed.css +5 -13
  70. package/styles/runes/event.css +5 -3
  71. package/styles/runes/expand.css +10 -45
  72. package/styles/runes/faction.css +6 -12
  73. package/styles/runes/feature.css +15 -43
  74. package/styles/runes/figure.css +7 -26
  75. package/styles/runes/file-ref.css +3 -18
  76. package/styles/runes/form.css +19 -48
  77. package/styles/runes/gallery.css +8 -140
  78. package/styles/runes/grid.css +4 -56
  79. package/styles/runes/hero.css +28 -140
  80. package/styles/runes/hint.css +23 -48
  81. package/styles/runes/howto.css +9 -31
  82. package/styles/runes/itinerary.css +15 -44
  83. package/styles/runes/juxtapose.css +17 -92
  84. package/styles/runes/lore.css +7 -14
  85. package/styles/runes/map.css +9 -42
  86. package/styles/runes/mediatext.css +4 -45
  87. package/styles/runes/milestone.css +15 -28
  88. package/styles/runes/mockup.css +10 -115
  89. package/styles/runes/nav.css +37 -212
  90. package/styles/runes/organization.css +6 -5
  91. package/styles/runes/page-section.css +3 -4
  92. package/styles/runes/pagination.css +10 -42
  93. package/styles/runes/palette.css +16 -35
  94. package/styles/runes/placeholder.css +16 -0
  95. package/styles/runes/plan-history.css +23 -43
  96. package/styles/runes/plan-progress.css +6 -7
  97. package/styles/runes/plan-ref.css +4 -1
  98. package/styles/runes/playlist.css +10 -44
  99. package/styles/runes/plot.css +9 -25
  100. package/styles/runes/preview.css +9 -34
  101. package/styles/runes/pricing.css +23 -41
  102. package/styles/runes/progress.css +8 -27
  103. package/styles/runes/pullquote.css +9 -31
  104. package/styles/runes/realm.css +6 -12
  105. package/styles/runes/recipe.css +12 -36
  106. package/styles/runes/relationships.css +5 -36
  107. package/styles/runes/reveal.css +17 -22
  108. package/styles/runes/sandbox.css +9 -39
  109. package/styles/runes/section.css +10 -24
  110. package/styles/runes/showcase.css +3 -20
  111. package/styles/runes/sidenote.css +5 -4
  112. package/styles/runes/snippet.css +3 -0
  113. package/styles/runes/spacing.css +14 -33
  114. package/styles/runes/spec.css +5 -2
  115. package/styles/runes/steps.css +14 -46
  116. package/styles/runes/storyboard.css +4 -19
  117. package/styles/runes/swatch.css +4 -7
  118. package/styles/runes/symbol.css +16 -14
  119. package/styles/runes/tabs.css +15 -18
  120. package/styles/runes/testimonial.css +12 -13
  121. package/styles/runes/textblock.css +6 -24
  122. package/styles/runes/timeline.css +10 -28
  123. package/styles/runes/tint.css +3 -0
  124. package/styles/runes/toc.css +9 -7
  125. package/styles/runes/track.css +12 -41
  126. package/styles/runes/typography.css +15 -27
  127. package/styles/runes/work.css +5 -2
  128. package/styles/runes/xref.css +3 -1
  129. package/tokens/base.css +56 -66
  130. package/tokens/dark.css +79 -80
  131. package/styles/dimensions/guest-posture.css +0 -27
@@ -1,3 +1,4 @@
1
+ @layer skin {
1
2
  /* Xref — inline cross-reference link */
2
3
 
3
4
  .rf-xref {
@@ -13,7 +14,6 @@
13
14
  }
14
15
  .rf-xref--external::after {
15
16
  content: '\2197'; /* ↗ */
16
- display: inline-block;
17
17
  margin-inline-start: 0.15em;
18
18
  font-size: 0.85em;
19
19
  vertical-align: 0.05em;
@@ -26,3 +26,5 @@
26
26
  color: var(--rf-color-muted);
27
27
  cursor: help;
28
28
  }
29
+
30
+ }
package/tokens/base.css CHANGED
@@ -1,37 +1,45 @@
1
- /* Lumina Theme — Design Tokens (Light Mode)
2
- *
3
- * Source of truth: packages/lumina/src/tokens.ts (`luminaTokens` export).
4
- * This file mirrors that export verbatim — a coverage test in
5
- * `packages/lumina/test/token-config-coverage.test.ts` keeps them in
6
- * lockstep; drift fails CI. Edit `tokens.ts` and update both, or run
7
- * a future build script that regenerates this file. */
1
+ @layer skin {
2
+ /* GENERATED from src/tokens.ts by scripts/generate-tokens.mjs — do not edit by hand.
3
+ * Edit the `luminaTokens` source and rebuild; a drift test guards this file. */
8
4
 
9
- :root {
10
- /* Typography */
5
+ :root, [data-color-scheme="light"] {
11
6
  --rf-font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
12
7
  --rf-font-mono: 'JetBrains Mono', 'Fira Code', ui-monospace, 'Cascadia Code', monospace;
13
-
14
- /* Core palette */
8
+ --rf-font-display: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
9
+ --rf-text-xs: 0.75rem;
10
+ --rf-text-sm: 0.875rem;
11
+ --rf-text: 1rem;
12
+ --rf-text-lg: 1.125rem;
13
+ --rf-text-xl: 1.25rem;
14
+ --rf-text-2xl: 1.5rem;
15
+ --rf-text-3xl: 1.875rem;
16
+ --rf-text-4xl: 2.5rem;
17
+ --rf-weight-light: 300;
18
+ --rf-weight-normal: 400;
19
+ --rf-weight-medium: 500;
20
+ --rf-weight-semibold: 600;
21
+ --rf-weight-bold: 700;
22
+ --rf-leading-tight: 1.2;
23
+ --rf-leading-snug: 1.35;
24
+ --rf-leading-normal: 1.5;
25
+ --rf-leading-relaxed: 1.65;
26
+ --rf-leading-loose: 2;
27
+ --rf-tracking-tight: -0.01em;
28
+ --rf-tracking-normal: 0;
29
+ --rf-tracking-wide: 0.03em;
30
+ --rf-tracking-wider: 0.06em;
15
31
  --rf-color-text: #1c1a17;
16
32
  --rf-color-muted: #6b6661;
17
33
  --rf-color-border: #e2e0dd;
18
34
  --rf-color-bg: #f5f4f1;
19
35
  --rf-color-primary: #1c1a17;
20
36
  --rf-color-primary-hover: #3a342d;
21
- /* Derived subtle primary wash — tracks `primary` in both modes. */
22
37
  --rf-color-primary-bg: color-mix(in oklch, var(--rf-color-primary) 10%, transparent);
23
38
  --rf-color-on-primary: #ffffff;
24
-
25
- /* Surfaces */
26
39
  --rf-color-surface: #fbfaf7;
27
40
  --rf-color-surface-hover: #ecebe8;
28
41
  --rf-color-surface-active: #e2e0dd;
29
42
  --rf-color-surface-raised: #ffffff;
30
- /* SPEC-087 — lightness delta for the derived inset surface (applied at use-site
31
- * via relative-color — lower L, keep C+H — so it tracks a tinted --rf-color-surface). */
32
- --rf-surface-inset-shift: 0.04;
33
-
34
- /* Semantic — muted earthy band per SPEC-051 */
35
43
  --rf-color-info: #34547a;
36
44
  --rf-color-info-bg: #e8edf4;
37
45
  --rf-color-info-border: #c5d2e0;
@@ -44,70 +52,37 @@
44
52
  --rf-color-success: #2d6a3e;
45
53
  --rf-color-success-bg: #e0eee4;
46
54
  --rf-color-success-border: #b8d4be;
47
-
48
- /* WORK-304 — neutral tint for line highlight (the third
49
- * `[data-line-status]` value that snippet / codegroup / diff share).
50
- * Subtle surface tint so highlighted rows read as emphasized but not
51
- * status-coloured (which would compete with diff's add/remove channel
52
- * and the semantic palette above). `*-rail` is the optional left-edge
53
- * border colour; falls back to the primary accent via the consuming
54
- * CSS for themes that don't override it.
55
- *
56
- * WORK-341 — these three (and `--rf-color-primary-bg` above) are
57
- * **intentionally shared**: each derives from a mode-aware token
58
- * (`text` / `primary` / `muted`), so they track dark mode automatically
59
- * and deliberately have no dark.css override (a fixed dark value would
60
- * break the derivation). */
55
+ --rf-color-code-bg: #ebeae8;
56
+ --rf-color-code-text: #1c1a17;
57
+ --rf-color-code-inline-bg: #e6e5e3;
61
58
  --rf-color-line-highlight: color-mix(in srgb, var(--rf-color-text) 6%, transparent);
62
59
  --rf-color-line-highlight-rail: var(--rf-color-primary, var(--rf-color-text));
63
- /* Gutter colour for `pre[data-linenumbers]` line counter. Defers to
64
- * the existing muted text token by default; themes can pin a
65
- * dedicated hue without overriding muted. */
66
60
  --rf-color-line-number: var(--rf-color-muted);
67
-
68
- /* Radii */
69
61
  --rf-radius-sm: 6px;
70
62
  --rf-radius-md: 10px;
71
63
  --rf-radius-lg: 16px;
72
64
  --rf-radius-full: 9999px;
73
-
74
- /* Spacing */
75
65
  --rf-spacing-xs: 0.25rem;
76
66
  --rf-spacing-sm: 0.5rem;
67
+ --rf-spacing-snug: 0.75rem;
68
+ --rf-spacing-cozy: 1rem;
77
69
  --rf-spacing-md: 1.5rem;
78
70
  --rf-spacing-lg: 2rem;
79
71
  --rf-spacing-xl: 3rem;
80
72
  --rf-spacing-2xl: 4rem;
81
-
82
- /* Section spacing */
83
73
  --rf-spacing-section: 4rem;
84
74
  --rf-spacing-section-tight: 1.5rem;
85
75
  --rf-spacing-section-loose: 6rem;
86
76
  --rf-spacing-section-breathe: 8rem;
87
-
88
- /* Inset (horizontal padding) */
89
77
  --rf-inset-flush: 0;
90
78
  --rf-inset-tight: 1rem;
91
79
  --rf-inset-loose: 4rem;
92
80
  --rf-inset-breathe: 8rem;
93
-
94
- /* Shadows */
95
81
  --rf-shadow-none: none;
96
82
  --rf-shadow-xs: 0 1px 2px rgba(0,0,0,0.04);
97
83
  --rf-shadow-sm: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
98
84
  --rf-shadow-md: 0 4px 12px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.04);
99
85
  --rf-shadow-lg: 0 8px 24px rgba(0,0,0,0.08), 0 2px 6px rgba(0,0,0,0.04);
100
-
101
- /* Code block */
102
- --rf-color-code-bg: #ebeae8;
103
- --rf-color-code-text: #1c1a17;
104
- --rf-color-code-inline-bg: #e6e5e3;
105
- /* Legacy alias — same value, kept for downstream CSS that reads the
106
- * older variable name. Will be removed once the rename is documented
107
- * widely enough that it's safe to drop. */
108
- --rf-color-inline-code-bg: #e6e5e3;
109
-
110
- /* Syntax — the quiet spectrum walk */
111
86
  --rf-syntax-keyword: #2a5c63;
112
87
  --rf-syntax-function: #4a3b6e;
113
88
  --rf-syntax-string: #8a3a3a;
@@ -115,19 +90,34 @@
115
90
  --rf-syntax-comment: #8a857d;
116
91
  --rf-syntax-punctuation: #6b6661;
117
92
  --rf-syntax-variable: #1c1a17;
118
-
119
- /* Shiki aliases — Shiki's CSS-variables theme emits `--rf-syntax-token-*`
120
- * with `token-` hardcoded inside its theme builder. We bridge by emitting
121
- * literal hex values matching the contract surface above. */
122
- --rf-syntax-foreground: #1c1a17;
123
- --rf-syntax-background: #ebeae8;
124
93
  --rf-syntax-token-keyword: #2a5c63;
94
+ --rf-syntax-token-tag: #2a5c63;
95
+ --rf-syntax-token-function: #4a3b6e;
96
+ --rf-syntax-token-link: #4a3b6e;
97
+ --rf-syntax-token-type: #4a3b6e;
98
+ --rf-syntax-token-attribute: #4a3b6e;
125
99
  --rf-syntax-token-string: #8a3a3a;
126
100
  --rf-syntax-token-string-expression: #8a3a3a;
101
+ --rf-syntax-token-regex: #8a3a3a;
127
102
  --rf-syntax-token-constant: #876327;
103
+ --rf-syntax-token-number: #876327;
128
104
  --rf-syntax-token-comment: #8a857d;
129
- --rf-syntax-token-function: #4a3b6e;
130
- --rf-syntax-token-parameter: #1c1a17;
131
105
  --rf-syntax-token-punctuation: #6b6661;
132
- --rf-syntax-token-link: #4a3b6e;
106
+ --rf-syntax-token-operator: #6b6661;
107
+ --rf-syntax-token-parameter: #1c1a17;
108
+ --rf-syntax-token-property: #1c1a17;
109
+ --rf-syntax-foreground: #1c1a17;
110
+ --rf-syntax-background: #ebeae8;
111
+ --rf-color-inline-code-bg: #e6e5e3;
112
+ --rf-surface-inset-shift: 0.04;
113
+ }
114
+
115
+ :root {
116
+ --rf-icon-hint-note: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%2210%22%2F%3E%3Cline%20x1%3D%2212%22%20y1%3D%2216%22%20x2%3D%2212%22%20y2%3D%2212%22%2F%3E%3Cline%20x1%3D%2212%22%20y1%3D%228%22%20x2%3D%2212.01%22%20y2%3D%228%22%2F%3E%3C%2Fsvg%3E");
117
+ --rf-icon-hint-warning: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M10.29%203.86L1.82%2018a2%202%200%200%200%201.71%203h16.94a2%202%200%200%200%201.71-3L13.71%203.86a2%202%200%200%200-3.42%200z%22%2F%3E%3Cline%20x1%3D%2212%22%20y1%3D%229%22%20x2%3D%2212%22%20y2%3D%2213%22%2F%3E%3Cline%20x1%3D%2212%22%20y1%3D%2217%22%20x2%3D%2212.01%22%20y2%3D%2217%22%2F%3E%3C%2Fsvg%3E");
118
+ --rf-icon-hint-caution: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%2210%22%2F%3E%3Cline%20x1%3D%2215%22%20y1%3D%229%22%20x2%3D%229%22%20y2%3D%2215%22%2F%3E%3Cline%20x1%3D%229%22%20y1%3D%229%22%20x2%3D%2215%22%20y2%3D%2215%22%2F%3E%3C%2Fsvg%3E");
119
+ --rf-icon-hint-check: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M22%2011.08V12a10%2010%200%201%201-5.93-9.14%22%2F%3E%3Cpolyline%20points%3D%2222%204%2012%2014.01%209%2011.01%22%2F%3E%3C%2Fsvg%3E");
120
+ --rf-icon-accordion-chevron: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolyline%20points%3D%229%2018%2015%2012%209%206%22%2F%3E%3C%2Fsvg%3E");
121
+ }
122
+
133
123
  }
package/tokens/dark.css CHANGED
@@ -1,12 +1,8 @@
1
- /* Lumina Theme — Dark Mode Token Overrides
2
- *
3
- * Source of truth: packages/lumina/src/tokens.ts (`luminaTokens.modes.dark`).
4
- * This file mirrors that overlay verbatim under both selectors
5
- * (`[data-theme="dark"]` for user toggles and the `prefers-color-scheme`
6
- * media query for system preference). A coverage test keeps the two in
7
- * lockstep; drift fails CI. */
1
+ @layer skin {
2
+ /* GENERATED from src/tokens.ts by scripts/generate-tokens.mjs — do not edit by hand.
3
+ * Edit the `luminaTokens` source and rebuild; a drift test guards this file. */
8
4
 
9
- [data-theme="dark"] {
5
+ [data-theme="dark"], [data-color-scheme="dark"] {
10
6
  --rf-color-text: #f6f4ef;
11
7
  --rf-color-muted: #94908a;
12
8
  --rf-color-border: #282825;
@@ -14,13 +10,10 @@
14
10
  --rf-color-primary: #f6f4ef;
15
11
  --rf-color-primary-hover: #d4cfc5;
16
12
  --rf-color-on-primary: #1a1a17;
17
-
18
13
  --rf-color-surface: #1f1f1c;
19
14
  --rf-color-surface-hover: #282825;
20
15
  --rf-color-surface-active: #333330;
21
16
  --rf-color-surface-raised: #272723;
22
- --rf-surface-inset-shift: 0.06;
23
-
24
17
  --rf-color-info: #9bb4c7;
25
18
  --rf-color-info-bg: #1f2530;
26
19
  --rf-color-info-border: #3d4655;
@@ -33,12 +26,13 @@
33
26
  --rf-color-success: #7eb398;
34
27
  --rf-color-success-bg: #1a2a1f;
35
28
  --rf-color-success-border: #2a4a35;
36
-
37
29
  --rf-color-code-bg: #1c1c19;
38
30
  --rf-color-code-text: #f6f4ef;
39
31
  --rf-color-code-inline-bg: #2b2b29;
40
- --rf-color-inline-code-bg: #2b2b29;
41
-
32
+ --rf-shadow-xs: 0 1px 2px rgba(0,0,0,0.3);
33
+ --rf-shadow-sm: 0 1px 3px rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.3);
34
+ --rf-shadow-md: 0 4px 12px rgba(0,0,0,0.4), 0 1px 3px rgba(0,0,0,0.3);
35
+ --rf-shadow-lg: 0 8px 24px rgba(0,0,0,0.5), 0 2px 6px rgba(0,0,0,0.3);
42
36
  --rf-syntax-keyword: #7eb6bc;
43
37
  --rf-syntax-function: #a89bc7;
44
38
  --rf-syntax-string: #c79a9a;
@@ -46,83 +40,88 @@
46
40
  --rf-syntax-comment: #6b6661;
47
41
  --rf-syntax-punctuation: #94908a;
48
42
  --rf-syntax-variable: #f6f4ef;
49
-
50
- --rf-syntax-foreground: #f6f4ef;
51
- --rf-syntax-background: #1c1c19;
52
43
  --rf-syntax-token-keyword: #7eb6bc;
44
+ --rf-syntax-token-tag: #7eb6bc;
45
+ --rf-syntax-token-function: #a89bc7;
46
+ --rf-syntax-token-link: #a89bc7;
47
+ --rf-syntax-token-type: #a89bc7;
48
+ --rf-syntax-token-attribute: #a89bc7;
53
49
  --rf-syntax-token-string: #c79a9a;
54
50
  --rf-syntax-token-string-expression: #c79a9a;
51
+ --rf-syntax-token-regex: #c79a9a;
55
52
  --rf-syntax-token-constant: #d4b07e;
53
+ --rf-syntax-token-number: #d4b07e;
56
54
  --rf-syntax-token-comment: #6b6661;
57
- --rf-syntax-token-function: #a89bc7;
58
- --rf-syntax-token-parameter: #f6f4ef;
59
55
  --rf-syntax-token-punctuation: #94908a;
60
- --rf-syntax-token-link: #a89bc7;
61
-
62
- --rf-shadow-xs: 0 1px 2px rgba(0,0,0,0.3);
63
- --rf-shadow-sm: 0 1px 3px rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.3);
64
- --rf-shadow-md: 0 4px 12px rgba(0,0,0,0.4), 0 1px 3px rgba(0,0,0,0.3);
65
- --rf-shadow-lg: 0 8px 24px rgba(0,0,0,0.5), 0 2px 6px rgba(0,0,0,0.3);
56
+ --rf-syntax-token-operator: #94908a;
57
+ --rf-syntax-token-parameter: #f6f4ef;
58
+ --rf-syntax-token-property: #f6f4ef;
59
+ --rf-syntax-foreground: #f6f4ef;
60
+ --rf-syntax-background: #1c1c19;
61
+ --rf-color-inline-code-bg: #2b2b29;
62
+ --rf-surface-inset-shift: 0.06;
66
63
  }
67
64
 
68
- /* Auto dark mode via system preference */
69
65
  @media (prefers-color-scheme: dark) {
70
66
  :root:not([data-theme="light"]) {
71
- --rf-color-text: #f6f4ef;
72
- --rf-color-muted: #94908a;
73
- --rf-color-border: #282825;
74
- --rf-color-bg: #1a1a17;
75
- --rf-color-primary: #f6f4ef;
76
- --rf-color-primary-hover: #d4cfc5;
67
+ --rf-color-text: #f6f4ef;
68
+ --rf-color-muted: #94908a;
69
+ --rf-color-border: #282825;
70
+ --rf-color-bg: #1a1a17;
71
+ --rf-color-primary: #f6f4ef;
72
+ --rf-color-primary-hover: #d4cfc5;
77
73
  --rf-color-on-primary: #1a1a17;
78
-
79
- --rf-color-surface: #1f1f1c;
80
- --rf-color-surface-hover: #282825;
81
- --rf-color-surface-active: #333330;
82
- --rf-color-surface-raised: #272723;
74
+ --rf-color-surface: #1f1f1c;
75
+ --rf-color-surface-hover: #282825;
76
+ --rf-color-surface-active: #333330;
77
+ --rf-color-surface-raised: #272723;
78
+ --rf-color-info: #9bb4c7;
79
+ --rf-color-info-bg: #1f2530;
80
+ --rf-color-info-border: #3d4655;
81
+ --rf-color-warning: #d4a868;
82
+ --rf-color-warning-bg: #2a2519;
83
+ --rf-color-warning-border: #4a3f2a;
84
+ --rf-color-danger: #d48888;
85
+ --rf-color-danger-bg: #2a1818;
86
+ --rf-color-danger-border: #4a2a2a;
87
+ --rf-color-success: #7eb398;
88
+ --rf-color-success-bg: #1a2a1f;
89
+ --rf-color-success-border: #2a4a35;
90
+ --rf-color-code-bg: #1c1c19;
91
+ --rf-color-code-text: #f6f4ef;
92
+ --rf-color-code-inline-bg: #2b2b29;
93
+ --rf-shadow-xs: 0 1px 2px rgba(0,0,0,0.3);
94
+ --rf-shadow-sm: 0 1px 3px rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.3);
95
+ --rf-shadow-md: 0 4px 12px rgba(0,0,0,0.4), 0 1px 3px rgba(0,0,0,0.3);
96
+ --rf-shadow-lg: 0 8px 24px rgba(0,0,0,0.5), 0 2px 6px rgba(0,0,0,0.3);
97
+ --rf-syntax-keyword: #7eb6bc;
98
+ --rf-syntax-function: #a89bc7;
99
+ --rf-syntax-string: #c79a9a;
100
+ --rf-syntax-constant: #d4b07e;
101
+ --rf-syntax-comment: #6b6661;
102
+ --rf-syntax-punctuation: #94908a;
103
+ --rf-syntax-variable: #f6f4ef;
104
+ --rf-syntax-token-keyword: #7eb6bc;
105
+ --rf-syntax-token-tag: #7eb6bc;
106
+ --rf-syntax-token-function: #a89bc7;
107
+ --rf-syntax-token-link: #a89bc7;
108
+ --rf-syntax-token-type: #a89bc7;
109
+ --rf-syntax-token-attribute: #a89bc7;
110
+ --rf-syntax-token-string: #c79a9a;
111
+ --rf-syntax-token-string-expression: #c79a9a;
112
+ --rf-syntax-token-regex: #c79a9a;
113
+ --rf-syntax-token-constant: #d4b07e;
114
+ --rf-syntax-token-number: #d4b07e;
115
+ --rf-syntax-token-comment: #6b6661;
116
+ --rf-syntax-token-punctuation: #94908a;
117
+ --rf-syntax-token-operator: #94908a;
118
+ --rf-syntax-token-parameter: #f6f4ef;
119
+ --rf-syntax-token-property: #f6f4ef;
120
+ --rf-syntax-foreground: #f6f4ef;
121
+ --rf-syntax-background: #1c1c19;
122
+ --rf-color-inline-code-bg: #2b2b29;
83
123
  --rf-surface-inset-shift: 0.06;
84
-
85
- --rf-color-info: #9bb4c7;
86
- --rf-color-info-bg: #1f2530;
87
- --rf-color-info-border: #3d4655;
88
- --rf-color-warning: #d4a868;
89
- --rf-color-warning-bg: #2a2519;
90
- --rf-color-warning-border: #4a3f2a;
91
- --rf-color-danger: #d48888;
92
- --rf-color-danger-bg: #2a1818;
93
- --rf-color-danger-border: #4a2a2a;
94
- --rf-color-success: #7eb398;
95
- --rf-color-success-bg: #1a2a1f;
96
- --rf-color-success-border: #2a4a35;
97
-
98
- --rf-color-code-bg: #1c1c19;
99
- --rf-color-code-text: #f6f4ef;
100
- --rf-color-code-inline-bg: #2b2b29;
101
- --rf-color-inline-code-bg: #2b2b29;
102
-
103
- --rf-syntax-keyword: #7eb6bc;
104
- --rf-syntax-function: #a89bc7;
105
- --rf-syntax-string: #c79a9a;
106
- --rf-syntax-constant: #d4b07e;
107
- --rf-syntax-comment: #6b6661;
108
- --rf-syntax-punctuation: #94908a;
109
- --rf-syntax-variable: #f6f4ef;
110
-
111
- --rf-syntax-foreground: #f6f4ef;
112
- --rf-syntax-background: #1c1c19;
113
- --rf-syntax-token-keyword: #7eb6bc;
114
- --rf-syntax-token-string: #c79a9a;
115
- --rf-syntax-token-string-expression: #c79a9a;
116
- --rf-syntax-token-constant: #d4b07e;
117
- --rf-syntax-token-comment: #6b6661;
118
- --rf-syntax-token-function: #a89bc7;
119
- --rf-syntax-token-parameter: #f6f4ef;
120
- --rf-syntax-token-punctuation: #94908a;
121
- --rf-syntax-token-link: #a89bc7;
122
-
123
- --rf-shadow-xs: 0 1px 2px rgba(0,0,0,0.3);
124
- --rf-shadow-sm: 0 1px 3px rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.3);
125
- --rf-shadow-md: 0 4px 12px rgba(0,0,0,0.4), 0 1px 3px rgba(0,0,0,0.3);
126
- --rf-shadow-lg: 0 8px 24px rgba(0,0,0,0.5), 0 2px 6px rgba(0,0,0,0.3);
127
124
  }
128
125
  }
126
+
127
+ }
@@ -1,27 +0,0 @@
1
- /* Media-guest interaction posture (SPEC-090).
2
- *
3
- * A media-slot guest is presentational by default. When its container is itself
4
- * an interaction target — a `card` / `bento-cell` with a stretched whole-tile
5
- * `href` link — or the guest is a `cover` backdrop (SPEC-089), the engine marks
6
- * the media zone `data-guest-posture="presentational"`. That makes the guest
7
- * non-interactive at the pointer level, so:
8
- * • a linked tile links reliably — clicks over the media fall through to the
9
- * stretched link beneath it instead of being eaten by the guest's controls;
10
- * • a cover backdrop never steals interaction from the overlaid content.
11
- *
12
- * The behaviours layer additionally skips JS enhancement for a presentational
13
- * guest (see @refrakt-md/behaviors), so it renders its static fallback. The
14
- * posture is scoped to the media zone only — content-overlay controls
15
- * (body/footer links & buttons) are outside it and stay fully interactive. */
16
- [data-section="media"][data-guest-posture="presentational"] {
17
- pointer-events: none;
18
- }
19
-
20
- /* Static fallback for demoted tabbed guests (`codegroup`, `tabs`): their tab
21
- * strip is rendered statically but the behaviour that wires it is skipped, so
22
- * it would sit there inert. Hide it and let the panels read as plain stacked
23
- * content — the non-enhanced render is the fallback. (Guests whose chrome is
24
- * JS-injected — datatable toolbars, map controls — simply never appear.) */
25
- [data-section="media"][data-guest-posture="presentational"] :is(.rf-tabs__tabs, .rf-codegroup__tabs) {
26
- display: none;
27
- }