@hanzo/ui 8.0.111 → 8.0.114

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.
@@ -49,3 +49,24 @@ exports.FIELD = {
49
49
  borderColor: '$borderColor',
50
50
  bg: 'transparent',
51
51
  };
52
+ /**
53
+ * Focus is @hanzo/design's, and a field says nothing about it.
54
+ *
55
+ * design draws ONE indicator for everything focusable —
56
+ * `:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px }` — and
57
+ * `gui-config.ts` re-bases `$outlineColor` onto that same `--ring` in every
58
+ * theme. So the outline gui already draws on a field IS that ring, and design's
59
+ * offset lands on top of it, because gui emits no `outline-offset` of its own.
60
+ *
61
+ * A field cannot abstain by writing a prop. gui carries the outline in its
62
+ * variant defaults, and a prop REPLACES that atomic class rather than dropping
63
+ * it — `focusVisibleStyle={{}}` emits the same three rules as no prop at all.
64
+ * Whatever a call site writes is compiled to
65
+ * `:root:root:root:root … :focus-visible { … !important }`, which outranks every
66
+ * stylesheet in the document, so `outlineWidth: 0` does not hand the decision
67
+ * back to the sheet: it deletes the indicator on every surface at once, and no
68
+ * consuming app can argue with it.
69
+ *
70
+ * A field that should ring differently from a button says so in @hanzo/design,
71
+ * where the rule lives. `focus.test.tsx` holds this.
72
+ */
@@ -46,4 +46,25 @@ export declare const FIELD: {
46
46
  readonly borderColor: "$borderColor";
47
47
  readonly bg: "transparent";
48
48
  };
49
+ /**
50
+ * Focus is @hanzo/design's, and a field says nothing about it.
51
+ *
52
+ * design draws ONE indicator for everything focusable —
53
+ * `:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px }` — and
54
+ * `gui-config.ts` re-bases `$outlineColor` onto that same `--ring` in every
55
+ * theme. So the outline gui already draws on a field IS that ring, and design's
56
+ * offset lands on top of it, because gui emits no `outline-offset` of its own.
57
+ *
58
+ * A field cannot abstain by writing a prop. gui carries the outline in its
59
+ * variant defaults, and a prop REPLACES that atomic class rather than dropping
60
+ * it — `focusVisibleStyle={{}}` emits the same three rules as no prop at all.
61
+ * Whatever a call site writes is compiled to
62
+ * `:root:root:root:root … :focus-visible { … !important }`, which outranks every
63
+ * stylesheet in the document, so `outlineWidth: 0` does not hand the decision
64
+ * back to the sheet: it deletes the indicator on every surface at once, and no
65
+ * consuming app can argue with it.
66
+ *
67
+ * A field that should ring differently from a button says so in @hanzo/design,
68
+ * where the rule lives. `focus.test.tsx` holds this.
69
+ */
49
70
  //# sourceMappingURL=control.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,SAAS,KAAK,CAAA;AAE3B,4CAA4C;AAC5C,eAAO,MAAM,MAAM,KAAK,CAAA;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;;;;;;CAMR,CAAA"}
1
+ {"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,SAAS,KAAK,CAAA;AAE3B,4CAA4C;AAC5C,eAAO,MAAM,MAAM,KAAK,CAAA;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;;;;;;CAMR,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;GAoBG"}
@@ -46,4 +46,25 @@ export const FIELD = {
46
46
  borderColor: '$borderColor',
47
47
  bg: 'transparent',
48
48
  };
49
+ /**
50
+ * Focus is @hanzo/design's, and a field says nothing about it.
51
+ *
52
+ * design draws ONE indicator for everything focusable —
53
+ * `:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px }` — and
54
+ * `gui-config.ts` re-bases `$outlineColor` onto that same `--ring` in every
55
+ * theme. So the outline gui already draws on a field IS that ring, and design's
56
+ * offset lands on top of it, because gui emits no `outline-offset` of its own.
57
+ *
58
+ * A field cannot abstain by writing a prop. gui carries the outline in its
59
+ * variant defaults, and a prop REPLACES that atomic class rather than dropping
60
+ * it — `focusVisibleStyle={{}}` emits the same three rules as no prop at all.
61
+ * Whatever a call site writes is compiled to
62
+ * `:root:root:root:root … :focus-visible { … !important }`, which outranks every
63
+ * stylesheet in the document, so `outlineWidth: 0` does not hand the decision
64
+ * back to the sheet: it deletes the indicator on every surface at once, and no
65
+ * consuming app can argue with it.
66
+ *
67
+ * A field that should ring differently from a button says so in @hanzo/design,
68
+ * where the rule lives. `focus.test.tsx` holds this.
69
+ */
49
70
  //# sourceMappingURL=control.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"control.js","sourceRoot":"","sources":["../../../src/backends/gui/control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAA;AAE3B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAA;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,cAAc;IAC3B,EAAE,EAAE,aAAa;CACT,CAAA"}
1
+ {"version":3,"file":"control.js","sourceRoot":"","sources":["../../../src/backends/gui/control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAA;AAE3B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAA;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,cAAc;IAC3B,EAAE,EAAE,aAAa;CACT,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;GAoBG"}
@@ -15,7 +15,6 @@ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
15
15
  const react_1 = require("react");
16
16
  const slot_1 = require("./slot.cjs");
17
17
  const gesture_1 = require("./gesture.cjs");
18
- const focus_1 = require("./focus.cjs");
19
18
  const mask_1 = require("./mask.cjs");
20
19
  const control_1 = require("./control.cjs");
21
20
  const HEIGHT = control_1.CONTROL_H;
@@ -33,7 +32,7 @@ const Input = /* @__PURE__ */ (0, react_1.forwardRef)(function Input({ startAdor
33
32
  const [revealed, setRevealed] = (0, react_1.useState)(false);
34
33
  const isPassword = type === 'password' || secureTextEntry === true;
35
34
  const toggle = isPassword && reveal;
36
- const field = ((0, jsx_runtime_1.jsx)(gui_1.Input, { ref: ref, ...(0, slot_1.slot)('input'), ...(isPassword ? (0, mask_1.masked)(!revealed) : { type, secureTextEntry }), ...control_1.FIELD, height: HEIGHT, width: "100%", minW: 0, ...focus_1.FOCUS, placeholderTextColor: "$color10", fontSize: "$3", pl: startAdornment ? WELL : control_1.GUTTER, pr: endAdornment || toggle ? WELL : control_1.GUTTER, ...props }));
35
+ const field = ((0, jsx_runtime_1.jsx)(gui_1.Input, { ref: ref, ...(0, slot_1.slot)('input'), ...(isPassword ? (0, mask_1.masked)(!revealed) : { type, secureTextEntry }), ...control_1.FIELD, height: HEIGHT, width: "100%", minW: 0, placeholderTextColor: "$color10", fontSize: "$3", pl: startAdornment ? WELL : control_1.GUTTER, pr: endAdornment || toggle ? WELL : control_1.GUTTER, ...props }));
37
36
  if (!startAdornment && !endAdornment && !toggle)
38
37
  return field;
39
38
  return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { position: "relative", width: "100%", items: "center", children: [startAdornment ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...well('l'), pointerEvents: "none", opacity: 0.6, children: startAdornment })) : null, field, toggle ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...well('r'), cursor: "pointer", ...(0, gesture_1.touch)(20), onPress: () => setRevealed((v) => !v), "aria-label": revealed ? 'Hide password' : 'Show password', children: revealed ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.EyeOff, { size: 16 }) : (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Eye, { size: 16 }) })) : endAdornment ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...well('r'), opacity: 0.6, children: endAdornment })) : null] }));
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/input.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAU,MAAM,YAAY,CAAA;AAEtD,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAWjF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IAC3E,yEAAyE;IACzE,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,8DAA8D;IAC9D,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAYD,QAAA,MAAM,KAAK,sHAqET,CAAA;AAEF,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/input.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAU,MAAM,YAAY,CAAA;AAEtD,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAUjF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IAC3E,yEAAyE;IACzE,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,8DAA8D;IAC9D,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAYD,QAAA,MAAM,KAAK,sHAoET,CAAA;AAEF,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -12,7 +12,6 @@ import { Eye, EyeOff } from '@hanzogui/lucide-icons-2';
12
12
  import { forwardRef, useState } from 'react';
13
13
  import { slot } from './slot.js';
14
14
  import { touch } from './gesture.js';
15
- import { FOCUS } from './focus.js';
16
15
  import { masked } from './mask.js';
17
16
  import { CONTROL_H, FIELD, GUTTER } from './control.js';
18
17
  const HEIGHT = CONTROL_H;
@@ -30,7 +29,7 @@ const Input = /* @__PURE__ */ forwardRef(function Input({ startAdornment, endAdo
30
29
  const [revealed, setRevealed] = useState(false);
31
30
  const isPassword = type === 'password' || secureTextEntry === true;
32
31
  const toggle = isPassword && reveal;
33
- const field = (_jsx(GuiInput, { ref: ref, ...slot('input'), ...(isPassword ? masked(!revealed) : { type, secureTextEntry }), ...FIELD, height: HEIGHT, width: "100%", minW: 0, ...FOCUS, placeholderTextColor: "$color10", fontSize: "$3", pl: startAdornment ? WELL : GUTTER, pr: endAdornment || toggle ? WELL : GUTTER, ...props }));
32
+ const field = (_jsx(GuiInput, { ref: ref, ...slot('input'), ...(isPassword ? masked(!revealed) : { type, secureTextEntry }), ...FIELD, height: HEIGHT, width: "100%", minW: 0, placeholderTextColor: "$color10", fontSize: "$3", pl: startAdornment ? WELL : GUTTER, pr: endAdornment || toggle ? WELL : GUTTER, ...props }));
34
33
  if (!startAdornment && !endAdornment && !toggle)
35
34
  return field;
36
35
  return (_jsxs(XStack, { position: "relative", width: "100%", items: "center", children: [startAdornment ? (_jsx(XStack, { ...well('l'), pointerEvents: "none", opacity: 0.6, children: startAdornment })) : null, field, toggle ? (_jsx(XStack, { ...well('r'), cursor: "pointer", ...touch(20), onPress: () => setRevealed((v) => !v), "aria-label": revealed ? 'Hide password' : 'Show password', children: revealed ? _jsx(EyeOff, { size: 16 }) : _jsx(Eye, { size: 16 }) })) : endAdornment ? (_jsx(XStack, { ...well('r'), opacity: 0.6, children: endAdornment })) : null] }));
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/backends/gui/input.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAuC,MAAM,OAAO,CAAA;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEpD,MAAM,MAAM,GAAG,SAAS,CAAA;AACxB,wDAAwD;AACxD,MAAM,IAAI,GAAG,EAAE,CAAA;AAmBf,MAAM,IAAI,GAAG,CAAC,IAAe,EAAE,EAAE,CAC/B,CAAC;IACC,QAAQ,EAAE,UAAmB;IAC7B,CAAC,IAAI,CAAC,EAAE,MAAM;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,KAAK,EAAE,QAAiB;IACxB,OAAO,EAAE,QAAiB;CAC3B,CAAC,CAAA;AAEJ,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAA+B,SAAS,KAAK,CACnF,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,EAChF,GAAG;IAEH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG,IAAI,KAAK,UAAU,IAAI,eAAe,KAAK,IAAI,CAAA;IAClE,MAAM,MAAM,GAAG,UAAU,IAAI,MAAM,CAAA;IAEnC,MAAM,KAAK,GAAG,CACZ,KAAC,QAAQ,IACP,GAAG,EAAE,GAAY,KACb,IAAI,CAAC,OAAO,CAAC,KAYb,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,KAM5D,KAAK,EACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAC,MAAM,EACZ,IAAI,EAAE,CAAC,KACH,KAAK,EACT,oBAAoB,EAAC,UAAU,EAC/B,QAAQ,EAAC,IAAI,EACb,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAClC,EAAE,EAAE,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KACtC,KAAK,GACT,CACH,CAAA;IAED,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAE7D,OAAO,CACL,MAAC,MAAM,IAAC,QAAQ,EAAC,UAAU,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,QAAQ,aACpD,cAAc,CAAC,CAAC,CAAC,CAChB,KAAC,MAAM,OAAK,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,YACrD,cAAc,GACR,CACV,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,EACL,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,MAAM,OACD,IAAI,CAAC,GAAG,CAAC,EACb,MAAM,EAAC,SAAS,KACZ,KAAK,CAAC,EAAE,CAAC,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBACzB,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,YAEvD,QAAQ,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,GAC7C,CACV,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CACjB,KAAC,MAAM,OAAK,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,YAChC,YAAY,GACN,CACV,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/backends/gui/input.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAuC,MAAM,OAAO,CAAA;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEpD,MAAM,MAAM,GAAG,SAAS,CAAA;AACxB,wDAAwD;AACxD,MAAM,IAAI,GAAG,EAAE,CAAA;AAmBf,MAAM,IAAI,GAAG,CAAC,IAAe,EAAE,EAAE,CAC/B,CAAC;IACC,QAAQ,EAAE,UAAmB;IAC7B,CAAC,IAAI,CAAC,EAAE,MAAM;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,KAAK,EAAE,QAAiB;IACxB,OAAO,EAAE,QAAiB;CAC3B,CAAC,CAAA;AAEJ,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAA+B,SAAS,KAAK,CACnF,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,EAChF,GAAG;IAEH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG,IAAI,KAAK,UAAU,IAAI,eAAe,KAAK,IAAI,CAAA;IAClE,MAAM,MAAM,GAAG,UAAU,IAAI,MAAM,CAAA;IAEnC,MAAM,KAAK,GAAG,CACZ,KAAC,QAAQ,IACP,GAAG,EAAE,GAAY,KACb,IAAI,CAAC,OAAO,CAAC,KAYb,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,KAM5D,KAAK,EACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAC,MAAM,EACZ,IAAI,EAAE,CAAC,EACP,oBAAoB,EAAC,UAAU,EAC/B,QAAQ,EAAC,IAAI,EACb,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAClC,EAAE,EAAE,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KACtC,KAAK,GACT,CACH,CAAA;IAED,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAE7D,OAAO,CACL,MAAC,MAAM,IAAC,QAAQ,EAAC,UAAU,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,QAAQ,aACpD,cAAc,CAAC,CAAC,CAAC,CAChB,KAAC,MAAM,OAAK,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,YACrD,cAAc,GACR,CACV,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,EACL,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,MAAM,OACD,IAAI,CAAC,GAAG,CAAC,EACb,MAAM,EAAC,SAAS,KACZ,KAAK,CAAC,EAAE,CAAC,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBACzB,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,YAEvD,QAAQ,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,GAC7C,CACV,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CACjB,KAAC,MAAM,OAAK,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,YAChC,YAAY,GACN,CACV,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -38,7 +38,6 @@ exports.Textarea = void 0;
38
38
  const jsx_runtime_1 = require("react/jsx-runtime");
39
39
  const React = __importStar(require("react"));
40
40
  const gui_1 = require("@hanzo/gui");
41
- const focus_1 = require("./focus.cjs");
42
41
  const control_1 = require("./control.cjs");
43
42
  const slot_1 = require("./slot.cjs");
44
43
  /** Floor for the grown row count. */
@@ -53,6 +52,6 @@ const Textarea = /* @__PURE__ */ React.forwardRef(function Textarea({ rows, valu
53
52
  // `textAreaSizeVariant`, which computes its own horizontal padding and
54
53
  // landed on 20 — so the one field a form makes tall was also the one
55
54
  // indented differently from the two above it.
56
- borderColor: invalid && invalid !== "false" ? "$red7" : "$borderColor", ...focus_1.FOCUS, placeholderTextColor: "$color10", fontSize: "$3", opacity: props.disabled ? 0.5 : 1, ...props }));
55
+ borderColor: invalid && invalid !== "false" ? "$red7" : "$borderColor", placeholderTextColor: "$color10", fontSize: "$3", opacity: props.disabled ? 0.5 : 1, ...props }));
57
56
  });
58
57
  exports.Textarea = Textarea;
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/textarea.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAWrC;;;;;;;GAOG;AACH;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,UAAU,CAAC,GACjF,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,CAAA;AAE9D,QAAA,MAAM,QAAQ,wGA6Bb,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/textarea.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAUrC;;;;;;;GAOG;AACH;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,UAAU,CAAC,GACjF,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,CAAA;AAE9D,QAAA,MAAM,QAAQ,wGA4Bb,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -2,7 +2,6 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { TextArea } from "@hanzo/gui";
5
- import { FOCUS } from "./focus.js";
6
5
  import { FIELD } from "./control.js";
7
6
  import { slot } from "./slot.js";
8
7
  /** Floor for the grown row count. */
@@ -17,7 +16,7 @@ const Textarea = /* @__PURE__ */ React.forwardRef(function Textarea({ rows, valu
17
16
  // `textAreaSizeVariant`, which computes its own horizontal padding and
18
17
  // landed on 20 — so the one field a form makes tall was also the one
19
18
  // indented differently from the two above it.
20
- borderColor: invalid && invalid !== "false" ? "$red7" : "$borderColor", ...FOCUS, placeholderTextColor: "$color10", fontSize: "$3", opacity: props.disabled ? 0.5 : 1, ...props }));
19
+ borderColor: invalid && invalid !== "false" ? "$red7" : "$borderColor", placeholderTextColor: "$color10", fontSize: "$3", opacity: props.disabled ? 0.5 : 1, ...props }));
21
20
  });
22
21
  export { Textarea };
23
22
  //# sourceMappingURL=textarea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/backends/gui/textarea.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,qCAAqC;AACrC,MAAM,QAAQ,GAAG,CAAC,CAAA;AAElB,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,EAAE,CAC5B,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAkBlD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAC/C,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IACpE,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,CAAA;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAA;IACrC,OAAO,CACL,KAAC,QAAQ,IACP,GAAG,EAAE,GAAY,KACb,IAAI,CAAC,UAAU,CAAC,EACpB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACtE,KAAK,EAAE,KAA2B,EAClC,YAAY,EAAE,YAAkC,EAChD,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KACpE,KAAK,EACT,KAAK,EAAC,MAAM,EACZ,IAAI,EAAE,EAAE;QACR,6DAA6D;QAC7D,uEAAuE;QACvE,qEAAqE;QACrE,8CAA8C;QAC9C,WAAW,EAAE,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,KAClE,KAAK,EACT,oBAAoB,EAAC,UAAU,EAC/B,QAAQ,EAAC,IAAI,EACb,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAC5B,KAAiC,GACtC,CACH,CAAA;AACD,CAAC,CACF,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/backends/gui/textarea.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,qCAAqC;AACrC,MAAM,QAAQ,GAAG,CAAC,CAAA;AAElB,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,EAAE,CAC5B,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAkBlD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAC/C,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IACpE,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,CAAA;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAA;IACrC,OAAO,CACL,KAAC,QAAQ,IACP,GAAG,EAAE,GAAY,KACb,IAAI,CAAC,UAAU,CAAC,EACpB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACtE,KAAK,EAAE,KAA2B,EAClC,YAAY,EAAE,YAAkC,EAChD,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KACpE,KAAK,EACT,KAAK,EAAC,MAAM,EACZ,IAAI,EAAE,EAAE;QACR,6DAA6D;QAC7D,uEAAuE;QACvE,qEAAqE;QACrE,8CAA8C;QAC9C,WAAW,EAAE,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EACtE,oBAAoB,EAAC,UAAU,EAC/B,QAAQ,EAAC,IAAI,EACb,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAC5B,KAAiC,GACtC,CACH,CAAA;AACD,CAAC,CACF,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -220,7 +220,7 @@ space['-true'] = step(-STEP['4']);
220
220
  * `$color12` shipped `hsla(0, 0%, 100%, 1)` — PURE WHITE, and it is the label
221
221
  * colour for Button's default/primary, for every Badge, and for the `accent`
222
222
  * recipe, the one loud control a page is allowed. design sets `--foreground`
223
- * to `#fafafa` on purpose: pure white halates on near-black.
223
+ * to `#e5e5e5` on purpose: pure white halates on near-black.
224
224
  *
225
225
  * `$outlineColor` shipped `hsla(0, 0%, 27%, 0.6)` — the FOCUS RING, and on a
226
226
  * near-black ground that composites to about `rgb(45,45,45)`, roughly 1.2:1
@@ -246,7 +246,7 @@ space['-true'] = step(-STEP['4']);
246
246
  * design publishes, so the copy cannot drift.
247
247
  */
248
248
  const EDGE = { dark: 'rgb(255 255 255 / .10)', light: 'rgb(0 0 0 / .10)' };
249
- const LABEL = { dark: '#fafafa', light: '#0a0a0a' };
249
+ const LABEL = { dark: '#e5e5e5', light: '#0a0a0a' };
250
250
  const RING = { dark: 'rgb(255 255 255 / .40)', light: 'rgb(0 0 0 / .5)' };
251
251
  /**
252
252
  * The ground, the placeholder, and the one loud fill — the rest of what a brand
@@ -216,7 +216,7 @@ space['-true'] = step(-STEP['4']);
216
216
  * `$color12` shipped `hsla(0, 0%, 100%, 1)` — PURE WHITE, and it is the label
217
217
  * colour for Button's default/primary, for every Badge, and for the `accent`
218
218
  * recipe, the one loud control a page is allowed. design sets `--foreground`
219
- * to `#fafafa` on purpose: pure white halates on near-black.
219
+ * to `#e5e5e5` on purpose: pure white halates on near-black.
220
220
  *
221
221
  * `$outlineColor` shipped `hsla(0, 0%, 27%, 0.6)` — the FOCUS RING, and on a
222
222
  * near-black ground that composites to about `rgb(45,45,45)`, roughly 1.2:1
@@ -242,7 +242,7 @@ space['-true'] = step(-STEP['4']);
242
242
  * design publishes, so the copy cannot drift.
243
243
  */
244
244
  const EDGE = { dark: 'rgb(255 255 255 / .10)', light: 'rgb(0 0 0 / .10)' };
245
- const LABEL = { dark: '#fafafa', light: '#0a0a0a' };
245
+ const LABEL = { dark: '#e5e5e5', light: '#0a0a0a' };
246
246
  const RING = { dark: 'rgb(255 255 255 / .40)', light: 'rgb(0 0 0 / .5)' };
247
247
  /**
248
248
  * The ground, the placeholder, and the one loud fill — the rest of what a brand
package/dist/styles.css CHANGED
@@ -58,28 +58,56 @@
58
58
  /* ——— the opacity ladder: the real palette ——— */
59
59
  /* Every rung below .30 is a HAIRLINE or a LIFT — the two things this system
60
60
  draws with. The rungs are the reference's own values, not a rounded ramp. */
61
+ /* The five rungs marked (chrome) below were being retyped as raw rgba in
62
+ @hanzogui/shell's theme.ts, which is the shared bar every Hanzo property
63
+ mounts. That is the same defect this ladder exists to end — a value in two
64
+ places drifts, and this pair already had: the shell's resting hairline sat
65
+ at .06 against this file's .10 for long enough that the bar and the page
66
+ under it drew different hairlines. They are rungs here now, and the shell
67
+ references them, so the chrome has no colour of its own left to drift.
68
+
69
+ They are the shell's OWN measured values, added at the alpha it already
70
+ ships. Snapping them to neighbouring rungs instead would have been a
71
+ silent redesign of the estate's chrome, and two of them carry decisions
72
+ that a round number would have destroyed: .92 is ink deliberately short of
73
+ the .98 hover so a hover still reads as a response, and .03 is the one
74
+ lift that must stay below the .05 hairline it sits inside. */
75
+ --white-03:rgb(255 255 255 / .03); /* (chrome) the raised fill */
61
76
  --white-05:rgb(255 255 255 / .05);
62
77
  --white-06:rgb(255 255 255 / .06);
63
78
  --white-08:rgb(255 255 255 / .08);
64
79
  --white-10:rgb(255 255 255 / .10);
80
+ --white-14:rgb(255 255 255 / .14); /* (chrome) selection wash */
65
81
  --white-15:rgb(255 255 255 / .15);
66
82
  --white-16:rgb(255 255 255 / .16);
83
+ --white-18:rgb(255 255 255 / .18); /* (chrome) selection tint */
67
84
  --white-20:rgb(255 255 255 / .20);
68
85
  --white-22:rgb(255 255 255 / .22);
69
86
  --white-30:rgb(255 255 255 / .30);
70
87
  --white-40:rgb(255 255 255 / .40);
88
+ --white-45:rgb(255 255 255 / .45); /* (chrome) the dimmest ink */
71
89
  --white-55:rgb(255 255 255 / .55);
72
90
  --white-60:rgb(255 255 255 / .60);
73
91
  --white-78:rgb(255 255 255 / .78);
74
92
  --white-80:rgb(255 255 255 / .80);
93
+ --white-92:rgb(255 255 255 / .92); /* (chrome) body ink */
75
94
 
76
95
  /* ——— semantic aliases (dark, the default) ——— */
77
96
  --background:#0a0a0a;
78
- --foreground:#fafafa;
97
+ /* READING ink, one rung below the top of the ramp. The note at the head of this
98
+ file already made this argument once — #ffffff on #000000 halates, so #fafafa
99
+ — and the argument does not stop being true at 19.0:1. Every heading and
100
+ paragraph on every surface was set in the brightest ink the system has, while
101
+ the CHROME beside them draws body text at --white-92; a page read as glare
102
+ against its own header. #e5e5e5 is the neutral-200 rung this file already
103
+ spends on --primary-hover, so the ramp gains no new value: 15.7:1 on the page,
104
+ 15.2:1 on a card, both more than twice the 7:1 AAA asks of body text.
105
+ Something that genuinely needs the brightest ink names --primary. */
106
+ --foreground:#e5e5e5;
79
107
  --card:#0f0f0f;
80
- --card-foreground:#fafafa;
108
+ --card-foreground:#e5e5e5;
81
109
  --popover:#0f0f0f;
82
- --popover-foreground:#fafafa;
110
+ --popover-foreground:#e5e5e5;
83
111
  --primary:#fafafa;
84
112
  /* A 5% step, not the 16% this used to be. A filled button's fill is already
85
113
  the top of the ink ramp, so the only directions available on hover are
@@ -298,19 +326,56 @@
298
326
  @hanzo/design's `vars({type})` emits exactly this name. */
299
327
  --type-scale:1;
300
328
 
301
- --text-xs:calc(0.6875rem * var(--type-scale, 1)); --leading-xs:calc(1rem * var(--type-scale, 1)); /* 11px eyebrows / section labels */
302
- --text-sm:calc(0.8125rem * var(--type-scale, 1)); --leading-sm:calc(1.15rem * var(--type-scale, 1)); /* 13px nav labels, dense body */
303
- --text-base:calc(0.875rem * var(--type-scale, 1)); --leading-base:calc(1.35rem * var(--type-scale, 1)); /* 14px base app text (was 16px) */
304
- --text-lg:calc(0.9375rem * var(--type-scale, 1)); --leading-lg:calc(1.4rem * var(--type-scale, 1)); /* 15px */
305
- --text-xl:calc(1.0625rem * var(--type-scale, 1)); --leading-xl:calc(1.55rem * var(--type-scale, 1)); /* 17px */
306
- --text-2xl:calc(1.3125rem * var(--type-scale, 1)); --leading-2xl:calc(1.7rem * var(--type-scale, 1)); /* 21px */
307
- --text-3xl:calc(1.625rem * var(--type-scale, 1)); --leading-3xl:calc(1.95rem * var(--type-scale, 1)); /* 26px */
308
- --text-4xl:calc(2rem * var(--type-scale, 1)); --leading-4xl:calc(2.25rem * var(--type-scale, 1)); /* 32px */
309
- --text-5xl:calc(2.5rem * var(--type-scale, 1)); --leading-5xl:1.05; /* 40px */
310
- --text-6xl:calc(3.25rem * var(--type-scale, 1)); --leading-6xl:1; /* 52px */
311
- --text-7xl:calc(4rem * var(--type-scale, 1)); --leading-7xl:1; /* 64px */
312
- --text-8xl:calc(5.25rem * var(--type-scale, 1)); --leading-8xl:1; /* 84px */
313
- --text-9xl:calc(7rem * var(--type-scale, 1)); --leading-9xl:1; /* 112px */
329
+ /* The CONTRAST knob how far apart the rungs sit, where --type-scale is how
330
+ big they all are. Two different questions, and only the first one was
331
+ askable: a surface could take the whole ramp up 15% but could not flatten a
332
+ dense table's steps or open up a marketing page's, so both settled for the
333
+ app register's tight default.
334
+
335
+ It is authored as a TRANSFORM and not as a generated ramp, which is the
336
+ whole point. `base + (authored - base) * ratio` keeps each rung's authored
337
+ value as the INPUT, so ratio 1 reduces to exactly the published number by
338
+ algebra rather than by care — the deltas below are just `authored - 0.875`.
339
+ The alternative, deriving each rung as base * ratio^n, would restate the
340
+ ramp in a second place, and this scale is not geometric anyway: the app
341
+ register (11/13/14/15/17) is near-linear on purpose and a ratio applied to
342
+ it would erase the 1px steps the compact register is FOR. That drift is not
343
+ hypothetical here — see src/preference.ts, where a recomputed copy of this
344
+ ramp shipped `lg: 16px` against this file's 15px.
345
+
346
+ A rung is one place, so a rung added later needs a delta and nothing else. */
347
+ --type-ratio:1;
348
+
349
+ /* EVERY rung is bounded at BOTH ends, by one rule, because the knobs COMPOUND
350
+ and they compound in both directions. Clamping each knob's range separately
351
+ cannot fix either end — 0.85 x 0.9 is inside both bounds and lands at 8.5px
352
+ — so the RESULT is what carries the bound:
353
+
354
+ --text-floor 10px below this a label is not small, it is unreadable
355
+ --text-ceiling 30vw above this a heading is not type, it is a texture
356
+
357
+ The ceiling is in the VIEWPORT's units because that is what "too big" means:
358
+ measured, the tallest rung (--text-9xl, 112px) is 28.7vw on a 390px phone
359
+ and 7.8vw at 1440, so 30vw binds no published value at any real screen and
360
+ catches only a scale that has run away. Both bounds are stated once here and
361
+ `vars()` emits the same clamp for a modular scale, so a regenerated rung and
362
+ an authored one are bounded identically — the rule does not depend on which
363
+ produced the value. */
364
+ --text-floor:0.625rem;
365
+ --text-ceiling:30vw;
366
+ --text-xs:clamp(var(--text-floor), calc((0.875rem - 0.1875rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-xs:calc((1.35rem - 0.35rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 11px — eyebrows / section labels */
367
+ --text-sm:clamp(var(--text-floor), calc((0.875rem - 0.0625rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-sm:calc((1.35rem - 0.2rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 13px — nav labels, dense body */
368
+ --text-base:clamp(var(--text-floor), calc(0.875rem * var(--type-scale, 1)), var(--text-ceiling)); --leading-base:calc(1.35rem * var(--type-scale, 1)); /* 14px — the ANCHOR: the rung the ratio pivots on, so it carries no ratio term */
369
+ --text-lg:clamp(var(--text-floor), calc((0.875rem + 0.0625rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-lg:calc((1.35rem + 0.05rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 15px */
370
+ --text-xl:clamp(var(--text-floor), calc((0.875rem + 0.1875rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-xl:calc((1.35rem + 0.2rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 17px */
371
+ --text-2xl:clamp(var(--text-floor), calc((0.875rem + 0.4375rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-2xl:calc((1.35rem + 0.35rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 21px */
372
+ --text-3xl:clamp(var(--text-floor), calc((0.875rem + 0.75rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-3xl:calc((1.35rem + 0.6rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 26px */
373
+ --text-4xl:clamp(var(--text-floor), calc((0.875rem + 1.125rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-4xl:calc((1.35rem + 0.9rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 32px */
374
+ --text-5xl:clamp(var(--text-floor), calc((0.875rem + 1.625rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-5xl:1.05; /* 40px — display leading is unitless, so it tracks its own size */
375
+ --text-6xl:clamp(var(--text-floor), calc((0.875rem + 2.375rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-6xl:1; /* 52px */
376
+ --text-7xl:clamp(var(--text-floor), calc((0.875rem + 3.125rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-7xl:1; /* 64px */
377
+ --text-8xl:clamp(var(--text-floor), calc((0.875rem + 4.375rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-8xl:1; /* 84px */
378
+ --text-9xl:clamp(var(--text-floor), calc((0.875rem + 6.125rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-9xl:1; /* 112px */
314
379
 
315
380
  /* The SAME scale under @hanzo/brand's spelling. @hanzo/gui's shell theme and
316
381
  Hanzo Studio address the ramp as --font-size-*; both names are one value, so
@@ -449,6 +514,26 @@
449
514
  hanzoai/id's stylesheet — one app knowing something the system did not. */
450
515
  --tap-target:44px;
451
516
 
517
+ /* ——— controls ——— */
518
+ /* A control's OWN height, which the floor above does not answer: 44px is the
519
+ smallest a finger may aim at, not the size a thing should be. Nothing named
520
+ the second question, so each surface answered it privately and they drifted
521
+ — @hanzo/ui keeps `CONTROL_H = 36` in TypeScript, hanzoai/app pins a 30px
522
+ `--control-h` over that same 36px library, and hanzoai/id spelled
523
+ `min-height:52px` into three separate rules.
524
+ The first three rungs ARE @hanzo/ui's size table (default/sm/lg), moved
525
+ down to the layer that holds values so a host can answer it once instead of
526
+ each library carrying a private copy. They sit under the tap floor on
527
+ purpose: base.css lifts whichever one is spent to 44px under
528
+ `pointer:coarse`, so one declaration serves a compact pointer control and a
529
+ hittable touch one. -xl is what a surface earns when the control IS the
530
+ content — one field, one button, nothing competing — where the default
531
+ reads as one of a stack rather than as the thing the screen is for. */
532
+ --control-height-sm:32px;
533
+ --control-height:36px;
534
+ --control-height-lg:40px;
535
+ --control-height-xl:52px;
536
+
452
537
  /* ——— safe areas ——— */
453
538
  /* The notch/home-indicator insets, named once. Anything pinned to a viewport
454
539
  edge — a fixed header, a bottom bar, a sheet — adds the matching one. */
@@ -884,6 +969,22 @@
884
969
  its buttons at 8-10px and nothing at 6px except 22px chips. */
885
970
  border-radius:var(--radius-md);
886
971
  padding:0 var(--space-3);
972
+ /* A field's ring is drawn INSIDE its own box. The one focus rule below
973
+ reads this; nothing else about the indicator changes.
974
+
975
+ A field lives in containers a button does not — composers, palettes and
976
+ panels that round their corners with `overflow:hidden`. An outline at a
977
+ POSITIVE offset is painted outside the border box, so any such ancestor
978
+ clips it, and the computed style still says `2px solid` while nothing is
979
+ drawn: a chat composer measured byte-identical screenshots focused and
980
+ unfocused, and a search pill kept only its left and right edges. A
981
+ negative offset cannot be clipped by anything, so a field needs to know
982
+ nothing about what contains it.
983
+
984
+ -2 against a 2px ring lays the outline over the outermost 2px of the box,
985
+ so it REPLACES the 1px edge for as long as focus is there rather than
986
+ drawing a second line a pixel inside the first. */
987
+ --ring-offset:-2px;
887
988
  }
888
989
  :where(textarea){padding:var(--space-2) var(--space-3);resize:vertical}
889
990
  /* A field has NO focus rule of its own — see the ring at the bottom of this
@@ -950,6 +1051,11 @@
950
1051
  canvas and clears the 2px perimeter WCAG 2.4.13 asks for; the gate in
951
1052
  check-tokens holds --ring to that and nothing else here may weaken it.
952
1053
 
1054
+ WHERE the ring sits is the one thing that varies, and it varies as a VALUE
1055
+ the element carries, never as a second rule: `--ring-offset` defaults to 2
1056
+ and a field sets it to -2 (see the field block above). Two rules is what
1057
+ 0.4.9 removed, and a second one here would be the same defect again.
1058
+
953
1059
  There were two rules until 0.4.9, and they collided invisibly. Both computed
954
1060
  to (0,1,0) — :where() zeroes whatever it wraps, leaving one pseudo-class on
955
1061
  each side — so the cascade fell through to SOURCE ORDER inside this layer,
@@ -958,7 +1064,7 @@
958
1064
  drew BOTH the ring and the edge+halo. Each rule read as correct alone, which
959
1065
  is why it survived review in both files; the defect existed only in their
960
1066
  order. One rule cannot disagree with itself. */
961
- :focus-visible{outline:2px solid var(--ring);outline-offset:2px}
1067
+ :focus-visible{outline:2px solid var(--ring);outline-offset:var(--ring-offset,2px)}
962
1068
  /* --white-20 is white-on-white in the light theme, so selection reads through
963
1069
  --selection, which BOTH themes define. */
964
1070
  ::selection{background:var(--selection);color:var(--text-primary)}
@@ -1859,7 +1965,7 @@
1859
1965
  ._hsb-y::-webkit-scrollbar:vertical { display: none !important; }
1860
1966
  ._hsb-x { scrollbar-width: none !important; }
1861
1967
  ._hsb-y { scrollbar-width: none !important; }
1862
- :root{--t0:var(--primary, #fafafa);--t1:var(--primary-foreground, #0a0a0a);--t2:hsla(0, 0%, 4%, 0);--t3:hsla(0, 0%, 8%, 0.2);--t4:hsla(0, 0%, 8%, 0.4);--t5:hsla(0, 0%, 8%, 0.6);--t6:hsla(0, 0%, 8%, 0.8);--t7:hsla(0, 0%, 4%, 1);--t8:hsla(0, 0%, 8%, 1);--t9:hsla(0, 0%, 10%, 1);--t10:var(--border, rgb(255 255 255 / .10));--t11:hsla(0, 0%, 20%, 1);--t12:hsla(0, 0%, 27%, 1);--t13:hsla(0, 0%, 40%, 1);--t14:hsla(0, 0%, 47%, 1);--t15:hsla(0, 0%, 52%, 1);--t16:hsla(0, 0%, 67%, 1);--t17:hsla(0, 0%, 80%, 1);--t18:var(--foreground, #fafafa);--t19:hsla(0, 0%, 100%, 0);--t20:hsla(0, 0%, 100%, 0.2);--t21:hsla(0, 0%, 100%, 0.4);--t22:hsla(0, 0%, 100%, 0.6);--t23:hsla(0, 0%, 100%, 0.8);--t24:hsla(0, 0%, 100%, 1);--t25:#0a0a0a;--t26:hsla(0, 0%, 14%, 1);--t27:var(--text-tertiary, rgb(255 255 255 / .55));--t28:#090909;--t29:#151515;--t30:#191919;--t31:#232323;--t32:#333;--t33:#444;--t34:#666;--t35:#777;--t36:#858585;--t37:#aaa;--t38:#ccc;--t39:#ffffff;--t40:#fff;--t41:#f8f8f8;--t42:hsl(0, 0%, 93%);--t43:hsl(0, 0%, 85%);--t44:hsl(0, 0%, 80%);--t45:hsl(0, 0%, 70%);--t46:hsl(0, 0%, 59%);--t47:hsl(0, 0%, 45%);--t48:hsl(0, 0%, 30%);--t49:hsl(0, 0%, 20%);--t50:hsl(0, 0%, 14%);--t51:hsl(0, 0%, 2%);--t52:rgba(255,255,255,1);--t53:rgba(255,255,255,0);--t54:rgba(255,255,255,0.2);--t55:rgba(255,255,255,0.4);--t56:rgba(255,255,255,0.6);--t57:rgba(255,255,255,0.8);--t58:rgba(0,0,0,1);--t59:rgba(0,0,0,0);--t60:rgba(0,0,0,0.2);--t61:rgba(0,0,0,0.4);--t62:rgba(0,0,0,0.6);--t63:rgba(0,0,0,0.8);--t64:rgba(0,0,0,0.15);--t65:rgba(0,0,0,0.23);--t66:rgba(0,0,0,0.33);--t67:rgba(0,0,0,0.45);--t68:rgba(0,0,0,0.65);--t69:rgba(0,0,0,0.9);--t70:rgba(255,255,255,0.1);--t71:rgba(255,255,255,0.3);--t72:rgba(255,255,255,0.45);--t73:rgba(255,255,255,0.65);--t74:rgba(255,255,255,0.85);--t75:rgba(255,255,255,0.95);--t76:#111111;--t77:#222222;--t78:#2a2a2a;--t79:#313131;--t80:#3a3a3a;--t81:#484848;--t82:#606060;--t83:#6e6e6e;--t84:#7b7b7b;--t85:#b4b4b4;--t86:#eeeeee;--t87:#0d1520;--t88:#111927;--t89:#0d2847;--t90:#003362;--t91:#004074;--t92:#104d87;--t93:#205d9e;--t94:#2870bd;--t95:#0090ff;--t96:#3b9eff;--t97:#70b8ff;--t98:#c2e6ff;--t99:#191111;--t100:#201314;--t101:#3b1219;--t102:#500f1c;--t103:#611623;--t104:#72232d;--t105:#8c333a;--t106:#b54548;--t107:#e5484d;--t108:#ec5d5e;--t109:#ff9592;--t110:#ffd1d9;--t111:#14120b;--t112:#1b180f;--t113:#2d2305;--t114:#362b00;--t115:#433500;--t116:#524202;--t117:#665417;--t118:#836a21;--t119:#ffe629;--t120:#ffff57;--t121:#f5e147;--t122:#f6eeb4;--t123:#0e1512;--t124:#121b17;--t125:#132d21;--t126:#113b29;--t127:#174933;--t128:#20573e;--t129:#28684a;--t130:#2f7c57;--t131:#30a46c;--t132:#33b074;--t133:#3dd68c;--t134:#b1f1cb;--t135:#17120e;--t136:#1e160f;--t137:#331e0b;--t138:#462100;--t139:#562800;--t140:#66350c;--t141:#7e451d;--t142:#a35829;--t143:#f76b15;--t144:#ff801f;--t145:#ffa057;--t146:#ffe0c2;--t147:#191117;--t148:#21121d;--t149:#37172f;--t150:#4b143d;--t151:#591c47;--t152:#692955;--t153:#833869;--t154:#a84885;--t155:#d6409f;--t156:#de51a8;--t157:#ff8dcc;--t158:#fdd1ea;--t159:#18111b;--t160:#1e1523;--t161:#301c3b;--t162:#3d224e;--t163:#48295c;--t164:#54346b;--t165:#664282;--t166:#8457aa;--t167:#8e4ec6;--t168:#9a5cd0;--t169:#d19dff;--t170:#ecd9fa;--t171:#0d1514;--t172:#111c1b;--t173:#0d2d2a;--t174:#023b37;--t175:#084843;--t176:#145750;--t177:#1c6961;--t178:#207e73;--t179:#12a594;--t180:#0eb39e;--t181:#0bd8b6;--t182:#adf0dd;--t183:hsl(0, 0%, 68%);--t184:hsl(0, 0%, 65%);--t185:hsl(0, 0%, 62%);--t186:hsl(0, 0%, 56%);--t187:hsl(0, 0%, 53%);--t188:hsl(0, 0%, 50%);--t189:hsl(0, 0%, 47%);--t190:hsl(0, 0%, 44%);--t191:hsl(0, 0%, 41%);--t192:hsl(0, 0%, 38%);--t193:hsl(0, 0%, 32%);--t194:hsla(0, 0%, 97%, 1);--t195:hsla(0, 0%, 93%, 1);--t196:hsla(0, 0%, 85%, 1);--t197:hsla(0, 0%, 70%, 1);--t198:hsla(0, 0%, 59%, 1);--t199:hsla(0, 0%, 45%, 1);--t200:hsla(0, 0%, 30%, 1);--t201:hsla(0, 0%, 2%, 1);--t202:hsla(0, 0%, 100%, 0.1);--t203:hsla(0, 0%, 100%, 0.075);--t204:hsla(0, 0%, 100%, 0.05);--t205:hsla(0, 0%, 100%, 0.025);--t206:hsla(0, 0%, 100%, 0.02);--t207:hsla(0, 0%, 100%, 0.01);--t208:hsla(0, 0%, 8%, 0.1);--t209:hsla(0, 0%, 8%, 0.075);--t210:hsla(0, 0%, 8%, 0.05);--t211:hsla(0, 0%, 8%, 0.025);--t212:hsla(0, 0%, 8%, 0.02);--t213:hsla(0, 0%, 8%, 0.01);--t214:var(--ring, rgb(255 255 255 / .40));--t215:hsla(0, 0%, 4%, 0.2);--t216:hsla(0, 0%, 4%, 0.4);--t217:hsla(0, 0%, 4%, 0.6);--t218:hsla(0, 0%, 4%, 0.8);--t219:hsla(0, 0%, 97%, 0.2);--t220:hsla(0, 0%, 97%, 0.4);--t221:hsla(0, 0%, 97%, 0.6);--t222:hsla(0, 0%, 97%, 0.8);--t223:hsla(0, 0%, 2%, 0);--t224:hsla(0, 0%, 2%, 0.2);--t225:hsla(0, 0%, 2%, 0.4);--t226:hsla(0, 0%, 2%, 0.6);--t227:hsla(0, 0%, 2%, 0.8);--t228:hsla(0, 0%, 2%, 0.1);--t229:hsla(0, 0%, 2%, 0.075);--t230:hsla(0, 0%, 2%, 0.05);--t231:hsla(0, 0%, 2%, 0.025);--t232:hsla(0, 0%, 2%, 0.02);--t233:hsla(0, 0%, 2%, 0.01);--t234:hsla(0, 0%, 97%, 0.1);--t235:hsla(0, 0%, 97%, 0.075);--t236:hsla(0, 0%, 97%, 0.05);--t237:hsla(0, 0%, 97%, 0.025);--t238:hsla(0, 0%, 97%, 0.02);--t239:hsla(0, 0%, 97%, 0.01);--t240:hsla(216, 43%, 9%, 0);--t241:hsla(218, 39%, 11%, 0.2);--t242:hsla(218, 39%, 11%, 0.4);--t243:hsla(218, 39%, 11%, 0.6);--t244:hsla(218, 39%, 11%, 0.8);--t245:hsla(215, 42%, 9%, 1);--t246:hsla(218, 39%, 11%, 1);--t247:hsla(212, 69%, 16%, 1);--t248:hsla(209, 100%, 19%, 1);--t249:hsla(207, 100%, 23%, 1);--t250:hsla(209, 79%, 30%, 1);--t251:hsla(211, 66%, 37%, 1);--t252:hsla(211, 65%, 45%, 1);--t253:hsla(206, 100%, 50%, 1);--t254:hsla(210, 100%, 62%, 1);--t255:hsla(210, 100%, 72%, 1);--t256:hsla(205, 100%, 88%, 1);--t257:hsla(205, 100%, 88%, 0);--t258:hsla(205, 100%, 88%, 0.2);--t259:hsla(205, 100%, 88%, 0.4);--t260:hsla(205, 100%, 88%, 0.6);--t261:hsla(205, 100%, 88%, 0.8);--t262:hsla(205, 100%, 88%, 0.1);--t263:hsla(205, 100%, 88%, 0.075);--t264:hsla(205, 100%, 88%, 0.05);--t265:hsla(205, 100%, 88%, 0.025);--t266:hsla(205, 100%, 88%, 0.02);--t267:hsla(205, 100%, 88%, 0.01);--t268:hsla(218, 39%, 11%, 0.1);--t269:hsla(218, 39%, 11%, 0.075);--t270:hsla(218, 39%, 11%, 0.05);--t271:hsla(218, 39%, 11%, 0.025);--t272:hsla(218, 39%, 11%, 0.02);--t273:hsla(218, 39%, 11%, 0.01);--t274:hsla(216, 43%, 9%, 0.2);--t275:hsla(216, 43%, 9%, 0.4);--t276:hsla(216, 43%, 9%, 0.6);--t277:hsla(216, 43%, 9%, 0.8);--t278:hsla(0, 0%, 7%, 0);--t279:hsla(0, 0%, 10%, 0.2);--t280:hsla(0, 0%, 10%, 0.4);--t281:hsla(0, 0%, 10%, 0.6);--t282:hsla(0, 0%, 10%, 0.8);--t283:hsla(0, 0%, 7%, 1);--t284:hsla(0, 0%, 13%, 1);--t285:hsla(0, 0%, 16%, 1);--t286:hsla(0, 0%, 19%, 1);--t287:hsla(0, 0%, 23%, 1);--t288:hsla(0, 0%, 28%, 1);--t289:hsla(0, 0%, 38%, 1);--t290:hsla(0, 0%, 43%, 1);--t291:hsla(0, 0%, 48%, 1);--t292:hsla(0, 0%, 71%, 1);--t293:hsla(0, 0%, 93%, 0);--t294:hsla(0, 0%, 93%, 0.2);--t295:hsla(0, 0%, 93%, 0.4);--t296:hsla(0, 0%, 93%, 0.6);--t297:hsla(0, 0%, 93%, 0.8);--t298:hsla(0, 0%, 93%, 0.1);--t299:hsla(0, 0%, 93%, 0.075);--t300:hsla(0, 0%, 93%, 0.05);--t301:hsla(0, 0%, 93%, 0.025);--t302:hsla(0, 0%, 93%, 0.02);--t303:hsla(0, 0%, 93%, 0.01);--t304:hsla(0, 0%, 10%, 0.1);--t305:hsla(0, 0%, 10%, 0.075);--t306:hsla(0, 0%, 10%, 0.05);--t307:hsla(0, 0%, 10%, 0.025);--t308:hsla(0, 0%, 10%, 0.02);--t309:hsla(0, 0%, 10%, 0.01);--t310:hsla(0, 0%, 7%, 0.2);--t311:hsla(0, 0%, 7%, 0.4);--t312:hsla(0, 0%, 7%, 0.6);--t313:hsla(0, 0%, 7%, 0.8);--t314:hsla(154, 20%, 7%, 0);--t315:hsla(153, 20%, 9%, 0.2);--t316:hsla(153, 20%, 9%, 0.4);--t317:hsla(153, 20%, 9%, 0.6);--t318:hsla(153, 20%, 9%, 0.8);--t319:hsla(154, 20%, 7%, 1);--t320:hsla(153, 20%, 9%, 1);--t321:hsla(152, 41%, 13%, 1);--t322:hsla(154, 55%, 15%, 1);--t323:hsla(154, 52%, 19%, 1);--t324:hsla(153, 46%, 23%, 1);--t325:hsla(152, 44%, 28%, 1);--t326:hsla(151, 45%, 34%, 1);--t327:hsla(151, 55%, 42%, 1);--t328:hsla(151, 55%, 45%, 1);--t329:hsla(151, 65%, 54%, 1);--t330:hsla(144, 70%, 82%, 1);--t331:hsla(144, 70%, 82%, 0);--t332:hsla(144, 70%, 82%, 0.2);--t333:hsla(144, 70%, 82%, 0.4);--t334:hsla(144, 70%, 82%, 0.6);--t335:hsla(144, 70%, 82%, 0.8);--t336:hsla(144, 70%, 82%, 0.1);--t337:hsla(144, 70%, 82%, 0.075);--t338:hsla(144, 70%, 82%, 0.05);--t339:hsla(144, 70%, 82%, 0.025);--t340:hsla(144, 70%, 82%, 0.02);--t341:hsla(144, 70%, 82%, 0.01);--t342:hsla(153, 20%, 9%, 0.1);--t343:hsla(153, 20%, 9%, 0.075);--t344:hsla(153, 20%, 9%, 0.05);--t345:hsla(153, 20%, 9%, 0.025);--t346:hsla(153, 20%, 9%, 0.02);--t347:hsla(153, 20%, 9%, 0.01);--t348:hsla(154, 20%, 7%, 0.2);--t349:hsla(154, 20%, 7%, 0.4);--t350:hsla(154, 20%, 7%, 0.6);--t351:hsla(154, 20%, 7%, 0.8);--t352:hsla(0, 0%, 68%, 0);--t353:hsla(0, 0%, 65%, 0.2);--t354:hsla(0, 0%, 65%, 0.4);--t355:hsla(0, 0%, 65%, 0.6);--t356:hsla(0, 0%, 65%, 0.8);--t357:hsla(0, 0%, 68%, 1);--t358:hsla(0, 0%, 65%, 1);--t359:hsla(0, 0%, 62%, 1);--t360:hsla(0, 0%, 56%, 1);--t361:hsla(0, 0%, 53%, 1);--t362:hsla(0, 0%, 50%, 1);--t363:hsla(0, 0%, 44%, 1);--t364:hsla(0, 0%, 41%, 1);--t365:hsla(0, 0%, 32%, 1);--t366:hsla(0, 0%, 32%, 0);--t367:hsla(0, 0%, 32%, 0.2);--t368:hsla(0, 0%, 32%, 0.4);--t369:hsla(0, 0%, 32%, 0.6);--t370:hsla(0, 0%, 32%, 0.8);--t371:hsla(0, 0%, 32%, 0.1);--t372:hsla(0, 0%, 32%, 0.075);--t373:hsla(0, 0%, 32%, 0.05);--t374:hsla(0, 0%, 32%, 0.025);--t375:hsla(0, 0%, 32%, 0.02);--t376:hsla(0, 0%, 32%, 0.01);--t377:hsla(0, 0%, 65%, 0.1);--t378:hsla(0, 0%, 65%, 0.075);--t379:hsla(0, 0%, 65%, 0.05);--t380:hsla(0, 0%, 65%, 0.025);--t381:hsla(0, 0%, 65%, 0.02);--t382:hsla(0, 0%, 65%, 0.01);--t383:hsla(0, 0%, 68%, 0.2);--t384:hsla(0, 0%, 68%, 0.4);--t385:hsla(0, 0%, 68%, 0.6);--t386:hsla(0, 0%, 68%, 0.8);--t387:hsla(23, 22%, 7%, 0);--t388:hsla(28, 33%, 9%, 0.2);--t389:hsla(28, 33%, 9%, 0.4);--t390:hsla(28, 33%, 9%, 0.6);--t391:hsla(28, 33%, 9%, 0.8);--t392:hsla(27, 24%, 7%, 1);--t393:hsla(28, 33%, 9%, 1);--t394:hsla(29, 65%, 12%, 1);--t395:hsla(28, 100%, 14%, 1);--t396:hsla(28, 100%, 17%, 1);--t397:hsla(27, 79%, 22%, 1);--t398:hsla(25, 63%, 30%, 1);--t399:hsla(23, 60%, 40%, 1);--t400:hsla(23, 93%, 53%, 1);--t401:hsla(26, 100%, 56%, 1);--t402:hsla(26, 100%, 67%, 1);--t403:hsla(30, 100%, 88%, 1);--t404:hsla(30, 100%, 88%, 0);--t405:hsla(30, 100%, 88%, 0.2);--t406:hsla(30, 100%, 88%, 0.4);--t407:hsla(30, 100%, 88%, 0.6);--t408:hsla(30, 100%, 88%, 0.8);--t409:hsla(30, 100%, 88%, 0.1);--t410:hsla(30, 100%, 88%, 0.075);--t411:hsla(30, 100%, 88%, 0.05);--t412:hsla(30, 100%, 88%, 0.025);--t413:hsla(30, 100%, 88%, 0.02);--t414:hsla(30, 100%, 88%, 0.01);--t415:hsla(28, 33%, 9%, 0.1);--t416:hsla(28, 33%, 9%, 0.075);--t417:hsla(28, 33%, 9%, 0.05);--t418:hsla(28, 33%, 9%, 0.025);--t419:hsla(28, 33%, 9%, 0.02);--t420:hsla(28, 33%, 9%, 0.01);--t421:hsla(23, 22%, 7%, 0.2);--t422:hsla(23, 22%, 7%, 0.4);--t423:hsla(23, 22%, 7%, 0.6);--t424:hsla(23, 22%, 7%, 0.8);--t425:hsla(317, 17%, 8%, 0);--t426:hsla(316, 29%, 10%, 0.2);--t427:hsla(316, 29%, 10%, 0.4);--t428:hsla(316, 29%, 10%, 0.6);--t429:hsla(316, 29%, 10%, 0.8);--t430:hsla(315, 19%, 8%, 1);--t431:hsla(316, 29%, 10%, 1);--t432:hsla(315, 41%, 15%, 1);--t433:hsla(315, 58%, 19%, 1);--t434:hsla(318, 52%, 23%, 1);--t435:hsla(319, 44%, 29%, 1);--t436:hsla(321, 40%, 37%, 1);--t437:hsla(322, 40%, 47%, 1);--t438:hsla(322, 65%, 55%, 1);--t439:hsla(323, 68%, 59%, 1);--t440:hsla(327, 100%, 78%, 1);--t441:hsla(326, 92%, 91%, 1);--t442:hsla(326, 91%, 91%, 0);--t443:hsla(326, 91%, 91%, 0.2);--t444:hsla(326, 91%, 91%, 0.4);--t445:hsla(326, 91%, 91%, 0.6);--t446:hsla(326, 91%, 91%, 0.8);--t447:hsla(326, 91%, 91%, 0.1);--t448:hsla(326, 91%, 91%, 0.075);--t449:hsla(326, 91%, 91%, 0.05);--t450:hsla(326, 91%, 91%, 0.025);--t451:hsla(326, 91%, 91%, 0.02);--t452:hsla(326, 91%, 91%, 0.01);--t453:hsla(316, 29%, 10%, 0.1);--t454:hsla(316, 29%, 10%, 0.075);--t455:hsla(316, 29%, 10%, 0.05);--t456:hsla(316, 29%, 10%, 0.025);--t457:hsla(316, 29%, 10%, 0.02);--t458:hsla(316, 29%, 10%, 0.01);--t459:hsla(317, 17%, 8%, 0.2);--t460:hsla(317, 17%, 8%, 0.4);--t461:hsla(317, 17%, 8%, 0.6);--t462:hsla(317, 17%, 8%, 0.8);--t463:hsla(282, 22%, 9%, 0);--t464:hsla(279, 25%, 11%, 0.2);--t465:hsla(279, 25%, 11%, 0.4);--t466:hsla(279, 25%, 11%, 0.6);--t467:hsla(279, 25%, 11%, 0.8);--t468:hsla(282, 23%, 9%, 1);--t469:hsla(279, 25%, 11%, 1);--t470:hsla(279, 36%, 17%, 1);--t471:hsla(277, 39%, 22%, 1);--t472:hsla(276, 38%, 26%, 1);--t473:hsla(275, 35%, 31%, 1);--t474:hsla(274, 33%, 38%, 1);--t475:hsla(273, 33%, 50%, 1);--t476:hsla(272, 51%, 54%, 1);--t477:hsla(272, 55%, 59%, 1);--t478:hsla(272, 100%, 81%, 1);--t479:hsla(275, 77%, 92%, 1);--t480:hsla(275, 76%, 92%, 0);--t481:hsla(275, 76%, 92%, 0.2);--t482:hsla(275, 76%, 92%, 0.4);--t483:hsla(275, 76%, 92%, 0.6);--t484:hsla(275, 76%, 92%, 0.8);--t485:hsla(275, 76%, 92%, 0.1);--t486:hsla(275, 76%, 92%, 0.075);--t487:hsla(275, 76%, 92%, 0.05);--t488:hsla(275, 76%, 92%, 0.025);--t489:hsla(275, 76%, 92%, 0.02);--t490:hsla(275, 76%, 92%, 0.01);--t491:hsla(279, 25%, 11%, 0.1);--t492:hsla(279, 25%, 11%, 0.075);--t493:hsla(279, 25%, 11%, 0.05);--t494:hsla(279, 25%, 11%, 0.025);--t495:hsla(279, 25%, 11%, 0.02);--t496:hsla(279, 25%, 11%, 0.01);--t497:hsla(282, 22%, 9%, 0.2);--t498:hsla(282, 22%, 9%, 0.4);--t499:hsla(282, 22%, 9%, 0.6);--t500:hsla(282, 22%, 9%, 0.8);--t501:hsla(0, 17%, 8%, 0);--t502:hsla(355, 25%, 10%, 0.2);--t503:hsla(355, 25%, 10%, 0.4);--t504:hsla(355, 25%, 10%, 0.6);--t505:hsla(355, 25%, 10%, 0.8);--t506:hsla(0, 19%, 8%, 1);--t507:hsla(355, 25%, 10%, 1);--t508:hsla(350, 53%, 15%, 1);--t509:hsla(348, 68%, 19%, 1);--t510:hsla(350, 63%, 23%, 1);--t511:hsla(352, 53%, 29%, 1);--t512:hsla(355, 47%, 37%, 1);--t513:hsla(358, 45%, 49%, 1);--t514:hsla(358, 75%, 59%, 1);--t515:hsla(360, 79%, 65%, 1);--t516:hsla(2, 100%, 79%, 1);--t517:hsla(350, 100%, 91%, 1);--t518:hsla(350, 100%, 91%, 0);--t519:hsla(350, 100%, 91%, 0.2);--t520:hsla(350, 100%, 91%, 0.4);--t521:hsla(350, 100%, 91%, 0.6);--t522:hsla(350, 100%, 91%, 0.8);--t523:hsla(350, 100%, 91%, 0.1);--t524:hsla(350, 100%, 91%, 0.075);--t525:hsla(350, 100%, 91%, 0.05);--t526:hsla(350, 100%, 91%, 0.025);--t527:hsla(350, 100%, 91%, 0.02);--t528:hsla(350, 100%, 91%, 0.01);--t529:hsla(355, 25%, 10%, 0.1);--t530:hsla(355, 25%, 10%, 0.075);--t531:hsla(355, 25%, 10%, 0.05);--t532:hsla(355, 25%, 10%, 0.025);--t533:hsla(355, 25%, 10%, 0.02);--t534:hsla(355, 25%, 10%, 0.01);--t535:hsla(0, 17%, 8%, 0.2);--t536:hsla(0, 17%, 8%, 0.4);--t537:hsla(0, 17%, 8%, 0.6);--t538:hsla(0, 17%, 8%, 0.8);--t539:hsla(173, 22%, 7%, 0);--t540:hsla(175, 24%, 9%, 0.2);--t541:hsla(175, 24%, 9%, 0.4);--t542:hsla(175, 24%, 9%, 0.6);--t543:hsla(175, 24%, 9%, 0.8);--t544:hsla(173, 24%, 7%, 1);--t545:hsla(175, 24%, 9%, 1);--t546:hsla(174, 55%, 11%, 1);--t547:hsla(176, 93%, 12%, 1);--t548:hsla(175, 80%, 16%, 1);--t549:hsla(174, 63%, 21%, 1);--t550:hsla(174, 58%, 26%, 1);--t551:hsla(173, 59%, 31%, 1);--t552:hsla(173, 80%, 36%, 1);--t553:hsla(172, 85%, 38%, 1);--t554:hsla(170, 90%, 45%, 1);--t555:hsla(163, 69%, 81%, 1);--t556:hsla(163, 69%, 81%, 0);--t557:hsla(163, 69%, 81%, 0.2);--t558:hsla(163, 69%, 81%, 0.4);--t559:hsla(163, 69%, 81%, 0.6);--t560:hsla(163, 69%, 81%, 0.8);--t561:hsla(163, 69%, 81%, 0.1);--t562:hsla(163, 69%, 81%, 0.075);--t563:hsla(163, 69%, 81%, 0.05);--t564:hsla(163, 69%, 81%, 0.025);--t565:hsla(163, 69%, 81%, 0.02);--t566:hsla(163, 69%, 81%, 0.01);--t567:hsla(175, 24%, 9%, 0.1);--t568:hsla(175, 24%, 9%, 0.075);--t569:hsla(175, 24%, 9%, 0.05);--t570:hsla(175, 24%, 9%, 0.025);--t571:hsla(175, 24%, 9%, 0.02);--t572:hsla(175, 24%, 9%, 0.01);--t573:hsla(173, 22%, 7%, 0.2);--t574:hsla(173, 22%, 7%, 0.4);--t575:hsla(173, 22%, 7%, 0.6);--t576:hsla(173, 22%, 7%, 0.8);--t577:hsla(47, 29%, 6%, 0);--t578:hsla(45, 29%, 8%, 0.2);--t579:hsla(45, 29%, 8%, 0.4);--t580:hsla(45, 29%, 8%, 0.6);--t581:hsla(45, 29%, 8%, 0.8);--t582:hsla(47, 29%, 6%, 1);--t583:hsla(45, 29%, 8%, 1);--t584:hsla(45, 80%, 10%, 1);--t585:hsla(48, 100%, 11%, 1);--t586:hsla(47, 100%, 13%, 1);--t587:hsla(48, 95%, 16%, 1);--t588:hsla(46, 63%, 25%, 1);--t589:hsla(45, 60%, 32%, 1);--t590:hsla(53, 100%, 58%, 1);--t591:hsla(60, 100%, 67%, 1);--t592:hsla(53, 90%, 62%, 1);--t593:hsla(53, 79%, 84%, 1);--t594:hsla(53, 78%, 84%, 0);--t595:hsla(53, 78%, 84%, 0.2);--t596:hsla(53, 78%, 84%, 0.4);--t597:hsla(53, 78%, 84%, 0.6);--t598:hsla(53, 78%, 84%, 0.8);--t599:hsla(53, 78%, 84%, 0.1);--t600:hsla(53, 78%, 84%, 0.075);--t601:hsla(53, 78%, 84%, 0.05);--t602:hsla(53, 78%, 84%, 0.025);--t603:hsla(53, 78%, 84%, 0.02);--t604:hsla(53, 78%, 84%, 0.01);--t605:hsla(45, 29%, 8%, 0.1);--t606:hsla(45, 29%, 8%, 0.075);--t607:hsla(45, 29%, 8%, 0.05);--t608:hsla(45, 29%, 8%, 0.025);--t609:hsla(45, 29%, 8%, 0.02);--t610:hsla(45, 29%, 8%, 0.01);--t611:hsla(47, 29%, 6%, 0.2);--t612:hsla(47, 29%, 6%, 0.4);--t613:hsla(47, 29%, 6%, 0.6);--t614:hsla(47, 29%, 6%, 0.8);--t615:var(--primary, #0a0a0a);--t616:var(--primary-foreground, #fafafa);--t617:var(--border, rgb(0 0 0 / .10));--t618:var(--foreground, #0a0a0a);--t619:#f7f7f7;--t620:var(--text-tertiary, rgb(10 10 10 / .55));--t621:rgba(0,0,0,0.04);--t622:rgba(0,0,0,0.08);--t623:rgba(0,0,0,0.12);--t624:rgba(0,0,0,0.22);--t625:rgba(0,0,0,0.44);--t626:rgba(0,0,0,0.75);--t627:rgba(255,255,255,0.05);--t628:rgba(255,255,255,0.15);--t629:rgba(255,255,255,0.55);--t630:rgba(255,255,255,0.7);--t631:#fcfcfc;--t632:#f9f9f9;--t633:#f0f0f0;--t634:#e8e8e8;--t635:#e0e0e0;--t636:#d9d9d9;--t637:#cecece;--t638:#bbbbbb;--t639:#8d8d8d;--t640:#838383;--t641:#646464;--t642:#202020;--t643:#fbfdff;--t644:#f4faff;--t645:#e6f4fe;--t646:#d5efff;--t647:#c2e5ff;--t648:#acd8fc;--t649:#8ec8f6;--t650:#5eb1ef;--t651:#0588f0;--t652:#0d74ce;--t653:#113264;--t654:#fffcfc;--t655:#fff7f7;--t656:#feebec;--t657:#ffdbdc;--t658:#ffcdce;--t659:#fdbdbe;--t660:#f4a9aa;--t661:#eb8e90;--t662:#dc3e42;--t663:#ce2c31;--t664:#641723;--t665:#fdfdf9;--t666:#fefce9;--t667:#fffab8;--t668:#fff394;--t669:#ffe770;--t670:#f3d768;--t671:#e4c767;--t672:#d5ae39;--t673:#ffdc00;--t674:#9e6c00;--t675:#473b1f;--t676:#fbfefc;--t677:#f4fbf6;--t678:#e6f6eb;--t679:#d6f1df;--t680:#c4e8d1;--t681:#adddc0;--t682:#8eceaa;--t683:#5bb98b;--t684:#2b9a66;--t685:#218358;--t686:#193b2d;--t687:#fefcfb;--t688:#fff7ed;--t689:#ffefd6;--t690:#ffdfb5;--t691:#ffd19a;--t692:#ffc182;--t693:#f5ae73;--t694:#ec9455;--t695:#ef5f00;--t696:#cc4e00;--t697:#582d1d;--t698:#fffcfe;--t699:#fef7fb;--t700:#fee9f5;--t701:#fbdcef;--t702:#f6cee7;--t703:#efbfdd;--t704:#e7acd0;--t705:#dd93c2;--t706:#cf3897;--t707:#c2298a;--t708:#651249;--t709:#fefcfe;--t710:#fbf7fe;--t711:#f7edfe;--t712:#f2e2fc;--t713:#ead5f9;--t714:#e0c4f4;--t715:#d1afec;--t716:#be93e4;--t717:#8347b9;--t718:#8145b5;--t719:#402060;--t720:#fafefd;--t721:#f3fbf9;--t722:#e0f8f3;--t723:#ccf3ea;--t724:#b8eae0;--t725:#a1ded2;--t726:#83cdc1;--t727:#53b9ab;--t728:#0d9b8a;--t729:#008573;--t730:#0d3d38;--t731:var(--ring, rgb(0 0 0 / .5));--t732:hsla(216, 100%, 99%, 0);--t733:hsla(207, 100%, 98%, 0.2);--t734:hsla(207, 100%, 98%, 0.4);--t735:hsla(207, 100%, 98%, 0.6);--t736:hsla(207, 100%, 98%, 0.8);--t737:hsla(210, 100%, 99%, 1);--t738:hsla(207, 100%, 98%, 1);--t739:hsla(205, 92%, 95%, 1);--t740:hsla(203, 100%, 92%, 1);--t741:hsla(206, 100%, 88%, 1);--t742:hsla(207, 93%, 83%, 1);--t743:hsla(207, 85%, 76%, 1);--t744:hsla(206, 82%, 65%, 1);--t745:hsla(207, 96%, 48%, 1);--t746:hsla(208, 88%, 43%, 1);--t747:hsla(216, 71%, 23%, 1);--t748:hsla(216, 71%, 23%, 0);--t749:hsla(216, 71%, 23%, 0.2);--t750:hsla(216, 71%, 23%, 0.4);--t751:hsla(216, 71%, 23%, 0.6);--t752:hsla(216, 71%, 23%, 0.8);--t753:hsla(216, 71%, 23%, 0.1);--t754:hsla(216, 71%, 23%, 0.075);--t755:hsla(216, 71%, 23%, 0.05);--t756:hsla(216, 71%, 23%, 0.025);--t757:hsla(216, 71%, 23%, 0.02);--t758:hsla(216, 71%, 23%, 0.01);--t759:hsla(207, 100%, 98%, 0.1);--t760:hsla(207, 100%, 98%, 0.075);--t761:hsla(207, 100%, 98%, 0.05);--t762:hsla(207, 100%, 98%, 0.025);--t763:hsla(207, 100%, 98%, 0.02);--t764:hsla(207, 100%, 98%, 0.01);--t765:hsla(216, 100%, 99%, 0.2);--t766:hsla(216, 100%, 99%, 0.4);--t767:hsla(216, 100%, 99%, 0.6);--t768:hsla(216, 100%, 99%, 0.8);--t769:hsla(0, 0%, 99%, 0);--t770:hsla(0, 0%, 98%, 0.2);--t771:hsla(0, 0%, 98%, 0.4);--t772:hsla(0, 0%, 98%, 0.6);--t773:hsla(0, 0%, 98%, 0.8);--t774:hsla(0, 0%, 99%, 1);--t775:hsla(0, 0%, 98%, 1);--t776:hsla(0, 0%, 94%, 1);--t777:hsla(0, 0%, 91%, 1);--t778:hsla(0, 0%, 88%, 1);--t779:hsla(0, 0%, 81%, 1);--t780:hsla(0, 0%, 73%, 1);--t781:hsla(0, 0%, 55%, 1);--t782:hsla(0, 0%, 51%, 1);--t783:hsla(0, 0%, 39%, 1);--t784:hsla(0, 0%, 13%, 0);--t785:hsla(0, 0%, 13%, 0.2);--t786:hsla(0, 0%, 13%, 0.4);--t787:hsla(0, 0%, 13%, 0.6);--t788:hsla(0, 0%, 13%, 0.8);--t789:hsla(0, 0%, 13%, 0.1);--t790:hsla(0, 0%, 13%, 0.075);--t791:hsla(0, 0%, 13%, 0.05);--t792:hsla(0, 0%, 13%, 0.025);--t793:hsla(0, 0%, 13%, 0.02);--t794:hsla(0, 0%, 13%, 0.01);--t795:hsla(0, 0%, 98%, 0.1);--t796:hsla(0, 0%, 98%, 0.075);--t797:hsla(0, 0%, 98%, 0.05);--t798:hsla(0, 0%, 98%, 0.025);--t799:hsla(0, 0%, 98%, 0.02);--t800:hsla(0, 0%, 98%, 0.01);--t801:hsla(0, 0%, 99%, 0.2);--t802:hsla(0, 0%, 99%, 0.4);--t803:hsla(0, 0%, 99%, 0.6);--t804:hsla(0, 0%, 99%, 0.8);--t805:hsla(140, 60%, 99%, 0);--t806:hsla(137, 47%, 97%, 0.2);--t807:hsla(137, 47%, 97%, 0.4);--t808:hsla(137, 47%, 97%, 0.6);--t809:hsla(137, 47%, 97%, 0.8);--t810:hsla(140, 60%, 99%, 1);--t811:hsla(137, 47%, 97%, 1);--t812:hsla(139, 47%, 93%, 1);--t813:hsla(140, 49%, 89%, 1);--t814:hsla(142, 44%, 84%, 1);--t815:hsla(144, 41%, 77%, 1);--t816:hsla(146, 40%, 68%, 1);--t817:hsla(151, 40%, 54%, 1);--t818:hsla(152, 56%, 39%, 1);--t819:hsla(154, 60%, 32%, 1);--t820:hsla(155, 40%, 16%, 1);--t821:hsla(156, 41%, 16%, 0);--t822:hsla(156, 41%, 16%, 0.2);--t823:hsla(156, 41%, 16%, 0.4);--t824:hsla(156, 41%, 16%, 0.6);--t825:hsla(156, 41%, 16%, 0.8);--t826:hsla(156, 41%, 16%, 0.1);--t827:hsla(156, 41%, 16%, 0.075);--t828:hsla(156, 41%, 16%, 0.05);--t829:hsla(156, 41%, 16%, 0.025);--t830:hsla(156, 41%, 16%, 0.02);--t831:hsla(156, 41%, 16%, 0.01);--t832:hsla(137, 47%, 97%, 0.1);--t833:hsla(137, 47%, 97%, 0.075);--t834:hsla(137, 47%, 97%, 0.05);--t835:hsla(137, 47%, 97%, 0.025);--t836:hsla(137, 47%, 97%, 0.02);--t837:hsla(137, 47%, 97%, 0.01);--t838:hsla(140, 60%, 99%, 0.2);--t839:hsla(140, 60%, 99%, 0.4);--t840:hsla(140, 60%, 99%, 0.6);--t841:hsla(140, 60%, 99%, 0.8);--t842:hsla(20, 60%, 99%, 0);--t843:hsla(33, 100%, 96%, 0.2);--t844:hsla(33, 100%, 96%, 0.4);--t845:hsla(33, 100%, 96%, 0.6);--t846:hsla(33, 100%, 96%, 0.8);--t847:hsla(20, 60%, 99%, 1);--t848:hsla(33, 100%, 96%, 1);--t849:hsla(37, 100%, 92%, 1);--t850:hsla(34, 100%, 85%, 1);--t851:hsla(33, 100%, 80%, 1);--t852:hsla(30, 100%, 75%, 1);--t853:hsla(27, 87%, 71%, 1);--t854:hsla(25, 80%, 63%, 1);--t855:hsla(24, 100%, 47%, 1);--t856:hsla(23, 100%, 40%, 1);--t857:hsla(16, 50%, 23%, 1);--t858:hsla(16, 50%, 23%, 0);--t859:hsla(16, 50%, 23%, 0.2);--t860:hsla(16, 50%, 23%, 0.4);--t861:hsla(16, 50%, 23%, 0.6);--t862:hsla(16, 50%, 23%, 0.8);--t863:hsla(16, 50%, 23%, 0.1);--t864:hsla(16, 50%, 23%, 0.075);--t865:hsla(16, 50%, 23%, 0.05);--t866:hsla(16, 50%, 23%, 0.025);--t867:hsla(16, 50%, 23%, 0.02);--t868:hsla(16, 50%, 23%, 0.01);--t869:hsla(33, 100%, 96%, 0.1);--t870:hsla(33, 100%, 96%, 0.075);--t871:hsla(33, 100%, 96%, 0.05);--t872:hsla(33, 100%, 96%, 0.025);--t873:hsla(33, 100%, 96%, 0.02);--t874:hsla(33, 100%, 96%, 0.01);--t875:hsla(20, 60%, 99%, 0.2);--t876:hsla(20, 60%, 99%, 0.4);--t877:hsla(20, 60%, 99%, 0.6);--t878:hsla(20, 60%, 99%, 0.8);--t879:hsla(324, 100%, 99%, 0);--t880:hsla(326, 78%, 98%, 0.2);--t881:hsla(326, 78%, 98%, 0.4);--t882:hsla(326, 78%, 98%, 0.6);--t883:hsla(326, 78%, 98%, 0.8);--t884:hsla(320, 100%, 99%, 1);--t885:hsla(326, 78%, 98%, 1);--t886:hsla(326, 91%, 95%, 1);--t887:hsla(323, 79%, 92%, 1);--t888:hsla(323, 69%, 89%, 1);--t889:hsla(323, 60%, 84%, 1);--t890:hsla(323, 55%, 79%, 1);--t891:hsla(322, 52%, 72%, 1);--t892:hsla(322, 61%, 52%, 1);--t893:hsla(322, 65%, 46%, 1);--t894:hsla(320, 70%, 23%, 1);--t895:hsla(320, 69%, 23%, 0);--t896:hsla(320, 69%, 23%, 0.2);--t897:hsla(320, 69%, 23%, 0.4);--t898:hsla(320, 69%, 23%, 0.6);--t899:hsla(320, 69%, 23%, 0.8);--t900:hsla(320, 69%, 23%, 0.1);--t901:hsla(320, 69%, 23%, 0.075);--t902:hsla(320, 69%, 23%, 0.05);--t903:hsla(320, 69%, 23%, 0.025);--t904:hsla(320, 69%, 23%, 0.02);--t905:hsla(320, 69%, 23%, 0.01);--t906:hsla(326, 78%, 98%, 0.1);--t907:hsla(326, 78%, 98%, 0.075);--t908:hsla(326, 78%, 98%, 0.05);--t909:hsla(326, 78%, 98%, 0.025);--t910:hsla(326, 78%, 98%, 0.02);--t911:hsla(326, 78%, 98%, 0.01);--t912:hsla(324, 100%, 99%, 0.2);--t913:hsla(324, 100%, 99%, 0.4);--t914:hsla(324, 100%, 99%, 0.6);--t915:hsla(324, 100%, 99%, 0.8);--t916:hsla(300, 60%, 99%, 0);--t917:hsla(274, 78%, 98%, 0.2);--t918:hsla(274, 78%, 98%, 0.4);--t919:hsla(274, 78%, 98%, 0.6);--t920:hsla(274, 78%, 98%, 0.8);--t921:hsla(300, 50%, 99%, 1);--t922:hsla(274, 78%, 98%, 1);--t923:hsla(275, 89%, 96%, 1);--t924:hsla(277, 81%, 94%, 1);--t925:hsla(275, 75%, 91%, 1);--t926:hsla(275, 69%, 86%, 1);--t927:hsla(273, 62%, 81%, 1);--t928:hsla(272, 60%, 74%, 1);--t929:hsla(272, 45%, 50%, 1);--t930:hsla(272, 45%, 49%, 1);--t931:hsla(270, 50%, 25%, 1);--t932:hsla(270, 50%, 25%, 0);--t933:hsla(270, 50%, 25%, 0.2);--t934:hsla(270, 50%, 25%, 0.4);--t935:hsla(270, 50%, 25%, 0.6);--t936:hsla(270, 50%, 25%, 0.8);--t937:hsla(270, 50%, 25%, 0.1);--t938:hsla(270, 50%, 25%, 0.075);--t939:hsla(270, 50%, 25%, 0.05);--t940:hsla(270, 50%, 25%, 0.025);--t941:hsla(270, 50%, 25%, 0.02);--t942:hsla(270, 50%, 25%, 0.01);--t943:hsla(274, 78%, 98%, 0.1);--t944:hsla(274, 78%, 98%, 0.075);--t945:hsla(274, 78%, 98%, 0.05);--t946:hsla(274, 78%, 98%, 0.025);--t947:hsla(274, 78%, 98%, 0.02);--t948:hsla(274, 78%, 98%, 0.01);--t949:hsla(300, 60%, 99%, 0.2);--t950:hsla(300, 60%, 99%, 0.4);--t951:hsla(300, 60%, 99%, 0.6);--t952:hsla(300, 60%, 99%, 0.8);--t953:hsla(0, 100%, 99%, 0);--t954:hsla(0, 100%, 98%, 0.2);--t955:hsla(0, 100%, 98%, 0.4);--t956:hsla(0, 100%, 98%, 0.6);--t957:hsla(0, 100%, 98%, 0.8);--t958:hsla(0, 100%, 99%, 1);--t959:hsla(0, 100%, 98%, 1);--t960:hsla(357, 90%, 96%, 1);--t961:hsla(358, 100%, 93%, 1);--t962:hsla(359, 100%, 90%, 1);--t963:hsla(359, 94%, 87%, 1);--t964:hsla(359, 77%, 81%, 1);--t965:hsla(359, 70%, 74%, 1);--t966:hsla(358, 69%, 55%, 1);--t967:hsla(358, 65%, 49%, 1);--t968:hsla(351, 63%, 24%, 1);--t969:hsla(351, 63%, 24%, 0);--t970:hsla(351, 63%, 24%, 0.2);--t971:hsla(351, 63%, 24%, 0.4);--t972:hsla(351, 63%, 24%, 0.6);--t973:hsla(351, 63%, 24%, 0.8);--t974:hsla(351, 63%, 24%, 0.1);--t975:hsla(351, 63%, 24%, 0.075);--t976:hsla(351, 63%, 24%, 0.05);--t977:hsla(351, 63%, 24%, 0.025);--t978:hsla(351, 63%, 24%, 0.02);--t979:hsla(351, 63%, 24%, 0.01);--t980:hsla(0, 100%, 98%, 0.1);--t981:hsla(0, 100%, 98%, 0.075);--t982:hsla(0, 100%, 98%, 0.05);--t983:hsla(0, 100%, 98%, 0.025);--t984:hsla(0, 100%, 98%, 0.02);--t985:hsla(0, 100%, 98%, 0.01);--t986:hsla(0, 100%, 99%, 0.2);--t987:hsla(0, 100%, 99%, 0.4);--t988:hsla(0, 100%, 99%, 0.6);--t989:hsla(0, 100%, 99%, 0.8);--t990:hsla(160, 60%, 99%, 0);--t991:hsla(165, 50%, 97%, 0.2);--t992:hsla(165, 50%, 97%, 0.4);--t993:hsla(165, 50%, 97%, 0.6);--t994:hsla(165, 50%, 97%, 0.8);--t995:hsla(165, 67%, 99%, 1);--t996:hsla(165, 50%, 97%, 1);--t997:hsla(167, 63%, 93%, 1);--t998:hsla(166, 62%, 88%, 1);--t999:hsla(168, 54%, 82%, 1);--t1000:hsla(168, 48%, 75%, 1);--t1001:hsla(170, 43%, 66%, 1);--t1002:hsla(172, 42%, 53%, 1);--t1003:hsla(173, 85%, 33%, 1);--t1004:hsla(172, 100%, 26%, 1);--t1005:hsla(174, 65%, 15%, 1);--t1006:hsla(174, 66%, 15%, 0);--t1007:hsla(174, 66%, 15%, 0.2);--t1008:hsla(174, 66%, 15%, 0.4);--t1009:hsla(174, 66%, 15%, 0.6);--t1010:hsla(174, 66%, 15%, 0.8);--t1011:hsla(174, 66%, 15%, 0.1);--t1012:hsla(174, 66%, 15%, 0.075);--t1013:hsla(174, 66%, 15%, 0.05);--t1014:hsla(174, 66%, 15%, 0.025);--t1015:hsla(174, 66%, 15%, 0.02);--t1016:hsla(174, 66%, 15%, 0.01);--t1017:hsla(165, 50%, 97%, 0.1);--t1018:hsla(165, 50%, 97%, 0.075);--t1019:hsla(165, 50%, 97%, 0.05);--t1020:hsla(165, 50%, 97%, 0.025);--t1021:hsla(165, 50%, 97%, 0.02);--t1022:hsla(165, 50%, 97%, 0.01);--t1023:hsla(160, 60%, 99%, 0.2);--t1024:hsla(160, 60%, 99%, 0.4);--t1025:hsla(160, 60%, 99%, 0.6);--t1026:hsla(160, 60%, 99%, 0.8);--t1027:hsla(60, 45%, 98%, 0);--t1028:hsla(54, 91%, 95%, 0.2);--t1029:hsla(54, 91%, 95%, 0.4);--t1030:hsla(54, 91%, 95%, 0.6);--t1031:hsla(54, 91%, 95%, 0.8);--t1032:hsla(60, 50%, 98%, 1);--t1033:hsla(54, 91%, 95%, 1);--t1034:hsla(56, 100%, 86%, 1);--t1035:hsla(53, 100%, 79%, 1);--t1036:hsla(50, 100%, 72%, 1);--t1037:hsla(48, 85%, 68%, 1);--t1038:hsla(46, 70%, 65%, 1);--t1039:hsla(45, 65%, 53%, 1);--t1040:hsla(52, 100%, 50%, 1);--t1041:hsla(41, 100%, 31%, 1);--t1042:hsla(42, 39%, 20%, 1);--t1043:hsla(42, 39%, 20%, 0);--t1044:hsla(42, 39%, 20%, 0.2);--t1045:hsla(42, 39%, 20%, 0.4);--t1046:hsla(42, 39%, 20%, 0.6);--t1047:hsla(42, 39%, 20%, 0.8);--t1048:hsla(42, 39%, 20%, 0.1);--t1049:hsla(42, 39%, 20%, 0.075);--t1050:hsla(42, 39%, 20%, 0.05);--t1051:hsla(42, 39%, 20%, 0.025);--t1052:hsla(42, 39%, 20%, 0.02);--t1053:hsla(42, 39%, 20%, 0.01);--t1054:hsla(54, 91%, 95%, 0.1);--t1055:hsla(54, 91%, 95%, 0.075);--t1056:hsla(54, 91%, 95%, 0.05);--t1057:hsla(54, 91%, 95%, 0.025);--t1058:hsla(54, 91%, 95%, 0.02);--t1059:hsla(54, 91%, 95%, 0.01);--t1060:hsla(60, 45%, 98%, 0.2);--t1061:hsla(60, 45%, 98%, 0.4);--t1062:hsla(60, 45%, 98%, 0.6);--t1063:hsla(60, 45%, 98%, 0.8)}
1968
+ :root{--t0:var(--primary, #fafafa);--t1:var(--primary-foreground, #0a0a0a);--t2:hsla(0, 0%, 4%, 0);--t3:hsla(0, 0%, 8%, 0.2);--t4:hsla(0, 0%, 8%, 0.4);--t5:hsla(0, 0%, 8%, 0.6);--t6:hsla(0, 0%, 8%, 0.8);--t7:hsla(0, 0%, 4%, 1);--t8:hsla(0, 0%, 8%, 1);--t9:hsla(0, 0%, 10%, 1);--t10:var(--border, rgb(255 255 255 / .10));--t11:hsla(0, 0%, 20%, 1);--t12:hsla(0, 0%, 27%, 1);--t13:hsla(0, 0%, 40%, 1);--t14:hsla(0, 0%, 47%, 1);--t15:hsla(0, 0%, 52%, 1);--t16:hsla(0, 0%, 67%, 1);--t17:hsla(0, 0%, 80%, 1);--t18:var(--foreground, #e5e5e5);--t19:hsla(0, 0%, 100%, 0);--t20:hsla(0, 0%, 100%, 0.2);--t21:hsla(0, 0%, 100%, 0.4);--t22:hsla(0, 0%, 100%, 0.6);--t23:hsla(0, 0%, 100%, 0.8);--t24:hsla(0, 0%, 100%, 1);--t25:#0a0a0a;--t26:hsla(0, 0%, 14%, 1);--t27:var(--text-tertiary, rgb(255 255 255 / .55));--t28:#090909;--t29:#151515;--t30:#191919;--t31:#232323;--t32:#333;--t33:#444;--t34:#666;--t35:#777;--t36:#858585;--t37:#aaa;--t38:#ccc;--t39:#ffffff;--t40:#fff;--t41:#f8f8f8;--t42:hsl(0, 0%, 93%);--t43:hsl(0, 0%, 85%);--t44:hsl(0, 0%, 80%);--t45:hsl(0, 0%, 70%);--t46:hsl(0, 0%, 59%);--t47:hsl(0, 0%, 45%);--t48:hsl(0, 0%, 30%);--t49:hsl(0, 0%, 20%);--t50:hsl(0, 0%, 14%);--t51:hsl(0, 0%, 2%);--t52:rgba(255,255,255,1);--t53:rgba(255,255,255,0);--t54:rgba(255,255,255,0.2);--t55:rgba(255,255,255,0.4);--t56:rgba(255,255,255,0.6);--t57:rgba(255,255,255,0.8);--t58:rgba(0,0,0,1);--t59:rgba(0,0,0,0);--t60:rgba(0,0,0,0.2);--t61:rgba(0,0,0,0.4);--t62:rgba(0,0,0,0.6);--t63:rgba(0,0,0,0.8);--t64:rgba(0,0,0,0.15);--t65:rgba(0,0,0,0.23);--t66:rgba(0,0,0,0.33);--t67:rgba(0,0,0,0.45);--t68:rgba(0,0,0,0.65);--t69:rgba(0,0,0,0.9);--t70:rgba(255,255,255,0.1);--t71:rgba(255,255,255,0.3);--t72:rgba(255,255,255,0.45);--t73:rgba(255,255,255,0.65);--t74:rgba(255,255,255,0.85);--t75:rgba(255,255,255,0.95);--t76:#111111;--t77:#222222;--t78:#2a2a2a;--t79:#313131;--t80:#3a3a3a;--t81:#484848;--t82:#606060;--t83:#6e6e6e;--t84:#7b7b7b;--t85:#b4b4b4;--t86:#eeeeee;--t87:#0d1520;--t88:#111927;--t89:#0d2847;--t90:#003362;--t91:#004074;--t92:#104d87;--t93:#205d9e;--t94:#2870bd;--t95:#0090ff;--t96:#3b9eff;--t97:#70b8ff;--t98:#c2e6ff;--t99:#191111;--t100:#201314;--t101:#3b1219;--t102:#500f1c;--t103:#611623;--t104:#72232d;--t105:#8c333a;--t106:#b54548;--t107:#e5484d;--t108:#ec5d5e;--t109:#ff9592;--t110:#ffd1d9;--t111:#14120b;--t112:#1b180f;--t113:#2d2305;--t114:#362b00;--t115:#433500;--t116:#524202;--t117:#665417;--t118:#836a21;--t119:#ffe629;--t120:#ffff57;--t121:#f5e147;--t122:#f6eeb4;--t123:#0e1512;--t124:#121b17;--t125:#132d21;--t126:#113b29;--t127:#174933;--t128:#20573e;--t129:#28684a;--t130:#2f7c57;--t131:#30a46c;--t132:#33b074;--t133:#3dd68c;--t134:#b1f1cb;--t135:#17120e;--t136:#1e160f;--t137:#331e0b;--t138:#462100;--t139:#562800;--t140:#66350c;--t141:#7e451d;--t142:#a35829;--t143:#f76b15;--t144:#ff801f;--t145:#ffa057;--t146:#ffe0c2;--t147:#191117;--t148:#21121d;--t149:#37172f;--t150:#4b143d;--t151:#591c47;--t152:#692955;--t153:#833869;--t154:#a84885;--t155:#d6409f;--t156:#de51a8;--t157:#ff8dcc;--t158:#fdd1ea;--t159:#18111b;--t160:#1e1523;--t161:#301c3b;--t162:#3d224e;--t163:#48295c;--t164:#54346b;--t165:#664282;--t166:#8457aa;--t167:#8e4ec6;--t168:#9a5cd0;--t169:#d19dff;--t170:#ecd9fa;--t171:#0d1514;--t172:#111c1b;--t173:#0d2d2a;--t174:#023b37;--t175:#084843;--t176:#145750;--t177:#1c6961;--t178:#207e73;--t179:#12a594;--t180:#0eb39e;--t181:#0bd8b6;--t182:#adf0dd;--t183:hsl(0, 0%, 68%);--t184:hsl(0, 0%, 65%);--t185:hsl(0, 0%, 62%);--t186:hsl(0, 0%, 56%);--t187:hsl(0, 0%, 53%);--t188:hsl(0, 0%, 50%);--t189:hsl(0, 0%, 47%);--t190:hsl(0, 0%, 44%);--t191:hsl(0, 0%, 41%);--t192:hsl(0, 0%, 38%);--t193:hsl(0, 0%, 32%);--t194:hsla(0, 0%, 97%, 1);--t195:hsla(0, 0%, 93%, 1);--t196:hsla(0, 0%, 85%, 1);--t197:hsla(0, 0%, 70%, 1);--t198:hsla(0, 0%, 59%, 1);--t199:hsla(0, 0%, 45%, 1);--t200:hsla(0, 0%, 30%, 1);--t201:hsla(0, 0%, 2%, 1);--t202:hsla(0, 0%, 100%, 0.1);--t203:hsla(0, 0%, 100%, 0.075);--t204:hsla(0, 0%, 100%, 0.05);--t205:hsla(0, 0%, 100%, 0.025);--t206:hsla(0, 0%, 100%, 0.02);--t207:hsla(0, 0%, 100%, 0.01);--t208:hsla(0, 0%, 8%, 0.1);--t209:hsla(0, 0%, 8%, 0.075);--t210:hsla(0, 0%, 8%, 0.05);--t211:hsla(0, 0%, 8%, 0.025);--t212:hsla(0, 0%, 8%, 0.02);--t213:hsla(0, 0%, 8%, 0.01);--t214:var(--ring, rgb(255 255 255 / .40));--t215:hsla(0, 0%, 4%, 0.2);--t216:hsla(0, 0%, 4%, 0.4);--t217:hsla(0, 0%, 4%, 0.6);--t218:hsla(0, 0%, 4%, 0.8);--t219:hsla(0, 0%, 97%, 0.2);--t220:hsla(0, 0%, 97%, 0.4);--t221:hsla(0, 0%, 97%, 0.6);--t222:hsla(0, 0%, 97%, 0.8);--t223:hsla(0, 0%, 2%, 0);--t224:hsla(0, 0%, 2%, 0.2);--t225:hsla(0, 0%, 2%, 0.4);--t226:hsla(0, 0%, 2%, 0.6);--t227:hsla(0, 0%, 2%, 0.8);--t228:hsla(0, 0%, 2%, 0.1);--t229:hsla(0, 0%, 2%, 0.075);--t230:hsla(0, 0%, 2%, 0.05);--t231:hsla(0, 0%, 2%, 0.025);--t232:hsla(0, 0%, 2%, 0.02);--t233:hsla(0, 0%, 2%, 0.01);--t234:hsla(0, 0%, 97%, 0.1);--t235:hsla(0, 0%, 97%, 0.075);--t236:hsla(0, 0%, 97%, 0.05);--t237:hsla(0, 0%, 97%, 0.025);--t238:hsla(0, 0%, 97%, 0.02);--t239:hsla(0, 0%, 97%, 0.01);--t240:hsla(216, 43%, 9%, 0);--t241:hsla(218, 39%, 11%, 0.2);--t242:hsla(218, 39%, 11%, 0.4);--t243:hsla(218, 39%, 11%, 0.6);--t244:hsla(218, 39%, 11%, 0.8);--t245:hsla(215, 42%, 9%, 1);--t246:hsla(218, 39%, 11%, 1);--t247:hsla(212, 69%, 16%, 1);--t248:hsla(209, 100%, 19%, 1);--t249:hsla(207, 100%, 23%, 1);--t250:hsla(209, 79%, 30%, 1);--t251:hsla(211, 66%, 37%, 1);--t252:hsla(211, 65%, 45%, 1);--t253:hsla(206, 100%, 50%, 1);--t254:hsla(210, 100%, 62%, 1);--t255:hsla(210, 100%, 72%, 1);--t256:hsla(205, 100%, 88%, 1);--t257:hsla(205, 100%, 88%, 0);--t258:hsla(205, 100%, 88%, 0.2);--t259:hsla(205, 100%, 88%, 0.4);--t260:hsla(205, 100%, 88%, 0.6);--t261:hsla(205, 100%, 88%, 0.8);--t262:hsla(205, 100%, 88%, 0.1);--t263:hsla(205, 100%, 88%, 0.075);--t264:hsla(205, 100%, 88%, 0.05);--t265:hsla(205, 100%, 88%, 0.025);--t266:hsla(205, 100%, 88%, 0.02);--t267:hsla(205, 100%, 88%, 0.01);--t268:hsla(218, 39%, 11%, 0.1);--t269:hsla(218, 39%, 11%, 0.075);--t270:hsla(218, 39%, 11%, 0.05);--t271:hsla(218, 39%, 11%, 0.025);--t272:hsla(218, 39%, 11%, 0.02);--t273:hsla(218, 39%, 11%, 0.01);--t274:hsla(216, 43%, 9%, 0.2);--t275:hsla(216, 43%, 9%, 0.4);--t276:hsla(216, 43%, 9%, 0.6);--t277:hsla(216, 43%, 9%, 0.8);--t278:hsla(0, 0%, 7%, 0);--t279:hsla(0, 0%, 10%, 0.2);--t280:hsla(0, 0%, 10%, 0.4);--t281:hsla(0, 0%, 10%, 0.6);--t282:hsla(0, 0%, 10%, 0.8);--t283:hsla(0, 0%, 7%, 1);--t284:hsla(0, 0%, 13%, 1);--t285:hsla(0, 0%, 16%, 1);--t286:hsla(0, 0%, 19%, 1);--t287:hsla(0, 0%, 23%, 1);--t288:hsla(0, 0%, 28%, 1);--t289:hsla(0, 0%, 38%, 1);--t290:hsla(0, 0%, 43%, 1);--t291:hsla(0, 0%, 48%, 1);--t292:hsla(0, 0%, 71%, 1);--t293:hsla(0, 0%, 93%, 0);--t294:hsla(0, 0%, 93%, 0.2);--t295:hsla(0, 0%, 93%, 0.4);--t296:hsla(0, 0%, 93%, 0.6);--t297:hsla(0, 0%, 93%, 0.8);--t298:hsla(0, 0%, 93%, 0.1);--t299:hsla(0, 0%, 93%, 0.075);--t300:hsla(0, 0%, 93%, 0.05);--t301:hsla(0, 0%, 93%, 0.025);--t302:hsla(0, 0%, 93%, 0.02);--t303:hsla(0, 0%, 93%, 0.01);--t304:hsla(0, 0%, 10%, 0.1);--t305:hsla(0, 0%, 10%, 0.075);--t306:hsla(0, 0%, 10%, 0.05);--t307:hsla(0, 0%, 10%, 0.025);--t308:hsla(0, 0%, 10%, 0.02);--t309:hsla(0, 0%, 10%, 0.01);--t310:hsla(0, 0%, 7%, 0.2);--t311:hsla(0, 0%, 7%, 0.4);--t312:hsla(0, 0%, 7%, 0.6);--t313:hsla(0, 0%, 7%, 0.8);--t314:hsla(154, 20%, 7%, 0);--t315:hsla(153, 20%, 9%, 0.2);--t316:hsla(153, 20%, 9%, 0.4);--t317:hsla(153, 20%, 9%, 0.6);--t318:hsla(153, 20%, 9%, 0.8);--t319:hsla(154, 20%, 7%, 1);--t320:hsla(153, 20%, 9%, 1);--t321:hsla(152, 41%, 13%, 1);--t322:hsla(154, 55%, 15%, 1);--t323:hsla(154, 52%, 19%, 1);--t324:hsla(153, 46%, 23%, 1);--t325:hsla(152, 44%, 28%, 1);--t326:hsla(151, 45%, 34%, 1);--t327:hsla(151, 55%, 42%, 1);--t328:hsla(151, 55%, 45%, 1);--t329:hsla(151, 65%, 54%, 1);--t330:hsla(144, 70%, 82%, 1);--t331:hsla(144, 70%, 82%, 0);--t332:hsla(144, 70%, 82%, 0.2);--t333:hsla(144, 70%, 82%, 0.4);--t334:hsla(144, 70%, 82%, 0.6);--t335:hsla(144, 70%, 82%, 0.8);--t336:hsla(144, 70%, 82%, 0.1);--t337:hsla(144, 70%, 82%, 0.075);--t338:hsla(144, 70%, 82%, 0.05);--t339:hsla(144, 70%, 82%, 0.025);--t340:hsla(144, 70%, 82%, 0.02);--t341:hsla(144, 70%, 82%, 0.01);--t342:hsla(153, 20%, 9%, 0.1);--t343:hsla(153, 20%, 9%, 0.075);--t344:hsla(153, 20%, 9%, 0.05);--t345:hsla(153, 20%, 9%, 0.025);--t346:hsla(153, 20%, 9%, 0.02);--t347:hsla(153, 20%, 9%, 0.01);--t348:hsla(154, 20%, 7%, 0.2);--t349:hsla(154, 20%, 7%, 0.4);--t350:hsla(154, 20%, 7%, 0.6);--t351:hsla(154, 20%, 7%, 0.8);--t352:hsla(0, 0%, 68%, 0);--t353:hsla(0, 0%, 65%, 0.2);--t354:hsla(0, 0%, 65%, 0.4);--t355:hsla(0, 0%, 65%, 0.6);--t356:hsla(0, 0%, 65%, 0.8);--t357:hsla(0, 0%, 68%, 1);--t358:hsla(0, 0%, 65%, 1);--t359:hsla(0, 0%, 62%, 1);--t360:hsla(0, 0%, 56%, 1);--t361:hsla(0, 0%, 53%, 1);--t362:hsla(0, 0%, 50%, 1);--t363:hsla(0, 0%, 44%, 1);--t364:hsla(0, 0%, 41%, 1);--t365:hsla(0, 0%, 32%, 1);--t366:hsla(0, 0%, 32%, 0);--t367:hsla(0, 0%, 32%, 0.2);--t368:hsla(0, 0%, 32%, 0.4);--t369:hsla(0, 0%, 32%, 0.6);--t370:hsla(0, 0%, 32%, 0.8);--t371:hsla(0, 0%, 32%, 0.1);--t372:hsla(0, 0%, 32%, 0.075);--t373:hsla(0, 0%, 32%, 0.05);--t374:hsla(0, 0%, 32%, 0.025);--t375:hsla(0, 0%, 32%, 0.02);--t376:hsla(0, 0%, 32%, 0.01);--t377:hsla(0, 0%, 65%, 0.1);--t378:hsla(0, 0%, 65%, 0.075);--t379:hsla(0, 0%, 65%, 0.05);--t380:hsla(0, 0%, 65%, 0.025);--t381:hsla(0, 0%, 65%, 0.02);--t382:hsla(0, 0%, 65%, 0.01);--t383:hsla(0, 0%, 68%, 0.2);--t384:hsla(0, 0%, 68%, 0.4);--t385:hsla(0, 0%, 68%, 0.6);--t386:hsla(0, 0%, 68%, 0.8);--t387:hsla(23, 22%, 7%, 0);--t388:hsla(28, 33%, 9%, 0.2);--t389:hsla(28, 33%, 9%, 0.4);--t390:hsla(28, 33%, 9%, 0.6);--t391:hsla(28, 33%, 9%, 0.8);--t392:hsla(27, 24%, 7%, 1);--t393:hsla(28, 33%, 9%, 1);--t394:hsla(29, 65%, 12%, 1);--t395:hsla(28, 100%, 14%, 1);--t396:hsla(28, 100%, 17%, 1);--t397:hsla(27, 79%, 22%, 1);--t398:hsla(25, 63%, 30%, 1);--t399:hsla(23, 60%, 40%, 1);--t400:hsla(23, 93%, 53%, 1);--t401:hsla(26, 100%, 56%, 1);--t402:hsla(26, 100%, 67%, 1);--t403:hsla(30, 100%, 88%, 1);--t404:hsla(30, 100%, 88%, 0);--t405:hsla(30, 100%, 88%, 0.2);--t406:hsla(30, 100%, 88%, 0.4);--t407:hsla(30, 100%, 88%, 0.6);--t408:hsla(30, 100%, 88%, 0.8);--t409:hsla(30, 100%, 88%, 0.1);--t410:hsla(30, 100%, 88%, 0.075);--t411:hsla(30, 100%, 88%, 0.05);--t412:hsla(30, 100%, 88%, 0.025);--t413:hsla(30, 100%, 88%, 0.02);--t414:hsla(30, 100%, 88%, 0.01);--t415:hsla(28, 33%, 9%, 0.1);--t416:hsla(28, 33%, 9%, 0.075);--t417:hsla(28, 33%, 9%, 0.05);--t418:hsla(28, 33%, 9%, 0.025);--t419:hsla(28, 33%, 9%, 0.02);--t420:hsla(28, 33%, 9%, 0.01);--t421:hsla(23, 22%, 7%, 0.2);--t422:hsla(23, 22%, 7%, 0.4);--t423:hsla(23, 22%, 7%, 0.6);--t424:hsla(23, 22%, 7%, 0.8);--t425:hsla(317, 17%, 8%, 0);--t426:hsla(316, 29%, 10%, 0.2);--t427:hsla(316, 29%, 10%, 0.4);--t428:hsla(316, 29%, 10%, 0.6);--t429:hsla(316, 29%, 10%, 0.8);--t430:hsla(315, 19%, 8%, 1);--t431:hsla(316, 29%, 10%, 1);--t432:hsla(315, 41%, 15%, 1);--t433:hsla(315, 58%, 19%, 1);--t434:hsla(318, 52%, 23%, 1);--t435:hsla(319, 44%, 29%, 1);--t436:hsla(321, 40%, 37%, 1);--t437:hsla(322, 40%, 47%, 1);--t438:hsla(322, 65%, 55%, 1);--t439:hsla(323, 68%, 59%, 1);--t440:hsla(327, 100%, 78%, 1);--t441:hsla(326, 92%, 91%, 1);--t442:hsla(326, 91%, 91%, 0);--t443:hsla(326, 91%, 91%, 0.2);--t444:hsla(326, 91%, 91%, 0.4);--t445:hsla(326, 91%, 91%, 0.6);--t446:hsla(326, 91%, 91%, 0.8);--t447:hsla(326, 91%, 91%, 0.1);--t448:hsla(326, 91%, 91%, 0.075);--t449:hsla(326, 91%, 91%, 0.05);--t450:hsla(326, 91%, 91%, 0.025);--t451:hsla(326, 91%, 91%, 0.02);--t452:hsla(326, 91%, 91%, 0.01);--t453:hsla(316, 29%, 10%, 0.1);--t454:hsla(316, 29%, 10%, 0.075);--t455:hsla(316, 29%, 10%, 0.05);--t456:hsla(316, 29%, 10%, 0.025);--t457:hsla(316, 29%, 10%, 0.02);--t458:hsla(316, 29%, 10%, 0.01);--t459:hsla(317, 17%, 8%, 0.2);--t460:hsla(317, 17%, 8%, 0.4);--t461:hsla(317, 17%, 8%, 0.6);--t462:hsla(317, 17%, 8%, 0.8);--t463:hsla(282, 22%, 9%, 0);--t464:hsla(279, 25%, 11%, 0.2);--t465:hsla(279, 25%, 11%, 0.4);--t466:hsla(279, 25%, 11%, 0.6);--t467:hsla(279, 25%, 11%, 0.8);--t468:hsla(282, 23%, 9%, 1);--t469:hsla(279, 25%, 11%, 1);--t470:hsla(279, 36%, 17%, 1);--t471:hsla(277, 39%, 22%, 1);--t472:hsla(276, 38%, 26%, 1);--t473:hsla(275, 35%, 31%, 1);--t474:hsla(274, 33%, 38%, 1);--t475:hsla(273, 33%, 50%, 1);--t476:hsla(272, 51%, 54%, 1);--t477:hsla(272, 55%, 59%, 1);--t478:hsla(272, 100%, 81%, 1);--t479:hsla(275, 77%, 92%, 1);--t480:hsla(275, 76%, 92%, 0);--t481:hsla(275, 76%, 92%, 0.2);--t482:hsla(275, 76%, 92%, 0.4);--t483:hsla(275, 76%, 92%, 0.6);--t484:hsla(275, 76%, 92%, 0.8);--t485:hsla(275, 76%, 92%, 0.1);--t486:hsla(275, 76%, 92%, 0.075);--t487:hsla(275, 76%, 92%, 0.05);--t488:hsla(275, 76%, 92%, 0.025);--t489:hsla(275, 76%, 92%, 0.02);--t490:hsla(275, 76%, 92%, 0.01);--t491:hsla(279, 25%, 11%, 0.1);--t492:hsla(279, 25%, 11%, 0.075);--t493:hsla(279, 25%, 11%, 0.05);--t494:hsla(279, 25%, 11%, 0.025);--t495:hsla(279, 25%, 11%, 0.02);--t496:hsla(279, 25%, 11%, 0.01);--t497:hsla(282, 22%, 9%, 0.2);--t498:hsla(282, 22%, 9%, 0.4);--t499:hsla(282, 22%, 9%, 0.6);--t500:hsla(282, 22%, 9%, 0.8);--t501:hsla(0, 17%, 8%, 0);--t502:hsla(355, 25%, 10%, 0.2);--t503:hsla(355, 25%, 10%, 0.4);--t504:hsla(355, 25%, 10%, 0.6);--t505:hsla(355, 25%, 10%, 0.8);--t506:hsla(0, 19%, 8%, 1);--t507:hsla(355, 25%, 10%, 1);--t508:hsla(350, 53%, 15%, 1);--t509:hsla(348, 68%, 19%, 1);--t510:hsla(350, 63%, 23%, 1);--t511:hsla(352, 53%, 29%, 1);--t512:hsla(355, 47%, 37%, 1);--t513:hsla(358, 45%, 49%, 1);--t514:hsla(358, 75%, 59%, 1);--t515:hsla(360, 79%, 65%, 1);--t516:hsla(2, 100%, 79%, 1);--t517:hsla(350, 100%, 91%, 1);--t518:hsla(350, 100%, 91%, 0);--t519:hsla(350, 100%, 91%, 0.2);--t520:hsla(350, 100%, 91%, 0.4);--t521:hsla(350, 100%, 91%, 0.6);--t522:hsla(350, 100%, 91%, 0.8);--t523:hsla(350, 100%, 91%, 0.1);--t524:hsla(350, 100%, 91%, 0.075);--t525:hsla(350, 100%, 91%, 0.05);--t526:hsla(350, 100%, 91%, 0.025);--t527:hsla(350, 100%, 91%, 0.02);--t528:hsla(350, 100%, 91%, 0.01);--t529:hsla(355, 25%, 10%, 0.1);--t530:hsla(355, 25%, 10%, 0.075);--t531:hsla(355, 25%, 10%, 0.05);--t532:hsla(355, 25%, 10%, 0.025);--t533:hsla(355, 25%, 10%, 0.02);--t534:hsla(355, 25%, 10%, 0.01);--t535:hsla(0, 17%, 8%, 0.2);--t536:hsla(0, 17%, 8%, 0.4);--t537:hsla(0, 17%, 8%, 0.6);--t538:hsla(0, 17%, 8%, 0.8);--t539:hsla(173, 22%, 7%, 0);--t540:hsla(175, 24%, 9%, 0.2);--t541:hsla(175, 24%, 9%, 0.4);--t542:hsla(175, 24%, 9%, 0.6);--t543:hsla(175, 24%, 9%, 0.8);--t544:hsla(173, 24%, 7%, 1);--t545:hsla(175, 24%, 9%, 1);--t546:hsla(174, 55%, 11%, 1);--t547:hsla(176, 93%, 12%, 1);--t548:hsla(175, 80%, 16%, 1);--t549:hsla(174, 63%, 21%, 1);--t550:hsla(174, 58%, 26%, 1);--t551:hsla(173, 59%, 31%, 1);--t552:hsla(173, 80%, 36%, 1);--t553:hsla(172, 85%, 38%, 1);--t554:hsla(170, 90%, 45%, 1);--t555:hsla(163, 69%, 81%, 1);--t556:hsla(163, 69%, 81%, 0);--t557:hsla(163, 69%, 81%, 0.2);--t558:hsla(163, 69%, 81%, 0.4);--t559:hsla(163, 69%, 81%, 0.6);--t560:hsla(163, 69%, 81%, 0.8);--t561:hsla(163, 69%, 81%, 0.1);--t562:hsla(163, 69%, 81%, 0.075);--t563:hsla(163, 69%, 81%, 0.05);--t564:hsla(163, 69%, 81%, 0.025);--t565:hsla(163, 69%, 81%, 0.02);--t566:hsla(163, 69%, 81%, 0.01);--t567:hsla(175, 24%, 9%, 0.1);--t568:hsla(175, 24%, 9%, 0.075);--t569:hsla(175, 24%, 9%, 0.05);--t570:hsla(175, 24%, 9%, 0.025);--t571:hsla(175, 24%, 9%, 0.02);--t572:hsla(175, 24%, 9%, 0.01);--t573:hsla(173, 22%, 7%, 0.2);--t574:hsla(173, 22%, 7%, 0.4);--t575:hsla(173, 22%, 7%, 0.6);--t576:hsla(173, 22%, 7%, 0.8);--t577:hsla(47, 29%, 6%, 0);--t578:hsla(45, 29%, 8%, 0.2);--t579:hsla(45, 29%, 8%, 0.4);--t580:hsla(45, 29%, 8%, 0.6);--t581:hsla(45, 29%, 8%, 0.8);--t582:hsla(47, 29%, 6%, 1);--t583:hsla(45, 29%, 8%, 1);--t584:hsla(45, 80%, 10%, 1);--t585:hsla(48, 100%, 11%, 1);--t586:hsla(47, 100%, 13%, 1);--t587:hsla(48, 95%, 16%, 1);--t588:hsla(46, 63%, 25%, 1);--t589:hsla(45, 60%, 32%, 1);--t590:hsla(53, 100%, 58%, 1);--t591:hsla(60, 100%, 67%, 1);--t592:hsla(53, 90%, 62%, 1);--t593:hsla(53, 79%, 84%, 1);--t594:hsla(53, 78%, 84%, 0);--t595:hsla(53, 78%, 84%, 0.2);--t596:hsla(53, 78%, 84%, 0.4);--t597:hsla(53, 78%, 84%, 0.6);--t598:hsla(53, 78%, 84%, 0.8);--t599:hsla(53, 78%, 84%, 0.1);--t600:hsla(53, 78%, 84%, 0.075);--t601:hsla(53, 78%, 84%, 0.05);--t602:hsla(53, 78%, 84%, 0.025);--t603:hsla(53, 78%, 84%, 0.02);--t604:hsla(53, 78%, 84%, 0.01);--t605:hsla(45, 29%, 8%, 0.1);--t606:hsla(45, 29%, 8%, 0.075);--t607:hsla(45, 29%, 8%, 0.05);--t608:hsla(45, 29%, 8%, 0.025);--t609:hsla(45, 29%, 8%, 0.02);--t610:hsla(45, 29%, 8%, 0.01);--t611:hsla(47, 29%, 6%, 0.2);--t612:hsla(47, 29%, 6%, 0.4);--t613:hsla(47, 29%, 6%, 0.6);--t614:hsla(47, 29%, 6%, 0.8);--t615:var(--primary, #0a0a0a);--t616:var(--primary-foreground, #fafafa);--t617:var(--border, rgb(0 0 0 / .10));--t618:var(--foreground, #0a0a0a);--t619:#f7f7f7;--t620:var(--text-tertiary, rgb(10 10 10 / .55));--t621:rgba(0,0,0,0.04);--t622:rgba(0,0,0,0.08);--t623:rgba(0,0,0,0.12);--t624:rgba(0,0,0,0.22);--t625:rgba(0,0,0,0.44);--t626:rgba(0,0,0,0.75);--t627:rgba(255,255,255,0.05);--t628:rgba(255,255,255,0.15);--t629:rgba(255,255,255,0.55);--t630:rgba(255,255,255,0.7);--t631:#fcfcfc;--t632:#f9f9f9;--t633:#f0f0f0;--t634:#e8e8e8;--t635:#e0e0e0;--t636:#d9d9d9;--t637:#cecece;--t638:#bbbbbb;--t639:#8d8d8d;--t640:#838383;--t641:#646464;--t642:#202020;--t643:#fbfdff;--t644:#f4faff;--t645:#e6f4fe;--t646:#d5efff;--t647:#c2e5ff;--t648:#acd8fc;--t649:#8ec8f6;--t650:#5eb1ef;--t651:#0588f0;--t652:#0d74ce;--t653:#113264;--t654:#fffcfc;--t655:#fff7f7;--t656:#feebec;--t657:#ffdbdc;--t658:#ffcdce;--t659:#fdbdbe;--t660:#f4a9aa;--t661:#eb8e90;--t662:#dc3e42;--t663:#ce2c31;--t664:#641723;--t665:#fdfdf9;--t666:#fefce9;--t667:#fffab8;--t668:#fff394;--t669:#ffe770;--t670:#f3d768;--t671:#e4c767;--t672:#d5ae39;--t673:#ffdc00;--t674:#9e6c00;--t675:#473b1f;--t676:#fbfefc;--t677:#f4fbf6;--t678:#e6f6eb;--t679:#d6f1df;--t680:#c4e8d1;--t681:#adddc0;--t682:#8eceaa;--t683:#5bb98b;--t684:#2b9a66;--t685:#218358;--t686:#193b2d;--t687:#fefcfb;--t688:#fff7ed;--t689:#ffefd6;--t690:#ffdfb5;--t691:#ffd19a;--t692:#ffc182;--t693:#f5ae73;--t694:#ec9455;--t695:#ef5f00;--t696:#cc4e00;--t697:#582d1d;--t698:#fffcfe;--t699:#fef7fb;--t700:#fee9f5;--t701:#fbdcef;--t702:#f6cee7;--t703:#efbfdd;--t704:#e7acd0;--t705:#dd93c2;--t706:#cf3897;--t707:#c2298a;--t708:#651249;--t709:#fefcfe;--t710:#fbf7fe;--t711:#f7edfe;--t712:#f2e2fc;--t713:#ead5f9;--t714:#e0c4f4;--t715:#d1afec;--t716:#be93e4;--t717:#8347b9;--t718:#8145b5;--t719:#402060;--t720:#fafefd;--t721:#f3fbf9;--t722:#e0f8f3;--t723:#ccf3ea;--t724:#b8eae0;--t725:#a1ded2;--t726:#83cdc1;--t727:#53b9ab;--t728:#0d9b8a;--t729:#008573;--t730:#0d3d38;--t731:var(--ring, rgb(0 0 0 / .5));--t732:hsla(216, 100%, 99%, 0);--t733:hsla(207, 100%, 98%, 0.2);--t734:hsla(207, 100%, 98%, 0.4);--t735:hsla(207, 100%, 98%, 0.6);--t736:hsla(207, 100%, 98%, 0.8);--t737:hsla(210, 100%, 99%, 1);--t738:hsla(207, 100%, 98%, 1);--t739:hsla(205, 92%, 95%, 1);--t740:hsla(203, 100%, 92%, 1);--t741:hsla(206, 100%, 88%, 1);--t742:hsla(207, 93%, 83%, 1);--t743:hsla(207, 85%, 76%, 1);--t744:hsla(206, 82%, 65%, 1);--t745:hsla(207, 96%, 48%, 1);--t746:hsla(208, 88%, 43%, 1);--t747:hsla(216, 71%, 23%, 1);--t748:hsla(216, 71%, 23%, 0);--t749:hsla(216, 71%, 23%, 0.2);--t750:hsla(216, 71%, 23%, 0.4);--t751:hsla(216, 71%, 23%, 0.6);--t752:hsla(216, 71%, 23%, 0.8);--t753:hsla(216, 71%, 23%, 0.1);--t754:hsla(216, 71%, 23%, 0.075);--t755:hsla(216, 71%, 23%, 0.05);--t756:hsla(216, 71%, 23%, 0.025);--t757:hsla(216, 71%, 23%, 0.02);--t758:hsla(216, 71%, 23%, 0.01);--t759:hsla(207, 100%, 98%, 0.1);--t760:hsla(207, 100%, 98%, 0.075);--t761:hsla(207, 100%, 98%, 0.05);--t762:hsla(207, 100%, 98%, 0.025);--t763:hsla(207, 100%, 98%, 0.02);--t764:hsla(207, 100%, 98%, 0.01);--t765:hsla(216, 100%, 99%, 0.2);--t766:hsla(216, 100%, 99%, 0.4);--t767:hsla(216, 100%, 99%, 0.6);--t768:hsla(216, 100%, 99%, 0.8);--t769:hsla(0, 0%, 99%, 0);--t770:hsla(0, 0%, 98%, 0.2);--t771:hsla(0, 0%, 98%, 0.4);--t772:hsla(0, 0%, 98%, 0.6);--t773:hsla(0, 0%, 98%, 0.8);--t774:hsla(0, 0%, 99%, 1);--t775:hsla(0, 0%, 98%, 1);--t776:hsla(0, 0%, 94%, 1);--t777:hsla(0, 0%, 91%, 1);--t778:hsla(0, 0%, 88%, 1);--t779:hsla(0, 0%, 81%, 1);--t780:hsla(0, 0%, 73%, 1);--t781:hsla(0, 0%, 55%, 1);--t782:hsla(0, 0%, 51%, 1);--t783:hsla(0, 0%, 39%, 1);--t784:hsla(0, 0%, 13%, 0);--t785:hsla(0, 0%, 13%, 0.2);--t786:hsla(0, 0%, 13%, 0.4);--t787:hsla(0, 0%, 13%, 0.6);--t788:hsla(0, 0%, 13%, 0.8);--t789:hsla(0, 0%, 13%, 0.1);--t790:hsla(0, 0%, 13%, 0.075);--t791:hsla(0, 0%, 13%, 0.05);--t792:hsla(0, 0%, 13%, 0.025);--t793:hsla(0, 0%, 13%, 0.02);--t794:hsla(0, 0%, 13%, 0.01);--t795:hsla(0, 0%, 98%, 0.1);--t796:hsla(0, 0%, 98%, 0.075);--t797:hsla(0, 0%, 98%, 0.05);--t798:hsla(0, 0%, 98%, 0.025);--t799:hsla(0, 0%, 98%, 0.02);--t800:hsla(0, 0%, 98%, 0.01);--t801:hsla(0, 0%, 99%, 0.2);--t802:hsla(0, 0%, 99%, 0.4);--t803:hsla(0, 0%, 99%, 0.6);--t804:hsla(0, 0%, 99%, 0.8);--t805:hsla(140, 60%, 99%, 0);--t806:hsla(137, 47%, 97%, 0.2);--t807:hsla(137, 47%, 97%, 0.4);--t808:hsla(137, 47%, 97%, 0.6);--t809:hsla(137, 47%, 97%, 0.8);--t810:hsla(140, 60%, 99%, 1);--t811:hsla(137, 47%, 97%, 1);--t812:hsla(139, 47%, 93%, 1);--t813:hsla(140, 49%, 89%, 1);--t814:hsla(142, 44%, 84%, 1);--t815:hsla(144, 41%, 77%, 1);--t816:hsla(146, 40%, 68%, 1);--t817:hsla(151, 40%, 54%, 1);--t818:hsla(152, 56%, 39%, 1);--t819:hsla(154, 60%, 32%, 1);--t820:hsla(155, 40%, 16%, 1);--t821:hsla(156, 41%, 16%, 0);--t822:hsla(156, 41%, 16%, 0.2);--t823:hsla(156, 41%, 16%, 0.4);--t824:hsla(156, 41%, 16%, 0.6);--t825:hsla(156, 41%, 16%, 0.8);--t826:hsla(156, 41%, 16%, 0.1);--t827:hsla(156, 41%, 16%, 0.075);--t828:hsla(156, 41%, 16%, 0.05);--t829:hsla(156, 41%, 16%, 0.025);--t830:hsla(156, 41%, 16%, 0.02);--t831:hsla(156, 41%, 16%, 0.01);--t832:hsla(137, 47%, 97%, 0.1);--t833:hsla(137, 47%, 97%, 0.075);--t834:hsla(137, 47%, 97%, 0.05);--t835:hsla(137, 47%, 97%, 0.025);--t836:hsla(137, 47%, 97%, 0.02);--t837:hsla(137, 47%, 97%, 0.01);--t838:hsla(140, 60%, 99%, 0.2);--t839:hsla(140, 60%, 99%, 0.4);--t840:hsla(140, 60%, 99%, 0.6);--t841:hsla(140, 60%, 99%, 0.8);--t842:hsla(20, 60%, 99%, 0);--t843:hsla(33, 100%, 96%, 0.2);--t844:hsla(33, 100%, 96%, 0.4);--t845:hsla(33, 100%, 96%, 0.6);--t846:hsla(33, 100%, 96%, 0.8);--t847:hsla(20, 60%, 99%, 1);--t848:hsla(33, 100%, 96%, 1);--t849:hsla(37, 100%, 92%, 1);--t850:hsla(34, 100%, 85%, 1);--t851:hsla(33, 100%, 80%, 1);--t852:hsla(30, 100%, 75%, 1);--t853:hsla(27, 87%, 71%, 1);--t854:hsla(25, 80%, 63%, 1);--t855:hsla(24, 100%, 47%, 1);--t856:hsla(23, 100%, 40%, 1);--t857:hsla(16, 50%, 23%, 1);--t858:hsla(16, 50%, 23%, 0);--t859:hsla(16, 50%, 23%, 0.2);--t860:hsla(16, 50%, 23%, 0.4);--t861:hsla(16, 50%, 23%, 0.6);--t862:hsla(16, 50%, 23%, 0.8);--t863:hsla(16, 50%, 23%, 0.1);--t864:hsla(16, 50%, 23%, 0.075);--t865:hsla(16, 50%, 23%, 0.05);--t866:hsla(16, 50%, 23%, 0.025);--t867:hsla(16, 50%, 23%, 0.02);--t868:hsla(16, 50%, 23%, 0.01);--t869:hsla(33, 100%, 96%, 0.1);--t870:hsla(33, 100%, 96%, 0.075);--t871:hsla(33, 100%, 96%, 0.05);--t872:hsla(33, 100%, 96%, 0.025);--t873:hsla(33, 100%, 96%, 0.02);--t874:hsla(33, 100%, 96%, 0.01);--t875:hsla(20, 60%, 99%, 0.2);--t876:hsla(20, 60%, 99%, 0.4);--t877:hsla(20, 60%, 99%, 0.6);--t878:hsla(20, 60%, 99%, 0.8);--t879:hsla(324, 100%, 99%, 0);--t880:hsla(326, 78%, 98%, 0.2);--t881:hsla(326, 78%, 98%, 0.4);--t882:hsla(326, 78%, 98%, 0.6);--t883:hsla(326, 78%, 98%, 0.8);--t884:hsla(320, 100%, 99%, 1);--t885:hsla(326, 78%, 98%, 1);--t886:hsla(326, 91%, 95%, 1);--t887:hsla(323, 79%, 92%, 1);--t888:hsla(323, 69%, 89%, 1);--t889:hsla(323, 60%, 84%, 1);--t890:hsla(323, 55%, 79%, 1);--t891:hsla(322, 52%, 72%, 1);--t892:hsla(322, 61%, 52%, 1);--t893:hsla(322, 65%, 46%, 1);--t894:hsla(320, 70%, 23%, 1);--t895:hsla(320, 69%, 23%, 0);--t896:hsla(320, 69%, 23%, 0.2);--t897:hsla(320, 69%, 23%, 0.4);--t898:hsla(320, 69%, 23%, 0.6);--t899:hsla(320, 69%, 23%, 0.8);--t900:hsla(320, 69%, 23%, 0.1);--t901:hsla(320, 69%, 23%, 0.075);--t902:hsla(320, 69%, 23%, 0.05);--t903:hsla(320, 69%, 23%, 0.025);--t904:hsla(320, 69%, 23%, 0.02);--t905:hsla(320, 69%, 23%, 0.01);--t906:hsla(326, 78%, 98%, 0.1);--t907:hsla(326, 78%, 98%, 0.075);--t908:hsla(326, 78%, 98%, 0.05);--t909:hsla(326, 78%, 98%, 0.025);--t910:hsla(326, 78%, 98%, 0.02);--t911:hsla(326, 78%, 98%, 0.01);--t912:hsla(324, 100%, 99%, 0.2);--t913:hsla(324, 100%, 99%, 0.4);--t914:hsla(324, 100%, 99%, 0.6);--t915:hsla(324, 100%, 99%, 0.8);--t916:hsla(300, 60%, 99%, 0);--t917:hsla(274, 78%, 98%, 0.2);--t918:hsla(274, 78%, 98%, 0.4);--t919:hsla(274, 78%, 98%, 0.6);--t920:hsla(274, 78%, 98%, 0.8);--t921:hsla(300, 50%, 99%, 1);--t922:hsla(274, 78%, 98%, 1);--t923:hsla(275, 89%, 96%, 1);--t924:hsla(277, 81%, 94%, 1);--t925:hsla(275, 75%, 91%, 1);--t926:hsla(275, 69%, 86%, 1);--t927:hsla(273, 62%, 81%, 1);--t928:hsla(272, 60%, 74%, 1);--t929:hsla(272, 45%, 50%, 1);--t930:hsla(272, 45%, 49%, 1);--t931:hsla(270, 50%, 25%, 1);--t932:hsla(270, 50%, 25%, 0);--t933:hsla(270, 50%, 25%, 0.2);--t934:hsla(270, 50%, 25%, 0.4);--t935:hsla(270, 50%, 25%, 0.6);--t936:hsla(270, 50%, 25%, 0.8);--t937:hsla(270, 50%, 25%, 0.1);--t938:hsla(270, 50%, 25%, 0.075);--t939:hsla(270, 50%, 25%, 0.05);--t940:hsla(270, 50%, 25%, 0.025);--t941:hsla(270, 50%, 25%, 0.02);--t942:hsla(270, 50%, 25%, 0.01);--t943:hsla(274, 78%, 98%, 0.1);--t944:hsla(274, 78%, 98%, 0.075);--t945:hsla(274, 78%, 98%, 0.05);--t946:hsla(274, 78%, 98%, 0.025);--t947:hsla(274, 78%, 98%, 0.02);--t948:hsla(274, 78%, 98%, 0.01);--t949:hsla(300, 60%, 99%, 0.2);--t950:hsla(300, 60%, 99%, 0.4);--t951:hsla(300, 60%, 99%, 0.6);--t952:hsla(300, 60%, 99%, 0.8);--t953:hsla(0, 100%, 99%, 0);--t954:hsla(0, 100%, 98%, 0.2);--t955:hsla(0, 100%, 98%, 0.4);--t956:hsla(0, 100%, 98%, 0.6);--t957:hsla(0, 100%, 98%, 0.8);--t958:hsla(0, 100%, 99%, 1);--t959:hsla(0, 100%, 98%, 1);--t960:hsla(357, 90%, 96%, 1);--t961:hsla(358, 100%, 93%, 1);--t962:hsla(359, 100%, 90%, 1);--t963:hsla(359, 94%, 87%, 1);--t964:hsla(359, 77%, 81%, 1);--t965:hsla(359, 70%, 74%, 1);--t966:hsla(358, 69%, 55%, 1);--t967:hsla(358, 65%, 49%, 1);--t968:hsla(351, 63%, 24%, 1);--t969:hsla(351, 63%, 24%, 0);--t970:hsla(351, 63%, 24%, 0.2);--t971:hsla(351, 63%, 24%, 0.4);--t972:hsla(351, 63%, 24%, 0.6);--t973:hsla(351, 63%, 24%, 0.8);--t974:hsla(351, 63%, 24%, 0.1);--t975:hsla(351, 63%, 24%, 0.075);--t976:hsla(351, 63%, 24%, 0.05);--t977:hsla(351, 63%, 24%, 0.025);--t978:hsla(351, 63%, 24%, 0.02);--t979:hsla(351, 63%, 24%, 0.01);--t980:hsla(0, 100%, 98%, 0.1);--t981:hsla(0, 100%, 98%, 0.075);--t982:hsla(0, 100%, 98%, 0.05);--t983:hsla(0, 100%, 98%, 0.025);--t984:hsla(0, 100%, 98%, 0.02);--t985:hsla(0, 100%, 98%, 0.01);--t986:hsla(0, 100%, 99%, 0.2);--t987:hsla(0, 100%, 99%, 0.4);--t988:hsla(0, 100%, 99%, 0.6);--t989:hsla(0, 100%, 99%, 0.8);--t990:hsla(160, 60%, 99%, 0);--t991:hsla(165, 50%, 97%, 0.2);--t992:hsla(165, 50%, 97%, 0.4);--t993:hsla(165, 50%, 97%, 0.6);--t994:hsla(165, 50%, 97%, 0.8);--t995:hsla(165, 67%, 99%, 1);--t996:hsla(165, 50%, 97%, 1);--t997:hsla(167, 63%, 93%, 1);--t998:hsla(166, 62%, 88%, 1);--t999:hsla(168, 54%, 82%, 1);--t1000:hsla(168, 48%, 75%, 1);--t1001:hsla(170, 43%, 66%, 1);--t1002:hsla(172, 42%, 53%, 1);--t1003:hsla(173, 85%, 33%, 1);--t1004:hsla(172, 100%, 26%, 1);--t1005:hsla(174, 65%, 15%, 1);--t1006:hsla(174, 66%, 15%, 0);--t1007:hsla(174, 66%, 15%, 0.2);--t1008:hsla(174, 66%, 15%, 0.4);--t1009:hsla(174, 66%, 15%, 0.6);--t1010:hsla(174, 66%, 15%, 0.8);--t1011:hsla(174, 66%, 15%, 0.1);--t1012:hsla(174, 66%, 15%, 0.075);--t1013:hsla(174, 66%, 15%, 0.05);--t1014:hsla(174, 66%, 15%, 0.025);--t1015:hsla(174, 66%, 15%, 0.02);--t1016:hsla(174, 66%, 15%, 0.01);--t1017:hsla(165, 50%, 97%, 0.1);--t1018:hsla(165, 50%, 97%, 0.075);--t1019:hsla(165, 50%, 97%, 0.05);--t1020:hsla(165, 50%, 97%, 0.025);--t1021:hsla(165, 50%, 97%, 0.02);--t1022:hsla(165, 50%, 97%, 0.01);--t1023:hsla(160, 60%, 99%, 0.2);--t1024:hsla(160, 60%, 99%, 0.4);--t1025:hsla(160, 60%, 99%, 0.6);--t1026:hsla(160, 60%, 99%, 0.8);--t1027:hsla(60, 45%, 98%, 0);--t1028:hsla(54, 91%, 95%, 0.2);--t1029:hsla(54, 91%, 95%, 0.4);--t1030:hsla(54, 91%, 95%, 0.6);--t1031:hsla(54, 91%, 95%, 0.8);--t1032:hsla(60, 50%, 98%, 1);--t1033:hsla(54, 91%, 95%, 1);--t1034:hsla(56, 100%, 86%, 1);--t1035:hsla(53, 100%, 79%, 1);--t1036:hsla(50, 100%, 72%, 1);--t1037:hsla(48, 85%, 68%, 1);--t1038:hsla(46, 70%, 65%, 1);--t1039:hsla(45, 65%, 53%, 1);--t1040:hsla(52, 100%, 50%, 1);--t1041:hsla(41, 100%, 31%, 1);--t1042:hsla(42, 39%, 20%, 1);--t1043:hsla(42, 39%, 20%, 0);--t1044:hsla(42, 39%, 20%, 0.2);--t1045:hsla(42, 39%, 20%, 0.4);--t1046:hsla(42, 39%, 20%, 0.6);--t1047:hsla(42, 39%, 20%, 0.8);--t1048:hsla(42, 39%, 20%, 0.1);--t1049:hsla(42, 39%, 20%, 0.075);--t1050:hsla(42, 39%, 20%, 0.05);--t1051:hsla(42, 39%, 20%, 0.025);--t1052:hsla(42, 39%, 20%, 0.02);--t1053:hsla(42, 39%, 20%, 0.01);--t1054:hsla(54, 91%, 95%, 0.1);--t1055:hsla(54, 91%, 95%, 0.075);--t1056:hsla(54, 91%, 95%, 0.05);--t1057:hsla(54, 91%, 95%, 0.025);--t1058:hsla(54, 91%, 95%, 0.02);--t1059:hsla(54, 91%, 95%, 0.01);--t1060:hsla(60, 45%, 98%, 0.2);--t1061:hsla(60, 45%, 98%, 0.4);--t1062:hsla(60, 45%, 98%, 0.6);--t1063:hsla(60, 45%, 98%, 0.8)}
1863
1969
  :root { --c-radius-0:0px; --c-radius-1:6px; --c-radius-10:9999px; --c-radius-11:9999px; --c-radius-12:9999px; --c-radius-2:6px; --c-radius-3:8px; --c-radius-4:8px; --c-radius-5:12px; --c-radius-6:12px; --c-radius-7:12px; --c-radius-8:12px; --c-radius-9:12px; --c-radius-true:8px; --c-size-0:0px; --c-size-0--25:2px; --c-size-0--5:4px; --c-size-0--75:8px; --c-size-1:20px; --c-size-1--5:24px; --c-size-10:104px; --c-size-11:124px; --c-size-12:144px; --c-size-13:164px; --c-size-14:184px; --c-size-15:204px; --c-size-16:224px; --c-size-17:224px; --c-size-18:244px; --c-size-19:264px; --c-size-2:28px; --c-size-2--5:32px; --c-size-20:284px; --c-size-3:36px; --c-size-3--5:40px; --c-size-4:44px; --c-size-4--5:48px; --c-size-5:52px; --c-size-6:64px; --c-size-7:74px; --c-size-8:84px; --c-size-9:94px; --c-size-true:44px; --c-space--0:0px; --c-space--0--25:calc(-1px * var(--density, 1)); --c-space--0--5:calc(-2px * var(--density, 1)); --c-space--0--75:calc(-3px * var(--density, 1)); --c-space--1:calc(-4px * var(--density, 1)); --c-space--1--5:calc(-6px * var(--density, 1)); --c-space--10:calc(-64px * var(--density, 1)); --c-space--11:calc(-80px * var(--density, 1)); --c-space--12:calc(-96px * var(--density, 1)); --c-space--13:calc(-112px * var(--density, 1)); --c-space--14:calc(-128px * var(--density, 1)); --c-space--15:calc(-144px * var(--density, 1)); --c-space--16:calc(-160px * var(--density, 1)); --c-space--17:calc(-160px * var(--density, 1)); --c-space--18:calc(-176px * var(--density, 1)); --c-space--19:calc(-192px * var(--density, 1)); --c-space--2:calc(-8px * var(--density, 1)); --c-space--2--5:calc(-10px * var(--density, 1)); --c-space--20:calc(-208px * var(--density, 1)); --c-space--3:calc(-12px * var(--density, 1)); --c-space--3--5:calc(-14px * var(--density, 1)); --c-space--4:calc(-16px * var(--density, 1)); --c-space--4--5:calc(-20px * var(--density, 1)); --c-space--5:calc(-24px * var(--density, 1)); --c-space--6:calc(-32px * var(--density, 1)); --c-space--7:calc(-40px * var(--density, 1)); --c-space--8:calc(-48px * var(--density, 1)); --c-space--9:calc(-56px * var(--density, 1)); --c-space--true:calc(-16px * var(--density, 1)); --c-space-0:0px; --c-space-0--25:calc(1px * var(--density, 1)); --c-space-0--5:calc(2px * var(--density, 1)); --c-space-0--75:calc(3px * var(--density, 1)); --c-space-1:calc(4px * var(--density, 1)); --c-space-1--5:calc(6px * var(--density, 1)); --c-space-10:calc(64px * var(--density, 1)); --c-space-11:calc(80px * var(--density, 1)); --c-space-12:calc(96px * var(--density, 1)); --c-space-13:calc(112px * var(--density, 1)); --c-space-14:calc(128px * var(--density, 1)); --c-space-15:calc(144px * var(--density, 1)); --c-space-16:calc(160px * var(--density, 1)); --c-space-17:calc(160px * var(--density, 1)); --c-space-18:calc(176px * var(--density, 1)); --c-space-19:calc(192px * var(--density, 1)); --c-space-2:calc(8px * var(--density, 1)); --c-space-2--5:calc(10px * var(--density, 1)); --c-space-20:calc(208px * var(--density, 1)); --c-space-3:calc(12px * var(--density, 1)); --c-space-3--5:calc(14px * var(--density, 1)); --c-space-4:calc(16px * var(--density, 1)); --c-space-4--5:calc(20px * var(--density, 1)); --c-space-5:calc(24px * var(--density, 1)); --c-space-6:calc(32px * var(--density, 1)); --c-space-7:calc(40px * var(--density, 1)); --c-space-8:calc(48px * var(--density, 1)); --c-space-9:calc(56px * var(--density, 1)); --c-space-true:calc(16px * var(--density, 1)); --c-zIndex-0:0; --c-zIndex-1:100; --c-zIndex-2:200; --c-zIndex-3:300; --c-zIndex-4:400; --c-zIndex-5:500
1864
1970
  }
1865
1971
  :root .font_body, :root .t_lang-body-default .font_body { --f-family:var(--font-sans, 'Geist', system-ui, -apple-system, sans-serif); --f-lineHeight-1:calc(16px * var(--type-scale, 1)); --f-lineHeight-2:calc(18px * var(--type-scale, 1)); --f-lineHeight-3:calc(20px * var(--type-scale, 1)); --f-lineHeight-4:calc(22px * var(--type-scale, 1)); --f-lineHeight-5:calc(22px * var(--type-scale, 1)); --f-lineHeight-6:calc(24px * var(--type-scale, 1)); --f-lineHeight-7:calc(28px * var(--type-scale, 1)); --f-lineHeight-8:calc(32px * var(--type-scale, 1)); --f-lineHeight-9:calc(32px * var(--type-scale, 1)); --f-lineHeight-10:calc(38px * var(--type-scale, 1)); --f-lineHeight-11:calc(46px * var(--type-scale, 1)); --f-lineHeight-12:calc(54px * var(--type-scale, 1)); --f-lineHeight-13:calc(62px * var(--type-scale, 1)); --f-lineHeight-14:calc(70px * var(--type-scale, 1)); --f-lineHeight-15:calc(86px * var(--type-scale, 1)); --f-lineHeight-16:calc(102px * var(--type-scale, 1)); --f-lineHeight-true:calc(20px * var(--type-scale, 1)); --f-weight-1:400; --f-weight-2:400; --f-weight-3:400; --f-weight-4:400; --f-weight-5:400; --f-weight-6:400; --f-weight-7:400; --f-weight-8:400; --f-weight-9:400; --f-weight-10:400; --f-weight-11:400; --f-weight-12:400; --f-weight-13:400; --f-weight-14:400; --f-weight-15:400; --f-weight-16:400; --f-weight-true:400; --f-letterSpacing-1:0px; --f-letterSpacing-2:0px; --f-letterSpacing-3:0px; --f-letterSpacing-4:0px; --f-letterSpacing-5:0px; --f-letterSpacing-6:0px; --f-letterSpacing-7:0px; --f-letterSpacing-8:0px; --f-letterSpacing-9:0px; --f-letterSpacing-10:0px; --f-letterSpacing-11:0px; --f-letterSpacing-12:0px; --f-letterSpacing-13:0px; --f-letterSpacing-14:0px; --f-letterSpacing-15:0px; --f-letterSpacing-16:0px; --f-letterSpacing-true:0px; --f-size-1:var(--text-xs, 11px); --f-size-2:var(--text-sm, 13px); --f-size-3:var(--text-base, 14px); --f-size-4:var(--text-lg, 15px); --f-size-5:var(--text-lg, 15px); --f-size-6:var(--text-xl, 17px); --f-size-7:var(--text-2xl, 21px); --f-size-8:var(--text-3xl, 26px); --f-size-9:var(--text-3xl, 26px); --f-size-10:var(--text-4xl, 32px); --f-size-11:var(--text-5xl, 40px); --f-size-12:calc(var(--text-5xl, 40px) + (var(--text-7xl, 64px) - var(--text-5xl, 40px)) / 3); --f-size-13:calc(var(--text-5xl, 40px) + 2 * (var(--text-7xl, 64px) - var(--text-5xl, 40px)) / 3); --f-size-14:var(--text-7xl, 64px); --f-size-15:calc(var(--text-7xl, 64px) + 4 * (var(--text-8xl, 84px) - var(--text-7xl, 64px)) / 5); --f-size-16:calc(var(--text-8xl, 84px) + 3 * (var(--text-9xl, 112px) - var(--text-8xl, 84px)) / 7); --f-size-true:var(--text-base, 14px)
@@ -2112,7 +2218,6 @@
2112
2218
  :root:root:root ._borderBottomColor-0active-borderColor77378595._borderBottomColor-0active-borderColor77378595:active{border-bottom-color:var(--borderColorPress) !important;}
2113
2219
  :root:root:root:root ._borderBottomColor-0focus-borderColor68052152._borderBottomColor-0focus-borderColor68052152:focus{border-bottom-color:var(--borderColorFocus) !important;}
2114
2220
  :root:root:root:root ._borderBottomColor-0focus-borderColor69916956._borderBottomColor-0focus-borderColor69916956:focus{border-bottom-color:var(--borderColorHover) !important;}
2115
- :root:root:root:root ._borderBottomColor-0focus-color06._borderBottomColor-0focus-color06:focus{border-bottom-color:var(--color06) !important;}
2116
2221
  :root:root:root:root ._borderBottomColor-0focus-color7._borderBottomColor-0focus-color7:focus{border-bottom-color:var(--color7) !important;}
2117
2222
  :root:root:root:root ._borderBottomColor-0focus-color8._borderBottomColor-0focus-color8:focus{border-bottom-color:var(--color8) !important;}
2118
2223
  @media (hover) {:root:root ._borderBottomColor-0hover-borderColor._borderBottomColor-0hover-borderColor:hover{border-bottom-color:var(--borderColor) !important;}}
@@ -2135,7 +2240,6 @@
2135
2240
  :root:root:root ._borderLeftColor-0active-borderColor77378595._borderLeftColor-0active-borderColor77378595:active{border-left-color:var(--borderColorPress) !important;}
2136
2241
  :root:root:root:root ._borderLeftColor-0focus-borderColor68052152._borderLeftColor-0focus-borderColor68052152:focus{border-left-color:var(--borderColorFocus) !important;}
2137
2242
  :root:root:root:root ._borderLeftColor-0focus-borderColor69916956._borderLeftColor-0focus-borderColor69916956:focus{border-left-color:var(--borderColorHover) !important;}
2138
- :root:root:root:root ._borderLeftColor-0focus-color06._borderLeftColor-0focus-color06:focus{border-left-color:var(--color06) !important;}
2139
2243
  :root:root:root:root ._borderLeftColor-0focus-color7._borderLeftColor-0focus-color7:focus{border-left-color:var(--color7) !important;}
2140
2244
  :root:root:root:root ._borderLeftColor-0focus-color8._borderLeftColor-0focus-color8:focus{border-left-color:var(--color8) !important;}
2141
2245
  @media (hover) {:root:root ._borderLeftColor-0hover-borderColor._borderLeftColor-0hover-borderColor:hover{border-left-color:var(--borderColor) !important;}}
@@ -2158,7 +2262,6 @@
2158
2262
  :root:root:root ._brc-0active-borderColor77378595._brc-0active-borderColor77378595:active{border-right-color:var(--borderColorPress) !important;}
2159
2263
  :root:root:root:root ._brc-0focus-borderColor68052152._brc-0focus-borderColor68052152:focus{border-right-color:var(--borderColorFocus) !important;}
2160
2264
  :root:root:root:root ._brc-0focus-borderColor69916956._brc-0focus-borderColor69916956:focus{border-right-color:var(--borderColorHover) !important;}
2161
- :root:root:root:root ._brc-0focus-color06._brc-0focus-color06:focus{border-right-color:var(--color06) !important;}
2162
2265
  :root:root:root:root ._brc-0focus-color7._brc-0focus-color7:focus{border-right-color:var(--color7) !important;}
2163
2266
  :root:root:root:root ._brc-0focus-color8._brc-0focus-color8:focus{border-right-color:var(--color8) !important;}
2164
2267
  @media (hover) {:root:root ._brc-0hover-borderColor._brc-0hover-borderColor:hover{border-right-color:var(--borderColor) !important;}}
@@ -2182,7 +2285,6 @@
2182
2285
  :root:root:root ._btc-0active-borderColor77378595._btc-0active-borderColor77378595:active{border-top-color:var(--borderColorPress) !important;}
2183
2286
  :root:root:root:root ._btc-0focus-borderColor68052152._btc-0focus-borderColor68052152:focus{border-top-color:var(--borderColorFocus) !important;}
2184
2287
  :root:root:root:root ._btc-0focus-borderColor69916956._btc-0focus-borderColor69916956:focus{border-top-color:var(--borderColorHover) !important;}
2185
- :root:root:root:root ._btc-0focus-color06._btc-0focus-color06:focus{border-top-color:var(--color06) !important;}
2186
2288
  :root:root:root:root ._btc-0focus-color7._btc-0focus-color7:focus{border-top-color:var(--color7) !important;}
2187
2289
  :root:root:root:root ._btc-0focus-color8._btc-0focus-color8:focus{border-top-color:var(--color8) !important;}
2188
2290
  @media (hover) {:root:root ._btc-0hover-borderColor._btc-0hover-borderColor:hover{border-top-color:var(--borderColor) !important;}}
@@ -2350,7 +2452,6 @@
2350
2452
  :root:root:root:root ._outlineColor-0focus-color8._outlineColor-0focus-color8:focus{outline-color:var(--color8) !important;}
2351
2453
  :root:root:root:root ._outlineColor-0focus-visible-outlineColo114._outlineColor-0focus-visible-outlineColo114:focus-visible{outline-color:var(--outlineColor) !important;}
2352
2454
  :root:root:root:root ._outlineStyle-0focus-solid._outlineStyle-0focus-solid:focus{outline-style:solid !important;}
2353
- :root:root:root:root ._outlineStyle-0focus-visible-none._outlineStyle-0focus-visible-none:focus-visible{outline-style:none !important;}
2354
2455
  :root:root:root:root ._outlineStyle-0focus-visible-solid._outlineStyle-0focus-visible-solid:focus-visible{outline-style:solid !important;}
2355
2456
  :root ._outlineStyle-none._outlineStyle-none{outline-style:none;}
2356
2457
  :root:root:root:root ._outlineWidth-0focus-2px._outlineWidth-0focus-2px:focus{outline-width:2px !important;}
package/dist/theme.css CHANGED
@@ -56,28 +56,56 @@
56
56
  /* ——— the opacity ladder: the real palette ——— */
57
57
  /* Every rung below .30 is a HAIRLINE or a LIFT — the two things this system
58
58
  draws with. The rungs are the reference's own values, not a rounded ramp. */
59
+ /* The five rungs marked (chrome) below were being retyped as raw rgba in
60
+ @hanzogui/shell's theme.ts, which is the shared bar every Hanzo property
61
+ mounts. That is the same defect this ladder exists to end — a value in two
62
+ places drifts, and this pair already had: the shell's resting hairline sat
63
+ at .06 against this file's .10 for long enough that the bar and the page
64
+ under it drew different hairlines. They are rungs here now, and the shell
65
+ references them, so the chrome has no colour of its own left to drift.
66
+
67
+ They are the shell's OWN measured values, added at the alpha it already
68
+ ships. Snapping them to neighbouring rungs instead would have been a
69
+ silent redesign of the estate's chrome, and two of them carry decisions
70
+ that a round number would have destroyed: .92 is ink deliberately short of
71
+ the .98 hover so a hover still reads as a response, and .03 is the one
72
+ lift that must stay below the .05 hairline it sits inside. */
73
+ --white-03:rgb(255 255 255 / .03); /* (chrome) the raised fill */
59
74
  --white-05:rgb(255 255 255 / .05);
60
75
  --white-06:rgb(255 255 255 / .06);
61
76
  --white-08:rgb(255 255 255 / .08);
62
77
  --white-10:rgb(255 255 255 / .10);
78
+ --white-14:rgb(255 255 255 / .14); /* (chrome) selection wash */
63
79
  --white-15:rgb(255 255 255 / .15);
64
80
  --white-16:rgb(255 255 255 / .16);
81
+ --white-18:rgb(255 255 255 / .18); /* (chrome) selection tint */
65
82
  --white-20:rgb(255 255 255 / .20);
66
83
  --white-22:rgb(255 255 255 / .22);
67
84
  --white-30:rgb(255 255 255 / .30);
68
85
  --white-40:rgb(255 255 255 / .40);
86
+ --white-45:rgb(255 255 255 / .45); /* (chrome) the dimmest ink */
69
87
  --white-55:rgb(255 255 255 / .55);
70
88
  --white-60:rgb(255 255 255 / .60);
71
89
  --white-78:rgb(255 255 255 / .78);
72
90
  --white-80:rgb(255 255 255 / .80);
91
+ --white-92:rgb(255 255 255 / .92); /* (chrome) body ink */
73
92
 
74
93
  /* ——— semantic aliases (dark, the default) ——— */
75
94
  --background:#0a0a0a;
76
- --foreground:#fafafa;
95
+ /* READING ink, one rung below the top of the ramp. The note at the head of this
96
+ file already made this argument once — #ffffff on #000000 halates, so #fafafa
97
+ — and the argument does not stop being true at 19.0:1. Every heading and
98
+ paragraph on every surface was set in the brightest ink the system has, while
99
+ the CHROME beside them draws body text at --white-92; a page read as glare
100
+ against its own header. #e5e5e5 is the neutral-200 rung this file already
101
+ spends on --primary-hover, so the ramp gains no new value: 15.7:1 on the page,
102
+ 15.2:1 on a card, both more than twice the 7:1 AAA asks of body text.
103
+ Something that genuinely needs the brightest ink names --primary. */
104
+ --foreground:#e5e5e5;
77
105
  --card:#0f0f0f;
78
- --card-foreground:#fafafa;
106
+ --card-foreground:#e5e5e5;
79
107
  --popover:#0f0f0f;
80
- --popover-foreground:#fafafa;
108
+ --popover-foreground:#e5e5e5;
81
109
  --primary:#fafafa;
82
110
  /* A 5% step, not the 16% this used to be. A filled button's fill is already
83
111
  the top of the ink ramp, so the only directions available on hover are
@@ -296,19 +324,56 @@
296
324
  @hanzo/design's `vars({type})` emits exactly this name. */
297
325
  --type-scale:1;
298
326
 
299
- --text-xs:calc(0.6875rem * var(--type-scale, 1)); --leading-xs:calc(1rem * var(--type-scale, 1)); /* 11px eyebrows / section labels */
300
- --text-sm:calc(0.8125rem * var(--type-scale, 1)); --leading-sm:calc(1.15rem * var(--type-scale, 1)); /* 13px nav labels, dense body */
301
- --text-base:calc(0.875rem * var(--type-scale, 1)); --leading-base:calc(1.35rem * var(--type-scale, 1)); /* 14px base app text (was 16px) */
302
- --text-lg:calc(0.9375rem * var(--type-scale, 1)); --leading-lg:calc(1.4rem * var(--type-scale, 1)); /* 15px */
303
- --text-xl:calc(1.0625rem * var(--type-scale, 1)); --leading-xl:calc(1.55rem * var(--type-scale, 1)); /* 17px */
304
- --text-2xl:calc(1.3125rem * var(--type-scale, 1)); --leading-2xl:calc(1.7rem * var(--type-scale, 1)); /* 21px */
305
- --text-3xl:calc(1.625rem * var(--type-scale, 1)); --leading-3xl:calc(1.95rem * var(--type-scale, 1)); /* 26px */
306
- --text-4xl:calc(2rem * var(--type-scale, 1)); --leading-4xl:calc(2.25rem * var(--type-scale, 1)); /* 32px */
307
- --text-5xl:calc(2.5rem * var(--type-scale, 1)); --leading-5xl:1.05; /* 40px */
308
- --text-6xl:calc(3.25rem * var(--type-scale, 1)); --leading-6xl:1; /* 52px */
309
- --text-7xl:calc(4rem * var(--type-scale, 1)); --leading-7xl:1; /* 64px */
310
- --text-8xl:calc(5.25rem * var(--type-scale, 1)); --leading-8xl:1; /* 84px */
311
- --text-9xl:calc(7rem * var(--type-scale, 1)); --leading-9xl:1; /* 112px */
327
+ /* The CONTRAST knob how far apart the rungs sit, where --type-scale is how
328
+ big they all are. Two different questions, and only the first one was
329
+ askable: a surface could take the whole ramp up 15% but could not flatten a
330
+ dense table's steps or open up a marketing page's, so both settled for the
331
+ app register's tight default.
332
+
333
+ It is authored as a TRANSFORM and not as a generated ramp, which is the
334
+ whole point. `base + (authored - base) * ratio` keeps each rung's authored
335
+ value as the INPUT, so ratio 1 reduces to exactly the published number by
336
+ algebra rather than by care — the deltas below are just `authored - 0.875`.
337
+ The alternative, deriving each rung as base * ratio^n, would restate the
338
+ ramp in a second place, and this scale is not geometric anyway: the app
339
+ register (11/13/14/15/17) is near-linear on purpose and a ratio applied to
340
+ it would erase the 1px steps the compact register is FOR. That drift is not
341
+ hypothetical here — see src/preference.ts, where a recomputed copy of this
342
+ ramp shipped `lg: 16px` against this file's 15px.
343
+
344
+ A rung is one place, so a rung added later needs a delta and nothing else. */
345
+ --type-ratio:1;
346
+
347
+ /* EVERY rung is bounded at BOTH ends, by one rule, because the knobs COMPOUND
348
+ and they compound in both directions. Clamping each knob's range separately
349
+ cannot fix either end — 0.85 x 0.9 is inside both bounds and lands at 8.5px
350
+ — so the RESULT is what carries the bound:
351
+
352
+ --text-floor 10px below this a label is not small, it is unreadable
353
+ --text-ceiling 30vw above this a heading is not type, it is a texture
354
+
355
+ The ceiling is in the VIEWPORT's units because that is what "too big" means:
356
+ measured, the tallest rung (--text-9xl, 112px) is 28.7vw on a 390px phone
357
+ and 7.8vw at 1440, so 30vw binds no published value at any real screen and
358
+ catches only a scale that has run away. Both bounds are stated once here and
359
+ `vars()` emits the same clamp for a modular scale, so a regenerated rung and
360
+ an authored one are bounded identically — the rule does not depend on which
361
+ produced the value. */
362
+ --text-floor:0.625rem;
363
+ --text-ceiling:30vw;
364
+ --text-xs:clamp(var(--text-floor), calc((0.875rem - 0.1875rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-xs:calc((1.35rem - 0.35rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 11px — eyebrows / section labels */
365
+ --text-sm:clamp(var(--text-floor), calc((0.875rem - 0.0625rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-sm:calc((1.35rem - 0.2rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 13px — nav labels, dense body */
366
+ --text-base:clamp(var(--text-floor), calc(0.875rem * var(--type-scale, 1)), var(--text-ceiling)); --leading-base:calc(1.35rem * var(--type-scale, 1)); /* 14px — the ANCHOR: the rung the ratio pivots on, so it carries no ratio term */
367
+ --text-lg:clamp(var(--text-floor), calc((0.875rem + 0.0625rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-lg:calc((1.35rem + 0.05rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 15px */
368
+ --text-xl:clamp(var(--text-floor), calc((0.875rem + 0.1875rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-xl:calc((1.35rem + 0.2rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 17px */
369
+ --text-2xl:clamp(var(--text-floor), calc((0.875rem + 0.4375rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-2xl:calc((1.35rem + 0.35rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 21px */
370
+ --text-3xl:clamp(var(--text-floor), calc((0.875rem + 0.75rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-3xl:calc((1.35rem + 0.6rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 26px */
371
+ --text-4xl:clamp(var(--text-floor), calc((0.875rem + 1.125rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-4xl:calc((1.35rem + 0.9rem * var(--type-ratio, 1)) * var(--type-scale, 1)); /* 32px */
372
+ --text-5xl:clamp(var(--text-floor), calc((0.875rem + 1.625rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-5xl:1.05; /* 40px — display leading is unitless, so it tracks its own size */
373
+ --text-6xl:clamp(var(--text-floor), calc((0.875rem + 2.375rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-6xl:1; /* 52px */
374
+ --text-7xl:clamp(var(--text-floor), calc((0.875rem + 3.125rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-7xl:1; /* 64px */
375
+ --text-8xl:clamp(var(--text-floor), calc((0.875rem + 4.375rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-8xl:1; /* 84px */
376
+ --text-9xl:clamp(var(--text-floor), calc((0.875rem + 6.125rem * var(--type-ratio, 1)) * var(--type-scale, 1)), var(--text-ceiling)); --leading-9xl:1; /* 112px */
312
377
 
313
378
  /* The SAME scale under @hanzo/brand's spelling. @hanzo/gui's shell theme and
314
379
  Hanzo Studio address the ramp as --font-size-*; both names are one value, so
@@ -447,6 +512,26 @@
447
512
  hanzoai/id's stylesheet — one app knowing something the system did not. */
448
513
  --tap-target:44px;
449
514
 
515
+ /* ——— controls ——— */
516
+ /* A control's OWN height, which the floor above does not answer: 44px is the
517
+ smallest a finger may aim at, not the size a thing should be. Nothing named
518
+ the second question, so each surface answered it privately and they drifted
519
+ — @hanzo/ui keeps `CONTROL_H = 36` in TypeScript, hanzoai/app pins a 30px
520
+ `--control-h` over that same 36px library, and hanzoai/id spelled
521
+ `min-height:52px` into three separate rules.
522
+ The first three rungs ARE @hanzo/ui's size table (default/sm/lg), moved
523
+ down to the layer that holds values so a host can answer it once instead of
524
+ each library carrying a private copy. They sit under the tap floor on
525
+ purpose: base.css lifts whichever one is spent to 44px under
526
+ `pointer:coarse`, so one declaration serves a compact pointer control and a
527
+ hittable touch one. -xl is what a surface earns when the control IS the
528
+ content — one field, one button, nothing competing — where the default
529
+ reads as one of a stack rather than as the thing the screen is for. */
530
+ --control-height-sm:32px;
531
+ --control-height:36px;
532
+ --control-height-lg:40px;
533
+ --control-height-xl:52px;
534
+
450
535
  /* ——— safe areas ——— */
451
536
  /* The notch/home-indicator insets, named once. Anything pinned to a viewport
452
537
  edge — a fixed header, a bottom bar, a sheet — adds the matching one. */
@@ -882,6 +967,22 @@
882
967
  its buttons at 8-10px and nothing at 6px except 22px chips. */
883
968
  border-radius:var(--radius-md);
884
969
  padding:0 var(--space-3);
970
+ /* A field's ring is drawn INSIDE its own box. The one focus rule below
971
+ reads this; nothing else about the indicator changes.
972
+
973
+ A field lives in containers a button does not — composers, palettes and
974
+ panels that round their corners with `overflow:hidden`. An outline at a
975
+ POSITIVE offset is painted outside the border box, so any such ancestor
976
+ clips it, and the computed style still says `2px solid` while nothing is
977
+ drawn: a chat composer measured byte-identical screenshots focused and
978
+ unfocused, and a search pill kept only its left and right edges. A
979
+ negative offset cannot be clipped by anything, so a field needs to know
980
+ nothing about what contains it.
981
+
982
+ -2 against a 2px ring lays the outline over the outermost 2px of the box,
983
+ so it REPLACES the 1px edge for as long as focus is there rather than
984
+ drawing a second line a pixel inside the first. */
985
+ --ring-offset:-2px;
885
986
  }
886
987
  :where(textarea){padding:var(--space-2) var(--space-3);resize:vertical}
887
988
  /* A field has NO focus rule of its own — see the ring at the bottom of this
@@ -948,6 +1049,11 @@
948
1049
  canvas and clears the 2px perimeter WCAG 2.4.13 asks for; the gate in
949
1050
  check-tokens holds --ring to that and nothing else here may weaken it.
950
1051
 
1052
+ WHERE the ring sits is the one thing that varies, and it varies as a VALUE
1053
+ the element carries, never as a second rule: `--ring-offset` defaults to 2
1054
+ and a field sets it to -2 (see the field block above). Two rules is what
1055
+ 0.4.9 removed, and a second one here would be the same defect again.
1056
+
951
1057
  There were two rules until 0.4.9, and they collided invisibly. Both computed
952
1058
  to (0,1,0) — :where() zeroes whatever it wraps, leaving one pseudo-class on
953
1059
  each side — so the cascade fell through to SOURCE ORDER inside this layer,
@@ -956,7 +1062,7 @@
956
1062
  drew BOTH the ring and the edge+halo. Each rule read as correct alone, which
957
1063
  is why it survived review in both files; the defect existed only in their
958
1064
  order. One rule cannot disagree with itself. */
959
- :focus-visible{outline:2px solid var(--ring);outline-offset:2px}
1065
+ :focus-visible{outline:2px solid var(--ring);outline-offset:var(--ring-offset,2px)}
960
1066
  /* --white-20 is white-on-white in the light theme, so selection reads through
961
1067
  --selection, which BOTH themes define. */
962
1068
  ::selection{background:var(--selection);color:var(--text-primary)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.0.111",
3
+ "version": "8.0.114",
4
4
  "type": "module",
5
5
  "description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {
@@ -195,7 +195,7 @@
195
195
  "dependencies": {
196
196
  "@hanzo/appearance": "^0.1.4",
197
197
  "@hanzo/brand": "^1.4.5",
198
- "@hanzo/design": "^0.5.3",
198
+ "@hanzo/design": "^0.5.16",
199
199
  "@hanzo/logo": "^1.0.13",
200
200
  "@hanzo/products": "^0.2.0",
201
201
  "clsx": "^2.1.1"
@@ -1,36 +0,0 @@
1
- 'use client';"use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FOCUS = void 0;
4
- /**
5
- * How a text field says it has focus.
6
- *
7
- * A field already has an edge, so focus BRIGHTENS that edge — it never adds a
8
- * second shape around it. One rule, shared by every field, so `Input` and
9
- * `Textarea` cannot drift apart.
10
- *
11
- * `@hanzogui/input` ships the opposite of both halves, and each failure hides
12
- * the other:
13
- *
14
- * - `focusVisibleStyle` draws `outline: 2px solid $outlineColor` at a 2px
15
- * offset. Tamagui emits that as `:root:root:root:root ._outlineWidth-…
16
- * :focus-visible { outline-width: 2px !important }`, which outranks any
17
- * plain stylesheet — a consumer's `outline: none` cannot win, and one did
18
- * try. Setting the width to 0 HERE is the only way to retract it, because
19
- * a prop replaces the variant's atomic class rather than competing with it.
20
- *
21
- * - `focusStyle` brightens to `$borderColorFocus`, which in this design
22
- * system resolves to the SAME value as `$borderColor`. So the cue that was
23
- * supposed to make the ring unnecessary rendered nothing at all, and the
24
- * ring was the only feedback a focused field had.
25
- *
26
- * `$color06` against a `$borderColor` rest is ~5:1, so the edge alone carries
27
- * the indicator (WCAG 2.4.13) and nothing else needs to be drawn.
28
- *
29
- * Spread BEFORE a component's own `...props`, so a call site can still say
30
- * otherwise.
31
- */
32
- const FOCUS = {
33
- focusStyle: { borderColor: '$color06' },
34
- focusVisibleStyle: { outlineWidth: 0, outlineStyle: 'none' },
35
- };
36
- exports.FOCUS = FOCUS;
@@ -1,39 +0,0 @@
1
- /**
2
- * How a text field says it has focus.
3
- *
4
- * A field already has an edge, so focus BRIGHTENS that edge — it never adds a
5
- * second shape around it. One rule, shared by every field, so `Input` and
6
- * `Textarea` cannot drift apart.
7
- *
8
- * `@hanzogui/input` ships the opposite of both halves, and each failure hides
9
- * the other:
10
- *
11
- * - `focusVisibleStyle` draws `outline: 2px solid $outlineColor` at a 2px
12
- * offset. Tamagui emits that as `:root:root:root:root ._outlineWidth-…
13
- * :focus-visible { outline-width: 2px !important }`, which outranks any
14
- * plain stylesheet — a consumer's `outline: none` cannot win, and one did
15
- * try. Setting the width to 0 HERE is the only way to retract it, because
16
- * a prop replaces the variant's atomic class rather than competing with it.
17
- *
18
- * - `focusStyle` brightens to `$borderColorFocus`, which in this design
19
- * system resolves to the SAME value as `$borderColor`. So the cue that was
20
- * supposed to make the ring unnecessary rendered nothing at all, and the
21
- * ring was the only feedback a focused field had.
22
- *
23
- * `$color06` against a `$borderColor` rest is ~5:1, so the edge alone carries
24
- * the indicator (WCAG 2.4.13) and nothing else needs to be drawn.
25
- *
26
- * Spread BEFORE a component's own `...props`, so a call site can still say
27
- * otherwise.
28
- */
29
- declare const FOCUS: {
30
- readonly focusStyle: {
31
- readonly borderColor: "$color06";
32
- };
33
- readonly focusVisibleStyle: {
34
- readonly outlineWidth: 0;
35
- readonly outlineStyle: "none";
36
- };
37
- };
38
- export { FOCUS };
39
- //# sourceMappingURL=focus.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/focus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,QAAA,MAAM,KAAK;;;;;;;;CAGD,CAAA;AAEV,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -1,34 +0,0 @@
1
- 'use client';/**
2
- * How a text field says it has focus.
3
- *
4
- * A field already has an edge, so focus BRIGHTENS that edge — it never adds a
5
- * second shape around it. One rule, shared by every field, so `Input` and
6
- * `Textarea` cannot drift apart.
7
- *
8
- * `@hanzogui/input` ships the opposite of both halves, and each failure hides
9
- * the other:
10
- *
11
- * - `focusVisibleStyle` draws `outline: 2px solid $outlineColor` at a 2px
12
- * offset. Tamagui emits that as `:root:root:root:root ._outlineWidth-…
13
- * :focus-visible { outline-width: 2px !important }`, which outranks any
14
- * plain stylesheet — a consumer's `outline: none` cannot win, and one did
15
- * try. Setting the width to 0 HERE is the only way to retract it, because
16
- * a prop replaces the variant's atomic class rather than competing with it.
17
- *
18
- * - `focusStyle` brightens to `$borderColorFocus`, which in this design
19
- * system resolves to the SAME value as `$borderColor`. So the cue that was
20
- * supposed to make the ring unnecessary rendered nothing at all, and the
21
- * ring was the only feedback a focused field had.
22
- *
23
- * `$color06` against a `$borderColor` rest is ~5:1, so the edge alone carries
24
- * the indicator (WCAG 2.4.13) and nothing else needs to be drawn.
25
- *
26
- * Spread BEFORE a component's own `...props`, so a call site can still say
27
- * otherwise.
28
- */
29
- const FOCUS = {
30
- focusStyle: { borderColor: '$color06' },
31
- focusVisibleStyle: { outlineWidth: 0, outlineStyle: 'none' },
32
- };
33
- export { FOCUS };
34
- //# sourceMappingURL=focus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"focus.js","sourceRoot":"","sources":["../../../src/backends/gui/focus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;IACvC,iBAAiB,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE;CACpD,CAAA;AAEV,OAAO,EAAE,KAAK,EAAE,CAAA"}