phosphor-ui 0.3.39-dev.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 (217) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +267 -0
  3. package/dist/cjs/index.js +2 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/package.json +3 -0
  6. package/dist/cjs/styles/components.css +10743 -0
  7. package/dist/esm/ascii.d.ts +3 -0
  8. package/dist/esm/components/admin/AdminShell/AdminShell.d.ts +36 -0
  9. package/dist/esm/components/admin/AdminShell/index.d.ts +2 -0
  10. package/dist/esm/components/admin/ContentEditor/ContentEditor.d.ts +63 -0
  11. package/dist/esm/components/admin/ContentEditor/EditorShell.d.ts +15 -0
  12. package/dist/esm/components/admin/ContentEditor/PairListField.d.ts +11 -0
  13. package/dist/esm/components/admin/ContentEditor/RepeaterField.d.ts +16 -0
  14. package/dist/esm/components/admin/ContentEditor/StatusSelect.d.ts +7 -0
  15. package/dist/esm/components/admin/ContentEditor/TagInput.d.ts +11 -0
  16. package/dist/esm/components/admin/ContentEditor/index.d.ts +12 -0
  17. package/dist/esm/components/admin/CourseEditor/CourseEditor.d.ts +28 -0
  18. package/dist/esm/components/admin/CourseEditor/index.d.ts +2 -0
  19. package/dist/esm/components/admin/LessonEditor/LessonEditor.d.ts +27 -0
  20. package/dist/esm/components/admin/LessonEditor/index.d.ts +2 -0
  21. package/dist/esm/components/admin/NoteEditor/NoteEditor.d.ts +18 -0
  22. package/dist/esm/components/admin/NoteEditor/index.d.ts +2 -0
  23. package/dist/esm/components/admin/ProjectEditor/ProjectEditor.d.ts +26 -0
  24. package/dist/esm/components/admin/ProjectEditor/index.d.ts +2 -0
  25. package/dist/esm/components/admin/index.d.ts +6 -0
  26. package/dist/esm/components/atoms/Avatar/Avatar.d.ts +9 -0
  27. package/dist/esm/components/atoms/Avatar/index.d.ts +2 -0
  28. package/dist/esm/components/atoms/Badge/Badge.d.ts +9 -0
  29. package/dist/esm/components/atoms/Badge/index.d.ts +2 -0
  30. package/dist/esm/components/atoms/Button/Button.d.ts +23 -0
  31. package/dist/esm/components/atoms/Button/index.d.ts +2 -0
  32. package/dist/esm/components/atoms/Checkbox/Checkbox.d.ts +14 -0
  33. package/dist/esm/components/atoms/Checkbox/index.d.ts +2 -0
  34. package/dist/esm/components/atoms/DropdownMenu/DropdownMenu.d.ts +25 -0
  35. package/dist/esm/components/atoms/DropdownMenu/index.d.ts +2 -0
  36. package/dist/esm/components/atoms/Glyph/Glyph.d.ts +14 -0
  37. package/dist/esm/components/atoms/Glyph/index.d.ts +2 -0
  38. package/dist/esm/components/atoms/Headings/Headings.d.ts +17 -0
  39. package/dist/esm/components/atoms/Headings/index.d.ts +2 -0
  40. package/dist/esm/components/atoms/Hr/Hr.d.ts +2 -0
  41. package/dist/esm/components/atoms/Hr/index.d.ts +1 -0
  42. package/dist/esm/components/atoms/Input/Input.d.ts +41 -0
  43. package/dist/esm/components/atoms/Input/index.d.ts +2 -0
  44. package/dist/esm/components/atoms/Kbd/Kbd.d.ts +6 -0
  45. package/dist/esm/components/atoms/Kbd/index.d.ts +1 -0
  46. package/dist/esm/components/atoms/Link/Link.d.ts +7 -0
  47. package/dist/esm/components/atoms/Link/index.d.ts +2 -0
  48. package/dist/esm/components/atoms/ProgressBar/ProgressBar.d.ts +13 -0
  49. package/dist/esm/components/atoms/ProgressBar/index.d.ts +2 -0
  50. package/dist/esm/components/atoms/ReadingRail/ReadingRail.d.ts +5 -0
  51. package/dist/esm/components/atoms/ReadingRail/index.d.ts +1 -0
  52. package/dist/esm/components/atoms/StatPill/StatPill.d.ts +9 -0
  53. package/dist/esm/components/atoms/StatPill/index.d.ts +2 -0
  54. package/dist/esm/components/atoms/Tag/Tag.d.ts +18 -0
  55. package/dist/esm/components/atoms/Tag/index.d.ts +2 -0
  56. package/dist/esm/components/atoms/Text/Text.d.ts +18 -0
  57. package/dist/esm/components/atoms/Text/index.d.ts +2 -0
  58. package/dist/esm/components/atoms/index.d.ts +17 -0
  59. package/dist/esm/components/atoms/primitive.d.ts +7 -0
  60. package/dist/esm/components/content/ArticleList/ArticleList.d.ts +14 -0
  61. package/dist/esm/components/content/ArticleList/index.d.ts +1 -0
  62. package/dist/esm/components/content/CodeBlock/CodeBlock.d.ts +21 -0
  63. package/dist/esm/components/content/CodeBlock/index.d.ts +3 -0
  64. package/dist/esm/components/content/CodeBlock/phosphorTheme.d.ts +2 -0
  65. package/dist/esm/components/content/MdxComponents/MdxComponents.d.ts +16 -0
  66. package/dist/esm/components/content/MdxComponents/index.d.ts +2 -0
  67. package/dist/esm/components/content/PostFrontmatter/PostFrontmatter.d.ts +10 -0
  68. package/dist/esm/components/content/PostFrontmatter/index.d.ts +2 -0
  69. package/dist/esm/components/content/Prose/Prose.d.ts +7 -0
  70. package/dist/esm/components/content/Prose/index.d.ts +2 -0
  71. package/dist/esm/components/content/index.d.ts +6 -0
  72. package/dist/esm/components/index.d.ts +145 -0
  73. package/dist/esm/components/molecules/AuthorCard/AuthorCard.d.ts +13 -0
  74. package/dist/esm/components/molecules/AuthorCard/index.d.ts +2 -0
  75. package/dist/esm/components/molecules/Breadcrumbs/Breadcrumbs.d.ts +13 -0
  76. package/dist/esm/components/molecules/Breadcrumbs/index.d.ts +2 -0
  77. package/dist/esm/components/molecules/Callout/Callout.d.ts +13 -0
  78. package/dist/esm/components/molecules/Callout/index.d.ts +2 -0
  79. package/dist/esm/components/molecules/CheckboxField/index.d.ts +2 -0
  80. package/dist/esm/components/molecules/CourseCard/index.d.ts +2 -0
  81. package/dist/esm/components/molecules/EmptyState/EmptyState.d.ts +16 -0
  82. package/dist/esm/components/molecules/EmptyState/index.d.ts +2 -0
  83. package/dist/esm/components/molecules/FeatureList/FeatureList.d.ts +16 -0
  84. package/dist/esm/components/molecules/FeatureList/index.d.ts +2 -0
  85. package/dist/esm/components/molecules/Field/Field.d.ts +25 -0
  86. package/dist/esm/components/molecules/Field/index.d.ts +2 -0
  87. package/dist/esm/components/molecules/FormField/Form.d.ts +38 -0
  88. package/dist/esm/components/molecules/FormField/FormField.d.ts +17 -0
  89. package/dist/esm/components/molecules/FormField/index.d.ts +4 -0
  90. package/dist/esm/components/molecules/HeaderNav/HeaderNav.d.ts +14 -0
  91. package/dist/esm/components/molecules/HeaderNav/index.d.ts +2 -0
  92. package/dist/esm/components/molecules/InputField/index.d.ts +2 -0
  93. package/dist/esm/components/molecules/LessonRow/LessonRow.d.ts +18 -0
  94. package/dist/esm/components/molecules/LessonRow/index.d.ts +2 -0
  95. package/dist/esm/components/molecules/List/List.d.ts +22 -0
  96. package/dist/esm/components/molecules/List/index.d.ts +2 -0
  97. package/dist/esm/components/molecules/LocaleSwitch/LocaleSwitch.d.ts +17 -0
  98. package/dist/esm/components/molecules/LocaleSwitch/index.d.ts +2 -0
  99. package/dist/esm/components/molecules/Modal/Modal.d.ts +25 -0
  100. package/dist/esm/components/molecules/Modal/index.d.ts +2 -0
  101. package/dist/esm/components/molecules/Pagination/Pagination.d.ts +17 -0
  102. package/dist/esm/components/molecules/Pagination/index.d.ts +2 -0
  103. package/dist/esm/components/molecules/PostFrontmatter/index.d.ts +2 -0
  104. package/dist/esm/components/molecules/PostMeta/PostMeta.d.ts +14 -0
  105. package/dist/esm/components/molecules/PostMeta/index.d.ts +2 -0
  106. package/dist/esm/components/molecules/PrereqList/PrereqList.d.ts +14 -0
  107. package/dist/esm/components/molecules/PrereqList/index.d.ts +2 -0
  108. package/dist/esm/components/molecules/SearchResult/SearchResult.d.ts +23 -0
  109. package/dist/esm/components/molecules/SearchResult/index.d.ts +2 -0
  110. package/dist/esm/components/molecules/Select/Select.d.ts +23 -0
  111. package/dist/esm/components/molecules/Select/index.d.ts +2 -0
  112. package/dist/esm/components/molecules/SelectField/index.d.ts +2 -0
  113. package/dist/esm/components/molecules/ShareBar/ShareBar.d.ts +12 -0
  114. package/dist/esm/components/molecules/ShareBar/index.d.ts +2 -0
  115. package/dist/esm/components/molecules/Stepper/Stepper.d.ts +26 -0
  116. package/dist/esm/components/molecules/Stepper/index.d.ts +2 -0
  117. package/dist/esm/components/molecules/TableOfContents/TableOfContents.d.ts +23 -0
  118. package/dist/esm/components/molecules/TableOfContents/index.d.ts +2 -0
  119. package/dist/esm/components/molecules/Tabs/Tabs.d.ts +21 -0
  120. package/dist/esm/components/molecules/Tabs/index.d.ts +2 -0
  121. package/dist/esm/components/molecules/TextareaField/index.d.ts +2 -0
  122. package/dist/esm/components/molecules/Timeline/Timeline.d.ts +14 -0
  123. package/dist/esm/components/molecules/Timeline/index.d.ts +2 -0
  124. package/dist/esm/components/molecules/Toast/Toast.d.ts +18 -0
  125. package/dist/esm/components/molecules/Toast/index.d.ts +2 -0
  126. package/dist/esm/components/molecules/Tooltip/Tooltip.d.ts +10 -0
  127. package/dist/esm/components/molecules/Tooltip/index.d.ts +2 -0
  128. package/dist/esm/components/molecules/index.d.ts +27 -0
  129. package/dist/esm/components/organisms/AsciiBanner/AsciiBanner.d.ts +21 -0
  130. package/dist/esm/components/organisms/AsciiBanner/index.d.ts +2 -0
  131. package/dist/esm/components/organisms/CourseCard/CourseCard.d.ts +24 -0
  132. package/dist/esm/components/organisms/CourseCard/index.d.ts +2 -0
  133. package/dist/esm/components/organisms/CrtShell/CrtShell.d.ts +10 -0
  134. package/dist/esm/components/organisms/CrtShell/index.d.ts +2 -0
  135. package/dist/esm/components/organisms/Exercise/Exercise.d.ts +15 -0
  136. package/dist/esm/components/organisms/Exercise/index.d.ts +2 -0
  137. package/dist/esm/components/organisms/Footer/Footer.d.ts +19 -0
  138. package/dist/esm/components/organisms/Footer/index.d.ts +2 -0
  139. package/dist/esm/components/organisms/Glyphs/Glyphs.d.ts +11 -0
  140. package/dist/esm/components/organisms/Glyphs/index.d.ts +4 -0
  141. package/dist/esm/components/organisms/Header/Header.d.ts +35 -0
  142. package/dist/esm/components/organisms/Header/index.d.ts +2 -0
  143. package/dist/esm/components/organisms/HeaderNav/index.d.ts +2 -0
  144. package/dist/esm/components/organisms/HeroFrame/HeroFrame.d.ts +42 -0
  145. package/dist/esm/components/organisms/HeroFrame/index.d.ts +2 -0
  146. package/dist/esm/components/organisms/LoginForm/LoginForm.d.ts +16 -0
  147. package/dist/esm/components/organisms/LoginForm/index.d.ts +2 -0
  148. package/dist/esm/components/organisms/ModuleAccordion/ModuleAccordion.d.ts +24 -0
  149. package/dist/esm/components/organisms/ModuleAccordion/index.d.ts +2 -0
  150. package/dist/esm/components/organisms/NerdTree/NerdTree.d.ts +29 -0
  151. package/dist/esm/components/organisms/NerdTree/index.d.ts +2 -0
  152. package/dist/esm/components/organisms/PdaWindow/PdaWindow.d.ts +8 -0
  153. package/dist/esm/components/organisms/PdaWindow/index.d.ts +2 -0
  154. package/dist/esm/components/organisms/PostHeader/PostHeader.d.ts +19 -0
  155. package/dist/esm/components/organisms/PostHeader/index.d.ts +2 -0
  156. package/dist/esm/components/organisms/PostListing/PostListing.d.ts +30 -0
  157. package/dist/esm/components/organisms/PostListing/index.d.ts +2 -0
  158. package/dist/esm/components/organisms/RelatedPosts/RelatedPosts.d.ts +15 -0
  159. package/dist/esm/components/organisms/RelatedPosts/index.d.ts +2 -0
  160. package/dist/esm/components/organisms/Search/Search.d.ts +17 -0
  161. package/dist/esm/components/organisms/Search/index.d.ts +2 -0
  162. package/dist/esm/components/organisms/SeriesNav/SeriesNav.d.ts +14 -0
  163. package/dist/esm/components/organisms/SeriesNav/index.d.ts +2 -0
  164. package/dist/esm/components/organisms/VideoPlayer/VideoPlayer.d.ts +24 -0
  165. package/dist/esm/components/organisms/VideoPlayer/index.d.ts +2 -0
  166. package/dist/esm/components/organisms/index.d.ts +19 -0
  167. package/dist/esm/components/pages/Post/index.d.ts +2 -0
  168. package/dist/esm/components/pages/index.d.ts +1 -0
  169. package/dist/esm/components/presets/SiteShell/index.d.ts +2 -0
  170. package/dist/esm/components/presets/index.d.ts +1 -0
  171. package/dist/esm/components/templates/Layout/Layout.d.ts +1786 -0
  172. package/dist/esm/components/templates/Layout/index.d.ts +2 -0
  173. package/dist/esm/components/templates/MainframeLayout/MainframeLayout.d.ts +39 -0
  174. package/dist/esm/components/templates/MainframeLayout/index.d.ts +2 -0
  175. package/dist/esm/components/templates/PostTemplate/Post.d.ts +30 -0
  176. package/dist/esm/components/templates/PostTemplate/index.d.ts +2 -0
  177. package/dist/esm/components/templates/SiteShell/SiteShell.d.ts +26 -0
  178. package/dist/esm/components/templates/SiteShell/index.d.ts +2 -0
  179. package/dist/esm/components/templates/index.d.ts +4 -0
  180. package/dist/esm/foundations/animation/index.d.ts +16 -0
  181. package/dist/esm/foundations/effects/index.d.ts +9 -0
  182. package/dist/esm/foundations/glyphs/catalog.d.ts +103 -0
  183. package/dist/esm/foundations/glyphs/index.d.ts +2 -0
  184. package/dist/esm/foundations/index.d.ts +8 -0
  185. package/dist/esm/foundations/mdx/index.d.ts +3 -0
  186. package/dist/esm/foundations/syntax/index.d.ts +1 -0
  187. package/dist/esm/foundations/tokens/index.d.ts +32 -0
  188. package/dist/esm/foundations/typography/index.d.ts +8 -0
  189. package/dist/esm/foundations/typography/variants.d.ts +3 -0
  190. package/dist/esm/foundations/utils/index.d.ts +1 -0
  191. package/dist/esm/foundations/utils/slug.d.ts +1 -0
  192. package/dist/esm/hooks/index.d.ts +3 -0
  193. package/dist/esm/hooks/useHashRoute.d.ts +6 -0
  194. package/dist/esm/hooks/useReadingProgress.d.ts +4 -0
  195. package/dist/esm/index.d.ts +3 -0
  196. package/dist/esm/index.js +2 -0
  197. package/dist/esm/index.js.map +1 -0
  198. package/dist/esm/package.json +3 -0
  199. package/dist/esm/styles/components.css +10743 -0
  200. package/dist/esm/utils/browser.d.ts +5 -0
  201. package/dist/esm/utils/classNames.d.ts +2 -0
  202. package/dist/styles/components.css +10743 -0
  203. package/dist/styles/fonts/bender/Bender-Black.woff +0 -0
  204. package/dist/styles/fonts/bender/Bender-BlackItalic.woff +0 -0
  205. package/dist/styles/fonts/bender/Bender-Bold.woff +0 -0
  206. package/dist/styles/fonts/bender/Bender-BoldItalic.woff +0 -0
  207. package/dist/styles/fonts/bender/Bender-Italic.woff +0 -0
  208. package/dist/styles/fonts/bender/Bender-Light.woff +0 -0
  209. package/dist/styles/fonts/bender/Bender-LightItalic.woff +0 -0
  210. package/dist/styles/fonts/bender/Bender.woff +0 -0
  211. package/dist/styles/fonts/vcr_osd_mono/VCR_OSD_MONO_1.001.ttf +0 -0
  212. package/dist/styles/fonts.css +73 -0
  213. package/dist/styles/global.css +486 -0
  214. package/dist/styles/phosphor.css +5 -0
  215. package/dist/styles/tokens.css +382 -0
  216. package/dist/styles/typography.css +193 -0
  217. package/package.json +145 -0
@@ -0,0 +1,73 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap");
2
+
3
+ @font-face {
4
+ font-family: "VCR OSD Mono";
5
+ font-style: normal;
6
+ font-weight: 400;
7
+ font-display: swap;
8
+ src: url("./fonts/vcr_osd_mono/VCR_OSD_MONO_1.001.ttf") format("truetype");
9
+ }
10
+
11
+ @font-face {
12
+ font-family: "Bender";
13
+ font-style: normal;
14
+ font-weight: 300;
15
+ font-display: swap;
16
+ src: url("./fonts/bender/Bender-Light.woff") format("woff");
17
+ }
18
+
19
+ @font-face {
20
+ font-family: "Bender";
21
+ font-style: italic;
22
+ font-weight: 300;
23
+ font-display: swap;
24
+ src: url("./fonts/bender/Bender-LightItalic.woff") format("woff");
25
+ }
26
+
27
+ @font-face {
28
+ font-family: "Bender";
29
+ font-style: normal;
30
+ font-weight: 400;
31
+ font-display: swap;
32
+ src: url("./fonts/bender/Bender.woff") format("woff");
33
+ }
34
+
35
+ @font-face {
36
+ font-family: "Bender";
37
+ font-style: italic;
38
+ font-weight: 400;
39
+ font-display: swap;
40
+ src: url("./fonts/bender/Bender-Italic.woff") format("woff");
41
+ }
42
+
43
+ @font-face {
44
+ font-family: "Bender";
45
+ font-style: normal;
46
+ font-weight: 700;
47
+ font-display: swap;
48
+ src: url("./fonts/bender/Bender-Bold.woff") format("woff");
49
+ }
50
+
51
+ @font-face {
52
+ font-family: "Bender";
53
+ font-style: italic;
54
+ font-weight: 700;
55
+ font-display: swap;
56
+ src: url("./fonts/bender/Bender-BoldItalic.woff") format("woff");
57
+ }
58
+
59
+ @font-face {
60
+ font-family: "Bender";
61
+ font-style: normal;
62
+ font-weight: 900;
63
+ font-display: swap;
64
+ src: url("./fonts/bender/Bender-Black.woff") format("woff");
65
+ }
66
+
67
+ @font-face {
68
+ font-family: "Bender";
69
+ font-style: italic;
70
+ font-weight: 900;
71
+ font-display: swap;
72
+ src: url("./fonts/bender/Bender-BlackItalic.woff") format("woff");
73
+ }
@@ -0,0 +1,486 @@
1
+ html,
2
+ body {
3
+ background: var(--pho-color-background);
4
+ color: var(--pho-color-text);
5
+ font-family: var(--pho-font-body);
6
+ font-size: var(--pho-type-body-size);
7
+ line-height: var(--pho-line-prose);
8
+ margin: 0;
9
+ padding: 0;
10
+ }
11
+
12
+ body {
13
+ cursor: var(--pho-cursor-default);
14
+ }
15
+
16
+ *,
17
+ *::before,
18
+ *::after {
19
+ box-sizing: border-box;
20
+ }
21
+
22
+ a {
23
+ color: var(--pho-color-link);
24
+ text-shadow: none;
25
+ }
26
+
27
+ a:hover {
28
+ color: var(--pho-color-link-hover);
29
+ }
30
+
31
+ a,
32
+ button,
33
+ [role="button"],
34
+ summary,
35
+ select {
36
+ cursor: var(--pho-cursor-pointer);
37
+ }
38
+
39
+ input,
40
+ textarea,
41
+ [contenteditable="true"],
42
+ [role="textbox"] {
43
+ cursor: var(--pho-cursor-text);
44
+ }
45
+
46
+ button:disabled,
47
+ [aria-disabled="true"],
48
+ select:disabled,
49
+ input:disabled,
50
+ textarea:disabled {
51
+ cursor: var(--pho-cursor-disabled);
52
+ }
53
+
54
+ code,
55
+ pre,
56
+ kbd,
57
+ samp {
58
+ font-family: var(--pho-font-code);
59
+ background: var(--code-bg);
60
+ color: var(--code-var);
61
+ }
62
+
63
+ ::selection {
64
+ background: var(--pho-color-selection-bg);
65
+ color: var(--pho-color-selection-text);
66
+ text-shadow: none;
67
+ }
68
+
69
+ /* ── unified phosphor scrollbar ──────────────────────────── */
70
+ * {
71
+ scrollbar-width: thin;
72
+ scrollbar-color: var(--pho-scrollbar-thumb) var(--pho-scrollbar-track);
73
+ }
74
+
75
+ *::-webkit-scrollbar {
76
+ width: var(--pho-scrollbar-size);
77
+ height: var(--pho-scrollbar-size);
78
+ }
79
+
80
+ *::-webkit-scrollbar-track {
81
+ background: var(--pho-scrollbar-track);
82
+ border-left: var(--scrollbar-track-border);
83
+ }
84
+
85
+ *::-webkit-scrollbar-thumb {
86
+ background: var(--pho-scrollbar-thumb);
87
+ border: 1px solid var(--pho-scrollbar-track);
88
+ border-radius: 0;
89
+ box-shadow: inset 0 0 0 1px var(--scrollbar-thumb-edge);
90
+ }
91
+
92
+ *::-webkit-scrollbar-thumb:hover {
93
+ background: var(--pho-scrollbar-thumb-hover);
94
+ box-shadow:
95
+ inset 0 0 0 1px var(--pho-color-primary),
96
+ var(--scrollbar-glow);
97
+ }
98
+
99
+ *::-webkit-scrollbar-thumb:active {
100
+ background: var(--pho-scrollbar-thumb-active);
101
+ box-shadow: 0 0 8px var(--pho-color-primary);
102
+ }
103
+
104
+ *::-webkit-scrollbar-corner {
105
+ background: var(--pho-scrollbar-track);
106
+ }
107
+
108
+ .pho-page-enter {
109
+ animation: phoPageEnter 360ms ease-out backwards;
110
+ }
111
+ .pho-fade-up {
112
+ animation: phoFadeUp 420ms ease-out backwards;
113
+ }
114
+ .pho-stagger > * {
115
+ animation: phoFadeUp 480ms ease-out backwards;
116
+ }
117
+ .pho-stagger > *:nth-child(1) {
118
+ animation-delay: 40ms;
119
+ }
120
+ .pho-stagger > *:nth-child(2) {
121
+ animation-delay: 120ms;
122
+ }
123
+ .pho-stagger > *:nth-child(3) {
124
+ animation-delay: 200ms;
125
+ }
126
+ .pho-stagger > *:nth-child(4) {
127
+ animation-delay: 280ms;
128
+ }
129
+ .pho-stagger > *:nth-child(5) {
130
+ animation-delay: 360ms;
131
+ }
132
+ .pho-stagger > *:nth-child(6) {
133
+ animation-delay: 440ms;
134
+ }
135
+ .pho-stagger > *:nth-child(n + 7) {
136
+ animation-delay: 520ms;
137
+ }
138
+
139
+ .pho-flicker-in {
140
+ animation: phoFlickerIn 460ms steps(6) backwards;
141
+ }
142
+ .pho-blink::after {
143
+ content: "";
144
+ display: inline-block;
145
+ width: 0.58em;
146
+ height: 1em;
147
+ margin-left: var(--pho-caret-gap);
148
+ vertical-align: -0.12em;
149
+ background: var(--pho-color-primary);
150
+ box-shadow: var(--pho-caret-glow);
151
+ animation: phoBlink var(--pho-caret-blink-duration) step-end infinite;
152
+ }
153
+
154
+ .pho-phosphor-glow {
155
+ text-shadow: var(--pho-glow-primary);
156
+ }
157
+
158
+ .pho-phosphor-glow-soft {
159
+ text-shadow: var(--pho-glow-primary-soft);
160
+ }
161
+
162
+ .pho-crt,
163
+ .pho-scanlines,
164
+ .pho-noise,
165
+ .pho-vignette {
166
+ position: relative;
167
+ }
168
+
169
+ .pho-crt::before,
170
+ .pho-scanlines::before,
171
+ .pho-crt::after,
172
+ .pho-noise::before,
173
+ .pho-vignette::after {
174
+ content: "";
175
+ pointer-events: none;
176
+ position: absolute;
177
+ inset: 0;
178
+ }
179
+
180
+ .pho-crt::before,
181
+ .pho-scanlines::before {
182
+ z-index: var(--pho-z-fx-noise);
183
+ background:
184
+ linear-gradient(rgba(182, 255, 206, 0.045) 50%, rgba(1, 6, 4, 0.18) 50%),
185
+ linear-gradient(90deg, rgba(44, 255, 122, 0.035), rgba(98, 255, 154, 0.02), rgba(44, 255, 122, 0.035));
186
+ background-size: 100% var(--pho-scanline-size), 6px 100%;
187
+ mix-blend-mode: screen;
188
+ opacity: var(--pho-scanline-opacity);
189
+ }
190
+
191
+ .pho-terminal-focus:focus-visible {
192
+ outline: var(--pho-focus-ring);
193
+ outline-offset: var(--pho-focus-offset);
194
+ box-shadow: var(--pho-focus-glow);
195
+ }
196
+
197
+ .pho-crt::before {
198
+ animation: phosphorShellFlicker 5.6s steps(8) infinite;
199
+ }
200
+
201
+ .pho-crt::after,
202
+ .pho-vignette::after {
203
+ z-index: var(--pho-z-fx-vignette);
204
+ background:
205
+ radial-gradient(circle at center, transparent 45%, rgba(1, 6, 4, 0.42) 100%),
206
+ linear-gradient(rgba(44, 255, 122, 0.08), transparent 18%, transparent 82%, rgba(44, 255, 122, 0.08));
207
+ box-shadow: inset 0 0 42px rgba(1, 6, 4, 0.74);
208
+ }
209
+
210
+ .pho-noise::before {
211
+ z-index: var(--pho-z-fx-noise);
212
+ opacity: 0.16;
213
+ background-image:
214
+ radial-gradient(circle at 18% 24%, rgba(182, 255, 206, 0.7) 0 1px, transparent 1.5px),
215
+ radial-gradient(circle at 78% 34%, rgba(44, 255, 122, 0.45) 0 1px, transparent 1.5px),
216
+ radial-gradient(circle at 42% 74%, rgba(98, 255, 154, 0.42) 0 1px, transparent 1.5px);
217
+ background-size: 31px 29px, 43px 41px, 67px 61px;
218
+ animation: phosphorNoiseShift 620ms steps(3) infinite;
219
+ mix-blend-mode: screen;
220
+ }
221
+
222
+ .pho-hsync {
223
+ animation: phosphorHsync 8s steps(1) infinite;
224
+ }
225
+
226
+ .pho-bootline {
227
+ animation: phosphorBootline 520ms steps(16) backwards;
228
+ }
229
+
230
+ .pho-led-pulse {
231
+ animation: phosphorLedPulse 1.4s steps(2) infinite;
232
+ }
233
+
234
+ .pho-hud-blink {
235
+ animation: phosphorHudBlink 1.1s steps(2) infinite;
236
+ }
237
+
238
+ .pho-hud-pulse {
239
+ animation: phosphorHudPulse 1.8s ease-in-out infinite;
240
+ }
241
+
242
+ .pho-geiger-tick {
243
+ animation: phosphorGeigerTick 2.6s steps(1) infinite;
244
+ }
245
+
246
+ @keyframes phoPageEnter {
247
+ 0% {
248
+ opacity: 0;
249
+ transform: translateY(6px);
250
+ filter: blur(2px) brightness(1.6);
251
+ }
252
+ 60% {
253
+ filter: blur(0) brightness(1.1);
254
+ }
255
+ 100% {
256
+ opacity: 1;
257
+ transform: translateY(0);
258
+ filter: none;
259
+ }
260
+ }
261
+ @keyframes phoFadeUp {
262
+ from {
263
+ opacity: 0;
264
+ transform: translateY(8px);
265
+ }
266
+ to {
267
+ opacity: 1;
268
+ transform: translateY(0);
269
+ }
270
+ }
271
+ @keyframes phoFlickerIn {
272
+ 0% {
273
+ opacity: 0;
274
+ }
275
+ 20% {
276
+ opacity: var(--pho-flicker-opacity-min);
277
+ }
278
+ 40% {
279
+ opacity: 0.46;
280
+ }
281
+ 60% {
282
+ opacity: 0.96;
283
+ }
284
+ 80% {
285
+ opacity: 0.74;
286
+ }
287
+ 100% {
288
+ opacity: 1;
289
+ }
290
+ }
291
+ @keyframes phoBlink {
292
+ 0%,
293
+ 54% {
294
+ opacity: 1;
295
+ }
296
+ 55%,
297
+ 100% {
298
+ opacity: 0;
299
+ }
300
+ }
301
+ @keyframes phosphorBlink {
302
+ 0%,
303
+ 49% {
304
+ opacity: 1;
305
+ }
306
+ 50%,
307
+ 100% {
308
+ opacity: 0;
309
+ }
310
+ }
311
+ @keyframes phosphorLedPulse {
312
+ 0%,
313
+ 100% {
314
+ opacity: 1;
315
+ }
316
+ 50% {
317
+ opacity: 0.5;
318
+ }
319
+ }
320
+ @keyframes phosphorHudBlink {
321
+ 0%,
322
+ 60% {
323
+ opacity: 1;
324
+ }
325
+ 61%,
326
+ 100% {
327
+ opacity: 0.18;
328
+ }
329
+ }
330
+ @keyframes phosphorHudPulse {
331
+ 0%,
332
+ 100% {
333
+ opacity: 1;
334
+ transform: scale(1);
335
+ }
336
+ 50% {
337
+ opacity: 0.45;
338
+ transform: scale(0.85);
339
+ }
340
+ }
341
+ @keyframes phosphorTapeRoll {
342
+ from {
343
+ transform: translateX(0);
344
+ }
345
+ to {
346
+ transform: translateX(-50%);
347
+ }
348
+ }
349
+ @keyframes phosphorNoiseShift {
350
+ 0% {
351
+ transform: translate(0, 0);
352
+ }
353
+ 20% {
354
+ transform: translate(-3px, 2px);
355
+ }
356
+ 40% {
357
+ transform: translate(2px, -2px);
358
+ }
359
+ 60% {
360
+ transform: translate(-2px, -1px);
361
+ }
362
+ 80% {
363
+ transform: translate(1px, 3px);
364
+ }
365
+ 100% {
366
+ transform: translate(0, 0);
367
+ }
368
+ }
369
+ @keyframes phosphorGeigerTick {
370
+ 0%,
371
+ 70% {
372
+ opacity: 0;
373
+ }
374
+ 71%,
375
+ 72% {
376
+ opacity: 0.75;
377
+ }
378
+ 73%,
379
+ 81% {
380
+ opacity: 0;
381
+ }
382
+ 82% {
383
+ opacity: 0.4;
384
+ }
385
+ 83%,
386
+ 100% {
387
+ opacity: 0;
388
+ }
389
+ }
390
+ @keyframes phosphorHsync {
391
+ 0%,
392
+ 94%,
393
+ 100% {
394
+ transform: translateX(0);
395
+ }
396
+ 95% {
397
+ transform: translateX(-2px);
398
+ filter: blur(0.3px);
399
+ }
400
+ 96% {
401
+ transform: translateX(2px);
402
+ filter: blur(0.4px);
403
+ }
404
+ 97% {
405
+ transform: translateX(-1px);
406
+ filter: blur(0.15px);
407
+ }
408
+ }
409
+ @keyframes phosphorHeroBreathe {
410
+ 0%,
411
+ 100% {
412
+ opacity: 0.95;
413
+ }
414
+ 50% {
415
+ opacity: 1;
416
+ text-shadow:
417
+ 0 0 1px var(--pho-color-primary),
418
+ 0 0 14px rgba(44, 255, 122, 0.85),
419
+ 0 0 28px rgba(44, 255, 122, 0.4);
420
+ }
421
+ }
422
+ @keyframes phosphorHeroScan {
423
+ 0% {
424
+ transform: translateY(-120%);
425
+ opacity: 0;
426
+ }
427
+ 10% {
428
+ opacity: 1;
429
+ }
430
+ 90% {
431
+ opacity: 1;
432
+ }
433
+ 100% {
434
+ transform: translateY(820%);
435
+ opacity: 0;
436
+ }
437
+ }
438
+ @keyframes phosphorBootline {
439
+ from {
440
+ clip-path: inset(0 100% 0 0);
441
+ opacity: 0;
442
+ }
443
+ to {
444
+ clip-path: inset(0 0 0 0);
445
+ opacity: 1;
446
+ }
447
+ }
448
+ @keyframes phosphorShellFlicker {
449
+ 0%,
450
+ 100% {
451
+ opacity: 0.14;
452
+ transform: translateY(0);
453
+ }
454
+ 44% {
455
+ opacity: 0.1;
456
+ }
457
+ 48% {
458
+ opacity: 0.18;
459
+ transform: translateY(0.15px);
460
+ }
461
+ 52% {
462
+ opacity: 0.2;
463
+ }
464
+ 56% {
465
+ opacity: 0.12;
466
+ transform: translateY(0);
467
+ }
468
+ }
469
+
470
+ @media (prefers-reduced-motion: reduce) {
471
+ .pho-page-enter,
472
+ .pho-fade-up,
473
+ .pho-stagger > *,
474
+ .pho-flicker-in,
475
+ .pho-blink::after,
476
+ .pho-crt::before,
477
+ .pho-noise::before,
478
+ .pho-hsync,
479
+ .pho-bootline,
480
+ .pho-led-pulse,
481
+ .pho-hud-blink,
482
+ .pho-hud-pulse,
483
+ .pho-geiger-tick {
484
+ animation: none !important;
485
+ }
486
+ }
@@ -0,0 +1,5 @@
1
+ @import "./fonts.css";
2
+ @import "./tokens.css";
3
+ @import "./typography.css";
4
+ @import "./global.css";
5
+ @import "./components.css";