issue-flow 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -274
- package/dist/agent-OX3KPHE4.js +30 -0
- package/dist/{analyze-OEET7KGE.js → analyze-WIND2SEB.js} +31 -16
- package/dist/analyze-WIND2SEB.js.map +1 -0
- package/dist/{apply-ZIA3C52S.js → apply-JNOI2LR4.js} +18 -7
- package/dist/{apply-ZIA3C52S.js.map → apply-JNOI2LR4.js.map} +1 -1
- package/dist/bench-B4VZON7E.js +910 -0
- package/dist/bench-B4VZON7E.js.map +1 -0
- package/dist/{chunk-FADTCQGM.js → chunk-2IQ6M4ZE.js} +94 -32
- package/dist/chunk-2IQ6M4ZE.js.map +1 -0
- package/dist/chunk-3BWZO4YI.js +141 -0
- package/dist/chunk-3BWZO4YI.js.map +1 -0
- package/dist/chunk-3WFZETIM.js +163 -0
- package/dist/chunk-3WFZETIM.js.map +1 -0
- package/dist/chunk-67YIU2VB.js +362 -0
- package/dist/chunk-67YIU2VB.js.map +1 -0
- package/dist/{chunk-QCPGHBSZ.js → chunk-6BENHR2I.js} +63 -21
- package/dist/chunk-6BENHR2I.js.map +1 -0
- package/dist/{chunk-BYZDPR7N.js → chunk-6QYMSNVA.js} +194 -235
- package/dist/chunk-6QYMSNVA.js.map +1 -0
- package/dist/{chunk-Y5ZDJ4PJ.js → chunk-76MMPJ53.js} +20 -10
- package/dist/chunk-76MMPJ53.js.map +1 -0
- package/dist/chunk-7Z4Y3VKM.js +26 -0
- package/dist/chunk-7Z4Y3VKM.js.map +1 -0
- package/dist/{chunk-3QHK4YQA.js → chunk-B72RQZBV.js} +346 -119
- package/dist/chunk-B72RQZBV.js.map +1 -0
- package/dist/chunk-BEZ5BA5U.js +625 -0
- package/dist/chunk-BEZ5BA5U.js.map +1 -0
- package/dist/chunk-BRCNQXYQ.js +74 -0
- package/dist/chunk-BRCNQXYQ.js.map +1 -0
- package/dist/chunk-CGKLE6WR.js +1203 -0
- package/dist/chunk-CGKLE6WR.js.map +1 -0
- package/dist/chunk-CRGIQFUQ.js +83 -0
- package/dist/chunk-CRGIQFUQ.js.map +1 -0
- package/dist/{chunk-NS6R37II.js → chunk-F6TOYSYY.js} +141 -12
- package/dist/chunk-F6TOYSYY.js.map +1 -0
- package/dist/chunk-G5EK2XRN.js +25 -0
- package/dist/chunk-G5EK2XRN.js.map +1 -0
- package/dist/chunk-HAKDLR6N.js +134 -0
- package/dist/chunk-HAKDLR6N.js.map +1 -0
- package/dist/chunk-J3SOTUVI.js +298 -0
- package/dist/chunk-J3SOTUVI.js.map +1 -0
- package/dist/chunk-JN6D3MY6.js +30 -0
- package/dist/chunk-JN6D3MY6.js.map +1 -0
- package/dist/{chunk-LAFNLLQP.js → chunk-KMRFRXIT.js} +5 -5
- package/dist/chunk-KT7JKOXB.js +72 -0
- package/dist/chunk-KT7JKOXB.js.map +1 -0
- package/dist/chunk-L6HSKTQE.js +77 -0
- package/dist/chunk-L6HSKTQE.js.map +1 -0
- package/dist/chunk-LBGHI4S2.js +1264 -0
- package/dist/chunk-LBGHI4S2.js.map +1 -0
- package/dist/chunk-LEW4QM74.js +180 -0
- package/dist/chunk-LEW4QM74.js.map +1 -0
- package/dist/{chunk-FJP3UQGD.js → chunk-LFEQIZLB.js} +115 -20
- package/dist/chunk-LFEQIZLB.js.map +1 -0
- package/dist/chunk-OOVG2KBY.js +77 -0
- package/dist/chunk-OOVG2KBY.js.map +1 -0
- package/dist/{chunk-56KS3TFQ.js → chunk-OR43364P.js} +115 -160
- package/dist/chunk-OR43364P.js.map +1 -0
- package/dist/chunk-P3LRUNC6.js +16 -0
- package/dist/chunk-P3LRUNC6.js.map +1 -0
- package/dist/{chunk-TSOLWK7Y.js → chunk-PBTA3QQX.js} +8 -7
- package/dist/{chunk-TSOLWK7Y.js.map → chunk-PBTA3QQX.js.map} +1 -1
- package/dist/{chunk-MJULIKQU.js → chunk-PHW2YV6N.js} +23 -47
- package/dist/chunk-PHW2YV6N.js.map +1 -0
- package/dist/{chunk-73ATPIYX.js → chunk-PZTWU277.js} +36 -71
- package/dist/chunk-PZTWU277.js.map +1 -0
- package/dist/{chunk-M5UCXTIT.js → chunk-QD4VOILZ.js} +22 -18
- package/dist/chunk-QD4VOILZ.js.map +1 -0
- package/dist/chunk-QJ5UZAH5.js +2718 -0
- package/dist/chunk-QJ5UZAH5.js.map +1 -0
- package/dist/chunk-QK7WUO7A.js +283 -0
- package/dist/chunk-QK7WUO7A.js.map +1 -0
- package/dist/{chunk-A4SLHOW7.js → chunk-QZVKRDJY.js} +27 -19
- package/dist/chunk-QZVKRDJY.js.map +1 -0
- package/dist/chunk-REO3PXXO.js +71 -0
- package/dist/chunk-REO3PXXO.js.map +1 -0
- package/dist/{chunk-EZATO3DW.js → chunk-RVO7L4FX.js} +594 -17
- package/dist/chunk-RVO7L4FX.js.map +1 -0
- package/dist/{chunk-XQUSIEKA.js → chunk-SZMHCEYV.js} +63 -14
- package/dist/chunk-SZMHCEYV.js.map +1 -0
- package/dist/chunk-TYRNTSPJ.js +243 -0
- package/dist/chunk-TYRNTSPJ.js.map +1 -0
- package/dist/chunk-UJ3L2MS7.js +238 -0
- package/dist/chunk-UJ3L2MS7.js.map +1 -0
- package/dist/chunk-V7MO5EDS.js +120 -0
- package/dist/chunk-V7MO5EDS.js.map +1 -0
- package/dist/chunk-WB2X37MO.js +415 -0
- package/dist/chunk-WB2X37MO.js.map +1 -0
- package/dist/{chunk-NTMMF5UD.js → chunk-X44FKNKP.js} +525 -252
- package/dist/chunk-X44FKNKP.js.map +1 -0
- package/dist/chunk-XEYH6ZZI.js +289 -0
- package/dist/chunk-XEYH6ZZI.js.map +1 -0
- package/dist/cli.js +267 -44
- package/dist/cli.js.map +1 -1
- package/dist/{config-PRJGWW7J.js → config-HMFMCY2M.js} +31 -5
- package/dist/contract-JH2WBIO6.js +8 -0
- package/dist/conventions-NJF2OPVQ.js +146 -0
- package/dist/conventions-NJF2OPVQ.js.map +1 -0
- package/dist/diagnostics-THH42ZMP.js +23 -0
- package/dist/execute-KFNNZZHI.js +35 -0
- package/dist/{generate-EGB4KV2B.js → generate-FW5C6NP7.js} +37 -20
- package/dist/{generate-EGB4KV2B.js.map → generate-FW5C6NP7.js.map} +1 -1
- package/dist/git-W72QQ6GT.js +33 -0
- package/dist/init-HTN4V67Q.js +24 -0
- package/dist/{operations-BYT626KQ.js → operations-BCFOBH42.js} +27 -15
- package/dist/{operations-BYT626KQ.js.map → operations-BCFOBH42.js.map} +1 -1
- package/dist/permissions-4AKNQZHK.js +18 -0
- package/dist/plan-SIZLGA4V.js +34 -0
- package/dist/{policy-6S4GFC76.js → policy-DT6Q6ZVM.js} +20 -6
- package/dist/policy-DT6Q6ZVM.js.map +1 -0
- package/dist/pr-OMWCGUOW.js +39 -0
- package/dist/pr-review-N24CZPKR.js +32 -0
- package/dist/pr-review-N24CZPKR.js.map +1 -0
- package/dist/prd-5OFTZAHJ.js +33 -0
- package/dist/prd-5OFTZAHJ.js.map +1 -0
- package/dist/ps-RFORTCUD.js +93 -0
- package/dist/ps-RFORTCUD.js.map +1 -0
- package/dist/recorder-KCCPMKQG.js +32 -0
- package/dist/recorder-KCCPMKQG.js.map +1 -0
- package/dist/registry-GLPXOMFG.js +15 -0
- package/dist/registry-GLPXOMFG.js.map +1 -0
- package/dist/{resume-PPCNQVVV.js → resume-M5RLKP4I.js} +55 -34
- package/dist/{resume-PPCNQVVV.js.map → resume-M5RLKP4I.js.map} +1 -1
- package/dist/review-YM4JAABY.js +35 -0
- package/dist/review-YM4JAABY.js.map +1 -0
- package/dist/routing-NNT5WKGX.js +94 -0
- package/dist/routing-NNT5WKGX.js.map +1 -0
- package/dist/run-PZUKHPQK.js +54 -0
- package/dist/run-PZUKHPQK.js.map +1 -0
- package/dist/session-publisher-T7EI3CIP.js +11 -0
- package/dist/session-publisher-T7EI3CIP.js.map +1 -0
- package/dist/{state-manager-2EDVDBAR.js → state-manager-GQH32C44.js} +4 -2
- package/dist/state-manager-GQH32C44.js.map +1 -0
- package/dist/usage-V2CHE5PY.js +177 -0
- package/dist/usage-V2CHE5PY.js.map +1 -0
- package/dist/{web-EF5WIIGG.js → web-EA3KGNFN.js} +45 -30
- package/dist/web-EA3KGNFN.js.map +1 -0
- package/package.json +6 -2
- package/prompts/execute.md +7 -8
- package/prompts/plan.md +4 -5
- package/prompts/pr.md +2 -2
- package/web/AGENTS.md +152 -13
- package/web/public/app.css +380 -109
- package/web/public/app.js +525 -25
- package/web/public/index.html +68 -1
- package/dist/analyze-OEET7KGE.js.map +0 -1
- package/dist/chunk-3QHK4YQA.js.map +0 -1
- package/dist/chunk-42PJFMAR.js +0 -605
- package/dist/chunk-42PJFMAR.js.map +0 -1
- package/dist/chunk-4JSOYE4G.js +0 -368
- package/dist/chunk-4JSOYE4G.js.map +0 -1
- package/dist/chunk-56KS3TFQ.js.map +0 -1
- package/dist/chunk-73ATPIYX.js.map +0 -1
- package/dist/chunk-A4SLHOW7.js.map +0 -1
- package/dist/chunk-BAUPQXPE.js +0 -173
- package/dist/chunk-BAUPQXPE.js.map +0 -1
- package/dist/chunk-BYZDPR7N.js.map +0 -1
- package/dist/chunk-CD5ULRVC.js +0 -615
- package/dist/chunk-CD5ULRVC.js.map +0 -1
- package/dist/chunk-DIDUVL6O.js +0 -1365
- package/dist/chunk-DIDUVL6O.js.map +0 -1
- package/dist/chunk-EZATO3DW.js.map +0 -1
- package/dist/chunk-FADTCQGM.js.map +0 -1
- package/dist/chunk-FJP3UQGD.js.map +0 -1
- package/dist/chunk-LWRSMTTZ.js +0 -18
- package/dist/chunk-LWRSMTTZ.js.map +0 -1
- package/dist/chunk-M5UCXTIT.js.map +0 -1
- package/dist/chunk-M66SJHQQ.js +0 -206
- package/dist/chunk-M66SJHQQ.js.map +0 -1
- package/dist/chunk-MJULIKQU.js.map +0 -1
- package/dist/chunk-NS6R37II.js.map +0 -1
- package/dist/chunk-NTMMF5UD.js.map +0 -1
- package/dist/chunk-QCPGHBSZ.js.map +0 -1
- package/dist/chunk-XQUSIEKA.js.map +0 -1
- package/dist/chunk-Y5ZDJ4PJ.js.map +0 -1
- package/dist/execute-XBNVL753.js +0 -18
- package/dist/init-AJHCXJBP.js +0 -10
- package/dist/plan-QOZ3RIO6.js +0 -21
- package/dist/policy-6S4GFC76.js.map +0 -1
- package/dist/pr-EBBHD2ZX.js +0 -26
- package/dist/pr-review-VVMW5PO4.js +0 -20
- package/dist/prd-JQSZF7PR.js +0 -21
- package/dist/review-3F6MARWH.js +0 -19
- package/dist/run-RXE5GDQO.js +0 -36
- package/dist/web-EF5WIIGG.js.map +0 -1
- /package/dist/{config-PRJGWW7J.js.map → agent-OX3KPHE4.js.map} +0 -0
- /package/dist/{chunk-LAFNLLQP.js.map → chunk-KMRFRXIT.js.map} +0 -0
- /package/dist/{execute-XBNVL753.js.map → config-HMFMCY2M.js.map} +0 -0
- /package/dist/{init-AJHCXJBP.js.map → contract-JH2WBIO6.js.map} +0 -0
- /package/dist/{plan-QOZ3RIO6.js.map → diagnostics-THH42ZMP.js.map} +0 -0
- /package/dist/{pr-EBBHD2ZX.js.map → execute-KFNNZZHI.js.map} +0 -0
- /package/dist/{pr-review-VVMW5PO4.js.map → git-W72QQ6GT.js.map} +0 -0
- /package/dist/{prd-JQSZF7PR.js.map → init-HTN4V67Q.js.map} +0 -0
- /package/dist/{review-3F6MARWH.js.map → permissions-4AKNQZHK.js.map} +0 -0
- /package/dist/{run-RXE5GDQO.js.map → plan-SIZLGA4V.js.map} +0 -0
- /package/dist/{state-manager-2EDVDBAR.js.map → pr-OMWCGUOW.js.map} +0 -0
package/web/public/app.css
CHANGED
|
@@ -1,56 +1,149 @@
|
|
|
1
1
|
/* Interface do monitoramento web do issue-flow.
|
|
2
2
|
Autocontida: sem fontes externas, sem CDN — funciona offline. */
|
|
3
3
|
|
|
4
|
+
/* ---- Paleta ----
|
|
5
|
+
|
|
6
|
+
Tokens nomeados por papel (superfície, texto, borda, acento, estado, foco),
|
|
7
|
+
nunca por local de uso: mexer na hierarquia visual não exige inventar uma cor
|
|
8
|
+
por componente. `:root` carrega a paleta clara **inteira** — nenhum token
|
|
9
|
+
pode ter sua única definição dentro de um `@media` ou de um `[data-theme]`,
|
|
10
|
+
ou o tema oposto fica sem ele. */
|
|
11
|
+
|
|
4
12
|
:root {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
13
|
+
/* Esquema dos controles nativos. Os blocos de tema escuro abaixo o
|
|
14
|
+
sobrescrevem. */
|
|
15
|
+
color-scheme: light;
|
|
16
|
+
|
|
17
|
+
/* Superfície: página, cartão elevado e recesso neutro. */
|
|
18
|
+
--surface-page: #f4f5f7;
|
|
19
|
+
--surface: #ffffff;
|
|
20
|
+
--surface-sunken: #e5e7eb;
|
|
21
|
+
|
|
22
|
+
/* Texto. `--text-subtle` está reservado para uma terceira hierarquia
|
|
23
|
+
(legendas, metadados) que o painel ainda não usa — mas já cumpre 4,5:1
|
|
24
|
+
sobre as três superfícies, para poder ser usado sem nova auditoria.
|
|
25
|
+
Os três são medidos contra a superfície mais escura do tema claro
|
|
26
|
+
(`--surface-sunken`); ver a tabela de contraste em `web/AGENTS.md`. */
|
|
27
|
+
--text: #1a1f27;
|
|
28
|
+
--text-muted: #4b5563;
|
|
29
|
+
--text-subtle: #5f6773;
|
|
30
|
+
|
|
31
|
+
/* Borda. `--border-strong` está reservado para separadores que precisem
|
|
32
|
+
vencer o ruído de uma lista densa; hoje nenhum precisa. */
|
|
9
33
|
--border: #e2e5ea;
|
|
34
|
+
--border-strong: #c7ccd4;
|
|
35
|
+
|
|
36
|
+
/* Acento. `--accent-text` é o texto sobre um preenchimento sólido de acento
|
|
37
|
+
ou de estado (hoje: o banner de desconexão). */
|
|
10
38
|
--accent: #4f46e5;
|
|
11
|
-
--
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
--
|
|
18
|
-
--ok-
|
|
19
|
-
--
|
|
39
|
+
--accent-text: #ffffff;
|
|
40
|
+
|
|
41
|
+
/* Estado: a cor do texto/ícone e a superfície que a acompanha no badge.
|
|
42
|
+
No tema claro as quatro cores ficam no nível 700 da escala — é o mais
|
|
43
|
+
claro que atende 4,5:1 sobre a própria superfície do badge. O limiar é
|
|
44
|
+
4,5:1 e não 3:1 porque `.badge` é 0.78rem/600, abaixo de texto grande. */
|
|
45
|
+
--state-ok: #15803d;
|
|
46
|
+
--state-ok-surface: #dcfce7;
|
|
47
|
+
--state-run: #1d4ed8;
|
|
48
|
+
--state-run-surface: #dbeafe;
|
|
49
|
+
--state-warn: #b45309;
|
|
50
|
+
--state-warn-surface: #fef3c7;
|
|
51
|
+
--state-error: #b91c1c;
|
|
52
|
+
--state-error-surface: #fee2e2;
|
|
53
|
+
|
|
54
|
+
/* Foco por teclado: o anel de `:focus-visible`. Precisa de 3:1 contra o que
|
|
55
|
+
estiver adjacente (a superfície ao redor do anel), não de 4,5:1 — é um
|
|
56
|
+
componente gráfico, não texto. */
|
|
57
|
+
--focus-ring: #4f46e5;
|
|
58
|
+
|
|
20
59
|
--shadow: 0 1px 2px rgb(0 0 0 / 0.06);
|
|
21
60
|
--overlay: rgb(0 0 0 / 0.45);
|
|
22
61
|
}
|
|
23
62
|
|
|
63
|
+
/* ---- Tema escuro ----
|
|
64
|
+
|
|
65
|
+
Dois blocos gêmeos: o do sistema e o forçado pelo controle do painel.
|
|
66
|
+
**Os dois carregam exatamente a mesma lista de overrides e precisam mudar
|
|
67
|
+
juntos** — mexeu em um, mexa no outro. Só entram aqui os tokens cujo valor
|
|
68
|
+
muda; o que é igual nos dois temas fica só em `:root`.
|
|
69
|
+
|
|
70
|
+
O guarda `:not([data-theme='light'])` é o que faz a escolha manual vencer o
|
|
71
|
+
sistema: com o SO em escuro e o tema forçado em claro, o `@media` não
|
|
72
|
+
sobrescreve nada.
|
|
73
|
+
|
|
74
|
+
`color-scheme` vai dentro de cada bloco (e não no `<html>` nem num `<meta>`)
|
|
75
|
+
porque é ele que manda nos controles nativos — `<select>`, `<progress>`,
|
|
76
|
+
barras de rolagem — e precisa acompanhar o tema efetivo, não o do SO. */
|
|
77
|
+
|
|
24
78
|
@media (prefers-color-scheme: dark) {
|
|
25
|
-
:root {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
--
|
|
29
|
-
--
|
|
79
|
+
:root:not([data-theme='light']) {
|
|
80
|
+
color-scheme: dark;
|
|
81
|
+
|
|
82
|
+
--surface-page: #0f1218;
|
|
83
|
+
--surface: #171c24;
|
|
84
|
+
--surface-sunken: #262d38;
|
|
85
|
+
--text: #e5e9f0;
|
|
86
|
+
--text-muted: #9aa1ad;
|
|
87
|
+
--text-subtle: #8f97a5;
|
|
30
88
|
--border: #262d38;
|
|
31
89
|
--accent: #818cf8;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
--
|
|
36
|
-
--
|
|
37
|
-
--
|
|
38
|
-
--run
|
|
39
|
-
--
|
|
40
|
-
--
|
|
90
|
+
/* No escuro os preenchimentos sólidos (acento e estado) são claros, então
|
|
91
|
+
o texto sobre eles inverte — branco sobre `--state-error` daria 2,98:1
|
|
92
|
+
no banner de desconexão. */
|
|
93
|
+
--accent-text: #0f1218;
|
|
94
|
+
--state-ok: #4ade80;
|
|
95
|
+
--state-ok-surface: #14301f;
|
|
96
|
+
--state-run: #60a5fa;
|
|
97
|
+
--state-run-surface: #172a45;
|
|
98
|
+
--state-warn: #fbbf24;
|
|
99
|
+
--state-warn-surface: #3a2d10;
|
|
100
|
+
--state-error: #f87171;
|
|
101
|
+
--state-error-surface: #3b1a1a;
|
|
102
|
+
--focus-ring: #818cf8;
|
|
41
103
|
--shadow: none;
|
|
42
104
|
--overlay: rgb(0 0 0 / 0.65);
|
|
43
105
|
}
|
|
44
106
|
}
|
|
45
107
|
|
|
108
|
+
/* Gêmeo do bloco acima — mesma lista de overrides, mudam juntos. */
|
|
109
|
+
:root[data-theme='dark'] {
|
|
110
|
+
color-scheme: dark;
|
|
111
|
+
|
|
112
|
+
--surface-page: #0f1218;
|
|
113
|
+
--surface: #171c24;
|
|
114
|
+
--surface-sunken: #262d38;
|
|
115
|
+
--text: #e5e9f0;
|
|
116
|
+
--text-muted: #9aa1ad;
|
|
117
|
+
--text-subtle: #8f97a5;
|
|
118
|
+
--border: #262d38;
|
|
119
|
+
--accent: #818cf8;
|
|
120
|
+
/* Ver o comentário do bloco gêmeo acima. */
|
|
121
|
+
--accent-text: #0f1218;
|
|
122
|
+
--state-ok: #4ade80;
|
|
123
|
+
--state-ok-surface: #14301f;
|
|
124
|
+
--state-run: #60a5fa;
|
|
125
|
+
--state-run-surface: #172a45;
|
|
126
|
+
--state-warn: #fbbf24;
|
|
127
|
+
--state-warn-surface: #3a2d10;
|
|
128
|
+
--state-error: #f87171;
|
|
129
|
+
--state-error-surface: #3b1a1a;
|
|
130
|
+
--focus-ring: #818cf8;
|
|
131
|
+
--shadow: none;
|
|
132
|
+
--overlay: rgb(0 0 0 / 0.65);
|
|
133
|
+
}
|
|
134
|
+
|
|
46
135
|
* {
|
|
47
136
|
box-sizing: border-box;
|
|
48
137
|
}
|
|
49
138
|
|
|
139
|
+
[hidden] {
|
|
140
|
+
display: none !important;
|
|
141
|
+
}
|
|
142
|
+
|
|
50
143
|
body {
|
|
51
144
|
margin: 0;
|
|
52
|
-
background: var(--
|
|
53
|
-
color: var(--
|
|
145
|
+
background: var(--surface-page);
|
|
146
|
+
color: var(--text);
|
|
54
147
|
font: 15px/1.5 system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
55
148
|
}
|
|
56
149
|
|
|
@@ -75,11 +168,11 @@ main > *,
|
|
|
75
168
|
}
|
|
76
169
|
|
|
77
170
|
.muted {
|
|
78
|
-
color: var(--muted);
|
|
171
|
+
color: var(--text-muted);
|
|
79
172
|
}
|
|
80
173
|
|
|
81
174
|
.card {
|
|
82
|
-
background: var(--
|
|
175
|
+
background: var(--surface);
|
|
83
176
|
border: 1px solid var(--border);
|
|
84
177
|
border-radius: 10px;
|
|
85
178
|
padding: 16px;
|
|
@@ -100,7 +193,7 @@ h2 {
|
|
|
100
193
|
font-weight: 600;
|
|
101
194
|
text-transform: uppercase;
|
|
102
195
|
letter-spacing: 0.06em;
|
|
103
|
-
color: var(--muted);
|
|
196
|
+
color: var(--text-muted);
|
|
104
197
|
}
|
|
105
198
|
|
|
106
199
|
a {
|
|
@@ -129,14 +222,14 @@ a:hover {
|
|
|
129
222
|
padding: 8px 14px;
|
|
130
223
|
font: inherit;
|
|
131
224
|
font-weight: 600;
|
|
132
|
-
color: var(--muted);
|
|
225
|
+
color: var(--text-muted);
|
|
133
226
|
cursor: pointer;
|
|
134
227
|
border-radius: 6px 6px 0 0;
|
|
135
228
|
}
|
|
136
229
|
|
|
137
230
|
.tab:hover {
|
|
138
|
-
color: var(--
|
|
139
|
-
background: var(--
|
|
231
|
+
color: var(--text);
|
|
232
|
+
background: var(--surface);
|
|
140
233
|
}
|
|
141
234
|
|
|
142
235
|
.tab.is-active {
|
|
@@ -195,17 +288,18 @@ a:hover {
|
|
|
195
288
|
}
|
|
196
289
|
|
|
197
290
|
.refresh-control,
|
|
291
|
+
.theme-control,
|
|
198
292
|
.log-filter-control {
|
|
199
293
|
font-size: 0.82rem;
|
|
200
|
-
color: var(--muted);
|
|
294
|
+
color: var(--text-muted);
|
|
201
295
|
display: inline-flex;
|
|
202
296
|
align-items: center;
|
|
203
297
|
gap: 6px;
|
|
204
298
|
}
|
|
205
299
|
|
|
206
300
|
select {
|
|
207
|
-
background: var(--
|
|
208
|
-
color: var(--
|
|
301
|
+
background: var(--surface);
|
|
302
|
+
color: var(--text);
|
|
209
303
|
border: 1px solid var(--border);
|
|
210
304
|
border-radius: 6px;
|
|
211
305
|
padding: 3px 6px;
|
|
@@ -226,23 +320,23 @@ select {
|
|
|
226
320
|
}
|
|
227
321
|
|
|
228
322
|
.status-idle {
|
|
229
|
-
background: var(--
|
|
230
|
-
color: var(--muted);
|
|
323
|
+
background: var(--surface-sunken);
|
|
324
|
+
color: var(--text-muted);
|
|
231
325
|
}
|
|
232
326
|
|
|
233
327
|
.status-running {
|
|
234
|
-
background: var(--run-
|
|
235
|
-
color: var(--run);
|
|
328
|
+
background: var(--state-run-surface);
|
|
329
|
+
color: var(--state-run);
|
|
236
330
|
}
|
|
237
331
|
|
|
238
332
|
.status-completed {
|
|
239
|
-
background: var(--ok-
|
|
240
|
-
color: var(--ok);
|
|
333
|
+
background: var(--state-ok-surface);
|
|
334
|
+
color: var(--state-ok);
|
|
241
335
|
}
|
|
242
336
|
|
|
243
337
|
.status-failed {
|
|
244
|
-
background: var(--
|
|
245
|
-
color: var(--
|
|
338
|
+
background: var(--state-error-surface);
|
|
339
|
+
color: var(--state-error);
|
|
246
340
|
}
|
|
247
341
|
|
|
248
342
|
/* ---- Banner de desconexão ---- */
|
|
@@ -251,8 +345,8 @@ select {
|
|
|
251
345
|
position: sticky;
|
|
252
346
|
top: 0;
|
|
253
347
|
z-index: 10;
|
|
254
|
-
background: var(--
|
|
255
|
-
color:
|
|
348
|
+
background: var(--state-error);
|
|
349
|
+
color: var(--accent-text);
|
|
256
350
|
text-align: center;
|
|
257
351
|
padding: 8px 16px;
|
|
258
352
|
font-weight: 600;
|
|
@@ -261,25 +355,25 @@ select {
|
|
|
261
355
|
/* ---- Erros e avisos em destaque ---- */
|
|
262
356
|
|
|
263
357
|
.alerts {
|
|
264
|
-
border-color: var(--
|
|
358
|
+
border-color: var(--state-error);
|
|
265
359
|
}
|
|
266
360
|
|
|
267
361
|
.alert-entry {
|
|
268
|
-
border-left: 3px solid var(--
|
|
362
|
+
border-left: 3px solid var(--state-error);
|
|
269
363
|
padding: 4px 10px;
|
|
270
364
|
margin: 6px 0;
|
|
271
365
|
border-radius: 0 6px 6px 0;
|
|
272
|
-
background: var(--
|
|
366
|
+
background: var(--state-error-surface);
|
|
273
367
|
}
|
|
274
368
|
|
|
275
369
|
.alert-entry.level-warn {
|
|
276
|
-
border-left-color: var(--warn);
|
|
277
|
-
background: var(--warn-
|
|
370
|
+
border-left-color: var(--state-warn);
|
|
371
|
+
background: var(--state-warn-surface);
|
|
278
372
|
}
|
|
279
373
|
|
|
280
374
|
.alert-count {
|
|
281
375
|
font-size: 0.82rem;
|
|
282
|
-
color: var(--muted);
|
|
376
|
+
color: var(--text-muted);
|
|
283
377
|
margin: 0 0 4px;
|
|
284
378
|
}
|
|
285
379
|
|
|
@@ -306,26 +400,26 @@ select {
|
|
|
306
400
|
}
|
|
307
401
|
|
|
308
402
|
.label-badge {
|
|
309
|
-
background: var(--
|
|
310
|
-
color: var(--
|
|
403
|
+
background: var(--surface-sunken);
|
|
404
|
+
color: var(--text);
|
|
311
405
|
text-transform: none;
|
|
312
406
|
font-weight: 500;
|
|
313
407
|
letter-spacing: normal;
|
|
314
408
|
}
|
|
315
409
|
|
|
316
410
|
.state-open {
|
|
317
|
-
background: var(--run-
|
|
318
|
-
color: var(--run);
|
|
411
|
+
background: var(--state-run-surface);
|
|
412
|
+
color: var(--state-run);
|
|
319
413
|
}
|
|
320
414
|
|
|
321
415
|
.state-closed {
|
|
322
|
-
background: var(--ok-
|
|
323
|
-
color: var(--ok);
|
|
416
|
+
background: var(--state-ok-surface);
|
|
417
|
+
color: var(--state-ok);
|
|
324
418
|
}
|
|
325
419
|
|
|
326
420
|
.state-unknown {
|
|
327
|
-
background: var(--
|
|
328
|
-
color: var(--muted);
|
|
421
|
+
background: var(--surface-sunken);
|
|
422
|
+
color: var(--text-muted);
|
|
329
423
|
}
|
|
330
424
|
|
|
331
425
|
.issue-description {
|
|
@@ -347,23 +441,23 @@ select {
|
|
|
347
441
|
}
|
|
348
442
|
|
|
349
443
|
.story-status-backlog {
|
|
350
|
-
background: var(--
|
|
351
|
-
color: var(--muted);
|
|
444
|
+
background: var(--surface-sunken);
|
|
445
|
+
color: var(--text-muted);
|
|
352
446
|
}
|
|
353
447
|
|
|
354
448
|
.story-status-in_progress {
|
|
355
|
-
background: var(--run-
|
|
356
|
-
color: var(--run);
|
|
449
|
+
background: var(--state-run-surface);
|
|
450
|
+
color: var(--state-run);
|
|
357
451
|
}
|
|
358
452
|
|
|
359
453
|
.story-status-in_review {
|
|
360
|
-
background: var(--warn-
|
|
361
|
-
color: var(--warn);
|
|
454
|
+
background: var(--state-warn-surface);
|
|
455
|
+
color: var(--state-warn);
|
|
362
456
|
}
|
|
363
457
|
|
|
364
458
|
.story-status-done {
|
|
365
|
-
background: var(--ok-
|
|
366
|
-
color: var(--ok);
|
|
459
|
+
background: var(--state-ok-surface);
|
|
460
|
+
color: var(--state-ok);
|
|
367
461
|
}
|
|
368
462
|
|
|
369
463
|
.story-deps {
|
|
@@ -405,7 +499,7 @@ progress {
|
|
|
405
499
|
}
|
|
406
500
|
|
|
407
501
|
.now-grid dt {
|
|
408
|
-
color: var(--muted);
|
|
502
|
+
color: var(--text-muted);
|
|
409
503
|
font-size: 0.86rem;
|
|
410
504
|
}
|
|
411
505
|
|
|
@@ -421,7 +515,7 @@ progress {
|
|
|
421
515
|
width: 8px;
|
|
422
516
|
height: 8px;
|
|
423
517
|
border-radius: 50%;
|
|
424
|
-
background: var(--run);
|
|
518
|
+
background: var(--state-run);
|
|
425
519
|
margin-right: 6px;
|
|
426
520
|
animation: pulse 1.4s ease-in-out infinite;
|
|
427
521
|
}
|
|
@@ -454,6 +548,34 @@ progress {
|
|
|
454
548
|
border-bottom: 1px solid var(--border);
|
|
455
549
|
}
|
|
456
550
|
|
|
551
|
+
.plain-list .history-entry {
|
|
552
|
+
align-items: flex-start;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.history-type {
|
|
556
|
+
flex: 0 0 9rem;
|
|
557
|
+
color: var(--text-muted);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
.history-message {
|
|
561
|
+
min-width: 0;
|
|
562
|
+
overflow-wrap: anywhere;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
@media (max-width: 560px) {
|
|
566
|
+
.plain-list .history-entry {
|
|
567
|
+
flex-wrap: wrap;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
.history-type {
|
|
571
|
+
flex-basis: auto;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
.history-message {
|
|
575
|
+
flex-basis: 100%;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
|
|
457
579
|
.plain-list li:last-child {
|
|
458
580
|
border-bottom: none;
|
|
459
581
|
}
|
|
@@ -469,26 +591,26 @@ progress {
|
|
|
469
591
|
"User stories". A borda esquerda usa box-shadow (não border) para não
|
|
470
592
|
deslocar o conteúdo do item ao ganhar/perder a classe. */
|
|
471
593
|
.story-executing {
|
|
472
|
-
background: var(--run-
|
|
594
|
+
background: var(--state-run-surface);
|
|
473
595
|
border-radius: 6px;
|
|
474
|
-
box-shadow: inset 3px 0 0 0 var(--run);
|
|
596
|
+
box-shadow: inset 3px 0 0 0 var(--state-run);
|
|
475
597
|
padding-left: 9px;
|
|
476
598
|
}
|
|
477
599
|
|
|
478
600
|
.icon-completed {
|
|
479
|
-
color: var(--ok);
|
|
601
|
+
color: var(--state-ok);
|
|
480
602
|
}
|
|
481
603
|
|
|
482
604
|
.icon-running {
|
|
483
|
-
color: var(--run);
|
|
605
|
+
color: var(--state-run);
|
|
484
606
|
}
|
|
485
607
|
|
|
486
608
|
.icon-failed {
|
|
487
|
-
color: var(--
|
|
609
|
+
color: var(--state-error);
|
|
488
610
|
}
|
|
489
611
|
|
|
490
612
|
.icon-pending {
|
|
491
|
-
color: var(--muted);
|
|
613
|
+
color: var(--text-muted);
|
|
492
614
|
}
|
|
493
615
|
|
|
494
616
|
.item-main {
|
|
@@ -503,7 +625,7 @@ progress {
|
|
|
503
625
|
}
|
|
504
626
|
|
|
505
627
|
.item-error {
|
|
506
|
-
color: var(--
|
|
628
|
+
color: var(--state-error);
|
|
507
629
|
font-size: 0.85rem;
|
|
508
630
|
white-space: pre-wrap;
|
|
509
631
|
word-break: break-word;
|
|
@@ -511,7 +633,7 @@ progress {
|
|
|
511
633
|
|
|
512
634
|
.item-side {
|
|
513
635
|
flex: none;
|
|
514
|
-
color: var(--muted);
|
|
636
|
+
color: var(--text-muted);
|
|
515
637
|
font-size: 0.84rem;
|
|
516
638
|
font-variant-numeric: tabular-nums;
|
|
517
639
|
/* Com duração + tokens + custo o slot fica bem mais largo; alinhar à
|
|
@@ -565,7 +687,7 @@ progress {
|
|
|
565
687
|
|
|
566
688
|
.log-time {
|
|
567
689
|
flex: none;
|
|
568
|
-
color: var(--muted);
|
|
690
|
+
color: var(--text-muted);
|
|
569
691
|
}
|
|
570
692
|
|
|
571
693
|
.log-level {
|
|
@@ -575,15 +697,15 @@ progress {
|
|
|
575
697
|
}
|
|
576
698
|
|
|
577
699
|
.level-info .log-level {
|
|
578
|
-
color: var(--muted);
|
|
700
|
+
color: var(--text-muted);
|
|
579
701
|
}
|
|
580
702
|
|
|
581
703
|
.level-warn .log-level {
|
|
582
|
-
color: var(--warn);
|
|
704
|
+
color: var(--state-warn);
|
|
583
705
|
}
|
|
584
706
|
|
|
585
707
|
.level-error .log-level {
|
|
586
|
-
color: var(--
|
|
708
|
+
color: var(--state-error);
|
|
587
709
|
}
|
|
588
710
|
|
|
589
711
|
.log-message {
|
|
@@ -603,7 +725,7 @@ progress {
|
|
|
603
725
|
}
|
|
604
726
|
|
|
605
727
|
.kanban-column {
|
|
606
|
-
background: var(--
|
|
728
|
+
background: var(--surface-page);
|
|
607
729
|
border: 1px solid var(--border);
|
|
608
730
|
border-radius: 8px;
|
|
609
731
|
padding: 10px;
|
|
@@ -625,13 +747,13 @@ progress {
|
|
|
625
747
|
font-weight: 600;
|
|
626
748
|
text-transform: uppercase;
|
|
627
749
|
letter-spacing: 0.06em;
|
|
628
|
-
color: var(--muted);
|
|
750
|
+
color: var(--text-muted);
|
|
629
751
|
}
|
|
630
752
|
|
|
631
753
|
.kanban-column-count {
|
|
632
754
|
flex: none;
|
|
633
|
-
background: var(--
|
|
634
|
-
color: var(--muted);
|
|
755
|
+
background: var(--surface-sunken);
|
|
756
|
+
color: var(--text-muted);
|
|
635
757
|
border-radius: 999px;
|
|
636
758
|
padding: 0 7px;
|
|
637
759
|
font-size: 0.74rem;
|
|
@@ -645,7 +767,7 @@ progress {
|
|
|
645
767
|
justify-items: start;
|
|
646
768
|
width: 100%;
|
|
647
769
|
text-align: left;
|
|
648
|
-
background: var(--
|
|
770
|
+
background: var(--surface);
|
|
649
771
|
border: 1px solid var(--border);
|
|
650
772
|
border-radius: 8px;
|
|
651
773
|
padding: 10px;
|
|
@@ -663,7 +785,7 @@ progress {
|
|
|
663
785
|
display: flex;
|
|
664
786
|
align-items: center;
|
|
665
787
|
gap: 2px;
|
|
666
|
-
color: var(--muted);
|
|
788
|
+
color: var(--text-muted);
|
|
667
789
|
font-size: 0.8rem;
|
|
668
790
|
}
|
|
669
791
|
|
|
@@ -678,7 +800,7 @@ progress {
|
|
|
678
800
|
continua no DOM para leitores de tela e para o drawer. */
|
|
679
801
|
.kanban-card-desc {
|
|
680
802
|
margin: 0;
|
|
681
|
-
color: var(--muted);
|
|
803
|
+
color: var(--text-muted);
|
|
682
804
|
font-size: 0.84rem;
|
|
683
805
|
line-height: 1.4;
|
|
684
806
|
overflow: hidden;
|
|
@@ -718,7 +840,7 @@ progress {
|
|
|
718
840
|
z-index: 21;
|
|
719
841
|
display: flex;
|
|
720
842
|
flex-direction: column;
|
|
721
|
-
background: var(--
|
|
843
|
+
background: var(--surface);
|
|
722
844
|
border-left: 1px solid var(--border);
|
|
723
845
|
padding: 16px;
|
|
724
846
|
gap: 12px;
|
|
@@ -743,7 +865,7 @@ progress {
|
|
|
743
865
|
font-size: 0.95rem;
|
|
744
866
|
text-transform: none;
|
|
745
867
|
letter-spacing: normal;
|
|
746
|
-
color: var(--
|
|
868
|
+
color: var(--text);
|
|
747
869
|
overflow-wrap: anywhere;
|
|
748
870
|
}
|
|
749
871
|
|
|
@@ -754,14 +876,14 @@ progress {
|
|
|
754
876
|
border: none;
|
|
755
877
|
padding: 2px 6px;
|
|
756
878
|
font: inherit;
|
|
757
|
-
color: var(--muted);
|
|
879
|
+
color: var(--text-muted);
|
|
758
880
|
cursor: pointer;
|
|
759
881
|
border-radius: 6px;
|
|
760
882
|
}
|
|
761
883
|
|
|
762
884
|
.drawer-close:hover {
|
|
763
|
-
color: var(--
|
|
764
|
-
background: var(--
|
|
885
|
+
color: var(--text);
|
|
886
|
+
background: var(--surface-sunken);
|
|
765
887
|
}
|
|
766
888
|
|
|
767
889
|
/* A rolagem vive aqui, não na página: o drawer é fixo e ocupa a altura toda. */
|
|
@@ -790,7 +912,7 @@ progress {
|
|
|
790
912
|
font-weight: 600;
|
|
791
913
|
text-transform: uppercase;
|
|
792
914
|
letter-spacing: 0.06em;
|
|
793
|
-
color: var(--muted);
|
|
915
|
+
color: var(--text-muted);
|
|
794
916
|
}
|
|
795
917
|
|
|
796
918
|
.drawer-text {
|
|
@@ -810,10 +932,147 @@ progress {
|
|
|
810
932
|
overflow-wrap: anywhere;
|
|
811
933
|
}
|
|
812
934
|
|
|
935
|
+
.detail-row {
|
|
936
|
+
cursor: pointer;
|
|
937
|
+
border-radius: 8px;
|
|
938
|
+
transition: background 120ms ease, box-shadow 120ms ease;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
.detail-row:hover {
|
|
942
|
+
background: var(--surface-sunken);
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
.detail-row:focus-visible,
|
|
946
|
+
.config-phase-row:focus-visible {
|
|
947
|
+
outline: 2px solid var(--focus-ring);
|
|
948
|
+
outline-offset: 2px;
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
.config-phase-grid {
|
|
952
|
+
display: grid;
|
|
953
|
+
gap: 1px;
|
|
954
|
+
margin-top: 1rem;
|
|
955
|
+
border: 1px solid var(--border);
|
|
956
|
+
border-radius: 10px;
|
|
957
|
+
overflow: hidden;
|
|
958
|
+
background: var(--border);
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
.config-phase-row {
|
|
962
|
+
display: grid;
|
|
963
|
+
grid-template-columns: minmax(5rem, 0.7fr) minmax(6rem, 1fr) minmax(8rem, 1.4fr) minmax(10rem, 1.4fr);
|
|
964
|
+
gap: 0.75rem;
|
|
965
|
+
align-items: center;
|
|
966
|
+
padding: 0.65rem 0.8rem;
|
|
967
|
+
border: 0;
|
|
968
|
+
color: var(--text);
|
|
969
|
+
background: var(--surface);
|
|
970
|
+
text-align: left;
|
|
971
|
+
cursor: pointer;
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
.config-phase-row:hover {
|
|
975
|
+
background: var(--surface-sunken);
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
.config-form {
|
|
979
|
+
display: grid;
|
|
980
|
+
grid-template-columns: minmax(8rem, 0.7fr) minmax(12rem, 1fr) auto minmax(10rem, 1fr);
|
|
981
|
+
gap: 0.65rem;
|
|
982
|
+
align-items: center;
|
|
983
|
+
margin-top: 1rem;
|
|
984
|
+
padding-top: 1rem;
|
|
985
|
+
border-top: 1px solid var(--border);
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
.config-form[hidden] {
|
|
989
|
+
display: none;
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
.config-form select,
|
|
993
|
+
.config-form input,
|
|
994
|
+
.config-save {
|
|
995
|
+
min-height: 2.25rem;
|
|
996
|
+
border: 1px solid var(--border-strong);
|
|
997
|
+
border-radius: 7px;
|
|
998
|
+
padding: 0.4rem 0.65rem;
|
|
999
|
+
color: var(--text);
|
|
1000
|
+
background: var(--surface);
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
.config-save {
|
|
1004
|
+
color: var(--accent-text);
|
|
1005
|
+
border-color: var(--accent);
|
|
1006
|
+
background: var(--accent);
|
|
1007
|
+
cursor: pointer;
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
.execution-timeline {
|
|
1011
|
+
display: grid;
|
|
1012
|
+
gap: 0.75rem;
|
|
1013
|
+
margin: 0;
|
|
1014
|
+
padding: 0;
|
|
1015
|
+
list-style: none;
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
.execution-entry {
|
|
1019
|
+
padding: 0.8rem;
|
|
1020
|
+
border: 1px solid var(--border);
|
|
1021
|
+
border-radius: 9px;
|
|
1022
|
+
background: var(--surface-sunken);
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
.execution-entry-head {
|
|
1026
|
+
display: flex;
|
|
1027
|
+
gap: 0.6rem;
|
|
1028
|
+
align-items: center;
|
|
1029
|
+
margin-bottom: 0.65rem;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
.execution-grid,
|
|
1033
|
+
.drawer-summary-grid {
|
|
1034
|
+
margin-top: 0.75rem;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
.process-output summary {
|
|
1038
|
+
cursor: pointer;
|
|
1039
|
+
color: var(--text-muted);
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
.process-output-body {
|
|
1043
|
+
max-height: 22rem;
|
|
1044
|
+
overflow: auto;
|
|
1045
|
+
padding: 0.8rem;
|
|
1046
|
+
border-radius: 8px;
|
|
1047
|
+
color: var(--text);
|
|
1048
|
+
background: var(--surface-sunken);
|
|
1049
|
+
white-space: pre-wrap;
|
|
1050
|
+
overflow-wrap: anywhere;
|
|
1051
|
+
font-size: 0.75rem;
|
|
1052
|
+
line-height: 1.45;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
.commit-meta {
|
|
1056
|
+
display: block;
|
|
1057
|
+
margin-top: 0.2rem;
|
|
1058
|
+
font-size: 0.76rem;
|
|
1059
|
+
font-weight: 400;
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
@media (max-width: 720px) {
|
|
1063
|
+
.config-phase-row {
|
|
1064
|
+
grid-template-columns: 1fr 1fr;
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
.config-form {
|
|
1068
|
+
grid-template-columns: 1fr;
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
|
|
813
1072
|
/* ---- Diversos ---- */
|
|
814
1073
|
|
|
815
1074
|
.empty {
|
|
816
|
-
color: var(--muted);
|
|
1075
|
+
color: var(--text-muted);
|
|
817
1076
|
font-style: italic;
|
|
818
1077
|
margin: 0;
|
|
819
1078
|
}
|
|
@@ -895,7 +1154,7 @@ progress {
|
|
|
895
1154
|
.dashboard-card {
|
|
896
1155
|
appearance: none;
|
|
897
1156
|
text-align: left;
|
|
898
|
-
background: var(--
|
|
1157
|
+
background: var(--surface);
|
|
899
1158
|
border: 1px solid var(--border);
|
|
900
1159
|
border-radius: 10px;
|
|
901
1160
|
padding: 16px;
|
|
@@ -904,18 +1163,30 @@ progress {
|
|
|
904
1163
|
font: inherit;
|
|
905
1164
|
cursor: pointer;
|
|
906
1165
|
display: grid;
|
|
1166
|
+
/* O grid externo estica os cards de uma linha para a mesma altura. Sem isto,
|
|
1167
|
+
`align-content: stretch` distribui a sobra entre as faixas — inclusive a do
|
|
1168
|
+
resumo — e a faixa fica mais alta que as 3 linhas do clamp, deixando vazar
|
|
1169
|
+
uma 4ª linha cortada por baixo do reticente. Empacotar no topo manda a
|
|
1170
|
+
sobra para o fim do card, que é onde ela não engana ninguém. */
|
|
1171
|
+
align-content: start;
|
|
907
1172
|
gap: 10px;
|
|
908
1173
|
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
909
1174
|
}
|
|
910
1175
|
|
|
911
|
-
|
|
912
|
-
|
|
1176
|
+
/* Hover e foco por teclado precisam ser distinguíveis: o hover só acende a
|
|
1177
|
+
borda; o foco desenha um anel de `--focus-ring` destacado do cartão, que é
|
|
1178
|
+
visível mesmo em cima do hover. Era aqui que o `outline` estava suprimido. */
|
|
1179
|
+
.dashboard-card:hover {
|
|
913
1180
|
border-color: var(--accent);
|
|
914
|
-
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
.dashboard-card:focus-visible {
|
|
1184
|
+
outline: 2px solid var(--focus-ring);
|
|
1185
|
+
outline-offset: 2px;
|
|
915
1186
|
}
|
|
916
1187
|
|
|
917
1188
|
.dashboard-card.is-live {
|
|
918
|
-
border-color: var(--run);
|
|
1189
|
+
border-color: var(--state-run);
|
|
919
1190
|
}
|
|
920
1191
|
|
|
921
1192
|
.dashboard-card-head {
|
|
@@ -928,7 +1199,7 @@ progress {
|
|
|
928
1199
|
.dashboard-project {
|
|
929
1200
|
font-size: 0.82rem;
|
|
930
1201
|
font-weight: 600;
|
|
931
|
-
color: var(--muted);
|
|
1202
|
+
color: var(--text-muted);
|
|
932
1203
|
overflow-wrap: anywhere;
|
|
933
1204
|
}
|
|
934
1205
|
|
|
@@ -966,14 +1237,14 @@ progress {
|
|
|
966
1237
|
flex-wrap: wrap;
|
|
967
1238
|
gap: 10px;
|
|
968
1239
|
font-size: 0.82rem;
|
|
969
|
-
color: var(--muted);
|
|
1240
|
+
color: var(--text-muted);
|
|
970
1241
|
font-variant-numeric: tabular-nums;
|
|
971
1242
|
}
|
|
972
1243
|
|
|
973
1244
|
.dashboard-progress {
|
|
974
1245
|
display: block;
|
|
975
1246
|
height: 6px;
|
|
976
|
-
background: var(--
|
|
1247
|
+
background: var(--surface-sunken);
|
|
977
1248
|
border-radius: 999px;
|
|
978
1249
|
overflow: hidden;
|
|
979
1250
|
}
|
|
@@ -981,7 +1252,7 @@ progress {
|
|
|
981
1252
|
.dashboard-progress-bar {
|
|
982
1253
|
display: block;
|
|
983
1254
|
height: 100%;
|
|
984
|
-
background: var(--run);
|
|
1255
|
+
background: var(--state-run);
|
|
985
1256
|
border-radius: 999px;
|
|
986
1257
|
transition: width 0.3s ease;
|
|
987
1258
|
}
|
|
@@ -989,7 +1260,7 @@ progress {
|
|
|
989
1260
|
.dashboard-live-dot {
|
|
990
1261
|
font-size: 0.75rem;
|
|
991
1262
|
font-weight: 600;
|
|
992
|
-
color: var(--run);
|
|
1263
|
+
color: var(--state-run);
|
|
993
1264
|
text-transform: uppercase;
|
|
994
1265
|
letter-spacing: 0.04em;
|
|
995
1266
|
}
|
|
@@ -1001,7 +1272,7 @@ progress {
|
|
|
1001
1272
|
height: 7px;
|
|
1002
1273
|
margin-right: 6px;
|
|
1003
1274
|
border-radius: 50%;
|
|
1004
|
-
background: var(--run);
|
|
1275
|
+
background: var(--state-run);
|
|
1005
1276
|
vertical-align: middle;
|
|
1006
1277
|
animation: dashboard-pulse 1.4s ease-in-out infinite;
|
|
1007
1278
|
}
|