estela 0.1.3 → 0.1.6

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.
Files changed (76) hide show
  1. package/dist/billing/sessionize.d.ts +10 -1
  2. package/dist/billing/sessionize.d.ts.map +1 -1
  3. package/dist/billing/sessionize.js +0 -0
  4. package/dist/billing/sessionize.js.map +1 -1
  5. package/dist/billing/sessionize.test.js +28 -0
  6. package/dist/billing/sessionize.test.js.map +1 -1
  7. package/dist/billing.d.ts +16 -0
  8. package/dist/billing.d.ts.map +1 -0
  9. package/dist/billing.js +71 -0
  10. package/dist/billing.js.map +1 -0
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +345 -93
  13. package/dist/cli.js.map +1 -1
  14. package/dist/cloud/client.d.ts +6 -0
  15. package/dist/cloud/client.d.ts.map +1 -1
  16. package/dist/cloud/client.js +26 -0
  17. package/dist/cloud/client.js.map +1 -1
  18. package/dist/db/store.d.ts +56 -0
  19. package/dist/db/store.d.ts.map +1 -1
  20. package/dist/db/store.js +101 -0
  21. package/dist/db/store.js.map +1 -1
  22. package/dist/export/panel.d.ts +3 -1
  23. package/dist/export/panel.d.ts.map +1 -1
  24. package/dist/export/panel.js +24 -19
  25. package/dist/export/panel.js.map +1 -1
  26. package/dist/export/panel.test.js +46 -5
  27. package/dist/export/panel.test.js.map +1 -1
  28. package/dist/metrics/team.d.ts +9 -0
  29. package/dist/metrics/team.d.ts.map +1 -1
  30. package/dist/metrics/team.js +0 -0
  31. package/dist/metrics/team.js.map +1 -1
  32. package/dist/publish.d.ts +37 -0
  33. package/dist/publish.d.ts.map +1 -0
  34. package/dist/publish.js +185 -0
  35. package/dist/publish.js.map +1 -0
  36. package/dist/publish.test.d.ts +2 -0
  37. package/dist/publish.test.d.ts.map +1 -0
  38. package/dist/publish.test.js +91 -0
  39. package/dist/publish.test.js.map +1 -0
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +88 -58
  42. package/dist/server.js.map +1 -1
  43. package/dist/sync/team.d.ts +21 -0
  44. package/dist/sync/team.d.ts.map +1 -0
  45. package/dist/sync/team.js +68 -0
  46. package/dist/sync/team.js.map +1 -0
  47. package/dist/sync/team.test.d.ts +2 -0
  48. package/dist/sync/team.test.d.ts.map +1 -0
  49. package/dist/sync/team.test.js +102 -0
  50. package/dist/sync/team.test.js.map +1 -0
  51. package/dist/sync.d.ts +20 -0
  52. package/dist/sync.d.ts.map +1 -0
  53. package/dist/sync.js +79 -0
  54. package/dist/sync.js.map +1 -0
  55. package/dist/sync.test.d.ts +2 -0
  56. package/dist/sync.test.d.ts.map +1 -0
  57. package/dist/sync.test.js +151 -0
  58. package/dist/sync.test.js.map +1 -0
  59. package/dist/team.d.ts +51 -0
  60. package/dist/team.d.ts.map +1 -0
  61. package/dist/team.js +122 -0
  62. package/dist/team.js.map +1 -0
  63. package/dist/team.test.d.ts +2 -0
  64. package/dist/team.test.d.ts.map +1 -0
  65. package/dist/team.test.js +163 -0
  66. package/dist/team.test.js.map +1 -0
  67. package/dist/web-ui.test.js +14 -1
  68. package/dist/web-ui.test.js.map +1 -1
  69. package/package.json +1 -1
  70. package/web/app.css +74 -16
  71. package/web/app.js +198 -38
  72. package/web/apple-touch-icon.png +0 -0
  73. package/web/favicon.png +0 -0
  74. package/web/index.html +18 -2
  75. package/web/logo.png +0 -0
  76. package/web/logo-mark.png +0 -0
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
40
+ const node_test_1 = require("node:test");
41
+ const schema_js_1 = require("./db/schema.js");
42
+ const store = __importStar(require("./db/store.js"));
43
+ const team_js_1 = require("./metrics/team.js");
44
+ const team_js_2 = require("./team.js");
45
+ /**
46
+ * Igual que `publish.test.ts`/`sync.test.ts`: aquí solo lo que falla ANTES de
47
+ * tocar la red. El round-trip real (invitar, aceptar, mandar horas) ya lo
48
+ * cubre `packages/api/src/team.test.ts`, que es donde vive esa lógica.
49
+ */
50
+ function fresh() {
51
+ const db = (0, schema_js_1.openDatabase)(":memory:");
52
+ store.upsertClient(db, { id: "acme", name: "ACME", currency: "EUR" });
53
+ store.upsertProject(db, {
54
+ id: "web", clientId: "acme", name: "Web de ACME", repoPaths: [],
55
+ billable: true, roundingMinutes: 0, aiCostPolicy: "absorbed", kind: "client",
56
+ });
57
+ return db;
58
+ }
59
+ (0, node_test_1.test)("invitar sin cuenta vinculada pide login con el comando exacto", async () => {
60
+ const db = fresh();
61
+ try {
62
+ await strict_1.default.rejects((0, team_js_2.inviteTeamMember)(db, { projectId: "web", emails: ["dev@accuro.com"], inviteeKind: "employee" }), (error) => {
63
+ strict_1.default.ok(error instanceof team_js_2.NoAccountError);
64
+ strict_1.default.match(error.message, /estela login --email/);
65
+ return true;
66
+ });
67
+ }
68
+ finally {
69
+ db.close();
70
+ }
71
+ });
72
+ (0, node_test_1.test)("invitar a un proyecto que no existe falla antes de llamar a la red", async () => {
73
+ const db = fresh();
74
+ try {
75
+ // El plan que cuenta para el candado de Teams es el que guarda el
76
+ // servidor, no este campo local (aquí solo hace falta que exista
77
+ // cuenta) — por eso "pro" basta para este caso, que falla antes de
78
+ // llegar a hablar con el servidor en absoluto.
79
+ store.setCloudAccount(db, {
80
+ accountId: "acc_1", email: "yo@test.com", plan: "pro",
81
+ deviceToken: "tok", apiBaseUrl: "http://127.0.0.1:1", linkedAt: new Date(),
82
+ });
83
+ await strict_1.default.rejects((0, team_js_2.inviteTeamMember)(db, { projectId: "no-existe", emails: ["dev@accuro.com"], inviteeKind: "employee" }), /No existe el proyecto/);
84
+ }
85
+ finally {
86
+ db.close();
87
+ }
88
+ });
89
+ (0, node_test_1.test)("aceptar sin cuenta vinculada pide login con el comando exacto", async () => {
90
+ const db = fresh();
91
+ try {
92
+ await strict_1.default.rejects((0, team_js_2.acceptTeamInvite)(db, { token: "cualquiera", localProjectId: "euro-blazor-accuro" }), (error) => {
93
+ strict_1.default.ok(error instanceof team_js_2.NoAccountError);
94
+ strict_1.default.match(error.message, /estela login --email/);
95
+ return true;
96
+ });
97
+ }
98
+ finally {
99
+ db.close();
100
+ }
101
+ });
102
+ (0, node_test_1.test)("aceptar con un id local ya usado por otro proyecto se rechaza antes de tocar nada", async () => {
103
+ const db = fresh();
104
+ try {
105
+ store.setCloudAccount(db, {
106
+ accountId: "acc_1", email: "yo@test.com", plan: "free",
107
+ deviceToken: "tok", apiBaseUrl: "http://127.0.0.1:1", linkedAt: new Date(),
108
+ });
109
+ // "web" ya existe (creado por fresh()) y no tiene ningún project_sync con
110
+ // este token — debe rechazarse sin intentar la llamada de red siquiera.
111
+ await strict_1.default.rejects((0, team_js_2.acceptTeamInvite)(db, { token: "tok_nuevo", localProjectId: "web" }), /Ya existe un proyecto local/);
112
+ }
113
+ finally {
114
+ db.close();
115
+ }
116
+ });
117
+ (0, node_test_1.test)("emailsOverlap es case-insensitive y no exige coincidencia exacta de listas", () => {
118
+ strict_1.default.ok((0, team_js_1.emailsOverlap)(["Dev@Accuro.com"], ["dev@accuro.com", "otro@x.com"]));
119
+ strict_1.default.ok(!(0, team_js_1.emailsOverlap)(["nadie@x.com"], ["dev@accuro.com"]));
120
+ strict_1.default.ok(!(0, team_js_1.emailsOverlap)([], ["dev@accuro.com"]));
121
+ });
122
+ (0, node_test_1.test)("sumEntrySeconds suma sin filtrar por facturable", () => {
123
+ const db = fresh();
124
+ try {
125
+ store.saveTimeEntry(db, {
126
+ id: "te_1", projectId: "web",
127
+ startedAt: new Date("2026-01-01T09:00:00Z"), endedAt: new Date("2026-01-01T10:00:00Z"),
128
+ seconds: 1800, description: "a", billable: true, invoiceId: null,
129
+ aiCost: { microUsd: 0 }, agentSeconds: 1800, commitHashes: [], agents: [],
130
+ source: "manual", kind: "development", branch: null,
131
+ });
132
+ store.saveTimeEntry(db, {
133
+ id: "te_2", projectId: "web",
134
+ startedAt: new Date("2026-01-02T09:00:00Z"), endedAt: new Date("2026-01-02T10:00:00Z"),
135
+ seconds: 900, description: "b", billable: false, invoiceId: null,
136
+ aiCost: { microUsd: 0 }, agentSeconds: 900, commitHashes: [], agents: [],
137
+ source: "manual", kind: "development", branch: null,
138
+ });
139
+ strict_1.default.equal(store.sumEntrySeconds(db, "web"), 2700);
140
+ strict_1.default.equal(store.sumEntrySeconds(db, "no-existe"), 0);
141
+ }
142
+ finally {
143
+ db.close();
144
+ }
145
+ });
146
+ (0, node_test_1.test)("addProjectRepo solo toca project_repos, no kind ni billable", () => {
147
+ const db = fresh();
148
+ try {
149
+ store.upsertProject(db, {
150
+ id: "team-proj", clientId: "acme", name: "Proyecto de equipo", repoPaths: [],
151
+ billable: false, roundingMinutes: 0, aiCostPolicy: "absorbed", kind: "employment",
152
+ });
153
+ store.addProjectRepo(db, "team-proj", "/home/dev/code/euro-blazor");
154
+ const project = store.getProject(db, "team-proj");
155
+ strict_1.default.equal(project.billable, false);
156
+ strict_1.default.equal(project.kind, "employment");
157
+ strict_1.default.deepEqual(project.repoPaths, ["/home/dev/code/euro-blazor"]);
158
+ }
159
+ finally {
160
+ db.close();
161
+ }
162
+ });
163
+ //# sourceMappingURL=team.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.test.js","sourceRoot":"","sources":["../src/team.test.ts"],"names":[],"mappings":"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"}
@@ -104,7 +104,7 @@ const lib = require((0, node_path_1.join)(WEB, "lib.js"));
104
104
  const dinamicos = new Set(["add-toggle", "add-form", "add-cancel", "add-kind",
105
105
  "add-minutes", "add-what", "add-project", "new-project", "np-repo", "np-name",
106
106
  "np-rate", "np-client", "np-clientname", "np-currency", "approve-all", "rep-periods",
107
- "team-more"]);
107
+ "team-more", "rep-search", "reports-more"]);
108
108
  const faltan = [...new Set(usados)].filter((id) => !ids.has(id) && !dinamicos.has(id));
109
109
  strict_1.default.deepEqual(faltan, [], `ids referenciados que no existen: ${faltan.join(", ")}`);
110
110
  });
@@ -309,4 +309,17 @@ const ZONAS = [
309
309
  strict_1.default.match(css, /main\.wide\s*\{[^}]*max-width:\s*11\d\dpx/);
310
310
  strict_1.default.ok(appJs.includes('classList.toggle("wide"'), "nadie activa la clase");
311
311
  });
312
+ // ── Informes: buscador y plegado ─────────────────────────────────────────────
313
+ (0, node_test_1.test)("Informes pliega el formulario por defecto, igual que un bloque de Mi día", () => {
314
+ // El fallo que esto evita: con varios proyectos con tarifa, la pantalla
315
+ // desplegaba fecha+fecha+nombre+casilla+botón para CADA UNO a la vez, y se
316
+ // volvía una columna larga sin poder distinguir un proyecto de otro.
317
+ strict_1.default.ok(appJs.includes("state.reportsOpen"), "falta el registro de qué fila está abierta");
318
+ strict_1.default.match(appJs, /\$\{open \? `[\s\S]*?<form class="report-actions"/, "el formulario debe renderizarse solo cuando la fila está abierta, no ocultarse con CSS");
319
+ });
320
+ (0, node_test_1.test)("Informes muestra un tope de filas con 'ver más', y busca en el navegador", () => {
321
+ strict_1.default.ok(appJs.includes("const REPORT_ROWS = 5"), "el tope debe ser explícito, no un número suelto");
322
+ strict_1.default.ok(appJs.includes("state.reportsQuery"), "falta el estado del buscador");
323
+ strict_1.default.ok(appJs.includes('id="reports-more"'), "falta el botón de ver más proyectos");
324
+ });
312
325
  //# sourceMappingURL=web-ui.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-ui.test.js","sourceRoot":"","sources":["../src/web-ui.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-ui.test.js","sourceRoot":"","sources":["../src/web-ui.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "estela",
3
- "version": "0.1.3",
3
+ "version": "0.1.6",
4
4
  "description": "Registro de horas de desarrollo que no hay que rellenar: lee lo que tus agentes de IA y tu Git ya escribieron en disco.",
5
5
  "keywords": [
6
6
  "time-tracking",
package/web/app.css CHANGED
@@ -77,27 +77,32 @@ button { font: inherit; color: inherit; border: 0; background: none; cursor: poi
77
77
 
78
78
  .top {
79
79
  display: flex; align-items: center; gap: 28px;
80
- padding: 18px 24px;
81
- border-bottom: 1px solid var(--line);
82
- background: var(--card);
80
+ padding: 15px 24px;
81
+ /* Fijo, no var(--line): esa variable se aclara en modo oscuro, y contra el
82
+ fondo blanco fijo de abajo el borde casi desaparecía. */
83
+ border-bottom: 1px solid #DFE1DA;
84
+ /* Fijo, no var(--card): el logo lleva su propio fondo blanco horneado en
85
+ el PNG, y en modo oscuro --card se oscurece — se vería como una caja
86
+ blanca flotando en la cabecera. La cabecera se adapta al logo. */
87
+ background: #fff;
83
88
  }
84
89
 
85
- .brand {
86
- display: flex; align-items: center; gap: 9px;
87
- font-weight: 650; letter-spacing: -.015em;
88
- }
89
- .mark {
90
- width: 22px; height: 22px; flex: none;
91
- object-fit: contain; display: block;
92
- }
90
+ .brand { display: flex; align-items: center; }
91
+ .brand-logo { height: 28px; width: auto; display: block; }
93
92
 
94
93
  .tabs { display: flex; gap: 4px; }
95
94
  .tab {
96
95
  padding: 6px 14px; border-radius: 999px;
97
- color: var(--ink-2); font-size: .95rem; font-weight: 500;
96
+ /* #4E5652, no var(--ink-2): es el mismo tono que usa la landing para sus
97
+ enlaces de cabecera. Un poco más oscuro que el --ink-2 de aquí, y ahora
98
+ coincide en las dos superficies en vez de llevar cada una el suyo. */
99
+ color: #4E5652; font-size: .95rem; font-weight: 560;
98
100
  }
99
- .tab:hover { background: var(--card-2); color: var(--ink); }
100
- .tab.is-on { background: var(--jade-bg); color: var(--jade-2); font-weight: 600; }
101
+ /* Fijos, no var(--card-2)/var(--ink): la cabecera es blanca siempre (arriba),
102
+ y esos tokens se invierten en modo oscuro — la pestaña activa o en hover se
103
+ veía como una caja oscura flotando sobre el blanco fijo. */
104
+ .tab:hover { background: #EDEEEA; color: #191D1B; }
105
+ .tab.is-on { background: #E2EFEB; color: #0A5F52; font-weight: 600; }
101
106
 
102
107
  main { max-width: 720px; margin: 0 auto; padding: 40px 24px 80px; }
103
108
 
@@ -318,6 +323,24 @@ main.wide { max-width: 1180px; }
318
323
  font-size: .9rem; color: var(--amber);
319
324
  }
320
325
 
326
+ /* Franja de ancho completo, no un modal: es un aviso, no algo que bloquee
327
+ usar el panel mientras se lee. El admin lo enciende y apaga a distancia. */
328
+ .banner-promo {
329
+ display: flex; align-items: center; gap: 14px;
330
+ background: var(--jade-bg); border-bottom: 1px solid var(--jade);
331
+ padding: 10px 24px; font-size: .88rem; color: var(--jade-2);
332
+ }
333
+ .banner-promo #banner-text { flex: 1; font-weight: 560; }
334
+ .banner-promo a {
335
+ color: var(--jade-2); font-weight: 650; text-decoration: none; white-space: nowrap;
336
+ }
337
+ .banner-promo a:hover { text-decoration: underline; }
338
+ #banner-close {
339
+ background: none; border: none; color: var(--jade-2); font-size: 1.2rem;
340
+ line-height: 1; cursor: pointer; padding: 2px 4px; opacity: .7;
341
+ }
342
+ #banner-close:hover { opacity: 1; }
343
+
321
344
  /* ── Resumen: gestión de varios proyectos ───────────────────────────── */
322
345
 
323
346
  .section-head {
@@ -440,11 +463,22 @@ main.wide { max-width: 1180px; }
440
463
 
441
464
  /* ── Informes ───────────────────────────────────────────────────────── */
442
465
 
466
+ /* Plegado por defecto, igual que un bloque de Mi día: el formulario (fechas,
467
+ nombre, descarga) solo existe en el DOM cuando se pulsa el proyecto. Con
468
+ muchos proyectos desplegados a la vez, la pantalla era una columna larga
469
+ sin poder distinguir uno de otro. */
443
470
  .report {
444
471
  background: var(--card); border: 1px solid var(--line);
445
- border-radius: var(--radius); padding: 20px 22px; margin-bottom: 10px;
472
+ border-radius: var(--radius); margin-bottom: 10px; overflow: hidden;
473
+ }
474
+ .report.is-open { border-color: var(--line-2); box-shadow: var(--shadow); }
475
+ .report-head {
476
+ width: 100%; text-align: left; cursor: pointer;
446
477
  display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
478
+ padding: 20px 22px;
447
479
  }
480
+ .report.is-open .report-head { border-bottom: 1px solid var(--line); }
481
+ .report.is-open .chev { transform: rotate(90deg); }
448
482
  .report-text { flex: 1; min-width: 160px; }
449
483
  .report-name { font-size: 1.05rem; font-weight: 600; letter-spacing: -.01em; }
450
484
  .report-client { font-size: .87rem; color: var(--ink-3); margin-top: 2px; }
@@ -454,6 +488,13 @@ main.wide { max-width: 1180px; }
454
488
  font-variant-numeric: tabular-nums;
455
489
  }
456
490
  .report-amount { font-size: .85rem; color: var(--jade-2); font-weight: 600; margin-top: 2px; }
491
+
492
+ .search {
493
+ display: block; width: 100%; font: inherit; font-size: .92rem;
494
+ color: var(--ink); background: var(--card); border: 1px solid var(--line-2);
495
+ border-radius: 9px; padding: 9px 13px; margin: 14px 0 12px;
496
+ }
497
+ .search:focus { outline: 2px solid var(--jade); outline-offset: 1px; }
457
498
  .report-cmd {
458
499
  width: 100%; font-family: ui-monospace, Menlo, monospace; font-size: .78rem;
459
500
  color: var(--ink-3); background: var(--card-2);
@@ -466,6 +507,21 @@ main.wide { max-width: 1180px; }
466
507
 
467
508
  .top-right { margin-left: auto; display: flex; align-items: center; gap: 10px; }
468
509
 
510
+ .upgrade-wrap { position: relative; }
511
+ .btn-upgrade { padding: 8px 16px; font-size: .88rem; }
512
+ .upgrade-menu {
513
+ position: absolute; top: calc(100% + 8px); right: 0; z-index: 10;
514
+ background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
515
+ box-shadow: var(--shadow); padding: 6px; min-width: 240px;
516
+ }
517
+ .upgrade-option {
518
+ display: block; width: 100%; text-align: left; background: none; border: none;
519
+ border-radius: 8px; padding: 10px 12px; cursor: pointer;
520
+ }
521
+ .upgrade-option:hover { background: var(--card-2); }
522
+ .upgrade-option b { display: block; font-size: .92rem; color: var(--ink); }
523
+ .upgrade-option span { display: block; font-size: .78rem; color: var(--ink-3); margin-top: 2px; }
524
+
469
525
  /* Botón de actualizar. Discreto: es una red de seguridad, no la forma normal
470
526
  de usar la aplicación — al volver a la pestaña ya se actualiza sola. */
471
527
  .sync {
@@ -609,7 +665,9 @@ main.wide { max-width: 1180px; }
609
665
 
610
666
  .report-actions {
611
667
  display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap;
612
- width: 100%; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line);
668
+ width: 100%; padding: 16px 22px;
669
+ /* Sin borde propio: .report-head ya pinta la línea de separación cuando
670
+ está abierto, y una segunda aquí encima se vería como doble raya. */
613
671
  }
614
672
  .report-actions .field { display: flex; flex-direction: column; gap: 4px; }
615
673
  .report-actions .field > span { font-size: .74rem; color: var(--ink-3); font-weight: 600; }