@sortsys/ui 0.1.12 → 0.1.14

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/dist/dev.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { delegateEvents, template, insert, memo, effect, className, setAttribute, use, createComponent, addEventListener, spread, mergeProps, style, setStyleProperty, Portal } from 'solid-js/web';
2
2
  import { createContext, useContext, createSignal, onMount, onCleanup, createEffect, createUniqueId, For, untrack, createMemo, children, Show, createResource } from 'solid-js';
3
- import { useLocation, A, useNavigate } from '@solidjs/router';
3
+ import { A, useLocation, useNavigate } from '@solidjs/router';
4
4
 
5
5
  // src/components/SSButton.tsx
6
6
  var _tmpl$ = /* @__PURE__ */ template(`<button>`);
@@ -1580,6 +1580,32 @@ function SSHeader(props) {
1580
1580
  return _el$;
1581
1581
  })();
1582
1582
  }
1583
+ function SSLink(props) {
1584
+ return createComponent(A, {
1585
+ get href() {
1586
+ return props.href;
1587
+ },
1588
+ get ["class"]() {
1589
+ return `ss_link ${props.class ?? ""}`;
1590
+ },
1591
+ get style() {
1592
+ return props.style;
1593
+ },
1594
+ get target() {
1595
+ return props.blank ? "_blank" : void 0;
1596
+ },
1597
+ get rel() {
1598
+ return props.blank ? "noopener noreferrer" : void 0;
1599
+ },
1600
+ onclick: (event) => {
1601
+ event.stopPropagation();
1602
+ props.onClick?.(event);
1603
+ },
1604
+ get children() {
1605
+ return props.children;
1606
+ }
1607
+ });
1608
+ }
1583
1609
  var _tmpl$20 = /* @__PURE__ */ template(`<div class=ss_modal__footer>`);
1584
1610
  var _tmpl$29 = /* @__PURE__ */ template(`<div class=ss_modal><div class=ss_modal__backdrop></div><div class=ss_modal__panel role=dialog aria-modal=true tabindex=-1><div class=ss_modal__body><div class=ss_modal__body_inner>`);
1585
1611
  var _tmpl$38 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="icon icon-tabler icons-tabler-outline icon-tabler-x"><path stroke=none d="M0 0h24v24H0z"fill=none></path><path d="M18 6l-12 12"></path><path d="M6 6l12 12">`);
@@ -1928,7 +1954,24 @@ function SSModalsProvider(props) {
1928
1954
  }
1929
1955
  });
1930
1956
  }
1931
- var _tmpl$21 = /* @__PURE__ */ template(`<div><input type=checkbox class=ss_shell__drawer_toggle_input><header class=ss_shell__header><div class=ss_shell__header_left><label class="ss_shell__drawer_toggle ss_button ss_button--icon"aria-label="Navigation \xF6ffnen"role=button tabindex=0><svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="icon icon-tabler icons-tabler-outline icon-tabler-menu-2"><path stroke=none d="M0 0h24v24H0z"fill=none></path><path d="M4 6l16 0"></path><path d="M4 12l16 0"></path><path d="M4 18l16 0"></path></svg></label><div class=ss_shell__title></div></div><div class=ss_shell__actions></div></header><div class=ss_shell__body><nav class=ss_shell__nav aria-label=Hauptnavigation><div class=ss_shell__nav_inner></div></nav><div class=ss_shell__main></div><label class=ss_shell__scrim aria-label="Navigation schlie\xDFen">`);
1957
+ var _tmpl$21 = /* @__PURE__ */ template(`<div>`);
1958
+ function SSRow(props) {
1959
+ return (() => {
1960
+ var _el$ = _tmpl$21();
1961
+ insert(_el$, () => props.children);
1962
+ effect((_p$) => {
1963
+ var _v$ = `ss_row ${props.wrap ? "ss_row--wrap" : ""} ${props.class ?? ""}`, _v$2 = props.style;
1964
+ _v$ !== _p$.e && className(_el$, _p$.e = _v$);
1965
+ _p$.t = style(_el$, _v$2, _p$.t);
1966
+ return _p$;
1967
+ }, {
1968
+ e: void 0,
1969
+ t: void 0
1970
+ });
1971
+ return _el$;
1972
+ })();
1973
+ }
1974
+ var _tmpl$30 = /* @__PURE__ */ template(`<div><input type=checkbox class=ss_shell__drawer_toggle_input><header class=ss_shell__header><div class=ss_shell__header_left><label class="ss_shell__drawer_toggle ss_button ss_button--icon"aria-label="Navigation \xF6ffnen"role=button tabindex=0><svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="icon icon-tabler icons-tabler-outline icon-tabler-menu-2"><path stroke=none d="M0 0h24v24H0z"fill=none></path><path d="M4 6l16 0"></path><path d="M4 12l16 0"></path><path d="M4 18l16 0"></path></svg></label><div class=ss_shell__title></div></div><div class=ss_shell__actions></div></header><div class=ss_shell__body><nav class=ss_shell__nav aria-label=Hauptnavigation><div class=ss_shell__nav_inner></div></nav><div class=ss_shell__main></div><label class=ss_shell__scrim aria-label="Navigation schlie\xDFen">`);
1932
1975
  var _tmpl$210 = /* @__PURE__ */ template(`<div class=ss_shell__nav_list>`);
1933
1976
  var _tmpl$39 = /* @__PURE__ */ template(`<a class=ss_shell__nav_item><span class=ss_shell__nav_label>`);
1934
1977
  var _tmpl$46 = /* @__PURE__ */ template(`<span class=ss_shell__nav_icon>`);
@@ -1968,7 +2011,7 @@ function SSShell(props) {
1968
2011
  unregisterHref
1969
2012
  },
1970
2013
  get children() {
1971
- var _el$ = _tmpl$21(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$7 = _el$4.nextSibling, _el$8 = _el$3.nextSibling, _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$9.nextSibling, _el$10 = _el$1.nextSibling;
2014
+ var _el$ = _tmpl$30(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$7 = _el$4.nextSibling, _el$8 = _el$3.nextSibling, _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$9.nextSibling, _el$10 = _el$1.nextSibling;
1972
2015
  setAttribute(_el$2, "id", drawerId);
1973
2016
  setAttribute(_el$5, "for", drawerId);
1974
2017
  insert(_el$6, () => props.title);
@@ -2066,10 +2109,10 @@ SSShell.NavGroup = function(props) {
2066
2109
  })();
2067
2110
  };
2068
2111
  delegateEvents(["click"]);
2069
- var _tmpl$30 = /* @__PURE__ */ template(`<div>`);
2112
+ var _tmpl$31 = /* @__PURE__ */ template(`<div>`);
2070
2113
  function SSSurface(props) {
2071
2114
  return (() => {
2072
- var _el$ = _tmpl$30();
2115
+ var _el$ = _tmpl$31();
2073
2116
  insert(_el$, () => props.children);
2074
2117
  effect((_p$) => {
2075
2118
  var _v$ = `ss_surface ${props.class ?? ""}`, _v$2 = props.style;
@@ -2083,20 +2126,171 @@ function SSSurface(props) {
2083
2126
  return _el$;
2084
2127
  })();
2085
2128
  }
2086
- var _tmpl$31 = /* @__PURE__ */ template(`<div><div class=ss_tile__row><div class=ss_tile__content>`);
2087
- var _tmpl$211 = /* @__PURE__ */ template(`<span class=ss_tile__icon>`);
2088
- var _tmpl$310 = /* @__PURE__ */ template(`<h5 class=ss_tile__title>`);
2129
+ var _tmpl$40 = /* @__PURE__ */ template(`<div>`);
2130
+ var _tmpl$211 = /* @__PURE__ */ template(`<div role=tablist>`);
2131
+ var _tmpl$310 = /* @__PURE__ */ template(`<button type=button role=tab>`);
2132
+ var SSTabsContext = createContext();
2133
+ function SSTabs(props) {
2134
+ const [tabIds, setTabIds] = createSignal([]);
2135
+ const tabElements = /* @__PURE__ */ new Map();
2136
+ const count = createMemo(() => tabIds().length);
2137
+ const registerTab = (id, element) => {
2138
+ let nextIndex = -1;
2139
+ tabElements.set(id, element);
2140
+ setTabIds((prev) => {
2141
+ const existing = prev.indexOf(id);
2142
+ if (existing >= 0) {
2143
+ nextIndex = existing;
2144
+ return prev;
2145
+ }
2146
+ nextIndex = prev.length;
2147
+ return [...prev, id];
2148
+ });
2149
+ return nextIndex;
2150
+ };
2151
+ const unregisterTab = (id) => {
2152
+ tabElements.delete(id);
2153
+ setTabIds((prev) => prev.filter((entry) => entry !== id));
2154
+ };
2155
+ const focusTab = (index) => {
2156
+ const id = tabIds()[index];
2157
+ if (!id) return;
2158
+ tabElements.get(id)?.focus();
2159
+ };
2160
+ const onSelect = (nextIndex) => {
2161
+ const prevIndex = props.selectedIndex;
2162
+ if (nextIndex === prevIndex) return;
2163
+ props.onChange?.({
2164
+ selectedIndex: nextIndex,
2165
+ previousIndex: prevIndex
2166
+ });
2167
+ };
2168
+ return createComponent(SSTabsContext.Provider, {
2169
+ value: {
2170
+ selectedIndex: () => props.selectedIndex,
2171
+ count,
2172
+ registerTab,
2173
+ unregisterTab,
2174
+ onSelect,
2175
+ focusTab
2176
+ },
2177
+ get children() {
2178
+ var _el$ = _tmpl$40();
2179
+ insert(_el$, () => props.children);
2180
+ effect((_p$) => {
2181
+ var _v$ = `ss_tabs ${props.class ?? ""}`, _v$2 = props.style;
2182
+ _v$ !== _p$.e && className(_el$, _p$.e = _v$);
2183
+ _p$.t = style(_el$, _v$2, _p$.t);
2184
+ return _p$;
2185
+ }, {
2186
+ e: void 0,
2187
+ t: void 0
2188
+ });
2189
+ return _el$;
2190
+ }
2191
+ });
2192
+ }
2193
+ function SSTabList(props) {
2194
+ return (() => {
2195
+ var _el$2 = _tmpl$211();
2196
+ insert(_el$2, () => props.children);
2197
+ effect((_p$) => {
2198
+ var _v$3 = `ss_tablist ${props.class ?? ""}`, _v$4 = props.style, _v$5 = props.ariaLabel;
2199
+ _v$3 !== _p$.e && className(_el$2, _p$.e = _v$3);
2200
+ _p$.t = style(_el$2, _v$4, _p$.t);
2201
+ _v$5 !== _p$.a && setAttribute(_el$2, "aria-label", _p$.a = _v$5);
2202
+ return _p$;
2203
+ }, {
2204
+ e: void 0,
2205
+ t: void 0,
2206
+ a: void 0
2207
+ });
2208
+ return _el$2;
2209
+ })();
2210
+ }
2211
+ function SSTab(props) {
2212
+ const context = useContext(SSTabsContext);
2213
+ if (!context) {
2214
+ throw new Error("SSTab must be used within SSTabs");
2215
+ }
2216
+ const id = createUniqueId();
2217
+ const [index, setIndex] = createSignal(null);
2218
+ let buttonRef;
2219
+ onMount(() => {
2220
+ if (!buttonRef) return;
2221
+ setIndex(context.registerTab(id, buttonRef));
2222
+ });
2223
+ onCleanup(() => {
2224
+ context.unregisterTab(id);
2225
+ });
2226
+ const isSelected = () => index() !== null && index() === context.selectedIndex();
2227
+ const handleSelect = () => {
2228
+ if (props.disabled) return;
2229
+ if (index() === null) return;
2230
+ context.onSelect(index());
2231
+ };
2232
+ const handleKeyDown = (event) => {
2233
+ if (props.disabled) return;
2234
+ const current = index();
2235
+ const total = context.count();
2236
+ if (current === null || total < 1) return;
2237
+ let nextIndex = current;
2238
+ if (event.key === "ArrowRight") {
2239
+ nextIndex = (current + 1) % total;
2240
+ } else if (event.key === "ArrowLeft") {
2241
+ nextIndex = (current - 1 + total) % total;
2242
+ } else if (event.key === "Home") {
2243
+ nextIndex = 0;
2244
+ } else if (event.key === "End") {
2245
+ nextIndex = total - 1;
2246
+ } else {
2247
+ return;
2248
+ }
2249
+ event.preventDefault();
2250
+ context.onSelect(nextIndex);
2251
+ requestAnimationFrame(() => context.focusTab(nextIndex));
2252
+ };
2253
+ return (() => {
2254
+ var _el$3 = _tmpl$310();
2255
+ _el$3.$$keydown = handleKeyDown;
2256
+ _el$3.$$click = handleSelect;
2257
+ use((el) => buttonRef = el, _el$3);
2258
+ insert(_el$3, () => props.children);
2259
+ effect((_p$) => {
2260
+ var _v$6 = `ss_tab ${props.class ?? ""}`, _v$7 = props.style, _v$8 = isSelected(), _v$9 = props.disabled ? "true" : void 0, _v$0 = isSelected() ? 0 : -1, _v$1 = props.disabled;
2261
+ _v$6 !== _p$.e && className(_el$3, _p$.e = _v$6);
2262
+ _p$.t = style(_el$3, _v$7, _p$.t);
2263
+ _v$8 !== _p$.a && setAttribute(_el$3, "aria-selected", _p$.a = _v$8);
2264
+ _v$9 !== _p$.o && setAttribute(_el$3, "aria-disabled", _p$.o = _v$9);
2265
+ _v$0 !== _p$.i && setAttribute(_el$3, "tabindex", _p$.i = _v$0);
2266
+ _v$1 !== _p$.n && (_el$3.disabled = _p$.n = _v$1);
2267
+ return _p$;
2268
+ }, {
2269
+ e: void 0,
2270
+ t: void 0,
2271
+ a: void 0,
2272
+ o: void 0,
2273
+ i: void 0,
2274
+ n: void 0
2275
+ });
2276
+ return _el$3;
2277
+ })();
2278
+ }
2279
+ delegateEvents(["click", "keydown"]);
2280
+ var _tmpl$41 = /* @__PURE__ */ template(`<div><div class=ss_tile__row><div class=ss_tile__content>`);
2281
+ var _tmpl$212 = /* @__PURE__ */ template(`<span class=ss_tile__icon>`);
2282
+ var _tmpl$311 = /* @__PURE__ */ template(`<h5 class=ss_tile__title>`);
2089
2283
  var _tmpl$47 = /* @__PURE__ */ template(`<h5 class=ss_tile__title><span class=ss_tile__text>`);
2090
2284
  var _tmpl$57 = /* @__PURE__ */ template(`<div class=ss_tile__subtitle>`);
2091
2285
  var _tmpl$64 = /* @__PURE__ */ template(`<div class=ss_tile__trailing>`);
2092
2286
  var _tmpl$73 = /* @__PURE__ */ template(`<div class=ss_tile__body>`);
2093
2287
  function SSTile(props) {
2094
2288
  return (() => {
2095
- var _el$ = _tmpl$31(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
2289
+ var _el$ = _tmpl$41(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
2096
2290
  insert(_el$2, (() => {
2097
2291
  var _c$ = memo(() => !!props.icon);
2098
2292
  return () => _c$() && (() => {
2099
- var _el$4 = _tmpl$211();
2293
+ var _el$4 = _tmpl$212();
2100
2294
  insert(_el$4, () => props.icon);
2101
2295
  return _el$4;
2102
2296
  })();
@@ -2104,7 +2298,7 @@ function SSTile(props) {
2104
2298
  insert(_el$3, (() => {
2105
2299
  var _c$2 = memo(() => !!props.href);
2106
2300
  return () => _c$2() ? (() => {
2107
- var _el$5 = _tmpl$310();
2301
+ var _el$5 = _tmpl$311();
2108
2302
  insert(_el$5, createComponent(A, {
2109
2303
  "class": "ss_tile__link",
2110
2304
  get href() {
@@ -2177,4 +2371,4 @@ function createSSTile(build) {
2177
2371
  };
2178
2372
  }
2179
2373
 
2180
- export { SSAttrList, SSButton, SSCallout, SSChip, SSDataTable, SSDivider, SSDropdown, SSExpandable, SSForm, SSHeader, SSModal, SSModalsProvider, SSShell, SSSurface, SSTile, createSSTile, useSSModals };
2374
+ export { SSAttrList, SSButton, SSCallout, SSChip, SSDataTable, SSDivider, SSDropdown, SSExpandable, SSForm, SSHeader, SSLink, SSModal, SSModalsProvider, SSRow, SSShell, SSSurface, SSTab, SSTabList, SSTabs, SSTile, createSSTile, useSSModals };
package/dist/index.d.ts CHANGED
@@ -253,6 +253,16 @@ type SSHeaderProps = {
253
253
  };
254
254
  declare function SSHeader(props: SSHeaderProps): solid_js.JSX.Element;
255
255
 
256
+ type SSLinkProps = {
257
+ href: string;
258
+ children: JSXElement;
259
+ blank?: boolean;
260
+ class?: string;
261
+ style?: string;
262
+ onClick?: (event: MouseEvent) => void;
263
+ };
264
+ declare function SSLink(props: SSLinkProps): solid_js.JSX.Element;
265
+
256
266
  type SSModalSize = 'sm' | 'md' | 'lg';
257
267
  type SSModalProps = {
258
268
  open: boolean;
@@ -330,6 +340,14 @@ declare function SSModalsProvider(props: {
330
340
  children: JSXElement;
331
341
  }): solid_js.JSX.Element;
332
342
 
343
+ type SSRowProps = {
344
+ children: solid_js.JSXElement;
345
+ wrap?: boolean;
346
+ class?: string;
347
+ style?: string;
348
+ };
349
+ declare function SSRow(props: SSRowProps): solid_js.JSX.Element;
350
+
333
351
  type SSShellProps = {
334
352
  title: JSXElement;
335
353
  nav: JSXElement;
@@ -369,6 +387,33 @@ type SSSurfaceProps = {
369
387
  };
370
388
  declare function SSSurface(props: SSSurfaceProps): solid_js.JSX.Element;
371
389
 
390
+ type SSTabsOnChange = (props: {
391
+ selectedIndex: number;
392
+ previousIndex: number;
393
+ }) => void;
394
+ type SSTabsProps = {
395
+ selectedIndex: number;
396
+ onChange?: SSTabsOnChange;
397
+ children: JSXElement;
398
+ class?: string;
399
+ style?: string;
400
+ };
401
+ type SSTabListProps = {
402
+ children: JSXElement;
403
+ class?: string;
404
+ style?: string;
405
+ ariaLabel?: string;
406
+ };
407
+ type SSTabProps = {
408
+ children: JSXElement;
409
+ disabled?: boolean;
410
+ class?: string;
411
+ style?: string;
412
+ };
413
+ declare function SSTabs(props: SSTabsProps): solid_js.JSX.Element;
414
+ declare function SSTabList(props: SSTabListProps): solid_js.JSX.Element;
415
+ declare function SSTab(props: SSTabProps): solid_js.JSX.Element;
416
+
372
417
  type SSTileProps = {
373
418
  icon?: JSXElement;
374
419
  title: JSXElement;
@@ -388,4 +433,4 @@ declare function createSSTile<T>(build: (data: T) => SSTileProps): (props: {
388
433
  onLinkClick?: () => void;
389
434
  }) => solid_js.JSX.Element;
390
435
 
391
- export { SSAttrList, SSButton, SSCallout, SSChip, type SSColor, SSDataTable, SSDivider, SSDropdown, SSExpandable, SSForm, SSHeader, SSModal, SSModalsProvider, SSShell, SSSurface, SSTile, createSSTile, useSSModals };
436
+ export { SSAttrList, SSButton, SSCallout, SSChip, type SSColor, SSDataTable, SSDivider, SSDropdown, SSExpandable, SSForm, SSHeader, SSLink, SSModal, SSModalsProvider, SSRow, SSShell, SSSurface, SSTab, SSTabList, SSTabs, SSTile, createSSTile, useSSModals };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { delegateEvents, template, insert, memo, effect, className, setAttribute, use, createComponent, addEventListener, spread, mergeProps, style, setStyleProperty, Portal } from 'solid-js/web';
2
2
  import { createContext, useContext, createSignal, onMount, onCleanup, createEffect, createUniqueId, For, untrack, createMemo, children, Show, createResource } from 'solid-js';
3
- import { useLocation, A, useNavigate } from '@solidjs/router';
3
+ import { A, useLocation, useNavigate } from '@solidjs/router';
4
4
 
5
5
  // src/components/SSButton.tsx
6
6
  var _tmpl$ = /* @__PURE__ */ template(`<button>`);
@@ -1580,6 +1580,32 @@ function SSHeader(props) {
1580
1580
  return _el$;
1581
1581
  })();
1582
1582
  }
1583
+ function SSLink(props) {
1584
+ return createComponent(A, {
1585
+ get href() {
1586
+ return props.href;
1587
+ },
1588
+ get ["class"]() {
1589
+ return `ss_link ${props.class ?? ""}`;
1590
+ },
1591
+ get style() {
1592
+ return props.style;
1593
+ },
1594
+ get target() {
1595
+ return props.blank ? "_blank" : void 0;
1596
+ },
1597
+ get rel() {
1598
+ return props.blank ? "noopener noreferrer" : void 0;
1599
+ },
1600
+ onclick: (event) => {
1601
+ event.stopPropagation();
1602
+ props.onClick?.(event);
1603
+ },
1604
+ get children() {
1605
+ return props.children;
1606
+ }
1607
+ });
1608
+ }
1583
1609
  var _tmpl$20 = /* @__PURE__ */ template(`<div class=ss_modal__footer>`);
1584
1610
  var _tmpl$29 = /* @__PURE__ */ template(`<div class=ss_modal><div class=ss_modal__backdrop></div><div class=ss_modal__panel role=dialog aria-modal=true tabindex=-1><div class=ss_modal__body><div class=ss_modal__body_inner>`);
1585
1611
  var _tmpl$38 = /* @__PURE__ */ template(`<svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="icon icon-tabler icons-tabler-outline icon-tabler-x"><path stroke=none d="M0 0h24v24H0z"fill=none></path><path d="M18 6l-12 12"></path><path d="M6 6l12 12">`);
@@ -1928,7 +1954,24 @@ function SSModalsProvider(props) {
1928
1954
  }
1929
1955
  });
1930
1956
  }
1931
- var _tmpl$21 = /* @__PURE__ */ template(`<div><input type=checkbox class=ss_shell__drawer_toggle_input><header class=ss_shell__header><div class=ss_shell__header_left><label class="ss_shell__drawer_toggle ss_button ss_button--icon"aria-label="Navigation \xF6ffnen"role=button tabindex=0><svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="icon icon-tabler icons-tabler-outline icon-tabler-menu-2"><path stroke=none d="M0 0h24v24H0z"fill=none></path><path d="M4 6l16 0"></path><path d="M4 12l16 0"></path><path d="M4 18l16 0"></path></svg></label><div class=ss_shell__title></div></div><div class=ss_shell__actions></div></header><div class=ss_shell__body><nav class=ss_shell__nav aria-label=Hauptnavigation><div class=ss_shell__nav_inner></div></nav><div class=ss_shell__main></div><label class=ss_shell__scrim aria-label="Navigation schlie\xDFen">`);
1957
+ var _tmpl$21 = /* @__PURE__ */ template(`<div>`);
1958
+ function SSRow(props) {
1959
+ return (() => {
1960
+ var _el$ = _tmpl$21();
1961
+ insert(_el$, () => props.children);
1962
+ effect((_p$) => {
1963
+ var _v$ = `ss_row ${props.wrap ? "ss_row--wrap" : ""} ${props.class ?? ""}`, _v$2 = props.style;
1964
+ _v$ !== _p$.e && className(_el$, _p$.e = _v$);
1965
+ _p$.t = style(_el$, _v$2, _p$.t);
1966
+ return _p$;
1967
+ }, {
1968
+ e: void 0,
1969
+ t: void 0
1970
+ });
1971
+ return _el$;
1972
+ })();
1973
+ }
1974
+ var _tmpl$30 = /* @__PURE__ */ template(`<div><input type=checkbox class=ss_shell__drawer_toggle_input><header class=ss_shell__header><div class=ss_shell__header_left><label class="ss_shell__drawer_toggle ss_button ss_button--icon"aria-label="Navigation \xF6ffnen"role=button tabindex=0><svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="icon icon-tabler icons-tabler-outline icon-tabler-menu-2"><path stroke=none d="M0 0h24v24H0z"fill=none></path><path d="M4 6l16 0"></path><path d="M4 12l16 0"></path><path d="M4 18l16 0"></path></svg></label><div class=ss_shell__title></div></div><div class=ss_shell__actions></div></header><div class=ss_shell__body><nav class=ss_shell__nav aria-label=Hauptnavigation><div class=ss_shell__nav_inner></div></nav><div class=ss_shell__main></div><label class=ss_shell__scrim aria-label="Navigation schlie\xDFen">`);
1932
1975
  var _tmpl$210 = /* @__PURE__ */ template(`<div class=ss_shell__nav_list>`);
1933
1976
  var _tmpl$39 = /* @__PURE__ */ template(`<a class=ss_shell__nav_item><span class=ss_shell__nav_label>`);
1934
1977
  var _tmpl$46 = /* @__PURE__ */ template(`<span class=ss_shell__nav_icon>`);
@@ -1968,7 +2011,7 @@ function SSShell(props) {
1968
2011
  unregisterHref
1969
2012
  },
1970
2013
  get children() {
1971
- var _el$ = _tmpl$21(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$7 = _el$4.nextSibling, _el$8 = _el$3.nextSibling, _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$9.nextSibling, _el$10 = _el$1.nextSibling;
2014
+ var _el$ = _tmpl$30(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$7 = _el$4.nextSibling, _el$8 = _el$3.nextSibling, _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$9.nextSibling, _el$10 = _el$1.nextSibling;
1972
2015
  setAttribute(_el$2, "id", drawerId);
1973
2016
  setAttribute(_el$5, "for", drawerId);
1974
2017
  insert(_el$6, () => props.title);
@@ -2066,10 +2109,10 @@ SSShell.NavGroup = function(props) {
2066
2109
  })();
2067
2110
  };
2068
2111
  delegateEvents(["click"]);
2069
- var _tmpl$30 = /* @__PURE__ */ template(`<div>`);
2112
+ var _tmpl$31 = /* @__PURE__ */ template(`<div>`);
2070
2113
  function SSSurface(props) {
2071
2114
  return (() => {
2072
- var _el$ = _tmpl$30();
2115
+ var _el$ = _tmpl$31();
2073
2116
  insert(_el$, () => props.children);
2074
2117
  effect((_p$) => {
2075
2118
  var _v$ = `ss_surface ${props.class ?? ""}`, _v$2 = props.style;
@@ -2083,20 +2126,171 @@ function SSSurface(props) {
2083
2126
  return _el$;
2084
2127
  })();
2085
2128
  }
2086
- var _tmpl$31 = /* @__PURE__ */ template(`<div><div class=ss_tile__row><div class=ss_tile__content>`);
2087
- var _tmpl$211 = /* @__PURE__ */ template(`<span class=ss_tile__icon>`);
2088
- var _tmpl$310 = /* @__PURE__ */ template(`<h5 class=ss_tile__title>`);
2129
+ var _tmpl$40 = /* @__PURE__ */ template(`<div>`);
2130
+ var _tmpl$211 = /* @__PURE__ */ template(`<div role=tablist>`);
2131
+ var _tmpl$310 = /* @__PURE__ */ template(`<button type=button role=tab>`);
2132
+ var SSTabsContext = createContext();
2133
+ function SSTabs(props) {
2134
+ const [tabIds, setTabIds] = createSignal([]);
2135
+ const tabElements = /* @__PURE__ */ new Map();
2136
+ const count = createMemo(() => tabIds().length);
2137
+ const registerTab = (id, element) => {
2138
+ let nextIndex = -1;
2139
+ tabElements.set(id, element);
2140
+ setTabIds((prev) => {
2141
+ const existing = prev.indexOf(id);
2142
+ if (existing >= 0) {
2143
+ nextIndex = existing;
2144
+ return prev;
2145
+ }
2146
+ nextIndex = prev.length;
2147
+ return [...prev, id];
2148
+ });
2149
+ return nextIndex;
2150
+ };
2151
+ const unregisterTab = (id) => {
2152
+ tabElements.delete(id);
2153
+ setTabIds((prev) => prev.filter((entry) => entry !== id));
2154
+ };
2155
+ const focusTab = (index) => {
2156
+ const id = tabIds()[index];
2157
+ if (!id) return;
2158
+ tabElements.get(id)?.focus();
2159
+ };
2160
+ const onSelect = (nextIndex) => {
2161
+ const prevIndex = props.selectedIndex;
2162
+ if (nextIndex === prevIndex) return;
2163
+ props.onChange?.({
2164
+ selectedIndex: nextIndex,
2165
+ previousIndex: prevIndex
2166
+ });
2167
+ };
2168
+ return createComponent(SSTabsContext.Provider, {
2169
+ value: {
2170
+ selectedIndex: () => props.selectedIndex,
2171
+ count,
2172
+ registerTab,
2173
+ unregisterTab,
2174
+ onSelect,
2175
+ focusTab
2176
+ },
2177
+ get children() {
2178
+ var _el$ = _tmpl$40();
2179
+ insert(_el$, () => props.children);
2180
+ effect((_p$) => {
2181
+ var _v$ = `ss_tabs ${props.class ?? ""}`, _v$2 = props.style;
2182
+ _v$ !== _p$.e && className(_el$, _p$.e = _v$);
2183
+ _p$.t = style(_el$, _v$2, _p$.t);
2184
+ return _p$;
2185
+ }, {
2186
+ e: void 0,
2187
+ t: void 0
2188
+ });
2189
+ return _el$;
2190
+ }
2191
+ });
2192
+ }
2193
+ function SSTabList(props) {
2194
+ return (() => {
2195
+ var _el$2 = _tmpl$211();
2196
+ insert(_el$2, () => props.children);
2197
+ effect((_p$) => {
2198
+ var _v$3 = `ss_tablist ${props.class ?? ""}`, _v$4 = props.style, _v$5 = props.ariaLabel;
2199
+ _v$3 !== _p$.e && className(_el$2, _p$.e = _v$3);
2200
+ _p$.t = style(_el$2, _v$4, _p$.t);
2201
+ _v$5 !== _p$.a && setAttribute(_el$2, "aria-label", _p$.a = _v$5);
2202
+ return _p$;
2203
+ }, {
2204
+ e: void 0,
2205
+ t: void 0,
2206
+ a: void 0
2207
+ });
2208
+ return _el$2;
2209
+ })();
2210
+ }
2211
+ function SSTab(props) {
2212
+ const context = useContext(SSTabsContext);
2213
+ if (!context) {
2214
+ throw new Error("SSTab must be used within SSTabs");
2215
+ }
2216
+ const id = createUniqueId();
2217
+ const [index, setIndex] = createSignal(null);
2218
+ let buttonRef;
2219
+ onMount(() => {
2220
+ if (!buttonRef) return;
2221
+ setIndex(context.registerTab(id, buttonRef));
2222
+ });
2223
+ onCleanup(() => {
2224
+ context.unregisterTab(id);
2225
+ });
2226
+ const isSelected = () => index() !== null && index() === context.selectedIndex();
2227
+ const handleSelect = () => {
2228
+ if (props.disabled) return;
2229
+ if (index() === null) return;
2230
+ context.onSelect(index());
2231
+ };
2232
+ const handleKeyDown = (event) => {
2233
+ if (props.disabled) return;
2234
+ const current = index();
2235
+ const total = context.count();
2236
+ if (current === null || total < 1) return;
2237
+ let nextIndex = current;
2238
+ if (event.key === "ArrowRight") {
2239
+ nextIndex = (current + 1) % total;
2240
+ } else if (event.key === "ArrowLeft") {
2241
+ nextIndex = (current - 1 + total) % total;
2242
+ } else if (event.key === "Home") {
2243
+ nextIndex = 0;
2244
+ } else if (event.key === "End") {
2245
+ nextIndex = total - 1;
2246
+ } else {
2247
+ return;
2248
+ }
2249
+ event.preventDefault();
2250
+ context.onSelect(nextIndex);
2251
+ requestAnimationFrame(() => context.focusTab(nextIndex));
2252
+ };
2253
+ return (() => {
2254
+ var _el$3 = _tmpl$310();
2255
+ _el$3.$$keydown = handleKeyDown;
2256
+ _el$3.$$click = handleSelect;
2257
+ use((el) => buttonRef = el, _el$3);
2258
+ insert(_el$3, () => props.children);
2259
+ effect((_p$) => {
2260
+ var _v$6 = `ss_tab ${props.class ?? ""}`, _v$7 = props.style, _v$8 = isSelected(), _v$9 = props.disabled ? "true" : void 0, _v$0 = isSelected() ? 0 : -1, _v$1 = props.disabled;
2261
+ _v$6 !== _p$.e && className(_el$3, _p$.e = _v$6);
2262
+ _p$.t = style(_el$3, _v$7, _p$.t);
2263
+ _v$8 !== _p$.a && setAttribute(_el$3, "aria-selected", _p$.a = _v$8);
2264
+ _v$9 !== _p$.o && setAttribute(_el$3, "aria-disabled", _p$.o = _v$9);
2265
+ _v$0 !== _p$.i && setAttribute(_el$3, "tabindex", _p$.i = _v$0);
2266
+ _v$1 !== _p$.n && (_el$3.disabled = _p$.n = _v$1);
2267
+ return _p$;
2268
+ }, {
2269
+ e: void 0,
2270
+ t: void 0,
2271
+ a: void 0,
2272
+ o: void 0,
2273
+ i: void 0,
2274
+ n: void 0
2275
+ });
2276
+ return _el$3;
2277
+ })();
2278
+ }
2279
+ delegateEvents(["click", "keydown"]);
2280
+ var _tmpl$41 = /* @__PURE__ */ template(`<div><div class=ss_tile__row><div class=ss_tile__content>`);
2281
+ var _tmpl$212 = /* @__PURE__ */ template(`<span class=ss_tile__icon>`);
2282
+ var _tmpl$311 = /* @__PURE__ */ template(`<h5 class=ss_tile__title>`);
2089
2283
  var _tmpl$47 = /* @__PURE__ */ template(`<h5 class=ss_tile__title><span class=ss_tile__text>`);
2090
2284
  var _tmpl$57 = /* @__PURE__ */ template(`<div class=ss_tile__subtitle>`);
2091
2285
  var _tmpl$64 = /* @__PURE__ */ template(`<div class=ss_tile__trailing>`);
2092
2286
  var _tmpl$73 = /* @__PURE__ */ template(`<div class=ss_tile__body>`);
2093
2287
  function SSTile(props) {
2094
2288
  return (() => {
2095
- var _el$ = _tmpl$31(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
2289
+ var _el$ = _tmpl$41(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
2096
2290
  insert(_el$2, (() => {
2097
2291
  var _c$ = memo(() => !!props.icon);
2098
2292
  return () => _c$() && (() => {
2099
- var _el$4 = _tmpl$211();
2293
+ var _el$4 = _tmpl$212();
2100
2294
  insert(_el$4, () => props.icon);
2101
2295
  return _el$4;
2102
2296
  })();
@@ -2104,7 +2298,7 @@ function SSTile(props) {
2104
2298
  insert(_el$3, (() => {
2105
2299
  var _c$2 = memo(() => !!props.href);
2106
2300
  return () => _c$2() ? (() => {
2107
- var _el$5 = _tmpl$310();
2301
+ var _el$5 = _tmpl$311();
2108
2302
  insert(_el$5, createComponent(A, {
2109
2303
  "class": "ss_tile__link",
2110
2304
  get href() {
@@ -2177,4 +2371,4 @@ function createSSTile(build) {
2177
2371
  };
2178
2372
  }
2179
2373
 
2180
- export { SSAttrList, SSButton, SSCallout, SSChip, SSDataTable, SSDivider, SSDropdown, SSExpandable, SSForm, SSHeader, SSModal, SSModalsProvider, SSShell, SSSurface, SSTile, createSSTile, useSSModals };
2374
+ export { SSAttrList, SSButton, SSCallout, SSChip, SSDataTable, SSDivider, SSDropdown, SSExpandable, SSForm, SSHeader, SSLink, SSModal, SSModalsProvider, SSRow, SSShell, SSSurface, SSTab, SSTabList, SSTabs, SSTile, createSSTile, useSSModals };
@@ -1 +1 @@
1
- :root{font-family:system-ui,-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif;--bg-page: #f5f5f7;--bg-surface: #ffffff;--bg-surface-subtle: #f3f4f6;--shell-bg: radial-gradient(circle at top left, #eef2ff 0, #f5f5f7 38%, #f3f4f6 100%);--shell-header-bg: rgba(255, 255, 255, .85);--shell-header-border: rgba(209, 213, 219, .8);--shell-nav-bg: rgba(255, 255, 255, .92);--shell-nav-border: rgba(209, 213, 219, .85);--fg-primary: #0f172a;--fg-secondary: #4b5563;--fg-muted: #6b7280;--fg-inverse: #ffffff;--border-subtle: #e5e7eb;--border-strong: #d1d5db;--card-accent: #2563eb;--input-bg: #ffffff;--input-fg: var(--fg-primary);--input-border: #d1d5db;--input-border-hover: #9ca3af;--input-border-disabled: #e5e7eb;--input-bg-disabled: #f3f4f6;--input-fg-disabled: #9ca3af;--input-bg-hover: #f9fafb;--input-bg-focus: #ffffff;--scrollbar-thumb: rgba(15, 23, 42, .24);--primary: #2563eb;--primary-soft: #e0ecff;--primary-soft-stronger: #d1e1ff;--on-primary: #ffffff;--error: #dc2626;--on-error: #ffffff;--error-strong: #b91c1c;--disabled: #9ca3af;--on-disabled: #f9fafb;--suggestion-bg: var(--bg-surface);--suggestion-hover-bg: #f3f4ff;--suggestion-focus-bg: #e0ebff;--suggestion-selected-bg: #e0ebff;--suggestion-indicator: #2563eb;--btn-primary-bg: var(--primary);--btn-primary-border: #1d4ed8;--btn-primary-bg-hover: #1d4ed8;--btn-primary-border-hover: #1e40af;--btn-secondary-bg: #eef1f7;--btn-secondary-border: #d1d5db;--btn-secondary-bg-hover: #e0e3ec;--btn-secondary-border-hover: #cbd0dd;--btn-tertiary-bg: transparent;--btn-tertiary-border: var(--border-subtle);--btn-tertiary-bg-hover: #e9effa;--btn-tertiary-border-hover: var(--border-strong);--clear-bg: #edeff4;--clear-border: #e2e4ec;--clear-bg-hover: #e1e4ee;--clear-border-hover: #cbd0dd;--clear-fg: #4b5563;--token-bg: #eef2ff;--token-fg: #1f2937;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-pill: 999px;--focus-ring: 0 0 0 1px rgba(37, 99, 235, .75), 0 0 0 4px rgba(191, 219, 254, .9);--focus-ring-error: 0 0 0 1px rgba(220, 38, 38, .85), 0 0 0 4px rgba(254, 202, 202, .85);--shadow-soft: 0 10px 30px rgba(15, 23, 42, .06);--btn-shadow: 0 6px 18px rgba(15, 23, 42, .16);--btn-shadow-hover: 0 10px 30px rgba(15, 23, 42, .18)}@media (prefers-color-scheme: dark){:root{--bg-page: #0f1115;--bg-surface: #14171c;--bg-surface-subtle: #1a1e24;--fg-primary: #e7e9ee;--fg-secondary: #c7cbd4;--fg-muted: #9ca3af;--fg-inverse: #0f1115;--border-subtle: #2a2f36;--border-strong: #3a4048;--card-accent: #94a3b8;--input-bg: #14171c;--input-fg: var(--fg-primary);--input-border: #2a2f36;--input-border-hover: #3a4048;--input-border-disabled: #111827;--input-bg-disabled: #14171c;--input-fg-disabled: #6b7280;--input-bg-hover: #1a1e24;--input-bg-focus: #20252c;--scrollbar-thumb: rgba(156, 163, 175, .38);--primary: #3b82f6;--primary-soft: #172554;--primary-soft-stronger: #1d4ed8;--on-primary: #ffffff;--error: #fb7185;--on-error: #0f1115;--error-strong: #f43f5e;--suggestion-bg: #14171c;--suggestion-hover-bg: #1b2027;--suggestion-focus-bg: #21262e;--suggestion-selected-bg: #262c35;--suggestion-indicator: #94a3b8;--btn-primary-bg: var(--primary);--btn-primary-border: #1d4ed8;--btn-primary-bg-hover: #1d4ed8;--btn-primary-border-hover: #1e3a8a;--btn-secondary-bg: #1a1e24;--btn-secondary-border: #2f353e;--btn-secondary-bg-hover: #232831;--btn-secondary-border-hover: #3a4048;--btn-tertiary-bg: transparent;--btn-tertiary-border: #2f353e;--btn-tertiary-bg-hover: #232831;--btn-tertiary-border-hover: #3a4048;--clear-bg: #1a1e24;--clear-border: #2f353e;--clear-bg-hover: #232831;--clear-border-hover: #3a4048;--clear-fg: #e5e7eb;--token-bg: #232831;--token-fg: #e5e7eb;--shadow-soft: 0 18px 50px rgba(0, 0, 0, .75);--btn-shadow: 0 12px 30px rgba(0, 0, 0, .65);--btn-shadow-hover: 0 16px 40px rgba(0, 0, 0, .85);--shell-bg: radial-gradient(circle at top left, #1c2129 0, #0f1115 45%, #12161b 100%);--shell-header-bg: rgba(20, 23, 28, .92);--shell-header-border: rgba(58, 64, 72, .9);--shell-nav-bg: rgba(20, 23, 28, .96);--shell-nav-border: rgba(58, 64, 72, .92)}}@keyframes input-alert-appear{0%{opacity:0;transform:translateY(-1px)}to{opacity:1;transform:translateY(0)}}*,*:before,*:after{box-sizing:border-box}*{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:inherit;color:var(--fg-primary);background-color:var(--bg-page);font-size:14px}html,body,#root{position:relative;height:100%;width:100%;overflow:hidden}.ss_form{max-width:48rem;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:1rem;padding:.5rem 0}.ss__suggestions{position:absolute;top:calc(100% + .35rem);left:0;right:0;z-index:10;display:flex;flex-direction:column;max-height:clamp(7rem,35vh,14rem);margin:0;padding:.25rem 0;list-style-type:none;background-color:var(--suggestion-bg);border-width:1px;border-style:solid;border-color:var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);overflow-y:auto;overflow-x:hidden;li{display:flex;align-items:flex-start;gap:.4rem;padding:.45rem .8rem;font-size:.9rem;line-height:1.45;color:var(--fg-primary);cursor:pointer;user-select:none;outline:none;+li{border-top:1px solid var(--border-subtle)}&:hover{background-color:var(--suggestion-hover-bg)}&:focus{background-color:var(--suggestion-focus-bg)}&.ss__hovered{background-color:var(--suggestion-focus-bg)}&.ss__selected{font-weight:500;background-color:var(--suggestion-selected-bg);box-shadow:inset 2px 0 0 var(--suggestion-indicator)}&.ss__selected.ss__hovered,&.ss__selected:hover{background-color:#2563eb14}.ss__title{font-weight:500}.ss__description{font-size:.8rem;color:var(--fg-muted)}}&::-webkit-scrollbar{width:6px}&::-webkit-scrollbar-track{background:transparent}&::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:999px}}.ss_form_input,.ss_form_date{display:flex;flex-direction:column;gap:.35rem;label{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.01em;text-transform:none;color:var(--fg-muted)}.ss__wrapper{position:relative;display:inline-block;width:100%}input,textarea{display:block;width:100%;min-width:0;padding:.55rem .7rem;font-size:.95rem;line-height:1.4;color:var(--input-fg);background-color:var(--input-bg);border-width:1px;border-style:solid;border-color:var(--input-border);border-radius:var(--radius-md);outline:none;box-shadow:none;font-family:inherit;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease,transform 80ms ease;&:hover:not([disabled]){border-color:var(--input-border-hover);background-color:var(--input-bg-hover)}&:focus-visible{border-color:var(--primary);box-shadow:var(--focus-ring);background-color:var(--input-bg-focus)}&[disabled]{cursor:not-allowed;color:var(--input-fg-disabled);background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled)}}textarea{width:100%;resize:vertical;min-height:6.5rem}.ss__suggestions{max-height:clamp(7rem,30vh,12rem)}&:not(:focus-within){.ss__suggestions{display:none}}&:has([role=alert]){input,textarea{border-color:var(--error);box-shadow:var(--focus-ring-error)}}[role=alert]{margin-top:.15rem;font-size:.8rem;line-height:1.4;color:var(--error);animation:.12s input-alert-appear ease-out}}.ss_form_date{position:relative;input{padding-right:2.1rem}input::-webkit-calendar-picker-indicator{opacity:0;display:none}}.ss_form_date__icon{position:absolute;right:.7rem;top:50%;width:1rem;height:1rem;transform:translateY(-50%);color:var(--fg-muted);padding:0;border:none;background:transparent;cursor:pointer;&:disabled{cursor:not-allowed;color:var(--input-fg-disabled)}svg{width:100%;height:100%;display:block}}.ss_form_date__picker{position:absolute;top:calc(100% + .35rem);left:0;z-index:10;width:min(18rem,100%);padding:.75rem;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-soft)}.ss_form_date__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.6rem}.ss_form_date__nav_group{display:flex;align-items:center;gap:.35rem}.ss_form_date__title{font-size:.9rem;font-weight:600;color:var(--fg-primary);text-transform:capitalize}.ss_form_date__nav{width:1.8rem;height:1.8rem;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);background:var(--bg-surface-subtle);color:var(--fg-primary);cursor:pointer;transition:background-color .12s ease,border-color .12s ease;&:hover{border-color:var(--border-strong)}}.ss_form_date__nav svg{width:1rem;height:1rem;display:block;margin:0 auto}.ss_form_date__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:.2rem;margin-bottom:.35rem;font-size:.75rem;color:var(--fg-muted);text-align:center}.ss_form_date__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.2rem}.ss_form_date__day{height:2rem;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--fg-primary);cursor:pointer;transition:background-color .12s ease,border-color .12s ease;&:hover{background:var(--bg-surface-subtle)}&.is-selected{background:var(--primary-soft);border-color:var(--primary);color:var(--fg-primary);font-weight:600}&.is-today:not(.is-selected){border-color:var(--border-strong);background:var(--bg-surface-subtle);color:var(--fg-primary);font-weight:500}}.ss_form_date__day.is-empty{border:none;background:transparent;cursor:default}.ss_form_checkbox{display:flex;flex-direction:column;gap:.3rem;width:100%;font-size:.9rem;color:var(--fg-secondary);.ss__wrapper{display:inline-flex;align-items:flex-start;gap:.55rem;padding:.15rem .05rem;font-size:.9rem;line-height:1.5;color:var(--fg-secondary);background-color:transparent;border:none;outline:none}input[type=checkbox]{margin-top:.12rem;width:1.05rem;height:1.05rem;flex-shrink:0;position:relative;appearance:none;-webkit-appearance:none;-moz-appearance:none;accent-color:initial;border-radius:calc(var(--radius-sm) * .9);border:1px solid var(--border-strong);background-color:var(--bg-surface);box-shadow:0 1px 1px #0f172a0f;cursor:pointer;outline:none;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform 80ms ease;&:hover:not(:disabled){border-color:var(--input-border-hover);background-color:var(--input-bg-hover)}&:active:not(:disabled){transform:translateY(1px)}&:after{content:"";position:absolute;inset:0;margin:auto;width:.55rem;height:.3rem;border-left:2px solid var(--on-primary);border-bottom:2px solid var(--on-primary);transform-origin:center;transform:translateY(-1px) rotate(-45deg) scale(.2);opacity:0;transition:transform .12s ease-out,opacity .12s ease-out}&:checked,&[aria-checked=true]{background-color:var(--primary)!important;border-color:var(--primary)!important;&:after{opacity:1;transform:translateY(-1px) rotate(-45deg) scale(1)}}&:checked[disabled],&[aria-checked=true][disabled]{background-color:color-mix(in srgb,var(--input-bg-disabled) 70%,var(--fg-primary))!important;border-color:var(--input-border-disabled)!important}&[disabled]{cursor:not-allowed;background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled);box-shadow:none;opacity:.75;&:after{border-color:#fff}}}&:has(input[type=checkbox]:focus-visible){input[type=checkbox]{outline:none;box-shadow:var(--focus-ring)}}label{margin:0;font-size:.9rem;line-height:1.5;color:var(--fg-primary);cursor:pointer;user-select:none}&:has(input[type=checkbox][disabled]){color:var(--input-fg-disabled);user-select:none;label{cursor:not-allowed;color:var(--input-fg-disabled)}}[role=alert]{font-size:.8rem;color:var(--error);animation:.12s input-alert-appear ease-out}}.ss_form_select{display:flex;flex-direction:column;gap:.35rem;width:100%;label{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.01em;color:var(--fg-muted)}select{display:block;width:100%;padding:.55rem 2.1rem .55rem .7rem;font-size:.95rem;line-height:1.4;color:var(--input-fg);background-color:var(--input-bg);background-image:none;border-width:1px;border-style:solid;border-color:var(--input-border);border-radius:var(--radius-md);outline:none;appearance:none;box-shadow:none;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease;&:hover:not([disabled]){border-color:var(--input-border-hover);background-color:var(--input-bg-hover)}&:focus-visible{border-color:var(--primary);box-shadow:var(--focus-ring);background-color:var(--input-bg-focus)}&:has(+[role=alert]){border-color:var(--error);box-shadow:var(--focus-ring-error)}&[disabled]{cursor:not-allowed;color:var(--input-fg-disabled);background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled)}}.ss_form_select__field{position:relative}.ss_form_select__icon{position:absolute;right:.7rem;top:50%;width:1rem;height:1rem;transform:translateY(-50%);color:var(--fg-muted);pointer-events:none}.ss_form_select__icon svg{width:100%;height:100%;display:block}[role=alert]{font-size:.8rem;color:var(--error);animation:.12s input-alert-appear ease-out}}.ss_form_ac_select{display:flex;flex-direction:column;gap:.35rem;label{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.01em;color:var(--fg-muted)}.ss__wrapper{position:relative;display:inline-block;width:100%}.ss__input_row{display:flex;align-items:center;gap:.4rem;width:100%;min-width:0;padding:.5rem .65rem;font-size:.95rem;line-height:1.4;color:var(--input-fg);background-color:var(--input-bg);border-width:1px;border-style:solid;border-color:var(--input-border);border-radius:var(--radius-md);outline:none;box-shadow:none;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease;&:hover:not(:has([disabled])){border-color:var(--input-border-hover);background-color:var(--input-bg-hover)}&:has([disabled]){cursor:not-allowed;color:var(--input-fg-disabled);background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled)}input{flex-grow:1;min-width:0;padding:0;font-size:inherit;line-height:inherit;color:inherit;background-color:transparent;border:none;outline:none}.ss__prefix{flex-shrink:0;padding:.2rem .6rem;font-size:.78rem;line-height:1.3;white-space:nowrap;color:var(--token-fg);background-color:var(--token-bg);border-radius:var(--radius-pill);cursor:pointer;user-select:none;border:1px solid rgba(37,99,235,.18);transition:background-color .1s ease,border-color .1s ease,transform 80ms ease,box-shadow .1s ease;&:hover{background-color:#2563eb0f;border-color:#2563eb59;box-shadow:0 0 0 1px #bfdbfecc}&:active{transform:translateY(1px)}}.ss__prefix[aria-disabled=true]{cursor:not-allowed;opacity:.6;pointer-events:none}.ss__suffix{flex-shrink:0}}.ss__selection{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0;padding:.5rem .65rem;font-size:.95rem;line-height:1.4;color:var(--input-fg);background-color:var(--input-bg);border-width:1px;border-style:solid;border-color:var(--input-border);border-radius:var(--radius-md);outline:none;box-shadow:none;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease;&:has(.ss__clear[disabled]){cursor:not-allowed;color:var(--input-fg-disabled);background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled)}}.ss__content{flex:1;min-width:0}.ss__clear{flex-shrink:0;width:1.7rem;height:1.7rem;display:inline-flex;align-items:center;justify-content:center;font-size:.9rem;line-height:1;color:var(--clear-fg);background:var(--clear-bg);border-width:1px;border-style:solid;border-color:var(--clear-border);border-radius:var(--radius-pill);cursor:pointer;user-select:none;transition:background-color .1s ease,border-color .1s ease,transform 80ms ease;&:hover:not([disabled]){border-color:var(--clear-border-hover);background-color:var(--clear-bg-hover)}&:active:not([disabled]){transform:translateY(1px)}&[disabled]{cursor:not-allowed;opacity:.55}}.ss__suggestions{max-height:clamp(8rem,40vh,16rem);li{padding-inline:.85rem}}&:not(:focus-within){.ss__suggestions{display:none}}&:focus-within{.ss__input_row,.ss__selection{border-color:var(--primary);box-shadow:var(--focus-ring);background-color:var(--input-bg-focus)}}&:has([role=alert]){.ss__input_row,.ss__selection{border-color:var(--error);box-shadow:var(--focus-ring-error)}}[role=alert]{font-size:.8rem;color:var(--error);animation:.12s input-alert-appear ease-out}}.ss_button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.55rem 1.05rem;font-size:.9rem;font-weight:600;text-transform:none;text-align:center;letter-spacing:.01em;color:var(--on-primary);background:var(--btn-primary-bg);border:1px solid var(--btn-primary-border);border-radius:var(--radius-pill);outline:none;cursor:pointer;user-select:none;transition:background-color .12s ease,border-color .12s ease,opacity 80ms ease,transform 80ms ease,color .1s ease;&.secondary{color:var(--fg-primary);background:var(--btn-secondary-bg);border-color:var(--btn-secondary-border);box-shadow:none}&.tertiary{color:var(--fg-secondary);background:var(--btn-tertiary-bg);border-color:var(--btn-tertiary-border);box-shadow:none}&.danger{color:var(--on-error);background:var(--error);border-color:var(--error)}&:hover:not([disabled]){background-color:var(--btn-primary-bg-hover);border-color:var(--btn-primary-border-hover);&.secondary{background-color:var(--btn-secondary-bg-hover);border-color:var(--btn-secondary-border-hover)}&.tertiary{background-color:var(--btn-tertiary-bg-hover);border-color:var(--btn-tertiary-border-hover)}&.danger{background-color:var(--error-strong);border-color:var(--error-strong)}}&:active:not([disabled]){transform:translateY(1px)}&:focus-visible{outline:none;box-shadow:var(--focus-ring)}&[disabled]{cursor:not-allowed;color:var(--on-disabled);background:var(--disabled);border-color:var(--disabled);opacity:.9}}.ss_button--icon{width:2.1rem;height:2.1rem;padding:0;font-size:1.1rem;line-height:1;color:var(--fg-primary);background:transparent;border-color:transparent;border-radius:var(--radius-pill);box-shadow:none;transition:background-color .1s ease,border-color .1s ease,transform 80ms ease;&:hover:not([disabled]){background-color:var(--btn-tertiary-bg-hover);border-color:var(--btn-tertiary-border-hover)}&:active:not([disabled]){transform:translateY(1px)}&[disabled]{opacity:.5}}.ss_callout{--ss-callout-accent: var(--primary);--ss-callout-accent-soft: color-mix(in srgb, var(--ss-callout-accent) 22%, transparent);position:relative;display:flex;align-items:center;gap:1rem;width:100%;padding:1.15rem 1.4rem;font-size:.95rem;line-height:1.55;color:var(--fg-secondary);background:radial-gradient(circle at top left,var(--ss-callout-accent-soft) 0%,color-mix(in srgb,var(--ss-callout-accent-soft) 80%,var(--bg-surface) 20%) 28%,color-mix(in srgb,var(--ss-callout-accent-soft) 40%,var(--bg-surface) 60%) 62%,color-mix(in srgb,var(--ss-callout-accent-soft) 12%,var(--bg-surface) 88%) 82%,var(--bg-surface-subtle) 100%),var(--bg-surface);border-radius:calc(var(--radius-md) * 1.2);border:1px solid color-mix(in srgb,var(--border-subtle) 60%,var(--ss-callout-accent) 40%);.ss_callout__icon{flex-shrink:0;color:var(--ss-callout-accent);svg{width:1.6rem;height:1.6rem;display:block}}.ss_callout__content{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}.ss_callout__title{margin:0;font-size:1rem;font-weight:600;color:var(--fg-primary);line-height:1.45}.ss_callout__body{margin:.25rem 0 0;color:var(--fg-secondary)}.ss_callout__actions{margin-top:.65rem;display:inline-flex;gap:.65rem;font-size:.9rem;button,.ss_callout__link{padding:0;border:none;background:none;font:inherit;cursor:pointer;text-decoration:none;color:color-mix(in srgb,var(--ss-callout-accent) 80%,var(--fg-primary) 20%);&:hover{text-decoration:underline}}}&.ss_callout--subtle{box-shadow:none;border-color:var(--border-subtle);background:color-mix(in srgb,var(--bg-surface-subtle) 85%,var(--ss-callout-accent-soft) 15%)}}.ss_callout--red{--ss-callout-accent: #E53935}.ss_callout--pink{--ss-callout-accent: #D81B60}.ss_callout--purple{--ss-callout-accent: #8E24AA}.ss_callout--deep-purple{--ss-callout-accent: #5E35B1}.ss_callout--indigo{--ss-callout-accent: #3949AB}.ss_callout--blue{--ss-callout-accent: #1E88E5}.ss_callout--light-blue{--ss-callout-accent: #039BE5}.ss_callout--cyan{--ss-callout-accent: #00ACC1}.ss_callout--teal{--ss-callout-accent: #00897B}.ss_callout--green{--ss-callout-accent: #43A047}.ss_callout--light-green{--ss-callout-accent: #7CB342}.ss_callout--lime{--ss-callout-accent: #C0CA33}.ss_callout--yellow{--ss-callout-accent: #FDD835}.ss_callout--amber{--ss-callout-accent: #FFB300}.ss_callout--orange{--ss-callout-accent: #FB8C00}.ss_callout--deep-orange{--ss-callout-accent: #F4511E}.ss_callout--brown{--ss-callout-accent: #6D4C41}.ss_callout--grey{--ss-callout-accent: #757575}.ss_callout--blue-grey{--ss-callout-accent: #546E7A}.ss_dropdown{position:relative;display:inline-flex}.ss_dropdown__trigger{justify-content:center}.ss_dropdown__menu{position:absolute;top:calc(100% + .4rem);right:0;z-index:30;min-width:12rem;padding:.4rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);opacity:0;transform:translateY(-6px) scale(.98);transition:opacity .14s ease,transform .16s ease;&[data-state=open]{opacity:1;transform:translateY(0) scale(1)}&[data-state=closed]{opacity:0;transform:translateY(-6px) scale(.98)}}.ss_dropdown__item{width:100%;display:flex;align-items:center;gap:.6rem;padding:.45rem .55rem;border-radius:var(--radius-md);border:none;background:transparent;color:var(--fg-primary);cursor:pointer;text-align:left;transition:background-color .12s ease,color .12s ease;&:hover{background:var(--bg-surface-subtle)}}.ss_dropdown__item_icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;color:var(--fg-muted);svg{width:100%;height:100%}}.ss_dropdown__item_label{flex:1;min-width:0;font-size:.9rem}.ss_dropdown__item_check{display:inline-flex;align-items:center;justify-content:center;color:var(--primary);svg{width:1rem;height:1rem}}.ss_chip{--ss-chip-accent: var(--primary);--ss-chip-accent-soft: color-mix(in srgb, var(--ss-chip-accent) 16%, transparent);display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .65rem;border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,var(--ss-chip-accent) 45%,var(--border-subtle) 55%);background:color-mix(in srgb,var(--ss-chip-accent-soft) 60%,var(--bg-surface) 40%);color:var(--fg-primary);font-size:.82rem;line-height:1.3}.ss_chip--clickable{cursor:pointer;transition:background-color .12s ease,border-color .12s ease,transform 80ms ease;&:hover{border-color:color-mix(in srgb,var(--ss-chip-accent) 65%,var(--border-strong) 35%);background:color-mix(in srgb,var(--ss-chip-accent-soft) 75%,var(--bg-surface) 25%)}&:active{transform:translateY(1px)}}.ss_chip__label{white-space:nowrap}.ss_chip__dismiss{width:1.3rem;height:1.3rem;padding:0;border:none;background:transparent;color:var(--fg-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;svg{width:.9rem;height:.9rem}&:hover{color:var(--fg-primary)}}.ss_chip--red{--ss-chip-accent: #E53935}.ss_chip--pink{--ss-chip-accent: #D81B60}.ss_chip--purple{--ss-chip-accent: #8E24AA}.ss_chip--deep-purple{--ss-chip-accent: #5E35B1}.ss_chip--indigo{--ss-chip-accent: #3949AB}.ss_chip--blue{--ss-chip-accent: #1E88E5}.ss_chip--light-blue{--ss-chip-accent: #039BE5}.ss_chip--cyan{--ss-chip-accent: #00ACC1}.ss_chip--teal{--ss-chip-accent: #00897B}.ss_chip--green{--ss-chip-accent: #43A047}.ss_chip--light-green{--ss-chip-accent: #7CB342}.ss_chip--lime{--ss-chip-accent: #C0CA33}.ss_chip--yellow{--ss-chip-accent: #FDD835}.ss_chip--amber{--ss-chip-accent: #FFB300}.ss_chip--orange{--ss-chip-accent: #FB8C00}.ss_chip--deep-orange{--ss-chip-accent: #F4511E}.ss_chip--brown{--ss-chip-accent: #6D4C41}.ss_chip--grey{--ss-chip-accent: #757575}.ss_chip--blue-grey{--ss-chip-accent: #546E7A}.ss_table{width:100%;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-surface);box-shadow:var(--shadow-soft);overflow:hidden}.ss_table__scroll{overflow:auto}.ss_table table{width:100%;border-collapse:collapse;min-width:32rem}.ss_table th{text-align:left;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted);background:color-mix(in srgb,var(--bg-surface-subtle) 80%,var(--bg-surface) 20%);border-bottom:1px solid var(--border-subtle);padding:.75rem .9rem}.ss_table__header_label{display:inline-flex;align-items:center;gap:.35rem}.ss_table__sort_button{border:none;background:transparent;padding:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem}.ss_table__sort_icon{display:inline-flex;align-items:center;justify-content:center;color:currentColor;opacity:.7}.ss_table__sort_icon svg{width:1rem;height:1rem}.ss_table td{padding:.8rem .9rem;border-bottom:1px solid var(--border-subtle);color:var(--fg-primary);font-size:.9rem}.ss_table tbody tr:last-child td{border-bottom:none}.ss_table__pagination{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.75rem .9rem;border-top:1px solid var(--border-subtle);background:color-mix(in srgb,var(--bg-surface-subtle) 80%,var(--bg-surface) 20%)}.ss_table--pagination-top .ss_table__pagination{border-top:none;border-bottom:1px solid var(--border-subtle)}.ss_table__page_button{border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--fg-primary);border-radius:var(--radius-pill);width:2rem;height:2rem;padding:0;font-size:.85rem;cursor:pointer;transition:background-color .12s ease,border-color .12s ease;&:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg-surface)}&:disabled{cursor:not-allowed;color:var(--fg-muted);border-color:var(--border-subtle);background:var(--bg-surface);opacity:.6}}.ss_table__page_info{font-size:.85rem;color:var(--fg-muted)}.ss_table__page_button svg{width:1rem;height:1rem;display:block;margin:0 auto}.ss_table td>div{display:inline-flex;align-items:center;gap:.4rem;min-width:0}.ss_table tbody tr[data-clickable=true]{cursor:pointer;transition:background-color .12s ease}.ss_table tbody tr[data-clickable=true]:hover{background:var(--bg-surface-subtle)}.ss_table--stack{display:flex;flex-direction:column;gap:.75rem}.ss_table__stack{display:flex;flex-direction:column;gap:.75rem;padding:.75rem}.ss_table__stack_row{padding:.5rem .6rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft)}.ss_table__stack_row[data-clickable=true]{cursor:pointer;transition:border-color .12s ease,background-color .12s ease}.ss_table__stack_row[data-clickable=true]:hover{background-color:var(--bg-surface-subtle);border-color:var(--border-strong)}.ss_table__stack_row[data-clickable=true]:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ss_expandable{width:100%;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);overflow:hidden;.ss_expandable__header{width:100%;display:flex;align-items:center;gap:.6rem;padding:.9rem 1rem;text-align:left;background:var(--bg-surface);border:none;color:var(--fg-primary);cursor:pointer;user-select:none;transition:background-color .12s ease;&:hover{background:var(--bg-surface-subtle)}&:focus-visible{outline:none;box-shadow:var(--focus-ring)}}.ss_expandable__icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;color:var(--fg-muted);svg{width:1.1rem;height:1.1rem}}.ss_expandable__title{font-size:.96rem;font-weight:600;color:inherit}.ss_expandable__content{overflow:hidden;padding:0;background:var(--bg-surface);transition-property:height}.ss_expandable__divider_wrapper{padding:0 1rem 1rem}.ss_expandable__divider{height:1px;margin:.75rem 0 .8rem;background:var(--border-subtle)}}.ss_divider{width:100%;height:1px;margin:.35rem 0;background:var(--border-subtle)}.ss_divider--vertical{width:1px;height:100%}.ss_surface{width:100%;padding:1rem 1.25rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft)}.ss_tile{width:100%;padding:.9rem 1rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft)}.ss_tile__row{display:flex;align-items:center;gap:.5rem}.ss_tile__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--fg-muted);svg{width:1.25rem;height:1.25rem}}.ss_tile__content{flex:1;min-width:0}.ss_tile__trailing{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--fg-muted);font-size:.8rem}.ss_tile__title{margin:0;font-size:.95rem;font-weight:600;color:var(--fg-primary)}.ss_tile__link,.ss_tile__text{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss_tile__link{color:inherit;text-decoration:none;&:hover{text-decoration:underline}}.ss_tile__subtitle{margin-top:.2rem;font-size:.82rem;color:var(--fg-secondary)}.ss_tile__body{margin-top:.65rem;color:var(--fg-secondary);font-size:.88rem;line-height:1.45}.ss_attr_list{font-size:.95em;padding:.15rem 0;max-width:100%}.ss_attr_list,.ss_attr_list__row{max-width:100%}.ss_attr_list__row{display:grid;grid-template-columns:minmax(9rem,14rem) minmax(0,1fr);gap:.3rem 1.25rem;padding:.45rem 0;border-bottom:1px solid var(--border-subtle);align-items:baseline}.ss_attr_list__row:last-child{border-bottom:none}.ss_attr_list__row--third{grid-template-columns:minmax(9rem,14rem) minmax(0,1fr) minmax(0,1fr)}.ss_attr_list__label{margin:0;font-size:.8em;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fg-muted)}.ss_attr_list__value{margin:0;font-weight:500;color:var(--fg-primary);min-width:0;overflow-wrap:anywhere}@media (max-width: 640px){.ss_attr_list__row,.ss_attr_list__row--third{grid-template-columns:minmax(0,1fr);gap:.2rem}.ss_attr_list__label{font-size:.78em}}.ss_header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.25rem}.ss_header__text{min-width:0}.ss_header__title{margin:0;font-size:1.8rem;font-weight:600;color:var(--fg-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss_header__subtitle{margin:-.35rem 0 0;font-size:1rem;font-weight:500;color:var(--fg-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss_header__actions{flex-shrink:0;display:inline-flex;align-items:center;gap:.5rem}.ss_shell{height:100%;overflow:hidden;display:flex;flex-direction:column;background:var(--shell-bg);color:var(--fg-primary);.ss_shell__drawer_toggle_input{position:absolute;opacity:0;pointer-events:none}.ss_shell__header{position:relative;z-index:1;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem .9rem;background:var(--shell-header-bg);backdrop-filter:blur(18px);border-bottom:1px solid var(--shell-header-border)}.ss_shell__header_left{display:flex;align-items:center;gap:.75rem}.ss_shell__drawer_toggle{display:none}.ss_shell__title{font-size:1rem;font-weight:700;letter-spacing:.02em;color:var(--fg-primary)}.ss_shell__actions{display:flex;align-items:center;gap:.4rem}.ss_shell__body{flex:1 1 auto;min-height:0;display:flex;position:relative;overflow:hidden}.ss_shell__nav{flex:0 0 16rem;max-width:16rem;background:var(--shell-nav-bg);backdrop-filter:blur(12px);border-right:1px solid var(--shell-nav-border);overflow:auto}.ss_shell__nav_inner{padding:.75rem .7rem 1rem}.ss_shell__main{flex:1 1 auto;min-width:0;overflow:auto;padding:1.25rem 1.3rem 1.6rem}.ss_shell__scrim{display:none}.ss_shell__nav_list{display:flex;flex-direction:column;gap:.25rem}.ss_shell__nav_item{display:flex;align-items:center;gap:.55rem;padding:.4rem .55rem;border-radius:var(--radius-md);color:var(--fg-primary);text-decoration:none;background:transparent;border:none;cursor:pointer;transition:background-color .12s ease,color .12s ease;&:hover{background:#2563eb0f}}.ss_shell__nav_item--active{background:#2563eb24;color:var(--fg-primary)}.ss_shell__nav_icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;color:var(--fg-muted)}.ss_shell__nav_label{font-size:.9rem;color:inherit}.ss_shell__nav_group{border:none;>summary{list-style:none;&::-webkit-details-marker{display:none}}}.ss_shell__nav_group_header{display:flex;align-items:center;gap:.55rem;padding:.4rem .55rem;cursor:pointer;user-select:none;background:transparent;border-radius:var(--radius-md);transition:background-color .12s ease,color .12s ease;&:hover{background:#2563eb0f}}.ss_shell__nav_group_chevron{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:1rem;height:1rem;color:var(--fg-muted)}.ss_shell__nav_group_chevron_svg{width:1rem;height:1rem}.ss_shell__nav_group[open]{.ss_shell__nav_group_chevron_svg{transform:rotate(90deg)}}.ss_shell__nav_group_items{padding-left:1.1rem;margin-top:.15rem;display:flex;flex-direction:column;gap:.2rem}@media (max-width: 78rem){.ss_shell__drawer_toggle{display:inline-flex}.ss_shell__nav{position:absolute;top:0;bottom:0;left:0;z-index:20;width:min(80vw,18rem);max-width:18rem;transform:translate(-100%);transition:transform .16s ease-out;box-shadow:var(--shadow-soft)}.ss_shell__main{padding:1.25rem}.ss_shell__scrim{display:block;position:absolute;inset:0;background:#02061766;opacity:0;pointer-events:none;transition:opacity .16s ease}.ss_shell__drawer_toggle_input:checked~.ss_shell__body{.ss_shell__nav{transform:translate(0)}.ss_shell__scrim{opacity:1;pointer-events:auto}}}}.ss_modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:2rem 1rem;&[data-state=closed]{pointer-events:none}.ss_modal__backdrop{position:absolute;inset:0;background:#0206178c;opacity:0;transition:opacity .16s ease}.ss_modal__panel{position:relative;z-index:1;width:min(92vw,46rem);max-height:min(85vh,720px);display:flex;flex-direction:column;gap:0;padding:0;background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);opacity:0;transform:translateY(10px) scale(.985);transition:transform .18s ease,opacity .16s ease;outline:none}.ss_modal__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1.3rem 1.5rem .75rem}.ss_modal__title{margin:0;font-size:1.08rem;font-weight:700;color:var(--fg-primary)}.ss_modal__close{flex-shrink:0;width:2rem;height:2rem;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem;line-height:1;color:var(--clear-fg);background:var(--clear-bg);border:1px solid var(--clear-border);border-radius:var(--radius-pill);cursor:pointer;user-select:none;transition:background-color .1s ease,border-color .1s ease,transform 80ms ease;&:hover{background:var(--clear-bg-hover);border-color:var(--clear-border-hover)}&:focus-visible{outline:none;box-shadow:var(--focus-ring)}&:active{transform:translateY(1px)}}.ss_modal__body{color:var(--fg-secondary);line-height:1.6;overflow:auto}.ss_modal__body_inner{padding:0 1.5rem 1rem}.ss_modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:0 1.5rem 1.25rem}&[data-state=open]{.ss_modal__backdrop{opacity:1}.ss_modal__panel{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 40rem){padding:0;.ss_modal__panel:not(.ss_modal__panel--no-fullscreen){width:100vw;height:100vh;max-height:100vh;border-radius:0;border:none;.ss_modal__body{flex:1;min-height:0;overflow:auto}.ss_modal__footer{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--border-subtle);background:var(--bg-surface)}}}}.ss_modal__panel--sm{width:min(90vw,26rem)}.ss_modal__panel--lg{width:min(92vw,48rem)}.ss_modal__panel--fullscreen{width:100vw;height:100vh;max-height:100vh;border-radius:0;border:none}.ss_modal__panel--fullscreen .ss_modal__body{flex:1;min-height:0;overflow:auto}.ss_modal__panel--fullscreen .ss_modal__footer{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--border-subtle);background:var(--bg-surface)}@media (prefers-reduced-motion: reduce){*{animation-duration:0ms!important;transition-duration:0ms!important}}
1
+ :root{font-family:system-ui,-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif;--bg-page: #fdfdfd;--bg-surface: #ffffff;--bg-surface-subtle: #f3f4f6;--shell-bg: transparent;--shell-header-bg: rgba(255, 255, 255, .85);--shell-header-border: rgba(209, 213, 219, .8);--shell-nav-bg: rgba(255, 255, 255, .92);--shell-nav-border: rgba(209, 213, 219, .85);--fg-primary: #0f172a;--fg-secondary: #4b5563;--fg-muted: #6b7280;--fg-inverse: #ffffff;--border-subtle: #e5e7eb;--border-strong: #d1d5db;--card-accent: #2563eb;--input-bg: #ffffff;--input-fg: var(--fg-primary);--input-border: #d1d5db;--input-border-hover: #9ca3af;--input-border-disabled: #e5e7eb;--input-bg-disabled: #f3f4f6;--input-fg-disabled: #9ca3af;--input-bg-hover: #f9fafb;--input-bg-focus: #ffffff;--scrollbar-thumb: rgba(15, 23, 42, .24);--primary: #2563eb;--primary-soft: #e0ecff;--primary-soft-stronger: #d1e1ff;--on-primary: #ffffff;--error: #dc2626;--on-error: #ffffff;--error-strong: #b91c1c;--disabled: #9ca3af;--on-disabled: #f9fafb;--suggestion-bg: var(--bg-surface);--suggestion-hover-bg: #f3f4ff;--suggestion-focus-bg: #e0ebff;--suggestion-selected-bg: #e0ebff;--suggestion-indicator: #2563eb;--btn-primary-bg: var(--primary);--btn-primary-border: #1d4ed8;--btn-primary-bg-hover: #1d4ed8;--btn-primary-border-hover: #1e40af;--btn-secondary-bg: #eef1f7;--btn-secondary-border: #d1d5db;--btn-secondary-bg-hover: #e0e3ec;--btn-secondary-border-hover: #cbd0dd;--btn-tertiary-bg: transparent;--btn-tertiary-border: var(--border-subtle);--btn-tertiary-bg-hover: #e9effa;--btn-tertiary-border-hover: var(--border-strong);--clear-bg: #edeff4;--clear-border: #e2e4ec;--clear-bg-hover: #e1e4ee;--clear-border-hover: #cbd0dd;--clear-fg: #4b5563;--token-bg: #eef2ff;--token-fg: #1f2937;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-pill: 999px;--focus-ring: 0 0 0 1px rgba(37, 99, 235, .75), 0 0 0 4px rgba(191, 219, 254, .9);--focus-ring-error: 0 0 0 1px rgba(220, 38, 38, .85), 0 0 0 4px rgba(254, 202, 202, .85);--shadow-soft: 0 10px 30px rgba(15, 23, 42, .06);--btn-shadow: 0 6px 18px rgba(15, 23, 42, .16);--btn-shadow-hover: 0 10px 30px rgba(15, 23, 42, .18)}@media (prefers-color-scheme: dark){:root{--bg-page: #0f1115;--bg-surface: #14171c;--bg-surface-subtle: #1a1e24;--fg-primary: #e7e9ee;--fg-secondary: #c7cbd4;--fg-muted: #9ca3af;--fg-inverse: #0f1115;--border-subtle: #2a2f36;--border-strong: #3a4048;--card-accent: #94a3b8;--input-bg: #14171c;--input-fg: var(--fg-primary);--input-border: #2a2f36;--input-border-hover: #3a4048;--input-border-disabled: #111827;--input-bg-disabled: #14171c;--input-fg-disabled: #6b7280;--input-bg-hover: #1a1e24;--input-bg-focus: #20252c;--scrollbar-thumb: rgba(156, 163, 175, .38);--primary: #3b82f6;--primary-soft: #172554;--primary-soft-stronger: #1d4ed8;--on-primary: #ffffff;--error: #fb7185;--on-error: #0f1115;--error-strong: #f43f5e;--suggestion-bg: #14171c;--suggestion-hover-bg: #1b2027;--suggestion-focus-bg: #21262e;--suggestion-selected-bg: #262c35;--suggestion-indicator: #94a3b8;--btn-primary-bg: var(--primary);--btn-primary-border: #1d4ed8;--btn-primary-bg-hover: #1d4ed8;--btn-primary-border-hover: #1e3a8a;--btn-secondary-bg: #1a1e24;--btn-secondary-border: #2f353e;--btn-secondary-bg-hover: #232831;--btn-secondary-border-hover: #3a4048;--btn-tertiary-bg: transparent;--btn-tertiary-border: #2f353e;--btn-tertiary-bg-hover: #232831;--btn-tertiary-border-hover: #3a4048;--clear-bg: #1a1e24;--clear-border: #2f353e;--clear-bg-hover: #232831;--clear-border-hover: #3a4048;--clear-fg: #e5e7eb;--token-bg: #232831;--token-fg: #e5e7eb;--shadow-soft: 0 18px 50px rgba(0, 0, 0, .75);--btn-shadow: 0 12px 30px rgba(0, 0, 0, .65);--btn-shadow-hover: 0 16px 40px rgba(0, 0, 0, .85);--shell-bg: transparent;--shell-header-bg: rgba(20, 23, 28, .92);--shell-header-border: rgba(58, 64, 72, .9);--shell-nav-bg: rgba(20, 23, 28, .96);--shell-nav-border: rgba(58, 64, 72, .92)}}@keyframes input-alert-appear{0%{opacity:0;transform:translateY(-1px)}to{opacity:1;transform:translateY(0)}}*,*:before,*:after{box-sizing:border-box}*{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:inherit;color:var(--fg-primary);background-color:var(--bg-page);font-size:14px}html,body,#root{position:relative;height:100%;width:100%;overflow:hidden}.ss_form{max-width:48rem;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:1rem;padding:.5rem 0}.ss__suggestions{position:absolute;top:calc(100% + .35rem);left:0;right:0;z-index:10;display:flex;flex-direction:column;max-height:clamp(7rem,35vh,14rem);margin:0;padding:.25rem 0;list-style-type:none;background-color:var(--suggestion-bg);border-width:1px;border-style:solid;border-color:var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);overflow-y:auto;overflow-x:hidden;li{display:flex;align-items:flex-start;gap:.4rem;padding:.45rem .8rem;font-size:.9rem;line-height:1.45;color:var(--fg-primary);cursor:pointer;user-select:none;outline:none;+li{border-top:1px solid var(--border-subtle)}&:hover{background-color:var(--suggestion-hover-bg)}&:focus{background-color:var(--suggestion-focus-bg)}&.ss__hovered{background-color:var(--suggestion-focus-bg)}&.ss__selected{font-weight:500;background-color:var(--suggestion-selected-bg);box-shadow:inset 2px 0 0 var(--suggestion-indicator)}&.ss__selected.ss__hovered,&.ss__selected:hover{background-color:#2563eb14}.ss__title{font-weight:500}.ss__description{font-size:.8rem;color:var(--fg-muted)}}&::-webkit-scrollbar{width:6px}&::-webkit-scrollbar-track{background:transparent}&::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:999px}}.ss_form_input,.ss_form_date{display:flex;flex-direction:column;gap:.35rem;label{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.01em;text-transform:none;color:var(--fg-muted)}.ss__wrapper{position:relative;display:inline-block;width:100%}input,textarea{display:block;width:100%;min-width:0;padding:.55rem .7rem;font-size:.95rem;line-height:1.4;color:var(--input-fg);background-color:var(--input-bg);border-width:1px;border-style:solid;border-color:var(--input-border);border-radius:var(--radius-md);outline:none;box-shadow:none;font-family:inherit;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease,transform 80ms ease;&:hover:not([disabled]){border-color:var(--input-border-hover);background-color:var(--input-bg-hover)}&:focus-visible{border-color:var(--primary);box-shadow:var(--focus-ring);background-color:var(--input-bg-focus)}&[disabled]{cursor:not-allowed;color:var(--input-fg-disabled);background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled)}}textarea{width:100%;resize:vertical;min-height:6.5rem}.ss__suggestions{max-height:clamp(7rem,30vh,12rem)}&:not(:focus-within){.ss__suggestions{display:none}}&:has([role=alert]){input,textarea{border-color:var(--error);box-shadow:var(--focus-ring-error)}}[role=alert]{margin-top:.15rem;font-size:.8rem;line-height:1.4;color:var(--error);animation:.12s input-alert-appear ease-out}}.ss_form_date{position:relative;input{padding-right:2.1rem}input::-webkit-calendar-picker-indicator{opacity:0;display:none}}.ss_form_date__icon{position:absolute;right:.7rem;top:50%;width:1rem;height:1rem;transform:translateY(-50%);color:var(--fg-muted);padding:0;border:none;background:transparent;cursor:pointer;&:disabled{cursor:not-allowed;color:var(--input-fg-disabled)}svg{width:100%;height:100%;display:block}}.ss_form_date__picker{position:absolute;top:calc(100% + .35rem);left:0;z-index:10;width:min(18rem,100%);padding:.75rem;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-soft)}.ss_form_date__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.6rem}.ss_form_date__nav_group{display:flex;align-items:center;gap:.35rem}.ss_form_date__title{font-size:.9rem;font-weight:600;color:var(--fg-primary);text-transform:capitalize}.ss_form_date__nav{width:1.8rem;height:1.8rem;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);background:var(--bg-surface-subtle);color:var(--fg-primary);cursor:pointer;transition:background-color .12s ease,border-color .12s ease;&:hover{border-color:var(--border-strong)}}.ss_form_date__nav svg{width:1rem;height:1rem;display:block;margin:0 auto}.ss_form_date__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:.2rem;margin-bottom:.35rem;font-size:.75rem;color:var(--fg-muted);text-align:center}.ss_form_date__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.2rem}.ss_form_date__day{height:2rem;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--fg-primary);cursor:pointer;transition:background-color .12s ease,border-color .12s ease;&:hover{background:var(--bg-surface-subtle)}&.is-selected{background:var(--primary-soft);border-color:var(--primary);color:var(--fg-primary);font-weight:600}&.is-today:not(.is-selected){border-color:var(--border-strong);background:var(--bg-surface-subtle);color:var(--fg-primary);font-weight:500}}.ss_form_date__day.is-empty{border:none;background:transparent;cursor:default}.ss_form_checkbox{display:flex;flex-direction:column;gap:.3rem;width:100%;font-size:.9rem;color:var(--fg-secondary);.ss__wrapper{display:inline-flex;align-items:flex-start;gap:.55rem;padding:.15rem .05rem;font-size:.9rem;line-height:1.5;color:var(--fg-secondary);background-color:transparent;border:none;outline:none}input[type=checkbox]{margin-top:.12rem;width:1.05rem;height:1.05rem;flex-shrink:0;position:relative;appearance:none;-webkit-appearance:none;-moz-appearance:none;accent-color:initial;border-radius:calc(var(--radius-sm) * .9);border:1px solid var(--border-strong);background-color:var(--bg-surface);box-shadow:0 1px 1px #0f172a0f;cursor:pointer;outline:none;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform 80ms ease;&:hover:not(:disabled){border-color:var(--input-border-hover);background-color:var(--input-bg-hover)}&:active:not(:disabled){transform:translateY(1px)}&:after{content:"";position:absolute;inset:0;margin:auto;width:.55rem;height:.3rem;border-left:2px solid var(--on-primary);border-bottom:2px solid var(--on-primary);transform-origin:center;transform:translateY(-1px) rotate(-45deg) scale(.2);opacity:0;transition:transform .12s ease-out,opacity .12s ease-out}&:checked,&[aria-checked=true]{background-color:var(--primary)!important;border-color:var(--primary)!important;&:after{opacity:1;transform:translateY(-1px) rotate(-45deg) scale(1)}}&:checked[disabled],&[aria-checked=true][disabled]{background-color:color-mix(in srgb,var(--input-bg-disabled) 70%,var(--fg-primary))!important;border-color:var(--input-border-disabled)!important}&[disabled]{cursor:not-allowed;background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled);box-shadow:none;opacity:.75;&:after{border-color:#fff}}}&:has(input[type=checkbox]:focus-visible){input[type=checkbox]{outline:none;box-shadow:var(--focus-ring)}}label{margin:0;font-size:.9rem;line-height:1.5;color:var(--fg-primary);cursor:pointer;user-select:none}&:has(input[type=checkbox][disabled]){color:var(--input-fg-disabled);user-select:none;label{cursor:not-allowed;color:var(--input-fg-disabled)}}[role=alert]{font-size:.8rem;color:var(--error);animation:.12s input-alert-appear ease-out}}.ss_form_select{display:flex;flex-direction:column;gap:.35rem;width:100%;label{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.01em;color:var(--fg-muted)}select{display:block;width:100%;padding:.55rem 2.1rem .55rem .7rem;font-size:.95rem;line-height:1.4;color:var(--input-fg);background-color:var(--input-bg);background-image:none;border-width:1px;border-style:solid;border-color:var(--input-border);border-radius:var(--radius-md);outline:none;appearance:none;box-shadow:none;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease;&:hover:not([disabled]){border-color:var(--input-border-hover);background-color:var(--input-bg-hover)}&:focus-visible{border-color:var(--primary);box-shadow:var(--focus-ring);background-color:var(--input-bg-focus)}&:has(+[role=alert]){border-color:var(--error);box-shadow:var(--focus-ring-error)}&[disabled]{cursor:not-allowed;color:var(--input-fg-disabled);background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled)}}.ss_form_select__field{position:relative}.ss_form_select__icon{position:absolute;right:.7rem;top:50%;width:1rem;height:1rem;transform:translateY(-50%);color:var(--fg-muted);pointer-events:none}.ss_form_select__icon svg{width:100%;height:100%;display:block}[role=alert]{font-size:.8rem;color:var(--error);animation:.12s input-alert-appear ease-out}}.ss_form_ac_select{display:flex;flex-direction:column;gap:.35rem;label{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.01em;color:var(--fg-muted)}.ss__wrapper{position:relative;display:inline-block;width:100%}.ss__input_row{display:flex;align-items:center;gap:.4rem;width:100%;min-width:0;padding:.5rem .65rem;font-size:.95rem;line-height:1.4;color:var(--input-fg);background-color:var(--input-bg);border-width:1px;border-style:solid;border-color:var(--input-border);border-radius:var(--radius-md);outline:none;box-shadow:none;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease;&:hover:not(:has([disabled])){border-color:var(--input-border-hover);background-color:var(--input-bg-hover)}&:has([disabled]){cursor:not-allowed;color:var(--input-fg-disabled);background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled)}input{flex-grow:1;min-width:0;padding:0;font-size:inherit;line-height:inherit;color:inherit;background-color:transparent;border:none;outline:none}.ss__prefix{flex-shrink:0;display:inline-grid;place-items:center;width:1.75rem;height:1.75rem;padding:.15rem 0 0;box-sizing:border-box;font-size:.78rem;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--token-fg);background-color:var(--token-bg);border-radius:var(--radius-pill);cursor:pointer;user-select:none;border:1px solid rgba(37,99,235,.18);transition:background-color .1s ease,border-color .1s ease,transform 80ms ease,box-shadow .1s ease;&:hover{background-color:#2563eb0f;border-color:#2563eb59;box-shadow:0 0 0 1px #bfdbfecc}&:active{transform:translateY(1px)}}.ss__prefix[aria-disabled=true]{cursor:not-allowed;opacity:.6;pointer-events:none}.ss__suffix{flex-shrink:0}}.ss__selection{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0;padding:.5rem .65rem;font-size:.95rem;line-height:1.4;color:var(--input-fg);background-color:var(--input-bg);border-width:1px;border-style:solid;border-color:var(--input-border);border-radius:var(--radius-md);outline:none;box-shadow:none;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease;&:has(.ss__clear[disabled]){cursor:not-allowed;color:var(--input-fg-disabled);background-color:var(--input-bg-disabled);border-color:var(--input-border-disabled)}}.ss__content{flex:1;min-width:0}.ss__clear{flex-shrink:0;width:1.7rem;height:1.7rem;display:inline-flex;align-items:center;justify-content:center;font-size:.9rem;line-height:1;color:var(--clear-fg);background:var(--clear-bg);border-width:1px;border-style:solid;border-color:var(--clear-border);border-radius:var(--radius-pill);cursor:pointer;user-select:none;transition:background-color .1s ease,border-color .1s ease,transform 80ms ease;&:hover:not([disabled]){border-color:var(--clear-border-hover);background-color:var(--clear-bg-hover)}&:active:not([disabled]){transform:translateY(1px)}&[disabled]{cursor:not-allowed;opacity:.55}}.ss__suggestions{max-height:clamp(8rem,40vh,16rem);li{padding-inline:.85rem}}&:not(:focus-within){.ss__suggestions{display:none}}&:focus-within{.ss__input_row,.ss__selection{border-color:var(--primary);box-shadow:var(--focus-ring);background-color:var(--input-bg-focus)}}&:has([role=alert]){.ss__input_row,.ss__selection{border-color:var(--error);box-shadow:var(--focus-ring-error)}}[role=alert]{font-size:.8rem;color:var(--error);animation:.12s input-alert-appear ease-out}}.ss_button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.55rem 1.05rem;font-size:.9rem;font-weight:600;text-transform:none;text-align:center;letter-spacing:.01em;color:var(--on-primary);background:var(--btn-primary-bg);border:1px solid var(--btn-primary-border);border-radius:var(--radius-pill);outline:none;cursor:pointer;user-select:none;transition:background-color .12s ease,border-color .12s ease,opacity 80ms ease,transform 80ms ease,color .1s ease;&.secondary{color:var(--fg-primary);background:var(--btn-secondary-bg);border-color:var(--btn-secondary-border);box-shadow:none}&.tertiary{color:var(--fg-secondary);background:var(--btn-tertiary-bg);border-color:var(--btn-tertiary-border);box-shadow:none}&.danger{color:var(--on-error);background:var(--error);border-color:var(--error)}&:hover:not([disabled]){background-color:var(--btn-primary-bg-hover);border-color:var(--btn-primary-border-hover);&.secondary{background-color:var(--btn-secondary-bg-hover);border-color:var(--btn-secondary-border-hover)}&.tertiary{background-color:var(--btn-tertiary-bg-hover);border-color:var(--btn-tertiary-border-hover)}&.danger{background-color:var(--error-strong);border-color:var(--error-strong)}}&:active:not([disabled]){transform:translateY(1px)}&:focus-visible{outline:none;box-shadow:var(--focus-ring)}&[disabled]{cursor:not-allowed;color:var(--on-disabled);background:var(--disabled);border-color:var(--disabled);opacity:.9}}.ss_button--icon{width:2.1rem;height:2.1rem;padding:0;font-size:1.1rem;line-height:1;color:var(--fg-primary);background:transparent;border-color:transparent;border-radius:var(--radius-pill);box-shadow:none;transition:background-color .1s ease,border-color .1s ease,transform 80ms ease;&:hover:not([disabled]){background-color:var(--btn-tertiary-bg-hover);border-color:var(--btn-tertiary-border-hover)}&:active:not([disabled]){transform:translateY(1px)}&[disabled]{opacity:.5}}.ss_callout{--ss-callout-accent: var(--primary);--ss-callout-accent-soft: color-mix(in srgb, var(--ss-callout-accent) 22%, transparent);position:relative;display:flex;align-items:center;gap:1rem;width:100%;padding:1.15rem 1.4rem;font-size:.95rem;line-height:1.55;color:var(--fg-secondary);background:radial-gradient(circle at top left,var(--ss-callout-accent-soft) 0%,color-mix(in srgb,var(--ss-callout-accent-soft) 80%,var(--bg-surface) 20%) 28%,color-mix(in srgb,var(--ss-callout-accent-soft) 40%,var(--bg-surface) 60%) 62%,color-mix(in srgb,var(--ss-callout-accent-soft) 12%,var(--bg-surface) 88%) 82%,var(--bg-surface-subtle) 100%),var(--bg-surface);border-radius:calc(var(--radius-md) * 1.2);border:1px solid color-mix(in srgb,var(--border-subtle) 60%,var(--ss-callout-accent) 40%);.ss_callout__icon{flex-shrink:0;color:var(--ss-callout-accent);svg{width:1.6rem;height:1.6rem;display:block}}.ss_callout__content{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}.ss_callout__title{margin:0;font-size:1rem;font-weight:600;color:var(--fg-primary);line-height:1.45}.ss_callout__body{margin:.25rem 0 0;color:var(--fg-secondary)}.ss_callout__actions{margin-top:.65rem;display:inline-flex;gap:.65rem;font-size:.9rem;button,.ss_callout__link{padding:0;border:none;background:none;font:inherit;cursor:pointer;text-decoration:none;color:color-mix(in srgb,var(--ss-callout-accent) 80%,var(--fg-primary) 20%);&:hover{text-decoration:underline}}}&.ss_callout--subtle{box-shadow:none;border-color:var(--border-subtle);background:color-mix(in srgb,var(--bg-surface-subtle) 85%,var(--ss-callout-accent-soft) 15%)}}.ss_callout--red{--ss-callout-accent: #E53935}.ss_callout--pink{--ss-callout-accent: #D81B60}.ss_callout--purple{--ss-callout-accent: #8E24AA}.ss_callout--deep-purple{--ss-callout-accent: #5E35B1}.ss_callout--indigo{--ss-callout-accent: #3949AB}.ss_callout--blue{--ss-callout-accent: #1E88E5}.ss_callout--light-blue{--ss-callout-accent: #039BE5}.ss_callout--cyan{--ss-callout-accent: #00ACC1}.ss_callout--teal{--ss-callout-accent: #00897B}.ss_callout--green{--ss-callout-accent: #43A047}.ss_callout--light-green{--ss-callout-accent: #7CB342}.ss_callout--lime{--ss-callout-accent: #C0CA33}.ss_callout--yellow{--ss-callout-accent: #FDD835}.ss_callout--amber{--ss-callout-accent: #FFB300}.ss_callout--orange{--ss-callout-accent: #FB8C00}.ss_callout--deep-orange{--ss-callout-accent: #F4511E}.ss_callout--brown{--ss-callout-accent: #6D4C41}.ss_callout--grey{--ss-callout-accent: #757575}.ss_callout--blue-grey{--ss-callout-accent: #546E7A}.ss_dropdown{position:relative;display:inline-flex}.ss_dropdown__trigger{justify-content:center}.ss_dropdown__menu{position:absolute;top:calc(100% + .4rem);right:0;z-index:30;min-width:12rem;padding:.4rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);opacity:0;transform:translateY(-6px) scale(.98);transition:opacity .14s ease,transform .16s ease;&[data-state=open]{opacity:1;transform:translateY(0) scale(1)}&[data-state=closed]{opacity:0;transform:translateY(-6px) scale(.98)}}.ss_dropdown__item{width:100%;display:flex;align-items:center;gap:.6rem;padding:.45rem .55rem;border-radius:var(--radius-md);border:none;background:transparent;color:var(--fg-primary);cursor:pointer;text-align:left;transition:background-color .12s ease,color .12s ease;&:hover{background:var(--bg-surface-subtle)}}.ss_dropdown__item_icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;color:var(--fg-muted);svg{width:100%;height:100%}}.ss_dropdown__item_label{flex:1;min-width:0;font-size:.9rem}.ss_dropdown__item_check{display:inline-flex;align-items:center;justify-content:center;color:var(--primary);svg{width:1rem;height:1rem}}.ss_chip{--ss-chip-accent: var(--primary);--ss-chip-accent-soft: color-mix(in srgb, var(--ss-chip-accent) 16%, transparent);display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .65rem;border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,var(--ss-chip-accent) 45%,var(--border-subtle) 55%);background:color-mix(in srgb,var(--ss-chip-accent-soft) 60%,var(--bg-surface) 40%);color:var(--fg-primary);font-size:.82rem;line-height:1.3}.ss_chip--clickable{cursor:pointer;transition:background-color .12s ease,border-color .12s ease,transform 80ms ease;&:hover{border-color:color-mix(in srgb,var(--ss-chip-accent) 65%,var(--border-strong) 35%);background:color-mix(in srgb,var(--ss-chip-accent-soft) 75%,var(--bg-surface) 25%)}&:active{transform:translateY(1px)}}.ss_chip__label{white-space:nowrap}.ss_chip__dismiss{width:1.3rem;height:1.3rem;padding:0;border:none;background:transparent;color:var(--fg-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;svg{width:.9rem;height:.9rem}&:hover{color:var(--fg-primary)}}.ss_chip--red{--ss-chip-accent: #E53935}.ss_chip--pink{--ss-chip-accent: #D81B60}.ss_chip--purple{--ss-chip-accent: #8E24AA}.ss_chip--deep-purple{--ss-chip-accent: #5E35B1}.ss_chip--indigo{--ss-chip-accent: #3949AB}.ss_chip--blue{--ss-chip-accent: #1E88E5}.ss_chip--light-blue{--ss-chip-accent: #039BE5}.ss_chip--cyan{--ss-chip-accent: #00ACC1}.ss_chip--teal{--ss-chip-accent: #00897B}.ss_chip--green{--ss-chip-accent: #43A047}.ss_chip--light-green{--ss-chip-accent: #7CB342}.ss_chip--lime{--ss-chip-accent: #C0CA33}.ss_chip--yellow{--ss-chip-accent: #FDD835}.ss_chip--amber{--ss-chip-accent: #FFB300}.ss_chip--orange{--ss-chip-accent: #FB8C00}.ss_chip--deep-orange{--ss-chip-accent: #F4511E}.ss_chip--brown{--ss-chip-accent: #6D4C41}.ss_chip--grey{--ss-chip-accent: #757575}.ss_chip--blue-grey{--ss-chip-accent: #546E7A}.ss_link{color:var(--primary);text-decoration:none;font-weight:600}.ss_link:hover{text-decoration:underline}.ss_link:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:.2rem}.ss_tabs{width:100%;overflow-x:auto;overflow-y:hidden;padding:.75rem 1rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft)}.ss_surface .ss_tabs{padding:4px;background:transparent;border:none;border-radius:0;box-shadow:none}.ss_tablist{display:flex;flex-wrap:nowrap;gap:.5rem;align-items:center;background:linear-gradient(to right,var(--ss_tablist_bg) 70%,transparent) 0 0,linear-gradient(to left,var(--ss_tablist_bg) 70%,transparent) 100% 0;background-size:24px 100%,24px 100%;background-repeat:no-repeat;background-attachment:local,local;background-color:var(--ss_tablist_bg)}.ss_surface .ss_tablist{--ss_tablist_bg: var(--bg-surface)}.ss_tab{appearance:none;border:1px solid transparent;background:transparent;color:var(--fg-secondary);font-size:.9rem;font-weight:600;padding:.45rem .85rem;border-radius:var(--radius-pill);flex:0 0 auto;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.ss_tab:hover:not([disabled]){background:var(--bg-surface-subtle);border-color:var(--border-subtle);color:var(--fg-primary)}.ss_tab[aria-selected=true]{background:var(--primary-soft);border-color:var(--primary-soft-stronger);color:var(--primary)}.ss_tab:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ss_tab[disabled]{cursor:not-allowed;color:var(--fg-muted);opacity:.6}.ss_table{width:100%;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-surface);box-shadow:var(--shadow-soft);overflow:hidden}.ss_table__scroll{overflow:auto}.ss_table table{width:100%;border-collapse:collapse;min-width:32rem}.ss_table th{text-align:left;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted);background:color-mix(in srgb,var(--bg-surface-subtle) 80%,var(--bg-surface) 20%);border-bottom:1px solid var(--border-subtle);padding:.75rem .9rem}.ss_table__header_label{display:inline-flex;align-items:center;gap:.35rem}.ss_table__sort_button{border:none;background:transparent;padding:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem}.ss_table__sort_icon{display:inline-flex;align-items:center;justify-content:center;color:currentColor;opacity:.7}.ss_table__sort_icon svg{width:1rem;height:1rem}.ss_table td{padding:.8rem .9rem;border-bottom:1px solid var(--border-subtle);color:var(--fg-primary);font-size:.9rem}.ss_table tbody tr:last-child td{border-bottom:none}.ss_table__pagination{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.75rem .9rem;border-top:1px solid var(--border-subtle);background:color-mix(in srgb,var(--bg-surface-subtle) 80%,var(--bg-surface) 20%)}.ss_table--pagination-top .ss_table__pagination{border-top:none;border-bottom:1px solid var(--border-subtle)}.ss_table__page_button{border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--fg-primary);border-radius:var(--radius-pill);width:2rem;height:2rem;padding:0;font-size:.85rem;cursor:pointer;transition:background-color .12s ease,border-color .12s ease;&:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg-surface)}&:disabled{cursor:not-allowed;color:var(--fg-muted);border-color:var(--border-subtle);background:var(--bg-surface);opacity:.6}}.ss_table__page_info{font-size:.85rem;color:var(--fg-muted)}.ss_table__page_button svg{width:1rem;height:1rem;display:block;margin:0 auto}.ss_table td>div{display:inline-flex;align-items:center;gap:.4rem;min-width:0}.ss_table tbody tr[data-clickable=true]{cursor:pointer;transition:background-color .12s ease}.ss_table tbody tr[data-clickable=true]:hover{background:var(--bg-surface-subtle)}.ss_table--stack{display:flex;flex-direction:column;gap:.75rem}.ss_table__stack{display:flex;flex-direction:column;gap:.75rem;padding:.75rem}.ss_table__stack_row{padding:.5rem .6rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft)}.ss_table__stack_row[data-clickable=true]{cursor:pointer;transition:border-color .12s ease,background-color .12s ease}.ss_table__stack_row[data-clickable=true]:hover{background-color:var(--bg-surface-subtle);border-color:var(--border-strong)}.ss_table__stack_row[data-clickable=true]:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ss_expandable{width:100%;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);overflow:hidden;.ss_expandable__header{width:100%;display:flex;align-items:center;gap:.6rem;padding:.9rem 1rem;text-align:left;background:var(--bg-surface);border:none;color:var(--fg-primary);cursor:pointer;user-select:none;transition:background-color .12s ease;&:hover{background:var(--bg-surface-subtle)}&:focus-visible{outline:none;box-shadow:var(--focus-ring)}}.ss_expandable__icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;color:var(--fg-muted);svg{width:1.1rem;height:1.1rem}}.ss_expandable__title{font-size:.96rem;font-weight:600;color:inherit}.ss_expandable__content{overflow:hidden;padding:0;background:var(--bg-surface);transition-property:height}.ss_expandable__divider_wrapper{padding:0 1rem 1rem}.ss_expandable__divider{height:1px;margin:.75rem 0 .8rem;background:var(--border-subtle)}}.ss_divider{width:100%;height:1px;margin:.35rem 0;background:var(--border-subtle)}.ss_divider--vertical{width:1px;height:100%}.ss_surface{width:100%;padding:1rem 1.25rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft)}.ss_surface .ss_tile,.ss_surface .ss_expandable,.ss_surface .ss_table{box-shadow:none}.ss_row{display:flex;align-items:center;gap:.5rem;overflow-x:auto;overflow-y:hidden}.ss_row>*{flex:0 0 auto}.ss_row--wrap{flex-wrap:wrap;overflow-x:visible}.ss_tile{width:100%;padding:.9rem 1rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft)}.ss_tile__row{display:flex;align-items:center;gap:.5rem}.ss_tile__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--fg-muted);svg{width:1.25rem;height:1.25rem}}.ss_tile__content{flex:1;min-width:0}.ss_tile__trailing{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--fg-muted);font-size:.8rem}.ss_tile__title{margin:0;font-size:.95rem;font-weight:600;color:var(--fg-primary)}.ss_tile__link,.ss_tile__text{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss_tile__link{color:inherit;text-decoration:none;&:hover{text-decoration:underline}}.ss_tile__subtitle{margin-top:.2rem;font-size:.82rem;color:var(--fg-secondary)}.ss_tile__body{margin-top:.65rem;color:var(--fg-secondary);font-size:.88rem;line-height:1.45}.ss_attr_list{font-size:.95em;padding:.15rem 0;max-width:100%}.ss_attr_list,.ss_attr_list__row{max-width:100%}.ss_attr_list__row{display:grid;grid-template-columns:minmax(9rem,14rem) minmax(0,1fr);gap:.3rem 1.25rem;padding:.45rem 0;border-bottom:1px solid var(--border-subtle);align-items:baseline}.ss_attr_list__row:last-child{border-bottom:none}.ss_attr_list__row--third{grid-template-columns:minmax(9rem,14rem) minmax(0,1fr) minmax(0,1fr)}.ss_attr_list__label{margin:0;font-size:.8em;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fg-muted)}.ss_attr_list__value{margin:0;font-weight:500;color:var(--fg-primary);min-width:0;overflow-wrap:anywhere}@media (max-width: 640px){.ss_attr_list__row,.ss_attr_list__row--third{grid-template-columns:minmax(0,1fr);gap:.2rem}.ss_attr_list__label{font-size:.78em}}.ss_header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.25rem}.ss_header__text{min-width:0}.ss_header__title{margin:0;font-size:1.8rem;font-weight:600;color:var(--fg-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss_header__subtitle{margin:-.35rem 0 0;font-size:1rem;font-weight:500;color:var(--fg-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss_header__actions{flex-shrink:0;display:inline-flex;align-items:center;gap:.5rem}.ss_shell{height:100%;overflow:hidden;display:flex;flex-direction:column;background:var(--shell-bg);color:var(--fg-primary);.ss_shell__drawer_toggle_input{position:absolute;opacity:0;pointer-events:none}.ss_shell__header{position:relative;z-index:1;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem .9rem;background:var(--shell-header-bg);backdrop-filter:blur(18px);border-bottom:1px solid var(--shell-header-border)}.ss_shell__header_left{display:flex;align-items:center;gap:.75rem}.ss_shell__drawer_toggle{display:none}.ss_shell__title{font-size:1rem;font-weight:700;letter-spacing:.02em;color:var(--fg-primary)}.ss_shell__actions{display:flex;align-items:center;gap:.4rem}.ss_shell__body{flex:1 1 auto;min-height:0;display:flex;position:relative;overflow:hidden}.ss_shell__nav{flex:0 0 16rem;max-width:16rem;background:var(--shell-nav-bg);backdrop-filter:blur(12px);border-right:1px solid var(--shell-nav-border);overflow:auto}.ss_shell__nav_inner{padding:.75rem .7rem 1rem}.ss_shell__main{flex:1 1 auto;min-width:0;overflow:auto;padding:1.25rem 1.3rem 1.6rem}.ss_shell__scrim{display:none}.ss_shell__nav_list{display:flex;flex-direction:column;gap:.25rem}.ss_shell__nav_item{display:flex;align-items:center;gap:.55rem;padding:.4rem .55rem;border-radius:var(--radius-md);color:var(--fg-primary);text-decoration:none;background:transparent;border:none;cursor:pointer;transition:background-color .12s ease,color .12s ease;&:hover{background:#2563eb0f}}.ss_shell__nav_item--active{background:#2563eb24;color:var(--fg-primary)}.ss_shell__nav_icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;color:var(--fg-muted)}.ss_shell__nav_label{font-size:.9rem;color:inherit}.ss_shell__nav_group{border:none;>summary{list-style:none;&::-webkit-details-marker{display:none}}}.ss_shell__nav_group_header{display:flex;align-items:center;gap:.55rem;padding:.4rem .55rem;cursor:pointer;user-select:none;background:transparent;border-radius:var(--radius-md);transition:background-color .12s ease,color .12s ease;&:hover{background:#2563eb0f}}.ss_shell__nav_group_chevron{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:1rem;height:1rem;color:var(--fg-muted)}.ss_shell__nav_group_chevron_svg{width:1rem;height:1rem}.ss_shell__nav_group[open]{.ss_shell__nav_group_chevron_svg{transform:rotate(90deg)}}.ss_shell__nav_group_items{padding-left:1.1rem;margin-top:.15rem;display:flex;flex-direction:column;gap:.2rem}@media (max-width: 78rem){.ss_shell__drawer_toggle{display:inline-flex}.ss_shell__nav{position:absolute;top:0;bottom:0;left:0;z-index:20;width:min(80vw,18rem);max-width:18rem;transform:translate(-100%);transition:transform .16s ease-out;box-shadow:var(--shadow-soft)}.ss_shell__main{padding:1.25rem}.ss_shell__scrim{display:block;position:absolute;inset:0;background:#02061766;opacity:0;pointer-events:none;transition:opacity .16s ease}.ss_shell__drawer_toggle_input:checked~.ss_shell__body{.ss_shell__nav{transform:translate(0)}.ss_shell__scrim{opacity:1;pointer-events:auto}}}}.ss_modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:2rem 1rem;&[data-state=closed]{pointer-events:none}.ss_modal__backdrop{position:absolute;inset:0;background:#0206178c;opacity:0;transition:opacity .16s ease}.ss_modal__panel{position:relative;z-index:1;width:min(92vw,46rem);max-height:min(85vh,720px);display:flex;flex-direction:column;gap:0;padding:0;background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);opacity:0;transform:translateY(10px) scale(.985);transition:transform .18s ease,opacity .16s ease;outline:none}.ss_modal__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1.3rem 1.5rem .75rem}.ss_modal__title{margin:0;font-size:1.08rem;font-weight:700;color:var(--fg-primary)}.ss_modal__close{flex-shrink:0;width:2rem;height:2rem;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem;line-height:1;color:var(--clear-fg);background:var(--clear-bg);border:1px solid var(--clear-border);border-radius:var(--radius-pill);cursor:pointer;user-select:none;transition:background-color .1s ease,border-color .1s ease,transform 80ms ease;&:hover{background:var(--clear-bg-hover);border-color:var(--clear-border-hover)}&:focus-visible{outline:none;box-shadow:var(--focus-ring)}&:active{transform:translateY(1px)}}.ss_modal__body{color:var(--fg-secondary);line-height:1.6;overflow:auto}.ss_modal__body_inner{padding:0 1.5rem 1rem}.ss_modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:0 1.5rem 1.25rem}&[data-state=open]{.ss_modal__backdrop{opacity:1}.ss_modal__panel{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 40rem){padding:0;.ss_modal__panel:not(.ss_modal__panel--no-fullscreen){width:100vw;height:100vh;max-height:100vh;border-radius:0;border:none;.ss_modal__body{flex:1;min-height:0;overflow:auto}.ss_modal__footer{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--border-subtle);background:var(--bg-surface)}}}}.ss_modal__panel--sm{width:min(90vw,26rem)}.ss_modal__panel--lg{width:min(92vw,48rem)}.ss_modal__panel--fullscreen{width:100vw;height:100vh;max-height:100vh;border-radius:0;border:none}.ss_modal__panel--fullscreen .ss_modal__body{flex:1;min-height:0;overflow:auto}.ss_modal__panel--fullscreen .ss_modal__footer{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--border-subtle);background:var(--bg-surface)}@media (prefers-reduced-motion: reduce){*{animation-duration:0ms!important;transition-duration:0ms!important}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sortsys/ui",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "Simple and beautiful UI library for sortsys",
5
5
  "license": "MIT",
6
6
  "author": "Ludwig Lehnert",