-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy paththeme.css
More file actions
159 lines (141 loc) · 3.54 KB
/
Copy paththeme.css
File metadata and controls
159 lines (141 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/* AI-surface theme for Materia. Neutral palette borrowed from Materia's own
chrome (dark teal-black) so the assistant reads as native Materia; the brand
accent stays Slash yellow. Token names are stable; the accent is overridden
at runtime from settings. */
@font-face {
font-family: 'Grotesk';
src: url('fonts/space-grotesk-500.woff2') format('woff2');
font-weight: 500;
font-display: swap;
}
@font-face {
font-family: 'Grotesk';
src: url('fonts/space-grotesk-700.woff2') format('woff2');
font-weight: 700;
font-display: swap;
}
:root {
/* Neutral dark grey (leaning black), no color tint, so the AI surfaces match
the rest of the browser chrome. */
--titlebar: #0a0a0c;
--paper: #0c0c0e;
--raised: #1c1c1f;
--raised-2: #26262a;
--field: #1a1a1d;
--ink: #e8e8ec;
--muted: #9a9aa3;
--faint: #63636b;
--border: rgba(255, 255, 255, 0.08);
--border-strong: rgba(255, 255, 255, 0.15);
/* Slash yellow, our brand accent (themeable; overridden at runtime). */
--accent: #f1cb53;
--accent-hover: #e0b63d;
--accent-soft: rgba(241, 203, 83, 0.16);
--on-accent: #08181c;
/* Functional status color for security warnings (not a second brand accent) */
--warn: #e0a23d;
--radius: 8px;
--radius-sm: 6px;
--radius-lg: 10px;
--font-sans: 'Segoe UI', system-ui, -apple-system, Roboto, Arial, sans-serif;
--font-brand: 'Grotesk', 'Segoe UI', system-ui, sans-serif;
--font-mono: 'Cascadia Mono', 'Cascadia Code', 'Consolas', monospace;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
}
body {
font-family: var(--font-sans);
background: var(--paper);
color: var(--ink);
user-select: none;
overflow: hidden;
-webkit-font-smoothing: antialiased;
}
:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
border-radius: 3px;
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
transition-duration: 0.01ms !important;
animation-duration: 0.01ms !important;
}
}
.hidden {
display: none !important;
}
/* Thinking indicator: three bouncing dots while the AI composes a reply. */
.dots {
display: inline-flex;
align-items: center;
gap: 4px;
height: 1em;
vertical-align: middle;
}
.dots span {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--muted);
animation: dot-bounce 1.1s infinite ease-in-out both;
}
.dots span:nth-child(2) {
animation-delay: 0.15s;
}
.dots span:nth-child(3) {
animation-delay: 0.3s;
}
@keyframes dot-bounce {
0%,
70%,
100% {
transform: translateY(0);
opacity: 0.35;
}
35% {
transform: translateY(-5px);
opacity: 1;
}
}
/* Skeleton placeholders: shown while an async list (import sources, the
password vault, extensions) is still loading, replaced in place once the
data arrives. A single sweep of light reads as "working", not "broken".
The global reduced-motion rule above already slows the sweep; the override
below removes it outright so the block sits still as a quiet placeholder. */
.skel {
position: relative;
overflow: hidden;
background: var(--raised-2);
border-radius: var(--radius-sm);
}
.skel::after {
content: '';
position: absolute;
inset: 0;
transform: translateX(-100%);
background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.07) 50%, transparent 100%);
animation: skel-sweep 1.3s ease-in-out infinite;
}
.skel-line {
height: 10px;
}
@keyframes skel-sweep {
to {
transform: translateX(100%);
}
}
@media (prefers-reduced-motion: reduce) {
.skel::after {
display: none;
}
}