@lekoala/date-picker 0.5.1 → 0.5.2

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.
@@ -1,4 +1,4 @@
1
- /*** @lekoala/date-picker v0.5.1 - https://github.com/lekoala/date-picker ***/
1
+ /*** @lekoala/date-picker v0.5.2 - https://github.com/lekoala/date-picker ***/
2
2
  (() => {
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -44,6 +44,9 @@
44
44
  defineDatePicker: () => defineDatePicker
45
45
  });
46
46
 
47
+ // src/activation-intents.js
48
+ var activationIntents = new WeakMap;
49
+
47
50
  // src/date.js
48
51
  var DATE_RE = /^(\d{4})-(\d{2})-(\d{2})$/;
49
52
  var MONTH_RE = /^(\d{4})-(\d{2})$/;
@@ -848,6 +851,7 @@
848
851
  this._connected = false;
849
852
  this._rendering = false;
850
853
  this._source = null;
854
+ this._hostIntent = null;
851
855
  this._sourceStates = new Map;
852
856
  this._loadedRanges = new Set;
853
857
  this._loadController = null;
@@ -1284,6 +1288,15 @@
1284
1288
  this.focusGrid();
1285
1289
  }
1286
1290
  }
1291
+ _syncRovingDom(date) {
1292
+ for (const cell of this.querySelectorAll('.dp-day[tabindex="0"]')) {
1293
+ if (cell instanceof HTMLElement && cell.dataset.date !== date)
1294
+ cell.tabIndex = -1;
1295
+ }
1296
+ const cell = this.querySelector(`.dp-day[data-date="${CSS.escape(date)}"]`);
1297
+ if (cell instanceof HTMLElement)
1298
+ cell.tabIndex = 0;
1299
+ }
1287
1300
  _moveSelectionDom(previousValue, nextValue) {
1288
1301
  if (previousValue) {
1289
1302
  const prev = this.querySelector(`.dp-day[data-date="${CSS.escape(previousValue)}"]`);
@@ -1344,17 +1357,24 @@
1344
1357
  target.focus();
1345
1358
  }
1346
1359
  async activateDate(date) {
1360
+ const hostIntent = this._hostIntent?.date === date ? this._hostIntent.intent : undefined;
1361
+ this._hostIntent = null;
1362
+ const tagged = (event) => {
1363
+ if (hostIntent !== undefined)
1364
+ activationIntents.set(event, hostIntent);
1365
+ return event;
1366
+ };
1347
1367
  const confirmed = await this.ensureDate(date);
1348
1368
  const state = this.getDateState(date);
1349
1369
  if (!confirmed || state.disabled) {
1350
- this.dispatchEvent(new CustomEvent("dateinvalid", { detail: { date, state }, bubbles: true }));
1370
+ this.dispatchEvent(tagged(new CustomEvent("dateinvalid", { detail: { date, state }, bubbles: true })));
1351
1371
  return false;
1352
1372
  }
1353
- const accepted = this.dispatchEvent(new CustomEvent("dateactivate", {
1373
+ const accepted = this.dispatchEvent(tagged(new CustomEvent("dateactivate", {
1354
1374
  detail: { date, state },
1355
1375
  bubbles: true,
1356
1376
  cancelable: true
1357
- }));
1377
+ })));
1358
1378
  if (!accepted)
1359
1379
  return false;
1360
1380
  if (this.selection === "single") {
@@ -1399,6 +1419,8 @@
1399
1419
  this._reflect("display", this._model.display);
1400
1420
  if (previousDisplay !== this.display)
1401
1421
  this._emitDisplayChange();
1422
+ else
1423
+ this._syncRovingDom(this._model.focused);
1402
1424
  this.activateDate(date);
1403
1425
  }
1404
1426
  _onChange(event) {
@@ -1409,7 +1431,7 @@
1409
1431
  }
1410
1432
  if (target instanceof HTMLInputElement && target.matches(".dp-year-input")) {
1411
1433
  const year = Number(target.value);
1412
- if (!Number.isInteger(year) || year < 1 || year > 9998) {
1434
+ if (!Number.isInteger(year) || year < 1 || year > 9999) {
1413
1435
  if (this._connected)
1414
1436
  this.render(false);
1415
1437
  return;
@@ -1425,6 +1447,7 @@
1425
1447
  if (!isDate(date))
1426
1448
  return;
1427
1449
  this._model.focused = date;
1450
+ this._syncRovingDom(date);
1428
1451
  this.dispatchEvent(new CustomEvent("datefocus", { detail: { date, state: this.getDateState(date) }, bubbles: true }));
1429
1452
  }
1430
1453
  _onKeyDown(event) {
@@ -1487,8 +1510,8 @@
1487
1510
  const nextKey = stepMonthKey(display, 1);
1488
1511
  const prevDisabled = Boolean(minMonth && prevKey !== null && prevKey < minMonth);
1489
1512
  const nextDisabled = Boolean(maxMonth && nextKey !== null && nextKey > maxMonth);
1490
- const minYearAttr = this.min ? ` min="${Number(this.min.slice(0, 4))}"` : "";
1491
- const maxYearAttr = this.max ? ` max="${Number(this.max.slice(0, 4))}"` : "";
1513
+ const minYearAttr = ` min="${this.min ? Number(this.min.slice(0, 4)) : 1}"`;
1514
+ const maxYearAttr = ` max="${this.max ? Number(this.max.slice(0, 4)) : 9999}"`;
1492
1515
  const showWeeks = this.showWeekNumbers && this.firstDay === 1;
1493
1516
  const weekHeader = showWeeks ? `<th scope="col" class="dp-week-heading" abbr="${escapeHtml(this.messages.week)}">#</th>` : "";
1494
1517
  const monthOptions = names.map((name, index) => {
@@ -1946,6 +1969,10 @@
1946
1969
  }
1947
1970
 
1948
1971
  // src/date-field.js
1972
+ function isEditable(input) {
1973
+ return !input.matches(":disabled") && !input.readOnly;
1974
+ }
1975
+
1949
1976
  class DateFieldController {
1950
1977
  constructor(input, options = {}) {
1951
1978
  this.input = input;
@@ -1959,9 +1986,22 @@
1959
1986
  this._attributeObserver = null;
1960
1987
  this.onAttributesChanged = null;
1961
1988
  this.confirm = null;
1989
+ this._generatedDefault = null;
1962
1990
  }
1963
1991
  setLocale(locale) {
1992
+ const generated = this._generatedDefault;
1993
+ const previous = generated ? this.adapter.format(generated) : null;
1964
1994
  this.adapter = createDateAdapter(locale || "");
1995
+ if (generated && this.input.defaultValue === previous) {
1996
+ this.input.defaultValue = this.adapter.format(generated);
1997
+ }
1998
+ }
1999
+ adoptDefault() {
2000
+ const input = this.input;
2001
+ if (input.getAttribute("value") != null || input.defaultValue !== "")
2002
+ return;
2003
+ input.defaultValue = input.value;
2004
+ this._generatedDefault = this.canonical && input.value ? this.canonical : null;
1965
2005
  }
1966
2006
  setMessages(messages) {
1967
2007
  this.messages = messages || {};
@@ -1976,7 +2016,7 @@
1976
2016
  return this.adapter.placeholder;
1977
2017
  }
1978
2018
  get isDisabled() {
1979
- return this.input.disabled;
2019
+ return this.input.matches(":disabled");
1980
2020
  }
1981
2021
  get isReadOnly() {
1982
2022
  return this.input.readOnly;
@@ -2163,8 +2203,7 @@
2163
2203
  this._timeFields = [null, null];
2164
2204
  this._timeOrderOwned = new Set;
2165
2205
  this._lastFocusEndpoint = "";
2166
- this._rangeCommitId = 0;
2167
- this._pendingIntents = new Map;
2206
+ this._activationId = 0;
2168
2207
  this._previewDate = "";
2169
2208
  this._drag = null;
2170
2209
  this._suppressGridClick = false;
@@ -2219,6 +2258,7 @@
2219
2258
  if (this._messages === null)
2220
2259
  this._refreshMessages();
2221
2260
  });
2261
+ this.validate();
2222
2262
  }
2223
2263
  }
2224
2264
  _connectSingle() {
@@ -2248,9 +2288,7 @@
2248
2288
  input.setCustomValidity(this.messages.invalidDate);
2249
2289
  if (this._field.hidden)
2250
2290
  this._field.hidden.defaultValue = this._value;
2251
- if (input.getAttribute("value") == null && input.defaultValue === "") {
2252
- input.defaultValue = input.value;
2253
- }
2291
+ this._field.adoptDefault();
2254
2292
  }
2255
2293
  _discoverTimeFields() {
2256
2294
  this._timeFields = [null, null];
@@ -2307,21 +2345,24 @@
2307
2345
  const adapter = this._adapter();
2308
2346
  const initialStart = isDate(startInput.value) ? startInput.value : adapter.parse(startInput.value);
2309
2347
  const initialEnd = isDate(endInput.value) ? endInput.value : adapter.parse(endInput.value);
2348
+ const startText = startInput.value;
2349
+ const endText = endInput.value;
2310
2350
  this._setRange(initialStart || "", initialEnd || "", { emit: false });
2311
- if (startInput.value.trim() && !isDate(initialStart))
2312
- startInput.setCustomValidity(this.messages.invalidDate);
2313
- if (endInput.value.trim() && !isDate(initialEnd))
2314
- endInput.setCustomValidity(this.messages.invalidDate);
2351
+ for (const [input, text, initial] of [
2352
+ [startInput, startText, initialStart],
2353
+ [endInput, endText, initialEnd]
2354
+ ]) {
2355
+ if (!text.trim() || isDate(initial))
2356
+ continue;
2357
+ input.value = text;
2358
+ input.setCustomValidity(this.messages.invalidDate);
2359
+ }
2315
2360
  if (this._fields[0].hidden)
2316
2361
  this._fields[0].hidden.defaultValue = this._range.start;
2317
2362
  if (this._fields[1].hidden)
2318
2363
  this._fields[1].hidden.defaultValue = this._range.end;
2319
- if (startInput.getAttribute("value") == null && startInput.defaultValue === "") {
2320
- startInput.defaultValue = startInput.value;
2321
- }
2322
- if (endInput.getAttribute("value") == null && endInput.defaultValue === "") {
2323
- endInput.defaultValue = endInput.value;
2324
- }
2364
+ for (const field of this._fields)
2365
+ field.adoptDefault();
2325
2366
  }
2326
2367
  disconnectedCallback() {
2327
2368
  this._stopDefaultMessages?.();
@@ -2372,8 +2413,10 @@
2372
2413
  if (name === "value") {
2373
2414
  if (this._rangeMode())
2374
2415
  return;
2375
- if (!newValue || isDate(newValue))
2416
+ if (!newValue || isDate(newValue)) {
2417
+ this._supersedeActivations();
2376
2418
  this._setValue(newValue || "", { emit: false, format: true, reflect: false });
2419
+ }
2377
2420
  return;
2378
2421
  }
2379
2422
  if (name === "locale")
@@ -2398,6 +2441,7 @@
2398
2441
  }
2399
2442
  if (value && !isDate(value))
2400
2443
  throw new TypeError(`Invalid date-picker value: ${value}`);
2444
+ this._supersedeActivations();
2401
2445
  this._setValue(value || "", { emit: false, format: true });
2402
2446
  }
2403
2447
  get range() {
@@ -2407,6 +2451,7 @@
2407
2451
  if (!this._rangeMode())
2408
2452
  throw new TypeError("range is only available on <date-picker range>");
2409
2453
  const { start, end } = normalizeRange(value);
2454
+ this._supersedeActivations();
2410
2455
  this._setRange(start, end);
2411
2456
  }
2412
2457
  get locale() {
@@ -2547,7 +2592,7 @@
2547
2592
  const button = this._buttons[0]?.button;
2548
2593
  if (button)
2549
2594
  button.disabled = input.disabled || input.readOnly;
2550
- if (this._open && (input.disabled || input.readOnly))
2595
+ if (this._open && !isEditable(input))
2551
2596
  this.hide(false);
2552
2597
  }
2553
2598
  _syncRangeFields() {
@@ -2562,9 +2607,9 @@
2562
2607
  }
2563
2608
  this._syncDragAffordance();
2564
2609
  const active = this._range?.activeEndpoint === "end" ? 1 : 0;
2565
- if (this._open && (this._fields[active]?.input.disabled || this._fields[active]?.input.readOnly)) {
2610
+ const activeInput = this._fields[active]?.input;
2611
+ if (this._open && activeInput && !isEditable(activeInput))
2566
2612
  this.hide(false);
2567
- }
2568
2613
  }
2569
2614
  _setRangeAria() {
2570
2615
  if (!this._fields || !this._panel || !this._formatHint)
@@ -2701,15 +2746,23 @@
2701
2746
  this.show({ returnFocus: button });
2702
2747
  }, { signal });
2703
2748
  button.addEventListener("keydown", (event) => this._onTriggerKeyDown("", event), { signal });
2749
+ calendar.addEventListener("click", (event) => this._captureGridIntent(event), { capture: true, signal });
2750
+ calendar.addEventListener("keydown", (event) => this._captureGridIntent(event), {
2751
+ capture: true,
2752
+ signal
2753
+ });
2704
2754
  calendar.addEventListener("dateactivate", (event) => {
2705
2755
  const custom = event;
2706
2756
  const date = custom.detail?.date;
2707
2757
  if (!isDate(date))
2708
2758
  return;
2759
+ const intent = activationIntents.get(custom);
2709
2760
  queueMicrotask(() => {
2710
2761
  if (custom.defaultPrevented || !this._connected)
2711
2762
  return;
2712
- if (this._input?.disabled || this._input?.readOnly)
2763
+ if (intent && intent.id !== this._activationId)
2764
+ return;
2765
+ if (!this._input || !isEditable(this._input))
2713
2766
  return;
2714
2767
  this._field?.dirty();
2715
2768
  this._setValue(date, { emit: true, format: true });
@@ -2729,7 +2782,12 @@
2729
2782
  const { signal } = controller;
2730
2783
  for (const [index, field] of this._fields.entries()) {
2731
2784
  const endpoint = index === 1 ? "end" : "start";
2732
- field.input.addEventListener("input", () => field.handleInput(), { signal });
2785
+ field.input.addEventListener("input", () => {
2786
+ field.handleInput();
2787
+ this._orderTags.delete(index);
2788
+ if (!field.isDirty)
2789
+ this._revalidateRange(endpoint);
2790
+ }, { signal });
2733
2791
  field.input.addEventListener("change", () => void this._commitFieldText(endpoint), { signal });
2734
2792
  field.input.addEventListener("blur", () => void this._commitFieldText(endpoint), { signal });
2735
2793
  field.input.addEventListener("focus", (event) => this._onFieldFocus(endpoint, event), { signal });
@@ -2767,10 +2825,9 @@
2767
2825
  queueMicrotask(() => {
2768
2826
  if (custom.defaultPrevented || !this._connected || !this._range)
2769
2827
  return;
2770
- const intent = this._pendingIntents.get(date);
2771
- if (intent === undefined || intent.id !== this._rangeCommitId)
2828
+ const intent = activationIntents.get(custom);
2829
+ if (intent === undefined || intent.id !== this._activationId)
2772
2830
  return;
2773
- this._pendingIntents.delete(date);
2774
2831
  const editable = (bound) => this._boundEditable(bound);
2775
2832
  const result = intent.endpoint ? this._range.moveEndpoint(date, intent.endpoint, editable) : this._range.activate(date, editable);
2776
2833
  if (result.status === "refused") {
@@ -2805,8 +2862,7 @@
2805
2862
  if (!this._range || !calendar)
2806
2863
  return;
2807
2864
  this._range.focus(endpoint);
2808
- this._rangeCommitId++;
2809
- this._pendingIntents.clear();
2865
+ this._activationId++;
2810
2866
  this._lastFocusEndpoint = endpoint;
2811
2867
  const target = this._boundCanonical(endpoint) || todayISO();
2812
2868
  calendar.display = monthKey(target);
@@ -2868,8 +2924,7 @@
2868
2924
  this._lastFocusEndpoint = endpoint;
2869
2925
  this._range?.focus(endpoint);
2870
2926
  if (switched) {
2871
- this._rangeCommitId++;
2872
- this._pendingIntents.clear();
2927
+ this._activationId++;
2873
2928
  }
2874
2929
  if (!this.openOnFocus || this._suppressFocusOpen)
2875
2930
  return;
@@ -2880,25 +2935,34 @@
2880
2935
  this.show({ moveFocus: false });
2881
2936
  }
2882
2937
  _captureGridIntent(event) {
2883
- if (!this._rangeMode() || !this._range)
2938
+ if (this._rangeMode() ? !this._range : !this._field)
2884
2939
  return;
2885
2940
  if (event.type === "keydown") {
2886
2941
  const key = event.key;
2887
2942
  if (key !== "Enter" && key !== " ")
2888
2943
  return;
2889
2944
  }
2945
+ if (event.type === "click" && this._suppressGridClick)
2946
+ return;
2890
2947
  if (!(event.target instanceof Element))
2891
2948
  return;
2892
2949
  const cell = event.target.closest(".dp-day[data-date]");
2893
2950
  const date = cell?.getAttribute("data-date") || "";
2894
2951
  if (!isDate(date))
2895
2952
  return;
2896
- this._pendingIntents.clear();
2897
- this._pendingIntents.set(date, { id: ++this._rangeCommitId, endpoint: "" });
2953
+ this._attachIntent(date, "");
2954
+ }
2955
+ _attachIntent(date, endpoint) {
2956
+ if (!this._calendar)
2957
+ return;
2958
+ this._calendar._hostIntent = { date, intent: { id: ++this._activationId, endpoint } };
2959
+ }
2960
+ _supersedeActivations() {
2961
+ this._activationId++;
2898
2962
  }
2899
2963
  _boundEditable(bound) {
2900
2964
  const field = this._fields?.[bound === "end" ? 1 : 0];
2901
- return field != null && !field.input.disabled && !field.input.readOnly;
2965
+ return field != null && isEditable(field.input);
2902
2966
  }
2903
2967
  _applyRangeTransition(transition) {
2904
2968
  const fields = this._fields;
@@ -3046,8 +3110,7 @@
3046
3110
  return;
3047
3111
  }
3048
3112
  const target = drag.endpoint === "start" ? transition.range.start : transition.range.end;
3049
- this._pendingIntents.clear();
3050
- this._pendingIntents.set(target, { id: ++this._rangeCommitId, endpoint: drag.endpoint });
3113
+ this._attachIntent(target, drag.endpoint);
3051
3114
  this._calendar?.activateDate(target);
3052
3115
  }
3053
3116
  _onGridPointerCancel(event) {
@@ -3253,7 +3316,7 @@
3253
3316
  const field = fields[index];
3254
3317
  if (!field)
3255
3318
  return false;
3256
- if (options.user === true && (field.input.disabled || field.input.readOnly))
3319
+ if (options.user === true && !isEditable(field.input))
3257
3320
  return false;
3258
3321
  const next = value || "";
3259
3322
  const previous = field.canonical;
@@ -3337,8 +3400,8 @@
3337
3400
  const [startInput, endInput] = this._timeFields;
3338
3401
  const bounds = ["start", "end"];
3339
3402
  const inputs = [startInput, endInput];
3340
- const startValue = startInput && !startInput.disabled ? startInput.value.trim() : "";
3341
- const endValue = endInput && !endInput.disabled ? endInput.value.trim() : "";
3403
+ const startValue = startInput && !startInput.matches(":disabled") ? startInput.value.trim() : "";
3404
+ const endValue = endInput && !endInput.matches(":disabled") ? endInput.value.trim() : "";
3342
3405
  const inverted = Boolean(startInput && endInput && startValue && endValue) && isTime(startValue) && isTime(endValue) && compareTimes(endValue, startValue) < 0;
3343
3406
  for (const [index, bound] of bounds.entries()) {
3344
3407
  const input = inputs[index];
@@ -3417,12 +3480,12 @@
3417
3480
  return "";
3418
3481
  const preferred = this._lastFocusEndpoint || "start";
3419
3482
  const preferredIndex = preferred === "end" ? 1 : 0;
3420
- if (!this._fields[preferredIndex].input.disabled && !this._fields[preferredIndex].input.readOnly) {
3483
+ if (isEditable(this._fields[preferredIndex].input)) {
3421
3484
  return preferred;
3422
3485
  }
3423
3486
  const alternative = preferred === "end" ? "start" : "end";
3424
3487
  const alternativeIndex = alternative === "end" ? 1 : 0;
3425
- if (!this._fields[alternativeIndex].input.disabled && !this._fields[alternativeIndex].input.readOnly) {
3488
+ if (isEditable(this._fields[alternativeIndex].input)) {
3426
3489
  return alternative;
3427
3490
  }
3428
3491
  return "";
@@ -3434,6 +3497,8 @@
3434
3497
  return true;
3435
3498
  for (const [index, field] of fields.entries()) {
3436
3499
  const result = await field.commit({ moveDisplay: false });
3500
+ if (result.status === "invalid")
3501
+ this._orderTags.delete(index);
3437
3502
  if (result.status === "ok" || result.status === "clear") {
3438
3503
  const which = index === 1 ? "end" : "start";
3439
3504
  this._setBound(which, result.value || "", { format: result.status === "ok" });
@@ -3446,11 +3511,7 @@
3446
3511
  const input = this._field?.input;
3447
3512
  if (!input)
3448
3513
  return true;
3449
- if (!input.value.trim()) {
3450
- input.setCustomValidity("");
3451
- } else {
3452
- await this._commitText(false, { force: true, moveDisplay: false });
3453
- }
3514
+ await this._commitText(false, { force: true, moveDisplay: false });
3454
3515
  this._revalidateTimeOrder("start");
3455
3516
  this._revalidateTimeOrder("end");
3456
3517
  const timesValid = this._timeFields.every((timeInput) => timeInput?.checkValidity() ?? true);
@@ -3468,7 +3529,7 @@
3468
3529
  this._activateRangeEndpoint(endpoint);
3469
3530
  } else {
3470
3531
  const input = this._input;
3471
- if (!input || input.disabled || input.readOnly)
3532
+ if (!input || !isEditable(input))
3472
3533
  return;
3473
3534
  const target = this._value || this._adapter().parse(input.value) || todayISO();
3474
3535
  calendar.display = monthKey(target);
@@ -3510,8 +3571,7 @@
3510
3571
  } catch {}
3511
3572
  this._open = false;
3512
3573
  this._setExpanded(false);
3513
- this._rangeCommitId++;
3514
- this._pendingIntents.clear();
3574
+ this._supersedeActivations();
3515
3575
  this._suppressGridClick = false;
3516
3576
  if (this._drag) {
3517
3577
  this._releaseDragCapture(this._drag.pointerId);
@@ -3534,7 +3594,7 @@
3534
3594
  if (active) {
3535
3595
  const index = active === "end" ? 1 : 0;
3536
3596
  const field = this._fields?.[index];
3537
- if (field && !field.input.disabled && !field.input.readOnly)
3597
+ if (field && isEditable(field.input))
3538
3598
  return active;
3539
3599
  }
3540
3600
  return this._resolveRangeEndpoint();
@@ -1 +1 @@
1
- :where(date-calendar,date-picker){--dp-bg:#fff;--dp-fg:#1f2328;--dp-muted:color-mix(in srgb,var(--dp-fg)58%,var(--dp-bg));--dp-border:color-mix(in srgb,var(--dp-fg)16%,var(--dp-bg));--dp-hover:color-mix(in srgb,var(--dp-fg)5%,var(--dp-bg));--dp-accent:#2563eb;--dp-accent-fg:#fff;--dp-focus:var(--dp-accent);--dp-focus-width:2px;--dp-radius:.5rem;--dp-day-size:2.75rem;--dp-gap:.375rem;--dp-header-control-size:2.25rem;--dp-header-block-gap:.75rem;--dp-row-gap:.375rem;--dp-picker-button-size:2.5rem;--dp-year-inline-size:5.5rem;--dp-day-radius:calc(var(--dp-radius)*.75);color:var(--dp-fg);font:inherit}.dp-visually-hidden{position:absolute!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important;block-size:1px!important;inline-size:1px!important;margin:-1px!important;padding:0!important}date-calendar{display:block;inline-size:max-content;max-inline-size:100%}.dp-calendar-shell{inline-size:max-content;max-inline-size:100%}.dp-calendar-header{display:grid;grid-template-columns:minmax(0,1fr)var(--dp-year-inline-size)auto auto;align-items:stretch;gap:var(--dp-gap);margin-block-end:var(--dp-header-block-gap)}date-calendar[data-year-first] .dp-calendar-header{grid-template-columns:var(--dp-year-inline-size)minmax(0,1fr)auto auto}.dp-calendar-header :where(button,select,input){box-sizing:border-box;min-inline-size:0}.dp-calendar-header .dp-skin{min-block-size:var(--dp-header-control-size);border:1px solid var(--dp-border);border-radius:calc(var(--dp-radius)*.75);background:var(--dp-bg);color:var(--dp-fg);font:inherit;padding-block-start:.15rem;padding-block-end:.15rem;line-height:1.2}.dp-calendar-header input.dp-skin{padding-inline-start:.45rem;padding-inline-end:.45rem}.dp-month-select{overflow:hidden;text-overflow:ellipsis;inline-size:100%}.dp-month-select.dp-skin{appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - .9rem),calc(100% - .65rem);background-repeat:no-repeat;background-size:.3rem .3rem;padding-inline-start:.45rem;padding-inline-end:2rem}[dir=rtl] .dp-month-select.dp-skin,html[dir=rtl] .dp-month-select.dp-skin{background-position:.9rem,.65rem}.dp-year-input{inline-size:100%}.dp-nav.dp-skin{display:grid;inline-size:var(--dp-header-control-size);cursor:pointer;place-items: center;padding:0;font-size:1.35rem;line-height:1}.dp-nav svg{display:block;pointer-events:none;block-size:1rem;inline-size:1rem}.dp-calendar-header .dp-skin:disabled,.dp-picker-button:disabled{cursor:not-allowed;opacity:.45}.dp-nav.dp-skin:hover:not(:disabled){background:var(--dp-hover)}.dp-calendar-header .dp-skin:focus-visible{outline:var(--dp-focus-width)solid var(--dp-focus);outline-offset:calc(var(--dp-focus-width)*-1)}date-picker>input:not([type=hidden]):focus-visible{outline:var(--dp-focus-width)solid var(--dp-focus);outline-offset:calc(var(--dp-focus-width)*-1)}.dp-day:focus-visible{outline:var(--dp-focus-width)solid var(--dp-focus);outline-offset:calc(var(--dp-focus-width)*-1)}.dp-day:hover:not([data-disabled=true]):not([data-selected=true]):not([data-range-start=true]):not([data-range-end=true]){background:var(--dp-hover)}.dp-grid{border-collapse:separate;border-spacing:0 var(--dp-row-gap);table-layout:fixed}.dp-grid :where(th,td){box-sizing:border-box;inline-size:var(--dp-day-size);block-size:var(--dp-day-size);text-align:center;padding:0}.dp-grid thead th{color:var(--dp-muted);block-size:1.5rem;font-size:.72rem;font-weight:500}.dp-day{position:relative;border-radius:var(--dp-day-radius);cursor:pointer;outline:none;vertical-align:middle;border:1px solid #0000;font-size:.875rem}.dp-day:-webkit-any([data-selected=true],[data-range-start=true],[data-range-end=true]):focus-visible{outline-color:var(--dp-accent-fg)}.dp-day:-moz-any([data-selected=true],[data-range-start=true],[data-range-end=true]):focus-visible{outline-color:var(--dp-accent-fg)}.dp-day:is([data-selected=true],[data-range-start=true],[data-range-end=true]):focus-visible{outline-color:var(--dp-accent-fg)}.dp-day[data-outside-month=true]{color:var(--dp-muted)}.dp-day[data-selected=true]{background:var(--dp-accent);color:var(--dp-accent-fg)}.dp-day[data-today=true]:not(:-webkit-any([data-selected=true],[data-range-start=true],[data-range-end=true])){border-color:var(--dp-accent)}.dp-day[data-today=true]:not(:-moz-any([data-selected=true],[data-range-start=true],[data-range-end=true])){border-color:var(--dp-accent)}.dp-day[data-today=true]:not(:is([data-selected=true],[data-range-start=true],[data-range-end=true])){border-color:var(--dp-accent)}.dp-day[data-disabled=true]{cursor:not-allowed;opacity:.42}.dp-day[data-range-start=true],.dp-day[data-range-end=true]{background:var(--dp-accent);color:var(--dp-accent-fg)}.dp-day[data-in-range=true]{background:color-mix(in srgb,var(--dp-accent)18%,var(--dp-bg));border-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day[data-range-start=true]:has(+[data-in-range=true],+[data-range-end=true]):is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day:-webkit-any([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day:-moz-any([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day:is([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:0;border-bottom-left-radius:0}.dp-day:-webkit-any([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day:-moz-any([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day:is([data-in-range=true],[data-range-start=true])+.dp-day[data-range-end=true]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:0;border-bottom-right-radius:0}.dp-day[data-in-range=true]:first-of-type:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:first-of-type:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){border-top-right-radius:var(--dp-day-radius);border-bottom-right-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}.dp-day[data-in-range=true]:last-of-type:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-top-left-radius:var(--dp-day-radius);border-bottom-left-radius:var(--dp-day-radius)}[data-range-preview] .dp-day:-webkit-any([data-range-start=true],[data-range-end=true]){background:color-mix(in srgb,var(--dp-accent)58%,var(--dp-bg))}[data-range-preview] .dp-day:-moz-any([data-range-start=true],[data-range-end=true]){background:color-mix(in srgb,var(--dp-accent)58%,var(--dp-bg))}[data-range-preview] .dp-day:is([data-range-start=true],[data-range-end=true]){background:color-mix(in srgb,var(--dp-accent)58%,var(--dp-bg))}[data-range-preview] .dp-day[data-in-range=true]{background:color-mix(in srgb,var(--dp-accent)11%,var(--dp-bg))}[data-range-drag] .dp-day:-webkit-any([data-range-start=true],[data-range-end=true]){cursor:grab}[data-range-drag] .dp-day:-moz-any([data-range-start=true],[data-range-end=true]){cursor:grab}[data-range-drag] .dp-day:is([data-range-start=true],[data-range-end=true]){cursor:grab}[data-range-drag=active],[data-range-drag=active] .dp-day{cursor:grabbing}.dp-day-number{display:block;font-variant-numeric:tabular-nums}.dp-day[data-disabled=true]:focus-visible{opacity:1}.dp-day[data-disabled=true]:focus-visible .dp-day-number{color:var(--dp-muted)}.dp-day-extra{position:absolute;display:flex;pointer-events:none;justify-content:center;gap:2px;min-block-size:.35rem;font-size:.55rem;line-height:1;bottom:1px;left:2px;right:2px}.dp-week-number,.dp-week-heading{color:var(--dp-muted);font-size:.65rem;font-weight:500;inline-size:1.6rem!important}date-picker{position:relative;display:inline-grid;grid-template-columns:minmax(0,1fr);align-items:stretch;max-inline-size:100%}date-picker>input:not([type=hidden]){min-inline-size:0}date-picker>input:not([type=hidden]):not([type=time]){grid-column:1;grid-row:1;box-sizing:border-box;inline-size:100%;padding-inline-end:calc(var(--dp-picker-button-size) + .5rem)}.dp-picker-button{display:grid;grid-column:1;grid-row:1;inline-size:var(--dp-picker-button-size);color:var(--dp-fg);font:inherit;cursor:pointer;background:0 0;border:0;place-self:stretch end;place-items: center;min-inline-size:0}.dp-picker-button:focus-visible{outline:var(--dp-focus-width)solid var(--dp-focus);outline-offset:-5px;border-radius:var(--dp-radius)}date-picker:has(>[data-time-start],>[data-time-end]){grid-template-columns:minmax(0,1fr)minmax(0,1fr);column-gap:var(--dp-gap)}date-picker:has(>[data-time-start]):has(>[data-time-end]){grid-template-columns:minmax(0,1fr)minmax(0,1fr)minmax(0,1fr)}date-picker>input[data-time-start]{grid-column:2;grid-row:1;min-inline-size:0}date-picker>input[data-time-end]{grid-column:3;grid-row:1;min-inline-size:0}date-picker[range]{row-gap:var(--dp-gap)}date-picker[range]>input[data-range-start]{grid-row:1}date-picker[range]>input[data-range-end]{grid-row:2}date-picker[range]>.dp-picker-button[data-endpoint=start]{grid-row:1}date-picker[range]>.dp-picker-button[data-endpoint=end]{grid-row:2}.dp-picker-panel[popover]{position:fixed;border:1px solid var(--dp-border);border-radius:var(--dp-radius);background:var(--dp-bg);color:var(--dp-fg);max-block-size:var(--available-height,90svh);overflow:auto;max-inline-size:calc(100vi - 1rem);margin:0;padding:.875rem 1rem;inset:auto;box-shadow:0 .5rem 1.5rem #0f172a1f}.dp-picker-panel:not(:popover-open){display:none}@media (forced-colors:active){.dp-month-select.dp-skin,[dir=rtl] .dp-month-select.dp-skin{appearance:auto;background-image:none;padding-inline-start:.45rem;padding-inline-end:.45rem}.dp-day:-webkit-any([data-selected=true],[data-range-start=true],[data-range-end=true]){color:canvastext;background-color:canvas;border:2px solid highlight}.dp-day:-moz-any([data-selected=true],[data-range-start=true],[data-range-end=true]){color:canvastext;background-color:canvas;border:2px solid highlight}.dp-day:is([data-selected=true],[data-range-start=true],[data-range-end=true]){color:canvastext;background-color:canvas;border:2px solid highlight}.dp-day[data-in-range=true]{color:canvastext}.dp-day[data-in-range=true]:after{content:"";position:absolute;background-color:highlight;block-size:1px;bottom:4px;left:3px;right:3px}.dp-day[data-today=true]{border-color:highlight}.dp-day-extra{color:canvastext;forced-color-adjust:none}}
1
+ :where(date-calendar,date-picker){--dp-bg: #ffffff;--dp-fg: #1f2328;--dp-muted: color-mix(in srgb,var(--dp-fg) 58%,var(--dp-bg));--dp-border: color-mix(in srgb,var(--dp-fg) 16%,var(--dp-bg));--dp-hover: color-mix(in srgb,var(--dp-fg) 5%,var(--dp-bg));--dp-accent: #2563eb;--dp-accent-fg: #fff;--dp-focus: var(--dp-accent);--dp-focus-width: 2px;--dp-radius: 0.5rem;--dp-day-size: 2.75rem;--dp-gap: 0.375rem;--dp-header-control-size: 2.25rem;--dp-header-block-gap: 0.75rem;--dp-row-gap: 0.375rem;--dp-picker-button-size: 2.5rem;--dp-year-inline-size: 5.5rem;--dp-day-radius: calc(var(--dp-radius) * 0.75);color: var(--dp-fg);font: inherit}.dp-visually-hidden{position: absolute !important;inline-size: 1px !important;block-size: 1px !important;padding: 0 !important;margin: -1px !important;overflow: hidden !important;clip: rect(0 0 0 0) !important;white-space: nowrap !important;border: 0 !important}date-calendar{display: block;inline-size: max-content;max-inline-size: 100%}.dp-calendar-shell{inline-size: max-content;max-inline-size: 100%}.dp-calendar-header{display: grid;grid-template-columns: minmax(0,1fr) var(--dp-year-inline-size) auto auto;align-items: stretch;gap: var(--dp-gap);margin-block-end: var(--dp-header-block-gap)}date-calendar[data-year-first] .dp-calendar-header{grid-template-columns: var(--dp-year-inline-size) minmax(0,1fr) auto auto}.dp-calendar-header :where(button,select,input){box-sizing: border-box;min-inline-size: 0}.dp-calendar-header .dp-skin{min-block-size: var(--dp-header-control-size);padding-block: 0.15rem;border: 1px solid var(--dp-border);border-radius: calc(var(--dp-radius) * 0.75);background: var(--dp-bg);color: var(--dp-fg);font: inherit;line-height: 1.2}.dp-calendar-header input.dp-skin{padding-inline: 0.45rem}.dp-month-select{inline-size: 100%;overflow: hidden;text-overflow: ellipsis}.dp-month-select.dp-skin{appearance: none;padding-inline: 0.45rem 2rem;background-image: linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position: calc(100% - 0.9rem) 50%,calc(100% - 0.65rem) 50%;background-size: 0.3rem 0.3rem;background-repeat: no-repeat}[dir="rtl"] .dp-month-select.dp-skin,html[dir="rtl"] .dp-month-select.dp-skin{background-position: 0.9rem 50%,0.65rem 50%}.dp-year-input{inline-size: 100%}.dp-nav.dp-skin{display: grid;place-items: center;inline-size: var(--dp-header-control-size);padding: 0;font-size: 1.35rem;line-height: 1;cursor: pointer}.dp-nav svg{display: block;inline-size: 1rem;block-size: 1rem;pointer-events: none}.dp-calendar-header .dp-skin:disabled,.dp-picker-button:disabled{cursor: not-allowed;opacity: 0.45}.dp-nav.dp-skin:hover:not(:disabled){background: var(--dp-hover)}.dp-calendar-header .dp-skin:focus-visible,date-picker>input:not([type="hidden"]):focus-visible,.dp-day:focus-visible{outline: var(--dp-focus-width) solid var(--dp-focus);outline-offset: calc(var(--dp-focus-width) * -1)}.dp-day:hover:not([data-disabled="true"]):not([data-selected="true"]):not([data-range-start="true"]):not( [data-range-end="true"] ){background: var(--dp-hover)}.dp-grid{border-collapse: separate;border-spacing: 0 var(--dp-row-gap);table-layout: fixed}.dp-grid :where(th,td){box-sizing: border-box;inline-size: var(--dp-day-size);block-size: var(--dp-day-size);padding: 0;text-align: center}.dp-grid thead th{block-size: 1.5rem;color: var(--dp-muted);font-size: 0.72rem;font-weight: 500}.dp-day{position: relative;border: 1px solid transparent;border-radius: var(--dp-day-radius);cursor: pointer;outline: none;vertical-align: middle;font-size: 0.875rem}.dp-day:is([data-selected="true"],[data-range-start="true"],[data-range-end="true"]):focus-visible{outline-color: var(--dp-accent-fg)}.dp-day[data-outside-month="true"]{color: var(--dp-muted)}.dp-day[data-selected="true"]{background: var(--dp-accent);color: var(--dp-accent-fg)}.dp-day[data-today="true"]:not([data-selected="true"],[data-range-start="true"],[data-range-end="true"]){border-color: var(--dp-accent)}.dp-day[data-disabled="true"]{cursor: not-allowed;opacity: 0.42}.dp-day[data-range-start="true"],.dp-day[data-range-end="true"]{background: var(--dp-accent);color: var(--dp-accent-fg)}.dp-day[data-in-range="true"]{border-radius: 0;background: color-mix(in srgb,var(--dp-accent) 18%,var(--dp-bg))}.dp-day[data-range-start="true"]:has(+ [data-in-range="true"],+ [data-range-end="true"]){border-start-end-radius: 0;border-end-end-radius: 0}.dp-day:is([data-in-range="true"],[data-range-start="true"]) + .dp-day[data-range-end="true"]{border-start-start-radius: 0;border-end-start-radius: 0}.dp-day[data-in-range="true"]:first-of-type{border-start-start-radius: var(--dp-day-radius);border-end-start-radius: var(--dp-day-radius)}.dp-day[data-in-range="true"]:last-of-type{border-start-end-radius: var(--dp-day-radius);border-end-end-radius: var(--dp-day-radius)}[data-range-preview] .dp-day:is([data-range-start="true"],[data-range-end="true"]){background: color-mix(in srgb,var(--dp-accent) 58%,var(--dp-bg))}[data-range-preview] .dp-day[data-in-range="true"]{background: color-mix(in srgb,var(--dp-accent) 11%,var(--dp-bg))}[data-range-drag] .dp-day:is([data-range-start="true"],[data-range-end="true"]){cursor: grab}[data-range-drag="active"],[data-range-drag="active"] .dp-day{cursor: grabbing}.dp-day-number{display: block;font-variant-numeric: tabular-nums}.dp-day[data-disabled="true"]:focus-visible{opacity: 1}.dp-day[data-disabled="true"]:focus-visible .dp-day-number{color: var(--dp-muted)}.dp-day-extra{position: absolute;inset-inline: 2px;inset-block-end: 1px;display: flex;justify-content: center;gap: 2px;min-block-size: 0.35rem;font-size: 0.55rem;line-height: 1;pointer-events: none}.dp-week-number,.dp-week-heading{inline-size: 1.6rem !important;color: var(--dp-muted);font-size: 0.65rem;font-weight: 500}date-picker{position: relative;display: inline-grid;grid-template-columns: minmax(0,1fr);align-items: stretch;max-inline-size: 100%}date-picker>input:not([type="hidden"]){min-inline-size: 0}date-picker>input:not([type="hidden"]):not([type="time"]){grid-column: 1;grid-row: 1;box-sizing: border-box;inline-size: 100%;padding-inline-end: calc(var(--dp-picker-button-size) + 0.5rem)}.dp-picker-button{display: grid;place-items: center;grid-column: 1;grid-row: 1;justify-self: end;align-self: stretch;inline-size: var(--dp-picker-button-size);min-inline-size: 0;border: 0;background: transparent;color: var(--dp-fg);font: inherit;cursor: pointer}.dp-picker-button:focus-visible{outline: var(--dp-focus-width) solid var(--dp-focus);outline-offset: -5px;border-radius: var(--dp-radius)}date-picker:has(>[data-time-start],>[data-time-end]){grid-template-columns: minmax(0,1fr) minmax(0,1fr);column-gap: var(--dp-gap)}date-picker:has(>[data-time-start]):has(>[data-time-end]){grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}date-picker>input[data-time-start]{grid-column: 2;grid-row: 1;min-inline-size: 0}date-picker>input[data-time-end]{grid-column: 3;grid-row: 1;min-inline-size: 0}date-picker[range]{row-gap: var(--dp-gap)}date-picker[range]>input[data-range-start]{grid-row: 1}date-picker[range]>input[data-range-end]{grid-row: 2}date-picker[range]>.dp-picker-button[data-endpoint="start"]{grid-row: 1}date-picker[range]>.dp-picker-button[data-endpoint="end"]{grid-row: 2}.dp-picker-panel[popover]{position: fixed;inset: auto;margin: 0;padding: 0.875rem 1rem;border: 1px solid var(--dp-border);border-radius: var(--dp-radius);background: var(--dp-bg);color: var(--dp-fg);box-shadow: 0 0.5rem 1.5rem rgb(15 23 42 / 0.12);max-block-size: var(--available-height,90svh);max-inline-size: calc(100vi - 1rem);overflow: auto}.dp-picker-panel:not(:popover-open){display: none}@media (forced-colors: active){.dp-month-select.dp-skin,[dir="rtl"] .dp-month-select.dp-skin{appearance: auto;background-image: none;padding-inline: 0.45rem}.dp-day:is([data-selected="true"],[data-range-start="true"],[data-range-end="true"]){border: 2px solid Highlight;background-color: Canvas;color: CanvasText}.dp-day[data-in-range="true"]{color: CanvasText}.dp-day[data-in-range="true"]::after{content: "";position: absolute;inset-inline: 3px;inset-block-end: 4px;block-size: 1px;background-color: Highlight}.dp-day[data-today="true"]{border-color: Highlight}.dp-day-extra{color: CanvasText;forced-color-adjust: none}}