kss-modern 0.0.20 → 0.0.21

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.
@@ -0,0 +1 @@
1
+ import "./main-DJu5Mg_E.js";
@@ -0,0 +1,104 @@
1
+ class c {
2
+ modifier;
3
+ placeholder;
4
+ constructor(e) {
5
+ this.modifier = e.modifier, this.placeholder = e.placeholder || "{{modifier_class}}";
6
+ }
7
+ initialize(e = document) {
8
+ this.modifier && this.replaceInDocument(e);
9
+ }
10
+ static fromIframe(e = document) {
11
+ if (!window.frameElement)
12
+ throw new Error("ModifierReplacer can only be initialized from an iframe context.");
13
+ const i = window.frameElement.getAttribute("data-modifier");
14
+ if (!i)
15
+ return null;
16
+ const t = i.split(".").filter((r) => r.length > 0).join(" "), n = new c({ modifier: t });
17
+ return n.initialize(e), n;
18
+ }
19
+ static fromUrl(e = document) {
20
+ const t = new URLSearchParams(window.location.search).get("modifier");
21
+ if (!t)
22
+ return null;
23
+ const n = t.split(".").filter((o) => o.length > 0).join(" "), r = new c({ modifier: n });
24
+ return r.initialize(e), r;
25
+ }
26
+ replaceAll(e) {
27
+ const i = encodeURIComponent(JSON.stringify(this.placeholder)), t = JSON.stringify({ modifierClass: this.placeholder }), n = encodeURIComponent(t);
28
+ return e.replace(new RegExp(this.escapeRegExp(this.placeholder), "g"), this.modifier).replace(new RegExp(this.escapeRegExp(i), "g"), this.modifier).replace(new RegExp(this.escapeRegExp(n), "g"), this.modifier);
29
+ }
30
+ escapeRegExp(e) {
31
+ return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
32
+ }
33
+ replaceInDocument(e) {
34
+ const i = e.createTreeWalker(
35
+ e.body,
36
+ NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT,
37
+ {
38
+ acceptNode: () => NodeFilter.FILTER_ACCEPT
39
+ }
40
+ );
41
+ for (; i.nextNode(); ) {
42
+ const t = i.currentNode;
43
+ t.nodeType === Node.TEXT_NODE ? this.replaceInTextNode(t) : t.nodeType === Node.ELEMENT_NODE && this.replaceInElementAttributes(t);
44
+ }
45
+ }
46
+ replaceInTextNode(e) {
47
+ if (e.textContent) {
48
+ const i = e.textContent, t = this.replaceAll(i);
49
+ i !== t && (e.textContent = t);
50
+ }
51
+ }
52
+ replaceInElementAttributes(e) {
53
+ Array.from(e.attributes).forEach((i) => {
54
+ const t = i.value, n = this.replaceAll(t);
55
+ t !== n && (i.value = n);
56
+ });
57
+ }
58
+ }
59
+ window.frameElement ? (window.frameElement.getAttribute("data-preview") === "true" && document.documentElement.classList.add("styleguide-preview"), window.frameElement.hasAttribute("data-modifier") && c.fromIframe(), window.runAccessibilityTest = async () => {
60
+ const u = async () => {
61
+ const { default: r } = await import("./axe-B2M3jwef.js").then((s) => s.a), o = await r.run("body").catch(console.error);
62
+ if (!o)
63
+ throw new Error("No results from html-validate");
64
+ const d = /* @__PURE__ */ new Map(), l = (s) => {
65
+ s.forEach((m) => {
66
+ m.nodes.forEach((f) => {
67
+ f.target.forEach((a) => {
68
+ const p = r.utils.shadowSelect(a);
69
+ if (!p)
70
+ throw new Error(`Could not find element for selector: ${a}`);
71
+ d.set(a, p);
72
+ });
73
+ });
74
+ });
75
+ };
76
+ return l(o.violations), l(o.inapplicable), l(o.passes), l(o.incomplete), {
77
+ result: o,
78
+ targetMap: d
79
+ };
80
+ }, e = async () => {
81
+ const { HtmlValidate: r, StaticConfigLoader: o } = await import("./browser-ImNvK64W.js"), d = new o(), l = new r(d), s = document.documentElement.outerHTML, { results: m } = await l.validateString(s, {
82
+ rules: {
83
+ "no-trailing-whitespace": "off",
84
+ "no-inline-style": "off"
85
+ }
86
+ }), f = m.map((a) => a.messages).flat();
87
+ return await Promise.all(f.map(async (a) => {
88
+ const w = (await l.getContextualDocumentation(a))?.description;
89
+ return {
90
+ ...a,
91
+ ruleDescription: w
92
+ };
93
+ }));
94
+ }, [i, t] = await Promise.all([
95
+ u(),
96
+ e()
97
+ ]), n = new CustomEvent("accessibility-result", {
98
+ detail: {
99
+ axe: i,
100
+ htmlValidate: t
101
+ }
102
+ });
103
+ window.frameElement?.dispatchEvent(n);
104
+ }) : new URLSearchParams(window.location.search).get("modifier") && c.fromUrl();
@@ -0,0 +1,171 @@
1
+ import { b as $, a as p } from "./main-DJu5Mg_E.js";
2
+ function C(n, i, e) {
3
+ var t = e || {}, a = t.noTrailing, s = a === void 0 ? !1 : a, r = t.noLeading, u = r === void 0 ? !1 : r, c = t.debounceMode, m = c === void 0 ? void 0 : c, d, b = !1, w = 0;
4
+ function E() {
5
+ d && clearTimeout(d);
6
+ }
7
+ function M(h) {
8
+ var g = h || {}, o = g.upcomingOnly, T = o === void 0 ? !1 : o;
9
+ E(), b = !T;
10
+ }
11
+ function R() {
12
+ for (var h = arguments.length, g = new Array(h), o = 0; o < h; o++)
13
+ g[o] = arguments[o];
14
+ var T = this, A = Date.now() - w;
15
+ if (b)
16
+ return;
17
+ function v() {
18
+ w = Date.now(), i.apply(T, g);
19
+ }
20
+ function I() {
21
+ d = void 0;
22
+ }
23
+ !u && m && !d && v(), E(), m === void 0 && A > n ? u ? (w = Date.now(), s || (d = setTimeout(m ? I : v, n))) : v() : s !== !0 && (d = setTimeout(m ? I : v, m === void 0 ? n - A : n));
24
+ }
25
+ return R.cancel = M, R;
26
+ }
27
+ function D(n, i, e) {
28
+ var t = e || {}, a = t.atBegin, s = a === void 0 ? !1 : a;
29
+ return C(n, i, {
30
+ debounceMode: s !== !1
31
+ });
32
+ }
33
+ function B(...n) {
34
+ return D(...n);
35
+ }
36
+ class _ {
37
+ callback;
38
+ interval;
39
+ isRunning;
40
+ timeoutId;
41
+ remaining;
42
+ startTime;
43
+ /**
44
+ * Creates a new PausableInterval instance
45
+ * @param callback The function to call on each interval
46
+ * @param interval The interval duration in milliseconds
47
+ */
48
+ constructor(i, e) {
49
+ this.callback = i, this.interval = e, this.isRunning = !1, this.timeoutId = null, this.remaining = e, this.startTime = null;
50
+ }
51
+ /**
52
+ * Start the interval timer
53
+ */
54
+ start() {
55
+ this.isRunning || (this.isRunning = !0, this.startTime = Date.now(), this.timeoutId = window.setTimeout(() => {
56
+ this.callback(), this.remaining = this.interval, this.isRunning && this.start();
57
+ }, this.remaining));
58
+ }
59
+ /**
60
+ * Pause the interval timer
61
+ */
62
+ pause() {
63
+ !this.isRunning || this.timeoutId === null || this.startTime === null || (this.isRunning = !1, window.clearTimeout(this.timeoutId), this.remaining -= Date.now() - this.startTime, this.remaining < 0 && (this.remaining = 0));
64
+ }
65
+ /**
66
+ * Resume the interval timer
67
+ */
68
+ resume() {
69
+ this.start();
70
+ }
71
+ /**
72
+ * Stop and reset the interval timer
73
+ */
74
+ stop() {
75
+ this.isRunning = !1, this.timeoutId !== null && (window.clearTimeout(this.timeoutId), this.timeoutId = null), this.remaining = this.interval;
76
+ }
77
+ /**
78
+ * Check if the interval is currently running
79
+ * @returns True if the interval is running, false otherwise
80
+ */
81
+ isActive() {
82
+ return this.isRunning;
83
+ }
84
+ /**
85
+ * Change the interval duration
86
+ * @param newInterval The new interval duration in milliseconds
87
+ */
88
+ setInterval(i) {
89
+ const e = this.isRunning;
90
+ e && this.pause(), this.interval = i, this.remaining = i, e && this.resume();
91
+ }
92
+ }
93
+ const y = 3e3, O = document.querySelector("#alerts");
94
+ if (!O)
95
+ throw new Error("Alert container not found");
96
+ const l = [], f = $(!1);
97
+ f.effect(B(50, () => {
98
+ l.toReversed().forEach(({ element: n, interval: i }, e) => {
99
+ f.value ? (i.setInterval(y - e * 250), i.pause()) : i.resume();
100
+ const t = 1 - e * 0.1, a = e === 0 ? 0 : -10 * e, s = l.slice(0, e), r = 5;
101
+ p(n, {
102
+ y: f.value ? s.reduce((u, { element: c }) => u + c.offsetHeight + r, 0) * -1 : a,
103
+ scale: f.value ? 1 : t
104
+ }, {
105
+ ease: "easeOut",
106
+ duration: 0.3
107
+ });
108
+ });
109
+ }));
110
+ function L(n, i) {
111
+ const e = l.length - 1, t = l.shift();
112
+ if (!t)
113
+ throw new Error("First alert not found");
114
+ t.interval.stop();
115
+ let a = -10 * (e + 1), s = e === 1 ? 1 : 1 - e * 0.1;
116
+ i && (a += 10, s -= 0.1), p(t.element, {
117
+ y: n === "top" ? a : "50%",
118
+ scale: s,
119
+ opacity: 0
120
+ }, {
121
+ duration: n === "top" ? 0.2 : 0.3,
122
+ ease: "easeOut"
123
+ }).then(() => {
124
+ t.element.remove();
125
+ });
126
+ }
127
+ function x(n, i) {
128
+ l.length === 3 && L("top", !0);
129
+ const e = document.createElement("div");
130
+ e.setAttribute("role", "alert"), e.classList.add("c-toast", "z-50"), e.style.opacity = "0%";
131
+ const t = document.createElement("span");
132
+ t.textContent = n, e.append(t);
133
+ {
134
+ const s = document.createElement("div");
135
+ s.innerHTML = i, e.prepend(s);
136
+ }
137
+ e.addEventListener("mouseenter", () => f.value = !0), e.addEventListener("mouseleave", () => f.value = !1), O?.append(e), p(e, {
138
+ y: ["100%", 0],
139
+ scale: 1,
140
+ opacity: 1
141
+ }, {
142
+ ease: "easeOut",
143
+ duration: 0.3
144
+ }), l.toReversed().forEach(({ element: s }, r) => {
145
+ const u = 1 - (r + 1) * 0.1, c = -10 * (r + 1);
146
+ p(s, {
147
+ y: c,
148
+ scale: u
149
+ }, { ease: "easeOut", duration: 0.3 });
150
+ });
151
+ const a = new _(() => L("bottom", !1), y);
152
+ l.push({ element: e, interval: a }), a.start();
153
+ }
154
+ const U = (n, i) => {
155
+ n.forEach((e) => {
156
+ let t = e.getAttribute(i);
157
+ if (!t)
158
+ return;
159
+ e.getAttribute("data-clipboard-uri-encoded") === "true" && (t = decodeURIComponent(t)), e.addEventListener("click", async () => {
160
+ await navigator.clipboard.writeText(t).catch(console.error);
161
+ const s = e.getAttribute("data-clipboard-alert-message");
162
+ x(
163
+ s ?? "Copied to clipboard!",
164
+ '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" class="size-4"><path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3.844-8.791a.75.75 0 0 0-1.188-.918l-3.7 4.79-1.649-1.833a.75.75 0 1 0-1.114 1.004l2.25 2.5a.75.75 0 0 0 1.15-.043l4.25-5.5Z" clip-rule="evenodd" /></svg>'
165
+ );
166
+ });
167
+ });
168
+ };
169
+ export {
170
+ U as default
171
+ };
@@ -0,0 +1,229 @@
1
+ import { h as H } from "./main-DJu5Mg_E.js";
2
+ const m = (c, d) => c ? d() : "";
3
+ function y(c, d) {
4
+ return c.map((x, h) => d(x, h)).join("");
5
+ }
6
+ const $ = {
7
+ header: [
8
+ "background: #ff5757",
9
+ "color: white",
10
+ "padding: 8px 12px",
11
+ "border-radius: 4px 4px 0 0",
12
+ "font-weight: bold",
13
+ "font-size: 14px"
14
+ ].join(";"),
15
+ elementStyle: [
16
+ "color: #d32f2f",
17
+ "font-weight: bold",
18
+ "font-family: monospace"
19
+ ].join(";"),
20
+ messageStyle: [
21
+ "color: #333",
22
+ "font-style: italic"
23
+ ].join(";")
24
+ };
25
+ function T(c, d) {
26
+ console.group("%cValidation Error", $.header), console.info(
27
+ "%c%o",
28
+ $.elementStyle,
29
+ d
30
+ ), console.info(
31
+ "%c%s",
32
+ $.messageStyle,
33
+ c
34
+ ), console.groupEnd();
35
+ }
36
+ async function U(c, d, x) {
37
+ const h = c.getAttribute("data-code-audit-iframe");
38
+ if (!h)
39
+ throw new Error("No code audit template selector provided");
40
+ const a = document.querySelector(`#${h}`);
41
+ if (!a)
42
+ throw new Error("Code audit template not found");
43
+ if (!a.contentWindow)
44
+ throw new Error("Code audit iframe has no content window");
45
+ const f = d.querySelector(".audit-results");
46
+ if (!f)
47
+ throw new Error("No audit results list found");
48
+ const p = await new Promise((e, n) => {
49
+ const i = setTimeout(() => {
50
+ n(new Error("Accessibility audit timed out"));
51
+ }, 3e4), o = (v) => {
52
+ const b = v;
53
+ clearTimeout(i), a.removeEventListener("accessibility-result", o), e(b.detail);
54
+ };
55
+ a.addEventListener("accessibility-result", o);
56
+ const r = a.contentWindow;
57
+ r.runAccessibilityTest ? r.runAccessibilityTest() : (clearTimeout(i), a.removeEventListener("accessibility-result", o), n(new Error("runAxe function not found in iframe")));
58
+ }), l = {
59
+ violations: [],
60
+ incomplete: [],
61
+ passes: [],
62
+ inapplicable: []
63
+ }, g = (e, n) => {
64
+ const i = n.map((o) => ({
65
+ id: o.id,
66
+ description: o.description,
67
+ helpUrl: o.helpUrl,
68
+ impact: o.impact,
69
+ nodes: o.nodes.map((r) => ({
70
+ type: "axe",
71
+ html: r.html || "",
72
+ target: r.target
73
+ }))
74
+ }));
75
+ l[e].push(...i);
76
+ };
77
+ g("violations", p.axe.result.violations), g("incomplete", p.axe.result.incomplete), g("passes", p.axe.result.passes), g("inapplicable", p.axe.result.inapplicable);
78
+ function E(e, n) {
79
+ switch (n) {
80
+ case "off":
81
+ case "0":
82
+ return "minor";
83
+ case "warn":
84
+ case "1":
85
+ return "moderate";
86
+ case "error":
87
+ case "2":
88
+ return "serious";
89
+ default:
90
+ throw new Error(`Invalid severity "${n}" for rule "${e}"`);
91
+ }
92
+ }
93
+ p.htmlValidate.forEach((e) => {
94
+ l.violations.push({
95
+ id: e.ruleId,
96
+ description: e.ruleDescription || e.message,
97
+ helpUrl: e.ruleUrl || "",
98
+ impact: E(e.ruleId, e.severity.toString()),
99
+ nodes: [{
100
+ type: "htmlvalidate",
101
+ selector: e.selector
102
+ }]
103
+ });
104
+ });
105
+ const A = p.axe.targetMap, w = (e, n, i) => {
106
+ const o = e.charAt(0).toUpperCase() + e.slice(1), r = ["critical", "serious", "moderate", "minor"], v = i.toSorted((t, s) => {
107
+ const u = r.indexOf(t.impact || "minor"), L = r.indexOf(s.impact || "minor");
108
+ return u - L;
109
+ }), b = (t) => {
110
+ const s = t.target.map((u) => A.get(u)).filter(Boolean);
111
+ if (s.length === 0)
112
+ throw new Error(`No elements found for axe-core target: ${t.target}`);
113
+ return `
114
+ ${y(s, (u) => `
115
+ <div
116
+ class="overflow-x-auto w-full code-highlight"
117
+ data-source-code="${encodeURIComponent(u.outerHTML)}"
118
+ data-source-lang="html"
119
+ ></div>
120
+ `)}
121
+ `;
122
+ }, C = (t) => {
123
+ const s = a.contentWindow?.document.querySelector(t.selector);
124
+ if (!s)
125
+ throw new Error(`Element not found for selector: ${t.selector}`);
126
+ return `
127
+ <div
128
+ class="overflow-x-auto w-full code-highlight"
129
+ data-source-code="${encodeURIComponent(s.outerHTML)}"
130
+ data-source-lang="html"
131
+ ></div>
132
+ `;
133
+ };
134
+ return `
135
+ ${m(v.length > 0, () => `
136
+ <li>
137
+ <details${["violations", "incomplete"].includes(e) ? " open" : ""}>
138
+ <summary class="cursor-pointer">
139
+ <h3 class="px-6 py-4 text-sm font-semibold leading-[1]">
140
+ <span class="mr-2" aria-hidden="true">${n}</span>
141
+ <span class="text-styleguide-highlight">${o}:</span>
142
+ <span class="ml-2">(${i.length})</span>
143
+ </h3>
144
+ </summary>
145
+
146
+ <div class="px-6 pb-6 text-sm code-audit-container">
147
+ <ol>
148
+ ${y(v, (t) => `
149
+ <li class="ml-6 border-b border-styleguide-border">
150
+ <details class="group">
151
+ <summary class="flex cursor-pointer group-open:text-styleguide-highlight justify-between items-center py-4 text-sm gap-2 transition">
152
+ <span>
153
+ <span class="font-semibold">${t.id}</span>
154
+ ${m(t.impact && ["violations", "incomplete"].includes(e), () => `<span>${t.impact}</span>`)}
155
+ </span>
156
+
157
+ <svg class="h-4 w-4 group-open:rotate-90 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
158
+ <path fill-rule="evenodd" d="M6.22 4.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.75.75 0 0 1-1.06-1.06L8.94 8 6.22 5.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"></path>
159
+ </svg>
160
+ </summary>
161
+
162
+ <div class="pt-2 pb-6 text-sm code-audit-container">
163
+ <p class="mb-3">
164
+ ${t.description.replace(/`([^`]*)`/g, "<code>$1</code>")}
165
+ </p>
166
+
167
+ <p class="mb-3 pb-3 border-b border-styleguide-border">
168
+ <a
169
+ class="flex gap-1 group/link items-center text-sm text-blue-600"
170
+ href="${t.helpUrl}"
171
+ target="_blank"
172
+ >
173
+ Learn more about the rule
174
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" class="h-3 w-3">
175
+ <path class="transition group-hover/link:translate-x-px group-hover/link:-translate-y-px group-focus/link:translate-x-px group-focus/link:-translate-y-px" d="M6.22 8.72a.75.75 0 0 0 1.06 1.06l5.22-5.22v1.69a.75.75 0 0 0 1.5 0v-3.5a.75.75 0 0 0-.75-.75h-3.5a.75.75 0 0 0 0 1.5h1.69L6.22 8.72Z"></path>
176
+ <path d="M3.5 6.75c0-.69.56-1.25 1.25-1.25H7A.75.75 0 0 0 7 4H4.75A2.75 2.75 0 0 0 2 6.75v4.5A2.75 2.75 0 0 0 4.75 14h4.5A2.75 2.75 0 0 0 12 11.25V9a.75.75 0 0 0-1.5 0v2.25c0 .69-.56 1.25-1.25 1.25h-4.5c-.69 0-1.25-.56-1.25-1.25v-4.5Z"></path>
177
+ </svg>
178
+ </a>
179
+ </p>
180
+
181
+ ${m(["violations", "incomplete"].includes(e) && t.nodes.length > 0, () => `
182
+ <h3 class="font-semibold mb-2">Affected nodes (${t.nodes.length}):</h3>
183
+
184
+ <ol class="!pl-0 !list-none">
185
+ ${y(t.nodes, (s) => `
186
+ <li class="mb-4 last:mb-0">
187
+ ${m(s.type === "axe", () => `${b(s)}`)}
188
+ ${m(s.type === "htmlvalidate", () => `${C(s)}`)}
189
+ </li>
190
+ `)}
191
+ </ol>
192
+ `)}
193
+ </div>
194
+ </details>
195
+ </li>
196
+ `)}
197
+ </ol>
198
+ </div>
199
+ </details>
200
+ </li>
201
+ `)}
202
+ `;
203
+ }, S = l.violations.length > 0 ? "🔴" : "🟢", I = l.incomplete.length > 0 ? "🟠" : "🟢";
204
+ f.innerHTML = `
205
+ ${w("violations", S, l.violations)}
206
+ ${w("incomplete", I, l.incomplete)}
207
+ ${w("passes", "🟢", l.passes)}
208
+ ${w("inapplicable", "⚪", l.inapplicable)}
209
+ `, f.querySelectorAll("[data-source-code]").forEach((e) => H(e)), f.querySelectorAll("[data-iframe-selector]").forEach((e) => {
210
+ const n = e.getAttribute("data-iframe-selector");
211
+ if (!n)
212
+ throw new Error("No message found");
213
+ e.addEventListener("click", async () => {
214
+ await x();
215
+ const i = e.textContent;
216
+ if (!i)
217
+ throw new Error("No selector found");
218
+ const o = a.contentDocument?.querySelectorAll(i);
219
+ if (!o)
220
+ throw new Error("No elements found");
221
+ o.forEach((r) => {
222
+ T(n, r), r.style.outline = "2px solid red", r.scrollIntoView({ behavior: "smooth", block: "center" }), setTimeout(() => r.style.outline = "", 5e3);
223
+ });
224
+ });
225
+ });
226
+ }
227
+ export {
228
+ U as auditCode
229
+ };
@@ -1,4 +1,4 @@
1
- import { a as i, s as l } from "./main-DysniEvV.js";
1
+ import { a as i, s as l } from "./main-DJu5Mg_E.js";
2
2
  const p = (o, s, a) => {
3
3
  o.addEventListener("input", () => {
4
4
  const t = o.value.toLowerCase();
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-light:300;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--radius-md:.375rem;--radius-lg:.5rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0,0,.2,1);--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Geist Sans;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:Geist Mono;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0\.5{inset-block:calc(var(--spacing)*.5)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-8{top:calc(var(--spacing)*8)}.bottom-0{bottom:calc(var(--spacing)*0)}.-left-6{left:calc(var(--spacing)*-6)}.left-0{left:calc(var(--spacing)*0)}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.z-100{z-index:100}.order-1{order:1}.order-2{order:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-0{margin-inline:calc(var(--spacing)*0)}.mx-auto{margin-inline:auto}.my-6{margin-block:calc(var(--spacing)*6)}.-mt-0\.5{margin-top:calc(var(--spacing)*-.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.-mr-2{margin-right:calc(var(--spacing)*-2)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-4{margin-right:calc(var(--spacing)*4)}.-mb-px{margin-bottom:-1px}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-6{margin-left:calc(var(--spacing)*6)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-video{aspect-ratio:var(--aspect-video)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-\[18px\]{width:18px;height:18px}.size-full{width:100%;height:100%}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-\[28px\]{height:28px}.h-full{height:100%}.max-h-\[400px\]{max-height:400px}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-\[260px\]{width:260px}.w-full{width:100%}.max-w-\[65ch\]{max-width:65ch}.max-w-\[1600px\]{max-width:1600px}.max-w-none{max-width:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-copy{cursor:copy}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-mt-\[50px\]{scroll-margin-top:50px}.\!list-none{list-style-type:none!important}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-b-2xl{border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-blue-200{border-color:var(--color-blue-200)}.border-red-200{border-color:var(--color-red-200)}.border-styleguide-border{border-color:var(--styleguide-color-border)}.border-transparent{border-color:#0000}.border-yellow-300{border-color:var(--color-yellow-300)}.border-b-styleguide-border{border-bottom-color:var(--styleguide-color-border)}.bg-\[rgb\(242\,242\,242\)\]{background-color:#f2f2f2}.bg-blue-100{background-color:var(--color-blue-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-styleguide-bg{background-color:var(--styleguide-color-background)}.bg-styleguide-bg-highlight{background-color:var(--styleguide-color-background-highlight)}.bg-transparent{background-color:#0000}.bg-yellow-50{background-color:var(--color-yellow-50)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-\[4px\]{padding-top:4px}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-6{padding-right:calc(var(--spacing)*6)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-\[3px\]{padding-bottom:3px}.\!pl-0{padding-left:calc(var(--spacing)*0)!important}.pl-6{padding-left:calc(var(--spacing)*6)}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:Geist Mono}.\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-\[10px\]{font-size:10px}.text-\[12px\]{font-size:12px}.text-\[18px\]{font-size:18px}.leading-\[1\]{--tw-leading:1;line-height:1}.leading-\[10px\]{--tw-leading:10px;line-height:10px}.leading-\[12px\]{--tw-leading:12px;line-height:12px}.leading-none{--tw-leading:1;line-height:1}.\!font-bold{--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-all{word-break:break-all}.hyphens-auto{-webkit-hyphens:auto;hyphens:auto}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-styleguide{color:var(--styleguide-color-regular)}.text-styleguide-highlight{color:var(--styleguide-color-highlight)}.text-styleguide-theme-highlight{color:var(--styleguide-color-theme-highlight)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-800{color:var(--color-yellow-800)}.italic{font-style:italic}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.saturate-0{--tw-saturate:saturate(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.group-open\:block:is(:where(.group):is([open],:popover-open,:open) *){display:block}.group-open\:hidden:is(:where(.group):is([open],:popover-open,:open) *){display:none}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}.group-open\:text-styleguide-highlight:is(:where(.group):is([open],:popover-open,:open) *){color:var(--styleguide-color-highlight)}@media (hover:hover){.group-hover\:-translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-px:is(:where(.group):hover *){--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:-translate-y-px:is(:where(.group):hover *){--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/externallink\:translate-x-px:is(:where(.group\/externallink):hover *){--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/externallink\:-translate-y-px:is(:where(.group\/externallink):hover *){--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/figma\:saturate-100:is(:where(.group\/figma):hover *){--tw-saturate:saturate(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.group-hover\/link\:translate-x-px:is(:where(.group\/link):hover *){--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/link\:-translate-y-px:is(:where(.group\/link):hover *){--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/phpstorm\:saturate-100:is(:where(.group\/phpstorm):hover *),.group-hover\/vscode\:saturate-100:is(:where(.group\/vscode):hover *){--tw-saturate:saturate(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.group-focus\:-translate-x-0\.5:is(:where(.group):focus *){--tw-translate-x:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-focus\:translate-x-0\.5:is(:where(.group):focus *){--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-focus\:translate-x-px:is(:where(.group):focus *){--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-focus\:-translate-y-px:is(:where(.group):focus *){--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-focus\:opacity-100:is(:where(.group):focus *){opacity:1}.group-focus\/externallink\:translate-x-px:is(:where(.group\/externallink):focus *),.group-focus\/link\:translate-x-px:is(:where(.group\/link):focus *){--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-focus\/link\:-translate-y-px:is(:where(.group\/link):focus *){--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.peer-checked\:saturate-100:is(:where(.peer):checked~*){--tw-saturate:saturate(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop\:hidden::backdrop{display:none}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-x-0:after{content:var(--tw-content);inset-inline:calc(var(--spacing)*0)}.after\:bottom-0:after{content:var(--tw-content);bottom:calc(var(--spacing)*0)}.after\:h-\[120px\]:after{content:var(--tw-content);height:120px}.after\:bg-gradient-to-t:after{content:var(--tw-content);--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.after\:from-styleguide-bg:after{content:var(--tw-content);--tw-gradient-from:var(--styleguide-color-background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.after\:to-transparent:after{content:var(--tw-content);--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}@media (hover:hover){.hover\:border-styleguide-border:hover{border-color:var(--styleguide-color-border)}.hover\:bg-\[rgb\(242\,242\,242\)\]:hover{background-color:#f2f2f2}.hover\:text-styleguide-highlight:hover{color:var(--styleguide-color-highlight)}}.focus\:border-styleguide-border:focus{border-color:var(--styleguide-color-border)}.focus\:bg-\[rgb\(242\,242\,242\)\]:focus{background-color:#f2f2f2}.focus\:text-styleguide-highlight:focus{color:var(--styleguide-color-highlight)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.active\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.active\:scale-\[0\.96\]:active{scale:.96}.aria-selected\:text-styleguide-highlight[aria-selected=true]{color:var(--styleguide-color-highlight)}@media (min-width:1220px){.min-\[1220px\]\:mx-auto{margin-inline:auto}}@media (min-width:1222px){.min-\[1222px\]\:border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}}@media (min-width:48rem){.md\:not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.md\:top-12{top:calc(var(--spacing)*12)}.md\:bottom-auto{bottom:auto}.md\:left-1\/2{left:50%}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:inline-block{display:inline-block}.md\:inline-flex{display:inline-flex}.md\:h-auto{height:auto}.md\:max-h-\[85dvh\]{max-height:85dvh}.md\:min-h-\[250px\]{min-height:250px}.md\:w-\[calc\(100\%-260px\)\]{width:calc(100% - 260px)}.md\:max-w-\[720px\]{max-width:720px}.md\:min-w-\[150px\]{min-width:150px}.md\:-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:justify-between{justify-content:space-between}.md\:gap-x-10{column-gap:calc(var(--spacing)*10)}.md\:gap-y-14{row-gap:calc(var(--spacing)*14)}.md\:rounded-2xl{border-radius:var(--radius-2xl)}.md\:rounded-md{border-radius:var(--radius-md)}.md\:px-2{padding-inline:calc(var(--spacing)*2)}.md\:px-10{padding-inline:calc(var(--spacing)*10)}.md\:py-1\.5{padding-block:calc(var(--spacing)*1.5)}}@media (min-width:64rem){.lg\:top-24{top:calc(var(--spacing)*24)}}@media (min-width:80rem){.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@container (min-width:28rem){.\@md\:inline-flex{display:inline-flex}}@container (min-width:32rem){.\@lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@container (min-width:36rem){.\@xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (min-width:42rem){.\@2xl\:inline-block{display:inline-block}}.dark\:border-blue-900\/40:is(.theme-dark *){border-color:#1c398e66}@supports (color:color-mix(in lab,red,red)){.dark\:border-blue-900\/40:is(.theme-dark *){border-color:color-mix(in oklab,var(--color-blue-900)40%,transparent)}}.dark\:border-red-900\/40:is(.theme-dark *){border-color:#82181a66}@supports (color:color-mix(in lab,red,red)){.dark\:border-red-900\/40:is(.theme-dark *){border-color:color-mix(in oklab,var(--color-red-900)40%,transparent)}}.dark\:border-yellow-900\/40:is(.theme-dark *){border-color:#733e0a66}@supports (color:color-mix(in lab,red,red)){.dark\:border-yellow-900\/40:is(.theme-dark *){border-color:color-mix(in oklab,var(--color-yellow-900)40%,transparent)}}.dark\:bg-\[rgb\(26\,26\,26\)\]:is(.theme-dark *){background-color:#1a1a1a}.dark\:bg-blue-900\/20:is(.theme-dark *){background-color:#1c398e33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/20:is(.theme-dark *){background-color:color-mix(in oklab,var(--color-blue-900)20%,transparent)}}.dark\:bg-red-900\/20:is(.theme-dark *){background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20:is(.theme-dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-yellow-900\/20:is(.theme-dark *){background-color:#733e0a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-yellow-900\/20:is(.theme-dark *){background-color:color-mix(in oklab,var(--color-yellow-900)20%,transparent)}}.dark\:pb-6:is(.theme-dark *){padding-bottom:calc(var(--spacing)*6)}.dark\:text-blue-200:is(.theme-dark *){color:var(--color-blue-200)}.dark\:text-red-200:is(.theme-dark *){color:var(--color-red-200)}.dark\:text-yellow-200:is(.theme-dark *){color:var(--color-yellow-200)}@media (hover:hover){.dark\:hover\:bg-\[rgb\(26\,26\,26\)\]:is(.theme-dark *):hover{background-color:#1a1a1a}}.dark\:focus\:bg-\[rgb\(26\,26\,26\)\]:is(.theme-dark *):focus{background-color:#1a1a1a}.\[\&_\*\]\:\!text-blue-700 *{color:var(--color-blue-700)!important}.\[\&_\*\]\:\!text-red-700 *{color:var(--color-red-700)!important}.\[\&_\*\]\:\!text-yellow-700 *{color:var(--color-yellow-700)!important}.\[\&_\*\]\:dark\:\!text-blue-300 :is(.theme-dark *){color:var(--color-blue-300)!important}.\[\&_\*\]\:dark\:\!text-red-300 :is(.theme-dark *){color:var(--color-red-300)!important}.\[\&_\*\]\:dark\:\!text-yellow-300 :is(.theme-dark *){color:var(--color-yellow-300)!important}.\[\&\>i\]\:size-\[24px\]>i{width:24px;height:24px}.\[\&\>i\]\:text-\[24px\]>i{font-size:24px}.\[\&\>i\]\:leading-\[1em\]>i{--tw-leading:1em;line-height:1em}.\[\&\>svg\]\:h-full>svg{height:100%}.\[\&\>svg\]\:w-auto>svg{width:auto}.styleguide-section--large .\[\.styleguide-section--large_\&\]\:inline-block{display:inline-block}html{view-transition-name:none}:root{color-scheme:light dark;--cp-neutral-0:#000;--cp-neutral-04:#0a0a0a;--cp-neutral-12:#1f1f1f;--cp-neutral-40:#666;--cp-neutral-64:#a3a3a3;--cp-neutral-92:#ebebeb;--cp-neutral-98:#fafafa;--cp-neutral-100:#fff;--cp-blue-11:#111827;--ca-theme-highlight:var(--cp-blue-11);--styleguide-color-background:light-dark(var(--cp-neutral-98),var(--cp-neutral-0));--styleguide-color-background-highlight:light-dark(var(--cp-neutral-100),var(--cp-neutral-04));--styleguide-color-highlight:light-dark(var(--ca-theme-highlight),var(--cp-neutral-100));--styleguide-color-regular:light-dark(var(--cp-neutral-40),var(--cp-neutral-64));--styleguide-color-border:light-dark(var(--cp-neutral-92),var(--cp-neutral-12))}body{visibility:hidden;background-color:var(--styleguide-color-background);color:var(--styleguide-color-regular)}body.js-loaded{visibility:visible}body.is-scrolling iframe{pointer-events:none}summary{list-style:none}summary::marker{display:none}summary::-webkit-details-marker{display:none}.theme-normal{color-scheme:light dark}.theme-light{color-scheme:light only}.theme-dark{color-scheme:dark only}body:not([data-os=mac]) .mac-only,body:not([data-os=windows],[data-os=linux]) .winlinux-only,body[data-is-mobile=true] .desktop-device-only{display:none}.theme-dark .shiki,.theme-dark .shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.code-highlight pre.shiki.shiki-themes{background-color:#0000!important}:is(.theme-select,.editor-select) input[type=radio]:checked+label{border-radius:var(--radius-3xl);outline-style:var(--tw-outline-style);outline-width:1px;outline-color:var(--styleguide-color-border)}:is(.theme-select,.editor-select) input[type=radio]:focus+label,:is(.theme-select,.editor-select) input[type=radio]+label:hover{outline-color:var(--color-blue-600)}.dialog-backdrop{-webkit-backdrop-filter:blur(3px)brightness(.7);backdrop-filter:blur(3px)brightness(.7);opacity:0;pointer-events:none;z-index:100;display:none;position:absolute;inset:0}.search-category,.search-category__item:not(.search-category__item--active){display:none}.search-category:has(.search-category__item--active){display:block}.icon-search-list__item-copy-icon{pointer-events:none;--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y);opacity:0;position:absolute;left:50%}.menu-item{border-radius:var(--radius-md);padding:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:block}@media (hover:hover){.menu-item:hover{background-color:#f2f2f2}}.menu-item:focus{background-color:#f2f2f2}@media (hover:hover){.menu-item:is(.theme-dark *):hover{background-color:#1a1a1a}}.menu-item:is(.theme-dark *):focus{background-color:#1a1a1a}.menu-item--active{background-color:#f2f2f2}.menu-item--active:is(.theme-dark *){background-color:#1a1a1a}[class*=menu-item--status-]{align-items:center;gap:calc(var(--spacing)*4);grid-template-columns:1fr auto;display:grid}.menu-item--status-complete:after{content:"🟢"}.menu-item--status-progress:after{content:"🚧"}.menu-item--status-feedback:after{content:"💬"}.menu-item--status-pending:after{content:"🔴"}.preview-iframe{border:none;width:100%;min-height:0;overflow-y:hidden}.c-toast{right:calc(var(--spacing)*4);bottom:calc(var(--spacing)*4);left:calc(var(--spacing)*4);justify-content:center;align-items:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--styleguide-color-border);background-color:var(--styleguide-color-background-highlight);padding:calc(var(--spacing)*4);--tw-font-weight:var(--font-weight-semibold);font-family:Geist Mono;font-size:12px;font-weight:var(--font-weight-semibold);--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:flex;position:fixed}.c-toast:after{inset-inline:calc(var(--spacing)*0);content:var(--tw-content);width:100%;height:5px;position:absolute;top:-5px}@media (min-width:48rem){.c-toast{justify-content:flex-start;left:auto}}.c-toast>span{color:var(--styleguide-color-highlight)}.markdown-container{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.markdown-container>:first-child:not(p){margin-top:1em}.markdown-container>:not(pre){max-width:65ch}.markdown-container>:not(:last-child){margin-bottom:calc(var(--spacing)*4)}.markdown-container :is(h1,h2,h3,h4,h5,h6,strong){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--styleguide-color-highlight)}.markdown-container :is(h1,h2,h3,h4,h5,h6):has(+p){margin-bottom:calc(var(--spacing)*1.5)!important}.markdown-container :is(h1,h2,h3,h4,h5,h6):not(:first-child){margin-top:1.5em}.markdown-container :is(h1,h2){font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.markdown-container h3{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.markdown-container h4{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.markdown-container :is(h5,h6){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.markdown-container a{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--styleguide-color-theme-highlight)}.markdown-container a:after{margin-bottom:-1px;margin-left:calc(var(--spacing)*1);background-color:var(--styleguide-color-theme-highlight);--icon-size:1em;content:"";inline-size:var(--icon-size);block-size:var(--icon-size);background-size:contain;display:inline-block;-webkit-mask-image:url(./icons/external-link.svg);mask-image:url(./icons/external-link.svg)}.markdown-container :is(ul,ol){padding-left:calc(var(--spacing)*5)}.markdown-container ul{list-style-type:disc}.markdown-container ol{list-style-type:decimal}.markdown-container :is(.shiki,pre:not(.shiki)){max-width:83ch;padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*5)}.markdown-container :not(:is(pre))>code{border-radius:var(--radius-md);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);font-family:Geist Mono;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--styleguide-color-highlight);background-color:#f2f2f2}.markdown-container :not(:is(pre))>code:is(.theme-dark *){background-color:#1a1a1a}:is(.markdown-container,.code-audit-container) :is(.shiki,pre:not(.shiki)){border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--styleguide-color-border);background-color:var(--styleguide-color-background-highlight);max-width:100%;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));overflow-x:auto}:is(.markdown-container,.code-audit-container) :is(.shiki,pre:not(.shiki))>code{display:inline-block}}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/styleguide-assets/fonts/geist-mono-latin-300-normal.woff2)format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/styleguide-assets/fonts/geist-mono-latin-400-normal.woff2)format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/styleguide-assets/fonts/geist-mono-latin-600-normal.woff2)format("woff2")}@font-face{font-family:Geist Sans;font-style:normal;font-display:swap;font-weight:300;src:url(/styleguide-assets/fonts/geist-sans-latin-300-normal.woff2)format("woff2")}@font-face{font-family:Geist Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/styleguide-assets/fonts/geist-sans-latin-400-normal.woff2)format("woff2")}@font-face{font-family:Geist Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/styleguide-assets/fonts/geist-sans-latin-600-normal.woff2)format("woff2")}body:not(.editor-vscode) .editor-vscode-only,body:not(.editor-phpstorm) .editor-phpstorm-only{display:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}