@krizaka/sovkora-design-system 0.0.0-stage → 4.0.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.
- package/CHANGELOG.md +234 -0
- package/LICENSE +202 -0
- package/README.md +82 -2
- package/package.json +112 -3
- package/registry/badge.json +97 -0
- package/registry/button.json +140 -0
- package/registry/chat-showcase.json +113 -0
- package/registry/clip-player.json +120 -0
- package/registry/command-palette.json +116 -0
- package/registry/examples/badge/model-state.tsx +16 -0
- package/registry/examples/button/send.tsx +18 -0
- package/registry/examples/chat-showcase/french.tsx +20 -0
- package/registry/examples/chat-showcase/sovereign-answer.tsx +20 -0
- package/registry/examples/clip-player/tea-pour.tsx +27 -0
- package/registry/examples/command-palette/workspace.tsx +30 -0
- package/registry/examples/icon/engine.tsx +26 -0
- package/registry/examples/icon/in-a-button.tsx +12 -0
- package/registry/examples/run-facts/clip-run.tsx +15 -0
- package/registry/examples/sentinel-mini/sidebar.tsx +11 -0
- package/registry/examples/skeleton/answer-loading.tsx +11 -0
- package/registry/examples/video-result/assistant.tsx +36 -0
- package/registry/examples/video-result/tea-pour.tsx +40 -0
- package/registry/foundations.json +2067 -0
- package/registry/icon.json +109 -0
- package/registry/index.json +242 -0
- package/registry/run-facts.json +75 -0
- package/registry/sentinel-mini.json +81 -0
- package/registry/skeleton.json +116 -0
- package/registry/video-result.json +167 -0
- package/src/components/Badge.tsx +36 -0
- package/src/components/Button.tsx +26 -0
- package/src/components/ChatShowcase.tsx +248 -0
- package/src/components/ClipPlayer.tsx +223 -0
- package/src/components/CommandPalette.tsx +104 -0
- package/src/components/CommandPalette.types.ts +33 -0
- package/src/components/Input.tsx +14 -0
- package/src/components/RunFacts.tsx +36 -0
- package/src/components/SentinelMini.tsx +61 -0
- package/src/components/Skeleton.tsx +50 -0
- package/src/components/VideoResult.tsx +123 -0
- package/src/components/badge.meta.ts +34 -0
- package/src/components/button.meta.ts +35 -0
- package/src/components/chat-showcase.css.ts +19 -0
- package/src/components/chat-showcase.meta.ts +50 -0
- package/src/components/clip-player.meta.ts +48 -0
- package/src/components/command-palette.meta.ts +47 -0
- package/src/components/icon.meta.ts +45 -0
- package/src/components/run-facts.meta.ts +32 -0
- package/src/components/sentinel-mini.meta.ts +39 -0
- package/src/components/skeleton.meta.ts +42 -0
- package/src/components/video-result.meta.ts +53 -0
- package/src/icon.registry.tsx +737 -0
- package/src/icon.tsx +74 -0
- package/src/index.ts +43 -0
- package/src/meta.ts +76 -0
- package/src/theme.css +859 -0
package/src/theme.css
ADDED
|
@@ -0,0 +1,859 @@
|
|
|
1
|
+
/* @krizaka/sovkora-design-system/theme.css — Sovkora Orange, expressed as roles.
|
|
2
|
+
|
|
3
|
+
The app's global stylesheet, two lines:
|
|
4
|
+
@import "tailwindcss";
|
|
5
|
+
@import "@krizaka/sovkora-design-system/theme.css";
|
|
6
|
+
|
|
7
|
+
This file brings the platform layers itself (the @krizaka/tailwind preset: --kz-* tokens, role utilities, the
|
|
8
|
+
dark: variant, motion; and the @krizaka/ui sources), then overrides the values of the --kz-* roles. It holds no
|
|
9
|
+
palette and no variant: a theme is a set of token values, never a set of classes.
|
|
10
|
+
|
|
11
|
+
Theme mechanism — the organisation's:
|
|
12
|
+
dark the default, on :root (and the `.theme-dark` island, which stays dark inside a light page);
|
|
13
|
+
light html.light;
|
|
14
|
+
a named theme html.theme-<name> (electric, custom, cyberpunk, solarized, krizaka) — orthogonal to the mode.
|
|
15
|
+
|
|
16
|
+
The identity is the Sovkora brand theme of @krizaka/tokens (packages/tokens/BRAND.md): orange, taken from the
|
|
17
|
+
Sovkora mark — never re-declared here. Electric Blue, the 2.x identity, stays as the named theme `electric`.
|
|
18
|
+
|
|
19
|
+
Every text / on-accent pair is tested at WCAG AA (4.5:1), the muted text at 3:1 and the focus ring at 3:1, in every
|
|
20
|
+
theme (src/__tests__/theme.test.ts). Product tokens are prefixed --sovkora-*. */
|
|
21
|
+
|
|
22
|
+
@import "@krizaka/tailwind";
|
|
23
|
+
@import "@krizaka/ui/tailwind.css";
|
|
24
|
+
@import "@krizaka/tokens/brands/sovkora.css";
|
|
25
|
+
|
|
26
|
+
/* The design system declares its own sources: @source resolves relative to this file, so every app that imports
|
|
27
|
+
theme.css gets the utilities its components use — from the workspace or from node_modules alike. */
|
|
28
|
+
@source "./";
|
|
29
|
+
|
|
30
|
+
/* ═══════════════════════════════════════════════════
|
|
31
|
+
SOVKORA ORANGE — dark (the default) and light
|
|
32
|
+
═══════════════════════════════════════════════════ */
|
|
33
|
+
|
|
34
|
+
/* The accent family and the section gradient: @krizaka/tokens/brands/sovkora.css (imported above). Dark: orange
|
|
35
|
+
hsl(26 92% 55%) under near-black text (7.4:1), the hover lightens; light: the deep orange #b45309 under white
|
|
36
|
+
(5.1:1). The surfaces, borders and text stay the platform's. Only the product tokens are declared here. */
|
|
37
|
+
:root,
|
|
38
|
+
.theme-dark {
|
|
39
|
+
--sovkora-grid-color: hsl(0 0% 100% / 0.02);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
html.light {
|
|
43
|
+
--sovkora-grid-color: hsl(0 0% 0% / 0.03);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* ═══════════════════════════════════════════════════
|
|
47
|
+
NAMED THEMES — html.theme-<name>
|
|
48
|
+
A named theme sets every colour role, so it reads the same in either mode. The class also works as an island:
|
|
49
|
+
an element carrying `.theme-<name>` takes that theme inside any page (a theme picker's previews), as
|
|
50
|
+
`.theme-dark` does for dark. `html.theme-<name>` stays first: it must outweigh `html.light` on the root.
|
|
51
|
+
═══════════════════════════════════════════════════ */
|
|
52
|
+
|
|
53
|
+
/* Electric Blue — the 2.x identity, kept for the users who chose it. White on hsl(217 92% 60%) reads 3.6:1: the
|
|
54
|
+
accent carries near-black text (5.4:1), the hover lightens (6.6:1). */
|
|
55
|
+
html.theme-electric,
|
|
56
|
+
.theme-electric {
|
|
57
|
+
color-scheme: dark;
|
|
58
|
+
--kz-surface-0: hsl(240 6% 5%);
|
|
59
|
+
--kz-surface-1: hsl(240 5% 9%);
|
|
60
|
+
--kz-surface-2: hsl(240 5% 13%);
|
|
61
|
+
--kz-surface-3: hsl(240 4% 17%);
|
|
62
|
+
--kz-border-subtle: hsl(0 0% 100% / 0.06);
|
|
63
|
+
--kz-border-default: hsl(0 0% 100% / 0.1);
|
|
64
|
+
--kz-border-strong: hsl(0 0% 100% / 0.16);
|
|
65
|
+
--kz-text-primary: hsl(0 0% 96%);
|
|
66
|
+
--kz-text-secondary: hsl(240 4% 64%);
|
|
67
|
+
--kz-text-muted: hsl(240 4% 47%);
|
|
68
|
+
--kz-accent: hsl(217 92% 60%);
|
|
69
|
+
--kz-accent-hover: hsl(217 92% 66%);
|
|
70
|
+
--kz-accent-soft: hsl(217 92% 60% / 0.12);
|
|
71
|
+
--kz-accent-text: hsl(217 92% 68%);
|
|
72
|
+
--kz-accent-2: hsl(217 92% 60%);
|
|
73
|
+
--kz-on-accent: hsl(240 6% 5%);
|
|
74
|
+
--kz-ring: hsl(217 92% 60%);
|
|
75
|
+
--kz-info: hsl(217 92% 60%);
|
|
76
|
+
--kz-brand-gradient-from: hsl(222 45% 10%);
|
|
77
|
+
--kz-brand-gradient-via: hsl(232 24% 7%);
|
|
78
|
+
--kz-brand-gradient-to: hsl(240 6% 5%);
|
|
79
|
+
--sovkora-grid-color: hsl(0 0% 100% / 0.02);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Deep Violet. */
|
|
83
|
+
html.theme-custom,
|
|
84
|
+
.theme-custom {
|
|
85
|
+
color-scheme: dark;
|
|
86
|
+
--kz-surface-0: hsl(270 100% 2%);
|
|
87
|
+
--kz-surface-1: hsl(260 50% 6%);
|
|
88
|
+
--kz-surface-2: hsl(260 30% 10%);
|
|
89
|
+
--kz-surface-3: hsl(260 24% 14%);
|
|
90
|
+
--kz-border-subtle: hsl(0 0% 100% / 0.08);
|
|
91
|
+
--kz-border-default: hsl(0 0% 100% / 0.12);
|
|
92
|
+
--kz-border-strong: hsl(0 0% 100% / 0.18);
|
|
93
|
+
--kz-text-primary: hsl(220 14% 96%);
|
|
94
|
+
--kz-text-secondary: hsl(262 83% 76%);
|
|
95
|
+
--kz-text-muted: hsl(240 5% 46%);
|
|
96
|
+
--kz-accent: hsl(271 91% 65%);
|
|
97
|
+
--kz-accent-hover: hsl(271 91% 72%);
|
|
98
|
+
--kz-accent-soft: hsl(271 91% 65% / 0.12);
|
|
99
|
+
--kz-on-accent: hsl(240 6% 5%);
|
|
100
|
+
--kz-accent-text: hsl(271 91% 72%);
|
|
101
|
+
--kz-accent-2: var(--kz-accent);
|
|
102
|
+
--kz-ring: var(--kz-accent);
|
|
103
|
+
--kz-info: var(--kz-accent);
|
|
104
|
+
--kz-brand-gradient-from: var(--kz-surface-1);
|
|
105
|
+
--kz-brand-gradient-via: var(--kz-surface-0);
|
|
106
|
+
--kz-brand-gradient-to: var(--kz-surface-0);
|
|
107
|
+
--sovkora-grid-color: hsl(0 0% 100% / 0.02);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Neon Matrix. */
|
|
111
|
+
html.theme-cyberpunk,
|
|
112
|
+
.theme-cyberpunk {
|
|
113
|
+
color-scheme: dark;
|
|
114
|
+
--kz-surface-0: hsl(272 100% 2%);
|
|
115
|
+
--kz-surface-1: hsl(275 63% 8%);
|
|
116
|
+
--kz-surface-2: hsl(272 55% 11%);
|
|
117
|
+
--kz-surface-3: hsl(272 48% 15%);
|
|
118
|
+
--kz-border-subtle: hsl(163 100% 50% / 0.12);
|
|
119
|
+
--kz-border-default: hsl(296 100% 50% / 0.25);
|
|
120
|
+
--kz-border-strong: hsl(163 100% 50% / 0.35);
|
|
121
|
+
--kz-text-primary: hsl(163 100% 50%);
|
|
122
|
+
--kz-text-secondary: hsl(163 100% 75%);
|
|
123
|
+
--kz-text-muted: hsl(163 33% 36%);
|
|
124
|
+
--kz-accent: hsl(296 100% 50%);
|
|
125
|
+
--kz-accent-hover: hsl(296 100% 60%);
|
|
126
|
+
--kz-accent-soft: hsl(296 100% 50% / 0.12);
|
|
127
|
+
--kz-on-accent: hsl(240 6% 5%);
|
|
128
|
+
--kz-accent-text: hsl(296 100% 66%);
|
|
129
|
+
--kz-accent-2: var(--kz-accent);
|
|
130
|
+
--kz-ring: var(--kz-accent);
|
|
131
|
+
--kz-info: var(--kz-accent);
|
|
132
|
+
--kz-brand-gradient-from: var(--kz-surface-1);
|
|
133
|
+
--kz-brand-gradient-via: var(--kz-surface-0);
|
|
134
|
+
--kz-brand-gradient-to: var(--kz-surface-0);
|
|
135
|
+
--sovkora-grid-color: hsl(163 100% 50% / 0.03);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* Warm Parchment — a light theme. The text is darker than the 1.x values (3.7:1 → 6.8:1) to read at AA. */
|
|
139
|
+
html.theme-solarized,
|
|
140
|
+
.theme-solarized {
|
|
141
|
+
color-scheme: light;
|
|
142
|
+
--kz-surface-0: hsl(44 87% 94%);
|
|
143
|
+
--kz-surface-1: hsl(44 52% 87%);
|
|
144
|
+
--kz-surface-2: hsl(44 38% 84%);
|
|
145
|
+
--kz-surface-3: hsl(44 30% 81%);
|
|
146
|
+
--kz-border-subtle: hsl(0 0% 0% / 0.06);
|
|
147
|
+
--kz-border-default: hsl(186 5% 60% / 0.35);
|
|
148
|
+
--kz-border-strong: hsl(186 5% 60% / 0.5);
|
|
149
|
+
--kz-text-primary: hsl(192 14% 25%);
|
|
150
|
+
--kz-text-secondary: hsl(192 14% 32%);
|
|
151
|
+
--kz-text-muted: hsl(186 5% 42%);
|
|
152
|
+
--kz-accent: hsl(205 71% 49%);
|
|
153
|
+
--kz-accent-hover: hsl(205 71% 55%);
|
|
154
|
+
--kz-accent-soft: hsl(205 71% 49% / 0.12);
|
|
155
|
+
--kz-on-accent: hsl(240 6% 5%);
|
|
156
|
+
--kz-accent-text: hsl(205 80% 32%);
|
|
157
|
+
--kz-accent-2: var(--kz-accent);
|
|
158
|
+
--kz-ring: var(--kz-accent);
|
|
159
|
+
--kz-info: var(--kz-accent);
|
|
160
|
+
--kz-brand-gradient-from: var(--kz-surface-1);
|
|
161
|
+
--kz-brand-gradient-via: var(--kz-surface-0);
|
|
162
|
+
--kz-brand-gradient-to: var(--kz-surface-0);
|
|
163
|
+
--sovkora-grid-color: hsl(0 0% 0% / 0.03);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Deep Obsidian Razor: pitch-black surfaces, zero-radius edges, frosted ice-blue outlines, cold-steel accent. */
|
|
167
|
+
html.theme-krizaka,
|
|
168
|
+
.theme-krizaka {
|
|
169
|
+
color-scheme: dark;
|
|
170
|
+
--kz-surface-0: hsl(240 18% 4%);
|
|
171
|
+
--kz-surface-1: hsl(240 14% 7%);
|
|
172
|
+
--kz-surface-2: hsl(240 10% 11%);
|
|
173
|
+
--kz-surface-3: hsl(240 8% 15%);
|
|
174
|
+
--kz-border-subtle: hsl(210 40% 80% / 0.06);
|
|
175
|
+
--kz-border-default: hsl(210 40% 80% / 0.1);
|
|
176
|
+
--kz-border-strong: hsl(210 40% 80% / 0.18);
|
|
177
|
+
--kz-text-primary: hsl(210 20% 92%);
|
|
178
|
+
--kz-text-secondary: hsl(210 12% 60%);
|
|
179
|
+
--kz-text-muted: hsl(210 8% 46%);
|
|
180
|
+
--kz-accent: hsl(210 60% 55%);
|
|
181
|
+
--kz-accent-hover: hsl(210 60% 62%);
|
|
182
|
+
--kz-accent-soft: hsl(210 60% 55% / 0.12);
|
|
183
|
+
--kz-on-accent: hsl(240 6% 5%);
|
|
184
|
+
--kz-radius-sm: 0px;
|
|
185
|
+
--kz-radius-md: 0px;
|
|
186
|
+
--kz-radius-lg: 0px;
|
|
187
|
+
--kz-radius-xl: 0px;
|
|
188
|
+
--kz-shadow-sm: 0 1px 3px hsl(210 40% 10% / 0.3), 0 1px 2px hsl(210 40% 10% / 0.15);
|
|
189
|
+
--kz-shadow-md: 0 4px 12px hsl(210 40% 10% / 0.25), 0 2px 4px hsl(210 40% 10% / 0.1);
|
|
190
|
+
--kz-shadow-lg: 0 8px 24px hsl(210 40% 10% / 0.3), 0 4px 8px hsl(210 40% 10% / 0.12);
|
|
191
|
+
--kz-accent-text: hsl(210 60% 66%);
|
|
192
|
+
--kz-accent-2: var(--kz-accent);
|
|
193
|
+
--kz-ring: var(--kz-accent);
|
|
194
|
+
--kz-info: var(--kz-accent);
|
|
195
|
+
--kz-brand-gradient-from: var(--kz-surface-1);
|
|
196
|
+
--kz-brand-gradient-via: var(--kz-surface-0);
|
|
197
|
+
--kz-brand-gradient-to: var(--kz-surface-0);
|
|
198
|
+
--sovkora-grid-color: hsl(210 40% 80% / 0.02);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* ═══════════════════════════════════════════════════
|
|
202
|
+
INVARIANTS & PRODUCT TOKENS
|
|
203
|
+
═══════════════════════════════════════════════════ */
|
|
204
|
+
|
|
205
|
+
:root {
|
|
206
|
+
/* Fonts: the faces the apps load with next/font (--font-krizaka-*, --font-inter…), with fallbacks. */
|
|
207
|
+
--kz-font-sans: var(--font-inter, Inter), system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
208
|
+
--kz-font-display: var(--font-krizaka-display, var(--font-outfit, Outfit)), var(--font-inter, Inter), sans-serif;
|
|
209
|
+
--kz-font-mono:
|
|
210
|
+
var(--font-krizaka-mono, var(--font-jetbrains-mono, "JetBrains Mono")), "SF Mono", ui-monospace, monospace;
|
|
211
|
+
|
|
212
|
+
/* Product tokens: prefixed, never generic. */
|
|
213
|
+
--sovkora-accent-glow: 0 0 0 3px color-mix(in oklab, var(--kz-accent) 12%, transparent);
|
|
214
|
+
--sovkora-space-card: clamp(1rem, 0.8rem + 0.8vw, 1.5rem);
|
|
215
|
+
--sovkora-space-section: clamp(1.5rem, 1.2rem + 1.2vw, 2.5rem);
|
|
216
|
+
|
|
217
|
+
/* The Sovkora fluid type scale: it replaces Tailwind's text-xs … text-2xl sizes (text-display is Sovkora's). */
|
|
218
|
+
--text-xs: clamp(0.6875rem, 0.65rem + 0.15vw, 0.75rem);
|
|
219
|
+
--text-sm: clamp(0.8125rem, 0.77rem + 0.18vw, 0.875rem);
|
|
220
|
+
--text-base: clamp(0.875rem, 0.83rem + 0.2vw, 1rem);
|
|
221
|
+
--text-lg: clamp(1.125rem, 1.05rem + 0.3vw, 1.25rem);
|
|
222
|
+
--text-xl: clamp(1.5rem, 1.3rem + 0.8vw, 2rem);
|
|
223
|
+
--text-2xl: clamp(1.75rem, 1.5rem + 1vw, 2.5rem);
|
|
224
|
+
--text-display: clamp(2rem, 1.6rem + 1.6vw, 3rem);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* ═══════════════════════════════════════════════════
|
|
228
|
+
BASE — Typography & Body
|
|
229
|
+
═══════════════════════════════════════════════════ */
|
|
230
|
+
|
|
231
|
+
body {
|
|
232
|
+
background: var(--kz-surface-0);
|
|
233
|
+
color: var(--kz-text-primary);
|
|
234
|
+
font-family: var(--kz-font-sans);
|
|
235
|
+
font-size: var(--text-base);
|
|
236
|
+
font-feature-settings: "cv02", "cv03", "cv04", "cv11";
|
|
237
|
+
letter-spacing: -0.018em;
|
|
238
|
+
overflow-x: hidden;
|
|
239
|
+
-webkit-font-smoothing: antialiased;
|
|
240
|
+
-moz-osx-font-smoothing: grayscale;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/* Display headings use Krizaka Display → Outfit fallback */
|
|
244
|
+
h1,
|
|
245
|
+
h2,
|
|
246
|
+
.text-display {
|
|
247
|
+
font-family: var(--kz-font-display);
|
|
248
|
+
font-weight: 700;
|
|
249
|
+
letter-spacing: -0.03em;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* Mono contexts: data tables, console nodes, prompt streams */
|
|
253
|
+
code,
|
|
254
|
+
pre,
|
|
255
|
+
.font-mono {
|
|
256
|
+
font-family: var(--kz-font-mono) !important;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* ═══════════════════════════════════════════════════
|
|
260
|
+
SCROLLBARS — Ultra-thin, themed (4px)
|
|
261
|
+
═══════════════════════════════════════════════════ */
|
|
262
|
+
|
|
263
|
+
::-webkit-scrollbar {
|
|
264
|
+
width: 4px;
|
|
265
|
+
height: 4px;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
::-webkit-scrollbar-track {
|
|
269
|
+
background: transparent;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
::-webkit-scrollbar-thumb {
|
|
273
|
+
background: var(--kz-text-muted);
|
|
274
|
+
border-radius: 9999px;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
::-webkit-scrollbar-thumb:hover {
|
|
278
|
+
background: var(--kz-text-secondary);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* ═══════════════════════════════════════════════════
|
|
282
|
+
KEYFRAMES — Motion System (purposeful only)
|
|
283
|
+
═══════════════════════════════════════════════════ */
|
|
284
|
+
|
|
285
|
+
@keyframes shimmer {
|
|
286
|
+
0% {
|
|
287
|
+
background-position: -200% 0;
|
|
288
|
+
}
|
|
289
|
+
100% {
|
|
290
|
+
background-position: 200% 0;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
@keyframes shake {
|
|
295
|
+
0%,
|
|
296
|
+
100% {
|
|
297
|
+
transform: translateX(0);
|
|
298
|
+
}
|
|
299
|
+
20% {
|
|
300
|
+
transform: translateX(-6px);
|
|
301
|
+
}
|
|
302
|
+
40% {
|
|
303
|
+
transform: translateX(6px);
|
|
304
|
+
}
|
|
305
|
+
60% {
|
|
306
|
+
transform: translateX(-4px);
|
|
307
|
+
}
|
|
308
|
+
80% {
|
|
309
|
+
transform: translateX(4px);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
@keyframes spin {
|
|
314
|
+
from {
|
|
315
|
+
transform: rotate(0deg);
|
|
316
|
+
}
|
|
317
|
+
to {
|
|
318
|
+
transform: rotate(360deg);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
@keyframes toast-in {
|
|
323
|
+
from {
|
|
324
|
+
opacity: 0;
|
|
325
|
+
transform: translateY(12px) scale(0.95);
|
|
326
|
+
}
|
|
327
|
+
to {
|
|
328
|
+
opacity: 1;
|
|
329
|
+
transform: translateY(0) scale(1);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
@keyframes toast-out {
|
|
334
|
+
from {
|
|
335
|
+
opacity: 1;
|
|
336
|
+
transform: translateY(0) scale(1);
|
|
337
|
+
}
|
|
338
|
+
to {
|
|
339
|
+
opacity: 0;
|
|
340
|
+
transform: translateY(-8px) scale(0.95);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
@keyframes gradient-mesh {
|
|
345
|
+
0% {
|
|
346
|
+
background-position: 0% 50%;
|
|
347
|
+
}
|
|
348
|
+
50% {
|
|
349
|
+
background-position: 100% 50%;
|
|
350
|
+
}
|
|
351
|
+
100% {
|
|
352
|
+
background-position: 0% 50%;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
@keyframes fade-in {
|
|
357
|
+
from {
|
|
358
|
+
opacity: 0;
|
|
359
|
+
}
|
|
360
|
+
to {
|
|
361
|
+
opacity: 1;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
@keyframes fade-up {
|
|
366
|
+
from {
|
|
367
|
+
opacity: 0;
|
|
368
|
+
transform: translateY(8px);
|
|
369
|
+
}
|
|
370
|
+
to {
|
|
371
|
+
opacity: 1;
|
|
372
|
+
transform: translateY(0);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
@keyframes slide-up {
|
|
377
|
+
from {
|
|
378
|
+
opacity: 0;
|
|
379
|
+
transform: translateY(12px);
|
|
380
|
+
}
|
|
381
|
+
to {
|
|
382
|
+
opacity: 1;
|
|
383
|
+
transform: translateY(0);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
@keyframes counter-up {
|
|
388
|
+
from {
|
|
389
|
+
opacity: 0;
|
|
390
|
+
transform: translateY(10px);
|
|
391
|
+
}
|
|
392
|
+
to {
|
|
393
|
+
opacity: 1;
|
|
394
|
+
transform: translateY(0);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
@keyframes breathing-glow {
|
|
399
|
+
0%,
|
|
400
|
+
100% {
|
|
401
|
+
box-shadow:
|
|
402
|
+
0 0 0 0 transparent,
|
|
403
|
+
0 0 8px transparent;
|
|
404
|
+
}
|
|
405
|
+
50% {
|
|
406
|
+
box-shadow:
|
|
407
|
+
0 0 0 1px color-mix(in oklab, var(--kz-accent) 8%, transparent),
|
|
408
|
+
0 0 16px color-mix(in oklab, var(--kz-accent) 6%, transparent);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
@keyframes pulse-ring {
|
|
413
|
+
0% {
|
|
414
|
+
transform: scale(0.95);
|
|
415
|
+
opacity: 0.6;
|
|
416
|
+
}
|
|
417
|
+
50% {
|
|
418
|
+
transform: scale(1);
|
|
419
|
+
opacity: 0.3;
|
|
420
|
+
}
|
|
421
|
+
100% {
|
|
422
|
+
transform: scale(0.95);
|
|
423
|
+
opacity: 0.6;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
@keyframes text-reveal {
|
|
428
|
+
from {
|
|
429
|
+
clip-path: inset(0 0 100% 0);
|
|
430
|
+
transform: translateY(30px);
|
|
431
|
+
opacity: 0;
|
|
432
|
+
}
|
|
433
|
+
to {
|
|
434
|
+
clip-path: inset(0 0 0 0);
|
|
435
|
+
transform: translateY(0);
|
|
436
|
+
opacity: 1;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
@keyframes blur-slide-up {
|
|
441
|
+
from {
|
|
442
|
+
opacity: 0;
|
|
443
|
+
transform: translateY(16px);
|
|
444
|
+
filter: blur(8px);
|
|
445
|
+
}
|
|
446
|
+
to {
|
|
447
|
+
opacity: 1;
|
|
448
|
+
transform: translateY(0);
|
|
449
|
+
filter: blur(0);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
@keyframes typewriter-blink {
|
|
454
|
+
0%,
|
|
455
|
+
100% {
|
|
456
|
+
opacity: 1;
|
|
457
|
+
}
|
|
458
|
+
50% {
|
|
459
|
+
opacity: 0;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
@keyframes typewriter-reveal {
|
|
464
|
+
from {
|
|
465
|
+
max-width: 0;
|
|
466
|
+
}
|
|
467
|
+
to {
|
|
468
|
+
max-width: 100%;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/* ═══════════════════════════════════════════════════
|
|
473
|
+
KRIZAKA LAYOUT — Icon Rail & Input Dock
|
|
474
|
+
─────────────────────────────────────────────────
|
|
475
|
+
.krizaka-navbar: 56px icon-only rail with frosted
|
|
476
|
+
glass backdrop and bottom-anchored user avatar.
|
|
477
|
+
.typewriter-cursor: blinking caret for greeting.
|
|
478
|
+
═══════════════════════════════════════════════════ */
|
|
479
|
+
|
|
480
|
+
.krizaka-navbar {
|
|
481
|
+
width: 3.5rem; /* 56px */
|
|
482
|
+
background: color-mix(in srgb, var(--kz-surface-1) 85%, transparent);
|
|
483
|
+
backdrop-filter: blur(16px) saturate(180%);
|
|
484
|
+
-webkit-backdrop-filter: blur(16px) saturate(180%);
|
|
485
|
+
border-right: 1px solid var(--kz-border-subtle);
|
|
486
|
+
display: flex;
|
|
487
|
+
flex-direction: column;
|
|
488
|
+
align-items: center;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
.krizaka-avatar-anchor {
|
|
492
|
+
position: absolute;
|
|
493
|
+
bottom: 1rem;
|
|
494
|
+
left: 50%;
|
|
495
|
+
transform: translateX(-50%);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.typewriter-cursor::after {
|
|
499
|
+
content: "▎";
|
|
500
|
+
display: inline-block;
|
|
501
|
+
color: var(--kz-accent);
|
|
502
|
+
animation: typewriter-blink 0.8s step-end infinite;
|
|
503
|
+
margin-left: 1px;
|
|
504
|
+
font-weight: 300;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/* ═══════════════════════════════════════════════════
|
|
508
|
+
SURFACE CARDS — Glassmorphic Depth
|
|
509
|
+
Deep obsidian translucent containers with
|
|
510
|
+
backdrop-filter blur + saturate. Razor-thin
|
|
511
|
+
gradient edge borders (0.5px visual via pseudo).
|
|
512
|
+
═══════════════════════════════════════════════════ */
|
|
513
|
+
|
|
514
|
+
.glass-panel {
|
|
515
|
+
background: color-mix(in srgb, var(--kz-surface-1) 82%, transparent);
|
|
516
|
+
backdrop-filter: blur(16px) saturate(180%);
|
|
517
|
+
-webkit-backdrop-filter: blur(16px) saturate(180%);
|
|
518
|
+
border-color: var(--kz-border-subtle);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
.glass-card {
|
|
522
|
+
position: relative;
|
|
523
|
+
background: color-mix(in srgb, var(--kz-surface-1) 80%, transparent) !important;
|
|
524
|
+
backdrop-filter: blur(16px) saturate(180%);
|
|
525
|
+
-webkit-backdrop-filter: blur(16px) saturate(180%);
|
|
526
|
+
border: 1px solid var(--kz-border-subtle) !important;
|
|
527
|
+
box-shadow:
|
|
528
|
+
0 1px 3px hsla(0, 0%, 0%, 0.12),
|
|
529
|
+
inset 0 1px 0 hsla(0, 0%, 100%, 0.02);
|
|
530
|
+
transition:
|
|
531
|
+
border-color 200ms ease,
|
|
532
|
+
box-shadow 300ms ease;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
.glass-card:hover {
|
|
536
|
+
border-color: var(--kz-border-default) !important;
|
|
537
|
+
box-shadow:
|
|
538
|
+
0 1px 3px hsla(0, 0%, 0%, 0.12),
|
|
539
|
+
0 8px 24px hsla(0, 0%, 0%, 0.06),
|
|
540
|
+
inset 0 1px 0 hsla(0, 0%, 100%, 0.03);
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/* Razor-thin gradient edge — 0.5px visual via pseudo-element */
|
|
544
|
+
.glass-card::before {
|
|
545
|
+
content: "";
|
|
546
|
+
position: absolute;
|
|
547
|
+
inset: 0;
|
|
548
|
+
border-radius: inherit;
|
|
549
|
+
padding: 0.5px;
|
|
550
|
+
background: linear-gradient(
|
|
551
|
+
135deg,
|
|
552
|
+
hsla(0, 0%, 100%, 0.08) 0%,
|
|
553
|
+
transparent 40%,
|
|
554
|
+
transparent 60%,
|
|
555
|
+
hsla(0, 0%, 100%, 0.04) 100%
|
|
556
|
+
);
|
|
557
|
+
mask:
|
|
558
|
+
linear-gradient(#fff 0 0) content-box,
|
|
559
|
+
linear-gradient(#fff 0 0);
|
|
560
|
+
mask-composite: exclude;
|
|
561
|
+
-webkit-mask-composite: xor;
|
|
562
|
+
pointer-events: none;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
/* Active card — breathing glow for SIM-DAG telemetry */
|
|
566
|
+
.glass-card-active {
|
|
567
|
+
animation: breathing-glow 3s ease-in-out infinite;
|
|
568
|
+
will-change: box-shadow;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/* ═══════════════════════════════════════════════════
|
|
572
|
+
UTILITY CLASSES — Command HUD Micro-interactions
|
|
573
|
+
═══════════════════════════════════════════════════ */
|
|
574
|
+
|
|
575
|
+
.premium-transition {
|
|
576
|
+
transition: all 200ms ease;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
.hover-lift {
|
|
580
|
+
transition:
|
|
581
|
+
transform 200ms ease,
|
|
582
|
+
box-shadow 200ms ease;
|
|
583
|
+
}
|
|
584
|
+
.hover-lift:hover {
|
|
585
|
+
transform: translateY(-1px);
|
|
586
|
+
box-shadow: 0 6px 20px hsla(0, 0%, 0%, 0.1);
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/* Ambient grid background */
|
|
590
|
+
.ambient-grid {
|
|
591
|
+
background-image:
|
|
592
|
+
linear-gradient(var(--sovkora-grid-color) 1px, transparent 1px),
|
|
593
|
+
linear-gradient(90deg, var(--sovkora-grid-color) 1px, transparent 1px);
|
|
594
|
+
background-size: 24px 24px;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
/* Command HUD typography — ultra-sharp tracking */
|
|
598
|
+
.hud-title {
|
|
599
|
+
font-weight: 700;
|
|
600
|
+
letter-spacing: -0.035em;
|
|
601
|
+
line-height: 1.1;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.hud-label {
|
|
605
|
+
font-size: 11px;
|
|
606
|
+
font-weight: 600;
|
|
607
|
+
letter-spacing: 0.06em;
|
|
608
|
+
text-transform: uppercase;
|
|
609
|
+
color: var(--kz-text-muted);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
.hud-value {
|
|
613
|
+
font-family: var(--kz-font-mono);
|
|
614
|
+
font-size: 13px;
|
|
615
|
+
font-weight: 500;
|
|
616
|
+
letter-spacing: -0.01em;
|
|
617
|
+
color: var(--kz-text-primary);
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
/* Stagger children animations — restrained */
|
|
621
|
+
.stagger-children > * {
|
|
622
|
+
animation: fade-up 300ms ease both;
|
|
623
|
+
}
|
|
624
|
+
.stagger-children > *:nth-child(1) {
|
|
625
|
+
animation-delay: 0ms;
|
|
626
|
+
}
|
|
627
|
+
.stagger-children > *:nth-child(2) {
|
|
628
|
+
animation-delay: 50ms;
|
|
629
|
+
}
|
|
630
|
+
.stagger-children > *:nth-child(3) {
|
|
631
|
+
animation-delay: 100ms;
|
|
632
|
+
}
|
|
633
|
+
.stagger-children > *:nth-child(4) {
|
|
634
|
+
animation-delay: 150ms;
|
|
635
|
+
}
|
|
636
|
+
.stagger-children > *:nth-child(5) {
|
|
637
|
+
animation-delay: 200ms;
|
|
638
|
+
}
|
|
639
|
+
.stagger-children > *:nth-child(6) {
|
|
640
|
+
animation-delay: 250ms;
|
|
641
|
+
}
|
|
642
|
+
.stagger-children > *:nth-child(7) {
|
|
643
|
+
animation-delay: 300ms;
|
|
644
|
+
}
|
|
645
|
+
.stagger-children > *:nth-child(8) {
|
|
646
|
+
animation-delay: 350ms;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
/* ═══════════════════════════════════════════════════
|
|
650
|
+
COMPONENT — Theme Card (rotating gradient border)
|
|
651
|
+
═══════════════════════════════════════════════════ */
|
|
652
|
+
|
|
653
|
+
/* prettier-ignore */
|
|
654
|
+
@keyframes gradient-rotate {
|
|
655
|
+
from { --gradient-angle: 0deg; }
|
|
656
|
+
to { --gradient-angle: 360deg; }
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
@keyframes select-pulse {
|
|
660
|
+
0% {
|
|
661
|
+
transform: scale(1);
|
|
662
|
+
}
|
|
663
|
+
40% {
|
|
664
|
+
transform: scale(0.97);
|
|
665
|
+
}
|
|
666
|
+
70% {
|
|
667
|
+
transform: scale(1.01);
|
|
668
|
+
}
|
|
669
|
+
100% {
|
|
670
|
+
transform: scale(1);
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
@keyframes check-pop {
|
|
675
|
+
0% {
|
|
676
|
+
transform: scale(0) rotate(-45deg);
|
|
677
|
+
opacity: 0;
|
|
678
|
+
}
|
|
679
|
+
60% {
|
|
680
|
+
transform: scale(1.2) rotate(0deg);
|
|
681
|
+
opacity: 1;
|
|
682
|
+
}
|
|
683
|
+
100% {
|
|
684
|
+
transform: scale(1) rotate(0deg);
|
|
685
|
+
opacity: 1;
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
@keyframes status-slide {
|
|
690
|
+
from {
|
|
691
|
+
opacity: 0;
|
|
692
|
+
transform: translateY(4px);
|
|
693
|
+
}
|
|
694
|
+
to {
|
|
695
|
+
opacity: 1;
|
|
696
|
+
transform: translateY(0);
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
@property --gradient-angle {
|
|
701
|
+
syntax: "<angle>";
|
|
702
|
+
initial-value: 0deg;
|
|
703
|
+
inherits: false;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
.theme-card-active::before {
|
|
707
|
+
content: "";
|
|
708
|
+
position: absolute;
|
|
709
|
+
inset: -1px;
|
|
710
|
+
border-radius: inherit;
|
|
711
|
+
padding: 1.5px;
|
|
712
|
+
background: conic-gradient(
|
|
713
|
+
from var(--gradient-angle, 0deg),
|
|
714
|
+
var(--kz-accent),
|
|
715
|
+
transparent 30%,
|
|
716
|
+
transparent 70%,
|
|
717
|
+
var(--kz-accent)
|
|
718
|
+
);
|
|
719
|
+
mask:
|
|
720
|
+
linear-gradient(#fff 0 0) content-box,
|
|
721
|
+
linear-gradient(#fff 0 0);
|
|
722
|
+
mask-composite: exclude;
|
|
723
|
+
-webkit-mask-composite: xor;
|
|
724
|
+
pointer-events: none;
|
|
725
|
+
animation: gradient-rotate 3s linear infinite;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
.theme-card-pulse {
|
|
729
|
+
animation: select-pulse 300ms ease-out;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
.theme-check-pop {
|
|
733
|
+
animation: check-pop 350ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
.theme-status-slide {
|
|
737
|
+
animation: status-slide 250ms ease-out both;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/* ═══════════════════════════════════════════════════
|
|
741
|
+
COMPONENT — Input focus accent ring
|
|
742
|
+
═══════════════════════════════════════════════════ */
|
|
743
|
+
|
|
744
|
+
input:focus,
|
|
745
|
+
textarea:focus {
|
|
746
|
+
box-shadow: var(--sovkora-accent-glow) !important;
|
|
747
|
+
border-color: var(--kz-accent) !important;
|
|
748
|
+
outline: none;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
/* ═══════════════════════════════════════════════════
|
|
752
|
+
COMPONENT — Status dot (active/processing)
|
|
753
|
+
═══════════════════════════════════════════════════ */
|
|
754
|
+
|
|
755
|
+
.status-dot {
|
|
756
|
+
position: relative;
|
|
757
|
+
width: 8px;
|
|
758
|
+
height: 8px;
|
|
759
|
+
border-radius: 9999px;
|
|
760
|
+
background: currentColor;
|
|
761
|
+
}
|
|
762
|
+
.status-dot::before {
|
|
763
|
+
content: "";
|
|
764
|
+
position: absolute;
|
|
765
|
+
inset: -2px;
|
|
766
|
+
border-radius: inherit;
|
|
767
|
+
background: currentColor;
|
|
768
|
+
opacity: 0.3;
|
|
769
|
+
animation: fade-in 1s ease-in-out infinite alternate;
|
|
770
|
+
pointer-events: none;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
/* ═══════════════════════════════════════════════════
|
|
774
|
+
COMPONENTS — Skeleton, Toast, Spinner
|
|
775
|
+
═══════════════════════════════════════════════════ */
|
|
776
|
+
|
|
777
|
+
.skeleton {
|
|
778
|
+
background: linear-gradient(90deg, var(--kz-surface-2) 25%, var(--kz-surface-3) 37%, var(--kz-surface-2) 63%);
|
|
779
|
+
background-size: 200% 100%;
|
|
780
|
+
animation: shimmer 1.8s ease-in-out infinite;
|
|
781
|
+
border-radius: var(--kz-radius-sm);
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
.skeleton-text {
|
|
785
|
+
height: 0.875rem;
|
|
786
|
+
border-radius: 4px;
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
.skeleton-circle {
|
|
790
|
+
border-radius: var(--kz-radius-full);
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
.toast-enter {
|
|
794
|
+
animation: toast-in 300ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
.toast-exit {
|
|
798
|
+
animation: toast-out 200ms ease-in forwards;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
.animate-shake {
|
|
802
|
+
animation: shake 400ms ease-in-out;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
.animate-spin-slow {
|
|
806
|
+
animation: spin 800ms linear infinite;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
/* Gradient mesh for login hero background */
|
|
810
|
+
.gradient-mesh {
|
|
811
|
+
background: linear-gradient(
|
|
812
|
+
-45deg,
|
|
813
|
+
var(--kz-surface-1),
|
|
814
|
+
color-mix(in srgb, var(--kz-accent-soft) 40%, var(--kz-surface-1)),
|
|
815
|
+
var(--kz-surface-1),
|
|
816
|
+
color-mix(in srgb, var(--kz-accent-soft) 30%, var(--kz-surface-1))
|
|
817
|
+
);
|
|
818
|
+
background-size: 400% 400%;
|
|
819
|
+
animation: gradient-mesh 12s ease infinite;
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/* Fluid text utility classes */
|
|
823
|
+
.fluid-xs {
|
|
824
|
+
font-size: var(--text-xs);
|
|
825
|
+
}
|
|
826
|
+
.fluid-sm {
|
|
827
|
+
font-size: var(--text-sm);
|
|
828
|
+
}
|
|
829
|
+
.fluid-base {
|
|
830
|
+
font-size: var(--text-base);
|
|
831
|
+
}
|
|
832
|
+
.fluid-lg {
|
|
833
|
+
font-size: var(--text-lg);
|
|
834
|
+
}
|
|
835
|
+
.fluid-xl {
|
|
836
|
+
font-size: var(--text-xl);
|
|
837
|
+
}
|
|
838
|
+
.fluid-2xl {
|
|
839
|
+
font-size: var(--text-2xl);
|
|
840
|
+
}
|
|
841
|
+
.fluid-display {
|
|
842
|
+
font-size: var(--text-display);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
/* ═══════════════════════════════════════════════════
|
|
846
|
+
REDUCED MOTION — the theme's own idle and entrance motion stops
|
|
847
|
+
═══════════════════════════════════════════════════ */
|
|
848
|
+
|
|
849
|
+
@media (prefers-reduced-motion: reduce) {
|
|
850
|
+
.glass-card-active,
|
|
851
|
+
.stagger-children > *,
|
|
852
|
+
.gradient-mesh,
|
|
853
|
+
.skeleton,
|
|
854
|
+
.typewriter-cursor::after,
|
|
855
|
+
.theme-card-active::before,
|
|
856
|
+
.status-dot::before {
|
|
857
|
+
animation: none;
|
|
858
|
+
}
|
|
859
|
+
}
|