@umriss-ui/schedule 0.43.0 → 0.45.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 +28 -0
- package/README.md +14 -2
- package/dist/index.d.ts +8 -37
- package/dist/schedule.css +1 -1
- package/dist/schedule.js +1103 -1079
- package/docs/llms-full.md +135 -45
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,34 @@ moves from here under the rule above.
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
+
## 0.45.0 – A plan in the plant's time (Oct. 2026)
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **The schedule follows the time zone named in core's formats** (ADR-0076): the day and fine bands, the snap raster of a drag or a key move, and today are the zone's, and the zone's name stands once above the lane headers and in the plot's description where the reader's own zone is another. `snapTime` takes the zone as an optional last argument.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- **On the day the clocks go back, the time axis follows the clock change** in the reader's zone as in a named one: a two-hour step stays on even hours, and a time inside the doubled hour carries its offset (`02:30 GMT+1`) in the band, the tooltip, the ghost and the summary. Today covers the whole 25-hour day.
|
|
30
|
+
- Migration: none needed; only a plan across a clock change looks different.
|
|
31
|
+
- **The peer ranges on core and charts move to `^0.45.0`.**
|
|
32
|
+
- Migration: install the 0.45 versions of `@umriss-ui/core` and `@umriss-ui/charts` beside it.
|
|
33
|
+
|
|
34
|
+
## 0.44.0 – Malformed data says so, and the handle goes (Oct. 2026)
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- **Malformed data warns once per cause in development:** a span that does not end after it starts, an item on an undeclared lane, an unknown task or dependency end, an id that stands twice. The checks run only in development.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- **`ScheduleHandle` and the handle ref are removed;** 0.43.0 deprecated them. A `Schedule` ref is typed `HTMLDivElement`, and `positionAt`, `clientPointOf` and `visibleDomain` are on `useSchedule`'s return.
|
|
43
|
+
- Migration: replace `ref.current.positionAt(x, y)` with `positionAt(x, y)` from `const { positionAt } = useSchedule()`, and the same for `clientPointOf` and `visibleDomain`; type a ref as `HTMLDivElement`.
|
|
44
|
+
- **`ariaLabel` on `Schedule` is removed;** 0.43.0 renamed it `aria-label`.
|
|
45
|
+
- Migration: write `aria-label` (TypeScript flags every use of `ariaLabel`).
|
|
46
|
+
- **The peer ranges on core and charts move to `^0.44.0`.**
|
|
47
|
+
- Migration: install the 0.44 versions of `@umriss-ui/core` and `@umriss-ui/charts` beside it.
|
|
48
|
+
|
|
21
49
|
## 0.43.0 – A schedule that fills its frame, and takes a finger (Oct. 2026)
|
|
22
50
|
|
|
23
51
|
### Added
|
package/README.md
CHANGED
|
@@ -60,6 +60,8 @@ export function Plan() {
|
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
Malformed data - a subtask that does not end after it starts, an item on a lane no `Lane` declares, a dependency naming no subtask, an id that stands twice - warns in development, once per cause, and is left out in production. An application with imported data checks it where it imports it.
|
|
64
|
+
|
|
63
65
|
## Editing is controlled
|
|
64
66
|
|
|
65
67
|
The schedule draws the data it is given and changes none of it (ADR-0023). A
|
|
@@ -183,11 +185,21 @@ pointer's tooltip names it by label (or id) and time; the keys walk to it in
|
|
|
183
185
|
time order among the work of its lane, and the live region reads its lane,
|
|
184
186
|
label and time.
|
|
185
187
|
|
|
188
|
+
## The plant's time zone
|
|
189
|
+
|
|
190
|
+
The schedule follows the `timeZone` of core's formats (`<LanguageProvider formats={{ timeZone: "Europe/Berlin" }}>`);
|
|
191
|
+
it takes no prop of its own. The fine band reads the zone's hours, the day band holds the zone's days, "today"
|
|
192
|
+
is the zone's, and the now line, an instant, does not move. A `snap` raster is laid on the zone's time: eight
|
|
193
|
+
hours offset by six snap to 06:00, 14:00 and 22:00 there on both sides of a clock change (`snapTime(time,
|
|
194
|
+
raster, timeZone?)` takes the zone as its last argument). A time inside the hour a clock change doubles carries
|
|
195
|
+
its offset (`02:30 GMT+1`), in the band, the tooltip, the ghost and the summary. Where the reader's zone is
|
|
196
|
+
another, the zone's name stands once above the lane headers and in the plot's description (core's
|
|
197
|
+
`useTimeZoneLabel`); without a named zone, nothing changes.
|
|
198
|
+
|
|
186
199
|
## Not yet
|
|
187
200
|
|
|
188
201
|
What the schedule does not do today, and waits for a caller who needs it (what
|
|
189
|
-
it never does stands in ADR-0032)
|
|
190
|
-
plant's zone is not yet offered (ADR-0060).
|
|
202
|
+
it never does stands in ADR-0032).
|
|
191
203
|
|
|
192
204
|
* **Stacked overlap** — overlapping subtasks packed into sub-lanes on request;
|
|
193
205
|
today an overlap is always drawn offset, as the finding it is.
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { CalendarInput } from '@umriss-ui/charts';
|
|
|
2
2
|
import { HTMLAttributes } from 'react';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
4
|
import { Ref } from 'react';
|
|
5
|
-
import { RefObject } from 'react';
|
|
6
5
|
|
|
7
6
|
/** The subtask as the intent asks for it. An intent for another subtask leaves
|
|
8
7
|
it as it is. */
|
|
@@ -346,25 +345,6 @@ export declare interface ResolvedAppearance {
|
|
|
346
345
|
bounded number of pushes instead of running on. */
|
|
347
346
|
export declare function ripple(subtasks: readonly Subtask[], dependencies: readonly Dependency[], intent: Intent): MoveIntent[];
|
|
348
347
|
|
|
349
|
-
/** What a schedule offers a caller imperatively: the arithmetic between a
|
|
350
|
-
point on the screen and a time on a lane. Everything else is props.
|
|
351
|
-
@deprecated since 0.43 - use the functions on `useSchedule`'s return. */
|
|
352
|
-
export declare interface ScheduleHandle {
|
|
353
|
-
/** The time and the lane at a client point, or null outside the plot. */
|
|
354
|
-
positionAt: (clientX: number, clientY: number) => {
|
|
355
|
-
time: number;
|
|
356
|
-
lane: string | null;
|
|
357
|
-
} | null;
|
|
358
|
-
/** The client point of a time - on the middle of a lane where one is named -
|
|
359
|
-
or null while the schedule is not on screen. */
|
|
360
|
-
clientPointOf: (time: number, lane?: string) => {
|
|
361
|
-
x: number;
|
|
362
|
-
y: number;
|
|
363
|
-
} | null;
|
|
364
|
-
/** The visible span, as two wall-clock instants. */
|
|
365
|
-
visibleDomain: () => readonly [number, number];
|
|
366
|
-
}
|
|
367
|
-
|
|
368
348
|
/** What a pointer is on. */
|
|
369
349
|
export declare type ScheduleHit = {
|
|
370
350
|
readonly kind: "subtask";
|
|
@@ -416,10 +396,8 @@ export declare interface ScheduleOptions {
|
|
|
416
396
|
}
|
|
417
397
|
|
|
418
398
|
declare interface ScheduleOwnProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "aria-label"> {
|
|
419
|
-
/** Receives the root element.
|
|
420
|
-
|
|
421
|
-
functions. */
|
|
422
|
-
ref?: Ref<HTMLDivElement> | RefObject<ScheduleHandle | null> | undefined;
|
|
399
|
+
/** Receives the root element. */
|
|
400
|
+
ref?: Ref<HTMLDivElement> | undefined;
|
|
423
401
|
/** Height in CSS pixels, both bands included, fixed. Left out, the schedule
|
|
424
402
|
fills its frame - a stretched grid cell, a card the grid stretches, a
|
|
425
403
|
container of definite height - and never goes below 400 px, which is also
|
|
@@ -593,17 +571,10 @@ export declare interface ScheduleParts {
|
|
|
593
571
|
reads itself. `ref`, `className`, `style` and the rest reach the root; the
|
|
594
572
|
name (`aria-label`, `aria-labelledby`) reaches the figure root and the plot,
|
|
595
573
|
and a `aria-describedby` of yours is joined to the plot's summary. */
|
|
596
|
-
export declare type ScheduleProps = ScheduleOwnProps &
|
|
574
|
+
export declare type ScheduleProps = ScheduleOwnProps & {
|
|
597
575
|
/** What the schedule shows, for a screen reader: "Plan of week 38". */
|
|
598
576
|
"aria-label": string;
|
|
599
|
-
|
|
600
|
-
ariaLabel?: string;
|
|
601
|
-
} | {
|
|
602
|
-
"aria-label"?: undefined;
|
|
603
|
-
/** What the schedule shows, for a screen reader.
|
|
604
|
-
@deprecated since 0.43 - use `aria-label`. */
|
|
605
|
-
ariaLabel: string;
|
|
606
|
-
});
|
|
577
|
+
};
|
|
607
578
|
|
|
608
579
|
/** What a tooltip is about: the hovered subtask or dependency, with what the
|
|
609
580
|
schedule knows about it. */
|
|
@@ -671,10 +642,10 @@ export declare interface SnapRaster {
|
|
|
671
642
|
readonly offset: number;
|
|
672
643
|
}
|
|
673
644
|
|
|
674
|
-
/** `time` onto the nearest line of the raster in
|
|
675
|
-
|
|
676
|
-
stays as it is. */
|
|
677
|
-
export declare function snapTime(time: number, raster: number | SnapRaster): number;
|
|
645
|
+
/** `time` onto the nearest line of the raster in the zone's time, the reader's
|
|
646
|
+
unless one is named - a step alone starts at the zone's midnight. A step of
|
|
647
|
+
zero or less is no raster: the time stays as it is. */
|
|
648
|
+
export declare function snapTime(time: number, raster: number | SnapRaster, timeZone?: string): number;
|
|
678
649
|
|
|
679
650
|
/** Stretch the main time at one or both of its edges. */
|
|
680
651
|
export declare interface StretchIntent {
|
package/dist/schedule.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.base{._text_18806_22{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_18806_38{--u-control-height-sm: var(--u-control-height-xs)}}._ink_18806_49{--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_18806_75{--_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_18806_90{caret-color:var(--u-color-accent)}._scroll_18806_96{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--u-color-text) 25%,transparent) transparent}._scroll_18806_96::-webkit-scrollbar{width:10px;height:10px}._scroll_18806_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_18806_96::-webkit-scrollbar-track{background:transparent}}@layer umriss.components{._ring_18806_125:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}@media(pointer:coarse){._field_18806_90._field_18806_90,._fieldRoot_18806_145._fieldRoot_18806_145{font-size:16px}}._field_18806_90:-webkit-autofill,._field_18806_90:-webkit-autofill:hover,._field_18806_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.components{._root_mm9nj_4,._root_mm9nj_4:before,._root_mm9nj_4:after{box-sizing:border-box}._corner_mm9nj_19,._corner_mm9nj_19:before,._corner_mm9nj_19:after{box-sizing:border-box}._dayBand_mm9nj_23,._dayBand_mm9nj_23:before,._dayBand_mm9nj_23:after{box-sizing:border-box}._tickBand_mm9nj_24,._tickBand_mm9nj_24:before,._tickBand_mm9nj_24:after{box-sizing:border-box}._day_mm9nj_23,._day_mm9nj_23:before,._day_mm9nj_23:after{box-sizing:border-box}._dayLabel_mm9nj_50,._dayLabel_mm9nj_50:before,._dayLabel_mm9nj_50:after{box-sizing:border-box}._tick_mm9nj_24,._tick_mm9nj_24:before,._tick_mm9nj_24:after{box-sizing:border-box}._tickLabel_mm9nj_71,._tickLabel_mm9nj_71:before,._tickLabel_mm9nj_71:after{box-sizing:border-box}._headers_mm9nj_81,._headers_mm9nj_81:before,._headers_mm9nj_81:after{box-sizing:border-box}._header_mm9nj_81,._header_mm9nj_81:before,._header_mm9nj_81:after{box-sizing:border-box}._headerLabel_mm9nj_100,._headerLabel_mm9nj_100:before,._headerLabel_mm9nj_100:after{box-sizing:border-box}._headerCount_mm9nj_136,._headerCount_mm9nj_136:before,._headerCount_mm9nj_136:after{box-sizing:border-box}._chevron_mm9nj_145,._chevron_mm9nj_145:before,._chevron_mm9nj_145:after{box-sizing:border-box}._plot_mm9nj_223,._plot_mm9nj_223:before,._plot_mm9nj_223:after{box-sizing:border-box}._focusRing_mm9nj_237,._focusRing_mm9nj_237:before,._focusRing_mm9nj_237:after{box-sizing:border-box}._layer_mm9nj_255,._layer_mm9nj_255:before,._layer_mm9nj_255:after{box-sizing:border-box}._grip_mm9nj_282,._grip_mm9nj_282:before,._grip_mm9nj_282:after{box-sizing:border-box}._ghostLabel_mm9nj_292,._ghostLabel_mm9nj_292:before,._ghostLabel_mm9nj_292:after{box-sizing:border-box}._finding_mm9nj_305,._finding_mm9nj_305:before,._finding_mm9nj_305:after{box-sizing:border-box}._refusal_mm9nj_313,._refusal_mm9nj_313:before,._refusal_mm9nj_313:after{box-sizing:border-box}._tooltip_mm9nj_317,._tooltip_mm9nj_317:before,._tooltip_mm9nj_317:after{box-sizing:border-box}._tooltipHead_mm9nj_336,._tooltipHead_mm9nj_336:before,._tooltipHead_mm9nj_336:after{box-sizing:border-box}._tooltipTimes_mm9nj_341,._tooltipTimes_mm9nj_341:before,._tooltipTimes_mm9nj_341:after{box-sizing:border-box}._now_mm9nj_350,._now_mm9nj_350:before,._now_mm9nj_350:after{box-sizing:border-box}._barLabel_mm9nj_364,._barLabel_mm9nj_364:before,._barLabel_mm9nj_364:after{box-sizing:border-box}._barLabelText_mm9nj_377,._barLabelText_mm9nj_377:before,._barLabelText_mm9nj_377:after{box-sizing:border-box}._root_mm9nj_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;user-select:none}._corner_mm9nj_19{background:var(--u-color-surface)}._dayBand_mm9nj_23,._tickBand_mm9nj_24{position:relative;overflow:hidden;color:var(--u-color-text-muted);font-size:var(--u-text-xs)}._dayBand_mm9nj_23{border-bottom:1px solid var(--u-hairline-strong)}._tickBand_mm9nj_24{border-top:1px solid var(--u-hairline-strong)}._day_mm9nj_23{position:absolute;top:0;bottom:0;border-left:1px solid var(--u-hairline-strong);overflow:hidden}._dayLabel_mm9nj_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_mm9nj_24{position:absolute;top:0;bottom:0;width:1px;background:var(--u-hairline)}._tickLabel_mm9nj_71{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);white-space:nowrap}._headers_mm9nj_81{contain:size;position:relative;overflow:hidden;border-right:1px solid var(--u-hairline-strong)}._header_mm9nj_81{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_mm9nj_100{min-width:0;overflow:hidden;text-overflow:ellipsis}._header_mm9nj_81[data-row=lane],._header_mm9nj_81[data-row=miniature]{container:lane-header / size}@container lane-header (height >= 2.5rem){._headerLabel_mm9nj_100:not(:has(*)){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;white-space:normal;text-wrap:balance}}._header_mm9nj_81[data-row=groupHead],._header_mm9nj_81[data-row=miniature]{font-weight:var(--u-weight-medium)}._headerCount_mm9nj_136{flex:none;color:var(--u-color-text-muted);font-size:var(--u-text-xs);font-variant-numeric:tabular-nums}._chevron_mm9nj_145{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_mm9nj_145:hover{background:var(--u-color-surface-sunken);color:var(--u-color-text)}._chevron_mm9nj_145:active{background:var(--u-color-surface-pressed)}._chevron_mm9nj_145:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._chevron_mm9nj_145 svg{box-sizing:border-box}._chevron_mm9nj_145 svg{transition:transform var(--u-transition-path)}._chevron_mm9nj_145 svg[data-open]{box-sizing:border-box}._chevron_mm9nj_145 svg[data-open]{transform:rotate(90deg)}@media(pointer:coarse){._chevron_mm9nj_145{position:relative}._chevron_mm9nj_145:after{content:"";position:absolute;inset:-4px}._header_mm9nj_81[data-row=groupHead]{overflow:clip;overflow-clip-margin:2px}}@media(prefers-reduced-motion:reduce){._chevron_mm9nj_145 svg{transition:none}}._header_mm9nj_81[data-refused]{color:var(--u-color-text-muted)}._plot_mm9nj_223{contain:size;position:relative;overflow:hidden;touch-action:none;-webkit-touch-callout:none;user-select:none}._plot_mm9nj_223:focus{outline:none}._focusRing_mm9nj_237{position:absolute;inset:2px;border-radius:var(--u-radius-md);corner-shape:squircle;pointer-events:none}._plot_mm9nj_223:focus-visible>._focusRing_mm9nj_237{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._layer_mm9nj_255{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}._plot_mm9nj_223[data-stale]{pointer-events:none}._plot_mm9nj_223[data-stale]>:not(._focusRing_mm9nj_237){opacity:.5;transition:opacity var(--u-transition, .12s cubic-bezier(.22, 1, .36, 1)) var(--u-delay-stale, .2s)}@media(prefers-reduced-motion:reduce){._plot_mm9nj_223[data-stale]>:not(._focusRing_mm9nj_237){transition-duration:0s}}._grip_mm9nj_282{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_mm9nj_292{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_mm9nj_305{font-weight:var(--u-weight-semibold);color:var(--u-color-danger-subtle)}._refusal_mm9nj_313{font-weight:var(--u-weight-semibold)}._tooltip_mm9nj_317{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_mm9nj_336{color:var(--u-color-text);font-weight:var(--u-weight-semibold)}._tooltipTimes_mm9nj_341{color:var(--u-color-text)}._tooltip_mm9nj_317 ._finding_mm9nj_305{color:var(--u-color-danger-text)}._now_mm9nj_350{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_mm9nj_364{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_mm9nj_377{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}._barLabel_mm9nj_364[data-on=dark]{color:var(--u-color-on-accent)}._barLabel_mm9nj_364[data-on=light]{color:var(--u-color-text)}@media(forced-colors:active){._grip_mm9nj_282{outline:2px solid CanvasText;outline-offset:-2px}._ghostLabel_mm9nj_292{outline:1px solid CanvasText}}}
|
|
1
|
+
@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.base{._text_18806_22{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_18806_38{--u-control-height-sm: var(--u-control-height-xs)}}._ink_18806_49{--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_18806_75{--_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_18806_90{caret-color:var(--u-color-accent)}._scroll_18806_96{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--u-color-text) 25%,transparent) transparent}._scroll_18806_96::-webkit-scrollbar{width:10px;height:10px}._scroll_18806_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_18806_96::-webkit-scrollbar-track{background:transparent}}@layer umriss.components{._ring_18806_125:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}@media(pointer:coarse){._field_18806_90._field_18806_90,._fieldRoot_18806_145._fieldRoot_18806_145{font-size:16px}}._field_18806_90:-webkit-autofill,._field_18806_90:-webkit-autofill:hover,._field_18806_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.components{._root_q0w8s_4,._root_q0w8s_4:before,._root_q0w8s_4:after{box-sizing:border-box}._corner_q0w8s_19,._corner_q0w8s_19:before,._corner_q0w8s_19:after{box-sizing:border-box}._zoneLabel_q0w8s_24,._zoneLabel_q0w8s_24:before,._zoneLabel_q0w8s_24:after{box-sizing:border-box}._dayBand_q0w8s_40,._dayBand_q0w8s_40:before,._dayBand_q0w8s_40:after{box-sizing:border-box}._tickBand_q0w8s_41,._tickBand_q0w8s_41:before,._tickBand_q0w8s_41:after{box-sizing:border-box}._day_q0w8s_40,._day_q0w8s_40:before,._day_q0w8s_40:after{box-sizing:border-box}._dayLabel_q0w8s_67,._dayLabel_q0w8s_67:before,._dayLabel_q0w8s_67:after{box-sizing:border-box}._tick_q0w8s_41,._tick_q0w8s_41:before,._tick_q0w8s_41:after{box-sizing:border-box}._tickLabel_q0w8s_88,._tickLabel_q0w8s_88:before,._tickLabel_q0w8s_88:after{box-sizing:border-box}._headers_q0w8s_98,._headers_q0w8s_98:before,._headers_q0w8s_98:after{box-sizing:border-box}._header_q0w8s_98,._header_q0w8s_98:before,._header_q0w8s_98:after{box-sizing:border-box}._headerLabel_q0w8s_117,._headerLabel_q0w8s_117:before,._headerLabel_q0w8s_117:after{box-sizing:border-box}._headerCount_q0w8s_153,._headerCount_q0w8s_153:before,._headerCount_q0w8s_153:after{box-sizing:border-box}._chevron_q0w8s_162,._chevron_q0w8s_162:before,._chevron_q0w8s_162:after{box-sizing:border-box}._plot_q0w8s_240,._plot_q0w8s_240:before,._plot_q0w8s_240:after{box-sizing:border-box}._focusRing_q0w8s_254,._focusRing_q0w8s_254:before,._focusRing_q0w8s_254:after{box-sizing:border-box}._layer_q0w8s_272,._layer_q0w8s_272:before,._layer_q0w8s_272:after{box-sizing:border-box}._grip_q0w8s_299,._grip_q0w8s_299:before,._grip_q0w8s_299:after{box-sizing:border-box}._ghostLabel_q0w8s_309,._ghostLabel_q0w8s_309:before,._ghostLabel_q0w8s_309:after{box-sizing:border-box}._finding_q0w8s_322,._finding_q0w8s_322:before,._finding_q0w8s_322:after{box-sizing:border-box}._refusal_q0w8s_330,._refusal_q0w8s_330:before,._refusal_q0w8s_330:after{box-sizing:border-box}._tooltip_q0w8s_334,._tooltip_q0w8s_334:before,._tooltip_q0w8s_334:after{box-sizing:border-box}._tooltipHead_q0w8s_353,._tooltipHead_q0w8s_353:before,._tooltipHead_q0w8s_353:after{box-sizing:border-box}._tooltipTimes_q0w8s_358,._tooltipTimes_q0w8s_358:before,._tooltipTimes_q0w8s_358:after{box-sizing:border-box}._now_q0w8s_367,._now_q0w8s_367:before,._now_q0w8s_367:after{box-sizing:border-box}._barLabel_q0w8s_381,._barLabel_q0w8s_381:before,._barLabel_q0w8s_381:after{box-sizing:border-box}._barLabelText_q0w8s_394,._barLabelText_q0w8s_394:before,._barLabelText_q0w8s_394:after{box-sizing:border-box}._root_q0w8s_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;user-select:none}._corner_q0w8s_19{background:var(--u-color-surface)}._corner_q0w8s_19:has(._zoneLabel_q0w8s_24){display:flex;align-items:center}._zoneLabel_q0w8s_24{display:block;min-width:0;padding:0 var(--u-space-2);overflow:hidden;color:var(--u-color-text-muted);font-size:var(--u-text-xs);text-overflow:ellipsis;white-space:nowrap}._dayBand_q0w8s_40,._tickBand_q0w8s_41{position:relative;overflow:hidden;color:var(--u-color-text-muted);font-size:var(--u-text-xs)}._dayBand_q0w8s_40{border-bottom:1px solid var(--u-hairline-strong)}._tickBand_q0w8s_41{border-top:1px solid var(--u-hairline-strong)}._day_q0w8s_40{position:absolute;top:0;bottom:0;border-left:1px solid var(--u-hairline-strong);overflow:hidden}._dayLabel_q0w8s_67{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_q0w8s_41{position:absolute;top:0;bottom:0;width:1px;background:var(--u-hairline)}._tickLabel_q0w8s_88{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);white-space:nowrap}._headers_q0w8s_98{contain:size;position:relative;overflow:hidden;border-right:1px solid var(--u-hairline-strong)}._header_q0w8s_98{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_q0w8s_117{min-width:0;overflow:hidden;text-overflow:ellipsis}._header_q0w8s_98[data-row=lane],._header_q0w8s_98[data-row=miniature]{container:lane-header / size}@container lane-header (height >= 2.5rem){._headerLabel_q0w8s_117:not(:has(*)){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;white-space:normal;text-wrap:balance}}._header_q0w8s_98[data-row=groupHead],._header_q0w8s_98[data-row=miniature]{font-weight:var(--u-weight-medium)}._headerCount_q0w8s_153{flex:none;color:var(--u-color-text-muted);font-size:var(--u-text-xs);font-variant-numeric:tabular-nums}._chevron_q0w8s_162{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_q0w8s_162:hover{background:var(--u-color-surface-sunken);color:var(--u-color-text)}._chevron_q0w8s_162:active{background:var(--u-color-surface-pressed)}._chevron_q0w8s_162:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._chevron_q0w8s_162 svg{box-sizing:border-box}._chevron_q0w8s_162 svg{transition:transform var(--u-transition-path)}._chevron_q0w8s_162 svg[data-open]{box-sizing:border-box}._chevron_q0w8s_162 svg[data-open]{transform:rotate(90deg)}@media(pointer:coarse){._chevron_q0w8s_162{position:relative}._chevron_q0w8s_162:after{content:"";position:absolute;inset:-4px}._header_q0w8s_98[data-row=groupHead]{overflow:clip;overflow-clip-margin:2px}}@media(prefers-reduced-motion:reduce){._chevron_q0w8s_162 svg{transition:none}}._header_q0w8s_98[data-refused]{color:var(--u-color-text-muted)}._plot_q0w8s_240{contain:size;position:relative;overflow:hidden;touch-action:none;-webkit-touch-callout:none;user-select:none}._plot_q0w8s_240:focus{outline:none}._focusRing_q0w8s_254{position:absolute;inset:2px;border-radius:var(--u-radius-md);corner-shape:squircle;pointer-events:none}._plot_q0w8s_240:focus-visible>._focusRing_q0w8s_254{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._layer_q0w8s_272{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}._plot_q0w8s_240[data-stale]{pointer-events:none}._plot_q0w8s_240[data-stale]>:not(._focusRing_q0w8s_254){opacity:.5;transition:opacity var(--u-transition, .12s cubic-bezier(.22, 1, .36, 1)) var(--u-delay-stale, .2s)}@media(prefers-reduced-motion:reduce){._plot_q0w8s_240[data-stale]>:not(._focusRing_q0w8s_254){transition-duration:0s}}._grip_q0w8s_299{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_q0w8s_309{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_q0w8s_322{font-weight:var(--u-weight-semibold);color:var(--u-color-danger-subtle)}._refusal_q0w8s_330{font-weight:var(--u-weight-semibold)}._tooltip_q0w8s_334{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_q0w8s_353{color:var(--u-color-text);font-weight:var(--u-weight-semibold)}._tooltipTimes_q0w8s_358{color:var(--u-color-text)}._tooltip_q0w8s_334 ._finding_q0w8s_322{color:var(--u-color-danger-text)}._now_q0w8s_367{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_q0w8s_381{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_q0w8s_394{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}._barLabel_q0w8s_381[data-on=dark]{color:var(--u-color-on-accent)}._barLabel_q0w8s_381[data-on=light]{color:var(--u-color-text)}@media(forced-colors:active){._grip_q0w8s_299{outline:2px solid CanvasText;outline-offset:-2px}._ghostLabel_q0w8s_309{outline:1px solid CanvasText}}}
|