@sakuzu/maplibre-gl-draw-ui 1.0.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 +78 -0
- package/LICENSE +661 -0
- package/README.md +267 -0
- package/THIRD_PARTY_NOTICES.md +350 -0
- package/dist/controls.d.ts +36 -0
- package/dist/index.d.ts +96 -0
- package/dist/index.js +15336 -0
- package/dist/index.js.map +1 -0
- package/dist/inspector/attributes.d.ts +46 -0
- package/dist/inspector/measure.d.ts +25 -0
- package/dist/inspector/operations.d.ts +44 -0
- package/dist/inspector/sections.d.ts +20 -0
- package/dist/inspector/style.d.ts +57 -0
- package/dist/inspector/types.d.ts +121 -0
- package/dist/inspector/view.d.ts +84 -0
- package/dist/layers/legend.d.ts +36 -0
- package/dist/layers/move.d.ts +30 -0
- package/dist/layers/tree.d.ts +87 -0
- package/dist/locales/en.d.ts +3 -0
- package/dist/locales/ja.d.ts +3 -0
- package/dist/maplibre-gl-draw-ui.js +13988 -0
- package/dist/maplibre-gl-draw-ui.js.map +1 -0
- package/dist/messages.d.ts +211 -0
- package/dist/padding.d.ts +33 -0
- package/dist/shortcuts.d.ts +7 -0
- package/dist/store.d.ts +21 -0
- package/dist/style.css +3 -0
- package/dist/theme.d.ts +23 -0
- package/dist/tools.d.ts +56 -0
- package/dist/types.d.ts +237 -0
- package/package.json +88 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/** The words of the interface */
|
|
2
|
+
export interface Messages {
|
|
3
|
+
/** The name of the toolbar, read by assistive technology */
|
|
4
|
+
toolbar: string;
|
|
5
|
+
/** The names of the built-in tools */
|
|
6
|
+
select: string;
|
|
7
|
+
point: string;
|
|
8
|
+
line: string;
|
|
9
|
+
polygon: string;
|
|
10
|
+
circle: string;
|
|
11
|
+
freehand: string;
|
|
12
|
+
image: string;
|
|
13
|
+
/** The delete button of the toolbar */
|
|
14
|
+
delete: string;
|
|
15
|
+
/** The snapping switch of the toolbar */
|
|
16
|
+
snapping: string;
|
|
17
|
+
/** In the list of the keyboard shortcuts: the heading of the tools and of the editing keys */
|
|
18
|
+
toolsGroup: string;
|
|
19
|
+
editGroup: string;
|
|
20
|
+
/** In the list of the keyboard shortcuts: what Delete and Backspace do */
|
|
21
|
+
deleteSelection: string;
|
|
22
|
+
/** The trigger of the menu that holds the tools that do not fit */
|
|
23
|
+
more: string;
|
|
24
|
+
/** The title of the list of the keyboard shortcuts */
|
|
25
|
+
keyboardShortcuts: string;
|
|
26
|
+
/** The close and back buttons of a dialog */
|
|
27
|
+
close: string;
|
|
28
|
+
back: string;
|
|
29
|
+
/** The scrim that closes the panels floating over the map */
|
|
30
|
+
closePanes: string;
|
|
31
|
+
/** The handles that resize a dock and a sheet */
|
|
32
|
+
dockHeight: string;
|
|
33
|
+
sheetHeight: string;
|
|
34
|
+
/** The tab of the layer panel, and the name of its tree */
|
|
35
|
+
layers: string;
|
|
36
|
+
/** The tab of the legend */
|
|
37
|
+
legend: string;
|
|
38
|
+
/** The items of the add menu of the layer panel */
|
|
39
|
+
newLayer: string;
|
|
40
|
+
newGroup: string;
|
|
41
|
+
/** The mark of the layer that drawn features go into */
|
|
42
|
+
activeLayer: string;
|
|
43
|
+
/** In the list of the keyboard shortcuts: the heading of the panels, and the key of the left one */
|
|
44
|
+
panelsGroup: string;
|
|
45
|
+
toggleLayers: string;
|
|
46
|
+
/** The names of the types that have no tool, for a feature without a name */
|
|
47
|
+
multiPoint: string;
|
|
48
|
+
multiLine: string;
|
|
49
|
+
multiPolygon: string;
|
|
50
|
+
/**
|
|
51
|
+
* The labels of the legend that are not values of the data: every feature, the features the
|
|
52
|
+
* rule does not resolve, and the classes of a graduated rule, with `{lower}` and `{upper}` for
|
|
53
|
+
* their bounds
|
|
54
|
+
*/
|
|
55
|
+
legendAll: string;
|
|
56
|
+
legendOther: string;
|
|
57
|
+
legendBelow: string;
|
|
58
|
+
legendAtLeast: string;
|
|
59
|
+
legendRange: string;
|
|
60
|
+
/** What the legend shows when no layer has a style rule */
|
|
61
|
+
noLegend: string;
|
|
62
|
+
/** In the layer tree of kata: the eye, the lock, the name's input, the add button and the chevron */
|
|
63
|
+
hide: string;
|
|
64
|
+
show: string;
|
|
65
|
+
lock: string;
|
|
66
|
+
unlock: string;
|
|
67
|
+
rename: string;
|
|
68
|
+
add: string;
|
|
69
|
+
expand: string;
|
|
70
|
+
collapse: string;
|
|
71
|
+
/** The inspector: its name, read by assistive technology, and what it says with nothing selected */
|
|
72
|
+
inspector: string;
|
|
73
|
+
nothingSelected: string;
|
|
74
|
+
nothingSelectedNote: string;
|
|
75
|
+
/** The language tag the numbers of the inspector are written in (Intl.NumberFormat) */
|
|
76
|
+
numberLocale: string;
|
|
77
|
+
/** The tabs of the inspector of a feature; the first is also the title of the style's section */
|
|
78
|
+
styleTab: string;
|
|
79
|
+
attributesTab: string;
|
|
80
|
+
/** The row of the description of a feature, and its action while it is empty */
|
|
81
|
+
description: string;
|
|
82
|
+
addDescription: string;
|
|
83
|
+
/** The button that removes the style of the features, back to the layer rule and the defaults */
|
|
84
|
+
resetStyle: string;
|
|
85
|
+
/** The names of the fields of the style */
|
|
86
|
+
styleFillColor: string;
|
|
87
|
+
styleFillOpacity: string;
|
|
88
|
+
styleStrokeColor: string;
|
|
89
|
+
styleStrokeWidth: string;
|
|
90
|
+
styleStrokeOpacity: string;
|
|
91
|
+
styleLineStyle: string;
|
|
92
|
+
stylePointColor: string;
|
|
93
|
+
stylePointRadius: string;
|
|
94
|
+
stylePointShape: string;
|
|
95
|
+
stylePointOpacity: string;
|
|
96
|
+
stylePointStrokeColor: string;
|
|
97
|
+
stylePointStrokeWidth: string;
|
|
98
|
+
styleImageOpacity: string;
|
|
99
|
+
/** The choices of the line style and of the shape of a point */
|
|
100
|
+
lineSolid: string;
|
|
101
|
+
lineDashed: string;
|
|
102
|
+
lineDotted: string;
|
|
103
|
+
shapeCircle: string;
|
|
104
|
+
shapeSquare: string;
|
|
105
|
+
shapeTriangle: string;
|
|
106
|
+
shapeStar: string;
|
|
107
|
+
/** The names of the measurements */
|
|
108
|
+
measureLongitude: string;
|
|
109
|
+
measureLatitude: string;
|
|
110
|
+
measureLength: string;
|
|
111
|
+
measureArea: string;
|
|
112
|
+
measurePerimeter: string;
|
|
113
|
+
measureRadius: string;
|
|
114
|
+
measurePoints: string;
|
|
115
|
+
/** The names of a layer and of a group */
|
|
116
|
+
typeLayer: string;
|
|
117
|
+
typeGroup: string;
|
|
118
|
+
/** What the inspector says of a feature this client hides */
|
|
119
|
+
hiddenState: string;
|
|
120
|
+
/** The title of a selection of several things; {count} is their number */
|
|
121
|
+
selectedCount: string;
|
|
122
|
+
/** The actions on a selection */
|
|
123
|
+
groupAction: string;
|
|
124
|
+
ungroupAction: string;
|
|
125
|
+
/** The operations on features, and the title of their section */
|
|
126
|
+
operations: string;
|
|
127
|
+
opUnion: string;
|
|
128
|
+
opIntersection: string;
|
|
129
|
+
opDifference: string;
|
|
130
|
+
opSplit: string;
|
|
131
|
+
opBuffer: string;
|
|
132
|
+
/** The dialog of the buffer */
|
|
133
|
+
bufferDescription: string;
|
|
134
|
+
bufferDistance: string;
|
|
135
|
+
bufferUnit: string;
|
|
136
|
+
bufferSegments: string;
|
|
137
|
+
bufferSegmentsHint: string;
|
|
138
|
+
bufferRun: string;
|
|
139
|
+
bufferFailed: string;
|
|
140
|
+
/** The fields of a layer and of a group */
|
|
141
|
+
opacityField: string;
|
|
142
|
+
visibleField: string;
|
|
143
|
+
lockedField: string;
|
|
144
|
+
/** The section of the style rule of a layer, which is only read */
|
|
145
|
+
styleRule: string;
|
|
146
|
+
ruleKind: string;
|
|
147
|
+
ruleProperty: string;
|
|
148
|
+
ruleNone: string;
|
|
149
|
+
ruleSingle: string;
|
|
150
|
+
ruleCategorical: string;
|
|
151
|
+
ruleGraduated: string;
|
|
152
|
+
ruleContinuous: string;
|
|
153
|
+
ruleHint: string;
|
|
154
|
+
deleteLayer: string;
|
|
155
|
+
/**
|
|
156
|
+
* Words kata's components of the inspector show: the action of an empty name, a field whose
|
|
157
|
+
* values differ, the list of attributes and the color picker. `removeAttribute` has {key} for
|
|
158
|
+
* the name of the attribute, and `saturationValueText` {s} and {v} for the two percentages
|
|
159
|
+
*/
|
|
160
|
+
addName: string;
|
|
161
|
+
mixed: string;
|
|
162
|
+
cancelLabel: string;
|
|
163
|
+
noAttributes: string;
|
|
164
|
+
attributeName: string;
|
|
165
|
+
attributeValue: string;
|
|
166
|
+
addValue: string;
|
|
167
|
+
addAttribute: string;
|
|
168
|
+
removeAttribute: string;
|
|
169
|
+
locked: string;
|
|
170
|
+
color: string;
|
|
171
|
+
colorRed: string;
|
|
172
|
+
colorOrange: string;
|
|
173
|
+
colorGold: string;
|
|
174
|
+
colorGreen: string;
|
|
175
|
+
colorBlue: string;
|
|
176
|
+
colorPurple: string;
|
|
177
|
+
colorBlack: string;
|
|
178
|
+
colorBrown: string;
|
|
179
|
+
colorWhite: string;
|
|
180
|
+
colorCode: string;
|
|
181
|
+
eyedropper: string;
|
|
182
|
+
hue: string;
|
|
183
|
+
saturation: string;
|
|
184
|
+
lightness: string;
|
|
185
|
+
saturationValue: string;
|
|
186
|
+
saturationValueText: string;
|
|
187
|
+
running: string;
|
|
188
|
+
/** The button that switches the theme: what pressing it does, to the light and to the dark */
|
|
189
|
+
toLight: string;
|
|
190
|
+
toDark: string;
|
|
191
|
+
}
|
|
192
|
+
/** A locale: one of the sets that come with the interface, or words laid over English */
|
|
193
|
+
export type Locale = 'en' | 'ja' | Partial<Messages>;
|
|
194
|
+
/** The words of the components of kata, taken from the set */
|
|
195
|
+
declare const KATA_KEYS: readonly ["more", "keyboardShortcuts", "close", "back", "closePanes", "dockHeight", "sheetHeight", "hide", "show", "lock", "unlock", "rename", "add", "expand", "collapse"];
|
|
196
|
+
/** The full set of words for a locale */
|
|
197
|
+
export declare function resolveMessages(locale?: Locale): Messages;
|
|
198
|
+
/** The language of a locale, for the lang attribute of the root element, when it is known */
|
|
199
|
+
export declare function localeLanguage(locale?: Locale): string | null;
|
|
200
|
+
/** The words of the set that kata shows */
|
|
201
|
+
export declare function kataMessages(messages: Messages): Pick<Messages, (typeof KATA_KEYS)[number]>;
|
|
202
|
+
/** Passes the words that kata shows on to kata (for the whole page) */
|
|
203
|
+
export declare function applyKataMessages(messages: Messages): void;
|
|
204
|
+
/** Fills the {name} places of a word with values */
|
|
205
|
+
export declare function fillWord(word: string, values: Record<string, string | number>): string;
|
|
206
|
+
/**
|
|
207
|
+
* The words of the set that kata's components of the inspector show, by kata's keys, as kata
|
|
208
|
+
* takes them (a word with values as a function of them)
|
|
209
|
+
*/
|
|
210
|
+
export declare function inspectorKataMessages(messages: Messages): Record<string, unknown>;
|
|
211
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** The padding of a map in px, as maplibre-gl has it */
|
|
2
|
+
export interface PaddingOptions {
|
|
3
|
+
top?: number;
|
|
4
|
+
bottom?: number;
|
|
5
|
+
left?: number;
|
|
6
|
+
right?: number;
|
|
7
|
+
}
|
|
8
|
+
/** The members of the map the padding uses */
|
|
9
|
+
export interface PaddingMap {
|
|
10
|
+
getContainer(): HTMLElement;
|
|
11
|
+
getPadding(): PaddingOptions;
|
|
12
|
+
setPadding(padding: PaddingOptions): unknown;
|
|
13
|
+
}
|
|
14
|
+
/** Which side regions stand beside the stage now, open */
|
|
15
|
+
export interface Beside {
|
|
16
|
+
left: boolean;
|
|
17
|
+
right: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** The padding of a map, kept to the regions of the interface */
|
|
20
|
+
export interface MapPadding {
|
|
21
|
+
/** Measures the regions again after the layout changed, and follows their sizes */
|
|
22
|
+
update(beside: Beside): void;
|
|
23
|
+
/** Stops following and gives the map back the padding it had before */
|
|
24
|
+
destroy(): void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Keeps the padding of a map to the regions of the interface in `root`: the width of a side region
|
|
28
|
+
* beside the stage on its side, and the height of the toolbar with its gap at the bottom.
|
|
29
|
+
*
|
|
30
|
+
* Every call to the map is guarded: once the map is removed, or its container leaves the page,
|
|
31
|
+
* nothing is done.
|
|
32
|
+
*/
|
|
33
|
+
export declare function mapPadding(map: PaddingMap, root: HTMLElement): MapPadding;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Shortcut } from '@sakuzu/kata/svelte';
|
|
2
|
+
import type { Messages } from './messages.js';
|
|
3
|
+
import type { DrawUIDraw, ToolSpec } from './types.js';
|
|
4
|
+
/** Whether a key event comes from the map's canvas, where core has handled it already */
|
|
5
|
+
export declare function fromMapCanvas(draw: Pick<DrawUIDraw, 'getMap'>, e: KeyboardEvent): boolean;
|
|
6
|
+
/** The shortcuts of the tools and of the delete button */
|
|
7
|
+
export declare function toolbarShortcuts(draw: DrawUIDraw, specs: readonly ToolSpec[], messages: Messages, deletable: boolean): Shortcut[];
|
package/dist/store.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Draw, DrawEvents } from '@sakuzu/maplibre-gl-draw';
|
|
2
|
+
/** The members of a draw instance that subscribing needs */
|
|
3
|
+
export type DrawEventSource = Pick<Draw, 'on'>;
|
|
4
|
+
/**
|
|
5
|
+
* A value of the draw instance that the components follow. Read inside a component (or an
|
|
6
|
+
* effect), it is read again after each of the events; elsewhere it is a plain read.
|
|
7
|
+
*
|
|
8
|
+
* `refresh` reads it again without an event, for a value that core changes without one.
|
|
9
|
+
*/
|
|
10
|
+
export declare function follow<T>(draw: DrawEventSource, events: readonly (keyof DrawEvents)[], read: () => T): {
|
|
11
|
+
get(): T;
|
|
12
|
+
refresh(): void;
|
|
13
|
+
};
|
|
14
|
+
/** A setting of the interface that the components follow */
|
|
15
|
+
export declare class Box<T> {
|
|
16
|
+
#private;
|
|
17
|
+
constructor(value: T);
|
|
18
|
+
/** The value; inside a component it is followed */
|
|
19
|
+
get(): T;
|
|
20
|
+
set(value: T): void;
|
|
21
|
+
}
|
package/dist/style.css
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @sakuzu/kata 1.2.0 | Apache-2.0 | Copyright 2026 Kasika, Inc. */
|
|
2
|
+
.mgd-ui{--kata-step-whole:1.618;--kata-step-half:1.272;--kata-step-quarter:1.128;--kata-size-2xs:.236083em;--kata-size-xs:.381982em;--kata-size-sm:.618047em;--kata-size-md:1em;--kata-size-lg:1.618em;--kata-size-xl:2.61792em;--kata-size-2xl:4.2358em;--kata-size-2xs-rem:.236083rem;--kata-size-xs-rem:.381982rem;--kata-size-sm-rem:.618047rem;--kata-size-md-rem:1rem;--kata-size-lg-rem:1.618rem;--kata-size-xl-rem:2.61792rem;--kata-size-2xl-rem:4.2358rem;--kata-fs-display2:2.61792rem;--kata-lh-display2:1.272;--kata-ls-display2:-.022em;--kata-offset-display2:2.0581rem;--kata-fs-title1:2.0581rem;--kata-lh-title1:1.272;--kata-ls-title1:-.022em;--kata-offset-title1:1.61798rem;--kata-fs-title2:1.618rem;--kata-lh-title2:1.272;--kata-ls-title2:-.02em;--kata-offset-title2:1.272rem;--kata-fs-title3:1.272rem;--kata-lh-title3:1.272;--kata-ls-title3:-.017em;--kata-offset-title3:.99999rem;--kata-fs-heading:1.128rem;--kata-lh-heading:1.272;--kata-ls-heading:-.014em;--kata-offset-heading:.886784rem;--kata-fs-subheading:.886525rem;--kata-lh-subheading:1.272;--kata-ls-subheading:-.007em;--kata-offset-subheading:.696947rem;--kata-fs-body:1rem;--kata-lh-body:1.618;--kata-ls-body:-.011em;--kata-offset-body:.618047rem;--kata-fs-capline:.786164rem;--kata-lh-capline:1.272;--kata-ls-capline:.0618em;--kata-offset-capline:.618047rem;--kata-cap:.698;--kata-cjk-ascent:.837;--kata-cjk-descent:.079;--kata-ink-over:0;--kata-ink-under:0;--kata-ink:calc(var(--kata-cap) + var(--kata-ink-over) + var(--kata-ink-under));--kata-edge-top:calc(var(--kata-ink-over) * 1em);--kata-edge-bottom:calc(var(--kata-ink-under) * 1em);--kata-text-size-num:var(--kata-fs-display2);--kata-text-leading-num:var(--kata-lh-display2);--kata-text-tracking-num:var(--kata-ls-display2);--kata-text-size-title:var(--kata-fs-title1);--kata-text-leading-title:var(--kata-lh-title1);--kata-text-tracking-title:var(--kata-ls-title1);--kata-text-size-h1:var(--kata-fs-title2);--kata-text-leading-h1:var(--kata-lh-title2);--kata-text-tracking-h1:var(--kata-ls-title2);--kata-text-size-h2:var(--kata-fs-title3);--kata-text-leading-h2:var(--kata-lh-title3);--kata-text-tracking-h2:var(--kata-ls-title3);--kata-text-size-prose:var(--kata-fs-heading);--kata-text-leading-prose:var(--kata-lh-body);--kata-text-tracking-prose:var(--kata-ls-heading);--kata-text-size-body:var(--kata-fs-body);--kata-text-leading-body:var(--kata-lh-body);--kata-text-tracking-body:var(--kata-ls-body);--kata-text-size-caption:var(--kata-fs-subheading);--kata-text-leading-caption:var(--kata-lh-body);--kata-text-tracking-caption:var(--kata-ls-subheading);--kata-text-size-label:var(--kata-text-size-body);--kata-text-leading-label:var(--kata-step-half);--kata-text-tracking-label:var(--kata-text-tracking-body);--kata-text-size-glyph:var(--kata-fs-capline);--kata-text-leading-glyph:var(--kata-lh-capline);--kata-text-tracking-glyph:var(--kata-ls-capline);--kata-text-offset-num:var(--kata-offset-display2);--kata-text-offset-title:var(--kata-offset-title1);--kata-text-offset-h1:var(--kata-offset-title2);--kata-text-offset-h2:var(--kata-offset-title3);--kata-text-offset-prose:var(--kata-offset-heading);--kata-text-offset-caption:var(--kata-offset-subheading);--kata-text-offset-label:var(--kata-offset-body);--kata-pad-2xs:var(--kata-size-2xs);--kata-pad-xs:var(--kata-size-xs);--kata-pad-sm:var(--kata-size-sm);--kata-pad-md:var(--kata-size-md);--kata-pad-lg:var(--kata-size-lg);--kata-pad-xl:var(--kata-size-xl);--kata-pad-2xl:var(--kata-size-2xl);--kata-gap-2xs:var(--kata-size-2xs-rem);--kata-gap-xs:var(--kata-size-xs-rem);--kata-gap-sm:var(--kata-size-sm-rem);--kata-gap-md:var(--kata-size-md-rem);--kata-gap-lg:var(--kata-size-lg-rem);--kata-gap-xl:var(--kata-size-xl-rem);--kata-gap-2xl:var(--kata-size-2xl-rem);--kata-border-width:1px;--kata-radius-pill:999px;--kata-height-button:calc(var(--kata-text-size-body) * (var(--kata-ink) + 2) + var(--kata-border-width) * 2);--kata-height-button-sm:calc(var(--kata-text-size-body) * (var(--kata-ink) + 2 / var(--kata-step-whole)) + var(--kata-border-width) * 2);--kata-height-icon-button:var(--kata-height-button-sm);--kata-height-list-item:calc(var(--kata-text-size-body) * (var(--kata-ink) + 2));--kata-height-list-item-two:calc(var(--kata-height-list-item) + var(--kata-size-sm-rem) + var(--kata-text-size-caption) * var(--kata-ink));--kata-height-badge:calc(var(--kata-text-size-caption) * (var(--kata-ink) + 2 / var(--kata-step-whole) / var(--kata-step-whole)) + var(--kata-border-width) * 2);--kata-height-list-item-lg:calc(var(--kata-height-button-sm) + var(--kata-text-size-body) * 2);--kata-height-list-item-mark:calc(var(--kata-height-badge) + var(--kata-text-size-body) * 2);--kata-height-thumbnail-row:calc(var(--kata-height-thumbnail) + var(--kata-text-size-body) * 2);--kata-height-toolbar:var(--kata-height-list-item-lg);--kata-height-footer:calc(var(--kata-height-button) + var(--kata-text-size-body) * 2);--kata-height-icon:var(--kata-size-md-rem);--kata-height-thumbnail:2rem;--kata-width-rail:14.5rem;--kata-width-panel:22.5rem;--kata-width-drawer:17.5rem;--kata-width-modal-sm:25rem;--kata-width-modal-md:35rem;--kata-width-modal-lg:45rem;--kata-width-modal-xl:60rem;--kata-width-popover:18rem;--kata-width-toast:22rem;--kata-width-prose:46rem;--kata-width-settings:51.25rem;--kata-opacity-dim:.64;--kata-z-floating:10;--kata-z-sheet:20;--kata-z-menu:30;--kata-z-modal:40;--kata-z-toast:50;--kata-font-sans:"IBM Plex Sans", "IBM Plex Sans JP", "Noto Sans SC", "Noto Sans TC", system-ui, sans-serif;--kata-font-mono:"IBM Plex Mono", ui-monospace, monospace;--kata-color-ground:#202021;--kata-color-panel:#2b2b2d;--kata-color-raise:#f5f5f812;--kata-color-raise-2:#f5f5f824;--kata-color-fill:#46464a;--kata-color-solid:#204ec3;--kata-color-solid-hover:#123eb2;--kata-color-solid-active:#062da1;--kata-color-on-solid:#fff;--kata-color-text:#f5f5f8;--kata-color-muted:#f5f5f8eb;--kata-color-faint:#f5f5f87a;--kata-color-line:#f5f5f82b;--kata-color-line-strong:#f5f5f852;--kata-color-blue-ink:#b0d0ff;--kata-color-blue-fill:#204ec3;--kata-color-on-blue:#fff;--kata-color-yellow-ink:#ffe45c;--kata-color-yellow-fill:#f8cd09;--kata-color-on-yellow:#1d1f20;--kata-color-red-ink:#ffbbad;--kata-color-red-fill:#a82514;--kata-color-red-fill-hover:#951303;--kata-color-red-fill-active:#7e0f02;--kata-color-red-wash:#ffbbad1f;--kata-color-on-red:#fff;--kata-color-green-ink:#5cff9d;--kata-color-green-fill:#51bf68;--kata-color-on-green:#1d1f20;--kata-color-focus:var(--kata-color-blue-ink);--kata-color-scrim:#00000080;--kata-color-selection:#0033ff59}.mgd-ui:lang(ja),:lang(ja) .mgd-ui,:where(.mgd-ui) :lang(ja),.mgd-ui:lang(zh),:lang(zh) .mgd-ui,:where(.mgd-ui) :lang(zh){--kata-text-tracking-num:0;--kata-text-tracking-title:0;--kata-text-tracking-h1:0;--kata-text-tracking-h2:0;--kata-text-tracking-body:0;--kata-text-tracking-prose:0;--kata-text-tracking-caption:0;--kata-text-tracking-label:0;--kata-text-tracking-glyph:0}.mgd-ui[data-color-mode=light],[data-color-mode=light] .mgd-ui,:where(.mgd-ui) [data-color-mode=light]{--kata-color-ground:#f2f2f3;--kata-color-panel:#fff;--kata-color-raise:#1d1f200f;--kata-color-raise-2:#1d1f201f;--kata-color-fill:#e4e4e5;--kata-color-text:#1d1f20;--kata-color-muted:#1d1f20f0;--kata-color-faint:#1d1f2080;--kata-color-line:#1d1f2029;--kata-color-line-strong:#1d1f2052;--kata-color-blue-ink:#0029b8;--kata-color-blue-fill:#204ec3;--kata-color-on-blue:#fff;--kata-color-yellow-ink:#664a00;--kata-color-yellow-fill:#f8cd09;--kata-color-on-yellow:#1d1f20;--kata-color-red-ink:#950010;--kata-color-red-fill:#a82514;--kata-color-red-fill-hover:#951303;--kata-color-red-fill-active:#7e0f02;--kata-color-red-wash:#95001014;--kata-color-on-red:#fff;--kata-color-green-ink:#0a5623;--kata-color-green-fill:#51bf68;--kata-color-on-green:#1d1f20;--kata-color-focus:#03f}.mgd-ui:lang(ja),.mgd-ui:lang(zh),.mgd-ui:lang(ko){--kata-ink-over:calc(var(--kata-cjk-ascent) - var(--kata-cap));--kata-ink-under:var(--kata-cjk-descent)}.mgd-ui{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--kata-color-text);font-family:var(--kata-font-sans);font-size:var(--kata-text-size-body);font-style:normal;font-weight:400;line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);text-align:start;text-transform:none;-webkit-font-smoothing:antialiased}.mgd-ui[data-color-mode=light],[data-color-mode=light] .mgd-ui{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.mgd-ui[data-overlay]{pointer-events:none;position:absolute;inset:0}.mgd-ui[data-overlay]>[data-role=drawbar],.mgd-ui[data-overlay]>[data-role=reopen],.mgd-ui[data-overlay]>[data-role=theme]{pointer-events:auto}[data-mgd-ui-lift]>.maplibregl-control-container>.maplibregl-ctrl-bottom-left{transform:translateY(calc(-1 * var(--mgd-ui-lift-left,0px)))}[data-mgd-ui-lift]>.maplibregl-control-container>.maplibregl-ctrl-bottom-right{transform:translateY(calc(-1 * var(--mgd-ui-lift-right,0px)))}.mgd-ui[data-panel]{height:100%;display:flex}:where(.mgd-ui),:where(.mgd-ui) *,:where(.mgd-ui) :before,:where(.mgd-ui) :after{box-sizing:border-box}:where(.mgd-ui) :is(button,input,select,textarea){font:inherit;letter-spacing:inherit;color:inherit;border:0;margin:0;padding:0}:where(.mgd-ui) :focus{outline:none}:where(.mgd-ui) :focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:2px}:where(.mgd-ui) ::selection{background:var(--kata-color-selection)}:where(.mgd-ui) :where(:not(:first-child)){--kata-at-start:0}:where(.mgd-ui) :where(:not(:last-child)){--kata-at-end:0}:where(.mgd-ui) :where([data-role]:not([data-role=stack]):not([data-pass]):not([data-edge-pass])){--kata-at-start:0;--kata-at-end:0}:where(.mgd-ui) [data-role=rule]+:where([data-role=stack],[data-pass],[data-edge-pass],:not([data-role])){--kata-at-start:1}:where(.mgd-ui) :where([data-role=stack],[data-pass],[data-edge-pass],:not([data-role])):has(+[data-role=rule]){--kata-at-end:1}:where(.mgd-ui) :where([data-h]){--kata-in-control:1}:where(.mgd-ui) :where([data-inset]){--kata-in-control:0}@container style(--kata-at-start:1){:where(.mgd-ui) :where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label):first-child,:where(.mgd-ui) [data-edge-pass]>:where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label){text-box:trim-start cap alphabetic;padding-top:var(--kata-edge-top)}}@container style(--kata-at-end:1){:where(.mgd-ui) :where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label):last-child,:where(.mgd-ui) [data-edge-pass]>:where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label){text-box:trim-end cap alphabetic;padding-bottom:var(--kata-edge-bottom)}}:where(.mgd-ui) [data-role=rule]+:where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label){text-box:trim-start cap alphabetic;padding-top:var(--kata-edge-top)}:where(.mgd-ui) :where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label):has(+[data-role=rule]){text-box:trim-end cap alphabetic;padding-bottom:var(--kata-edge-bottom)}@container style(--kata-at-end:1){:where(.mgd-ui) [data-role=rule]+:where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label):last-child{text-box-trim:trim-both}}@container style(--kata-at-start:1){:where(.mgd-ui) :where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label):first-child:has(+[data-role=rule]){text-box-trim:trim-both}}@container style(--kata-at-start:1) and style(--kata-at-end:1){:where(.mgd-ui) :where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label):first-child:last-child,:where(.mgd-ui) [data-edge-pass]>:where(.kata-text,[data-role=caption],[data-role=p],[data-role=prose],[data-role=value],[data-role=stat],[data-role=field]>label){text-box-trim:trim-both}}.actions.svelte-194yfhv{justify-content:flex-end;align-items:center;gap:var(--kata-gap-sm);flex-wrap:wrap;min-width:0;display:flex}.lead.svelte-194yfhv{align-items:center;min-width:0;margin-right:auto;display:flex}.counter.svelte-d8wvs6{min-width:var(--kata-height-icon);height:var(--kata-height-icon);padding-inline:var(--kata-pad-2xs);background:var(--kata-color-solid);font-size:var(--kata-text-size-glyph);line-height:var(--kata-text-leading-glyph);letter-spacing:var(--kata-text-tracking-glyph);color:var(--kata-color-on-solid);font-variant-numeric:tabular-nums;box-shadow:0 0 0 calc(var(--kata-border-width) * 2) var(--kata-color-panel);flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.t.svelte-d8wvs6{text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}svg.kata-icon{width:var(--kata-height-icon);height:var(--kata-height-icon);stroke-width:1.5px;flex:none;display:block}svg.kata-icon.tone-blue{color:var(--kata-color-blue-ink)}svg.kata-icon.tone-yellow{color:var(--kata-color-yellow-ink)}svg.kata-icon.tone-red{color:var(--kata-color-red-ink)}svg.kata-icon.tone-green{color:var(--kata-color-green-ink)}svg.kata-icon.tone-muted{color:var(--kata-color-muted)}.seat.svelte-k7f5ef{align-items:center;min-width:0;display:inline-flex}.tip.svelte-k7f5ef{z-index:var(--kata-z-menu);pointer-events:none;align-items:center;gap:var(--kata-gap-sm);width:max-content;height:var(--kata-height-button-sm);padding:0 var(--kata-pad-sm);background:var(--kata-color-text);font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);color:var(--kata-color-ground);white-space:nowrap;flex:none;display:inline-flex;position:fixed}.pair.svelte-k7f5ef{align-items:center;gap:var(--kata-gap-sm);max-width:100%;display:inline-flex}.tip.inline.svelte-k7f5ef{position:static}.t.svelte-k7f5ef{text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}.kbd.svelte-k7f5ef{height:var(--kata-height-badge);padding:0 var(--kata-pad-2xs);border:var(--kata-border-width) solid color-mix(in srgb, var(--kata-color-ground) 40%, transparent);color:inherit;font-family:var(--kata-font-mono);white-space:nowrap;align-items:center;display:inline-flex}.kbd.svelte-k7f5ef>.t:where(.svelte-k7f5ef){font-family:inherit}.btn.svelte-tzqgdm{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-box,var(--kata-height-button));padding-block:0;padding-inline:var(--kata-pad-md);border:var(--kata-border-width) solid var(--kata-color-line-strong);color:var(--kata-color-text);white-space:nowrap;font:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);cursor:pointer;background:0 0;border-radius:0;flex:0 auto;max-width:100%;text-decoration:none;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex;position:relative}.btn.svelte-tzqgdm:hover{background:var(--kata-color-raise);text-decoration:none}.btn.svelte-tzqgdm:active{background:var(--kata-color-raise-2);transition:none}.btn.svelte-tzqgdm:disabled{opacity:var(--kata-opacity-dim);cursor:default}.btn.svelte-tzqgdm>svg{flex:none}.btn.svelte-tzqgdm .t:where(.svelte-tzqgdm){text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;display:block;overflow:clip}.btn.svelte-tzqgdm .t.mono:where(.svelte-tzqgdm){font-family:var(--kata-font-mono)}.btn.svelte-tzqgdm .kbd:where(.svelte-tzqgdm){font-family:var(--kata-font-mono);font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);color:var(--kata-color-muted);flex:none}.unread.svelte-tzqgdm{left:calc(50% + var(--kata-pad-2xs));bottom:calc(50% + var(--kata-pad-2xs));pointer-events:none;line-height:0;position:absolute}.primary.svelte-tzqgdm{background:var(--kata-color-solid);border-color:var(--kata-color-solid);color:var(--kata-color-on-solid)}.primary.svelte-tzqgdm:hover{background:var(--kata-color-solid-hover);border-color:var(--kata-color-solid-hover)}.primary.svelte-tzqgdm:active{background:var(--kata-color-solid-active);border-color:var(--kata-color-solid-active)}.btn.primary.svelte-tzqgdm .kbd:where(.svelte-tzqgdm){color:var(--kata-color-on-solid)}.ghost.svelte-tzqgdm{background:0 0;border-color:#0000}.danger.svelte-tzqgdm{color:var(--kata-color-red-ink);border-color:var(--kata-color-red-ink)}.danger.svelte-tzqgdm:hover{background:var(--kata-color-red-wash)}.danger-fill.svelte-tzqgdm{background:var(--kata-color-red-fill);border-color:var(--kata-color-red-fill);color:var(--kata-color-on-red)}.danger-fill.svelte-tzqgdm:hover{background:var(--kata-color-red-fill-hover);border-color:var(--kata-color-red-fill-hover)}.danger-fill.svelte-tzqgdm:active{background:var(--kata-color-red-fill-active);border-color:var(--kata-color-red-fill-active)}.icon.svelte-tzqgdm{width:var(--kata-height-icon-button);height:var(--kata-height-icon-button);justify-content:center;padding:0}.block.svelte-tzqgdm{justify-content:center;width:100%}.spread.svelte-tzqgdm{justify-content:space-between}.spread.svelte-tzqgdm .t:where(.svelte-tzqgdm){text-align:start;flex:auto}.busy.svelte-tzqgdm{opacity:var(--kata-opacity-dim);cursor:progress}.on.svelte-tzqgdm{background:var(--kata-color-raise-2)}.on.icon.svelte-tzqgdm>svg{color:var(--kata-color-blue-ink)}.ghost[data-tone=danger].svelte-tzqgdm:hover:not(:disabled){color:var(--kata-color-red-ink)}.btn[aria-expanded=true][aria-haspopup].svelte-tzqgdm{background:var(--kata-color-raise)}.anchor.svelte-1moa1f7{min-width:0;max-width:100%;display:inline-flex}.anchor.svelte-1moa1f7:not(.block){flex:none}.anchor.block.svelte-1moa1f7{width:100%;display:flex}.anchor.block.svelte-1moa1f7>*{flex:auto;min-width:0}.seat.svelte-1moa1f7{color:inherit;visibility:hidden;background:0 0;border:0;margin:0;padding:0;position:fixed;inset:auto;overflow:auto}.seat.svelte-1moa1f7:popover-open{flex-direction:column;display:flex}.seat.placed.svelte-1moa1f7{visibility:visible}.menu.svelte-1moa1f7{background:var(--kata-color-panel);color:var(--kata-color-text);border:var(--kata-border-width) solid var(--kata-color-line-strong);min-width:min(12rem, 100vw - var(--kata-gap-md) * 2);max-width:calc(100vw - var(--kata-gap-md) * 2)}.menu.svelte-11a9wyx{background:var(--kata-color-panel);color:var(--kata-color-text);border:var(--kata-border-width) solid var(--kata-color-line-strong);min-width:min(12rem, 100vw - var(--kata-gap-md) * 2);max-width:calc(100vw - var(--kata-gap-md) * 2);flex-direction:column;display:flex}.menu[data-rows=mark].svelte-11a9wyx{--kata-list-item-height:var(--kata-height-list-item-mark)}.menu[data-rows=box].svelte-11a9wyx{--kata-list-item-height:var(--kata-height-list-item-lg)}.menu[data-rows=thumb].svelte-11a9wyx{--kata-list-item-height:var(--kata-height-thumbnail-row)}.menu[data-rows=two].svelte-11a9wyx{--kata-list-item-height:var(--kata-height-list-item-two)}.sep.svelte-1v24bwy{height:var(--kata-border-width);background:var(--kata-color-line);flex:none}.head.svelte-1jq2ulr{min-height:var(--kata-height-list-item);padding-inline:var(--kata-pad-md);min-width:0;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);--kata-box:var(--kata-height-button-sm);flex:none;align-items:center;display:flex}.label.svelte-1jq2ulr{min-width:0;font-size:var(--kata-text-size-label);line-height:var(--kata-text-leading-label);letter-spacing:var(--kata-text-tracking-label);text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;flex:1;min-width:0;font-weight:600;overflow:clip}.item.svelte-1i6m27a{align-items:center;gap:var(--kata-gap-sm);width:100%;min-height:var(--kata-list-item-height,var(--kata-height-list-item));padding-inline:var(--kata-pad-md);color:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);text-align:start;cursor:pointer;background:0 0;border:0;flex:none;text-decoration:none;display:flex}.item.svelte-1i6m27a:hover{background:var(--kata-color-raise);text-decoration:none}.item.svelte-1i6m27a:focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:-2px}.item.svelte-1i6m27a>svg{flex:none}.item.svelte-1i6m27a [data-role=mark][data-h]:not([data-h=icon]),.item.svelte-1i6m27a [data-role=mark][data-kata-tall],.item.svelte-1i6m27a [data-role=box][data-h]:not(.ghost),.item.svelte-1i6m27a input:not([type=checkbox]):not([type=radio]),.item.svelte-1i6m27a select,.item.svelte-1i6m27a textarea{margin-block:var(--kata-text-size-body)}.item.svelte-1i6m27a [data-role=stack]{padding-block:var(--kata-text-size-body)}.item.svelte-1i6m27a [data-role=stack] [data-role=stack]{padding-block:0}.item.svelte-1i6m27a [data-role=stack] [data-role=mark][data-h]:not([data-h=icon]),.item.svelte-1i6m27a [data-role=stack] [data-role=mark][data-kata-tall],.item.svelte-1i6m27a [data-role=stack] [data-role=box][data-h]:not(.ghost),.item.svelte-1i6m27a [data-role=stack] input:not([type=checkbox]):not([type=radio]),.item.svelte-1i6m27a [data-role=stack] select,.item.svelte-1i6m27a [data-role=stack] textarea,.item.svelte-1i6m27a [data-role=box] input:not([type=checkbox]):not([type=radio]),.item.svelte-1i6m27a [data-role=box] select,.item.svelte-1i6m27a [data-role=box] textarea{margin-block:0}.t.svelte-1i6m27a{text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}.on.svelte-1i6m27a{background:var(--kata-color-raise)}.danger.svelte-1i6m27a{color:var(--kata-color-red-ink)}.disabled.svelte-1i6m27a{opacity:var(--kata-opacity-dim);cursor:default}.disabled.svelte-1i6m27a:hover{background:0 0}.grow.svelte-1i6m27a{white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;flex:1;min-width:0;overflow:clip}.chk.svelte-1i6m27a{width:var(--kata-height-icon);flex:none;display:flex}.kbd.svelte-1i6m27a,.sub.svelte-1i6m27a{color:var(--kata-color-muted);flex:none;margin-left:auto}.kbd.svelte-1i6m27a{font-family:var(--kata-font-mono);font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);white-space:nowrap}.sub.svelte-1i6m27a{display:flex}.level.svelte-w8ye0t{flex-direction:column;min-width:0;display:flex}.sub.svelte-w8ye0t{z-index:var(--kata-z-menu);position:fixed}.block.svelte-yani0l{padding:var(--kata-pad-md);--kata-inset:0px;--kata-at-start:1;--kata-at-end:1;flex:none;min-width:0}.ie.svelte-1ddq43z{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-box,var(--kata-height-button));border:var(--kata-border-width) solid transparent;max-width:100%;color:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);text-align:start;cursor:text;background:0 0;min-width:0;padding:0;display:inline-flex}.title.svelte-1ddq43z{font-size:var(--kata-text-size-h2);line-height:var(--kata-text-leading-h2);letter-spacing:var(--kata-text-tracking-h2);font-weight:600}.t.svelte-1ddq43z{text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}.clamp.svelte-1ddq43z{white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;overflow:clip}button.ie.svelte-1ddq43z{cursor:pointer}button.ie.svelte-1ddq43z:hover{background:var(--kata-color-raise)}button.ie.svelte-1ddq43z:hover .pen:where(.svelte-1ddq43z){color:var(--kata-color-muted)}.pen.svelte-1ddq43z{color:var(--kata-color-faint);flex:none;display:flex}.read.svelte-1ddq43z{cursor:default}.editing.svelte-1ddq43z{border-color:var(--kata-color-blue-ink);padding-inline:var(--kata-pad-sm)}.ie.svelte-1ddq43z input:where(.svelte-1ddq43z),.ie.svelte-1ddq43z textarea:where(.svelte-1ddq43z){min-width:0;color:inherit;font:inherit;appearance:none;background:0 0;border:0;outline:none;margin:0;padding:0}.ie.svelte-1ddq43z input:where(.svelte-1ddq43z):focus-visible,.ie.svelte-1ddq43z textarea:where(.svelte-1ddq43z):focus-visible{outline:none}.ie.svelte-1ddq43z input:where(.svelte-1ddq43z),.ie.svelte-1ddq43z textarea:where(.svelte-1ddq43z){flex:1;align-self:stretch;width:100%}.multi.svelte-1ddq43z{--kata-inline-edit-pad:calc((var(--kata-box,var(--kata-height-button)) - var(--kata-border-width) * 2 - var(--kata-text-size-body) * var(--kata-text-leading-body)) / 2);height:auto;min-height:var(--kata-box,var(--kata-height-button));white-space:normal;align-items:flex-start}.multi.svelte-1ddq43z .clamp:where(.svelte-1ddq43z){text-box:none;white-space:pre-wrap;text-overflow:clip;padding-top:0;padding-bottom:0;padding-block:var(--kata-inline-edit-pad);overflow:visible}.multi.svelte-1ddq43z:not(.editing){display:block}.multi.svelte-1ddq43z:not(.editing) .clamp:where(.svelte-1ddq43z){display:inline}.multi.svelte-1ddq43z:not(.editing) .pen:where(.svelte-1ddq43z){vertical-align:middle;margin-left:var(--kata-pad-sm);display:inline-flex}.ie.svelte-1ddq43z textarea:where(.svelte-1ddq43z){resize:none;field-sizing:content;line-height:var(--kata-text-leading-body);padding-block:var(--kata-inline-edit-pad)}.add.svelte-1ddq43z{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-box,var(--kata-height-button));color:var(--kata-color-blue-ink);font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.add.svelte-1ddq43z:hover{text-decoration:underline}.pair.svelte-nct6tm{--kata-pair-name:7.5rem;grid-template-columns:var(--kata-pair-cols,var(--kata-pair-name) minmax(0, 1fr));align-items:center;column-gap:var(--kata-gap-sm);min-width:0;height:var(--kata-box,var(--kata-height-button));padding-inline:var(--kata-inset,0px);font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);flex:none;grid-column:1/-1;display:grid}.read.svelte-nct6tm{align-items:baseline;height:auto}.tight.svelte-nct6tm{grid-template-columns:var(--kata-pair-cols,max-content minmax(0, 1fr))}.k.svelte-nct6tm{color:var(--kata-color-muted);text-box:trim-both cap alphabetic;padding-inline-start:calc(var(--kata-pair-depth,0) * var(--kata-pad-md));padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;display:block;overflow:clip}.k.link.svelte-nct6tm{color:var(--kata-color-blue-ink);text-decoration:none}.k.link.svelte-nct6tm:hover{text-decoration:underline}.row.svelte-nct6tm{align-items:center;min-width:0;display:flex}.row.svelte-nct6tm>*{flex:auto;min-width:0}.v.svelte-nct6tm{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}.v.muted.svelte-nct6tm{color:var(--kata-color-muted)}.mono.svelte-nct6tm{font-family:var(--kata-font-mono)}.v.clamp.svelte-nct6tm{white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;overflow-wrap:normal;min-width:0;overflow:clip}.note.svelte-nct6tm{font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);grid-column:2}.top.svelte-nct6tm{align-items:start;height:auto}.top.svelte-nct6tm .k:where(.svelte-nct6tm){padding-top:calc((var(--kata-box,var(--kata-height-button)) - 1em * var(--kata-ink)) / 2 + var(--kata-ink-over) * 1em)}.noted.svelte-nct6tm{row-gap:var(--kata-gap-xs);height:auto}@container app (width<24rem){.pair.svelte-nct6tm{align-items:start;row-gap:var(--kata-gap-xs);grid-template-columns:minmax(0,1fr);height:auto}.note.svelte-nct6tm{grid-column:1}}.kv.svelte-9wn7eb{--kata-pair-name:7.5rem;--kata-pair-cols:subgrid;grid-template-columns:var(--kata-pair-name) minmax(0, 1fr);row-gap:var(--kata-gap-sm);column-gap:var(--kata-gap-sm);min-width:0;display:grid}.tight.svelte-9wn7eb{grid-template-columns:max-content minmax(0,1fr)}@container app (width<24rem){.kv.svelte-9wn7eb,.tight.svelte-9wn7eb{grid-template-columns:minmax(0,1fr)}}.link.svelte-4zbnt0{align-items:center;gap:var(--kata-gap-sm);color:var(--kata-color-blue-ink);font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);text-align:start;cursor:pointer;background:0 0;border:0;flex:none;padding:0;text-decoration:none;display:inline-flex;position:relative}.link.svelte-4zbnt0:hover{text-decoration:underline}.link.svelte-4zbnt0:after{content:"";inset-inline:0;height:var(--kata-height-icon-button);position:absolute;top:50%;translate:0 -50%}.link.svelte-4zbnt0:disabled{color:var(--kata-color-text);opacity:var(--kata-opacity-dim);cursor:default;text-decoration:none}.link.svelte-4zbnt0>svg{flex:none}.t.svelte-4zbnt0{min-width:0;display:block}[data-h] .t.svelte-4zbnt0{text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em)}.kata-text.svelte-a1one5{min-width:0;margin:0;display:block}@container style(--kata-in-control:1){.kata-text.svelte-a1one5{text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em)}.kata-text.svelte-a1one5:not(.clamp2):not(.wrap){white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;overflow:clip}}td .kata-text.svelte-a1one5,th .kata-text.svelte-a1one5{text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em)}.num.svelte-a1one5{font-size:var(--kata-text-size-num);line-height:var(--kata-text-leading-num);letter-spacing:var(--kata-text-tracking-num);font-variant-numeric:tabular-nums;font-weight:600}.title.svelte-a1one5{font-size:var(--kata-text-size-title);line-height:var(--kata-text-leading-title);letter-spacing:var(--kata-text-tracking-title);font-weight:600}.h1.svelte-a1one5{font-size:var(--kata-text-size-h1);line-height:var(--kata-text-leading-h1);letter-spacing:var(--kata-text-tracking-h1);font-weight:600}.h2.svelte-a1one5{font-size:var(--kata-text-size-h2);line-height:var(--kata-text-leading-h2);letter-spacing:var(--kata-text-tracking-h2);font-weight:600}.body.svelte-a1one5{font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body)}.prose.svelte-a1one5{font-size:var(--kata-text-size-prose);line-height:var(--kata-text-leading-prose);letter-spacing:var(--kata-text-tracking-prose)}.caption.svelte-a1one5{font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption)}.label.svelte-a1one5{font-size:var(--kata-text-size-label);line-height:var(--kata-text-leading-label);letter-spacing:var(--kata-text-tracking-label);font-weight:600}.glyph.svelte-a1one5{font-size:var(--kata-text-size-glyph);line-height:var(--kata-text-leading-glyph);letter-spacing:var(--kata-text-tracking-glyph);font-weight:600}.kata-text.mono.svelte-a1one5{font-family:var(--kata-font-mono);font-variant-numeric:tabular-nums}a.kata-text.svelte-a1one5{color:inherit;text-decoration:none}a.kata-text.svelte-a1one5:hover{text-decoration:underline}.tabular.svelte-a1one5{font-variant-numeric:tabular-nums}.muted.svelte-a1one5{color:var(--kata-color-muted)}.clamp.svelte-a1one5{white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;overflow:clip}.wrap.svelte-a1one5{white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.kata-text.clamp2.svelte-a1one5{text-box:none;padding-top:0;padding-bottom:0}.clamp2.svelte-a1one5{-webkit-line-clamp:2;line-clamp:2;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.input.svelte-1bu71rh{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-box,var(--kata-height-button));padding-block:0;padding-inline:var(--kata-pad-md);border:var(--kata-border-width) solid var(--kata-color-line-strong);color:var(--kata-color-text);white-space:nowrap;font:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);cursor:text;background:0 0;border-radius:0;justify-content:flex-start;width:100%;min-width:0;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.input.svelte-1bu71rh:focus-within{border-color:var(--kata-color-blue-ink)}.input.svelte-1bu71rh input:where(.svelte-1bu71rh){min-width:0;color:inherit;font:inherit;appearance:none;background:0 0;border:0;outline:none;margin:0;padding:0}.input.svelte-1bu71rh input:where(.svelte-1bu71rh):focus-visible{outline:none}.input.svelte-1bu71rh input:where(.svelte-1bu71rh){flex:1;align-self:stretch}.input.svelte-1bu71rh input:where(.svelte-1bu71rh)::placeholder{color:var(--kata-color-faint)}.unit.svelte-1bu71rh{color:var(--kata-color-muted);text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);flex:none}.title.svelte-1bu71rh{font-size:var(--kata-text-size-h2);line-height:var(--kata-text-leading-h2);letter-spacing:var(--kata-text-tracking-h2);font-weight:600}.input.svelte-1bu71rh input.mono:where(.svelte-1bu71rh){font-family:var(--kata-font-mono);font-variant-numeric:tabular-nums}.err.svelte-1bu71rh{border-color:var(--kata-color-red-ink)}.disabled.svelte-1bu71rh{opacity:var(--kata-opacity-dim);cursor:default}.disabled.svelte-1bu71rh .unit:where(.svelte-1bu71rh){color:inherit}.attributes.svelte-ohuajy{flex-direction:column;min-width:0;display:flex}.row.svelte-ohuajy{align-items:center;column-gap:var(--kata-gap-sm);min-width:0;height:var(--kata-box,var(--kata-height-button));padding-inline:var(--kata-inset,0px);flex:none;grid-template-columns:7.5rem minmax(0,1fr) auto;display:grid}.k.svelte-ohuajy,.v.svelte-ohuajy,.end.svelte-ohuajy{align-items:center;min-width:0;display:flex}.k.svelte-ohuajy>*,.v.svelte-ohuajy>*{flex:auto;min-width:0}.draft.svelte-ohuajy{height:var(--kata-height-button);--kata-box:var(--kata-height-button-sm)}.lock.svelte-ohuajy{display:flex}@container app (width<24rem){.row.svelte-ohuajy{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"k end""v v";height:auto}.k.svelte-ohuajy{grid-area:k}.v.svelte-ohuajy{grid-area:v}.end.svelte-ohuajy{grid-area:end}}.banner.svelte-1v3qr1c{border:var(--kata-border-width) solid var(--kata-color-line-strong);padding:var(--kata-pad-md);--kata-inset:0px;--kata-at-start:1;--kata-at-end:1;align-items:flex-start;gap:var(--kata-gap-sm);color:var(--kata-color-text);min-width:0;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);--kata-box:var(--kata-height-button);flex-wrap:wrap;display:flex}.floating.svelte-1v3qr1c{background:var(--kata-color-panel)}.line.svelte-1v3qr1c{align-items:flex-start;gap:var(--kata-gap-sm);flex:12em;min-width:0;display:flex}.mark.svelte-1v3qr1c{height:calc(var(--kata-text-size-body) * var(--kata-text-leading-body));flex:none;align-items:center;display:flex}.text.svelte-1v3qr1c{flex:auto;min-width:0}.act.svelte-1v3qr1c{align-items:center;gap:var(--kata-gap-sm);flex-wrap:wrap;flex:0 auto;min-width:0;max-width:100%;margin-left:auto;display:flex}.act.svelte-1v3qr1c>*{flex:0 auto;min-width:0;max-width:100%}.info.svelte-1v3qr1c{border-color:var(--kata-color-blue-ink)}.info.svelte-1v3qr1c .mark:where(.svelte-1v3qr1c){color:var(--kata-color-blue-ink)}.warn.svelte-1v3qr1c{border-color:var(--kata-color-yellow-ink)}.warn.svelte-1v3qr1c .mark:where(.svelte-1v3qr1c){color:var(--kata-color-yellow-ink)}.error.svelte-1v3qr1c{border-color:var(--kata-color-red-ink)}.error.svelte-1v3qr1c .mark:where(.svelte-1v3qr1c){color:var(--kata-color-red-ink)}.ok.svelte-1v3qr1c{border-color:var(--kata-color-green-ink)}.ok.svelte-1v3qr1c .mark:where(.svelte-1v3qr1c){color:var(--kata-color-green-ink)}.stack.svelte-6tymim{flex-direction:column;gap:0;min-width:0;display:flex}.stack[data-align=start].svelte-6tymim{align-items:flex-start}.stack[data-gap="2xs"].svelte-6tymim{gap:var(--kata-gap-2xs)}.stack[data-gap=xs].svelte-6tymim{gap:var(--kata-gap-xs)}.stack[data-gap=sm].svelte-6tymim{gap:var(--kata-gap-sm)}.stack[data-gap=md].svelte-6tymim{gap:var(--kata-gap-md)}.stack[data-gap=lg].svelte-6tymim{gap:var(--kata-gap-lg)}.stack[data-gap=xl].svelte-6tymim{gap:var(--kata-gap-xl)}.stack[data-gap="2xl"].svelte-6tymim{gap:var(--kata-gap-2xl)}.grid.svelte-cravdb{grid-template-columns:repeat(var(--kata-color-grid-columns), minmax(0, 1fr));gap:var(--kata-gap-2xs);min-width:0;display:grid}.cell.svelte-cravdb{aspect-ratio:1;background:var(--kata-color-grid-color);width:100%;box-shadow:inset 0 0 0 var(--kata-border-width) var(--kata-color-line);cursor:pointer;border:0;padding:0}.cell.on.svelte-cravdb{box-shadow:inset 0 0 0 calc(var(--kata-border-width) * 2) var(--kata-color-focus), inset 0 0 0 calc(var(--kata-border-width) * 3) var(--kata-color-panel)}.input.svelte-1nlre0b{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-box,var(--kata-height-button));padding-block:0;padding-inline:var(--kata-pad-md);border:var(--kata-border-width) solid var(--kata-color-line-strong);color:var(--kata-color-text);white-space:nowrap;font:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);cursor:text;background:0 0;border-radius:0;justify-content:flex-start;width:100%;min-width:0;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.input.svelte-1nlre0b:focus-within{border-color:var(--kata-color-blue-ink)}.input.svelte-1nlre0b input:where(.svelte-1nlre0b){min-width:0;color:inherit;font:inherit;appearance:none;background:0 0;border:0;outline:none;margin:0;padding:0}.input.svelte-1nlre0b input:where(.svelte-1nlre0b):focus-visible{outline:none}.input.svelte-1nlre0b input:where(.svelte-1nlre0b){text-align:end;font-variant-numeric:tabular-nums;flex:1;align-self:stretch}.input.svelte-1nlre0b input:where(.svelte-1nlre0b)::placeholder{color:var(--kata-color-faint)}.unit.svelte-1nlre0b{color:var(--kata-color-muted);text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);flex:none}.err.svelte-1nlre0b{border-color:var(--kata-color-red-ink)}.disabled.svelte-1nlre0b{opacity:var(--kata-opacity-dim);cursor:default}.disabled.svelte-1nlre0b .unit:where(.svelte-1nlre0b){color:inherit}.row.svelte-1acpv56{align-items:center;gap:var(--kata-gap-sm);min-width:0;display:flex}.row[data-gap="0"].svelte-1acpv56{gap:0}.row[data-gap="2xs"].svelte-1acpv56{gap:var(--kata-gap-2xs)}.row[data-gap=md].svelte-1acpv56{gap:var(--kata-gap-md)}.row[data-gap=lg].svelte-1acpv56{gap:var(--kata-gap-lg)}.row[data-align=start].svelte-1acpv56{align-items:flex-start}.row[data-align=end].svelte-1acpv56{align-items:flex-end}.row[data-align=stretch].svelte-1acpv56{align-items:stretch;min-height:0}.row[data-justify=end].svelte-1acpv56{justify-content:flex-end}.between.svelte-1acpv56{justify-content:space-between}.row.svelte-1acpv56>[data-role=mark]{flex:none}.wrap.svelte-1acpv56{flex-wrap:wrap}.wrap.svelte-1acpv56>*{flex-shrink:0;max-width:100%}.row.svelte-1acpv56:not(.between)>[data-role=caption]:last-child,.row.svelte-1acpv56:not(.between)>[data-role=p]:last-child{flex:auto;min-width:0}.trigger.svelte-6dk8e2{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-box,var(--kata-height-button));padding-block:0;padding-inline:var(--kata-pad-md);border:var(--kata-border-width) solid var(--kata-color-line-strong);color:var(--kata-color-text);white-space:nowrap;font:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);cursor:pointer;background:0 0;border-radius:0;justify-content:space-between;width:100%;min-width:0;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.trigger[aria-expanded=true].svelte-6dk8e2{border-color:var(--kata-color-blue-ink)}.v.svelte-6dk8e2{text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;display:block;overflow:clip}.ph.svelte-6dk8e2{color:var(--kata-color-faint)}.trigger.svelte-6dk8e2 svg{flex:none}.err.svelte-6dk8e2{border-color:var(--kata-color-red-ink)}.disabled.svelte-6dk8e2{opacity:var(--kata-opacity-dim);cursor:default}.list.svelte-6dk8e2{background:var(--kata-color-panel);border:var(--kata-border-width) solid var(--kata-color-line-strong);color:var(--kata-color-text);min-width:min(12rem, 100vw - var(--kata-gap-md) * 2);max-width:calc(100vw - var(--kata-gap-md) * 2);visibility:hidden;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto;overflow:auto}.list.placed.svelte-6dk8e2{visibility:visible}.option.svelte-6dk8e2{align-items:center;gap:var(--kata-gap-sm);width:100%;min-height:var(--kata-height-list-item);padding-inline:var(--kata-pad-md);color:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);text-align:start;cursor:pointer;background:0 0;border:0;flex:none;display:flex}.option.svelte-6dk8e2:hover{background:var(--kata-color-raise)}.option.svelte-6dk8e2:focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:-2px}.option.two.svelte-6dk8e2{padding-block:var(--kata-pad-md)}.chk.svelte-6dk8e2{width:var(--kata-height-icon);flex:none;display:flex}.text.svelte-6dk8e2{gap:var(--kata-gap-xs);flex-direction:column;min-width:0;display:flex}.t.svelte-6dk8e2{text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}.label.svelte-6dk8e2{white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;flex:1;min-width:0;overflow:clip}.desc.svelte-6dk8e2{font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption)}.cp.svelte-1ssyxlp{pointer-events:auto;background:var(--kata-color-panel);border:var(--kata-border-width) solid var(--kata-color-line-strong);width:15rem;max-width:100%;padding:var(--kata-pad-md);--kata-inset:0px;--kata-at-start:1;--kata-at-end:1;--kata-box:var(--kata-height-button);flex:none;min-width:0}.cp.bare.svelte-1ssyxlp{background:0 0;border:0}.sv.svelte-1ssyxlp{background-image:linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, var(--kata-color-picker-hue,#03f));height:7.5rem;position:relative}.hue.svelte-1ssyxlp{background-image:linear-gradient(90deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red);flex:auto;min-width:0;height:.5rem;position:relative}.knob.svelte-1ssyxlp{width:var(--kata-height-icon);height:var(--kata-height-icon);border:calc(var(--kata-border-width) * 2) solid var(--kata-color-panel);box-shadow:0 0 0 var(--kata-border-width) var(--kata-color-text);position:absolute;transform:translate(-50%,-50%)}.fmt.svelte-1ssyxlp{flex:none}.seat.svelte-ms9ed5{align-items:center;gap:var(--kata-gap-sm);min-width:0;display:inline-flex}.dots.svelte-ms9ed5{align-items:center;gap:var(--kata-gap-2xs);display:inline-flex}.dots.svelte-ms9ed5 i:where(.svelte-ms9ed5){width:var(--kata-size-xs-rem);height:var(--kata-size-xs-rem);background:var(--kata-color-muted);animation:1.2s ease-in-out infinite svelte-ms9ed5-pulse;display:inline-block}.dots.svelte-ms9ed5 i:where(.svelte-ms9ed5):nth-child(2){opacity:.6;animation-delay:.15s}.dots.svelte-ms9ed5 i:where(.svelte-ms9ed5):nth-child(3){opacity:.3;animation-delay:.3s}@keyframes svelte-ms9ed5-pulse{0%,to{opacity:.25}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.dots.svelte-ms9ed5 i:where(.svelte-ms9ed5){animation:none}}.state.svelte-1dth4nt{color:var(--kata-color-muted);--kata-box:var(--kata-height-button);min-width:0}.t.svelte-1dth4nt{color:var(--kata-color-text);min-width:0;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);margin:0;display:block}.t.error.svelte-1dth4nt{color:var(--kata-color-red-ink)}.note.svelte-1dth4nt{font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);color:var(--kata-color-muted);display:block}.footer.svelte-1l56ikx{justify-content:flex-end;align-items:center;gap:var(--kata-gap-sm);min-height:var(--kata-height-footer);padding:var(--kata-pad-md);border-top:var(--kata-border-width) solid var(--kata-color-line);font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);--kata-box:var(--kata-height-button);flex-wrap:wrap;flex:none;display:flex}.lead.svelte-1l56ikx{flex:auto;align-items:center;min-width:0;margin-right:auto;display:flex}.actions.svelte-1l56ikx{justify-content:flex-end;align-items:center;gap:var(--kata-gap-sm);flex:none;max-width:100%;margin-left:auto;display:flex}@container app (width<48rem){.footer.svelte-1l56ikx{flex-direction:column;align-items:stretch}.actions.svelte-1l56ikx{flex-direction:column-reverse;align-items:stretch;margin-left:0}.lead.svelte-1l56ikx{order:1;margin-right:0}}.bar.svelte-1ur882v{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-height-toolbar);padding-inline:var(--kata-pad-md);min-width:0;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);--kata-box:var(--kata-height-button-sm);flex:none;display:flex}.bar.svelte-1ur882v>*{white-space:nowrap}.tail.svelte-1ur882v{padding-inline-end:var(--kata-pad-sm)}.two.svelte-1ur882v{height:auto;min-height:var(--kata-height-toolbar);padding-block:var(--kata-pad-md);align-items:flex-start}.two.svelte-1ur882v .title:where(.svelte-1ur882v){white-space:normal}.rule.svelte-1ur882v{border-bottom:var(--kata-border-width) solid var(--kata-color-line)}.title.svelte-1ur882v{font-size:var(--kata-text-size-h2);line-height:var(--kata-text-leading-h2);letter-spacing:var(--kata-text-tracking-h2);text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;flex:1;min-width:0;margin:0;font-weight:600;overflow:clip}.end.svelte-1ur882v{flex:none;align-items:center;gap:0;margin-left:auto;display:flex}.modal.svelte-1h44hk9{max-width:none;max-height:calc(100% - var(--kata-gap-lg) * 2);color:var(--kata-color-text);background:var(--kata-color-panel);border:var(--kata-border-width) solid var(--kata-color-line-strong);width:min(var(--kata-modal-width), 100% - var(--kata-gap-lg) * 2);--kata-box:var(--kata-height-button);flex-direction:column;margin:auto;padding:0;display:flex}.modal.svelte-1h44hk9:not([open]):not([data-inline]){display:none}.modal.svelte-1h44hk9::backdrop{background:var(--kata-color-scrim)}.sm.svelte-1h44hk9{--kata-modal-width:var(--kata-width-modal-sm)}.md.svelte-1h44hk9{--kata-modal-width:var(--kata-width-modal-md)}.lg.svelte-1h44hk9{--kata-modal-width:var(--kata-width-modal-lg)}.xl.svelte-1h44hk9{--kata-modal-width:var(--kata-width-modal-xl)}.modal.confirm.svelte-1h44hk9{width:min(var(--kata-width-modal-sm), 100% - var(--kata-gap-md) * 2)}.modal.full.svelte-1h44hk9{border:0;width:100%;max-width:100%;height:100%;max-height:100%}.modal[data-inline].svelte-1h44hk9{max-height:none;width:min(var(--kata-modal-width), 100%);margin:0}.sub.svelte-1h44hk9{padding:var(--kata-pad-sm) var(--kata-pad-md);border-bottom:var(--kata-border-width) solid var(--kata-color-line);flex:none}.body.svelte-1h44hk9{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:auto}.body.svelte-1h44hk9>*{flex:none}.body.svelte-1h44hk9:not(.flush){padding:var(--kata-pad-md);--kata-inset:0px;--kata-at-start:1;--kata-at-end:1}.body.flush.svelte-1h44hk9{--kata-inset:var(--kata-pad-md);--kata-at-start:0;--kata-at-end:0;padding:0}.drawbar.svelte-1iaoqhv{z-index:var(--kata-z-floating);align-items:center;gap:var(--kata-gap-md);padding:var(--kata-pad-sm);background:var(--kata-color-panel);color:var(--kata-color-text);border:var(--kata-border-width) solid var(--kata-color-line-strong);max-width:calc(100% - var(--kata-gap-md) * 2);--kata-box:var(--kata-height-button);display:flex;position:absolute;left:50%;overflow-x:auto;transform:translate(-50%)}.drawbar.svelte-1iaoqhv>*{flex:none}.group.svelte-1iaoqhv{align-items:center;gap:var(--kata-gap-2xs);display:flex}.inspector-row.svelte-mnvpz5{flex-direction:column;flex:none;min-width:0;display:flex}.small.svelte-mnvpz5{--kata-box:var(--kata-height-button-sm)}.end.svelte-mnvpz5{justify-content:flex-end;align-items:center;min-width:0;display:flex}.trigger.svelte-25hu01{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-box,var(--kata-height-button));padding-block:0;padding-inline:var(--kata-pad-md);border:var(--kata-border-width) solid var(--kata-color-line-strong);color:var(--kata-color-text);white-space:nowrap;font:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);cursor:pointer;background:0 0;border-radius:0;justify-content:space-between;width:100%;min-width:0;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.trigger.svelte-25hu01:focus-within{border-color:var(--kata-color-blue-ink)}.trigger.svelte-25hu01 select:where(.svelte-25hu01){min-width:0;color:inherit;font:inherit;appearance:none;background:0 0;border:0;outline:none;margin:0;padding:0}.trigger.svelte-25hu01 select:where(.svelte-25hu01):focus-visible{outline:none}.trigger.svelte-25hu01 select:where(.svelte-25hu01){cursor:pointer;flex:1;align-self:stretch}.trigger.svelte-25hu01 select:where(.svelte-25hu01):invalid{color:var(--kata-color-faint)}.trigger.svelte-25hu01 select:where(.svelte-25hu01) option:where(.svelte-25hu01){background:var(--kata-color-panel);color:var(--kata-color-text)}.trigger.svelte-25hu01 svg{flex:none}.err.svelte-25hu01{border-color:var(--kata-color-red-ink)}.disabled.svelte-25hu01{opacity:var(--kata-opacity-dim);cursor:default}.disabled.svelte-25hu01 select:where(.svelte-25hu01){cursor:default}.v.svelte-1t5kqdh{min-width:0;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);display:block}@container style(--kata-in-control:1){.v.svelte-1t5kqdh{text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em)}}.mono.svelte-1t5kqdh{font-family:var(--kata-font-mono);font-variant-numeric:tabular-nums}.muted.svelte-1t5kqdh{color:var(--kata-color-muted)}.clamp.svelte-1t5kqdh{white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;overflow:clip}.seg.svelte-1cta4cu{scrollbar-width:none;flex:none;max-width:100%;display:inline-flex;overflow-x:auto}.seg.svelte-1cta4cu::-webkit-scrollbar{display:none}.opt.svelte-1cta4cu{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-box,var(--kata-height-button));padding-block:0;padding-inline:var(--kata-pad-md);border:var(--kata-border-width) solid var(--kata-color-line-strong);color:var(--kata-color-text);white-space:nowrap;font:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);cursor:pointer;background:0 0;border-radius:0;flex:none;min-width:0;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.opt.svelte-1cta4cu:hover:not(.on):not(:disabled){background:var(--kata-color-raise)}.opt.svelte-1cta4cu:active:not(:disabled){background:var(--kata-color-raise-2);transition:none}.opt.svelte-1cta4cu:disabled{opacity:var(--kata-opacity-dim);cursor:default}.opt.svelte-1cta4cu+.opt:where(.svelte-1cta4cu){border-left-width:0}.opt.svelte-1cta4cu>svg{flex:none}.opt.svelte-1cta4cu .t:where(.svelte-1cta4cu){text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}.on.svelte-1cta4cu{background:var(--kata-color-solid);color:var(--kata-color-on-solid)}.icon.svelte-1cta4cu{width:var(--kata-box,var(--kata-height-button));justify-content:center;padding:0}.opt.svelte-1cta4cu:focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:-2px}.slider.svelte-excj0r{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-height-button-sm);min-width:0;display:flex}input.svelte-excj0r{appearance:none;min-width:0;height:var(--kata-height-button-sm);cursor:pointer;background:0 0;border:0;flex:1;margin:0;padding:0}input.svelte-excj0r::-webkit-slider-runnable-track{height:var(--kata-height-icon);background:linear-gradient(to right, var(--kata-color-solid) 0 var(--kata-slider-fill), var(--kata-color-line-strong) var(--kata-slider-fill) 100%) center/100% calc(var(--kata-border-width) * 2) no-repeat}input.svelte-excj0r::-moz-range-track{height:var(--kata-height-icon);background:linear-gradient(to right, var(--kata-color-solid) 0 var(--kata-slider-fill), var(--kata-color-line-strong) var(--kata-slider-fill) 100%) center/100% calc(var(--kata-border-width) * 2) no-repeat}input.svelte-excj0r::-webkit-slider-thumb{appearance:none;width:var(--kata-height-icon);height:var(--kata-height-icon);background:var(--kata-color-text);border:0;border-radius:0}input.svelte-excj0r::-moz-range-thumb{appearance:none;width:var(--kata-height-icon);height:var(--kata-height-icon);background:var(--kata-color-text);border:0;border-radius:0}input.svelte-excj0r:disabled{cursor:default}.val.svelte-excj0r{text-align:end;width:3.5rem;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);font-variant-numeric:tabular-nums;text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);flex:none}.disabled.svelte-excj0r{opacity:var(--kata-opacity-dim)}.swatch.svelte-m4u3ru{width:var(--kata-height-icon);height:var(--kata-height-icon);background:var(--kata-swatch-color);box-shadow:inset 0 0 0 var(--kata-border-width) var(--kata-color-line);flex:none;display:inline-block}.swatch[data-shape=dot].svelte-m4u3ru{border-radius:50%;width:.5rem;height:.5rem}.swatch[data-shape=line].svelte-m4u3ru{width:.875rem;height:calc(var(--kata-border-width) * 2);box-shadow:none}.swatch[data-shape=area].svelte-m4u3ru{width:.625rem;height:.625rem;box-shadow:inset 0 0 0 var(--kata-border-width) var(--kata-color-line-strong)}.swatch[data-shape=icon].svelte-m4u3ru{box-shadow:none;background:0 0;position:relative}.halo.svelte-m4u3ru,.ink.svelte-m4u3ru{display:flex;position:absolute;inset:0}.halo.svelte-m4u3ru{color:var(--kata-color-line-strong)}.halo.svelte-m4u3ru svg.kata-icon{stroke-width:3.5px}.swatch[data-shape=ramp].svelte-m4u3ru{width:3rem;height:.5rem;box-shadow:none}.swatch.fill.svelte-m4u3ru{width:100%}.ctl.svelte-1mse84q{align-items:center;gap:var(--kata-gap-sm);height:var(--kata-height-button-sm);padding-inline:var(--kata-inset,0px);cursor:pointer;min-width:0;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);display:flex}.between.svelte-1mse84q{justify-content:space-between}.indent.svelte-1mse84q{padding-left:var(--kata-pad-md)}.t.svelte-1mse84q{text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;display:block;overflow:clip}.grow.svelte-1mse84q{flex:auto}.toggle.svelte-1mse84q{appearance:none;width:var(--kata-height-button);height:var(--kata-height-badge);border:var(--kata-border-width) solid var(--kata-color-line-strong);cursor:pointer;background-color:#0000;background-image:linear-gradient(var(--kata-color-muted) 0 0);background-repeat:no-repeat;background-size:calc(var(--kata-height-badge) - var(--kata-border-width) * 6) calc(var(--kata-height-badge) - var(--kata-border-width) * 6);background-position:left calc(var(--kata-border-width) * 2) center;border-radius:0;flex:none;margin:0;padding:0;transition:background-color .12s,border-color .12s}.toggle.svelte-1mse84q:checked{background-color:var(--kata-color-solid);background-image:linear-gradient(var(--kata-color-on-solid) 0 0);background-position:right calc(var(--kata-border-width) * 2) center;border-color:var(--kata-color-solid)}.disabled.svelte-1mse84q{opacity:var(--kata-opacity-dim);cursor:default}.disabled.svelte-1mse84q .toggle:where(.svelte-1mse84q){cursor:default}.floating.svelte-1e14x9s{z-index:var(--kata-z-floating);background:var(--kata-color-panel);color:var(--kata-color-text);border:var(--kata-border-width) solid var(--kata-color-line-strong);--kata-inset:var(--kata-pad-md);--kata-at-start:0;--kata-at-end:0;--kata-box:var(--kata-height-button);min-width:0;max-width:100%;padding:0;position:absolute}.flow.svelte-1e14x9s{flex:auto;min-height:0;display:flex;position:static}.panel.svelte-c5m1zo{background:var(--kata-color-panel);min-width:0;min-height:0;color:var(--kata-color-text);--kata-box:var(--kata-height-button);flex-direction:column;flex:none;display:flex}.panel.svelte-c5m1zo>*{flex:none}.panel.svelte-c5m1zo>.scroll:where(.svelte-c5m1zo){flex:auto}.grip.svelte-c5m1zo{position:relative}.handle.svelte-c5m1zo{height:var(--kata-pad-sm);z-index:1;cursor:ns-resize;touch-action:none;position:absolute;top:0;left:0;right:0}.handle.svelte-c5m1zo:focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:-2px}.fit.svelte-c5m1zo{align-self:flex-start;height:auto;max-height:100%}.panel[data-side=rail].svelte-c5m1zo{width:var(--kata-width-rail);max-width:100%}.panel[data-side=panel].svelte-c5m1zo{width:var(--kata-width-panel);max-width:100%}.panel[data-side=fill].svelte-c5m1zo{flex:auto;width:100%}.scroll.svelte-c5m1zo{--kata-inset:var(--kata-pad-md);--kata-at-start:0;--kata-at-end:0;min-width:0;min-height:0;padding:0;overflow:auto}.tabs.svelte-94ygyu{border-bottom:var(--kata-border-width) solid var(--kata-color-line);flex:none;min-width:0;display:flex;position:relative;overflow:clip}.tabs.bar.svelte-94ygyu{border-bottom:0;flex:auto}.tabs.bar.svelte-94ygyu .tab:where(.svelte-94ygyu){height:var(--kata-height-toolbar)}.tab.svelte-94ygyu{align-items:center;gap:var(--kata-gap-2xs);height:var(--kata-height-list-item);padding-inline:var(--kata-pad-md);color:var(--kata-color-muted);font:inherit;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);white-space:nowrap;cursor:pointer;background:0 0;border:0;flex:none;text-decoration:none;transition:color .12s;display:inline-flex}.tab.svelte-94ygyu:hover{color:var(--kata-color-text);background:var(--kata-color-raise);text-decoration:none}.tab.svelte-94ygyu:focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:-2px}.t.svelte-94ygyu{text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}.on.svelte-94ygyu{color:var(--kata-color-text);box-shadow:inset 0 calc(var(--kata-border-width) * -2) 0 var(--kata-color-blue-ink)}.measure.svelte-94ygyu{inset-inline-start:0;visibility:hidden;pointer-events:none;white-space:nowrap;display:flex;position:absolute;top:0}.name.svelte-i0coks{flex-direction:column;flex:auto;min-width:0;display:flex}.kata-section-header.svelte-ohv8ws{--kata-inset:var(--kata-pad-md);--kata-at-start:0;--kata-at-end:0;min-width:0;--kata-box:var(--kata-height-button);flex-direction:column;flex:none;padding:0;padding-block-start:var(--kata-pad-sm);display:flex}.kata-section-header.svelte-ohv8ws:first-child,[data-role=rule]+.kata-section-header.svelte-ohv8ws{padding-block-start:var(--kata-pad-lg)}.rule.svelte-ohv8ws{border-top:var(--kata-border-width) solid var(--kata-color-line);padding-block-start:var(--kata-pad-lg)}.kata-section-header:has(+.kata-section-header.rule)>.body.svelte-ohv8ws{padding-bottom:var(--kata-pad-lg)}.kata-section-header.flush:has(+.kata-section-header.rule)>.body.svelte-ohv8ws{padding-bottom:var(--kata-pad-sm)}.body.svelte-ohv8ws{padding:var(--kata-pad-md);--kata-inset:0px;min-width:0}.kata-section-header.svelte-ohv8ws:not(.flush)>.body:where(.svelte-ohv8ws){--kata-at-start:1;--kata-at-end:1}.flush.svelte-ohv8ws>.body:where(.svelte-ohv8ws){--kata-inset:var(--kata-pad-md);padding:0}.flush.svelte-ohv8ws>.body:where(.svelte-ohv8ws)>[data-role=list-item]:last-child{padding-bottom:var(--kata-pad-md)}.head.svelte-ohv8ws{align-items:center;gap:var(--kata-gap-sm);padding-inline:var(--kata-pad-md);min-width:0;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);--kata-box:var(--kata-height-button-sm);display:flex}.label.svelte-ohv8ws{font-size:var(--kata-text-size-label);line-height:var(--kata-text-leading-label);letter-spacing:var(--kata-text-tracking-label);text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;flex:1;min-width:0;font-weight:600;overflow:clip}.side.svelte-ohv8ws{align-items:center;gap:var(--kata-gap-sm);height:0;margin-left:auto;display:flex;overflow:visible}.kbd.svelte-12dwgij{height:var(--kata-height-badge);padding-inline:var(--kata-pad-xs);border:var(--kata-border-width) solid var(--kata-color-line-strong);font-family:var(--kata-font-mono);font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);white-space:nowrap;flex:none;justify-content:center;align-items:center;display:inline-flex}.key.svelte-12dwgij{text-box:trim-both cap alphabetic;min-width:0;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);display:block}.bare.svelte-12dwgij{border:0;height:auto;padding:0}.markbox.svelte-1dtk7o4{width:var(--kata-height-icon);height:var(--kata-height-icon);flex:none;justify-content:center;align-items:center;display:inline-flex}.glyph.svelte-1dtk7o4{font-family:var(--kata-glyph-font,inherit)}.tree.svelte-1e58r0m{flex:none;min-width:0}.tree[data-rows=mark].svelte-1e58r0m{--kata-list-item-height:var(--kata-height-list-item-mark)}.tree[data-rows=box].svelte-1e58r0m{--kata-list-item-height:var(--kata-height-list-item-lg)}.tree[data-rows=thumb].svelte-1e58r0m{--kata-list-item-height:var(--kata-height-thumbnail-row)}.tree[data-rows=two].svelte-1e58r0m{--kata-list-item-height:var(--kata-height-list-item-two)}.row.svelte-1g8tp55{align-items:center;gap:var(--kata-gap-sm);min-height:var(--kata-list-item-height,var(--kata-height-list-item));padding-inline:var(--kata-inset,var(--kata-pad-md));width:100%;min-width:0;color:inherit;cursor:default;font-size:var(--kata-text-size-body);line-height:var(--kata-text-leading-body);letter-spacing:var(--kata-text-tracking-body);--kata-box:var(--kata-height-button-sm);flex:none;text-decoration:none;display:grid;position:relative}.row.svelte-1g8tp55 [data-role=mark][data-h]:not([data-h=icon]),.row.svelte-1g8tp55 [data-role=mark][data-kata-tall],.row.svelte-1g8tp55 [data-role=box][data-h]:not(.ghost),.row.svelte-1g8tp55 input:not([type=checkbox]):not([type=radio]),.row.svelte-1g8tp55 select,.row.svelte-1g8tp55 textarea{margin-block:var(--kata-text-size-body)}.row.svelte-1g8tp55 [data-role=stack]{padding-block:var(--kata-text-size-body)}.row.svelte-1g8tp55 [data-role=stack] [data-role=stack]{padding-block:0}.row.svelte-1g8tp55 [data-role=stack] [data-role=mark][data-h]:not([data-h=icon]),.row.svelte-1g8tp55 [data-role=stack] [data-role=mark][data-kata-tall],.row.svelte-1g8tp55 [data-role=stack] [data-role=box][data-h]:not(.ghost),.row.svelte-1g8tp55 [data-role=stack] input:not([type=checkbox]):not([type=radio]),.row.svelte-1g8tp55 [data-role=stack] select,.row.svelte-1g8tp55 [data-role=stack] textarea,.row.svelte-1g8tp55 [data-role=box] input:not([type=checkbox]):not([type=radio]),.row.svelte-1g8tp55 [data-role=box] select,.row.svelte-1g8tp55 [data-role=box] textarea{margin-block:0}.row.svelte-1g8tp55>*{min-width:0}.row.svelte-1g8tp55>:where(span,a,p):not([data-role]):not([data-h]){text-box:trim-both cap alphabetic;padding-top:calc(var(--kata-ink-over) * 1em);padding-bottom:calc(var(--kata-ink-under) * 1em);white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;overflow:clip}.row.svelte-1g8tp55:focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:-2px}.tail.svelte-1g8tp55{padding-inline-end:var(--kata-pad-sm)}.row[role=button].svelte-1g8tp55,a.row.svelte-1g8tp55{cursor:pointer}.row[role=button].svelte-1g8tp55:hover,a.row.svelte-1g8tp55:hover{background:var(--kata-color-raise)}.sel.svelte-1g8tp55{background:var(--kata-color-raise);box-shadow:inset 2px 0 0 var(--kata-color-blue-ink)}.rule.svelte-1g8tp55{border-bottom:var(--kata-border-width) solid var(--kata-color-line)}.rule.svelte-1g8tp55:last-child{border-bottom:0}.plain.svelte-1g8tp55,.plain.svelte-1g8tp55:hover{cursor:default;background:0 0}.sel.plain.svelte-1g8tp55{background:var(--kata-color-raise)}.tree-row.svelte-sy678e{flex:none;min-width:0}.tree-row.svelte-sy678e>[data-role=list-item]{padding-left:calc(var(--kata-pad-md) + var(--kata-tree-depth,0) * var(--kata-pad-md))}.seat.svelte-sy678e{width:var(--kata-height-icon-button);flex:none}.grip.svelte-sy678e{top:50%;left:calc(var(--kata-pad-md) + var(--kata-tree-depth,0) * var(--kata-pad-md) + var(--kata-height-icon-button) + var(--kata-pad-sm));translate:calc(-1 * (var(--kata-height-icon) + var(--kata-pad-2xs))) -50%;width:var(--kata-pad-md);height:var(--kata-height-icon-button);color:var(--kata-color-faint);cursor:grab;opacity:0;justify-content:center;align-items:center;transition:opacity .12s;display:inline-flex;position:absolute}.grip.beside.svelte-sy678e{left:calc(var(--kata-pad-md) + var(--kata-tree-depth,0) * var(--kata-pad-md))}.tree-row.svelte-sy678e:hover .grip:where(.svelte-sy678e),.tree-row.svelte-sy678e:focus-within .grip:where(.svelte-sy678e),.grip.show.svelte-sy678e{opacity:1}.chev.svelte-sy678e{width:var(--kata-height-icon-button);height:var(--kata-height-icon-button);color:var(--kata-color-muted);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.chev.svelte-sy678e:hover{background:var(--kata-color-raise-2);color:var(--kata-color-text)}.chev.svelte-sy678e:focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:-2px}.main.svelte-sy678e{align-items:center;gap:var(--kata-gap-sm);display:flex}.main.svelte-sy678e>[data-role=stack]{white-space:normal;flex:auto;min-width:0}.end.svelte-sy678e{flex:none;align-items:center;gap:0;display:flex}.end.svelte-sy678e>:not([data-keep]){opacity:0}.tree-row.svelte-sy678e .end:where(.svelte-sy678e) [data-role=mark][data-h]{margin-block:0}@container app (width<24rem){.end.svelte-sy678e{right:var(--kata-pad-sm);position:absolute;top:50%;transform:translateY(-50%)}}.tree-row.svelte-sy678e:hover .end:where(.svelte-sy678e)>*,.tree-row.svelte-sy678e:focus-within .end:where(.svelte-sy678e)>*,.tree-row[data-open].svelte-sy678e .end:where(.svelte-sy678e)>*{opacity:1}.hidden.svelte-sy678e,.dimmed.svelte-sy678e,.dragging.svelte-sy678e{opacity:var(--kata-opacity-dim)}.sortghost>.tree-row.svelte-sy678e>[data-role=list-item],.tree-row.svelte-sy678e.sortghost>[data-role=list-item]{background:var(--kata-color-raise-2);box-shadow:inset 0 0 0 calc(var(--kata-border-width) * 2) var(--kata-color-blue-ink)}.sortchosen>.tree-row.svelte-sy678e>[data-role=list-item],.tree-row.svelte-sy678e.sortchosen>[data-role=list-item]{background:var(--kata-color-raise-2)}.layer-tree.svelte-h7so0d,.item.svelte-h7so0d,.zone.svelte-h7so0d{flex-direction:column;flex:none;min-width:0;display:flex}.rename.svelte-h7so0d{flex:auto;min-width:0;display:flex}.list.svelte-1p9xdg6{min-width:0}.list[data-rows=mark].svelte-1p9xdg6{--kata-list-item-height:var(--kata-height-list-item-mark)}.list[data-rows=box].svelte-1p9xdg6{--kata-list-item-height:var(--kata-height-list-item-lg)}.list[data-rows=thumb].svelte-1p9xdg6{--kata-list-item-height:var(--kata-height-thumbnail-row)}.list[data-rows=two].svelte-1p9xdg6{--kata-list-item-height:var(--kata-height-list-item-two)}.sheet.svelte-133xsmz{background:var(--kata-color-panel);min-width:0;max-height:100%;color:var(--kata-color-text);border-top:var(--kata-border-width) solid var(--kata-color-line-strong);z-index:var(--kata-z-sheet);--kata-box:var(--kata-height-button);flex-direction:column;transition:height .24s cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;bottom:0;left:0;right:0}.sheet.svelte-133xsmz>*{flex:none}.sheet.svelte-133xsmz>.scroll:where(.svelte-133xsmz){flex:auto}aside.sheet[data-inline].svelte-133xsmz{flex:none;position:static}.sheet.dragging.svelte-133xsmz{transition:none}.sheet[data-stage=peek].svelte-133xsmz>.scroll:where(.svelte-133xsmz):not(.pane),.sheet[data-stage=peek].svelte-133xsmz>.scroll.pane:where(.svelte-133xsmz) .scroll{display:none}.sheet[data-stage=half].svelte-133xsmz{height:50%}.sheet[data-stage=full].svelte-133xsmz{height:100%}.scroll.svelte-133xsmz{--kata-inset:var(--kata-pad-md);--kata-at-start:0;--kata-at-end:0;min-width:0;min-height:0;padding:0;overflow:auto}.scroll.pane.svelte-133xsmz{display:flex;overflow:hidden}.scroll.pane.svelte-133xsmz>*{flex:auto;width:100%;max-width:none;min-height:0}.handle.svelte-133xsmz{height:var(--kata-gap-md);cursor:grab;touch-action:none;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:flex}.handle.svelte-133xsmz:active{cursor:grabbing}.handle.svelte-133xsmz:before{content:"";width:calc(var(--kata-gap-md) * 2);height:calc(var(--kata-border-width) * 2);background:var(--kata-color-line-strong)}.progress.svelte-ljnajx{height:var(--kata-gap-2xs);background:var(--kata-color-line);flex:none;min-width:0;position:relative;overflow:hidden}.fill.svelte-ljnajx{background:var(--kata-color-solid);height:100%;position:absolute;top:0;left:0}.indet.svelte-ljnajx .fill:where(.svelte-ljnajx){width:30%;animation:1.6s ease-in-out infinite svelte-ljnajx-flow;left:35%}@keyframes svelte-ljnajx-flow{0%{transform:translate(-135%)}to{transform:translate(135%)}}@media (prefers-reduced-motion:reduce){.indet.svelte-ljnajx .fill:where(.svelte-ljnajx){animation:none}}.kata-section.svelte-1owbyz{min-width:0;padding-bottom:var(--kata-gap-lg);--kata-box:var(--kata-height-button);flex-direction:column;display:flex}.kata-section.flush.svelte-1owbyz{padding-bottom:var(--kata-gap-sm)}.kata-section.svelte-1owbyz:last-child{padding-bottom:0}.kata-section.svelte-1owbyz:not(:first-child){padding-top:var(--kata-pad-lg)}.kata-section.svelte-1owbyz+.kata-section{border-top:var(--kata-border-width) solid var(--kata-color-line)}.title.svelte-1owbyz{font-size:var(--kata-text-size-h2);line-height:var(--kata-text-leading-h2);letter-spacing:var(--kata-text-tracking-h2);text-box:trim-start cap alphabetic;padding-top:var(--kata-edge-top);min-width:0;margin:0;font-weight:600}.body.svelte-1owbyz{--kata-inset:0px;--kata-at-start:1;--kata-at-end:1;min-width:0}.head.svelte-1owbyz{justify-content:space-between;align-items:center;gap:var(--kata-gap-sm);flex-wrap:wrap;min-width:0;display:flex}.status.svelte-1owbyz{font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);color:var(--kata-color-muted)}.note.svelte-1owbyz{font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);color:var(--kata-color-muted);min-width:0;margin:0}.stat.svelte-8z7i8c{flex-direction:column;min-width:0;display:flex}.v.svelte-8z7i8c{font-size:var(--kata-text-size-num);line-height:var(--kata-text-leading-num);letter-spacing:var(--kata-text-tracking-num);font-variant-numeric:tabular-nums;font-variant-numeric:tabular-nums;font-weight:600}.k.svelte-8z7i8c{align-items:center;gap:var(--kata-gap-2xs);min-width:0;font-size:var(--kata-text-size-caption);line-height:var(--kata-text-leading-caption);letter-spacing:var(--kata-text-tracking-caption);color:var(--kata-color-muted);display:flex}.k.svelte-8z7i8c>svg{flex:none}.t.svelte-8z7i8c{white-space:nowrap;overflow-clip-margin:.382em;text-overflow:ellipsis;min-width:0;display:block;overflow:clip}.stats.svelte-198v5v7{gap:var(--kata-gap-sm) var(--kata-gap-lg);flex-wrap:wrap;min-width:0;display:flex}.veil.svelte-1xzvv0e{z-index:var(--kata-z-modal);background:var(--kata-color-ground);place-items:center;display:grid;position:absolute;inset:0}.shell.svelte-bn7tso{width:100%;min-width:0;height:100%;min-height:0;color:var(--kata-color-text);flex-direction:column;display:flex;position:relative;overflow:hidden;container:app/inline-size}.shell.svelte-bn7tso>.top:where(.svelte-bn7tso){flex:none;min-width:0}.body.svelte-bn7tso{flex:auto;min-width:0;min-height:0;display:flex}.side.svelte-bn7tso{flex:none;max-width:50%;min-height:0;display:flex}.side.svelte-bn7tso>*{flex:auto;min-height:0}.side.left.svelte-bn7tso{border-right:var(--kata-border-width) solid var(--kata-color-line-strong)}.side.right.svelte-bn7tso{border-left:var(--kata-border-width) solid var(--kata-color-line-strong)}.main.svelte-bn7tso{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.stage.svelte-bn7tso{flex:auto;min-height:0;position:relative;overflow:hidden}.surface.svelte-bn7tso{position:absolute;inset:0}.bottom.svelte-bn7tso{left:0;right:0;bottom:var(--kata-shell-lift,0px);height:0;position:absolute}.stage.svelte-bn7tso>[data-role=floating]{box-sizing:border-box;width:var(--kata-width-panel);max-width:calc(100% - var(--kata-gap-md) * 2);max-height:calc(100% - var(--kata-gap-md) * 2);flex-direction:column;display:flex}.stage.svelte-bn7tso .pane:where(.svelte-bn7tso){flex-direction:column;flex:0 auto;min-height:0;display:flex}.stage.svelte-bn7tso .pane:where(.svelte-bn7tso)>*{flex:0 auto;min-height:0}.sheet-seat.svelte-bn7tso{pointer-events:none;position:absolute;inset:0}.sheet-seat.svelte-bn7tso>*{pointer-events:auto}.dock.svelte-bn7tso{min-height:0;height:clamp(var(--kata-height-toolbar), var(--kata-shell-dock,38.2%), 100% - var(--kata-height-toolbar));border-top:var(--kata-border-width) solid var(--kata-color-line-strong);flex:none;display:flex;position:relative}.dock.svelte-bn7tso>*{flex:auto;min-height:0}.shell.overlay.svelte-bn7tso{pointer-events:none}.shell.overlay.svelte-bn7tso>.top:where(.svelte-bn7tso),.shell.overlay.svelte-bn7tso>.body:where(.svelte-bn7tso)>.side:where(.svelte-bn7tso),.shell.overlay.svelte-bn7tso>.body:where(.svelte-bn7tso)>.main:where(.svelte-bn7tso)>.dock:where(.svelte-bn7tso),.shell.overlay.svelte-bn7tso>.body:where(.svelte-bn7tso)>.main:where(.svelte-bn7tso)>.stage:where(.svelte-bn7tso)>.bottom:where(.svelte-bn7tso),.shell.overlay.svelte-bn7tso>.body:where(.svelte-bn7tso)>.main:where(.svelte-bn7tso)>.stage:where(.svelte-bn7tso)>[data-role=floating],.shell.overlay.svelte-bn7tso>.body:where(.svelte-bn7tso)>.main:where(.svelte-bn7tso)>.stage:where(.svelte-bn7tso)>[data-role=veil],.shell.overlay.svelte-bn7tso>dialog{pointer-events:auto}.grip.svelte-bn7tso{height:var(--kata-pad-sm);z-index:1;cursor:ns-resize;touch-action:none;flex:none;position:absolute;top:0;left:0;right:0}.grip.svelte-bn7tso:focus-visible{outline:2px solid var(--kata-color-focus);outline-offset:-2px}.markup.svelte-z8ueu3{width:var(--kata-height-icon);height:var(--kata-height-icon);flex:none;display:block}.markup.svelte-z8ueu3>svg{width:100%;height:100%;display:block}.inspector.svelte-17w6cpd{min-width:0;height:100%;min-height:0;max-height:100%;display:flex}.layer-panel.svelte-1kmcjp7{flex-direction:column;min-width:0;display:flex}.active.svelte-1kmcjp7{flex:none;display:inline-flex}.legend.svelte-pswzrf{flex-direction:column;min-width:0;display:flex}
|
|
3
|
+
/*$vite$:1*/
|
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** The theme of the interface: `light`, `dark`, or `auto` to follow the system */
|
|
2
|
+
export type Theme = 'light' | 'dark' | 'auto';
|
|
3
|
+
/** The query of the system's preference that `auto` follows */
|
|
4
|
+
export declare const LIGHT_QUERY = "(prefers-color-scheme: light)";
|
|
5
|
+
/** The theme of the options, `auto` when left out */
|
|
6
|
+
export declare function checkTheme(theme: Theme | undefined): Theme;
|
|
7
|
+
/** The theme of a root element, to change and to stop following the system */
|
|
8
|
+
export interface ThemeControl {
|
|
9
|
+
/** Changes the theme */
|
|
10
|
+
set(theme: Theme): void;
|
|
11
|
+
/** Stops following the system. A second call does nothing */
|
|
12
|
+
destroy(): void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Keeps the theme of a root element. With `auto`, it follows the system's preference while it
|
|
16
|
+
* lasts; without `window.matchMedia`, `auto` is dark.
|
|
17
|
+
*
|
|
18
|
+
* `onlook` is called with the look applied (true for light) each time it is applied: at once,
|
|
19
|
+
* on each change of the theme and, with `auto`, on each change of the system's preference.
|
|
20
|
+
*
|
|
21
|
+
* @throws Error when the theme is not `light`, `dark` or `auto`
|
|
22
|
+
*/
|
|
23
|
+
export declare function themeControl(root: HTMLElement, theme: Theme | undefined, onlook?: (light: boolean) => void): ThemeControl;
|
package/dist/tools.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type DrawbarTool, type IconComponent, type IconSource } from '@sakuzu/kata/svelte';
|
|
2
|
+
import type { Mode } from '@sakuzu/maplibre-gl-draw';
|
|
3
|
+
import type { Messages } from './messages.js';
|
|
4
|
+
import type { ToolEntry, ToolId, ToolSpec } from './types.js';
|
|
5
|
+
/** The built-in tools, in the order of the toolbar */
|
|
6
|
+
export declare const TOOL_IDS: readonly ToolId[];
|
|
7
|
+
/** The mode, the key and the group of each built-in tool */
|
|
8
|
+
export declare const BUILTIN_TOOLS: Readonly<Record<ToolId, {
|
|
9
|
+
mode: Mode;
|
|
10
|
+
shortcut: string;
|
|
11
|
+
group: string;
|
|
12
|
+
}>>;
|
|
13
|
+
/** The IDs that the toolbar keeps for its own buttons */
|
|
14
|
+
export declare const DELETE_ID = "delete";
|
|
15
|
+
export declare const SNAPPING_ID = "snapping";
|
|
16
|
+
/** The built-in icons, by name: kata's icons where it has them, Lucide's for the rest */
|
|
17
|
+
export declare const BUILTIN_ICONS: Readonly<Record<string, IconSource>>;
|
|
18
|
+
/** Whether a name is the ID of a built-in tool */
|
|
19
|
+
export declare function isToolId(value: unknown): value is ToolId;
|
|
20
|
+
/**
|
|
21
|
+
* Checks a tool of the application
|
|
22
|
+
*
|
|
23
|
+
* @throws Error when a field is missing or has the wrong type, or the icon is neither markup
|
|
24
|
+
* nor the name of a built-in icon
|
|
25
|
+
*/
|
|
26
|
+
export declare function checkSpec(spec: ToolSpec): void;
|
|
27
|
+
/**
|
|
28
|
+
* The tools of the options, checked
|
|
29
|
+
*
|
|
30
|
+
* @throws Error when a name is not a built-in tool, a tool is not valid, or two tools share an ID
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeTools(tools?: readonly ToolEntry[]): ToolEntry[];
|
|
33
|
+
/** The ID of a tool */
|
|
34
|
+
export declare function entryId(entry: ToolEntry): string;
|
|
35
|
+
/**
|
|
36
|
+
* The tools with one more: after the last tool of its group, or at the end when no tool is in
|
|
37
|
+
* its group
|
|
38
|
+
*/
|
|
39
|
+
export declare function insertTool(entries: readonly ToolEntry[], spec: ToolSpec): ToolEntry[];
|
|
40
|
+
/** A tool as `tools.list()` returns it: a built-in tool with its words and the name of its icon */
|
|
41
|
+
export declare function toSpec(entry: ToolEntry, messages: Messages): ToolSpec;
|
|
42
|
+
/**
|
|
43
|
+
* An icon component that draws SVG markup, made once for each markup. It receives the class of
|
|
44
|
+
* kata's icons and passes it on, so the markup is sized like the built-in icons
|
|
45
|
+
*/
|
|
46
|
+
export declare function markupIcon(svg: string): IconComponent;
|
|
47
|
+
/** The icon of a tool */
|
|
48
|
+
export declare function specIcon(spec: ToolSpec): IconSource;
|
|
49
|
+
/** The key of a shortcut as kata writes it: modifiers and keys in lowercase */
|
|
50
|
+
export declare function shortcutKey(shortcut: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* The tools of the Drawbar of kata
|
|
53
|
+
*
|
|
54
|
+
* @param keys Whether the keys are shown in the tooltips (only when the shortcuts are on)
|
|
55
|
+
*/
|
|
56
|
+
export declare function drawbarTools(specs: readonly ToolSpec[], keys: boolean): DrawbarTool[];
|