@umriss-ui/schedule 0.5.7 → 0.7.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/CHANGELOG.md +35 -0
- package/README.md +12 -3
- package/dist/index.d.ts +39 -1
- package/dist/schedule.css +1 -1
- package/dist/schedule.js +1182 -1128
- package/docs/llms-full.md +195 -33
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,41 @@ moves from here under the rule above.
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
+
## 0.7.0 – The summary counts the milestones (Oct. 2026)
|
|
19
|
+
|
|
20
|
+
Needs `@umriss-ui/core` 0.32; the peer range moves to `^0.32.0`.
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- **Milestones in the summary**: the plot's description names how many milestones the plan shows ("2 milestones."), and nothing where there are none. Needs `@umriss-ui/core` with the new `scheduleSummary` argument.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 0.6.0 – Milestones (Oct. 2026)
|
|
29
|
+
|
|
30
|
+
Needs `@umriss-ui/core` 0.31 and `@umriss-ui/charts` 0.15; the peer ranges move to `^0.31.0` and `^0.15.0`.
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- **`<Milestones data />`.** A point in time on a lane, drawn as a diamond
|
|
35
|
+
above the work: plain data `{ id, lane, at, label? }`, declared inside the
|
|
36
|
+
`Schedule` like `BlockedTimes` and handed out by `useSchedule`. It is
|
|
37
|
+
read-only - not dragged, no intent, no finding. The tooltip names it by
|
|
38
|
+
label (or id) and time, and the keys walk to it in time order among the work
|
|
39
|
+
of its lane. New types `Milestone` and `MilestonesProps`; the words come
|
|
40
|
+
from core's new `scheduleMilestone` wording ("Milestone: Release"), so it
|
|
41
|
+
needs a core with it.
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
|
|
45
|
+
- **`ScheduleTooltipTarget` and `ScheduleHit` have a third kind,
|
|
46
|
+
`"milestone"`.** A `tooltip` function of your own that reads `target.task`
|
|
47
|
+
or `target.violated` without checking `target.kind` first no longer
|
|
48
|
+
type-checks; add a case for the milestone (`target.milestone`) or return
|
|
49
|
+
`null` for it.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
18
53
|
## 0.5.7 – Charts 0.14.0 (Oct. 2026)
|
|
19
54
|
|
|
20
55
|
Needs `@umriss-ui/charts` 0.14; the peer range moves to `^0.14.0`. Nothing else changes for a caller.
|
package/README.md
CHANGED
|
@@ -148,17 +148,26 @@ hatched behind the work; a subtask that covers some of it is a finding
|
|
|
148
148
|
(`inBlockedTime`, and the third argument of `findings`), and a drag does not
|
|
149
149
|
put work into it.
|
|
150
150
|
|
|
151
|
+
## Milestones
|
|
152
|
+
|
|
153
|
+
`<Milestones data={…} />` takes points in time on a lane — a handover, a
|
|
154
|
+
release — as plain data, `{ id, lane, at, label? }`. Each is drawn as a diamond
|
|
155
|
+
on its lane above the work, in the text ink; there is no tone and no size. It
|
|
156
|
+
is read-only: it is not dragged, reports no intent and is no finding. The
|
|
157
|
+
pointer's tooltip names it by label (or id) and time; the keys walk to it in
|
|
158
|
+
time order among the work of its lane, and the live region reads its lane,
|
|
159
|
+
label and time.
|
|
160
|
+
|
|
151
161
|
## Not yet
|
|
152
162
|
|
|
153
163
|
What the schedule does not do today, and waits for a caller who needs it (what
|
|
154
164
|
it never does stands in ADR-0032):
|
|
155
165
|
|
|
156
|
-
* **Milestones** — a point in time on a lane, drawn as a mark rather than a bar.
|
|
157
166
|
* **Stacked overlap** — overlapping subtasks packed into sub-lanes on request;
|
|
158
167
|
today an overlap is always drawn offset, as the finding it is.
|
|
159
168
|
* **Dependencies across tasks** — a dependency joins two subtasks of one task.
|
|
160
169
|
|
|
161
|
-
Done from this list: **blocked time** per lane
|
|
170
|
+
Done from this list: **blocked time** per lane and **milestones**.
|
|
162
171
|
|
|
163
172
|
## Where to read on
|
|
164
173
|
|
|
@@ -176,7 +185,7 @@ Done from this list: **blocked time** per lane.
|
|
|
176
185
|
page also has a Markdown twin online; for the latest version:
|
|
177
186
|
<https://romanhaendler.github.io/umriss-ui/schedule/llms.txt>.
|
|
178
187
|
* The vocabulary — **Task**, **Subtask**, **Lead-in**, **Lead-out**,
|
|
179
|
-
**Dependency**, **Violated dependency**, **Blocked time**, **Lane header**, **Lane group**,
|
|
188
|
+
**Dependency**, **Violated dependency**, **Blocked time**, **Milestone**, **Lane header**, **Lane group**,
|
|
180
189
|
**Miniature**, **Intent**, **Ghost** — stands in the workspace's
|
|
181
190
|
`CONTEXT.md`, section "The schedule".
|
|
182
191
|
* [`../../docs/design-language.md`](../../docs/design-language.md) — the design
|
package/dist/index.d.ts
CHANGED
|
@@ -210,6 +210,35 @@ export declare interface LeadOutIntent {
|
|
|
210
210
|
readonly leadOut: number;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
+
/** A point in time on a lane: a handover, a release, a deadline. Drawn as a
|
|
214
|
+
mark, not a bar - it has no duration and no task, and it is not moved: the
|
|
215
|
+
schedule reports no intent for it and finds nothing wrong with work beside
|
|
216
|
+
it.
|
|
217
|
+
|
|
218
|
+
A list of its own, like blocked time and for the same reason: it is data
|
|
219
|
+
the caller already holds (ADR-0023), keyed by lane. */
|
|
220
|
+
export declare interface Milestone {
|
|
221
|
+
/** The caller's identity of the milestone. */
|
|
222
|
+
readonly id: string;
|
|
223
|
+
/** The id of the lane it stands on. */
|
|
224
|
+
readonly lane: string;
|
|
225
|
+
/** The instant it stands at. */
|
|
226
|
+
readonly at: number;
|
|
227
|
+
/** What it is called, where the schedule names it; without it, its id. */
|
|
228
|
+
readonly label?: string;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/** A layer of milestones. Wherever it is declared, it is drawn above the work:
|
|
232
|
+
a milestone is a mark that must not be hidden by a bar it stands on. */
|
|
233
|
+
declare function Milestones({ data }: MilestonesProps): null;
|
|
234
|
+
|
|
235
|
+
/** The props of `Milestones`. */
|
|
236
|
+
export declare interface MilestonesProps {
|
|
237
|
+
/** The milestones of the lanes, as the caller holds them: one list, each
|
|
238
|
+
naming its lane and the instant it stands at. */
|
|
239
|
+
data: readonly Milestone[];
|
|
240
|
+
}
|
|
241
|
+
|
|
213
242
|
/** Move the subtask in time: the main time keeps its length. */
|
|
214
243
|
export declare interface MoveIntent {
|
|
215
244
|
readonly kind: "move";
|
|
@@ -345,6 +374,9 @@ export declare type ScheduleHit = {
|
|
|
345
374
|
} | {
|
|
346
375
|
readonly kind: "dependency";
|
|
347
376
|
readonly dependency: Dependency;
|
|
377
|
+
} | {
|
|
378
|
+
readonly kind: "milestone";
|
|
379
|
+
readonly milestone: Milestone;
|
|
348
380
|
} | {
|
|
349
381
|
readonly kind: "lane";
|
|
350
382
|
readonly lane: string;
|
|
@@ -395,6 +427,7 @@ export declare interface ScheduleParts {
|
|
|
395
427
|
Subtasks: typeof Subtasks;
|
|
396
428
|
Dependencies: typeof Dependencies;
|
|
397
429
|
BlockedTimes: typeof BlockedTimes;
|
|
430
|
+
Milestones: typeof Milestones;
|
|
398
431
|
/** How the planner is looking at the plan: the span and the folded groups. */
|
|
399
432
|
view: ScheduleView;
|
|
400
433
|
/** Puts a span of two wall-clock instants in view; `null` shows the
|
|
@@ -531,6 +564,11 @@ export declare type ScheduleTooltipTarget = {
|
|
|
531
564
|
readonly violatedDependencies: readonly ViolatedDependency[];
|
|
532
565
|
/** The blocked time it covers on its lane. */
|
|
533
566
|
readonly blocked: readonly BlockedTime[];
|
|
567
|
+
} | {
|
|
568
|
+
/** A milestone is hovered. */
|
|
569
|
+
readonly kind: "milestone";
|
|
570
|
+
/** The hovered milestone. */
|
|
571
|
+
readonly milestone: Milestone;
|
|
534
572
|
} | {
|
|
535
573
|
/** A dependency is hovered. */
|
|
536
574
|
readonly kind: "dependency";
|
|
@@ -653,7 +691,7 @@ export declare interface Task {
|
|
|
653
691
|
}
|
|
654
692
|
|
|
655
693
|
/** Declares a schedule: hands back `Schedule` and the parts declared inside it
|
|
656
|
-
- `Lane`, `LaneGroup`, `Subtasks`, `Dependencies`, `BlockedTimes` -, its
|
|
694
|
+
- `Lane`, `LaneGroup`, `Subtasks`, `Dependencies`, `BlockedTimes`, `Milestones` -, its
|
|
657
695
|
`view` and the setters `setDomain`, `toggleGroup`, `foldAll` and
|
|
658
696
|
`unfoldAll`. A ref on `Schedule` still gives the `ScheduleHandle`. */
|
|
659
697
|
export declare function useSchedule(options?: ScheduleOptions): ScheduleParts;
|
package/dist/schedule.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.base{._text_r8i8z_23{font-family:var(--u-font-sans);font-size:var(--u-text-md);line-height:var(--u-leading-normal);color:var(--u-color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}@media(pointer:fine){._dense_r8i8z_39{--u-control-height-sm: var(--u-control-height-xs)}}._ink_r8i8z_50{--u-color-text: var(--u-color-bg);--u-color-text-secondary: color-mix(in srgb, var(--u-color-bg) 75%, transparent);--u-color-text-muted: color-mix(in srgb, var(--u-color-bg) 60%, transparent)}._extent_r8i8z_75{--_chars: 16;--_extra: 0;--_tracking: 0px;--_chrome: 0px;min-inline-size:0;max-inline-size:100%;contain:inline-size;contain-intrinsic-inline-size:calc((var(--_chars) + var(--_extra)) * (1ch + var(--_tracking)) + var(--_chrome))}._field_r8i8z_90{caret-color:var(--u-color-accent)}._scroll_r8i8z_96{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--u-color-text) 25%,transparent) transparent}._scroll_r8i8z_96::-webkit-scrollbar{width:10px;height:10px}._scroll_r8i8z_96::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--u-color-text) 22%,transparent);border-radius:var(--u-radius-full);border:3px solid transparent;background-clip:content-box}._scroll_r8i8z_96::-webkit-scrollbar-track{background:transparent}}@layer umriss.components{._ring_r8i8z_125:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}@media(pointer:coarse){._field_r8i8z_90._field_r8i8z_90,._fieldRoot_r8i8z_145._fieldRoot_r8i8z_145{font-size:16px}}._field_r8i8z_90:-webkit-autofill,._field_r8i8z_90:-webkit-autofill:hover,._field_r8i8z_90:-webkit-autofill:focus{-webkit-box-shadow:inset 0 0 0 1000px var(--u-color-surface),0 0 0 1px var(--u-edge-color-strong);-webkit-text-fill-color:var(--u-color-text);caret-color:var(--u-color-accent)}}@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.components{._root_1892z_4,._root_1892z_4:before,._root_1892z_4:after{box-sizing:border-box}._corner_1892z_19,._corner_1892z_19:before,._corner_1892z_19:after{box-sizing:border-box}._dayBand_1892z_23,._dayBand_1892z_23:before,._dayBand_1892z_23:after{box-sizing:border-box}._tickBand_1892z_24,._tickBand_1892z_24:before,._tickBand_1892z_24:after{box-sizing:border-box}._day_1892z_23,._day_1892z_23:before,._day_1892z_23:after{box-sizing:border-box}._dayLabel_1892z_50,._dayLabel_1892z_50:before,._dayLabel_1892z_50:after{box-sizing:border-box}._tick_1892z_24,._tick_1892z_24:before,._tick_1892z_24:after{box-sizing:border-box}._tickLabel_1892z_71,._tickLabel_1892z_71:before,._tickLabel_1892z_71:after{box-sizing:border-box}._headers_1892z_79,._headers_1892z_79:before,._headers_1892z_79:after{box-sizing:border-box}._header_1892z_79,._header_1892z_79:before,._header_1892z_79:after{box-sizing:border-box}._headerLabel_1892z_97,._headerLabel_1892z_97:before,._headerLabel_1892z_97:after{box-sizing:border-box}._headerCount_1892z_134,._headerCount_1892z_134:before,._headerCount_1892z_134:after{box-sizing:border-box}._chevron_1892z_143,._chevron_1892z_143:before,._chevron_1892z_143:after{box-sizing:border-box}._plot_1892z_201,._plot_1892z_201:before,._plot_1892z_201:after{box-sizing:border-box}._focusRing_1892z_208,._focusRing_1892z_208:before,._focusRing_1892z_208:after{box-sizing:border-box}._layer_1892z_226,._layer_1892z_226:before,._layer_1892z_226:after{box-sizing:border-box}._grip_1892z_235,._grip_1892z_235:before,._grip_1892z_235:after{box-sizing:border-box}._ghostLabel_1892z_245,._ghostLabel_1892z_245:before,._ghostLabel_1892z_245:after{box-sizing:border-box}._finding_1892z_258,._finding_1892z_258:before,._finding_1892z_258:after{box-sizing:border-box}._refusal_1892z_266,._refusal_1892z_266:before,._refusal_1892z_266:after{box-sizing:border-box}._tooltip_1892z_270,._tooltip_1892z_270:before,._tooltip_1892z_270:after{box-sizing:border-box}._tooltipHead_1892z_289,._tooltipHead_1892z_289:before,._tooltipHead_1892z_289:after{box-sizing:border-box}._tooltipTimes_1892z_294,._tooltipTimes_1892z_294:before,._tooltipTimes_1892z_294:after{box-sizing:border-box}._now_1892z_303,._now_1892z_303:before,._now_1892z_303:after{box-sizing:border-box}._barLabel_1892z_317,._barLabel_1892z_317:before,._barLabel_1892z_317:after{box-sizing:border-box}._barLabelText_1892z_330,._barLabelText_1892z_330:before,._barLabelText_1892z_330:after{box-sizing:border-box}._root_1892z_4{display:grid;grid-template-rows:28px minmax(0,1fr) 28px;width:100%;font-size:var(--u-text-sm);background:var(--u-color-surface);outline:1px solid transparent;box-shadow:var(--u-edge);border-radius:var(--u-radius-md);corner-shape:squircle;overflow:hidden;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}._corner_1892z_19{background:var(--u-color-surface)}._dayBand_1892z_23,._tickBand_1892z_24{position:relative;overflow:hidden;color:var(--u-color-text-muted);font-size:var(--u-text-xs)}._dayBand_1892z_23{border-bottom:1px solid var(--u-hairline-strong)}._tickBand_1892z_24{border-top:1px solid var(--u-hairline-strong)}._day_1892z_23{position:absolute;top:0;bottom:0;border-left:1px solid var(--u-hairline-strong);overflow:hidden}._dayLabel_1892z_50{position:absolute;z-index:1;left:var(--u-space-1);padding:0 var(--u-space-1);background:var(--u-color-surface);top:50%;transform:translateY(-50%);white-space:nowrap;color:var(--u-color-text);font-weight:var(--u-weight-medium)}._tick_1892z_24{position:absolute;top:0;bottom:0;width:1px;background:var(--u-hairline)}._tickLabel_1892z_71{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);white-space:nowrap}._headers_1892z_79{position:relative;overflow:hidden;border-right:1px solid var(--u-hairline-strong)}._header_1892z_79{display:flex;align-items:center;gap:var(--u-space-2);padding-right:var(--u-space-3);border-bottom:1px solid var(--u-hairline);overflow:hidden;white-space:nowrap}._headerLabel_1892z_97{min-width:0;overflow:hidden;text-overflow:ellipsis}._header_1892z_79[data-row=lane],._header_1892z_79[data-row=miniature]{container:lane-header / size}@container lane-header (height >= 2.5rem){._headerLabel_1892z_97:not(:has(*)){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;white-space:normal;text-wrap:balance}}._header_1892z_79[data-row=groupHead],._header_1892z_79[data-row=miniature]{font-weight:var(--u-weight-medium)}._headerCount_1892z_134{flex:none;color:var(--u-color-text-muted);font-size:var(--u-text-xs);font-variant-numeric:tabular-nums}._chevron_1892z_143{flex:none;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;border-radius:var(--u-radius-xs);corner-shape:squircle;background:transparent;color:var(--u-color-text-secondary);cursor:pointer;transition:background-color var(--u-transition),color var(--u-transition)}._chevron_1892z_143:hover{background:var(--u-color-surface-sunken);color:var(--u-color-text)}._chevron_1892z_143:active{background:var(--u-color-surface-pressed)}._chevron_1892z_143:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._chevron_1892z_143 svg{box-sizing:border-box}._chevron_1892z_143 svg{transition:transform var(--u-transition-path)}._chevron_1892z_143 svg[data-open]{box-sizing:border-box}._chevron_1892z_143 svg[data-open]{transform:rotate(90deg)}@media(prefers-reduced-motion:reduce){._chevron_1892z_143 svg{transition:none}}._header_1892z_79[data-refused]{color:var(--u-color-text-muted)}._plot_1892z_201{position:relative;overflow:hidden;touch-action:none}._plot_1892z_201:focus{outline:none}._focusRing_1892z_208{position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:var(--u-radius-md);corner-shape:squircle;pointer-events:none}._plot_1892z_201:focus-visible>._focusRing_1892z_208{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._layer_1892z_226{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;pointer-events:none}._grip_1892z_235{position:absolute;width:9px;margin-left:-4px;border-radius:var(--u-radius-xs);corner-shape:squircle;background:var(--u-color-surface);box-shadow:inset 0 0 0 1.5px var(--u-color-text);cursor:ew-resize}._ghostLabel_1892z_245{position:absolute;display:inline-flex;gap:var(--u-space-2);padding:1px var(--u-space-2);border-radius:var(--u-radius-sm);corner-shape:squircle;background:var(--u-color-text);color:var(--u-color-surface);font-size:var(--u-text-xs);white-space:nowrap;pointer-events:none}._finding_1892z_258{font-weight:var(--u-weight-semibold);color:var(--u-color-danger-subtle)}._refusal_1892z_266{font-weight:var(--u-weight-semibold)}._tooltip_1892z_270{position:absolute;z-index:1;display:flex;flex-direction:column;gap:1px;max-width:260px;padding:var(--u-space-2) var(--u-space-3);border-radius:var(--u-radius-sm);corner-shape:squircle;background:var(--u-color-surface);outline:1px solid transparent;box-shadow:var(--u-shadow-overlay);color:var(--u-color-text-secondary);font-size:var(--u-text-xs);line-height:var(--u-leading-tight);pointer-events:none;white-space:nowrap}._tooltipHead_1892z_289{color:var(--u-color-text);font-weight:var(--u-weight-semibold)}._tooltipTimes_1892z_294{color:var(--u-color-text)}._tooltip_1892z_270 ._finding_1892z_258{color:var(--u-color-danger-text)}._now_1892z_303{position:absolute;top:0;width:0;height:0;margin-left:-4px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--u-color-accent)}._barLabel_1892z_317{position:absolute;display:flex;align-items:center;padding:0 var(--u-space-1);overflow:hidden;font-size:var(--u-text-xs);line-height:var(--u-leading-tight);pointer-events:none}._barLabelText_1892z_330{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}._barLabel_1892z_317[data-on=dark]{color:var(--u-color-on-accent)}._barLabel_1892z_317[data-on=light]{color:var(--u-color-text)}@media(forced-colors:active){._grip_1892z_235{outline:2px solid CanvasText;outline-offset:-2px}._ghostLabel_1892z_245{outline:1px solid CanvasText}}}
|
|
1
|
+
@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.base{._text_1krlf_23{font-family:var(--u-font-sans);font-size:var(--u-text-md);line-height:var(--u-leading-normal);color:var(--u-color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}@media(pointer:fine){._dense_1krlf_39{--u-control-height-sm: var(--u-control-height-xs)}}._ink_1krlf_50{--u-color-text: var(--u-color-bg);--u-color-text-secondary: color-mix(in srgb, var(--u-color-bg) 75%, transparent);--u-color-text-muted: color-mix(in srgb, var(--u-color-bg) 60%, transparent)}._extent_1krlf_76{--_chars: 20;--_extra: 0;--_tracking: 0px;--_chrome: 0px;min-inline-size:0;max-inline-size:100%;contain:inline-size;contain-intrinsic-inline-size:calc((var(--_chars) + var(--_extra)) * (1ch + var(--_tracking)) + var(--_chrome))}._field_1krlf_91{caret-color:var(--u-color-accent)}._scroll_1krlf_97{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--u-color-text) 25%,transparent) transparent}._scroll_1krlf_97::-webkit-scrollbar{width:10px;height:10px}._scroll_1krlf_97::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--u-color-text) 22%,transparent);border-radius:var(--u-radius-full);border:3px solid transparent;background-clip:content-box}._scroll_1krlf_97::-webkit-scrollbar-track{background:transparent}}@layer umriss.components{._ring_1krlf_126:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}@media(pointer:coarse){._field_1krlf_91._field_1krlf_91,._fieldRoot_1krlf_146._fieldRoot_1krlf_146{font-size:16px}}._field_1krlf_91:-webkit-autofill,._field_1krlf_91:-webkit-autofill:hover,._field_1krlf_91:-webkit-autofill:focus{-webkit-box-shadow:inset 0 0 0 1000px var(--u-color-surface),0 0 0 1px var(--u-edge-color-strong);-webkit-text-fill-color:var(--u-color-text);caret-color:var(--u-color-accent)}}@layer umriss.components{._root_1892z_4,._root_1892z_4:before,._root_1892z_4:after{box-sizing:border-box}._corner_1892z_19,._corner_1892z_19:before,._corner_1892z_19:after{box-sizing:border-box}._dayBand_1892z_23,._dayBand_1892z_23:before,._dayBand_1892z_23:after{box-sizing:border-box}._tickBand_1892z_24,._tickBand_1892z_24:before,._tickBand_1892z_24:after{box-sizing:border-box}._day_1892z_23,._day_1892z_23:before,._day_1892z_23:after{box-sizing:border-box}._dayLabel_1892z_50,._dayLabel_1892z_50:before,._dayLabel_1892z_50:after{box-sizing:border-box}._tick_1892z_24,._tick_1892z_24:before,._tick_1892z_24:after{box-sizing:border-box}._tickLabel_1892z_71,._tickLabel_1892z_71:before,._tickLabel_1892z_71:after{box-sizing:border-box}._headers_1892z_79,._headers_1892z_79:before,._headers_1892z_79:after{box-sizing:border-box}._header_1892z_79,._header_1892z_79:before,._header_1892z_79:after{box-sizing:border-box}._headerLabel_1892z_97,._headerLabel_1892z_97:before,._headerLabel_1892z_97:after{box-sizing:border-box}._headerCount_1892z_134,._headerCount_1892z_134:before,._headerCount_1892z_134:after{box-sizing:border-box}._chevron_1892z_143,._chevron_1892z_143:before,._chevron_1892z_143:after{box-sizing:border-box}._plot_1892z_201,._plot_1892z_201:before,._plot_1892z_201:after{box-sizing:border-box}._focusRing_1892z_208,._focusRing_1892z_208:before,._focusRing_1892z_208:after{box-sizing:border-box}._layer_1892z_226,._layer_1892z_226:before,._layer_1892z_226:after{box-sizing:border-box}._grip_1892z_235,._grip_1892z_235:before,._grip_1892z_235:after{box-sizing:border-box}._ghostLabel_1892z_245,._ghostLabel_1892z_245:before,._ghostLabel_1892z_245:after{box-sizing:border-box}._finding_1892z_258,._finding_1892z_258:before,._finding_1892z_258:after{box-sizing:border-box}._refusal_1892z_266,._refusal_1892z_266:before,._refusal_1892z_266:after{box-sizing:border-box}._tooltip_1892z_270,._tooltip_1892z_270:before,._tooltip_1892z_270:after{box-sizing:border-box}._tooltipHead_1892z_289,._tooltipHead_1892z_289:before,._tooltipHead_1892z_289:after{box-sizing:border-box}._tooltipTimes_1892z_294,._tooltipTimes_1892z_294:before,._tooltipTimes_1892z_294:after{box-sizing:border-box}._now_1892z_303,._now_1892z_303:before,._now_1892z_303:after{box-sizing:border-box}._barLabel_1892z_317,._barLabel_1892z_317:before,._barLabel_1892z_317:after{box-sizing:border-box}._barLabelText_1892z_330,._barLabelText_1892z_330:before,._barLabelText_1892z_330:after{box-sizing:border-box}._root_1892z_4{display:grid;grid-template-rows:28px minmax(0,1fr) 28px;width:100%;font-size:var(--u-text-sm);background:var(--u-color-surface);outline:1px solid transparent;box-shadow:var(--u-edge);border-radius:var(--u-radius-md);corner-shape:squircle;overflow:hidden;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}._corner_1892z_19{background:var(--u-color-surface)}._dayBand_1892z_23,._tickBand_1892z_24{position:relative;overflow:hidden;color:var(--u-color-text-muted);font-size:var(--u-text-xs)}._dayBand_1892z_23{border-bottom:1px solid var(--u-hairline-strong)}._tickBand_1892z_24{border-top:1px solid var(--u-hairline-strong)}._day_1892z_23{position:absolute;top:0;bottom:0;border-left:1px solid var(--u-hairline-strong);overflow:hidden}._dayLabel_1892z_50{position:absolute;z-index:1;left:var(--u-space-1);padding:0 var(--u-space-1);background:var(--u-color-surface);top:50%;transform:translateY(-50%);white-space:nowrap;color:var(--u-color-text);font-weight:var(--u-weight-medium)}._tick_1892z_24{position:absolute;top:0;bottom:0;width:1px;background:var(--u-hairline)}._tickLabel_1892z_71{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);white-space:nowrap}._headers_1892z_79{position:relative;overflow:hidden;border-right:1px solid var(--u-hairline-strong)}._header_1892z_79{display:flex;align-items:center;gap:var(--u-space-2);padding-right:var(--u-space-3);border-bottom:1px solid var(--u-hairline);overflow:hidden;white-space:nowrap}._headerLabel_1892z_97{min-width:0;overflow:hidden;text-overflow:ellipsis}._header_1892z_79[data-row=lane],._header_1892z_79[data-row=miniature]{container:lane-header / size}@container lane-header (height >= 2.5rem){._headerLabel_1892z_97:not(:has(*)){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;white-space:normal;text-wrap:balance}}._header_1892z_79[data-row=groupHead],._header_1892z_79[data-row=miniature]{font-weight:var(--u-weight-medium)}._headerCount_1892z_134{flex:none;color:var(--u-color-text-muted);font-size:var(--u-text-xs);font-variant-numeric:tabular-nums}._chevron_1892z_143{flex:none;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:none;border-radius:var(--u-radius-xs);corner-shape:squircle;background:transparent;color:var(--u-color-text-secondary);cursor:pointer;transition:background-color var(--u-transition),color var(--u-transition)}._chevron_1892z_143:hover{background:var(--u-color-surface-sunken);color:var(--u-color-text)}._chevron_1892z_143:active{background:var(--u-color-surface-pressed)}._chevron_1892z_143:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._chevron_1892z_143 svg{box-sizing:border-box}._chevron_1892z_143 svg{transition:transform var(--u-transition-path)}._chevron_1892z_143 svg[data-open]{box-sizing:border-box}._chevron_1892z_143 svg[data-open]{transform:rotate(90deg)}@media(prefers-reduced-motion:reduce){._chevron_1892z_143 svg{transition:none}}._header_1892z_79[data-refused]{color:var(--u-color-text-muted)}._plot_1892z_201{position:relative;overflow:hidden;touch-action:none}._plot_1892z_201:focus{outline:none}._focusRing_1892z_208{position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:var(--u-radius-md);corner-shape:squircle;pointer-events:none}._plot_1892z_201:focus-visible>._focusRing_1892z_208{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._layer_1892z_226{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;pointer-events:none}._grip_1892z_235{position:absolute;width:9px;margin-left:-4px;border-radius:var(--u-radius-xs);corner-shape:squircle;background:var(--u-color-surface);box-shadow:inset 0 0 0 1.5px var(--u-color-text);cursor:ew-resize}._ghostLabel_1892z_245{position:absolute;display:inline-flex;gap:var(--u-space-2);padding:1px var(--u-space-2);border-radius:var(--u-radius-sm);corner-shape:squircle;background:var(--u-color-text);color:var(--u-color-surface);font-size:var(--u-text-xs);white-space:nowrap;pointer-events:none}._finding_1892z_258{font-weight:var(--u-weight-semibold);color:var(--u-color-danger-subtle)}._refusal_1892z_266{font-weight:var(--u-weight-semibold)}._tooltip_1892z_270{position:absolute;z-index:1;display:flex;flex-direction:column;gap:1px;max-width:260px;padding:var(--u-space-2) var(--u-space-3);border-radius:var(--u-radius-sm);corner-shape:squircle;background:var(--u-color-surface);outline:1px solid transparent;box-shadow:var(--u-shadow-overlay);color:var(--u-color-text-secondary);font-size:var(--u-text-xs);line-height:var(--u-leading-tight);pointer-events:none;white-space:nowrap}._tooltipHead_1892z_289{color:var(--u-color-text);font-weight:var(--u-weight-semibold)}._tooltipTimes_1892z_294{color:var(--u-color-text)}._tooltip_1892z_270 ._finding_1892z_258{color:var(--u-color-danger-text)}._now_1892z_303{position:absolute;top:0;width:0;height:0;margin-left:-4px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--u-color-accent)}._barLabel_1892z_317{position:absolute;display:flex;align-items:center;padding:0 var(--u-space-1);overflow:hidden;font-size:var(--u-text-xs);line-height:var(--u-leading-tight);pointer-events:none}._barLabelText_1892z_330{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}._barLabel_1892z_317[data-on=dark]{color:var(--u-color-on-accent)}._barLabel_1892z_317[data-on=light]{color:var(--u-color-text)}@media(forced-colors:active){._grip_1892z_235{outline:2px solid CanvasText;outline-offset:-2px}._ghostLabel_1892z_245{outline:1px solid CanvasText}}}
|