File size: 5,021 Bytes
f6c14df
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* ── Buttons ── */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  font-weight:500; border:1px solid transparent; border-radius:var(--radius);
  cursor:pointer; transition:all .15s ease; white-space:nowrap;
  font-family:'Inter',sans-serif; letter-spacing:0.01em;
}
.btn:disabled { opacity:.5; cursor:not-allowed; }

.btn-primary   { background:var(--accent); color:#fff; border-color:var(--accent); }
.btn-primary:hover:not(:disabled)   { background:var(--accent-hover); border-color:var(--accent-hover); }

.btn-secondary { background:var(--bg-elevated); color:var(--text-secondary); border-color:var(--border); }
.btn-secondary:hover:not(:disabled) { background:var(--bg-hover); border-color:var(--border-strong); }

.btn-danger    { background:var(--rose-light); color:var(--rose); border-color:var(--rose-border); }
.btn-danger:hover:not(:disabled)    { background:#f7e0e0; }

.btn-ghost     { background:transparent; color:var(--text-muted); border-color:transparent; }
.btn-ghost:hover:not(:disabled)     { background:var(--bg-hover); color:var(--text-secondary); }

.btn-sm  { padding:5px 11px;  font-size:12.5px; }
.btn-md  { padding:8px 16px;  font-size:13.5px; }
.btn-lg  { padding:11px 22px; font-size:14.5px; }

/* ── Badges ── */
.badge {
  display:inline-flex; align-items:center; padding:2px 9px;
  border-radius:100px; font-size:11.5px; font-weight:600; white-space:nowrap;
  border:1px solid transparent; font-family:'Inter',sans-serif;
}
.badge-todo       { background:var(--s-todo-bg);     color:var(--s-todo);      border-color:#ddd6c8; }
.badge-inprogress { background:var(--s-progress-bg); color:var(--s-progress);  border-color:var(--blue-border); }
.badge-inreview   { background:var(--s-review-bg);   color:var(--s-review);    border-color:var(--violet-border); }
.badge-done       { background:var(--s-done-bg);     color:var(--s-done);      border-color:var(--accent-border); }
.badge-cancelled  { background:var(--s-cancelled-bg);color:var(--s-cancelled); border-color:var(--rose-border); }

.badge-low      { background:var(--accent-light); color:var(--p-low);      border-color:var(--accent-border); }
.badge-medium   { background:var(--amber-light);  color:var(--p-medium);   border-color:var(--amber-border); }
.badge-high     { background:#fef3ea;             color:var(--p-high);     border-color:#e8b880; }
.badge-critical { background:var(--rose-light);   color:var(--p-critical); border-color:var(--rose-border); }

/* ── Fields ── */
.field { display:flex; flex-direction:column; gap:5px; }
.field-label { font-size:12.5px; font-weight:600; color:var(--text-secondary); letter-spacing:.02em; }
.field-input {
  background:var(--bg-elevated); border:1.5px solid var(--border);
  border-radius:var(--radius); color:var(--text-primary);
  font-size:13.5px; padding:9px 13px; transition:border-color .15s;
  width:100%;
}
.field-input:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(45,90,61,0.1); }
.field-input-error { border-color:var(--rose) !important; }
.field-error { font-size:11.5px; color:var(--rose); }
select.field-input { appearance:none; cursor:pointer; }
textarea.field-input { resize:vertical; min-height:90px; line-height:1.6; }

/* ── Card ── */
.card {
  background:var(--bg-elevated); border:1px solid var(--border);
  border-radius:var(--radius-lg); padding:22px;
  box-shadow:var(--shadow-sm);
}

/* ── Empty State ── */
.empty-state { display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:56px 24px;gap:10px; }
.empty-icon { width:52px;height:52px;border-radius:50%;background:var(--bg-base);border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-faint);margin-bottom:4px; }
.empty-title { font-family:'Lora',serif;font-size:16px;font-weight:600;color:var(--text-secondary); }
.empty-desc { font-size:13px;color:var(--text-muted);max-width:300px;line-height:1.5; }
.empty-action { margin-top:10px; }

/* ── Spinner ── */
@keyframes spin { to { transform:rotate(360deg); } }
.spinner {
  width:15px; height:15px;
  border:2px solid rgba(255,255,255,.35);
  border-top-color:white; border-radius:50%;
  animation:spin .7s linear infinite;
  display:inline-block; flex-shrink:0;
}
.spinner-dark {
  width:18px; height:18px;
  border:2px solid var(--border); border-top-color:var(--accent);
  border-radius:50%; animation:spin .7s linear infinite; display:inline-block;
}

/* ── Page Header ── */
.page-header { display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:24px;flex-wrap:wrap; }
.page-title  { font-family:'Lora',serif;font-size:22px;font-weight:700;color:var(--text-primary);letter-spacing:-.2px; }
.page-subtitle { font-size:13px;color:var(--text-muted);margin-top:3px; }
.page-action { flex-shrink:0; }

/* ── Divider ── */
.divider { height:1px; background:var(--border); margin:16px 0; }