@bigtablet/design-system 3.19.4 → 3.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -4254,6 +4254,7 @@ body:has(.bottom_nav) {
4254
4254
  right: 0;
4255
4255
  bottom: 0;
4256
4256
  left: 0;
4257
+ padding-right: var(--bt-scrollbar-width, 0px);
4257
4258
  background: var(--bt-color-bg-overlay);
4258
4259
  display: flex;
4259
4260
  align-items: center;
@@ -4529,7 +4530,7 @@ body:has(.bottom_nav) {
4529
4530
  .toast_container {
4530
4531
  position: fixed;
4531
4532
  top: 16px;
4532
- right: 16px;
4533
+ right: calc(16px + var(--bt-scrollbar-width, 0px));
4533
4534
  z-index: 200;
4534
4535
  display: flex;
4535
4536
  flex-direction: column;
@@ -4543,7 +4544,7 @@ body:has(.bottom_nav) {
4543
4544
  top: auto;
4544
4545
  bottom: calc(16px + var(--bt-bottom-inset, 0px));
4545
4546
  left: 16px;
4546
- right: 16px;
4547
+ right: calc(16px + var(--bt-scrollbar-width, 0px));
4547
4548
  width: auto;
4548
4549
  }
4549
4550
  }
@@ -6587,6 +6588,7 @@ body:has(.bottom_nav) {
6587
6588
  right: 0;
6588
6589
  bottom: 0;
6589
6590
  left: 0;
6591
+ padding-right: var(--bt-scrollbar-width, 0px);
6590
6592
  display: grid;
6591
6593
  grid-template-columns: minmax(0, 1fr);
6592
6594
  place-items: center;
package/dist/index.js CHANGED
@@ -76,45 +76,6 @@ var PREV_PADDING_RIGHT = "originalPaddingRight";
76
76
  var PREV_SCROLLBAR_WIDTH_VAR = "originalScrollbarWidthVar";
77
77
  var SCROLLBAR_WIDTH_VAR = "--bt-scrollbar-width";
78
78
  var LOCKED_ATTR = "data-bt-scroll-locked";
79
- var DIM_VAR = "--bt-color-bg-overlay";
80
- var DIM_FALLBACK = "rgba(0, 0, 0, 0.5)";
81
- var PREV_BACKGROUND_COLOR = "originalBackgroundColor";
82
- var WHITE = [255, 255, 255, 1];
83
- var parseRgb = (value) => {
84
- const match = value.trim().match(/^rgba?\(([^)]+)\)$/i);
85
- if (!match) return null;
86
- const parts = match[1].split(/[\s,/]+/).filter(Boolean).map(Number);
87
- if (parts.length < 3 || parts.some(Number.isNaN)) return null;
88
- return [parts[0], parts[1], parts[2], parts.length > 3 ? parts[3] : 1];
89
- };
90
- var normalizeColor = (value) => {
91
- const direct = parseRgb(value);
92
- if (direct) return direct;
93
- const probe = document.createElement("div");
94
- probe.style.cssText = "position:fixed;top:0;left:0;width:0;height:0;visibility:hidden";
95
- probe.style.color = value;
96
- document.documentElement.appendChild(probe);
97
- const computed = window.getComputedStyle(probe).color;
98
- probe.remove();
99
- return parseRgb(computed);
100
- };
101
- var over = (top, bottom) => [
102
- Math.round(top[0] * top[3] + bottom[0] * (1 - top[3])),
103
- Math.round(top[1] * top[3] + bottom[1] * (1 - top[3])),
104
- Math.round(top[2] * top[3] + bottom[2] * (1 - top[3])),
105
- 1
106
- ];
107
- var measureCanvasColors = (html, body) => {
108
- const raw = window.getComputedStyle(html).getPropertyValue(DIM_VAR).trim() || DIM_FALLBACK;
109
- const dim = normalizeColor(raw);
110
- if (!dim || dim[3] <= 0) return null;
111
- const candidates = [
112
- parseRgb(window.getComputedStyle(html).backgroundColor),
113
- parseRgb(window.getComputedStyle(body).backgroundColor)
114
- ];
115
- const base = candidates.find((color) => color !== null && color[3] > 0) ?? WHITE;
116
- return [dim, over(base, WHITE)];
117
- };
118
79
  var measureViewportInset = () => {
119
80
  const probe = document.createElement("div");
120
81
  probe.style.cssText = "position:fixed;top:0;left:0;right:0;height:0;visibility:hidden;pointer-events:none";
@@ -124,68 +85,39 @@ var measureViewportInset = () => {
124
85
  if (width <= 0) return 0;
125
86
  return Math.max(0, window.innerWidth - width);
126
87
  };
127
- var dimProgress = /* @__PURE__ */ new Map();
128
- var canvasBase = null;
129
- var canvasDim = null;
130
- var combinedDimAlpha = (alpha) => {
131
- if (dimProgress.size === 0) return alpha;
132
- let transmitted = 1;
133
- for (const progress of dimProgress.values()) {
134
- transmitted *= 1 - alpha * progress;
88
+ var restoreScrollbarWidthVar = (html, body) => {
89
+ const prev = body.dataset[PREV_SCROLLBAR_WIDTH_VAR];
90
+ if (prev) {
91
+ html.style.setProperty(SCROLLBAR_WIDTH_VAR, prev);
92
+ } else {
93
+ html.style.removeProperty(SCROLLBAR_WIDTH_VAR);
135
94
  }
136
- return 1 - transmitted;
137
95
  };
138
- var paintCanvas = (html) => {
139
- if (!canvasBase || !canvasDim) return;
140
- const alpha = combinedDimAlpha(canvasDim[3]);
141
- const [r, g, b] = over([canvasDim[0], canvasDim[1], canvasDim[2], alpha], canvasBase);
142
- html.style.backgroundColor = `rgb(${r}, ${g}, ${b})`;
143
- };
144
- function reportOverlayDim(owner, progress) {
145
- if (typeof document === "undefined") return;
146
- dimProgress.set(owner, Math.min(1, Math.max(0, progress)));
147
- paintCanvas(document.documentElement);
148
- }
149
- function unregisterOverlayDim(owner) {
150
- if (typeof document === "undefined") return;
151
- if (!dimProgress.delete(owner)) return;
152
- paintCanvas(document.documentElement);
153
- }
154
96
  function lockBodyScroll() {
155
97
  if (typeof document === "undefined") return;
156
98
  const body = document.body;
157
99
  const html = document.documentElement;
158
100
  const open = Number.parseInt(body.dataset[COUNTER] || "0", 10);
159
101
  if (open === 0) {
160
- const scrollbarWidth = measureViewportInset();
161
- const scroller = document.scrollingElement ?? html;
162
- const documentScrolls = scroller.scrollHeight > scroller.clientHeight;
163
- const canReserveGutter = typeof CSS !== "undefined" && typeof CSS.supports === "function" && CSS.supports("scrollbar-gutter: stable");
102
+ const inset = measureViewportInset();
164
103
  body.dataset[PREV_OVERFLOW] = body.style.overflow;
165
104
  body.dataset[PREV_GUTTER] = html.style.scrollbarGutter;
166
105
  body.dataset[PREV_PADDING_RIGHT] = body.style.paddingRight;
167
106
  body.dataset[PREV_SCROLLBAR_WIDTH_VAR] = html.style.getPropertyValue(SCROLLBAR_WIDTH_VAR);
168
- body.dataset[PREV_BACKGROUND_COLOR] = html.style.backgroundColor;
169
- if (scrollbarWidth > 0) {
170
- html.style.setProperty(SCROLLBAR_WIDTH_VAR, `${scrollbarWidth}px`);
107
+ if (inset > 0) {
108
+ html.style.setProperty(SCROLLBAR_WIDTH_VAR, `${inset}px`);
171
109
  }
172
- if (documentScrolls && scrollbarWidth > 0) {
173
- if (canReserveGutter) {
174
- html.style.scrollbarGutter = "stable";
175
- } else {
176
- const current = Number.parseFloat(window.getComputedStyle(body).paddingRight) || 0;
177
- body.style.paddingRight = `${current + scrollbarWidth}px`;
178
- }
179
- }
180
- if (scrollbarWidth > 0 && canReserveGutter) {
181
- const measured = measureCanvasColors(html, body);
182
- if (measured) {
183
- [canvasDim, canvasBase] = measured;
184
- paintCanvas(html);
110
+ body.style.overflow = "hidden";
111
+ if (inset > 0) {
112
+ html.style.scrollbarGutter = "auto";
113
+ const current = Number.parseFloat(window.getComputedStyle(body).paddingRight) || 0;
114
+ body.style.paddingRight = `${current + inset}px`;
115
+ if (measureViewportInset() > 0) {
116
+ body.style.paddingRight = body.dataset[PREV_PADDING_RIGHT] || "";
117
+ restoreScrollbarWidthVar(html, body);
185
118
  }
186
119
  }
187
120
  html.setAttribute(LOCKED_ATTR, "");
188
- body.style.overflow = "hidden";
189
121
  }
190
122
  body.dataset[COUNTER] = String(open + 1);
191
123
  }
@@ -198,23 +130,13 @@ function unlockBodyScroll() {
198
130
  body.style.overflow = body.dataset[PREV_OVERFLOW] || "";
199
131
  body.style.paddingRight = body.dataset[PREV_PADDING_RIGHT] || "";
200
132
  html.style.scrollbarGutter = body.dataset[PREV_GUTTER] || "";
201
- html.style.backgroundColor = body.dataset[PREV_BACKGROUND_COLOR] || "";
202
133
  html.removeAttribute(LOCKED_ATTR);
203
- const prevVar = body.dataset[PREV_SCROLLBAR_WIDTH_VAR];
204
- if (prevVar) {
205
- html.style.setProperty(SCROLLBAR_WIDTH_VAR, prevVar);
206
- } else {
207
- html.style.removeProperty(SCROLLBAR_WIDTH_VAR);
208
- }
134
+ restoreScrollbarWidthVar(html, body);
209
135
  delete body.dataset[COUNTER];
210
136
  delete body.dataset[PREV_OVERFLOW];
211
137
  delete body.dataset[PREV_GUTTER];
212
138
  delete body.dataset[PREV_PADDING_RIGHT];
213
139
  delete body.dataset[PREV_SCROLLBAR_WIDTH_VAR];
214
- delete body.dataset[PREV_BACKGROUND_COLOR];
215
- dimProgress.clear();
216
- canvasBase = null;
217
- canvasDim = null;
218
140
  } else {
219
141
  body.dataset[COUNTER] = String(remaining);
220
142
  }
@@ -3908,13 +3830,11 @@ var AlertModal = ({
3908
3830
  useOverlayEscape(isOpen, () => dismiss());
3909
3831
  if (isOpen && !shouldRender) setShouldRender(true);
3910
3832
  const reduced = useReducedMotion();
3911
- const dimOwner = React11.useRef({}).current;
3912
3833
  const overlayStyle = useSpring({
3913
3834
  ...springEnterFrom(reduced),
3914
3835
  to: { opacity: isOpen ? 1 : 0 },
3915
3836
  immediate: reduced,
3916
3837
  config: OVERLAY_SPRING_CONFIG,
3917
- onChange: (result) => reportOverlayDim(dimOwner, Number(result.value.opacity)),
3918
3838
  onRest: (result) => {
3919
3839
  if (!isOpen && result.finished) setShouldRender(false);
3920
3840
  }
@@ -3930,11 +3850,9 @@ var AlertModal = ({
3930
3850
  });
3931
3851
  React11.useEffect(() => {
3932
3852
  if (!shouldRender) return;
3933
- reportOverlayDim(dimOwner, reduced ? 1 : 0);
3934
3853
  lockBodyScroll();
3935
3854
  return () => {
3936
3855
  unlockBodyScroll();
3937
- unregisterOverlayDim(dimOwner);
3938
3856
  };
3939
3857
  }, [shouldRender]);
3940
3858
  if (!isOpen && !shouldRender) return null;
@@ -4540,12 +4458,13 @@ var Dropdown = (props) => {
4540
4458
  );
4541
4459
  const fieldsetClassName = cn("dropdown_fieldset", { is_open: isOpen, is_disabled: disabled });
4542
4460
  const listClassName = cn("dropdown_list", { dropdown_list_up: dropUp });
4461
+ const labelledBy = label ? `${dropdownId}_label` : field?.labelId;
4543
4462
  const listStyle = useSpringPresence({
4544
4463
  visible: isOpen,
4545
4464
  from: dropUp ? "translateY(4px)" : "translateY(-4px)"
4546
4465
  });
4547
4466
  return /* @__PURE__ */ jsxs("div", { ref: wrapperRef, className: rootClassName, children: [
4548
- label && /* @__PURE__ */ jsx("label", { htmlFor: dropdownId, className: "dropdown_label", children: label }),
4467
+ label && /* @__PURE__ */ jsx("label", { id: `${dropdownId}_label`, htmlFor: dropdownId, className: "dropdown_label", children: label }),
4549
4468
  /* @__PURE__ */ jsx("div", { className: fieldsetClassName, children: /* @__PURE__ */ jsxs(
4550
4469
  "button",
4551
4470
  {
@@ -4553,16 +4472,27 @@ var Dropdown = (props) => {
4553
4472
  id: dropdownId,
4554
4473
  type: "button",
4555
4474
  className: cn("dropdown_control", { is_disabled: disabled }),
4475
+ role: "combobox",
4476
+ "aria-labelledby": [labelledBy, `${dropdownId}_value`].filter(Boolean).join(" "),
4556
4477
  "aria-haspopup": "listbox",
4557
4478
  "aria-expanded": isOpen,
4479
+ "aria-activedescendant": !searchable && isOpen && activeIndex >= 0 && visibleOptions[activeIndex] ? `${dropdownId}_option_${activeIndex}` : void 0,
4558
4480
  "aria-describedby": field?.describedBy,
4559
4481
  "aria-invalid": field?.invalid || void 0,
4482
+ "aria-required": field?.required || void 0,
4560
4483
  "aria-controls": isOpen ? `${dropdownId}_listbox` : void 0,
4561
4484
  onClick: () => !disabled && setIsOpen((o) => !o),
4562
4485
  onKeyDown: onControlKeyDown,
4563
4486
  disabled,
4564
4487
  children: [
4565
- /* @__PURE__ */ jsx("span", { className: showValue ? "dropdown_value" : "dropdown_placeholder", children: controlText }),
4488
+ /* @__PURE__ */ jsx(
4489
+ "span",
4490
+ {
4491
+ id: `${dropdownId}_value`,
4492
+ className: showValue ? "dropdown_value" : "dropdown_placeholder",
4493
+ children: controlText
4494
+ }
4495
+ ),
4566
4496
  /* @__PURE__ */ jsx("span", { className: cn("dropdown_icon", { dropdown_icon_open: isOpen }), "aria-hidden": "true", children: /* @__PURE__ */ jsx(ChevronDown, { size: iconSize.lg }) })
4567
4497
  ]
4568
4498
  }
@@ -4609,6 +4539,7 @@ var Dropdown = (props) => {
4609
4539
  role: "combobox",
4610
4540
  "aria-autocomplete": "list",
4611
4541
  "aria-expanded": isOpen,
4542
+ "aria-required": field?.required || void 0,
4612
4543
  "aria-controls": `${dropdownId}_listbox`,
4613
4544
  "aria-activedescendant": activeIndex >= 0 && visibleOptions[activeIndex] ? `${dropdownId}_option_${activeIndex}` : void 0,
4614
4545
  value: searchText,
@@ -6177,11 +6108,9 @@ var Drawer = ({
6177
6108
  if (escapeDismissible) onClose?.();
6178
6109
  });
6179
6110
  if (open && !shouldRender) setShouldRender(true);
6180
- const dimOwner = React11.useRef({}).current;
6181
6111
  const overlayStyle = useSpringPresence({
6182
6112
  visible: open,
6183
6113
  from: "translateY(0px)",
6184
- onProgress: (progress) => reportOverlayDim(dimOwner, progress),
6185
6114
  onExitComplete: () => {
6186
6115
  setShouldRender(false);
6187
6116
  onExited?.();
@@ -6197,11 +6126,9 @@ var Drawer = ({
6197
6126
  });
6198
6127
  React11.useEffect(() => {
6199
6128
  if (!shouldRender) return;
6200
- reportOverlayDim(dimOwner, reduced ? 1 : 0);
6201
6129
  lockBodyScroll();
6202
6130
  return () => {
6203
6131
  unlockBodyScroll();
6204
- unregisterOverlayDim(dimOwner);
6205
6132
  };
6206
6133
  }, [shouldRender]);
6207
6134
  if (!open && !shouldRender) return null;
@@ -6291,13 +6218,11 @@ var Modal = ({
6291
6218
  });
6292
6219
  if (open && !shouldRender) setShouldRender(true);
6293
6220
  const reduced = useReducedMotion();
6294
- const dimOwner = React11.useRef({}).current;
6295
6221
  const overlayStyle = useSpring({
6296
6222
  ...springEnterFrom(reduced),
6297
6223
  to: { opacity: open ? 1 : 0 },
6298
6224
  immediate: reduced,
6299
6225
  config: OVERLAY_SPRING_CONFIG,
6300
- onChange: (result) => reportOverlayDim(dimOwner, Number(result.value.opacity)),
6301
6226
  onRest: (result) => {
6302
6227
  if (open || !result.finished) return;
6303
6228
  setShouldRender(false);
@@ -6315,11 +6240,9 @@ var Modal = ({
6315
6240
  });
6316
6241
  React11.useEffect(() => {
6317
6242
  if (!shouldRender) return;
6318
- reportOverlayDim(dimOwner, reduced ? 1 : 0);
6319
6243
  lockBodyScroll();
6320
6244
  return () => {
6321
6245
  unlockBodyScroll();
6322
- unregisterOverlayDim(dimOwner);
6323
6246
  };
6324
6247
  }, [shouldRender]);
6325
6248
  if (!open && !shouldRender) return null;
@@ -4,4 +4,4 @@
4
4
  *
5
5
  * @license Bigtablet Inc. Open Source License - see LICENSE at the repo root
6
6
  * (https://github.com/Bigtablet/.github/blob/main/BIGTABLET_LICENSE.md)
7
- */@keyframes skeleton_loading{0%{background-position:100% 0}100%{background-position:0 0}}:root{--bt-color-brand-primary: #121212;--bt-color-brand-on-primary: #FFFFFF;--bt-color-brand-primary-container: rgba(0, 0, 0, 0.05);--bt-color-text-heading: #121212;--bt-color-text-body: #666666;--bt-color-text-caption: #6F6F6F;--bt-color-text-brand: #121212;--bt-color-text-inverse: #FFFFFF;--bt-color-text-disabled: rgba(26, 26, 26, 0.38);--bt-color-bg-solid: #FFFFFF;--bt-color-bg-solid-dim: #F4F4F4;--bt-color-bg-additive: rgba(0, 0, 0, 0.05);--bt-color-bg-disabled: rgba(26, 26, 26, 0.12);--bt-color-bg-overlay: rgba(0, 0, 0, 0.5);--bt-color-bg-inverse-surface: #333333;--bt-color-state-hover-on-light: rgba(0, 0, 0, 0.05);--bt-color-state-pressed-on-light: rgba(26, 26, 26, 0.12);--bt-color-state-focus-on-light: rgba(0, 0, 0, 0.08);--bt-color-state-hover-on-dark: rgba(255, 255, 255, 0.05);--bt-color-state-pressed-on-dark: rgba(255, 255, 255, 0.12);--bt-color-state-focus-on-dark: rgba(255, 255, 255, 0.08);--bt-color-border-default: #E5E5E5;--bt-color-border-hover: #B3B3B3;--bt-color-border-subtle: rgba(0, 0, 0, 0.08);--bt-color-border-focus: #121212;--bt-color-border-disabled: #F2F2F2;--bt-color-status-error: #B91C1C;--bt-color-status-success: #047857;--bt-color-status-warning: #B45309;--bt-color-status-info: #1D4ED8;--bt-color-status-error-on-default: #FFFFFF;--bt-color-status-success-on-default: #FFFFFF;--bt-color-status-warning-on-default: #FFFFFF;--bt-color-status-info-on-default: #FFFFFF;--bt-color-status-error-container: #FEE2E2;--bt-color-status-success-container: #DCFCE7;--bt-color-status-warning-container: #FEF3C7;--bt-color-status-info-container: #DBEAFE;--bt-color-status-error-on-container: #B91C1C;--bt-color-status-success-on-container: #047857;--bt-color-status-warning-on-container: #B45309;--bt-color-status-info-on-container: #1D4ED8;--bt-color-status-error-on-surface: #B91C1C;--bt-color-status-success-on-surface: #047857;--bt-color-status-warning-on-surface: #B45309;--bt-color-status-info-on-surface: #1D4ED8;--bt-color-accent-subtle: rgba(0, 0, 0, 0.05);--bt-color-accent-muted: rgba(26, 26, 26, 0.12);--bt-color-accent-light: #B3B3B3;--bt-color-accent-default: #121212;--bt-color-accent-strong: #121212;--bt-color-accent-on-surface: #FFFFFF;--bt-color-skeleton-base: #F3F3F3;--bt-color-skeleton-wave: #F0F0F0;--bt-color-skeleton-highlight: #FAFAFA;--bt-focus-ring: 0 0 0 3px rgba(0, 0, 0, 0.15);--bt-focus-ring-error: 0 0 0 3px rgba(239, 68, 68, 0.30);--bt-focus-ring-success: 0 0 0 3px rgba(16, 185, 129, 0.30);--bt-elevation-level1: 0 1px 1px -1px rgba(0, 0, 0, 0.20), 0 3px 3px 0px rgba(0, 0, 0, 0.12);--bt-elevation-level2: 0 2px 2px -2px rgba(0, 0, 0, 0.20), 0 6px 6px 0px rgba(0, 0, 0, 0.12);--bt-elevation-level3: 0 3px 3px -3px rgba(0, 0, 0, 0.20), 0 9px 9px 0px rgba(0, 0, 0, 0.12);--bt-elevation-level4: 0 5px 5px -5px rgba(0, 0, 0, 0.20), 0 15px 15px 0px rgba(0, 0, 0, 0.12);--bt-elevation-level5: 0 8px 10px -5px rgba(0, 0, 0, 0.20), 0 20px 20px 0px rgba(0, 0, 0, 0.12);--bt-bottom-nav-inset: 0px;--bt-sidebar-inset: 0px;--bt-bottom-inset-app: 0px;--bt-z-content: 10;--bt-z-chrome: 100;--bt-z-app-chrome: 150;--bt-z-notification: 200;--bt-z-loading: 500;--bt-z-popup: 1000}body{--bt-bottom-inset: calc( var(--bt-bottom-nav-inset, 0px) + var(--bt-sidebar-inset, 0px) + var(--bt-bottom-inset-app, 0px) )}:root{--bt-scrollbar-width: 0px}[data-theme=dark]{color-scheme:dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bt-color-text-heading: rgba(255, 255, 255, 0.95);--bt-color-text-body: #B3B3B3;--bt-color-text-caption: #808080;--bt-color-text-inverse: #121212;--bt-color-text-disabled: rgba(255, 255, 255, 0.38);--bt-color-bg-solid: #0A0A0A;--bt-color-bg-solid-dim: #141414;--bt-color-bg-additive: rgba(255, 255, 255, 0.05);--bt-color-bg-disabled: rgba(255, 255, 255, 0.12);--bt-color-bg-overlay: rgba(0, 0, 0, 0.7);--bt-color-bg-inverse-surface: #F4F4F4;--bt-color-state-hover-on-light: rgba(255, 255, 255, 0.08);--bt-color-state-pressed-on-light: rgba(255, 255, 255, 0.12);--bt-color-state-focus-on-light: rgba(255, 255, 255, 0.12);--bt-color-state-hover-on-dark: rgba(0, 0, 0, 0.08);--bt-color-state-pressed-on-dark: rgba(26, 26, 26, 0.12);--bt-color-state-focus-on-dark: rgba(26, 26, 26, 0.12);--bt-color-border-default: #333333;--bt-color-border-hover: #777777;--bt-color-border-subtle: rgba(255, 255, 255, 0.12);--bt-color-border-focus: #FFFFFF;--bt-color-border-disabled: #141414;--bt-color-brand-primary-container: rgba(255, 255, 255, 0.08);--bt-color-accent-subtle: rgba(255, 255, 255, 0.08);--bt-color-accent-muted: rgba(255, 255, 255, 0.12);--bt-color-accent-light: #999999;--bt-color-accent-default: #FFFFFF;--bt-color-accent-strong: #FFFFFF;--bt-color-accent-on-surface: #121212;--bt-color-status-error-container: rgba(127, 29, 29, 0.35);--bt-color-status-success-container: rgba(6, 78, 59, 0.35);--bt-color-status-warning-container: rgba(120, 53, 15, 0.35);--bt-color-status-info-container: rgba(30, 58, 138, 0.35);--bt-color-status-error-on-container: #FCA5A5;--bt-color-status-success-on-container: #86EFAC;--bt-color-status-warning-on-container: #FCD34D;--bt-color-status-info-on-container: #93C5FD;--bt-color-status-error-on-surface: #F87171;--bt-color-status-success-on-surface: #4ADE80;--bt-color-status-warning-on-surface: #FBBF24;--bt-color-status-info-on-surface: #60A5FA;--bt-color-skeleton-base: #333333;--bt-color-skeleton-wave: #333333;--bt-color-skeleton-highlight: #666666;--bt-focus-ring: 0 0 0 3px rgba(255, 255, 255, 0.35);--bt-focus-ring-error: 0 0 0 3px rgba(239, 68, 68, 0.45);--bt-focus-ring-success: 0 0 0 3px rgba(16, 185, 129, 0.45);--bt-elevation-level1: 0 1px 2px 0 rgba(0, 0, 0, 0.45), 0 3px 6px 0 rgba(0, 0, 0, 0.30);--bt-elevation-level2: 0 2px 4px 0 rgba(0, 0, 0, 0.45), 0 6px 12px 0 rgba(0, 0, 0, 0.30);--bt-elevation-level3: 0 3px 6px 0 rgba(0, 0, 0, 0.50), 0 9px 18px 0 rgba(0, 0, 0, 0.35);--bt-elevation-level4: 0 5px 10px 0 rgba(0, 0, 0, 0.55), 0 15px 30px 0 rgba(0, 0, 0, 0.40);--bt-elevation-level5: 0 8px 16px 0 rgba(0, 0, 0, 0.60), 0 20px 40px 0 rgba(0, 0, 0, 0.45)}@media(prefers-color-scheme: dark){:root:not([data-theme]){color-scheme:dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bt-color-text-heading: rgba(255, 255, 255, 0.95);--bt-color-text-body: #B3B3B3;--bt-color-text-caption: #808080;--bt-color-text-inverse: #121212;--bt-color-text-disabled: rgba(255, 255, 255, 0.38);--bt-color-bg-solid: #0A0A0A;--bt-color-bg-solid-dim: #141414;--bt-color-bg-additive: rgba(255, 255, 255, 0.05);--bt-color-bg-disabled: rgba(255, 255, 255, 0.12);--bt-color-bg-overlay: rgba(0, 0, 0, 0.7);--bt-color-bg-inverse-surface: #F4F4F4;--bt-color-state-hover-on-light: rgba(255, 255, 255, 0.08);--bt-color-state-pressed-on-light: rgba(255, 255, 255, 0.12);--bt-color-state-focus-on-light: rgba(255, 255, 255, 0.12);--bt-color-state-hover-on-dark: rgba(0, 0, 0, 0.08);--bt-color-state-pressed-on-dark: rgba(26, 26, 26, 0.12);--bt-color-state-focus-on-dark: rgba(26, 26, 26, 0.12);--bt-color-border-default: #333333;--bt-color-border-hover: #777777;--bt-color-border-subtle: rgba(255, 255, 255, 0.12);--bt-color-border-focus: #FFFFFF;--bt-color-border-disabled: #141414;--bt-color-brand-primary-container: rgba(255, 255, 255, 0.08);--bt-color-accent-subtle: rgba(255, 255, 255, 0.08);--bt-color-accent-muted: rgba(255, 255, 255, 0.12);--bt-color-accent-light: #999999;--bt-color-accent-default: #FFFFFF;--bt-color-accent-strong: #FFFFFF;--bt-color-accent-on-surface: #121212;--bt-color-status-error-container: rgba(127, 29, 29, 0.35);--bt-color-status-success-container: rgba(6, 78, 59, 0.35);--bt-color-status-warning-container: rgba(120, 53, 15, 0.35);--bt-color-status-info-container: rgba(30, 58, 138, 0.35);--bt-color-status-error-on-container: #FCA5A5;--bt-color-status-success-on-container: #86EFAC;--bt-color-status-warning-on-container: #FCD34D;--bt-color-status-info-on-container: #93C5FD;--bt-color-status-error-on-surface: #F87171;--bt-color-status-success-on-surface: #4ADE80;--bt-color-status-warning-on-surface: #FBBF24;--bt-color-status-info-on-surface: #60A5FA;--bt-color-skeleton-base: #333333;--bt-color-skeleton-wave: #333333;--bt-color-skeleton-highlight: #666666;--bt-focus-ring: 0 0 0 3px rgba(255, 255, 255, 0.35);--bt-focus-ring-error: 0 0 0 3px rgba(239, 68, 68, 0.45);--bt-focus-ring-success: 0 0 0 3px rgba(16, 185, 129, 0.45);--bt-elevation-level1: 0 1px 2px 0 rgba(0, 0, 0, 0.45), 0 3px 6px 0 rgba(0, 0, 0, 0.30);--bt-elevation-level2: 0 2px 4px 0 rgba(0, 0, 0, 0.45), 0 6px 12px 0 rgba(0, 0, 0, 0.30);--bt-elevation-level3: 0 3px 6px 0 rgba(0, 0, 0, 0.50), 0 9px 18px 0 rgba(0, 0, 0, 0.35);--bt-elevation-level4: 0 5px 10px 0 rgba(0, 0, 0, 0.55), 0 15px 30px 0 rgba(0, 0, 0, 0.40);--bt-elevation-level5: 0 8px 16px 0 rgba(0, 0, 0, 0.60), 0 20px 40px 0 rgba(0, 0, 0, 0.45)}}:root{--bt-color-primary: var(--bt-color-brand-primary);--bt-color-on-primary: var(--bt-color-brand-on-primary);--bt-color-accent: var(--bt-color-accent-default);--bt-color-primary-container: var(--bt-color-brand-primary-container);--bt-color-background: var(--bt-color-bg-solid);--bt-color-background-dim: var(--bt-color-bg-solid-dim);--bt-color-background-overlay: var(--bt-color-bg-overlay);--bt-color-border: var(--bt-color-border-default);--bt-color-text-primary: var(--bt-color-text-heading);--bt-color-text-secondary: var(--bt-color-text-body);--bt-color-text-tertiary: var(--bt-color-text-caption);--bt-color-background-secondary: var(--bt-color-background-dim);--bt-color-border-light: var(--bt-color-border-hover);--bt-color-hover: var(--bt-color-state-hover-on-light);--bt-color-hover-on-dark: var(--bt-color-state-hover-on-dark);--bt-color-pressed: var(--bt-color-state-pressed-on-light);--bt-color-primary-hover: #333333;--bt-color-overlay: var(--bt-color-bg-overlay);--bt-color-success: var(--bt-color-status-success);--bt-color-error: var(--bt-color-status-error);--bt-color-error-text: var(--bt-color-status-error-on-surface);--bt-color-success-text: var(--bt-color-status-success-on-surface);--bt-color-warning-text: var(--bt-color-status-warning-on-surface);--bt-color-info-text: var(--bt-color-status-info-on-surface);--bt-color-warning: var(--bt-color-status-warning);--bt-color-info: var(--bt-color-status-info);--bt-spacing-4: 4px;--bt-spacing-8: 8px;--bt-spacing-12: 12px;--bt-spacing-16: 16px;--bt-spacing-20: 20px;--bt-spacing-24: 24px;--bt-spacing-32: 32px;--bt-spacing-40: 40px;--bt-spacing-48: 48px;--bt-spacing-xs: var(--bt-spacing-4);--bt-spacing-sm: var(--bt-spacing-8);--bt-spacing-md: var(--bt-spacing-12);--bt-spacing-lg: var(--bt-spacing-16);--bt-spacing-xl: var(--bt-spacing-20);--bt-spacing-2xl: var(--bt-spacing-24);--bt-spacing-3xl: var(--bt-spacing-32);--bt-font-family: Pretendard, sans-serif;--bt-font-size-12: 12px;--bt-font-size-14: 14px;--bt-font-size-15: 15px;--bt-font-size-16: 16px;--bt-font-size-18: 18px;--bt-font-size-20: 20px;--bt-font-weight-regular: 400;--bt-font-weight-medium: 500;--bt-font-weight-semibold: 600;--bt-line-height-20: 20px;--bt-line-height-24: 24px;--bt-font-size-sm: var(--bt-font-size-14);--bt-font-size-base: var(--bt-font-size-15);--bt-font-size-md: var(--bt-font-size-16);--bt-font-size-lg: var(--bt-font-size-18);--bt-font-size-xl: var(--bt-font-size-20);--bt-line-height-normal: 1.5;--bt-radius-none: 0px;--bt-radius-xs: 4px;--bt-radius-sm: 6px;--bt-radius-md: 8px;--bt-radius-lg: 12px;--bt-radius-xl: 16px;--bt-radius-full: 9999px;--bt-elevation-1: var(--bt-elevation-level1);--bt-elevation-2: var(--bt-elevation-level2);--bt-elevation-3: var(--bt-elevation-level3);--bt-elevation-4: var(--bt-elevation-level4);--bt-elevation-5: var(--bt-elevation-level5);--bt-transition-fast: 0.1s ease-in-out;--bt-transition-base: 0.2s ease-in-out;--bt-transition-slow: 0.3s ease-in-out;--bt-z-modal: var(--bt-z-chrome);--bt-z-toast: var(--bt-z-notification)}.bt-button{display:inline-flex;align-items:center;justify-content:center;overflow-wrap:anywhere;word-break:keep-all;gap:var(--bt-spacing-sm);border-radius:var(--bt-radius-full);border:none;cursor:pointer;font-family:var(--bt-font-family);font-weight:var(--bt-font-weight-medium);transition:background var(--bt-transition-base),color var(--bt-transition-base),opacity var(--bt-transition-base),box-shadow var(--bt-transition-base),transform var(--bt-transition-base)}.bt-button:disabled{cursor:not-allowed;opacity:.6}.bt-button--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-button--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-button--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-button--xl{padding:var(--bt-spacing-xl) var(--bt-spacing-3xl);font-size:var(--bt-font-size-lg)}.bt-button--filled{background:var(--bt-color-accent);color:var(--bt-color-accent-on-surface)}.bt-button--filled:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-accent) 88%, var(--bt-color-accent-on-surface))}.bt-button--filled:active:not(:disabled){transform:scale(0.98)}.bt-button--tonal{background:var(--bt-color-primary-container);color:var(--bt-color-text-primary)}.bt-button--tonal:hover:not(:disabled){background-image:linear-gradient(var(--bt-color-hover), var(--bt-color-hover))}.bt-button--tonal:active:not(:disabled){background-image:linear-gradient(var(--bt-color-pressed), var(--bt-color-pressed));transform:scale(0.98)}.bt-button--outline{background:rgba(0,0,0,0);border:1px solid var(--bt-color-border);color:var(--bt-color-text-primary)}.bt-button--outline:hover:not(:disabled){background:var(--bt-color-background-secondary)}.bt-button--outline:active:not(:disabled){transform:scale(0.98)}.bt-button--text{background:rgba(0,0,0,0);color:var(--bt-color-text-primary)}.bt-button--text:hover:not(:disabled){background:var(--bt-color-hover)}.bt-button--text:active:not(:disabled){transform:scale(0.96)}.bt-button--danger{background:var(--bt-color-error);color:var(--bt-color-on-primary)}.bt-button--danger:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-error) 88%, #000)}.bt-button--danger:active:not(:disabled){transform:scale(0.98)}.bt-button--radius-none{border-radius:var(--bt-radius-none)}.bt-button--radius-xs{border-radius:var(--bt-radius-xs)}.bt-button--radius-sm{border-radius:var(--bt-radius-sm)}.bt-button--radius-md{border-radius:var(--bt-radius-md)}.bt-button--radius-lg{border-radius:var(--bt-radius-lg)}.bt-button--radius-xl{border-radius:var(--bt-radius-xl)}.bt-button--radius-full{border-radius:var(--bt-radius-full)}.bt-button--full-width{width:100%}.bt-button--danger.bt-button--outline{background:rgba(0,0,0,0);border-color:var(--bt-color-error);color:var(--bt-color-error-text)}.bt-button--danger.bt-button--outline:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-error) 8%, transparent)}.bt-button--danger.bt-button--tonal{background:color-mix(in srgb, var(--bt-color-error) 12%, transparent);color:var(--bt-color-error-text)}.bt-button--danger.bt-button--tonal:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-error) 18%, transparent)}.bt-button--danger.bt-button--text{background:rgba(0,0,0,0);color:var(--bt-color-error-text)}.bt-button--danger.bt-button--text:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-error) 8%, transparent)}.bt-text-field{display:flex;flex-direction:column}.bt-text-field--full-width{width:100%}.bt-text-field__label{margin-bottom:var(--bt-spacing-xs);color:var(--bt-color-text-primary);font-size:var(--bt-font-size-sm);font-weight:var(--bt-font-weight-medium);line-height:var(--bt-line-height-normal)}.bt-text-field__wrap{position:relative;display:inline-flex;width:100%;align-items:center}.bt-text-field__input{width:100%;border-radius:var(--bt-radius-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary);background:var(--bt-color-background);transition:border-color var(--bt-transition-base),box-shadow var(--bt-transition-base),background var(--bt-transition-base)}.bt-text-field__input::placeholder{color:var(--bt-color-text-tertiary)}.bt-text-field__input:disabled{cursor:not-allowed;background:var(--bt-color-background-secondary);color:var(--bt-color-text-tertiary);opacity:.7}.bt-text-field__input--outline{border:1px solid var(--bt-color-border)}.bt-text-field__input--outline:hover:not(:disabled){border-color:var(--bt-color-border-light)}.bt-text-field__input--outline:focus-visible{outline:none;border-color:var(--bt-color-accent);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-text-field__input--filled{background:var(--bt-color-background-secondary);border:1px solid rgba(0,0,0,0)}.bt-text-field__input--filled:focus-visible{outline:none;border-color:var(--bt-color-accent);background:var(--bt-color-background);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-text-field__input--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-text-field__input--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-text-field__input--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-text-field__input--error{border-color:var(--bt-color-error) !important;box-shadow:0 0 0 3px rgba(239,68,68,.15) !important}.bt-text-field__input--success{border-color:var(--bt-color-success) !important;box-shadow:0 0 0 3px rgba(16,185,129,.15) !important}.bt-text-field__input--identifier{font-feature-settings:"cv05" 1,"cv08" 1;font-variant-numeric:slashed-zero}.bt-text-field__helper{margin-top:var(--bt-spacing-xs);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-secondary)}.bt-text-field__helper--error{color:var(--bt-color-error-text)}.bt-text-field__helper--success{color:var(--bt-color-success-text)}.bt-text-field__icon{position:absolute;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;color:var(--bt-color-text-secondary)}.bt-text-field__icon--left{left:var(--bt-spacing-md)}.bt-text-field__icon--right{right:var(--bt-spacing-md)}.bt-checkbox{display:inline-flex;align-items:center;gap:var(--bt-spacing-sm);cursor:pointer;user-select:none;position:relative}.bt-checkbox__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.bt-checkbox__box{width:1.125rem;height:1.125rem;box-sizing:border-box;border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-sm);background:var(--bt-color-background);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base);display:inline-block;position:relative}.bt-checkbox__label{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-checkbox--sm .bt-checkbox__box{width:1rem;height:1rem}.bt-checkbox--sm .bt-checkbox__label{font-size:var(--bt-font-size-sm)}.bt-checkbox--lg .bt-checkbox__box{width:1.25rem;height:1.25rem}.bt-checkbox--lg .bt-checkbox__label{font-size:var(--bt-font-size-md)}.bt-checkbox__input:focus-visible+.bt-checkbox__box{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-accent)}.bt-checkbox__input:disabled+.bt-checkbox__box,.bt-checkbox__input:disabled~.bt-checkbox__label{opacity:.6;cursor:not-allowed}.bt-checkbox__input:checked+.bt-checkbox__box{background:var(--bt-color-accent);border-color:var(--bt-color-accent)}.bt-checkbox__input:checked+.bt-checkbox__box::after{content:"";position:absolute;left:50%;top:50%;width:.28rem;height:.55rem;border:2px solid var(--bt-color-accent-on-surface);border-top:0;border-left:0;transform:translate(-50%, -58%) rotate(45deg)}.bt-radio{position:relative;display:inline-flex;align-items:center;gap:var(--bt-spacing-sm);cursor:pointer;user-select:none}.bt-radio__input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;margin:0}.bt-radio__dot{width:1.125rem;height:1.125rem;box-sizing:border-box;border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-full);background:var(--bt-color-background);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base);position:relative;display:inline-block}.bt-radio__label{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-radio--sm .bt-radio__dot{width:1rem;height:1rem}.bt-radio--sm .bt-radio__label{font-size:var(--bt-font-size-sm)}.bt-radio--lg .bt-radio__dot{width:1.25rem;height:1.25rem}.bt-radio--lg .bt-radio__label{font-size:var(--bt-font-size-md)}.bt-radio__input:focus-visible+.bt-radio__dot{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-accent)}.bt-radio__input:checked+.bt-radio__dot{border-color:var(--bt-color-accent);border-width:2px}.bt-radio__input:checked+.bt-radio__dot::after{content:"";position:absolute;left:50%;top:50%;width:60%;height:60%;transform:translate(-50%, -50%);background:var(--bt-color-accent);border-radius:9999px}.bt-radio__input:disabled+.bt-radio__dot,.bt-radio__input:disabled~.bt-radio__label{opacity:.6;cursor:not-allowed}.bt-toggle{position:relative;display:inline-flex;align-items:center;width:40px;height:24px;padding:2px;border-radius:var(--bt-radius-full);background:var(--bt-color-border-light);transition:background var(--bt-transition-base);cursor:pointer;border:none}.bt-toggle::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:100%;height:32px}@media(max-width: 599px){.bt-toggle::after{height:40px}}.bt-toggle__thumb{width:12px;height:12px;background:var(--bt-color-background);border-radius:var(--bt-radius-full);transition:transform var(--bt-transition-base),width var(--bt-transition-base),height var(--bt-transition-base);transform:translateX(0)}.bt-toggle--on{background:var(--bt-color-accent)}.bt-toggle--on .bt-toggle__thumb{width:20px;height:20px;background:var(--bt-color-accent-on-surface);transform:translateX(16px)}.bt-toggle--sm{width:40px;height:24px}.bt-toggle--md{width:48px;height:28px}.bt-toggle--md .bt-toggle__thumb{width:16px;height:16px}.bt-toggle--md.bt-toggle--on .bt-toggle__thumb{width:24px;height:24px;transform:translateX(20px)}.bt-toggle:disabled{cursor:not-allowed;background:var(--bt-color-border-light)}.bt-toggle:disabled .bt-toggle__thumb{background:#fff}.bt-dropdown{position:relative;display:inline-flex;flex-direction:column;width:100%;gap:var(--bt-spacing-xs);font-family:var(--bt-font-family)}.bt-dropdown__label{font-size:var(--bt-font-size-sm);font-weight:var(--bt-font-weight-medium);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-dropdown__control{width:100%;display:inline-flex;align-items:center;justify-content:space-between;gap:var(--bt-spacing-sm);cursor:pointer;color:var(--bt-color-text-primary);background:var(--bt-color-background);border-radius:var(--bt-radius-md);transition:border-color var(--bt-transition-base),box-shadow var(--bt-transition-base),background var(--bt-transition-base);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);border:none;text-align:left}.bt-dropdown__control:disabled,.bt-dropdown__control.is-disabled{cursor:not-allowed;opacity:.7;background:var(--bt-color-background-secondary);color:var(--bt-color-text-tertiary)}.bt-dropdown__control--outline{border:1px solid var(--bt-color-border)}.bt-dropdown__control--outline:hover:not(.is-disabled){border-color:var(--bt-color-border-light)}.bt-dropdown__control--outline.is-open{border-color:var(--bt-color-accent);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-dropdown__control--filled{background:var(--bt-color-background-secondary);border:1px solid rgba(0,0,0,0)}.bt-dropdown__control--filled.is-open{background:var(--bt-color-background);border-color:var(--bt-color-accent);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-dropdown__control--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-dropdown__control--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-dropdown__control--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-dropdown__value{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bt-dropdown__placeholder{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--bt-color-text-tertiary)}.bt-dropdown__icon{display:inline-flex;align-items:center;justify-content:center;color:var(--bt-color-text-secondary);transition:transform var(--bt-transition-base)}.bt-dropdown__icon.is-open{transform:rotate(180deg)}.bt-dropdown__list{display:none;position:fixed;z-index:var(--bt-z-popup);box-sizing:border-box;width:max-content;background:var(--bt-color-background);border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-md);box-shadow:var(--bt-elevation-2);max-height:18rem;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--bt-color-border-light) rgba(0,0,0,0);padding:var(--bt-spacing-xs) 0;list-style:none;margin:0}.bt-dropdown__list:has(>.bt-dropdown__options){max-height:none;overflow:hidden;padding:0}.bt-dropdown__search{contain:inline-size;display:flex;align-items:center;gap:var(--bt-spacing-sm);padding:var(--bt-spacing-sm) var(--bt-spacing-md);border-bottom:1px solid var(--bt-color-border)}.bt-dropdown__search-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--bt-color-text-secondary)}.bt-dropdown__search-input{flex:1 1 auto;min-width:0;border:none;outline:none;background:rgba(0,0,0,0);color:var(--bt-color-text-primary);border-radius:var(--bt-radius-sm);font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);line-height:var(--bt-line-height-normal);transition:box-shadow var(--bt-transition-fast)}.bt-dropdown__search-input::placeholder{color:var(--bt-color-text-tertiary)}.bt-dropdown__search-input:focus-visible{box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-dropdown__options{max-height:18rem;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--bt-color-border-light) rgba(0,0,0,0);padding:var(--bt-spacing-xs) 0;margin:0;list-style:none}.bt-dropdown__empty{padding:var(--bt-spacing-md) var(--bt-spacing-lg);color:var(--bt-color-text-tertiary);font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);line-height:var(--bt-line-height-normal);text-align:center;list-style:none}.bt-dropdown__option{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:flex-start;gap:var(--bt-spacing-sm);padding:var(--bt-spacing-sm) var(--bt-spacing-lg);cursor:pointer;color:var(--bt-color-text-primary);background:rgba(0,0,0,0);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal)}.bt-dropdown__option[hidden]{display:none}.bt-dropdown__option:hover,.bt-dropdown__option.is-active{background:var(--bt-color-background-secondary)}.bt-dropdown__option.is-selected{font-weight:var(--bt-font-weight-medium)}.bt-dropdown__option.is-disabled{cursor:not-allowed;color:var(--bt-color-text-tertiary)}.bt-dropdown__option-content{flex:1 1 auto;min-width:0}.bt-dropdown__option-check{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--bt-spacing-lg);color:var(--bt-color-accent)}.bt-dropdown__option-check svg{opacity:0;transition:opacity var(--bt-transition-fast)}.bt-dropdown__option.is-selected .bt-dropdown__option-check svg{opacity:1}.bt-modal{position:fixed;top:0;right:0;bottom:0;left:0;display:none;place-items:center;background:var(--bt-color-overlay);z-index:var(--bt-z-modal)}.bt-modal.is-open{display:grid;grid-template-columns:minmax(0, 1fr)}.bt-modal__panel{position:relative;background:var(--bt-color-background);border-radius:var(--bt-radius-lg);box-shadow:var(--bt-elevation-3);max-width:calc(100% - 32px);overflow:hidden}.bt-modal__header{padding:var(--bt-spacing-lg);padding-right:calc(var(--bt-spacing-lg) + 32px);border-bottom:1px solid var(--bt-color-border);color:var(--bt-color-text-primary);font-size:var(--bt-font-size-xl);font-weight:var(--bt-font-weight-semibold);line-height:1.3}.bt-modal__close{position:absolute;top:var(--bt-spacing-md);right:var(--bt-spacing-md);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:none;background:rgba(0,0,0,0);color:var(--bt-color-text-tertiary);border-radius:var(--bt-radius-md);cursor:pointer;transition:background var(--bt-transition-fast),color var(--bt-transition-fast)}.bt-modal__close:hover{background:var(--bt-color-hover);color:var(--bt-color-text-primary)}.bt-modal__close:focus-visible{outline:none;box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-modal__body{padding:var(--bt-spacing-lg)}.bt-modal__footer{padding:var(--bt-spacing-lg);border-top:1px solid var(--bt-color-border);display:flex;justify-content:flex-end;gap:var(--bt-spacing-sm)}@keyframes bt-alert-fade-in{from{opacity:0}to{opacity:1}}@keyframes bt-alert-slide-up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.bt-alert__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bt-color-overlay);display:none;align-items:center;justify-content:center;z-index:var(--bt-z-popup);animation:bt-alert-fade-in var(--bt-transition-base)}.bt-alert__overlay.is-open{display:flex}.bt-alert__modal{background:var(--bt-color-background);border-radius:var(--bt-radius-lg);min-width:320px;max-width:480px;box-shadow:var(--bt-elevation-4);animation:bt-alert-slide-up var(--bt-transition-slow);overflow:hidden}.bt-alert__title{font-size:var(--bt-font-size-lg);font-weight:var(--bt-font-weight-semibold);line-height:var(--bt-line-height-normal);color:var(--bt-color-info-text);padding:var(--bt-spacing-md) var(--bt-spacing-xl) var(--bt-spacing-xs)}.bt-alert__message{font-size:var(--bt-font-size-base);color:var(--bt-color-text-secondary);padding:var(--bt-spacing-xl);line-height:1.75}.bt-alert__actions{display:flex;gap:var(--bt-spacing-sm);align-items:center;padding:0 var(--bt-spacing-xl) var(--bt-spacing-xl);justify-content:flex-end}.bt-alert--info .bt-alert__title{color:var(--bt-color-info-text)}.bt-alert--success .bt-alert__title{color:var(--bt-color-success-text)}.bt-alert--warning .bt-alert__title{color:var(--bt-color-warning-text)}.bt-alert--error .bt-alert__title{color:var(--bt-color-error-text)}.bt-card{background:var(--bt-color-background);border-radius:var(--bt-radius-lg);box-shadow:var(--bt-elevation-1);padding:var(--bt-spacing-lg);transition:transform var(--bt-transition-base),box-shadow var(--bt-transition-base)}.bt-card--bordered{border:1px solid var(--bt-color-border)}.bt-card--shadow-none{box-shadow:none}.bt-card--shadow-sm{box-shadow:var(--bt-elevation-1)}.bt-card--shadow-md{box-shadow:var(--bt-elevation-2)}.bt-card--shadow-lg{box-shadow:var(--bt-elevation-3)}.bt-card--p-none{padding:0}.bt-card--p-sm{padding:var(--bt-spacing-sm)}.bt-card--p-md{padding:var(--bt-spacing-lg)}.bt-card--p-lg{padding:var(--bt-spacing-2xl)}.bt-card--accent{background:var(--bt-color-accent);color:var(--bt-color-accent-on-surface)}.bt-card--accent .bt-card__title{color:var(--bt-color-accent-on-surface)}.bt-card--accent .bt-card__footer{border-top-color:var(--bt-color-hover-on-dark)}.bt-card--outlined{background:rgba(0,0,0,0);border:1px solid var(--bt-color-border);box-shadow:none}.bt-card--glass{background:rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08);color:var(--bt-color-on-primary)}.bt-card--glass .bt-card__title{color:var(--bt-color-on-primary)}.bt-card--glass .bt-card__footer{border-top-color:var(--bt-color-hover-on-dark)}[data-theme=dark] .bt-card--glass{background:rgba(255,255,255,.05);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px rgba(0,0,0,.12)}@media(prefers-color-scheme: dark){:root:not([data-theme]) .bt-card--glass{background:rgba(255,255,255,.05);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px rgba(0,0,0,.12)}}.bt-card--interactive{cursor:pointer}.bt-card--interactive:hover{transform:translateY(-2px);box-shadow:var(--bt-elevation-2)}.bt-card__title{font-size:var(--bt-font-size-xl);font-weight:var(--bt-font-weight-semibold);line-height:1.3;margin-top:0;margin-bottom:var(--bt-spacing-md);color:var(--bt-color-text-primary)}.bt-card__body{width:100%}.bt-card__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--bt-spacing-sm);margin-top:var(--bt-spacing-lg);padding-top:var(--bt-spacing-lg);border-top:1px solid var(--bt-color-border)}.bt-card__footer--start{justify-content:flex-start}.bt-card__footer--between{justify-content:space-between}.bt-card__footer--end{justify-content:flex-end}@keyframes bt-spinner-spin{to{transform:rotate(360deg)}}.bt-spinner{display:inline-block;box-sizing:border-box;width:var(--bt-spinner-size, 24px);height:var(--bt-spinner-size, 24px);border-radius:50%;border:2px solid var(--bt-color-border);border-top-color:var(--bt-color-accent);animation:bt-spinner-spin .8s linear infinite}.bt-pagination{display:flex;align-items:center;justify-content:center;gap:var(--bt-spacing-sm);margin-top:var(--bt-spacing-3xl)}.bt-pagination__item{border:1px solid var(--bt-color-border);background:var(--bt-color-background);border-radius:var(--bt-radius-md);padding:6px 10px;min-width:36px;font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-primary);cursor:pointer;transition:background var(--bt-transition-base),border-color var(--bt-transition-base)}.bt-pagination__item:hover:not(:disabled){background:var(--bt-color-background-secondary)}.bt-pagination__item:disabled{opacity:.5;cursor:not-allowed}.bt-pagination__pages{display:flex;align-items:center;gap:6px}.bt-pagination__page{border:0;background:rgba(0,0,0,0);min-width:36px;height:36px;border-radius:var(--bt-radius-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-secondary);cursor:pointer;transition:background var(--bt-transition-base),color var(--bt-transition-base)}.bt-pagination__page:hover{background:var(--bt-color-background-secondary);color:var(--bt-color-text-primary)}.bt-pagination__page--active{color:var(--bt-color-text-primary);font-weight:var(--bt-font-weight-semibold)}.bt-pagination__ellipsis{min-width:20px;text-align:center;font-size:var(--bt-font-size-sm);color:var(--bt-color-text-tertiary)}.bt-date-picker{display:flex;flex-direction:column;gap:var(--bt-spacing-xs)}.bt-date-picker__label{color:var(--bt-color-text-primary);margin-bottom:var(--bt-spacing-xs);font-weight:var(--bt-font-weight-medium);font-size:var(--bt-font-size-sm);line-height:var(--bt-line-height-normal)}.bt-date-picker__label-required{margin-left:var(--bt-spacing-xs);color:var(--bt-color-error-text)}.bt-date-picker__fields{display:flex;gap:var(--bt-spacing-sm)}.bt-date-picker__select{min-width:88px;height:44px;padding:0 var(--bt-spacing-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);color:var(--bt-color-text-primary);background-color:var(--bt-color-background);border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-sm);cursor:pointer;transition:border-color var(--bt-transition-fast),box-shadow var(--bt-transition-fast),background-color var(--bt-transition-fast);appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--bt-color-text-secondary) 50%),linear-gradient(135deg, var(--bt-color-text-secondary) 50%, transparent 50%);background-position:calc(100% - 16px) calc(50% - 3px),calc(100% - 11px) calc(50% - 3px);background-size:5px 5px;background-repeat:no-repeat}.bt-date-picker__select:hover:not(:disabled){border-color:var(--bt-color-accent);background-color:var(--bt-color-background-secondary)}.bt-date-picker__select:focus-visible{outline:none;border-color:var(--bt-color-accent);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-date-picker__select:disabled{cursor:not-allowed;color:var(--bt-color-text-disabled);background-color:var(--bt-color-background-secondary);border-color:var(--bt-color-border-light)}.bt-date-picker--full-width{width:100%}.bt-date-picker--full-width .bt-date-picker__fields{width:100%}.bt-date-picker--full-width .bt-date-picker__select{flex:1;min-width:0}.bt-file-input{position:relative;display:inline-flex;align-items:center}.bt-file-input:hover .bt-file-input__label{border-color:var(--bt-color-border-light)}.bt-file-input__control{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.bt-file-input__label{border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-md);background:var(--bt-color-background);padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);color:var(--bt-color-text-primary);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base)}.bt-file-input__control:focus-visible+.bt-file-input__label{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-accent)}.bt-file-input--disabled{cursor:not-allowed}.bt-file-input--disabled .bt-file-input__control{cursor:not-allowed}.bt-file-input--disabled .bt-file-input__label{opacity:.6;cursor:not-allowed}.bt-file-input--disabled:hover .bt-file-input__label{border-color:var(--bt-color-border)}.bt-toast{z-index:var(--bt-z-toast);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);overflow-wrap:anywhere;word-break:keep-all;border-radius:var(--bt-radius-md);box-shadow:var(--bt-elevation-3)}.bt-hidden{display:none !important}.bt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.bt-sr-only-focusable{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.bt-sr-only-focusable:focus-visible{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;clip-path:none;white-space:normal}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,textarea:-webkit-autofill,select:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--bt-color-background) inset;box-shadow:0 0 0 1000px var(--bt-color-background) inset;-webkit-text-fill-color:var(--bt-color-text-primary);caret-color:var(--bt-color-text-primary)}.bt-text-field__input--filled:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--bt-color-background-secondary) inset;box-shadow:0 0 0 1000px var(--bt-color-background-secondary) inset}.bt-text-field__input--filled:-webkit-autofill:focus-visible{-webkit-box-shadow:0 0 0 1000px var(--bt-color-background) inset;box-shadow:0 0 0 1000px var(--bt-color-background) inset}input:-webkit-autofill:disabled,textarea:-webkit-autofill:disabled,select:-webkit-autofill:disabled{-webkit-box-shadow:0 0 0 1000px var(--bt-color-background-secondary) inset;box-shadow:0 0 0 1000px var(--bt-color-background-secondary) inset;-webkit-text-fill-color:var(--bt-color-text-tertiary)}@media(prefers-reduced-motion: reduce){:root{--bt-transition-fast: 0s;--bt-transition-base: 0s;--bt-transition-slow: 0s}.bt-alert__overlay,.bt-alert__modal{animation:none}.bt-card--interactive:hover{transform:none}.bt-spinner{animation-duration:2.4s}}
7
+ */@keyframes skeleton_loading{0%{background-position:100% 0}100%{background-position:0 0}}:root{--bt-color-brand-primary: #121212;--bt-color-brand-on-primary: #FFFFFF;--bt-color-brand-primary-container: rgba(0, 0, 0, 0.05);--bt-color-text-heading: #121212;--bt-color-text-body: #666666;--bt-color-text-caption: #6F6F6F;--bt-color-text-brand: #121212;--bt-color-text-inverse: #FFFFFF;--bt-color-text-disabled: rgba(26, 26, 26, 0.38);--bt-color-bg-solid: #FFFFFF;--bt-color-bg-solid-dim: #F4F4F4;--bt-color-bg-additive: rgba(0, 0, 0, 0.05);--bt-color-bg-disabled: rgba(26, 26, 26, 0.12);--bt-color-bg-overlay: rgba(0, 0, 0, 0.5);--bt-color-bg-inverse-surface: #333333;--bt-color-state-hover-on-light: rgba(0, 0, 0, 0.05);--bt-color-state-pressed-on-light: rgba(26, 26, 26, 0.12);--bt-color-state-focus-on-light: rgba(0, 0, 0, 0.08);--bt-color-state-hover-on-dark: rgba(255, 255, 255, 0.05);--bt-color-state-pressed-on-dark: rgba(255, 255, 255, 0.12);--bt-color-state-focus-on-dark: rgba(255, 255, 255, 0.08);--bt-color-border-default: #E5E5E5;--bt-color-border-hover: #B3B3B3;--bt-color-border-subtle: rgba(0, 0, 0, 0.08);--bt-color-border-focus: #121212;--bt-color-border-disabled: #F2F2F2;--bt-color-status-error: #B91C1C;--bt-color-status-success: #047857;--bt-color-status-warning: #B45309;--bt-color-status-info: #1D4ED8;--bt-color-status-error-on-default: #FFFFFF;--bt-color-status-success-on-default: #FFFFFF;--bt-color-status-warning-on-default: #FFFFFF;--bt-color-status-info-on-default: #FFFFFF;--bt-color-status-error-container: #FEE2E2;--bt-color-status-success-container: #DCFCE7;--bt-color-status-warning-container: #FEF3C7;--bt-color-status-info-container: #DBEAFE;--bt-color-status-error-on-container: #B91C1C;--bt-color-status-success-on-container: #047857;--bt-color-status-warning-on-container: #B45309;--bt-color-status-info-on-container: #1D4ED8;--bt-color-status-error-on-surface: #B91C1C;--bt-color-status-success-on-surface: #047857;--bt-color-status-warning-on-surface: #B45309;--bt-color-status-info-on-surface: #1D4ED8;--bt-color-accent-subtle: rgba(0, 0, 0, 0.05);--bt-color-accent-muted: rgba(26, 26, 26, 0.12);--bt-color-accent-light: #B3B3B3;--bt-color-accent-default: #121212;--bt-color-accent-strong: #121212;--bt-color-accent-on-surface: #FFFFFF;--bt-color-skeleton-base: #F3F3F3;--bt-color-skeleton-wave: #F0F0F0;--bt-color-skeleton-highlight: #FAFAFA;--bt-focus-ring: 0 0 0 3px rgba(0, 0, 0, 0.15);--bt-focus-ring-error: 0 0 0 3px rgba(239, 68, 68, 0.30);--bt-focus-ring-success: 0 0 0 3px rgba(16, 185, 129, 0.30);--bt-elevation-level1: 0 1px 1px -1px rgba(0, 0, 0, 0.20), 0 3px 3px 0px rgba(0, 0, 0, 0.12);--bt-elevation-level2: 0 2px 2px -2px rgba(0, 0, 0, 0.20), 0 6px 6px 0px rgba(0, 0, 0, 0.12);--bt-elevation-level3: 0 3px 3px -3px rgba(0, 0, 0, 0.20), 0 9px 9px 0px rgba(0, 0, 0, 0.12);--bt-elevation-level4: 0 5px 5px -5px rgba(0, 0, 0, 0.20), 0 15px 15px 0px rgba(0, 0, 0, 0.12);--bt-elevation-level5: 0 8px 10px -5px rgba(0, 0, 0, 0.20), 0 20px 20px 0px rgba(0, 0, 0, 0.12);--bt-bottom-nav-inset: 0px;--bt-sidebar-inset: 0px;--bt-bottom-inset-app: 0px;--bt-z-content: 10;--bt-z-chrome: 100;--bt-z-app-chrome: 150;--bt-z-notification: 200;--bt-z-loading: 500;--bt-z-popup: 1000}body{--bt-bottom-inset: calc( var(--bt-bottom-nav-inset, 0px) + var(--bt-sidebar-inset, 0px) + var(--bt-bottom-inset-app, 0px) )}:root{--bt-scrollbar-width: 0px}[data-theme=dark]{color-scheme:dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bt-color-text-heading: rgba(255, 255, 255, 0.95);--bt-color-text-body: #B3B3B3;--bt-color-text-caption: #808080;--bt-color-text-inverse: #121212;--bt-color-text-disabled: rgba(255, 255, 255, 0.38);--bt-color-bg-solid: #0A0A0A;--bt-color-bg-solid-dim: #141414;--bt-color-bg-additive: rgba(255, 255, 255, 0.05);--bt-color-bg-disabled: rgba(255, 255, 255, 0.12);--bt-color-bg-overlay: rgba(0, 0, 0, 0.7);--bt-color-bg-inverse-surface: #F4F4F4;--bt-color-state-hover-on-light: rgba(255, 255, 255, 0.08);--bt-color-state-pressed-on-light: rgba(255, 255, 255, 0.12);--bt-color-state-focus-on-light: rgba(255, 255, 255, 0.12);--bt-color-state-hover-on-dark: rgba(0, 0, 0, 0.08);--bt-color-state-pressed-on-dark: rgba(26, 26, 26, 0.12);--bt-color-state-focus-on-dark: rgba(26, 26, 26, 0.12);--bt-color-border-default: #333333;--bt-color-border-hover: #777777;--bt-color-border-subtle: rgba(255, 255, 255, 0.12);--bt-color-border-focus: #FFFFFF;--bt-color-border-disabled: #141414;--bt-color-brand-primary-container: rgba(255, 255, 255, 0.08);--bt-color-accent-subtle: rgba(255, 255, 255, 0.08);--bt-color-accent-muted: rgba(255, 255, 255, 0.12);--bt-color-accent-light: #999999;--bt-color-accent-default: #FFFFFF;--bt-color-accent-strong: #FFFFFF;--bt-color-accent-on-surface: #121212;--bt-color-status-error-container: rgba(127, 29, 29, 0.35);--bt-color-status-success-container: rgba(6, 78, 59, 0.35);--bt-color-status-warning-container: rgba(120, 53, 15, 0.35);--bt-color-status-info-container: rgba(30, 58, 138, 0.35);--bt-color-status-error-on-container: #FCA5A5;--bt-color-status-success-on-container: #86EFAC;--bt-color-status-warning-on-container: #FCD34D;--bt-color-status-info-on-container: #93C5FD;--bt-color-status-error-on-surface: #F87171;--bt-color-status-success-on-surface: #4ADE80;--bt-color-status-warning-on-surface: #FBBF24;--bt-color-status-info-on-surface: #60A5FA;--bt-color-skeleton-base: #333333;--bt-color-skeleton-wave: #333333;--bt-color-skeleton-highlight: #666666;--bt-focus-ring: 0 0 0 3px rgba(255, 255, 255, 0.35);--bt-focus-ring-error: 0 0 0 3px rgba(239, 68, 68, 0.45);--bt-focus-ring-success: 0 0 0 3px rgba(16, 185, 129, 0.45);--bt-elevation-level1: 0 1px 2px 0 rgba(0, 0, 0, 0.45), 0 3px 6px 0 rgba(0, 0, 0, 0.30);--bt-elevation-level2: 0 2px 4px 0 rgba(0, 0, 0, 0.45), 0 6px 12px 0 rgba(0, 0, 0, 0.30);--bt-elevation-level3: 0 3px 6px 0 rgba(0, 0, 0, 0.50), 0 9px 18px 0 rgba(0, 0, 0, 0.35);--bt-elevation-level4: 0 5px 10px 0 rgba(0, 0, 0, 0.55), 0 15px 30px 0 rgba(0, 0, 0, 0.40);--bt-elevation-level5: 0 8px 16px 0 rgba(0, 0, 0, 0.60), 0 20px 40px 0 rgba(0, 0, 0, 0.45)}@media(prefers-color-scheme: dark){:root:not([data-theme]){color-scheme:dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bt-color-text-heading: rgba(255, 255, 255, 0.95);--bt-color-text-body: #B3B3B3;--bt-color-text-caption: #808080;--bt-color-text-inverse: #121212;--bt-color-text-disabled: rgba(255, 255, 255, 0.38);--bt-color-bg-solid: #0A0A0A;--bt-color-bg-solid-dim: #141414;--bt-color-bg-additive: rgba(255, 255, 255, 0.05);--bt-color-bg-disabled: rgba(255, 255, 255, 0.12);--bt-color-bg-overlay: rgba(0, 0, 0, 0.7);--bt-color-bg-inverse-surface: #F4F4F4;--bt-color-state-hover-on-light: rgba(255, 255, 255, 0.08);--bt-color-state-pressed-on-light: rgba(255, 255, 255, 0.12);--bt-color-state-focus-on-light: rgba(255, 255, 255, 0.12);--bt-color-state-hover-on-dark: rgba(0, 0, 0, 0.08);--bt-color-state-pressed-on-dark: rgba(26, 26, 26, 0.12);--bt-color-state-focus-on-dark: rgba(26, 26, 26, 0.12);--bt-color-border-default: #333333;--bt-color-border-hover: #777777;--bt-color-border-subtle: rgba(255, 255, 255, 0.12);--bt-color-border-focus: #FFFFFF;--bt-color-border-disabled: #141414;--bt-color-brand-primary-container: rgba(255, 255, 255, 0.08);--bt-color-accent-subtle: rgba(255, 255, 255, 0.08);--bt-color-accent-muted: rgba(255, 255, 255, 0.12);--bt-color-accent-light: #999999;--bt-color-accent-default: #FFFFFF;--bt-color-accent-strong: #FFFFFF;--bt-color-accent-on-surface: #121212;--bt-color-status-error-container: rgba(127, 29, 29, 0.35);--bt-color-status-success-container: rgba(6, 78, 59, 0.35);--bt-color-status-warning-container: rgba(120, 53, 15, 0.35);--bt-color-status-info-container: rgba(30, 58, 138, 0.35);--bt-color-status-error-on-container: #FCA5A5;--bt-color-status-success-on-container: #86EFAC;--bt-color-status-warning-on-container: #FCD34D;--bt-color-status-info-on-container: #93C5FD;--bt-color-status-error-on-surface: #F87171;--bt-color-status-success-on-surface: #4ADE80;--bt-color-status-warning-on-surface: #FBBF24;--bt-color-status-info-on-surface: #60A5FA;--bt-color-skeleton-base: #333333;--bt-color-skeleton-wave: #333333;--bt-color-skeleton-highlight: #666666;--bt-focus-ring: 0 0 0 3px rgba(255, 255, 255, 0.35);--bt-focus-ring-error: 0 0 0 3px rgba(239, 68, 68, 0.45);--bt-focus-ring-success: 0 0 0 3px rgba(16, 185, 129, 0.45);--bt-elevation-level1: 0 1px 2px 0 rgba(0, 0, 0, 0.45), 0 3px 6px 0 rgba(0, 0, 0, 0.30);--bt-elevation-level2: 0 2px 4px 0 rgba(0, 0, 0, 0.45), 0 6px 12px 0 rgba(0, 0, 0, 0.30);--bt-elevation-level3: 0 3px 6px 0 rgba(0, 0, 0, 0.50), 0 9px 18px 0 rgba(0, 0, 0, 0.35);--bt-elevation-level4: 0 5px 10px 0 rgba(0, 0, 0, 0.55), 0 15px 30px 0 rgba(0, 0, 0, 0.40);--bt-elevation-level5: 0 8px 16px 0 rgba(0, 0, 0, 0.60), 0 20px 40px 0 rgba(0, 0, 0, 0.45)}}:root{--bt-color-primary: var(--bt-color-brand-primary);--bt-color-on-primary: var(--bt-color-brand-on-primary);--bt-color-accent: var(--bt-color-accent-default);--bt-color-primary-container: var(--bt-color-brand-primary-container);--bt-color-background: var(--bt-color-bg-solid);--bt-color-background-dim: var(--bt-color-bg-solid-dim);--bt-color-background-overlay: var(--bt-color-bg-overlay);--bt-color-border: var(--bt-color-border-default);--bt-color-text-primary: var(--bt-color-text-heading);--bt-color-text-secondary: var(--bt-color-text-body);--bt-color-text-tertiary: var(--bt-color-text-caption);--bt-color-background-secondary: var(--bt-color-background-dim);--bt-color-border-light: var(--bt-color-border-hover);--bt-color-hover: var(--bt-color-state-hover-on-light);--bt-color-hover-on-dark: var(--bt-color-state-hover-on-dark);--bt-color-pressed: var(--bt-color-state-pressed-on-light);--bt-color-primary-hover: #333333;--bt-color-overlay: var(--bt-color-bg-overlay);--bt-color-success: var(--bt-color-status-success);--bt-color-error: var(--bt-color-status-error);--bt-color-error-text: var(--bt-color-status-error-on-surface);--bt-color-success-text: var(--bt-color-status-success-on-surface);--bt-color-warning-text: var(--bt-color-status-warning-on-surface);--bt-color-info-text: var(--bt-color-status-info-on-surface);--bt-color-warning: var(--bt-color-status-warning);--bt-color-info: var(--bt-color-status-info);--bt-spacing-4: 4px;--bt-spacing-8: 8px;--bt-spacing-12: 12px;--bt-spacing-16: 16px;--bt-spacing-20: 20px;--bt-spacing-24: 24px;--bt-spacing-32: 32px;--bt-spacing-40: 40px;--bt-spacing-48: 48px;--bt-spacing-xs: var(--bt-spacing-4);--bt-spacing-sm: var(--bt-spacing-8);--bt-spacing-md: var(--bt-spacing-12);--bt-spacing-lg: var(--bt-spacing-16);--bt-spacing-xl: var(--bt-spacing-20);--bt-spacing-2xl: var(--bt-spacing-24);--bt-spacing-3xl: var(--bt-spacing-32);--bt-font-family: Pretendard, sans-serif;--bt-font-size-12: 12px;--bt-font-size-14: 14px;--bt-font-size-15: 15px;--bt-font-size-16: 16px;--bt-font-size-18: 18px;--bt-font-size-20: 20px;--bt-font-weight-regular: 400;--bt-font-weight-medium: 500;--bt-font-weight-semibold: 600;--bt-line-height-20: 20px;--bt-line-height-24: 24px;--bt-font-size-sm: var(--bt-font-size-14);--bt-font-size-base: var(--bt-font-size-15);--bt-font-size-md: var(--bt-font-size-16);--bt-font-size-lg: var(--bt-font-size-18);--bt-font-size-xl: var(--bt-font-size-20);--bt-line-height-normal: 1.5;--bt-radius-none: 0px;--bt-radius-xs: 4px;--bt-radius-sm: 6px;--bt-radius-md: 8px;--bt-radius-lg: 12px;--bt-radius-xl: 16px;--bt-radius-full: 9999px;--bt-elevation-1: var(--bt-elevation-level1);--bt-elevation-2: var(--bt-elevation-level2);--bt-elevation-3: var(--bt-elevation-level3);--bt-elevation-4: var(--bt-elevation-level4);--bt-elevation-5: var(--bt-elevation-level5);--bt-transition-fast: 0.1s ease-in-out;--bt-transition-base: 0.2s ease-in-out;--bt-transition-slow: 0.3s ease-in-out;--bt-z-modal: var(--bt-z-chrome);--bt-z-toast: var(--bt-z-notification)}.bt-button{display:inline-flex;align-items:center;justify-content:center;overflow-wrap:anywhere;word-break:keep-all;gap:var(--bt-spacing-sm);border-radius:var(--bt-radius-full);border:none;cursor:pointer;font-family:var(--bt-font-family);font-weight:var(--bt-font-weight-medium);transition:background var(--bt-transition-base),color var(--bt-transition-base),opacity var(--bt-transition-base),box-shadow var(--bt-transition-base),transform var(--bt-transition-base)}.bt-button:disabled{cursor:not-allowed;opacity:.6}.bt-button--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-button--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-button--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-button--xl{padding:var(--bt-spacing-xl) var(--bt-spacing-3xl);font-size:var(--bt-font-size-lg)}.bt-button--filled{background:var(--bt-color-accent);color:var(--bt-color-accent-on-surface)}.bt-button--filled:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-accent) 88%, var(--bt-color-accent-on-surface))}.bt-button--filled:active:not(:disabled){transform:scale(0.98)}.bt-button--tonal{background:var(--bt-color-primary-container);color:var(--bt-color-text-primary)}.bt-button--tonal:hover:not(:disabled){background-image:linear-gradient(var(--bt-color-hover), var(--bt-color-hover))}.bt-button--tonal:active:not(:disabled){background-image:linear-gradient(var(--bt-color-pressed), var(--bt-color-pressed));transform:scale(0.98)}.bt-button--outline{background:rgba(0,0,0,0);border:1px solid var(--bt-color-border);color:var(--bt-color-text-primary)}.bt-button--outline:hover:not(:disabled){background:var(--bt-color-background-secondary)}.bt-button--outline:active:not(:disabled){transform:scale(0.98)}.bt-button--text{background:rgba(0,0,0,0);color:var(--bt-color-text-primary)}.bt-button--text:hover:not(:disabled){background:var(--bt-color-hover)}.bt-button--text:active:not(:disabled){transform:scale(0.96)}.bt-button--danger{background:var(--bt-color-error);color:var(--bt-color-on-primary)}.bt-button--danger:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-error) 88%, #000)}.bt-button--danger:active:not(:disabled){transform:scale(0.98)}.bt-button--radius-none{border-radius:var(--bt-radius-none)}.bt-button--radius-xs{border-radius:var(--bt-radius-xs)}.bt-button--radius-sm{border-radius:var(--bt-radius-sm)}.bt-button--radius-md{border-radius:var(--bt-radius-md)}.bt-button--radius-lg{border-radius:var(--bt-radius-lg)}.bt-button--radius-xl{border-radius:var(--bt-radius-xl)}.bt-button--radius-full{border-radius:var(--bt-radius-full)}.bt-button--full-width{width:100%}.bt-button--danger.bt-button--outline{background:rgba(0,0,0,0);border-color:var(--bt-color-error);color:var(--bt-color-error-text)}.bt-button--danger.bt-button--outline:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-error) 8%, transparent)}.bt-button--danger.bt-button--tonal{background:color-mix(in srgb, var(--bt-color-error) 12%, transparent);color:var(--bt-color-error-text)}.bt-button--danger.bt-button--tonal:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-error) 18%, transparent)}.bt-button--danger.bt-button--text{background:rgba(0,0,0,0);color:var(--bt-color-error-text)}.bt-button--danger.bt-button--text:hover:not(:disabled){background:color-mix(in srgb, var(--bt-color-error) 8%, transparent)}.bt-text-field{display:flex;flex-direction:column}.bt-text-field--full-width{width:100%}.bt-text-field__label{margin-bottom:var(--bt-spacing-xs);color:var(--bt-color-text-primary);font-size:var(--bt-font-size-sm);font-weight:var(--bt-font-weight-medium);line-height:var(--bt-line-height-normal)}.bt-text-field__wrap{position:relative;display:inline-flex;width:100%;align-items:center}.bt-text-field__input{width:100%;border-radius:var(--bt-radius-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary);background:var(--bt-color-background);transition:border-color var(--bt-transition-base),box-shadow var(--bt-transition-base),background var(--bt-transition-base)}.bt-text-field__input::placeholder{color:var(--bt-color-text-tertiary)}.bt-text-field__input:disabled{cursor:not-allowed;background:var(--bt-color-background-secondary);color:var(--bt-color-text-tertiary);opacity:.7}.bt-text-field__input--outline{border:1px solid var(--bt-color-border)}.bt-text-field__input--outline:hover:not(:disabled){border-color:var(--bt-color-border-light)}.bt-text-field__input--outline:focus-visible{outline:none;border-color:var(--bt-color-accent);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-text-field__input--filled{background:var(--bt-color-background-secondary);border:1px solid rgba(0,0,0,0)}.bt-text-field__input--filled:focus-visible{outline:none;border-color:var(--bt-color-accent);background:var(--bt-color-background);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-text-field__input--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-text-field__input--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-text-field__input--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-text-field__input--error{border-color:var(--bt-color-error) !important;box-shadow:0 0 0 3px rgba(239,68,68,.15) !important}.bt-text-field__input--success{border-color:var(--bt-color-success) !important;box-shadow:0 0 0 3px rgba(16,185,129,.15) !important}.bt-text-field__input--identifier{font-feature-settings:"cv05" 1,"cv08" 1;font-variant-numeric:slashed-zero}.bt-text-field__helper{margin-top:var(--bt-spacing-xs);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-secondary)}.bt-text-field__helper--error{color:var(--bt-color-error-text)}.bt-text-field__helper--success{color:var(--bt-color-success-text)}.bt-text-field__icon{position:absolute;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;color:var(--bt-color-text-secondary)}.bt-text-field__icon--left{left:var(--bt-spacing-md)}.bt-text-field__icon--right{right:var(--bt-spacing-md)}.bt-checkbox{display:inline-flex;align-items:center;gap:var(--bt-spacing-sm);cursor:pointer;user-select:none;position:relative}.bt-checkbox__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.bt-checkbox__box{width:1.125rem;height:1.125rem;box-sizing:border-box;border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-sm);background:var(--bt-color-background);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base);display:inline-block;position:relative}.bt-checkbox__label{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-checkbox--sm .bt-checkbox__box{width:1rem;height:1rem}.bt-checkbox--sm .bt-checkbox__label{font-size:var(--bt-font-size-sm)}.bt-checkbox--lg .bt-checkbox__box{width:1.25rem;height:1.25rem}.bt-checkbox--lg .bt-checkbox__label{font-size:var(--bt-font-size-md)}.bt-checkbox__input:focus-visible+.bt-checkbox__box{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-accent)}.bt-checkbox__input:disabled+.bt-checkbox__box,.bt-checkbox__input:disabled~.bt-checkbox__label{opacity:.6;cursor:not-allowed}.bt-checkbox__input:checked+.bt-checkbox__box{background:var(--bt-color-accent);border-color:var(--bt-color-accent)}.bt-checkbox__input:checked+.bt-checkbox__box::after{content:"";position:absolute;left:50%;top:50%;width:.28rem;height:.55rem;border:2px solid var(--bt-color-accent-on-surface);border-top:0;border-left:0;transform:translate(-50%, -58%) rotate(45deg)}.bt-radio{position:relative;display:inline-flex;align-items:center;gap:var(--bt-spacing-sm);cursor:pointer;user-select:none}.bt-radio__input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;margin:0}.bt-radio__dot{width:1.125rem;height:1.125rem;box-sizing:border-box;border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-full);background:var(--bt-color-background);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base);position:relative;display:inline-block}.bt-radio__label{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-radio--sm .bt-radio__dot{width:1rem;height:1rem}.bt-radio--sm .bt-radio__label{font-size:var(--bt-font-size-sm)}.bt-radio--lg .bt-radio__dot{width:1.25rem;height:1.25rem}.bt-radio--lg .bt-radio__label{font-size:var(--bt-font-size-md)}.bt-radio__input:focus-visible+.bt-radio__dot{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-accent)}.bt-radio__input:checked+.bt-radio__dot{border-color:var(--bt-color-accent);border-width:2px}.bt-radio__input:checked+.bt-radio__dot::after{content:"";position:absolute;left:50%;top:50%;width:60%;height:60%;transform:translate(-50%, -50%);background:var(--bt-color-accent);border-radius:9999px}.bt-radio__input:disabled+.bt-radio__dot,.bt-radio__input:disabled~.bt-radio__label{opacity:.6;cursor:not-allowed}.bt-toggle{position:relative;display:inline-flex;align-items:center;width:40px;height:24px;padding:2px;border-radius:var(--bt-radius-full);background:var(--bt-color-border-light);transition:background var(--bt-transition-base);cursor:pointer;border:none}.bt-toggle::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:100%;height:32px}@media(max-width: 599px){.bt-toggle::after{height:40px}}.bt-toggle__thumb{width:12px;height:12px;background:var(--bt-color-background);border-radius:var(--bt-radius-full);transition:transform var(--bt-transition-base),width var(--bt-transition-base),height var(--bt-transition-base);transform:translateX(0)}.bt-toggle--on{background:var(--bt-color-accent)}.bt-toggle--on .bt-toggle__thumb{width:20px;height:20px;background:var(--bt-color-accent-on-surface);transform:translateX(16px)}.bt-toggle--sm{width:40px;height:24px}.bt-toggle--md{width:48px;height:28px}.bt-toggle--md .bt-toggle__thumb{width:16px;height:16px}.bt-toggle--md.bt-toggle--on .bt-toggle__thumb{width:24px;height:24px;transform:translateX(20px)}.bt-toggle:disabled{cursor:not-allowed;background:var(--bt-color-border-light)}.bt-toggle:disabled .bt-toggle__thumb{background:#fff}.bt-dropdown{position:relative;display:inline-flex;flex-direction:column;width:100%;gap:var(--bt-spacing-xs);font-family:var(--bt-font-family)}.bt-dropdown__label{font-size:var(--bt-font-size-sm);font-weight:var(--bt-font-weight-medium);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-dropdown__control{width:100%;display:inline-flex;align-items:center;justify-content:space-between;gap:var(--bt-spacing-sm);cursor:pointer;color:var(--bt-color-text-primary);background:var(--bt-color-background);border-radius:var(--bt-radius-md);transition:border-color var(--bt-transition-base),box-shadow var(--bt-transition-base),background var(--bt-transition-base);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);border:none;text-align:left}.bt-dropdown__control:disabled,.bt-dropdown__control.is-disabled{cursor:not-allowed;opacity:.7;background:var(--bt-color-background-secondary);color:var(--bt-color-text-tertiary)}.bt-dropdown__control--outline{border:1px solid var(--bt-color-border)}.bt-dropdown__control--outline:hover:not(.is-disabled){border-color:var(--bt-color-border-light)}.bt-dropdown__control--outline.is-open{border-color:var(--bt-color-accent);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-dropdown__control--filled{background:var(--bt-color-background-secondary);border:1px solid rgba(0,0,0,0)}.bt-dropdown__control--filled.is-open{background:var(--bt-color-background);border-color:var(--bt-color-accent);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-dropdown__control--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-dropdown__control--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-dropdown__control--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-dropdown__value{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bt-dropdown__placeholder{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--bt-color-text-tertiary)}.bt-dropdown__icon{display:inline-flex;align-items:center;justify-content:center;color:var(--bt-color-text-secondary);transition:transform var(--bt-transition-base)}.bt-dropdown__icon.is-open{transform:rotate(180deg)}.bt-dropdown__list{display:none;position:fixed;z-index:var(--bt-z-popup);box-sizing:border-box;width:max-content;background:var(--bt-color-background);border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-md);box-shadow:var(--bt-elevation-2);max-height:18rem;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--bt-color-border-light) rgba(0,0,0,0);padding:var(--bt-spacing-xs) 0;list-style:none;margin:0}.bt-dropdown__list:has(>.bt-dropdown__options){max-height:none;overflow:hidden;padding:0}.bt-dropdown__search{contain:inline-size;display:flex;align-items:center;gap:var(--bt-spacing-sm);padding:var(--bt-spacing-sm) var(--bt-spacing-md);border-bottom:1px solid var(--bt-color-border)}.bt-dropdown__search-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--bt-color-text-secondary)}.bt-dropdown__search-input{flex:1 1 auto;min-width:0;border:none;outline:none;background:rgba(0,0,0,0);color:var(--bt-color-text-primary);border-radius:var(--bt-radius-sm);font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);line-height:var(--bt-line-height-normal);transition:box-shadow var(--bt-transition-fast)}.bt-dropdown__search-input::placeholder{color:var(--bt-color-text-tertiary)}.bt-dropdown__search-input:focus-visible{box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-dropdown__options{max-height:18rem;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--bt-color-border-light) rgba(0,0,0,0);padding:var(--bt-spacing-xs) 0;margin:0;list-style:none}.bt-dropdown__empty{padding:var(--bt-spacing-md) var(--bt-spacing-lg);color:var(--bt-color-text-tertiary);font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);line-height:var(--bt-line-height-normal);text-align:center;list-style:none}.bt-dropdown__option{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:flex-start;gap:var(--bt-spacing-sm);padding:var(--bt-spacing-sm) var(--bt-spacing-lg);cursor:pointer;color:var(--bt-color-text-primary);background:rgba(0,0,0,0);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal)}.bt-dropdown__option[hidden]{display:none}.bt-dropdown__option:hover,.bt-dropdown__option.is-active{background:var(--bt-color-background-secondary)}.bt-dropdown__option.is-selected{font-weight:var(--bt-font-weight-medium)}.bt-dropdown__option.is-disabled{cursor:not-allowed;color:var(--bt-color-text-tertiary)}.bt-dropdown__option-content{flex:1 1 auto;min-width:0}.bt-dropdown__option-check{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--bt-spacing-lg);color:var(--bt-color-accent)}.bt-dropdown__option-check svg{opacity:0;transition:opacity var(--bt-transition-fast)}.bt-dropdown__option.is-selected .bt-dropdown__option-check svg{opacity:1}.bt-modal{position:fixed;top:0;right:0;bottom:0;left:0;padding-right:var(--bt-scrollbar-width, 0px);display:none;place-items:center;background:var(--bt-color-overlay);z-index:var(--bt-z-modal)}.bt-modal.is-open{display:grid;grid-template-columns:minmax(0, 1fr)}.bt-modal__panel{position:relative;background:var(--bt-color-background);border-radius:var(--bt-radius-lg);box-shadow:var(--bt-elevation-3);max-width:calc(100% - 32px);overflow:hidden}.bt-modal__header{padding:var(--bt-spacing-lg);padding-right:calc(var(--bt-spacing-lg) + 32px);border-bottom:1px solid var(--bt-color-border);color:var(--bt-color-text-primary);font-size:var(--bt-font-size-xl);font-weight:var(--bt-font-weight-semibold);line-height:1.3}.bt-modal__close{position:absolute;top:var(--bt-spacing-md);right:var(--bt-spacing-md);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:none;background:rgba(0,0,0,0);color:var(--bt-color-text-tertiary);border-radius:var(--bt-radius-md);cursor:pointer;transition:background var(--bt-transition-fast),color var(--bt-transition-fast)}.bt-modal__close:hover{background:var(--bt-color-hover);color:var(--bt-color-text-primary)}.bt-modal__close:focus-visible{outline:none;box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-modal__body{padding:var(--bt-spacing-lg)}.bt-modal__footer{padding:var(--bt-spacing-lg);border-top:1px solid var(--bt-color-border);display:flex;justify-content:flex-end;gap:var(--bt-spacing-sm)}@keyframes bt-alert-fade-in{from{opacity:0}to{opacity:1}}@keyframes bt-alert-slide-up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.bt-alert__overlay{position:fixed;top:0;right:0;bottom:0;left:0;padding-right:var(--bt-scrollbar-width, 0px);background:var(--bt-color-overlay);display:none;align-items:center;justify-content:center;z-index:var(--bt-z-popup);animation:bt-alert-fade-in var(--bt-transition-base)}.bt-alert__overlay.is-open{display:flex}.bt-alert__modal{background:var(--bt-color-background);border-radius:var(--bt-radius-lg);min-width:320px;max-width:480px;box-shadow:var(--bt-elevation-4);animation:bt-alert-slide-up var(--bt-transition-slow);overflow:hidden}.bt-alert__title{font-size:var(--bt-font-size-lg);font-weight:var(--bt-font-weight-semibold);line-height:var(--bt-line-height-normal);color:var(--bt-color-info-text);padding:var(--bt-spacing-md) var(--bt-spacing-xl) var(--bt-spacing-xs)}.bt-alert__message{font-size:var(--bt-font-size-base);color:var(--bt-color-text-secondary);padding:var(--bt-spacing-xl);line-height:1.75}.bt-alert__actions{display:flex;gap:var(--bt-spacing-sm);align-items:center;padding:0 var(--bt-spacing-xl) var(--bt-spacing-xl);justify-content:flex-end}.bt-alert--info .bt-alert__title{color:var(--bt-color-info-text)}.bt-alert--success .bt-alert__title{color:var(--bt-color-success-text)}.bt-alert--warning .bt-alert__title{color:var(--bt-color-warning-text)}.bt-alert--error .bt-alert__title{color:var(--bt-color-error-text)}.bt-card{background:var(--bt-color-background);border-radius:var(--bt-radius-lg);box-shadow:var(--bt-elevation-1);padding:var(--bt-spacing-lg);transition:transform var(--bt-transition-base),box-shadow var(--bt-transition-base)}.bt-card--bordered{border:1px solid var(--bt-color-border)}.bt-card--shadow-none{box-shadow:none}.bt-card--shadow-sm{box-shadow:var(--bt-elevation-1)}.bt-card--shadow-md{box-shadow:var(--bt-elevation-2)}.bt-card--shadow-lg{box-shadow:var(--bt-elevation-3)}.bt-card--p-none{padding:0}.bt-card--p-sm{padding:var(--bt-spacing-sm)}.bt-card--p-md{padding:var(--bt-spacing-lg)}.bt-card--p-lg{padding:var(--bt-spacing-2xl)}.bt-card--accent{background:var(--bt-color-accent);color:var(--bt-color-accent-on-surface)}.bt-card--accent .bt-card__title{color:var(--bt-color-accent-on-surface)}.bt-card--accent .bt-card__footer{border-top-color:var(--bt-color-hover-on-dark)}.bt-card--outlined{background:rgba(0,0,0,0);border:1px solid var(--bt-color-border);box-shadow:none}.bt-card--glass{background:rgba(0,0,0,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08);color:var(--bt-color-on-primary)}.bt-card--glass .bt-card__title{color:var(--bt-color-on-primary)}.bt-card--glass .bt-card__footer{border-top-color:var(--bt-color-hover-on-dark)}[data-theme=dark] .bt-card--glass{background:rgba(255,255,255,.05);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px rgba(0,0,0,.12)}@media(prefers-color-scheme: dark){:root:not([data-theme]) .bt-card--glass{background:rgba(255,255,255,.05);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px rgba(0,0,0,.12)}}.bt-card--interactive{cursor:pointer}.bt-card--interactive:hover{transform:translateY(-2px);box-shadow:var(--bt-elevation-2)}.bt-card__title{font-size:var(--bt-font-size-xl);font-weight:var(--bt-font-weight-semibold);line-height:1.3;margin-top:0;margin-bottom:var(--bt-spacing-md);color:var(--bt-color-text-primary)}.bt-card__body{width:100%}.bt-card__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--bt-spacing-sm);margin-top:var(--bt-spacing-lg);padding-top:var(--bt-spacing-lg);border-top:1px solid var(--bt-color-border)}.bt-card__footer--start{justify-content:flex-start}.bt-card__footer--between{justify-content:space-between}.bt-card__footer--end{justify-content:flex-end}@keyframes bt-spinner-spin{to{transform:rotate(360deg)}}.bt-spinner{display:inline-block;box-sizing:border-box;width:var(--bt-spinner-size, 24px);height:var(--bt-spinner-size, 24px);border-radius:50%;border:2px solid var(--bt-color-border);border-top-color:var(--bt-color-accent);animation:bt-spinner-spin .8s linear infinite}.bt-pagination{display:flex;align-items:center;justify-content:center;gap:var(--bt-spacing-sm);margin-top:var(--bt-spacing-3xl)}.bt-pagination__item{border:1px solid var(--bt-color-border);background:var(--bt-color-background);border-radius:var(--bt-radius-md);padding:6px 10px;min-width:36px;font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-primary);cursor:pointer;transition:background var(--bt-transition-base),border-color var(--bt-transition-base)}.bt-pagination__item:hover:not(:disabled){background:var(--bt-color-background-secondary)}.bt-pagination__item:disabled{opacity:.5;cursor:not-allowed}.bt-pagination__pages{display:flex;align-items:center;gap:6px}.bt-pagination__page{border:0;background:rgba(0,0,0,0);min-width:36px;height:36px;border-radius:var(--bt-radius-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-secondary);cursor:pointer;transition:background var(--bt-transition-base),color var(--bt-transition-base)}.bt-pagination__page:hover{background:var(--bt-color-background-secondary);color:var(--bt-color-text-primary)}.bt-pagination__page--active{color:var(--bt-color-text-primary);font-weight:var(--bt-font-weight-semibold)}.bt-pagination__ellipsis{min-width:20px;text-align:center;font-size:var(--bt-font-size-sm);color:var(--bt-color-text-tertiary)}.bt-date-picker{display:flex;flex-direction:column;gap:var(--bt-spacing-xs)}.bt-date-picker__label{color:var(--bt-color-text-primary);margin-bottom:var(--bt-spacing-xs);font-weight:var(--bt-font-weight-medium);font-size:var(--bt-font-size-sm);line-height:var(--bt-line-height-normal)}.bt-date-picker__label-required{margin-left:var(--bt-spacing-xs);color:var(--bt-color-error-text)}.bt-date-picker__fields{display:flex;gap:var(--bt-spacing-sm)}.bt-date-picker__select{min-width:88px;height:44px;padding:0 var(--bt-spacing-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);color:var(--bt-color-text-primary);background-color:var(--bt-color-background);border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-sm);cursor:pointer;transition:border-color var(--bt-transition-fast),box-shadow var(--bt-transition-fast),background-color var(--bt-transition-fast);appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--bt-color-text-secondary) 50%),linear-gradient(135deg, var(--bt-color-text-secondary) 50%, transparent 50%);background-position:calc(100% - 16px) calc(50% - 3px),calc(100% - 11px) calc(50% - 3px);background-size:5px 5px;background-repeat:no-repeat}.bt-date-picker__select:hover:not(:disabled){border-color:var(--bt-color-accent);background-color:var(--bt-color-background-secondary)}.bt-date-picker__select:focus-visible{outline:none;border-color:var(--bt-color-accent);box-shadow:0 0 0 3px var(--bt-color-border-light)}.bt-date-picker__select:disabled{cursor:not-allowed;color:var(--bt-color-text-disabled);background-color:var(--bt-color-background-secondary);border-color:var(--bt-color-border-light)}.bt-date-picker--full-width{width:100%}.bt-date-picker--full-width .bt-date-picker__fields{width:100%}.bt-date-picker--full-width .bt-date-picker__select{flex:1;min-width:0}.bt-file-input{position:relative;display:inline-flex;align-items:center}.bt-file-input:hover .bt-file-input__label{border-color:var(--bt-color-border-light)}.bt-file-input__control{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.bt-file-input__label{border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-md);background:var(--bt-color-background);padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);color:var(--bt-color-text-primary);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base)}.bt-file-input__control:focus-visible+.bt-file-input__label{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-accent)}.bt-file-input--disabled{cursor:not-allowed}.bt-file-input--disabled .bt-file-input__control{cursor:not-allowed}.bt-file-input--disabled .bt-file-input__label{opacity:.6;cursor:not-allowed}.bt-file-input--disabled:hover .bt-file-input__label{border-color:var(--bt-color-border)}.bt-toast{z-index:var(--bt-z-toast);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);overflow-wrap:anywhere;word-break:keep-all;border-radius:var(--bt-radius-md);box-shadow:var(--bt-elevation-3)}.bt-hidden{display:none !important}.bt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.bt-sr-only-focusable{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.bt-sr-only-focusable:focus-visible{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;clip-path:none;white-space:normal}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active,textarea:-webkit-autofill,select:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--bt-color-background) inset;box-shadow:0 0 0 1000px var(--bt-color-background) inset;-webkit-text-fill-color:var(--bt-color-text-primary);caret-color:var(--bt-color-text-primary)}.bt-text-field__input--filled:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--bt-color-background-secondary) inset;box-shadow:0 0 0 1000px var(--bt-color-background-secondary) inset}.bt-text-field__input--filled:-webkit-autofill:focus-visible{-webkit-box-shadow:0 0 0 1000px var(--bt-color-background) inset;box-shadow:0 0 0 1000px var(--bt-color-background) inset}input:-webkit-autofill:disabled,textarea:-webkit-autofill:disabled,select:-webkit-autofill:disabled{-webkit-box-shadow:0 0 0 1000px var(--bt-color-background-secondary) inset;box-shadow:0 0 0 1000px var(--bt-color-background-secondary) inset;-webkit-text-fill-color:var(--bt-color-text-tertiary)}@media(prefers-reduced-motion: reduce){:root{--bt-transition-fast: 0s;--bt-transition-base: 0s;--bt-transition-slow: 0s}.bt-alert__overlay,.bt-alert__modal{animation:none}.bt-card--interactive:hover{transform:none}.bt-spinner{animation-duration:2.4s}}
@@ -5,31 +5,31 @@
5
5
  * @version 1.0.0
6
6
  * @license Bigtablet Inc. Open Source License - see LICENSE at the repo root
7
7
  * (https://github.com/Bigtablet/.github/blob/main/BIGTABLET_LICENSE.md)
8
- */((O,x)=>{typeof exports=="object"&&typeof module<"u"?module.exports=x():typeof define=="function"&&define.amd?define(x):(O=O||self,O.Bigtablet=x());})(void 0,()=>{function O(o="bt"){return `${o}_${Math.random().toString(36).substring(2,9)}`}function x(o){return String(o).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function w(o,i,t,a){return o.addEventListener(i,t,a),()=>o.removeEventListener(i,t,a)}function L(o,i=document){return i.querySelector(o)}function _(o,i=document){return Array.from(i.querySelectorAll(o))}let W=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function he(){let o=document.createElement("div");o.style.cssText="position:fixed;top:0;left:0;right:0;height:0;visibility:hidden;pointer-events:none",document.documentElement.appendChild(o);let i=o.getBoundingClientRect().width;return o.remove(),i<=0?0:Math.max(0,window.innerWidth-i)}function B(o){let i=String(o).trim().match(/^rgba?\(([^)]+)\)$/i);if(!i)return null;let t=i[1].split(/[\s,/]+/).filter(Boolean).map(Number);return t.length<3||t.some(Number.isNaN)?null:[t[0],t[1],t[2],t.length>3?t[3]:1]}function me(o){let i=B(o);if(i)return i;let t=document.createElement("div");t.style.cssText="position:fixed;top:0;left:0;width:0;height:0;visibility:hidden",t.style.color=o,document.documentElement.appendChild(t);let a=window.getComputedStyle(t).color;return t.remove(),B(a)}function Y(o,i){return [Math.round(o[0]*o[3]+i[0]*(1-o[3])),Math.round(o[1]*o[3]+i[1]*(1-o[3])),Math.round(o[2]*o[3]+i[2]*(1-o[3])),1]}function ve(o,i){return 1-(1-o)**Math.max(1,i)}let k=null,q=null;function ye(o,i){let t=[255,255,255,1],a=window.getComputedStyle(o).getPropertyValue("--bt-color-overlay").trim()||"rgba(0, 0, 0, 0.5)",c=me(a);if(!c||c[3]<=0)return null;let n=[B(window.getComputedStyle(o).backgroundColor),B(window.getComputedStyle(i).backgroundColor)].find(h=>h!==null&&h[3]>0)||t;return [c,Y(n,t)]}function U(o,i,t){if(!k||!q)return;let a=ve(k[3],i),c=Y([k[0],k[1],k[2],a],q);o.style.transition=t?"background-color var(--bt-transition-base)":"",o.style.backgroundColor=`rgb(${c[0]}, ${c[1]}, ${c[2]})`;}function Z(o){let i=document.body,t=document.documentElement,a=parseInt(i.dataset.btOpenModals||"0",10);if(a===0){let c=he();i.dataset.btOriginalOverflow=i.style.overflow,i.dataset.btOriginalGutter=t.style.scrollbarGutter,i.dataset.btOriginalPaddingRight=i.style.paddingRight,i.dataset.btOriginalScrollbarWidthVar=t.style.getPropertyValue("--bt-scrollbar-width"),i.dataset.btOriginalBackgroundColor=t.style.backgroundColor,i.dataset.btOriginalTransition=t.style.transition;let p=document.scrollingElement||t,n=p.scrollHeight>p.clientHeight,h=typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("scrollbar-gutter: stable");if(c>0&&t.style.setProperty("--bt-scrollbar-width",`${c}px`),n&&c>0)if(h)t.style.scrollbarGutter="stable";else {let y=parseFloat(window.getComputedStyle(i).paddingRight)||0;i.style.paddingRight=`${y+c}px`;}if(c>0&&h){let y=ye(t,i);y&&(k=y[0],q=y[1],U(t,1,o));}t.setAttribute("data-bt-scroll-locked",""),i.style.overflow="hidden";}i.dataset.btOpenModals=String(a+1),a>0&&U(t,a+1,o);}function G(o){let i=document.body,t=document.documentElement,a=parseInt(i.dataset.btOpenModals||"1",10)-1;a<=0?(i.style.overflow=i.dataset.btOriginalOverflow||"",i.style.paddingRight=i.dataset.btOriginalPaddingRight||"",t.style.scrollbarGutter=i.dataset.btOriginalGutter||"",t.style.backgroundColor=i.dataset.btOriginalBackgroundColor||"",t.style.transition=i.dataset.btOriginalTransition||"",t.removeAttribute("data-bt-scroll-locked"),i.dataset.btOriginalScrollbarWidthVar?t.style.setProperty("--bt-scrollbar-width",i.dataset.btOriginalScrollbarWidthVar):t.style.removeProperty("--bt-scrollbar-width"),delete i.dataset.btOpenModals,delete i.dataset.btOriginalOverflow,delete i.dataset.btOriginalGutter,delete i.dataset.btOriginalPaddingRight,delete i.dataset.btOriginalScrollbarWidthVar,delete i.dataset.btOriginalBackgroundColor,delete i.dataset.btOriginalTransition,k=null,q=null):(i.dataset.btOpenModals=String(a),U(t,a,o));}function ee(o){return String(o).toLowerCase().replace(/\s+/g,"")}function te(o){if(o!==void 0)return o!=="false"}let we='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>',_e='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>';function ne(o,i={}){let t=typeof o=="string"?L(o):o;if(!t)return null;let a={placeholder:"Select...",disabled:false,multiple:false,searchable:false,searchPlaceholder:"\uAC80\uC0C9\u2026",emptyText:"\uACB0\uACFC \uC5C6\uC74C",selectedSummary:e=>`${e}\uAC1C \uC120\uD0DD`,onValueChange:null,...i};if(i.multiple===void 0){let e=te(t.dataset.multiple);e!==void 0&&(a.multiple=e);}if(i.searchable===void 0){let e=te(t.dataset.searchable);e!==void 0&&(a.searchable=e);}if(i.searchPlaceholder===void 0&&t.dataset.searchPlaceholder&&(a.searchPlaceholder=t.dataset.searchPlaceholder),i.emptyText===void 0&&t.dataset.emptyText&&(a.emptyText=t.dataset.emptyText),i.placeholder===void 0&&t.dataset.placeholder)a.placeholder=t.dataset.placeholder;else if(i.placeholder===void 0){let e=t.querySelector(".bt-dropdown__placeholder")?.textContent.trim();e&&(a.placeholder=e);}let c=a.multiple===true,p=a.searchable===true,n={isOpen:false,value:null,values:[],activeIndex:-1,options:[],visible:[],committedQuery:""},h=false,y=t.id||O("dropdown"),r=t.querySelector(".bt-dropdown__control"),l=t.querySelector(".bt-dropdown__list");if(!r||!l)return console.warn("Dropdown: Missing required elements (.bt-dropdown__control, .bt-dropdown__list)"),null;let d=l.querySelector(".bt-dropdown__options");if(!d)if(p){let e=l,s=Array.from(e.classList).filter(v=>v.startsWith("bt-dropdown__list")),u=document.createElement("div");u.className=s.join(" "),e.classList.remove(...s),e.classList.add("bt-dropdown__options"),e.style.display="",e.parentNode.insertBefore(u,e),u.appendChild(e),d=e,l=u;}else d=l;(r.disabled||r.classList.contains("is-disabled"))&&(a.disabled=true),r.disabled=a.disabled,r.setAttribute("aria-disabled",a.disabled?"true":"false"),r.classList.toggle("is-disabled",a.disabled);let g=()=>_(".bt-dropdown__option",d).map(e=>({value:e.dataset.value!==void 0?e.dataset.value:e.textContent.trim(),label:e.textContent.trim(),disabled:e.classList.contains("is-disabled")})),f;if(t.dataset.options)try{let e=JSON.parse(t.dataset.options);Array.isArray(e)?f=e:console.warn("Dropdown: data-options is not a JSON array");}catch(e){console.warn("Dropdown: invalid JSON in data-options",e);}f===void 0&&(f=Array.isArray(a.options)?a.options:g()),n.options=f;let m=_(".bt-dropdown__option",d);if(m.length===0&&n.options.length>0){let e=d.tagName==="UL"||d.tagName==="OL"?"li":"div";n.options.forEach(s=>{let u=document.createElement(e);u.className="bt-dropdown__option",s.disabled&&u.classList.add("is-disabled"),u.dataset.value=s.value,u.textContent=s.label,d.appendChild(u);}),m=_(".bt-dropdown__option",d);}d.id=d.id||`${y}_listbox`,d.setAttribute("role","listbox"),c&&d.setAttribute("aria-multiselectable","true"),r.setAttribute("aria-haspopup","listbox"),r.setAttribute("aria-expanded","false"),r.setAttribute("aria-controls",d.id),p?r.removeAttribute("role"):r.setAttribute("role","combobox"),m.forEach((e,s)=>{if(e.id=e.id||`${y}_option_${s}`,e.setAttribute("role","option"),e.setAttribute("aria-selected","false"),n.options[s]?.disabled&&e.setAttribute("aria-disabled","true"),c&&!e.querySelector(".bt-dropdown__option-check")){let u=document.createElement("span");u.className="bt-dropdown__option-check",u.setAttribute("aria-hidden","true"),u.innerHTML=_e,e.insertBefore(u,e.firstChild);}});let b=null,C=null;if(p){let e=l.querySelector(".bt-dropdown__search");if(!e){e=document.createElement("div"),e.className="bt-dropdown__search";let s=document.createElement("span");s.className="bt-dropdown__search-icon",s.setAttribute("aria-hidden","true"),s.innerHTML=we,e.appendChild(s),l.insertBefore(e,l.firstChild);}if(b=e.querySelector(".bt-dropdown__search-input"),b||(b=document.createElement("input"),b.type="text",b.className="bt-dropdown__search-input",b.autocomplete="off",e.appendChild(b)),b.placeholder=a.searchPlaceholder,b.setAttribute("aria-label",a.searchPlaceholder),b.setAttribute("role","combobox"),b.setAttribute("aria-autocomplete","list"),b.setAttribute("aria-expanded","false"),b.setAttribute("aria-controls",d.id),C=d.querySelector(".bt-dropdown__empty"),!C){let s=d.tagName==="UL"||d.tagName==="OL"?"li":"div";C=document.createElement(s),C.className="bt-dropdown__empty",d.appendChild(C);}C.textContent=a.emptyText,C.hidden=true;}let Ae=()=>p?b:r,A=_('input[type="hidden"]',t),V=a.name||t.dataset.name||A[0]?.name||null;if(A.length===0&&V){let e=document.createElement("input");e.type="hidden",e.name=V,t.appendChild(e),A.push(e);}function ke(){if(!V)return;let e=c?n.values.map(s=>s==null?"":String(s)):[n.value==null?"":String(n.value)];for(;A.length>e.length;)A.pop().remove();for(;A.length<e.length;){let s=document.createElement("input");s.type="hidden",s.name=V,t.appendChild(s),A.push(s);}A.forEach((s,u)=>{s.value=e[u];});}function F(e){return n.options.find(s=>String(s.value)===String(e))}function j(e){return e===void 0?false:c?n.values.some(s=>String(s)===String(e)):n.value!=null&&String(n.value)===String(e)}function Ee(){return n.values.map(F).filter(Boolean)}function Q(){let e=r.querySelector(".bt-dropdown__value, .bt-dropdown__placeholder");if(e){let s=a.placeholder,u=false;if(c)u=n.values.length>0,u&&(s=a.selectedSummary(n.values.length));else {let v=F(n.value);u=!!v,v&&(s=v.label);}e.textContent=s,e.classList.toggle("bt-dropdown__value",u),e.classList.toggle("bt-dropdown__placeholder",!u);}m.forEach((s,u)=>{let v=j(n.options[u]?.value);s.classList.toggle("is-selected",v),s.setAttribute("aria-selected",v?"true":"false");}),ke();}function T(e){c?(n.values=e==null?[]:Array.isArray(e)?e.slice():[e],Q(),a.onValueChange&&a.onValueChange(n.values.slice(),Ee())):(n.value=Array.isArray(e)?e[0]??null:e,Q(),a.onValueChange&&a.onValueChange(n.value,F(n.value)??null));}function Se(e){let s=j(e.value)?n.values.filter(u=>String(u)!==String(e.value)):[...n.values,e.value];T(s);}function I(){let e=null,s=null;m.forEach((v,P)=>{let $=P===n.activeIndex;v.classList.toggle("is-active",$),$&&(e=v.id,s=v);}),s?.scrollIntoView?.({block:"nearest"});let u=Ae();u&&(e?u.setAttribute("aria-activedescendant",e):u.removeAttribute("aria-activedescendant"));}function se(){return n.visible.find(e=>!n.options[e]?.disabled)??-1}function M(){let e=p?ee(n.committedQuery):"";n.visible=[],m.forEach((s,u)=>{let v=n.options[u]?.label??s.textContent,P=e===""||ee(v).includes(e);s.hidden=!P,P&&n.visible.push(u);}),C&&(C.hidden=n.visible.length>0),n.isOpen?n.visible.includes(n.activeIndex)||(n.activeIndex=se()):n.activeIndex=-1,I();}let N=null,H=null;function le(){N||(N={parent:l.parentNode,next:l.nextSibling},document.body.appendChild(l));let e=r.getBoundingClientRect(),s=4,u=8,v=window.innerWidth-u*2;l.style.minWidth=`${Math.min(e.width,v)}px`,l.style.maxWidth=`${v}px`;let P=l.offsetWidth,$=window.innerHeight-u*2;l.style.maxHeight="";let pe=l.offsetHeight,X=Math.min(pe,$);pe>$&&(l.style.maxHeight=`${$}px`);let be=window.innerHeight-e.bottom-s-u,Me=e.top-s-u,ge=X>be&&Me>be;l.classList.toggle("bt-dropdown__list--up",ge),l.style.left=`${re(e.left,P,window.innerWidth,u)}px`;let Be=ge?e.top-s-X:e.bottom+s;l.style.top=`${re(Be,X,window.innerHeight,u)}px`;}function re(e,s,u,v){return Math.max(v,Math.min(e,u-v-s))}function Le(){if(H)return;let e=0,s=()=>{e||(e=requestAnimationFrame(()=>{e=0,n.isOpen&&le();}));};window.addEventListener("scroll",s,true),window.addEventListener("resize",s),H=()=>{e&&cancelAnimationFrame(e),window.removeEventListener("scroll",s,true),window.removeEventListener("resize",s),H=null;};}function de(){H?.(),N&&(N.parent?.insertBefore(l,N.next),N=null,l.style.left="",l.style.top="",l.style.minWidth="",l.style.maxWidth="",l.style.maxHeight="");}function E(){if(a.disabled||r.disabled)return;n.isOpen=true,r.classList.add("is-open"),r.setAttribute("aria-expanded","true"),l.style.display="block",b&&b.setAttribute("aria-expanded","true"),le(),Le(),n.activeIndex=n.options.findIndex(s=>j(s.value)&&!s.disabled),M(),b&&b.focus();let e=r.querySelector(".bt-dropdown__icon");e&&e.classList.add("is-open");}function D(){n.isOpen=false,r.classList.remove("is-open"),r.setAttribute("aria-expanded","false"),r.removeAttribute("aria-activedescendant"),l.style.display="none",de(),b&&(b.value="",b.setAttribute("aria-expanded","false"),b.removeAttribute("aria-activedescendant")),n.committedQuery="",h=false,n.activeIndex=-1,M();let e=r.querySelector(".bt-dropdown__icon");e&&e.classList.remove("is-open");}function z(){let e=n.isOpen;D(),e&&p&&r.focus();}function ce(){n.isOpen?D():E();}function R(e){let s=n.visible.filter(v=>!n.options[v]?.disabled);if(s.length===0)return;let u=s.indexOf(n.activeIndex);n.activeIndex=u===-1?e===1?s[0]:s[s.length-1]:s[(u+e+s.length)%s.length],I();}function ue(e){let s=n.options[e];!s||s.disabled||(c?Se(s):(T(s.value),z()));}function fe(){n.visible.includes(n.activeIndex)&&ue(n.activeIndex);}function Te(e){e.preventDefault(),ce();}function Ne(e){if(!a.disabled)switch(e.key){case " ":case "Enter":e.preventDefault(),n.isOpen?fe():E();break;case "ArrowDown":e.preventDefault(),n.isOpen?R(1):E();break;case "ArrowUp":e.preventDefault(),n.isOpen?R(-1):E();break;case "Home":e.preventDefault(),E(),n.activeIndex=se(),I();break;case "End":e.preventDefault(),E();for(let s=n.visible.length-1;s>=0;s--)if(!n.options[n.visible[s]]?.disabled){n.activeIndex=n.visible[s],I();break}break;case "Escape":e.preventDefault(),D();break;case "Tab":D();break}}function De(e){if(!(e.isComposing||e.keyCode===229))switch(e.key){case "ArrowDown":e.preventDefault(),R(1);break;case "ArrowUp":e.preventDefault(),R(-1);break;case "Enter":e.preventDefault(),fe();break;case "Escape":e.preventDefault(),z();break;case "Tab":z();break}}function Pe(e){!t.contains(e.target)&&!l.contains(e.target)&&D();}function $e(e){return s=>{s.preventDefault(),ue(e);}}function Ie(e){return ()=>{n.options[e]?.disabled||(n.activeIndex=e,I());}}let S=[w(r,"click",Te),w(r,"keydown",Ne),w(document,"mousedown",Pe)];m.forEach((e,s)=>{S.push(w(e,"click",$e(s))),S.push(w(e,"mouseenter",Ie(s)));}),b&&(S.push(w(b,"compositionstart",()=>{h=true;})),S.push(w(b,"compositionend",e=>{h=false,n.committedQuery=e.target.value,M();})),S.push(w(b,"input",e=>{h||(n.committedQuery=e.target.value,M());})),S.push(w(b,"keydown",De)));let J=A.map(e=>e.value).filter(e=>e!=="");if(l.style.display="none",M(),Q(),c){let e=Array.isArray(a.defaultValue)?a.defaultValue:a.defaultValue!=null?[a.defaultValue]:J;e.length>0&&T(e);}else a.defaultValue!=null?T(a.defaultValue):J[0]&&T(J[0]);return {getValue:()=>c?n.values.slice():n.value,setValue:T,open:E,close:D,toggle:ce,setDisabled:e=>{a.disabled=e,r.disabled=e,r.setAttribute("aria-disabled",e?"true":"false"),r.classList.toggle("is-disabled",e);},destroy:()=>{de(),S.forEach(e=>{e();});}}}function ie(o,i={}){let t=typeof o=="string"?L(o):o;if(!t)return null;let a={closeOnOverlay:true,closeOnEscape:true,onOpen:null,onClose:null,...i},c={isOpen:false},p=t.querySelector(".bt-modal__panel"),n=null,h=false;if(p&&(p.setAttribute("role","dialog"),p.setAttribute("aria-modal","true"),!p.hasAttribute("aria-label")&&!p.hasAttribute("aria-labelledby"))){let f=p.querySelector(".bt-modal__header");f?(f.id=f.id||O("modal_title"),p.setAttribute("aria-labelledby",f.id)):p.setAttribute("aria-label","Dialog");}function y(){if(!c.isOpen){if(c.isOpen=true,t.classList.add("is-open"),Z(),n=document.activeElement,p){let f=p.querySelector(W);f?f.focus():(p.setAttribute("tabindex","-1"),h=true,p.focus());}a.onOpen&&a.onOpen();}}function r(){c.isOpen&&(c.isOpen=false,t.classList.remove("is-open"),G(false),h&&p&&(p.removeAttribute("tabindex"),h=false),n&&typeof n.focus=="function"&&n.focus(),n=null,a.onClose&&a.onClose());}function l(f){a.closeOnOverlay&&f.target===t&&r();}function d(f){if(c.isOpen){if(a.closeOnEscape&&f.key==="Escape"){r();return}if(f.key==="Tab"&&p){let m=_(W,p);if(m.length===0){f.preventDefault();return}let b=m[0],C=m[m.length-1];f.shiftKey&&document.activeElement===b?(f.preventDefault(),C.focus()):!f.shiftKey&&document.activeElement===C&&(f.preventDefault(),b.focus());}}}let g=[w(t,"click",l),w(document,"keydown",d)];return _("[data-modal-close]",t).forEach(f=>{g.push(w(f,"click",r));}),{isOpen:()=>c.isOpen,open:y,close:r,toggle:()=>c.isOpen?r():y(),destroy:()=>{g.forEach(f=>{f();}),c.isOpen&&G();}}}let Ce="bt-button--filled",xe="bt-button--outline";function Oe(o={}){let i={title:"",message:"",variant:"info",confirmText:"\uD655\uC778",cancelText:"\uCDE8\uC18C",showCancel:false,destructive:false,actionsAlign:"right",closeOnOverlay:true,onConfirm:null,onCancel:null,...o},t=document.createElement("div");t.className=`bt-alert__overlay bt-alert--${i.variant} is-open`,t.innerHTML=`
8
+ */((O,A)=>{typeof exports=="object"&&typeof module<"u"?module.exports=A():typeof define=="function"&&define.amd?define(A):(O=O||self,O.Bigtablet=A());})(void 0,()=>{function O(n="bt"){return `${n}_${Math.random().toString(36).substring(2,9)}`}function A(n){return String(n).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function _(n,l,i,a){return n.addEventListener(l,i,a),()=>n.removeEventListener(l,i,a)}function S(n,l=document){return l.querySelector(n)}function w(n,l=document){return Array.from(l.querySelectorAll(n))}let V=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function Q(){let n=document.createElement("div");n.style.cssText="position:fixed;top:0;left:0;right:0;height:0;visibility:hidden;pointer-events:none",document.documentElement.appendChild(n);let l=n.getBoundingClientRect().width;return n.remove(),l<=0?0:Math.max(0,window.innerWidth-l)}function z(n,l){let i=l.dataset.btOriginalScrollbarWidthVar;i?n.style.setProperty("--bt-scrollbar-width",i):n.style.removeProperty("--bt-scrollbar-width");}function J(){let n=document.body,l=document.documentElement,i=parseInt(n.dataset.btOpenModals||"0",10);if(i===0){let a=Q();if(n.dataset.btOriginalOverflow=n.style.overflow,n.dataset.btOriginalGutter=l.style.scrollbarGutter,n.dataset.btOriginalPaddingRight=n.style.paddingRight,n.dataset.btOriginalScrollbarWidthVar=l.style.getPropertyValue("--bt-scrollbar-width"),a>0&&l.style.setProperty("--bt-scrollbar-width",`${a}px`),n.style.overflow="hidden",a>0){l.style.scrollbarGutter="auto";let f=parseFloat(window.getComputedStyle(n).paddingRight)||0;n.style.paddingRight=`${f+a}px`,Q()>0&&(n.style.paddingRight=n.dataset.btOriginalPaddingRight||"",z(l,n));}l.setAttribute("data-bt-scroll-locked","");}n.dataset.btOpenModals=String(i+1);}function H(){let n=document.body,l=document.documentElement,i=parseInt(n.dataset.btOpenModals||"1",10)-1;i<=0?(n.style.overflow=n.dataset.btOriginalOverflow||"",n.style.paddingRight=n.dataset.btOriginalPaddingRight||"",l.style.scrollbarGutter=n.dataset.btOriginalGutter||"",l.removeAttribute("data-bt-scroll-locked"),z(l,n),delete n.dataset.btOpenModals,delete n.dataset.btOriginalOverflow,delete n.dataset.btOriginalGutter,delete n.dataset.btOriginalPaddingRight,delete n.dataset.btOriginalScrollbarWidthVar):n.dataset.btOpenModals=String(i);}function X(n){return String(n).toLowerCase().replace(/\s+/g,"")}function Y(n){if(n!==void 0)return n!=="false"}let pe='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>',be='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>';function Z(n,l={}){let i=typeof n=="string"?S(n):n;if(!i)return null;let a={placeholder:"Select...",disabled:false,multiple:false,searchable:false,searchPlaceholder:"\uAC80\uC0C9\u2026",emptyText:"\uACB0\uACFC \uC5C6\uC74C",selectedSummary:e=>`${e}\uAC1C \uC120\uD0DD`,onValueChange:null,...l};if(l.multiple===void 0){let e=Y(i.dataset.multiple);e!==void 0&&(a.multiple=e);}if(l.searchable===void 0){let e=Y(i.dataset.searchable);e!==void 0&&(a.searchable=e);}if(l.searchPlaceholder===void 0&&i.dataset.searchPlaceholder&&(a.searchPlaceholder=i.dataset.searchPlaceholder),l.emptyText===void 0&&i.dataset.emptyText&&(a.emptyText=i.dataset.emptyText),l.placeholder===void 0&&i.dataset.placeholder)a.placeholder=i.dataset.placeholder;else if(l.placeholder===void 0){let e=i.querySelector(".bt-dropdown__placeholder")?.textContent.trim();e&&(a.placeholder=e);}let f=a.multiple===true,p=a.searchable===true,t={isOpen:false,value:null,values:[],activeIndex:-1,options:[],visible:[],committedQuery:""},v=false,y=i.id||O("dropdown"),r=i.querySelector(".bt-dropdown__control"),s=i.querySelector(".bt-dropdown__list");if(!r||!s)return console.warn("Dropdown: Missing required elements (.bt-dropdown__control, .bt-dropdown__list)"),null;let d=s.querySelector(".bt-dropdown__options");if(!d)if(p){let e=s,o=Array.from(e.classList).filter(m=>m.startsWith("bt-dropdown__list")),c=document.createElement("div");c.className=o.join(" "),e.classList.remove(...o),e.classList.add("bt-dropdown__options"),e.style.display="",e.parentNode.insertBefore(c,e),c.appendChild(e),d=e,s=c;}else d=s;(r.disabled||r.classList.contains("is-disabled"))&&(a.disabled=true),r.disabled=a.disabled,r.setAttribute("aria-disabled",a.disabled?"true":"false"),r.classList.toggle("is-disabled",a.disabled);let h=()=>w(".bt-dropdown__option",d).map(e=>({value:e.dataset.value!==void 0?e.dataset.value:e.textContent.trim(),label:e.textContent.trim(),disabled:e.classList.contains("is-disabled")})),u;if(i.dataset.options)try{let e=JSON.parse(i.dataset.options);Array.isArray(e)?u=e:console.warn("Dropdown: data-options is not a JSON array");}catch(e){console.warn("Dropdown: invalid JSON in data-options",e);}u===void 0&&(u=Array.isArray(a.options)?a.options:h()),t.options=u;let g=w(".bt-dropdown__option",d);if(g.length===0&&t.options.length>0){let e=d.tagName==="UL"||d.tagName==="OL"?"li":"div";t.options.forEach(o=>{let c=document.createElement(e);c.className="bt-dropdown__option",o.disabled&&c.classList.add("is-disabled"),c.dataset.value=o.value,c.textContent=o.label,d.appendChild(c);}),g=w(".bt-dropdown__option",d);}d.id=d.id||`${y}_listbox`,d.setAttribute("role","listbox"),f&&d.setAttribute("aria-multiselectable","true"),r.setAttribute("aria-haspopup","listbox"),r.setAttribute("aria-expanded","false"),r.setAttribute("aria-controls",d.id),p?r.removeAttribute("role"):r.setAttribute("role","combobox"),g.forEach((e,o)=>{if(e.id=e.id||`${y}_option_${o}`,e.setAttribute("role","option"),e.setAttribute("aria-selected","false"),t.options[o]?.disabled&&e.setAttribute("aria-disabled","true"),f&&!e.querySelector(".bt-dropdown__option-check")){let c=document.createElement("span");c.className="bt-dropdown__option-check",c.setAttribute("aria-hidden","true"),c.innerHTML=be,e.insertBefore(c,e.firstChild);}});let b=null,x=null;if(p){let e=s.querySelector(".bt-dropdown__search");if(!e){e=document.createElement("div"),e.className="bt-dropdown__search";let o=document.createElement("span");o.className="bt-dropdown__search-icon",o.setAttribute("aria-hidden","true"),o.innerHTML=pe,e.appendChild(o),s.insertBefore(e,s.firstChild);}if(b=e.querySelector(".bt-dropdown__search-input"),b||(b=document.createElement("input"),b.type="text",b.className="bt-dropdown__search-input",b.autocomplete="off",e.appendChild(b)),b.placeholder=a.searchPlaceholder,b.setAttribute("aria-label",a.searchPlaceholder),b.setAttribute("role","combobox"),b.setAttribute("aria-autocomplete","list"),b.setAttribute("aria-expanded","false"),b.setAttribute("aria-controls",d.id),x=d.querySelector(".bt-dropdown__empty"),!x){let o=d.tagName==="UL"||d.tagName==="OL"?"li":"div";x=document.createElement(o),x.className="bt-dropdown__empty",d.appendChild(x);}x.textContent=a.emptyText,x.hidden=true;}let ve=()=>p?b:r,C=w('input[type="hidden"]',i),q=a.name||i.dataset.name||C[0]?.name||null;if(C.length===0&&q){let e=document.createElement("input");e.type="hidden",e.name=q,i.appendChild(e),C.push(e);}function ye(){if(!q)return;let e=f?t.values.map(o=>o==null?"":String(o)):[t.value==null?"":String(t.value)];for(;C.length>e.length;)C.pop().remove();for(;C.length<e.length;){let o=document.createElement("input");o.type="hidden",o.name=q,i.appendChild(o),C.push(o);}C.forEach((o,c)=>{o.value=e[c];});}function W(e){return t.options.find(o=>String(o.value)===String(e))}function U(e){return e===void 0?false:f?t.values.some(o=>String(o)===String(e)):t.value!=null&&String(t.value)===String(e)}function _e(){return t.values.map(W).filter(Boolean)}function F(){let e=r.querySelector(".bt-dropdown__value, .bt-dropdown__placeholder");if(e){let o=a.placeholder,c=false;if(f)c=t.values.length>0,c&&(o=a.selectedSummary(t.values.length));else {let m=W(t.value);c=!!m,m&&(o=m.label);}e.textContent=o,e.classList.toggle("bt-dropdown__value",c),e.classList.toggle("bt-dropdown__placeholder",!c);}g.forEach((o,c)=>{let m=U(t.options[c]?.value);o.classList.toggle("is-selected",m),o.setAttribute("aria-selected",m?"true":"false");}),ye();}function L(e){f?(t.values=e==null?[]:Array.isArray(e)?e.slice():[e],F(),a.onValueChange&&a.onValueChange(t.values.slice(),_e())):(t.value=Array.isArray(e)?e[0]??null:e,F(),a.onValueChange&&a.onValueChange(t.value,W(t.value)??null));}function we(e){let o=U(e.value)?t.values.filter(c=>String(c)!==String(e.value)):[...t.values,e.value];L(o);}function I(){let e=null,o=null;g.forEach((m,N)=>{let P=N===t.activeIndex;m.classList.toggle("is-active",P),P&&(e=m.id,o=m);}),o?.scrollIntoView?.({block:"nearest"});let c=ve();c&&(e?c.setAttribute("aria-activedescendant",e):c.removeAttribute("aria-activedescendant"));}function ie(){return t.visible.find(e=>!t.options[e]?.disabled)??-1}function $(){let e=p?X(t.committedQuery):"";t.visible=[],g.forEach((o,c)=>{let m=t.options[c]?.label??o.textContent,N=e===""||X(m).includes(e);o.hidden=!N,N&&t.visible.push(c);}),x&&(x.hidden=t.visible.length>0),t.isOpen?t.visible.includes(t.activeIndex)||(t.activeIndex=ie()):t.activeIndex=-1,I();}let T=null,M=null;function ae(){T||(T={parent:s.parentNode,next:s.nextSibling},document.body.appendChild(s));let e=r.getBoundingClientRect(),o=4,c=8,m=window.innerWidth-c*2;s.style.minWidth=`${Math.min(e.width,m)}px`,s.style.maxWidth=`${m}px`;let N=s.offsetWidth,P=window.innerHeight-c*2;s.style.maxHeight="";let ce=s.offsetHeight,j=Math.min(ce,P);ce>P&&(s.style.maxHeight=`${P}px`);let ue=window.innerHeight-e.bottom-o-c,Le=e.top-o-c,fe=j>ue&&Le>ue;s.classList.toggle("bt-dropdown__list--up",fe),s.style.left=`${oe(e.left,N,window.innerWidth,c)}px`;let Te=fe?e.top-o-j:e.bottom+o;s.style.top=`${oe(Te,j,window.innerHeight,c)}px`;}function oe(e,o,c,m){return Math.max(m,Math.min(e,c-m-o))}function xe(){if(M)return;let e=0,o=()=>{e||(e=requestAnimationFrame(()=>{e=0,t.isOpen&&ae();}));};window.addEventListener("scroll",o,true),window.addEventListener("resize",o),M=()=>{e&&cancelAnimationFrame(e),window.removeEventListener("scroll",o,true),window.removeEventListener("resize",o),M=null;};}function se(){M?.(),T&&(T.parent?.insertBefore(s,T.next),T=null,s.style.left="",s.style.top="",s.style.minWidth="",s.style.maxWidth="",s.style.maxHeight="");}function E(){if(a.disabled||r.disabled)return;t.isOpen=true,r.classList.add("is-open"),r.setAttribute("aria-expanded","true"),s.style.display="block",b&&b.setAttribute("aria-expanded","true"),ae(),xe(),t.activeIndex=t.options.findIndex(o=>U(o.value)&&!o.disabled),$(),b&&b.focus();let e=r.querySelector(".bt-dropdown__icon");e&&e.classList.add("is-open");}function D(){t.isOpen=false,r.classList.remove("is-open"),r.setAttribute("aria-expanded","false"),r.removeAttribute("aria-activedescendant"),s.style.display="none",se(),b&&(b.value="",b.setAttribute("aria-expanded","false"),b.removeAttribute("aria-activedescendant")),t.committedQuery="",v=false,t.activeIndex=-1,$();let e=r.querySelector(".bt-dropdown__icon");e&&e.classList.remove("is-open");}function K(){let e=t.isOpen;D(),e&&p&&r.focus();}function le(){t.isOpen?D():E();}function B(e){let o=t.visible.filter(m=>!t.options[m]?.disabled);if(o.length===0)return;let c=o.indexOf(t.activeIndex);t.activeIndex=c===-1?e===1?o[0]:o[o.length-1]:o[(c+e+o.length)%o.length],I();}function re(e){let o=t.options[e];!o||o.disabled||(f?we(o):(L(o.value),K()));}function de(){t.visible.includes(t.activeIndex)&&re(t.activeIndex);}function Ae(e){e.preventDefault(),le();}function Oe(e){if(!a.disabled)switch(e.key){case " ":case "Enter":e.preventDefault(),t.isOpen?de():E();break;case "ArrowDown":e.preventDefault(),t.isOpen?B(1):E();break;case "ArrowUp":e.preventDefault(),t.isOpen?B(-1):E();break;case "Home":e.preventDefault(),E(),t.activeIndex=ie(),I();break;case "End":e.preventDefault(),E();for(let o=t.visible.length-1;o>=0;o--)if(!t.options[t.visible[o]]?.disabled){t.activeIndex=t.visible[o],I();break}break;case "Escape":e.preventDefault(),D();break;case "Tab":D();break}}function Ce(e){if(!(e.isComposing||e.keyCode===229))switch(e.key){case "ArrowDown":e.preventDefault(),B(1);break;case "ArrowUp":e.preventDefault(),B(-1);break;case "Enter":e.preventDefault(),de();break;case "Escape":e.preventDefault(),K();break;case "Tab":K();break}}function Ee(e){!i.contains(e.target)&&!s.contains(e.target)&&D();}function ke(e){return o=>{o.preventDefault(),re(e);}}function Se(e){return ()=>{t.options[e]?.disabled||(t.activeIndex=e,I());}}let k=[_(r,"click",Ae),_(r,"keydown",Oe),_(document,"mousedown",Ee)];g.forEach((e,o)=>{k.push(_(e,"click",ke(o))),k.push(_(e,"mouseenter",Se(o)));}),b&&(k.push(_(b,"compositionstart",()=>{v=true;})),k.push(_(b,"compositionend",e=>{v=false,t.committedQuery=e.target.value,$();})),k.push(_(b,"input",e=>{v||(t.committedQuery=e.target.value,$());})),k.push(_(b,"keydown",Ce)));let G=C.map(e=>e.value).filter(e=>e!=="");if(s.style.display="none",$(),F(),f){let e=Array.isArray(a.defaultValue)?a.defaultValue:a.defaultValue!=null?[a.defaultValue]:G;e.length>0&&L(e);}else a.defaultValue!=null?L(a.defaultValue):G[0]&&L(G[0]);return {getValue:()=>f?t.values.slice():t.value,setValue:L,open:E,close:D,toggle:le,setDisabled:e=>{a.disabled=e,r.disabled=e,r.setAttribute("aria-disabled",e?"true":"false"),r.classList.toggle("is-disabled",e);},destroy:()=>{se(),k.forEach(e=>{e();});}}}function ee(n,l={}){let i=typeof n=="string"?S(n):n;if(!i)return null;let a={closeOnOverlay:true,closeOnEscape:true,onOpen:null,onClose:null,...l},f={isOpen:false},p=i.querySelector(".bt-modal__panel"),t=null,v=false;if(p&&(p.setAttribute("role","dialog"),p.setAttribute("aria-modal","true"),!p.hasAttribute("aria-label")&&!p.hasAttribute("aria-labelledby"))){let u=p.querySelector(".bt-modal__header");u?(u.id=u.id||O("modal_title"),p.setAttribute("aria-labelledby",u.id)):p.setAttribute("aria-label","Dialog");}function y(){if(!f.isOpen){if(f.isOpen=true,i.classList.add("is-open"),J(),t=document.activeElement,p){let u=p.querySelector(V);u?u.focus():(p.setAttribute("tabindex","-1"),v=true,p.focus());}a.onOpen&&a.onOpen();}}function r(){f.isOpen&&(f.isOpen=false,i.classList.remove("is-open"),H(),v&&p&&(p.removeAttribute("tabindex"),v=false),t&&typeof t.focus=="function"&&t.focus(),t=null,a.onClose&&a.onClose());}function s(u){a.closeOnOverlay&&u.target===i&&r();}function d(u){if(f.isOpen){if(a.closeOnEscape&&u.key==="Escape"){r();return}if(u.key==="Tab"&&p){let g=w(V,p);if(g.length===0){u.preventDefault();return}let b=g[0],x=g[g.length-1];u.shiftKey&&document.activeElement===b?(u.preventDefault(),x.focus()):!u.shiftKey&&document.activeElement===x&&(u.preventDefault(),b.focus());}}}let h=[_(i,"click",s),_(document,"keydown",d)];return w("[data-modal-close]",i).forEach(u=>{h.push(_(u,"click",r));}),{isOpen:()=>f.isOpen,open:y,close:r,toggle:()=>f.isOpen?r():y(),destroy:()=>{h.forEach(u=>{u();}),f.isOpen&&H();}}}let he="bt-button--filled",ge="bt-button--outline";function me(n={}){let l={title:"",message:"",variant:"info",confirmText:"\uD655\uC778",cancelText:"\uCDE8\uC18C",showCancel:false,destructive:false,actionsAlign:"right",closeOnOverlay:true,onConfirm:null,onCancel:null,...n},i=document.createElement("div");i.className=`bt-alert__overlay bt-alert--${l.variant} is-open`,i.innerHTML=`
9
9
  <div class="bt-alert__modal">
10
- ${i.title?`<div class="bt-alert__title">${x(i.title)}</div>`:""}
11
- <div class="bt-alert__message">${x(i.message)}</div>
12
- <div class="bt-alert__actions" style="justify-content: ${i.actionsAlign==="left"?"flex-start":i.actionsAlign==="center"?"center":"flex-end"}">
13
- ${i.showCancel?`<button class="bt-button bt-button--md ${xe}" data-alert-cancel>${x(i.cancelText)}</button>`:""}
14
- <button class="bt-button bt-button--md ${Ce}${i.destructive?" bt-button--danger":""}" data-alert-confirm>${x(i.confirmText)}</button>
10
+ ${l.title?`<div class="bt-alert__title">${A(l.title)}</div>`:""}
11
+ <div class="bt-alert__message">${A(l.message)}</div>
12
+ <div class="bt-alert__actions" style="justify-content: ${l.actionsAlign==="left"?"flex-start":l.actionsAlign==="center"?"center":"flex-end"}">
13
+ ${l.showCancel?`<button class="bt-button bt-button--md ${ge}" data-alert-cancel>${A(l.cancelText)}</button>`:""}
14
+ <button class="bt-button bt-button--md ${he}${l.destructive?" bt-button--danger":""}" data-alert-confirm>${A(l.confirmText)}</button>
15
15
  </div>
16
16
  </div>
17
- `;let a=t.querySelector(".bt-alert__modal");if(a){a.setAttribute("role","alertdialog"),a.setAttribute("aria-modal","true");let d=t.querySelector(".bt-alert__title"),g=t.querySelector(".bt-alert__message");d&&(d.id=O("alert_title"),a.setAttribute("aria-labelledby",d.id)),g&&(g.id=O("alert_message"),a.setAttribute("aria-describedby",g.id));}let c=document.activeElement;document.body.appendChild(t),Z(true);let p=true;function n(){p&&(p=false,document.removeEventListener("keydown",l),t.classList.remove("is-open"),c&&typeof c.focus=="function"&&c.focus(),setTimeout(()=>{t.remove(),G(true);},200));}function h(){p&&(i.onCancel&&i.onCancel(),n());}let y=t.querySelector("[data-alert-confirm]"),r=t.querySelector("[data-alert-cancel]");y&&y.addEventListener("click",()=>{i.onConfirm&&i.onConfirm(),n();}),r&&r.addEventListener("click",()=>{i.onCancel&&i.onCancel(),n();}),t.addEventListener("click",d=>{i.closeOnOverlay&&d.target===t&&h();});function l(d){if(d.key==="Escape"){h();return}if(d.key==="Tab"&&a){let g=_(W,a);if(g.length===0){d.preventDefault();return}let f=g[0],m=g[g.length-1];d.shiftKey&&document.activeElement===f?(d.preventDefault(),m.focus()):!d.shiftKey&&document.activeElement===m&&(d.preventDefault(),f.focus());}}return document.addEventListener("keydown",l),y&&y.focus(),{close:n}}function ae(o,i={}){let t=typeof o=="string"?L(o):o;if(!t)return null;let a={defaultChecked:false,disabled:false,onCheckedChange:null,...i},c={checked:a.defaultChecked||t.classList.contains("bt-toggle--on")};t.disabled&&(a.disabled=true),t.disabled=a.disabled,t.hasAttribute("role")||t.setAttribute("role","switch"),t.tagName==="BUTTON"&&!t.hasAttribute("type")&&t.setAttribute("type","button");let p=a.name||t.dataset.name||null,n=t.querySelector('input[type="hidden"]')||(p&&t.parentNode?Array.from(t.parentNode.children).find(l=>l.tagName==="INPUT"&&l.type==="hidden"&&l.name===p):null);!n&&p&&(n=document.createElement("input"),n.type="hidden",n.name=p,t.tagName==="BUTTON"&&t.parentNode?t.parentNode.insertBefore(n,t.nextSibling):t.appendChild(n));function h(l){c.checked=l,t.classList.toggle("bt-toggle--on",l),t.setAttribute("aria-checked",l?"true":"false"),n&&(n.value=l?"true":"false"),a.onCheckedChange&&a.onCheckedChange(l);}function y(){!a.disabled&&!t.disabled&&h(!c.checked);}let r=w(t,"click",y);if(n&&!c.checked){let l=String(n.value).trim().toLowerCase();(l==="true"||l==="1"||l==="on"||l==="y"||l==="yes")&&(c.checked=true);}return t.classList.toggle("bt-toggle--on",c.checked),t.setAttribute("aria-checked",c.checked?"true":"false"),n&&(n.value=c.checked?"true":"false"),{isChecked:()=>c.checked,setChecked:h,toggle:y,setDisabled:l=>{a.disabled=l,t.disabled=l;},destroy:()=>r()}}function oe(o,i={}){let t=typeof o=="string"?L(o):o;if(!t)return null;let a={page:1,totalPages:1,sibling:2,onPageChange:null,...i};function c(r,l){let d=[];for(let g=r;g<=l;g++)d.push(g);return d}function p(r,l){if(l<=7)return c(1,l);let d=[],g=l,f=a.sibling;if(r<=f+2){for(let m of c(1,f+3))d.push(m);return d.push("ellipsis"),d.push(g),d}if(r>=g-f-1){d.push(1),d.push("ellipsis");for(let m of c(g-f-2,g))d.push(m);return d}d.push(1),d.push("ellipsis");for(let m of c(r-f,r+f))d.push(m);return d.push("ellipsis"),d.push(g),d}function n(){let r=p(a.page,a.totalPages),l=`
17
+ `;let a=i.querySelector(".bt-alert__modal");if(a){a.setAttribute("role","alertdialog"),a.setAttribute("aria-modal","true");let d=i.querySelector(".bt-alert__title"),h=i.querySelector(".bt-alert__message");d&&(d.id=O("alert_title"),a.setAttribute("aria-labelledby",d.id)),h&&(h.id=O("alert_message"),a.setAttribute("aria-describedby",h.id));}let f=document.activeElement;document.body.appendChild(i),J();let p=true;function t(){p&&(p=false,document.removeEventListener("keydown",s),i.classList.remove("is-open"),f&&typeof f.focus=="function"&&f.focus(),setTimeout(()=>{i.remove(),H();},200));}function v(){p&&(l.onCancel&&l.onCancel(),t());}let y=i.querySelector("[data-alert-confirm]"),r=i.querySelector("[data-alert-cancel]");y&&y.addEventListener("click",()=>{l.onConfirm&&l.onConfirm(),t();}),r&&r.addEventListener("click",()=>{l.onCancel&&l.onCancel(),t();}),i.addEventListener("click",d=>{l.closeOnOverlay&&d.target===i&&v();});function s(d){if(d.key==="Escape"){v();return}if(d.key==="Tab"&&a){let h=w(V,a);if(h.length===0){d.preventDefault();return}let u=h[0],g=h[h.length-1];d.shiftKey&&document.activeElement===u?(d.preventDefault(),g.focus()):!d.shiftKey&&document.activeElement===g&&(d.preventDefault(),u.focus());}}return document.addEventListener("keydown",s),y&&y.focus(),{close:t}}function te(n,l={}){let i=typeof n=="string"?S(n):n;if(!i)return null;let a={defaultChecked:false,disabled:false,onCheckedChange:null,...l},f={checked:a.defaultChecked||i.classList.contains("bt-toggle--on")};i.disabled&&(a.disabled=true),i.disabled=a.disabled,i.hasAttribute("role")||i.setAttribute("role","switch"),i.tagName==="BUTTON"&&!i.hasAttribute("type")&&i.setAttribute("type","button");let p=a.name||i.dataset.name||null,t=i.querySelector('input[type="hidden"]')||(p&&i.parentNode?Array.from(i.parentNode.children).find(s=>s.tagName==="INPUT"&&s.type==="hidden"&&s.name===p):null);!t&&p&&(t=document.createElement("input"),t.type="hidden",t.name=p,i.tagName==="BUTTON"&&i.parentNode?i.parentNode.insertBefore(t,i.nextSibling):i.appendChild(t));function v(s){f.checked=s,i.classList.toggle("bt-toggle--on",s),i.setAttribute("aria-checked",s?"true":"false"),t&&(t.value=s?"true":"false"),a.onCheckedChange&&a.onCheckedChange(s);}function y(){!a.disabled&&!i.disabled&&v(!f.checked);}let r=_(i,"click",y);if(t&&!f.checked){let s=String(t.value).trim().toLowerCase();(s==="true"||s==="1"||s==="on"||s==="y"||s==="yes")&&(f.checked=true);}return i.classList.toggle("bt-toggle--on",f.checked),i.setAttribute("aria-checked",f.checked?"true":"false"),t&&(t.value=f.checked?"true":"false"),{isChecked:()=>f.checked,setChecked:v,toggle:y,setDisabled:s=>{a.disabled=s,i.disabled=s;},destroy:()=>r()}}function ne(n,l={}){let i=typeof n=="string"?S(n):n;if(!i)return null;let a={page:1,totalPages:1,sibling:2,onPageChange:null,...l};function f(r,s){let d=[];for(let h=r;h<=s;h++)d.push(h);return d}function p(r,s){if(s<=7)return f(1,s);let d=[],h=s,u=a.sibling;if(r<=u+2){for(let g of f(1,u+3))d.push(g);return d.push("ellipsis"),d.push(h),d}if(r>=h-u-1){d.push(1),d.push("ellipsis");for(let g of f(h-u-2,h))d.push(g);return d}d.push(1),d.push("ellipsis");for(let g of f(r-u,r+u))d.push(g);return d.push("ellipsis"),d.push(h),d}function t(){let r=p(a.page,a.totalPages),s=`
18
18
  <button class="bt-pagination__item" ${a.page<=1?"disabled":""} data-action="prev" aria-label="Previous page">
19
19
  \u2039
20
20
  </button>
21
21
  <div class="bt-pagination__pages">
22
- `;r.forEach((f,m)=>{if(f==="ellipsis")l+='<span class="bt-pagination__ellipsis" aria-hidden="true">\u2026</span>';else {let b=f===a.page;l+=`
22
+ `;r.forEach((u,g)=>{if(u==="ellipsis")s+='<span class="bt-pagination__ellipsis" aria-hidden="true">\u2026</span>';else {let b=u===a.page;s+=`
23
23
  <button
24
24
  class="bt-pagination__page${b?" bt-pagination__page--active":""}"
25
- data-page="${x(f)}"
25
+ data-page="${A(u)}"
26
26
  ${b?'aria-current="page"':""}
27
27
  >
28
- ${x(f)}
28
+ ${A(u)}
29
29
  </button>
30
- `;}}),l+=`
30
+ `;}}),s+=`
31
31
  </div>
32
32
  <button class="bt-pagination__item" ${a.page>=a.totalPages?"disabled":""} data-action="next" aria-label="Next page">
33
33
  \u203A
34
34
  </button>
35
- `,t.innerHTML=l,_("[data-page]",t).forEach(f=>{f.addEventListener("click",()=>{let m=parseInt(f.dataset.page,10);h(m);});});let d=t.querySelector('[data-action="prev"]'),g=t.querySelector('[data-action="next"]');d&&d.addEventListener("click",()=>h(a.page-1)),g&&g.addEventListener("click",()=>h(a.page+1));}function h(r){r<1||r>a.totalPages||r===a.page||(a.page=r,n(),a.onPageChange&&a.onPageChange(r));}function y(r){a.totalPages=r,a.page>r&&(a.page=r),n();}return n(),{getPage:()=>a.page,setPage:h,setTotalPages:y,render:n}}function K(){_("[data-bt-dropdown]").forEach(o=>{o._btDropdown||(o._btDropdown=ne(o));}),_("[data-bt-modal]").forEach(o=>{o._btModal||(o._btModal=ie(o));}),_("[data-bt-modal-open]").forEach(o=>{if(o.dataset.btBound)return;let i=o.dataset.btModalOpen,t=L(`#${i}`);t?._btModal&&(o.dataset.btBound="true",o.addEventListener("click",()=>t._btModal.open()));}),_("[data-bt-toggle]").forEach(o=>{o._btToggle||(o._btToggle=ae(o));}),_("[data-bt-pagination]").forEach(o=>{if(!o._btPagination){let i=parseInt(o.dataset.page,10)||1,t=parseInt(o.dataset.totalPages,10)||1;o._btPagination=oe(o,{page:i,totalPages:t});}});}return typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",K):K()),{Dropdown:ne,Modal:ie,Alert:Oe,Toggle:ae,Pagination:oe,init:K,generateId:O,$:L,$$:_,on:w,version:"1.0.0"}});})();
35
+ `,i.innerHTML=s,w("[data-page]",i).forEach(u=>{u.addEventListener("click",()=>{let g=parseInt(u.dataset.page,10);v(g);});});let d=i.querySelector('[data-action="prev"]'),h=i.querySelector('[data-action="next"]');d&&d.addEventListener("click",()=>v(a.page-1)),h&&h.addEventListener("click",()=>v(a.page+1));}function v(r){r<1||r>a.totalPages||r===a.page||(a.page=r,t(),a.onPageChange&&a.onPageChange(r));}function y(r){a.totalPages=r,a.page>r&&(a.page=r),t();}return t(),{getPage:()=>a.page,setPage:v,setTotalPages:y,render:t}}function R(){w("[data-bt-dropdown]").forEach(n=>{n._btDropdown||(n._btDropdown=Z(n));}),w("[data-bt-modal]").forEach(n=>{n._btModal||(n._btModal=ee(n));}),w("[data-bt-modal-open]").forEach(n=>{if(n.dataset.btBound)return;let l=n.dataset.btModalOpen,i=S(`#${l}`);i?._btModal&&(n.dataset.btBound="true",n.addEventListener("click",()=>i._btModal.open()));}),w("[data-bt-toggle]").forEach(n=>{n._btToggle||(n._btToggle=te(n));}),w("[data-bt-pagination]").forEach(n=>{if(!n._btPagination){let l=parseInt(n.dataset.page,10)||1,i=parseInt(n.dataset.totalPages,10)||1;n._btPagination=ne(n,{page:l,totalPages:i});}});}return typeof document<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",R):R()),{Dropdown:Z,Modal:ee,Alert:me,Toggle:te,Pagination:ne,init:R,generateId:O,$:S,$$:w,on:_,version:"1.0.0"}});})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigtablet/design-system",
3
- "version": "3.19.4",
3
+ "version": "3.21.0",
4
4
  "description": "Bigtablet Design System UI Components",
5
5
  "type": "module",
6
6
  "types": "dist/index.d.ts",