| 4114 |
4114 |
|
}
|
| 4115 |
4115 |
|
|
| 4116 |
4116 |
|
/* A trough, so it reads inset. The fill inside stays flat: at 10px tall a
|
| 4117 |
|
- |
bevel on the bar itself would eat most of its height. */
|
| 4118 |
|
- |
.progress-bar-container {
|
|
4117 |
+ |
bevel on the bar itself would eat most of its height.
|
|
4118 |
+ |
|
|
4119 |
+ |
The surface and the inset edge come from the generated layout.css, which
|
|
4120 |
+ |
makes this a Depth::Well. Everything below is geometry.
|
|
4121 |
+ |
|
|
4122 |
+ |
One name, one meaning, which is the whole reason this section was rewritten:
|
|
4123 |
+ |
`.progress-bar` used to be defined twice, as a fill here and as a trough in
|
|
4124 |
+ |
the estimate section, so the later rule silently won and three call sites
|
|
4125 |
+ |
rendered their fill as a 6px bordered sliver of the wrong colour. */
|
|
4126 |
+ |
.progress {
|
| 4119 |
4127 |
|
width: 100%;
|
| 4120 |
4128 |
|
height: 10px;
|
| 4121 |
|
- |
background: var(--surface-overlay);
|
| 4122 |
4129 |
|
border: var(--border-width-sm) solid var(--border);
|
| 4123 |
|
- |
box-shadow: var(--bevel-inset);
|
| 4124 |
4130 |
|
overflow: hidden;
|
| 4125 |
4131 |
|
}
|
| 4126 |
4132 |
|
|
| 4127 |
|
- |
.progress-bar {
|
|
4133 |
+ |
/* Bordered, and shorter. The task-overview estimate bar. */
|
|
4134 |
+ |
.progress--slim {
|
|
4135 |
+ |
height: 6px;
|
|
4136 |
+ |
margin-bottom: var(--gap-section);
|
|
4137 |
+ |
}
|
|
4138 |
+ |
|
|
4139 |
+ |
/* Bare: no border, because at 3px a border is most of the height. */
|
|
4140 |
+ |
.progress--mini {
|
|
4141 |
+ |
height: 3px;
|
|
4142 |
+ |
border: none;
|
|
4143 |
+ |
border-radius: var(--radius-xs);
|
|
4144 |
+ |
margin-top: var(--gap-peer);
|
|
4145 |
+ |
}
|
|
4146 |
+ |
|
|
4147 |
+ |
/* Bare, and the focus timer's own spacing below it. */
|
|
4148 |
+ |
.progress--focus {
|
|
4149 |
+ |
height: 6px;
|
|
4150 |
+ |
border: none;
|
|
4151 |
+ |
border-radius: var(--radius-xs);
|
|
4152 |
+ |
margin-bottom: var(--gap-pane);
|
|
4153 |
+ |
}
|
|
4154 |
+ |
|
|
4155 |
+ |
/* The fill. Colour comes from the generated rules: untoned is --action, and
|
|
4156 |
+ |
data-tone carries success or danger where the bar means something. */
|
|
4157 |
+ |
.progress-fill {
|
| 4128 |
4158 |
|
height: 100%;
|
| 4129 |
|
- |
background: var(--success);
|
| 4130 |
4159 |
|
}
|
| 4131 |
4160 |
|
|
| 4132 |
4161 |
|
.no-subtasks {
|
| 6998 |
7027 |
|
background: var(--surface-overlay);
|
| 6999 |
7028 |
|
}
|
| 7000 |
7029 |
|
|
|
7030 |
+ |
/* A row holding a trough and its count, not a trough itself. It was styled as
|
|
7031 |
+ |
one -- 6px, bordered, overflow: hidden -- while the markup put a full
|
|
7032 |
+ |
.progress-bar-container AND a .milestone-progress-text span inside it, so the
|
|
7033 |
+ |
inner trough was clipped to 6px and the count was clipped away entirely.
|
|
7034 |
+ |
Wrapper only now; the trough inside it is .progress.progress--slim. */
|
| 7001 |
7035 |
|
.milestone-progress {
|
| 7002 |
|
- |
height: 6px;
|
| 7003 |
|
- |
background: var(--surface-overlay);
|
| 7004 |
|
- |
border-radius: var(--radius-full);
|
| 7005 |
|
- |
overflow: hidden;
|
| 7006 |
|
- |
border: var(--border-width-sm) solid var(--border);
|
|
7036 |
+ |
display: flex;
|
|
7037 |
+ |
align-items: center;
|
|
7038 |
+ |
gap: var(--gap-bound);
|
|
7039 |
+ |
}
|
|
7040 |
+ |
|
|
7041 |
+ |
.milestone-progress > .progress {
|
|
7042 |
+ |
flex: 1 1 auto;
|
|
7043 |
+ |
}
|
|
7044 |
+ |
|
|
7045 |
+ |
.milestone-progress-text {
|
|
7046 |
+ |
flex: 0 0 auto;
|
|
7047 |
+ |
color: var(--content-secondary);
|
|
7048 |
+ |
font-size: var(--font-size-md);
|
| 7007 |
7049 |
|
}
|
| 7008 |
7050 |
|
|
| 7009 |
7051 |
|
.milestone-actions {
|
| 7651 |
7693 |
|
}
|
| 7652 |
7694 |
|
|
| 7653 |
7695 |
|
/* Show subtask progress inline if present */
|
| 7654 |
|
- |
.ui-mode-mobile .task-cell.task-progress:has(.progress-bar-container) {
|
|
7696 |
+ |
.ui-mode-mobile .task-cell.task-progress:has(.progress) {
|
| 7655 |
7697 |
|
display: flex !important;
|
| 7656 |
7698 |
|
order: 5;
|
| 7657 |
7699 |
|
}
|
| 8111 |
8153 |
|
.kanban-card-meta { font-size: var(--font-size-sm); color: var(--content-secondary); display: flex; gap: var(--gap-peer); flex-wrap: wrap; }
|
| 8112 |
8154 |
|
.kanban-card-due.overdue { color: var(--danger); font-weight: 600; }
|
| 8113 |
8155 |
|
|
| 8114 |
|
- |
.progress-bar-mini { height: 3px; background: var(--surface-sunken); border-radius: var(--radius-xs); margin-top: var(--gap-peer); }
|
| 8115 |
|
- |
.progress-bar-mini .progress-fill { height: 100%; background: var(--success); border-radius: var(--radius-xs); }
|
|
8156 |
+ |
/* Was .progress-bar-mini + its own fill. Now .progress.progress--mini with a
|
|
8157 |
+ |
data-tone="success" fill, so only the corner rounding is left to say. */
|
|
8158 |
+ |
.progress--mini > .progress-fill { border-radius: var(--radius-xs); }
|
| 8116 |
8159 |
|
|
| 8117 |
8160 |
|
/* Kanban Responsive */
|
| 8118 |
8161 |
|
.ui-mode-mobile .kanban-board { grid-template-columns: 1fr; }
|
| 8249 |
8292 |
|
color: var(--content);
|
| 8250 |
8293 |
|
}
|
| 8251 |
8294 |
|
|
| 8252 |
|
- |
.focus-progress-bar {
|
| 8253 |
|
- |
height: 6px;
|
| 8254 |
|
- |
background: var(--surface-sunken);
|
| 8255 |
|
- |
border-radius: var(--radius-xs);
|
| 8256 |
|
- |
margin-bottom: var(--gap-pane);
|
| 8257 |
|
- |
overflow: hidden;
|
| 8258 |
|
- |
}
|
| 8259 |
|
- |
|
| 8260 |
|
- |
.focus-progress-fill {
|
| 8261 |
|
- |
height: 100%;
|
| 8262 |
|
- |
background: var(--action);
|
| 8263 |
|
- |
border-radius: var(--radius-xs);
|
| 8264 |
|
- |
}
|
|
8295 |
+ |
/* Was .focus-progress-bar + .focus-progress-fill. Now
|
|
8296 |
+ |
.progress.progress--focus with an untoned fill, which is --action already. */
|
|
8297 |
+ |
.progress--focus > .progress-fill { border-radius: var(--radius-xs); }
|
| 8265 |
8298 |
|
|
| 8266 |
8299 |
|
.focus-task-name {
|
| 8267 |
8300 |
|
color: var(--content-secondary);
|
| 8914 |
8947 |
|
border-bottom: var(--border-width-sm) solid var(--border);
|
| 8915 |
8948 |
|
}
|
| 8916 |
8949 |
|
|
| 8917 |
|
- |
.progress-bar {
|
| 8918 |
|
- |
height: 6px;
|
| 8919 |
|
- |
background: var(--surface-overlay);
|
| 8920 |
|
- |
border: var(--border-width-sm) solid var(--border);
|
| 8921 |
|
- |
margin-bottom: var(--gap-section);
|
| 8922 |
|
- |
overflow: hidden;
|
| 8923 |
|
- |
}
|
| 8924 |
|
- |
|
| 8925 |
|
- |
.progress-fill {
|
| 8926 |
|
- |
height: 100%;
|
| 8927 |
|
- |
background: var(--success);
|
| 8928 |
|
- |
}
|
| 8929 |
|
- |
|
| 8930 |
|
- |
.progress-bar.over-estimate .progress-fill {
|
| 8931 |
|
- |
background: var(--danger);
|
| 8932 |
|
- |
}
|
|
8950 |
+ |
/* Was a second, conflicting `.progress-bar` (a trough) plus its own fill and an
|
|
8951 |
+ |
.over-estimate override. All three are gone: the trough is
|
|
8952 |
+ |
.progress.progress--slim, and the fill says what it means with
|
|
8953 |
+ |
data-tone="success" or data-tone="danger" rather than through a parent class.
|
|
8954 |
+ |
The .over-estimate class stays in use on .task-time-badge, which is a
|
|
8955 |
+ |
different thing entirely. */
|
| 8933 |
8956 |
|
|
| 8934 |
8957 |
|
|
| 8935 |
8958 |
|
/* Task overview stats in mobile UI, 2 columns instead of 4. */
|