@starlove/orbit 1.0.1
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/.dockerignore +13 -0
- package/Dockerfile +34 -0
- package/README.md +216 -0
- package/SKILL-ORBIT.md +94 -0
- package/build.mjs +204 -0
- package/dist/full/apple-touch-icon.png +0 -0
- package/dist/full/cursors/live_arrow.cur +0 -0
- package/dist/full/cursors/live_link.cur +0 -0
- package/dist/full/cursors/live_move.cur +0 -0
- package/dist/full/cursors/live_select.cur +0 -0
- package/dist/full/cursors/live_unavail.cur +0 -0
- package/dist/full/favicon-32x32.png +0 -0
- package/dist/full/index.html +314 -0
- package/dist/full/js/app.70be7d06.js +554 -0
- package/dist/full/js/app.70be7d06.js.map +7 -0
- package/dist/full/orbits-favicon.png +0 -0
- package/dist/full/orbits-logo-bg.png +0 -0
- package/dist/full/orbits-logo.png +0 -0
- package/dist/full/styles.c2e3d20a.css +4892 -0
- package/dist/full/version.json +6 -0
- package/docs/AGENT_PROTOCOL.md +379 -0
- package/docs/MCP_SETUP.md +49 -0
- package/docs/mcp-client.example.json +13 -0
- package/package.json +62 -0
- package/pnpm-workspace.yaml +2 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/cursors/live_arrow.cur +0 -0
- package/public/cursors/live_link.cur +0 -0
- package/public/cursors/live_move.cur +0 -0
- package/public/cursors/live_select.cur +0 -0
- package/public/cursors/live_unavail.cur +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/index.html +314 -0
- package/public/js/api.js +35 -0
- package/public/js/app.js +35 -0
- package/public/js/board-menu.js +145 -0
- package/public/js/config.js +19 -0
- package/public/js/create-card.js +153 -0
- package/public/js/dom.js +19 -0
- package/public/js/drawer.js +137 -0
- package/public/js/format.js +108 -0
- package/public/js/kanban.js +475 -0
- package/public/js/local-backend.js +934 -0
- package/public/js/main.js +142 -0
- package/public/js/modal.js +31 -0
- package/public/js/router.js +114 -0
- package/public/js/search.js +53 -0
- package/public/js/settings-tabs.js +7 -0
- package/public/js/settings.js +931 -0
- package/public/js/sse.js +156 -0
- package/public/js/starscape.js +315 -0
- package/public/js/state.js +54 -0
- package/public/js/ticket-detail.js +766 -0
- package/public/js/toast.js +74 -0
- package/public/js/transport.js +22 -0
- package/public/js/unread.js +121 -0
- package/public/orbits-favicon.png +0 -0
- package/public/orbits-logo-bg.png +0 -0
- package/public/orbits-logo.png +0 -0
- package/public/styles.css +4892 -0
- package/src/cli/orbit.js +438 -0
- package/src/core/agent.js +262 -0
- package/src/core/auth.js +49 -0
- package/src/core/backups.js +136 -0
- package/src/core/board.js +112 -0
- package/src/core/boards.js +310 -0
- package/src/core/bootstrap.js +162 -0
- package/src/core/db.js +237 -0
- package/src/core/delete-board.js +53 -0
- package/src/core/events.js +314 -0
- package/src/core/http.js +81 -0
- package/src/core/paths.js +25 -0
- package/src/core/provision-repo-board.js +113 -0
- package/src/core/queries.js +246 -0
- package/src/core/registry.js +207 -0
- package/src/core/relations.js +163 -0
- package/src/core/router.js +414 -0
- package/src/core/search.js +70 -0
- package/src/core/seed.js +226 -0
- package/src/core/snapshots.js +255 -0
- package/src/core/states.js +167 -0
- package/src/core/system-picker.js +93 -0
- package/src/core/tickets.js +344 -0
- package/src/core/util.js +105 -0
- package/src/mcp-server.js +773 -0
- package/src/server.js +48 -0
|
@@ -0,0 +1,4892 @@
|
|
|
1
|
+
html, body {
|
|
2
|
+
cursor: url('cursors/live_arrow.cur'), default;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
input,
|
|
6
|
+
textarea,
|
|
7
|
+
[contenteditable="true"],
|
|
8
|
+
[contenteditable=""] {
|
|
9
|
+
cursor: url('cursors/live_select.cur'), text;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
input[type="button"],
|
|
13
|
+
input[type="submit"],
|
|
14
|
+
input[type="reset"],
|
|
15
|
+
input[type="checkbox"],
|
|
16
|
+
input[type="radio"],
|
|
17
|
+
input[type="range"],
|
|
18
|
+
input[type="color"],
|
|
19
|
+
input[type="file"] {
|
|
20
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:root {
|
|
24
|
+
--paper: #f6f0e5;
|
|
25
|
+
--paper-deep: #eadfcf;
|
|
26
|
+
--ink: #1d2528;
|
|
27
|
+
--muted: #7f8b87;
|
|
28
|
+
--line: rgba(29, 37, 40, 0.14);
|
|
29
|
+
--card: rgba(var(--paper-rgb),0.86);
|
|
30
|
+
--accent: #0f766e;
|
|
31
|
+
--accent-2: #bf6b21;
|
|
32
|
+
--blue: #245c7c;
|
|
33
|
+
--danger: #a63d2f;
|
|
34
|
+
--shadow: 0 18px 60px rgba(var(--warmth-rgb),0.14);
|
|
35
|
+
--radius: 18px;
|
|
36
|
+
/* Surfaces */
|
|
37
|
+
--surface: rgba(var(--paper-rgb),0.86);
|
|
38
|
+
--surface-raised: rgba(var(--paper-rgb),0.98);
|
|
39
|
+
--surface-dim: rgba(var(--paper-rgb),0.58);
|
|
40
|
+
--surface-input: rgba(var(--paper-rgb),0.76);
|
|
41
|
+
--topbar-bg: rgba(246, 240, 229, 0.88);
|
|
42
|
+
--drawer-bg: rgba(var(--paper-rgb),0.97);
|
|
43
|
+
--drawer-head-bg: rgba(246, 240, 229, 0.92);
|
|
44
|
+
/* Buttons */
|
|
45
|
+
--btn-gradient: linear-gradient(135deg, rgba(var(--accent-rgb),0.92), rgba(var(--blue-rgb),0.88));
|
|
46
|
+
--btn-border: rgba(var(--accent-rgb),0.4);
|
|
47
|
+
--btn-hover-shadow: 0 10px 24px rgba(29, 37, 40, 0.18);
|
|
48
|
+
--mark-gradient: linear-gradient(135deg, rgba(var(--accent-rgb),0.95), rgba(var(--blue-rgb),0.95));
|
|
49
|
+
--mark-shadow: 0 6px 16px rgba(var(--accent-rgb),0.22);
|
|
50
|
+
/* Accent interactions */
|
|
51
|
+
--accent-hover: rgba(var(--accent-rgb),0.08);
|
|
52
|
+
--accent-active: rgba(var(--accent-rgb),0.12);
|
|
53
|
+
--accent-border: rgba(var(--accent-rgb),0.35);
|
|
54
|
+
--accent-ring: 0 0 0 4px rgba(var(--accent-rgb),0.12);
|
|
55
|
+
--accent-focus-border: rgba(var(--accent-rgb),0.65);
|
|
56
|
+
/* Subtle backgrounds */
|
|
57
|
+
--subtle-bg: rgba(29, 37, 40, 0.06);
|
|
58
|
+
--subtle-bg-2: rgba(29, 37, 40, 0.02);
|
|
59
|
+
/* Overlay */
|
|
60
|
+
--backdrop-bg: rgba(12, 18, 26, 0.38);
|
|
61
|
+
--flyout-shadow: 0 12px 36px rgba(12, 18, 26, 0.14), 0 4px 12px rgba(12, 18, 26, 0.06);
|
|
62
|
+
/* Orbit board surface */
|
|
63
|
+
--orbit-surface: rgba(29, 37, 40, 0.05);
|
|
64
|
+
--orbit-surface-2: rgba(29, 37, 40, 0.07);
|
|
65
|
+
--orbit-grid: rgba(29, 37, 40, 0.05);
|
|
66
|
+
--orbit-line: rgba(29, 37, 40, 0.1);
|
|
67
|
+
--orbit-column: rgba(255, 255, 255, 0.5);
|
|
68
|
+
--orbit-column-border: rgba(29, 37, 40, 0.08);
|
|
69
|
+
--orbit-text: var(--ink);
|
|
70
|
+
--orbit-text-muted: var(--muted);
|
|
71
|
+
--orbit-accent: rgba(var(--accent-rgb),0.12);
|
|
72
|
+
--orbit-accent-2: rgba(var(--blue-rgb),0.1);
|
|
73
|
+
--orbit-column-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
|
|
74
|
+
--orbit-count-bg: rgba(29, 37, 40, 0.08);
|
|
75
|
+
--orbit-add-bg: rgba(29, 37, 40, 0.06);
|
|
76
|
+
--orbit-add-border: rgba(29, 37, 40, 0.12);
|
|
77
|
+
--orbit-phantom-border: rgba(29, 37, 40, 0.14);
|
|
78
|
+
--orbit-phantom-bg: rgba(29, 37, 40, 0.03);
|
|
79
|
+
--scrollbar-thumb: rgba(var(--accent-rgb),0.45);
|
|
80
|
+
--scrollbar-thumb-hover: rgba(var(--accent-rgb),0.65);
|
|
81
|
+
--scrollbar-track: transparent;
|
|
82
|
+
/* RGB channels — use as rgba(var(--name), alpha) for arbitrary-opacity tints */
|
|
83
|
+
--paper-rgb: 255, 252, 246; /* warm cream paper — light-mode surface/inset base */
|
|
84
|
+
--warmth-rgb: 53, 43, 28; /* warm parchment brown — light-mode shadow tint */
|
|
85
|
+
--accent-rgb: 15, 118, 110; /* orbit teal — same hue as --accent */
|
|
86
|
+
--amber-rgb: 191, 107, 33; /* amber ember — same hue as --accent-2 */
|
|
87
|
+
--teal-deep: #0a4d47; /* deep teal — text on teal-palette surfaces */
|
|
88
|
+
--purple-rgb: 192, 132, 252; /* light-mode epic card bezel */
|
|
89
|
+
--red-rgb: 166, 61, 47; /* light-mode bug card bezel */
|
|
90
|
+
--blue-rgb: 36, 92, 124; /* light-mode task card / --blue channel */
|
|
91
|
+
--starlight-rgb: 168, 192, 255; /* starlight periwinkle — dark-mode accent/glow base */
|
|
92
|
+
--cosmos-rgb: 22, 33, 62; /* cosmos navy — dark-mode surface base */
|
|
93
|
+
--void-rgb: 15, 52, 96; /* void — dark-mode drop-shadow tint */
|
|
94
|
+
--violet-rgb: 168, 128, 255; /* dark-mode epic inner ring */
|
|
95
|
+
--cyan-rgb: 6, 182, 212; /* dark-mode epic gradient tint */
|
|
96
|
+
--indigo-rgb: 139, 92, 246; /* dark-mode epic gradient tint 2 / orbit-accent-2 */
|
|
97
|
+
--coral-rgb: 248, 113, 113; /* dark-mode bug card bezel (brighter than --red-rgb) */
|
|
98
|
+
/* Native <select> chevron: same horizontal inset for value text (left) and glyph (right). */
|
|
99
|
+
--select-chevron-pad-x: 0.55rem;
|
|
100
|
+
--select-chevron-size: 12px;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
* {
|
|
104
|
+
box-sizing: border-box;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
html {
|
|
108
|
+
height: 100%;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
body {
|
|
112
|
+
display: flex;
|
|
113
|
+
flex-direction: column;
|
|
114
|
+
height: 100%;
|
|
115
|
+
min-height: 100vh;
|
|
116
|
+
min-height: 100dvh;
|
|
117
|
+
max-height: 100vh;
|
|
118
|
+
max-height: 100dvh;
|
|
119
|
+
margin: 0;
|
|
120
|
+
overflow: hidden;
|
|
121
|
+
color: var(--ink);
|
|
122
|
+
font-family: "Aptos Display", "Bahnschrift", "Segoe UI Variable", sans-serif;
|
|
123
|
+
user-select: none;
|
|
124
|
+
-webkit-user-select: none;
|
|
125
|
+
background:
|
|
126
|
+
radial-gradient(circle at 12% 8%, rgba(var(--amber-rgb),0.22), transparent 30rem),
|
|
127
|
+
radial-gradient(circle at 90% 4%, rgba(var(--blue-rgb),0.18), transparent 34rem),
|
|
128
|
+
linear-gradient(135deg, #fbf6ec 0%, var(--paper) 54%, #efe2cf 100%);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* Keep chrome from accidental drag-highlighting, but preserve selection where
|
|
132
|
+
users intentionally edit, copy code, or use rich text surfaces. */
|
|
133
|
+
input,
|
|
134
|
+
textarea,
|
|
135
|
+
pre,
|
|
136
|
+
code,
|
|
137
|
+
[contenteditable="true"],
|
|
138
|
+
.comment-body,
|
|
139
|
+
.description {
|
|
140
|
+
user-select: text;
|
|
141
|
+
-webkit-user-select: text;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.grain {
|
|
145
|
+
position: fixed;
|
|
146
|
+
inset: 0;
|
|
147
|
+
pointer-events: none;
|
|
148
|
+
opacity: 0.28;
|
|
149
|
+
background-image:
|
|
150
|
+
linear-gradient(rgba(29, 37, 40, 0.035) 1px, transparent 1px),
|
|
151
|
+
linear-gradient(90deg, rgba(29, 37, 40, 0.025) 1px, transparent 1px);
|
|
152
|
+
background-size: 24px 24px, 24px 24px;
|
|
153
|
+
mask-image: linear-gradient(to bottom, #000, transparent 90%);
|
|
154
|
+
-webkit-mask-image: linear-gradient(to bottom, #000, transparent 90%);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
[data-theme="dark"] body {
|
|
158
|
+
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
[data-theme="dark"] .grain {
|
|
162
|
+
opacity: 1;
|
|
163
|
+
background-image: none;
|
|
164
|
+
mask-image: none;
|
|
165
|
+
-webkit-mask-image: none;
|
|
166
|
+
overflow: hidden;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
button,
|
|
170
|
+
input,
|
|
171
|
+
select,
|
|
172
|
+
textarea {
|
|
173
|
+
font: inherit;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
button {
|
|
177
|
+
border: 0;
|
|
178
|
+
border-radius: 999px;
|
|
179
|
+
padding: 0.72rem 1rem;
|
|
180
|
+
color: #fff;
|
|
181
|
+
background: var(--ink);
|
|
182
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
183
|
+
transition:
|
|
184
|
+
transform 150ms ease,
|
|
185
|
+
box-shadow 150ms ease,
|
|
186
|
+
background 150ms ease;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
button:hover {
|
|
190
|
+
filter: brightness(1.04);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
button.ghost {
|
|
194
|
+
color: var(--ink);
|
|
195
|
+
background: var(--surface);
|
|
196
|
+
border: 1px solid var(--line);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* Dark-mode submit buttons would render near-white-on-white without this
|
|
200
|
+
override, since var(--ink) remaps to near-white in dark mode. Scoped to
|
|
201
|
+
button[type="submit"] so topbar chips, icon buttons, and .btn-sun are
|
|
202
|
+
left alone. */
|
|
203
|
+
[data-theme="dark"] button[type="submit"] {
|
|
204
|
+
color: #e8efff;
|
|
205
|
+
border: 1px solid rgba(var(--starlight-rgb),0.32);
|
|
206
|
+
background:
|
|
207
|
+
linear-gradient(135deg, rgba(30, 58, 100, 0.95), rgba(var(--void-rgb),0.98) 55%, rgba(26, 43, 84, 0.95));
|
|
208
|
+
box-shadow:
|
|
209
|
+
inset 0 1px 0 rgba(210, 225, 255, 0.18),
|
|
210
|
+
0 2px 10px rgba(5, 12, 30, 0.45);
|
|
211
|
+
font-weight: 700;
|
|
212
|
+
letter-spacing: 0.01em;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
[data-theme="dark"] button[type="submit"]:hover {
|
|
216
|
+
filter: brightness(1.08);
|
|
217
|
+
border-color: rgba(var(--starlight-rgb),0.6);
|
|
218
|
+
box-shadow:
|
|
219
|
+
inset 0 1px 0 rgba(210, 225, 255, 0.28),
|
|
220
|
+
0 4px 18px rgba(var(--starlight-rgb),0.3);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
[data-theme="dark"] .drawer button.ghost,
|
|
224
|
+
[data-theme="dark"] .deployment-actions button.ghost {
|
|
225
|
+
color: rgba(232, 239, 255, 0.95);
|
|
226
|
+
background: rgba(var(--starlight-rgb),0.07);
|
|
227
|
+
border-color: rgba(var(--starlight-rgb),0.24);
|
|
228
|
+
box-shadow: none;
|
|
229
|
+
font-weight: 600;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
[data-theme="dark"] .drawer button.ghost:hover,
|
|
233
|
+
[data-theme="dark"] .deployment-actions button.ghost:hover {
|
|
234
|
+
color: #fff;
|
|
235
|
+
background: rgba(var(--starlight-rgb),0.14);
|
|
236
|
+
border-color: rgba(var(--starlight-rgb),0.5);
|
|
237
|
+
box-shadow: 0 0 14px rgba(var(--starlight-rgb),0.2);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
input,
|
|
241
|
+
select,
|
|
242
|
+
textarea {
|
|
243
|
+
width: 100%;
|
|
244
|
+
border: 1px solid var(--line);
|
|
245
|
+
border-radius: 14px;
|
|
246
|
+
color: var(--ink);
|
|
247
|
+
background: var(--surface-input);
|
|
248
|
+
outline: none;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
input:focus,
|
|
252
|
+
select:focus,
|
|
253
|
+
textarea:focus {
|
|
254
|
+
border-color: var(--accent-focus-border);
|
|
255
|
+
box-shadow: var(--accent-ring);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.topbar {
|
|
259
|
+
position: sticky;
|
|
260
|
+
top: 0;
|
|
261
|
+
z-index: 5;
|
|
262
|
+
display: flex;
|
|
263
|
+
flex-shrink: 0;
|
|
264
|
+
align-items: center;
|
|
265
|
+
justify-content: space-between;
|
|
266
|
+
gap: 0.65rem;
|
|
267
|
+
min-height: 3.05rem;
|
|
268
|
+
padding: 0.55rem clamp(0.65rem, 2vw, 1.1rem);
|
|
269
|
+
background: var(--topbar-bg);
|
|
270
|
+
backdrop-filter: blur(14px);
|
|
271
|
+
-webkit-backdrop-filter: blur(14px);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
[data-theme="dark"] .topbar {
|
|
275
|
+
background: transparent;
|
|
276
|
+
backdrop-filter: none;
|
|
277
|
+
-webkit-backdrop-filter: none;
|
|
278
|
+
transition:
|
|
279
|
+
background 260ms ease,
|
|
280
|
+
box-shadow 260ms ease,
|
|
281
|
+
backdrop-filter 260ms ease;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
[data-theme="dark"] body.is-scrolled .topbar {
|
|
285
|
+
background: linear-gradient(
|
|
286
|
+
to bottom,
|
|
287
|
+
rgba(26, 26, 46, 0.82) 0%,
|
|
288
|
+
rgba(var(--cosmos-rgb),0.55) 100%
|
|
289
|
+
);
|
|
290
|
+
backdrop-filter: blur(14px) saturate(120%);
|
|
291
|
+
-webkit-backdrop-filter: blur(14px) saturate(120%);
|
|
292
|
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.22);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
@media (prefers-reduced-motion: reduce) {
|
|
296
|
+
[data-theme="dark"] .topbar {
|
|
297
|
+
transition: none;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.brand {
|
|
302
|
+
display: flex;
|
|
303
|
+
flex-shrink: 0;
|
|
304
|
+
align-items: center;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.mark {
|
|
308
|
+
display: block;
|
|
309
|
+
width: 2.55rem;
|
|
310
|
+
height: 2.55rem;
|
|
311
|
+
object-fit: contain;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
h1,
|
|
315
|
+
h2,
|
|
316
|
+
h3,
|
|
317
|
+
p {
|
|
318
|
+
margin: 0;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
h1 {
|
|
322
|
+
font-size: clamp(1rem, 1.6vw, 1.15rem);
|
|
323
|
+
letter-spacing: -0.03em;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/* One row: [flex gap after brand] → fixed-width search → New Card → Board → Settings */
|
|
327
|
+
.controls {
|
|
328
|
+
display: flex;
|
|
329
|
+
flex: 1;
|
|
330
|
+
flex-wrap: nowrap;
|
|
331
|
+
gap: 0.45rem;
|
|
332
|
+
align-items: center;
|
|
333
|
+
justify-content: flex-start;
|
|
334
|
+
min-width: 0;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/* Pulls the search + actions away from the Orbit brand without stretching the search full-width. */
|
|
338
|
+
.topbar-controls-gap {
|
|
339
|
+
flex: 1 1 auto;
|
|
340
|
+
min-width: 1.25rem;
|
|
341
|
+
max-width: none;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
.topbar-ctl-shrink {
|
|
345
|
+
flex-shrink: 0;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/* Bottom "frame" signature: in document flow below the board, inside the viewport shell. */
|
|
349
|
+
.frame-footer {
|
|
350
|
+
flex-shrink: 0;
|
|
351
|
+
display: flex;
|
|
352
|
+
justify-content: center;
|
|
353
|
+
align-items: baseline;
|
|
354
|
+
gap: 0.4rem;
|
|
355
|
+
padding: 0.45rem clamp(0.75rem, 2vw, 1.25rem) 0.55rem;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.frame-footer-title {
|
|
359
|
+
font-size: 0.86rem;
|
|
360
|
+
font-weight: 700;
|
|
361
|
+
letter-spacing: -0.01em;
|
|
362
|
+
color: var(--ink);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.frame-footer-subtitle {
|
|
366
|
+
color: var(--muted);
|
|
367
|
+
font-size: 0.74rem;
|
|
368
|
+
line-height: 1.15;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.frame-footer-subtitle em {
|
|
372
|
+
font-style: italic;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.topbar-icon {
|
|
376
|
+
display: block;
|
|
377
|
+
flex-shrink: 0;
|
|
378
|
+
width: 1rem;
|
|
379
|
+
height: 1rem;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/* Topbar chips: anchored flyouts */
|
|
383
|
+
.topbar-menu {
|
|
384
|
+
position: relative;
|
|
385
|
+
flex-shrink: 0;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/* ---- Teal-chip chrome — shared by .topbar-chip and .menu-flyout-item ----
|
|
389
|
+
One rule set governs the bezel, tint wash, and inner-glow pattern so the
|
|
390
|
+
two surfaces are visually consistent. Structural properties (padding, radius,
|
|
391
|
+
font, display, transition) stay on each component class. */
|
|
392
|
+
.topbar-chip,
|
|
393
|
+
.menu-flyout-item {
|
|
394
|
+
border: 1.5px solid rgba(var(--accent-rgb),0.32);
|
|
395
|
+
background:
|
|
396
|
+
linear-gradient(135deg, rgba(var(--accent-rgb),0.06), rgba(var(--paper-rgb),0) 65%),
|
|
397
|
+
rgba(var(--paper-rgb),0.95);
|
|
398
|
+
box-shadow:
|
|
399
|
+
inset 0 0 0 1px rgba(var(--paper-rgb),0.9),
|
|
400
|
+
inset 0 0 0 2px rgba(var(--accent-rgb),0.12),
|
|
401
|
+
0 4px 10px rgba(var(--accent-rgb),0.07),
|
|
402
|
+
0 1px 4px rgba(var(--warmth-rgb),0.05);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.topbar-chip:hover,
|
|
406
|
+
.menu-flyout-item:hover {
|
|
407
|
+
border-color: rgba(var(--accent-rgb),0.5);
|
|
408
|
+
background:
|
|
409
|
+
linear-gradient(135deg, rgba(var(--accent-rgb),0.12), rgba(var(--paper-rgb),0) 65%),
|
|
410
|
+
rgba(var(--paper-rgb),0.98);
|
|
411
|
+
box-shadow:
|
|
412
|
+
inset 0 0 0 1px rgba(var(--paper-rgb),0.9),
|
|
413
|
+
inset 0 0 0 2px rgba(var(--accent-rgb),0.2),
|
|
414
|
+
0 6px 14px rgba(var(--accent-rgb),0.14),
|
|
415
|
+
0 1px 4px rgba(var(--warmth-rgb),0.07);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
[data-theme="dark"] .topbar-chip,
|
|
419
|
+
[data-theme="dark"] .menu-flyout-item {
|
|
420
|
+
color: #e8efff;
|
|
421
|
+
border: 1.5px solid rgba(var(--starlight-rgb),0.28);
|
|
422
|
+
background:
|
|
423
|
+
linear-gradient(135deg, rgba(var(--starlight-rgb),0.05), rgba(var(--cosmos-rgb),0) 65%),
|
|
424
|
+
rgba(var(--cosmos-rgb),0.88);
|
|
425
|
+
box-shadow:
|
|
426
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
427
|
+
inset 0 0 0 2px rgba(var(--starlight-rgb),0.13),
|
|
428
|
+
0 4px 10px rgba(var(--void-rgb),0.22),
|
|
429
|
+
0 1px 4px rgba(0, 0, 0, 0.2);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
[data-theme="dark"] .topbar-chip:hover,
|
|
433
|
+
[data-theme="dark"] .menu-flyout-item:hover {
|
|
434
|
+
border-color: rgba(var(--starlight-rgb),0.45);
|
|
435
|
+
background:
|
|
436
|
+
linear-gradient(135deg, rgba(var(--starlight-rgb),0.1), rgba(var(--cosmos-rgb),0) 65%),
|
|
437
|
+
rgba(var(--cosmos-rgb),0.93);
|
|
438
|
+
box-shadow:
|
|
439
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
440
|
+
inset 0 0 0 2px rgba(var(--starlight-rgb),0.22),
|
|
441
|
+
0 6px 14px rgba(var(--void-rgb),0.3),
|
|
442
|
+
0 1px 4px rgba(0, 0, 0, 0.24);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/* Topbar chips */
|
|
446
|
+
.topbar-chip {
|
|
447
|
+
display: inline-flex;
|
|
448
|
+
max-width: 11.5rem;
|
|
449
|
+
align-items: center;
|
|
450
|
+
gap: 0.4rem;
|
|
451
|
+
padding: 0.42rem 0.75rem;
|
|
452
|
+
overflow: hidden;
|
|
453
|
+
border-radius: 10px;
|
|
454
|
+
font-family: inherit;
|
|
455
|
+
font-size: 0.82rem;
|
|
456
|
+
font-weight: 700;
|
|
457
|
+
color: var(--ink);
|
|
458
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
459
|
+
transition:
|
|
460
|
+
border-color 180ms ease,
|
|
461
|
+
background 180ms ease,
|
|
462
|
+
box-shadow 180ms ease;
|
|
463
|
+
white-space: nowrap;
|
|
464
|
+
text-overflow: ellipsis;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
/* Theme toggle — Starscape "Default (Cosmic)" deepspace gradient.
|
|
468
|
+
Dark mode wears the original low-chroma navy→indigo→steel-blue wash;
|
|
469
|
+
light mode wears a high-lightness translation of the same hues so the
|
|
470
|
+
sleek lowkey character carries across themes. */
|
|
471
|
+
#themeToggle {
|
|
472
|
+
border: 1px solid rgba(60, 80, 160, 0.18);
|
|
473
|
+
background: linear-gradient(in oklch 135deg, oklch(0.96 0.02 282.9) 0%, oklch(0.94 0.03 266.7) 50%, oklch(0.92 0.05 255.1) 100%);
|
|
474
|
+
color: var(--ink);
|
|
475
|
+
font-weight: 600;
|
|
476
|
+
box-shadow: 0 0.25rem 0.75rem rgba(60, 80, 160, 0.12);
|
|
477
|
+
transition:
|
|
478
|
+
border-color 180ms ease,
|
|
479
|
+
background 180ms ease,
|
|
480
|
+
box-shadow 180ms ease,
|
|
481
|
+
transform 180ms ease;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
#themeToggle:hover {
|
|
485
|
+
border-color: rgba(60, 80, 160, 0.32);
|
|
486
|
+
background: linear-gradient(in oklch 135deg, oklch(0.97 0.025 276.2) 0%, oklch(0.95 0.04 261.5) 50%, oklch(0.93 0.06 254.3) 100%);
|
|
487
|
+
box-shadow: 0 0.5rem 1.5625rem rgba(60, 80, 160, 0.22);
|
|
488
|
+
transform: translateY(-1px);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
#themeToggle .topbar-icon {
|
|
492
|
+
color: var(--ink);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
[data-theme="dark"] #themeToggle {
|
|
496
|
+
border-color: rgba(var(--starlight-rgb),0.15);
|
|
497
|
+
color: #fff;
|
|
498
|
+
background: linear-gradient(in oklch 135deg, oklch(0.228 0.0384 282.9) 0%, oklch(0.254 0.0571 266.7) 50%, oklch(0.325 0.0884 255.1) 100%);
|
|
499
|
+
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
[data-theme="dark"] #themeToggle:hover {
|
|
503
|
+
border-color: rgba(var(--starlight-rgb),0.3);
|
|
504
|
+
background: linear-gradient(in oklch 135deg, oklch(0.257 0.0323 276.2) 0%, oklch(0.287 0.0577 261.5) 50%, oklch(0.356 0.0989 254.3) 100%);
|
|
505
|
+
box-shadow: 0 0.5rem 1.5625rem rgba(var(--void-rgb),0.3);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
[data-theme="dark"] #themeToggle .topbar-icon {
|
|
509
|
+
color: #fff;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
.menu-flyout {
|
|
513
|
+
position: absolute;
|
|
514
|
+
top: calc(100% + 0.28rem);
|
|
515
|
+
left: 0;
|
|
516
|
+
z-index: 35;
|
|
517
|
+
display: flex;
|
|
518
|
+
min-width: 13.5rem;
|
|
519
|
+
max-width: min(20rem, calc(100vw - 1.5rem));
|
|
520
|
+
max-height: min(24rem, calc(100vh - 4rem));
|
|
521
|
+
flex-direction: column;
|
|
522
|
+
gap: 0;
|
|
523
|
+
overflow: hidden auto;
|
|
524
|
+
border: 1px solid var(--line);
|
|
525
|
+
border-radius: 12px;
|
|
526
|
+
background: var(--surface-raised);
|
|
527
|
+
box-shadow: var(--flyout-shadow);
|
|
528
|
+
scrollbar-width: thin;
|
|
529
|
+
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
.menu-flyout--align-end {
|
|
533
|
+
right: 0;
|
|
534
|
+
left: auto;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/* UA `[hidden]` uses `display: none`, but author `display: flex` on these panels wins in
|
|
538
|
+
the cascade, so closed flyouts stayed in the box tree and showed only their border
|
|
539
|
+
as a hairline under the top bar. */
|
|
540
|
+
.menu-flyout[hidden],
|
|
541
|
+
.create-flyout[hidden],
|
|
542
|
+
.drawer[hidden] {
|
|
543
|
+
display: none;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.menu-flyout-head {
|
|
547
|
+
position: sticky;
|
|
548
|
+
top: 0;
|
|
549
|
+
z-index: 1;
|
|
550
|
+
padding: 0.55rem 0.75rem;
|
|
551
|
+
border-bottom: 1px solid var(--line);
|
|
552
|
+
background: var(--topbar-bg);
|
|
553
|
+
font-size: 0.72rem;
|
|
554
|
+
font-weight: 800;
|
|
555
|
+
letter-spacing: 0.06em;
|
|
556
|
+
text-transform: uppercase;
|
|
557
|
+
color: var(--muted);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
.menu-flyout-list {
|
|
561
|
+
display: flex;
|
|
562
|
+
flex-direction: column;
|
|
563
|
+
gap: 0.4rem;
|
|
564
|
+
padding: 0.55rem 0.55rem 0.65rem;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/* Flyout menu items — chrome comes from the shared .topbar-chip/.menu-flyout-item rule above */
|
|
568
|
+
.menu-flyout-item {
|
|
569
|
+
display: flex;
|
|
570
|
+
width: 100%;
|
|
571
|
+
flex-direction: column;
|
|
572
|
+
align-items: flex-start;
|
|
573
|
+
gap: 0.15rem;
|
|
574
|
+
padding: 0.55rem 0.7rem;
|
|
575
|
+
border-radius: 10px;
|
|
576
|
+
color: var(--ink);
|
|
577
|
+
font: inherit;
|
|
578
|
+
text-align: left;
|
|
579
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
580
|
+
transition:
|
|
581
|
+
border-color 160ms ease,
|
|
582
|
+
background 160ms ease,
|
|
583
|
+
box-shadow 160ms ease;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
.menu-flyout-item.is-current {
|
|
587
|
+
border-color: rgba(var(--accent-rgb),0.65);
|
|
588
|
+
background:
|
|
589
|
+
linear-gradient(135deg, rgba(var(--accent-rgb),0.18), rgba(var(--accent-rgb),0.04) 70%),
|
|
590
|
+
rgba(var(--paper-rgb),0.98);
|
|
591
|
+
box-shadow:
|
|
592
|
+
inset 0 0 0 1px rgba(var(--paper-rgb),0.9),
|
|
593
|
+
inset 0 0 0 2px rgba(var(--accent-rgb),0.3),
|
|
594
|
+
0 6px 14px rgba(var(--accent-rgb),0.18),
|
|
595
|
+
0 1px 4px rgba(var(--warmth-rgb),0.07);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
.menu-flyout-item-title {
|
|
599
|
+
font-size: 0.88rem;
|
|
600
|
+
font-weight: 700;
|
|
601
|
+
letter-spacing: -0.005em;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.menu-flyout-item-meta {
|
|
605
|
+
font-size: 0.72rem;
|
|
606
|
+
color: var(--muted);
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
[data-theme="dark"] .menu-flyout-item.is-current {
|
|
610
|
+
border-color: rgba(var(--starlight-rgb),0.6);
|
|
611
|
+
background:
|
|
612
|
+
linear-gradient(135deg, rgba(var(--starlight-rgb),0.16), rgba(var(--starlight-rgb),0.04) 70%),
|
|
613
|
+
rgba(var(--cosmos-rgb),0.94);
|
|
614
|
+
box-shadow:
|
|
615
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
616
|
+
inset 0 0 0 2px rgba(var(--starlight-rgb),0.32),
|
|
617
|
+
0 6px 14px rgba(var(--void-rgb),0.34),
|
|
618
|
+
0 1px 4px rgba(0, 0, 0, 0.24);
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
.menu-flyout-section {
|
|
622
|
+
padding: 0.55rem 0.75rem 0.75rem;
|
|
623
|
+
border-top: 1px solid var(--line);
|
|
624
|
+
background: var(--subtle-bg-2);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.menu-flyout-heading {
|
|
628
|
+
margin: 0 0 0.4rem;
|
|
629
|
+
font-size: 0.72rem;
|
|
630
|
+
font-weight: 800;
|
|
631
|
+
letter-spacing: 0.05em;
|
|
632
|
+
text-transform: uppercase;
|
|
633
|
+
color: var(--muted);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
.menu-flyout-form {
|
|
637
|
+
display: flex;
|
|
638
|
+
flex-direction: column;
|
|
639
|
+
gap: 0.4rem;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
.menu-flyout-form input {
|
|
643
|
+
width: 100%;
|
|
644
|
+
padding: 0.42rem 0.55rem;
|
|
645
|
+
border: 1px solid var(--line);
|
|
646
|
+
border-radius: 8px;
|
|
647
|
+
font: inherit;
|
|
648
|
+
font-size: 0.82rem;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
.folder-picker-field {
|
|
652
|
+
display: grid;
|
|
653
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
654
|
+
gap: 0.4rem;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
.folder-picker-field input[readonly] {
|
|
658
|
+
cursor: default;
|
|
659
|
+
background: var(--surface-input);
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
.folder-picker-field button[type="button"] {
|
|
663
|
+
padding: 0.42rem 0.65rem;
|
|
664
|
+
border-radius: 8px;
|
|
665
|
+
border: 1px solid var(--btn-border);
|
|
666
|
+
font: inherit;
|
|
667
|
+
font-size: 0.82rem;
|
|
668
|
+
font-weight: 700;
|
|
669
|
+
color: inherit;
|
|
670
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
671
|
+
background: var(--surface-raised);
|
|
672
|
+
white-space: nowrap;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
.folder-picker-field button[type="button"]:disabled {
|
|
676
|
+
cursor: wait;
|
|
677
|
+
opacity: 0.7;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
.menu-flyout-form button[type="submit"] {
|
|
681
|
+
padding: 0.42rem 0.65rem;
|
|
682
|
+
border-radius: 8px;
|
|
683
|
+
border: 1px solid var(--btn-border);
|
|
684
|
+
font: inherit;
|
|
685
|
+
font-size: 0.82rem;
|
|
686
|
+
font-weight: 700;
|
|
687
|
+
color: #fff;
|
|
688
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
689
|
+
background: var(--btn-gradient);
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
.menu-flyout-hint {
|
|
693
|
+
margin: 0;
|
|
694
|
+
padding: 0.5rem 0.75rem 0.65rem;
|
|
695
|
+
border-top: 1px solid var(--line);
|
|
696
|
+
color: var(--muted);
|
|
697
|
+
font-size: 0.78rem;
|
|
698
|
+
line-height: 1.35;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
.menu-flyout-hint--empty {
|
|
702
|
+
border: 0;
|
|
703
|
+
padding: 0.65rem 0.75rem;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
.menu-flyout-hint--intro {
|
|
707
|
+
margin: 0 0 0.35rem;
|
|
708
|
+
opacity: 0.85;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
/* Primary / secondary actions in the thin top bar */
|
|
712
|
+
.topbar-btn {
|
|
713
|
+
display: inline-flex;
|
|
714
|
+
align-items: center;
|
|
715
|
+
gap: 0.4rem;
|
|
716
|
+
padding: 0.44rem 0.85rem;
|
|
717
|
+
border-radius: 10px;
|
|
718
|
+
border: 1px solid var(--btn-border);
|
|
719
|
+
font-family: inherit;
|
|
720
|
+
font-size: 0.82rem;
|
|
721
|
+
font-weight: 700;
|
|
722
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
723
|
+
color: #fff;
|
|
724
|
+
background: var(--btn-gradient);
|
|
725
|
+
box-shadow: 0 2px 8px var(--accent-hover);
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
.topbar-btn.ghost {
|
|
729
|
+
color: var(--ink);
|
|
730
|
+
background: var(--surface-dim);
|
|
731
|
+
border: 1px solid var(--line);
|
|
732
|
+
box-shadow: none;
|
|
733
|
+
font-weight: 600;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
.topbar-btn:hover {
|
|
737
|
+
filter: brightness(1.05);
|
|
738
|
+
transform: translateY(-1px);
|
|
739
|
+
box-shadow: var(--btn-hover-shadow);
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
.topbar-btn.ghost:hover {
|
|
743
|
+
background: var(--accent-hover);
|
|
744
|
+
border-color: var(--accent-border);
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/* ---- Epic-CTA chrome — shared by .btn-sun, .column-add-btn, .add-card-phantom ----
|
|
748
|
+
Teal border + amber inner ring + teal-to-amber gradient wash. In dark mode
|
|
749
|
+
the palette shifts to cyan + violet (the starscape dual-color signature).
|
|
750
|
+
Structural properties (size, padding, border-radius, font, display) stay on
|
|
751
|
+
each component class. */
|
|
752
|
+
.btn-sun,
|
|
753
|
+
.column-add-btn,
|
|
754
|
+
.add-card-phantom {
|
|
755
|
+
color: var(--teal-deep);
|
|
756
|
+
border: 1.5px solid rgba(var(--accent-rgb),0.55);
|
|
757
|
+
box-shadow:
|
|
758
|
+
inset 0 0 0 1px rgba(var(--paper-rgb),0.92),
|
|
759
|
+
inset 0 0 0 2px rgba(var(--amber-rgb),0.45),
|
|
760
|
+
0 8px 20px rgba(var(--accent-rgb),0.16),
|
|
761
|
+
0 0 14px rgba(var(--accent-rgb),0.10);
|
|
762
|
+
background:
|
|
763
|
+
linear-gradient(135deg, rgba(var(--accent-rgb),0.16), rgba(var(--amber-rgb),0.1) 55%, rgba(var(--paper-rgb),0) 100%),
|
|
764
|
+
rgba(var(--paper-rgb),0.96);
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
.btn-sun:hover,
|
|
768
|
+
.column-add-btn:hover,
|
|
769
|
+
.add-card-phantom:hover {
|
|
770
|
+
color: var(--teal-deep);
|
|
771
|
+
border-color: rgba(var(--accent-rgb),0.7);
|
|
772
|
+
box-shadow:
|
|
773
|
+
inset 0 0 0 1px rgba(var(--paper-rgb),0.95),
|
|
774
|
+
inset 0 0 0 2.5px rgba(var(--amber-rgb),0.55),
|
|
775
|
+
0 10px 24px rgba(var(--accent-rgb),0.26),
|
|
776
|
+
0 0 20px rgba(var(--accent-rgb),0.18);
|
|
777
|
+
background:
|
|
778
|
+
linear-gradient(135deg, rgba(var(--accent-rgb),0.22), rgba(var(--amber-rgb),0.14) 55%, rgba(var(--paper-rgb),0) 100%),
|
|
779
|
+
rgba(var(--paper-rgb),0.98);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
[data-theme="dark"] .btn-sun,
|
|
783
|
+
[data-theme="dark"] .column-add-btn,
|
|
784
|
+
[data-theme="dark"] .add-card-phantom {
|
|
785
|
+
color: #e8efff;
|
|
786
|
+
border: 1.5px solid rgba(var(--starlight-rgb),0.5);
|
|
787
|
+
box-shadow:
|
|
788
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
789
|
+
inset 0 0 0 2.5px rgba(var(--violet-rgb),0.42),
|
|
790
|
+
0 10px 24px rgba(var(--void-rgb),0.4),
|
|
791
|
+
0 0 16px rgba(var(--starlight-rgb),0.18);
|
|
792
|
+
background:
|
|
793
|
+
linear-gradient(135deg, rgba(var(--cyan-rgb),0.12), rgba(var(--indigo-rgb),0.1) 55%, rgba(var(--cosmos-rgb),0) 100%),
|
|
794
|
+
rgba(var(--cosmos-rgb),0.92);
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
[data-theme="dark"] .btn-sun:hover,
|
|
798
|
+
[data-theme="dark"] .column-add-btn:hover,
|
|
799
|
+
[data-theme="dark"] .add-card-phantom:hover {
|
|
800
|
+
color: #e8efff;
|
|
801
|
+
border-color: rgba(var(--starlight-rgb),0.7);
|
|
802
|
+
box-shadow:
|
|
803
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
804
|
+
inset 0 0 0 2.5px rgba(var(--violet-rgb),0.55),
|
|
805
|
+
0 12px 28px rgba(var(--void-rgb),0.55),
|
|
806
|
+
0 0 24px rgba(var(--starlight-rgb),0.26);
|
|
807
|
+
background:
|
|
808
|
+
linear-gradient(135deg, rgba(var(--cyan-rgb),0.18), rgba(var(--indigo-rgb),0.14) 55%, rgba(var(--cosmos-rgb),0) 100%),
|
|
809
|
+
rgba(var(--cosmos-rgb),0.95);
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
/* "Create" CTA */
|
|
813
|
+
.btn-sun {
|
|
814
|
+
position: relative;
|
|
815
|
+
font-weight: 800;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
.btn-sun .topbar-icon {
|
|
819
|
+
color: var(--teal-deep);
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/* Shared "+" glyph used by the topbar New Card button and the lane add buttons.
|
|
823
|
+
inline-grid + place-items locks the cap-height-asymmetric "+" into a centered box. */
|
|
824
|
+
.btn-plus {
|
|
825
|
+
display: inline-grid;
|
|
826
|
+
place-items: center;
|
|
827
|
+
width: 0.95rem;
|
|
828
|
+
height: 0.95rem;
|
|
829
|
+
color: var(--teal-deep);
|
|
830
|
+
font-size: 1.15rem;
|
|
831
|
+
font-weight: 800;
|
|
832
|
+
line-height: 1;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
.btn-sun .btn-sun-label {
|
|
836
|
+
display: inline-flex;
|
|
837
|
+
align-items: center;
|
|
838
|
+
line-height: 1;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
[data-theme="dark"] .btn-plus {
|
|
842
|
+
color: #d2deff;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
[data-theme="dark"] .btn-sun .topbar-icon {
|
|
846
|
+
color: #e8efff;
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
/* Top-right sheet for “New” — anchored under the thin top bar, separate from the main ticket drawer. */
|
|
850
|
+
.create-flyout-backdrop {
|
|
851
|
+
position: fixed;
|
|
852
|
+
inset: 0;
|
|
853
|
+
z-index: 41;
|
|
854
|
+
border: none;
|
|
855
|
+
padding: 0;
|
|
856
|
+
margin: 0;
|
|
857
|
+
background: rgba(12, 18, 26, 0.2);
|
|
858
|
+
opacity: 0;
|
|
859
|
+
transition: opacity 200ms ease;
|
|
860
|
+
pointer-events: none;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
.create-flyout-backdrop.is-visible {
|
|
864
|
+
opacity: 1;
|
|
865
|
+
pointer-events: auto;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
[data-theme="dark"] .create-flyout-backdrop {
|
|
869
|
+
background: rgba(0, 0, 0, 0.35);
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
.create-flyout {
|
|
873
|
+
position: fixed;
|
|
874
|
+
top: 2.85rem;
|
|
875
|
+
right: clamp(0.5rem, 2vw, 1rem);
|
|
876
|
+
z-index: 42;
|
|
877
|
+
width: min(22rem, calc(100vw - 1rem));
|
|
878
|
+
max-height: min(32rem, calc(100vh - 3.5rem));
|
|
879
|
+
display: flex;
|
|
880
|
+
flex-direction: column;
|
|
881
|
+
overflow: hidden;
|
|
882
|
+
border: 1px solid var(--line);
|
|
883
|
+
border-radius: 14px;
|
|
884
|
+
background: var(--surface-raised);
|
|
885
|
+
box-shadow: var(--flyout-shadow);
|
|
886
|
+
opacity: 0;
|
|
887
|
+
transform: translateY(-0.5rem) scale(0.98);
|
|
888
|
+
transform-origin: top right;
|
|
889
|
+
transition:
|
|
890
|
+
opacity 200ms ease,
|
|
891
|
+
transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
892
|
+
pointer-events: none;
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
.create-flyout.is-open {
|
|
896
|
+
opacity: 1;
|
|
897
|
+
transform: translateY(0) scale(1);
|
|
898
|
+
pointer-events: auto;
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
.create-flyout-inner {
|
|
902
|
+
overflow-y: auto;
|
|
903
|
+
padding: 0.75rem 0.9rem 0.95rem;
|
|
904
|
+
scrollbar-width: thin;
|
|
905
|
+
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
.create-flyout-head {
|
|
909
|
+
display: flex;
|
|
910
|
+
align-items: center;
|
|
911
|
+
justify-content: space-between;
|
|
912
|
+
gap: 0.5rem;
|
|
913
|
+
margin-bottom: 0.65rem;
|
|
914
|
+
padding-bottom: 0.5rem;
|
|
915
|
+
border-bottom: 1px solid var(--line);
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
.create-flyout-head h2 {
|
|
919
|
+
font-size: 1.05rem;
|
|
920
|
+
letter-spacing: -0.03em;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
.create-flyout-close {
|
|
924
|
+
display: inline-grid;
|
|
925
|
+
place-items: center;
|
|
926
|
+
min-width: 2rem;
|
|
927
|
+
height: 2rem;
|
|
928
|
+
padding: 0;
|
|
929
|
+
border-radius: 8px;
|
|
930
|
+
font-size: 1.25rem;
|
|
931
|
+
line-height: 1;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
.create-flyout-form {
|
|
935
|
+
display: flex;
|
|
936
|
+
flex-direction: column;
|
|
937
|
+
gap: 0.55rem;
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
.create-flyout-form input[type="text"],
|
|
941
|
+
.create-flyout-form textarea {
|
|
942
|
+
width: 100%;
|
|
943
|
+
padding: 0.62rem 0.8rem;
|
|
944
|
+
border: 1px solid var(--line);
|
|
945
|
+
border-radius: 10px;
|
|
946
|
+
font: inherit;
|
|
947
|
+
font-size: 0.88rem;
|
|
948
|
+
background: var(--surface-input);
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
.create-flyout-form select.select-chevron-field {
|
|
952
|
+
width: 100%;
|
|
953
|
+
padding: 0.62rem var(--select-chevron-pad-x);
|
|
954
|
+
padding-right: calc(var(--select-chevron-pad-x) * 2 + var(--select-chevron-size));
|
|
955
|
+
border: 1px solid var(--line);
|
|
956
|
+
border-radius: 10px;
|
|
957
|
+
font: inherit;
|
|
958
|
+
font-size: 0.88rem;
|
|
959
|
+
/* background-color keeps background-image (chevron) intact; see select-chevron-field. */
|
|
960
|
+
background-color: var(--surface-input);
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
.create-flyout-form textarea {
|
|
964
|
+
min-height: 4rem;
|
|
965
|
+
resize: vertical;
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
.create-flyout-grid {
|
|
969
|
+
display: grid;
|
|
970
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
971
|
+
gap: 0.45rem;
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
.create-flyout-grid label,
|
|
975
|
+
.create-flyout-form > label {
|
|
976
|
+
display: flex;
|
|
977
|
+
flex-direction: column;
|
|
978
|
+
gap: 0.2rem;
|
|
979
|
+
font-size: 0.72rem;
|
|
980
|
+
font-weight: 700;
|
|
981
|
+
color: var(--muted);
|
|
982
|
+
text-transform: uppercase;
|
|
983
|
+
letter-spacing: 0.04em;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
.create-flyout-form button[type="submit"] {
|
|
987
|
+
margin-top: 0.25rem;
|
|
988
|
+
padding: 0.55rem 1rem;
|
|
989
|
+
border-radius: 10px;
|
|
990
|
+
border: 1px solid var(--btn-border);
|
|
991
|
+
font: inherit;
|
|
992
|
+
font-weight: 700;
|
|
993
|
+
font-size: 0.88rem;
|
|
994
|
+
color: #fff;
|
|
995
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
996
|
+
background: var(--btn-gradient);
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
@media (max-width: 520px) {
|
|
1000
|
+
.create-flyout-grid {
|
|
1001
|
+
grid-template-columns: 1fr;
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1006
|
+
.create-flyout,
|
|
1007
|
+
.create-flyout-backdrop {
|
|
1008
|
+
transition: none;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
/* Primary board surface: kanban fills space between topbar and footer (Trello-style). */
|
|
1013
|
+
.board-main {
|
|
1014
|
+
display: flex;
|
|
1015
|
+
flex: 1 1 auto;
|
|
1016
|
+
flex-direction: column;
|
|
1017
|
+
min-width: 0;
|
|
1018
|
+
min-height: 0;
|
|
1019
|
+
padding: 0 clamp(0.75rem, 2vw, 1.25rem);
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
/* Search: modest fixed width — flex gap before it leaves breathing room after the brand. */
|
|
1023
|
+
.topbar-search {
|
|
1024
|
+
position: relative;
|
|
1025
|
+
flex: 0 0 auto;
|
|
1026
|
+
width: min(16.5rem, 36vw);
|
|
1027
|
+
max-width: 16.5rem;
|
|
1028
|
+
min-width: 9rem;
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
.topbar-search input {
|
|
1032
|
+
width: 100%;
|
|
1033
|
+
padding: 0.42rem 0.65rem;
|
|
1034
|
+
border: 1px solid var(--line);
|
|
1035
|
+
border-radius: 10px;
|
|
1036
|
+
background: var(--surface-input);
|
|
1037
|
+
font: inherit;
|
|
1038
|
+
font-size: 0.85rem;
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
/* Create-ticket form when shown inside the right drawer. */
|
|
1042
|
+
.drawer-composer,
|
|
1043
|
+
.composer {
|
|
1044
|
+
display: grid;
|
|
1045
|
+
gap: 0.7rem;
|
|
1046
|
+
padding: 0.8rem 0;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
.drawer-composer input,
|
|
1050
|
+
.drawer-composer textarea,
|
|
1051
|
+
.composer input,
|
|
1052
|
+
.composer textarea {
|
|
1053
|
+
padding: 0.82rem 0.95rem;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
.drawer-composer textarea,
|
|
1057
|
+
.composer textarea {
|
|
1058
|
+
min-height: 4.5rem;
|
|
1059
|
+
resize: vertical;
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
.composer-row {
|
|
1063
|
+
display: grid;
|
|
1064
|
+
grid-template-columns: 8rem minmax(10rem, 14rem) 9rem 9rem minmax(8rem, 1fr) auto;
|
|
1065
|
+
gap: 0.55rem;
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
.composer-row select,
|
|
1069
|
+
.composer-row input {
|
|
1070
|
+
padding: 0.7rem 0.8rem;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
.composer-row select.select-chevron-field {
|
|
1074
|
+
padding: 0.7rem var(--select-chevron-pad-x);
|
|
1075
|
+
padding-right: calc(var(--select-chevron-pad-x) * 2 + var(--select-chevron-size));
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
.search-results {
|
|
1079
|
+
position: absolute;
|
|
1080
|
+
right: 0;
|
|
1081
|
+
left: 0;
|
|
1082
|
+
top: calc(100% + 0.35rem);
|
|
1083
|
+
z-index: 20;
|
|
1084
|
+
max-height: 22rem;
|
|
1085
|
+
overflow: auto;
|
|
1086
|
+
border: 1px solid var(--line);
|
|
1087
|
+
border-radius: 16px;
|
|
1088
|
+
background: var(--surface-raised);
|
|
1089
|
+
box-shadow: var(--shadow);
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
.search-hit {
|
|
1093
|
+
padding: 0.85rem;
|
|
1094
|
+
border-bottom: 1px solid var(--line);
|
|
1095
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
.search-hit:hover {
|
|
1099
|
+
background: var(--accent-hover);
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
[data-theme="dark"] .menu-flyout,
|
|
1103
|
+
[data-theme="dark"] .create-flyout,
|
|
1104
|
+
[data-theme="dark"] .search-results {
|
|
1105
|
+
backdrop-filter: blur(20px);
|
|
1106
|
+
-webkit-backdrop-filter: blur(20px);
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
/* Horizontal scroll: styled thumb/track (Firefox + WebKit). */
|
|
1110
|
+
.kanban {
|
|
1111
|
+
display: grid;
|
|
1112
|
+
grid-auto-columns: minmax(17rem, 1fr);
|
|
1113
|
+
grid-auto-flow: column;
|
|
1114
|
+
grid-template-rows: minmax(0, 1fr);
|
|
1115
|
+
flex: 1 1 auto;
|
|
1116
|
+
gap: 0.85rem;
|
|
1117
|
+
min-width: 0;
|
|
1118
|
+
min-height: 0;
|
|
1119
|
+
margin-top: 0;
|
|
1120
|
+
overflow-x: auto;
|
|
1121
|
+
overflow-y: hidden;
|
|
1122
|
+
overscroll-behavior-x: contain;
|
|
1123
|
+
padding: 1rem 1rem 0.65rem;
|
|
1124
|
+
/* Grab cursor hints the empty area is panable. Cards override this below. */
|
|
1125
|
+
cursor: url('cursors/live_move.cur'), grab;
|
|
1126
|
+
/* Prevent text selection while panning across lane headers / empty space. */
|
|
1127
|
+
user-select: none;
|
|
1128
|
+
-webkit-user-select: none;
|
|
1129
|
+
touch-action: pan-y;
|
|
1130
|
+
border: 1px solid var(--orbit-line);
|
|
1131
|
+
border-radius: calc(var(--radius) + 4px);
|
|
1132
|
+
background:
|
|
1133
|
+
radial-gradient(ellipse 80% 50% at 50% 0%, var(--orbit-accent), transparent 55%),
|
|
1134
|
+
radial-gradient(circle at 100% 100%, var(--orbit-accent-2), transparent 45%),
|
|
1135
|
+
linear-gradient(165deg, var(--orbit-surface) 0%, var(--orbit-surface-2) 100%),
|
|
1136
|
+
repeating-linear-gradient(0deg, transparent, transparent 11px, var(--orbit-grid) 11px, var(--orbit-grid) 12px),
|
|
1137
|
+
repeating-linear-gradient(90deg, transparent, transparent 11px, var(--orbit-grid) 11px, var(--orbit-grid) 12px);
|
|
1138
|
+
box-shadow: 0 2px 16px rgba(0, 0, 0, 0.06);
|
|
1139
|
+
scrollbar-width: thin;
|
|
1140
|
+
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
.kanban::-webkit-scrollbar {
|
|
1144
|
+
height: 10px;
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
.kanban::-webkit-scrollbar-track {
|
|
1148
|
+
margin: 0 0.5rem;
|
|
1149
|
+
background: var(--subtle-bg-2);
|
|
1150
|
+
border-radius: 999px;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
.kanban::-webkit-scrollbar-thumb {
|
|
1154
|
+
border-radius: 999px;
|
|
1155
|
+
background: linear-gradient(90deg, var(--scrollbar-thumb), rgba(var(--blue-rgb),0.5));
|
|
1156
|
+
border: 2px solid transparent;
|
|
1157
|
+
background-clip: padding-box;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
.kanban::-webkit-scrollbar-thumb:hover {
|
|
1161
|
+
background: linear-gradient(90deg, var(--scrollbar-thumb-hover), rgba(var(--blue-rgb),0.65));
|
|
1162
|
+
border: 2px solid transparent;
|
|
1163
|
+
background-clip: padding-box;
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
.kanban.is-grabbing {
|
|
1167
|
+
cursor: url('cursors/live_move.cur'), grabbing;
|
|
1168
|
+
scroll-behavior: auto;
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
.kanban.is-grabbing .card {
|
|
1172
|
+
pointer-events: none;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
[data-theme="dark"] .kanban {
|
|
1176
|
+
box-shadow:
|
|
1177
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.04),
|
|
1178
|
+
0 12px 40px rgba(0, 0, 0, 0.3);
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
.column {
|
|
1182
|
+
display: flex;
|
|
1183
|
+
min-height: 0;
|
|
1184
|
+
flex-direction: column;
|
|
1185
|
+
gap: 0.7rem;
|
|
1186
|
+
padding: 0.75rem;
|
|
1187
|
+
overflow-x: hidden;
|
|
1188
|
+
overflow-y: auto;
|
|
1189
|
+
overscroll-behavior: contain;
|
|
1190
|
+
border: 1px solid var(--orbit-column-border);
|
|
1191
|
+
border-radius: var(--radius);
|
|
1192
|
+
background: var(--orbit-column);
|
|
1193
|
+
box-shadow: var(--orbit-column-shadow);
|
|
1194
|
+
transition:
|
|
1195
|
+
border-color 180ms ease,
|
|
1196
|
+
box-shadow 180ms ease,
|
|
1197
|
+
background 180ms ease;
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
.column.drag-over {
|
|
1201
|
+
outline: 2px solid var(--accent-focus-border);
|
|
1202
|
+
outline-offset: 2px;
|
|
1203
|
+
background: var(--accent-active);
|
|
1204
|
+
box-shadow: 0 0 0 1px var(--accent-border);
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
.column-head {
|
|
1208
|
+
position: sticky;
|
|
1209
|
+
top: 0;
|
|
1210
|
+
z-index: 2;
|
|
1211
|
+
display: flex;
|
|
1212
|
+
align-items: center;
|
|
1213
|
+
justify-content: space-between;
|
|
1214
|
+
gap: 0.5rem;
|
|
1215
|
+
padding: 0.25rem 0.2rem 0.4rem;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
.column-head-actions {
|
|
1219
|
+
display: flex;
|
|
1220
|
+
align-items: center;
|
|
1221
|
+
gap: 0.35rem;
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
/* Trello-style: compact add control in the column header next to the count.
|
|
1225
|
+
Wears the Epic-card palette to match the topbar "New Card" CTA — primary
|
|
1226
|
+
create actions all share the same teal+amber identity in light mode and
|
|
1227
|
+
starlight+violet in dark mode. */
|
|
1228
|
+
.column-add-btn {
|
|
1229
|
+
display: inline-grid;
|
|
1230
|
+
place-items: center;
|
|
1231
|
+
min-width: 1.85rem;
|
|
1232
|
+
height: 1.85rem;
|
|
1233
|
+
padding: 0;
|
|
1234
|
+
border-radius: 10px;
|
|
1235
|
+
font-size: 1.15rem;
|
|
1236
|
+
font-weight: 800;
|
|
1237
|
+
line-height: 1;
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
/* Phantom "+ Add a card" tile at the bottom of each lane — same Epic palette
|
|
1241
|
+
as the column-add-btn and topbar New Card CTA. */
|
|
1242
|
+
.add-card-phantom {
|
|
1243
|
+
display: block;
|
|
1244
|
+
width: 100%;
|
|
1245
|
+
margin-top: 0.15rem;
|
|
1246
|
+
padding: 0.55rem 0.7rem;
|
|
1247
|
+
border-radius: 12px;
|
|
1248
|
+
font: inherit;
|
|
1249
|
+
font-size: 0.88rem;
|
|
1250
|
+
font-weight: 700;
|
|
1251
|
+
text-align: left;
|
|
1252
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
1253
|
+
transition:
|
|
1254
|
+
opacity 180ms ease,
|
|
1255
|
+
color 160ms ease,
|
|
1256
|
+
border-color 160ms ease,
|
|
1257
|
+
background 160ms ease,
|
|
1258
|
+
box-shadow 160ms ease;
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
/* Desktop / fine pointer: only show lane-add affordances when the column is under
|
|
1262
|
+
the cursor or holds keyboard focus. Applies equally to the header "+" and the
|
|
1263
|
+
bottom phantom — they're the same action, so they appear and disappear together. */
|
|
1264
|
+
@media (hover: hover) and (pointer: fine) {
|
|
1265
|
+
.add-card-phantom,
|
|
1266
|
+
.column-add-btn {
|
|
1267
|
+
opacity: 0;
|
|
1268
|
+
pointer-events: none;
|
|
1269
|
+
transition: opacity 160ms ease;
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
.column:hover .add-card-phantom,
|
|
1273
|
+
.column:focus-within .add-card-phantom,
|
|
1274
|
+
.column:hover .column-add-btn,
|
|
1275
|
+
.column:focus-within .column-add-btn {
|
|
1276
|
+
opacity: 1;
|
|
1277
|
+
pointer-events: auto;
|
|
1278
|
+
}
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: reduce) {
|
|
1282
|
+
.add-card-phantom {
|
|
1283
|
+
transition:
|
|
1284
|
+
color 160ms ease,
|
|
1285
|
+
border-color 160ms ease,
|
|
1286
|
+
background 160ms ease;
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
.column h2 {
|
|
1291
|
+
display: inline-flex;
|
|
1292
|
+
align-items: center;
|
|
1293
|
+
gap: 0.4rem;
|
|
1294
|
+
color: var(--orbit-text);
|
|
1295
|
+
font-size: 0.95rem;
|
|
1296
|
+
letter-spacing: 0.02em;
|
|
1297
|
+
text-transform: uppercase;
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
/* AI Ready lane — agent-facing staging queue. Signaled with a glowing violet
|
|
1301
|
+
dot (distinct from the amber sun motif used for "new cards") and a small
|
|
1302
|
+
AGENTS caption pill so humans instantly see which lane feeds claim-next.
|
|
1303
|
+
Column body picks up a subtle violet top wash; header stays transparent. */
|
|
1304
|
+
.column--ai-ready {
|
|
1305
|
+
border-color: rgba(168, 85, 247, 0.28);
|
|
1306
|
+
background:
|
|
1307
|
+
linear-gradient(180deg, rgba(168, 85, 247, 0.06), transparent 28%),
|
|
1308
|
+
var(--orbit-column);
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
.agent-dot {
|
|
1312
|
+
display: inline-block;
|
|
1313
|
+
width: 0.55rem;
|
|
1314
|
+
height: 0.55rem;
|
|
1315
|
+
border-radius: 50%;
|
|
1316
|
+
background: radial-gradient(circle at 38% 38%, #f4e4ff 0%, #c084fc 50%, #7c3aed 100%);
|
|
1317
|
+
box-shadow:
|
|
1318
|
+
0 0 5px rgba(168, 85, 247, 0.85),
|
|
1319
|
+
0 0 12px rgba(168, 85, 247, 0.5);
|
|
1320
|
+
animation: agent-dot-pulse 3.6s ease-in-out infinite;
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
@keyframes agent-dot-pulse {
|
|
1324
|
+
0%, 100% {
|
|
1325
|
+
box-shadow:
|
|
1326
|
+
0 0 5px rgba(168, 85, 247, 0.85),
|
|
1327
|
+
0 0 12px rgba(168, 85, 247, 0.5);
|
|
1328
|
+
}
|
|
1329
|
+
50% {
|
|
1330
|
+
box-shadow:
|
|
1331
|
+
0 0 7px rgba(var(--purple-rgb),0.95),
|
|
1332
|
+
0 0 18px rgba(168, 85, 247, 0.7);
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1337
|
+
.agent-dot {
|
|
1338
|
+
animation: none;
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
/* Unread-update flag rendered top-right inside .card. Same purple visual as
|
|
1343
|
+
.agent-dot so "agent activity" reads as one consistent signal across the
|
|
1344
|
+
column header and the cards. Single dot for one unread change; expands
|
|
1345
|
+
into a numeric pill for two or more. */
|
|
1346
|
+
.card-unread-dot {
|
|
1347
|
+
position: absolute;
|
|
1348
|
+
top: 0.4rem;
|
|
1349
|
+
right: 0.5rem;
|
|
1350
|
+
z-index: 2;
|
|
1351
|
+
width: 0.55rem;
|
|
1352
|
+
height: 0.55rem;
|
|
1353
|
+
border-radius: 50%;
|
|
1354
|
+
background: radial-gradient(circle at 38% 38%, #f4e4ff 0%, #c084fc 50%, #7c3aed 100%);
|
|
1355
|
+
box-shadow:
|
|
1356
|
+
0 0 5px rgba(168, 85, 247, 0.85),
|
|
1357
|
+
0 0 12px rgba(168, 85, 247, 0.5);
|
|
1358
|
+
animation: agent-dot-pulse 3.6s ease-in-out infinite;
|
|
1359
|
+
pointer-events: none;
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
.card-unread-dot.has-count {
|
|
1363
|
+
width: auto;
|
|
1364
|
+
min-width: 1.1rem;
|
|
1365
|
+
height: 1.1rem;
|
|
1366
|
+
padding: 0 0.32rem;
|
|
1367
|
+
border-radius: 999px;
|
|
1368
|
+
display: grid;
|
|
1369
|
+
place-items: center;
|
|
1370
|
+
font-size: 0.62rem;
|
|
1371
|
+
font-weight: 800;
|
|
1372
|
+
line-height: 1;
|
|
1373
|
+
color: #fff;
|
|
1374
|
+
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35);
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1378
|
+
.card-unread-dot {
|
|
1379
|
+
animation: none;
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
.agents-pill {
|
|
1384
|
+
display: inline-block;
|
|
1385
|
+
margin-left: 0.15rem;
|
|
1386
|
+
padding: 0.08rem 0.42rem;
|
|
1387
|
+
border-radius: 999px;
|
|
1388
|
+
background: rgba(168, 85, 247, 0.14);
|
|
1389
|
+
border: 1px solid rgba(168, 85, 247, 0.35);
|
|
1390
|
+
color: #7c3aed;
|
|
1391
|
+
font-size: 0.58rem;
|
|
1392
|
+
font-weight: 800;
|
|
1393
|
+
letter-spacing: 0.1em;
|
|
1394
|
+
text-transform: uppercase;
|
|
1395
|
+
line-height: 1.4;
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
[data-theme="dark"] .column--ai-ready {
|
|
1399
|
+
border-color: rgba(var(--purple-rgb),0.32);
|
|
1400
|
+
background:
|
|
1401
|
+
linear-gradient(180deg, rgba(168, 85, 247, 0.09), transparent 28%),
|
|
1402
|
+
var(--orbit-column);
|
|
1403
|
+
}
|
|
1404
|
+
|
|
1405
|
+
[data-theme="dark"] .agents-pill {
|
|
1406
|
+
background: rgba(var(--purple-rgb),0.14);
|
|
1407
|
+
border-color: rgba(var(--purple-rgb),0.4);
|
|
1408
|
+
color: #e9d5ff;
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
/* Empty State Flair */
|
|
1412
|
+
.column-empty-state {
|
|
1413
|
+
display: flex;
|
|
1414
|
+
flex-direction: column;
|
|
1415
|
+
align-items: center;
|
|
1416
|
+
justify-content: flex-start;
|
|
1417
|
+
padding: 3.25rem 1rem 1.25rem;
|
|
1418
|
+
text-align: center;
|
|
1419
|
+
opacity: 0.85;
|
|
1420
|
+
pointer-events: none;
|
|
1421
|
+
user-select: none;
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1424
|
+
.empty-state-visual {
|
|
1425
|
+
position: relative;
|
|
1426
|
+
width: 120px;
|
|
1427
|
+
height: 120px;
|
|
1428
|
+
display: flex;
|
|
1429
|
+
align-items: center;
|
|
1430
|
+
justify-content: center;
|
|
1431
|
+
margin-bottom: 1.25rem;
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
.empty-state-glow {
|
|
1435
|
+
position: absolute;
|
|
1436
|
+
top: 50%;
|
|
1437
|
+
left: 50%;
|
|
1438
|
+
width: 140%;
|
|
1439
|
+
height: 140%;
|
|
1440
|
+
transform: translate(-50%, -50%);
|
|
1441
|
+
background: radial-gradient(circle, var(--glow-color, rgba(var(--starlight-rgb),0.15)) 0%, transparent 70%);
|
|
1442
|
+
border-radius: 50%;
|
|
1443
|
+
z-index: 0;
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
.empty-state-icon {
|
|
1447
|
+
position: relative;
|
|
1448
|
+
z-index: 1;
|
|
1449
|
+
width: 64px;
|
|
1450
|
+
height: 64px;
|
|
1451
|
+
stroke: var(--icon-color, currentColor);
|
|
1452
|
+
fill: none;
|
|
1453
|
+
stroke-width: 1.5;
|
|
1454
|
+
stroke-linecap: round;
|
|
1455
|
+
stroke-linejoin: round;
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
.empty-state-title {
|
|
1459
|
+
font-size: 0.9rem;
|
|
1460
|
+
font-weight: 700;
|
|
1461
|
+
color: var(--orbit-text);
|
|
1462
|
+
margin-bottom: 0.25rem;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
.empty-state-subtitle {
|
|
1466
|
+
font-size: 0.75rem;
|
|
1467
|
+
color: var(--orbit-text-muted);
|
|
1468
|
+
max-width: 180px;
|
|
1469
|
+
line-height: 1.4;
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
/* Animations & Variants */
|
|
1473
|
+
.empty-state-icon.orbit .satellite {
|
|
1474
|
+
transform-origin: 50px 50px;
|
|
1475
|
+
animation: orbit-rotate 10s linear infinite;
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
.empty-state-icon.orbit .ring {
|
|
1479
|
+
opacity: 0.4;
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
.empty-state-icon.star {
|
|
1483
|
+
animation: star-pulse 4s ease-in-out infinite;
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
.empty-state-icon.ai-sparkle {
|
|
1487
|
+
animation: ai-float 6s ease-in-out infinite;
|
|
1488
|
+
}
|
|
1489
|
+
|
|
1490
|
+
@keyframes orbit-rotate {
|
|
1491
|
+
from { transform: rotate(0deg); }
|
|
1492
|
+
to { transform: rotate(360deg); }
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
@keyframes star-pulse {
|
|
1496
|
+
0%, 100% { transform: scale(1); filter: drop-shadow(0 0 2px var(--glow-color)); }
|
|
1497
|
+
50% { transform: scale(1.05); filter: drop-shadow(0 0 8px var(--glow-color)); }
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
@keyframes ai-float {
|
|
1501
|
+
0%, 100% { transform: translateY(0) scale(1); }
|
|
1502
|
+
50% { transform: translateY(-8px) scale(1.02); }
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
/* Theme/State colors */
|
|
1506
|
+
.column[data-state-name*="Todo" i], .column[data-state-name*="Backlog" i] { --glow-color: rgba(var(--starlight-rgb),0.15); --icon-color: #a8c0ff; }
|
|
1507
|
+
.column[data-state-name*="Progress" i] { --glow-color: rgba(var(--indigo-rgb), 0.2); --icon-color: #a78bfa; }
|
|
1508
|
+
.column[data-state-name*="Review" i] { --glow-color: rgba(56, 189, 248, 0.2); --icon-color: #7dd3fc; }
|
|
1509
|
+
.column[data-state-name*="Done" i], .column[data-state-name*="Finished" i] { --glow-color: rgba(34, 197, 94, 0.15); --icon-color: #4ade80; }
|
|
1510
|
+
.column[data-state-name*="Cancel" i], .column[data-state-name*="Backlog" i] { --glow-color: rgba(148, 163, 184, 0.1); --icon-color: #94a3b8; }
|
|
1511
|
+
|
|
1512
|
+
.count {
|
|
1513
|
+
display: inline-grid;
|
|
1514
|
+
min-width: 1.8rem;
|
|
1515
|
+
height: 1.8rem;
|
|
1516
|
+
place-items: center;
|
|
1517
|
+
border-radius: 999px;
|
|
1518
|
+
color: var(--orbit-text-muted);
|
|
1519
|
+
background: var(--orbit-count-bg);
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
.card {
|
|
1523
|
+
padding: 0.85rem;
|
|
1524
|
+
border: 1px solid rgba(29, 37, 40, 0.1);
|
|
1525
|
+
border-radius: 16px;
|
|
1526
|
+
background: var(--card);
|
|
1527
|
+
box-shadow: 0 10px 24px rgba(var(--warmth-rgb),0.1);
|
|
1528
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
1529
|
+
animation: cardSettle 420ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
|
|
1530
|
+
transition:
|
|
1531
|
+
border-color 160ms ease,
|
|
1532
|
+
transform 160ms ease,
|
|
1533
|
+
box-shadow 200ms ease;
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
/* --------- Card type system ---------
|
|
1537
|
+
* All types share the same bezel-and-frame structure: a thin colored border,
|
|
1538
|
+
* a paper-light inset highlight (the "bevel" that creates the 3D-ish lift),
|
|
1539
|
+
* a colored inset ring (the "inner frame"), a soft tinted drop shadow, and a
|
|
1540
|
+
* faint diagonal wash. Distinctions come from intensity, hue, ring thickness,
|
|
1541
|
+
* and Epic's unique dual-color treatment.
|
|
1542
|
+
*
|
|
1543
|
+
* Hierarchy:
|
|
1544
|
+
* epic — biggest visual weight: thicker inner ring, dual teal+amber wash.
|
|
1545
|
+
* feature — confident teal, the default "second-in-command".
|
|
1546
|
+
* task — quietest slate, the smallest unit of work.
|
|
1547
|
+
* bug — red + slightly punchier shadow so defects feel urgent.
|
|
1548
|
+
*/
|
|
1549
|
+
|
|
1550
|
+
/* Structural rule — all card types share position + padding + the bezel shape formula.
|
|
1551
|
+
Each type scopes --type-rgb (and optionally alpha/size overrides) on its own selector.
|
|
1552
|
+
Task overrides box-shadow + background because its drop-shadow y/blur values are
|
|
1553
|
+
shallower than the epic/feature/bug baseline. */
|
|
1554
|
+
.card[class*="type-"] {
|
|
1555
|
+
position: relative;
|
|
1556
|
+
padding: 0.78rem 0.8rem 0.7rem;
|
|
1557
|
+
border: 1.5px solid rgba(var(--type-rgb), var(--type-border-a, 0.4));
|
|
1558
|
+
box-shadow:
|
|
1559
|
+
inset 0 0 0 1px rgba(var(--paper-rgb), 0.92),
|
|
1560
|
+
inset 0 0 0 var(--type-ring-w, 2px) rgba(var(--type-rgb), var(--type-ring-a, 0.18)),
|
|
1561
|
+
0 8px 20px rgba(var(--type-rgb), var(--type-glow-a, 0.1)),
|
|
1562
|
+
0 3px 8px rgba(var(--warmth-rgb), 0.08);
|
|
1563
|
+
background:
|
|
1564
|
+
linear-gradient(135deg, rgba(var(--type-rgb), var(--type-bg-a, 0.07)), rgba(var(--paper-rgb), 0) var(--type-bg-stop, 65%)),
|
|
1565
|
+
rgba(var(--paper-rgb), 0.96);
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
/* Epic: purple bezel, dual-color gradient wash. */
|
|
1569
|
+
.card.type-epic { --type-rgb: var(--purple-rgb); }
|
|
1570
|
+
|
|
1571
|
+
.card.type-epic h3 {
|
|
1572
|
+
font-size: 0.92rem;
|
|
1573
|
+
font-weight: 600;
|
|
1574
|
+
letter-spacing: -0.01em;
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
/* Feature: teal bezel — confident, second-in-command. */
|
|
1578
|
+
.card.type-feature { --type-rgb: var(--accent-rgb); }
|
|
1579
|
+
|
|
1580
|
+
/* Task: slate bezel, thinnest ring, shallowest shadow. */
|
|
1581
|
+
.card.type-task {
|
|
1582
|
+
--type-rgb: var(--blue-rgb);
|
|
1583
|
+
--type-border-a: 0.28;
|
|
1584
|
+
--type-ring-w: 1.5px;
|
|
1585
|
+
--type-ring-a: 0.12;
|
|
1586
|
+
--type-bg-a: 0.04;
|
|
1587
|
+
--type-bg-stop: 70%;
|
|
1588
|
+
box-shadow:
|
|
1589
|
+
inset 0 0 0 1px rgba(var(--paper-rgb), 0.92),
|
|
1590
|
+
inset 0 0 0 1.5px rgba(var(--blue-rgb), 0.12),
|
|
1591
|
+
0 6px 16px rgba(var(--blue-rgb), 0.06),
|
|
1592
|
+
0 2px 6px rgba(var(--warmth-rgb), 0.07);
|
|
1593
|
+
background:
|
|
1594
|
+
linear-gradient(135deg, rgba(var(--blue-rgb), 0.04), rgba(var(--paper-rgb), 0) 70%),
|
|
1595
|
+
rgba(var(--paper-rgb), 0.95);
|
|
1596
|
+
}
|
|
1597
|
+
|
|
1598
|
+
/* Bug: red bezel, punchier ring — defects feel urgent. */
|
|
1599
|
+
.card.type-bug {
|
|
1600
|
+
--type-rgb: var(--red-rgb);
|
|
1601
|
+
--type-border-a: 0.45;
|
|
1602
|
+
--type-ring-a: 0.22;
|
|
1603
|
+
--type-bg-a: 0.06;
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
/* Hover: lift via translate + filter only, so the per-type bezel insets stay
|
|
1607
|
+
intact. Drop-shadow filter floats above whatever box-shadow the type has. */
|
|
1608
|
+
.card:hover {
|
|
1609
|
+
transform: translateY(-2px);
|
|
1610
|
+
filter: brightness(1.02) drop-shadow(0 6px 12px rgba(0, 0, 0, 0.06));
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
@keyframes cardSettle {
|
|
1614
|
+
from {
|
|
1615
|
+
transform: translateY(6px);
|
|
1616
|
+
opacity: 0;
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
to {
|
|
1620
|
+
transform: translateY(0);
|
|
1621
|
+
opacity: 1;
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1625
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1626
|
+
.card {
|
|
1627
|
+
animation: none;
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
|
|
1631
|
+
/* Selected uses outline (which doesn't conflict with box-shadow), so the
|
|
1632
|
+
per-type bezel underneath stays intact while a soft accent ring marks
|
|
1633
|
+
the active card. */
|
|
1634
|
+
.card.selected {
|
|
1635
|
+
outline: 4px solid rgba(var(--accent-rgb),0.18);
|
|
1636
|
+
outline-offset: -1px;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
/* Dark card glass — starscape palette. Hover uses filter+drop-shadow only
|
|
1640
|
+
so per-type bezels survive. Selected uses outline so bezel box-shadow stays intact. */
|
|
1641
|
+
[data-theme="dark"] .card {
|
|
1642
|
+
border-color: rgba(var(--starlight-rgb),0.12);
|
|
1643
|
+
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25);
|
|
1644
|
+
backdrop-filter: blur(16px);
|
|
1645
|
+
-webkit-backdrop-filter: blur(16px);
|
|
1646
|
+
}
|
|
1647
|
+
|
|
1648
|
+
[data-theme="dark"] .card.type-epic {
|
|
1649
|
+
border: 1.5px solid rgba(var(--starlight-rgb),0.4);
|
|
1650
|
+
box-shadow:
|
|
1651
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
1652
|
+
inset 0 0 0 2.5px rgba(var(--violet-rgb),0.32),
|
|
1653
|
+
0 12px 26px rgba(var(--void-rgb),0.35),
|
|
1654
|
+
0 4px 10px rgba(0, 0, 0, 0.3);
|
|
1655
|
+
background:
|
|
1656
|
+
linear-gradient(135deg, rgba(var(--cyan-rgb),0.1), rgba(var(--indigo-rgb),0.09) 55%, rgba(var(--cosmos-rgb),0) 100%),
|
|
1657
|
+
rgba(var(--cosmos-rgb),0.92);
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1660
|
+
[data-theme="dark"] .card.type-feature {
|
|
1661
|
+
border: 1.5px solid rgba(var(--starlight-rgb),0.32);
|
|
1662
|
+
box-shadow:
|
|
1663
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
1664
|
+
inset 0 0 0 2px rgba(var(--starlight-rgb),0.18),
|
|
1665
|
+
0 8px 20px rgba(var(--void-rgb),0.3),
|
|
1666
|
+
0 3px 8px rgba(0, 0, 0, 0.25);
|
|
1667
|
+
background:
|
|
1668
|
+
linear-gradient(135deg, rgba(var(--starlight-rgb),0.06), rgba(var(--cosmos-rgb),0) 65%),
|
|
1669
|
+
rgba(var(--cosmos-rgb),0.92);
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1672
|
+
[data-theme="dark"] .card.type-task {
|
|
1673
|
+
border: 1.5px solid rgba(var(--starlight-rgb),0.18);
|
|
1674
|
+
box-shadow:
|
|
1675
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
1676
|
+
inset 0 0 0 1.5px rgba(var(--starlight-rgb),0.1),
|
|
1677
|
+
0 6px 16px rgba(0, 0, 0, 0.25),
|
|
1678
|
+
0 2px 6px rgba(0, 0, 0, 0.2);
|
|
1679
|
+
background:
|
|
1680
|
+
linear-gradient(135deg, rgba(var(--starlight-rgb),0.035), rgba(var(--cosmos-rgb),0) 70%),
|
|
1681
|
+
rgba(var(--cosmos-rgb),0.9);
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
[data-theme="dark"] .card.type-bug {
|
|
1685
|
+
border: 1.5px solid rgba(var(--coral-rgb),0.4);
|
|
1686
|
+
box-shadow:
|
|
1687
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.85),
|
|
1688
|
+
inset 0 0 0 2px rgba(var(--coral-rgb),0.22),
|
|
1689
|
+
0 8px 20px rgba(0, 0, 0, 0.3),
|
|
1690
|
+
0 4px 12px rgba(var(--coral-rgb),0.1);
|
|
1691
|
+
background:
|
|
1692
|
+
linear-gradient(135deg, rgba(var(--coral-rgb),0.07), rgba(var(--cosmos-rgb),0) 65%),
|
|
1693
|
+
rgba(var(--cosmos-rgb),0.92);
|
|
1694
|
+
}
|
|
1695
|
+
|
|
1696
|
+
[data-theme="dark"] .card:hover {
|
|
1697
|
+
filter: brightness(1.06) drop-shadow(0 6px 14px rgba(var(--starlight-rgb),0.08));
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1700
|
+
[data-theme="dark"] .card.selected {
|
|
1701
|
+
outline-color: rgba(var(--starlight-rgb),0.3);
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1704
|
+
/* Epic-aware grouping inside a column.
|
|
1705
|
+
`.epic-children` is a flex item nested in `.column` (which is itself flex-column,
|
|
1706
|
+
gap 0.7rem). Right-aligning + narrowing it makes its cards read as indented
|
|
1707
|
+
children of the epic card or `.epic-mini-header` directly above. The negative
|
|
1708
|
+
margin-top tightens the visual link by halving the column gap. */
|
|
1709
|
+
.epic-children {
|
|
1710
|
+
display: flex;
|
|
1711
|
+
flex-direction: column;
|
|
1712
|
+
gap: 0.7rem;
|
|
1713
|
+
width: 92%;
|
|
1714
|
+
align-self: flex-end;
|
|
1715
|
+
margin-top: -0.35rem;
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
.card.is-epic-child {
|
|
1719
|
+
border-left-width: 3px;
|
|
1720
|
+
border-left-color: rgba(var(--purple-rgb), 0.55);
|
|
1721
|
+
background:
|
|
1722
|
+
linear-gradient(90deg, rgba(var(--purple-rgb), 0.11), rgba(var(--purple-rgb), 0.02) 45%, rgba(var(--purple-rgb), 0) 75%),
|
|
1723
|
+
linear-gradient(135deg, rgba(var(--type-rgb), var(--type-bg-a, 0.07)), rgba(var(--paper-rgb), 0) var(--type-bg-stop, 65%)),
|
|
1724
|
+
rgba(var(--paper-rgb), 0.96);
|
|
1725
|
+
box-shadow:
|
|
1726
|
+
inset 2px 0 0 rgba(var(--purple-rgb), 0.35),
|
|
1727
|
+
inset 0 0 0 1px rgba(var(--paper-rgb), 0.92),
|
|
1728
|
+
inset 0 0 0 var(--type-ring-w, 2px) rgba(var(--type-rgb), var(--type-ring-a, 0.18)),
|
|
1729
|
+
0 8px 20px rgba(var(--type-rgb), var(--type-glow-a, 0.1)),
|
|
1730
|
+
0 3px 8px rgba(var(--warmth-rgb), 0.08);
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1733
|
+
.card.is-epic-child h3 {
|
|
1734
|
+
font-size: 0.95em;
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
[data-theme="dark"] .card.is-epic-child {
|
|
1738
|
+
border-left-color: rgba(var(--violet-rgb), 0.6);
|
|
1739
|
+
background:
|
|
1740
|
+
linear-gradient(90deg, rgba(var(--violet-rgb), 0.16), rgba(var(--violet-rgb), 0.04) 45%, rgba(var(--violet-rgb), 0) 75%),
|
|
1741
|
+
rgba(var(--cosmos-rgb), 0.92);
|
|
1742
|
+
box-shadow:
|
|
1743
|
+
inset 2px 0 0 rgba(var(--violet-rgb), 0.45),
|
|
1744
|
+
0 8px 20px rgba(0, 0, 0, 0.25);
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
/* Thin "header" that stands in for the epic when its children sit in a different
|
|
1748
|
+
column. Visually pairs with the `.epic-children` block right below it: same
|
|
1749
|
+
width and right-alignment, slim purple bar shape. */
|
|
1750
|
+
.epic-mini-header {
|
|
1751
|
+
display: flex;
|
|
1752
|
+
align-items: center;
|
|
1753
|
+
gap: 0.4rem;
|
|
1754
|
+
width: 92%;
|
|
1755
|
+
align-self: flex-end;
|
|
1756
|
+
padding: 0.45rem 0.6rem;
|
|
1757
|
+
border-radius: 10px 10px 4px 4px;
|
|
1758
|
+
background: rgba(var(--purple-rgb), 0.10);
|
|
1759
|
+
border: 1px solid rgba(var(--purple-rgb), 0.28);
|
|
1760
|
+
border-bottom-color: rgba(var(--purple-rgb), 0.18);
|
|
1761
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
1762
|
+
font-size: 0.76rem;
|
|
1763
|
+
transition: background 160ms ease, border-color 160ms ease;
|
|
1764
|
+
}
|
|
1765
|
+
|
|
1766
|
+
.epic-mini-header:hover {
|
|
1767
|
+
background: rgba(var(--purple-rgb), 0.16);
|
|
1768
|
+
border-color: rgba(var(--purple-rgb), 0.4);
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
.epic-mini-header .card-type-icon {
|
|
1772
|
+
flex: none;
|
|
1773
|
+
}
|
|
1774
|
+
|
|
1775
|
+
.epic-mini-header .ticket-number {
|
|
1776
|
+
color: #c084fc;
|
|
1777
|
+
font-size: 0.68rem;
|
|
1778
|
+
}
|
|
1779
|
+
|
|
1780
|
+
.epic-mini-header .epic-mini-title {
|
|
1781
|
+
color: var(--muted);
|
|
1782
|
+
font-weight: 600;
|
|
1783
|
+
overflow: hidden;
|
|
1784
|
+
text-overflow: ellipsis;
|
|
1785
|
+
white-space: nowrap;
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
/* Header sits flush on top of its children block — kill the column gap between them. */
|
|
1789
|
+
.epic-mini-header + .epic-children {
|
|
1790
|
+
margin-top: 0;
|
|
1791
|
+
}
|
|
1792
|
+
|
|
1793
|
+
[data-theme="dark"] .epic-mini-header {
|
|
1794
|
+
background: rgba(var(--violet-rgb), 0.16);
|
|
1795
|
+
border-color: rgba(var(--violet-rgb), 0.32);
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
[data-theme="dark"] .epic-mini-header:hover {
|
|
1799
|
+
background: rgba(var(--violet-rgb), 0.24);
|
|
1800
|
+
border-color: rgba(var(--violet-rgb), 0.45);
|
|
1801
|
+
}
|
|
1802
|
+
|
|
1803
|
+
.card-expand-trigger--static {
|
|
1804
|
+
cursor: url('cursors/live_arrow.cur'), default;
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
.card-meta {
|
|
1808
|
+
display: flex;
|
|
1809
|
+
align-items: center;
|
|
1810
|
+
gap: 0.75rem;
|
|
1811
|
+
margin-top: 0.5rem;
|
|
1812
|
+
}
|
|
1813
|
+
|
|
1814
|
+
.ticket-number {
|
|
1815
|
+
color: var(--orbit-text-muted);
|
|
1816
|
+
font-size: 0.75rem;
|
|
1817
|
+
font-weight: 800;
|
|
1818
|
+
letter-spacing: 0.02em;
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1821
|
+
[data-theme="dark"] .ticket-number {
|
|
1822
|
+
color: var(--blue);
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
.card-type-id {
|
|
1826
|
+
display: inline-flex;
|
|
1827
|
+
align-items: center;
|
|
1828
|
+
gap: 0.35rem;
|
|
1829
|
+
padding: 0.15rem 0.45rem;
|
|
1830
|
+
border-radius: 4px;
|
|
1831
|
+
background: rgba(var(--starlight-rgb),0.08);
|
|
1832
|
+
border: 1px solid rgba(var(--starlight-rgb),0.12);
|
|
1833
|
+
font-size: 0.68rem;
|
|
1834
|
+
font-weight: 800;
|
|
1835
|
+
color: var(--orbit-text-muted);
|
|
1836
|
+
transition:
|
|
1837
|
+
background 160ms ease,
|
|
1838
|
+
border-color 160ms ease,
|
|
1839
|
+
color 160ms ease;
|
|
1840
|
+
}
|
|
1841
|
+
|
|
1842
|
+
.card-type-id.type-pill-epic {
|
|
1843
|
+
background: rgba(var(--purple-rgb),0.12);
|
|
1844
|
+
border-color: rgba(var(--purple-rgb),0.25);
|
|
1845
|
+
color: #c084fc;
|
|
1846
|
+
}
|
|
1847
|
+
|
|
1848
|
+
.card-type-id.type-pill-feature {
|
|
1849
|
+
background: rgba(74, 222, 128, 0.1);
|
|
1850
|
+
border-color: rgba(74, 222, 128, 0.2);
|
|
1851
|
+
color: #4ade80;
|
|
1852
|
+
}
|
|
1853
|
+
|
|
1854
|
+
.card-type-id.type-pill-bug {
|
|
1855
|
+
background: rgba(var(--coral-rgb),0.12);
|
|
1856
|
+
border-color: rgba(var(--coral-rgb),0.25);
|
|
1857
|
+
color: #f87171;
|
|
1858
|
+
}
|
|
1859
|
+
|
|
1860
|
+
.card-type-id.type-pill-task {
|
|
1861
|
+
background: rgba(96, 165, 250, 0.1);
|
|
1862
|
+
border-color: rgba(96, 165, 250, 0.2);
|
|
1863
|
+
color: #60a5fa;
|
|
1864
|
+
}
|
|
1865
|
+
|
|
1866
|
+
.card-type-label {
|
|
1867
|
+
text-transform: uppercase;
|
|
1868
|
+
letter-spacing: 0.04em;
|
|
1869
|
+
}
|
|
1870
|
+
|
|
1871
|
+
/* Priority pill — same shape/scale as the Type pill so they read as a paired
|
|
1872
|
+
set in the kanban card meta line and the detail-pane header subtitle. The
|
|
1873
|
+
priority-pill-* classes (already defined for color) provide the fill, while
|
|
1874
|
+
this rule pins the box geometry. */
|
|
1875
|
+
.card-priority-id {
|
|
1876
|
+
display: inline-flex;
|
|
1877
|
+
align-items: center;
|
|
1878
|
+
padding: 0.15rem 0.45rem;
|
|
1879
|
+
border-radius: 4px;
|
|
1880
|
+
border: 1px solid transparent;
|
|
1881
|
+
font-size: 0.68rem;
|
|
1882
|
+
font-weight: 800;
|
|
1883
|
+
letter-spacing: 0.04em;
|
|
1884
|
+
text-transform: uppercase;
|
|
1885
|
+
}
|
|
1886
|
+
|
|
1887
|
+
.card-priority-label {
|
|
1888
|
+
line-height: 1;
|
|
1889
|
+
}
|
|
1890
|
+
|
|
1891
|
+
.card-type-icon {
|
|
1892
|
+
width: 12px;
|
|
1893
|
+
height: 12px;
|
|
1894
|
+
stroke: currentColor;
|
|
1895
|
+
fill: none;
|
|
1896
|
+
stroke-width: 2.5;
|
|
1897
|
+
stroke-linecap: round;
|
|
1898
|
+
stroke-linejoin: round;
|
|
1899
|
+
}
|
|
1900
|
+
|
|
1901
|
+
.priority {
|
|
1902
|
+
border-radius: 999px;
|
|
1903
|
+
padding: 0.18rem 0.5rem;
|
|
1904
|
+
background: rgba(var(--amber-rgb),0.12);
|
|
1905
|
+
color: var(--accent-2);
|
|
1906
|
+
font-weight: 800;
|
|
1907
|
+
}
|
|
1908
|
+
|
|
1909
|
+
/* --------- Priority pill colors (MAYBE → URGENT) ---------
|
|
1910
|
+
Muted greys for MAYBE / LOW so they sit back, rising through amber to red for URGENT. */
|
|
1911
|
+
.priority-pill {
|
|
1912
|
+
letter-spacing: 0.04em;
|
|
1913
|
+
font-size: 0.72rem;
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1916
|
+
.priority-pill-maybe {
|
|
1917
|
+
color: #6b7280;
|
|
1918
|
+
background: rgba(100, 116, 139, 0.14);
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1921
|
+
.priority-pill-low {
|
|
1922
|
+
color: #1e6f5c;
|
|
1923
|
+
background: rgba(var(--accent-rgb),0.14);
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
.priority-pill-med {
|
|
1927
|
+
color: #a4550f;
|
|
1928
|
+
background: rgba(var(--amber-rgb),0.16);
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
.priority-pill-high {
|
|
1932
|
+
color: #b53a1a;
|
|
1933
|
+
background: rgba(214, 86, 46, 0.2);
|
|
1934
|
+
box-shadow: inset 0 0 0 1px rgba(214, 86, 46, 0.35);
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1937
|
+
.priority-pill-urgent {
|
|
1938
|
+
color: #fff;
|
|
1939
|
+
background: linear-gradient(135deg, #c72e1a, #a0281a);
|
|
1940
|
+
box-shadow: 0 0 0 1px rgba(var(--red-rgb),0.35), 0 4px 10px rgba(var(--red-rgb),0.3);
|
|
1941
|
+
animation: urgentPulse 2.6s ease-in-out infinite;
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
@keyframes urgentPulse {
|
|
1945
|
+
0%,
|
|
1946
|
+
100% {
|
|
1947
|
+
box-shadow: 0 0 0 1px rgba(var(--red-rgb),0.35), 0 4px 10px rgba(var(--red-rgb),0.3);
|
|
1948
|
+
}
|
|
1949
|
+
|
|
1950
|
+
50% {
|
|
1951
|
+
box-shadow: 0 0 0 1px rgba(var(--red-rgb),0.55), 0 4px 14px rgba(199, 46, 26, 0.45);
|
|
1952
|
+
}
|
|
1953
|
+
}
|
|
1954
|
+
|
|
1955
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1956
|
+
.priority-pill-urgent {
|
|
1957
|
+
animation: none;
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
|
|
1961
|
+
[data-theme="dark"] .priority-pill-maybe {
|
|
1962
|
+
color: rgba(255, 255, 255, 0.5);
|
|
1963
|
+
background: rgba(255, 255, 255, 0.1);
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1966
|
+
[data-theme="dark"] .priority-pill-low {
|
|
1967
|
+
color: #4ade80;
|
|
1968
|
+
background: rgba(74, 222, 128, 0.15);
|
|
1969
|
+
}
|
|
1970
|
+
|
|
1971
|
+
[data-theme="dark"] .priority-pill-med {
|
|
1972
|
+
color: #fbbf24;
|
|
1973
|
+
background: rgba(251, 191, 36, 0.18);
|
|
1974
|
+
}
|
|
1975
|
+
|
|
1976
|
+
[data-theme="dark"] .priority-pill-high {
|
|
1977
|
+
color: #f87171;
|
|
1978
|
+
background: rgba(var(--coral-rgb),0.2);
|
|
1979
|
+
box-shadow: inset 0 0 0 1px rgba(var(--coral-rgb),0.35);
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1982
|
+
[data-theme="dark"] .priority-pill-urgent {
|
|
1983
|
+
background: linear-gradient(135deg, #dc2626, #991b1b);
|
|
1984
|
+
}
|
|
1985
|
+
|
|
1986
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1987
|
+
[data-theme="dark"] .priority-pill-urgent {
|
|
1988
|
+
box-shadow: 0 0 0 1px rgba(var(--coral-rgb),0.35), 0 4px 10px rgba(var(--coral-rgb),0.3);
|
|
1989
|
+
}
|
|
1990
|
+
}
|
|
1991
|
+
|
|
1992
|
+
.card-expand-trigger {
|
|
1993
|
+
display: flex;
|
|
1994
|
+
align-items: center;
|
|
1995
|
+
gap: 0.6rem;
|
|
1996
|
+
width: 100%;
|
|
1997
|
+
padding: 0.25rem 0.4rem;
|
|
1998
|
+
margin: 0 -0.4rem;
|
|
1999
|
+
border-radius: 8px;
|
|
2000
|
+
border: none;
|
|
2001
|
+
background: transparent;
|
|
2002
|
+
color: inherit;
|
|
2003
|
+
font: inherit;
|
|
2004
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
2005
|
+
transition: background 160ms ease;
|
|
2006
|
+
}
|
|
2007
|
+
|
|
2008
|
+
.card-expand-trigger:not(.card-expand-trigger--static):hover {
|
|
2009
|
+
background: rgba(var(--starlight-rgb),0.08);
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
[data-theme="dark"] .card-meta,
|
|
2013
|
+
[data-theme="dark"] .card-expand-trigger {
|
|
2014
|
+
color: var(--orbit-text-muted);
|
|
2015
|
+
}
|
|
2016
|
+
|
|
2017
|
+
[data-theme="dark"] .card-expand-trigger:not(.card-expand-trigger--static):hover {
|
|
2018
|
+
background: rgba(var(--starlight-rgb),0.1);
|
|
2019
|
+
color: var(--orbit-text);
|
|
2020
|
+
}
|
|
2021
|
+
|
|
2022
|
+
.card-expandable {
|
|
2023
|
+
display: none;
|
|
2024
|
+
margin-top: 0.4rem;
|
|
2025
|
+
}
|
|
2026
|
+
|
|
2027
|
+
.card.is-expanded .card-expandable {
|
|
2028
|
+
display: block;
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
.card-expand-chevron {
|
|
2032
|
+
width: 12px;
|
|
2033
|
+
height: 12px;
|
|
2034
|
+
margin-left: auto;
|
|
2035
|
+
stroke: currentColor;
|
|
2036
|
+
fill: none;
|
|
2037
|
+
stroke-width: 2.5;
|
|
2038
|
+
stroke-linecap: round;
|
|
2039
|
+
stroke-linejoin: round;
|
|
2040
|
+
transition: transform 180ms ease;
|
|
2041
|
+
opacity: 0.6;
|
|
2042
|
+
}
|
|
2043
|
+
|
|
2044
|
+
.card.is-expanded .card-expand-chevron {
|
|
2045
|
+
transform: rotate(180deg);
|
|
2046
|
+
}
|
|
2047
|
+
|
|
2048
|
+
.card h3 {
|
|
2049
|
+
margin: 0 0 0.5rem;
|
|
2050
|
+
color: var(--orbit-text);
|
|
2051
|
+
font-size: 0.92rem;
|
|
2052
|
+
font-weight: 600;
|
|
2053
|
+
line-height: 1.4;
|
|
2054
|
+
word-break: break-word;
|
|
2055
|
+
letter-spacing: -0.01em;
|
|
2056
|
+
}
|
|
2057
|
+
|
|
2058
|
+
.card p {
|
|
2059
|
+
display: -webkit-box;
|
|
2060
|
+
margin-top: 0.4rem;
|
|
2061
|
+
overflow: hidden;
|
|
2062
|
+
color: var(--muted);
|
|
2063
|
+
font-size: 0.85rem;
|
|
2064
|
+
line-height: 1.4;
|
|
2065
|
+
-webkit-box-orient: vertical;
|
|
2066
|
+
-webkit-line-clamp: 2;
|
|
2067
|
+
}
|
|
2068
|
+
|
|
2069
|
+
.parent-line,
|
|
2070
|
+
.child-count {
|
|
2071
|
+
margin-top: 0.4rem;
|
|
2072
|
+
color: var(--blue);
|
|
2073
|
+
font-size: 0.75rem;
|
|
2074
|
+
font-weight: 800;
|
|
2075
|
+
}
|
|
2076
|
+
|
|
2077
|
+
.labels {
|
|
2078
|
+
display: flex;
|
|
2079
|
+
flex-wrap: wrap;
|
|
2080
|
+
justify-content: flex-start;
|
|
2081
|
+
gap: 0.35rem;
|
|
2082
|
+
margin-top: 0.5rem;
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
.label {
|
|
2086
|
+
display: inline-flex;
|
|
2087
|
+
align-items: center;
|
|
2088
|
+
padding: 0.12rem 0.45rem;
|
|
2089
|
+
border-radius: 4px;
|
|
2090
|
+
background: var(--label-color, var(--subtle-bg));
|
|
2091
|
+
color: #fff;
|
|
2092
|
+
font-size: 0.65rem;
|
|
2093
|
+
font-weight: 800;
|
|
2094
|
+
letter-spacing: 0.04em;
|
|
2095
|
+
text-transform: uppercase;
|
|
2096
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
2097
|
+
}
|
|
2098
|
+
|
|
2099
|
+
.label::before {
|
|
2100
|
+
content: none;
|
|
2101
|
+
}
|
|
2102
|
+
|
|
2103
|
+
[data-theme="dark"] .label {
|
|
2104
|
+
border-color: rgba(255, 255, 255, 0.15);
|
|
2105
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
2106
|
+
}
|
|
2107
|
+
|
|
2108
|
+
/* --------- Right overlay drawer (ticket detail, project manual, create ticket) --------- */
|
|
2109
|
+
|
|
2110
|
+
.drawer-backdrop {
|
|
2111
|
+
position: fixed;
|
|
2112
|
+
inset: 0;
|
|
2113
|
+
z-index: 40;
|
|
2114
|
+
border: none;
|
|
2115
|
+
padding: 0;
|
|
2116
|
+
margin: 0;
|
|
2117
|
+
background: var(--backdrop-bg);
|
|
2118
|
+
backdrop-filter: blur(2px);
|
|
2119
|
+
-webkit-backdrop-filter: blur(2px);
|
|
2120
|
+
opacity: 0;
|
|
2121
|
+
transition: opacity 280ms ease;
|
|
2122
|
+
pointer-events: none;
|
|
2123
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
2124
|
+
}
|
|
2125
|
+
|
|
2126
|
+
.drawer-backdrop.is-visible {
|
|
2127
|
+
opacity: 1;
|
|
2128
|
+
pointer-events: auto;
|
|
2129
|
+
}
|
|
2130
|
+
|
|
2131
|
+
.drawer {
|
|
2132
|
+
position: fixed;
|
|
2133
|
+
top: clamp(0.75rem, 2vh, 1.5rem);
|
|
2134
|
+
right: clamp(0.5rem, 1.5vw, 1rem);
|
|
2135
|
+
bottom: clamp(0.75rem, 2vh, 1.5rem);
|
|
2136
|
+
z-index: 50;
|
|
2137
|
+
display: flex;
|
|
2138
|
+
width: min(34rem, calc(100vw - 1rem));
|
|
2139
|
+
max-width: 100%;
|
|
2140
|
+
flex-direction: column;
|
|
2141
|
+
overflow: hidden;
|
|
2142
|
+
border: 1px solid var(--line);
|
|
2143
|
+
border-radius: 20px;
|
|
2144
|
+
background: var(--drawer-bg);
|
|
2145
|
+
box-shadow: 0 24px 60px rgba(12, 18, 26, 0.28);
|
|
2146
|
+
transform: translateX(calc(100% + 1.5rem));
|
|
2147
|
+
transition: transform 320ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
2148
|
+
}
|
|
2149
|
+
|
|
2150
|
+
.drawer.is-open {
|
|
2151
|
+
transform: translateX(0);
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2154
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2155
|
+
.drawer,
|
|
2156
|
+
.drawer-backdrop {
|
|
2157
|
+
transition: none;
|
|
2158
|
+
}
|
|
2159
|
+
}
|
|
2160
|
+
|
|
2161
|
+
[data-theme="dark"] .drawer {
|
|
2162
|
+
background: rgba(16, 24, 48, 0.96);
|
|
2163
|
+
box-shadow: -10px 0 48px rgba(0, 0, 0, 0.4);
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
.drawer-header {
|
|
2167
|
+
display: grid;
|
|
2168
|
+
flex-shrink: 0;
|
|
2169
|
+
grid-template-columns: 1fr auto auto;
|
|
2170
|
+
grid-template-areas:
|
|
2171
|
+
"title archive close"
|
|
2172
|
+
"tabs tabs tabs";
|
|
2173
|
+
column-gap: 0.5rem;
|
|
2174
|
+
row-gap: 0.55rem;
|
|
2175
|
+
align-items: start;
|
|
2176
|
+
padding: 0.75rem 0.85rem 0.7rem;
|
|
2177
|
+
border-bottom: 1px solid var(--line);
|
|
2178
|
+
background: var(--drawer-head-bg);
|
|
2179
|
+
backdrop-filter: blur(12px);
|
|
2180
|
+
-webkit-backdrop-filter: blur(12px);
|
|
2181
|
+
}
|
|
2182
|
+
|
|
2183
|
+
.drawer-title-block {
|
|
2184
|
+
grid-area: title;
|
|
2185
|
+
display: flex;
|
|
2186
|
+
flex-direction: column;
|
|
2187
|
+
gap: 0.15rem;
|
|
2188
|
+
min-width: 0;
|
|
2189
|
+
padding-top: 0.1rem;
|
|
2190
|
+
}
|
|
2191
|
+
|
|
2192
|
+
.drawer-eyebrow {
|
|
2193
|
+
color: var(--muted);
|
|
2194
|
+
font-size: 0.7rem;
|
|
2195
|
+
font-weight: 800;
|
|
2196
|
+
letter-spacing: 0.1em;
|
|
2197
|
+
text-transform: uppercase;
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
.drawer-eyebrow[hidden] {
|
|
2201
|
+
display: none;
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
/* Below-title kanban-style sub-line: ticket #N + colored type pill, mirroring
|
|
2205
|
+
the second line of cards in the lanes for visual consistency. */
|
|
2206
|
+
.drawer-subtitle {
|
|
2207
|
+
display: flex;
|
|
2208
|
+
align-items: center;
|
|
2209
|
+
gap: 0.55rem;
|
|
2210
|
+
margin-top: 0.45rem;
|
|
2211
|
+
color: var(--muted);
|
|
2212
|
+
font-size: 0.74rem;
|
|
2213
|
+
font-weight: 700;
|
|
2214
|
+
letter-spacing: 0.04em;
|
|
2215
|
+
}
|
|
2216
|
+
|
|
2217
|
+
.drawer-subtitle[hidden] {
|
|
2218
|
+
display: none;
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
.drawer-subtitle .ticket-number {
|
|
2222
|
+
font-weight: 800;
|
|
2223
|
+
font-variant-numeric: tabular-nums;
|
|
2224
|
+
}
|
|
2225
|
+
|
|
2226
|
+
.drawer-title-text {
|
|
2227
|
+
margin: 0;
|
|
2228
|
+
font-size: 1.2rem;
|
|
2229
|
+
letter-spacing: -0.025em;
|
|
2230
|
+
line-height: 1.2;
|
|
2231
|
+
overflow: hidden;
|
|
2232
|
+
text-overflow: ellipsis;
|
|
2233
|
+
}
|
|
2234
|
+
|
|
2235
|
+
.drawer-title-text.editable-field {
|
|
2236
|
+
display: inline-block;
|
|
2237
|
+
max-width: 100%;
|
|
2238
|
+
}
|
|
2239
|
+
|
|
2240
|
+
.drawer-title-text.inline-title-editor {
|
|
2241
|
+
display: block;
|
|
2242
|
+
}
|
|
2243
|
+
|
|
2244
|
+
.drawer-tabs {
|
|
2245
|
+
grid-area: tabs;
|
|
2246
|
+
display: flex;
|
|
2247
|
+
gap: 0.3rem;
|
|
2248
|
+
overflow-x: auto;
|
|
2249
|
+
scrollbar-width: none;
|
|
2250
|
+
}
|
|
2251
|
+
|
|
2252
|
+
.drawer-tabs[hidden] {
|
|
2253
|
+
display: none;
|
|
2254
|
+
}
|
|
2255
|
+
|
|
2256
|
+
.drawer-tabs::-webkit-scrollbar {
|
|
2257
|
+
display: none;
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
.drawer-tab {
|
|
2261
|
+
flex-shrink: 0;
|
|
2262
|
+
padding: 0.38rem 0.78rem;
|
|
2263
|
+
border: 1px solid transparent;
|
|
2264
|
+
border-radius: 999px;
|
|
2265
|
+
background: transparent;
|
|
2266
|
+
color: var(--muted);
|
|
2267
|
+
font: inherit;
|
|
2268
|
+
font-size: 0.78rem;
|
|
2269
|
+
font-weight: 700;
|
|
2270
|
+
letter-spacing: 0.02em;
|
|
2271
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
2272
|
+
transition:
|
|
2273
|
+
background 140ms ease,
|
|
2274
|
+
color 140ms ease,
|
|
2275
|
+
border-color 140ms ease;
|
|
2276
|
+
}
|
|
2277
|
+
|
|
2278
|
+
.drawer-tab:hover {
|
|
2279
|
+
color: var(--ink);
|
|
2280
|
+
background: var(--accent-hover);
|
|
2281
|
+
}
|
|
2282
|
+
|
|
2283
|
+
.drawer-tab.is-active {
|
|
2284
|
+
color: var(--ink);
|
|
2285
|
+
background: var(--accent-active);
|
|
2286
|
+
border-color: var(--accent-border);
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
.drawer-close {
|
|
2290
|
+
grid-area: close;
|
|
2291
|
+
display: inline-grid;
|
|
2292
|
+
place-items: center;
|
|
2293
|
+
width: 2rem;
|
|
2294
|
+
height: 2rem;
|
|
2295
|
+
padding: 0;
|
|
2296
|
+
border: 1px solid var(--line);
|
|
2297
|
+
border-radius: 10px;
|
|
2298
|
+
background: var(--surface);
|
|
2299
|
+
color: var(--ink);
|
|
2300
|
+
font-size: 1.35rem;
|
|
2301
|
+
font-weight: 400;
|
|
2302
|
+
line-height: 1;
|
|
2303
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
2304
|
+
}
|
|
2305
|
+
|
|
2306
|
+
.drawer-close:hover {
|
|
2307
|
+
background: var(--accent-hover);
|
|
2308
|
+
border-color: var(--accent-border);
|
|
2309
|
+
}
|
|
2310
|
+
|
|
2311
|
+
.drawer-archive {
|
|
2312
|
+
grid-area: archive;
|
|
2313
|
+
display: inline-grid;
|
|
2314
|
+
place-items: center;
|
|
2315
|
+
width: 2rem;
|
|
2316
|
+
height: 2rem;
|
|
2317
|
+
padding: 0;
|
|
2318
|
+
border: 1px solid var(--line);
|
|
2319
|
+
border-radius: 10px;
|
|
2320
|
+
background: var(--surface);
|
|
2321
|
+
color: var(--ink);
|
|
2322
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
2323
|
+
}
|
|
2324
|
+
|
|
2325
|
+
.drawer-archive:hover {
|
|
2326
|
+
background: var(--accent-hover);
|
|
2327
|
+
border-color: var(--accent-border);
|
|
2328
|
+
color: var(--danger, #d44);
|
|
2329
|
+
}
|
|
2330
|
+
|
|
2331
|
+
.drawer-archive[hidden] {
|
|
2332
|
+
display: none;
|
|
2333
|
+
}
|
|
2334
|
+
|
|
2335
|
+
.drawer.is-settings {
|
|
2336
|
+
user-select: none;
|
|
2337
|
+
}
|
|
2338
|
+
|
|
2339
|
+
.drawer.is-settings input,
|
|
2340
|
+
.drawer.is-settings textarea,
|
|
2341
|
+
.drawer.is-settings select {
|
|
2342
|
+
user-select: text;
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2345
|
+
.drawer-inner {
|
|
2346
|
+
flex: 1;
|
|
2347
|
+
min-height: 0;
|
|
2348
|
+
overflow-y: auto;
|
|
2349
|
+
padding: 1rem 1rem 1.5rem;
|
|
2350
|
+
scrollbar-gutter: stable;
|
|
2351
|
+
scrollbar-width: thin;
|
|
2352
|
+
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2355
|
+
.drawer-inner::-webkit-scrollbar {
|
|
2356
|
+
width: 10px;
|
|
2357
|
+
}
|
|
2358
|
+
|
|
2359
|
+
.drawer-inner::-webkit-scrollbar-track {
|
|
2360
|
+
background: var(--subtle-bg-2);
|
|
2361
|
+
border-radius: 999px;
|
|
2362
|
+
}
|
|
2363
|
+
|
|
2364
|
+
.drawer-inner::-webkit-scrollbar-thumb {
|
|
2365
|
+
border-radius: 999px;
|
|
2366
|
+
background: linear-gradient(180deg, var(--scrollbar-thumb), rgba(var(--blue-rgb),0.45));
|
|
2367
|
+
border: 2px solid transparent;
|
|
2368
|
+
background-clip: padding-box;
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2371
|
+
.drawer-inner::-webkit-scrollbar-thumb:hover {
|
|
2372
|
+
background: linear-gradient(180deg, var(--scrollbar-thumb-hover), rgba(var(--blue-rgb),0.55));
|
|
2373
|
+
border: 2px solid transparent;
|
|
2374
|
+
background-clip: padding-box;
|
|
2375
|
+
}
|
|
2376
|
+
|
|
2377
|
+
.empty-state {
|
|
2378
|
+
display: grid;
|
|
2379
|
+
min-height: 20rem;
|
|
2380
|
+
place-content: center;
|
|
2381
|
+
gap: 0.4rem;
|
|
2382
|
+
color: var(--muted);
|
|
2383
|
+
text-align: center;
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
.detail-head {
|
|
2387
|
+
display: grid;
|
|
2388
|
+
gap: 0.55rem;
|
|
2389
|
+
padding-bottom: 0.7rem;
|
|
2390
|
+
border-bottom: 1px solid var(--line);
|
|
2391
|
+
}
|
|
2392
|
+
|
|
2393
|
+
.detail-head h2 {
|
|
2394
|
+
font-size: 1.35rem;
|
|
2395
|
+
letter-spacing: -0.04em;
|
|
2396
|
+
}
|
|
2397
|
+
|
|
2398
|
+
/* Click-to-edit affordance for the title + description in the detail pane. */
|
|
2399
|
+
.editable-field {
|
|
2400
|
+
position: relative;
|
|
2401
|
+
border-radius: 10px;
|
|
2402
|
+
margin-inline: -0.35rem;
|
|
2403
|
+
padding: 0.1rem 0.4rem;
|
|
2404
|
+
cursor: url('cursors/live_select.cur'), text;
|
|
2405
|
+
transition:
|
|
2406
|
+
background 160ms ease,
|
|
2407
|
+
box-shadow 160ms ease,
|
|
2408
|
+
color 160ms ease;
|
|
2409
|
+
}
|
|
2410
|
+
|
|
2411
|
+
.editable-field:hover,
|
|
2412
|
+
.editable-field:focus-visible {
|
|
2413
|
+
background: var(--accent-hover);
|
|
2414
|
+
box-shadow: inset 0 0 0 1px var(--accent-border);
|
|
2415
|
+
outline: none;
|
|
2416
|
+
}
|
|
2417
|
+
|
|
2418
|
+
.editable-field.is-placeholder {
|
|
2419
|
+
color: var(--muted);
|
|
2420
|
+
font-style: italic;
|
|
2421
|
+
}
|
|
2422
|
+
|
|
2423
|
+
.detail-title {
|
|
2424
|
+
display: inline-block;
|
|
2425
|
+
max-width: 100%;
|
|
2426
|
+
line-height: 1.15;
|
|
2427
|
+
}
|
|
2428
|
+
|
|
2429
|
+
.inline-title-editor,
|
|
2430
|
+
.inline-desc-editor {
|
|
2431
|
+
width: 100%;
|
|
2432
|
+
border: 1px solid var(--accent-focus-border);
|
|
2433
|
+
border-radius: 10px;
|
|
2434
|
+
color: var(--ink);
|
|
2435
|
+
background: var(--surface-input);
|
|
2436
|
+
box-shadow: var(--accent-ring);
|
|
2437
|
+
font-family: inherit;
|
|
2438
|
+
outline: none;
|
|
2439
|
+
}
|
|
2440
|
+
|
|
2441
|
+
.inline-title-editor {
|
|
2442
|
+
margin-inline: -0.35rem;
|
|
2443
|
+
padding: 0.3rem 0.5rem;
|
|
2444
|
+
font-size: 1.35rem;
|
|
2445
|
+
font-weight: inherit;
|
|
2446
|
+
letter-spacing: -0.04em;
|
|
2447
|
+
line-height: 1.2;
|
|
2448
|
+
}
|
|
2449
|
+
|
|
2450
|
+
.inline-desc-editor {
|
|
2451
|
+
margin-top: 0.5rem;
|
|
2452
|
+
padding: 0.65rem 0.75rem;
|
|
2453
|
+
min-height: 5rem;
|
|
2454
|
+
font-size: 1rem;
|
|
2455
|
+
line-height: 1.45;
|
|
2456
|
+
resize: vertical;
|
|
2457
|
+
}
|
|
2458
|
+
|
|
2459
|
+
.description {
|
|
2460
|
+
margin-top: 0.5rem;
|
|
2461
|
+
color: var(--muted);
|
|
2462
|
+
line-height: 1.45;
|
|
2463
|
+
white-space: pre-wrap;
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2466
|
+
/* The detail pane's lede description is body copy, not a card excerpt — give
|
|
2467
|
+
it more presence than the universal muted .description rule. */
|
|
2468
|
+
.detail-head > .description {
|
|
2469
|
+
margin: 0.25rem 0 0.4rem;
|
|
2470
|
+
color: var(--ink);
|
|
2471
|
+
opacity: 0.88;
|
|
2472
|
+
font-size: 1rem;
|
|
2473
|
+
line-height: 1.55;
|
|
2474
|
+
}
|
|
2475
|
+
|
|
2476
|
+
/* Project Repository tab metadata grid for read-only repository details. */
|
|
2477
|
+
.meta-grid {
|
|
2478
|
+
display: grid;
|
|
2479
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
2480
|
+
gap: 0.5rem;
|
|
2481
|
+
margin-top: 0.7rem;
|
|
2482
|
+
}
|
|
2483
|
+
|
|
2484
|
+
.meta {
|
|
2485
|
+
border: 1px solid var(--line);
|
|
2486
|
+
border-radius: 14px;
|
|
2487
|
+
padding: 0.58rem;
|
|
2488
|
+
background: var(--surface-dim);
|
|
2489
|
+
}
|
|
2490
|
+
|
|
2491
|
+
.meta span {
|
|
2492
|
+
display: block;
|
|
2493
|
+
color: var(--muted);
|
|
2494
|
+
font-size: 0.74rem;
|
|
2495
|
+
text-transform: uppercase;
|
|
2496
|
+
}
|
|
2497
|
+
|
|
2498
|
+
.meta strong {
|
|
2499
|
+
display: block;
|
|
2500
|
+
margin-top: 0.15rem;
|
|
2501
|
+
}
|
|
2502
|
+
|
|
2503
|
+
/* --------- Ticket detail meta list ---------
|
|
2504
|
+
* Single-column "definition list" — each meta field on its own row with a
|
|
2505
|
+
* left-aligned eyebrow label and an inline-editable value. No outer rounded
|
|
2506
|
+
* box per field; rows separate via a hairline divider. Selects/inputs style
|
|
2507
|
+
* as text-first (clicking reveals the editing affordance, like Linear/Notion)
|
|
2508
|
+
* so the pane reads more like a document than a form.
|
|
2509
|
+
*/
|
|
2510
|
+
.ticket-meta {
|
|
2511
|
+
display: flex;
|
|
2512
|
+
flex-direction: column;
|
|
2513
|
+
gap: 0;
|
|
2514
|
+
margin: 1.2rem 0 0;
|
|
2515
|
+
padding: 0;
|
|
2516
|
+
}
|
|
2517
|
+
|
|
2518
|
+
.ticket-meta-row {
|
|
2519
|
+
display: grid;
|
|
2520
|
+
grid-template-columns: 5.5rem minmax(0, 1fr);
|
|
2521
|
+
gap: 1rem;
|
|
2522
|
+
align-items: center;
|
|
2523
|
+
padding: 0.45rem 0;
|
|
2524
|
+
border-bottom: 1px solid rgba(29, 37, 40, 0.07);
|
|
2525
|
+
}
|
|
2526
|
+
|
|
2527
|
+
.ticket-meta-row:last-child {
|
|
2528
|
+
border-bottom: none;
|
|
2529
|
+
}
|
|
2530
|
+
|
|
2531
|
+
.ticket-meta-row--stack {
|
|
2532
|
+
align-items: center;
|
|
2533
|
+
}
|
|
2534
|
+
|
|
2535
|
+
/* Lay pills-row + input + Add button on a single wrapping line, so Labels
|
|
2536
|
+
match the visual rhythm of the single-line rows above (Type / State /
|
|
2537
|
+
Priority) instead of stacking pills + form on two rows. */
|
|
2538
|
+
.ticket-meta-row--stack > dd {
|
|
2539
|
+
display: flex;
|
|
2540
|
+
flex-wrap: wrap;
|
|
2541
|
+
gap: 0.35rem;
|
|
2542
|
+
align-items: center;
|
|
2543
|
+
min-width: 0;
|
|
2544
|
+
padding-top: 0;
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2547
|
+
.ticket-meta-row--stack .label-pills-row,
|
|
2548
|
+
.ticket-meta-row--stack .label-add-row {
|
|
2549
|
+
flex: 1 1 auto;
|
|
2550
|
+
min-width: 0;
|
|
2551
|
+
}
|
|
2552
|
+
|
|
2553
|
+
.ticket-meta-row--stack .label-add-row {
|
|
2554
|
+
flex: 1 1 12rem;
|
|
2555
|
+
}
|
|
2556
|
+
|
|
2557
|
+
.ticket-meta dt {
|
|
2558
|
+
margin: 0;
|
|
2559
|
+
padding-top: 0.15rem;
|
|
2560
|
+
color: var(--muted);
|
|
2561
|
+
font-size: 0.7rem;
|
|
2562
|
+
font-weight: 800;
|
|
2563
|
+
letter-spacing: 0.12em;
|
|
2564
|
+
line-height: 1.2;
|
|
2565
|
+
text-transform: uppercase;
|
|
2566
|
+
white-space: nowrap;
|
|
2567
|
+
}
|
|
2568
|
+
|
|
2569
|
+
.ticket-meta dd {
|
|
2570
|
+
margin: 0;
|
|
2571
|
+
min-width: 0;
|
|
2572
|
+
}
|
|
2573
|
+
|
|
2574
|
+
/* Inline meta controls — borderless and transparent until you reach for them.
|
|
2575
|
+
Hover/focus reveals a soft accent backdrop so the affordance is unambiguous
|
|
2576
|
+
without imposing a permanent box. */
|
|
2577
|
+
.meta-inline {
|
|
2578
|
+
width: 100%;
|
|
2579
|
+
margin: 0;
|
|
2580
|
+
padding: 0.42rem 0.55rem;
|
|
2581
|
+
border: 1px solid transparent;
|
|
2582
|
+
border-radius: 10px;
|
|
2583
|
+
/* Use background-color only — `background` shorthand resets background-image
|
|
2584
|
+
and removes the custom select chevron; transitioning `background` also
|
|
2585
|
+
animates image/position in odd ways. */
|
|
2586
|
+
background-color: transparent;
|
|
2587
|
+
color: var(--ink);
|
|
2588
|
+
font: inherit;
|
|
2589
|
+
font-size: 0.95rem;
|
|
2590
|
+
font-weight: 600;
|
|
2591
|
+
letter-spacing: 0;
|
|
2592
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
2593
|
+
transition:
|
|
2594
|
+
background-color 140ms ease,
|
|
2595
|
+
border-color 140ms ease,
|
|
2596
|
+
box-shadow 140ms ease;
|
|
2597
|
+
}
|
|
2598
|
+
|
|
2599
|
+
/* Custom chevron for native <select> — symmetric horizontal inset (tokens: --select-chevron-pad-x, --select-chevron-size).
|
|
2600
|
+
Add `select-chevron-field` on any styled dropdown; ticket detail selects use `meta-inline` and pick these rules up too. */
|
|
2601
|
+
select.select-chevron-field,
|
|
2602
|
+
select.meta-inline {
|
|
2603
|
+
appearance: none;
|
|
2604
|
+
-webkit-appearance: none;
|
|
2605
|
+
-moz-appearance: none;
|
|
2606
|
+
padding-right: calc(var(--select-chevron-pad-x) * 2 + var(--select-chevron-size));
|
|
2607
|
+
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
|
|
2608
|
+
background-repeat: no-repeat;
|
|
2609
|
+
background-position: right var(--select-chevron-pad-x) center;
|
|
2610
|
+
background-size: var(--select-chevron-size) var(--select-chevron-size);
|
|
2611
|
+
}
|
|
2612
|
+
|
|
2613
|
+
select.select-chevron-field::-ms-expand,
|
|
2614
|
+
select.meta-inline::-ms-expand {
|
|
2615
|
+
display: none;
|
|
2616
|
+
}
|
|
2617
|
+
|
|
2618
|
+
/* Dark selects: starscape navy fill so the closed pill and native option popup
|
|
2619
|
+
both read clearly. color-scheme: dark (on the root) also asks the browser to
|
|
2620
|
+
use its dark widget variant as a baseline. */
|
|
2621
|
+
[data-theme="dark"] select,
|
|
2622
|
+
[data-theme="dark"] .create-flyout-form select,
|
|
2623
|
+
[data-theme="dark"] .lane-row select,
|
|
2624
|
+
[data-theme="dark"] .lane-create-form select,
|
|
2625
|
+
[data-theme="dark"] .project-entry-form select {
|
|
2626
|
+
color: #e8efff;
|
|
2627
|
+
background: linear-gradient(180deg, rgba(26, 43, 80, 0.85), rgba(15, 25, 50, 0.9));
|
|
2628
|
+
border-color: rgba(var(--starlight-rgb),0.25);
|
|
2629
|
+
}
|
|
2630
|
+
|
|
2631
|
+
/* Must stay AFTER the dark `.lane-row select` / `.project-entry-form select`
|
|
2632
|
+
shorthand above — equal specificity, source order decides. */
|
|
2633
|
+
[data-theme="dark"] select.select-chevron-field,
|
|
2634
|
+
[data-theme="dark"] select.meta-inline {
|
|
2635
|
+
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a8c0ff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
|
|
2636
|
+
background-repeat: no-repeat;
|
|
2637
|
+
background-position: right var(--select-chevron-pad-x) center;
|
|
2638
|
+
background-size: var(--select-chevron-size) var(--select-chevron-size);
|
|
2639
|
+
}
|
|
2640
|
+
|
|
2641
|
+
[data-theme="dark"] select:hover {
|
|
2642
|
+
border-color: rgba(var(--starlight-rgb),0.45);
|
|
2643
|
+
}
|
|
2644
|
+
|
|
2645
|
+
[data-theme="dark"] select:focus {
|
|
2646
|
+
border-color: rgba(var(--starlight-rgb),0.6);
|
|
2647
|
+
box-shadow: 0 0 0 3px rgba(var(--starlight-rgb),0.15);
|
|
2648
|
+
}
|
|
2649
|
+
|
|
2650
|
+
[data-theme="dark"] option {
|
|
2651
|
+
background: #16213e;
|
|
2652
|
+
color: #e8efff;
|
|
2653
|
+
}
|
|
2654
|
+
|
|
2655
|
+
[data-theme="dark"] option:checked,
|
|
2656
|
+
[data-theme="dark"] option:hover {
|
|
2657
|
+
background: #1f3a6b;
|
|
2658
|
+
color: #fff;
|
|
2659
|
+
}
|
|
2660
|
+
|
|
2661
|
+
.meta-inline:hover:not(:disabled) {
|
|
2662
|
+
background-color: var(--accent-hover);
|
|
2663
|
+
border-color: var(--accent-border);
|
|
2664
|
+
}
|
|
2665
|
+
|
|
2666
|
+
.meta-inline:focus {
|
|
2667
|
+
background-color: var(--surface-input);
|
|
2668
|
+
border-color: var(--accent-focus-border);
|
|
2669
|
+
box-shadow: var(--accent-ring);
|
|
2670
|
+
outline: none;
|
|
2671
|
+
}
|
|
2672
|
+
|
|
2673
|
+
.meta-inline:disabled {
|
|
2674
|
+
opacity: 0.6;
|
|
2675
|
+
cursor: url('cursors/live_unavail.cur'), not-allowed;
|
|
2676
|
+
}
|
|
2677
|
+
|
|
2678
|
+
input.meta-inline {
|
|
2679
|
+
cursor: url('cursors/live_select.cur'), text;
|
|
2680
|
+
}
|
|
2681
|
+
|
|
2682
|
+
/* Labels add-row inputs — same inline-text aesthetic so the pane stays
|
|
2683
|
+
uniform. Fully reveal once focused. */
|
|
2684
|
+
.meta-inline-input {
|
|
2685
|
+
border: 1px solid transparent;
|
|
2686
|
+
background: transparent;
|
|
2687
|
+
border-radius: 10px;
|
|
2688
|
+
transition:
|
|
2689
|
+
background 140ms ease,
|
|
2690
|
+
border-color 140ms ease,
|
|
2691
|
+
box-shadow 140ms ease;
|
|
2692
|
+
}
|
|
2693
|
+
|
|
2694
|
+
.meta-inline-input:hover {
|
|
2695
|
+
background: var(--accent-hover);
|
|
2696
|
+
border-color: var(--accent-border);
|
|
2697
|
+
}
|
|
2698
|
+
|
|
2699
|
+
.meta-inline-input:focus {
|
|
2700
|
+
background: var(--surface-input);
|
|
2701
|
+
border-color: var(--accent-focus-border);
|
|
2702
|
+
box-shadow: var(--accent-ring);
|
|
2703
|
+
}
|
|
2704
|
+
|
|
2705
|
+
[data-theme="dark"] .ticket-meta-row {
|
|
2706
|
+
border-bottom-color: rgba(var(--starlight-rgb),0.08);
|
|
2707
|
+
}
|
|
2708
|
+
|
|
2709
|
+
[data-theme="dark"] .meta-inline {
|
|
2710
|
+
color: rgba(232, 239, 255, 0.95);
|
|
2711
|
+
}
|
|
2712
|
+
|
|
2713
|
+
[data-theme="dark"] .meta-inline:hover:not(:disabled) {
|
|
2714
|
+
background-color: rgba(var(--starlight-rgb),0.06);
|
|
2715
|
+
border-color: rgba(var(--starlight-rgb),0.22);
|
|
2716
|
+
}
|
|
2717
|
+
|
|
2718
|
+
[data-theme="dark"] .meta-inline:focus,
|
|
2719
|
+
[data-theme="dark"] .meta-inline-input:focus {
|
|
2720
|
+
background-color: rgba(15, 25, 50, 0.7);
|
|
2721
|
+
border-color: rgba(var(--starlight-rgb),0.5);
|
|
2722
|
+
box-shadow: 0 0 0 3px rgba(var(--starlight-rgb),0.12);
|
|
2723
|
+
}
|
|
2724
|
+
|
|
2725
|
+
[data-theme="dark"] .meta-inline-input:hover {
|
|
2726
|
+
background-color: rgba(var(--starlight-rgb),0.06);
|
|
2727
|
+
border-color: rgba(var(--starlight-rgb),0.22);
|
|
2728
|
+
}
|
|
2729
|
+
|
|
2730
|
+
.label-pill-remove {
|
|
2731
|
+
display: inline-grid;
|
|
2732
|
+
width: 1.35rem;
|
|
2733
|
+
height: 1.35rem;
|
|
2734
|
+
place-items: center;
|
|
2735
|
+
padding: 0;
|
|
2736
|
+
border: 0;
|
|
2737
|
+
border-radius: 999px;
|
|
2738
|
+
color: inherit;
|
|
2739
|
+
font-size: 1rem;
|
|
2740
|
+
line-height: 1;
|
|
2741
|
+
background: var(--subtle-bg);
|
|
2742
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
2743
|
+
transition: background 120ms ease;
|
|
2744
|
+
}
|
|
2745
|
+
|
|
2746
|
+
.label-pill-remove:hover {
|
|
2747
|
+
background: rgba(var(--red-rgb),0.18);
|
|
2748
|
+
}
|
|
2749
|
+
|
|
2750
|
+
.label-pill-removable .label-pill-remove {
|
|
2751
|
+
color: var(--ink);
|
|
2752
|
+
background: var(--surface-dim);
|
|
2753
|
+
}
|
|
2754
|
+
|
|
2755
|
+
.label-add-row {
|
|
2756
|
+
display: flex;
|
|
2757
|
+
flex-wrap: wrap;
|
|
2758
|
+
gap: 0.4rem;
|
|
2759
|
+
align-items: center;
|
|
2760
|
+
}
|
|
2761
|
+
|
|
2762
|
+
.label-add-input {
|
|
2763
|
+
flex: 1;
|
|
2764
|
+
min-width: 8rem;
|
|
2765
|
+
padding: 0.62rem 0.8rem;
|
|
2766
|
+
font-size: 0.86rem;
|
|
2767
|
+
}
|
|
2768
|
+
|
|
2769
|
+
.meta-add-btn {
|
|
2770
|
+
flex: 0 0 auto;
|
|
2771
|
+
padding: 0.5rem 0.85rem;
|
|
2772
|
+
font-size: 0.82rem;
|
|
2773
|
+
}
|
|
2774
|
+
|
|
2775
|
+
.detail-updated {
|
|
2776
|
+
margin: 0 0 0.1rem;
|
|
2777
|
+
color: var(--muted);
|
|
2778
|
+
font-size: 0.7rem;
|
|
2779
|
+
font-weight: 700;
|
|
2780
|
+
letter-spacing: 0.08em;
|
|
2781
|
+
text-transform: uppercase;
|
|
2782
|
+
opacity: 0.7;
|
|
2783
|
+
}
|
|
2784
|
+
|
|
2785
|
+
.detail-label-block {
|
|
2786
|
+
margin-top: 1rem;
|
|
2787
|
+
padding-top: 0.85rem;
|
|
2788
|
+
border-top: 1px solid var(--line);
|
|
2789
|
+
}
|
|
2790
|
+
|
|
2791
|
+
.detail-label-heading {
|
|
2792
|
+
margin: 0 0 0.25rem;
|
|
2793
|
+
color: var(--muted);
|
|
2794
|
+
font-size: 0.72rem;
|
|
2795
|
+
font-weight: 800;
|
|
2796
|
+
letter-spacing: 0.1em;
|
|
2797
|
+
text-transform: uppercase;
|
|
2798
|
+
}
|
|
2799
|
+
|
|
2800
|
+
.detail-label-help {
|
|
2801
|
+
margin: 0 0 0.5rem;
|
|
2802
|
+
color: var(--muted);
|
|
2803
|
+
font-size: 0.78rem;
|
|
2804
|
+
line-height: 1.35;
|
|
2805
|
+
}
|
|
2806
|
+
|
|
2807
|
+
.detail-label-help code {
|
|
2808
|
+
padding: 0.08rem 0.28rem;
|
|
2809
|
+
border-radius: 6px;
|
|
2810
|
+
background: var(--subtle-bg);
|
|
2811
|
+
font-size: 0.76rem;
|
|
2812
|
+
}
|
|
2813
|
+
|
|
2814
|
+
.label-pills-row {
|
|
2815
|
+
display: flex;
|
|
2816
|
+
flex-wrap: wrap;
|
|
2817
|
+
gap: 0.35rem;
|
|
2818
|
+
align-items: center;
|
|
2819
|
+
}
|
|
2820
|
+
|
|
2821
|
+
.label-pills-row:empty {
|
|
2822
|
+
display: none;
|
|
2823
|
+
}
|
|
2824
|
+
|
|
2825
|
+
.label-pill-removable {
|
|
2826
|
+
display: inline-flex;
|
|
2827
|
+
align-items: center;
|
|
2828
|
+
gap: 0.25rem;
|
|
2829
|
+
border-radius: 999px;
|
|
2830
|
+
padding: 0.15rem 0.35rem 0.15rem 0.55rem;
|
|
2831
|
+
background: var(--subtle-bg);
|
|
2832
|
+
font-size: 0.78rem;
|
|
2833
|
+
font-weight: 700;
|
|
2834
|
+
}
|
|
2835
|
+
|
|
2836
|
+
.label-pill-removable::before {
|
|
2837
|
+
width: 0.45rem;
|
|
2838
|
+
height: 0.45rem;
|
|
2839
|
+
border-radius: 50%;
|
|
2840
|
+
background: var(--label-color, var(--muted));
|
|
2841
|
+
content: "";
|
|
2842
|
+
}
|
|
2843
|
+
|
|
2844
|
+
.section {
|
|
2845
|
+
margin-top: 1.6rem;
|
|
2846
|
+
}
|
|
2847
|
+
|
|
2848
|
+
.section h3 {
|
|
2849
|
+
margin-bottom: 0.7rem;
|
|
2850
|
+
color: var(--ink);
|
|
2851
|
+
font-size: 0.86rem;
|
|
2852
|
+
font-weight: 800;
|
|
2853
|
+
letter-spacing: 0.07em;
|
|
2854
|
+
line-height: 1.25;
|
|
2855
|
+
opacity: 0.9;
|
|
2856
|
+
text-transform: uppercase;
|
|
2857
|
+
}
|
|
2858
|
+
|
|
2859
|
+
details.section > summary {
|
|
2860
|
+
list-style: none;
|
|
2861
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
2862
|
+
display: flex;
|
|
2863
|
+
align-items: center;
|
|
2864
|
+
gap: 0.4rem;
|
|
2865
|
+
}
|
|
2866
|
+
|
|
2867
|
+
details.section > summary::-webkit-details-marker {
|
|
2868
|
+
display: none;
|
|
2869
|
+
}
|
|
2870
|
+
|
|
2871
|
+
/* ── Accordion chevron (global) ──────────────────────────────────────── */
|
|
2872
|
+
details.section > summary::before {
|
|
2873
|
+
content: "›";
|
|
2874
|
+
color: var(--muted);
|
|
2875
|
+
font-size: 1.15rem;
|
|
2876
|
+
line-height: 1;
|
|
2877
|
+
transition: transform 150ms ease;
|
|
2878
|
+
}
|
|
2879
|
+
|
|
2880
|
+
details.section[open] > summary::before {
|
|
2881
|
+
transform: rotate(90deg);
|
|
2882
|
+
}
|
|
2883
|
+
|
|
2884
|
+
details.section > summary h3 {
|
|
2885
|
+
display: inline;
|
|
2886
|
+
margin: 0;
|
|
2887
|
+
}
|
|
2888
|
+
|
|
2889
|
+
/* Match the .section h3 { margin-bottom: 0.7rem } rhythm — the inner h3 is
|
|
2890
|
+
contained inside <summary>, so the gap has to live on the first child
|
|
2891
|
+
that follows the summary instead. */
|
|
2892
|
+
details.section[open] > summary + * {
|
|
2893
|
+
margin-top: 0.7rem;
|
|
2894
|
+
}
|
|
2895
|
+
|
|
2896
|
+
/* The MCP setup section is itself display:grid with gap — the generic
|
|
2897
|
+
margin-top above would double-space after summary. Reset it and let the
|
|
2898
|
+
grid gap own the rhythm. Also neutralise the title-row's own bottom margin
|
|
2899
|
+
when it sits inside a <summary> flex container. */
|
|
2900
|
+
details.section.mcp-setup[open] > summary + * {
|
|
2901
|
+
margin-top: 0;
|
|
2902
|
+
}
|
|
2903
|
+
|
|
2904
|
+
details.section > summary .mcp-title-row {
|
|
2905
|
+
margin-bottom: 0;
|
|
2906
|
+
}
|
|
2907
|
+
|
|
2908
|
+
.comment {
|
|
2909
|
+
border-left: 3px solid var(--accent-border);
|
|
2910
|
+
margin-top: 0.55rem;
|
|
2911
|
+
padding: 0.6rem 0.7rem;
|
|
2912
|
+
border-radius: 0 12px 12px 0;
|
|
2913
|
+
background: var(--surface-dim);
|
|
2914
|
+
}
|
|
2915
|
+
|
|
2916
|
+
.comment.checkpoint {
|
|
2917
|
+
border-left-color: var(--danger);
|
|
2918
|
+
}
|
|
2919
|
+
|
|
2920
|
+
.comment.status-change {
|
|
2921
|
+
border-left-color: var(--muted);
|
|
2922
|
+
}
|
|
2923
|
+
|
|
2924
|
+
.status-route {
|
|
2925
|
+
font-weight: 600;
|
|
2926
|
+
letter-spacing: 0.01em;
|
|
2927
|
+
}
|
|
2928
|
+
|
|
2929
|
+
.comment-meta {
|
|
2930
|
+
display: flex;
|
|
2931
|
+
justify-content: space-between;
|
|
2932
|
+
gap: 0.7rem;
|
|
2933
|
+
color: var(--muted);
|
|
2934
|
+
font-size: 0.76rem;
|
|
2935
|
+
}
|
|
2936
|
+
|
|
2937
|
+
.comment-body {
|
|
2938
|
+
margin-top: 0.35rem;
|
|
2939
|
+
white-space: pre-wrap;
|
|
2940
|
+
line-height: 1.4;
|
|
2941
|
+
}
|
|
2942
|
+
|
|
2943
|
+
.comment-form {
|
|
2944
|
+
display: grid;
|
|
2945
|
+
gap: 0.5rem;
|
|
2946
|
+
margin-top: 0.8rem;
|
|
2947
|
+
}
|
|
2948
|
+
|
|
2949
|
+
.comment-form textarea {
|
|
2950
|
+
min-height: 5rem;
|
|
2951
|
+
padding: 0.8rem;
|
|
2952
|
+
resize: vertical;
|
|
2953
|
+
}
|
|
2954
|
+
|
|
2955
|
+
.field-form {
|
|
2956
|
+
display: grid;
|
|
2957
|
+
gap: 0.65rem;
|
|
2958
|
+
}
|
|
2959
|
+
|
|
2960
|
+
.field-form label {
|
|
2961
|
+
display: grid;
|
|
2962
|
+
gap: 0.32rem;
|
|
2963
|
+
}
|
|
2964
|
+
|
|
2965
|
+
.field-form span {
|
|
2966
|
+
color: var(--muted);
|
|
2967
|
+
font-size: 0.76rem;
|
|
2968
|
+
font-weight: 800;
|
|
2969
|
+
letter-spacing: 0.06em;
|
|
2970
|
+
text-transform: uppercase;
|
|
2971
|
+
}
|
|
2972
|
+
|
|
2973
|
+
.field-form textarea {
|
|
2974
|
+
min-height: 6rem;
|
|
2975
|
+
padding: 0.62rem 0.8rem;
|
|
2976
|
+
resize: vertical;
|
|
2977
|
+
}
|
|
2978
|
+
|
|
2979
|
+
/* Settings → Notes tab — form gaps, hint alignment, larger textareas. */
|
|
2980
|
+
.field-form.settings-notes-form {
|
|
2981
|
+
gap: 1.45rem;
|
|
2982
|
+
}
|
|
2983
|
+
|
|
2984
|
+
.field-form.settings-notes-form > .settings-notes-field-group {
|
|
2985
|
+
gap: 0.42rem;
|
|
2986
|
+
}
|
|
2987
|
+
|
|
2988
|
+
.field-form.settings-notes-form textarea.settings-notes-textarea {
|
|
2989
|
+
min-height: 12rem;
|
|
2990
|
+
margin-top: 0.12rem;
|
|
2991
|
+
}
|
|
2992
|
+
|
|
2993
|
+
.field-form.settings-notes-form .settings-notes-save {
|
|
2994
|
+
margin-top: 0.65rem;
|
|
2995
|
+
}
|
|
2996
|
+
|
|
2997
|
+
.field-form textarea[name="implementation_updates"] {
|
|
2998
|
+
min-height: 8rem;
|
|
2999
|
+
}
|
|
3000
|
+
|
|
3001
|
+
.ai-context-setup textarea[name="agent_instructions"] {
|
|
3002
|
+
min-height: 9rem;
|
|
3003
|
+
}
|
|
3004
|
+
|
|
3005
|
+
.ai-context-setup > .description {
|
|
3006
|
+
margin-bottom: 0.7rem;
|
|
3007
|
+
}
|
|
3008
|
+
|
|
3009
|
+
/* Repository tab head — borderless, transparent meta tiles. The eyebrow is
|
|
3010
|
+
muted/uppercase, the value sits beneath in the project ink color. No fill,
|
|
3011
|
+
no per-tile border; the parent .detail-head hairline is the only divider. */
|
|
3012
|
+
.project-manual-head {
|
|
3013
|
+
background: transparent;
|
|
3014
|
+
padding-bottom: 0.4rem;
|
|
3015
|
+
}
|
|
3016
|
+
|
|
3017
|
+
.project-manual-head .meta-grid {
|
|
3018
|
+
margin-top: 0.2rem;
|
|
3019
|
+
grid-template-columns: minmax(0, 1fr);
|
|
3020
|
+
gap: 0.95rem;
|
|
3021
|
+
}
|
|
3022
|
+
|
|
3023
|
+
.project-manual-head .meta {
|
|
3024
|
+
border: 0;
|
|
3025
|
+
padding: 0;
|
|
3026
|
+
background: transparent;
|
|
3027
|
+
}
|
|
3028
|
+
|
|
3029
|
+
.project-manual-head .meta span {
|
|
3030
|
+
font-size: 0.68rem;
|
|
3031
|
+
font-weight: 800;
|
|
3032
|
+
letter-spacing: 0.1em;
|
|
3033
|
+
color: var(--muted);
|
|
3034
|
+
}
|
|
3035
|
+
|
|
3036
|
+
.project-manual-head .meta strong {
|
|
3037
|
+
margin-top: 0.2rem;
|
|
3038
|
+
font-size: 0.95rem;
|
|
3039
|
+
font-weight: 600;
|
|
3040
|
+
letter-spacing: -0.005em;
|
|
3041
|
+
color: var(--ink);
|
|
3042
|
+
overflow-wrap: anywhere;
|
|
3043
|
+
}
|
|
3044
|
+
|
|
3045
|
+
.project-manual-head .meta--repo-path {
|
|
3046
|
+
display: grid;
|
|
3047
|
+
grid-template-columns: 1fr;
|
|
3048
|
+
gap: 0.28rem;
|
|
3049
|
+
width: 100%;
|
|
3050
|
+
}
|
|
3051
|
+
|
|
3052
|
+
.project-manual-head .meta--repo-path strong + span {
|
|
3053
|
+
margin-top: 0.4rem;
|
|
3054
|
+
}
|
|
3055
|
+
|
|
3056
|
+
.repository-danger-zone {
|
|
3057
|
+
margin-top: 1.25rem;
|
|
3058
|
+
padding-top: 1rem;
|
|
3059
|
+
border-top: 1px solid rgba(var(--red-rgb),0.22);
|
|
3060
|
+
}
|
|
3061
|
+
|
|
3062
|
+
.repository-danger-zone h3 {
|
|
3063
|
+
color: var(--danger);
|
|
3064
|
+
}
|
|
3065
|
+
|
|
3066
|
+
.repository-delete-actions {
|
|
3067
|
+
display: flex;
|
|
3068
|
+
flex-wrap: wrap;
|
|
3069
|
+
gap: 0.55rem;
|
|
3070
|
+
margin-top: 0.8rem;
|
|
3071
|
+
}
|
|
3072
|
+
|
|
3073
|
+
.repository-danger-zone > button {
|
|
3074
|
+
margin-top: 0.8rem;
|
|
3075
|
+
}
|
|
3076
|
+
|
|
3077
|
+
.repository-danger-zone button.danger-button {
|
|
3078
|
+
color: #fff;
|
|
3079
|
+
border: 1px solid rgba(var(--red-rgb),0.42);
|
|
3080
|
+
background: var(--danger);
|
|
3081
|
+
}
|
|
3082
|
+
|
|
3083
|
+
.repository-danger-zone button.ghost.danger-button {
|
|
3084
|
+
color: var(--danger);
|
|
3085
|
+
background: rgba(var(--red-rgb),0.06);
|
|
3086
|
+
}
|
|
3087
|
+
|
|
3088
|
+
.repository-danger-zone button.danger-button:hover:not(:disabled) {
|
|
3089
|
+
box-shadow: 0 10px 24px rgba(var(--red-rgb),0.18);
|
|
3090
|
+
}
|
|
3091
|
+
|
|
3092
|
+
.repository-confirm-field {
|
|
3093
|
+
display: grid;
|
|
3094
|
+
gap: 0.35rem;
|
|
3095
|
+
margin-top: 0.85rem;
|
|
3096
|
+
}
|
|
3097
|
+
|
|
3098
|
+
.repository-confirm-field span {
|
|
3099
|
+
color: var(--muted);
|
|
3100
|
+
font-size: 0.72rem;
|
|
3101
|
+
font-weight: 800;
|
|
3102
|
+
letter-spacing: 0.08em;
|
|
3103
|
+
text-transform: uppercase;
|
|
3104
|
+
}
|
|
3105
|
+
|
|
3106
|
+
.repository-confirm-field strong {
|
|
3107
|
+
color: var(--ink);
|
|
3108
|
+
font-size: 0.95rem;
|
|
3109
|
+
overflow-wrap: anywhere;
|
|
3110
|
+
}
|
|
3111
|
+
|
|
3112
|
+
.repository-confirm-field input {
|
|
3113
|
+
width: 100%;
|
|
3114
|
+
padding: 0.62rem 0.8rem;
|
|
3115
|
+
}
|
|
3116
|
+
|
|
3117
|
+
[data-theme="dark"] .repository-danger-zone {
|
|
3118
|
+
border-top-color: rgba(var(--coral-rgb),0.28);
|
|
3119
|
+
}
|
|
3120
|
+
|
|
3121
|
+
[data-theme="dark"] .repository-danger-zone h3,
|
|
3122
|
+
[data-theme="dark"] .repository-danger-zone button.ghost.danger-button {
|
|
3123
|
+
color: #ffb4b4;
|
|
3124
|
+
}
|
|
3125
|
+
|
|
3126
|
+
[data-theme="dark"] .repository-danger-zone button.danger-button {
|
|
3127
|
+
border-color: rgba(var(--coral-rgb),0.55);
|
|
3128
|
+
background: linear-gradient(135deg, rgba(127, 29, 29, 0.92), rgba(153, 27, 27, 0.88));
|
|
3129
|
+
}
|
|
3130
|
+
|
|
3131
|
+
[data-theme="dark"] .repository-danger-zone button.ghost.danger-button {
|
|
3132
|
+
background: rgba(var(--coral-rgb),0.1);
|
|
3133
|
+
}
|
|
3134
|
+
|
|
3135
|
+
.project-entry-form {
|
|
3136
|
+
margin-top: 0.9rem;
|
|
3137
|
+
}
|
|
3138
|
+
|
|
3139
|
+
.project-entry-form input {
|
|
3140
|
+
padding: 0.62rem 0.8rem;
|
|
3141
|
+
}
|
|
3142
|
+
|
|
3143
|
+
.project-entry-form select.select-chevron-field {
|
|
3144
|
+
padding: 0.62rem var(--select-chevron-pad-x);
|
|
3145
|
+
padding-right: calc(var(--select-chevron-pad-x) * 2 + var(--select-chevron-size));
|
|
3146
|
+
}
|
|
3147
|
+
|
|
3148
|
+
.project-entry-actions {
|
|
3149
|
+
display: flex;
|
|
3150
|
+
align-items: center;
|
|
3151
|
+
gap: 0.5rem;
|
|
3152
|
+
margin-left: auto;
|
|
3153
|
+
}
|
|
3154
|
+
|
|
3155
|
+
.project-entry-strike {
|
|
3156
|
+
padding: 0.38rem 0.65rem;
|
|
3157
|
+
font-size: 0.7rem;
|
|
3158
|
+
}
|
|
3159
|
+
|
|
3160
|
+
.project-entry-status {
|
|
3161
|
+
display: block;
|
|
3162
|
+
margin-top: 0.15rem;
|
|
3163
|
+
font-weight: 700;
|
|
3164
|
+
letter-spacing: 0.04em;
|
|
3165
|
+
text-transform: uppercase;
|
|
3166
|
+
}
|
|
3167
|
+
|
|
3168
|
+
.project-entry.is-struck {
|
|
3169
|
+
opacity: 0.7;
|
|
3170
|
+
}
|
|
3171
|
+
|
|
3172
|
+
.project-entry.is-struck .comment-meta strong,
|
|
3173
|
+
.project-entry.is-struck .comment-body {
|
|
3174
|
+
text-decoration: line-through;
|
|
3175
|
+
text-decoration-thickness: 0.1em;
|
|
3176
|
+
}
|
|
3177
|
+
|
|
3178
|
+
.project-entry.decision {
|
|
3179
|
+
border-left-color: var(--accent);
|
|
3180
|
+
}
|
|
3181
|
+
|
|
3182
|
+
.project-entry.lesson {
|
|
3183
|
+
border-left-color: var(--accent-2);
|
|
3184
|
+
}
|
|
3185
|
+
|
|
3186
|
+
.backup-list,
|
|
3187
|
+
.deployment-actions,
|
|
3188
|
+
.lane-list {
|
|
3189
|
+
display: grid;
|
|
3190
|
+
gap: 0.55rem;
|
|
3191
|
+
}
|
|
3192
|
+
|
|
3193
|
+
.lanes-description {
|
|
3194
|
+
margin-bottom: 0.85rem;
|
|
3195
|
+
}
|
|
3196
|
+
|
|
3197
|
+
/* Lanes tab opens directly with the checkbox — drop the default .section
|
|
3198
|
+
top margin so it sits flush under the drawer tabs. */
|
|
3199
|
+
.section:has(> .orbit-check:first-child) {
|
|
3200
|
+
margin-top: 0.4rem;
|
|
3201
|
+
}
|
|
3202
|
+
|
|
3203
|
+
/* AI Settings stacks two checkbox-driven sections in sequence. Give these
|
|
3204
|
+
groups clearer vertical rhythm so each toggle + explainer reads as one unit. */
|
|
3205
|
+
.section.ai-subsection:has(> .orbit-check:first-child) {
|
|
3206
|
+
margin-top: 1rem;
|
|
3207
|
+
}
|
|
3208
|
+
|
|
3209
|
+
.section:has(> .orbit-check:first-child) > .description {
|
|
3210
|
+
margin-bottom: 0.6rem;
|
|
3211
|
+
}
|
|
3212
|
+
|
|
3213
|
+
.ai-section-divider {
|
|
3214
|
+
height: 1px;
|
|
3215
|
+
margin: 0.8rem 0;
|
|
3216
|
+
background: linear-gradient(90deg, transparent, var(--line) 14%, var(--line) 86%, transparent);
|
|
3217
|
+
}
|
|
3218
|
+
|
|
3219
|
+
/* ---- Orbit checkbox ----
|
|
3220
|
+
Hides the native input and renders a custom box that follows the starscape
|
|
3221
|
+
palette in dark mode and the paper/teal palette in light mode. The label is
|
|
3222
|
+
the click target; the SVG tick fades in via opacity + scale. */
|
|
3223
|
+
.orbit-check {
|
|
3224
|
+
display: inline-flex;
|
|
3225
|
+
align-items: center;
|
|
3226
|
+
gap: 0.5rem;
|
|
3227
|
+
margin-bottom: 0.5rem;
|
|
3228
|
+
padding: 0.32rem 0.6rem;
|
|
3229
|
+
border: 1px solid var(--line);
|
|
3230
|
+
border-radius: 10px;
|
|
3231
|
+
background: var(--surface-dim);
|
|
3232
|
+
color: var(--ink);
|
|
3233
|
+
font-size: 0.86rem;
|
|
3234
|
+
font-weight: 600;
|
|
3235
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
3236
|
+
user-select: none;
|
|
3237
|
+
transition:
|
|
3238
|
+
border-color 160ms ease,
|
|
3239
|
+
background 160ms ease,
|
|
3240
|
+
box-shadow 160ms ease;
|
|
3241
|
+
}
|
|
3242
|
+
|
|
3243
|
+
.orbit-check:hover {
|
|
3244
|
+
border-color: var(--accent-border);
|
|
3245
|
+
background: var(--accent-hover);
|
|
3246
|
+
}
|
|
3247
|
+
|
|
3248
|
+
.orbit-check input[type="checkbox"] {
|
|
3249
|
+
position: absolute;
|
|
3250
|
+
width: 1px;
|
|
3251
|
+
height: 1px;
|
|
3252
|
+
padding: 0;
|
|
3253
|
+
margin: -1px;
|
|
3254
|
+
overflow: hidden;
|
|
3255
|
+
clip: rect(0, 0, 0, 0);
|
|
3256
|
+
white-space: nowrap;
|
|
3257
|
+
border: 0;
|
|
3258
|
+
}
|
|
3259
|
+
|
|
3260
|
+
.orbit-check-box {
|
|
3261
|
+
display: grid;
|
|
3262
|
+
width: 1.1rem;
|
|
3263
|
+
height: 1.1rem;
|
|
3264
|
+
flex: 0 0 auto;
|
|
3265
|
+
place-items: center;
|
|
3266
|
+
border: 1.25px solid var(--accent-border);
|
|
3267
|
+
border-radius: 5px;
|
|
3268
|
+
background:
|
|
3269
|
+
linear-gradient(135deg, rgba(var(--accent-rgb),0.06), rgba(var(--paper-rgb),0) 65%),
|
|
3270
|
+
var(--surface-input);
|
|
3271
|
+
transition:
|
|
3272
|
+
background 160ms ease,
|
|
3273
|
+
border-color 160ms ease,
|
|
3274
|
+
box-shadow 160ms ease;
|
|
3275
|
+
}
|
|
3276
|
+
|
|
3277
|
+
.orbit-check-tick {
|
|
3278
|
+
width: 0.85rem;
|
|
3279
|
+
height: 0.85rem;
|
|
3280
|
+
stroke: currentColor;
|
|
3281
|
+
fill: none;
|
|
3282
|
+
stroke-width: 2.4;
|
|
3283
|
+
stroke-linecap: round;
|
|
3284
|
+
stroke-linejoin: round;
|
|
3285
|
+
opacity: 0;
|
|
3286
|
+
transform: scale(0.6);
|
|
3287
|
+
transition: opacity 160ms ease, transform 160ms ease;
|
|
3288
|
+
}
|
|
3289
|
+
|
|
3290
|
+
.orbit-check input[type="checkbox"]:checked ~ .orbit-check-box {
|
|
3291
|
+
border-color: var(--accent);
|
|
3292
|
+
color: #fff;
|
|
3293
|
+
background:
|
|
3294
|
+
linear-gradient(135deg, rgba(var(--accent-rgb),0.95), rgba(var(--blue-rgb),0.95));
|
|
3295
|
+
box-shadow:
|
|
3296
|
+
inset 0 0 0 1px rgba(var(--paper-rgb),0.35),
|
|
3297
|
+
0 4px 10px rgba(var(--accent-rgb),0.25);
|
|
3298
|
+
}
|
|
3299
|
+
|
|
3300
|
+
.orbit-check input[type="checkbox"]:checked ~ .orbit-check-box .orbit-check-tick {
|
|
3301
|
+
opacity: 1;
|
|
3302
|
+
transform: scale(1);
|
|
3303
|
+
}
|
|
3304
|
+
|
|
3305
|
+
.orbit-check input[type="checkbox"]:focus-visible ~ .orbit-check-box {
|
|
3306
|
+
box-shadow: var(--accent-ring);
|
|
3307
|
+
}
|
|
3308
|
+
|
|
3309
|
+
[data-theme="dark"] .orbit-check {
|
|
3310
|
+
background: rgba(15, 25, 50, 0.55);
|
|
3311
|
+
border-color: rgba(var(--starlight-rgb),0.16);
|
|
3312
|
+
}
|
|
3313
|
+
|
|
3314
|
+
[data-theme="dark"] .orbit-check:hover {
|
|
3315
|
+
border-color: rgba(var(--starlight-rgb),0.4);
|
|
3316
|
+
background: rgba(var(--starlight-rgb),0.08);
|
|
3317
|
+
}
|
|
3318
|
+
|
|
3319
|
+
[data-theme="dark"] .orbit-check-box {
|
|
3320
|
+
border-color: rgba(var(--starlight-rgb),0.35);
|
|
3321
|
+
background:
|
|
3322
|
+
linear-gradient(135deg, rgba(var(--starlight-rgb),0.06), rgba(var(--cosmos-rgb),0) 65%),
|
|
3323
|
+
rgba(15, 25, 50, 0.7);
|
|
3324
|
+
}
|
|
3325
|
+
|
|
3326
|
+
[data-theme="dark"] .orbit-check input[type="checkbox"]:checked ~ .orbit-check-box {
|
|
3327
|
+
border-color: rgba(var(--starlight-rgb),0.7);
|
|
3328
|
+
color: #0a1024;
|
|
3329
|
+
background: linear-gradient(135deg, #d6e6ff, #a8c0ff);
|
|
3330
|
+
box-shadow:
|
|
3331
|
+
inset 0 0 0 1px rgba(255, 255, 255, 0.4),
|
|
3332
|
+
0 4px 14px rgba(var(--starlight-rgb),0.3);
|
|
3333
|
+
}
|
|
3334
|
+
|
|
3335
|
+
.backup-item {
|
|
3336
|
+
display: grid;
|
|
3337
|
+
gap: 0.2rem;
|
|
3338
|
+
border: 1px solid var(--line);
|
|
3339
|
+
border-radius: 14px;
|
|
3340
|
+
padding: 0.7rem 0.8rem;
|
|
3341
|
+
background: var(--surface-dim);
|
|
3342
|
+
}
|
|
3343
|
+
|
|
3344
|
+
.backup-item strong,
|
|
3345
|
+
.deployment-meta strong {
|
|
3346
|
+
color: var(--muted);
|
|
3347
|
+
font-size: 0.76rem;
|
|
3348
|
+
letter-spacing: 0.06em;
|
|
3349
|
+
text-transform: uppercase;
|
|
3350
|
+
}
|
|
3351
|
+
|
|
3352
|
+
.deployment-actions {
|
|
3353
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
3354
|
+
margin-top: 0.8rem;
|
|
3355
|
+
}
|
|
3356
|
+
|
|
3357
|
+
.mcp-setup {
|
|
3358
|
+
display: grid;
|
|
3359
|
+
gap: 0.9rem;
|
|
3360
|
+
}
|
|
3361
|
+
|
|
3362
|
+
.mcp-setup h3 {
|
|
3363
|
+
margin: 0;
|
|
3364
|
+
}
|
|
3365
|
+
|
|
3366
|
+
/* Keep the MCP badge inline with the section title, as a compact cue instead
|
|
3367
|
+
of a full hero card. */
|
|
3368
|
+
.mcp-title-row,
|
|
3369
|
+
.ai-context-title-row {
|
|
3370
|
+
display: inline-flex;
|
|
3371
|
+
align-items: center;
|
|
3372
|
+
gap: 0.45rem;
|
|
3373
|
+
margin-bottom: 0.35rem;
|
|
3374
|
+
}
|
|
3375
|
+
|
|
3376
|
+
.mcp-title-row h3,
|
|
3377
|
+
.ai-context-title-row h3 {
|
|
3378
|
+
margin: 0;
|
|
3379
|
+
}
|
|
3380
|
+
|
|
3381
|
+
.mcp-inline-mark,
|
|
3382
|
+
.ai-context-inline-mark {
|
|
3383
|
+
display: inline-grid;
|
|
3384
|
+
place-items: center;
|
|
3385
|
+
min-width: 2.2rem;
|
|
3386
|
+
height: 1.3rem;
|
|
3387
|
+
padding: 0 0.45rem;
|
|
3388
|
+
border-radius: 999px;
|
|
3389
|
+
background: linear-gradient(135deg, rgba(var(--accent-rgb),0.95), rgba(var(--blue-rgb),0.9));
|
|
3390
|
+
color: #fff;
|
|
3391
|
+
font-size: 0.62rem;
|
|
3392
|
+
font-weight: 900;
|
|
3393
|
+
letter-spacing: 0.08em;
|
|
3394
|
+
text-transform: uppercase;
|
|
3395
|
+
box-shadow: 0 6px 14px rgba(var(--accent-rgb),0.22);
|
|
3396
|
+
}
|
|
3397
|
+
|
|
3398
|
+
.mcp-hero {
|
|
3399
|
+
display: grid;
|
|
3400
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
3401
|
+
gap: 0.85rem;
|
|
3402
|
+
align-items: center;
|
|
3403
|
+
border: 1px solid rgba(var(--accent-rgb),0.2);
|
|
3404
|
+
border-radius: 18px;
|
|
3405
|
+
padding: 0.85rem;
|
|
3406
|
+
background:
|
|
3407
|
+
radial-gradient(circle at 0 0, rgba(var(--accent-rgb),0.16), transparent 42%),
|
|
3408
|
+
linear-gradient(135deg, rgba(var(--blue-rgb),0.08), rgba(var(--paper-rgb),0));
|
|
3409
|
+
}
|
|
3410
|
+
|
|
3411
|
+
.mcp-hero-mark {
|
|
3412
|
+
display: grid;
|
|
3413
|
+
width: 3.2rem;
|
|
3414
|
+
height: 3.2rem;
|
|
3415
|
+
place-items: center;
|
|
3416
|
+
border-radius: 18px;
|
|
3417
|
+
background: linear-gradient(135deg, rgba(var(--accent-rgb),0.95), rgba(var(--blue-rgb),0.9));
|
|
3418
|
+
color: #fff;
|
|
3419
|
+
font-size: 0.76rem;
|
|
3420
|
+
font-weight: 900;
|
|
3421
|
+
letter-spacing: 0.08em;
|
|
3422
|
+
box-shadow: 0 12px 28px rgba(var(--accent-rgb),0.25);
|
|
3423
|
+
}
|
|
3424
|
+
|
|
3425
|
+
.mcp-kicker {
|
|
3426
|
+
margin: 0;
|
|
3427
|
+
color: var(--accent);
|
|
3428
|
+
font-size: 0.74rem;
|
|
3429
|
+
font-weight: 800;
|
|
3430
|
+
letter-spacing: 0.08em;
|
|
3431
|
+
text-transform: uppercase;
|
|
3432
|
+
}
|
|
3433
|
+
|
|
3434
|
+
.mcp-flow,
|
|
3435
|
+
.mcp-path-grid {
|
|
3436
|
+
display: grid;
|
|
3437
|
+
gap: 0.7rem;
|
|
3438
|
+
}
|
|
3439
|
+
|
|
3440
|
+
.mcp-flow {
|
|
3441
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
3442
|
+
}
|
|
3443
|
+
|
|
3444
|
+
.mcp-path-grid {
|
|
3445
|
+
grid-template-columns: minmax(0, 1fr);
|
|
3446
|
+
}
|
|
3447
|
+
|
|
3448
|
+
/* MCP intro copy/controls spacing: keep the header text readable while making
|
|
3449
|
+
the control rows feel intentionally grouped below it. */
|
|
3450
|
+
.mcp-setup > div > .description + .description {
|
|
3451
|
+
margin-top: 0.42rem;
|
|
3452
|
+
}
|
|
3453
|
+
|
|
3454
|
+
.mcp-setup > div > .mcp-flow {
|
|
3455
|
+
margin-top: 0.85rem;
|
|
3456
|
+
}
|
|
3457
|
+
|
|
3458
|
+
.mcp-flow label,
|
|
3459
|
+
.mcp-path-grid label {
|
|
3460
|
+
display: grid;
|
|
3461
|
+
gap: 0.35rem;
|
|
3462
|
+
}
|
|
3463
|
+
|
|
3464
|
+
.mcp-flow label > span,
|
|
3465
|
+
.mcp-path-grid label > span {
|
|
3466
|
+
color: var(--muted);
|
|
3467
|
+
font-size: 0.76rem;
|
|
3468
|
+
font-weight: 800;
|
|
3469
|
+
letter-spacing: 0.05em;
|
|
3470
|
+
text-transform: uppercase;
|
|
3471
|
+
}
|
|
3472
|
+
|
|
3473
|
+
.mcp-flow small {
|
|
3474
|
+
color: var(--muted);
|
|
3475
|
+
font-size: 0.74rem;
|
|
3476
|
+
}
|
|
3477
|
+
|
|
3478
|
+
.mcp-path-note {
|
|
3479
|
+
margin: 0.5rem 0 0;
|
|
3480
|
+
color: var(--muted);
|
|
3481
|
+
font-size: 0.76rem;
|
|
3482
|
+
line-height: 1.35;
|
|
3483
|
+
}
|
|
3484
|
+
|
|
3485
|
+
.mcp-flow select.select-chevron-field {
|
|
3486
|
+
padding: 0.62rem var(--select-chevron-pad-x);
|
|
3487
|
+
padding-right: calc(var(--select-chevron-pad-x) * 2 + var(--select-chevron-size));
|
|
3488
|
+
font-size: 0.88rem;
|
|
3489
|
+
}
|
|
3490
|
+
|
|
3491
|
+
.mcp-step-grid {
|
|
3492
|
+
display: grid;
|
|
3493
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
3494
|
+
gap: 0.55rem;
|
|
3495
|
+
}
|
|
3496
|
+
|
|
3497
|
+
.mcp-step {
|
|
3498
|
+
display: grid;
|
|
3499
|
+
gap: 0.3rem;
|
|
3500
|
+
border: 1px solid var(--line);
|
|
3501
|
+
border-radius: 16px;
|
|
3502
|
+
padding: 0.75rem;
|
|
3503
|
+
background: var(--surface-dim);
|
|
3504
|
+
}
|
|
3505
|
+
|
|
3506
|
+
.mcp-step b {
|
|
3507
|
+
display: grid;
|
|
3508
|
+
width: 1.6rem;
|
|
3509
|
+
height: 1.6rem;
|
|
3510
|
+
place-items: center;
|
|
3511
|
+
border-radius: 999px;
|
|
3512
|
+
background: rgba(var(--accent-rgb),0.12);
|
|
3513
|
+
color: var(--accent);
|
|
3514
|
+
font-size: 0.8rem;
|
|
3515
|
+
}
|
|
3516
|
+
|
|
3517
|
+
.mcp-step strong {
|
|
3518
|
+
color: var(--ink);
|
|
3519
|
+
font-size: 0.86rem;
|
|
3520
|
+
}
|
|
3521
|
+
|
|
3522
|
+
.mcp-step span {
|
|
3523
|
+
color: var(--muted);
|
|
3524
|
+
font-size: 0.78rem;
|
|
3525
|
+
line-height: 1.35;
|
|
3526
|
+
}
|
|
3527
|
+
|
|
3528
|
+
.mcp-path-details {
|
|
3529
|
+
border: 1px dashed rgba(var(--accent-rgb),0.28);
|
|
3530
|
+
border-radius: 16px;
|
|
3531
|
+
padding: 0.75rem 0.85rem;
|
|
3532
|
+
background: rgba(var(--accent-rgb),0.04);
|
|
3533
|
+
}
|
|
3534
|
+
|
|
3535
|
+
.mcp-path-details summary {
|
|
3536
|
+
color: var(--ink);
|
|
3537
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
3538
|
+
font-size: 0.86rem;
|
|
3539
|
+
font-weight: 800;
|
|
3540
|
+
}
|
|
3541
|
+
|
|
3542
|
+
.mcp-picker-note {
|
|
3543
|
+
margin: 0.55rem 0 0;
|
|
3544
|
+
color: var(--muted);
|
|
3545
|
+
font-size: 0.8rem;
|
|
3546
|
+
line-height: 1.4;
|
|
3547
|
+
}
|
|
3548
|
+
|
|
3549
|
+
.mcp-path-actions {
|
|
3550
|
+
display: flex;
|
|
3551
|
+
flex-wrap: wrap;
|
|
3552
|
+
gap: 0.5rem;
|
|
3553
|
+
margin-top: 0.65rem;
|
|
3554
|
+
}
|
|
3555
|
+
|
|
3556
|
+
.mcp-path-actions button {
|
|
3557
|
+
padding: 0.5rem 0.7rem;
|
|
3558
|
+
font-size: 0.8rem;
|
|
3559
|
+
}
|
|
3560
|
+
|
|
3561
|
+
.mcp-path-grid {
|
|
3562
|
+
margin-top: 0.95rem;
|
|
3563
|
+
}
|
|
3564
|
+
|
|
3565
|
+
.mcp-path-grid input {
|
|
3566
|
+
min-width: 0;
|
|
3567
|
+
padding: 0.55rem 0.65rem;
|
|
3568
|
+
font-size: 0.82rem;
|
|
3569
|
+
}
|
|
3570
|
+
|
|
3571
|
+
.system-impact {
|
|
3572
|
+
display: grid;
|
|
3573
|
+
gap: 0.35rem;
|
|
3574
|
+
border: 1px solid rgba(var(--blue-rgb),0.22);
|
|
3575
|
+
border-radius: 14px;
|
|
3576
|
+
padding: 0.75rem 0.85rem;
|
|
3577
|
+
background: rgba(var(--blue-rgb),0.06);
|
|
3578
|
+
}
|
|
3579
|
+
|
|
3580
|
+
.system-impact-grid {
|
|
3581
|
+
display: grid;
|
|
3582
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
3583
|
+
gap: 0.55rem;
|
|
3584
|
+
}
|
|
3585
|
+
|
|
3586
|
+
.system-impact strong,
|
|
3587
|
+
.mcp-output-card strong {
|
|
3588
|
+
color: var(--ink);
|
|
3589
|
+
font-size: 0.86rem;
|
|
3590
|
+
}
|
|
3591
|
+
|
|
3592
|
+
.system-impact p,
|
|
3593
|
+
.mcp-output-card p {
|
|
3594
|
+
margin: 0;
|
|
3595
|
+
}
|
|
3596
|
+
|
|
3597
|
+
.mcp-options-stack {
|
|
3598
|
+
display: grid;
|
|
3599
|
+
gap: 0.7rem;
|
|
3600
|
+
}
|
|
3601
|
+
|
|
3602
|
+
.mcp-option-card {
|
|
3603
|
+
display: grid;
|
|
3604
|
+
gap: 0.65rem;
|
|
3605
|
+
border: 1px solid var(--line);
|
|
3606
|
+
border-radius: 14px;
|
|
3607
|
+
padding: 0.75rem 0.85rem;
|
|
3608
|
+
background: var(--surface-dim);
|
|
3609
|
+
}
|
|
3610
|
+
|
|
3611
|
+
.mcp-option-card-head {
|
|
3612
|
+
display: grid;
|
|
3613
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
3614
|
+
gap: 0.75rem;
|
|
3615
|
+
align-items: center;
|
|
3616
|
+
}
|
|
3617
|
+
|
|
3618
|
+
.mcp-output-card {
|
|
3619
|
+
display: grid;
|
|
3620
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
3621
|
+
gap: 0.75rem;
|
|
3622
|
+
align-items: center;
|
|
3623
|
+
border: 1px solid var(--line);
|
|
3624
|
+
border-radius: 14px;
|
|
3625
|
+
padding: 0.75rem 0.85rem;
|
|
3626
|
+
background: var(--surface-dim);
|
|
3627
|
+
}
|
|
3628
|
+
|
|
3629
|
+
.mcp-snippet {
|
|
3630
|
+
max-height: 16rem;
|
|
3631
|
+
overflow: auto;
|
|
3632
|
+
margin: 0;
|
|
3633
|
+
border: 0;
|
|
3634
|
+
border-radius: 0 0 12px 12px;
|
|
3635
|
+
padding: 0.9rem 1rem;
|
|
3636
|
+
background: rgba(10, 14, 28, 0.95);
|
|
3637
|
+
color: #d6e6ff;
|
|
3638
|
+
font-family: "Cascadia Mono", "Consolas", monospace;
|
|
3639
|
+
font-size: 0.84rem;
|
|
3640
|
+
line-height: 1.55;
|
|
3641
|
+
white-space: pre-wrap;
|
|
3642
|
+
}
|
|
3643
|
+
|
|
3644
|
+
.mcp-option-card .mcp-snippet {
|
|
3645
|
+
margin-top: 0.05rem;
|
|
3646
|
+
}
|
|
3647
|
+
|
|
3648
|
+
.mcp-snippet--compact {
|
|
3649
|
+
max-height: 8rem;
|
|
3650
|
+
}
|
|
3651
|
+
|
|
3652
|
+
.mcp-terminal {
|
|
3653
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
3654
|
+
border-radius: 12px;
|
|
3655
|
+
overflow: hidden;
|
|
3656
|
+
box-shadow: 0 10px 26px rgba(0, 0, 0, 0.28);
|
|
3657
|
+
}
|
|
3658
|
+
|
|
3659
|
+
.mcp-terminal-chrome {
|
|
3660
|
+
display: flex;
|
|
3661
|
+
align-items: center;
|
|
3662
|
+
gap: 0.38rem;
|
|
3663
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
3664
|
+
padding: 0.62rem 0.72rem;
|
|
3665
|
+
background: rgba(10, 14, 28, 0.95);
|
|
3666
|
+
}
|
|
3667
|
+
|
|
3668
|
+
.mcp-terminal-chrome span {
|
|
3669
|
+
width: 0.62rem;
|
|
3670
|
+
height: 0.62rem;
|
|
3671
|
+
border-radius: 50%;
|
|
3672
|
+
background: #a63d2f;
|
|
3673
|
+
}
|
|
3674
|
+
|
|
3675
|
+
.mcp-terminal-chrome span:nth-child(2) {
|
|
3676
|
+
background: #bf8f21;
|
|
3677
|
+
}
|
|
3678
|
+
|
|
3679
|
+
.mcp-terminal-chrome span:nth-child(3) {
|
|
3680
|
+
background: #3d7c46;
|
|
3681
|
+
}
|
|
3682
|
+
|
|
3683
|
+
.mcp-or-divider {
|
|
3684
|
+
position: relative;
|
|
3685
|
+
display: grid;
|
|
3686
|
+
place-items: center;
|
|
3687
|
+
margin: 0.05rem 0;
|
|
3688
|
+
}
|
|
3689
|
+
|
|
3690
|
+
.mcp-or-divider::before {
|
|
3691
|
+
content: "";
|
|
3692
|
+
position: absolute;
|
|
3693
|
+
inset: 50% 0 auto;
|
|
3694
|
+
border-top: 1px solid var(--line);
|
|
3695
|
+
}
|
|
3696
|
+
|
|
3697
|
+
.mcp-or-divider span {
|
|
3698
|
+
position: relative;
|
|
3699
|
+
z-index: 1;
|
|
3700
|
+
padding: 0.12rem 0.55rem;
|
|
3701
|
+
border: 1px solid var(--line);
|
|
3702
|
+
border-radius: 999px;
|
|
3703
|
+
background: var(--surface);
|
|
3704
|
+
color: var(--muted);
|
|
3705
|
+
font-size: 0.72rem;
|
|
3706
|
+
font-weight: 800;
|
|
3707
|
+
letter-spacing: 0.08em;
|
|
3708
|
+
}
|
|
3709
|
+
|
|
3710
|
+
[data-theme="dark"] .system-impact {
|
|
3711
|
+
border-color: rgba(var(--starlight-rgb),0.2);
|
|
3712
|
+
background: rgba(var(--starlight-rgb),0.07);
|
|
3713
|
+
}
|
|
3714
|
+
|
|
3715
|
+
[data-theme="dark"] .mcp-hero {
|
|
3716
|
+
border-color: rgba(var(--starlight-rgb),0.16);
|
|
3717
|
+
background:
|
|
3718
|
+
radial-gradient(circle at 0 0, rgba(var(--starlight-rgb),0.16), transparent 42%),
|
|
3719
|
+
linear-gradient(135deg, rgba(15, 25, 50, 0.82), rgba(var(--cosmos-rgb),0.15));
|
|
3720
|
+
}
|
|
3721
|
+
|
|
3722
|
+
[data-theme="dark"] .mcp-hero-mark {
|
|
3723
|
+
background: linear-gradient(135deg, #d6e6ff, #9fbaff);
|
|
3724
|
+
color: #08111f;
|
|
3725
|
+
box-shadow: 0 12px 30px rgba(var(--starlight-rgb),0.28);
|
|
3726
|
+
}
|
|
3727
|
+
|
|
3728
|
+
[data-theme="dark"] .mcp-step,
|
|
3729
|
+
[data-theme="dark"] .mcp-option-card,
|
|
3730
|
+
[data-theme="dark"] .mcp-output-card {
|
|
3731
|
+
background: rgba(15, 25, 50, 0.55);
|
|
3732
|
+
border-color: rgba(var(--starlight-rgb),0.14);
|
|
3733
|
+
}
|
|
3734
|
+
|
|
3735
|
+
[data-theme="dark"] .mcp-terminal {
|
|
3736
|
+
border-color: rgba(var(--starlight-rgb),0.2);
|
|
3737
|
+
}
|
|
3738
|
+
|
|
3739
|
+
[data-theme="dark"] .mcp-path-details {
|
|
3740
|
+
border-color: rgba(var(--starlight-rgb),0.22);
|
|
3741
|
+
background: rgba(var(--starlight-rgb),0.055);
|
|
3742
|
+
}
|
|
3743
|
+
|
|
3744
|
+
@media (max-width: 800px) {
|
|
3745
|
+
.mcp-flow,
|
|
3746
|
+
.mcp-path-grid,
|
|
3747
|
+
.mcp-step-grid,
|
|
3748
|
+
.system-impact-grid {
|
|
3749
|
+
grid-template-columns: 1fr;
|
|
3750
|
+
}
|
|
3751
|
+
|
|
3752
|
+
.mcp-output-card {
|
|
3753
|
+
grid-template-columns: 1fr;
|
|
3754
|
+
}
|
|
3755
|
+
|
|
3756
|
+
.mcp-option-card-head {
|
|
3757
|
+
grid-template-columns: 1fr;
|
|
3758
|
+
}
|
|
3759
|
+
}
|
|
3760
|
+
|
|
3761
|
+
.deployment-meta {
|
|
3762
|
+
display: grid;
|
|
3763
|
+
gap: 0.35rem;
|
|
3764
|
+
margin-top: 0.7rem;
|
|
3765
|
+
color: var(--muted);
|
|
3766
|
+
font-size: 0.82rem;
|
|
3767
|
+
}
|
|
3768
|
+
|
|
3769
|
+
.import-button {
|
|
3770
|
+
display: flex;
|
|
3771
|
+
}
|
|
3772
|
+
|
|
3773
|
+
.import-button input {
|
|
3774
|
+
display: none;
|
|
3775
|
+
}
|
|
3776
|
+
|
|
3777
|
+
.import-button span {
|
|
3778
|
+
display: inline-grid;
|
|
3779
|
+
width: 100%;
|
|
3780
|
+
place-items: center;
|
|
3781
|
+
border: 1px solid var(--line);
|
|
3782
|
+
border-radius: 999px;
|
|
3783
|
+
padding: 0.72rem 1rem;
|
|
3784
|
+
color: var(--ink);
|
|
3785
|
+
background: var(--surface);
|
|
3786
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
3787
|
+
transition:
|
|
3788
|
+
transform 150ms ease,
|
|
3789
|
+
box-shadow 150ms ease,
|
|
3790
|
+
background 150ms ease;
|
|
3791
|
+
}
|
|
3792
|
+
|
|
3793
|
+
.import-button span:hover {
|
|
3794
|
+
transform: translateY(-1px);
|
|
3795
|
+
box-shadow: var(--btn-hover-shadow);
|
|
3796
|
+
}
|
|
3797
|
+
|
|
3798
|
+
[data-theme="dark"] .import-button span:hover {
|
|
3799
|
+
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.35);
|
|
3800
|
+
}
|
|
3801
|
+
|
|
3802
|
+
.lane-row {
|
|
3803
|
+
display: grid;
|
|
3804
|
+
grid-template-columns: 2rem 2rem minmax(6rem, 1fr) minmax(5.5rem, 7rem) 2rem 2rem;
|
|
3805
|
+
gap: 0.4rem;
|
|
3806
|
+
align-items: center;
|
|
3807
|
+
border: 1px solid var(--line);
|
|
3808
|
+
border-radius: 14px;
|
|
3809
|
+
padding: 0.5rem;
|
|
3810
|
+
background: var(--surface-dim);
|
|
3811
|
+
}
|
|
3812
|
+
|
|
3813
|
+
[data-theme="dark"] .lane-row {
|
|
3814
|
+
background: rgba(15, 25, 50, 0.55);
|
|
3815
|
+
border-color: rgba(var(--starlight-rgb),0.14);
|
|
3816
|
+
}
|
|
3817
|
+
|
|
3818
|
+
.lane-row input,
|
|
3819
|
+
.lane-row select,
|
|
3820
|
+
.lane-create-form input,
|
|
3821
|
+
.lane-create-form select {
|
|
3822
|
+
padding: 0.5rem 0.65rem;
|
|
3823
|
+
font-size: 0.86rem;
|
|
3824
|
+
}
|
|
3825
|
+
|
|
3826
|
+
.lane-row select.select-chevron-field,
|
|
3827
|
+
.lane-create-form select.select-chevron-field {
|
|
3828
|
+
padding: 0.5rem var(--select-chevron-pad-x);
|
|
3829
|
+
padding-right: calc(var(--select-chevron-pad-x) * 2 + var(--select-chevron-size));
|
|
3830
|
+
}
|
|
3831
|
+
|
|
3832
|
+
/* Shared 2rem square chrome for every in-row lane control (up, down, toggle,
|
|
3833
|
+
delete) — keeps the row rhythm tight and matches the drawer's X close. */
|
|
3834
|
+
.lane-icon-btn,
|
|
3835
|
+
.lane-delete-btn,
|
|
3836
|
+
.lane-new-toggle {
|
|
3837
|
+
display: inline-grid;
|
|
3838
|
+
place-items: center;
|
|
3839
|
+
width: 2rem;
|
|
3840
|
+
height: 2rem;
|
|
3841
|
+
padding: 0;
|
|
3842
|
+
border: 1px solid var(--line);
|
|
3843
|
+
border-radius: 10px;
|
|
3844
|
+
background: var(--surface);
|
|
3845
|
+
color: var(--muted);
|
|
3846
|
+
font-family: inherit;
|
|
3847
|
+
line-height: 1;
|
|
3848
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
3849
|
+
transition:
|
|
3850
|
+
background 160ms ease,
|
|
3851
|
+
border-color 160ms ease,
|
|
3852
|
+
color 160ms ease,
|
|
3853
|
+
box-shadow 200ms ease;
|
|
3854
|
+
}
|
|
3855
|
+
|
|
3856
|
+
.lane-icon-btn {
|
|
3857
|
+
font-size: 1rem;
|
|
3858
|
+
}
|
|
3859
|
+
|
|
3860
|
+
.lane-icon-btn:hover:not(:disabled),
|
|
3861
|
+
.lane-new-toggle:hover:not(:disabled) {
|
|
3862
|
+
color: var(--ink);
|
|
3863
|
+
border-color: var(--accent-border);
|
|
3864
|
+
background: var(--accent-hover);
|
|
3865
|
+
}
|
|
3866
|
+
|
|
3867
|
+
.lane-delete-btn {
|
|
3868
|
+
font-size: 1.2rem;
|
|
3869
|
+
}
|
|
3870
|
+
|
|
3871
|
+
.lane-delete-btn:hover:not(:disabled) {
|
|
3872
|
+
color: var(--danger);
|
|
3873
|
+
border-color: rgba(var(--red-rgb),0.38);
|
|
3874
|
+
background: rgba(var(--red-rgb),0.08);
|
|
3875
|
+
}
|
|
3876
|
+
|
|
3877
|
+
.lane-icon-btn:disabled,
|
|
3878
|
+
.lane-delete-btn:disabled {
|
|
3879
|
+
opacity: 0.38;
|
|
3880
|
+
cursor: url('cursors/live_unavail.cur'), not-allowed;
|
|
3881
|
+
}
|
|
3882
|
+
|
|
3883
|
+
[data-theme="dark"] .lane-icon-btn,
|
|
3884
|
+
[data-theme="dark"] .lane-delete-btn,
|
|
3885
|
+
[data-theme="dark"] .lane-new-toggle {
|
|
3886
|
+
background: rgba(var(--starlight-rgb),0.07);
|
|
3887
|
+
border-color: rgba(var(--starlight-rgb),0.24);
|
|
3888
|
+
color: rgba(226, 236, 255, 0.92);
|
|
3889
|
+
}
|
|
3890
|
+
|
|
3891
|
+
[data-theme="dark"] .lane-icon-btn:hover:not(:disabled),
|
|
3892
|
+
[data-theme="dark"] .lane-new-toggle:hover:not(:disabled) {
|
|
3893
|
+
background: rgba(var(--starlight-rgb),0.16);
|
|
3894
|
+
border-color: rgba(var(--starlight-rgb),0.6);
|
|
3895
|
+
color: #fff;
|
|
3896
|
+
box-shadow: 0 0 14px rgba(var(--starlight-rgb),0.3);
|
|
3897
|
+
}
|
|
3898
|
+
|
|
3899
|
+
[data-theme="dark"] .lane-delete-btn:hover:not(:disabled) {
|
|
3900
|
+
background: rgba(var(--coral-rgb),0.14);
|
|
3901
|
+
border-color: rgba(var(--coral-rgb),0.6);
|
|
3902
|
+
color: #ffb4b4;
|
|
3903
|
+
box-shadow: 0 0 14px rgba(var(--coral-rgb),0.3);
|
|
3904
|
+
}
|
|
3905
|
+
|
|
3906
|
+
[data-theme="dark"] .lane-icon-btn:disabled,
|
|
3907
|
+
[data-theme="dark"] .lane-delete-btn:disabled {
|
|
3908
|
+
color: rgba(226, 236, 255, 0.35);
|
|
3909
|
+
background: rgba(var(--starlight-rgb),0.035);
|
|
3910
|
+
border-color: rgba(var(--starlight-rgb),0.12);
|
|
3911
|
+
box-shadow: none;
|
|
3912
|
+
}
|
|
3913
|
+
|
|
3914
|
+
/* New-cards-default toggle — sun metaphor: a hollow ring when off (like an
|
|
3915
|
+
unselected radio button), a glowing warm disc with an amber halo when on.
|
|
3916
|
+
Tiny "NEW" caption underneath so the purpose is always readable. */
|
|
3917
|
+
.lane-new-toggle {
|
|
3918
|
+
grid-template-rows: auto auto;
|
|
3919
|
+
gap: 0.08rem;
|
|
3920
|
+
padding: 0.22rem 0;
|
|
3921
|
+
}
|
|
3922
|
+
|
|
3923
|
+
.lane-new-sun {
|
|
3924
|
+
width: 0.72rem;
|
|
3925
|
+
height: 0.72rem;
|
|
3926
|
+
border-radius: 50%;
|
|
3927
|
+
border: 1.5px solid var(--muted);
|
|
3928
|
+
background: transparent;
|
|
3929
|
+
transition:
|
|
3930
|
+
background 200ms ease,
|
|
3931
|
+
border-color 200ms ease,
|
|
3932
|
+
box-shadow 240ms ease;
|
|
3933
|
+
}
|
|
3934
|
+
|
|
3935
|
+
.lane-new-label {
|
|
3936
|
+
font-size: 0.52rem;
|
|
3937
|
+
font-weight: 800;
|
|
3938
|
+
letter-spacing: 0.06em;
|
|
3939
|
+
text-transform: uppercase;
|
|
3940
|
+
color: var(--muted);
|
|
3941
|
+
line-height: 1;
|
|
3942
|
+
transition: color 200ms ease;
|
|
3943
|
+
}
|
|
3944
|
+
|
|
3945
|
+
/* "New cards land here" toggle — Epic-card palette to match the .btn-sun CTA.
|
|
3946
|
+
Light: teal border + amber inner ring + teal halo, with a teal glowing
|
|
3947
|
+
center dot. Dark: starlight-blue + violet inner ring, with a starlight dot. */
|
|
3948
|
+
.lane-new-toggle.is-on {
|
|
3949
|
+
border-color: rgba(var(--accent-rgb),0.55);
|
|
3950
|
+
background:
|
|
3951
|
+
linear-gradient(135deg, rgba(var(--accent-rgb),0.16), rgba(var(--amber-rgb),0.1) 55%, rgba(var(--paper-rgb),0) 100%),
|
|
3952
|
+
var(--surface);
|
|
3953
|
+
box-shadow:
|
|
3954
|
+
inset 0 0 0 1px rgba(var(--paper-rgb),0.85),
|
|
3955
|
+
0 0 0 1px rgba(var(--amber-rgb),0.32),
|
|
3956
|
+
0 4px 12px rgba(var(--accent-rgb),0.2);
|
|
3957
|
+
}
|
|
3958
|
+
|
|
3959
|
+
.lane-new-toggle.is-on .lane-new-sun {
|
|
3960
|
+
border-color: transparent;
|
|
3961
|
+
background: radial-gradient(circle at 38% 38%, #d6efe9 0%, #14a094 50%, var(--teal-deep) 100%);
|
|
3962
|
+
box-shadow:
|
|
3963
|
+
0 0 3px rgba(var(--accent-rgb),0.85),
|
|
3964
|
+
0 0 8px rgba(var(--accent-rgb),0.55);
|
|
3965
|
+
}
|
|
3966
|
+
|
|
3967
|
+
.lane-new-toggle.is-on .lane-new-label {
|
|
3968
|
+
color: var(--teal-deep);
|
|
3969
|
+
font-weight: 900;
|
|
3970
|
+
}
|
|
3971
|
+
|
|
3972
|
+
[data-theme="dark"] .lane-new-toggle.is-on {
|
|
3973
|
+
border-color: rgba(var(--starlight-rgb),0.5);
|
|
3974
|
+
background:
|
|
3975
|
+
linear-gradient(135deg, rgba(var(--cyan-rgb),0.14), rgba(var(--indigo-rgb),0.1) 55%, rgba(var(--cosmos-rgb),0) 100%),
|
|
3976
|
+
var(--surface);
|
|
3977
|
+
box-shadow:
|
|
3978
|
+
inset 0 0 0 1px rgba(var(--cosmos-rgb),0.7),
|
|
3979
|
+
0 0 0 1px rgba(var(--violet-rgb),0.36),
|
|
3980
|
+
0 4px 16px rgba(var(--void-rgb),0.42);
|
|
3981
|
+
}
|
|
3982
|
+
|
|
3983
|
+
[data-theme="dark"] .lane-new-toggle.is-on .lane-new-sun {
|
|
3984
|
+
background: radial-gradient(circle at 38% 38%, #d8e3ff 0%, #a8c0ff 50%, #5d77b8 100%);
|
|
3985
|
+
box-shadow:
|
|
3986
|
+
0 0 3px rgba(var(--starlight-rgb),0.95),
|
|
3987
|
+
0 0 9px rgba(var(--starlight-rgb),0.6);
|
|
3988
|
+
}
|
|
3989
|
+
|
|
3990
|
+
[data-theme="dark"] .lane-new-toggle.is-on .lane-new-label {
|
|
3991
|
+
color: #d2deff;
|
|
3992
|
+
}
|
|
3993
|
+
|
|
3994
|
+
.icon-button {
|
|
3995
|
+
display: inline-grid;
|
|
3996
|
+
width: 2.35rem;
|
|
3997
|
+
height: 2.35rem;
|
|
3998
|
+
place-items: center;
|
|
3999
|
+
border-radius: 999px;
|
|
4000
|
+
padding: 0;
|
|
4001
|
+
}
|
|
4002
|
+
|
|
4003
|
+
.danger-button {
|
|
4004
|
+
color: var(--danger);
|
|
4005
|
+
}
|
|
4006
|
+
|
|
4007
|
+
button:disabled,
|
|
4008
|
+
.import-button input:disabled + span {
|
|
4009
|
+
cursor: url('cursors/live_unavail.cur'), not-allowed;
|
|
4010
|
+
opacity: 0.45;
|
|
4011
|
+
}
|
|
4012
|
+
|
|
4013
|
+
.lane-create-form {
|
|
4014
|
+
display: grid;
|
|
4015
|
+
grid-template-columns: minmax(8rem, 1fr) minmax(7rem, 9rem) auto;
|
|
4016
|
+
gap: 0.45rem;
|
|
4017
|
+
margin-top: 0.65rem;
|
|
4018
|
+
}
|
|
4019
|
+
|
|
4020
|
+
/* Cards inside the detail pane (epic children / parent epic). Reuses the
|
|
4021
|
+
kanban .card type-* bezel system; this just lays them out in a grid and
|
|
4022
|
+
trims a few kanban-only behaviors (drag cursor, full-size minimums). */
|
|
4023
|
+
.detail-card-grid {
|
|
4024
|
+
display: grid;
|
|
4025
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
4026
|
+
gap: 0.55rem;
|
|
4027
|
+
}
|
|
4028
|
+
|
|
4029
|
+
.detail-card-grid--single {
|
|
4030
|
+
grid-template-columns: minmax(0, 1fr);
|
|
4031
|
+
}
|
|
4032
|
+
|
|
4033
|
+
.card--detail {
|
|
4034
|
+
position: relative;
|
|
4035
|
+
display: flex;
|
|
4036
|
+
flex-direction: column;
|
|
4037
|
+
min-height: 5.5rem;
|
|
4038
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
4039
|
+
}
|
|
4040
|
+
|
|
4041
|
+
/* Title is the first row; type-pill row is anchored to the bottom of the card
|
|
4042
|
+
so a 2-card grid lines up its bottom rows even if titles wrap differently. */
|
|
4043
|
+
.card--detail .card-meta {
|
|
4044
|
+
margin-top: auto;
|
|
4045
|
+
}
|
|
4046
|
+
|
|
4047
|
+
.card-eyebrow {
|
|
4048
|
+
display: block;
|
|
4049
|
+
margin-bottom: 0.3rem;
|
|
4050
|
+
color: var(--muted);
|
|
4051
|
+
font-size: 0.68rem;
|
|
4052
|
+
font-weight: 800;
|
|
4053
|
+
letter-spacing: 0.08em;
|
|
4054
|
+
text-transform: uppercase;
|
|
4055
|
+
}
|
|
4056
|
+
|
|
4057
|
+
.card-detach-btn {
|
|
4058
|
+
position: absolute;
|
|
4059
|
+
top: 0.35rem;
|
|
4060
|
+
right: 0.35rem;
|
|
4061
|
+
width: 1.4rem;
|
|
4062
|
+
height: 1.4rem;
|
|
4063
|
+
display: inline-grid;
|
|
4064
|
+
place-items: center;
|
|
4065
|
+
padding: 0;
|
|
4066
|
+
border: 0;
|
|
4067
|
+
border-radius: 999px;
|
|
4068
|
+
background: var(--subtle-bg);
|
|
4069
|
+
color: var(--muted);
|
|
4070
|
+
font-size: 0.95rem;
|
|
4071
|
+
line-height: 1;
|
|
4072
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
4073
|
+
opacity: 0.6;
|
|
4074
|
+
transition: opacity 120ms ease, background 120ms ease, color 120ms ease;
|
|
4075
|
+
z-index: 2;
|
|
4076
|
+
}
|
|
4077
|
+
|
|
4078
|
+
.card-detach-btn:hover {
|
|
4079
|
+
opacity: 1;
|
|
4080
|
+
background: rgba(var(--red-rgb),0.18);
|
|
4081
|
+
color: var(--ink);
|
|
4082
|
+
}
|
|
4083
|
+
|
|
4084
|
+
.card-archive-actions {
|
|
4085
|
+
position: absolute;
|
|
4086
|
+
top: 0.35rem;
|
|
4087
|
+
right: 0.35rem;
|
|
4088
|
+
display: flex;
|
|
4089
|
+
gap: 0.3rem;
|
|
4090
|
+
z-index: 2;
|
|
4091
|
+
}
|
|
4092
|
+
|
|
4093
|
+
.card-archive-btn {
|
|
4094
|
+
width: 1.6rem;
|
|
4095
|
+
height: 1.6rem;
|
|
4096
|
+
display: inline-grid;
|
|
4097
|
+
place-items: center;
|
|
4098
|
+
padding: 0;
|
|
4099
|
+
border: 0;
|
|
4100
|
+
border-radius: 999px;
|
|
4101
|
+
background: var(--subtle-bg);
|
|
4102
|
+
color: var(--muted);
|
|
4103
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
4104
|
+
opacity: 0.7;
|
|
4105
|
+
transition: opacity 120ms ease, background 120ms ease, color 120ms ease;
|
|
4106
|
+
}
|
|
4107
|
+
|
|
4108
|
+
.card-archive-btn:hover {
|
|
4109
|
+
opacity: 1;
|
|
4110
|
+
}
|
|
4111
|
+
|
|
4112
|
+
.card-archive-btn--restore:hover {
|
|
4113
|
+
background: rgba(var(--green-rgb, 34, 197, 94), 0.2);
|
|
4114
|
+
color: var(--ink);
|
|
4115
|
+
}
|
|
4116
|
+
|
|
4117
|
+
.card-archive-btn--delete:hover {
|
|
4118
|
+
background: rgba(var(--red-rgb), 0.22);
|
|
4119
|
+
color: var(--ink);
|
|
4120
|
+
}
|
|
4121
|
+
|
|
4122
|
+
.archive-list {
|
|
4123
|
+
min-height: 4rem;
|
|
4124
|
+
}
|
|
4125
|
+
|
|
4126
|
+
.related-add-row {
|
|
4127
|
+
display: flex;
|
|
4128
|
+
flex-wrap: wrap;
|
|
4129
|
+
gap: 0.4rem;
|
|
4130
|
+
align-items: center;
|
|
4131
|
+
margin-top: 0.55rem;
|
|
4132
|
+
}
|
|
4133
|
+
|
|
4134
|
+
.related-add-input-wrap {
|
|
4135
|
+
position: relative;
|
|
4136
|
+
flex: 1 1 10rem;
|
|
4137
|
+
min-width: 8rem;
|
|
4138
|
+
display: flex;
|
|
4139
|
+
}
|
|
4140
|
+
|
|
4141
|
+
.related-add-input {
|
|
4142
|
+
flex: 1;
|
|
4143
|
+
width: 100%;
|
|
4144
|
+
padding: 0.62rem 2rem 0.62rem 0.8rem;
|
|
4145
|
+
font-size: 0.86rem;
|
|
4146
|
+
}
|
|
4147
|
+
|
|
4148
|
+
.related-add-input::-webkit-calendar-picker-indicator {
|
|
4149
|
+
display: none !important;
|
|
4150
|
+
}
|
|
4151
|
+
|
|
4152
|
+
.related-add-clear {
|
|
4153
|
+
position: absolute;
|
|
4154
|
+
top: 50%;
|
|
4155
|
+
right: 0.4rem;
|
|
4156
|
+
transform: translateY(-50%);
|
|
4157
|
+
display: none;
|
|
4158
|
+
width: 1.4rem;
|
|
4159
|
+
height: 1.4rem;
|
|
4160
|
+
padding: 0;
|
|
4161
|
+
border: 0;
|
|
4162
|
+
border-radius: 999px;
|
|
4163
|
+
background: var(--subtle-bg);
|
|
4164
|
+
color: var(--muted);
|
|
4165
|
+
font-size: 0.95rem;
|
|
4166
|
+
line-height: 1;
|
|
4167
|
+
text-align: center;
|
|
4168
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
4169
|
+
}
|
|
4170
|
+
|
|
4171
|
+
.related-add-clear:hover {
|
|
4172
|
+
background: rgba(var(--red-rgb),0.18);
|
|
4173
|
+
color: var(--ink);
|
|
4174
|
+
transform: translateY(-50%);
|
|
4175
|
+
}
|
|
4176
|
+
|
|
4177
|
+
.related-add-row.has-value .related-add-clear {
|
|
4178
|
+
display: inline-grid;
|
|
4179
|
+
place-items: center;
|
|
4180
|
+
}
|
|
4181
|
+
|
|
4182
|
+
.related-add-type {
|
|
4183
|
+
flex: 0 0 auto;
|
|
4184
|
+
}
|
|
4185
|
+
|
|
4186
|
+
.related {
|
|
4187
|
+
display: grid;
|
|
4188
|
+
gap: 0.45rem;
|
|
4189
|
+
}
|
|
4190
|
+
|
|
4191
|
+
.related button {
|
|
4192
|
+
width: 100%;
|
|
4193
|
+
border-radius: 14px;
|
|
4194
|
+
color: var(--ink);
|
|
4195
|
+
background: var(--subtle-bg);
|
|
4196
|
+
text-align: left;
|
|
4197
|
+
}
|
|
4198
|
+
|
|
4199
|
+
.toast-container {
|
|
4200
|
+
position: fixed;
|
|
4201
|
+
top: 1rem;
|
|
4202
|
+
left: 50%;
|
|
4203
|
+
transform: translateX(-50%);
|
|
4204
|
+
z-index: 9999;
|
|
4205
|
+
display: flex;
|
|
4206
|
+
flex-direction: column;
|
|
4207
|
+
gap: 0.5rem;
|
|
4208
|
+
pointer-events: none;
|
|
4209
|
+
max-width: min(28rem, calc(100vw - 2rem));
|
|
4210
|
+
width: 28rem;
|
|
4211
|
+
}
|
|
4212
|
+
|
|
4213
|
+
.toast {
|
|
4214
|
+
display: flex;
|
|
4215
|
+
align-items: center;
|
|
4216
|
+
gap: 0.6rem;
|
|
4217
|
+
padding: 0.75rem 1rem;
|
|
4218
|
+
border-radius: 12px;
|
|
4219
|
+
font-size: 0.84rem;
|
|
4220
|
+
line-height: 1.4;
|
|
4221
|
+
pointer-events: auto;
|
|
4222
|
+
opacity: 0;
|
|
4223
|
+
transform: translateY(-100%) scale(0.96);
|
|
4224
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1), 0 1px 4px rgba(0, 0, 0, 0.06);
|
|
4225
|
+
}
|
|
4226
|
+
|
|
4227
|
+
.toast-enter {
|
|
4228
|
+
animation: toast-in 350ms cubic-bezier(0.21, 1.02, 0.73, 1) forwards;
|
|
4229
|
+
}
|
|
4230
|
+
|
|
4231
|
+
.toast-exit {
|
|
4232
|
+
animation: toast-out 280ms cubic-bezier(0.06, 0.71, 0.55, 1) forwards;
|
|
4233
|
+
}
|
|
4234
|
+
|
|
4235
|
+
@keyframes toast-in {
|
|
4236
|
+
from { opacity: 0; transform: translateY(-100%) scale(0.96); }
|
|
4237
|
+
to { opacity: 1; transform: translateY(0) scale(1); }
|
|
4238
|
+
}
|
|
4239
|
+
|
|
4240
|
+
@keyframes toast-out {
|
|
4241
|
+
from { opacity: 1; transform: translateY(0) scale(1); }
|
|
4242
|
+
to { opacity: 0; transform: translateY(-40%) scale(0.94); }
|
|
4243
|
+
}
|
|
4244
|
+
|
|
4245
|
+
.toast-icon {
|
|
4246
|
+
flex-shrink: 0;
|
|
4247
|
+
width: 1.1rem;
|
|
4248
|
+
height: 1.1rem;
|
|
4249
|
+
display: flex;
|
|
4250
|
+
}
|
|
4251
|
+
|
|
4252
|
+
.toast-icon svg {
|
|
4253
|
+
width: 100%;
|
|
4254
|
+
height: 100%;
|
|
4255
|
+
}
|
|
4256
|
+
|
|
4257
|
+
.toast-msg {
|
|
4258
|
+
flex: 1;
|
|
4259
|
+
min-width: 0;
|
|
4260
|
+
}
|
|
4261
|
+
|
|
4262
|
+
.toast-close {
|
|
4263
|
+
flex-shrink: 0;
|
|
4264
|
+
width: 1.25rem;
|
|
4265
|
+
height: 1.25rem;
|
|
4266
|
+
display: flex;
|
|
4267
|
+
align-items: center;
|
|
4268
|
+
justify-content: center;
|
|
4269
|
+
padding: 0;
|
|
4270
|
+
border: none;
|
|
4271
|
+
border-radius: 50%;
|
|
4272
|
+
background: transparent;
|
|
4273
|
+
color: inherit;
|
|
4274
|
+
opacity: 0.45;
|
|
4275
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
4276
|
+
font-size: 1rem;
|
|
4277
|
+
line-height: 1;
|
|
4278
|
+
transition: opacity 150ms;
|
|
4279
|
+
}
|
|
4280
|
+
|
|
4281
|
+
.toast-close:hover {
|
|
4282
|
+
opacity: 0.85;
|
|
4283
|
+
}
|
|
4284
|
+
|
|
4285
|
+
/* Type variants — light mode */
|
|
4286
|
+
.toast-info {
|
|
4287
|
+
background: #f0f4ff;
|
|
4288
|
+
border: 1px solid #c3d4ff;
|
|
4289
|
+
color: #1e40af;
|
|
4290
|
+
}
|
|
4291
|
+
|
|
4292
|
+
.toast-info .toast-icon { color: #3b82f6; }
|
|
4293
|
+
|
|
4294
|
+
.toast-success {
|
|
4295
|
+
background: #f0fdf4;
|
|
4296
|
+
border: 1px solid #bbf7d0;
|
|
4297
|
+
color: #166534;
|
|
4298
|
+
}
|
|
4299
|
+
|
|
4300
|
+
.toast-success .toast-icon { color: #22c55e; }
|
|
4301
|
+
|
|
4302
|
+
.toast-warning {
|
|
4303
|
+
background: #fffbeb;
|
|
4304
|
+
border: 1px solid #fde68a;
|
|
4305
|
+
color: #92400e;
|
|
4306
|
+
}
|
|
4307
|
+
|
|
4308
|
+
.toast-warning .toast-icon { color: #f59e0b; }
|
|
4309
|
+
|
|
4310
|
+
.toast-error {
|
|
4311
|
+
background: #fef2f2;
|
|
4312
|
+
border: 1px solid #fecaca;
|
|
4313
|
+
color: #991b1b;
|
|
4314
|
+
}
|
|
4315
|
+
|
|
4316
|
+
.toast-error .toast-icon { color: #ef4444; }
|
|
4317
|
+
|
|
4318
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4319
|
+
.toast-enter { animation: none; opacity: 1; transform: none; }
|
|
4320
|
+
.toast-exit { animation: none; }
|
|
4321
|
+
}
|
|
4322
|
+
|
|
4323
|
+
[data-theme="dark"] .toast {
|
|
4324
|
+
backdrop-filter: blur(16px);
|
|
4325
|
+
-webkit-backdrop-filter: blur(16px);
|
|
4326
|
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35), 0 1px 6px rgba(0, 0, 0, 0.2);
|
|
4327
|
+
}
|
|
4328
|
+
|
|
4329
|
+
[data-theme="dark"] .toast-info {
|
|
4330
|
+
background: rgba(22, 33, 72, 0.92);
|
|
4331
|
+
border-color: rgba(96, 140, 255, 0.25);
|
|
4332
|
+
color: #93b4ff;
|
|
4333
|
+
}
|
|
4334
|
+
|
|
4335
|
+
[data-theme="dark"] .toast-info .toast-icon { color: #60a5fa; }
|
|
4336
|
+
|
|
4337
|
+
[data-theme="dark"] .toast-success {
|
|
4338
|
+
background: rgba(12, 40, 28, 0.92);
|
|
4339
|
+
border-color: rgba(74, 222, 128, 0.25);
|
|
4340
|
+
color: #86efac;
|
|
4341
|
+
}
|
|
4342
|
+
|
|
4343
|
+
[data-theme="dark"] .toast-success .toast-icon { color: #4ade80; }
|
|
4344
|
+
|
|
4345
|
+
[data-theme="dark"] .toast-warning {
|
|
4346
|
+
background: rgba(50, 40, 12, 0.92);
|
|
4347
|
+
border-color: rgba(250, 204, 21, 0.25);
|
|
4348
|
+
color: #fde68a;
|
|
4349
|
+
}
|
|
4350
|
+
|
|
4351
|
+
[data-theme="dark"] .toast-warning .toast-icon { color: #facc15; }
|
|
4352
|
+
|
|
4353
|
+
[data-theme="dark"] .toast-error {
|
|
4354
|
+
background: rgba(55, 18, 18, 0.92);
|
|
4355
|
+
border-color: rgba(var(--coral-rgb),0.25);
|
|
4356
|
+
color: #fca5a5;
|
|
4357
|
+
}
|
|
4358
|
+
|
|
4359
|
+
[data-theme="dark"] .toast-error .toast-icon { color: #f87171; }
|
|
4360
|
+
|
|
4361
|
+
/* Delay topbar wrap until small tablet/large phone widths. */
|
|
4362
|
+
@media (max-width: 800px) {
|
|
4363
|
+
.topbar {
|
|
4364
|
+
position: static;
|
|
4365
|
+
align-items: stretch;
|
|
4366
|
+
flex-direction: column;
|
|
4367
|
+
}
|
|
4368
|
+
|
|
4369
|
+
.controls {
|
|
4370
|
+
flex-wrap: wrap;
|
|
4371
|
+
justify-content: flex-start;
|
|
4372
|
+
}
|
|
4373
|
+
|
|
4374
|
+
.topbar-controls-gap {
|
|
4375
|
+
display: none;
|
|
4376
|
+
}
|
|
4377
|
+
|
|
4378
|
+
.topbar-search {
|
|
4379
|
+
flex: 1 1 100%;
|
|
4380
|
+
width: 100%;
|
|
4381
|
+
min-width: 0;
|
|
4382
|
+
max-width: none;
|
|
4383
|
+
}
|
|
4384
|
+
|
|
4385
|
+
/* On the wrapped action row, keep utility controls anchored to the right. */
|
|
4386
|
+
#themeToggle {
|
|
4387
|
+
margin-left: auto;
|
|
4388
|
+
}
|
|
4389
|
+
|
|
4390
|
+
.composer-row,
|
|
4391
|
+
.lane-row,
|
|
4392
|
+
.lane-create-form {
|
|
4393
|
+
grid-template-columns: 1fr 1fr;
|
|
4394
|
+
}
|
|
4395
|
+
|
|
4396
|
+
.drawer {
|
|
4397
|
+
width: min(100vw, 28rem);
|
|
4398
|
+
}
|
|
4399
|
+
}
|
|
4400
|
+
|
|
4401
|
+
@media (max-width: 640px) {
|
|
4402
|
+
.controls {
|
|
4403
|
+
flex-wrap: wrap;
|
|
4404
|
+
}
|
|
4405
|
+
|
|
4406
|
+
.composer-row,
|
|
4407
|
+
.deployment-actions,
|
|
4408
|
+
.lane-row,
|
|
4409
|
+
.lane-create-form {
|
|
4410
|
+
grid-template-columns: 1fr;
|
|
4411
|
+
}
|
|
4412
|
+
|
|
4413
|
+
.detail-card-grid {
|
|
4414
|
+
grid-template-columns: 1fr;
|
|
4415
|
+
}
|
|
4416
|
+
|
|
4417
|
+
.kanban {
|
|
4418
|
+
grid-auto-columns: minmax(85vw, 1fr);
|
|
4419
|
+
}
|
|
4420
|
+
|
|
4421
|
+
/* On narrow screens the floating card wastes space; go edge-to-edge. */
|
|
4422
|
+
.drawer {
|
|
4423
|
+
top: 0;
|
|
4424
|
+
right: 0;
|
|
4425
|
+
bottom: 0;
|
|
4426
|
+
width: min(100vw, 28rem);
|
|
4427
|
+
border: none;
|
|
4428
|
+
border-left: 1px solid var(--line);
|
|
4429
|
+
border-radius: 0;
|
|
4430
|
+
transform: translateX(100%);
|
|
4431
|
+
}
|
|
4432
|
+
}
|
|
4433
|
+
|
|
4434
|
+
/* =====================================================================
|
|
4435
|
+
MODAL DIALOG (.orbit-dialog)
|
|
4436
|
+
A generic <dialog>-based overlay. Open with JS .showModal(); close via
|
|
4437
|
+
the [data-modal-close] button, backdrop click, or the Escape key (native).
|
|
4438
|
+
===================================================================== */
|
|
4439
|
+
|
|
4440
|
+
.orbit-dialog {
|
|
4441
|
+
position: fixed;
|
|
4442
|
+
inset: 0;
|
|
4443
|
+
margin: auto;
|
|
4444
|
+
width: min(30rem, calc(100vw - 2rem));
|
|
4445
|
+
max-height: calc(100dvh - 4rem);
|
|
4446
|
+
padding: 0;
|
|
4447
|
+
border: 1px solid var(--line);
|
|
4448
|
+
border-radius: 20px;
|
|
4449
|
+
background: var(--surface-raised);
|
|
4450
|
+
box-shadow:
|
|
4451
|
+
0 24px 60px rgba(12, 18, 26, 0.22),
|
|
4452
|
+
0 4px 16px rgba(12, 18, 26, 0.1);
|
|
4453
|
+
overflow: hidden auto;
|
|
4454
|
+
animation: dialog-rise 280ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
|
|
4455
|
+
}
|
|
4456
|
+
|
|
4457
|
+
.orbit-dialog::backdrop {
|
|
4458
|
+
background: var(--backdrop-bg);
|
|
4459
|
+
backdrop-filter: blur(4px);
|
|
4460
|
+
-webkit-backdrop-filter: blur(4px);
|
|
4461
|
+
animation: backdrop-in 280ms ease both;
|
|
4462
|
+
}
|
|
4463
|
+
|
|
4464
|
+
@keyframes dialog-rise {
|
|
4465
|
+
from {
|
|
4466
|
+
opacity: 0;
|
|
4467
|
+
transform: translateY(1rem) scale(0.97);
|
|
4468
|
+
}
|
|
4469
|
+
to {
|
|
4470
|
+
opacity: 1;
|
|
4471
|
+
transform: translateY(0) scale(1);
|
|
4472
|
+
}
|
|
4473
|
+
}
|
|
4474
|
+
|
|
4475
|
+
@keyframes backdrop-in {
|
|
4476
|
+
from { opacity: 0; }
|
|
4477
|
+
to { opacity: 1; }
|
|
4478
|
+
}
|
|
4479
|
+
|
|
4480
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4481
|
+
.orbit-dialog,
|
|
4482
|
+
.orbit-dialog::backdrop {
|
|
4483
|
+
animation: none;
|
|
4484
|
+
}
|
|
4485
|
+
}
|
|
4486
|
+
|
|
4487
|
+
[data-theme="dark"] .orbit-dialog {
|
|
4488
|
+
background: rgba(16, 24, 48, 0.97);
|
|
4489
|
+
box-shadow:
|
|
4490
|
+
0 24px 60px rgba(0, 0, 0, 0.5),
|
|
4491
|
+
0 4px 16px rgba(0, 0, 0, 0.3);
|
|
4492
|
+
}
|
|
4493
|
+
|
|
4494
|
+
/* ---- Welcome / preview-edition dialog content ---- */
|
|
4495
|
+
|
|
4496
|
+
.welcome-dialog-inner {
|
|
4497
|
+
display: flex;
|
|
4498
|
+
flex-direction: column;
|
|
4499
|
+
gap: 1.35rem;
|
|
4500
|
+
padding: 1.75rem 1.75rem 1.5rem;
|
|
4501
|
+
}
|
|
4502
|
+
|
|
4503
|
+
.welcome-dialog-head {
|
|
4504
|
+
display: flex;
|
|
4505
|
+
align-items: center;
|
|
4506
|
+
gap: 0.75rem;
|
|
4507
|
+
}
|
|
4508
|
+
|
|
4509
|
+
.welcome-dialog-logo {
|
|
4510
|
+
width: 2.4rem;
|
|
4511
|
+
height: 2.4rem;
|
|
4512
|
+
flex-shrink: 0;
|
|
4513
|
+
object-fit: contain;
|
|
4514
|
+
}
|
|
4515
|
+
|
|
4516
|
+
.welcome-dialog-edition-pill {
|
|
4517
|
+
display: inline-flex;
|
|
4518
|
+
align-items: center;
|
|
4519
|
+
padding: 0.22rem 0.65rem;
|
|
4520
|
+
border-radius: 999px;
|
|
4521
|
+
background: rgba(var(--accent-rgb), 0.1);
|
|
4522
|
+
border: 1px solid rgba(var(--accent-rgb), 0.28);
|
|
4523
|
+
color: var(--accent);
|
|
4524
|
+
font-size: 0.72rem;
|
|
4525
|
+
font-weight: 800;
|
|
4526
|
+
letter-spacing: 0.08em;
|
|
4527
|
+
text-transform: uppercase;
|
|
4528
|
+
}
|
|
4529
|
+
|
|
4530
|
+
[data-theme="dark"] .welcome-dialog-edition-pill {
|
|
4531
|
+
background: rgba(var(--starlight-rgb), 0.12);
|
|
4532
|
+
border-color: rgba(var(--starlight-rgb), 0.28);
|
|
4533
|
+
}
|
|
4534
|
+
|
|
4535
|
+
.welcome-dialog-title {
|
|
4536
|
+
margin: 0;
|
|
4537
|
+
font-size: 1.45rem;
|
|
4538
|
+
font-weight: 700;
|
|
4539
|
+
letter-spacing: -0.035em;
|
|
4540
|
+
line-height: 1.2;
|
|
4541
|
+
color: var(--ink);
|
|
4542
|
+
}
|
|
4543
|
+
|
|
4544
|
+
.welcome-dialog-lede {
|
|
4545
|
+
margin: 0.35rem 0 0;
|
|
4546
|
+
color: var(--muted);
|
|
4547
|
+
font-size: 0.9rem;
|
|
4548
|
+
line-height: 1.5;
|
|
4549
|
+
}
|
|
4550
|
+
|
|
4551
|
+
.welcome-dialog-notices {
|
|
4552
|
+
list-style: none;
|
|
4553
|
+
margin: 0;
|
|
4554
|
+
padding: 0;
|
|
4555
|
+
display: flex;
|
|
4556
|
+
flex-direction: column;
|
|
4557
|
+
border: 1px solid var(--line);
|
|
4558
|
+
border-radius: 14px;
|
|
4559
|
+
overflow: hidden;
|
|
4560
|
+
}
|
|
4561
|
+
|
|
4562
|
+
.welcome-dialog-notices li {
|
|
4563
|
+
padding: 0.65rem 0.95rem;
|
|
4564
|
+
border-bottom: 1px solid var(--line);
|
|
4565
|
+
font-size: 0.88rem;
|
|
4566
|
+
line-height: 1.45;
|
|
4567
|
+
color: var(--ink);
|
|
4568
|
+
}
|
|
4569
|
+
|
|
4570
|
+
.welcome-dialog-notices li:last-child {
|
|
4571
|
+
border-bottom: none;
|
|
4572
|
+
}
|
|
4573
|
+
|
|
4574
|
+
.welcome-dialog-notice-label {
|
|
4575
|
+
display: block;
|
|
4576
|
+
margin-bottom: 0.1rem;
|
|
4577
|
+
font-size: 0.66rem;
|
|
4578
|
+
font-weight: 800;
|
|
4579
|
+
letter-spacing: 0.1em;
|
|
4580
|
+
text-transform: uppercase;
|
|
4581
|
+
color: var(--muted);
|
|
4582
|
+
}
|
|
4583
|
+
|
|
4584
|
+
.welcome-dialog-link {
|
|
4585
|
+
color: var(--accent);
|
|
4586
|
+
font-weight: 700;
|
|
4587
|
+
text-decoration: none;
|
|
4588
|
+
}
|
|
4589
|
+
|
|
4590
|
+
.welcome-dialog-link:hover {
|
|
4591
|
+
text-decoration: underline;
|
|
4592
|
+
}
|
|
4593
|
+
|
|
4594
|
+
.welcome-dialog-footer {
|
|
4595
|
+
display: flex;
|
|
4596
|
+
justify-content: center;
|
|
4597
|
+
}
|
|
4598
|
+
|
|
4599
|
+
.welcome-dialog-cta {
|
|
4600
|
+
padding: 0.65rem 2.25rem;
|
|
4601
|
+
border-radius: 12px;
|
|
4602
|
+
border: 1px solid var(--btn-border);
|
|
4603
|
+
font: inherit;
|
|
4604
|
+
font-size: 0.95rem;
|
|
4605
|
+
font-weight: 700;
|
|
4606
|
+
color: #fff;
|
|
4607
|
+
background: var(--btn-gradient);
|
|
4608
|
+
cursor: url('cursors/live_link.cur'), pointer;
|
|
4609
|
+
transition:
|
|
4610
|
+
filter 150ms ease,
|
|
4611
|
+
transform 150ms ease,
|
|
4612
|
+
box-shadow 150ms ease;
|
|
4613
|
+
}
|
|
4614
|
+
|
|
4615
|
+
.welcome-dialog-cta:hover {
|
|
4616
|
+
filter: brightness(1.06);
|
|
4617
|
+
transform: translateY(-1px);
|
|
4618
|
+
box-shadow: var(--btn-hover-shadow);
|
|
4619
|
+
}
|
|
4620
|
+
|
|
4621
|
+
/* =====================================================================
|
|
4622
|
+
DARK THEME — Starscape
|
|
4623
|
+
===================================================================== */
|
|
4624
|
+
|
|
4625
|
+
/* Background starfield is a 2D canvas (app.js). Each star has its own
|
|
4626
|
+
twinkle period, phase, and warmth; layers parallax to the cursor.
|
|
4627
|
+
The canvas is created lazily by JS and inserted inside .grain. */
|
|
4628
|
+
.milky-way {
|
|
4629
|
+
display: none;
|
|
4630
|
+
}
|
|
4631
|
+
|
|
4632
|
+
.starfield-canvas {
|
|
4633
|
+
position: absolute;
|
|
4634
|
+
inset: 0;
|
|
4635
|
+
display: none;
|
|
4636
|
+
pointer-events: none;
|
|
4637
|
+
}
|
|
4638
|
+
|
|
4639
|
+
[data-theme="dark"] .starfield-canvas {
|
|
4640
|
+
display: block;
|
|
4641
|
+
}
|
|
4642
|
+
|
|
4643
|
+
/* Faint galactic band — two overlapping diagonals, heavily blurred.
|
|
4644
|
+
Breathes on a slow cycle so the sky never feels static. */
|
|
4645
|
+
[data-theme="dark"] .milky-way {
|
|
4646
|
+
position: absolute;
|
|
4647
|
+
inset: -25%;
|
|
4648
|
+
display: block;
|
|
4649
|
+
pointer-events: none;
|
|
4650
|
+
background:
|
|
4651
|
+
linear-gradient(
|
|
4652
|
+
115deg,
|
|
4653
|
+
transparent 24%,
|
|
4654
|
+
rgba(var(--starlight-rgb),0.09) 41%,
|
|
4655
|
+
rgba(224, 200, 255, 0.13) 50%,
|
|
4656
|
+
rgba(var(--starlight-rgb),0.09) 59%,
|
|
4657
|
+
transparent 76%
|
|
4658
|
+
),
|
|
4659
|
+
linear-gradient(
|
|
4660
|
+
98deg,
|
|
4661
|
+
transparent 38%,
|
|
4662
|
+
rgba(255, 222, 186, 0.055) 50%,
|
|
4663
|
+
transparent 62%
|
|
4664
|
+
);
|
|
4665
|
+
filter: blur(18px);
|
|
4666
|
+
opacity: 0.85;
|
|
4667
|
+
animation: milky-breathe 42s ease-in-out infinite;
|
|
4668
|
+
}
|
|
4669
|
+
|
|
4670
|
+
@keyframes milky-breathe {
|
|
4671
|
+
0%, 100% { opacity: 0.75; }
|
|
4672
|
+
50% { opacity: 1; }
|
|
4673
|
+
}
|
|
4674
|
+
|
|
4675
|
+
/* Nebula ghosts — two blurred color blobs that drift on minute-scale cycles.
|
|
4676
|
+
Add warmth (violet + teal) that pure starlight can't. */
|
|
4677
|
+
[data-theme="dark"] .grain::before,
|
|
4678
|
+
[data-theme="dark"] .grain::after {
|
|
4679
|
+
content: "";
|
|
4680
|
+
position: absolute;
|
|
4681
|
+
pointer-events: none;
|
|
4682
|
+
border-radius: 50%;
|
|
4683
|
+
filter: blur(60px);
|
|
4684
|
+
}
|
|
4685
|
+
|
|
4686
|
+
[data-theme="dark"] .grain::before {
|
|
4687
|
+
top: -10vmax;
|
|
4688
|
+
right: -12vmax;
|
|
4689
|
+
width: 45vmax;
|
|
4690
|
+
height: 45vmax;
|
|
4691
|
+
background: radial-gradient(circle, rgba(var(--violet-rgb), 0.14), transparent 68%);
|
|
4692
|
+
animation: nebula-drift-1 320s ease-in-out infinite alternate;
|
|
4693
|
+
}
|
|
4694
|
+
|
|
4695
|
+
[data-theme="dark"] .grain::after {
|
|
4696
|
+
bottom: -18vmax;
|
|
4697
|
+
left: -8vmax;
|
|
4698
|
+
width: 50vmax;
|
|
4699
|
+
height: 50vmax;
|
|
4700
|
+
background: radial-gradient(circle, rgba(var(--cyan-rgb), 0.11), transparent 70%);
|
|
4701
|
+
animation: nebula-drift-2 400s ease-in-out infinite alternate;
|
|
4702
|
+
}
|
|
4703
|
+
|
|
4704
|
+
@keyframes nebula-drift-1 {
|
|
4705
|
+
from { transform: translate(0, 0) scale(1); }
|
|
4706
|
+
to { transform: translate(70px, -50px) scale(1.15); }
|
|
4707
|
+
}
|
|
4708
|
+
|
|
4709
|
+
@keyframes nebula-drift-2 {
|
|
4710
|
+
from { transform: translate(0, 0) scale(1); }
|
|
4711
|
+
to { transform: translate(-90px, 60px) scale(1.1); }
|
|
4712
|
+
}
|
|
4713
|
+
|
|
4714
|
+
/* Signature stars — the half-dozen brightest points. Real <div>s (not
|
|
4715
|
+
box-shadows) so they can wear diffraction spikes as pseudo-elements.
|
|
4716
|
+
JS places them at random positions and staggers their twinkle delays. */
|
|
4717
|
+
[data-theme="dark"] .signature-star {
|
|
4718
|
+
position: absolute;
|
|
4719
|
+
width: 3px;
|
|
4720
|
+
height: 3px;
|
|
4721
|
+
margin: -1.5px 0 0 -1.5px;
|
|
4722
|
+
border-radius: 50%;
|
|
4723
|
+
pointer-events: none;
|
|
4724
|
+
background: radial-gradient(
|
|
4725
|
+
circle,
|
|
4726
|
+
rgba(255, 255, 255, 1) 0%,
|
|
4727
|
+
rgba(210, 225, 255, 0.85) 40%,
|
|
4728
|
+
transparent 75%
|
|
4729
|
+
);
|
|
4730
|
+
box-shadow:
|
|
4731
|
+
0 0 6px rgba(255, 255, 255, 0.85),
|
|
4732
|
+
0 0 14px rgba(var(--starlight-rgb),0.45);
|
|
4733
|
+
animation: sig-twinkle 4.8s ease-in-out infinite;
|
|
4734
|
+
}
|
|
4735
|
+
|
|
4736
|
+
[data-theme="dark"] .signature-star::before,
|
|
4737
|
+
[data-theme="dark"] .signature-star::after {
|
|
4738
|
+
content: "";
|
|
4739
|
+
position: absolute;
|
|
4740
|
+
top: 50%;
|
|
4741
|
+
left: 50%;
|
|
4742
|
+
pointer-events: none;
|
|
4743
|
+
opacity: 0.85;
|
|
4744
|
+
}
|
|
4745
|
+
|
|
4746
|
+
[data-theme="dark"] .signature-star::before {
|
|
4747
|
+
width: 32px;
|
|
4748
|
+
height: 1px;
|
|
4749
|
+
margin: -0.5px 0 0 -16px;
|
|
4750
|
+
background: linear-gradient(
|
|
4751
|
+
to right,
|
|
4752
|
+
transparent,
|
|
4753
|
+
rgba(255, 255, 255, 0.9) 50%,
|
|
4754
|
+
transparent
|
|
4755
|
+
);
|
|
4756
|
+
}
|
|
4757
|
+
|
|
4758
|
+
[data-theme="dark"] .signature-star::after {
|
|
4759
|
+
width: 1px;
|
|
4760
|
+
height: 32px;
|
|
4761
|
+
margin: -16px 0 0 -0.5px;
|
|
4762
|
+
background: linear-gradient(
|
|
4763
|
+
to bottom,
|
|
4764
|
+
transparent,
|
|
4765
|
+
rgba(255, 255, 255, 0.9) 50%,
|
|
4766
|
+
transparent
|
|
4767
|
+
);
|
|
4768
|
+
}
|
|
4769
|
+
|
|
4770
|
+
@keyframes sig-twinkle {
|
|
4771
|
+
0%, 100% { opacity: 0.75; }
|
|
4772
|
+
50% { opacity: 1; }
|
|
4773
|
+
}
|
|
4774
|
+
|
|
4775
|
+
/* Shooting stars — sparse streaks spawned by app.js every 15-45 seconds. */
|
|
4776
|
+
[data-theme="dark"] .meteor {
|
|
4777
|
+
position: absolute;
|
|
4778
|
+
top: 0;
|
|
4779
|
+
left: 0;
|
|
4780
|
+
width: 0;
|
|
4781
|
+
height: 0;
|
|
4782
|
+
pointer-events: none;
|
|
4783
|
+
animation: meteor 1.5s ease-out forwards;
|
|
4784
|
+
}
|
|
4785
|
+
|
|
4786
|
+
[data-theme="dark"] .meteor::before {
|
|
4787
|
+
content: "";
|
|
4788
|
+
position: absolute;
|
|
4789
|
+
right: 0;
|
|
4790
|
+
top: -0.75px;
|
|
4791
|
+
width: 160px;
|
|
4792
|
+
height: 1.5px;
|
|
4793
|
+
border-radius: 999px;
|
|
4794
|
+
background: linear-gradient(
|
|
4795
|
+
to right,
|
|
4796
|
+
transparent 10%,
|
|
4797
|
+
rgba(210, 225, 255, 0.55) 60%,
|
|
4798
|
+
rgba(255, 255, 255, 0.95)
|
|
4799
|
+
);
|
|
4800
|
+
filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.6))
|
|
4801
|
+
drop-shadow(0 0 10px rgba(var(--starlight-rgb),0.4));
|
|
4802
|
+
transform: rotate(var(--angle, 30deg));
|
|
4803
|
+
transform-origin: right center;
|
|
4804
|
+
}
|
|
4805
|
+
|
|
4806
|
+
@keyframes meteor {
|
|
4807
|
+
0% {
|
|
4808
|
+
opacity: 0;
|
|
4809
|
+
transform: translate(var(--from-x, 0), var(--from-y, 0));
|
|
4810
|
+
}
|
|
4811
|
+
8% { opacity: 1; }
|
|
4812
|
+
100% {
|
|
4813
|
+
opacity: 0;
|
|
4814
|
+
transform: translate(var(--to-x, 0), var(--to-y, 0));
|
|
4815
|
+
}
|
|
4816
|
+
}
|
|
4817
|
+
|
|
4818
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4819
|
+
[data-theme="dark"] .starfield,
|
|
4820
|
+
[data-theme="dark"] .milky-way,
|
|
4821
|
+
[data-theme="dark"] .grain::before,
|
|
4822
|
+
[data-theme="dark"] .grain::after,
|
|
4823
|
+
[data-theme="dark"] .signature-star {
|
|
4824
|
+
animation: none;
|
|
4825
|
+
}
|
|
4826
|
+
[data-theme="dark"] .meteor {
|
|
4827
|
+
display: none;
|
|
4828
|
+
}
|
|
4829
|
+
}
|
|
4830
|
+
|
|
4831
|
+
[data-theme="dark"] {
|
|
4832
|
+
/* Tells the browser to render native widgets (dropdowns, scrollbars,
|
|
4833
|
+
date pickers, etc.) in their dark variant so option popups match. */
|
|
4834
|
+
color-scheme: dark;
|
|
4835
|
+
--paper: #1a1a2e;
|
|
4836
|
+
--paper-deep: #16213e;
|
|
4837
|
+
--ink: rgba(255, 255, 255, 0.92);
|
|
4838
|
+
--muted: rgba(255, 255, 255, 0.68);
|
|
4839
|
+
--line: rgba(255, 255, 255, 0.1);
|
|
4840
|
+
--card: rgba(var(--cosmos-rgb),0.85);
|
|
4841
|
+
--accent: #a8c0ff;
|
|
4842
|
+
--accent-2: #a855f7;
|
|
4843
|
+
--blue: #60a5fa;
|
|
4844
|
+
--danger: #f87171;
|
|
4845
|
+
--shadow: 0 8px 25px rgba(var(--void-rgb),0.3);
|
|
4846
|
+
--radius: 12px;
|
|
4847
|
+
/* Surfaces */
|
|
4848
|
+
--surface: rgba(var(--cosmos-rgb),0.7);
|
|
4849
|
+
--surface-raised: rgba(var(--cosmos-rgb),0.95);
|
|
4850
|
+
--surface-dim: rgba(0, 0, 0, 0.2);
|
|
4851
|
+
--surface-input: rgba(0, 0, 0, 0.2);
|
|
4852
|
+
--topbar-bg: rgba(var(--cosmos-rgb),0.88);
|
|
4853
|
+
--drawer-bg: rgba(var(--cosmos-rgb),0.97);
|
|
4854
|
+
--drawer-head-bg: rgba(var(--cosmos-rgb),0.95);
|
|
4855
|
+
/* Buttons */
|
|
4856
|
+
--btn-gradient: linear-gradient(135deg, #1a1a2e, #16213e, #0f3460);
|
|
4857
|
+
--btn-border: rgba(var(--starlight-rgb),0.25);
|
|
4858
|
+
--btn-hover-shadow: 0 10px 24px rgba(0, 0, 0, 0.35);
|
|
4859
|
+
--mark-gradient: linear-gradient(135deg, #0f3460, #a8c0ff);
|
|
4860
|
+
--mark-shadow: 0 6px 16px rgba(var(--void-rgb),0.4);
|
|
4861
|
+
/* Accent interactions */
|
|
4862
|
+
--accent-hover: rgba(var(--starlight-rgb),0.08);
|
|
4863
|
+
--accent-active: rgba(var(--starlight-rgb),0.12);
|
|
4864
|
+
--accent-border: rgba(var(--starlight-rgb),0.25);
|
|
4865
|
+
--accent-ring: 0 0 0 3px rgba(var(--starlight-rgb),0.12);
|
|
4866
|
+
--accent-focus-border: rgba(var(--starlight-rgb),0.5);
|
|
4867
|
+
/* Subtle backgrounds */
|
|
4868
|
+
--subtle-bg: rgba(255, 255, 255, 0.06);
|
|
4869
|
+
--subtle-bg-2: rgba(255, 255, 255, 0.03);
|
|
4870
|
+
/* Overlay */
|
|
4871
|
+
--backdrop-bg: rgba(0, 0, 0, 0.5);
|
|
4872
|
+
--flyout-shadow: 0 12px 36px rgba(0, 0, 0, 0.4);
|
|
4873
|
+
/* Orbit board */
|
|
4874
|
+
--orbit-surface: rgba(15, 20, 35, 0.95);
|
|
4875
|
+
--orbit-surface-2: rgba(10, 14, 28, 0.98);
|
|
4876
|
+
--orbit-grid: rgba(var(--starlight-rgb),0.04);
|
|
4877
|
+
--orbit-line: rgba(var(--starlight-rgb),0.08);
|
|
4878
|
+
--orbit-column: rgba(var(--starlight-rgb),0.05);
|
|
4879
|
+
--orbit-column-border: rgba(var(--starlight-rgb),0.08);
|
|
4880
|
+
--orbit-text: rgba(255, 255, 255, 0.92);
|
|
4881
|
+
--orbit-text-muted: rgba(255, 255, 255, 0.55);
|
|
4882
|
+
--orbit-accent: rgba(var(--starlight-rgb),0.08);
|
|
4883
|
+
--orbit-accent-2: rgba(var(--indigo-rgb),0.06);
|
|
4884
|
+
--orbit-column-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
|
|
4885
|
+
--orbit-count-bg: rgba(0, 0, 0, 0.2);
|
|
4886
|
+
--orbit-add-bg: rgba(0, 0, 0, 0.22);
|
|
4887
|
+
--orbit-add-border: rgba(255, 255, 255, 0.12);
|
|
4888
|
+
--orbit-phantom-border: rgba(255, 255, 255, 0.22);
|
|
4889
|
+
--orbit-phantom-bg: rgba(0, 0, 0, 0.08);
|
|
4890
|
+
--scrollbar-thumb: rgba(var(--starlight-rgb),0.3);
|
|
4891
|
+
--scrollbar-thumb-hover: rgba(var(--starlight-rgb),0.5);
|
|
4892
|
+
}
|