|
1 | | -@tailwind base; |
2 | | -@tailwind components; |
3 | | -@tailwind utilities; |
4 | | - |
5 | | -:root { |
6 | | - color-scheme: dark; |
7 | | - |
8 | | - --bg-base: #0a0a0c; |
9 | | - --bg-panel: #111116; |
10 | | - --bg-panel-raised: #16161d; |
11 | | - --edge-hairline: rgba(245, 244, 239, 0.06); |
12 | | - --edge-strong: rgba(245, 244, 239, 0.12); |
13 | | - --text-primary: #f5f4ef; |
14 | | - --text-secondary: #9a9aa0; |
15 | | - --text-muted: #5a5a68; |
16 | | -} |
17 | | - |
18 | | -html, |
19 | | -body { |
20 | | - background: var(--bg-base); |
21 | | - color: var(--text-primary); |
22 | | -} |
23 | | - |
24 | | -body { |
25 | | - margin: 0; |
26 | | - font-feature-settings: |
27 | | - "ss01" on, |
28 | | - "cv11" on; |
29 | | - -webkit-font-smoothing: antialiased; |
30 | | - -moz-osx-font-smoothing: grayscale; |
31 | | - min-height: 100vh; |
32 | | - position: relative; |
33 | | -} |
34 | | - |
35 | | -/* Atmospheric background: radial warm glow + film grain. |
36 | | - Both are purely decorative, pointer-events:none. */ |
37 | | -body::before { |
38 | | - content: ""; |
39 | | - position: fixed; |
40 | | - inset: 0; |
41 | | - z-index: -2; |
42 | | - background: |
43 | | - radial-gradient( |
44 | | - ellipse 80% 60% at 20% 0%, |
45 | | - rgba(232, 195, 102, 0.04), |
46 | | - transparent 60% |
47 | | - ), |
48 | | - radial-gradient( |
49 | | - ellipse 60% 50% at 90% 10%, |
50 | | - rgba(140, 180, 216, 0.035), |
51 | | - transparent 60% |
52 | | - ), |
53 | | - radial-gradient( |
54 | | - ellipse 100% 70% at 50% 120%, |
55 | | - rgba(127, 217, 154, 0.025), |
56 | | - transparent 60% |
57 | | - ); |
58 | | - pointer-events: none; |
59 | | -} |
60 | | - |
61 | | -body::after { |
62 | | - content: ""; |
63 | | - position: fixed; |
64 | | - inset: 0; |
65 | | - z-index: -1; |
66 | | - opacity: 0.035; |
67 | | - pointer-events: none; |
68 | | - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.6 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); |
69 | | -} |
70 | | - |
71 | | -/* Selection matches the editorial feel */ |
72 | | -::selection { |
73 | | - background: rgba(232, 195, 102, 0.25); |
74 | | - color: #f5f4ef; |
75 | | -} |
76 | | - |
77 | | -/* Thin, warm scrollbar */ |
78 | | -::-webkit-scrollbar { |
79 | | - width: 10px; |
80 | | - height: 10px; |
81 | | -} |
82 | | -::-webkit-scrollbar-track { |
83 | | - background: transparent; |
84 | | -} |
85 | | -::-webkit-scrollbar-thumb { |
86 | | - background: rgba(245, 244, 239, 0.08); |
87 | | - border-radius: 10px; |
88 | | - border: 2px solid transparent; |
89 | | - background-clip: padding-box; |
90 | | -} |
91 | | -::-webkit-scrollbar-thumb:hover { |
92 | | - background: rgba(245, 244, 239, 0.15); |
93 | | - background-clip: padding-box; |
94 | | - border: 2px solid transparent; |
95 | | -} |
96 | | - |
97 | | -/* Hairline divider utility */ |
98 | | -.hairline { |
99 | | - background-image: linear-gradient( |
100 | | - to right, |
101 | | - transparent, |
102 | | - var(--edge-hairline) 12%, |
103 | | - var(--edge-hairline) 88%, |
104 | | - transparent |
105 | | - ); |
106 | | - height: 1px; |
107 | | -} |
108 | | - |
109 | | -/* Panel — the base card surface. Slightly raised, subtle inner highlight. */ |
110 | | -.panel { |
111 | | - background: |
112 | | - linear-gradient( |
113 | | - 180deg, |
114 | | - rgba(245, 244, 239, 0.015), |
115 | | - transparent 40% |
116 | | - ), |
117 | | - var(--bg-panel); |
118 | | - border: 1px solid var(--edge-hairline); |
119 | | - border-radius: 14px; |
120 | | - box-shadow: |
121 | | - 0 1px 0 rgba(245, 244, 239, 0.03) inset, |
122 | | - 0 20px 60px -20px rgba(0, 0, 0, 0.5); |
123 | | -} |
124 | | - |
125 | | -.panel-accent-go { |
126 | | - border-left: 2px solid rgba(127, 217, 154, 0.7); |
127 | | -} |
128 | | -.panel-accent-stop { |
129 | | - border-left: 2px solid rgba(240, 141, 135, 0.75); |
130 | | -} |
131 | | -.panel-accent-wait { |
132 | | - border-left: 2px solid rgba(232, 195, 102, 0.75); |
133 | | -} |
134 | | -.panel-accent-info { |
135 | | - border-left: 2px solid rgba(140, 180, 216, 0.5); |
136 | | -} |
137 | | - |
138 | | -/* Roman-numeral section marker */ |
139 | | -.numeral { |
140 | | - font-family: var(--font-display); |
141 | | - font-style: italic; |
142 | | - font-weight: 400; |
143 | | - font-size: 1.25rem; |
144 | | - line-height: 1; |
145 | | - color: var(--text-muted); |
146 | | - letter-spacing: 0.01em; |
147 | | -} |
148 | | - |
149 | | -.display-hero { |
150 | | - font-family: var(--font-display); |
151 | | - font-weight: 400; |
152 | | - letter-spacing: -0.02em; |
153 | | - line-height: 0.95; |
154 | | -} |
155 | | - |
156 | | -/* Monospace tag used for SHAs — slight tracking in, subtle uppercase weight */ |
157 | | -.tag-mono { |
158 | | - font-family: var(--font-mono); |
159 | | - font-size: 0.72rem; |
160 | | - letter-spacing: 0.02em; |
161 | | - color: var(--text-secondary); |
162 | | -} |
163 | | - |
164 | | -/* Glow status dots — more refined than solid circles */ |
165 | | -.dot { |
166 | | - position: relative; |
167 | | - display: inline-block; |
168 | | - width: 0.5rem; |
169 | | - height: 0.5rem; |
170 | | - border-radius: 9999px; |
171 | | - box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.02); |
172 | | -} |
173 | | -.dot::after { |
174 | | - content: ""; |
175 | | - position: absolute; |
176 | | - inset: -6px; |
177 | | - border-radius: 9999px; |
178 | | - background: currentColor; |
179 | | - opacity: 0.2; |
180 | | - filter: blur(4px); |
181 | | -} |
182 | | -.dot-go { |
183 | | - background: #7fd99a; |
184 | | - color: #7fd99a; |
185 | | -} |
186 | | -.dot-stop { |
187 | | - background: #f08d87; |
188 | | - color: #f08d87; |
189 | | -} |
190 | | -.dot-wait { |
191 | | - background: #e8c366; |
192 | | - color: #e8c366; |
193 | | -} |
194 | | -.dot-info { |
195 | | - background: #8cb4d8; |
196 | | - color: #8cb4d8; |
197 | | -} |
198 | | -.dot-run { |
199 | | - background: #8cb4d8; |
200 | | - color: #8cb4d8; |
201 | | - animation: pulse-soft 1.6s ease-in-out infinite; |
202 | | -} |
203 | | -.dot-neutral { |
204 | | - background: #3a3a48; |
205 | | - color: #3a3a48; |
206 | | -} |
207 | | -.dot-neutral::after { |
208 | | - display: none; |
209 | | -} |
210 | | - |
211 | | -@keyframes pulse-soft { |
212 | | - 0%, |
213 | | - 100% { |
214 | | - transform: scale(1); |
215 | | - opacity: 1; |
| 1 | +@import "tailwindcss"; |
| 2 | +@import "tw-animate-css"; |
| 3 | +@import "@mcpjam/design-system/tokens.css"; |
| 4 | + |
| 5 | +@source "../../../design-system/src/**/*.tsx"; |
| 6 | + |
| 7 | +@custom-variant dark (&:is(.dark *)); |
| 8 | + |
| 9 | +@theme inline { |
| 10 | + --color-background: var(--background); |
| 11 | + --color-foreground: var(--foreground); |
| 12 | + --color-card: var(--card); |
| 13 | + --color-card-foreground: var(--card-foreground); |
| 14 | + --color-popover: var(--popover); |
| 15 | + --color-popover-foreground: var(--popover-foreground); |
| 16 | + --color-primary: var(--primary); |
| 17 | + --color-primary-foreground: var(--primary-foreground); |
| 18 | + --color-secondary: var(--secondary); |
| 19 | + --color-secondary-foreground: var(--secondary-foreground); |
| 20 | + --color-muted: var(--muted); |
| 21 | + --color-muted-foreground: var(--muted-foreground); |
| 22 | + --color-accent: var(--accent); |
| 23 | + --color-accent-foreground: var(--accent-foreground); |
| 24 | + --color-destructive: var(--destructive); |
| 25 | + --color-destructive-foreground: var(--destructive-foreground); |
| 26 | + --color-border: var(--border); |
| 27 | + --color-input: var(--input); |
| 28 | + --color-ring: var(--ring); |
| 29 | + --color-success: var(--success); |
| 30 | + --color-success-foreground: var(--success-foreground); |
| 31 | + --color-warning: var(--warning); |
| 32 | + --color-warning-foreground: var(--warning-foreground); |
| 33 | + --color-info: var(--info); |
| 34 | + --color-info-foreground: var(--info-foreground); |
| 35 | + --color-pending: var(--pending); |
| 36 | + --color-pending-foreground: var(--pending-foreground); |
| 37 | + --color-overlay: var(--overlay); |
| 38 | + |
| 39 | + --font-sans: var(--font-sans); |
| 40 | + --font-mono: var(--font-mono); |
| 41 | + |
| 42 | + --radius-sm: calc(var(--radius) - 4px); |
| 43 | + --radius-md: calc(var(--radius) - 2px); |
| 44 | + --radius-lg: var(--radius); |
| 45 | + --radius-xl: calc(var(--radius) + 4px); |
| 46 | +} |
| 47 | + |
| 48 | +@layer base { |
| 49 | + * { |
| 50 | + @apply border-border; |
216 | 51 | } |
217 | | - 50% { |
218 | | - transform: scale(0.85); |
219 | | - opacity: 0.55; |
| 52 | + html, |
| 53 | + body { |
| 54 | + min-height: 100%; |
| 55 | + } |
| 56 | + body { |
| 57 | + @apply bg-background text-foreground antialiased; |
220 | 58 | } |
221 | | -} |
222 | | - |
223 | | -/* Focus ring — warm, accessible. The ring inherits whatever radius the |
224 | | - focused element already has; we don't force a shape on it. */ |
225 | | -:focus-visible { |
226 | | - outline: none; |
227 | | - box-shadow: 0 0 0 2px rgba(232, 195, 102, 0.6); |
228 | 59 | } |
0 commit comments