@umriss-ui/calculation 0.41.1 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -3
- package/README.md +17 -5
- package/dist/calculation.client.js +423 -0
- package/dist/calculation.css +1 -1
- package/dist/calculation.js +19 -558
- package/dist/calculation.model-CZuohgrp.js +176 -0
- package/dist/index.d.ts +8 -5
- package/docs/llms-full.md +28 -27
- package/package.json +7 -6
package/CHANGELOG.md
CHANGED
|
@@ -4,20 +4,58 @@ This document describes what changes for **callers** of the package: exports,
|
|
|
4
4
|
props, behaviour.
|
|
5
5
|
|
|
6
6
|
**The numbers.** The middle digit rises when something is added; the last one
|
|
7
|
-
when something is repaired.
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
when something is repaired. The six packages are released in step, and a rename
|
|
8
|
+
keeps its old name for one further minor, with a warning, before the minor after
|
|
9
|
+
it removes the name ([the upgrade promise, ADR-0066](../../docs/adr/0066-one-number-peers-over-the-minor-a-rename-lives-one-minor.md)).
|
|
10
|
+
Whatever changes existing behaviour stands under a heading "Changed" of its own,
|
|
11
|
+
no matter which digit rose, with a `Migration:` line.
|
|
10
12
|
|
|
11
13
|
From 0.34.0 the packages share one number - five, and six from 0.40.0, when the dashboard joined: they are released together, and a package without a change of its own still gets a heading for it.
|
|
12
14
|
|
|
13
15
|
---
|
|
14
16
|
|
|
17
|
+
## 0.43.0 – Places that carry down, and a calculation's root (Oct. 2026)
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- **`Calculation` takes a `ref`**, which receives its surface `<div>` (ADR-0068).
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- **A quantity without its own `decimals` takes those of the quantity it is an operand of**, where both have the same `unit` and `format`: down the tree, through a chain's interims, and for a `Ref` where its quantity is defined (ADR-0069).
|
|
26
|
+
- Migration: nothing to change; an operand that showed the default places beside a parent with its own now shows the parent's - give it `decimals` of its own to keep the old figure.
|
|
27
|
+
- **A non-zero derived value no longer reads 0 at the default places;** it is shown without fixed places, in scientific notation where tiny. A caller's own or carried places are kept as given.
|
|
28
|
+
- Migration: nothing to change; a tiny result that read "0.00" now reads its value.
|
|
29
|
+
- **The rest and the `ref` reach the surface**, and the name (`aria-label`, `aria-labelledby`, `aria-describedby`) still reaches the list (ADR-0068). No old form is kept, since an attribute stands on one element.
|
|
30
|
+
- Migration: a selector or a test id that found the list now finds the surface.
|
|
31
|
+
- **The peer range on core moves to `^0.43.0`.**
|
|
32
|
+
- Migration: install the 0.43 version of `@umriss-ui/core` beside it.
|
|
33
|
+
|
|
34
|
+
## 0.42.0 – A calculation written in a Server Component (Oct. 2026)
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- **A calculation is written in a Server Component** (ADR-0067). The entry carries no `"use client"`: `<Calculation>` reads its tree where it is written, on the server, and hands the model to the view, a client component in `calculation.client.js` that the entry imports. The release check renders a costing sheet through React's Flight server and client.
|
|
39
|
+
- **Loadable in Vitest and Jest** with core's lines: the `.` entry carries a `default` condition, the README's "Testing" section points at core's, and the release check runs a test of a changed input under both runners.
|
|
40
|
+
- **TypeScript 5.4 or newer**, stated in the Install section (the declarations use `NoInfer`); the release check compiles a strict consumer under 5.4 as well as the current TypeScript.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- **The peer range on core covers the minor: `^0.42.0`.** It named the exact patch before (`^0.41.1`), so npm refused an install beside an earlier patch of core with `ERESOLVE`; the six packages move under one number and a minor moves the range (ADR-0066).
|
|
45
|
+
- Migration: nothing to change; any `@umriss-ui/core` 0.42 patch satisfies the peer.
|
|
46
|
+
- **An element rendered outside its calculation throws in development.** `Given`, the operators, `Chain`, `Ref` and the other elements are read by `<Calculation>`, never rendered; one that is rendered - passed through a client component, say - now throws a message saying to write the tree directly inside its `<Calculation>`.
|
|
47
|
+
- Migration: write the elements directly inside `<Calculation>`, in the same file; a tree written directly inside renders as before.
|
|
48
|
+
- **The compact line follows the type tokens**, derived from `--u-text-xs` as the compact table's is, where it was 18 px written out; at the default tokens it is still 18 px.
|
|
49
|
+
- Migration: nothing to change at the default tokens; under an application's own type tokens a compact calculation stays as close as the compact table's rows.
|
|
50
|
+
|
|
15
51
|
## 0.41.1 – The documentation runs where the code is (Oct. 2026)
|
|
16
52
|
|
|
17
53
|
### Changed
|
|
18
54
|
|
|
19
55
|
- **The documentation is no longer hosted.** The site on GitHub Pages is gone, and the package's `homepage` now names its README on GitHub. The running documentation of this version opens from a checkout of the tag `calculation-v0.41.1` with `pnpm install` and `pnpm start`, at `http://localhost:4170/umriss-ui/` - the repository README says how, under "See it running".
|
|
56
|
+
- Migration: nothing to change; a bookmark or link to the old hosted site no longer resolves - open the documentation from a checkout of the tag, as described above.
|
|
20
57
|
- **`docs/llms-full.md` in the package stands on its own:** a link to another page points at that page's heading in the same file, a link to a place on the site that the file does not hold keeps only its text, and ADR-0032 is linked at this version's tag.
|
|
58
|
+
- Migration: nothing to change; look at any tool that read `docs/llms-full.md` and followed its links to the site, which now find the heading in the same file.
|
|
21
59
|
|
|
22
60
|
## 0.41.0 – Money rounds as written, and no name clash in a dashboard (Oct. 2026)
|
|
23
61
|
|
package/README.md
CHANGED
|
@@ -16,15 +16,19 @@ pnpm add @umriss-ui/calculation @umriss-ui/core
|
|
|
16
16
|
|
|
17
17
|
`@umriss-ui/core` is a **peer dependency**: the calculation takes its styling
|
|
18
18
|
regime, formats, wording, assessment and freshness from there. React 19 or newer
|
|
19
|
-
as a peer as well.
|
|
19
|
+
as a peer as well. TypeScript 5.4 or newer (the declarations use `NoInfer`).
|
|
20
20
|
|
|
21
21
|
The package ships ES2022 syntax; an application that serves older browsers
|
|
22
22
|
transpiles it itself.
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
A calculation can be written in a Server Component or in a client file alike. The package's
|
|
25
|
+
entry carries no `"use client"`, so `<Calculation>` reads its tree wherever the tree is written;
|
|
26
|
+
its view, in a file of its own, begins with the directive and the stylesheet import. A tree must
|
|
27
|
+
stand directly inside its `<Calculation>`, in one file: passed through a client component of your
|
|
28
|
+
own, it fails with a message that says so. `check:dist` proves it by rendering a costing sheet
|
|
29
|
+
written in a Server Component through React's Flight renderer, with the view as a client
|
|
30
|
+
reference. No test runs inside a framework (`next build`): the calculation is rendered to a string
|
|
31
|
+
in a test.
|
|
28
32
|
|
|
29
33
|
## Two forms, written as they are shown
|
|
30
34
|
|
|
@@ -55,6 +59,8 @@ import { Calculation, Difference, Given, Product, Ref, Sum } from "@umriss-ui/ca
|
|
|
55
59
|
</Calculation>
|
|
56
60
|
```
|
|
57
61
|
|
|
62
|
+
`Calculation` is a composite: `ref`, `className`, `style`, `id` and `data-*` reach its surface; `aria-label`, `aria-labelledby` and `aria-describedby` reach the list inside it.
|
|
63
|
+
|
|
58
64
|
A **chain** suits a sheet read top to bottom (ADR-0028). A first quantity,
|
|
59
65
|
then `Plus`, `Minus`, `Times` or `DividedBy`, each working its operand into the
|
|
60
66
|
value before it, strictly in order, and `Interim`s naming the value where they
|
|
@@ -148,6 +154,12 @@ Each metric is worked on its own, and a calculation with metrics only adds and
|
|
|
148
154
|
subtracts. Unit and places belong to the metric; a missing number is `null`
|
|
149
155
|
and makes absent only its own metric.
|
|
150
156
|
|
|
157
|
+
## Testing
|
|
158
|
+
|
|
159
|
+
Tested under Vitest 5 and Jest 30 on jsdom. The runner lines and the setup file are in
|
|
160
|
+
[`@umriss-ui/core`'s Testing section](../core/README.md#testing); `check:dist` runs a test of the
|
|
161
|
+
installed calculation (an input changed, the result read) with exactly those files.
|
|
162
|
+
|
|
151
163
|
## Documentation
|
|
152
164
|
|
|
153
165
|
The demo is the documentation; in a checkout, `pnpm dev:calculation` (port 4177)
|
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import "./calculation.css";
|
|
3
|
+
import { jsx as c, jsxs as O } from "react/jsx-runtime";
|
|
4
|
+
import { useId as Ce, useState as ae, useRef as ke, useCallback as me, useLayoutEffect as ye, useEffect as Ae } from "react";
|
|
5
|
+
import { assess as Me, verdictWeight as X, useDensityFor as Be, useFormats as _e, useWording as be, VisuallyHidden as Te, AngleGlyph as Ee, Badge as se, useFreshness as Le, Tooltip as Re } from "@umriss-ui/core";
|
|
6
|
+
import { p as We } from "./calculation.model-CZuohgrp.js";
|
|
7
|
+
function Ne(e, t) {
|
|
8
|
+
if (e.decimals !== void 0) return e.decimals;
|
|
9
|
+
const m = e.format === "percent" ? 1 : e.given ? void 0 : 2;
|
|
10
|
+
if (m === void 0) return;
|
|
11
|
+
const i = e.format === "percent" ? t * 100 : t;
|
|
12
|
+
return i !== 0 && we(i, m) === 0 ? void 0 : m;
|
|
13
|
+
}
|
|
14
|
+
function pe(e, t) {
|
|
15
|
+
const [m, i = "0"] = String(e).split("e");
|
|
16
|
+
return +`${m}e${Number(i) + t}`;
|
|
17
|
+
}
|
|
18
|
+
function we(e, t) {
|
|
19
|
+
return t === void 0 ? e : Math.sign(e) * pe(Math.round(pe(Math.abs(e), t)), -t) || 0;
|
|
20
|
+
}
|
|
21
|
+
function J(e, t, m = Ne(e, t)) {
|
|
22
|
+
return we(e.format === "percent" ? t * 100 : t, m);
|
|
23
|
+
}
|
|
24
|
+
const Fe = (e, t) => e.format === "percent" ? t / 100 : t;
|
|
25
|
+
function fe(e, t, m) {
|
|
26
|
+
const [i, ...d] = t;
|
|
27
|
+
switch (e) {
|
|
28
|
+
case "sum":
|
|
29
|
+
return t.reduce((n, l, g) => m[g] ? n - l : n + l, 0);
|
|
30
|
+
case "difference":
|
|
31
|
+
return d.reduce((n, l) => n - l, i);
|
|
32
|
+
case "product":
|
|
33
|
+
return d.reduce((n, l) => n * l, i);
|
|
34
|
+
case "quotient":
|
|
35
|
+
return i / d[0];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const he = (e, t) => t === void 0 || e !== void 0 && X(e) >= X(t) ? e : t;
|
|
39
|
+
function qe(e) {
|
|
40
|
+
const t = /* @__PURE__ */ new Map(), m = (i) => {
|
|
41
|
+
const d = t.get(i);
|
|
42
|
+
if (d) return d;
|
|
43
|
+
const n = e.quantities.get(i);
|
|
44
|
+
let l = null, g, p = !1, s;
|
|
45
|
+
if (n.given) {
|
|
46
|
+
const N = n.given.value;
|
|
47
|
+
typeof N == "number" && Number.isFinite(N) ? l = N : g = { kind: "missing", label: n.label };
|
|
48
|
+
} else {
|
|
49
|
+
const N = n.operands.map((w) => ({ operand: w, ...m(w.key) }));
|
|
50
|
+
for (const { operand: w, verdict: S, worst: C } of N) {
|
|
51
|
+
const $ = w.reference ? S : he(S, C);
|
|
52
|
+
s = he(s, $);
|
|
53
|
+
}
|
|
54
|
+
g = N.find((w) => w.absence)?.absence;
|
|
55
|
+
const I = N[1];
|
|
56
|
+
if (!g && n.operator === "quotient" && I.value === 0 && (g = { kind: "zero", label: e.quantities.get(I.operand.key).label }), !g) {
|
|
57
|
+
const w = n.operands.map(($) => $.negated === !0);
|
|
58
|
+
l = fe(n.operator, N.map(($) => $.value), w);
|
|
59
|
+
const S = fe(
|
|
60
|
+
n.operator,
|
|
61
|
+
N.map(($) => Fe(e.quantities.get($.operand.key), $.shown)),
|
|
62
|
+
w
|
|
63
|
+
), C = Ne(n, l);
|
|
64
|
+
p = J(n, S, C) !== J(n, l, C);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const B = { target: n.target, limits: n.limits }, T = n.target !== void 0 || (n.limits?.length ?? 0) > 0 ? Me(l, B) : void 0, h = (n.limits?.length ?? 0) > 0 ? T.verdict : l === null ? "unknown" : void 0, j = {
|
|
68
|
+
value: l,
|
|
69
|
+
absence: g,
|
|
70
|
+
shown: l === null ? null : J(n, l),
|
|
71
|
+
approximate: p,
|
|
72
|
+
assessment: T,
|
|
73
|
+
verdict: h,
|
|
74
|
+
worst: s
|
|
75
|
+
};
|
|
76
|
+
return t.set(i, j), j;
|
|
77
|
+
};
|
|
78
|
+
for (const i of e.quantities.keys()) m(i);
|
|
79
|
+
return t;
|
|
80
|
+
}
|
|
81
|
+
const ve = 4;
|
|
82
|
+
function je(e, t, m) {
|
|
83
|
+
const i = e.operands[t];
|
|
84
|
+
if (i.previous) return;
|
|
85
|
+
const d = e.operator, n = t === 0;
|
|
86
|
+
if (d !== "sum" && d !== "difference") return n ? void 0 : { operator: d, negated: !1 };
|
|
87
|
+
const l = d === "difference" ? !n : i.negated === !0, g = new Set(m.filter((s) => s !== null && s !== 0).map(Math.sign)), p = g.size === 1 ? { operator: "sum", negated: l !== g.has(-1), unsigned: !0 } : { operator: "sum", negated: l };
|
|
88
|
+
return n && !p.negated ? void 0 : p;
|
|
89
|
+
}
|
|
90
|
+
const De = {
|
|
91
|
+
sum: "calculationSumSymbol",
|
|
92
|
+
difference: "calculationDifferenceSymbol",
|
|
93
|
+
product: "calculationProductSymbol",
|
|
94
|
+
quotient: "calculationQuotientSymbol"
|
|
95
|
+
}, Pe = {
|
|
96
|
+
sum: "calculationSumWord",
|
|
97
|
+
difference: "calculationDifferenceWord",
|
|
98
|
+
product: "calculationProductWord",
|
|
99
|
+
quotient: "calculationQuotientWord"
|
|
100
|
+
};
|
|
101
|
+
function K(e, t) {
|
|
102
|
+
switch (e) {
|
|
103
|
+
case "alarm":
|
|
104
|
+
return t.verdictAlarm;
|
|
105
|
+
case "warning":
|
|
106
|
+
return t.verdictWarning;
|
|
107
|
+
case "unknown":
|
|
108
|
+
return t.verdictUnknown;
|
|
109
|
+
default:
|
|
110
|
+
return t.verdictOk;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function ee(e, t, m) {
|
|
114
|
+
const i = e.negated ? "difference" : e.operator;
|
|
115
|
+
return m[(t ? Pe : De)[i]];
|
|
116
|
+
}
|
|
117
|
+
function Ue(e, t) {
|
|
118
|
+
return e.kind === "missing" ? t.calculationMissing(e.label) : t.calculationDivisionByZero(e.label);
|
|
119
|
+
}
|
|
120
|
+
function ge(e, t, m, i) {
|
|
121
|
+
const d = e.format === "percent" ? i : e.unit, n = m.number(t, e.decimals);
|
|
122
|
+
return d ? `${n} ${d}` : n;
|
|
123
|
+
}
|
|
124
|
+
function Ie(e, t, m, i, d, n, l, g = () => {
|
|
125
|
+
}) {
|
|
126
|
+
const p = e.quantities.get(m), s = t.get(m), B = (v, y) => v.shown !== null && y?.unsigned ? Math.abs(v.shown) : v.shown, T = (v, y, _, F) => {
|
|
127
|
+
const D = B(y, F);
|
|
128
|
+
return D === null ? _ ? n.verdictUnknown : n.statAbsentValue : ge(v, D, d, _ ? n.calculationPercent : "%");
|
|
129
|
+
}, h = (v) => {
|
|
130
|
+
if (i || !p.operator) return {};
|
|
131
|
+
if (p.operands.length === 0) return { names: n.calculationNoOperands };
|
|
132
|
+
if (!v && p.operands.length > ve)
|
|
133
|
+
return { names: n.calculationOperandCount(p.operands.length) };
|
|
134
|
+
const y = (_) => p.operands.map((F, D) => {
|
|
135
|
+
const Y = e.quantities.get(F.key), q = g(D);
|
|
136
|
+
return q ? `${ee(q, v, n)} ${_(Y, q)}` : _(Y);
|
|
137
|
+
}).join(" ");
|
|
138
|
+
return {
|
|
139
|
+
names: y((_) => _.label),
|
|
140
|
+
numbers: y((_, F) => T(_, t.get(_.key), v, F))
|
|
141
|
+
};
|
|
142
|
+
}, j = (v) => {
|
|
143
|
+
const y = s.assessment?.deviation;
|
|
144
|
+
if (y === void 0 || p.target === void 0) return;
|
|
145
|
+
const _ = ge(p, J(p, p.target), d, v ? n.calculationPercent : "%");
|
|
146
|
+
return y > 0 ? n.calculationAboveTarget(_) : y < 0 ? n.calculationBelowTarget(_) : n.calculationOnTarget(_);
|
|
147
|
+
}, N = h(!1).names, I = N === void 0 || p.operands.length === 0 || p.operands.length > ve ? N : `= ${N}`, w = h(!0), S = s.absence ? Ue(s.absence, n) : void 0, C = ` ${n.calculationEquals} `, $ = s.approximate ? `${n.calculationApproximately} ${T(p, s, !0, l)}` : T(p, s, !0, l), te = [
|
|
148
|
+
(l ? `${ee(l, !0, n)} ` : "") + p.label + C + [w.names, w.numbers, $].filter(Boolean).join(`,${C}`),
|
|
149
|
+
s.verdict !== void 0 && s.verdict !== "unknown" ? K(s.verdict, n) : void 0,
|
|
150
|
+
j(!0),
|
|
151
|
+
S
|
|
152
|
+
].filter(Boolean).join(", "), G = s.shown === null ? void 0 : p.format === "percent" ? "%" : p.unit, k = (v) => v === null ? n.statAbsentValue : d.number(v, p.decimals);
|
|
153
|
+
return { amount: k(B(s, l)), ownAmount: k(s.shown), unit: G, names: I, target: j(!1), reason: S, sentence: te, spokenNames: w.names, spokenNumber: $ };
|
|
154
|
+
}
|
|
155
|
+
function ze(e, t, m, i, d) {
|
|
156
|
+
const n = d ? `${ee(d, !0, i)} ` : "", l = t[0].spokenNames, g = n + e + (l === void 0 ? "" : ` ${i.calculationEquals} ${l}`), p = m.map(
|
|
157
|
+
(s, B) => [`${s.label} ${t[B].spokenNumber}`, t[B].reason].filter(Boolean).join(", ")
|
|
158
|
+
);
|
|
159
|
+
return `${g}: ${p.join("; ")}`;
|
|
160
|
+
}
|
|
161
|
+
const Ve = "_frame_10pic_24 _text_18806_22", He = "_calculation_10pic_51", Qe = "_line_10pic_86", Ge = "_assessment_10pic_98", Ye = "_disclosure_10pic_107", Ze = "_amount_10pic_90", Je = "_list_10pic_128", Ke = "_item_10pic_129", Xe = "_derivation_10pic_130", et = "_labelCell_10pic_90", tt = "_names_10pic_90", nt = "_operator_10pic_90", at = "_unit_10pic_90", st = "_label_10pic_90", ot = "_approximate_10pic_360", it = "_target_10pic_102", rt = "_worst_10pic_102", ct = "_head_10pic_512", lt = "_headCell_10pic_519", dt = "_headUnit_10pic_532", ut = "_notes_10pic_539", mt = "_freshness_10pic_553", pt = "_headLabel_10pic_583", o = {
|
|
162
|
+
frame: Ve,
|
|
163
|
+
calculation: He,
|
|
164
|
+
line: Qe,
|
|
165
|
+
assessment: Ge,
|
|
166
|
+
disclosure: Ye,
|
|
167
|
+
amount: Ze,
|
|
168
|
+
list: Je,
|
|
169
|
+
item: Ke,
|
|
170
|
+
derivation: Xe,
|
|
171
|
+
labelCell: et,
|
|
172
|
+
names: tt,
|
|
173
|
+
operator: nt,
|
|
174
|
+
unit: at,
|
|
175
|
+
label: st,
|
|
176
|
+
approximate: ot,
|
|
177
|
+
target: it,
|
|
178
|
+
worst: rt,
|
|
179
|
+
head: ct,
|
|
180
|
+
headCell: lt,
|
|
181
|
+
headUnit: dt,
|
|
182
|
+
notes: ut,
|
|
183
|
+
freshness: mt,
|
|
184
|
+
headLabel: pt
|
|
185
|
+
}, ft = 10, Q = (e) => 4 + 2 * e, ht = (e) => 5 + 2 * e, vt = { ok: "success", unknown: "neutral", warning: "warning", alarm: "danger" }, gt = (...e) => e.filter(Boolean).join(" ");
|
|
186
|
+
function _t({ asOf: e, ages: t }) {
|
|
187
|
+
const m = _e(), i = be(), d = Le(e, t), n = d.freshness === "lost" ? i.freshnessDisconnected : d.freshness === "stale" ? i.freshnessStale : i.freshnessFresh;
|
|
188
|
+
return /* @__PURE__ */ O("span", { className: o.freshness, "data-freshness": d.freshness, children: [
|
|
189
|
+
n,
|
|
190
|
+
d.age !== null && ` · ${m.relative(d.age)}`
|
|
191
|
+
] });
|
|
192
|
+
}
|
|
193
|
+
function xt({
|
|
194
|
+
model: e,
|
|
195
|
+
ref: t,
|
|
196
|
+
className: m,
|
|
197
|
+
style: i,
|
|
198
|
+
density: d,
|
|
199
|
+
"aria-label": n,
|
|
200
|
+
"aria-labelledby": l,
|
|
201
|
+
"aria-describedby": g,
|
|
202
|
+
...p
|
|
203
|
+
}) {
|
|
204
|
+
const s = e.metrics, B = Be(d, "regular") === "compact", T = _e(), h = be(), j = Ce(), N = We(e).map((a) => ({ view: a, results: qe(a) })), [I, w] = ae(() => /* @__PURE__ */ new Set()), [S, C] = ae(null), $ = ke(null), oe = me(
|
|
205
|
+
(a) => {
|
|
206
|
+
$.current = a, typeof t == "function" ? t(a) : t && (t.current = a);
|
|
207
|
+
},
|
|
208
|
+
[t]
|
|
209
|
+
), [te, G] = ae(!1), k = s?.length ?? 0, v = me(() => {
|
|
210
|
+
const a = $.current, u = a && k > 0 ? getComputedStyle(a.firstElementChild).gridTemplateColumns.split(" ").map(parseFloat) : [], f = Q(k) - 1;
|
|
211
|
+
if (!a || u.length <= f || u.some((x) => !Number.isFinite(x))) {
|
|
212
|
+
G(!1);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const A = u.slice(2, f).reduce((x, M) => x + M, 0);
|
|
216
|
+
let r = 0;
|
|
217
|
+
const E = document.createRange();
|
|
218
|
+
for (const x of a.querySelectorAll(`.${o.label}`)) {
|
|
219
|
+
E.selectNodeContents(x);
|
|
220
|
+
const M = [...E.getClientRects()].reduce((R, W) => R + W.width, 0);
|
|
221
|
+
if (M === 0) continue;
|
|
222
|
+
const V = x.parentElement, z = x.getBoundingClientRect().left - V.getBoundingClientRect().left;
|
|
223
|
+
r = Math.max(r, z + M + parseFloat(getComputedStyle(V).paddingRight));
|
|
224
|
+
}
|
|
225
|
+
const L = parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
226
|
+
G(a.clientWidth - A < Math.min(r, ft * L));
|
|
227
|
+
}, [k]);
|
|
228
|
+
ye(() => v()), Ae(() => {
|
|
229
|
+
const a = $.current;
|
|
230
|
+
if (!a || k === 0) return;
|
|
231
|
+
const u = new ResizeObserver(() => v());
|
|
232
|
+
return u.observe(a), () => u.disconnect();
|
|
233
|
+
}, [v, k]);
|
|
234
|
+
const y = (a) => w((u) => {
|
|
235
|
+
const f = new Set(u);
|
|
236
|
+
return f.delete(a) || f.add(a), f;
|
|
237
|
+
}), _ = (a, u) => je(
|
|
238
|
+
a,
|
|
239
|
+
u,
|
|
240
|
+
N.map(({ results: f }) => f.get(a.operands[u].key).shown)
|
|
241
|
+
);
|
|
242
|
+
let F = !1;
|
|
243
|
+
const D = (a, u) => a.map(({ own: f, text: A }, r) => [
|
|
244
|
+
/* @__PURE__ */ O(
|
|
245
|
+
"span",
|
|
246
|
+
{
|
|
247
|
+
className: o.amount,
|
|
248
|
+
"aria-hidden": "true",
|
|
249
|
+
"data-verdict": f.verdict,
|
|
250
|
+
"data-later": r > 0 ? "" : void 0,
|
|
251
|
+
style: s ? { "--_calculation-column": Q(r) } : void 0,
|
|
252
|
+
children: [
|
|
253
|
+
f.approximate && /* @__PURE__ */ c(Re, { content: h.calculationApproximateNote, children: /* @__PURE__ */ c("span", { className: o.approximate, children: "≈" }) }),
|
|
254
|
+
u ? A.ownAmount : A.amount
|
|
255
|
+
]
|
|
256
|
+
},
|
|
257
|
+
`amount-${r}`
|
|
258
|
+
),
|
|
259
|
+
/* @__PURE__ */ c(
|
|
260
|
+
"span",
|
|
261
|
+
{
|
|
262
|
+
className: o.unit,
|
|
263
|
+
"aria-hidden": "true",
|
|
264
|
+
style: s ? { "--_calculation-column": ht(r) } : void 0,
|
|
265
|
+
"data-last": s && r === a.length - 1 ? "" : void 0,
|
|
266
|
+
children: s && !u ? void 0 : A.unit
|
|
267
|
+
},
|
|
268
|
+
`unit-${r}`
|
|
269
|
+
)
|
|
270
|
+
]), Y = (a, u) => S === null ? void 0 : a === S ? "use" : u === S ? "operand" : void 0, q = (a, u, f, A) => {
|
|
271
|
+
const r = e.quantities.get(a), E = N.map(({ view: b, results: U }) => ({
|
|
272
|
+
own: U.get(a),
|
|
273
|
+
text: Ie(b, U, a, u, T, h, f.position, (Se) => _(r, Se))
|
|
274
|
+
})), { own: L, text: x } = E[0], M = r.operator !== void 0 && !u, V = a === e.result && !u, z = M && r.operands.length > 0 && (r.interim ? f.flat : V), R = M && !z && r.operands.length > 0, W = R && I.has(a);
|
|
275
|
+
F ||= R;
|
|
276
|
+
const ie = `${j}-${a}`, ne = { depth: z ? f.depth : f.depth + 1, flat: !1, parent: a }, Z = M ? r.operands.find((b) => b.previous) : void 0, re = Z && f.flat ? q(Z.key, !1, { ...f, parent: a, position: void 0 }, `${A}-c`) : [], xe = Z && !f.flat ? q(Z.key, !1, { ...ne, flat: !0 }, `${A}-c`) : [], ce = M ? r.operands.map(
|
|
277
|
+
(b, U) => b.previous ? null : q(b.key, b.reference, { ...ne, position: _(r, U) }, `${A}-${U}`)
|
|
278
|
+
) : [], H = R && !W && L.worst !== void 0 && X(L.worst) > X(L.verdict ?? "ok") ? L.worst : void 0, P = u ? void 0 : r.given, Oe = f.position ? ee(f.position, !1, h) : void 0, le = [
|
|
279
|
+
!u && r.explanation !== void 0 && /* @__PURE__ */ c("span", { children: r.explanation }, "explanation"),
|
|
280
|
+
P?.source !== void 0 && /* @__PURE__ */ c("span", { children: h.calculationSource(P.source) }, "source"),
|
|
281
|
+
P?.asOf !== void 0 && (P.ages !== void 0 ? /* @__PURE__ */ c(_t, { asOf: P.asOf, ages: P.ages }, "asOf") : /* @__PURE__ */ c("span", { children: h.asOfAgo(T.dateTime(new Date(P.asOf), !1)) }, "asOf")),
|
|
282
|
+
!u && r.aside !== void 0 && /* @__PURE__ */ c("span", { children: r.aside }, "aside")
|
|
283
|
+
].filter(Boolean), de = V ? "result" : r.interim && !u && f.flat ? "interim" : void 0, ue = /* @__PURE__ */ O(
|
|
284
|
+
"div",
|
|
285
|
+
{
|
|
286
|
+
className: o.line,
|
|
287
|
+
style: { "--_calculation-depth": f.depth },
|
|
288
|
+
"data-inner": f.depth > 0 ? "" : void 0,
|
|
289
|
+
"data-kind": de,
|
|
290
|
+
"data-foldable": R ? "" : void 0,
|
|
291
|
+
"data-reference": u ? "" : void 0,
|
|
292
|
+
"data-emphasis": u ? void 0 : r.emphasis,
|
|
293
|
+
"data-rule": !u && r.rule ? "" : void 0,
|
|
294
|
+
"data-mark": Y(a, f.parent),
|
|
295
|
+
onPointerEnter: () => C(a),
|
|
296
|
+
onPointerLeave: () => C(null),
|
|
297
|
+
onFocus: () => C(a),
|
|
298
|
+
onBlur: () => C(null),
|
|
299
|
+
onClick: R ? () => {
|
|
300
|
+
window.getSelection()?.toString() || y(a);
|
|
301
|
+
} : void 0,
|
|
302
|
+
children: [
|
|
303
|
+
/* @__PURE__ */ c(Te, { children: [
|
|
304
|
+
s ? ze(r.label, E.map((b) => b.text), s, h, f.position) : x.sentence,
|
|
305
|
+
E.some((b) => b.own.approximate) && h.calculationApproximateNote,
|
|
306
|
+
H !== void 0 && h.calculationWorstInside(K(H, h))
|
|
307
|
+
].filter(Boolean).join(". ") }),
|
|
308
|
+
/* @__PURE__ */ O("span", { className: o.labelCell, children: [
|
|
309
|
+
R ? /* @__PURE__ */ c(
|
|
310
|
+
"button",
|
|
311
|
+
{
|
|
312
|
+
type: "button",
|
|
313
|
+
className: o.disclosure,
|
|
314
|
+
"aria-expanded": W,
|
|
315
|
+
"aria-controls": ie,
|
|
316
|
+
"aria-label": (W ? h.calculationHideDerivation : h.calculationShowDerivation)(r.label),
|
|
317
|
+
children: /* @__PURE__ */ c(Ee, { "data-open": W ? "" : void 0 })
|
|
318
|
+
}
|
|
319
|
+
) : /* @__PURE__ */ c("span", { className: o.disclosure, "aria-hidden": "true" }),
|
|
320
|
+
/* @__PURE__ */ c("span", { className: o.label, "aria-hidden": "true", children: r.label })
|
|
321
|
+
] }),
|
|
322
|
+
/* @__PURE__ */ c("span", { className: o.names, "aria-hidden": "true", children: M && !z && !W ? x.names : void 0 }),
|
|
323
|
+
/* @__PURE__ */ c("span", { className: o.operator, "aria-hidden": "true", children: Oe }),
|
|
324
|
+
D(E, de !== void 0),
|
|
325
|
+
/* @__PURE__ */ O("span", { className: o.assessment, "aria-hidden": "true", children: [
|
|
326
|
+
s ? (
|
|
327
|
+
/* Short: which metric. The sentence carries the full reason. */
|
|
328
|
+
s.map(
|
|
329
|
+
(b, U) => E[U].own.absence && /* @__PURE__ */ c(se, { children: h.calculationMissing(b.unit ?? b.label) }, b.id)
|
|
330
|
+
)
|
|
331
|
+
) : x.reason !== void 0 ? /* @__PURE__ */ c(se, { children: x.reason }) : L.verdict !== void 0 && /* @__PURE__ */ c(se, { tone: vt[L.verdict], children: K(L.verdict, h) }),
|
|
332
|
+
x.target !== void 0 && /* @__PURE__ */ c("span", { className: o.target, children: x.target }),
|
|
333
|
+
H !== void 0 && /* @__PURE__ */ c("span", { className: o.worst, "data-verdict": H, children: h.calculationWorstInside(K(H, h)) })
|
|
334
|
+
] }),
|
|
335
|
+
le.length > 0 && /* A click here - on a link in the aside, on a sparkline - is the
|
|
336
|
+
caller's, not a fold. */
|
|
337
|
+
/* @__PURE__ */ c("span", { className: o.notes, onClick: (b) => b.stopPropagation(), children: le })
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
);
|
|
341
|
+
return z ? [
|
|
342
|
+
...re,
|
|
343
|
+
/* @__PURE__ */ O("li", { className: o.item, children: [
|
|
344
|
+
/* @__PURE__ */ c("ul", { className: o.list, children: ce }),
|
|
345
|
+
ue
|
|
346
|
+
] }, A)
|
|
347
|
+
] : [
|
|
348
|
+
...re,
|
|
349
|
+
/* @__PURE__ */ O("li", { className: o.item, "data-open": W ? "" : void 0, style: { "--_calculation-depth": f.depth }, children: [
|
|
350
|
+
ue,
|
|
351
|
+
R && /* @__PURE__ */ O("ul", { id: ie, className: o.derivation, hidden: !W, children: [
|
|
352
|
+
xe,
|
|
353
|
+
ce,
|
|
354
|
+
/* @__PURE__ */ c("li", { className: o.item, "aria-hidden": "true", children: /* @__PURE__ */ O(
|
|
355
|
+
"div",
|
|
356
|
+
{
|
|
357
|
+
className: o.line,
|
|
358
|
+
style: { "--_calculation-depth": ne.depth },
|
|
359
|
+
"data-inner": "",
|
|
360
|
+
"data-closing": "",
|
|
361
|
+
"data-mark": S === a ? "use" : void 0,
|
|
362
|
+
children: [
|
|
363
|
+
/* @__PURE__ */ O("span", { className: o.labelCell, children: [
|
|
364
|
+
/* @__PURE__ */ c("span", { className: o.disclosure }),
|
|
365
|
+
/* @__PURE__ */ O("span", { className: o.label, children: [
|
|
366
|
+
"= ",
|
|
367
|
+
r.label
|
|
368
|
+
] })
|
|
369
|
+
] }),
|
|
370
|
+
/* @__PURE__ */ c("span", { className: o.names }),
|
|
371
|
+
/* @__PURE__ */ c("span", { className: o.operator }),
|
|
372
|
+
D(E, !0)
|
|
373
|
+
]
|
|
374
|
+
}
|
|
375
|
+
) })
|
|
376
|
+
] })
|
|
377
|
+
] }, A)
|
|
378
|
+
];
|
|
379
|
+
}, $e = q(e.result, !1, { depth: 0, flat: !0, parent: null }, "r");
|
|
380
|
+
return (
|
|
381
|
+
/* The frame is the surface and the container the layout measures itself
|
|
382
|
+
against; the list inside it is the statement. */
|
|
383
|
+
/* @__PURE__ */ c(
|
|
384
|
+
"div",
|
|
385
|
+
{
|
|
386
|
+
...p,
|
|
387
|
+
ref: oe,
|
|
388
|
+
className: gt(o.frame, m),
|
|
389
|
+
style: s ? {
|
|
390
|
+
"--_calculation-figure-tracks": Array(k * 2).fill("auto").join(" "),
|
|
391
|
+
"--_calculation-figures-end": Q(k),
|
|
392
|
+
"--_calculation-assessment-column": Q(k),
|
|
393
|
+
...i
|
|
394
|
+
} : i,
|
|
395
|
+
"data-still": F ? void 0 : "",
|
|
396
|
+
"data-metrics": s ? k : void 0,
|
|
397
|
+
"data-two-lines": te ? "" : void 0,
|
|
398
|
+
"data-compact": B ? "" : void 0,
|
|
399
|
+
children: /* @__PURE__ */ O("ul", { className: o.calculation, "aria-label": n, "aria-labelledby": l, "aria-describedby": g, children: [
|
|
400
|
+
s && /* The head names each metric and its unit above its column. Every
|
|
401
|
+
row's sentence names them too, so the head is for the eye. */
|
|
402
|
+
/* @__PURE__ */ c("li", { className: o.item, "aria-hidden": "true", children: /* @__PURE__ */ c("div", { className: o.head, children: s.map((a, u) => /* @__PURE__ */ O(
|
|
403
|
+
"span",
|
|
404
|
+
{
|
|
405
|
+
className: o.headCell,
|
|
406
|
+
"data-unit": a.unit === void 0 ? void 0 : "",
|
|
407
|
+
style: { "--_calculation-column": Q(u) },
|
|
408
|
+
children: [
|
|
409
|
+
/* @__PURE__ */ c("span", { className: o.headLabel, children: a.label }),
|
|
410
|
+
a.unit !== void 0 && /* @__PURE__ */ c("span", { className: o.headUnit, children: a.unit })
|
|
411
|
+
]
|
|
412
|
+
},
|
|
413
|
+
a.id
|
|
414
|
+
)) }) }),
|
|
415
|
+
$e
|
|
416
|
+
] })
|
|
417
|
+
}
|
|
418
|
+
)
|
|
419
|
+
);
|
|
420
|
+
}
|
|
421
|
+
export {
|
|
422
|
+
xt as CalculationView
|
|
423
|
+
};
|
package/dist/calculation.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.base{._text_18806_22{font-family:var(--u-font-sans);font-size:var(--u-text-md);line-height:var(--u-leading-normal);color:var(--u-color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}@media(pointer:fine){._dense_18806_38{--u-control-height-sm: var(--u-control-height-xs)}}._ink_18806_49{--u-color-text: var(--u-color-bg);--u-color-text-secondary: color-mix(in srgb, var(--u-color-bg) 75%, transparent);--u-color-text-muted: color-mix(in srgb, var(--u-color-bg) 60%, transparent)}._extent_18806_75{--_chars: 20;--_extra: 0;--_tracking: 0px;--_chrome: 0px;min-inline-size:0;max-inline-size:100%;contain:inline-size;contain-intrinsic-inline-size:calc((var(--_chars) + var(--_extra)) * (1ch + var(--_tracking)) + var(--_chrome))}._field_18806_90{caret-color:var(--u-color-accent)}._scroll_18806_96{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--u-color-text) 25%,transparent) transparent}._scroll_18806_96::-webkit-scrollbar{width:10px;height:10px}._scroll_18806_96::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--u-color-text) 22%,transparent);border-radius:var(--u-radius-full);border:3px solid transparent;background-clip:content-box}._scroll_18806_96::-webkit-scrollbar-track{background:transparent}}@layer umriss.components{._ring_18806_125:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}@media(pointer:coarse){._field_18806_90._field_18806_90,._fieldRoot_18806_145._fieldRoot_18806_145{font-size:16px}}._field_18806_90:-webkit-autofill,._field_18806_90:-webkit-autofill:hover,._field_18806_90:-webkit-autofill:focus{-webkit-box-shadow:inset 0 0 0 1000px var(--u-color-surface),0 0 0 1px var(--u-edge-color-strong);-webkit-text-fill-color:var(--u-color-text);caret-color:var(--u-color-accent)}}@layer umriss.components{._frame_73wtl_24,._frame_73wtl_24:before,._frame_73wtl_24:after{box-sizing:border-box}._calculation_73wtl_51,._calculation_73wtl_51:before,._calculation_73wtl_51:after{box-sizing:border-box}._line_73wtl_86,._line_73wtl_86:before,._line_73wtl_86:after{box-sizing:border-box}._assessment_73wtl_98,._assessment_73wtl_98:before,._assessment_73wtl_98:after{box-sizing:border-box}._disclosure_73wtl_107,._disclosure_73wtl_107:before,._disclosure_73wtl_107:after{box-sizing:border-box}._amount_73wtl_90,._amount_73wtl_90:before,._amount_73wtl_90:after{box-sizing:border-box}._list_73wtl_128,._list_73wtl_128:before,._list_73wtl_128:after{box-sizing:border-box}._item_73wtl_129,._item_73wtl_129:before,._item_73wtl_129:after{box-sizing:border-box}._derivation_73wtl_130,._derivation_73wtl_130:before,._derivation_73wtl_130:after{box-sizing:border-box}._labelCell_73wtl_90,._labelCell_73wtl_90:before,._labelCell_73wtl_90:after{box-sizing:border-box}._names_73wtl_90,._names_73wtl_90:before,._names_73wtl_90:after{box-sizing:border-box}._operator_73wtl_90,._operator_73wtl_90:before,._operator_73wtl_90:after{box-sizing:border-box}._unit_73wtl_90,._unit_73wtl_90:before,._unit_73wtl_90:after{box-sizing:border-box}._label_73wtl_90,._label_73wtl_90:before,._label_73wtl_90:after{box-sizing:border-box}._approximate_73wtl_345,._approximate_73wtl_345:before,._approximate_73wtl_345:after{box-sizing:border-box}._target_73wtl_102,._target_73wtl_102:before,._target_73wtl_102:after{box-sizing:border-box}._worst_73wtl_102,._worst_73wtl_102:before,._worst_73wtl_102:after{box-sizing:border-box}._head_73wtl_497,._head_73wtl_497:before,._head_73wtl_497:after{box-sizing:border-box}._headCell_73wtl_504,._headCell_73wtl_504:before,._headCell_73wtl_504:after{box-sizing:border-box}._headUnit_73wtl_517,._headUnit_73wtl_517:before,._headUnit_73wtl_517:after{box-sizing:border-box}._notes_73wtl_524,._notes_73wtl_524:before,._notes_73wtl_524:after{box-sizing:border-box}._freshness_73wtl_538,._freshness_73wtl_538:before,._freshness_73wtl_538:after{box-sizing:border-box}._headLabel_73wtl_568,._headLabel_73wtl_568:before,._headLabel_73wtl_568:after{box-sizing:border-box}._frame_73wtl_24{font-size:var(--u-text-sm);border-radius:var(--u-radius-md);corner-shape:squircle;background:var(--u-color-surface);outline:1px solid transparent;box-shadow:var(--u-edge);overflow-x:auto;overflow-y:hidden;--_calculation-disclosure-size: 20px;--_calculation-disclosure-gap: var(--u-space-2);--_calculation-line-pad: var(--u-space-2);--_calculation-line-gap: var(--u-space-1);container-type:inline-size;width:100%}._calculation_73wtl_51{display:grid;grid-template-columns:fit-content(22rem) minmax(0,1fr) auto var(--_calculation-figure-tracks, auto auto) auto;margin:0;padding:0;list-style:none}._frame_73wtl_24[data-compact]{--_calculation-line-text: 18px;--_calculation-line-pad: var(--u-space-1);--_calculation-line-gap: calc(var(--u-space-1) / 2);font-size:var(--u-text-xs);line-height:var(--_calculation-line-text)}@media(pointer:coarse){._frame_73wtl_24[data-compact]{--_calculation-line-pad: var(--u-space-2);--_calculation-line-gap: var(--u-space-1)}}._frame_73wtl_24[data-compact]:not([data-two-lines]) ._line_73wtl_86{grid-template-rows:minmax(calc(var(--_calculation-line-text) + 2 * var(--_calculation-line-pad)),auto)}._frame_73wtl_24[data-compact]:not([data-two-lines]) :is(._labelCell_73wtl_90,._names_73wtl_90,._operator_73wtl_90,._amount_73wtl_90,._unit_73wtl_90){padding-bottom:calc(var(--_calculation-line-pad) - 1px)}._frame_73wtl_24[data-compact]:not([data-two-lines]) ._assessment_73wtl_98{padding-bottom:0}._frame_73wtl_24[data-compact]:not([data-two-lines]) ._assessment_73wtl_98>:not(._target_73wtl_102,._worst_73wtl_102){margin-block:-1px}._frame_73wtl_24[data-compact] ._disclosure_73wtl_107{margin-block:-1px}._frame_73wtl_24[data-compact] ._line_73wtl_86[data-kind=result]>._amount_73wtl_90{font-size:var(--u-text-sm);text-underline-offset:3px}._frame_73wtl_24[data-still]{--_calculation-disclosure-size: 0px;--_calculation-disclosure-gap: 0px}._frame_73wtl_24[data-still] ._disclosure_73wtl_107{display:none}._list_73wtl_128,._item_73wtl_129,._derivation_73wtl_130{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;margin:0;padding:0;list-style:none}._derivation_73wtl_130[hidden]{display:none}._derivation_73wtl_130:not([hidden]){animation:_derivationIn_73wtl_1 var(--u-duration-fast) var(--u-ease-out)}@keyframes _derivationIn_73wtl_1{0%{opacity:0}}._item_73wtl_129{--_calculation-fall: calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5) + var(--_calculation-disclosure-size) / 2 - 1px)}._derivation_73wtl_130{position:relative}._derivation_73wtl_130:before{content:"";position:absolute;top:0;bottom:0;left:var(--_calculation-fall);z-index:1;width:2px;background:var(--u-color-accent);pointer-events:none}:not(._derivation_73wtl_130)>._item_73wtl_129[data-open]>._line_73wtl_86:not([data-mark]),:not(._derivation_73wtl_130)>._item_73wtl_129>._derivation_73wtl_130{background-color:var(--u-color-surface-sunken)}._derivation_73wtl_130 ._line_73wtl_86{border-top-color:transparent}._line_73wtl_86{position:relative;display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:baseline;border-top:1px solid var(--u-hairline)}._calculation_73wtl_51>._item_73wtl_129:first-child>._line_73wtl_86:first-child,._calculation_73wtl_51>._item_73wtl_129:first-child>._list_73wtl_128>._item_73wtl_129:first-child>._line_73wtl_86{border-top-color:transparent}._line_73wtl_86[data-foldable]{cursor:pointer}._line_73wtl_86[data-mark]{background:color-mix(in srgb,var(--u-color-accent-subtle) 50%,transparent)}._line_73wtl_86[data-mark=use]{background:var(--u-color-accent-subtle)}._labelCell_73wtl_90,._names_73wtl_90,._operator_73wtl_90,._amount_73wtl_90,._unit_73wtl_90,._assessment_73wtl_98{grid-row:1;padding-top:var(--_calculation-line-pad);padding-bottom:var(--_calculation-line-pad)}._labelCell_73wtl_90{grid-column:1;display:flex;align-items:baseline;gap:var(--_calculation-disclosure-gap);min-width:0;padding-left:calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5));padding-right:var(--u-space-5)}._label_73wtl_90{min-width:0;color:var(--u-color-text)}._line_73wtl_86[data-reference] ._label_73wtl_90{font-style:italic;color:var(--u-color-text-secondary)}._disclosure_73wtl_107{flex:none;align-self:center;display:inline-flex;align-items:center;justify-content:center;width:var(--_calculation-disclosure-size);height:var(--_calculation-disclosure-size);padding:0;border:none;border-radius:var(--u-radius-xs);corner-shape:squircle;background:none;color:var(--u-color-text-muted)}button._disclosure_73wtl_107{box-sizing:border-box}button._disclosure_73wtl_107{cursor:pointer}button._disclosure_73wtl_107:hover,._line_73wtl_86[data-foldable]:hover button._disclosure_73wtl_107{box-sizing:border-box}button._disclosure_73wtl_107:hover,._line_73wtl_86[data-foldable]:hover button._disclosure_73wtl_107{background:var(--u-color-surface-sunken);color:var(--u-color-text)}button._disclosure_73wtl_107:active,._line_73wtl_86[data-foldable]:active button._disclosure_73wtl_107{box-sizing:border-box}button._disclosure_73wtl_107:active,._line_73wtl_86[data-foldable]:active button._disclosure_73wtl_107{background:var(--u-color-surface-pressed)}._item_73wtl_129[data-open]>._line_73wtl_86 button._disclosure_73wtl_107{box-sizing:border-box}._item_73wtl_129[data-open]>._line_73wtl_86 button._disclosure_73wtl_107{color:var(--u-color-accent)}button._disclosure_73wtl_107:focus-visible{box-sizing:border-box}button._disclosure_73wtl_107:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._disclosure_73wtl_107 svg{box-sizing:border-box}._disclosure_73wtl_107 svg{transition:transform var(--u-transition-path)}._disclosure_73wtl_107 svg[data-open]{box-sizing:border-box}._disclosure_73wtl_107 svg[data-open]{transform:rotate(90deg)}._names_73wtl_90{grid-column:2;min-width:0;overflow:hidden;padding-right:var(--u-space-4);white-space:nowrap;text-overflow:ellipsis;color:var(--u-color-text-secondary)}._operator_73wtl_90,._amount_73wtl_90,._unit_73wtl_90{font-family:var(--u-font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}._operator_73wtl_90{grid-column:3;padding-right:var(--u-space-3);text-align:right;color:var(--u-color-text-secondary)}._amount_73wtl_90{grid-column:var(--_calculation-column, 4);text-align:right;color:var(--u-color-text)}._amount_73wtl_90[data-verdict=unknown]{color:var(--u-color-text-secondary)}._approximate_73wtl_345{display:inline-block;margin-right:var(--u-space-1);color:var(--u-color-text-secondary);cursor:help}._unit_73wtl_90{grid-column:var(--_calculation-column, 5);padding-left:var(--u-space-1);padding-right:var(--u-space-3);color:var(--u-color-text-secondary)}._assessment_73wtl_98{grid-column:var(--_calculation-assessment-column, 6);display:flex;align-items:baseline;justify-content:flex-end;gap:var(--u-space-2);padding-right:var(--u-space-3);white-space:nowrap}._assessment_73wtl_98:empty{padding-right:0}._target_73wtl_102,._worst_73wtl_102{font-size:var(--u-text-xs);color:var(--u-color-text-secondary)}._worst_73wtl_102:before{content:"● "}._worst_73wtl_102[data-verdict=unknown]:before{color:var(--u-color-text-muted)}._worst_73wtl_102[data-verdict=warning]:before{color:var(--u-color-warning)}._worst_73wtl_102[data-verdict=alarm]:before{color:var(--u-color-danger-text)}._line_73wtl_86[data-inner]>._amount_73wtl_90{color:var(--u-color-text-secondary)}._line_73wtl_86[data-kind=interim] ._label_73wtl_90,._line_73wtl_86[data-kind=interim]>._amount_73wtl_90{font-weight:var(--u-weight-medium)}._line_73wtl_86[data-emphasis=strong] ._label_73wtl_90,._line_73wtl_86[data-emphasis=strong]>._amount_73wtl_90{font-weight:var(--u-weight-semibold);color:var(--u-color-text)}._line_73wtl_86[data-emphasis=muted] ._label_73wtl_90,._line_73wtl_86[data-emphasis=muted]>._amount_73wtl_90{color:var(--u-color-text-secondary)}._line_73wtl_86[data-inner][data-emphasis=muted] ._label_73wtl_90,._line_73wtl_86[data-inner][data-emphasis=muted]>._amount_73wtl_90{color:var(--u-color-text-muted)}._line_73wtl_86[data-rule],._derivation_73wtl_130 ._line_73wtl_86[data-rule]{border-top:1px solid var(--u-color-text-secondary)}._line_73wtl_86[data-kind=interim]:before{content:"";grid-row:1;grid-column:3 / var(--_calculation-figures-end, 6);align-self:start;border-top:1px solid var(--u-color-text-secondary);pointer-events:none}._line_73wtl_86[data-closing] ._label_73wtl_90{font-weight:var(--u-weight-medium);color:var(--u-color-text-secondary)}._line_73wtl_86[data-closing]:before{content:"";grid-row:1;grid-column:3 / var(--_calculation-figures-end, 6);align-self:start;border-top:1px solid var(--u-color-text-muted);pointer-events:none}._line_73wtl_86[data-kind=result]{border-top:1px solid var(--u-edge-color-strong)}._line_73wtl_86[data-kind=result]:not([data-mark]){background:var(--u-color-surface-sunken)}._line_73wtl_86[data-kind=result] ._label_73wtl_90{font-weight:var(--u-weight-semibold)}._line_73wtl_86[data-kind=result]>._amount_73wtl_90{font-size:var(--u-text-md);font-weight:var(--u-weight-semibold)}._line_73wtl_86[data-kind=result]>._amount_73wtl_90:not([data-verdict=unknown]){text-decoration-line:underline;text-decoration-style:double;text-underline-offset:5px}._amount_73wtl_90[data-later]{padding-left:var(--u-space-6)}._head_73wtl_497{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:end}._headCell_73wtl_504{grid-row:1;grid-column:var(--_calculation-column);display:flex;flex-direction:column;align-items:flex-end;padding:var(--_calculation-line-pad) 0 var(--u-space-1);font-size:var(--u-text-xs);font-weight:var(--u-weight-medium);color:var(--u-color-text-secondary);white-space:nowrap}._headUnit_73wtl_517{font-family:var(--u-font-mono);font-weight:var(--u-weight-regular)}._notes_73wtl_524{grid-row:2;grid-column:1 / 3;display:flex;flex-wrap:wrap;align-items:center;column-gap:var(--u-space-3);margin-top:calc(-1 * var(--_calculation-line-gap));padding:0 var(--u-space-4) var(--_calculation-line-pad) calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5) + var(--_calculation-disclosure-size) + var(--_calculation-disclosure-gap));font-size:var(--u-text-xs);color:var(--u-color-text-secondary)}._freshness_73wtl_538[data-freshness=stale]{color:var(--u-color-warning)}._freshness_73wtl_538[data-freshness=lost]{color:var(--u-color-danger-text);font-weight:var(--u-weight-medium)}@container (max-width: 34rem){._calculation_73wtl_51{grid-template-columns:minmax(0,1fr) 0 auto var(--_calculation-figure-tracks, auto auto) 0}._amount_73wtl_90[data-later]{padding-left:var(--u-space-2)}._frame_73wtl_24[data-metrics] ._unit_73wtl_90:not([data-last]){padding-right:var(--u-space-2)}._headCell_73wtl_504[data-unit] ._headLabel_73wtl_568,._names_73wtl_90{display:none}._labelCell_73wtl_90{padding-right:var(--u-space-3)}._assessment_73wtl_98:not(:empty){grid-area:2 / 1 / 3 / -1;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow:hidden;padding:0 var(--u-space-3) var(--_calculation-line-pad) calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5) + var(--_calculation-disclosure-size) + var(--_calculation-disclosure-gap));white-space:normal}._frame_73wtl_24[data-compact]:not([data-two-lines]) ._assessment_73wtl_98:not(:empty){padding-bottom:var(--_calculation-line-pad)}._frame_73wtl_24[data-compact]:not([data-two-lines]) ._assessment_73wtl_98:not(:empty)>:not(._target_73wtl_102,._worst_73wtl_102){margin-block:0}._notes_73wtl_524{grid-row:3;grid-column:1 / -1}}._frame_73wtl_24[data-two-lines] ._labelCell_73wtl_90{grid-column:1 / -1;padding-bottom:0}._frame_73wtl_24[data-two-lines] ._names_73wtl_90{display:none}._frame_73wtl_24[data-two-lines] ._line_73wtl_86>._operator_73wtl_90,._frame_73wtl_24[data-two-lines] ._line_73wtl_86>._amount_73wtl_90,._frame_73wtl_24[data-two-lines] ._line_73wtl_86>._unit_73wtl_90{grid-row:2;padding-top:var(--_calculation-line-gap)}._frame_73wtl_24[data-two-lines] ._line_73wtl_86[data-kind=interim]:before,._frame_73wtl_24[data-two-lines] ._line_73wtl_86[data-closing]:before{grid-row:2}._frame_73wtl_24[data-two-lines] ._assessment_73wtl_98:not(:empty){grid-area:3 / 1 / 4 / -1;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow:hidden;padding:0 var(--u-space-3) var(--_calculation-line-pad) calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5) + var(--_calculation-disclosure-size) + var(--_calculation-disclosure-gap));white-space:normal}._frame_73wtl_24[data-two-lines] ._notes_73wtl_524{grid-row:4;grid-column:1 / -1}@media(prefers-reduced-motion:reduce){._disclosure_73wtl_107 svg{transition:none}._derivation_73wtl_130:not([hidden]){animation:none}}@media(forced-colors:active){._line_73wtl_86[data-mark]{outline:1px solid Highlight;outline-offset:-1px}._line_73wtl_86[data-mark=use]{outline-width:2px;outline-offset:-2px}._derivation_73wtl_130:before{background:CanvasText}._line_73wtl_86[data-emphasis=muted] ._label_73wtl_90,._line_73wtl_86[data-emphasis=muted]>._amount_73wtl_90{color:GrayText}}}
|
|
1
|
+
@layer umriss.tokens,umriss.base,umriss.components;@layer umriss.base{._text_18806_22{font-family:var(--u-font-sans);font-size:var(--u-text-md);line-height:var(--u-leading-normal);color:var(--u-color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}@media(pointer:fine){._dense_18806_38{--u-control-height-sm: var(--u-control-height-xs)}}._ink_18806_49{--u-color-text: var(--u-color-bg);--u-color-text-secondary: color-mix(in srgb, var(--u-color-bg) 75%, transparent);--u-color-text-muted: color-mix(in srgb, var(--u-color-bg) 60%, transparent)}._extent_18806_75{--_chars: 20;--_extra: 0;--_tracking: 0px;--_chrome: 0px;min-inline-size:0;max-inline-size:100%;contain:inline-size;contain-intrinsic-inline-size:calc((var(--_chars) + var(--_extra)) * (1ch + var(--_tracking)) + var(--_chrome))}._field_18806_90{caret-color:var(--u-color-accent)}._scroll_18806_96{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--u-color-text) 25%,transparent) transparent}._scroll_18806_96::-webkit-scrollbar{width:10px;height:10px}._scroll_18806_96::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--u-color-text) 22%,transparent);border-radius:var(--u-radius-full);border:3px solid transparent;background-clip:content-box}._scroll_18806_96::-webkit-scrollbar-track{background:transparent}}@layer umriss.components{._ring_18806_125:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}@media(pointer:coarse){._field_18806_90._field_18806_90,._fieldRoot_18806_145._fieldRoot_18806_145{font-size:16px}}._field_18806_90:-webkit-autofill,._field_18806_90:-webkit-autofill:hover,._field_18806_90:-webkit-autofill:focus{-webkit-box-shadow:inset 0 0 0 1000px var(--u-color-surface),0 0 0 1px var(--u-edge-color-strong);-webkit-text-fill-color:var(--u-color-text);caret-color:var(--u-color-accent)}}@layer umriss.components{._frame_10pic_24,._frame_10pic_24:before,._frame_10pic_24:after{box-sizing:border-box}._calculation_10pic_51,._calculation_10pic_51:before,._calculation_10pic_51:after{box-sizing:border-box}._line_10pic_86,._line_10pic_86:before,._line_10pic_86:after{box-sizing:border-box}._assessment_10pic_98,._assessment_10pic_98:before,._assessment_10pic_98:after{box-sizing:border-box}._disclosure_10pic_107,._disclosure_10pic_107:before,._disclosure_10pic_107:after{box-sizing:border-box}._amount_10pic_90,._amount_10pic_90:before,._amount_10pic_90:after{box-sizing:border-box}._list_10pic_128,._list_10pic_128:before,._list_10pic_128:after{box-sizing:border-box}._item_10pic_129,._item_10pic_129:before,._item_10pic_129:after{box-sizing:border-box}._derivation_10pic_130,._derivation_10pic_130:before,._derivation_10pic_130:after{box-sizing:border-box}._labelCell_10pic_90,._labelCell_10pic_90:before,._labelCell_10pic_90:after{box-sizing:border-box}._names_10pic_90,._names_10pic_90:before,._names_10pic_90:after{box-sizing:border-box}._operator_10pic_90,._operator_10pic_90:before,._operator_10pic_90:after{box-sizing:border-box}._unit_10pic_90,._unit_10pic_90:before,._unit_10pic_90:after{box-sizing:border-box}._label_10pic_90,._label_10pic_90:before,._label_10pic_90:after{box-sizing:border-box}._approximate_10pic_360,._approximate_10pic_360:before,._approximate_10pic_360:after{box-sizing:border-box}._target_10pic_102,._target_10pic_102:before,._target_10pic_102:after{box-sizing:border-box}._worst_10pic_102,._worst_10pic_102:before,._worst_10pic_102:after{box-sizing:border-box}._head_10pic_512,._head_10pic_512:before,._head_10pic_512:after{box-sizing:border-box}._headCell_10pic_519,._headCell_10pic_519:before,._headCell_10pic_519:after{box-sizing:border-box}._headUnit_10pic_532,._headUnit_10pic_532:before,._headUnit_10pic_532:after{box-sizing:border-box}._notes_10pic_539,._notes_10pic_539:before,._notes_10pic_539:after{box-sizing:border-box}._freshness_10pic_553,._freshness_10pic_553:before,._freshness_10pic_553:after{box-sizing:border-box}._headLabel_10pic_583,._headLabel_10pic_583:before,._headLabel_10pic_583:after{box-sizing:border-box}._frame_10pic_24{font-size:var(--u-text-sm);border-radius:var(--u-radius-md);corner-shape:squircle;background:var(--u-color-surface);outline:1px solid transparent;box-shadow:var(--u-edge);overflow-x:auto;overflow-y:hidden;--_calculation-disclosure-size: 20px;--_calculation-disclosure-gap: var(--u-space-2);--_calculation-line-pad: var(--u-space-2);--_calculation-line-gap: var(--u-space-1);container-type:inline-size;width:100%}._calculation_10pic_51{display:grid;grid-template-columns:fit-content(22rem) minmax(0,1fr) auto var(--_calculation-figure-tracks, auto auto) auto;margin:0;padding:0;list-style:none}._frame_10pic_24[data-compact]{--_calculation-line-text: round(up, calc(var(--u-text-xs) * 1.63), 1px);--_calculation-line-pad: var(--u-space-1);--_calculation-line-gap: calc(var(--u-space-1) / 2);font-size:var(--u-text-xs);line-height:var(--_calculation-line-text)}@media(pointer:coarse){._frame_10pic_24[data-compact]{--_calculation-line-pad: var(--u-space-2);--_calculation-line-gap: var(--u-space-1)}}._frame_10pic_24[data-compact]:not([data-two-lines]) ._line_10pic_86{grid-template-rows:minmax(calc(var(--_calculation-line-text) + 2 * var(--_calculation-line-pad)),auto)}._frame_10pic_24[data-compact]:not([data-two-lines]) :is(._labelCell_10pic_90,._names_10pic_90,._operator_10pic_90,._amount_10pic_90,._unit_10pic_90){padding-bottom:calc(var(--_calculation-line-pad) - 1px)}._frame_10pic_24[data-compact]:not([data-two-lines]) ._assessment_10pic_98{padding-bottom:0}._frame_10pic_24[data-compact]:not([data-two-lines]) ._assessment_10pic_98>:not(._target_10pic_102,._worst_10pic_102){margin-block:-1px}._frame_10pic_24[data-compact] ._disclosure_10pic_107{margin-block:-1px}._frame_10pic_24[data-compact] ._line_10pic_86[data-kind=result]>._amount_10pic_90{font-size:var(--u-text-sm);text-underline-offset:3px}._frame_10pic_24[data-still]{--_calculation-disclosure-size: 0px;--_calculation-disclosure-gap: 0px}._frame_10pic_24[data-still] ._disclosure_10pic_107{display:none}._list_10pic_128,._item_10pic_129,._derivation_10pic_130{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;margin:0;padding:0;list-style:none}._derivation_10pic_130[hidden]{display:none}._derivation_10pic_130:not([hidden]){animation:_derivationIn_10pic_1 var(--u-duration-fast) var(--u-ease-out)}@keyframes _derivationIn_10pic_1{0%{opacity:0}}._item_10pic_129{--_calculation-fall: calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5) + var(--_calculation-disclosure-size) / 2 - 1px)}._derivation_10pic_130{position:relative}._derivation_10pic_130:before{content:"";position:absolute;top:0;bottom:0;left:var(--_calculation-fall);z-index:1;width:2px;background:var(--u-color-accent);pointer-events:none}:not(._derivation_10pic_130)>._item_10pic_129[data-open]>._line_10pic_86:not([data-mark]),:not(._derivation_10pic_130)>._item_10pic_129>._derivation_10pic_130{background-color:var(--u-color-surface-sunken)}._derivation_10pic_130 ._line_10pic_86{border-top-color:transparent}._line_10pic_86{position:relative;display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:baseline;border-top:1px solid var(--u-hairline)}._calculation_10pic_51>._item_10pic_129:first-child>._line_10pic_86:first-child,._calculation_10pic_51>._item_10pic_129:first-child>._list_10pic_128>._item_10pic_129:first-child>._line_10pic_86{border-top-color:transparent}._line_10pic_86[data-foldable]{cursor:pointer}._line_10pic_86[data-mark]{background:color-mix(in srgb,var(--u-color-accent-subtle) 50%,transparent)}._line_10pic_86[data-mark=use]{background:var(--u-color-accent-subtle)}._labelCell_10pic_90,._names_10pic_90,._operator_10pic_90,._amount_10pic_90,._unit_10pic_90,._assessment_10pic_98{grid-row:1;padding-top:var(--_calculation-line-pad);padding-bottom:var(--_calculation-line-pad)}._labelCell_10pic_90{grid-column:1;display:flex;align-items:baseline;gap:var(--_calculation-disclosure-gap);min-width:0;padding-left:calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5));padding-right:var(--u-space-5)}._label_10pic_90{min-width:0;color:var(--u-color-text)}._line_10pic_86[data-reference] ._label_10pic_90{font-style:italic;color:var(--u-color-text-secondary)}._disclosure_10pic_107{flex:none;align-self:center;display:inline-flex;align-items:center;justify-content:center;width:var(--_calculation-disclosure-size);height:var(--_calculation-disclosure-size);padding:0;border:none;border-radius:var(--u-radius-xs);corner-shape:squircle;background:none;color:var(--u-color-text-muted)}button._disclosure_10pic_107{box-sizing:border-box}button._disclosure_10pic_107{cursor:pointer}@media(pointer:coarse){button._disclosure_10pic_107{position:relative}button._disclosure_10pic_107:after{box-sizing:border-box}button._disclosure_10pic_107:after{content:"";position:absolute;inset:-2px}}button._disclosure_10pic_107:hover,._line_10pic_86[data-foldable]:hover button._disclosure_10pic_107{box-sizing:border-box}button._disclosure_10pic_107:hover,._line_10pic_86[data-foldable]:hover button._disclosure_10pic_107{background:var(--u-color-surface-sunken);color:var(--u-color-text)}button._disclosure_10pic_107:active,._line_10pic_86[data-foldable]:active button._disclosure_10pic_107{box-sizing:border-box}button._disclosure_10pic_107:active,._line_10pic_86[data-foldable]:active button._disclosure_10pic_107{background:var(--u-color-surface-pressed)}._item_10pic_129[data-open]>._line_10pic_86 button._disclosure_10pic_107{box-sizing:border-box}._item_10pic_129[data-open]>._line_10pic_86 button._disclosure_10pic_107{color:var(--u-color-accent)}button._disclosure_10pic_107:focus-visible{box-sizing:border-box}button._disclosure_10pic_107:focus-visible{outline:2px solid transparent;box-shadow:var(--u-focus-ring)}._disclosure_10pic_107 svg{box-sizing:border-box}._disclosure_10pic_107 svg{transition:transform var(--u-transition-path)}._disclosure_10pic_107 svg[data-open]{box-sizing:border-box}._disclosure_10pic_107 svg[data-open]{transform:rotate(90deg)}._names_10pic_90{grid-column:2;min-width:0;overflow:hidden;padding-right:var(--u-space-4);white-space:nowrap;text-overflow:ellipsis;color:var(--u-color-text-secondary)}._operator_10pic_90,._amount_10pic_90,._unit_10pic_90{font-family:var(--u-font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}._operator_10pic_90{grid-column:3;padding-right:var(--u-space-3);text-align:right;color:var(--u-color-text-secondary)}._amount_10pic_90{grid-column:var(--_calculation-column, 4);text-align:right;color:var(--u-color-text)}._amount_10pic_90[data-verdict=unknown]{color:var(--u-color-text-secondary)}._approximate_10pic_360{display:inline-block;margin-right:var(--u-space-1);color:var(--u-color-text-secondary);cursor:help}._unit_10pic_90{grid-column:var(--_calculation-column, 5);padding-left:var(--u-space-1);padding-right:var(--u-space-3);color:var(--u-color-text-secondary)}._assessment_10pic_98{grid-column:var(--_calculation-assessment-column, 6);display:flex;align-items:baseline;justify-content:flex-end;gap:var(--u-space-2);padding-right:var(--u-space-3);white-space:nowrap}._assessment_10pic_98:empty{padding-right:0}._target_10pic_102,._worst_10pic_102{font-size:var(--u-text-xs);color:var(--u-color-text-secondary)}._worst_10pic_102:before{content:"● "}._worst_10pic_102[data-verdict=unknown]:before{color:var(--u-color-text-muted)}._worst_10pic_102[data-verdict=warning]:before{color:var(--u-color-warning)}._worst_10pic_102[data-verdict=alarm]:before{color:var(--u-color-danger-text)}._line_10pic_86[data-inner]>._amount_10pic_90{color:var(--u-color-text-secondary)}._line_10pic_86[data-kind=interim] ._label_10pic_90,._line_10pic_86[data-kind=interim]>._amount_10pic_90{font-weight:var(--u-weight-medium)}._line_10pic_86[data-emphasis=strong] ._label_10pic_90,._line_10pic_86[data-emphasis=strong]>._amount_10pic_90{font-weight:var(--u-weight-semibold);color:var(--u-color-text)}._line_10pic_86[data-emphasis=muted] ._label_10pic_90,._line_10pic_86[data-emphasis=muted]>._amount_10pic_90{color:var(--u-color-text-secondary)}._line_10pic_86[data-inner][data-emphasis=muted] ._label_10pic_90,._line_10pic_86[data-inner][data-emphasis=muted]>._amount_10pic_90{color:var(--u-color-text-muted)}._line_10pic_86[data-rule],._derivation_10pic_130 ._line_10pic_86[data-rule]{border-top:1px solid var(--u-color-text-secondary)}._line_10pic_86[data-kind=interim]:before{content:"";grid-row:1;grid-column:3 / var(--_calculation-figures-end, 6);align-self:start;border-top:1px solid var(--u-color-text-secondary);pointer-events:none}._line_10pic_86[data-closing] ._label_10pic_90{font-weight:var(--u-weight-medium);color:var(--u-color-text-secondary)}._line_10pic_86[data-closing]:before{content:"";grid-row:1;grid-column:3 / var(--_calculation-figures-end, 6);align-self:start;border-top:1px solid var(--u-color-text-muted);pointer-events:none}._line_10pic_86[data-kind=result]{border-top:1px solid var(--u-edge-color-strong)}._line_10pic_86[data-kind=result]:not([data-mark]){background:var(--u-color-surface-sunken)}._line_10pic_86[data-kind=result] ._label_10pic_90{font-weight:var(--u-weight-semibold)}._line_10pic_86[data-kind=result]>._amount_10pic_90{font-size:var(--u-text-md);font-weight:var(--u-weight-semibold)}._line_10pic_86[data-kind=result]>._amount_10pic_90:not([data-verdict=unknown]){text-decoration-line:underline;text-decoration-style:double;text-underline-offset:5px}._amount_10pic_90[data-later]{padding-left:var(--u-space-6)}._head_10pic_512{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:end}._headCell_10pic_519{grid-row:1;grid-column:var(--_calculation-column);display:flex;flex-direction:column;align-items:flex-end;padding:var(--_calculation-line-pad) 0 var(--u-space-1);font-size:var(--u-text-xs);font-weight:var(--u-weight-medium);color:var(--u-color-text-secondary);white-space:nowrap}._headUnit_10pic_532{font-family:var(--u-font-mono);font-weight:var(--u-weight-regular)}._notes_10pic_539{grid-row:2;grid-column:1 / 3;display:flex;flex-wrap:wrap;align-items:center;column-gap:var(--u-space-3);margin-top:calc(-1 * var(--_calculation-line-gap));padding:0 var(--u-space-4) var(--_calculation-line-pad) calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5) + var(--_calculation-disclosure-size) + var(--_calculation-disclosure-gap));font-size:var(--u-text-xs);color:var(--u-color-text-secondary)}._freshness_10pic_553[data-freshness=stale]{color:var(--u-color-warning)}._freshness_10pic_553[data-freshness=lost]{color:var(--u-color-danger-text);font-weight:var(--u-weight-medium)}@container (max-width: 34rem){._calculation_10pic_51{grid-template-columns:minmax(0,1fr) 0 auto var(--_calculation-figure-tracks, auto auto) 0}._amount_10pic_90[data-later]{padding-left:var(--u-space-2)}._frame_10pic_24[data-metrics] ._unit_10pic_90:not([data-last]){padding-right:var(--u-space-2)}._headCell_10pic_519[data-unit] ._headLabel_10pic_583,._names_10pic_90{display:none}._labelCell_10pic_90{padding-right:var(--u-space-3)}._assessment_10pic_98:not(:empty){grid-area:2 / 1 / 3 / -1;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow:hidden;padding:0 var(--u-space-3) var(--_calculation-line-pad) calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5) + var(--_calculation-disclosure-size) + var(--_calculation-disclosure-gap));white-space:normal}._frame_10pic_24[data-compact]:not([data-two-lines]) ._assessment_10pic_98:not(:empty){padding-bottom:var(--_calculation-line-pad)}._frame_10pic_24[data-compact]:not([data-two-lines]) ._assessment_10pic_98:not(:empty)>:not(._target_10pic_102,._worst_10pic_102){margin-block:0}._notes_10pic_539{grid-row:3;grid-column:1 / -1}}._frame_10pic_24[data-two-lines] ._labelCell_10pic_90{grid-column:1 / -1;padding-bottom:0}._frame_10pic_24[data-two-lines] ._names_10pic_90{display:none}._frame_10pic_24[data-two-lines] ._line_10pic_86>._operator_10pic_90,._frame_10pic_24[data-two-lines] ._line_10pic_86>._amount_10pic_90,._frame_10pic_24[data-two-lines] ._line_10pic_86>._unit_10pic_90{grid-row:2;padding-top:var(--_calculation-line-gap)}._frame_10pic_24[data-two-lines] ._line_10pic_86[data-kind=interim]:before,._frame_10pic_24[data-two-lines] ._line_10pic_86[data-closing]:before{grid-row:2}._frame_10pic_24[data-two-lines] ._assessment_10pic_98:not(:empty){grid-area:3 / 1 / 4 / -1;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow:hidden;padding:0 var(--u-space-3) var(--_calculation-line-pad) calc(var(--u-space-3) + var(--_calculation-depth, 0) * var(--u-space-5) + var(--_calculation-disclosure-size) + var(--_calculation-disclosure-gap));white-space:normal}._frame_10pic_24[data-two-lines] ._notes_10pic_539{grid-row:4;grid-column:1 / -1}@media(prefers-reduced-motion:reduce){._disclosure_10pic_107 svg{transition:none}._derivation_10pic_130:not([hidden]){animation:none}}@media(forced-colors:active){._line_10pic_86[data-mark]{outline:1px solid Highlight;outline-offset:-1px}._line_10pic_86[data-mark=use]{outline-width:2px;outline-offset:-2px}._derivation_10pic_130:before{background:CanvasText}._line_10pic_86[data-emphasis=muted] ._label_10pic_90,._line_10pic_86[data-emphasis=muted]>._amount_10pic_90{color:GrayText}}}
|