@actionexec/dashboards 0.14.1 → 0.16.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.
@@ -1,6 +1,6 @@
1
1
  export { setApiUrl } from './api/fetcher';
2
2
  export type { AggregationType, FilterType, WidgetType, DataWidgetType, ControlWidgetType, ChartType, FormatType, DateFilterMode, Granularity, FilterDefinition, TargetDefinition, GridPosition, ComparisonDisplay, GoodWhen, Comparison, AggregationStep, ColumnExpressionTerm, KpiOperand, KpiTerm, TimeOffset, TimeOffsetUnit, TimeOffsetMode, FilterOperator, FilterCondition, WidgetFilter, CompositionDisplay, BridgeDirection, CompositionCategory, CompositionConfig, ChartSeriesConfig, ChartAxisConfig, KpiCardConfig, GaugeConfig, ChartConfig, FilterConfig, VariableConfig, PaletteConfig, AnyWidgetConfig, TableConfig, TableColumnConfig, TableAggregationLevel, TableSortLevel, TableOverflow, WidgetDefinition, WidgetConfigOf, DashboardLayout, FilterValuesResponse, RenderResponse, LayoutResponse, } from './types';
3
- export type { StatementLineType, PeriodGranularity, StatementLineStyle, StatementPeriods, StatementPeriodColumn, StatementComputedLine, StatementRenderResponse, StatementLayoutResponse, } from './types/statement';
3
+ export type { StatementLineType, PeriodGranularity, StatementLineStyle, StatementPeriods, StatementColors, StatementPeriodColumn, StatementComputedLine, StatementRenderResponse, StatementLayoutResponse, } from './types/statement';
4
4
  export { DEFAULT_PALETTE, DEFAULT_GRID_COLUMNS, DEFAULT_GRID_ROWS, EMPTY_LAYOUT, WIDGET_TYPE_LABELS, DATA_WIDGET_TYPES, CONTROL_WIDGET_TYPES, CONTROL_WIDGET_SET, AGGREGATION_LABELS, FORMAT_LABELS, NUMERIC_FORMAT_OPTIONS, COMPARISON_DISPLAY_LABELS, GOOD_WHEN_LABELS, TABLE_OVERFLOW_LABELS, TIME_OFFSET_UNIT_LABELS, TIME_OFFSET_WINDOW_LABEL, CHART_TYPE_LABELS, FILTER_TYPE_LABELS, DEFAULT_GRID, DEFAULT_CONFIG, COMPOSITION_DISPLAY_LABELS, BRIDGE_DIRECTION_LABELS, FILTER_OPERATOR_LABELS, VALUELESS_FILTER_OPERATORS, LIST_FILTER_OPERATORS, MULTI_VALUE_SEPARATOR, } from './types';
5
5
  export { formatValue, formatCompact, isNumericFormat } from './utils/format';
6
6
  export { formatTimeOffset } from './utils/offset';
@@ -8,8 +8,8 @@ export { PALETTES, DEFAULT_PALETTE_COLORS, SLOT_INDEX, SLOT_LABELS, SERIES_COUNT
8
8
  export type { Palette, PaletteKey } from './palettes';
9
9
  export { GRID_GAP_PX, GRID_PADDING_PX, CELL_ASPECT, MIN_CELL_HEIGHT_PX, MAX_CELL_HEIGHT_PX, computeCellWidth, computeCellHeight, computeGridHeight, computeWidgetAspect, computeStackThreshold, } from './utils/grid';
10
10
  export type { DashboardGeometry } from './utils/grid';
11
- export { MONTH_NAMES_SHORT, MONTH_NAMES_FULL, getFullYearRange, getMonthRange, getWeekRange, getISOWeek, getWeeksInMonth, getMonthWeeks, parseYearFromRange, parseMonthFromRange, parseWeekFromRange, parseMonthWeekFromRange, getYearRange, } from './utils/date';
12
- export type { MonthWeek } from './utils/date';
11
+ export { MONTH_NAMES_SHORT, MONTH_NAMES_FULL, getFullYearRange, getMonthRange, getWeekRange, getISOWeek, getWeeksInMonth, getMonthWeeks, parseYearFromRange, parseMonthFromRange, parseWeekFromRange, parseMonthWeekFromRange, getYearRange, rangePeriods, } from './utils/date';
12
+ export type { MonthWeek, RangeUnit, RangePeriod } from './utils/date';
13
13
  export { ColorPaletteSelector } from './components/ColorPaletteSelector';
14
14
  export { DashboardDatePicker, isoToDate, dateToIso } from './components/DashboardDatePicker';
15
15
  export { SearchableSelect } from './components/SearchableSelect';
package/dist/internals.js CHANGED
@@ -1,5 +1,5 @@
1
- import { T as L, E as T } from "./ColorPaletteSelector-CZP3HDNJ.js";
2
- import { F as I, H as R, w as r, I as n, J as P, K as D, s as m, L as F, C as M, N, O as g, P as C, Q as G, R as c, U as i, V as U, D as W, W as h, X as l, Y as p, Z as u, _ as B, v as Y, G as H, $ as d, a0 as k, x as X, a1 as f, k as V, M as b, a2 as $, a3 as w, a4 as x, a5 as j, a6 as q, S as v, a7 as y, a8 as J, a9 as K, aa as Q, c as Z, b as z, t as aa, d as sa, u as ea, ab as Ea, ac as _a, e as La, g as Ta, o as ta, ad as Sa, n as Aa, l as Oa, r as oa, q as Ia, ae as Ra, af as ra, h as na, i as Pa, ag as Da, j as ma, m as Fa, ah as Ma, p as Na, ai as ga } from "./ColorPaletteSelector-CZP3HDNJ.js";
1
+ import { T as L, F as T } from "./ColorPaletteSelector-CxUQv9E9.js";
2
+ import { H as I, I as R, x as r, J as n, K as P, L as D, t as m, N as F, C as g, O as M, P as N, Q as i, R as C, U as G, V as c, W as U, D as W, X as h, Y as l, Z as p, _ as u, $ as B, w as Y, G as d, a0 as H, a1 as k, y as X, a2 as f, k as V, M as b, a3 as $, a4 as w, a5 as x, a6 as j, a7 as y, S as q, a8 as v, a9 as J, aa as K, ab as Q, c as Z, b as z, u as aa, d as sa, v as ea, ac as Ea, ad as _a, e as La, g as Ta, o as ta, ae as Sa, n as Aa, l as Oa, s as oa, q as Ia, af as Ra, ag as ra, h as na, i as Pa, ah as Da, j as ma, m as Fa, ai as ga, p as Ma, r as Na, aj as ia } from "./ColorPaletteSelector-CxUQv9E9.js";
3
3
  const t = "−";
4
4
  function A(a) {
5
5
  const s = a.amount ?? 0;
@@ -16,13 +16,13 @@ export {
16
16
  D as COMPOSITION_DISPLAY_LABELS,
17
17
  m as CONTROL_WIDGET_SET,
18
18
  F as CONTROL_WIDGET_TYPES,
19
- M as ColorPaletteSelector,
20
- N as DATA_WIDGET_TYPES,
21
- g as DEFAULT_CONFIG,
22
- C as DEFAULT_GRID,
23
- G as DEFAULT_GRID_COLUMNS,
24
- c as DEFAULT_GRID_ROWS,
25
- i as DEFAULT_PALETTE,
19
+ g as ColorPaletteSelector,
20
+ M as DATA_WIDGET_TYPES,
21
+ N as DEFAULT_CONFIG,
22
+ i as DEFAULT_GRID,
23
+ C as DEFAULT_GRID_COLUMNS,
24
+ G as DEFAULT_GRID_ROWS,
25
+ c as DEFAULT_PALETTE,
26
26
  U as DEFAULT_PALETTE_COLORS,
27
27
  W as DashboardDatePicker,
28
28
  h as EMPTY_LAYOUT,
@@ -31,8 +31,8 @@ export {
31
31
  u as FORMAT_LABELS,
32
32
  B as GOOD_WHEN_LABELS,
33
33
  Y as GRID_GAP_PX,
34
- H as GRID_PADDING_PX,
35
- d as LIST_FILTER_OPERATORS,
34
+ d as GRID_PADDING_PX,
35
+ H as LIST_FILTER_OPERATORS,
36
36
  k as MAX_CELL_HEIGHT_PX,
37
37
  X as MIN_CELL_HEIGHT_PX,
38
38
  f as MONTH_NAMES_FULL,
@@ -42,9 +42,9 @@ export {
42
42
  w as PALETTES,
43
43
  x as SERIES_COUNT,
44
44
  j as SLOT_INDEX,
45
- q as SLOT_LABELS,
46
- v as SearchableSelect,
47
- y as TABLE_OVERFLOW_LABELS,
45
+ y as SLOT_LABELS,
46
+ q as SearchableSelect,
47
+ v as TABLE_OVERFLOW_LABELS,
48
48
  T as TIME_OFFSET_UNIT_LABELS,
49
49
  L as TIME_OFFSET_WINDOW_LABEL,
50
50
  J as TOTAL_SLOTS,
@@ -73,8 +73,9 @@ export {
73
73
  Da as isoToDate,
74
74
  ma as parseMonthFromRange,
75
75
  Fa as parseMonthWeekFromRange,
76
- Ma as parseWeekFromRange,
77
- Na as parseYearFromRange,
78
- ga as setApiUrl
76
+ ga as parseWeekFromRange,
77
+ Ma as parseYearFromRange,
78
+ Na as rangePeriods,
79
+ ia as setApiUrl
79
80
  };
80
81
  //# sourceMappingURL=internals.js.map
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";.react-datepicker__navigation-icon:before,.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{border-color:#ccc;border-style:solid;border-width:3px 3px 0 0;content:"";display:block;height:9px;position:absolute;top:6px;width:9px}.react-datepicker__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.react-datepicker-wrapper{display:inline-block;padding:0;border:0}.react-datepicker{font-family:Helvetica Neue,helvetica,arial,sans-serif;font-size:.8rem;background-color:#fff;color:#000;border:1px solid #aeaeae;border-radius:.3rem;display:inline-block;position:relative;line-height:initial}.react-datepicker--time-only .react-datepicker__time-container{border-left:0}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-left-radius:.375em;border-bottom-right-radius:.375em}.react-datepicker-popper{z-index:1;line-height:0}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle,.react-datepicker-popper--header-middle[data-placement^=bottom] .react-datepicker__triangle,.react-datepicker-popper--header-bottom[data-placement^=bottom] .react-datepicker__triangle{fill:#fff;color:#fff}.react-datepicker-popper--header-bottom[data-placement^=top] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker__header{text-align:center;background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:.3rem;padding:8px 0;position:relative}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0}.react-datepicker__header:not(.react-datepicker__header--has-time-select,.react-datepicker__header--middle,.react-datepicker__header--bottom){border-top-right-radius:.3rem}.react-datepicker__header--middle{border-top:1px solid #aeaeae;border-radius:0;margin-top:4px}.react-datepicker__header--bottom{border-bottom:none;border-top:1px solid #aeaeae;border-radius:0 0 .3rem .3rem}.react-datepicker__header-wrapper{position:relative}.react-datepicker__header-wrapper .react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:2px}.react-datepicker__year-dropdown-container--select,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--scroll{display:inline-block;margin:0 15px}.react-datepicker__month-select,.react-datepicker__year-select,.react-datepicker__month-year-select{background-color:transparent;border:1px solid #aeaeae;border-radius:.3rem;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;margin-top:5px;padding:2px 5px}.react-datepicker__month-select:focus-visible,.react-datepicker__year-select:focus-visible,.react-datepicker__month-year-select:focus-visible{outline:auto 1px}.react-datepicker__current-month,.react-datepicker-time__header,.react-datepicker-year-header{margin-top:0;color:#000;font-weight:700;font-size:.944rem}h2.react-datepicker__current-month{padding:0;margin:0}.react-datepicker-time__header{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.react-datepicker__navigation{align-items:center;background:none;display:flex;justify-content:center;text-align:center;cursor:pointer;position:absolute;top:2px;padding:0;border:none;z-index:1;height:32px;width:32px;text-indent:-999em;overflow:hidden}.react-datepicker__navigation--previous{left:2px}.react-datepicker__navigation--next{right:2px}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px}.react-datepicker__navigation--years{position:relative;top:0;display:block;margin-left:auto;margin-right:auto}.react-datepicker__navigation--years-previous{top:4px}.react-datepicker__navigation--years-upcoming{top:-4px}.react-datepicker__navigation:hover *:before{border-color:#a6a6a6}.react-datepicker__navigation-icon{position:relative;top:-1px;font-size:20px;width:0}.react-datepicker__navigation-icon--next{left:-2px}.react-datepicker__navigation-icon--next:before{transform:rotate(45deg);left:-7px}.react-datepicker__navigation-icon--previous{right:-2px}.react-datepicker__navigation-icon--previous:before{transform:rotate(225deg);right:-7px}.react-datepicker__month-container{float:left}.react-datepicker__year{margin:.5em;text-align:center}.react-datepicker__year-wrapper{display:flex;flex-wrap:wrap;max-width:180px}.react-datepicker__year .react-datepicker__year-text{display:inline-block;width:5em;margin:2px}.react-datepicker__month{margin:.5em;text-align:center}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{display:inline-block;width:5em;margin:2px}.react-datepicker__input-time-container{clear:both;width:100%;float:left;margin:5px 0 10px 15px;text-align:left}.react-datepicker__input-time-container .react-datepicker-time__caption,.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{display:inline-block;margin-left:10px}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{margin-left:5px;display:inline-block}.react-datepicker__time-container{float:right;border-left:1px solid #aeaeae;width:85px}.react-datepicker__time-container--with-today-button{display:inline;border:1px solid #aeaeae;border-radius:.375em;position:absolute;right:-87px;top:0}.react-datepicker__time-container .react-datepicker__time{position:relative;background:#fff;border-bottom-right-radius:.375em}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{width:85px;overflow-x:hidden;margin:0 auto;text-align:center;border-bottom-right-radius:.375em}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{list-style:none;margin:0;height:calc(195px + 1.0625em);overflow-y:scroll;padding-right:0;padding-left:0;width:100%;box-sizing:content-box}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{height:30px;padding:5px 10px;white-space:nowrap}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{cursor:pointer;background-color:#f0f0f0}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{background-color:#216ba5;color:#fff;font-weight:700}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{cursor:default;background-color:transparent}.react-datepicker__week-number{color:#ccc;display:inline-block;width:2.125em;line-height:2.125em;text-align:center;margin:.208em}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):hover{border-radius:.3rem;background-color:#f0f0f0}.react-datepicker__week-number--selected{border-radius:.3rem;background-color:#216ba5;color:#fff}.react-datepicker__week-number--selected:hover{background-color:#1d5d90}.react-datepicker__day-names{text-align:center;white-space:nowrap;margin-bottom:-8px}.react-datepicker__week{white-space:nowrap}.react-datepicker__day-name,.react-datepicker__day,.react-datepicker__time-name{color:#000;display:inline-block;width:2.125em;line-height:2.125em;text-align:center;margin:.208em}.react-datepicker__day-name--disabled,.react-datepicker__day--disabled,.react-datepicker__time-name--disabled{cursor:default;color:#ccc}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer}.react-datepicker__day:not([aria-disabled=true]):hover,.react-datepicker__month-text:not([aria-disabled=true]):hover,.react-datepicker__quarter-text:not([aria-disabled=true]):hover,.react-datepicker__year-text:not([aria-disabled=true]):hover{border-radius:.3rem;background-color:#f0f0f0}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:700}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{border-radius:.3rem;background-color:#3dcc4a;color:#fff}.react-datepicker__day--highlighted:not([aria-disabled=true]):hover,.react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover{background-color:#32be3f}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:#f0f}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{position:relative;border-radius:.3rem;background-color:#ff6803;color:#fff}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s ease-in-out}.react-datepicker__day--holidays:not([aria-disabled=true]):hover,.react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__year-text--holidays:not([aria-disabled=true]):hover{background-color:#cf5300}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{visibility:visible;opacity:1}.react-datepicker__day--selected,.react-datepicker__day--in-selecting-range,.react-datepicker__day--in-range,.react-datepicker__month-text--selected,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--selected,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--selected,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--in-range{border-radius:.3rem;background-color:#216ba5;color:#fff}.react-datepicker__day--selected:not([aria-disabled=true]):hover,.react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__day--in-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-range:not([aria-disabled=true]):hover{background-color:#1d5d90}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{border-radius:.3rem;background-color:#bad9f1;color:#000}.react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover{background-color:#1d5d90;color:#fff}.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range){background-color:#216ba580}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range){background-color:#f0f0f0;color:#000}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{cursor:default;color:#ccc}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{position:absolute;bottom:70%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s ease-in-out}.react-datepicker__input-container{position:relative;display:inline-block;width:100%}.react-datepicker__input-container .react-datepicker__calendar-icon{position:absolute;padding:.625em;box-sizing:content-box}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px}.react-datepicker__year-read-view,.react-datepicker__month-read-view,.react-datepicker__month-year-read-view{border:1px solid transparent;border-radius:.3rem;position:relative}.react-datepicker__year-read-view:hover,.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover{cursor:pointer}.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow{border-top-color:#b3b3b3}.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{transform:rotate(135deg);right:-16px;top:0}.react-datepicker__year-dropdown,.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown{background-color:#f0f0f0;position:absolute;width:50%;left:25%;top:30px;z-index:1;text-align:center;border-radius:.3rem;border:1px solid #aeaeae}.react-datepicker__year-dropdown:hover,.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover{cursor:pointer}.react-datepicker__year-dropdown--scrollable,.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable{height:150px;overflow-y:scroll}.react-datepicker__year-option,.react-datepicker__month-option,.react-datepicker__month-year-option{line-height:20px;width:100%;display:block;margin-left:auto;margin-right:auto}.react-datepicker__year-option:first-of-type,.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type{border-top-left-radius:.3rem;border-top-right-radius:.3rem}.react-datepicker__year-option:last-of-type,.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem}.react-datepicker__year-option:hover,.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover{background-color:#ccc}.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:#b3b3b3}.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous{border-top-color:#b3b3b3}.react-datepicker__year-option--selected,.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected{position:absolute;left:15px}.react-datepicker__close-icon{cursor:pointer;background-color:transparent;border:0;outline:0;padding:0 6px 0 0;position:absolute;top:0;right:0;height:100%;display:table-cell;vertical-align:middle}.react-datepicker__close-icon:after{cursor:pointer;background-color:#216ba5;color:#fff;border-radius:50%;height:16px;width:16px;padding:2px;font-size:12px;line-height:1;text-align:center;display:table-cell;vertical-align:middle;content:"×"}.react-datepicker__close-icon--disabled{cursor:default}.react-datepicker__close-icon--disabled:after{cursor:default;background-color:#ccc}.react-datepicker__today-button{background:#f0f0f0;border-top:1px solid #aeaeae;cursor:pointer;text-align:center;font-weight:700;padding:5px 0;clear:left}.react-datepicker__portal{position:fixed;width:100vw;height:100vh;background-color:#000c;left:0;top:0;justify-content:center;align-items:center;display:flex;z-index:2147483647}.react-datepicker__children-container{width:17.25em;margin:.5em;padding-right:.25em;padding-left:.25em;height:auto}.react-datepicker__aria-live{position:absolute;clip-path:circle(0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px;white-space:nowrap}.react-datepicker__calendar-icon{width:1em;height:1em;vertical-align:-.125em}.react-datepicker-popper-offset{margin-top:-.7em}:where(.preview-tab,.stmt,.widget,.palette-selector,.ddp-field){--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--transition-fast: .15s ease;--shadow-lg: 0 10px 25px rgba(0, 0, 0, .4)}.preview-tab{display:flex;flex-direction:column;gap:var(--spacing-md);position:relative}.preview-tab__empty{display:flex;align-items:center;justify-content:center;min-height:300px;color:var(--text-muted);font-size:.9rem;border:2px dashed var(--bg-elevated);border-radius:var(--radius-lg)}.preview-tab__loading{display:flex;align-items:center;justify-content:center;padding:var(--spacing-2xl) 0;color:var(--text-secondary)}.preview-tab__error{padding:var(--spacing-md);background:#f443361a;border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-size:.875rem;text-align:center}.preview-tab__grid{display:grid;grid-template-columns:repeat(var(--dash-cols, 30),1fr);grid-template-rows:repeat(var(--dash-rows, 10),var(--dash-cell-h, 40px));grid-auto-rows:var(--dash-cell-h, 40px);gap:var(--dash-gap, 6px);padding:var(--dash-pad, 16px);background:var(--bg-dark);border-radius:var(--radius-lg)}.preview-tab__grid--stacked{grid-template-columns:1fr;grid-template-rows:none;grid-auto-rows:auto}.preview-tab__widget{display:flex;background:var(--bg-elevated);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-md);overflow:hidden;min-height:0;container-type:size}.preview-tab__widget--control{background:var(--bg-elevated);border:1px dashed rgba(255,255,255,.15)}.preview-tab__widget-loading{display:flex;align-items:center;justify-content:center;height:100%;min-height:80px;color:var(--text-muted);font-size:.8125rem}.preview-tab__recalculating{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-lg);background:var(--bg-elevated);border:1px solid var(--action-orange);border-radius:var(--radius-md);color:var(--action-orange);font-size:.8125rem;font-weight:var(--font-weight-medium);box-shadow:var(--shadow-lg);z-index:50}.stmt{display:flex;flex-direction:column;gap:var(--spacing-md);position:relative;color:var(--text-primary)}.stmt__state{padding:var(--spacing-xl);text-align:center;font-size:.875rem;color:var(--text-secondary)}.stmt__error{padding:var(--spacing-md);background:#f443361a;border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-size:.875rem;text-align:center}.stmt__warning{padding:var(--spacing-sm) var(--spacing-md);background:#f59e0b1f;border:1px solid var(--color-warning);border-radius:var(--radius-md);color:var(--color-warning);font-size:.8125rem;line-height:1.5}.stmt__toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:var(--spacing-md)}.stmt__filter{display:flex;flex-direction:column;gap:var(--spacing-xs);min-width:180px}.stmt__filter-label{font-size:.6875rem;font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.stmt__filter-range{display:flex;align-items:center;gap:var(--spacing-sm)}.stmt__filter--range{min-width:320px}.stmt .widget-filter__search-field{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-elevated);border:1.5px solid var(--bg-elevated);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.8125rem;box-sizing:border-box;cursor:text;transition:border-color var(--transition-fast)}.stmt .widget-filter__search-field:focus{outline:none;border-color:var(--action-orange)}.stmt .widget-filter__search-field::placeholder{color:var(--text-muted)}.stmt__toolbar-end{display:flex;align-items:center;gap:var(--spacing-md);margin-left:auto}.stmt__bounds{font-size:.6875rem;font-variant-numeric:tabular-nums;color:var(--text-muted)}.stmt__download{padding:var(--spacing-sm) var(--spacing-md);font-size:.75rem;font-weight:var(--font-weight-semibold);color:var(--action-orange);background:transparent;border:1px solid var(--action-orange);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;transition:background-color var(--transition-fast),color var(--transition-fast)}.stmt__download:hover:not(:disabled){background:var(--action-orange);color:var(--bg-dark)}.stmt__download:disabled{opacity:.4;cursor:not-allowed}.stmt__scroll{overflow-x:auto}.stmt__table{width:100%;border-collapse:collapse;font-size:.8125rem}.stmt__table thead th{position:sticky;top:0;z-index:1;padding:var(--spacing-sm);text-align:right;font-size:.6875rem;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg-elevated);white-space:nowrap}.stmt__corner{position:sticky;left:0;z-index:2;text-align:left;text-transform:none;letter-spacing:normal;font-size:.8125rem;color:var(--text-primary)}.stmt__total-head{color:var(--action-orange)}.stmt__row th{position:sticky;left:0;padding:var(--spacing-xs) var(--spacing-sm);text-align:left;font-weight:var(--font-weight-normal);color:var(--text-secondary);white-space:nowrap;background:var(--bg-paper)}.stmt__value{padding:var(--spacing-xs) var(--spacing-sm);text-align:right;white-space:nowrap;color:var(--text-primary);font-variant-numeric:tabular-nums}.stmt__value--total{border-left:1px solid var(--bg-elevated);color:var(--action-orange)}.stmt__number{display:block}.stmt__aux{display:block;font-size:.625rem;color:var(--text-muted)}.stmt__aux--up{color:var(--action-green)}.stmt__aux--down{color:var(--color-error)}.stmt__row--data:hover,.stmt__row--formula:hover{background:var(--bg-elevated)}.stmt__row--formula th,.stmt__row--formula .stmt__value{border-top:1px solid var(--bg-elevated)}.stmt__row--bold th,.stmt__row--bold .stmt__value{font-weight:var(--font-weight-bold);color:var(--text-primary)}.stmt__row--header th{padding-top:var(--spacing-md);font-size:.6875rem;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--action-orange)}.stmt__row--header .stmt__value{padding-top:var(--spacing-md);font-weight:var(--font-weight-semibold);color:var(--action-orange)}.stmt__row--separator td{height:var(--spacing-md)}.stmt__recalculating{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-lg);background:var(--bg-elevated);border:1px solid var(--action-orange);border-radius:var(--radius-md);color:var(--action-orange);font-size:.8125rem;font-weight:var(--font-weight-medium);box-shadow:var(--shadow-lg);z-index:50}.palette-selector{display:flex;flex-direction:column;gap:var(--spacing-sm)}.palette-selector--disabled{opacity:.5;pointer-events:none}.palette-selector__options{display:flex;flex-direction:column;gap:var(--spacing-xs)}.palette-selector__option{display:flex;flex-direction:column;gap:var(--spacing-xs);padding:var(--spacing-xs);background:transparent;border:1.5px solid var(--bg-elevated);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition-fast)}.palette-selector__option:hover:not(:disabled){border-color:var(--text-muted)}.palette-selector__option--active{border-color:var(--action-orange)}.palette-selector__bar{display:flex;width:100%;height:18px;border-radius:3px;overflow:hidden}.palette-selector__bar--theme{height:12px;opacity:.85}.palette-selector__swatch{flex:1;min-width:0}.palette-selector__label{font-size:.7rem;color:var(--text-muted);text-align:left}.palette-selector__custom{display:flex;flex-direction:column;gap:6px}.palette-selector__row{display:flex;flex-direction:column;gap:4px}.palette-selector__row-label{font-size:.6rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-weight:var(--font-weight-semibold)}.palette-selector__row-slots{display:flex;gap:4px;flex-wrap:wrap}.palette-selector__color-input{width:24px;height:24px;padding:0;border:1.5px solid rgba(255,255,255,.25);border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:border-color var(--transition-fast);flex-shrink:0}.palette-selector__color-input:hover:not(:disabled){border-color:#ffffff80}.palette-selector__color-input:hover:not(:disabled){border-color:var(--action-orange)}.palette-selector__color-input::-webkit-color-swatch-wrapper{padding:2px}.palette-selector__color-input::-webkit-color-swatch{border:none;border-radius:2px}.ddp-field{width:100%;min-width:0;display:block}.ddp-field .react-datepicker-wrapper,.ddp-field .react-datepicker__input-container{width:100%;display:block}.ddp-field .react-datepicker__input-container input{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-elevated);border:1.5px solid var(--bg-elevated);border-radius:var(--radius-sm);font-size:.8125rem;color:var(--text-primary);box-sizing:border-box;transition:border-color var(--transition-fast)}.ddp-field .react-datepicker__input-container input:focus{outline:none;border-color:var(--action-orange)}.ddp-field .react-datepicker__input-container input::placeholder{color:var(--text-muted)}.ddp-field .react-datepicker__input-container input:disabled{opacity:.6;cursor:not-allowed}.ddp-field .react-datepicker__month{min-height:168px}.react-datepicker-popper{z-index:1100!important}.widget{flex:1;display:flex;flex-direction:column;padding:var(--spacing-sm);background:var(--bg-elevated);border-radius:var(--radius-md);overflow:hidden;box-sizing:border-box;min-height:0;min-width:0}.widget__title{flex-shrink:0;margin:0 0 clamp(2px,1cqmin,8px);font-size:clamp(.5rem,4cqi,.9rem);font-weight:var(--font-weight-semibold);color:var(--text-secondary);line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.widget__state{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:var(--spacing-xs);font-size:clamp(.45rem,2.5cqi,.85rem);color:var(--text-muted)}.widget__state--error{color:var(--color-error)}.widget-filter,.widget-palette{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:clamp(4px,1.5cqi,12px);padding:clamp(4px,1cqi,8px) clamp(6px,1.5cqi,12px);box-sizing:border-box;min-height:0;min-width:0;overflow:hidden}.widget-variable{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;box-sizing:border-box;min-height:0;min-width:0;overflow:hidden}.widget-filter__label,.widget-palette__label,.widget-variable__label{flex-shrink:0;font-size:clamp(.45rem,6cqi,3rem);color:var(--text-muted);font-weight:var(--font-weight-medium)}.widget-kpi{justify-content:center;align-items:center;text-align:center;gap:clamp(2px,1cqmin,10px);padding:clamp(4px,2cqmin,16px)}.widget-kpi .widget__title{margin:0;font-size:clamp(.45rem,min(12cqi,12cqb),6rem);color:var(--text-muted);font-weight:var(--font-weight-medium)}.widget-kpi__value{font-size:clamp(.85rem,min(22cqi,22cqb),8rem);font-weight:var(--font-weight-bold);color:var(--text-primary);line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.widget-kpi__trend{display:flex;align-items:center;justify-content:center;gap:.35em .7em;font-size:clamp(.4rem,min(8cqi,8cqb),2rem);max-width:100%;overflow:hidden;flex-wrap:wrap}.widget-kpi__trend--good{color:var(--color-success)}.widget-kpi__trend--bad{color:var(--color-error)}.widget-kpi__trend--muted{opacity:.75;font-size:.9em}.widget-kpi__variance{font-weight:var(--font-weight-semibold);white-space:nowrap}.widget-kpi__trend-label{color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@container (max-width: 180px){.widget-kpi__trend-label{display:none}}@container (max-height: 70px){.widget-kpi .widget__title{display:none}}.widget-gauge{align-items:center;gap:0;overflow:hidden}.widget-gauge .widget__title{margin:0;font-size:clamp(.5rem,6cqi,3rem);color:var(--text-muted);font-weight:var(--font-weight-medium)}.widget-gauge__chart{position:relative;width:100%;flex:1;min-height:0}.widget-gauge__chart svg{margin-top:5%;display:block;width:100%;height:100%}.widget-gauge__center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;margin-top:25%}.widget-gauge__percent{font-size:clamp(.5rem,9cqi,4rem);font-weight:var(--font-weight-bold);color:var(--text-primary);line-height:1}.widget-gauge__comparison{font-size:clamp(.4rem,3.5cqi,2rem);color:var(--text-muted)}.widget-gauge__badge{font-size:clamp(.35rem,3cqi,1.25rem);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.3px;padding:1px var(--spacing-xs);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.widget-chart{gap:var(--spacing-xs)}.widget-chart .widget__title{color:var(--text-primary)}.widget-chart__container{flex:1;min-height:0;overflow:hidden}.widget-composition{gap:var(--spacing-xs)}.widget-composition .widget__title{color:var(--text-primary)}.widget-composition__container{flex:1;min-height:0;overflow:hidden}.widget-composition__tooltip{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--bg-paper);border-radius:6px;background-color:var(--bg-elevated);font-size:.75rem;line-height:1.3}.widget-composition__tooltip-label{color:var(--text-primary);font-weight:var(--font-weight-semibold)}.widget-composition__tooltip-value{color:var(--text-secondary)}.widget-table{display:flex;flex-direction:column;gap:.4rem;height:100%;overflow:hidden;padding:.5rem .6rem;box-sizing:border-box}.widget-table__td--placeholder{color:var(--text-muted, #999);text-align:center;padding:.75rem .5rem}.widget-table__scroll{flex:1 1 auto;min-height:0;overflow:auto}.widget-table__scroll--clip{overflow:hidden}.widget-table__table{width:100%;border-collapse:collapse;font-size:clamp(.78rem,1.5cqmin,1.25rem)}.widget-table__table--fill{height:100%}.widget-table__th--index,.widget-table__td--index{width:1%;text-align:right;color:var(--text-muted, #999);font-variant-numeric:tabular-nums;white-space:nowrap}.widget-table__th{position:sticky;top:0;z-index:1;text-align:left;font-weight:600;color:var(--text-secondary, #ccc);background:var(--bg-elevated, #333);padding:.35rem .5rem;border-bottom:1px solid var(--border, rgba(255, 255, 255, .12));white-space:nowrap}.widget-table__th--num{text-align:right}.widget-table__td{padding:.3rem .5rem;color:var(--text-primary, #f5f5f5);border-bottom:1px solid var(--border, rgba(255, 255, 255, .06));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:26ch}.widget-table__td--num{text-align:right;font-variant-numeric:tabular-nums}.widget-table__td--up{color:var(--color-success, #a4c639);font-weight:600}.widget-table__td--down{color:var(--color-error, #e5534b);font-weight:600}.widget-table__table tbody tr:hover{background:#ffffff08}.widget-filter__date-range{display:flex;align-items:center;gap:clamp(2px,1cqi,8px);flex:1;min-width:0}.widget-filter__date-range--stacked{flex-direction:column;align-items:stretch;gap:clamp(4px,1.5cqmin,10px);width:100%;padding:clamp(2px,1cqmin,8px) 0}.widget-filter__date-range .ddp-field{flex:1;min-width:0;width:100%}.widget-filter__date-range .ddp-field .react-datepicker__input-container input,.widget-filter__select{padding:clamp(8px,4cqmin,22px) clamp(6px,1.5cqmin,12px);font-size:clamp(.5rem,10cqmin,2rem);background:var(--bg-paper);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);color:var(--text-primary);flex:1;min-width:0;width:100%;box-sizing:border-box;text-align:center;font-variant-numeric:tabular-nums}.widget-filter__date-sep{font-size:clamp(.35rem,2.5cqi,.8rem);color:var(--text-muted)}.widget-filter__multi{display:flex;flex-direction:column;align-items:stretch;justify-content:space-around;gap:clamp(4px,1.5cqmin,14px);flex:1;min-height:0;width:100%;padding:clamp(6px,2cqmin,14px) clamp(4px,2cqmin,12px);box-sizing:border-box;overflow-y:auto}.widget-filter__multi::-webkit-scrollbar{width:6px}.widget-filter__multi::-webkit-scrollbar-track{background:transparent}.widget-filter__multi::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:3px}.widget-filter__multi::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.widget-filter__multi-clear{flex-shrink:0;width:100%;padding:clamp(3px,1cqmin,8px) clamp(8px,2.5cqmin,14px);background:transparent;border:1px solid var(--bg-elevated);border-radius:var(--radius-sm);color:var(--action-orange);font-size:clamp(.4rem,7cqmin,1rem);font-weight:var(--font-weight-semibold);text-align:center;cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast)}.widget-filter__multi-clear:hover{background-color:var(--bg-elevated);border-color:var(--action-orange)}.widget-filter__multi-option{display:flex;align-items:center;gap:clamp(6px,4cqmin,14px);padding:clamp(4px,1.5cqmin,12px) clamp(8px,2.5cqmin,14px);height:clamp(20px,18cqb,120px);background:var(--bg-paper);border:1px solid var(--bg-elevated);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition-fast),background-color var(--transition-fast);font-size:clamp(.45rem,8cqmin,1.2rem);font-weight:var(--font-weight-medium);color:var(--text-primary);line-height:1;flex-shrink:0;box-sizing:border-box}.widget-filter__multi-option:hover{border-color:var(--text-muted);background-color:var(--bg-elevated)}.widget-filter__multi-option:has(input[type=checkbox]:checked){border-color:var(--text-muted);background-color:var(--bg-elevated)}.widget-filter__multi-option input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:clamp(12px,7cqmin,22px);height:clamp(12px,7cqmin,22px);border:1.5px solid var(--text-muted);border-radius:3px;background:var(--bg-elevated);cursor:pointer;position:relative;flex-shrink:0;transition:border-color var(--transition-fast),background-color var(--transition-fast);margin:0}.widget-filter__multi-option input[type=checkbox]:hover{border-color:var(--action-orange)}.widget-filter__multi-option input[type=checkbox]:checked{background:var(--action-orange);border-color:var(--action-orange)}.widget-filter__multi-option input[type=checkbox]:checked:after{content:"";position:absolute;left:30%;top:8%;width:30%;height:60%;border:solid var(--bg-dark);border-width:0 2px 2px 0;transform:rotate(45deg)}.widget-filter__select{width:95%;max-height:45%;margin-top:2%;flex:1;font-size:clamp(.4rem,5cqi,1.5rem);font-weight:var(--font-weight-semibold);color:var(--text-primary);text-align:left;padding:clamp(8px,4cqi,22px) clamp(6px,1.5cqi,12px);min-width:0;box-sizing:border-box}.widget-filter>.widget-filter__select,.widget-filter__date-range--year .widget-filter__select,.widget-filter__date-range--month .widget-filter__select,.widget-filter__date-range--week .widget-filter__select{text-align:center;text-align-last:center;font-weight:var(--font-weight-semibold);color:var(--text-primary);background:var(--bg-paper);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:none;transition:border-color var(--transition-fast),background-color var(--transition-fast);box-sizing:border-box;width:100%;margin-top:0;max-height:none;padding:clamp(2px,.8cqmin,6px) clamp(6px,1.5cqmin,12px);line-height:1}.widget-filter>.widget-filter__select:hover,.widget-filter>.widget-filter__select:focus,.widget-filter__date-range--year .widget-filter__select:hover,.widget-filter__date-range--year .widget-filter__select:focus,.widget-filter__date-range--month .widget-filter__select:hover,.widget-filter__date-range--month .widget-filter__select:focus,.widget-filter__date-range--week .widget-filter__select:hover,.widget-filter__date-range--week .widget-filter__select:focus{outline:none;border-color:var(--action-orange);background-color:var(--bg-elevated)}.widget-filter>.widget-filter__select option,.widget-filter__date-range--year .widget-filter__select option,.widget-filter__date-range--month .widget-filter__select option,.widget-filter__date-range--week .widget-filter__select option{background:var(--bg-paper);color:var(--text-primary);font-size:.875rem;font-weight:var(--font-weight-normal);text-align:left;padding:6px 10px}.widget-filter>.widget-filter__select{flex:0 1 auto;height:clamp(50px,22cqmin,140px);max-height:75%;margin-block:auto;align-self:center;font-size:clamp(.6rem,12cqmin,2.2rem)}.widget-filter__date-range--year,.widget-filter__date-range--month,.widget-filter__date-range--week{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:clamp(6px,2.5cqmin,16px);flex:1;width:100%;padding:clamp(6px,2cqmin,16px) clamp(4px,2cqmin,14px);box-sizing:border-box}.widget-filter__date-range--year .widget-filter__select{flex:0 1 auto;height:clamp(50px,22cqmin,140px);font-size:clamp(.6rem,12cqmin,2.2rem)}.widget-filter__date-range--month .widget-filter__select{flex:0 1 auto;height:clamp(30px,10cqmin,66px);font-size:clamp(.5rem,10cqmin,1.4rem)}.widget-filter__date-range--week .widget-filter__select{flex:0 1 auto;height:clamp(22px,12cqmin,48px);font-size:clamp(.45rem,8cqmin,3rem)}.widget-filter__search{position:relative;display:flex;align-items:center;flex:1;min-width:0;width:100%;padding:clamp(2px,1cqmin,8px) 0}.widget-filter .widget-filter__search-field{width:100%;padding:clamp(6px,3cqmin,18px) clamp(8px,2cqmin,14px);background:var(--bg-dark);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);color:var(--text-primary);font-size:clamp(.55rem,10cqmin,1.8rem);font-weight:var(--font-weight-semibold);text-align:center;box-sizing:border-box;cursor:text;transition:border-color var(--transition-fast),background-color var(--transition-fast)}.widget-filter .widget-filter__search-field::placeholder{color:var(--text-muted);font-weight:var(--font-weight-normal)}.widget-filter .widget-filter__search-field:hover,.widget-filter .widget-filter__search-field:focus{outline:none;border-color:var(--action-orange);background-color:var(--bg-paper)}.widget-filter__search-panel{z-index:10000;display:flex;flex-direction:column;background:var(--bg-paper);border:1px solid var(--bg-elevated);border-radius:var(--radius-sm);box-shadow:var(--shadow-md, 0 8px 28px rgba(0, 0, 0, .45));overflow:hidden}.widget-filter__search-list{display:flex;flex-direction:column;gap:2px;padding:6px;overflow-y:auto}.widget-filter__search-option{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;background:transparent;border:none;border-left:3px solid transparent;border-radius:var(--radius-sm);color:var(--text-primary);font-size:.85rem;font-weight:var(--font-weight-medium);text-align:left;cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.widget-filter__search-option:hover{background-color:var(--bg-elevated)}.widget-filter__search-option.is-selected{background-color:var(--bg-elevated);border-left-color:var(--action-orange);color:var(--action-orange)}.widget-filter__search-check{flex-shrink:0;width:1em;color:var(--action-orange);font-weight:var(--font-weight-semibold)}.widget-filter__search-option input[type=checkbox]{width:16px;height:16px;flex-shrink:0;accent-color:var(--action-orange);cursor:pointer}.widget-filter__search-clear{width:100%;margin-bottom:4px;padding:8px 10px;background:transparent;border:none;border-bottom:1px solid var(--bg-elevated);border-radius:0;color:var(--action-orange);font-size:.8rem;font-weight:var(--font-weight-semibold);text-align:left;cursor:pointer;transition:background-color var(--transition-fast)}.widget-filter__search-clear:hover{background-color:var(--bg-elevated)}.widget-filter__search-empty{padding:12px;color:var(--text-muted);font-size:.85rem;text-align:center}.widget-filter__search-list::-webkit-scrollbar{width:6px}.widget-filter__search-list::-webkit-scrollbar-track{background:transparent}.widget-filter__search-list::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:3px}.widget-filter__search-list::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.widget-variable__input-wrapper{display:flex;align-items:center;margin-top:2%;width:90%;background:var(--bg-paper);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);overflow:hidden}.widget-variable__input{flex:1;font-size:clamp(.4rem,5cqi,1.5rem);font-weight:var(--font-weight-semibold);background:transparent;border:none;outline:none;color:var(--text-primary);text-align:left;padding:clamp(2px,1cqi,6px) clamp(4px,1.5cqi,8px);min-width:0;box-sizing:border-box}.widget-variable__input::-webkit-outer-spin-button,.widget-variable__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.widget-variable__input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.widget-variable__input:disabled{opacity:.6;cursor:not-allowed}.widget-variable__suffix{font-size:clamp(.4rem,4cqi,1.25rem);color:var(--text-muted);white-space:nowrap;padding:0 clamp(4px,1.5cqi,8px);border-left:1px solid rgba(255,255,255,.1);flex-shrink:0}.widget-variable__lock-icon{font-size:clamp(.45rem,2.5cqi,.75rem)}.widget-variable--locked .widget-variable__input-wrapper{border-style:dashed}.widget-palette{flex-direction:column;justify-content:flex-start;align-items:stretch;padding:clamp(4px,1.5cqmin,12px);gap:clamp(2px,1cqmin,8px);overflow:auto}.widget-palette__label{text-align:center;flex-shrink:0}.widget-palette__lock-icon{font-size:clamp(.45rem,2.5cqmin,.75rem);align-self:center}.widget-palette--locked .palette-selector__color-input{opacity:.6;cursor:not-allowed}.widget-palette .palette-selector{gap:clamp(2px,3cqmin,28px);flex:1;min-height:0;justify-content:center}.widget-palette .palette-selector__row{gap:clamp(1px,1.2cqmin,10px);min-height:0}.widget-palette .palette-selector__row-label{font-size:clamp(.35rem,1.8cqmin,.7rem);line-height:1}.widget-palette .palette-selector__row-slots{gap:clamp(1px,.8cqmin,6px);flex-wrap:nowrap;justify-content:space-between;width:100%;min-height:0}.widget-palette .palette-selector__color-input{flex:1 1 0;min-width:0;min-height:0;width:auto;height:clamp(8px,10cqmin,60px);border:1px solid rgba(255,255,255,.2);padding:0}.widget-palette .palette-selector__color-input:hover:not(:disabled){border-color:#fff6}
1
+ @charset "UTF-8";.react-datepicker__navigation-icon:before,.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{border-color:#ccc;border-style:solid;border-width:3px 3px 0 0;content:"";display:block;height:9px;position:absolute;top:6px;width:9px}.react-datepicker__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.react-datepicker-wrapper{display:inline-block;padding:0;border:0}.react-datepicker{font-family:Helvetica Neue,helvetica,arial,sans-serif;font-size:.8rem;background-color:#fff;color:#000;border:1px solid #aeaeae;border-radius:.3rem;display:inline-block;position:relative;line-height:initial}.react-datepicker--time-only .react-datepicker__time-container{border-left:0}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-left-radius:.375em;border-bottom-right-radius:.375em}.react-datepicker-popper{z-index:1;line-height:0}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle,.react-datepicker-popper--header-middle[data-placement^=bottom] .react-datepicker__triangle,.react-datepicker-popper--header-bottom[data-placement^=bottom] .react-datepicker__triangle{fill:#fff;color:#fff}.react-datepicker-popper--header-bottom[data-placement^=top] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker__header{text-align:center;background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:.3rem;padding:8px 0;position:relative}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0}.react-datepicker__header:not(.react-datepicker__header--has-time-select,.react-datepicker__header--middle,.react-datepicker__header--bottom){border-top-right-radius:.3rem}.react-datepicker__header--middle{border-top:1px solid #aeaeae;border-radius:0;margin-top:4px}.react-datepicker__header--bottom{border-bottom:none;border-top:1px solid #aeaeae;border-radius:0 0 .3rem .3rem}.react-datepicker__header-wrapper{position:relative}.react-datepicker__header-wrapper .react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:2px}.react-datepicker__year-dropdown-container--select,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--scroll{display:inline-block;margin:0 15px}.react-datepicker__month-select,.react-datepicker__year-select,.react-datepicker__month-year-select{background-color:transparent;border:1px solid #aeaeae;border-radius:.3rem;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;margin-top:5px;padding:2px 5px}.react-datepicker__month-select:focus-visible,.react-datepicker__year-select:focus-visible,.react-datepicker__month-year-select:focus-visible{outline:auto 1px}.react-datepicker__current-month,.react-datepicker-time__header,.react-datepicker-year-header{margin-top:0;color:#000;font-weight:700;font-size:.944rem}h2.react-datepicker__current-month{padding:0;margin:0}.react-datepicker-time__header{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.react-datepicker__navigation{align-items:center;background:none;display:flex;justify-content:center;text-align:center;cursor:pointer;position:absolute;top:2px;padding:0;border:none;z-index:1;height:32px;width:32px;text-indent:-999em;overflow:hidden}.react-datepicker__navigation--previous{left:2px}.react-datepicker__navigation--next{right:2px}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px}.react-datepicker__navigation--years{position:relative;top:0;display:block;margin-left:auto;margin-right:auto}.react-datepicker__navigation--years-previous{top:4px}.react-datepicker__navigation--years-upcoming{top:-4px}.react-datepicker__navigation:hover *:before{border-color:#a6a6a6}.react-datepicker__navigation-icon{position:relative;top:-1px;font-size:20px;width:0}.react-datepicker__navigation-icon--next{left:-2px}.react-datepicker__navigation-icon--next:before{transform:rotate(45deg);left:-7px}.react-datepicker__navigation-icon--previous{right:-2px}.react-datepicker__navigation-icon--previous:before{transform:rotate(225deg);right:-7px}.react-datepicker__month-container{float:left}.react-datepicker__year{margin:.5em;text-align:center}.react-datepicker__year-wrapper{display:flex;flex-wrap:wrap;max-width:180px}.react-datepicker__year .react-datepicker__year-text{display:inline-block;width:5em;margin:2px}.react-datepicker__month{margin:.5em;text-align:center}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{display:inline-block;width:5em;margin:2px}.react-datepicker__input-time-container{clear:both;width:100%;float:left;margin:5px 0 10px 15px;text-align:left}.react-datepicker__input-time-container .react-datepicker-time__caption,.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{display:inline-block;margin-left:10px}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{margin-left:5px;display:inline-block}.react-datepicker__time-container{float:right;border-left:1px solid #aeaeae;width:85px}.react-datepicker__time-container--with-today-button{display:inline;border:1px solid #aeaeae;border-radius:.375em;position:absolute;right:-87px;top:0}.react-datepicker__time-container .react-datepicker__time{position:relative;background:#fff;border-bottom-right-radius:.375em}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{width:85px;overflow-x:hidden;margin:0 auto;text-align:center;border-bottom-right-radius:.375em}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{list-style:none;margin:0;height:calc(195px + 1.0625em);overflow-y:scroll;padding-right:0;padding-left:0;width:100%;box-sizing:content-box}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{height:30px;padding:5px 10px;white-space:nowrap}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{cursor:pointer;background-color:#f0f0f0}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{background-color:#216ba5;color:#fff;font-weight:700}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{cursor:default;background-color:transparent}.react-datepicker__week-number{color:#ccc;display:inline-block;width:2.125em;line-height:2.125em;text-align:center;margin:.208em}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):hover{border-radius:.3rem;background-color:#f0f0f0}.react-datepicker__week-number--selected{border-radius:.3rem;background-color:#216ba5;color:#fff}.react-datepicker__week-number--selected:hover{background-color:#1d5d90}.react-datepicker__day-names{text-align:center;white-space:nowrap;margin-bottom:-8px}.react-datepicker__week{white-space:nowrap}.react-datepicker__day-name,.react-datepicker__day,.react-datepicker__time-name{color:#000;display:inline-block;width:2.125em;line-height:2.125em;text-align:center;margin:.208em}.react-datepicker__day-name--disabled,.react-datepicker__day--disabled,.react-datepicker__time-name--disabled{cursor:default;color:#ccc}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer}.react-datepicker__day:not([aria-disabled=true]):hover,.react-datepicker__month-text:not([aria-disabled=true]):hover,.react-datepicker__quarter-text:not([aria-disabled=true]):hover,.react-datepicker__year-text:not([aria-disabled=true]):hover{border-radius:.3rem;background-color:#f0f0f0}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:700}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{border-radius:.3rem;background-color:#3dcc4a;color:#fff}.react-datepicker__day--highlighted:not([aria-disabled=true]):hover,.react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover{background-color:#32be3f}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:#f0f}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{position:relative;border-radius:.3rem;background-color:#ff6803;color:#fff}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s ease-in-out}.react-datepicker__day--holidays:not([aria-disabled=true]):hover,.react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__year-text--holidays:not([aria-disabled=true]):hover{background-color:#cf5300}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{visibility:visible;opacity:1}.react-datepicker__day--selected,.react-datepicker__day--in-selecting-range,.react-datepicker__day--in-range,.react-datepicker__month-text--selected,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--selected,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--selected,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--in-range{border-radius:.3rem;background-color:#216ba5;color:#fff}.react-datepicker__day--selected:not([aria-disabled=true]):hover,.react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__day--in-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-range:not([aria-disabled=true]):hover{background-color:#1d5d90}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{border-radius:.3rem;background-color:#bad9f1;color:#000}.react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover{background-color:#1d5d90;color:#fff}.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range){background-color:#216ba580}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range){background-color:#f0f0f0;color:#000}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{cursor:default;color:#ccc}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{position:absolute;bottom:70%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s ease-in-out}.react-datepicker__input-container{position:relative;display:inline-block;width:100%}.react-datepicker__input-container .react-datepicker__calendar-icon{position:absolute;padding:.625em;box-sizing:content-box}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px}.react-datepicker__year-read-view,.react-datepicker__month-read-view,.react-datepicker__month-year-read-view{border:1px solid transparent;border-radius:.3rem;position:relative}.react-datepicker__year-read-view:hover,.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover{cursor:pointer}.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow{border-top-color:#b3b3b3}.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{transform:rotate(135deg);right:-16px;top:0}.react-datepicker__year-dropdown,.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown{background-color:#f0f0f0;position:absolute;width:50%;left:25%;top:30px;z-index:1;text-align:center;border-radius:.3rem;border:1px solid #aeaeae}.react-datepicker__year-dropdown:hover,.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover{cursor:pointer}.react-datepicker__year-dropdown--scrollable,.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable{height:150px;overflow-y:scroll}.react-datepicker__year-option,.react-datepicker__month-option,.react-datepicker__month-year-option{line-height:20px;width:100%;display:block;margin-left:auto;margin-right:auto}.react-datepicker__year-option:first-of-type,.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type{border-top-left-radius:.3rem;border-top-right-radius:.3rem}.react-datepicker__year-option:last-of-type,.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem}.react-datepicker__year-option:hover,.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover{background-color:#ccc}.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:#b3b3b3}.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous{border-top-color:#b3b3b3}.react-datepicker__year-option--selected,.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected{position:absolute;left:15px}.react-datepicker__close-icon{cursor:pointer;background-color:transparent;border:0;outline:0;padding:0 6px 0 0;position:absolute;top:0;right:0;height:100%;display:table-cell;vertical-align:middle}.react-datepicker__close-icon:after{cursor:pointer;background-color:#216ba5;color:#fff;border-radius:50%;height:16px;width:16px;padding:2px;font-size:12px;line-height:1;text-align:center;display:table-cell;vertical-align:middle;content:"×"}.react-datepicker__close-icon--disabled{cursor:default}.react-datepicker__close-icon--disabled:after{cursor:default;background-color:#ccc}.react-datepicker__today-button{background:#f0f0f0;border-top:1px solid #aeaeae;cursor:pointer;text-align:center;font-weight:700;padding:5px 0;clear:left}.react-datepicker__portal{position:fixed;width:100vw;height:100vh;background-color:#000c;left:0;top:0;justify-content:center;align-items:center;display:flex;z-index:2147483647}.react-datepicker__children-container{width:17.25em;margin:.5em;padding-right:.25em;padding-left:.25em;height:auto}.react-datepicker__aria-live{position:absolute;clip-path:circle(0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px;white-space:nowrap}.react-datepicker__calendar-icon{width:1em;height:1em;vertical-align:-.125em}.react-datepicker-popper-offset{margin-top:-.7em}:where(.preview-tab,.stmt,.widget,.palette-selector,.ddp-field){--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--transition-fast: .15s ease;--shadow-lg: 0 10px 25px rgba(0, 0, 0, .4)}.preview-tab{display:flex;flex-direction:column;gap:var(--spacing-md);position:relative}.preview-tab__empty{display:flex;align-items:center;justify-content:center;min-height:300px;color:var(--text-muted);font-size:.9rem;border:2px dashed var(--bg-elevated);border-radius:var(--radius-lg)}.preview-tab__loading{display:flex;align-items:center;justify-content:center;padding:var(--spacing-2xl) 0;color:var(--text-secondary)}.preview-tab__error{padding:var(--spacing-md);background:#f443361a;border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-size:.875rem;text-align:center}.preview-tab__grid{display:grid;grid-template-columns:repeat(var(--dash-cols, 30),1fr);grid-template-rows:repeat(var(--dash-rows, 10),var(--dash-cell-h, 40px));grid-auto-rows:var(--dash-cell-h, 40px);gap:var(--dash-gap, 6px);padding:var(--dash-pad, 16px);background:var(--bg-dark);border-radius:var(--radius-lg)}.preview-tab__grid--stacked{grid-template-columns:1fr;grid-template-rows:none;grid-auto-rows:auto}.preview-tab__widget{display:flex;background:var(--bg-elevated);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-md);overflow:hidden;min-height:0;container-type:size}.preview-tab__widget--control{background:var(--bg-elevated);border:1px dashed rgba(255,255,255,.15)}.preview-tab__widget-loading{display:flex;align-items:center;justify-content:center;height:100%;min-height:80px;color:var(--text-muted);font-size:.8125rem}.preview-tab__recalculating{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-lg);background:var(--bg-elevated);border:1px solid var(--action-orange);border-radius:var(--radius-md);color:var(--action-orange);font-size:.8125rem;font-weight:var(--font-weight-medium);box-shadow:var(--shadow-lg);z-index:50}.stmt{display:flex;flex-direction:column;gap:var(--spacing-md);position:relative;color:var(--text-primary)}.stmt__state{padding:var(--spacing-xl);text-align:center;font-size:.875rem;color:var(--text-secondary)}.stmt__error{padding:var(--spacing-md);background:#f443361a;border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-size:.875rem;text-align:center}.stmt__warning{padding:var(--spacing-sm) var(--spacing-md);background:#f59e0b1f;border:1px solid var(--color-warning);border-radius:var(--radius-md);color:var(--color-warning);font-size:.8125rem;line-height:1.5}.stmt__toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:var(--spacing-md)}.stmt__filter{display:flex;flex-direction:column;gap:var(--spacing-xs);min-width:180px}.stmt__filter-label{font-size:.6875rem;font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.stmt .widget-filter__date-range{gap:var(--spacing-sm);flex:0 1 auto}.stmt .widget-filter__date-range--stacked,.stmt .widget-filter__date-range--period,.stmt .widget-filter__date-range--year,.stmt .widget-filter__date-range--month,.stmt .widget-filter__date-range--week{flex-direction:row;align-items:center;gap:var(--spacing-sm);width:auto;padding:0}.stmt .widget-filter__date-range--period .widget-filter__select,.stmt .widget-filter__date-range--year .widget-filter__select,.stmt .widget-filter__date-range--month .widget-filter__select,.stmt .widget-filter__date-range--week .widget-filter__select,.stmt .widget-filter__date-range .ddp-field .react-datepicker__input-container input,.stmt .widget-filter__select{flex:0 1 auto;width:auto;height:auto;max-height:none;margin-top:0;padding:var(--spacing-sm) var(--spacing-md);font-size:.8125rem;line-height:1.2}.stmt .widget-filter__select option{font-size:.8125rem}.stmt__filter--date{min-width:0}.stmt__filter--range{min-width:300px}.stmt .widget-filter__search-field{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-elevated);border:1.5px solid var(--bg-elevated);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.8125rem;box-sizing:border-box;cursor:text;transition:border-color var(--transition-fast)}.stmt .widget-filter__search-field:focus{outline:none;border-color:var(--action-orange)}.stmt .widget-filter__search-field::placeholder{color:var(--text-muted)}.stmt__toolbar-end{display:flex;align-items:center;gap:var(--spacing-md);margin-left:auto}.stmt__bounds{font-size:.6875rem;font-variant-numeric:tabular-nums;color:var(--text-muted)}.stmt__download{padding:var(--spacing-sm) var(--spacing-md);font-size:.75rem;font-weight:var(--font-weight-semibold);color:var(--action-orange);background:transparent;border:1px solid var(--action-orange);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;transition:background-color var(--transition-fast),color var(--transition-fast)}.stmt__download:hover:not(:disabled){background:var(--action-orange);color:var(--bg-dark)}.stmt__download:disabled{opacity:.4;cursor:not-allowed}.stmt__scroll{overflow-x:auto}.stmt__table{width:100%;border-collapse:collapse;font-size:.8125rem}.stmt__table thead th{position:sticky;top:0;z-index:1;padding:var(--spacing-sm);text-align:right;font-size:.6875rem;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg-elevated);white-space:nowrap}.stmt__table thead th.stmt__corner{left:0;z-index:2;text-align:left;text-transform:none;letter-spacing:normal;font-size:.8125rem;color:var(--text-primary)}.stmt__total-head{color:var(--stmt-accent, var(--action-orange))}.stmt__row th{position:sticky;left:0;padding:var(--spacing-xs) var(--spacing-sm);text-align:left;font-weight:var(--font-weight-normal);color:var(--text-secondary);white-space:nowrap;background:var(--bg-paper)}.stmt__value{padding:var(--spacing-xs) var(--spacing-sm);text-align:right;white-space:nowrap;color:var(--text-primary);font-variant-numeric:tabular-nums}.stmt__value--total{border-left:1px solid var(--bg-elevated);font-weight:var(--font-weight-semibold)}.stmt__number{display:block}.stmt__number--pos{color:var(--stmt-positive, var(--action-green))}.stmt__number--neg{color:var(--stmt-negative, var(--color-error))}.stmt__aux{display:block;font-size:.625rem;color:var(--text-muted)}.stmt__aux--up{color:var(--action-green)}.stmt__aux--down{color:var(--color-error)}.stmt__row--data:hover,.stmt__row--formula:hover{background:var(--bg-elevated)}.stmt__row--formula th,.stmt__row--formula .stmt__value{border-top:1px solid var(--bg-elevated)}.stmt__row--bold th,.stmt__row--bold .stmt__value{font-weight:var(--font-weight-bold);color:var(--text-primary)}.stmt__row--header th{padding-top:var(--spacing-md);font-size:.6875rem;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--stmt-accent, var(--action-orange))}.stmt__row--header .stmt__value{padding-top:var(--spacing-md);font-weight:var(--font-weight-semibold)}.stmt__row--separator td{height:var(--spacing-md)}.stmt__recalculating{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-lg);background:var(--bg-elevated);border:1px solid var(--action-orange);border-radius:var(--radius-md);color:var(--action-orange);font-size:.8125rem;font-weight:var(--font-weight-medium);box-shadow:var(--shadow-lg);z-index:50}.palette-selector{display:flex;flex-direction:column;gap:var(--spacing-sm)}.palette-selector--disabled{opacity:.5;pointer-events:none}.palette-selector__options{display:flex;flex-direction:column;gap:var(--spacing-xs)}.palette-selector__option{display:flex;flex-direction:column;gap:var(--spacing-xs);padding:var(--spacing-xs);background:transparent;border:1.5px solid var(--bg-elevated);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition-fast)}.palette-selector__option:hover:not(:disabled){border-color:var(--text-muted)}.palette-selector__option--active{border-color:var(--action-orange)}.palette-selector__bar{display:flex;width:100%;height:18px;border-radius:3px;overflow:hidden}.palette-selector__bar--theme{height:12px;opacity:.85}.palette-selector__swatch{flex:1;min-width:0}.palette-selector__label{font-size:.7rem;color:var(--text-muted);text-align:left}.palette-selector__custom{display:flex;flex-direction:column;gap:6px}.palette-selector__row{display:flex;flex-direction:column;gap:4px}.palette-selector__row-label{font-size:.6rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-weight:var(--font-weight-semibold)}.palette-selector__row-slots{display:flex;gap:4px;flex-wrap:wrap}.palette-selector__color-input{width:24px;height:24px;padding:0;border:1.5px solid rgba(255,255,255,.25);border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:border-color var(--transition-fast);flex-shrink:0}.palette-selector__color-input:hover:not(:disabled){border-color:#ffffff80}.palette-selector__color-input:hover:not(:disabled){border-color:var(--action-orange)}.palette-selector__color-input::-webkit-color-swatch-wrapper{padding:2px}.palette-selector__color-input::-webkit-color-swatch{border:none;border-radius:2px}.ddp-field{width:100%;min-width:0;display:block}.ddp-field .react-datepicker-wrapper,.ddp-field .react-datepicker__input-container{width:100%;display:block}.ddp-field .react-datepicker__input-container input{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-elevated);border:1.5px solid var(--bg-elevated);border-radius:var(--radius-sm);font-size:.8125rem;color:var(--text-primary);box-sizing:border-box;transition:border-color var(--transition-fast)}.ddp-field .react-datepicker__input-container input:focus{outline:none;border-color:var(--action-orange)}.ddp-field .react-datepicker__input-container input::placeholder{color:var(--text-muted)}.ddp-field .react-datepicker__input-container input:disabled{opacity:.6;cursor:not-allowed}.ddp-field .react-datepicker__month{min-height:168px}.react-datepicker-popper{z-index:1100!important}.widget{flex:1;display:flex;flex-direction:column;padding:var(--spacing-sm);background:var(--bg-elevated);border-radius:var(--radius-md);overflow:hidden;box-sizing:border-box;min-height:0;min-width:0}.widget__title{flex-shrink:0;margin:0 0 clamp(2px,1cqmin,8px);font-size:clamp(.5rem,4cqi,.9rem);font-weight:var(--font-weight-semibold);color:var(--text-secondary);line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.widget__state{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:var(--spacing-xs);font-size:clamp(.45rem,2.5cqi,.85rem);color:var(--text-muted)}.widget__state--error{color:var(--color-error)}.widget-filter,.widget-palette{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:clamp(4px,1.5cqi,12px);padding:clamp(4px,1cqi,8px) clamp(6px,1.5cqi,12px);box-sizing:border-box;min-height:0;min-width:0;overflow:hidden}.widget-variable{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;box-sizing:border-box;min-height:0;min-width:0;overflow:hidden}.widget-filter__label,.widget-palette__label,.widget-variable__label{flex-shrink:0;font-size:clamp(.45rem,6cqi,3rem);color:var(--text-muted);font-weight:var(--font-weight-medium)}.widget-kpi{justify-content:center;align-items:center;text-align:center;gap:clamp(2px,1cqmin,10px);padding:clamp(4px,2cqmin,16px)}.widget-kpi .widget__title{margin:0;font-size:clamp(.45rem,min(12cqi,12cqb),6rem);color:var(--text-muted);font-weight:var(--font-weight-medium)}.widget-kpi__value{font-size:clamp(.85rem,min(22cqi,22cqb),8rem);font-weight:var(--font-weight-bold);color:var(--text-primary);line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.widget-kpi__trend{display:flex;align-items:center;justify-content:center;gap:.35em .7em;font-size:clamp(.4rem,min(8cqi,8cqb),2rem);max-width:100%;overflow:hidden;flex-wrap:wrap}.widget-kpi__trend--good{color:var(--color-success)}.widget-kpi__trend--bad{color:var(--color-error)}.widget-kpi__trend--muted{opacity:.75;font-size:.9em}.widget-kpi__variance{font-weight:var(--font-weight-semibold);white-space:nowrap}.widget-kpi__trend-label{color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@container (max-width: 180px){.widget-kpi__trend-label{display:none}}@container (max-height: 70px){.widget-kpi .widget__title{display:none}}.widget-gauge{align-items:center;gap:0;overflow:hidden}.widget-gauge .widget__title{margin:0;font-size:clamp(.5rem,6cqi,3rem);color:var(--text-muted);font-weight:var(--font-weight-medium)}.widget-gauge__chart{position:relative;width:100%;flex:1;min-height:0}.widget-gauge__chart svg{margin-top:5%;display:block;width:100%;height:100%}.widget-gauge__center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;margin-top:25%}.widget-gauge__percent{font-size:clamp(.5rem,9cqi,4rem);font-weight:var(--font-weight-bold);color:var(--text-primary);line-height:1}.widget-gauge__comparison{font-size:clamp(.4rem,3.5cqi,2rem);color:var(--text-muted)}.widget-gauge__badge{font-size:clamp(.35rem,3cqi,1.25rem);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.3px;padding:1px var(--spacing-xs);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.widget-chart{gap:var(--spacing-xs)}.widget-chart .widget__title{color:var(--text-primary)}.widget-chart__container{flex:1;min-height:0;overflow:hidden}.widget-composition{gap:var(--spacing-xs)}.widget-composition .widget__title{color:var(--text-primary)}.widget-composition__container{flex:1;min-height:0;overflow:hidden}.widget-composition__tooltip{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--bg-paper);border-radius:6px;background-color:var(--bg-elevated);font-size:.75rem;line-height:1.3}.widget-composition__tooltip-label{color:var(--text-primary);font-weight:var(--font-weight-semibold)}.widget-composition__tooltip-value{color:var(--text-secondary)}.widget-table{display:flex;flex-direction:column;gap:.4rem;height:100%;overflow:hidden;padding:.5rem .6rem;box-sizing:border-box}.widget-table__td--placeholder{color:var(--text-muted, #999);text-align:center;padding:.75rem .5rem}.widget-table__scroll{flex:1 1 auto;min-height:0;overflow:auto}.widget-table__scroll--clip{overflow:hidden}.widget-table__table{width:100%;border-collapse:collapse;font-size:clamp(.78rem,1.5cqmin,1.25rem)}.widget-table__table--fill{height:100%}.widget-table__th--index,.widget-table__td--index{width:1%;text-align:right;color:var(--text-muted, #999);font-variant-numeric:tabular-nums;white-space:nowrap}.widget-table__th{position:sticky;top:0;z-index:1;text-align:left;font-weight:600;color:var(--text-secondary, #ccc);background:var(--bg-elevated, #333);padding:.35rem .5rem;border-bottom:1px solid var(--border, rgba(255, 255, 255, .12));white-space:nowrap}.widget-table__th--num{text-align:right}.widget-table__td{padding:.3rem .5rem;color:var(--text-primary, #f5f5f5);border-bottom:1px solid var(--border, rgba(255, 255, 255, .06));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:26ch}.widget-table__td--num{text-align:right;font-variant-numeric:tabular-nums}.widget-table__td--up{color:var(--color-success, #a4c639);font-weight:600}.widget-table__td--down{color:var(--color-error, #e5534b);font-weight:600}.widget-table__table tbody tr:hover{background:#ffffff08}.widget-filter__date-range{display:flex;align-items:center;gap:clamp(2px,1cqi,8px);flex:1;min-width:0}.widget-filter__date-range--stacked{flex-direction:column;align-items:stretch;gap:clamp(4px,1.5cqmin,10px);width:100%;padding:clamp(2px,1cqmin,8px) 0}.widget-filter__date-range .ddp-field{flex:1;min-width:0;width:100%}.widget-filter__date-range .ddp-field .react-datepicker__input-container input,.widget-filter__select{padding:clamp(8px,4cqmin,22px) clamp(6px,1.5cqmin,12px);font-size:clamp(.5rem,10cqmin,2rem);background:var(--bg-paper);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);color:var(--text-primary);flex:1;min-width:0;width:100%;box-sizing:border-box;text-align:center;font-variant-numeric:tabular-nums}.widget-filter__date-sep{font-size:clamp(.35rem,2.5cqi,.8rem);color:var(--text-muted)}.widget-filter__multi{display:flex;flex-direction:column;align-items:stretch;justify-content:space-around;gap:clamp(4px,1.5cqmin,14px);flex:1;min-height:0;width:100%;padding:clamp(6px,2cqmin,14px) clamp(4px,2cqmin,12px);box-sizing:border-box;overflow-y:auto}.widget-filter__multi::-webkit-scrollbar{width:6px}.widget-filter__multi::-webkit-scrollbar-track{background:transparent}.widget-filter__multi::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:3px}.widget-filter__multi::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.widget-filter__multi-clear{flex-shrink:0;width:100%;padding:clamp(3px,1cqmin,8px) clamp(8px,2.5cqmin,14px);background:transparent;border:1px solid var(--bg-elevated);border-radius:var(--radius-sm);color:var(--action-orange);font-size:clamp(.4rem,7cqmin,1rem);font-weight:var(--font-weight-semibold);text-align:center;cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast)}.widget-filter__multi-clear:hover{background-color:var(--bg-elevated);border-color:var(--action-orange)}.widget-filter__multi-option{display:flex;align-items:center;gap:clamp(6px,4cqmin,14px);padding:clamp(4px,1.5cqmin,12px) clamp(8px,2.5cqmin,14px);height:clamp(20px,18cqb,120px);background:var(--bg-paper);border:1px solid var(--bg-elevated);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition-fast),background-color var(--transition-fast);font-size:clamp(.45rem,8cqmin,1.2rem);font-weight:var(--font-weight-medium);color:var(--text-primary);line-height:1;flex-shrink:0;box-sizing:border-box}.widget-filter__multi-option:hover{border-color:var(--text-muted);background-color:var(--bg-elevated)}.widget-filter__multi-option:has(input[type=checkbox]:checked){border-color:var(--text-muted);background-color:var(--bg-elevated)}.widget-filter__multi-option input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:clamp(12px,7cqmin,22px);height:clamp(12px,7cqmin,22px);border:1.5px solid var(--text-muted);border-radius:3px;background:var(--bg-elevated);cursor:pointer;position:relative;flex-shrink:0;transition:border-color var(--transition-fast),background-color var(--transition-fast);margin:0}.widget-filter__multi-option input[type=checkbox]:hover{border-color:var(--action-orange)}.widget-filter__multi-option input[type=checkbox]:checked{background:var(--action-orange);border-color:var(--action-orange)}.widget-filter__multi-option input[type=checkbox]:checked:after{content:"";position:absolute;left:30%;top:8%;width:30%;height:60%;border:solid var(--bg-dark);border-width:0 2px 2px 0;transform:rotate(45deg)}.widget-filter__select{width:95%;max-height:45%;margin-top:2%;flex:1;font-size:clamp(.4rem,5cqi,1.5rem);font-weight:var(--font-weight-semibold);color:var(--text-primary);text-align:left;padding:clamp(8px,4cqi,22px) clamp(6px,1.5cqi,12px);min-width:0;box-sizing:border-box}.widget-filter>.widget-filter__select,.widget-filter__date-range--year .widget-filter__select,.widget-filter__date-range--month .widget-filter__select,.widget-filter__date-range--week .widget-filter__select{text-align:center;text-align-last:center;font-weight:var(--font-weight-semibold);color:var(--text-primary);background:var(--bg-paper);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:none;transition:border-color var(--transition-fast),background-color var(--transition-fast);box-sizing:border-box;width:100%;margin-top:0;max-height:none;padding:clamp(2px,.8cqmin,6px) clamp(6px,1.5cqmin,12px);line-height:1}.widget-filter>.widget-filter__select:hover,.widget-filter>.widget-filter__select:focus,.widget-filter__date-range--year .widget-filter__select:hover,.widget-filter__date-range--year .widget-filter__select:focus,.widget-filter__date-range--month .widget-filter__select:hover,.widget-filter__date-range--month .widget-filter__select:focus,.widget-filter__date-range--week .widget-filter__select:hover,.widget-filter__date-range--week .widget-filter__select:focus{outline:none;border-color:var(--action-orange);background-color:var(--bg-elevated)}.widget-filter>.widget-filter__select option,.widget-filter__date-range--year .widget-filter__select option,.widget-filter__date-range--month .widget-filter__select option,.widget-filter__date-range--week .widget-filter__select option{background:var(--bg-paper);color:var(--text-primary);font-size:.875rem;font-weight:var(--font-weight-normal);text-align:left;padding:6px 10px}.widget-filter>.widget-filter__select{flex:0 1 auto;height:clamp(50px,22cqmin,140px);max-height:75%;margin-block:auto;align-self:center;font-size:clamp(.6rem,12cqmin,2.2rem)}.widget-filter__date-range--year,.widget-filter__date-range--month,.widget-filter__date-range--week{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:clamp(6px,2.5cqmin,16px);flex:1;width:100%;padding:clamp(6px,2cqmin,16px) clamp(4px,2cqmin,14px);box-sizing:border-box}.widget-filter__date-range--year .widget-filter__select{flex:0 1 auto;height:clamp(50px,22cqmin,140px);font-size:clamp(.6rem,12cqmin,2.2rem)}.widget-filter__date-range--month .widget-filter__select{flex:0 1 auto;height:clamp(30px,10cqmin,66px);font-size:clamp(.5rem,10cqmin,1.4rem)}.widget-filter__date-range--week .widget-filter__select{flex:0 1 auto;height:clamp(22px,12cqmin,48px);font-size:clamp(.45rem,8cqmin,3rem)}.widget-filter__search{position:relative;display:flex;align-items:center;flex:1;min-width:0;width:100%;padding:clamp(2px,1cqmin,8px) 0}.widget-filter .widget-filter__search-field{width:100%;padding:clamp(6px,3cqmin,18px) clamp(8px,2cqmin,14px);background:var(--bg-dark);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);color:var(--text-primary);font-size:clamp(.55rem,10cqmin,1.8rem);font-weight:var(--font-weight-semibold);text-align:center;box-sizing:border-box;cursor:text;transition:border-color var(--transition-fast),background-color var(--transition-fast)}.widget-filter .widget-filter__search-field::placeholder{color:var(--text-muted);font-weight:var(--font-weight-normal)}.widget-filter .widget-filter__search-field:hover,.widget-filter .widget-filter__search-field:focus{outline:none;border-color:var(--action-orange);background-color:var(--bg-paper)}.widget-filter__search-panel{z-index:10000;display:flex;flex-direction:column;background:var(--bg-paper);border:1px solid var(--bg-elevated);border-radius:var(--radius-sm);box-shadow:var(--shadow-md, 0 8px 28px rgba(0, 0, 0, .45));overflow:hidden}.widget-filter__search-list{display:flex;flex-direction:column;gap:2px;padding:6px;overflow-y:auto}.widget-filter__search-option{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;background:transparent;border:none;border-left:3px solid transparent;border-radius:var(--radius-sm);color:var(--text-primary);font-size:.85rem;font-weight:var(--font-weight-medium);text-align:left;cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.widget-filter__search-option:hover{background-color:var(--bg-elevated)}.widget-filter__search-option.is-selected{background-color:var(--bg-elevated);border-left-color:var(--action-orange);color:var(--action-orange)}.widget-filter__search-check{flex-shrink:0;width:1em;color:var(--action-orange);font-weight:var(--font-weight-semibold)}.widget-filter__search-option input[type=checkbox]{width:16px;height:16px;flex-shrink:0;accent-color:var(--action-orange);cursor:pointer}.widget-filter__search-clear{width:100%;margin-bottom:4px;padding:8px 10px;background:transparent;border:none;border-bottom:1px solid var(--bg-elevated);border-radius:0;color:var(--action-orange);font-size:.8rem;font-weight:var(--font-weight-semibold);text-align:left;cursor:pointer;transition:background-color var(--transition-fast)}.widget-filter__search-clear:hover{background-color:var(--bg-elevated)}.widget-filter__search-empty{padding:12px;color:var(--text-muted);font-size:.85rem;text-align:center}.widget-filter__search-list::-webkit-scrollbar{width:6px}.widget-filter__search-list::-webkit-scrollbar-track{background:transparent}.widget-filter__search-list::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:3px}.widget-filter__search-list::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.widget-variable__input-wrapper{display:flex;align-items:center;margin-top:2%;width:90%;background:var(--bg-paper);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);overflow:hidden}.widget-variable__input{flex:1;font-size:clamp(.4rem,5cqi,1.5rem);font-weight:var(--font-weight-semibold);background:transparent;border:none;outline:none;color:var(--text-primary);text-align:left;padding:clamp(2px,1cqi,6px) clamp(4px,1.5cqi,8px);min-width:0;box-sizing:border-box}.widget-variable__input::-webkit-outer-spin-button,.widget-variable__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.widget-variable__input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.widget-variable__input:disabled{opacity:.6;cursor:not-allowed}.widget-variable__suffix{font-size:clamp(.4rem,4cqi,1.25rem);color:var(--text-muted);white-space:nowrap;padding:0 clamp(4px,1.5cqi,8px);border-left:1px solid rgba(255,255,255,.1);flex-shrink:0}.widget-variable__lock-icon{font-size:clamp(.45rem,2.5cqi,.75rem)}.widget-variable--locked .widget-variable__input-wrapper{border-style:dashed}.widget-palette{flex-direction:column;justify-content:flex-start;align-items:stretch;padding:clamp(4px,1.5cqmin,12px);gap:clamp(2px,1cqmin,8px);overflow:auto}.widget-palette__label{text-align:center;flex-shrink:0}.widget-palette__lock-icon{font-size:clamp(.45rem,2.5cqmin,.75rem);align-self:center}.widget-palette--locked .palette-selector__color-input{opacity:.6;cursor:not-allowed}.widget-palette .palette-selector{gap:clamp(2px,3cqmin,28px);flex:1;min-height:0;justify-content:center}.widget-palette .palette-selector__row{gap:clamp(1px,1.2cqmin,10px);min-height:0}.widget-palette .palette-selector__row-label{font-size:clamp(.35rem,1.8cqmin,.7rem);line-height:1}.widget-palette .palette-selector__row-slots{gap:clamp(1px,.8cqmin,6px);flex-wrap:nowrap;justify-content:space-between;width:100%;min-height:0}.widget-palette .palette-selector__color-input{flex:1 1 0;min-width:0;min-height:0;width:auto;height:clamp(8px,10cqmin,60px);border:1px solid rgba(255,255,255,.2);padding:0}.widget-palette .palette-selector__color-input:hover:not(:disabled){border-color:#fff6}
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom/vitest';
@@ -19,6 +19,14 @@ export interface FilterDefinition {
19
19
  label: string;
20
20
  column?: string | null;
21
21
  defaultValue?: unknown;
22
+ /**
23
+ * Como o leitor escolhe a janela, em filtros `date_range`. Ausente é `range`.
24
+ *
25
+ * No dashboard o modo vem da config do widget de filtro; aqui ele viaja na
26
+ * própria definição porque o demonstrativo não tem widgets — a barra dele é
27
+ * montada direto das definições que o layout declara.
28
+ */
29
+ dateFilterMode?: DateFilterMode;
22
30
  }
23
31
  export interface TargetDefinition {
24
32
  id: string;
@@ -1,7 +1,8 @@
1
1
  import type { FilterDefinition, FormatType } from './index';
2
2
  /** Natureza da linha. Apenas `data` e `formula` produzem numero. */
3
3
  export type StatementLineType = 'data' | 'formula' | 'header' | 'separator';
4
- export type PeriodGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
4
+ /** `total` e a janela inteira numa coluna so sem agrupamento. */
5
+ export type PeriodGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year' | 'total';
5
6
  export interface StatementLineStyle {
6
7
  /** Nivel de recuo do rotulo (0 a 6). */
7
8
  indent: number;
@@ -23,6 +24,26 @@ export interface StatementPeriods {
23
24
  /** Linha-base da analise vertical; ausente desliga a analise. */
24
25
  verticalAnalysisLineId?: string | null;
25
26
  showHorizontalAnalysis: boolean;
27
+ /**
28
+ * Quantos periodos atras comparar, na unidade da granularidade — 12 num
29
+ * documento mensal e o ano passado. Ausente ou 0 desliga.
30
+ */
31
+ comparisonOffset?: number | null;
32
+ }
33
+ /**
34
+ * Cores dos pontos-chave, declaradas pelo autor do documento.
35
+ *
36
+ * Campo ausente significa "usa a paleta": o documento herda a identidade de quem
37
+ * o embute, que e o comportamento de sempre. Preenchido, ele passa por cima dela
38
+ * — e a mesma cor sai no PDF, que e o que faz a configuracao valer a pena.
39
+ */
40
+ export interface StatementColors {
41
+ /** Cabecalhos e coluna de total. */
42
+ accent?: string | null;
43
+ /** Valores maiores que zero. */
44
+ positive?: string | null;
45
+ /** Valores menores que zero. */
46
+ negative?: string | null;
26
47
  }
27
48
  export interface StatementPeriodColumn {
28
49
  /** Chave estavel do periodo ('2026-01', '2026-Q1', '2026'). */
@@ -55,6 +76,12 @@ export interface StatementComputedLine {
55
76
  totalFormatted: string | null;
56
77
  verticalAnalysis: (number | null)[];
57
78
  horizontalAnalysis: (number | null)[];
79
+ /**
80
+ * Variacao contra o mesmo periodo `periods.comparisonOffset` graos atras.
81
+ * Vazia quando a comparacao nao foi pedida; `null` numa posicao significa que
82
+ * o periodo-base nao tem valor comparavel.
83
+ */
84
+ comparison: (number | null)[];
58
85
  }
59
86
  export interface StatementRenderResponse {
60
87
  name: string;
@@ -76,6 +103,8 @@ export interface StatementRenderResponse {
76
103
  export interface StatementLayoutResponse {
77
104
  name: string;
78
105
  periods: StatementPeriods;
106
+ /** Cor nao muda com a janela nem com o filtro, entao viaja no layout. */
107
+ colors?: StatementColors;
79
108
  dateBounds: {
80
109
  min: string;
81
110
  max: string;
@@ -39,3 +39,24 @@ export declare function getYearRange(dateBounds?: {
39
39
  min: string | null;
40
40
  max: string | null;
41
41
  } | null): number[];
42
+ export type RangeUnit = 'day' | 'week' | 'month' | 'year';
43
+ export interface RangePeriod {
44
+ /** Chave estavel, tambem usada como valor do <option>. */
45
+ key: string;
46
+ /** Rotulo pt-BR curto, na mesma grafia dos cabecalhos de coluna. */
47
+ label: string;
48
+ /** Primeiro e ultimo dia do periodo (ISO). */
49
+ start: string;
50
+ end: string;
51
+ }
52
+ /**
53
+ * Os periodos de `unit` que cobrem os limites da base, do mais recente ao mais
54
+ * antigo — a mesma ordem do seletor de ano, e a que poe o periodo util no topo.
55
+ *
56
+ * Corta no teto a partir do MAIS RECENTE: numa base de dez anos em dias, as
57
+ * opcoes uteis sao as do fim, e listar tudo travaria o <select>.
58
+ */
59
+ export declare function rangePeriods(unit: RangeUnit, dateBounds?: {
60
+ min: string | null;
61
+ max: string | null;
62
+ } | null): RangePeriod[];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actionexec/dashboards",
3
- "version": "0.14.1",
3
+ "version": "0.16.0",
4
4
  "description": "Biblioteca de renderizacao de dashboards da plataforma Action — componente <Dashboard> unico, consumindo /external/dashboards.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -32,24 +32,32 @@
32
32
  "build": "vite build && tsc -p tsconfig.build.json",
33
33
  "dev": "vite build --watch",
34
34
  "typecheck": "tsc --noEmit",
35
- "prepublishOnly": "npm run typecheck && npm run build"
35
+ "prepublishOnly": "npm run typecheck && npm run test && npm run build",
36
+ "test": "vitest run",
37
+ "test:watch": "vitest"
36
38
  },
37
39
  "peerDependencies": {
38
40
  "react": "^18.2.0",
39
- "react-dom": "^18.2.0",
40
41
  "react-datepicker": "^9.0.0",
42
+ "react-dom": "^18.2.0",
41
43
  "recharts": "^2.12.0"
42
44
  },
43
45
  "devDependencies": {
46
+ "@testing-library/dom": "^10.4.1",
47
+ "@testing-library/jest-dom": "^7.0.1",
48
+ "@testing-library/react": "^16.3.2",
44
49
  "@types/react": "^18.2.55",
45
50
  "@types/react-datepicker": "^6.2.0",
46
51
  "@types/react-dom": "^18.2.19",
47
52
  "@vitejs/plugin-react": "^4.2.1",
53
+ "@vitest/coverage-v8": "^4.1.11",
54
+ "jsdom": "^29.1.1",
48
55
  "react": "^18.2.0",
49
56
  "react-datepicker": "^9.1.0",
50
57
  "react-dom": "^18.2.0",
51
58
  "recharts": "^2.12.0",
52
59
  "typescript": "^5.2.2",
53
- "vite": "^5.1.0"
60
+ "vite": "^5.1.0",
61
+ "vitest": "^4.1.11"
54
62
  }
55
63
  }