visionos-monorepo 0.1.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 (160) hide show
  1. package/.claude/worktrees/competent-burnell-8d1330/README.md +138 -0
  2. package/.claude/worktrees/competent-burnell-8d1330/cli/package.json +35 -0
  3. package/.claude/worktrees/competent-burnell-8d1330/cli/scripts/copy-web-assets.mjs +12 -0
  4. package/.claude/worktrees/competent-burnell-8d1330/cli/src/commands/logout.ts +12 -0
  5. package/.claude/worktrees/competent-burnell-8d1330/cli/src/commands/open.ts +19 -0
  6. package/.claude/worktrees/competent-burnell-8d1330/cli/src/commands/start.ts +97 -0
  7. package/.claude/worktrees/competent-burnell-8d1330/cli/src/commands/status.ts +23 -0
  8. package/.claude/worktrees/competent-burnell-8d1330/cli/src/commands/userinfo.ts +47 -0
  9. package/.claude/worktrees/competent-burnell-8d1330/cli/src/index.ts +23 -0
  10. package/.claude/worktrees/competent-burnell-8d1330/cli/src/lib/auth.ts +84 -0
  11. package/.claude/worktrees/competent-burnell-8d1330/cli/src/lib/browser.ts +37 -0
  12. package/.claude/worktrees/competent-burnell-8d1330/cli/src/lib/localState.ts +80 -0
  13. package/.claude/worktrees/competent-burnell-8d1330/cli/src/lib/runtime.ts +203 -0
  14. package/.claude/worktrees/competent-burnell-8d1330/cli/src/runtime/index.ts +36 -0
  15. package/.claude/worktrees/competent-burnell-8d1330/cli/src/types/inquirer.d.ts +9 -0
  16. package/.claude/worktrees/competent-burnell-8d1330/cli/tsconfig.json +19 -0
  17. package/.claude/worktrees/competent-burnell-8d1330/client/index.html +15 -0
  18. package/.claude/worktrees/competent-burnell-8d1330/client/package.json +27 -0
  19. package/.claude/worktrees/competent-burnell-8d1330/client/postcss.config.cjs +7 -0
  20. package/.claude/worktrees/competent-burnell-8d1330/client/src/App.tsx +57 -0
  21. package/.claude/worktrees/competent-burnell-8d1330/client/src/components/CliAuthPage.tsx +385 -0
  22. package/.claude/worktrees/competent-burnell-8d1330/client/src/components/ManifestoPage.tsx +946 -0
  23. package/.claude/worktrees/competent-burnell-8d1330/client/src/components/TrackCard.tsx +19 -0
  24. package/.claude/worktrees/competent-burnell-8d1330/client/src/lib/api.ts +58 -0
  25. package/.claude/worktrees/competent-burnell-8d1330/client/src/main.tsx +11 -0
  26. package/.claude/worktrees/competent-burnell-8d1330/client/src/styles/index.css +33 -0
  27. package/.claude/worktrees/competent-burnell-8d1330/client/src/styles/manifesto.css +1398 -0
  28. package/.claude/worktrees/competent-burnell-8d1330/client/tailwind.config.ts +36 -0
  29. package/.claude/worktrees/competent-burnell-8d1330/client/tsconfig.json +25 -0
  30. package/.claude/worktrees/competent-burnell-8d1330/client/vite.config.ts +20 -0
  31. package/.claude/worktrees/competent-burnell-8d1330/package-lock.json +5278 -0
  32. package/.claude/worktrees/competent-burnell-8d1330/package.json +24 -0
  33. package/.claude/worktrees/competent-burnell-8d1330/server/package.json +25 -0
  34. package/.claude/worktrees/competent-burnell-8d1330/server/src/app.ts +71 -0
  35. package/.claude/worktrees/competent-burnell-8d1330/server/src/config/env.ts +14 -0
  36. package/.claude/worktrees/competent-burnell-8d1330/server/src/features/auth/sessionStore.ts +74 -0
  37. package/.claude/worktrees/competent-burnell-8d1330/server/src/index.ts +8 -0
  38. package/.claude/worktrees/competent-burnell-8d1330/server/src/routes/auth.ts +112 -0
  39. package/.claude/worktrees/competent-burnell-8d1330/server/src/routes/health.ts +14 -0
  40. package/.claude/worktrees/competent-burnell-8d1330/server/tsconfig.json +19 -0
  41. package/.claude/worktrees/competent-burnell-8d1330/shared/package.json +24 -0
  42. package/.claude/worktrees/competent-burnell-8d1330/shared/src/index.ts +91 -0
  43. package/.claude/worktrees/competent-burnell-8d1330/shared/tsconfig.json +16 -0
  44. package/.claude/worktrees/competent-burnell-8d1330/tsconfig.base.json +12 -0
  45. package/.claude/worktrees/competent-burnell-8d1330/visionos-manifesto/index.html +392 -0
  46. package/.claude/worktrees/competent-burnell-8d1330/visionos-manifesto/script.js +146 -0
  47. package/.claude/worktrees/competent-burnell-8d1330/visionos-manifesto/styles.css +1082 -0
  48. package/.claude/worktrees/vigilant-napier-0de76f/README.md +138 -0
  49. package/.claude/worktrees/vigilant-napier-0de76f/cli/package.json +35 -0
  50. package/.claude/worktrees/vigilant-napier-0de76f/cli/scripts/copy-web-assets.mjs +12 -0
  51. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/commands/logout.ts +12 -0
  52. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/commands/open.ts +19 -0
  53. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/commands/start.ts +97 -0
  54. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/commands/status.ts +23 -0
  55. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/commands/userinfo.ts +47 -0
  56. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/index.ts +23 -0
  57. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/lib/auth.ts +84 -0
  58. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/lib/browser.ts +37 -0
  59. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/lib/localState.ts +80 -0
  60. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/lib/runtime.ts +203 -0
  61. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/runtime/index.ts +36 -0
  62. package/.claude/worktrees/vigilant-napier-0de76f/cli/src/types/inquirer.d.ts +9 -0
  63. package/.claude/worktrees/vigilant-napier-0de76f/cli/tsconfig.json +19 -0
  64. package/.claude/worktrees/vigilant-napier-0de76f/client/index.html +15 -0
  65. package/.claude/worktrees/vigilant-napier-0de76f/client/package.json +27 -0
  66. package/.claude/worktrees/vigilant-napier-0de76f/client/postcss.config.cjs +7 -0
  67. package/.claude/worktrees/vigilant-napier-0de76f/client/src/App.tsx +57 -0
  68. package/.claude/worktrees/vigilant-napier-0de76f/client/src/components/CliAuthPage.tsx +385 -0
  69. package/.claude/worktrees/vigilant-napier-0de76f/client/src/components/ManifestoPage.tsx +946 -0
  70. package/.claude/worktrees/vigilant-napier-0de76f/client/src/components/TrackCard.tsx +19 -0
  71. package/.claude/worktrees/vigilant-napier-0de76f/client/src/lib/api.ts +58 -0
  72. package/.claude/worktrees/vigilant-napier-0de76f/client/src/main.tsx +11 -0
  73. package/.claude/worktrees/vigilant-napier-0de76f/client/src/styles/index.css +33 -0
  74. package/.claude/worktrees/vigilant-napier-0de76f/client/src/styles/manifesto.css +1398 -0
  75. package/.claude/worktrees/vigilant-napier-0de76f/client/tailwind.config.ts +36 -0
  76. package/.claude/worktrees/vigilant-napier-0de76f/client/tsconfig.json +25 -0
  77. package/.claude/worktrees/vigilant-napier-0de76f/client/vite.config.ts +20 -0
  78. package/.claude/worktrees/vigilant-napier-0de76f/package-lock.json +5278 -0
  79. package/.claude/worktrees/vigilant-napier-0de76f/package.json +24 -0
  80. package/.claude/worktrees/vigilant-napier-0de76f/server/package.json +25 -0
  81. package/.claude/worktrees/vigilant-napier-0de76f/server/src/app.ts +71 -0
  82. package/.claude/worktrees/vigilant-napier-0de76f/server/src/config/env.ts +14 -0
  83. package/.claude/worktrees/vigilant-napier-0de76f/server/src/features/auth/sessionStore.ts +74 -0
  84. package/.claude/worktrees/vigilant-napier-0de76f/server/src/index.ts +8 -0
  85. package/.claude/worktrees/vigilant-napier-0de76f/server/src/routes/auth.ts +112 -0
  86. package/.claude/worktrees/vigilant-napier-0de76f/server/src/routes/health.ts +14 -0
  87. package/.claude/worktrees/vigilant-napier-0de76f/server/tsconfig.json +19 -0
  88. package/.claude/worktrees/vigilant-napier-0de76f/shared/package.json +24 -0
  89. package/.claude/worktrees/vigilant-napier-0de76f/shared/src/index.ts +91 -0
  90. package/.claude/worktrees/vigilant-napier-0de76f/shared/tsconfig.json +16 -0
  91. package/.claude/worktrees/vigilant-napier-0de76f/tsconfig.base.json +12 -0
  92. package/.claude/worktrees/vigilant-napier-0de76f/visionos-manifesto/index.html +392 -0
  93. package/.claude/worktrees/vigilant-napier-0de76f/visionos-manifesto/script.js +146 -0
  94. package/.claude/worktrees/vigilant-napier-0de76f/visionos-manifesto/styles.css +1082 -0
  95. package/.github/workflows/publish.yml +30 -0
  96. package/README.md +175 -0
  97. package/cli/README.md +165 -0
  98. package/cli/package.json +36 -0
  99. package/cli/scripts/copy-web-assets.mjs +12 -0
  100. package/cli/src/commands/lessons.ts +68 -0
  101. package/cli/src/commands/login.ts +46 -0
  102. package/cli/src/commands/logout.ts +12 -0
  103. package/cli/src/commands/open.ts +29 -0
  104. package/cli/src/commands/start.ts +146 -0
  105. package/cli/src/commands/status.ts +28 -0
  106. package/cli/src/commands/userinfo.ts +59 -0
  107. package/cli/src/index.ts +109 -0
  108. package/cli/src/lib/auth.ts +84 -0
  109. package/cli/src/lib/browser.ts +37 -0
  110. package/cli/src/lib/content.ts +57 -0
  111. package/cli/src/lib/lessonPrinter.ts +38 -0
  112. package/cli/src/lib/lessonRunner.ts +381 -0
  113. package/cli/src/lib/localState.ts +114 -0
  114. package/cli/src/lib/loginFlow.ts +74 -0
  115. package/cli/src/lib/progress.ts +94 -0
  116. package/cli/src/lib/runtime.ts +220 -0
  117. package/cli/src/lib/validator.ts +401 -0
  118. package/cli/src/runtime/index.ts +108 -0
  119. package/cli/src/types/inquirer.d.ts +9 -0
  120. package/cli/tsconfig.json +19 -0
  121. package/client/index.html +15 -0
  122. package/client/package.json +27 -0
  123. package/client/postcss.config.cjs +7 -0
  124. package/client/src/App.tsx +102 -0
  125. package/client/src/components/AccountPage.tsx +79 -0
  126. package/client/src/components/AuthPanel.tsx +312 -0
  127. package/client/src/components/CliAuthPage.tsx +367 -0
  128. package/client/src/components/CreatorPortal.tsx +885 -0
  129. package/client/src/components/ErrorBoundary.tsx +92 -0
  130. package/client/src/components/ManifestoPage.tsx +1126 -0
  131. package/client/src/components/TrackCard.tsx +19 -0
  132. package/client/src/lib/api.ts +215 -0
  133. package/client/src/main.tsx +14 -0
  134. package/client/src/styles/index.css +33 -0
  135. package/client/src/styles/manifesto.css +1828 -0
  136. package/client/tailwind.config.ts +36 -0
  137. package/client/tsconfig.json +25 -0
  138. package/client/vercel.json +8 -0
  139. package/client/vite.config.ts +33 -0
  140. package/package.json +27 -0
  141. package/server/package.json +26 -0
  142. package/server/src/app.ts +132 -0
  143. package/server/src/config/env.ts +135 -0
  144. package/server/src/features/accounts/accountStore.ts +359 -0
  145. package/server/src/features/accounts/contentStore.ts +264 -0
  146. package/server/src/features/accounts/password.ts +26 -0
  147. package/server/src/features/auth/sessionStore.ts +79 -0
  148. package/server/src/index.ts +8 -0
  149. package/server/src/routes/auth.ts +328 -0
  150. package/server/src/routes/content.ts +174 -0
  151. package/server/src/routes/health.ts +14 -0
  152. package/server/src/routes/progress.ts +105 -0
  153. package/server/tsconfig.json +19 -0
  154. package/shared/package.json +24 -0
  155. package/shared/src/index.ts +455 -0
  156. package/shared/tsconfig.json +16 -0
  157. package/tsconfig.base.json +12 -0
  158. package/visionos-manifesto/index.html +392 -0
  159. package/visionos-manifesto/script.js +146 -0
  160. package/visionos-manifesto/styles.css +1082 -0
@@ -0,0 +1,1828 @@
1
+ /* ================================================================
2
+ VisionOS Manifesto — Mainframe-Inspired Design System (React)
3
+ ================================================================ */
4
+
5
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap');
6
+
7
+ /* ── Tokens ────────────────────────────────────────────────────── */
8
+ :root {
9
+ --bg-beige: #E0DFD5;
10
+ --bg-beige-light: #E8E7DF;
11
+ --bg-beige-dark: #D4D3CB;
12
+ --m-ink: #0A0A0A;
13
+ --ink-soft: #3A3A3A;
14
+ --ink-muted: #6B6B6B;
15
+ --ink-faint: #9A9A9A;
16
+ --accent-teal: #0e7490;
17
+ --accent-red: #E05A3A;
18
+ --accent-green: #2D8A56;
19
+ --m-white: #FAFAF8;
20
+ --bezel-outer: #A8A8A0;
21
+ --bezel-inner: #C5C4BC;
22
+ --bezel-highlight: #D8D7CF;
23
+
24
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
25
+ --font-mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;
26
+
27
+ --space-xs: 0.5rem;
28
+ --space-sm: 1rem;
29
+ --space-md: 2rem;
30
+ --space-lg: 4rem;
31
+ --space-xl: 6rem;
32
+ --space-xxl: 10rem;
33
+
34
+ --radius-sm: 4px;
35
+ --radius-md: 8px;
36
+ --radius-lg: 16px;
37
+
38
+ --transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
39
+ --transition-spring: 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
40
+ }
41
+
42
+ /* ── Monitor Bezel Frame ───────────────────────────────────────── */
43
+ .monitor-bezel {
44
+ position: relative;
45
+ margin: 12px;
46
+ min-height: calc(100vh - 24px);
47
+ background: linear-gradient(180deg, var(--bezel-inner) 0%, var(--bezel-outer) 100%);
48
+ border-radius: 20px;
49
+ padding: 14px;
50
+ box-shadow:
51
+ inset 0 2px 4px rgba(255, 255, 255, 0.3),
52
+ inset 0 -2px 4px rgba(0, 0, 0, 0.15),
53
+ 0 8px 32px rgba(0, 0, 0, 0.2),
54
+ 0 2px 8px rgba(0, 0, 0, 0.1);
55
+ }
56
+
57
+ .monitor-screen {
58
+ position: relative;
59
+ background: var(--bg-beige);
60
+ border-radius: 10px;
61
+ min-height: calc(100vh - 48px);
62
+ overflow: hidden;
63
+ box-shadow:
64
+ inset 0 1px 3px rgba(0, 0, 0, 0.08),
65
+ 0 1px 2px rgba(255, 255, 255, 0.4);
66
+ }
67
+
68
+ /* Subtle CRT scan-line overlay */
69
+ .monitor-screen::before {
70
+ content: '';
71
+ position: fixed;
72
+ top: 0;
73
+ left: 0;
74
+ right: 0;
75
+ bottom: 0;
76
+ background: repeating-linear-gradient(0deg,
77
+ transparent,
78
+ transparent 2px,
79
+ rgba(0, 0, 0, 0.008) 2px,
80
+ rgba(0, 0, 0, 0.008) 4px);
81
+ pointer-events: none;
82
+ z-index: 100;
83
+ }
84
+
85
+ /* Bottom bezel notch */
86
+ .bezel-notch {
87
+ display: flex;
88
+ justify-content: center;
89
+ padding: 8px 0 4px;
90
+ }
91
+
92
+ .bezel-notch-inner {
93
+ width: 36px;
94
+ height: 4px;
95
+ background: var(--bezel-outer);
96
+ border-radius: 2px;
97
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.15);
98
+ }
99
+
100
+ /* ── Sticky Header ─────────────────────────────────────────────── */
101
+ .m-site-header {
102
+ position: sticky;
103
+ top: 0;
104
+ z-index: 50;
105
+ display: flex;
106
+ align-items: center;
107
+ justify-content: space-between;
108
+ padding: 20px 40px;
109
+ background: rgba(224, 223, 213, 0.85);
110
+ backdrop-filter: blur(12px);
111
+ -webkit-backdrop-filter: blur(12px);
112
+ border-bottom: 1px solid rgba(0, 0, 0, 0.04);
113
+ transition: background 0.3s ease, border-color 0.3s ease;
114
+ }
115
+
116
+ .m-site-header.scrolled {
117
+ background: rgba(224, 223, 213, 0.95);
118
+ border-bottom-color: rgba(0, 0, 0, 0.08);
119
+ }
120
+
121
+ .header-left {
122
+ display: flex;
123
+ align-items: center;
124
+ gap: 32px;
125
+ }
126
+
127
+ .header-brand {
128
+ font-weight: 700;
129
+ font-size: 0.85rem;
130
+ letter-spacing: 0.02em;
131
+ color: var(--m-ink);
132
+ }
133
+
134
+ .header-meta {
135
+ font-size: 0.7rem;
136
+ color: var(--ink-muted);
137
+ line-height: 1.4;
138
+ }
139
+
140
+ .header-nav {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 24px;
144
+ }
145
+
146
+ .header-nav a {
147
+ font-size: 0.82rem;
148
+ font-weight: 500;
149
+ color: var(--m-ink);
150
+ transition: color var(--transition-base);
151
+ display: flex;
152
+ align-items: center;
153
+ gap: 3px;
154
+ text-decoration: none;
155
+ }
156
+
157
+ .header-nav a:hover {
158
+ color: var(--accent-teal);
159
+ }
160
+
161
+ .header-nav a.creator-nav-link,
162
+ .logged-in-header-nav a.creator-nav-link {
163
+ color: var(--bg-beige);
164
+ background: var(--m-ink);
165
+ border: 1px solid rgba(10, 10, 10, 0.86);
166
+ border-radius: var(--radius-sm);
167
+ padding: 7px 10px;
168
+ font-weight: 800;
169
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.35), 0 0 0 1px rgba(255, 255, 255, 0.1) inset;
170
+ }
171
+
172
+ .header-nav a.creator-nav-link:hover,
173
+ .logged-in-header-nav a.creator-nav-link:hover {
174
+ color: #001f1a;
175
+ background: #00d6b4;
176
+ border-color: #00856f;
177
+ }
178
+
179
+ .header-nav .arrow {
180
+ font-size: 0.75rem;
181
+ opacity: 0.6;
182
+ }
183
+
184
+ .creator-auth-link {
185
+ display: inline-flex;
186
+ min-width: 110px;
187
+ justify-content: center;
188
+ padding: 10px 16px;
189
+ border: 1px solid rgba(10, 10, 10, 0.22);
190
+ border-radius: var(--radius-sm);
191
+ color: var(--m-ink);
192
+ background: var(--bg-beige-light);
193
+ font-weight: 800;
194
+ text-decoration: none;
195
+ }
196
+
197
+ .creator-auth-link--primary {
198
+ color: var(--bg-beige);
199
+ background: var(--m-ink);
200
+ border-color: var(--m-ink);
201
+ }
202
+
203
+ .creator-auth-link:hover {
204
+ color: #001f1a;
205
+ background: #00d6b4;
206
+ border-color: #00856f;
207
+ }
208
+
209
+ /* ── Account Auth ─────────────────────────────────────────────── */
210
+ .auth-panel {
211
+ display: flex;
212
+ flex-direction: column;
213
+ gap: 18px;
214
+ }
215
+
216
+ .auth-mode-toggle {
217
+ display: grid;
218
+ grid-template-columns: 1fr 1fr;
219
+ gap: 6px;
220
+ padding: 6px;
221
+ background: var(--bg-beige-light);
222
+ border: 1px solid rgba(0, 0, 0, 0.06);
223
+ border-radius: var(--radius-md);
224
+ }
225
+
226
+ .auth-mode-toggle button,
227
+ .auth-google-fallback,
228
+ .auth-submit {
229
+ min-height: 42px;
230
+ border: 1px solid rgba(255, 255, 255, 0.1);
231
+ border-radius: var(--radius-md);
232
+ font-family: var(--font-sans);
233
+ font-weight: 750;
234
+ cursor: pointer;
235
+ transition: all var(--transition-base);
236
+ }
237
+
238
+ .auth-mode-toggle button {
239
+ background: transparent;
240
+ color: var(--ink-muted);
241
+ border: 1px solid transparent;
242
+ }
243
+
244
+ .auth-mode-toggle button.active {
245
+ background: #000000;
246
+ color: var(--bg-beige);
247
+ border: 1px solid var(--bezel-outer);
248
+ box-shadow: 0 0 12px rgba(168, 168, 160, 0.4);
249
+ }
250
+
251
+ .auth-google-slot {
252
+ min-height: 42px;
253
+ display: flex;
254
+ justify-content: center;
255
+ width: 100%;
256
+ }
257
+
258
+ .auth-google-render-host {
259
+ display: flex;
260
+ justify-content: center;
261
+ width: 100%;
262
+ }
263
+
264
+ .auth-google-render-host[hidden] {
265
+ display: none;
266
+ }
267
+
268
+ .auth-google-fallback {
269
+ width: 100%;
270
+ display: inline-flex;
271
+ align-items: center;
272
+ justify-content: center;
273
+ gap: 10px;
274
+ background: var(--m-white);
275
+ color: var(--m-ink);
276
+ border: 1px solid rgba(0, 0, 0, 0.12);
277
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
278
+ }
279
+
280
+ .auth-google-fallback:hover:not(:disabled) {
281
+ border-color: rgba(0, 0, 0, 0.22);
282
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
283
+ transform: translateY(-1px);
284
+ }
285
+
286
+ .auth-google-fallback:disabled {
287
+ opacity: 0.6;
288
+ cursor: not-allowed;
289
+ }
290
+
291
+ .auth-google-mark {
292
+ width: 18px;
293
+ height: 18px;
294
+ flex: 0 0 18px;
295
+ }
296
+
297
+ .auth-muted {
298
+ margin: -8px 0 0;
299
+ color: var(--ink-muted);
300
+ font-size: 0.74rem;
301
+ line-height: 1.5;
302
+ }
303
+
304
+ .auth-divider {
305
+ display: grid;
306
+ grid-template-columns: 1fr auto 1fr;
307
+ align-items: center;
308
+ gap: 12px;
309
+ color: var(--ink-muted);
310
+ font-family: var(--font-mono);
311
+ font-size: 0.68rem;
312
+ text-transform: uppercase;
313
+ }
314
+
315
+ .auth-divider span {
316
+ height: 1px;
317
+ background: rgba(0, 0, 0, 0.08);
318
+ }
319
+
320
+ .auth-form {
321
+ display: flex;
322
+ flex-direction: column;
323
+ gap: 14px;
324
+ }
325
+
326
+ .auth-form label {
327
+ display: flex;
328
+ flex-direction: column;
329
+ gap: 6px;
330
+ }
331
+
332
+ .auth-form label span {
333
+ color: var(--ink-soft);
334
+ font-size: 0.74rem;
335
+ font-weight: 700;
336
+ }
337
+
338
+ .auth-form input {
339
+ width: 100%;
340
+ min-height: 44px;
341
+ padding: 12px 14px;
342
+ background: var(--m-white);
343
+ border: 1px solid rgba(0, 0, 0, 0.1);
344
+ border-radius: var(--radius-md);
345
+ color: var(--m-ink);
346
+ font-family: var(--font-sans);
347
+ font-size: 0.9rem;
348
+ outline: none;
349
+ }
350
+
351
+ .auth-form input:focus {
352
+ border-color: var(--accent-teal);
353
+ box-shadow: 0 0 0 3px rgba(14, 116, 144, 0.12);
354
+ }
355
+
356
+ .auth-error {
357
+ padding: 12px 14px;
358
+ color: var(--accent-red);
359
+ background: rgba(224, 90, 58, 0.08);
360
+ border: 1px solid rgba(224, 90, 58, 0.2);
361
+ border-radius: var(--radius-md);
362
+ font-size: 0.82rem;
363
+ line-height: 1.5;
364
+ }
365
+
366
+ .auth-submit {
367
+ width: 100%;
368
+ background: #000000;
369
+ color: var(--bg-beige);
370
+ border: 1px solid var(--bezel-outer);
371
+ box-shadow: 0 0 12px rgba(168, 168, 160, 0.4);
372
+ }
373
+
374
+ .auth-submit:hover:not(:disabled) {
375
+ box-shadow: 0 0 18px rgba(168, 168, 160, 0.7);
376
+ transform: translateY(-1px);
377
+ }
378
+
379
+ .auth-submit:active:not(:disabled) {
380
+ transform: translateY(1px);
381
+ box-shadow: 0 0 8px rgba(168, 168, 160, 0.25);
382
+ }
383
+
384
+ .auth-submit:disabled {
385
+ opacity: 0.55;
386
+ cursor: not-allowed;
387
+ border-color: rgba(255, 255, 255, 0.15);
388
+ color: var(--ink-muted);
389
+ box-shadow: none;
390
+ }
391
+
392
+ /* ── Section Containers ────────────────────────────────────────── */
393
+ .m-section {
394
+ padding: var(--space-xxl) 60px;
395
+ position: relative;
396
+ font-family: var(--font-sans);
397
+ }
398
+
399
+ .m-section--hero {
400
+ min-height: 85vh;
401
+ display: flex;
402
+ flex-direction: column;
403
+ justify-content: flex-end;
404
+ padding-bottom: var(--space-lg);
405
+ }
406
+
407
+ /* ── Scan-Line Typography ──────────────────────────────────────── */
408
+ .scanline-text {
409
+ position: relative;
410
+ font-size: clamp(5rem, 14vw, 12rem);
411
+ font-weight: 900;
412
+ line-height: 0.85;
413
+ letter-spacing: -0.03em;
414
+ color: var(--m-ink);
415
+ overflow: hidden;
416
+ display: inline-block;
417
+ font-family: var(--font-sans);
418
+ max-width: 100%;
419
+ }
420
+
421
+ .mobile-break {
422
+ display: none;
423
+ }
424
+
425
+ .scanline-text::after {
426
+ content: '';
427
+ position: absolute;
428
+ top: 0;
429
+ left: -5%;
430
+ right: -5%;
431
+ bottom: 0;
432
+ background: repeating-linear-gradient(0deg,
433
+ transparent,
434
+ transparent 3px,
435
+ var(--bg-beige) 3px,
436
+ var(--bg-beige) 5.5px);
437
+ pointer-events: none;
438
+ }
439
+
440
+ /* Full-width scan-line band */
441
+ .scanline-band {
442
+ width: 100%;
443
+ position: relative;
444
+ overflow: hidden;
445
+ padding: 10px 0;
446
+ }
447
+
448
+ .scanline-band .scanline-text {
449
+ width: 100%;
450
+ display: block;
451
+ text-align: center;
452
+ }
453
+
454
+ .scanline-divider {
455
+ width: 100%;
456
+ height: 120px;
457
+ background: repeating-linear-gradient(0deg,
458
+ var(--m-ink),
459
+ var(--m-ink) 2px,
460
+ var(--bg-beige) 2px,
461
+ var(--bg-beige) 6px);
462
+ position: relative;
463
+ }
464
+
465
+ .scanline-divider--fade-top {
466
+ mask-image: linear-gradient(to bottom, transparent 0%, black 30%, black 100%);
467
+ -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 30%, black 100%);
468
+ }
469
+
470
+ .scanline-divider--fade-bottom {
471
+ mask-image: linear-gradient(to bottom, black 0%, black 70%, transparent 100%);
472
+ -webkit-mask-image: linear-gradient(to bottom, black 0%, black 70%, transparent 100%);
473
+ }
474
+
475
+ .scanline-divider--both {
476
+ mask-image: linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%);
477
+ -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%);
478
+ }
479
+
480
+ /* ── Typography ────────────────────────────────────────────────── */
481
+ .text-hero-lead {
482
+ font-size: clamp(1.5rem, 3vw, 2.2rem);
483
+ font-weight: 500;
484
+ line-height: 1.3;
485
+ color: var(--m-ink);
486
+ max-width: 700px;
487
+ font-family: var(--font-sans);
488
+ }
489
+
490
+ .text-narrative {
491
+ font-size: clamp(1.25rem, 2.2vw, 1.65rem);
492
+ font-weight: 600;
493
+ line-height: 1.55;
494
+ color: var(--m-ink);
495
+ max-width: min(580px, 100%);
496
+ overflow-wrap: break-word;
497
+ font-family: var(--font-sans);
498
+ }
499
+
500
+ .text-narrative--muted {
501
+ color: var(--ink-muted);
502
+ }
503
+
504
+ .m-text-body {
505
+ font-size: 1rem;
506
+ line-height: 1.7;
507
+ color: var(--ink-soft);
508
+ max-width: 540px;
509
+ font-family: var(--font-sans);
510
+ }
511
+
512
+ .text-label {
513
+ font-size: 0.7rem;
514
+ font-weight: 500;
515
+ letter-spacing: 0.02em;
516
+ color: var(--ink-muted);
517
+ text-transform: lowercase;
518
+ font-family: var(--font-sans);
519
+ }
520
+
521
+ .text-section-title {
522
+ font-size: clamp(2.5rem, 5vw, 4rem);
523
+ font-weight: 900;
524
+ line-height: 1.1;
525
+ letter-spacing: -0.03em;
526
+ color: var(--m-ink);
527
+ font-family: var(--font-sans);
528
+ }
529
+
530
+ .text-section-subtitle {
531
+ font-size: clamp(2rem, 4vw, 3.2rem);
532
+ font-weight: 400;
533
+ line-height: 1.2;
534
+ color: var(--ink-muted);
535
+ font-family: var(--font-sans);
536
+ }
537
+
538
+ /* ── Hero-Specific ─────────────────────────────────────────────── */
539
+ .hero-content {
540
+ padding: 0 60px;
541
+ }
542
+
543
+ .hero-prompt {
544
+ display: flex;
545
+ align-items: center;
546
+ gap: 10px;
547
+ margin-top: var(--space-md);
548
+ font-size: 0.9rem;
549
+ color: var(--ink-soft);
550
+ font-family: var(--font-sans);
551
+ }
552
+
553
+ .hero-prompt-key {
554
+ display: inline-flex;
555
+ align-items: center;
556
+ padding: 4px 12px;
557
+ background: var(--m-white);
558
+ border: 1px solid rgba(0, 0, 0, 0.1);
559
+ border-radius: var(--radius-sm);
560
+ font-family: var(--font-mono);
561
+ font-size: 0.78rem;
562
+ font-weight: 500;
563
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
564
+ justify-content: flex-end;
565
+ }
566
+
567
+ .hero-prompt-container {
568
+ display: flex;
569
+ justify-content: flex-end;
570
+ padding-right: 60px;
571
+ }
572
+
573
+ /* ── Scroll Indicator ──────────────────────────────────────────── */
574
+ .scroll-indicator {
575
+ display: flex;
576
+ flex-direction: column;
577
+ align-items: center;
578
+ gap: 2px;
579
+ margin: var(--space-xl) auto var(--space-md);
580
+ opacity: 0.6;
581
+ animation: scrollBounce 2s ease-in-out infinite;
582
+ transition: opacity 0.5s ease;
583
+ }
584
+
585
+ .scroll-indicator.hidden {
586
+ opacity: 0;
587
+ pointer-events: none;
588
+ }
589
+
590
+ .scroll-indicator svg {
591
+ width: 24px;
592
+ height: 24px;
593
+ }
594
+
595
+ .scroll-indicator .arrow {
596
+ font-size: 0.7rem;
597
+ line-height: 1;
598
+ }
599
+
600
+ @keyframes scrollBounce {
601
+
602
+ 0%,
603
+ 100% {
604
+ transform: translateY(0);
605
+ opacity: 0.6;
606
+ }
607
+
608
+ 50% {
609
+ transform: translateY(6px);
610
+ opacity: 1;
611
+ }
612
+ }
613
+
614
+ /* ── Figure / Annotation ───────────────────────────────────────── */
615
+ .figure-caption {
616
+ display: flex;
617
+ gap: 24px;
618
+ align-items: flex-start;
619
+ margin-top: 16px;
620
+ }
621
+
622
+ .figure-label {
623
+ font-size: 0.75rem;
624
+ font-weight: 500;
625
+ color: var(--ink-muted);
626
+ white-space: nowrap;
627
+ min-width: 36px;
628
+ font-family: var(--font-sans);
629
+ }
630
+
631
+ .figure-desc {
632
+ font-size: 0.75rem;
633
+ color: var(--ink-muted);
634
+ line-height: 1.5;
635
+ max-width: 260px;
636
+ font-family: var(--font-sans);
637
+ }
638
+
639
+ /* ── Terminal Illustration ─────────────────────────────────────── */
640
+ .terminal-window {
641
+ background: #1A1A1A;
642
+ border-radius: var(--radius-md);
643
+ overflow: hidden;
644
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.15);
645
+ border: 1px solid rgba(255, 255, 255, 0.06);
646
+ }
647
+
648
+ .terminal-titlebar {
649
+ display: flex;
650
+ align-items: center;
651
+ gap: 8px;
652
+ padding: 12px 16px;
653
+ background: #252525;
654
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
655
+ }
656
+
657
+ .terminal-dot {
658
+ width: 10px;
659
+ height: 10px;
660
+ border-radius: 50%;
661
+ }
662
+
663
+ .terminal-dot--red {
664
+ background: #FF5F56;
665
+ }
666
+
667
+ .terminal-dot--yellow {
668
+ background: #FFBD2E;
669
+ }
670
+
671
+ .terminal-dot--green {
672
+ background: #27C93F;
673
+ }
674
+
675
+ .terminal-body {
676
+ padding: 20px;
677
+ font-family: var(--font-mono);
678
+ font-size: 0.82rem;
679
+ line-height: 1.8;
680
+ color: #D4D4D4;
681
+ min-height: 180px;
682
+ max-width: 100%;
683
+ min-width: 300px;
684
+ }
685
+
686
+ .terminal-line {
687
+ display: block;
688
+ opacity: 0;
689
+ animation: terminalType 0.3s ease forwards;
690
+ }
691
+
692
+ .terminal-line .t-prompt {
693
+ color: var(--accent-teal);
694
+ font-weight: 600;
695
+ }
696
+
697
+ .terminal-line .command {
698
+ color: #E8E8E8;
699
+ }
700
+
701
+ .terminal-line .output {
702
+ color: #888;
703
+ }
704
+
705
+ .terminal-line .success {
706
+ color: var(--accent-green);
707
+ }
708
+
709
+ /* Staggered terminal line animations */
710
+ .terminal-line:nth-child(1) {
711
+ animation-delay: 0.2s;
712
+ }
713
+
714
+ .terminal-line:nth-child(2) {
715
+ animation-delay: 0.6s;
716
+ }
717
+
718
+ .terminal-line:nth-child(3) {
719
+ animation-delay: 1.0s;
720
+ }
721
+
722
+ .terminal-line:nth-child(4) {
723
+ animation-delay: 1.4s;
724
+ }
725
+
726
+ .terminal-line:nth-child(5) {
727
+ animation-delay: 1.8s;
728
+ }
729
+
730
+ .terminal-line:nth-child(6) {
731
+ animation-delay: 2.2s;
732
+ }
733
+
734
+ .terminal-line:nth-child(7) {
735
+ animation-delay: 2.6s;
736
+ }
737
+
738
+ @keyframes terminalType {
739
+ from {
740
+ opacity: 0;
741
+ transform: translateY(4px);
742
+ }
743
+
744
+ to {
745
+ opacity: 1;
746
+ transform: translateY(0);
747
+ }
748
+ }
749
+
750
+ /* ── Asymmetric 2-Column Layout ────────────────────────────────── */
751
+ .split-layout {
752
+ display: grid;
753
+ grid-template-columns: 1fr 1fr;
754
+ gap: var(--space-lg);
755
+ align-items: start;
756
+ }
757
+
758
+ .split-layout--text-left {
759
+ grid-template-columns: 0.55fr 0.45fr;
760
+ }
761
+
762
+ .split-layout--text-right {
763
+ grid-template-columns: 0.45fr 0.55fr;
764
+ }
765
+
766
+ .split-layout--center {
767
+ align-items: center;
768
+ }
769
+
770
+ .split-layout > * {
771
+ min-width: 0;
772
+ }
773
+
774
+ /* ── Access Card ───────────────────────────────────────────────── */
775
+ .access-card {
776
+ background: var(--bg-beige-light);
777
+ border-radius: var(--radius-lg);
778
+ padding: 32px;
779
+ position: relative;
780
+ overflow: hidden;
781
+ border: 1px solid rgba(0, 0, 0, 0.06);
782
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
783
+ width: 100%;
784
+ max-width: 420px;
785
+ box-sizing: border-box;
786
+ }
787
+
788
+ .access-card-stripe {
789
+ position: absolute;
790
+ left: 0;
791
+ top: 0;
792
+ bottom: 0;
793
+ width: 48px;
794
+ background: repeating-linear-gradient(0deg,
795
+ var(--m-ink),
796
+ var(--m-ink) 2px,
797
+ var(--bg-beige-light) 2px,
798
+ var(--bg-beige-light) 5px);
799
+ }
800
+
801
+ .access-card-content {
802
+ margin-left: 64px;
803
+ }
804
+
805
+ .access-card-label {
806
+ font-size: 0.65rem;
807
+ color: var(--ink-muted);
808
+ text-transform: uppercase;
809
+ letter-spacing: 0.05em;
810
+ margin-bottom: 4px;
811
+ display: block;
812
+ font-family: var(--font-sans);
813
+ }
814
+
815
+ .access-card-value {
816
+ font-size: 1.1rem;
817
+ font-weight: 700;
818
+ color: var(--m-ink);
819
+ display: block;
820
+ font-family: var(--font-sans);
821
+ }
822
+
823
+ .access-card-row {
824
+ display: flex;
825
+ gap: 32px;
826
+ margin-top: 24px;
827
+ }
828
+
829
+ .access-card-field {
830
+ flex: 1;
831
+ }
832
+
833
+ .access-card-mono {
834
+ font-family: var(--font-mono);
835
+ font-weight: 600;
836
+ }
837
+
838
+ /* Copy Command Block */
839
+ .copy-command {
840
+ display: flex;
841
+ align-items: center;
842
+ gap: 12px;
843
+ padding: 16px 20px;
844
+ background: var(--m-white);
845
+ border: 1px solid rgba(0, 0, 0, 0.1);
846
+ border-radius: var(--radius-md);
847
+ font-family: var(--font-mono);
848
+ font-size: 0.88rem;
849
+ color: var(--m-ink);
850
+ cursor: pointer;
851
+ transition: all var(--transition-base);
852
+ max-width: 440px;
853
+ margin-top: var(--space-md);
854
+ position: relative;
855
+ }
856
+
857
+ .copy-command:hover {
858
+ border-color: var(--accent-teal);
859
+ box-shadow: 0 2px 12px rgba(14, 116, 144, 0.1);
860
+ }
861
+
862
+ .copy-command .copy-icon {
863
+ margin-left: auto;
864
+ opacity: 0.4;
865
+ transition: opacity var(--transition-base);
866
+ flex-shrink: 0;
867
+ }
868
+
869
+ .copy-command:hover .copy-icon {
870
+ opacity: 1;
871
+ }
872
+
873
+ .copy-command .copied-tooltip {
874
+ position: absolute;
875
+ top: -32px;
876
+ right: 0;
877
+ background: var(--m-ink);
878
+ color: var(--m-white);
879
+ padding: 4px 10px;
880
+ border-radius: var(--radius-sm);
881
+ font-size: 0.72rem;
882
+ opacity: 0;
883
+ transform: translateY(4px);
884
+ transition: all 0.2s ease;
885
+ pointer-events: none;
886
+ }
887
+
888
+ .copy-command.copied .copied-tooltip {
889
+ opacity: 1;
890
+ transform: translateY(0);
891
+ }
892
+
893
+ /* ── Steps / How It Works ──────────────────────────────────────── */
894
+ .steps-grid {
895
+ display: grid;
896
+ grid-template-columns: repeat(3, 1fr);
897
+ gap: var(--space-md);
898
+ margin-top: var(--space-lg);
899
+ }
900
+
901
+ .step-card {
902
+ padding: 32px;
903
+ border-radius: var(--radius-lg);
904
+ background: var(--bg-beige-light);
905
+ border: 1px solid rgba(0, 0, 0, 0.04);
906
+ transition: transform var(--transition-base), box-shadow var(--transition-base);
907
+ }
908
+
909
+ .step-card:hover {
910
+ transform: translateY(-4px);
911
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
912
+ }
913
+
914
+ .step-number {
915
+ font-family: var(--font-mono);
916
+ font-size: 0.7rem;
917
+ font-weight: 600;
918
+ color: var(--accent-teal);
919
+ margin-bottom: 16px;
920
+ letter-spacing: 0.05em;
921
+ display: block;
922
+ }
923
+
924
+ .step-title {
925
+ font-size: 1.3rem;
926
+ font-weight: 800;
927
+ margin-bottom: 12px;
928
+ letter-spacing: -0.01em;
929
+ color: var(--m-ink);
930
+ font-family: var(--font-sans);
931
+ }
932
+
933
+ .step-code {
934
+ display: inline-block;
935
+ margin-top: 12px;
936
+ padding: 8px 14px;
937
+ background: var(--m-ink);
938
+ color: var(--accent-green);
939
+ border-radius: var(--radius-sm);
940
+ font-family: var(--font-mono);
941
+ font-size: 0.78rem;
942
+ font-weight: 500;
943
+ }
944
+
945
+ /* ── Track Cards ───────────────────────────────────────────────── */
946
+ .m-tracks-grid {
947
+ display: grid;
948
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
949
+ gap: 20px;
950
+ margin-top: var(--space-lg);
951
+ }
952
+
953
+ .m-track-card {
954
+ padding: 28px 24px;
955
+ background: var(--bg-beige-light);
956
+ border-radius: var(--radius-lg);
957
+ border: 1px solid rgba(0, 0, 0, 0.04);
958
+ transition: all var(--transition-base);
959
+ position: relative;
960
+ overflow: hidden;
961
+ }
962
+
963
+ .m-track-card::before {
964
+ content: '';
965
+ position: absolute;
966
+ top: 0;
967
+ left: 0;
968
+ right: 0;
969
+ height: 3px;
970
+ background: var(--accent-teal);
971
+ transform: scaleX(0);
972
+ transform-origin: left;
973
+ transition: transform 0.4s ease;
974
+ }
975
+
976
+ .m-track-card:hover::before {
977
+ transform: scaleX(1);
978
+ }
979
+
980
+ .m-track-card:hover {
981
+ transform: translateY(-4px);
982
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
983
+ }
984
+
985
+ .m-track-card-icon {
986
+ width: 40px;
987
+ height: 40px;
988
+ border-radius: 10px;
989
+ background: var(--m-ink);
990
+ display: flex;
991
+ align-items: center;
992
+ justify-content: center;
993
+ color: var(--m-white);
994
+ font-family: var(--font-mono);
995
+ font-size: 0.85rem;
996
+ font-weight: 700;
997
+ margin-bottom: 16px;
998
+ }
999
+
1000
+ .m-track-card-title {
1001
+ font-size: 1.15rem;
1002
+ font-weight: 800;
1003
+ margin-bottom: 8px;
1004
+ letter-spacing: -0.01em;
1005
+ color: var(--m-ink);
1006
+ font-family: var(--font-sans);
1007
+ }
1008
+
1009
+ .m-track-card-desc {
1010
+ font-size: 0.82rem;
1011
+ color: var(--ink-muted);
1012
+ line-height: 1.55;
1013
+ font-family: var(--font-sans);
1014
+ }
1015
+
1016
+ /* ── CLI Commands Reference ────────────────────────────────────── */
1017
+ .commands-list {
1018
+ display: flex;
1019
+ flex-direction: column;
1020
+ gap: 1px;
1021
+ background: rgba(0, 0, 0, 0.06);
1022
+ border-radius: var(--radius-md);
1023
+ overflow: hidden;
1024
+ margin-top: var(--space-md);
1025
+ }
1026
+
1027
+ .command-row {
1028
+ display: grid;
1029
+ grid-template-columns: 220px 1fr;
1030
+ gap: var(--space-md);
1031
+ padding: 16px 24px;
1032
+ background: var(--bg-beige-light);
1033
+ transition: background var(--transition-base);
1034
+ }
1035
+
1036
+ .command-row:hover {
1037
+ background: var(--bg-beige);
1038
+ }
1039
+
1040
+ .command-name {
1041
+ font-family: var(--font-mono);
1042
+ font-size: 0.82rem;
1043
+ font-weight: 600;
1044
+ color: var(--accent-teal);
1045
+ }
1046
+
1047
+ .command-desc {
1048
+ font-size: 0.85rem;
1049
+ color: var(--ink-soft);
1050
+ font-family: var(--font-sans);
1051
+ }
1052
+
1053
+ /* ── Logged-In Dark Terminal Section (Image 1 style) ───────────── */
1054
+ .logged-in-terminal-section {
1055
+ background: #1a1a1a;
1056
+ padding: 80px 60px 60px;
1057
+ position: relative;
1058
+ overflow: hidden;
1059
+ min-height: 400px;
1060
+ display: flex;
1061
+ flex-direction: column;
1062
+ justify-content: center;
1063
+ }
1064
+
1065
+ .logged-in-terminal-section::before {
1066
+ content: '';
1067
+ position: absolute;
1068
+ inset: 0;
1069
+ background: repeating-linear-gradient(0deg,
1070
+ transparent,
1071
+ transparent 2px,
1072
+ rgba(255, 255, 255, 0.015) 2px,
1073
+ rgba(255, 255, 255, 0.015) 4px);
1074
+ pointer-events: none;
1075
+ }
1076
+
1077
+ .logged-in-quote {
1078
+ font-family: var(--font-mono);
1079
+ font-size: clamp(1rem, 2.5vw, 1.6rem);
1080
+ font-weight: 500;
1081
+ color: rgba(255, 255, 255, 0.55);
1082
+ line-height: 1.8;
1083
+ letter-spacing: 0.12em;
1084
+ text-transform: uppercase;
1085
+ max-width: 700px;
1086
+ position: relative;
1087
+ z-index: 1;
1088
+ }
1089
+
1090
+ .logged-in-meta {
1091
+ margin-top: 60px;
1092
+ font-family: var(--font-mono);
1093
+ font-size: 0.78rem;
1094
+ color: rgba(255, 255, 255, 0.3);
1095
+ line-height: 1.6;
1096
+ position: relative;
1097
+ z-index: 1;
1098
+ }
1099
+
1100
+ .logged-in-header {
1101
+ position: absolute;
1102
+ top: 20px;
1103
+ left: 0;
1104
+ right: 0;
1105
+ display: flex;
1106
+ justify-content: space-between;
1107
+ align-items: flex-start;
1108
+ padding: 0 40px;
1109
+ z-index: 2;
1110
+ }
1111
+
1112
+ .logged-in-header-left {
1113
+ display: flex;
1114
+ gap: 32px;
1115
+ align-items: flex-start;
1116
+ }
1117
+
1118
+ .logged-in-header-brand {
1119
+ font-family: var(--font-sans);
1120
+ font-size: 0.7rem;
1121
+ font-weight: 600;
1122
+ color: rgba(255, 255, 255, 0.4);
1123
+ letter-spacing: 0.05em;
1124
+ }
1125
+
1126
+ .logged-in-header-copy {
1127
+ font-family: var(--font-sans);
1128
+ font-size: 0.65rem;
1129
+ color: rgba(255, 255, 255, 0.25);
1130
+ line-height: 1.4;
1131
+ }
1132
+
1133
+ .logged-in-header-nav {
1134
+ display: flex;
1135
+ gap: 20px;
1136
+ }
1137
+
1138
+ .logged-in-header-nav a {
1139
+ font-family: var(--font-sans);
1140
+ font-size: 0.78rem;
1141
+ font-weight: 500;
1142
+ color: rgba(255, 255, 255, 0.4);
1143
+ text-decoration: none;
1144
+ display: flex;
1145
+ align-items: center;
1146
+ gap: 3px;
1147
+ transition: color 0.3s ease;
1148
+ }
1149
+
1150
+ .logged-in-header-nav a:hover {
1151
+ color: rgba(255, 255, 255, 0.7);
1152
+ }
1153
+
1154
+ /* ── User Log Details & Telemetry ── */
1155
+ .user-log-details {
1156
+ margin-top: 40px;
1157
+ background: rgba(255, 255, 255, 0.02);
1158
+ border: 1px solid rgba(255, 255, 255, 0.1);
1159
+ border-radius: var(--radius-md);
1160
+ padding: 24px;
1161
+ font-family: var(--font-mono);
1162
+ position: relative;
1163
+ z-index: 1;
1164
+ }
1165
+
1166
+ .user-log-grid {
1167
+ display: grid;
1168
+ grid-template-columns: repeat(4, 1fr);
1169
+ gap: 20px;
1170
+ }
1171
+
1172
+ .user-log-field {
1173
+ display: flex;
1174
+ flex-direction: column;
1175
+ gap: 6px;
1176
+ }
1177
+
1178
+ .user-log-label {
1179
+ font-size: 0.65rem;
1180
+ color: rgba(255, 255, 255, 0.4);
1181
+ text-transform: uppercase;
1182
+ letter-spacing: 0.05em;
1183
+ }
1184
+
1185
+ .user-log-value {
1186
+ font-size: 0.82rem;
1187
+ color: rgba(255, 255, 255, 0.85);
1188
+ font-weight: 500;
1189
+ word-break: break-all;
1190
+ }
1191
+
1192
+ .user-log-value--highlight {
1193
+ color: #00e5ff;
1194
+ font-weight: 600;
1195
+ }
1196
+
1197
+ .user-log-value--green {
1198
+ color: #00ff66;
1199
+ font-weight: 600;
1200
+ }
1201
+
1202
+ .user-log-divider {
1203
+ grid-column: 1 / -1;
1204
+ height: 1px;
1205
+ background: rgba(255, 255, 255, 0.08);
1206
+ margin: 4px 0;
1207
+ }
1208
+
1209
+ /* ── Progress Telemetry Dashboard ── */
1210
+ .progress-telemetry {
1211
+ background: rgba(255, 255, 255, 0.015);
1212
+ border: 1px dashed rgba(255, 255, 255, 0.12);
1213
+ border-radius: var(--radius-md);
1214
+ padding: 28px;
1215
+ font-family: var(--font-mono);
1216
+ color: rgba(255, 255, 255, 0.8);
1217
+ position: relative;
1218
+ z-index: 1;
1219
+ }
1220
+
1221
+ .telemetry-title {
1222
+ font-size: 0.85rem;
1223
+ font-weight: 700;
1224
+ letter-spacing: 0.12em;
1225
+ color: rgba(255, 255, 255, 0.85);
1226
+ margin-bottom: 24px;
1227
+ display: flex;
1228
+ align-items: center;
1229
+ }
1230
+
1231
+ @keyframes telemetry-pulse-glow {
1232
+ 0% { opacity: 0.3; }
1233
+ 50% { opacity: 1; }
1234
+ 100% { opacity: 0.3; }
1235
+ }
1236
+
1237
+ .telemetry-pulse {
1238
+ color: #00ff66;
1239
+ animation: telemetry-pulse-glow 2s infinite ease-in-out;
1240
+ margin-right: 8px;
1241
+ }
1242
+
1243
+ .telemetry-grid {
1244
+ display: grid;
1245
+ grid-template-columns: repeat(2, 1fr);
1246
+ gap: 24px;
1247
+ }
1248
+
1249
+ .telemetry-card {
1250
+ background: rgba(0, 0, 0, 0.25);
1251
+ border: 1px solid rgba(255, 255, 255, 0.06);
1252
+ border-radius: var(--radius-md);
1253
+ padding: 20px;
1254
+ display: flex;
1255
+ flex-direction: column;
1256
+ gap: 14px;
1257
+ transition: border-color var(--transition-base), box-shadow var(--transition-base);
1258
+ }
1259
+
1260
+ .telemetry-card:hover {
1261
+ border-color: rgba(0, 255, 102, 0.25);
1262
+ box-shadow: 0 4px 20px rgba(0, 255, 102, 0.03);
1263
+ }
1264
+
1265
+ .telemetry-track-header {
1266
+ display: flex;
1267
+ justify-content: space-between;
1268
+ align-items: center;
1269
+ gap: 12px;
1270
+ }
1271
+
1272
+ .telemetry-track-name {
1273
+ font-size: 0.88rem;
1274
+ font-weight: 600;
1275
+ color: #ffffff;
1276
+ letter-spacing: 0.02em;
1277
+ }
1278
+
1279
+ .telemetry-track-status {
1280
+ font-size: 0.62rem;
1281
+ padding: 3px 8px;
1282
+ border-radius: var(--radius-sm);
1283
+ font-weight: 700;
1284
+ letter-spacing: 0.05em;
1285
+ }
1286
+
1287
+ .telemetry-track-status--completed {
1288
+ color: #00ff66;
1289
+ background: rgba(0, 255, 102, 0.08);
1290
+ border: 1px solid rgba(0, 255, 102, 0.25);
1291
+ }
1292
+
1293
+ .telemetry-track-status--active {
1294
+ background: rgba(0, 229, 255, 0.08);
1295
+ color: #00e5ff;
1296
+ border: 1px solid rgba(0, 229, 255, 0.25);
1297
+ }
1298
+
1299
+ .telemetry-track-status--inactive {
1300
+ background: rgba(255, 255, 255, 0.03);
1301
+ color: rgba(255, 255, 255, 0.35);
1302
+ border: 1px solid rgba(255, 255, 255, 0.08);
1303
+ }
1304
+
1305
+ .telemetry-bar {
1306
+ color: #00ff66;
1307
+ font-size: 0.78rem;
1308
+ white-space: pre;
1309
+ letter-spacing: 0.04em;
1310
+ font-weight: 500;
1311
+ }
1312
+
1313
+ .telemetry-stats {
1314
+ display: flex;
1315
+ justify-content: space-between;
1316
+ font-size: 0.72rem;
1317
+ color: rgba(255, 255, 255, 0.45);
1318
+ letter-spacing: 0.02em;
1319
+ }
1320
+
1321
+ .telemetry-active-lesson {
1322
+ font-size: 0.75rem;
1323
+ color: rgba(255, 255, 255, 0.75);
1324
+ background: rgba(255, 255, 255, 0.02);
1325
+ padding: 10px 12px;
1326
+ border-radius: var(--radius-sm);
1327
+ border-left: 2px solid #00e5ff;
1328
+ border-top: 1px solid rgba(255, 255, 255, 0.04);
1329
+ border-right: 1px solid rgba(255, 255, 255, 0.04);
1330
+ border-bottom: 1px solid rgba(255, 255, 255, 0.04);
1331
+ }
1332
+
1333
+ /* ── Lesson Badges in Track Catalog ── */
1334
+ .lesson-status-badge {
1335
+ font-size: 0.58rem;
1336
+ font-weight: 800;
1337
+ padding: 2px 6px;
1338
+ border-radius: var(--radius-sm);
1339
+ text-transform: uppercase;
1340
+ letter-spacing: 0.05em;
1341
+ }
1342
+
1343
+ .lesson-status-badge--completed {
1344
+ background: rgba(45, 138, 86, 0.08);
1345
+ color: var(--accent-green);
1346
+ border: 1px solid rgba(45, 138, 86, 0.2);
1347
+ }
1348
+
1349
+ .lesson-status-badge--active {
1350
+ background: rgba(14, 116, 144, 0.08);
1351
+ color: var(--accent-teal);
1352
+ border: 1px solid rgba(14, 116, 144, 0.2);
1353
+ }
1354
+
1355
+ /* ── Footer Bottom Section (Image 2 style) ─────────────────────── */
1356
+ .m-footer-showcase {
1357
+ padding: 80px 60px 60px;
1358
+ position: relative;
1359
+ }
1360
+
1361
+ .m-footer-showcase-header {
1362
+ display: flex;
1363
+ justify-content: space-between;
1364
+ align-items: flex-start;
1365
+ padding: 0 0 40px;
1366
+ }
1367
+
1368
+ .m-footer-showcase .barcode-stripes-left {
1369
+ display: none;
1370
+ }
1371
+
1372
+ .m-footer-showcase-content {
1373
+ display: grid;
1374
+ grid-template-columns: 1fr 1fr;
1375
+ gap: 60px;
1376
+ align-items: center;
1377
+ position: relative;
1378
+ z-index: 1;
1379
+ }
1380
+
1381
+ .m-footer-heading {
1382
+ font-family: var(--font-sans);
1383
+ font-size: clamp(2.5rem, 5vw, 4rem);
1384
+ font-weight: 900;
1385
+ line-height: 1.1;
1386
+ letter-spacing: -0.03em;
1387
+ color: var(--m-ink);
1388
+ }
1389
+
1390
+ .m-footer-heading-sub {
1391
+ font-weight: 400;
1392
+ color: var(--ink-muted);
1393
+ display: block;
1394
+ }
1395
+
1396
+ .m-footer-cta-area {
1397
+ margin-top: 48px;
1398
+ }
1399
+
1400
+ .m-footer-cta-icon {
1401
+ width: 64px;
1402
+ height: 64px;
1403
+ margin-bottom: 16px;
1404
+ }
1405
+
1406
+ .m-footer-cta-text {
1407
+ font-family: var(--font-sans);
1408
+ font-size: 1rem;
1409
+ font-weight: 500;
1410
+ color: var(--m-ink);
1411
+ margin-bottom: 20px;
1412
+ }
1413
+
1414
+ .m-footer-input-group {
1415
+ display: flex;
1416
+ align-items: stretch;
1417
+ gap: 0;
1418
+ max-width: 380px;
1419
+ }
1420
+
1421
+ .m-footer-input {
1422
+ flex: 1;
1423
+ padding: 14px 20px;
1424
+ border: 1px solid rgba(0, 0, 0, 0.12);
1425
+ border-right: none;
1426
+ border-radius: var(--radius-md) 0 0 var(--radius-md);
1427
+ background: var(--m-white);
1428
+ font-family: var(--font-mono);
1429
+ font-size: 0.85rem;
1430
+ color: var(--m-ink);
1431
+ outline: none;
1432
+ transition: border-color var(--transition-base);
1433
+ }
1434
+
1435
+ .m-footer-input:focus {
1436
+ border-color: var(--accent-teal);
1437
+ }
1438
+
1439
+ .m-footer-input::placeholder {
1440
+ color: var(--ink-faint);
1441
+ }
1442
+
1443
+ .m-footer-send-btn {
1444
+ display: flex;
1445
+ align-items: center;
1446
+ justify-content: center;
1447
+ padding: 14px 18px;
1448
+ background: #000000;
1449
+ border: 1px solid var(--bezel-outer);
1450
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
1451
+ color: var(--bg-beige);
1452
+ cursor: pointer;
1453
+ transition: all var(--transition-base);
1454
+ font-size: 1.1rem;
1455
+ box-shadow: 0 0 12px rgba(168, 168, 160, 0.4);
1456
+ }
1457
+
1458
+ .m-footer-send-btn:hover {
1459
+ background: var(--bezel-outer);
1460
+ color: #000000;
1461
+ border-color: var(--bezel-outer);
1462
+ box-shadow: 0 0 18px rgba(168, 168, 160, 0.7);
1463
+ }
1464
+
1465
+ /* ID Card on right */
1466
+ .m-id-card {
1467
+ display: grid;
1468
+ grid-template-columns: 1fr auto;
1469
+ gap: 0;
1470
+ max-width: 540px;
1471
+ margin-left: auto;
1472
+ border-radius: var(--radius-lg);
1473
+ overflow: hidden;
1474
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
1475
+ border: 1px solid rgba(0, 0, 0, 0.06);
1476
+ }
1477
+
1478
+ .m-id-card-image {
1479
+ background: linear-gradient(135deg, #e8e7df 0%, #d4d3cb 100%);
1480
+ min-height: 240px;
1481
+ position: relative;
1482
+ overflow: hidden;
1483
+ display: flex;
1484
+ align-items: center;
1485
+ justify-content: center;
1486
+ }
1487
+
1488
+ .m-id-card-image::after {
1489
+ content: '';
1490
+ position: absolute;
1491
+ inset: 0;
1492
+ background: none;
1493
+ }
1494
+
1495
+ .m-id-card-image-inner {
1496
+ width: 64px;
1497
+ height: 64px;
1498
+ background: var(--m-ink);
1499
+ border-radius: 50%;
1500
+ display: flex;
1501
+ align-items: center;
1502
+ justify-content: center;
1503
+ font-family: var(--font-mono);
1504
+ font-size: 1.5rem;
1505
+ font-weight: 700;
1506
+ color: var(--m-white);
1507
+ }
1508
+
1509
+ .m-id-card-info {
1510
+ background: var(--m-white);
1511
+ padding: 28px 24px;
1512
+ display: flex;
1513
+ flex-direction: column;
1514
+ justify-content: space-between;
1515
+ min-width: 200px;
1516
+ }
1517
+
1518
+ .m-id-card-name-label {
1519
+ font-size: 0.6rem;
1520
+ color: var(--ink-muted);
1521
+ text-transform: uppercase;
1522
+ letter-spacing: 0.1em;
1523
+ font-family: var(--font-sans);
1524
+ }
1525
+
1526
+ .m-id-card-name-value {
1527
+ font-size: 1.3rem;
1528
+ font-weight: 900;
1529
+ color: var(--m-ink);
1530
+ margin-top: 4px;
1531
+ line-height: 1.2;
1532
+ font-family: var(--font-sans);
1533
+ }
1534
+
1535
+ .m-id-card-barcode {
1536
+ margin-top: auto;
1537
+ padding-top: 20px;
1538
+ font-family: var(--font-mono);
1539
+ font-size: 0.6rem;
1540
+ color: var(--ink-muted);
1541
+ writing-mode: vertical-rl;
1542
+ letter-spacing: 0.1em;
1543
+ text-align: right;
1544
+ position: absolute;
1545
+ right: 12px;
1546
+ top: 50%;
1547
+ transform: translateY(-50%);
1548
+ }
1549
+
1550
+ .m-id-card-footer {
1551
+ display: flex;
1552
+ gap: 20px;
1553
+ margin-top: 16px;
1554
+ }
1555
+
1556
+ .m-id-card-footer-item {
1557
+ display: flex;
1558
+ flex-direction: column;
1559
+ }
1560
+
1561
+ .m-id-card-footer-label {
1562
+ font-size: 0.55rem;
1563
+ color: var(--ink-muted);
1564
+ text-transform: capitalize;
1565
+ font-family: var(--font-sans);
1566
+ }
1567
+
1568
+ .m-id-card-footer-value {
1569
+ font-family: var(--font-mono);
1570
+ font-size: 0.85rem;
1571
+ font-weight: 700;
1572
+ color: var(--m-ink);
1573
+ margin-top: 2px;
1574
+ }
1575
+
1576
+ /* ── Footer ────────────────────────────────────────────────────── */
1577
+ .m-site-footer {
1578
+ display: flex;
1579
+ align-items: center;
1580
+ justify-content: space-between;
1581
+ padding: 24px 40px;
1582
+ border-top: 1px solid rgba(0, 0, 0, 0.06);
1583
+ font-family: var(--font-sans);
1584
+ }
1585
+
1586
+ /* ── Scroll Animations (reveal on scroll) ──────────────────────── */
1587
+ .reveal {
1588
+ opacity: 0;
1589
+ transform: translateY(40px);
1590
+ transition: opacity 0.8s ease, transform 0.8s ease;
1591
+ }
1592
+
1593
+ .reveal.visible {
1594
+ opacity: 1;
1595
+ transform: translateY(0);
1596
+ }
1597
+
1598
+ .reveal-left {
1599
+ opacity: 0;
1600
+ transform: translateX(-40px);
1601
+ transition: opacity 0.8s ease, transform 0.8s ease;
1602
+ }
1603
+
1604
+ .reveal-left.visible {
1605
+ opacity: 1;
1606
+ transform: translateX(0);
1607
+ }
1608
+
1609
+ .reveal-right {
1610
+ opacity: 0;
1611
+ transform: translateX(40px);
1612
+ transition: opacity 0.8s ease, transform 0.8s ease;
1613
+ }
1614
+
1615
+ .reveal-right.visible {
1616
+ opacity: 1;
1617
+ transform: translateX(0);
1618
+ }
1619
+
1620
+ .reveal-scale {
1621
+ opacity: 0;
1622
+ transform: scale(0.95);
1623
+ transition: opacity 0.8s ease, transform 0.8s ease;
1624
+ }
1625
+
1626
+ .reveal-scale.visible {
1627
+ opacity: 1;
1628
+ transform: scale(1);
1629
+ }
1630
+
1631
+ /* Staggered delays */
1632
+ .delay-1 {
1633
+ transition-delay: 0.1s;
1634
+ }
1635
+
1636
+ .delay-2 {
1637
+ transition-delay: 0.2s;
1638
+ }
1639
+
1640
+ .delay-3 {
1641
+ transition-delay: 0.3s;
1642
+ }
1643
+
1644
+ .delay-4 {
1645
+ transition-delay: 0.4s;
1646
+ }
1647
+
1648
+ .delay-5 {
1649
+ transition-delay: 0.5s;
1650
+ }
1651
+
1652
+ /* ── Responsive ────────────────────────────────────────────────── */
1653
+ @media (max-width: 1024px) {
1654
+ .m-section {
1655
+ padding: var(--space-xl) 40px;
1656
+ }
1657
+
1658
+ .hero-content {
1659
+ padding: 0 40px;
1660
+ }
1661
+
1662
+ .hero-prompt-container {
1663
+ padding-right: 40px;
1664
+ }
1665
+
1666
+ .split-layout,
1667
+ .split-layout--text-left,
1668
+ .split-layout--text-right {
1669
+ grid-template-columns: 1fr;
1670
+ gap: var(--space-md);
1671
+ }
1672
+
1673
+ .steps-grid {
1674
+ grid-template-columns: repeat(2, 1fr);
1675
+ gap: var(--space-sm);
1676
+ }
1677
+
1678
+ .m-footer-showcase-content {
1679
+ grid-template-columns: 1fr;
1680
+ gap: 40px;
1681
+ }
1682
+
1683
+ .m-id-card {
1684
+ margin-left: 0;
1685
+ max-width: 440px;
1686
+ }
1687
+
1688
+ .access-card {
1689
+ max-width: 100%;
1690
+ }
1691
+
1692
+ .terminal-window {
1693
+ max-width: 100%;
1694
+ }
1695
+
1696
+ .logged-in-terminal-section {
1697
+ padding: 60px 40px 40px;
1698
+ }
1699
+
1700
+ .command-row {
1701
+ grid-template-columns: 180px 1fr;
1702
+ }
1703
+ }
1704
+
1705
+ @media (max-width: 768px) {
1706
+ .steps-grid {
1707
+ grid-template-columns: 1fr;
1708
+ gap: var(--space-sm);
1709
+ }
1710
+ }
1711
+
1712
+ @media (max-width: 640px) {
1713
+ .monitor-bezel {
1714
+ margin: 6px;
1715
+ padding: 8px;
1716
+ border-radius: 12px;
1717
+ }
1718
+
1719
+ .monitor-screen {
1720
+ border-radius: 6px;
1721
+ }
1722
+
1723
+ .m-section {
1724
+ padding: var(--space-lg) 20px;
1725
+ }
1726
+
1727
+ .m-section--hero {
1728
+ min-height: 70vh;
1729
+ }
1730
+
1731
+ .hero-content {
1732
+ padding: 0 20px;
1733
+ }
1734
+
1735
+ .hero-prompt-container {
1736
+ padding-right: 20px;
1737
+ }
1738
+
1739
+ .m-site-header {
1740
+ padding: 16px 20px;
1741
+ flex-wrap: wrap;
1742
+ gap: 12px;
1743
+ }
1744
+
1745
+ .header-nav {
1746
+ gap: 16px;
1747
+ }
1748
+
1749
+ .scanline-text {
1750
+ font-size: clamp(3rem, 18vw, 6rem);
1751
+ }
1752
+
1753
+ .mobile-break {
1754
+ display: block;
1755
+ }
1756
+
1757
+ .command-row {
1758
+ grid-template-columns: 1fr;
1759
+ gap: 6px;
1760
+ }
1761
+
1762
+ .m-footer-input-group {
1763
+ flex-direction: column;
1764
+ }
1765
+
1766
+ .m-footer-input {
1767
+ border-right: 1px solid rgba(0, 0, 0, 0.12);
1768
+ border-radius: var(--radius-md);
1769
+ }
1770
+
1771
+ .m-footer-send-btn {
1772
+ border-radius: var(--radius-md);
1773
+ }
1774
+
1775
+ .access-card {
1776
+ max-width: 100%;
1777
+ }
1778
+
1779
+ .access-card-row {
1780
+ flex-direction: column;
1781
+ gap: 16px;
1782
+ }
1783
+
1784
+ .m-site-footer {
1785
+ flex-direction: column;
1786
+ gap: 16px;
1787
+ text-align: center;
1788
+ }
1789
+
1790
+ .logged-in-terminal-section {
1791
+ padding: 50px 20px 30px;
1792
+ }
1793
+
1794
+ .logged-in-header {
1795
+ padding: 0 20px;
1796
+ flex-wrap: wrap;
1797
+ gap: 12px;
1798
+ }
1799
+
1800
+ .m-footer-showcase {
1801
+ padding: 60px 20px 40px;
1802
+ }
1803
+
1804
+ .m-id-card {
1805
+ grid-template-columns: 1fr;
1806
+ max-width: 100%;
1807
+ }
1808
+
1809
+ .m-footer-showcase-content {
1810
+ gap: 32px;
1811
+ }
1812
+
1813
+ .m-footer-heading {
1814
+ font-size: clamp(2rem, 8vw, 3rem);
1815
+ }
1816
+
1817
+ .text-section-title {
1818
+ font-size: clamp(2rem, 6vw, 3rem);
1819
+ }
1820
+
1821
+ .text-section-subtitle {
1822
+ font-size: clamp(1.5rem, 5vw, 2.2rem);
1823
+ }
1824
+
1825
+ .user-log-grid {
1826
+ grid-template-columns: 1fr 1fr;
1827
+ }
1828
+ }