eidotter 0.22.2 → 0.24.2

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 (161) hide show
  1. package/LICENSE.md +0 -0
  2. package/README.md +1 -1
  3. package/dist/components/AIText/components/AIText.d.ts +25 -0
  4. package/dist/components/AIText/components/index.d.ts +2 -0
  5. package/dist/components/AIText/index.d.ts +2 -0
  6. package/dist/components/Accordion/components/AccordionFill.d.ts +0 -0
  7. package/dist/components/Accordion/components/Section.d.ts +0 -0
  8. package/dist/components/Accordion/components/index.d.ts +0 -0
  9. package/dist/components/Accordion/index.d.ts +0 -0
  10. package/dist/components/Alert/components/Alert.d.ts +0 -0
  11. package/dist/components/Alert/components/index.d.ts +0 -0
  12. package/dist/components/Alert/index.d.ts +0 -0
  13. package/dist/components/Badge/components/Badge.d.ts +0 -0
  14. package/dist/components/Badge/components/index.d.ts +0 -0
  15. package/dist/components/Badge/index.d.ts +0 -0
  16. package/dist/components/Brand/components/BrandLockup.d.ts +0 -0
  17. package/dist/components/Brand/components/Logo.d.ts +0 -0
  18. package/dist/components/Brand/components/Wordmark.d.ts +0 -0
  19. package/dist/components/Brand/components/index.d.ts +0 -0
  20. package/dist/components/Brand/index.d.ts +0 -0
  21. package/dist/components/Breadcrumb/components/Breadcrumb.d.ts +0 -0
  22. package/dist/components/Breadcrumb/components/index.d.ts +0 -0
  23. package/dist/components/Breadcrumb/index.d.ts +0 -0
  24. package/dist/components/Button/components/Button.d.ts +0 -0
  25. package/dist/components/Button/components/index.d.ts +0 -0
  26. package/dist/components/Button/index.d.ts +0 -0
  27. package/dist/components/Card/components/Card.d.ts +0 -0
  28. package/dist/components/Card/components/index.d.ts +0 -0
  29. package/dist/components/Card/index.d.ts +0 -0
  30. package/dist/components/Chat/components/ChatContainer.d.ts +0 -0
  31. package/dist/components/Chat/components/ChatHistory.d.ts +0 -0
  32. package/dist/components/Chat/components/ChatInput.d.ts +0 -0
  33. package/dist/components/Chat/components/ChatMessage.d.ts +0 -0
  34. package/dist/components/Chat/components/index.d.ts +0 -0
  35. package/dist/components/Chat/index.d.ts +0 -0
  36. package/dist/components/Checkbox/components/Checkbox.d.ts +0 -0
  37. package/dist/components/Checkbox/components/index.d.ts +0 -0
  38. package/dist/components/Checkbox/index.d.ts +0 -0
  39. package/dist/components/CmdPalette/components/CmdPalette.d.ts +0 -0
  40. package/dist/components/CmdPalette/components/index.d.ts +0 -0
  41. package/dist/components/CmdPalette/index.d.ts +0 -0
  42. package/dist/components/CommandPrompt/components/CommandPrompt.d.ts +0 -0
  43. package/dist/components/CommandPrompt/components/index.d.ts +0 -0
  44. package/dist/components/CommandPrompt/index.d.ts +0 -0
  45. package/dist/components/DosFigure/components/DosFigure.d.ts +0 -0
  46. package/dist/components/DosFigure/components/index.d.ts +0 -0
  47. package/dist/components/DosFigure/index.d.ts +0 -0
  48. package/dist/components/FilterBar/components/FilterBar.d.ts +0 -0
  49. package/dist/components/FilterBar/components/index.d.ts +0 -0
  50. package/dist/components/FilterBar/index.d.ts +0 -0
  51. package/dist/components/Footer/components/Footer.d.ts +12 -0
  52. package/dist/components/Footer/components/index.d.ts +0 -0
  53. package/dist/components/Footer/index.d.ts +0 -0
  54. package/dist/components/Header/components/Header.d.ts +0 -0
  55. package/dist/components/Header/components/index.d.ts +0 -0
  56. package/dist/components/Header/index.d.ts +0 -0
  57. package/dist/components/Icon/components/Icon.d.ts +2 -2
  58. package/dist/components/Icon/components/index.d.ts +0 -0
  59. package/dist/components/Icon/index.d.ts +0 -0
  60. package/dist/components/InlineExpand/components/InlineExpand.d.ts +0 -0
  61. package/dist/components/InlineExpand/components/index.d.ts +0 -0
  62. package/dist/components/InlineExpand/index.d.ts +0 -0
  63. package/dist/components/InlineLink/components/InlineLink.d.ts +0 -0
  64. package/dist/components/InlineLink/components/index.d.ts +0 -0
  65. package/dist/components/InlineLink/index.d.ts +0 -0
  66. package/dist/components/Input/components/Input.d.ts +0 -0
  67. package/dist/components/Input/components/index.d.ts +0 -0
  68. package/dist/components/Input/index.d.ts +0 -0
  69. package/dist/components/LegalPage/components/LegalPage.d.ts +0 -0
  70. package/dist/components/LegalPage/components/clauses.d.ts +0 -0
  71. package/dist/components/LegalPage/components/index.d.ts +0 -0
  72. package/dist/components/LegalPage/index.d.ts +0 -0
  73. package/dist/components/Lightbox/components/Lightbox.d.ts +0 -0
  74. package/dist/components/Lightbox/components/index.d.ts +0 -0
  75. package/dist/components/Lightbox/index.d.ts +0 -0
  76. package/dist/components/Modal/components/Modal.d.ts +0 -0
  77. package/dist/components/Modal/components/index.d.ts +0 -0
  78. package/dist/components/Modal/index.d.ts +0 -0
  79. package/dist/components/Nav/components/Nav.d.ts +0 -0
  80. package/dist/components/Nav/components/index.d.ts +0 -0
  81. package/dist/components/Nav/index.d.ts +0 -0
  82. package/dist/components/Notification/components/Notification.d.ts +0 -0
  83. package/dist/components/Notification/components/index.d.ts +0 -0
  84. package/dist/components/Notification/index.d.ts +0 -0
  85. package/dist/components/Progress/components/Progress.d.ts +0 -0
  86. package/dist/components/Progress/components/index.d.ts +0 -0
  87. package/dist/components/Progress/index.d.ts +0 -0
  88. package/dist/components/RetroEffects/components/RetroEffects.d.ts +0 -0
  89. package/dist/components/RetroEffects/components/index.d.ts +0 -0
  90. package/dist/components/RetroEffects/index.d.ts +0 -0
  91. package/dist/components/Separator/components/Separator.d.ts +0 -0
  92. package/dist/components/Separator/components/index.d.ts +0 -0
  93. package/dist/components/Separator/index.d.ts +0 -0
  94. package/dist/components/Stat/components/Stat.d.ts +0 -0
  95. package/dist/components/Stat/components/index.d.ts +0 -0
  96. package/dist/components/Stat/index.d.ts +0 -0
  97. package/dist/components/Switch/components/Switch.d.ts +0 -0
  98. package/dist/components/Switch/components/index.d.ts +0 -0
  99. package/dist/components/Switch/index.d.ts +0 -0
  100. package/dist/components/Tabs/components/Tabs.d.ts +0 -0
  101. package/dist/components/Tabs/components/index.d.ts +0 -0
  102. package/dist/components/Tabs/index.d.ts +0 -0
  103. package/dist/components/Tag/components/Tag.d.ts +0 -0
  104. package/dist/components/Tag/components/TagGroup.d.ts +0 -0
  105. package/dist/components/Tag/components/index.d.ts +0 -0
  106. package/dist/components/Tag/index.d.ts +0 -0
  107. package/dist/components/Terminal/components/Terminal.d.ts +0 -0
  108. package/dist/components/Terminal/components/index.d.ts +0 -0
  109. package/dist/components/Terminal/index.d.ts +0 -0
  110. package/dist/components/TextScramble/components/TextScramble.d.ts +0 -0
  111. package/dist/components/TextScramble/components/index.d.ts +0 -0
  112. package/dist/components/TextScramble/index.d.ts +0 -0
  113. package/dist/components/TimelineContainer/components/TimelineAxis.d.ts +0 -0
  114. package/dist/components/TimelineContainer/components/TimelineContainer.d.ts +0 -0
  115. package/dist/components/TimelineContainer/components/TimelineContent.d.ts +0 -0
  116. package/dist/components/TimelineContainer/components/TimelineEntryCard.d.ts +0 -0
  117. package/dist/components/TimelineContainer/components/ZoomControls.d.ts +0 -0
  118. package/dist/components/TimelineContainer/components/index.d.ts +0 -0
  119. package/dist/components/TimelineContainer/components/timelineUtils.d.ts +0 -0
  120. package/dist/components/TimelineContainer/components/timelineUtils.test.d.ts +0 -0
  121. package/dist/components/TimelineContainer/components/types.d.ts +0 -0
  122. package/dist/components/TimelineContainer/components/useDrillDown.d.ts +0 -0
  123. package/dist/components/TimelineContainer/components/useDrillDown.test.d.ts +0 -0
  124. package/dist/components/TimelineContainer/components/useSelection.d.ts +0 -0
  125. package/dist/components/TimelineContainer/components/useSelection.test.d.ts +0 -0
  126. package/dist/components/TimelineContainer/components/useZoom.d.ts +0 -0
  127. package/dist/components/TimelineContainer/components/useZoom.test.d.ts +0 -0
  128. package/dist/components/TimelineContainer/components/variants/TimelineEntryCardGallery.d.ts +0 -0
  129. package/dist/components/TimelineContainer/components/variants/TimelineEntryCardImage.d.ts +0 -0
  130. package/dist/components/TimelineContainer/components/views/DayView.d.ts +0 -0
  131. package/dist/components/TimelineContainer/components/views/HourView.d.ts +0 -0
  132. package/dist/components/TimelineContainer/components/views/MonthView.d.ts +0 -0
  133. package/dist/components/TimelineContainer/components/views/YearView.d.ts +0 -0
  134. package/dist/components/TimelineContainer/components/views/index.d.ts +0 -0
  135. package/dist/components/TimelineContainer/index.d.ts +0 -0
  136. package/dist/components/TimelineNode/components/TimelineNode.d.ts +0 -0
  137. package/dist/components/TimelineNode/components/index.d.ts +0 -0
  138. package/dist/components/TimelineNode/index.d.ts +0 -0
  139. package/dist/components/registry.d.ts +0 -0
  140. package/dist/eidotter.css +1 -1
  141. package/dist/index.d.ts +3 -1
  142. package/dist/index.es.js +584 -528
  143. package/dist/index.umd.js +1 -1
  144. package/guidelines/README.md +0 -0
  145. package/guidelines/components.md +0 -0
  146. package/guidelines/patterns.md +0 -0
  147. package/package.json +8 -3
  148. package/src/styles/dos-utilities.css +0 -0
  149. package/src/styles/fonts/Flexi_IBM_VGA_LICENSE.txt +0 -0
  150. package/src/styles/fonts/Flexi_IBM_VGA_True.ttf +0 -0
  151. package/src/styles/fonts/Perfect_DOS_VGA_437_LICENSE.txt +0 -0
  152. package/src/styles/fonts/Perfect_DOS_VGA_437_Win.ttf +0 -0
  153. package/src/styles/fonts.css +0 -0
  154. package/src/styles/theme.amber-mono.css +4 -113
  155. package/src/styles/theme.cga-amber.css +5 -114
  156. package/src/styles/theme.cga-mode4-p0.css +9 -114
  157. package/src/styles/theme.cga-mode4-p1.css +9 -114
  158. package/src/styles/theme.cga-mode5.css +9 -114
  159. package/src/styles/tokens.css +35 -4
  160. package/tailwind.preset.cjs +3 -1
  161. package/tailwind.preset.enhanced.cjs +0 -0
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eidotter",
3
- "version": "0.22.2",
3
+ "version": "0.24.2",
4
4
  "type": "module",
5
5
  "description": "A DOS Themed Design System",
6
6
  "main": "./dist/index.umd.js",
@@ -54,12 +54,15 @@
54
54
  "build-tokens": "node style-dictionary.config.mjs",
55
55
  "lint": "eslint src/ --report-unused-disable-directives --max-warnings 0",
56
56
  "lint-tokens": "node scripts/lint-token-refs.mjs",
57
+ "check-contrast": "node scripts/check-contrast.mjs",
58
+ "test-a11y": "test-storybook --url http://127.0.0.1:6007 --maxWorkers 2 --no-cache",
57
59
  "preview": "vite preview",
58
60
  "storybook": "storybook dev -p 6006",
59
61
  "build-storybook": "storybook build -o docs",
60
62
  "test": "jest",
61
63
  "create-component": "ts-node scripts/create-component.ts",
62
64
  "sync-to-figma": "ts-node scripts/sync-to-figma.ts",
65
+ "sync-figma-to-swift": "ts-node scripts/sync-figma-to-swift.ts",
63
66
  "validate-tokens": "node scripts/validate-tokens.cjs"
64
67
  },
65
68
  "repository": {
@@ -98,13 +101,14 @@
98
101
  "devDependencies": {
99
102
  "@eslint/js": "^10.0.1",
100
103
  "@figma/plugin-typings": "^1.107.0-beta.2",
101
- "@figma/rest-api-spec": "^0.37.0",
104
+ "@figma/rest-api-spec": "^0.38.0",
102
105
  "@storybook/addon-a11y": "^10.2.7",
103
106
  "@storybook/addon-designs": "^11.1.2",
104
107
  "@storybook/addon-docs": "^10.2.7",
105
108
  "@storybook/addon-links": "^10.2.7",
106
109
  "@storybook/react": "^10.2.7",
107
110
  "@storybook/react-vite": "^10.2.7",
111
+ "@storybook/test-runner": "^0.24.3",
108
112
  "@testing-library/dom": "^10.4.1",
109
113
  "@testing-library/jest-dom": "^6.6.3",
110
114
  "@testing-library/react": "^16.3.0",
@@ -114,8 +118,9 @@
114
118
  "@types/node": "^25.0.3",
115
119
  "@types/react": "^19.1.2",
116
120
  "@types/react-dom": "^19.0.0",
117
- "@vitejs/plugin-react": "^5.1.2",
121
+ "@vitejs/plugin-react": "^6.0.2",
118
122
  "autoprefixer": "^10.4.27",
123
+ "axe-playwright": "^2.2.2",
119
124
  "chromatic": "^16.2.0",
120
125
  "cross-env": "^10.1.0",
121
126
  "dotenv": "^17.3.1",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -29,124 +29,16 @@
29
29
  --color-cga-magenta-glow: rgba(255, 85, 255, 0.5); /** Magenta glow at 50% opacity */
30
30
  --color-cga-blue-glow: rgba(85, 85, 255, 0.5); /** Blue glow at 50% opacity */
31
31
  --color-cga-white-glow: rgba(255, 245, 224, 0.5); /** Warm white glow at 50% opacity */
32
- --color-semantic-text-ai-draft: #ff1a8c; /** AI-drafted prose, not yet revised by human — Signalnoise hot pink. Brand-locked hex: same value across all themes so the AI marker is unmissable regardless of palette. */
32
+ --color-semantic-text-ai-draft: #ff1a8c; /** AI-drafted prose, not yet revised by human — Signalnoise hot pink. Brand-locked hex: same value across all themes so the AI marker is unmissable regardless of palette. Lives in base (T1) so all themes inherit it; the rest of color.semantic.* lives in web.tokens.json (T2). */
33
33
  --color-semantic-text-ai-draft-glow: rgba(255, 26, 140, 0.5); /** Phosphor halo around AI-drafted prose. 50% rgba of the aiDraft hex; brand-locked alongside it. Used in text-shadow only; no Tailwind utility. */
34
- --typography-font-family-primary: 'Perfect DOS VGA 437', monospace; /** Perfect DOS VGA 437 by Zeh Fernando (free-for-any-use; ships with bundled LICENSE.txt). Pixel-perfect-vector TTF — every glyph outline is axis-aligned, scales cleanly to any size. The `monospace` fallback preserves DOS aesthetic on @font-face failure. */
35
- --typography-font-family-fallback: monospace; /** Bare `monospace` stack — fail-loud diagnostic counterpart to `primary`. Compose with `primary` when consumers want strict Perfect-DOS-or-nothing rendering. */
36
- --typography-font-size-text-xs: 1.125rem; /** 18px — smallest body text */
37
- --typography-font-size-text-sm: 1.25rem; /** 20px — secondary body text */
38
- --typography-font-size-text-md: 1.375rem; /** 22px — default body text */
39
- --typography-font-size-text-lg: 1.5rem; /** 24px — large body text */
40
- --typography-font-size-text-xl: 1.625rem; /** 26px — extra large body text */
41
- --typography-font-size-display-xs: 1.875rem; /** 30px — smallest heading */
42
- --typography-font-size-display-sm: 2.25rem; /** 36px — small heading */
43
- --typography-font-size-display-md: 2.625rem; /** 42px — medium heading */
44
- --typography-font-size-display-lg: 3.5rem; /** 56px — large heading */
45
- --typography-font-size-display-xl: 4.125rem; /** 66px — extra large heading */
46
- --typography-font-size-display-2xl: 4.875rem; /** 78px — hero heading */
47
- --typography-font-weight-regular: 400;
48
- --typography-font-weight-semibold: 400;
49
- --typography-font-weight-bold: 400;
50
- --typography-line-height-text-xs: 1.125rem; /** 18px */
51
- --typography-line-height-text-sm: 1.25rem; /** 20px */
52
- --typography-line-height-text-md: 1.5rem; /** 24px */
53
- --typography-line-height-text-lg: 1.75rem; /** 28px */
54
- --typography-line-height-text-xl: 1.875rem; /** 30px */
55
- --typography-line-height-display-xs: 2rem; /** 32px */
56
- --typography-line-height-display-sm: 2.375rem; /** 38px */
57
- --typography-line-height-display-md: 2.75rem; /** 44px */
58
- --typography-line-height-display-lg: 3.75rem; /** 60px */
59
- --typography-line-height-display-xl: 4.5rem; /** 72px */
60
- --typography-line-height-display-2xl: 5.625rem; /** 90px */
61
- --spacing-0: 0;
62
- --spacing-1: 4px;
63
- --spacing-2: 8px;
64
- --spacing-3: 12px;
65
- --spacing-4: 16px;
66
- --spacing-5: 20px;
67
- --spacing-6: 24px;
68
- --spacing-8: 32px;
69
- --spacing-10: 40px;
70
- --spacing-12: 48px;
71
- --spacing-16: 64px;
72
- --border-radius-none: 0;
73
- --border-radius-sm: 2px;
74
- --border-radius-base: 4px;
75
- --border-width-thin: 1px;
76
- --border-width-medium: 2px;
77
- --border-width-thick: 4px;
78
- --shadow-none: none;
79
- --shadow-drop: 2px 2px 0px 0px #080500; /** Hard drop shadow, DOS window style (amber-warm near-black) */
80
- --shadow-glow-xs: 0px 0px 8px 0px #FFB00080; /** Extra small phosphor glow (subtle hover) */
81
- --shadow-glow-sm: 0px 0px 10px 0px #FFB00080; /** Small phosphor glow (button hover) */
82
- --shadow-glow-md: 0px 0px 20px 0px #FFB00080; /** Medium phosphor glow (container/card) */
83
- --shadow-glow-lg: 0px 0px 30px 0px #FFB00080; /** Large phosphor glow (emphasis) */
84
- --shadow-glow-xs-red: 0px 0px 8px 0px #FF555580; /** Extra small red phosphor glow */
85
- --shadow-glow-sm-red: 0px 0px 10px 0px #FF555580; /** Small red phosphor glow */
86
- --shadow-glow-md-red: 0px 0px 20px 0px #FF555580; /** Medium red phosphor glow */
87
- --shadow-glow-lg-red: 0px 0px 30px 0px #FF555580; /** Large red phosphor glow */
88
- --shadow-glow-xs-green: 0px 0px 8px 0px #55FF5580; /** Extra small green phosphor glow */
89
- --shadow-glow-sm-green: 0px 0px 10px 0px #55FF5580; /** Small green phosphor glow */
90
- --shadow-glow-md-green: 0px 0px 20px 0px #55FF5580; /** Medium green phosphor glow */
91
- --shadow-glow-lg-green: 0px 0px 30px 0px #55FF5580; /** Large green phosphor glow */
92
- --shadow-glow-xs-cyan: 0px 0px 8px 0px #55FFFF80; /** Extra small cyan phosphor glow */
93
- --shadow-glow-sm-cyan: 0px 0px 10px 0px #55FFFF80; /** Small cyan phosphor glow */
94
- --shadow-glow-md-cyan: 0px 0px 20px 0px #55FFFF80; /** Medium cyan phosphor glow */
95
- --shadow-glow-lg-cyan: 0px 0px 30px 0px #55FFFF80; /** Large cyan phosphor glow */
96
- --shadow-glow-xs-magenta: 0px 0px 8px 0px #FF55FF80; /** Extra small magenta phosphor glow */
97
- --shadow-glow-sm-magenta: 0px 0px 10px 0px #FF55FF80; /** Small magenta phosphor glow */
98
- --shadow-glow-md-magenta: 0px 0px 20px 0px #FF55FF80; /** Medium magenta phosphor glow */
99
- --shadow-glow-lg-magenta: 0px 0px 30px 0px #FF55FF80; /** Large magenta phosphor glow */
100
- --shadow-glow-xs-blue: 0px 0px 8px 0px #5555FF80; /** Extra small blue phosphor glow */
101
- --shadow-glow-sm-blue: 0px 0px 10px 0px #5555FF80; /** Small blue phosphor glow */
102
- --shadow-glow-md-blue: 0px 0px 20px 0px #5555FF80; /** Medium blue phosphor glow */
103
- --shadow-glow-lg-blue: 0px 0px 30px 0px #5555FF80; /** Large blue phosphor glow */
104
- --shadow-glow-xs-white: 0px 0px 8px 0px #FFFFFF80; /** Extra small white phosphor glow */
105
- --shadow-glow-sm-white: 0px 0px 10px 0px #FFFFFF80; /** Small white phosphor glow */
106
- --shadow-glow-md-white: 0px 0px 20px 0px #FFFFFF80; /** Medium white phosphor glow */
107
- --shadow-glow-lg-white: 0px 0px 30px 0px #FFFFFF80; /** Large white phosphor glow */
108
- --duration-instant: 0ms;
109
- --duration-fast: 100ms;
110
- --duration-normal: 200ms;
111
- --duration-slow: 400ms;
112
- --duration-power-off: 400ms; /** CRT power-off animation */
113
- --duration-power-on: 600ms; /** CRT power-on animation (phosphor warm-up) */
114
- --opacity-0: 0; /** Fully transparent */
115
- --opacity-10: 0.1; /** Subtle hover overlays */
116
- --opacity-25: 0.25; /** Light overlays */
117
- --opacity-50: 0.5; /** Disabled states, medium overlays */
118
- --opacity-75: 0.75; /** Heavy overlays */
119
- --opacity-80: 0.8; /** Modal backdrop */
120
- --opacity-100: 1; /** Fully opaque */
121
- --z-index-base: 0; /** Default stacking context */
122
- --z-index-dropdown: 1000; /** Dropdowns and popovers */
123
- --z-index-sticky: 1020; /** Sticky headers and navs */
124
- --z-index-fixed: 1030; /** Fixed position elements */
125
- --z-index-modal: 1040; /** Modal dialogs */
126
- --z-index-popover: 1050; /** Popovers above modals */
127
- --z-index-tooltip: 1060; /** Tooltips (topmost) */
128
- --focus-ring-width: 2px; /** Focus ring thickness */
129
- --focus-ring-offset: 2px; /** Gap between element and ring */
130
- --effects-overlay: rgba(8, 5, 0, 0.8); /** Modal/dialog backdrop overlay (amber-warm) */
131
- --effects-scanline-light: rgba(255, 176, 0, 0.05); /** CRT scanline light band */
132
- --effects-scanline-dark: rgba(255, 176, 0, 0.02); /** CRT scanline dark band */
133
- --effects-vignette-glow: rgba(255, 176, 0, 0.12); /** Inner screen glow vignette */
134
- --effects-vignette-edge: rgba(8, 5, 0, 0.3); /** Vignette edge darkening (amber-warm) */
135
- --effects-vignette-corner: rgba(8, 5, 0, 0.5); /** Vignette corner darkening (amber-warm) */
136
- --effects-screen-tint: rgba(255, 176, 0, 0.1); /** Subtle amber screen tint */
137
- --effects-drop-shadow: rgba(8, 5, 0, 0.5); /** Terminal window drop shadow (amber-warm) */
138
- --effects-phosphor-glow: rgba(255, 176, 0, 0.12); /** Phosphor bloom/bleeding glow for CRT effects */
139
- --effects-bloom-outer: rgba(255, 176, 0, 0.05); /** Outer phosphor bloom layer (faint glow) */
140
- --effects-bloom-center: rgba(255, 176, 0, 0.03); /** Center phosphor bloom highlight */
141
- --effects-crt-background: #060300; /** Dark warm-black for CRT screen (not pure black) */
142
- --color-semantic-background-primary: var(--color-cga-black);
143
- --color-semantic-background-secondary: var(--color-cga-dark-gray);
144
- --color-semantic-background-accent: var(--color-cga-amber);
145
34
  --color-semantic-text-primary: var(--color-cga-amber);
146
35
  --color-semantic-text-secondary: var(--color-cga-black);
147
36
  --color-semantic-text-accent: var(--color-cga-yellow);
148
37
  --color-semantic-text-disabled: var(--color-cga-amber-dim);
149
38
  --color-semantic-text-muted: var(--color-cga-light-gray);
39
+ --color-semantic-background-primary: var(--color-cga-black);
40
+ --color-semantic-background-secondary: var(--color-cga-dark-gray);
41
+ --color-semantic-background-accent: var(--color-cga-amber);
150
42
  --color-semantic-border-default: var(--color-cga-amber);
151
43
  --color-semantic-border-focus: var(--color-cga-amber-bright);
152
44
  --color-semantic-border-hover: var(--color-cga-yellow);
@@ -163,5 +55,4 @@
163
55
  --color-semantic-alert-success: var(--color-cga-green);
164
56
  --color-semantic-alert-warning: var(--color-cga-cyan);
165
57
  --color-semantic-alert-error: var(--color-cga-red);
166
- --focus-ring-color: var(--color-cga-yellow); /** Focus ring color (accent) */
167
58
  }
@@ -11,7 +11,7 @@
11
11
  --color-cga-magenta: #aa00aa;
12
12
  --color-cga-brown: #aa5500;
13
13
  --color-cga-light-gray: #adaaa5; /** Warm light gray (~3% amber) */
14
- --color-cga-dark-gray: #5a5852; /** Warm mid-gray (~3% amber) */
14
+ --color-cga-dark-gray: #3a3935; /** Warm dark-gray (~3% amber). Darkened from #5A5852 in v0.23 so text-primary (#ADAAA5) passes WCAG AA on bg-secondary surfaces (4.99:1, per scripts/check-contrast.mjs). Disabled-state usage still leverages it; disabled UI is exempt from contrast minimums per WCAG 2.1 SC 1.4.3. */
15
15
  --color-cga-bright-blue: #5555ff;
16
16
  --color-cga-bright-green: #55ff55;
17
17
  --color-cga-bright-cyan: #55ffff;
@@ -29,128 +29,20 @@
29
29
  --color-cga-magenta-glow: rgba(255, 85, 255, 0.5); /** Magenta glow at 50% opacity */
30
30
  --color-cga-blue-glow: rgba(85, 85, 255, 0.5); /** Blue glow at 50% opacity */
31
31
  --color-cga-white-glow: rgba(255, 245, 224, 0.5); /** Warm white glow at 50% opacity */
32
- --color-semantic-text-ai-draft: #ff1a8c; /** AI-drafted prose, not yet revised by human — Signalnoise hot pink. Brand-locked hex: same value across all themes so the AI marker is unmissable regardless of palette. */
32
+ --color-semantic-text-ai-draft: #ff1a8c; /** AI-drafted prose, not yet revised by human — Signalnoise hot pink. Brand-locked hex: same value across all themes so the AI marker is unmissable regardless of palette. Lives in base (T1) so all themes inherit it; the rest of color.semantic.* lives in web.tokens.json (T2). */
33
33
  --color-semantic-text-ai-draft-glow: rgba(255, 26, 140, 0.5); /** Phosphor halo around AI-drafted prose. 50% rgba of the aiDraft hex; brand-locked alongside it. Used in text-shadow only; no Tailwind utility. */
34
34
  --color-semantic-alert-info: #0a1828;
35
35
  --color-semantic-alert-success: #122010;
36
36
  --color-semantic-alert-warning: #352800;
37
37
  --color-semantic-alert-error: #430500;
38
- --typography-font-family-primary: 'Perfect DOS VGA 437', monospace; /** Perfect DOS VGA 437 by Zeh Fernando (free-for-any-use; ships with bundled LICENSE.txt). Pixel-perfect-vector TTF — every glyph outline is axis-aligned, scales cleanly to any size. The `monospace` fallback preserves DOS aesthetic on @font-face failure. */
39
- --typography-font-family-fallback: monospace; /** Bare `monospace` stack — fail-loud diagnostic counterpart to `primary`. Compose with `primary` when consumers want strict Perfect-DOS-or-nothing rendering. */
40
- --typography-font-size-text-xs: 1.125rem; /** 18px — smallest body text */
41
- --typography-font-size-text-sm: 1.25rem; /** 20px — secondary body text */
42
- --typography-font-size-text-md: 1.375rem; /** 22px — default body text */
43
- --typography-font-size-text-lg: 1.5rem; /** 24px — large body text */
44
- --typography-font-size-text-xl: 1.625rem; /** 26px — extra large body text */
45
- --typography-font-size-display-xs: 1.875rem; /** 30px — smallest heading */
46
- --typography-font-size-display-sm: 2.25rem; /** 36px — small heading */
47
- --typography-font-size-display-md: 2.625rem; /** 42px — medium heading */
48
- --typography-font-size-display-lg: 3.5rem; /** 56px — large heading */
49
- --typography-font-size-display-xl: 4.125rem; /** 66px — extra large heading */
50
- --typography-font-size-display-2xl: 4.875rem; /** 78px — hero heading */
51
- --typography-font-weight-regular: 400;
52
- --typography-font-weight-semibold: 400;
53
- --typography-font-weight-bold: 400;
54
- --typography-line-height-text-xs: 1.125rem; /** 18px */
55
- --typography-line-height-text-sm: 1.25rem; /** 20px */
56
- --typography-line-height-text-md: 1.5rem; /** 24px */
57
- --typography-line-height-text-lg: 1.75rem; /** 28px */
58
- --typography-line-height-text-xl: 1.875rem; /** 30px */
59
- --typography-line-height-display-xs: 2rem; /** 32px */
60
- --typography-line-height-display-sm: 2.375rem; /** 38px */
61
- --typography-line-height-display-md: 2.75rem; /** 44px */
62
- --typography-line-height-display-lg: 3.75rem; /** 60px */
63
- --typography-line-height-display-xl: 4.5rem; /** 72px */
64
- --typography-line-height-display-2xl: 5.625rem; /** 90px */
65
- --spacing-0: 0;
66
- --spacing-1: 4px;
67
- --spacing-2: 8px;
68
- --spacing-3: 12px;
69
- --spacing-4: 16px;
70
- --spacing-5: 20px;
71
- --spacing-6: 24px;
72
- --spacing-8: 32px;
73
- --spacing-10: 40px;
74
- --spacing-12: 48px;
75
- --spacing-16: 64px;
76
- --border-radius-none: 0;
77
- --border-radius-sm: 2px;
78
- --border-radius-base: 4px;
79
- --border-width-thin: 1px;
80
- --border-width-medium: 2px;
81
- --border-width-thick: 4px;
82
- --shadow-none: none;
83
- --shadow-drop: 2px 2px 0px 0px #080500; /** Hard drop shadow, DOS window style (amber-warm near-black) */
84
- --shadow-glow-xs: 0px 0px 8px 0px #FFB00080; /** Extra small phosphor glow (subtle hover) */
85
- --shadow-glow-sm: 0px 0px 10px 0px #FFB00080; /** Small phosphor glow (button hover) */
86
- --shadow-glow-md: 0px 0px 20px 0px #FFB00080; /** Medium phosphor glow (container/card) */
87
- --shadow-glow-lg: 0px 0px 30px 0px #FFB00080; /** Large phosphor glow (emphasis) */
88
- --shadow-glow-xs-red: 0px 0px 8px 0px #FF555580; /** Extra small red phosphor glow */
89
- --shadow-glow-sm-red: 0px 0px 10px 0px #FF555580; /** Small red phosphor glow */
90
- --shadow-glow-md-red: 0px 0px 20px 0px #FF555580; /** Medium red phosphor glow */
91
- --shadow-glow-lg-red: 0px 0px 30px 0px #FF555580; /** Large red phosphor glow */
92
- --shadow-glow-xs-green: 0px 0px 8px 0px #55FF5580; /** Extra small green phosphor glow */
93
- --shadow-glow-sm-green: 0px 0px 10px 0px #55FF5580; /** Small green phosphor glow */
94
- --shadow-glow-md-green: 0px 0px 20px 0px #55FF5580; /** Medium green phosphor glow */
95
- --shadow-glow-lg-green: 0px 0px 30px 0px #55FF5580; /** Large green phosphor glow */
96
- --shadow-glow-xs-cyan: 0px 0px 8px 0px #55FFFF80; /** Extra small cyan phosphor glow */
97
- --shadow-glow-sm-cyan: 0px 0px 10px 0px #55FFFF80; /** Small cyan phosphor glow */
98
- --shadow-glow-md-cyan: 0px 0px 20px 0px #55FFFF80; /** Medium cyan phosphor glow */
99
- --shadow-glow-lg-cyan: 0px 0px 30px 0px #55FFFF80; /** Large cyan phosphor glow */
100
- --shadow-glow-xs-magenta: 0px 0px 8px 0px #FF55FF80; /** Extra small magenta phosphor glow */
101
- --shadow-glow-sm-magenta: 0px 0px 10px 0px #FF55FF80; /** Small magenta phosphor glow */
102
- --shadow-glow-md-magenta: 0px 0px 20px 0px #FF55FF80; /** Medium magenta phosphor glow */
103
- --shadow-glow-lg-magenta: 0px 0px 30px 0px #FF55FF80; /** Large magenta phosphor glow */
104
- --shadow-glow-xs-blue: 0px 0px 8px 0px #5555FF80; /** Extra small blue phosphor glow */
105
- --shadow-glow-sm-blue: 0px 0px 10px 0px #5555FF80; /** Small blue phosphor glow */
106
- --shadow-glow-md-blue: 0px 0px 20px 0px #5555FF80; /** Medium blue phosphor glow */
107
- --shadow-glow-lg-blue: 0px 0px 30px 0px #5555FF80; /** Large blue phosphor glow */
108
- --shadow-glow-xs-white: 0px 0px 8px 0px #FFFFFF80; /** Extra small white phosphor glow */
109
- --shadow-glow-sm-white: 0px 0px 10px 0px #FFFFFF80; /** Small white phosphor glow */
110
- --shadow-glow-md-white: 0px 0px 20px 0px #FFFFFF80; /** Medium white phosphor glow */
111
- --shadow-glow-lg-white: 0px 0px 30px 0px #FFFFFF80; /** Large white phosphor glow */
112
- --duration-instant: 0ms;
113
- --duration-fast: 100ms;
114
- --duration-normal: 200ms;
115
- --duration-slow: 400ms;
116
- --duration-power-off: 400ms; /** CRT power-off animation */
117
- --duration-power-on: 600ms; /** CRT power-on animation (phosphor warm-up) */
118
- --opacity-0: 0; /** Fully transparent */
119
- --opacity-10: 0.1; /** Subtle hover overlays */
120
- --opacity-25: 0.25; /** Light overlays */
121
- --opacity-50: 0.5; /** Disabled states, medium overlays */
122
- --opacity-75: 0.75; /** Heavy overlays */
123
- --opacity-80: 0.8; /** Modal backdrop */
124
- --opacity-100: 1; /** Fully opaque */
125
- --z-index-base: 0; /** Default stacking context */
126
- --z-index-dropdown: 1000; /** Dropdowns and popovers */
127
- --z-index-sticky: 1020; /** Sticky headers and navs */
128
- --z-index-fixed: 1030; /** Fixed position elements */
129
- --z-index-modal: 1040; /** Modal dialogs */
130
- --z-index-popover: 1050; /** Popovers above modals */
131
- --z-index-tooltip: 1060; /** Tooltips (topmost) */
132
- --focus-ring-width: 2px; /** Focus ring thickness */
133
- --focus-ring-offset: 2px; /** Gap between element and ring */
134
- --effects-overlay: rgba(8, 5, 0, 0.8); /** Modal/dialog backdrop overlay (amber-warm) */
135
- --effects-scanline-light: rgba(255, 176, 0, 0.05); /** CRT scanline light band */
136
- --effects-scanline-dark: rgba(255, 176, 0, 0.02); /** CRT scanline dark band */
137
- --effects-vignette-glow: rgba(255, 176, 0, 0.12); /** Inner screen glow vignette */
138
- --effects-vignette-edge: rgba(8, 5, 0, 0.3); /** Vignette edge darkening (amber-warm) */
139
- --effects-vignette-corner: rgba(8, 5, 0, 0.5); /** Vignette corner darkening (amber-warm) */
140
- --effects-screen-tint: rgba(255, 176, 0, 0.1); /** Subtle amber screen tint */
141
- --effects-drop-shadow: rgba(8, 5, 0, 0.5); /** Terminal window drop shadow (amber-warm) */
142
- --effects-phosphor-glow: rgba(255, 176, 0, 0.12); /** Phosphor bloom/bleeding glow for CRT effects */
143
- --effects-bloom-outer: rgba(255, 176, 0, 0.05); /** Outer phosphor bloom layer (faint glow) */
144
- --effects-bloom-center: rgba(255, 176, 0, 0.03); /** Center phosphor bloom highlight */
145
- --effects-crt-background: #060300; /** Dark warm-black for CRT screen (not pure black) */
146
- --color-semantic-background-primary: var(--color-cga-black);
147
- --color-semantic-background-secondary: var(--color-cga-dark-gray);
148
- --color-semantic-background-accent: var(--color-cga-blue);
149
38
  --color-semantic-text-primary: var(--color-cga-light-gray);
150
39
  --color-semantic-text-secondary: var(--color-cga-black);
151
40
  --color-semantic-text-accent: var(--color-cga-amber);
152
41
  --color-semantic-text-disabled: var(--color-cga-dark-gray);
153
42
  --color-semantic-text-muted: var(--color-cga-brown);
43
+ --color-semantic-background-primary: var(--color-cga-black);
44
+ --color-semantic-background-secondary: var(--color-cga-dark-gray);
45
+ --color-semantic-background-accent: var(--color-cga-blue);
154
46
  --color-semantic-border-default: var(--color-cga-light-gray);
155
47
  --color-semantic-border-focus: var(--color-cga-amber);
156
48
  --color-semantic-border-hover: var(--color-cga-amber-bright);
@@ -163,5 +55,4 @@
163
55
  --color-semantic-status-warning: var(--color-cga-yellow);
164
56
  --color-semantic-status-error: var(--color-cga-bright-red);
165
57
  --color-semantic-status-info: var(--color-cga-bright-cyan);
166
- --focus-ring-color: var(--color-cga-yellow); /** Focus ring color (accent) */
167
58
  }
@@ -29,16 +29,16 @@
29
29
  --color-cga-magenta-glow: rgba(255, 85, 255, 0.5); /** Magenta glow at 50% opacity */
30
30
  --color-cga-blue-glow: rgba(85, 85, 255, 0.5); /** Blue glow at 50% opacity */
31
31
  --color-cga-white-glow: rgba(255, 245, 224, 0.5); /** Warm white glow at 50% opacity */
32
- --color-semantic-background-primary: #050300;
33
- --color-semantic-background-secondary: #050300;
34
- --color-semantic-background-accent: #00ff00;
32
+ --color-semantic-text-ai-draft: #ff1a8c; /** AI-drafted prose, not yet revised by human — Signalnoise hot pink. Brand-locked hex: same value across all themes so the AI marker is unmissable regardless of palette. Lives in base (T1) so all themes inherit it; the rest of color.semantic.* lives in web.tokens.json (T2). */
33
+ --color-semantic-text-ai-draft-glow: rgba(255, 26, 140, 0.5); /** Phosphor halo around AI-drafted prose. 50% rgba of the aiDraft hex; brand-locked alongside it. Used in text-shadow only; no Tailwind utility. */
35
34
  --color-semantic-text-primary: #ffff00;
36
35
  --color-semantic-text-secondary: #050300;
37
36
  --color-semantic-text-accent: #00ff00;
38
37
  --color-semantic-text-disabled: #ff0000;
39
38
  --color-semantic-text-muted: rgba(255, 255, 0, 0.65);
40
- --color-semantic-text-ai-draft: #ff1a8c; /** AI-drafted prose, not yet revised by human — Signalnoise hot pink. Brand-locked hex: same value across all themes so the AI marker is unmissable regardless of palette. */
41
- --color-semantic-text-ai-draft-glow: rgba(255, 26, 140, 0.5); /** Phosphor halo around AI-drafted prose. 50% rgba of the aiDraft hex; brand-locked alongside it. Used in text-shadow only; no Tailwind utility. */
39
+ --color-semantic-background-primary: #050300;
40
+ --color-semantic-background-secondary: #050300;
41
+ --color-semantic-background-accent: #00ff00;
42
42
  --color-semantic-border-default: #00ff00;
43
43
  --color-semantic-border-focus: #ffff00;
44
44
  --color-semantic-border-hover: #ff0000;
@@ -55,113 +55,8 @@
55
55
  --color-semantic-alert-success: #050300;
56
56
  --color-semantic-alert-warning: #050300;
57
57
  --color-semantic-alert-error: #050300;
58
- --typography-font-family-primary: 'Perfect DOS VGA 437', monospace; /** Perfect DOS VGA 437 by Zeh Fernando (free-for-any-use; ships with bundled LICENSE.txt). Pixel-perfect-vector TTF — every glyph outline is axis-aligned, scales cleanly to any size. The `monospace` fallback preserves DOS aesthetic on @font-face failure. */
59
- --typography-font-family-fallback: monospace; /** Bare `monospace` stack — fail-loud diagnostic counterpart to `primary`. Compose with `primary` when consumers want strict Perfect-DOS-or-nothing rendering. */
60
- --typography-font-size-text-xs: 1.125rem; /** 18px — smallest body text */
61
- --typography-font-size-text-sm: 1.25rem; /** 20px — secondary body text */
62
- --typography-font-size-text-md: 1.375rem; /** 22px — default body text */
63
- --typography-font-size-text-lg: 1.5rem; /** 24px — large body text */
64
- --typography-font-size-text-xl: 1.625rem; /** 26px — extra large body text */
65
- --typography-font-size-display-xs: 1.875rem; /** 30px — smallest heading */
66
- --typography-font-size-display-sm: 2.25rem; /** 36px — small heading */
67
- --typography-font-size-display-md: 2.625rem; /** 42px — medium heading */
68
- --typography-font-size-display-lg: 3.5rem; /** 56px — large heading */
69
- --typography-font-size-display-xl: 4.125rem; /** 66px — extra large heading */
70
- --typography-font-size-display-2xl: 4.875rem; /** 78px — hero heading */
71
- --typography-font-weight-regular: 400;
72
- --typography-font-weight-semibold: 400;
73
- --typography-font-weight-bold: 400;
74
- --typography-line-height-text-xs: 1.125rem; /** 18px */
75
- --typography-line-height-text-sm: 1.25rem; /** 20px */
76
- --typography-line-height-text-md: 1.5rem; /** 24px */
77
- --typography-line-height-text-lg: 1.75rem; /** 28px */
78
- --typography-line-height-text-xl: 1.875rem; /** 30px */
79
- --typography-line-height-display-xs: 2rem; /** 32px */
80
- --typography-line-height-display-sm: 2.375rem; /** 38px */
81
- --typography-line-height-display-md: 2.75rem; /** 44px */
82
- --typography-line-height-display-lg: 3.75rem; /** 60px */
83
- --typography-line-height-display-xl: 4.5rem; /** 72px */
84
- --typography-line-height-display-2xl: 5.625rem; /** 90px */
85
- --spacing-0: 0;
86
- --spacing-1: 4px;
87
- --spacing-2: 8px;
88
- --spacing-3: 12px;
89
- --spacing-4: 16px;
90
- --spacing-5: 20px;
91
- --spacing-6: 24px;
92
- --spacing-8: 32px;
93
- --spacing-10: 40px;
94
- --spacing-12: 48px;
95
- --spacing-16: 64px;
96
- --border-radius-none: 0;
97
- --border-radius-sm: 2px;
98
- --border-radius-base: 4px;
99
- --border-width-thin: 1px;
100
- --border-width-medium: 2px;
101
- --border-width-thick: 4px;
102
- --shadow-none: none;
103
- --shadow-drop: 2px 2px 0px 0px #080500; /** Hard drop shadow, DOS window style (amber-warm near-black) */
104
- --shadow-glow-xs: 0px 0px 8px 0px #00FF0080; /** Extra small phosphor glow (subtle hover) */
105
- --shadow-glow-sm: 0px 0px 10px 0px #00FF0080; /** Small phosphor glow (button hover) */
106
- --shadow-glow-md: 0px 0px 20px 0px #00FF0080; /** Medium phosphor glow (container/card) */
107
- --shadow-glow-lg: 0px 0px 30px 0px #00FF0080; /** Large phosphor glow (emphasis) */
108
- --shadow-glow-xs-red: 0px 0px 8px 0px #FF555580; /** Extra small red phosphor glow */
109
- --shadow-glow-sm-red: 0px 0px 10px 0px #FF555580; /** Small red phosphor glow */
110
- --shadow-glow-md-red: 0px 0px 20px 0px #FF555580; /** Medium red phosphor glow */
111
- --shadow-glow-lg-red: 0px 0px 30px 0px #FF555580; /** Large red phosphor glow */
112
- --shadow-glow-xs-green: 0px 0px 8px 0px #55FF5580; /** Extra small green phosphor glow */
113
- --shadow-glow-sm-green: 0px 0px 10px 0px #55FF5580; /** Small green phosphor glow */
114
- --shadow-glow-md-green: 0px 0px 20px 0px #55FF5580; /** Medium green phosphor glow */
115
- --shadow-glow-lg-green: 0px 0px 30px 0px #55FF5580; /** Large green phosphor glow */
116
- --shadow-glow-xs-cyan: 0px 0px 8px 0px #55FFFF80; /** Extra small cyan phosphor glow */
117
- --shadow-glow-sm-cyan: 0px 0px 10px 0px #55FFFF80; /** Small cyan phosphor glow */
118
- --shadow-glow-md-cyan: 0px 0px 20px 0px #55FFFF80; /** Medium cyan phosphor glow */
119
- --shadow-glow-lg-cyan: 0px 0px 30px 0px #55FFFF80; /** Large cyan phosphor glow */
120
- --shadow-glow-xs-magenta: 0px 0px 8px 0px #FF55FF80; /** Extra small magenta phosphor glow */
121
- --shadow-glow-sm-magenta: 0px 0px 10px 0px #FF55FF80; /** Small magenta phosphor glow */
122
- --shadow-glow-md-magenta: 0px 0px 20px 0px #FF55FF80; /** Medium magenta phosphor glow */
123
- --shadow-glow-lg-magenta: 0px 0px 30px 0px #FF55FF80; /** Large magenta phosphor glow */
124
- --shadow-glow-xs-blue: 0px 0px 8px 0px #5555FF80; /** Extra small blue phosphor glow */
125
- --shadow-glow-sm-blue: 0px 0px 10px 0px #5555FF80; /** Small blue phosphor glow */
126
- --shadow-glow-md-blue: 0px 0px 20px 0px #5555FF80; /** Medium blue phosphor glow */
127
- --shadow-glow-lg-blue: 0px 0px 30px 0px #5555FF80; /** Large blue phosphor glow */
128
- --shadow-glow-xs-white: 0px 0px 8px 0px #FFFFFF80; /** Extra small white phosphor glow */
129
- --shadow-glow-sm-white: 0px 0px 10px 0px #FFFFFF80; /** Small white phosphor glow */
130
- --shadow-glow-md-white: 0px 0px 20px 0px #FFFFFF80; /** Medium white phosphor glow */
131
- --shadow-glow-lg-white: 0px 0px 30px 0px #FFFFFF80; /** Large white phosphor glow */
132
- --duration-instant: 0ms;
133
- --duration-fast: 100ms;
134
- --duration-normal: 200ms;
135
- --duration-slow: 400ms;
136
- --duration-power-off: 400ms; /** CRT power-off animation */
137
- --duration-power-on: 600ms; /** CRT power-on animation (phosphor warm-up) */
138
- --opacity-0: 0; /** Fully transparent */
139
- --opacity-10: 0.1; /** Subtle hover overlays */
140
- --opacity-25: 0.25; /** Light overlays */
141
- --opacity-50: 0.5; /** Disabled states, medium overlays */
142
- --opacity-75: 0.75; /** Heavy overlays */
143
- --opacity-80: 0.8; /** Modal backdrop */
144
- --opacity-100: 1; /** Fully opaque */
145
- --z-index-base: 0; /** Default stacking context */
146
- --z-index-dropdown: 1000; /** Dropdowns and popovers */
147
- --z-index-sticky: 1020; /** Sticky headers and navs */
148
- --z-index-fixed: 1030; /** Fixed position elements */
149
- --z-index-modal: 1040; /** Modal dialogs */
150
- --z-index-popover: 1050; /** Popovers above modals */
151
- --z-index-tooltip: 1060; /** Tooltips (topmost) */
152
- --focus-ring-width: 2px; /** Focus ring thickness */
153
- --focus-ring-offset: 2px; /** Gap between element and ring */
154
- --effects-overlay: rgba(8, 5, 0, 0.8); /** Modal/dialog backdrop overlay (amber-warm) */
155
- --effects-scanline-light: rgba(255, 176, 0, 0.05); /** CRT scanline light band */
156
- --effects-scanline-dark: rgba(255, 176, 0, 0.02); /** CRT scanline dark band */
157
- --effects-vignette-glow: rgba(255, 176, 0, 0.12); /** Inner screen glow vignette */
158
- --effects-vignette-edge: rgba(8, 5, 0, 0.3); /** Vignette edge darkening (amber-warm) */
159
- --effects-vignette-corner: rgba(8, 5, 0, 0.5); /** Vignette corner darkening (amber-warm) */
160
- --effects-screen-tint: rgba(255, 176, 0, 0.1); /** Subtle amber screen tint */
161
- --effects-drop-shadow: rgba(8, 5, 0, 0.5); /** Terminal window drop shadow (amber-warm) */
162
- --effects-phosphor-glow: rgba(255, 176, 0, 0.12); /** Phosphor bloom/bleeding glow for CRT effects */
163
- --effects-bloom-outer: rgba(255, 176, 0, 0.05); /** Outer phosphor bloom layer (faint glow) */
164
- --effects-bloom-center: rgba(255, 176, 0, 0.03); /** Center phosphor bloom highlight */
165
- --effects-crt-background: #060300; /** Dark warm-black for CRT screen (not pure black) */
166
- --focus-ring-color: var(--color-cga-yellow); /** Focus ring color (accent) */
58
+ --shadow-glow-xs: 0px 0px 8px 0px #00FF0080;
59
+ --shadow-glow-sm: 0px 0px 10px 0px #00FF0080;
60
+ --shadow-glow-md: 0px 0px 20px 0px #00FF0080;
61
+ --shadow-glow-lg: 0px 0px 30px 0px #00FF0080;
167
62
  }