toolroll 0.9.87 → 0.9.89

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 CHANGED
@@ -1,5 +1,53 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.89 — 2026-11-03
4
+
5
+ - **The app no longer freezes when a drive stops answering.** If an external
6
+ or network drive holding one of your projects stalls, every other page keeps
7
+ working: that project's pages say its folder is unavailable instead of
8
+ hanging the whole app. Filing a task into a project whose folder isn't
9
+ answering is refused with a plain explanation, so nothing waits forever.
10
+ - **A flow's main button no longer changes under your tap.** When a card starts
11
+ waiting on you, the flow page's main button turns from New card into Review.
12
+ A tap at that moment now does what the button showed when you pressed it,
13
+ and the switch happens a moment later with a short note ("Review is next.").
14
+ - **Every Settings save goes to the right place.** Each Settings form, on
15
+ every page, is now checked to post where it should, so a save can't quietly
16
+ go to the wrong address again.
17
+
18
+ ### For developers
19
+
20
+ - **Every walkthrough runs on every pull request.** All the scripted
21
+ end-to-end journeys (task, stop, mail and onboarding included) now run on
22
+ Linux in pull request CI, not only in the Mac release check.
23
+
24
+ ## 0.9.88 — 2026-11-03
25
+
26
+ - **Every text box looks the same, and calmer.** Wherever you type or pick
27
+ something, the field is one soft filled shape with its label above and any
28
+ hint or error below, with no outlines at rest. Text boxes grow as you
29
+ write, so there are no resize grips. On a phone, fields are larger and easy
30
+ to tap.
31
+ - **A message box like the chat apps you know.** The lead chat has one
32
+ rounded box with a **+** menu, a chip that shows the project, and a solid
33
+ round send button that turns into Stop while the lead works. The task
34
+ conversation's box has the same look.
35
+ - **Conversation settings moved into the + menu.** The automatic crew
36
+ updates, conversation details, End the conversation and the link to Lead
37
+ settings now open from **+ → Conversation settings** instead of sitting
38
+ under the chat box. Escape closes it.
39
+ - **New task matches.** Pick the project from the chip in the box, and turn on
40
+ "Read code before planning" with one tap.
41
+ - **A filled phone dock**, matching the new look.
42
+
43
+ ### For developers
44
+
45
+ - **Faster checks.** Pull request CI finishes in about 8 minutes instead of
46
+ about 19: test shards are balanced by measured time, and macOS runs only
47
+ the tests that depend on macOS (the nightly run still covers everything).
48
+ The scripted end-to-end journeys now run on every pull request, as an
49
+ advisory check. The Mac release check uses more of a busy machine.
50
+
3
51
  ## 0.9.87 — 2026-11-03
4
52
 
5
53
  - **The whole app is redesigned.** Every page, from sign-in to Settings,
@@ -5,6 +5,9 @@ export declare const CHECK_PROMPTS: {
5
5
  readonly ok: "Create a file named done.txt in the current folder containing exactly the word ok. Then stop. Do nothing else.";
6
6
  readonly stop: "Run the shell command `sleep 120` and wait for it to finish.";
7
7
  };
8
+ /** How long the stop step waits for the agent to start its command, and for the cancel to be answered. Every product
9
+ * path waits exactly this: runAcpChecks takes no other value (src/acp-check-timing.test.ts holds it). */
10
+ export declare const STOP_WAIT_MS = 60000;
8
11
  export type AcpCheckJob = {
9
12
  store: Store;
10
13
  runner: string;
@@ -26,3 +29,9 @@ export type AcpCheckJob = {
26
29
  /** Close what no live watch holds any more, let go of what finished checks still hold, then run this runner's next
27
30
  * check, if one is waiting. */
28
31
  export declare function runAcpChecks(job: AcpCheckJob): Promise<void>;
32
+ /**
33
+ * Tests only: runAcpChecks with a shorter stop-step window, so a test whose agent never starts its command doesn't
34
+ * wait out the product's minute. No product code may import it (src/acp-check-timing.test.ts fails if any does); the
35
+ * job carries no wait of its own, so no CLI, environment or config value can change the product's.
36
+ */
37
+ export declare function runAcpChecksForTests(job: AcpCheckJob, stopWaitMs: number): Promise<void>;
package/dist/acp-check.js CHANGED
@@ -28,33 +28,15 @@ export const CHECK_PROMPTS = {
28
28
  ok: "Create a file named done.txt in the current folder containing exactly the word ok. Then stop. Do nothing else.",
29
29
  stop: "Run the shell command `sleep 120` and wait for it to finish.",
30
30
  };
31
- /** How long the stop step waits for the agent to start its command, and for the cancel to be answered. */
32
- const STOP_WAIT_MS = 60_000;
31
+ /** How long the stop step waits for the agent to start its command, and for the cancel to be answered. Every product
32
+ * path waits exactly this: runAcpChecks takes no other value (src/acp-check-timing.test.ts holds it). */
33
+ export const STOP_WAIT_MS = 60_000;
33
34
  /** How long the agent has to answer the cancel. */
34
35
  const CANCEL_ANSWER_MS = 15_000;
35
36
  /** Close what no live watch holds any more, let go of what finished checks still hold, then run this runner's next
36
37
  * check, if one is waiting. */
37
38
  export async function runAcpChecks(job) {
38
- const clock = job.clock ?? (() => new Date());
39
- job.store.expireAcpChecks(clock());
40
- for (const abandoned of job.store.abandonedAcpChecks(job.runner, clock()))
41
- job.store.failAcpCheck(abandoned.id, "interrupted", clock());
42
- await settleChecks(job, clock);
43
- if (process.platform === "win32")
44
- return;
45
- const request = job.store.claimAcpCheck(job.runner, job.watch, clock());
46
- if (request === null)
47
- return;
48
- const name = isAcpProvider(request.provider) ? ACP_AGENTS[request.provider].name : request.provider;
49
- job.progress?.(`agents: checking ${name} (${request.model}) on ${job.runner}`);
50
- try {
51
- const verdict = await check(job, request, clock);
52
- job.progress?.(`agents: ${name} ${verdict === null ? "passed its check" : `failed its check — ${verdict}`}`);
53
- }
54
- catch (error) {
55
- job.store.failAcpCheck(request.id, `the check stopped: ${error instanceof Error ? error.message : String(error)}`, clock());
56
- }
57
- await settleChecks(job, clock);
39
+ return runChecks(job, STOP_WAIT_MS);
58
40
  }
59
41
  /**
60
42
  * Let go of what finished checks hold — their checkout, their task, their claim — once nothing of theirs can still be
@@ -139,8 +121,38 @@ async function settleChecks(job, clock) {
139
121
  }
140
122
  }
141
123
  }
124
+ /**
125
+ * Tests only: runAcpChecks with a shorter stop-step window, so a test whose agent never starts its command doesn't
126
+ * wait out the product's minute. No product code may import it (src/acp-check-timing.test.ts fails if any does); the
127
+ * job carries no wait of its own, so no CLI, environment or config value can change the product's.
128
+ */
129
+ export async function runAcpChecksForTests(job, stopWaitMs) {
130
+ return runChecks(job, stopWaitMs);
131
+ }
132
+ async function runChecks(job, stopWaitMs) {
133
+ const clock = job.clock ?? (() => new Date());
134
+ job.store.expireAcpChecks(clock());
135
+ for (const abandoned of job.store.abandonedAcpChecks(job.runner, clock()))
136
+ job.store.failAcpCheck(abandoned.id, "interrupted", clock());
137
+ await settleChecks(job, clock);
138
+ if (process.platform === "win32")
139
+ return;
140
+ const request = job.store.claimAcpCheck(job.runner, job.watch, clock());
141
+ if (request === null)
142
+ return;
143
+ const name = isAcpProvider(request.provider) ? ACP_AGENTS[request.provider].name : request.provider;
144
+ job.progress?.(`agents: checking ${name} (${request.model}) on ${job.runner}`);
145
+ try {
146
+ const verdict = await check(job, request, clock, stopWaitMs);
147
+ job.progress?.(`agents: ${name} ${verdict === null ? "passed its check" : `failed its check — ${verdict}`}`);
148
+ }
149
+ catch (error) {
150
+ job.store.failAcpCheck(request.id, `the check stopped: ${error instanceof Error ? error.message : String(error)}`, clock());
151
+ }
152
+ await settleChecks(job, clock);
153
+ }
142
154
  /** Run one claimed check; null when it passed (and was published), else why not. */
143
- async function check(job, request, clock) {
155
+ async function check(job, request, clock, stopWaitMs) {
144
156
  const { store } = job;
145
157
  const fail = (words) => { store.failAcpCheck(request.id, words, clock()); return words; };
146
158
  if (!isAcpProvider(request.provider))
@@ -185,7 +197,7 @@ async function check(job, request, clock) {
185
197
  const canaryFile = join(stateDir, `acp-check-secret-${request.id}`);
186
198
  let verdict = null;
187
199
  try {
188
- verdict = await steps(job, request, { ref, leaseId, worktree, canaryFile }, clock);
200
+ verdict = await steps(job, request, { ref, leaseId, worktree, canaryFile }, clock, stopWaitMs);
189
201
  }
190
202
  finally {
191
203
  rmSync(canaryFile, { force: true });
@@ -200,17 +212,17 @@ function finishCheckRun(store, run, clock) {
200
212
  store.finishRun(run, { outcome: "refused", reason: "agent-check", now: clock() });
201
213
  }
202
214
  /** The two steps; whatever throws, the step's run in flight is finished (cleanup still waits for its processes). */
203
- async function steps(job, request, at, clock) {
215
+ async function steps(job, request, at, clock, stopWaitMs) {
204
216
  let current = null;
205
217
  try {
206
- return await runSteps(job, request, at, clock, run => { current = run; });
218
+ return await runSteps(job, request, at, clock, run => { current = run; }, stopWaitMs);
207
219
  }
208
220
  finally {
209
221
  if (current !== null)
210
222
  finishCheckRun(job.store, current, clock);
211
223
  }
212
224
  }
213
- async function runSteps(job, request, at, clock, track) {
225
+ async function runSteps(job, request, at, clock, track, stopWaitMs) {
214
226
  const { store } = job;
215
227
  const spec = { provider: request.provider, model: request.model };
216
228
  const ask = (brief) => ({ phase: "build", brief, maxTurns: 1, permissionMode: "bypassPermissions", skipPermissions: true, resumeSession: null });
@@ -290,7 +302,7 @@ async function runSteps(job, request, at, clock, track) {
290
302
  },
291
303
  acp: { prompt: "", model: "", expect: null, onControl: (control) => {
292
304
  // The agent's word only times the cancel: what the plane itself sees alive is what is graded.
293
- const until = Date.now() + STOP_WAIT_MS;
305
+ const until = Date.now() + stopWaitMs;
294
306
  const poll = setInterval(() => {
295
307
  if (Date.now() > until) {
296
308
  clearInterval(poll);
@@ -1,4 +1,4 @@
1
- .xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}:root{color-scheme:light;--so-accent: #171717;--so-accent-hover: #383838;--so-accent-text: #171717;--so-attention: var(--so-signal);--so-attention-soft: var(--so-signal-soft);--so-code-bg: #fafafa;--so-danger: #c4320a;--so-danger-soft: #feebe7;--so-ease-out: cubic-bezier(.23, 1, .32, 1);--so-field-line: #8f8f8f;--so-font-mono: "Geist Mono", ui-monospace, "SF Mono", "SFMono-Regular", "Menlo", "Consolas", monospace;--so-font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--so-ground: #efefef;--so-info: #0d74ce;--so-info-soft: #e6f4fe;--so-ink: #171717;--so-input-line: #d4d4d4;--so-line: #e6e6e6;--so-live: #0d74ce;--so-muted: #666666;--so-nav-current: #ffffff;--so-nav-current-ink: #171717;--so-nav-hover: #e4e4e4;--so-nav-ink: #525252;--so-needs: var(--so-warning);--so-needs-soft: var(--so-warning-soft);--so-neutral-ink: #525252;--so-neutral-soft: #f0f0f0;--so-on-accent: #ffffff;--so-on-attention: var(--so-on-signal);--so-on-signal: #ffffff;--so-overlay: rgb(0 0 0 / .32);--so-overlay-line: #b8b8b8;--so-paper: #ffffff;--so-phone-block: 14px;--so-phone-card: 12px;--so-phone-gap: 12px;--so-phone-gutter: 16px;--so-phone-row: 8px;--so-pill-shadow: 0px 0px 0px 1px rgb(0 0 0 / .06), 0px 1px 2px 0px rgb(0 0 0 / .06);--so-radius-badge: 5px;--so-radius-card: 10px;--so-radius-full: 9999px;--so-radius-md: 8px;--so-radius-sheet: 12px;--so-radius-sm: 6px;--so-raised: #f5f5f5;--so-ring: var(--so-ink);--so-scrim: rgb(0 0 0 / .22);--so-scroll: #cfcfcf;--so-selection: #d4d4d4;--so-shadow-overlay: 0px 0px 0px 1px rgb(0 0 0 / .08), 0px 24px 48px -12px rgb(0 0 0 / .22);--so-sheet-shadow: 0px 0px 0px 1px rgb(0 0 0 / .06), 0px 1px 2px 0px rgb(0 0 0 / .04), 0px 4px 12px -6px rgb(0 0 0 / .06);--so-sidebar: #efefef;--so-signal: #171717;--so-signal-hover: #383838;--so-signal-soft: #e8e8e8;--so-soft: #f2f2f2;--so-space-2xl: 24px;--so-space-3xl: 28px;--so-space-lg: 16px;--so-space-md: 12px;--so-space-sm: 8px;--so-space-xl: 20px;--so-space-xs: 4px;--so-success: #218358;--so-success-soft: #e6f6eb;--so-typography-badge: var(--so-typography-badge-font-weight) var(--so-typography-badge-font-size)/var(--so-typography-badge-line-height) var(--so-typography-badge-font-family);--so-typography-badge-font-family: var(--so-font-sans);--so-typography-badge-font-size: 11.5px;--so-typography-badge-font-weight: 500;--so-typography-badge-line-height: 1.5652;--so-typography-body: var(--so-typography-body-font-weight) var(--so-typography-body-font-size)/var(--so-typography-body-line-height) var(--so-typography-body-font-family);--so-typography-body-font-family: var(--so-font-sans);--so-typography-body-font-size: 13px;--so-typography-body-font-weight: 400;--so-typography-body-line-height: 1.5;--so-typography-body-reading: var(--so-typography-body-reading-font-weight) var(--so-typography-body-reading-font-size)/var(--so-typography-body-reading-line-height) var(--so-typography-body-reading-font-family);--so-typography-body-reading-font-family: var(--so-font-sans);--so-typography-body-reading-font-size: 14px;--so-typography-body-reading-font-weight: 400;--so-typography-body-reading-line-height: 1.7;--so-typography-caption: var(--so-typography-caption-font-weight) var(--so-typography-caption-font-size)/var(--so-typography-caption-line-height) var(--so-typography-caption-font-family);--so-typography-caption-font-family: var(--so-font-sans);--so-typography-caption-font-size: 12px;--so-typography-caption-font-weight: 500;--so-typography-caption-line-height: 1.5;--so-typography-display: var(--so-typography-display-font-weight) var(--so-typography-display-font-size)/var(--so-typography-display-line-height) var(--so-typography-display-font-family);--so-typography-display-font-family: var(--so-font-sans);--so-typography-display-font-size: 26px;--so-typography-display-font-weight: 600;--so-typography-display-letter-spacing: -.65px;--so-typography-display-line-height: 1.25;--so-typography-headline: var(--so-typography-headline-font-weight) var(--so-typography-headline-font-size)/var(--so-typography-headline-line-height) var(--so-typography-headline-font-family);--so-typography-headline-font-family: var(--so-font-sans);--so-typography-headline-font-size: 18px;--so-typography-headline-font-weight: 600;--so-typography-headline-line-height: 1.375;--so-typography-label: var(--so-typography-label-font-weight) var(--so-typography-label-font-size)/var(--so-typography-label-line-height) var(--so-typography-label-font-family);--so-typography-label-font-family: var(--so-font-sans);--so-typography-label-font-size: 13px;--so-typography-label-font-weight: 500;--so-typography-label-line-height: 1.2;--so-typography-mono: var(--so-typography-mono-font-weight) var(--so-typography-mono-font-size)/var(--so-typography-mono-line-height) var(--so-typography-mono-font-family);--so-typography-mono-count: var(--so-typography-mono-count-font-weight) var(--so-typography-mono-count-font-size)/var(--so-typography-mono-count-line-height) var(--so-typography-mono-count-font-family);--so-typography-mono-count-font-family: var(--so-font-mono);--so-typography-mono-count-font-size: 11px;--so-typography-mono-count-font-weight: 500;--so-typography-mono-count-line-height: 1;--so-typography-mono-font-family: var(--so-font-mono);--so-typography-mono-font-size: 12px;--so-typography-mono-font-weight: 400;--so-typography-mono-line-height: 1.5;--so-typography-title: var(--so-typography-title-font-weight) var(--so-typography-title-font-size)/var(--so-typography-title-line-height) var(--so-typography-title-font-family);--so-typography-title-font-family: var(--so-font-sans);--so-typography-title-font-size: 15px;--so-typography-title-font-weight: 600;--so-typography-title-letter-spacing: -.15px;--so-typography-title-line-height: 1.4;--so-typography-title-sm: var(--so-typography-title-sm-font-weight) var(--so-typography-title-sm-font-size)/var(--so-typography-title-sm-line-height) var(--so-typography-title-sm-font-family);--so-typography-title-sm-font-family: var(--so-font-sans);--so-typography-title-sm-font-size: 14px;--so-typography-title-sm-font-weight: 600;--so-typography-title-sm-letter-spacing: -.14px;--so-typography-title-sm-line-height: 1.3;--so-user-bubble: #f2f2f2;--so-warning: #ab6400;--so-warning-soft: #fff4d5}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--so-accent: #ededed;--so-accent-hover: #ffffff;--so-accent-text: #ededed;--so-code-bg: #111111;--so-danger: #ff977d;--so-danger-soft: rgb(255 151 125 / .12);--so-field-line: #6b6b6b;--so-ground: #0b0b0b;--so-info: #70b8ff;--so-info-soft: rgb(112 184 255 / .12);--so-ink: #ededed;--so-input-line: #363636;--so-line: #262626;--so-live: #70b8ff;--so-muted: #a1a1a1;--so-nav-current: #1f1f1f;--so-nav-current-ink: #ededed;--so-nav-hover: #171717;--so-nav-ink: #a1a1a1;--so-neutral-ink: #b4b4b4;--so-neutral-soft: #1f1f1f;--so-on-accent: #0a0a0a;--so-on-signal: #0a0a0a;--so-overlay: rgb(0 0 0 / .6);--so-overlay-line: #4a4a4a;--so-paper: #161616;--so-pill-shadow: 0px 0px 0px 1px #2a2a2a, 0px 1px 2px 0px rgb(0 0 0 / .5);--so-raised: #1c1c1c;--so-scrim: rgb(0 0 0 / .5);--so-scroll: #333333;--so-selection: #3a3a3a;--so-shadow-overlay: 0px 0px 0px 1px #2e2e2e, 0px 24px 48px -12px rgb(0 0 0 / .7);--so-sheet-shadow: 0px 0px 0px 1px #262626, 0px 1px 2px 0px rgb(0 0 0 / .4);--so-sidebar: #0b0b0b;--so-signal: #ededed;--so-signal-hover: #ffffff;--so-signal-soft: #2e2e2e;--so-soft: #1f1f1f;--so-success: #3dd68c;--so-success-soft: rgb(61 214 140 / .12);--so-user-bubble: #202020;--so-warning: #ffca16;--so-warning-soft: rgb(255 202 22 / .12)}}:root[data-theme=dark]{color-scheme:dark;--so-accent: #ededed;--so-accent-hover: #ffffff;--so-accent-text: #ededed;--so-code-bg: #111111;--so-danger: #ff977d;--so-danger-soft: rgb(255 151 125 / .12);--so-field-line: #6b6b6b;--so-ground: #0b0b0b;--so-info: #70b8ff;--so-info-soft: rgb(112 184 255 / .12);--so-ink: #ededed;--so-input-line: #363636;--so-line: #262626;--so-live: #70b8ff;--so-muted: #a1a1a1;--so-nav-current: #1f1f1f;--so-nav-current-ink: #ededed;--so-nav-hover: #171717;--so-nav-ink: #a1a1a1;--so-neutral-ink: #b4b4b4;--so-neutral-soft: #1f1f1f;--so-on-accent: #0a0a0a;--so-on-signal: #0a0a0a;--so-overlay: rgb(0 0 0 / .6);--so-overlay-line: #4a4a4a;--so-paper: #161616;--so-pill-shadow: 0px 0px 0px 1px #2a2a2a, 0px 1px 2px 0px rgb(0 0 0 / .5);--so-raised: #1c1c1c;--so-scrim: rgb(0 0 0 / .5);--so-scroll: #333333;--so-selection: #3a3a3a;--so-shadow-overlay: 0px 0px 0px 1px #2e2e2e, 0px 24px 48px -12px rgb(0 0 0 / .7);--so-sheet-shadow: 0px 0px 0px 1px #262626, 0px 1px 2px 0px rgb(0 0 0 / .4);--so-sidebar: #0b0b0b;--so-signal: #ededed;--so-signal-hover: #ffffff;--so-signal-soft: #2e2e2e;--so-soft: #1f1f1f;--so-success: #3dd68c;--so-success-soft: rgb(61 214 140 / .12);--so-user-bubble: #202020;--so-warning: #ffca16;--so-warning-soft: rgb(255 202 22 / .12)}:root{--so-needs-ink: color-mix(in srgb, var(--so-needs) 78%, var(--so-ink));--so-live-ink: color-mix(in srgb, var(--so-info) 82%, var(--so-ink));--so-done-ink: color-mix(in srgb, var(--so-success) 80%, var(--so-ink));--so-fail-ink: color-mix(in srgb, var(--so-danger) 85%, var(--so-ink));--m-quick: .12s;--m-base: .16s;--m-slow: .22s;--m-ease: var(--so-ease-out)}.k-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:0;padding:0;border:0}.k-mono{font-family:var(--so-font-mono);font-size:12px;font-weight:400}.k-num{font-variant-numeric:tabular-nums}.k-muted{color:var(--so-muted)}.k-grow{flex:1}.k-i{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}.k-i-sm{width:14px;height:14px}.k-link{color:inherit;text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}.k-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;height:32px;min-height:0;margin:0;padding:0 12px;border-radius:var(--so-radius-md);border:1px solid transparent;background:transparent;color:var(--so-ink);font:var(--so-typography-label);white-space:nowrap;text-decoration:none;position:relative;cursor:pointer;user-select:none;box-shadow:none;transition:background-color var(--m-quick) var(--m-ease),color var(--m-quick) var(--m-ease),border-color var(--m-quick) var(--m-ease),transform var(--m-quick) var(--m-ease)}.k-btn:active:not(:disabled):not([aria-disabled=true]){transform:scale(.97)}.k-btn.k-btn-primary{background:var(--so-accent);color:var(--so-on-accent);border-color:var(--so-accent)}.k-btn.k-btn-primary.busy{background:var(--so-accent-hover)}.k-btn.k-btn-outline{background:var(--so-paper);border-color:var(--so-field-line)}.k-btn.k-btn-ghost{color:var(--so-muted)}.k-btn.k-btn-danger{background:var(--so-paper);border-color:color-mix(in srgb,var(--so-danger) 55%,transparent);color:var(--so-fail-ink)}.k-btn-sm{height:28px;padding:0 10px;font-size:12.5px}.k-btn-icon{width:32px;padding:0}.k-btn-sm.k-btn-icon{width:28px}.k-btn:disabled,.k-btn[aria-disabled=true]{cursor:default;opacity:.55}.k-face{display:inline-flex;align-items:center;gap:6px}.k-btn.swap .k-face{animation:k-face var(--m-base) var(--m-ease) both}.k-spin{width:14px;height:14px;border-radius:50%;border:1.5px solid currentColor;border-right-color:transparent;animation:k-spin .6s linear infinite}.k-check-draw path{stroke-dasharray:24;stroke-dashoffset:24;animation:k-draw var(--m-slow) var(--m-ease) 40ms forwards}@keyframes k-face{0%{opacity:0;transform:translateY(3px)}}@keyframes k-spin{to{transform:rotate(360deg)}}@keyframes k-draw{to{stroke-dashoffset:0}}.k-chip{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 7px;border-radius:6px;font:var(--so-typography-badge);background:var(--so-neutral-soft);color:var(--so-neutral-ink);white-space:nowrap;flex:none}.k-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--dot, var(--so-muted));flex:none}.k-chip.needs{background:var(--so-needs-soft);color:var(--so-needs-ink);--dot: var(--so-needs)}.k-chip.ask{background:var(--so-neutral-soft);color:var(--so-ink);--dot: var(--so-needs)}.k-chip.live{background:var(--so-info-soft);color:var(--so-live-ink);--dot: var(--so-info)}.k-chip.done{background:var(--so-success-soft);color:var(--so-done-ink);--dot: var(--so-success)}.k-chip.failed{background:var(--so-danger-soft);color:var(--so-fail-ink);--dot: var(--so-danger)}.k-chip.nodot:before{display:none}.k-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;font:500 11px/18px var(--so-font-sans);font-variant-numeric:tabular-nums;background:var(--so-neutral-soft);color:var(--so-neutral-ink)}.k-count.ink{background:var(--so-ink);color:var(--so-paper)}.k-count.zero{background:transparent;color:var(--so-muted)}.k-dot{width:8px;height:8px;border-radius:50%;background:var(--dot, var(--so-muted));flex:none;display:inline-block}.k-dot.needs{--dot: var(--so-needs)}.k-seg{display:inline-flex;padding:2px;gap:2px;border-radius:9px;background:var(--so-raised)}.k-seg>a,.k-seg>button{display:inline-flex;align-items:center;gap:6px;height:26px;min-height:0;margin:0;padding:0 9px;border:0;border-radius:7px;background:transparent;color:var(--so-muted);font:var(--so-typography-label);font-size:12.5px;white-space:nowrap;text-decoration:none;cursor:pointer;box-shadow:none}.k-seg>[aria-current],.k-seg>[aria-pressed=true],.k-seg>[aria-selected=true]{background:var(--so-paper);color:var(--so-ink);box-shadow:inset 0 0 0 1px var(--so-field-line)}.k-seg .k-count{background:transparent;padding:0 1px;min-width:0;color:inherit;height:auto;line-height:1}.k-seg .k-count.ink{background:var(--so-ink);color:var(--so-paper);padding:0 5px;min-width:18px;height:18px;line-height:18px}.k-tabs{display:flex;gap:20px;border-bottom:1px solid var(--so-line);margin:0;padding:0}.k-tabs>button,.k-tabs>a{display:inline-flex;align-items:center;gap:6px;min-height:0;margin:0 0 -1px;padding:10px 0;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--so-muted);font:var(--so-typography-label);text-decoration:none;cursor:pointer;box-shadow:none;transition:color var(--m-quick) var(--m-ease),border-color var(--m-quick) var(--m-ease)}.k-tabs>[aria-selected=true],.k-tabs>[aria-current]{color:var(--so-ink);border-bottom-color:var(--so-ink)}.k-tabs .k-count{margin-left:2px}.k-field{display:grid;gap:6px;margin:0;min-width:0}.k-label{display:block;margin:0;font:var(--so-typography-caption);color:var(--so-ink)}.k-hint{margin:0;font-size:12px;color:var(--so-muted);line-height:1.45}.k-input.k-input,.k-textarea.k-textarea{box-sizing:border-box;width:100%;margin:0;border:1px solid var(--so-field-line);border-radius:8px;background:var(--so-paper);color:var(--so-ink);font:400 13px/1.4 var(--so-font-sans);box-shadow:none}.k-input.k-input{height:32px;min-height:0;padding:0 10px}.k-textarea.k-textarea{min-height:72px;padding:8px 10px;resize:vertical;max-width:640px}.k-input:focus-visible,.k-textarea:focus-visible{outline:2px solid var(--so-ring);outline-offset:1px;box-shadow:none}.k-input[aria-invalid=true],.k-textarea[aria-invalid=true],.k-sel[aria-invalid=true]{border-color:var(--so-danger)}.k-err{display:block;margin:0;font-size:12px;color:var(--so-fail-ink);line-height:1.45}.k-err:empty{display:none}.k-selw{position:relative;display:inline-block;min-width:0;max-width:100%}.k-selw:after{content:"";position:absolute;right:12px;top:50%;margin-top:-5px;width:6px;height:6px;border:solid var(--so-muted);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);pointer-events:none}.k-sel.k-sel{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:100%;height:32px;min-height:0;margin:0;padding:0 30px 0 10px;border:1px solid var(--so-field-line);border-radius:8px;background:var(--so-paper);color:var(--so-ink);font:400 13px/1 var(--so-font-sans);text-overflow:ellipsis;cursor:pointer;box-shadow:none}.k-sel:focus-visible{outline:2px solid var(--so-ring);outline-offset:1px}.k-sel:disabled{color:var(--so-muted);cursor:default}.k-selw.sm .k-sel{height:28px;font:500 12.5px/1 var(--so-font-sans);padding:0 26px 0 9px}.k-selw.sm:after{right:10px}.k-selw.wide{display:block;width:100%}.k-switch{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:28px;margin:0;padding:0;border:0;background:transparent;font:500 12.5px/1 var(--so-font-sans);color:var(--so-muted);cursor:pointer;box-shadow:none}.k-trk{position:relative;width:32px;height:18px;border-radius:9px;border:1px solid var(--so-field-line);background:var(--so-paper);transition:background-color var(--m-quick) var(--m-ease),border-color var(--m-quick) var(--m-ease);flex:none;box-sizing:border-box}.k-trk:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--so-muted);transition:transform var(--m-quick) var(--m-ease),background-color var(--m-quick) var(--m-ease)}.k-switch[aria-checked=true],.k-switch:has(input:checked){color:var(--so-ink)}.k-switch[aria-checked=true] .k-trk,.k-switch input:checked+.k-trk{background:var(--so-ink);border-color:var(--so-ink)}.k-switch[aria-checked=true] .k-trk:after,.k-switch input:checked+.k-trk:after{transform:translate(14px);background:var(--so-paper)}.k-switch .k-switch-input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}.k-switch:focus-visible,.k-switch:has(input:focus-visible){outline:2px solid var(--so-ring);outline-offset:3px;border-radius:4px}.k-radios{display:grid;gap:8px;grid-template-columns:1fr 1fr;margin:0;padding:0;border:0;min-width:0}.k-opt{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;margin:0;padding:11px 14px;border:1px solid var(--so-field-line);border-radius:10px;font:var(--so-typography-body);cursor:pointer}.k-opt input{margin:3px 0 0;accent-color:var(--so-ink)}.k-opt>span{display:grid;gap:3px}.k-opt>span>span{font-size:12.5px;color:var(--so-muted)}.k-opt:has(input:checked){border-color:var(--so-ink);box-shadow:inset 0 0 0 1px var(--so-ink)}.k-checks{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px}.k-checks label{display:inline-flex;gap:8px;align-items:center;min-height:28px;margin:0;font:var(--so-typography-body)}.k-checks input{accent-color:var(--so-ink);width:15px;height:15px;margin:0}.k-frow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,300px);gap:8px 24px;align-items:center;min-height:52px;padding:10px 0;border-bottom:1px solid var(--so-line)}.k-frow.wide{grid-template-columns:minmax(0,1fr)}.k-frow.top{align-items:start}.k-frow-l{display:grid;gap:2px;min-width:0}.k-frow-t{margin:0;font-weight:500;font-size:13px;display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--so-ink)}.k-frow-h{font-size:12.5px;color:var(--so-muted);line-height:1.45}.k-frow-c{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;flex-wrap:wrap}.k-frow-c .k-input,.k-frow-c .k-selw{max-width:300px;width:100%}.k-frow-c .k-seg{flex:none}.k-frow .k-err{width:100%;text-align:right}.k-frow.wide .k-frow-c{justify-content:flex-start}.k-frow.wide .k-frow-c>*{flex:1;min-width:0}.k-frow.wide .k-frow-c>.k-btn,.k-frow.wide .k-frow-c>.k-switch{flex:none}.k-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.k-facts{display:grid;grid-template-columns:112px minmax(0,1fr);gap:10px 16px;margin:0;font-size:12.5px;line-height:1.45}.k-facts dt{color:var(--so-muted);margin:0}.k-facts dd{min-width:0;margin:0;overflow-wrap:anywhere}.k-facts a{color:inherit;text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}.k-note{margin:0;font-size:12px;color:var(--so-muted);line-height:1.45}.k-notice{display:flex;gap:8px;align-items:flex-start;margin:0;font-size:12.5px;color:var(--so-fail-ink);line-height:1.45}.k-notice .k-i{margin-top:1px}.k-notice.info{color:var(--so-ink);background:var(--so-raised);border-radius:7px;padding:8px 10px}.k-empty{display:grid;justify-items:start;gap:10px;padding:28px 24px}.k-empty-t{color:var(--so-ink);font-weight:600;font-size:14px;margin:0}.k-empty-x{color:var(--so-muted);font-size:13px;margin:0;max-width:60ch}.k-doc .k-empty,.k-sbody .k-empty,.k-drawer .k-empty,.k-tabbody .k-empty{padding:16px 0}.k-terms{margin:0;font-size:13px;font-weight:500;padding:8px 10px;background:var(--so-raised);border-radius:7px;justify-self:start}.k-disclose>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:0;margin:0;padding:0;font-size:12.5px;font-weight:400;color:var(--so-ink);text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}.k-disclose>summary::-webkit-details-marker{display:none}.k-disclose>summary:before{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);transition:transform var(--m-quick) var(--m-ease);margin-right:2px}.k-disclose[open]>summary:before{transform:rotate(45deg)}.k-disclose{margin:0;padding:0;border:0}.k-grp{display:flex;align-items:center;gap:8px;height:36px;margin:8px 0 0;padding:0 24px;font:600 12.5px/1 var(--so-font-sans);border-bottom:1px solid var(--so-line);color:var(--so-ink)}.k-row{display:grid;grid-template-columns:96px minmax(160px,30%) minmax(0,1fr) auto 124px;align-items:center;gap:16px;min-height:48px;padding:6px 24px;border-bottom:1px solid var(--so-line);position:relative}.k-row-t{font-weight:500;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--so-ink);text-decoration:none}.k-row.wait .k-row-t{font-weight:600}.k-row-t:before{content:"";position:absolute;inset:0}.k-row.k-row-static .k-row-t:before{content:none}.k-row-d{color:var(--so-muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.k-row-m{display:flex;gap:12px;color:var(--so-muted);font-size:12px;white-space:nowrap}.k-row-a{display:flex;justify-content:flex-end}.k-row-a .k-btn{min-width:108px}.k-row-c,.k-row-a,.k-row-msg{position:relative;z-index:1}.k-row-msg{grid-column:2 / -1}.k-filter{display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;height:28px;width:168px;margin:0;padding:0 8px;border:1px solid var(--so-field-line);border-radius:var(--so-radius-md);background:var(--so-paper);color:var(--so-muted);cursor:text}.k-filter>input{flex:1;min-width:0;height:100%;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;outline:none;color:var(--so-ink);font:400 12.5px/1 var(--so-font-sans)}.k-filter>input::placeholder{color:var(--so-muted)}.k-filter>input::-webkit-search-cancel-button{display:none}.k-filter:focus-within{border-color:var(--so-ink);box-shadow:inset 0 0 0 1px var(--so-ink)}.k-seg.k-seg-icons>a,.k-seg.k-seg-icons>button{padding:0 6px}.k-tbp{display:none}.k-foot{margin:0;padding:12px 24px;font-size:12.5px;color:var(--so-muted)}.k-foot a{color:var(--so-ink);text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}.k-board{display:grid;grid-template-columns:repeat(var(--k-cols, 4),minmax(0,1fr));align-items:stretch;flex:1;min-height:0}.k-col{min-width:0;border-right:1px solid var(--so-line)}.k-col:last-child{border-right:0}.k-col-h{display:flex;align-items:center;gap:8px;height:40px;margin:0;padding:0 16px;border-bottom:1px solid var(--so-line);font:600 12.5px/1 var(--so-font-sans);color:var(--so-ink)}.k-col-h.needs:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--so-needs);flex:none}.k-card{display:grid;gap:5px;padding:11px 16px;border-bottom:1px solid var(--so-line);color:var(--so-ink);text-decoration:none;outline-offset:-2px}.k-card-t{font-weight:500;font-size:13px;line-height:1.35;overflow-wrap:anywhere}.k-card-m{display:flex;flex-wrap:wrap;gap:8px;align-items:center;color:var(--so-muted);font-size:12px}.k-col-e{margin:0;padding:12px 16px;font-size:12.5px;color:var(--so-muted)}.k-colpager{display:none}.k-colpager>.k-seg{display:flex;width:100%}.k-tb{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;min-height:48px;padding:8px 24px;border-bottom:1px solid var(--so-line);position:sticky;top:0;z-index:6;background:var(--so-paper)}.k-tb h1{margin:0;font:600 15px/1.3 var(--so-font-sans);letter-spacing:-.01em}.k-tb-ctx{color:var(--so-muted);font-size:12.5px}.k-tb-ctx>.k-seg{vertical-align:middle}.k-tb-ctx>.k-seg+.k-seg{margin-left:8px}.k-ph{display:none}.k-doc{box-sizing:border-box;width:100%;max-width:760px;margin:0 auto;padding:22px 28px 120px;display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-content:start}.k-backlink{display:inline-flex;align-items:center;gap:6px;color:var(--so-muted);font:var(--so-typography-label);justify-self:start;min-height:24px;text-decoration:none}.k-dh{display:flex;align-items:flex-start;gap:6px}.k-dh>div{flex:1;display:grid;gap:6px;min-width:0}.k-dh h1{margin:0;font:600 24px/1.3 var(--so-font-sans);letter-spacing:-.02em;color:var(--so-ink)}.k-dh h1:first-letter{text-transform:none}.k-dh-meta{margin:0;font-size:12.5px;color:var(--so-muted)}.k-same{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(min-width:761px){.k-same{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}}.k-sec{display:grid;gap:10px}.k-sec h3,.k-secthead h3{margin:0;font:600 13px/1.3 var(--so-font-sans)}.k-secthead{display:flex;align-items:center;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--so-line)}.k-secthead h3{flex:1;display:flex;align-items:center;gap:8px}.k-steps{--k-n: 5;position:relative;display:grid;grid-template-columns:repeat(var(--k-n),minmax(0,1fr));margin:0;padding:2px 0 0;list-style:none}.k-steps:before,.k-steps-fill{content:"";position:absolute;top:8px;left:calc(50% / var(--k-n));right:calc(50% / var(--k-n));height:1.5px;background:var(--so-line)}.k-steps-fill{background:var(--so-success);transform-origin:left center;transform:scaleX(var(--k-fill, 0));transition:transform var(--m-slow) var(--m-ease)}.k-step{position:relative;z-index:1;display:grid;justify-items:center;align-content:start;gap:7px;min-width:0;margin:0;padding:0;text-align:center;font-size:12px;color:var(--so-muted)}.k-step>b{display:block;position:relative;box-sizing:border-box;width:13px;height:13px;margin-top:2px;border-radius:50%;border:1.5px solid var(--so-field-line);background:var(--so-paper)}.k-step.done>b{border-color:var(--so-success);background:var(--so-success)}.k-step.done>b:before{content:"";position:absolute;left:3px;top:1px;width:3px;height:6px;border:solid var(--so-paper);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.k-step.now,.k-step.live,.k-step.failed{color:var(--so-ink);font-weight:600}.k-step.now>b{border-color:var(--so-needs);background:var(--so-needs);box-shadow:inset 0 0 0 2.5px var(--so-paper)}.k-step.live>b{border-color:var(--so-info);background:var(--so-info);box-shadow:inset 0 0 0 2.5px var(--so-paper)}.k-step.failed>b{border-color:var(--so-danger);background:var(--so-danger)}.k-step-l{line-height:1.2;white-space:nowrap}.k-step-s{margin-top:-4px;min-height:1.3em;font-size:11.5px;font-weight:400;line-height:1.3;color:var(--so-muted);white-space:nowrap}.k-slots{border:1px solid var(--so-line);border-radius:var(--so-radius-card);padding:16px 18px;display:grid;gap:10px;background:var(--so-paper);transition:border-color var(--m-slow) var(--m-ease)}.k-slots.wait{border-color:var(--so-needs)}.k-slot-status{display:flex;align-items:center;gap:10px;min-height:24px;flex-wrap:wrap}.k-slot-status h2{margin:0;font:600 15px/1.35 var(--so-font-sans)}.k-slot-text{margin:0;color:var(--so-muted);font-size:13px;line-height:1.5;min-height:1.5em}.k-slot-acts{min-height:32px}.k-slot-acts .k-btn{min-width:136px}.k-slot-acts .k-btn.k-btn-ghost{min-width:0}.k-slot-terms{margin:0;font-size:12px;color:var(--so-muted);line-height:1.5;min-height:1.5em}.k-slot-err:empty{display:none}.k-slot-body{display:grid;gap:12px;min-width:0}.k-opt>.k-chip{align-self:start}.k-reauth{display:grid;gap:6px;max-width:320px}.k-needs{border:1px solid var(--so-needs);border-radius:var(--so-radius-card);background:var(--so-paper)}.k-needs-h{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;border-bottom:1px solid var(--so-line);font:600 13px/1.3 var(--so-font-sans)}.k-needs-h:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--so-needs)}.k-needs-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;align-items:center;padding:12px 16px}.k-needs-item+.k-needs-item{border-top:1px solid var(--so-line)}.k-needs-item b{font-weight:600}.k-needs-item p{margin:2px 0 0;font-size:12.5px;color:var(--so-muted);line-height:1.45}.k-needs-item .k-acts .k-btn{min-width:124px}.k-scrim{position:fixed;inset:0;z-index:25;background:transparent;animation:k-fade var(--m-slow) var(--m-ease) both}.k-scrim.dim{background:var(--so-scrim)}.k-pop{position:fixed;z-index:40;box-sizing:border-box;width:336px;max-width:calc(100vw - 16px);padding:14px;border-radius:10px;background:var(--so-paper);color:var(--so-ink);border:1px solid var(--so-overlay-line);display:grid;gap:10px}.k-pop-h{display:flex;align-items:center;gap:8px;margin:-4px -6px 0 0}.k-pop-h h3{margin:0;font:var(--so-typography-title-sm);flex:1}.k-pop p{margin:0;font-size:12.5px;color:var(--so-muted);line-height:1.5}.k-pop .k-pop-terms{color:var(--so-ink);font-weight:500;font-size:13px;padding:8px 10px;background:var(--so-raised);border-radius:7px}.k-pop .k-pop-foot{font-size:12px;border-top:1px solid var(--so-line);padding-top:10px}.k-pop .k-input{height:36px}.k-pop.k-pop-menu{width:240px}.k-drawer{position:fixed;top:8px;right:8px;bottom:8px;width:400px;max-width:calc(100vw - 16px);z-index:30;background:var(--so-paper);color:var(--so-ink);border-radius:12px;border:1px solid var(--so-overlay-line);overflow:auto;display:flex;flex-direction:column}.k-drawer-h{display:flex;align-items:center;gap:6px;padding:10px 10px 10px 20px;border-bottom:1px solid var(--so-line);position:sticky;top:0;background:var(--so-paper)}.k-drawer-h h2{margin:0;font:600 14px/1.3 var(--so-font-sans);flex:1}.k-drawer-b{padding:18px 20px 28px;display:grid;gap:22px;align-content:start}.k-sheet{position:fixed;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:45;max-height:calc(100dvh - 16px);display:flex;flex-direction:column;background:var(--so-paper);color:var(--so-ink);border-radius:14px;border:1px solid var(--so-overlay-line)}.k-sheet-h{display:flex;align-items:center;gap:8px;padding:6px 6px 8px 16px;border-bottom:1px solid var(--so-line);flex:none}.k-sheet-ht{flex:1;min-width:0;display:grid;gap:2px;padding-top:4px}.k-sheet-h h2{margin:0;font:600 15px/1.3 var(--so-font-sans);display:flex;gap:8px;align-items:center;white-space:nowrap}.k-sheet-b{overflow:auto;padding:0 0 12px}.k-pop:focus,.k-drawer:focus,.k-sheet:focus{outline:none}.k-pop[hidden],.k-drawer[hidden],.k-sheet[hidden]{display:none}.k-scrim.stacked{z-index:48}.k-pop.stacked,.k-sheet.stacked,.k-drawer.stacked{z-index:50}.k-menu{display:grid;gap:1px;margin:0 -6px}.k-menu>button,.k-menu>a{display:flex;align-items:center;box-sizing:border-box;width:100%;min-height:32px;margin:0;padding:0 8px;border:0;border-radius:6px;background:transparent;color:var(--so-ink);font:var(--so-typography-label);text-align:left;text-decoration:none;cursor:pointer;box-shadow:none}.k-menu>[aria-current=true]{font-weight:600}.k-sheet .k-menu{margin:0;padding:6px 8px 4px}.k-grow-in{transform-origin:var(--origin, top left);animation:k-grow var(--m-base) var(--m-ease) both}.k-drawer.k-grow-in,.k-sheet.k-grow-in{animation-duration:var(--m-slow)}@keyframes k-grow{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes k-fade{0%{opacity:0}}.k-msg-in{animation:k-msg var(--m-base) var(--m-ease) both}@keyframes k-msg{0%{opacity:0;transform:translateY(-3px)}}.k-swap-in{animation:k-swap var(--m-base) var(--m-ease) both}@keyframes k-swap{0%{opacity:0;transform:translateY(4px)}}.k-composer{--c-r: 22px;box-sizing:border-box;border:1px solid var(--so-field-line);border-radius:var(--c-r);background:var(--so-paper);display:grid;padding:4px 6px 6px;outline:3px solid transparent;outline-offset:0;transition:border-color var(--m-quick) var(--m-ease),outline-color var(--m-quick) var(--m-ease)}.k-composer:focus-within{border-color:var(--so-ink);outline-color:color-mix(in srgb,var(--so-ink) 10%,transparent)}.k-composer.off{border-color:var(--so-line);background:var(--so-raised)}.k-composer-ta.k-composer-ta{box-sizing:border-box;width:100%;min-height:40px;margin:0;padding:10px 10px 6px;border:0;border-radius:0;outline:none;resize:none;background:transparent;box-shadow:none;color:var(--so-ink);font:var(--so-typography-body-reading);line-height:1.5;overflow-y:hidden;scrollbar-width:thin}.k-composer-ta::placeholder{color:var(--so-muted)}.k-composer-ta:focus,.k-composer-ta:focus-visible{outline:none;box-shadow:none}.k-composer:has(.k-composer-ta[aria-invalid=true]){border-color:var(--so-danger);outline-color:transparent}.k-composer+.k-err{margin-top:6px}.k-composer-bar{display:flex;align-items:center;gap:6px;padding:2px 0 0 2px;flex-wrap:wrap;min-height:36px}.k-composer-plus{box-sizing:border-box;width:32px;height:32px;min-height:0;margin:0;padding:0;border-radius:50%;display:grid;place-items:center;color:var(--so-muted);border:1px solid var(--so-line);background:transparent;cursor:pointer;box-shadow:none;transition:background-color var(--m-quick) var(--m-ease),color var(--m-quick) var(--m-ease)}.k-composer-chip{box-sizing:border-box;height:32px;min-height:0;margin:0;display:inline-flex;align-items:center;gap:4px;padding:0 8px 0 10px;border:0;border-radius:999px;font:500 12.5px/1 var(--so-font-sans);color:var(--so-muted);background:transparent;cursor:pointer;box-shadow:none;transition:background-color var(--m-quick) var(--m-ease),color var(--m-quick) var(--m-ease)}.k-composer-plus:disabled,.k-composer-chip:disabled{opacity:.5;pointer-events:none}.k-send-slot{position:relative;display:inline-grid;width:34px;height:34px;flex:none}.k-send-slot .k-send{grid-area:1 / 1;position:relative;box-sizing:border-box;width:34px;height:34px;min-height:0;margin:0;padding:0;border-radius:50%;display:grid;place-items:center;background:var(--so-ink);color:var(--so-paper);border:0;cursor:pointer;box-shadow:none;transition:background-color var(--m-quick) var(--m-ease),color var(--m-quick) var(--m-ease),transform var(--m-base) var(--m-ease)}.k-send:before{content:"";position:absolute;inset:-5px}.k-send .k-i{width:17px;height:17px;stroke-width:2.2}.k-send[aria-disabled=true],.k-composer:not(.has-text) .k-send:not(.k-stop){background:var(--so-raised);color:var(--so-muted)}.k-send[aria-disabled=true]{cursor:default}.k-send:not([aria-disabled=true]):active{transform:scale(.94)}.k-stop{visibility:hidden}.k-stop .k-i{fill:currentColor;width:12px;height:12px}.k-composer.working .k-send:not(.k-stop){visibility:hidden}.k-composer.working .k-stop{visibility:visible}.k-composer.working .k-stop .k-i,.k-composer.was-working:not(.working) .k-send:not(.k-stop) .k-i{animation:k-morph var(--m-base) var(--m-ease)}@keyframes k-morph{0%{opacity:0;transform:scale(.82)}}.k-send:focus-visible{outline:2px solid var(--so-ring);outline-offset:2px}.k-composer-files{display:flex;flex-wrap:wrap;gap:6px;padding:0 8px}.k-composer-files:empty{display:none}.k-composer-file{display:inline-flex;align-items:center;gap:6px;height:28px;margin-top:6px;padding:0 4px 0 10px;border:1px solid var(--so-line);border-radius:999px;font-size:12px}.k-composer-file button{width:22px;height:22px;min-height:0;margin:0;padding:0;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--so-muted)}.k-composer-note,.k-composer-err{padding:2px 10px 6px}.k-composer-err:empty{display:none}.k-composer.line{grid-template-columns:minmax(0,1fr) auto;align-items:end;padding:4px 6px 4px 8px}.k-composer.line .k-composer-ta{padding:8px 6px;min-height:36px}.k-composer.line .k-composer-bar{padding:0 0 1px;min-height:0}.k-composer.line .k-composer-bar .k-grow{display:none}.k-composer.line .k-composer-files,.k-composer.line .k-composer-err,.k-composer.line .k-composer-note{grid-column:1 / -1}.k-composer-dock{position:sticky;bottom:0;z-index:4;padding:12px 24px 14px;background:var(--so-paper);border-top:1px solid var(--so-line)}.k-timing{border:1px solid var(--so-line);border-radius:var(--so-radius-card);background:var(--so-paper);overflow:hidden}.k-timing-h{display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 10px 8px 16px;border-bottom:1px solid var(--so-line)}.k-timing-h h2{margin:0;font:600 13.5px/1.3 var(--so-font-sans)}.k-timing-h .k-timing-state{margin-left:auto;display:flex;gap:8px;align-items:center}.k-timing-b{padding:12px 16px;display:grid;gap:2px}.k-timing-f{padding:10px 16px 12px;border-top:1px solid var(--so-line);font-size:12px;color:var(--so-muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}.k-timing-f:empty{display:none}.k-crow{display:grid;grid-template-columns:16px 220px minmax(0,1fr) 62px 60px;gap:10px;align-items:center;min-height:40px;font-size:13px}.k-crow.head{min-height:20px;font-size:11.5px;color:var(--so-muted)}.k-crow-i{display:grid;place-items:center;width:16px;height:16px}.k-crow-i .k-qd{width:10px;height:10px;border-radius:50%;border:1.5px dashed var(--so-field-line);box-sizing:border-box}.k-crow-i .k-rund{width:10px;height:10px;border-radius:50%;border:2px solid var(--so-info);background:color-mix(in srgb,var(--so-info) 30%,transparent);box-sizing:border-box}.k-crow-i .k-wd{width:9px;height:9px;border-radius:50%;background:var(--so-needs)}.k-crow-i svg{width:14px;height:14px}.k-crow.ok .k-crow-i{color:var(--so-success)}.k-crow.bad .k-crow-i{color:var(--so-danger)}.k-crow-n{min-width:0;white-space:normal;line-height:1.3}.k-crow-n .k-crow-sub{display:block;font-size:11.5px;color:var(--so-muted);font-weight:400}.k-crow-w{font-size:12px;color:var(--so-muted)}.k-crow.bad .k-crow-w{color:var(--so-fail-ink);font-weight:500}.k-crow.run .k-crow-w{color:var(--so-live-ink)}.k-crow.wait .k-crow-w{color:var(--so-needs-ink);font-weight:600}.k-crow.now .k-crow-n,.k-crow.now .k-crow-w{font-weight:600}.k-crow-lane{position:relative;height:14px}.k-crow-bar{position:absolute;top:4px;height:6px;border-radius:3px;background:var(--so-info);min-width:3px;transition:width var(--m-base) linear,background-color var(--m-slow) var(--m-ease)}.k-crow.ok .k-crow-bar{background:var(--so-success)}.k-crow.bad .k-crow-bar{background:var(--so-danger)}.k-crow.wait .k-crow-bar{background:var(--so-needs)}.k-crow-s{text-align:right;color:var(--so-muted);font-size:12px;font-variant-numeric:tabular-nums}.k-nf .k-empty{padding:40px 24px}.k-nf .k-empty-t{font-size:15px}.k-settings{display:grid;grid-template-columns:200px minmax(0,1fr);flex:1}.k-snav{border-right:1px solid var(--so-line);padding:14px 10px;display:grid;gap:1px;align-content:start}.k-nav{display:flex;align-items:center;gap:9px;height:30px;padding:0 8px;border-radius:6px;color:var(--so-nav-ink);font:500 13px/1 var(--so-font-sans);text-decoration:none}.k-nav[aria-current]{background:var(--so-nav-hover);color:var(--so-ink)}.k-nav>.k-nav-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.k-nav-top{margin-bottom:8px}.k-nav-flag{width:6px;height:6px;border-radius:50%;background:var(--so-needs);flex:none}.k-sbody{box-sizing:border-box;max-width:760px;width:100%;padding:24px 32px 80px;display:grid;gap:24px;align-content:start}.k-sbody>header h2{margin:0;font:600 20px/1.3 var(--so-font-sans);letter-spacing:-.015em}.k-sbody>header p{margin:4px 0 0;color:var(--so-muted)}.k-crumbs{display:inline-flex;align-items:center;gap:6px;min-width:0}.k-crumbs a{color:var(--so-muted);text-decoration:none}.k-crumbs .k-sep{color:var(--so-field-line)}.k-crumbs b{font-weight:500;color:var(--so-ink)}@media(hover:hover)and (pointer:fine){.k-link:hover{text-decoration-color:var(--so-ink)}.k-btn.k-btn-primary:hover{background:var(--so-accent-hover);border-color:var(--so-accent-hover)}.k-btn.k-btn-outline:hover{background:var(--so-soft)}.k-btn.k-btn-ghost:hover{background:var(--so-soft);color:var(--so-ink)}.k-btn.k-btn-danger:hover{background:var(--so-danger-soft)}.k-seg>a:hover,.k-seg>button:hover{color:var(--so-ink)}.k-tabs>button:hover,.k-tabs>a:hover{color:var(--so-ink)}.k-switch:hover{background:transparent}.k-opt:hover{border-color:var(--so-ink)}.k-row:hover{background:color-mix(in srgb,var(--so-raised) 60%,transparent)}.k-row.k-row-static:hover{background:transparent}.k-card:hover{background:color-mix(in srgb,var(--so-raised) 60%,transparent)}.k-backlink:hover{color:var(--so-ink)}.k-menu>button:hover,.k-menu>a:hover{background:var(--so-soft)}.k-composer-plus:hover,.k-composer-chip:hover{background:var(--so-raised);color:var(--so-ink)}.k-nav:hover{background:var(--so-nav-hover);color:var(--so-ink)}.k-crumbs a:hover{color:var(--so-ink)}}.k-code{display:inline-block;max-width:100%;box-sizing:border-box;margin:0;padding:6px 10px;border-radius:7px;background:var(--so-raised);color:var(--so-ink);font:12.5px/1.45 var(--so-font-mono);overflow-wrap:anywhere;user-select:all}.k-dock{display:none}.k-dock-needs{display:grid;align-content:center;gap:1px;box-sizing:border-box;width:136px;min-height:48px;margin:0;padding:0 12px;border-radius:8px;border:1px solid var(--so-field-line);background:var(--so-paper);color:var(--so-ink);text-align:left;white-space:nowrap;cursor:pointer;box-shadow:none}.k-dock-needs-l{display:inline-flex;align-items:center;gap:7px;font:500 14px/1.2 var(--so-font-sans)}.k-dock-needs-s{overflow:hidden;text-overflow:ellipsis;font-size:11.5px;color:var(--so-muted);padding-left:14px}.k-dock-needs:focus-visible{outline:2px solid var(--so-ring);outline-offset:2px}@media(max-width:760px){.k-desk-only{display:none!important}.k-btn,.k-btn-sm{height:44px;padding:0 16px;font-size:14px}.k-btn-icon,.k-btn-sm.k-btn-icon{width:44px;padding:0}.k-input.k-input,.k-textarea.k-textarea,.k-sel.k-sel{font-size:16px}.k-input.k-input,.k-pop .k-input.k-input,.k-sel.k-sel,.k-selw.sm .k-sel{height:44px}.k-selw:after{right:13px}.k-seg>a,.k-seg>button{height:44px;font-size:13.5px}.k-tabs>button,.k-tabs>a{min-height:44px}.k-disclose>summary{min-height:44px}.k-facts a{display:inline-flex;align-items:center;min-height:44px}.k-checks label,.k-switch{min-height:44px}.k-opt{padding:13px 14px}.k-radios{grid-template-columns:1fr}.k-facts{grid-template-columns:1fr;gap:3px}.k-facts dd{margin-bottom:8px}.k-tb{display:none}.k-ph{display:flex;align-items:center;gap:2px;height:52px;padding:0 4px;position:sticky;top:0;z-index:8;background:var(--so-paper);border-bottom:1px solid var(--so-line)}.k-ph-t{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 16px/1.2 var(--so-font-sans);padding-left:4px}.k-grp{padding:0 16px}.k-row{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:12px 16px}.k-row-c{grid-row:2;grid-column:1;display:flex;gap:8px;align-items:center;min-width:0}.k-row-t{grid-row:1;grid-column:1;white-space:normal;font-size:14px}.k-row-d{grid-row:3;grid-column:1 / -1;white-space:normal}.k-row-m{display:none}.k-row-a{grid-row:1 / 3;grid-column:2}.k-row-a .k-btn{min-width:0;padding:0 12px;font-size:13.5px}.k-row-a:empty{display:none}.k-row-msg{grid-column:1 / -1}.k-tbp{display:flex;gap:8px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--so-line);background:var(--so-paper)}.k-tbp>.k-selw{flex:1;min-width:0}.k-tbp{flex-wrap:wrap}.k-tbp>.k-filter{flex:1 1 100%;width:auto;height:44px;order:2}.k-filter>input{font-size:16px}.k-foot{padding:12px 16px}.k-foot a{display:inline-flex;align-items:center;min-height:44px}.k-colpager{display:block;margin:10px 16px 0;overflow-x:auto;scrollbar-width:none}.k-colpager .k-seg>button,.k-colpager .k-seg>a{flex:1;justify-content:center;padding:0 8px}.k-board{grid-template-columns:minmax(0,1fr);margin-top:8px}.k-col{border-right:0;display:none}.k-col.on{display:block}.k-col-h{display:none}.k-card{padding:12px 16px}.k-step{font-size:11px}.k-step-s{font-size:10.5px;white-space:normal}.k-doc{padding:14px 16px 40px;gap:18px}.k-dh h1{font-size:20px}.k-backlink,.k-slot-acts .k-btn.k-btn-primary.k-docked{display:none}.k-slot-acts{min-height:44px}.k-needs-item{grid-template-columns:minmax(0,1fr)}.k-needs-item .k-acts .k-btn{width:100%}.k-pop{width:auto}.k-pop.as-sheet{left:8px!important;right:8px;top:auto!important;bottom:calc(8px + env(safe-area-inset-bottom));border-radius:14px;padding:16px;max-height:calc(100dvh - 16px);overflow:auto}.k-pop .k-acts .k-btn{flex:1}.k-drawer{inset:auto 8px 8px;width:auto;max-height:calc(100dvh - 16px)}.k-menu>button,.k-menu>a{min-height:44px;font-size:15px}.k-frow{grid-template-columns:minmax(0,1fr);gap:10px;padding:12px 0}.k-frow.inline{grid-template-columns:minmax(0,1fr) auto}.k-frow-c{justify-content:flex-start}.k-frow.inline .k-frow-c{justify-content:flex-end}.k-frow-c .k-input,.k-frow-c .k-selw{max-width:none}.k-frow .k-err{text-align:left}.k-frow-c .k-seg{width:100%}.k-frow-c .k-seg>button{flex:1;justify-content:center}.k-composer-ta.k-composer-ta{font-size:16px}.k-composer-bar .k-btn-sm{height:44px}.k-send-slot,.k-send-slot .k-send{width:44px;height:44px}.k-send-slot .k-send{background:radial-gradient(circle,var(--so-ink) 17.5px,transparent 18px)}.k-send[aria-disabled=true],.k-composer:not(.has-text) .k-send:not(.k-stop){background:radial-gradient(circle,var(--so-raised) 17.5px,transparent 18px)}.k-send:before{content:none}.k-composer-plus{width:44px;height:44px;border:0;background:radial-gradient(circle,transparent 15.5px,var(--so-line) 16px,var(--so-line) 16.5px,transparent 17px)}.k-composer-chip{height:44px}.k-composer-bar{gap:2px}.k-composer-file button{width:32px;height:32px}.k-composer-dock{padding:12px 16px 16px}html.kb-open .k-composer-dock{position:fixed;left:0;right:0;bottom:var(--kb, 0px);z-index:13}html.kb-open .k-dock{display:none}.k-crow{grid-template-columns:14px minmax(0,1fr) 52px 48px;gap:6px;font-size:12.5px}.k-crow-lane{display:none}.k-timing.show-chart .k-crow{grid-template-columns:14px 112px minmax(0,1fr) 46px 44px}.k-timing.show-chart .k-crow-lane{display:block}.k-crow-w,.k-crow-s{font-size:11.5px}.k-nf .k-empty{padding:28px 16px}.k-settings{display:block}.k-snav{display:none}.k-sbody{padding:18px 16px 40px}.k-dock{display:flex;gap:8px;align-items:stretch;position:fixed;left:0;right:0;bottom:0;z-index:12;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--so-paper);border-top:1px solid var(--so-line)}.k-dock-primary{flex:1;display:flex}.k-dock-primary .k-btn{width:100%}}@media(min-width:761px){.k-phone-only{display:none!important}}body:has(.k-out){background:var(--so-paper)}main:has(>.k-out){max-width:none;margin:0;padding:0}.k-out{box-sizing:border-box;min-height:100dvh;display:grid;align-content:center;justify-items:center;gap:20px;padding:48px 16px 64px}.k-out-c{box-sizing:border-box;width:100%;max-width:380px;display:grid;gap:18px;min-width:0}.k-out-brand{display:inline-flex;align-items:center;gap:8px;justify-self:start;margin:0 0 10px;color:var(--so-ink);font:600 14px/1 var(--so-font-sans);letter-spacing:-.01em;text-decoration:none}.k-out h1{margin:0;font:600 24px/1.3 var(--so-font-sans);letter-spacing:-.02em;color:var(--so-ink)}.k-out-sub{margin:-8px 0 0;color:var(--so-muted);font-size:13px;line-height:1.5}.k-out-sub b{color:var(--so-ink);font-weight:600}.k-out-note{margin:-6px 0 0;padding:8px 10px;border-radius:7px;background:var(--so-raised);font-size:13px;line-height:1.5;color:var(--so-ink)}.k-out-f{box-sizing:border-box;width:100%;max-width:380px;margin:0;padding-top:14px;border-top:1px solid var(--so-line);color:var(--so-muted);font-size:12px;line-height:1.6}.k-out-f code,.k-out .k-mono{font-family:var(--so-font-mono);font-size:12px}.k-out .k-facts{padding:12px 0;border-top:1px solid var(--so-line);border-bottom:1px solid var(--so-line);grid-template-columns:96px minmax(0,1fr)}.k-out .k-slots{padding:16px}.k-out .k-slot-acts:empty,.k-out .k-slot-terms:empty{display:none}.k-form{display:grid;gap:14px;margin:0;min-width:0}.k-form .k-input.k-input{height:36px}.k-btn.k-wide{width:100%;height:36px}.k-out .k-disclose>summary{min-height:32px}.k-refusal .k-empty-t:first-letter,.k-refusal .k-notice>span:first-letter{text-transform:uppercase}.k-composer .k-off-note{display:none}.k-composer:has(.k-switch-input):not(:has(.k-switch-input:checked)) .k-on-note{display:none}.k-composer:has(.k-switch-input):not(:has(.k-switch-input:checked)) .k-off-note{display:inline}.k-composer .k-composer-ta.k-composer-ta:focus-visible{outline:none;box-shadow:none}.k-slot-acts>form.k-approve.k-form{flex:1 1 100%;min-width:0}.k-check{display:grid;margin:0;padding:0;list-style:none;border-top:1px solid var(--so-line)}.k-check-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:12px;align-items:center;min-height:56px;margin:0;padding:10px 0;border-bottom:1px solid var(--so-line)}.k-check-mark{box-sizing:border-box;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--so-field-line);display:grid;place-items:center;background:var(--so-paper)}.k-check-mark.ok{background:var(--so-success);border-color:var(--so-success);color:var(--so-paper)}.k-check-mark.ok .k-i{width:11px;height:11px;stroke-width:3}.k-check-mark.run{border-color:var(--so-info);background:color-mix(in srgb,var(--so-info) 22%,transparent)}.k-check-t{display:grid;gap:2px;min-width:0}.k-check-t b{font-weight:600;font-size:13.5px;color:var(--so-ink)}.k-check-row.done .k-check-t b{font-weight:500;color:var(--so-muted)}.k-check-t>span{font-size:12.5px;line-height:1.45;color:var(--so-muted);overflow-wrap:anywhere}.k-check-a{display:flex;justify-content:flex-end}.k-check-a .k-btn{min-width:108px}.k-hello{display:grid;gap:6px}.k-hello h1,.k-hello h2{margin:0;font:600 20px/1.3 var(--so-font-sans);letter-spacing:-.015em;color:var(--so-ink)}.k-hello p{margin:0;font-size:13px;color:var(--so-muted)}.k-ideas{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}.k-btn.k-idea{height:auto;min-height:36px;padding:6px 14px;border-radius:999px;border-color:var(--so-line);font-weight:400;white-space:normal;text-align:left}@media(pointer:coarse){.k-btn.k-idea{min-height:44px}}@media(max-width:760px){.k-out{align-content:start;padding-top:32px}.k-form .k-input.k-input,.k-btn.k-wide{height:44px}.k-out-brand{min-height:44px;margin-bottom:0}.k-out .k-facts{grid-template-columns:1fr}.k-out .k-disclose>summary{min-height:44px}.k-check-row{grid-template-columns:20px minmax(0,1fr)}.k-check-a{grid-column:2;justify-content:flex-start}.k-check-a:empty,.k-check-a:not(:has(.k-btn:not(.k-docked))){display:none}.k-btn.k-idea{min-height:44px;padding:10px 14px;font-size:14px}.k-check-a .k-btn.k-docked{display:none}.k-doc:has(~.k-dock){padding-bottom:96px}.k-dock-send .k-composer .k-send-slot{display:none}}@media(prefers-reduced-motion:reduce){.k-btn,.k-send,.k-composer,.k-composer-plus,.k-composer-chip,.k-trk,.k-trk:after,.k-tabs>*,.k-slots,.k-crow-bar{transition:none}.k-steps-fill{transition:none}.k-grow-in,.k-msg-in,.k-swap-in,.k-scrim,.k-btn.swap .k-face,.k-check-draw path,.k-composer .k-i{animation:none!important}.k-check-draw path{stroke-dashoffset:0}.k-spin{animation:none;border-right-color:currentColor;opacity:.5}}.k-ssec{display:grid;align-content:start;min-width:0;scroll-margin-top:64px}.k-ssec-state{font-weight:400;font-size:12.5px;color:var(--so-muted)}.k-ssec-lead{margin:0;padding:10px 0 2px;font-size:12.5px;color:var(--so-muted);line-height:1.5;max-width:66ch}.k-ssec>.k-note,.k-ssec>.k-notice{margin-top:10px}.k-slinks{display:grid}.k-slink{display:grid;grid-template-columns:20px minmax(0,1fr) auto 16px;gap:4px 12px;align-items:center;min-height:56px;padding:10px 0;border-bottom:1px solid var(--so-line);color:var(--so-ink);text-decoration:none}.k-slink.noico{grid-template-columns:minmax(0,1fr) auto 16px}.k-slink>.k-i{color:var(--so-muted)}.k-sl{display:grid;gap:3px;min-width:0}.k-sl-t{display:inline-flex;align-items:center;gap:8px 10px;flex-wrap:wrap;font-weight:500;font-size:13px;min-width:0;overflow-wrap:anywhere}.k-sl-h{font-size:12.5px;color:var(--so-muted);line-height:1.45;overflow-wrap:anywhere}.k-slink-r{display:flex;align-items:center;gap:8px}.k-chev{width:7px;height:7px;border:solid var(--so-muted);border-width:1.5px 1.5px 0 0;transform:rotate(45deg);justify-self:center}.k-sflag{display:inline-flex;align-items:center;gap:6px;font:500 12px/1 var(--so-font-sans);color:var(--so-neutral-ink)}.k-sflag:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--so-needs)}.k-srec{display:grid;grid-template-columns:minmax(0,1fr) auto 124px;gap:4px 16px;align-items:center;min-height:52px;padding:10px 0;border-bottom:1px solid var(--so-line)}.k-srec-when{font-size:12px;color:var(--so-muted);white-space:nowrap}.k-srec-a{display:flex;justify-content:flex-end;gap:8px}.k-srec-a .k-btn{min-width:108px}.k-srec-more{grid-column:1 / -1;min-width:0}.k-srec-more:empty{display:none}.k-scode{display:block;justify-self:start;max-width:100%;box-sizing:border-box;margin:8px 0 0;padding:8px 10px;border-radius:7px;background:var(--so-raised);font:12px/1.5 var(--so-font-mono);overflow-wrap:anywhere;user-select:all}.k-sform{display:grid;min-width:0;margin:0}.k-sform fieldset{border:0;margin:0;padding:0;min-width:0}.k-ssave{display:flex;align-items:center;gap:12px;min-height:48px;padding:8px 0;background:var(--so-paper)}.k-ssave-said{flex:1;min-width:0;font-size:12.5px;color:var(--so-muted)}.k-ssave .k-btn{min-width:96px}.k-sform[data-dirty] .k-ssave{position:sticky;bottom:0;z-index:2;border-top:1px solid var(--so-line)}.k-sform[data-dirty] .k-ssave-said{color:var(--so-ink);font-weight:500}.k-ssave-err:empty{display:none}.k-ssave-err .k-notice{margin:0 0 8px}.k-sproof label,.k-sproof .k-field{display:grid;gap:6px;margin:8px 0 0;font:var(--so-typography-caption);color:var(--so-ink);max-width:320px}.k-sproof input[type=password]{box-sizing:border-box;width:100%;height:32px;min-height:0;margin:0;padding:0 10px;border:1px solid var(--so-field-line);border-radius:8px;background:var(--so-paper);color:var(--so-ink);font:400 13px/1.4 var(--so-font-sans);box-shadow:none}.k-pop .k-sproof label{margin:0;max-width:none}html.k-js .k-sform>.k-sproof{display:none}html.k-js .k-sform[data-k-gate]:not([data-dirty]) .k-ssave .k-btn{display:none}html.k-js .k-sform[data-k-gate]:not([data-dirty]) .k-ssave:has(.k-ssave-said:empty){display:none}.k-sopts{display:grid;gap:8px;padding:10px 0}.k-sopt{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;min-height:32px;font-size:13px;color:var(--so-ink);cursor:pointer}.k-sopt input{margin:2px 0 0;accent-color:var(--so-ink)}.k-sopt b{display:block;font-weight:500}.k-sopt span span{display:block;color:var(--so-muted);font-size:12.5px;line-height:1.45}.k-secret-val{display:block;padding:8px 10px;border-radius:7px;background:var(--so-raised);font:12.5px/1.4 var(--so-font-mono);overflow-wrap:anywhere;user-select:all}@media(hover:hover)and (pointer:fine){.k-slink:hover .k-sl-t>span:first-child{text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}}@media(max-width:760px){.k-slink{min-height:64px;padding:12px 0}.k-srec{grid-template-columns:minmax(0,1fr) auto}.k-srec-when{grid-column:1}.k-srec-a{grid-column:2;grid-row:1 / span 2}.k-srec-a .k-btn{min-width:0}.k-ssave .k-btn{min-height:44px}.k-sproof input[type=password]{height:44px;font-size:16px}.k-sproof label{max-width:none}.k-sopt{min-height:44px}}.k-srec-a .k-sform{display:block}.k-srec-a .k-ssave{min-height:0;padding:0;background:none}.k-srec-a .k-ssave-said:empty{display:none}pre.k-scode{white-space:pre-wrap}@font-face{font-family:Geist;src:url(/fonts/geist-sans-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-sans-500.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-sans-600.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-400.woff2) format("woff2");font-weight:400;font-display:swap}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--so-paper);color:var(--so-ink);font:400 13px/1.5 var(--so-font-sans);-webkit-font-smoothing:antialiased}body{overscroll-behavior:none}#so-term{height:100dvh}.term-app{display:flex;flex-direction:column;height:100dvh}.term-app--loading{display:grid;place-items:center}.term-tb{display:flex;align-items:center;gap:10px;min-height:48px;padding:var(--so-space-sm) var(--so-space-2xl);border-bottom:1px solid var(--so-line);flex:none}.term-tb h1{margin:0;font:600 15px/1.3 var(--so-font-sans);letter-spacing:-.01em}.term-ctx{color:var(--so-muted);font-size:12.5px}.term-back{display:inline-flex;align-items:center;gap:var(--so-space-xs);margin-right:6px;color:var(--so-muted);font-size:12.5px;text-decoration:none}.term-grid{flex:1;min-height:0;display:grid;grid-template-columns:280px minmax(0,1fr)}.term-side{border-right:1px solid var(--so-line);overflow-y:auto}.term-main{display:flex;flex-direction:column;min-width:0;min-height:0;overflow-y:auto}.term-list{display:grid;padding:0}.term-none{margin:0;padding:var(--so-space-md) var(--so-space-lg);font-size:12.5px;color:var(--so-muted)}.term-item{display:grid;text-decoration:none;gap:5px;width:100%;margin:0;padding:10px var(--so-space-lg);border:0;border-bottom:1px solid var(--so-line);background:transparent;color:var(--so-ink);font:inherit;text-align:left;cursor:pointer}.term-item[aria-current]{box-shadow:inset 2px 0 0 var(--so-ink)}.term-item[aria-current] .term-item-t{font-weight:600}.term-item-t{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.term-item-m{display:flex;align-items:center;gap:var(--so-space-sm);min-width:0;color:var(--so-muted)}.term-item-m .k-mono{font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.term-pane{flex:1;display:flex;flex-direction:column;gap:var(--so-space-md);min-height:0;padding:var(--so-space-lg) var(--so-space-2xl) var(--so-space-2xl)}.term-ph{display:flex;align-items:center;gap:var(--so-space-md)}.term-ph>div{flex:1;display:grid;gap:2px;min-width:0}.term-ph b{font-weight:600;font-size:13.5px}.term-ph-m{color:var(--so-muted);font-size:12px}.term-link{font-size:12px;color:var(--so-muted);white-space:nowrap}.term-link--live{color:var(--so-live-ink)}.term-link--signed-out,.term-link--gone{color:var(--so-fail-ink)}.term-link--busy{color:var(--so-ink)}.term-screen{flex:1;min-height:320px;padding:10px var(--so-space-md);border:1px solid var(--so-line);border-radius:var(--so-radius-card);background:var(--so-code-bg);overflow:hidden}.term-screen .xterm{height:100%}.term-screen .xterm-viewport{background:var(--so-code-bg)!important}.term-keys{display:none;gap:6px;overflow-x:auto;flex:none;padding-bottom:env(safe-area-inset-bottom)}.term-key{min-width:44px;font-family:var(--so-font-mono);flex:none;touch-action:manipulation}.term-key[aria-pressed=true]{background:var(--so-soft);border-color:var(--so-ink)}.term-form{display:grid;gap:14px;align-content:start;max-width:760px;padding:var(--so-space-xl) var(--so-space-2xl)}.term-terms{justify-self:start;margin:0;padding:var(--so-space-sm) 10px;border-radius:7px;background:var(--so-raised);font-size:12.5px}.term-radios .k-radios{grid-template-columns:repeat(3,minmax(0,1fr))}@media(hover:hover)and (pointer:fine){.term-item:hover{background:color-mix(in srgb,var(--so-raised) 60%,transparent)}.term-back:hover{color:var(--so-ink)}}@media(max-width:760px){.term-tb{padding:0 var(--so-space-sm) 0 var(--so-space-xs);padding-top:env(safe-area-inset-top);min-height:calc(52px + env(safe-area-inset-top))}.term-tb .k-btn-primary{height:44px}.term-ctx{display:none}.term-tb h1{flex:1}.term-grid{grid-template-columns:minmax(0,1fr)}.term-side{border-right:0}.term-app--pane .term-side{display:none}.term-app:not(.term-app--pane) .term-main{display:none}.term-pane{padding:var(--so-space-sm) var(--so-space-sm) var(--so-space-sm);gap:var(--so-space-sm)}.term-screen{padding:var(--so-space-xs) 6px;border-radius:var(--so-radius-md)}.term-keys{display:flex}.term-form{padding:var(--so-phone-gutter)}}
1
+ .xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}:root{color-scheme:light;--so-accent: #171717;--so-accent-hover: #383838;--so-accent-text: #171717;--so-attention: var(--so-signal);--so-attention-soft: var(--so-signal-soft);--so-code-bg: #fafafa;--so-composer: #f2f2f2;--so-composer-control: #dcdcdc;--so-danger: #c4320a;--so-danger-soft: #feebe7;--so-ease-out: cubic-bezier(.23, 1, .32, 1);--so-field: #ececec;--so-field-line: #8f8f8f;--so-font-mono: "Geist Mono", ui-monospace, "SF Mono", "SFMono-Regular", "Menlo", "Consolas", monospace;--so-font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--so-ground: #efefef;--so-info: #0d74ce;--so-info-soft: #e6f4fe;--so-ink: #171717;--so-input-line: #d4d4d4;--so-line: #e6e6e6;--so-live: #0d74ce;--so-muted: #666666;--so-nav-current: #ffffff;--so-nav-current-ink: #171717;--so-nav-hover: #e4e4e4;--so-nav-ink: #525252;--so-needs: var(--so-warning);--so-needs-soft: var(--so-warning-soft);--so-neutral-ink: #525252;--so-neutral-soft: #f0f0f0;--so-on-accent: #ffffff;--so-on-attention: var(--so-on-signal);--so-on-signal: #ffffff;--so-overlay: rgb(0 0 0 / .32);--so-overlay-line: #b8b8b8;--so-paper: #ffffff;--so-phone-block: 14px;--so-phone-card: 12px;--so-phone-gap: 12px;--so-phone-gutter: 16px;--so-phone-row: 8px;--so-pill-shadow: 0px 0px 0px 1px rgb(0 0 0 / .06), 0px 1px 2px 0px rgb(0 0 0 / .06);--so-radius-badge: 5px;--so-radius-card: 10px;--so-radius-full: 9999px;--so-radius-md: 8px;--so-radius-sheet: 12px;--so-radius-sm: 6px;--so-raised: #f5f5f5;--so-ring: var(--so-ink);--so-scrim: rgb(0 0 0 / .22);--so-scroll: #cfcfcf;--so-selection: #d4d4d4;--so-shadow-overlay: 0px 0px 0px 1px rgb(0 0 0 / .08), 0px 24px 48px -12px rgb(0 0 0 / .22);--so-sheet-shadow: 0px 0px 0px 1px rgb(0 0 0 / .06), 0px 1px 2px 0px rgb(0 0 0 / .04), 0px 4px 12px -6px rgb(0 0 0 / .06);--so-sidebar: #efefef;--so-signal: #171717;--so-signal-hover: #383838;--so-signal-soft: #e8e8e8;--so-soft: #f2f2f2;--so-space-2xl: 24px;--so-space-3xl: 28px;--so-space-lg: 16px;--so-space-md: 12px;--so-space-sm: 8px;--so-space-xl: 20px;--so-space-xs: 4px;--so-success: #218358;--so-success-soft: #e6f6eb;--so-typography-badge: var(--so-typography-badge-font-weight) var(--so-typography-badge-font-size)/var(--so-typography-badge-line-height) var(--so-typography-badge-font-family);--so-typography-badge-font-family: var(--so-font-sans);--so-typography-badge-font-size: 11.5px;--so-typography-badge-font-weight: 500;--so-typography-badge-line-height: 1.5652;--so-typography-body: var(--so-typography-body-font-weight) var(--so-typography-body-font-size)/var(--so-typography-body-line-height) var(--so-typography-body-font-family);--so-typography-body-font-family: var(--so-font-sans);--so-typography-body-font-size: 13px;--so-typography-body-font-weight: 400;--so-typography-body-line-height: 1.5;--so-typography-body-reading: var(--so-typography-body-reading-font-weight) var(--so-typography-body-reading-font-size)/var(--so-typography-body-reading-line-height) var(--so-typography-body-reading-font-family);--so-typography-body-reading-font-family: var(--so-font-sans);--so-typography-body-reading-font-size: 14px;--so-typography-body-reading-font-weight: 400;--so-typography-body-reading-line-height: 1.7;--so-typography-caption: var(--so-typography-caption-font-weight) var(--so-typography-caption-font-size)/var(--so-typography-caption-line-height) var(--so-typography-caption-font-family);--so-typography-caption-font-family: var(--so-font-sans);--so-typography-caption-font-size: 12px;--so-typography-caption-font-weight: 500;--so-typography-caption-line-height: 1.5;--so-typography-display: var(--so-typography-display-font-weight) var(--so-typography-display-font-size)/var(--so-typography-display-line-height) var(--so-typography-display-font-family);--so-typography-display-font-family: var(--so-font-sans);--so-typography-display-font-size: 26px;--so-typography-display-font-weight: 600;--so-typography-display-letter-spacing: -.65px;--so-typography-display-line-height: 1.25;--so-typography-headline: var(--so-typography-headline-font-weight) var(--so-typography-headline-font-size)/var(--so-typography-headline-line-height) var(--so-typography-headline-font-family);--so-typography-headline-font-family: var(--so-font-sans);--so-typography-headline-font-size: 18px;--so-typography-headline-font-weight: 600;--so-typography-headline-line-height: 1.375;--so-typography-label: var(--so-typography-label-font-weight) var(--so-typography-label-font-size)/var(--so-typography-label-line-height) var(--so-typography-label-font-family);--so-typography-label-font-family: var(--so-font-sans);--so-typography-label-font-size: 13px;--so-typography-label-font-weight: 500;--so-typography-label-line-height: 1.2;--so-typography-mono: var(--so-typography-mono-font-weight) var(--so-typography-mono-font-size)/var(--so-typography-mono-line-height) var(--so-typography-mono-font-family);--so-typography-mono-count: var(--so-typography-mono-count-font-weight) var(--so-typography-mono-count-font-size)/var(--so-typography-mono-count-line-height) var(--so-typography-mono-count-font-family);--so-typography-mono-count-font-family: var(--so-font-mono);--so-typography-mono-count-font-size: 11px;--so-typography-mono-count-font-weight: 500;--so-typography-mono-count-line-height: 1;--so-typography-mono-font-family: var(--so-font-mono);--so-typography-mono-font-size: 12px;--so-typography-mono-font-weight: 400;--so-typography-mono-line-height: 1.5;--so-typography-title: var(--so-typography-title-font-weight) var(--so-typography-title-font-size)/var(--so-typography-title-line-height) var(--so-typography-title-font-family);--so-typography-title-font-family: var(--so-font-sans);--so-typography-title-font-size: 15px;--so-typography-title-font-weight: 600;--so-typography-title-letter-spacing: -.15px;--so-typography-title-line-height: 1.4;--so-typography-title-sm: var(--so-typography-title-sm-font-weight) var(--so-typography-title-sm-font-size)/var(--so-typography-title-sm-line-height) var(--so-typography-title-sm-font-family);--so-typography-title-sm-font-family: var(--so-font-sans);--so-typography-title-sm-font-size: 14px;--so-typography-title-sm-font-weight: 600;--so-typography-title-sm-letter-spacing: -.14px;--so-typography-title-sm-line-height: 1.3;--so-user-bubble: #f2f2f2;--so-warning: #ab6400;--so-warning-soft: #fff4d5}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--so-accent: #ededed;--so-accent-hover: #ffffff;--so-accent-text: #ededed;--so-code-bg: #111111;--so-composer: #242424;--so-composer-control: #333333;--so-danger: #ff977d;--so-danger-soft: rgb(255 151 125 / .12);--so-field: #232323;--so-field-line: #6b6b6b;--so-ground: #0b0b0b;--so-info: #70b8ff;--so-info-soft: rgb(112 184 255 / .12);--so-ink: #ededed;--so-input-line: #363636;--so-line: #262626;--so-live: #70b8ff;--so-muted: #a1a1a1;--so-nav-current: #1f1f1f;--so-nav-current-ink: #ededed;--so-nav-hover: #171717;--so-nav-ink: #a1a1a1;--so-neutral-ink: #b4b4b4;--so-neutral-soft: #1f1f1f;--so-on-accent: #0a0a0a;--so-on-signal: #0a0a0a;--so-overlay: rgb(0 0 0 / .6);--so-overlay-line: #4a4a4a;--so-paper: #161616;--so-pill-shadow: 0px 0px 0px 1px #2a2a2a, 0px 1px 2px 0px rgb(0 0 0 / .5);--so-raised: #1c1c1c;--so-scrim: rgb(0 0 0 / .5);--so-scroll: #333333;--so-selection: #3a3a3a;--so-shadow-overlay: 0px 0px 0px 1px #2e2e2e, 0px 24px 48px -12px rgb(0 0 0 / .7);--so-sheet-shadow: 0px 0px 0px 1px #262626, 0px 1px 2px 0px rgb(0 0 0 / .4);--so-sidebar: #0b0b0b;--so-signal: #ededed;--so-signal-hover: #ffffff;--so-signal-soft: #2e2e2e;--so-soft: #1f1f1f;--so-success: #3dd68c;--so-success-soft: rgb(61 214 140 / .12);--so-user-bubble: #202020;--so-warning: #ffca16;--so-warning-soft: rgb(255 202 22 / .12)}}:root[data-theme=dark]{color-scheme:dark;--so-accent: #ededed;--so-accent-hover: #ffffff;--so-accent-text: #ededed;--so-code-bg: #111111;--so-composer: #242424;--so-composer-control: #333333;--so-danger: #ff977d;--so-danger-soft: rgb(255 151 125 / .12);--so-field: #232323;--so-field-line: #6b6b6b;--so-ground: #0b0b0b;--so-info: #70b8ff;--so-info-soft: rgb(112 184 255 / .12);--so-ink: #ededed;--so-input-line: #363636;--so-line: #262626;--so-live: #70b8ff;--so-muted: #a1a1a1;--so-nav-current: #1f1f1f;--so-nav-current-ink: #ededed;--so-nav-hover: #171717;--so-nav-ink: #a1a1a1;--so-neutral-ink: #b4b4b4;--so-neutral-soft: #1f1f1f;--so-on-accent: #0a0a0a;--so-on-signal: #0a0a0a;--so-overlay: rgb(0 0 0 / .6);--so-overlay-line: #4a4a4a;--so-paper: #161616;--so-pill-shadow: 0px 0px 0px 1px #2a2a2a, 0px 1px 2px 0px rgb(0 0 0 / .5);--so-raised: #1c1c1c;--so-scrim: rgb(0 0 0 / .5);--so-scroll: #333333;--so-selection: #3a3a3a;--so-shadow-overlay: 0px 0px 0px 1px #2e2e2e, 0px 24px 48px -12px rgb(0 0 0 / .7);--so-sheet-shadow: 0px 0px 0px 1px #262626, 0px 1px 2px 0px rgb(0 0 0 / .4);--so-sidebar: #0b0b0b;--so-signal: #ededed;--so-signal-hover: #ffffff;--so-signal-soft: #2e2e2e;--so-soft: #1f1f1f;--so-success: #3dd68c;--so-success-soft: rgb(61 214 140 / .12);--so-user-bubble: #202020;--so-warning: #ffca16;--so-warning-soft: rgb(255 202 22 / .12)}:root{--so-needs-ink: color-mix(in srgb, var(--so-needs) 78%, var(--so-ink));--so-live-ink: color-mix(in srgb, var(--so-info) 82%, var(--so-ink));--so-done-ink: color-mix(in srgb, var(--so-success) 80%, var(--so-ink));--so-fail-ink: color-mix(in srgb, var(--so-danger) 85%, var(--so-ink));--m-quick: .12s;--m-base: .16s;--m-slow: .22s;--m-ease: var(--so-ease-out)}.k-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:0;padding:0;border:0}.k-mono{font-family:var(--so-font-mono);font-size:12px;font-weight:400}.k-num{font-variant-numeric:tabular-nums}.k-muted{color:var(--so-muted)}.k-grow{flex:1}.k-i{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}.k-i-sm{width:14px;height:14px}.k-link{color:inherit;text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}.k-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;height:32px;min-height:0;margin:0;padding:0 12px;border-radius:var(--so-radius-md);border:1px solid transparent;background:transparent;color:var(--so-ink);font:var(--so-typography-label);white-space:nowrap;text-decoration:none;position:relative;cursor:pointer;user-select:none;box-shadow:none;transition:background-color var(--m-quick) var(--m-ease),color var(--m-quick) var(--m-ease),border-color var(--m-quick) var(--m-ease),transform var(--m-quick) var(--m-ease)}.k-btn:active:not(:disabled):not([aria-disabled=true]){transform:scale(.97)}.k-btn.k-btn-primary{background:var(--so-accent);color:var(--so-on-accent);border-color:var(--so-accent)}.k-btn.k-btn-primary.busy{background:var(--so-accent-hover)}.k-btn.k-btn-outline{background:var(--so-paper);border-color:var(--so-field-line)}.k-btn.k-btn-ghost{color:var(--so-muted)}.k-btn.k-btn-danger{background:var(--so-paper);border-color:color-mix(in srgb,var(--so-danger) 55%,transparent);color:var(--so-fail-ink)}.k-btn-sm{height:28px;padding:0 10px;font-size:12.5px}.k-btn-icon{width:32px;padding:0}.k-btn-sm.k-btn-icon{width:28px}.k-btn:disabled,.k-btn[aria-disabled=true]{cursor:default;opacity:.55}.k-face{display:inline-flex;align-items:center;gap:6px}.k-btn.swap .k-face{animation:k-face var(--m-base) var(--m-ease) both}.k-spin{width:14px;height:14px;border-radius:50%;border:1.5px solid currentColor;border-right-color:transparent;animation:k-spin .6s linear infinite}.k-check-draw path{stroke-dasharray:24;stroke-dashoffset:24;animation:k-draw var(--m-slow) var(--m-ease) 40ms forwards}@keyframes k-face{0%{opacity:0;transform:translateY(3px)}}@keyframes k-spin{to{transform:rotate(360deg)}}@keyframes k-draw{to{stroke-dashoffset:0}}.k-chip{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 7px;border-radius:6px;font:var(--so-typography-badge);background:var(--so-neutral-soft);color:var(--so-neutral-ink);white-space:nowrap;flex:none}.k-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--dot, var(--so-muted));flex:none}.k-chip.needs{background:var(--so-needs-soft);color:var(--so-needs-ink);--dot: var(--so-needs)}.k-chip.ask{background:var(--so-neutral-soft);color:var(--so-ink);--dot: var(--so-needs)}.k-chip.live{background:var(--so-info-soft);color:var(--so-live-ink);--dot: var(--so-info)}.k-chip.done{background:var(--so-success-soft);color:var(--so-done-ink);--dot: var(--so-success)}.k-chip.failed{background:var(--so-danger-soft);color:var(--so-fail-ink);--dot: var(--so-danger)}.k-chip.nodot:before{display:none}.k-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;font:500 11px/18px var(--so-font-sans);font-variant-numeric:tabular-nums;background:var(--so-neutral-soft);color:var(--so-neutral-ink)}.k-count.ink{background:var(--so-ink);color:var(--so-paper)}.k-count.zero{background:transparent;color:var(--so-muted)}.k-dot{width:8px;height:8px;border-radius:50%;background:var(--dot, var(--so-muted));flex:none;display:inline-block}.k-dot.needs{--dot: var(--so-needs)}.k-seg{display:inline-flex;padding:2px;gap:2px;border-radius:9px;background:var(--so-raised)}.k-seg>a,.k-seg>button{display:inline-flex;align-items:center;gap:6px;height:26px;min-height:0;margin:0;padding:0 9px;border:0;border-radius:7px;background:transparent;color:var(--so-muted);font:var(--so-typography-label);font-size:12.5px;white-space:nowrap;text-decoration:none;cursor:pointer;box-shadow:none}.k-seg>[aria-current],.k-seg>[aria-pressed=true],.k-seg>[aria-selected=true]{background:var(--so-paper);color:var(--so-ink);box-shadow:inset 0 0 0 1px var(--so-field-line)}.k-seg .k-count{background:transparent;padding:0 1px;min-width:0;color:inherit;height:auto;line-height:1}.k-seg .k-count.ink{background:var(--so-ink);color:var(--so-paper);padding:0 5px;min-width:18px;height:18px;line-height:18px}.k-tabs{display:flex;gap:20px;border-bottom:1px solid var(--so-line);margin:0;padding:0}.k-tabs>button,.k-tabs>a{display:inline-flex;align-items:center;gap:6px;min-height:0;margin:0 0 -1px;padding:10px 0;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--so-muted);font:var(--so-typography-label);text-decoration:none;cursor:pointer;box-shadow:none;transition:color var(--m-quick) var(--m-ease),border-color var(--m-quick) var(--m-ease)}.k-tabs>[aria-selected=true],.k-tabs>[aria-current]{color:var(--so-ink);border-bottom-color:var(--so-ink)}.k-tabs .k-count{margin-left:2px}.k-field{display:grid;gap:6px;margin:0;min-width:0}.k-label{display:block;margin:0;font:500 12.5px/1.35 var(--so-font-sans);color:var(--so-muted)}.k-hint{margin:0;font-size:12px;color:var(--so-muted);line-height:1.45}.k-input.k-input,.k-textarea.k-textarea,.k-sel.k-sel{box-sizing:border-box;width:100%;margin:0;border:1px solid transparent;border-radius:12px;background:var(--so-field);color:var(--so-ink);font:400 13.5px/1.4 var(--so-font-sans);box-shadow:none;transition:background-color var(--m-quick) var(--m-ease)}.k-input.k-input{height:36px;min-height:0;padding:0 12px}.k-textarea.k-textarea{min-height:76px;max-height:360px;padding:10px 12px;resize:none;field-sizing:content;overflow-y:auto;max-width:640px;line-height:1.5}.k-input::placeholder,.k-textarea::placeholder{color:var(--so-muted);opacity:1}.k-input:focus-visible,.k-textarea:focus-visible,.k-sel:focus-visible{outline:2px solid var(--so-ring);outline-offset:1px;box-shadow:none}.k-input[aria-invalid=true],.k-textarea[aria-invalid=true],.k-sel[aria-invalid=true]{border-color:var(--so-danger)}.k-input:disabled,.k-textarea:disabled,.k-sel:disabled{color:var(--so-muted);cursor:default}.k-err{display:block;margin:0;font-size:12px;color:var(--so-fail-ink);line-height:1.45}.k-err:empty{display:none}.k-selw{position:relative;display:inline-block;min-width:0;max-width:100%}.k-selw:after{content:"";position:absolute;right:13px;top:50%;margin-top:-5px;width:6px;height:6px;border:solid var(--so-muted);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);pointer-events:none}.k-sel.k-sel{appearance:none;-webkit-appearance:none;height:36px;min-height:0;padding:0 32px 0 12px;line-height:1;text-overflow:ellipsis;cursor:pointer}.k-selw.sm .k-sel{height:28px;border-radius:999px;font:500 12.5px/1 var(--so-font-sans);padding:0 26px 0 11px}.k-selw.sm:after{right:11px}.k-selw.wide{display:block;width:100%}.k-selw-chip:after{right:12px}.k-selw-chip .k-sel.k-sel{height:36px;border-radius:999px;padding:0 30px 0 14px;background:var(--so-composer-control);font:500 13.5px/1 var(--so-font-sans)}.k-switch{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:28px;margin:0;padding:0;border:0;background:transparent;font:500 12.5px/1 var(--so-font-sans);color:var(--so-muted);cursor:pointer;box-shadow:none}.k-trk{position:relative;width:32px;height:18px;border-radius:9px;border:1px solid var(--so-field-line);background:var(--so-paper);transition:background-color var(--m-quick) var(--m-ease),border-color var(--m-quick) var(--m-ease);flex:none;box-sizing:border-box}.k-trk:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--so-muted);transition:transform var(--m-quick) var(--m-ease),background-color var(--m-quick) var(--m-ease)}.k-switch[aria-checked=true],.k-switch:has(input:checked){color:var(--so-ink)}.k-switch[aria-checked=true] .k-trk,.k-switch input:checked+.k-trk{background:var(--so-ink);border-color:var(--so-ink)}.k-switch[aria-checked=true] .k-trk:after,.k-switch input:checked+.k-trk:after{transform:translate(14px);background:var(--so-paper)}.k-switch .k-switch-input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}.k-switch:focus-visible,.k-switch:has(input:focus-visible){outline:2px solid var(--so-ring);outline-offset:3px;border-radius:4px}.k-radios{display:grid;gap:8px;grid-template-columns:1fr 1fr;margin:0;padding:0;border:0;min-width:0}.k-opt{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;margin:0;padding:11px 14px;border:1px solid var(--so-field-line);border-radius:10px;font:var(--so-typography-body);cursor:pointer}.k-opt input{margin:3px 0 0;accent-color:var(--so-ink)}.k-opt>span{display:grid;gap:3px}.k-opt>span>span{font-size:12.5px;color:var(--so-muted)}.k-opt:has(input:checked){border-color:var(--so-ink);box-shadow:inset 0 0 0 1px var(--so-ink)}.k-checks{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px}.k-checks label{display:inline-flex;gap:8px;align-items:center;min-height:28px;margin:0;font:var(--so-typography-body)}.k-checks input{accent-color:var(--so-ink);width:15px;height:15px;margin:0}.k-frow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,300px);gap:8px 24px;align-items:center;min-height:52px;padding:10px 0;border-bottom:1px solid var(--so-line)}.k-frow.wide{grid-template-columns:minmax(0,1fr)}.k-frow.top{align-items:start}.k-frow-l{display:grid;gap:2px;min-width:0}.k-frow-t{margin:0;font-weight:500;font-size:13px;display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--so-ink)}.k-frow-h{font-size:12.5px;color:var(--so-muted);line-height:1.45}.k-frow-c{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;flex-wrap:wrap}.k-frow-c .k-input,.k-frow-c .k-selw{max-width:300px;width:100%}.k-frow-c .k-seg{flex:none}.k-frow .k-err{width:100%;text-align:right}.k-frow.wide .k-frow-c{justify-content:flex-start}.k-frow.wide .k-frow-c>*{flex:1;min-width:0}.k-frow.wide .k-frow-c>.k-btn,.k-frow.wide .k-frow-c>.k-switch{flex:none}.k-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.k-facts{display:grid;grid-template-columns:112px minmax(0,1fr);gap:10px 16px;margin:0;font-size:12.5px;line-height:1.45}.k-facts dt{color:var(--so-muted);margin:0}.k-facts dd{min-width:0;margin:0;overflow-wrap:anywhere}.k-facts a{color:inherit;text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}.k-note{margin:0;font-size:12px;color:var(--so-muted);line-height:1.45}.k-notice{display:flex;gap:8px;align-items:flex-start;margin:0;font-size:12.5px;color:var(--so-fail-ink);line-height:1.45}.k-notice .k-i{margin-top:1px}.k-notice.info{color:var(--so-ink);background:var(--so-raised);border-radius:7px;padding:8px 10px}.k-empty{display:grid;justify-items:start;gap:10px;padding:28px 24px}.k-empty-t{color:var(--so-ink);font-weight:600;font-size:14px;margin:0}.k-empty-x{color:var(--so-muted);font-size:13px;margin:0;max-width:60ch}.k-doc .k-empty,.k-sbody .k-empty,.k-drawer .k-empty,.k-tabbody .k-empty{padding:16px 0}.k-terms{margin:0;font-size:13px;font-weight:500;padding:8px 10px;background:var(--so-raised);border-radius:7px;justify-self:start}.k-disclose>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:0;margin:0;padding:0;font-size:12.5px;font-weight:400;color:var(--so-ink);text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}.k-disclose>summary::-webkit-details-marker{display:none}.k-disclose>summary:before{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);transition:transform var(--m-quick) var(--m-ease);margin-right:2px}.k-disclose[open]>summary:before{transform:rotate(45deg)}.k-disclose{margin:0;padding:0;border:0}.k-grp{display:flex;align-items:center;gap:8px;height:36px;margin:8px 0 0;padding:0 24px;font:600 12.5px/1 var(--so-font-sans);border-bottom:1px solid var(--so-line);color:var(--so-ink)}.k-row{display:grid;grid-template-columns:96px minmax(160px,30%) minmax(0,1fr) auto 124px;align-items:center;gap:16px;min-height:48px;padding:6px 24px;border-bottom:1px solid var(--so-line);position:relative}.k-row-t{font-weight:500;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--so-ink);text-decoration:none}.k-row.wait .k-row-t{font-weight:600}.k-row-t:before{content:"";position:absolute;inset:0}.k-row.k-row-static .k-row-t:before{content:none}.k-row-d{color:var(--so-muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.k-row-m{display:flex;gap:12px;color:var(--so-muted);font-size:12px;white-space:nowrap}.k-row-a{display:flex;justify-content:flex-end}.k-row-a .k-btn{min-width:108px}.k-row-c,.k-row-a,.k-row-msg{position:relative;z-index:1}.k-row-msg{grid-column:2 / -1}.k-filter{display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;height:28px;width:168px;margin:0;padding:0 8px;border:1px solid var(--so-field-line);border-radius:var(--so-radius-md);background:var(--so-paper);color:var(--so-muted);cursor:text}.k-filter>input{flex:1;min-width:0;height:100%;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;outline:none;color:var(--so-ink);font:400 12.5px/1 var(--so-font-sans)}.k-filter>input::placeholder{color:var(--so-muted)}.k-filter>input::-webkit-search-cancel-button{display:none}.k-filter:focus-within{border-color:var(--so-ink);box-shadow:inset 0 0 0 1px var(--so-ink)}.k-seg.k-seg-icons>a,.k-seg.k-seg-icons>button{padding:0 6px}.k-tbp{display:none}.k-foot{margin:0;padding:12px 24px;font-size:12.5px;color:var(--so-muted)}.k-foot a{color:var(--so-ink);text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}.k-board{display:grid;grid-template-columns:repeat(var(--k-cols, 4),minmax(0,1fr));align-items:stretch;flex:1;min-height:0}.k-col{min-width:0;border-right:1px solid var(--so-line)}.k-col:last-child{border-right:0}.k-col-h{display:flex;align-items:center;gap:8px;height:40px;margin:0;padding:0 16px;border-bottom:1px solid var(--so-line);font:600 12.5px/1 var(--so-font-sans);color:var(--so-ink)}.k-col-h.needs:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--so-needs);flex:none}.k-card{display:grid;gap:5px;padding:11px 16px;border-bottom:1px solid var(--so-line);color:var(--so-ink);text-decoration:none;outline-offset:-2px}.k-card-t{font-weight:500;font-size:13px;line-height:1.35;overflow-wrap:anywhere}.k-card-m{display:flex;flex-wrap:wrap;gap:8px;align-items:center;color:var(--so-muted);font-size:12px}.k-col-e{margin:0;padding:12px 16px;font-size:12.5px;color:var(--so-muted)}.k-colpager{display:none}.k-colpager>.k-seg{display:flex;width:100%}.k-tb{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;min-height:48px;padding:8px 24px;border-bottom:1px solid var(--so-line);position:sticky;top:0;z-index:6;background:var(--so-paper)}.k-tb h1{margin:0;font:600 15px/1.3 var(--so-font-sans);letter-spacing:-.01em}.k-tb-ctx{color:var(--so-muted);font-size:12.5px}.k-tb-ctx>.k-seg{vertical-align:middle}.k-tb-ctx>.k-seg+.k-seg{margin-left:8px}.k-ph{display:none}.k-doc{box-sizing:border-box;width:100%;max-width:760px;margin:0 auto;padding:22px 28px 120px;display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-content:start}.k-backlink{display:inline-flex;align-items:center;gap:6px;color:var(--so-muted);font:var(--so-typography-label);justify-self:start;min-height:24px;text-decoration:none}.k-dh{display:flex;align-items:flex-start;gap:6px}.k-dh>div{flex:1;display:grid;gap:6px;min-width:0}.k-dh h1{margin:0;font:600 24px/1.3 var(--so-font-sans);letter-spacing:-.02em;color:var(--so-ink)}.k-dh h1:first-letter{text-transform:none}.k-dh-meta{margin:0;font-size:12.5px;color:var(--so-muted)}.k-same{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(min-width:761px){.k-same{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}}.k-sec{display:grid;gap:10px}.k-sec h3,.k-secthead h3{margin:0;font:600 13px/1.3 var(--so-font-sans)}.k-secthead{display:flex;align-items:center;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--so-line)}.k-secthead h3{flex:1;display:flex;align-items:center;gap:8px}.k-steps{--k-n: 5;position:relative;display:grid;grid-template-columns:repeat(var(--k-n),minmax(0,1fr));margin:0;padding:2px 0 0;list-style:none}.k-steps:before,.k-steps-fill{content:"";position:absolute;top:8px;left:calc(50% / var(--k-n));right:calc(50% / var(--k-n));height:1.5px;background:var(--so-line)}.k-steps-fill{background:var(--so-success);transform-origin:left center;transform:scaleX(var(--k-fill, 0));transition:transform var(--m-slow) var(--m-ease)}.k-step{position:relative;z-index:1;display:grid;justify-items:center;align-content:start;gap:7px;min-width:0;margin:0;padding:0;text-align:center;font-size:12px;color:var(--so-muted)}.k-step>b{display:block;position:relative;box-sizing:border-box;width:13px;height:13px;margin-top:2px;border-radius:50%;border:1.5px solid var(--so-field-line);background:var(--so-paper)}.k-step.done>b{border-color:var(--so-success);background:var(--so-success)}.k-step.done>b:before{content:"";position:absolute;left:3px;top:1px;width:3px;height:6px;border:solid var(--so-paper);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.k-step.now,.k-step.live,.k-step.failed{color:var(--so-ink);font-weight:600}.k-step.now>b{border-color:var(--so-needs);background:var(--so-needs);box-shadow:inset 0 0 0 2.5px var(--so-paper)}.k-step.live>b{border-color:var(--so-info);background:var(--so-info);box-shadow:inset 0 0 0 2.5px var(--so-paper)}.k-step.failed>b{border-color:var(--so-danger);background:var(--so-danger)}.k-step-l{line-height:1.2;white-space:nowrap}.k-step-s{margin-top:-4px;min-height:1.3em;font-size:11.5px;font-weight:400;line-height:1.3;color:var(--so-muted);white-space:nowrap}.k-slots{border:1px solid var(--so-line);border-radius:var(--so-radius-card);padding:16px 18px;display:grid;gap:10px;background:var(--so-paper);transition:border-color var(--m-slow) var(--m-ease)}.k-slots.wait{border-color:var(--so-needs)}.k-slot-status{display:flex;align-items:center;gap:10px;min-height:24px;flex-wrap:wrap}.k-slot-status h2{margin:0;font:600 15px/1.35 var(--so-font-sans)}.k-slot-text{margin:0;color:var(--so-muted);font-size:13px;line-height:1.5;min-height:1.5em}.k-slot-acts{min-height:32px}.k-slot-acts .k-btn{min-width:136px}.k-slot-acts .k-btn.k-btn-ghost{min-width:0}.k-slot-terms{margin:0;font-size:12px;color:var(--so-muted);line-height:1.5;min-height:1.5em}.k-slot-err:empty{display:none}.k-slot-body{display:grid;gap:12px;min-width:0}.k-opt>.k-chip{align-self:start}.k-reauth{display:grid;gap:6px;max-width:320px}.k-needs{border:1px solid var(--so-needs);border-radius:var(--so-radius-card);background:var(--so-paper)}.k-needs-h{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;border-bottom:1px solid var(--so-line);font:600 13px/1.3 var(--so-font-sans)}.k-needs-h:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--so-needs)}.k-needs-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;align-items:center;padding:12px 16px}.k-needs-item+.k-needs-item{border-top:1px solid var(--so-line)}.k-needs-item b{font-weight:600}.k-needs-item p{margin:2px 0 0;font-size:12.5px;color:var(--so-muted);line-height:1.45}.k-needs-item .k-acts .k-btn{min-width:124px}.k-scrim{position:fixed;inset:0;z-index:25;background:transparent;animation:k-fade var(--m-slow) var(--m-ease) both}.k-scrim.dim{background:var(--so-scrim)}.k-pop{position:fixed;z-index:40;box-sizing:border-box;width:336px;max-width:calc(100vw - 16px);padding:14px;border-radius:10px;background:var(--so-paper);color:var(--so-ink);border:1px solid var(--so-overlay-line);display:grid;gap:10px}.k-pop-h{display:flex;align-items:center;gap:8px;margin:-4px -6px 0 0}.k-pop-h h3{margin:0;font:var(--so-typography-title-sm);flex:1}.k-pop p{margin:0;font-size:12.5px;color:var(--so-muted);line-height:1.5}.k-pop .k-pop-terms{color:var(--so-ink);font-weight:500;font-size:13px;padding:8px 10px;background:var(--so-raised);border-radius:7px}.k-pop .k-pop-foot{font-size:12px;border-top:1px solid var(--so-line);padding-top:10px}.k-pop .k-input{height:36px}.k-pop.k-pop-menu{width:240px}.k-drawer{position:fixed;top:8px;right:8px;bottom:8px;width:400px;max-width:calc(100vw - 16px);z-index:30;background:var(--so-paper);color:var(--so-ink);border-radius:12px;border:1px solid var(--so-overlay-line);overflow:auto;display:flex;flex-direction:column}.k-drawer-h{display:flex;align-items:center;gap:6px;padding:10px 10px 10px 20px;border-bottom:1px solid var(--so-line);position:sticky;top:0;background:var(--so-paper)}.k-drawer-h h2{margin:0;font:600 14px/1.3 var(--so-font-sans);flex:1}.k-drawer-b{padding:18px 20px 28px;display:grid;gap:22px;align-content:start}.k-sheet{position:fixed;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:45;max-height:calc(100dvh - 16px);display:flex;flex-direction:column;background:var(--so-paper);color:var(--so-ink);border-radius:14px;border:1px solid var(--so-overlay-line)}.k-sheet-h{display:flex;align-items:center;gap:8px;padding:6px 6px 8px 16px;border-bottom:1px solid var(--so-line);flex:none}.k-sheet-ht{flex:1;min-width:0;display:grid;gap:2px;padding-top:4px}.k-sheet-h h2{margin:0;font:600 15px/1.3 var(--so-font-sans);display:flex;gap:8px;align-items:center;white-space:nowrap}.k-sheet-b{overflow:auto;padding:0 0 12px}.k-pop:focus,.k-drawer:focus,.k-sheet:focus{outline:none}.k-pop[hidden],.k-drawer[hidden],.k-sheet[hidden]{display:none}.k-scrim.stacked{z-index:48}.k-pop.stacked,.k-sheet.stacked,.k-drawer.stacked{z-index:50}.k-menu{display:grid;gap:1px;margin:0 -6px}.k-menu>button,.k-menu>a{display:flex;align-items:center;box-sizing:border-box;width:100%;min-height:32px;margin:0;padding:0 8px;border:0;border-radius:6px;background:transparent;color:var(--so-ink);font:var(--so-typography-label);text-align:left;text-decoration:none;cursor:pointer;box-shadow:none}.k-menu>[aria-current=true]{font-weight:600}.k-sheet .k-menu{margin:0;padding:6px 8px 4px}.k-grow-in{transform-origin:var(--origin, top left);animation:k-grow var(--m-base) var(--m-ease) both}.k-drawer.k-grow-in,.k-sheet.k-grow-in{animation-duration:var(--m-slow)}@keyframes k-grow{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes k-fade{0%{opacity:0}}.k-msg-in{animation:k-msg var(--m-base) var(--m-ease) both}@keyframes k-msg{0%{opacity:0;transform:translateY(-3px)}}.k-swap-in{animation:k-swap var(--m-base) var(--m-ease) both}@keyframes k-swap{0%{opacity:0;transform:translateY(4px)}}.k-composer-field{display:grid;gap:6px;min-width:0}.k-composer{--c-r: 28px;box-sizing:border-box;border:1px solid transparent;border-radius:var(--c-r);background:var(--so-composer);display:grid;padding:8px 10px 10px;transition:border-color var(--m-quick) var(--m-ease),background-color var(--m-quick) var(--m-ease)}.k-composer{outline:2px solid transparent;outline-offset:2px}.k-composer:focus-within{background:color-mix(in srgb,var(--so-composer) 97%,var(--so-ink))}html:not(.k-js) .k-composer:focus-within,html.k-kbd .k-composer:focus-within{outline-color:var(--so-ring)}.k-composer.off{background:var(--so-raised);color:var(--so-muted)}.k-composer-ta.k-composer-ta{box-sizing:border-box;width:100%;min-height:44px;margin:0;padding:10px 10px 8px;border:0;border-radius:0;outline:none;resize:none;background:transparent;box-shadow:none;color:var(--so-ink);font:400 17px/1.5 var(--so-font-sans);letter-spacing:-.005em;overflow-y:hidden;scrollbar-width:thin}.k-composer-ta::placeholder{color:var(--so-muted);opacity:1}.k-composer-ta:focus,.k-composer-ta:focus-visible{outline:none;box-shadow:none}.k-composer:has(.k-composer-ta[aria-invalid=true]){border-color:var(--so-danger)}.k-composer+.k-err{margin-top:6px}.k-composer-bar{display:flex;align-items:center;gap:8px;padding:4px 0 0;flex-wrap:wrap;min-height:40px}.k-composer-plus{box-sizing:border-box;width:36px;height:36px;min-height:0;margin:0;padding:0;border-radius:50%;display:grid;place-items:center;flex:none;color:var(--so-ink);border:0;background:var(--so-composer-control);cursor:pointer;box-shadow:none;transition:background-color var(--m-quick) var(--m-ease),color var(--m-quick) var(--m-ease)}.k-composer-plus .k-i{width:18px;height:18px}.k-composer-chip{box-sizing:border-box;height:36px;min-height:0;max-width:100%;margin:0;display:inline-flex;align-items:center;gap:6px;padding:0 14px;border:0;border-radius:999px;font:500 13.5px/1 var(--so-font-sans);color:var(--so-ink);background:var(--so-composer-control);cursor:pointer;box-shadow:none;transition:background-color var(--m-quick) var(--m-ease),color var(--m-quick) var(--m-ease)}.k-composer-chip>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.k-composer-chip .k-chip-sub{color:var(--so-muted);font-weight:400}.k-composer-plus:disabled,.k-composer-chip:disabled{opacity:.5;pointer-events:none}.k-composer-bar .k-btn:not(.k-send){border-color:transparent;border-radius:999px;background:var(--so-composer-control)}.k-composer-plus:focus-visible,.k-composer-chip:focus-visible{outline:2px solid var(--so-ring);outline-offset:2px}.k-tchip{position:relative;box-sizing:border-box;height:36px;margin:0;display:inline-flex;align-items:center;gap:8px;padding:0 14px 0 12px;border-radius:999px;background:var(--so-composer-control);color:var(--so-muted);font:500 13.5px/1 var(--so-font-sans);cursor:pointer;transition:color var(--m-quick) var(--m-ease)}.k-tchip>input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}.k-tchip-mark{box-sizing:border-box;width:14px;height:14px;border-radius:50%;border:1.5px solid currentColor;flex:none;display:grid;place-items:center;transition:background-color var(--m-quick) var(--m-ease),border-color var(--m-quick) var(--m-ease)}.k-tchip:has(input:checked){color:var(--so-ink)}.k-tchip:has(input:checked) .k-tchip-mark{background:var(--so-ink);border-color:var(--so-ink)}.k-tchip:has(input:checked) .k-tchip-mark:after{content:"";width:3px;height:6px;margin-top:-2px;border:solid var(--so-paper);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.k-tchip:has(input:focus-visible){outline:2px solid var(--so-ring);outline-offset:2px}.k-send-slot{position:relative;display:inline-grid;width:36px;height:36px;flex:none}.k-send-slot .k-send{grid-area:1 / 1;position:relative;box-sizing:border-box;width:36px;height:36px;min-height:0;margin:0;padding:0;border-radius:50%;display:grid;place-items:center;background:var(--so-ink);color:var(--so-paper);border:0;cursor:pointer;box-shadow:none;transition:background-color var(--m-quick) var(--m-ease),color var(--m-quick) var(--m-ease),transform var(--m-base) var(--m-ease)}.k-send:before{content:"";position:absolute;inset:-4px}.k-send .k-i{width:18px;height:18px;stroke-width:2.2}.k-send[aria-disabled=true],.k-composer:not(.has-text) .k-send:not(.k-stop){background:var(--so-composer-control);color:var(--so-muted)}.k-send[aria-disabled=true]{cursor:default}.k-send:not([aria-disabled=true]):active{transform:scale(.94)}.k-stop{visibility:hidden}.k-stop .k-i{fill:currentColor;width:12px;height:12px}.k-composer.working .k-send:not(.k-stop){visibility:hidden}.k-composer.working .k-stop{visibility:visible}.k-composer.working .k-stop .k-i,.k-composer.was-working:not(.working) .k-send:not(.k-stop) .k-i{animation:k-morph var(--m-base) var(--m-ease)}@keyframes k-morph{0%{opacity:0;transform:scale(.82)}}.k-send:focus-visible{outline:2px solid var(--so-ring);outline-offset:2px}.k-composer-files{display:flex;flex-wrap:wrap;gap:6px;padding:0 8px}.k-composer-files:empty{display:none}.k-composer-file{display:inline-flex;align-items:center;gap:6px;height:28px;margin-top:6px;padding:0 4px 0 12px;border:0;border-radius:999px;background:var(--so-composer-control);font-size:12px}.k-composer-file button{width:22px;height:22px;min-height:0;margin:0;padding:0;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--so-muted)}.k-composer-note.k-composer-note{margin:0;padding:0 16px;font-size:12px;color:var(--so-muted);line-height:1.45}.k-composer-err{padding:0 16px}.k-composer-err:empty{display:none}.k-composer.line{--c-r: 26px;grid-template-columns:minmax(0,1fr) auto;align-items:end;padding:5px 6px 5px 10px}.k-composer.line .k-composer-ta{padding:9px 6px;min-height:42px;font-size:16px}.k-composer.line .k-composer-bar{padding:0 0 3px;min-height:0}.k-composer.line .k-composer-bar .k-grow{display:none}.k-composer.line .k-composer-files{grid-column:1 / -1}.k-composer-dock{position:sticky;bottom:0;z-index:4;padding:12px 24px 14px;background:var(--so-paper);border-top:1px solid var(--so-line)}.k-timing{border:1px solid var(--so-line);border-radius:var(--so-radius-card);background:var(--so-paper);overflow:hidden}.k-timing-h{display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 10px 8px 16px;border-bottom:1px solid var(--so-line)}.k-timing-h h2{margin:0;font:600 13.5px/1.3 var(--so-font-sans)}.k-timing-h .k-timing-state{margin-left:auto;display:flex;gap:8px;align-items:center}.k-timing-b{padding:12px 16px;display:grid;gap:2px}.k-timing-f{padding:10px 16px 12px;border-top:1px solid var(--so-line);font-size:12px;color:var(--so-muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}.k-timing-f:empty{display:none}.k-crow{display:grid;grid-template-columns:16px 220px minmax(0,1fr) 62px 60px;gap:10px;align-items:center;min-height:40px;font-size:13px}.k-crow.head{min-height:20px;font-size:11.5px;color:var(--so-muted)}.k-crow-i{display:grid;place-items:center;width:16px;height:16px}.k-crow-i .k-qd{width:10px;height:10px;border-radius:50%;border:1.5px dashed var(--so-field-line);box-sizing:border-box}.k-crow-i .k-rund{width:10px;height:10px;border-radius:50%;border:2px solid var(--so-info);background:color-mix(in srgb,var(--so-info) 30%,transparent);box-sizing:border-box}.k-crow-i .k-wd{width:9px;height:9px;border-radius:50%;background:var(--so-needs)}.k-crow-i svg{width:14px;height:14px}.k-crow.ok .k-crow-i{color:var(--so-success)}.k-crow.bad .k-crow-i{color:var(--so-danger)}.k-crow-n{min-width:0;white-space:normal;line-height:1.3}.k-crow-n .k-crow-sub{display:block;font-size:11.5px;color:var(--so-muted);font-weight:400}.k-crow-w{font-size:12px;color:var(--so-muted)}.k-crow.bad .k-crow-w{color:var(--so-fail-ink);font-weight:500}.k-crow.run .k-crow-w{color:var(--so-live-ink)}.k-crow.wait .k-crow-w{color:var(--so-needs-ink);font-weight:600}.k-crow.now .k-crow-n,.k-crow.now .k-crow-w{font-weight:600}.k-crow-lane{position:relative;height:14px}.k-crow-bar{position:absolute;top:4px;height:6px;border-radius:3px;background:var(--so-info);min-width:3px;transition:width var(--m-base) linear,background-color var(--m-slow) var(--m-ease)}.k-crow.ok .k-crow-bar{background:var(--so-success)}.k-crow.bad .k-crow-bar{background:var(--so-danger)}.k-crow.wait .k-crow-bar{background:var(--so-needs)}.k-crow-s{text-align:right;color:var(--so-muted);font-size:12px;font-variant-numeric:tabular-nums}.k-nf .k-empty{padding:40px 24px}.k-nf .k-empty-t{font-size:15px}.k-settings{display:grid;grid-template-columns:200px minmax(0,1fr);flex:1}.k-snav{border-right:1px solid var(--so-line);padding:14px 10px;display:grid;gap:1px;align-content:start}.k-nav{display:flex;align-items:center;gap:9px;height:30px;padding:0 8px;border-radius:6px;color:var(--so-nav-ink);font:500 13px/1 var(--so-font-sans);text-decoration:none}.k-nav[aria-current]{background:var(--so-nav-hover);color:var(--so-ink)}.k-nav>.k-nav-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.k-nav-top{margin-bottom:8px}.k-nav-flag{width:6px;height:6px;border-radius:50%;background:var(--so-needs);flex:none}.k-sbody{box-sizing:border-box;max-width:760px;width:100%;padding:24px 32px 80px;display:grid;gap:24px;align-content:start}.k-sbody>header h2{margin:0;font:600 20px/1.3 var(--so-font-sans);letter-spacing:-.015em}.k-sbody>header p{margin:4px 0 0;color:var(--so-muted)}.k-crumbs{display:inline-flex;align-items:center;gap:6px;min-width:0}.k-crumbs a{color:var(--so-muted);text-decoration:none}.k-crumbs .k-sep{color:var(--so-field-line)}.k-crumbs b{font-weight:500;color:var(--so-ink)}@media(hover:hover)and (pointer:fine){.k-link:hover{text-decoration-color:var(--so-ink)}.k-btn.k-btn-primary:hover{background:var(--so-accent-hover);border-color:var(--so-accent-hover)}.k-btn.k-btn-outline:hover{background:var(--so-soft)}.k-btn.k-btn-ghost:hover{background:var(--so-soft);color:var(--so-ink)}.k-btn.k-btn-danger:hover{background:var(--so-danger-soft)}.k-seg>a:hover,.k-seg>button:hover{color:var(--so-ink)}.k-tabs>button:hover,.k-tabs>a:hover{color:var(--so-ink)}.k-switch:hover{background:transparent}.k-opt:hover{border-color:var(--so-ink)}.k-row:hover{background:color-mix(in srgb,var(--so-raised) 60%,transparent)}.k-row.k-row-static:hover{background:transparent}.k-card:hover{background:color-mix(in srgb,var(--so-raised) 60%,transparent)}.k-backlink:hover{color:var(--so-ink)}.k-menu>button:hover,.k-menu>a:hover{background:var(--so-soft)}.k-composer-plus:hover,.k-composer-chip:hover,.k-tchip:hover,.k-dock-needs:hover{background:color-mix(in srgb,var(--so-composer-control) 88%,var(--so-ink))}.k-input:hover,.k-textarea:hover,.k-sel:hover{background:color-mix(in srgb,var(--so-field) 94%,var(--so-ink))}.k-selw-chip .k-sel:hover{background:color-mix(in srgb,var(--so-composer-control) 88%,var(--so-ink))}.k-nav:hover{background:var(--so-nav-hover);color:var(--so-ink)}.k-crumbs a:hover{color:var(--so-ink)}}.k-code{display:inline-block;max-width:100%;box-sizing:border-box;margin:0;padding:6px 10px;border-radius:7px;background:var(--so-raised);color:var(--so-ink);font:12.5px/1.45 var(--so-font-mono);overflow-wrap:anywhere;user-select:all}.k-dock{display:none}.k-dock-needs{display:grid;align-content:center;gap:1px;box-sizing:border-box;width:136px;min-height:48px;margin:0;padding:0 14px;border-radius:14px;border:1px solid transparent;background:var(--so-composer-control);color:var(--so-ink);text-align:left;white-space:nowrap;cursor:pointer;box-shadow:none}.k-dock-needs-l{display:inline-flex;align-items:center;gap:7px;font:500 14px/1.2 var(--so-font-sans)}.k-dock-needs-s{overflow:hidden;text-overflow:ellipsis;font-size:11.5px;color:var(--so-muted);padding-left:14px}.k-dock-needs:focus-visible{outline:2px solid var(--so-ring);outline-offset:2px}@media(max-width:760px){.k-desk-only{display:none!important}.k-btn,.k-btn-sm{height:44px;padding:0 16px;font-size:14px}.k-btn-icon,.k-btn-sm.k-btn-icon{width:44px;padding:0}.k-input.k-input,.k-textarea.k-textarea,.k-sel.k-sel{font-size:16px}.k-input.k-input,.k-pop .k-input.k-input,.k-sel.k-sel,.k-selw.sm .k-sel{height:44px}.k-selw:after{right:13px}.k-seg>a,.k-seg>button{height:44px;font-size:13.5px}.k-tabs>button,.k-tabs>a{min-height:44px}.k-disclose>summary{min-height:44px}.k-facts a{display:inline-flex;align-items:center;min-height:44px}.k-checks label,.k-switch{min-height:44px}.k-opt{padding:13px 14px}.k-radios{grid-template-columns:1fr}.k-facts{grid-template-columns:1fr;gap:3px}.k-facts dd{margin-bottom:8px}.k-tb{display:none}.k-ph{display:flex;align-items:center;gap:2px;height:52px;padding:0 4px;position:sticky;top:0;z-index:8;background:var(--so-paper);border-bottom:1px solid var(--so-line)}.k-ph-t{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 16px/1.2 var(--so-font-sans);padding-left:4px}.k-grp{padding:0 16px}.k-row{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:12px 16px}.k-row-c{grid-row:2;grid-column:1;display:flex;gap:8px;align-items:center;min-width:0}.k-row-t{grid-row:1;grid-column:1;white-space:normal;font-size:14px}.k-row-d{grid-row:3;grid-column:1 / -1;white-space:normal}.k-row-m{display:none}.k-row-a{grid-row:1 / 3;grid-column:2}.k-row-a .k-btn{min-width:0;padding:0 12px;font-size:13.5px}.k-row-a:empty{display:none}.k-row-msg{grid-column:1 / -1}.k-tbp{display:flex;gap:8px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--so-line);background:var(--so-paper)}.k-tbp>.k-selw{flex:1;min-width:0}.k-tbp{flex-wrap:wrap}.k-tbp>.k-filter{flex:1 1 100%;width:auto;height:44px;order:2}.k-filter>input{font-size:16px}.k-foot{padding:12px 16px}.k-foot a{display:inline-flex;align-items:center;min-height:44px}.k-colpager{display:block;margin:10px 16px 0;overflow-x:auto;scrollbar-width:none}.k-colpager .k-seg>button,.k-colpager .k-seg>a{flex:1;justify-content:center;padding:0 8px}.k-board{grid-template-columns:minmax(0,1fr);margin-top:8px}.k-col{border-right:0;display:none}.k-col.on{display:block}.k-col-h{display:none}.k-card{padding:12px 16px}.k-step{font-size:11px}.k-step-s{font-size:10.5px;white-space:normal}.k-doc{padding:14px 16px 40px;gap:18px}.k-dh h1{font-size:20px}.k-backlink,.k-slot-acts .k-btn.k-btn-primary.k-docked{display:none}.k-slot-acts{min-height:44px}.k-needs-item{grid-template-columns:minmax(0,1fr)}.k-needs-item .k-acts .k-btn{width:100%}.k-pop{width:auto}.k-pop.as-sheet{left:8px!important;right:8px;top:auto!important;bottom:calc(8px + env(safe-area-inset-bottom));border-radius:14px;padding:16px;max-height:calc(100dvh - 16px);overflow:auto}.k-pop .k-acts .k-btn{flex:1}.k-drawer{inset:auto 8px 8px;width:auto;max-height:calc(100dvh - 16px)}.k-menu>button,.k-menu>a{min-height:44px;font-size:15px}.k-frow{grid-template-columns:minmax(0,1fr);gap:10px;padding:12px 0}.k-frow.inline{grid-template-columns:minmax(0,1fr) auto}.k-frow-c{justify-content:flex-start}.k-frow.inline .k-frow-c{justify-content:flex-end}.k-frow-c .k-input,.k-frow-c .k-selw{max-width:none}.k-frow .k-err{text-align:left}.k-frow-c .k-seg{width:100%}.k-frow-c .k-seg>button{flex:1;justify-content:center}.k-composer-ta.k-composer-ta{font-size:17px}.k-composer-bar .k-btn-sm{height:44px}.k-composer{--c-r: 26px;padding:6px 8px 8px}.k-composer-ta.k-composer-ta{padding:10px 10px 6px}.k-send-slot,.k-send-slot .k-send{width:44px;height:44px}.k-send:before{content:none}.k-composer-plus{width:44px;height:44px}.k-composer-chip,.k-tchip,.k-selw-chip .k-sel.k-sel{height:44px}.k-selw-chip .k-sel.k-sel{font-size:16px}.k-composer-bar{gap:6px}.k-composer-file button{width:32px;height:32px}.k-composer-dock{padding:12px 16px 16px}html.kb-open .k-composer-dock{position:fixed;left:0;right:0;bottom:var(--kb, 0px);z-index:13}html.kb-open .k-dock{display:none}.k-crow{grid-template-columns:14px minmax(0,1fr) 52px 48px;gap:6px;font-size:12.5px}.k-crow-lane{display:none}.k-timing.show-chart .k-crow{grid-template-columns:14px 112px minmax(0,1fr) 46px 44px}.k-timing.show-chart .k-crow-lane{display:block}.k-crow-w,.k-crow-s{font-size:11.5px}.k-nf .k-empty{padding:28px 16px}.k-settings{display:block}.k-snav{display:none}.k-sbody{padding:18px 16px 40px}.k-dock{display:flex;gap:8px;align-items:stretch;position:fixed;left:0;right:0;bottom:0;z-index:12;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--so-paper);border-top:1px solid var(--so-line)}.k-dock-primary{flex:1;display:flex}.k-dock-primary .k-btn{width:100%}.k-dock .k-btn-outline{border-color:transparent;background:var(--so-composer-control)}.k-dock .k-btn{min-height:48px;border-radius:14px}}@media(min-width:761px){.k-phone-only{display:none!important}}body:has(.k-out){background:var(--so-paper)}main:has(>.k-out){max-width:none;margin:0;padding:0}.k-out{box-sizing:border-box;min-height:100dvh;display:grid;align-content:center;justify-items:center;gap:20px;padding:48px 16px 64px}.k-out-c{box-sizing:border-box;width:100%;max-width:380px;display:grid;gap:18px;min-width:0}.k-out-brand{display:inline-flex;align-items:center;gap:8px;justify-self:start;margin:0 0 10px;color:var(--so-ink);font:600 14px/1 var(--so-font-sans);letter-spacing:-.01em;text-decoration:none}.k-out h1{margin:0;font:600 24px/1.3 var(--so-font-sans);letter-spacing:-.02em;color:var(--so-ink)}.k-out-sub{margin:-8px 0 0;color:var(--so-muted);font-size:13px;line-height:1.5}.k-out-sub b{color:var(--so-ink);font-weight:600}.k-out-note{margin:-6px 0 0;padding:8px 10px;border-radius:7px;background:var(--so-raised);font-size:13px;line-height:1.5;color:var(--so-ink)}.k-out-f{box-sizing:border-box;width:100%;max-width:380px;margin:0;padding-top:14px;border-top:1px solid var(--so-line);color:var(--so-muted);font-size:12px;line-height:1.6}.k-out-f code,.k-out .k-mono{font-family:var(--so-font-mono);font-size:12px}.k-out .k-facts{padding:12px 0;border-top:1px solid var(--so-line);border-bottom:1px solid var(--so-line);grid-template-columns:96px minmax(0,1fr)}.k-out .k-slots{padding:16px}.k-out .k-slot-acts:empty,.k-out .k-slot-terms:empty{display:none}.k-form{display:grid;gap:14px;margin:0;min-width:0}.k-form .k-input.k-input{height:36px}.k-btn.k-wide{width:100%;height:36px}.k-out .k-disclose>summary{min-height:32px}.k-refusal .k-empty-t:first-letter,.k-refusal .k-notice>span:first-letter{text-transform:uppercase}.k-composer-field .k-off-note{display:none}.k-composer-field:has(.k-switch-input):not(:has(.k-switch-input:checked)) .k-on-note{display:none}.k-composer-field:has(.k-switch-input):not(:has(.k-switch-input:checked)) .k-off-note{display:inline}.k-composer .k-composer-ta.k-composer-ta:focus-visible{outline:none;box-shadow:none}.k-slot-acts>form.k-approve.k-form{flex:1 1 100%;min-width:0}.k-check{display:grid;margin:0;padding:0;list-style:none;border-top:1px solid var(--so-line)}.k-check-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:12px;align-items:center;min-height:56px;margin:0;padding:10px 0;border-bottom:1px solid var(--so-line)}.k-check-mark{box-sizing:border-box;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--so-field-line);display:grid;place-items:center;background:var(--so-paper)}.k-check-mark.ok{background:var(--so-success);border-color:var(--so-success);color:var(--so-paper)}.k-check-mark.ok .k-i{width:11px;height:11px;stroke-width:3}.k-check-mark.run{border-color:var(--so-info);background:color-mix(in srgb,var(--so-info) 22%,transparent)}.k-check-t{display:grid;gap:2px;min-width:0}.k-check-t b{font-weight:600;font-size:13.5px;color:var(--so-ink)}.k-check-row.done .k-check-t b{font-weight:500;color:var(--so-muted)}.k-check-t>span{font-size:12.5px;line-height:1.45;color:var(--so-muted);overflow-wrap:anywhere}.k-check-a{display:flex;justify-content:flex-end}.k-check-a .k-btn{min-width:108px}.k-hello{display:grid;gap:6px}.k-hello h1,.k-hello h2{margin:0;font:600 20px/1.3 var(--so-font-sans);letter-spacing:-.015em;color:var(--so-ink)}.k-hello p{margin:0;font-size:13px;color:var(--so-muted)}.k-ideas{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}.k-btn.k-idea{height:auto;min-height:36px;padding:6px 14px;border-radius:999px;border-color:var(--so-line);font-weight:400;white-space:normal;text-align:left}@media(pointer:coarse){.k-btn.k-idea{min-height:44px}}@media(max-width:760px){.k-out{align-content:start;padding-top:32px}.k-form .k-input.k-input,.k-btn.k-wide{height:44px}.k-out-brand{min-height:44px;margin-bottom:0}.k-out .k-facts{grid-template-columns:1fr}.k-out .k-disclose>summary{min-height:44px}.k-check-row{grid-template-columns:20px minmax(0,1fr)}.k-check-a{grid-column:2;justify-content:flex-start}.k-check-a:empty,.k-check-a:not(:has(.k-btn:not(.k-docked))){display:none}.k-btn.k-idea{min-height:44px;padding:10px 14px;font-size:14px}.k-check-a .k-btn.k-docked{display:none}.k-doc:has(~.k-dock){padding-bottom:96px}.k-dock-send .k-composer .k-send-slot{display:none}}@media(prefers-reduced-motion:reduce){.k-btn,.k-send,.k-composer,.k-composer-plus,.k-composer-chip,.k-tchip,.k-tchip-mark,.k-input,.k-textarea,.k-sel,.k-trk,.k-trk:after,.k-tabs>*,.k-slots,.k-crow-bar{transition:none}.k-steps-fill{transition:none}.k-grow-in,.k-msg-in,.k-swap-in,.k-scrim,.k-btn.swap .k-face,.k-check-draw path,.k-composer .k-i{animation:none!important}.k-check-draw path{stroke-dashoffset:0}.k-spin{animation:none;border-right-color:currentColor;opacity:.5}}.k-ssec{display:grid;align-content:start;min-width:0;scroll-margin-top:64px}.k-ssec-state{font-weight:400;font-size:12.5px;color:var(--so-muted)}.k-ssec-lead{margin:0;padding:10px 0 2px;font-size:12.5px;color:var(--so-muted);line-height:1.5;max-width:66ch}.k-ssec>.k-note,.k-ssec>.k-notice{margin-top:10px}.k-slinks{display:grid}.k-slink{display:grid;grid-template-columns:20px minmax(0,1fr) auto 16px;gap:4px 12px;align-items:center;min-height:56px;padding:10px 0;border-bottom:1px solid var(--so-line);color:var(--so-ink);text-decoration:none}.k-slink.noico{grid-template-columns:minmax(0,1fr) auto 16px}.k-slink>.k-i{color:var(--so-muted)}.k-sl{display:grid;gap:3px;min-width:0}.k-sl-t{display:inline-flex;align-items:center;gap:8px 10px;flex-wrap:wrap;font-weight:500;font-size:13px;min-width:0;overflow-wrap:anywhere}.k-sl-h{font-size:12.5px;color:var(--so-muted);line-height:1.45;overflow-wrap:anywhere}.k-slink-r{display:flex;align-items:center;gap:8px}.k-chev{width:7px;height:7px;border:solid var(--so-muted);border-width:1.5px 1.5px 0 0;transform:rotate(45deg);justify-self:center}.k-sflag{display:inline-flex;align-items:center;gap:6px;font:500 12px/1 var(--so-font-sans);color:var(--so-neutral-ink)}.k-sflag:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--so-needs)}.k-srec{display:grid;grid-template-columns:minmax(0,1fr) auto 124px;gap:4px 16px;align-items:center;min-height:52px;padding:10px 0;border-bottom:1px solid var(--so-line)}.k-srec-when{font-size:12px;color:var(--so-muted);white-space:nowrap}.k-srec-a{display:flex;justify-content:flex-end;gap:8px}.k-srec-a .k-btn{min-width:108px}.k-srec-more{grid-column:1 / -1;min-width:0}.k-srec-more:empty{display:none}.k-scode{display:block;justify-self:start;max-width:100%;box-sizing:border-box;margin:8px 0 0;padding:8px 10px;border-radius:7px;background:var(--so-raised);font:12px/1.5 var(--so-font-mono);overflow-wrap:anywhere;user-select:all}.k-sform{display:grid;min-width:0;margin:0}.k-sform fieldset{border:0;margin:0;padding:0;min-width:0}.k-ssave{display:flex;align-items:center;gap:12px;min-height:48px;padding:8px 0;background:var(--so-paper)}.k-ssave-said{flex:1;min-width:0;font-size:12.5px;color:var(--so-muted)}.k-ssave .k-btn{min-width:96px}.k-sform[data-dirty] .k-ssave{position:sticky;bottom:0;z-index:2;border-top:1px solid var(--so-line)}.k-sform[data-dirty] .k-ssave-said{color:var(--so-ink);font-weight:500}.k-ssave-err:empty{display:none}.k-ssave-err .k-notice{margin:0 0 8px}.k-sproof label,.k-sproof .k-field{display:grid;gap:6px;margin:8px 0 0;font:var(--so-typography-caption);color:var(--so-ink);max-width:320px}.k-sproof input[type=password]{box-sizing:border-box;width:100%;height:32px;min-height:0;margin:0;padding:0 10px;border:1px solid var(--so-field-line);border-radius:8px;background:var(--so-paper);color:var(--so-ink);font:400 13px/1.4 var(--so-font-sans);box-shadow:none}.k-pop .k-sproof label{margin:0;max-width:none}html.k-js .k-sform>.k-sproof{display:none}html.k-js .k-sform[data-k-gate]:not([data-dirty]) .k-ssave .k-btn{display:none}html.k-js .k-sform[data-k-gate]:not([data-dirty]) .k-ssave:has(.k-ssave-said:empty){display:none}.k-sopts{display:grid;gap:8px;padding:10px 0}.k-sopt{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;min-height:32px;font-size:13px;color:var(--so-ink);cursor:pointer}.k-sopt input{margin:2px 0 0;accent-color:var(--so-ink)}.k-sopt b{display:block;font-weight:500}.k-sopt span span{display:block;color:var(--so-muted);font-size:12.5px;line-height:1.45}.k-secret-val{display:block;padding:8px 10px;border-radius:7px;background:var(--so-raised);font:12.5px/1.4 var(--so-font-mono);overflow-wrap:anywhere;user-select:all}@media(hover:hover)and (pointer:fine){.k-slink:hover .k-sl-t>span:first-child{text-decoration:underline;text-decoration-color:var(--so-field-line);text-underline-offset:3px}}@media(max-width:760px){.k-slink{min-height:64px;padding:12px 0}.k-srec{grid-template-columns:minmax(0,1fr) auto}.k-srec-when{grid-column:1}.k-srec-a{grid-column:2;grid-row:1 / span 2}.k-srec-a .k-btn{min-width:0}.k-ssave .k-btn{min-height:44px}.k-sproof input[type=password]{height:44px;font-size:16px}.k-sproof label{max-width:none}.k-sopt{min-height:44px}}.k-srec-a .k-sform{display:block}.k-srec-a .k-ssave{min-height:0;padding:0;background:none}.k-srec-a .k-ssave-said:empty{display:none}pre.k-scode{white-space:pre-wrap}@font-face{font-family:Geist;src:url(/fonts/geist-sans-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-sans-500.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist-sans-600.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/geist-mono-400.woff2) format("woff2");font-weight:400;font-display:swap}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--so-paper);color:var(--so-ink);font:400 13px/1.5 var(--so-font-sans);-webkit-font-smoothing:antialiased}body{overscroll-behavior:none}#so-term{height:100dvh}.term-app{display:flex;flex-direction:column;height:100dvh}.term-app--loading{display:grid;place-items:center}.term-tb{display:flex;align-items:center;gap:10px;min-height:48px;padding:var(--so-space-sm) var(--so-space-2xl);border-bottom:1px solid var(--so-line);flex:none}.term-tb h1{margin:0;font:600 15px/1.3 var(--so-font-sans);letter-spacing:-.01em}.term-ctx{color:var(--so-muted);font-size:12.5px}.term-back{display:inline-flex;align-items:center;gap:var(--so-space-xs);margin-right:6px;color:var(--so-muted);font-size:12.5px;text-decoration:none}.term-grid{flex:1;min-height:0;display:grid;grid-template-columns:280px minmax(0,1fr)}.term-side{border-right:1px solid var(--so-line);overflow-y:auto}.term-main{display:flex;flex-direction:column;min-width:0;min-height:0;overflow-y:auto}.term-list{display:grid;padding:0}.term-none{margin:0;padding:var(--so-space-md) var(--so-space-lg);font-size:12.5px;color:var(--so-muted)}.term-item{display:grid;text-decoration:none;gap:5px;width:100%;margin:0;padding:10px var(--so-space-lg);border:0;border-bottom:1px solid var(--so-line);background:transparent;color:var(--so-ink);font:inherit;text-align:left;cursor:pointer}.term-item[aria-current]{box-shadow:inset 2px 0 0 var(--so-ink)}.term-item[aria-current] .term-item-t{font-weight:600}.term-item-t{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.term-item-m{display:flex;align-items:center;gap:var(--so-space-sm);min-width:0;color:var(--so-muted)}.term-item-m .k-mono{font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.term-pane{flex:1;display:flex;flex-direction:column;gap:var(--so-space-md);min-height:0;padding:var(--so-space-lg) var(--so-space-2xl) var(--so-space-2xl)}.term-ph{display:flex;align-items:center;gap:var(--so-space-md)}.term-ph>div{flex:1;display:grid;gap:2px;min-width:0}.term-ph b{font-weight:600;font-size:13.5px}.term-ph-m{color:var(--so-muted);font-size:12px}.term-link{font-size:12px;color:var(--so-muted);white-space:nowrap}.term-link--live{color:var(--so-live-ink)}.term-link--signed-out,.term-link--gone{color:var(--so-fail-ink)}.term-link--busy{color:var(--so-ink)}.term-screen{flex:1;min-height:320px;padding:10px var(--so-space-md);border:1px solid var(--so-line);border-radius:var(--so-radius-card);background:var(--so-code-bg);overflow:hidden}.term-screen .xterm{height:100%}.term-screen .xterm-viewport{background:var(--so-code-bg)!important}.term-keys{display:none;gap:6px;overflow-x:auto;flex:none;padding-bottom:env(safe-area-inset-bottom)}.term-key{min-width:44px;font-family:var(--so-font-mono);flex:none;touch-action:manipulation}.term-key[aria-pressed=true]{background:var(--so-soft);border-color:var(--so-ink)}.term-form{display:grid;gap:14px;align-content:start;max-width:760px;padding:var(--so-space-xl) var(--so-space-2xl)}.term-terms{justify-self:start;margin:0;padding:var(--so-space-sm) 10px;border-radius:7px;background:var(--so-raised);font-size:12.5px}.term-radios .k-radios{grid-template-columns:repeat(3,minmax(0,1fr))}@media(hover:hover)and (pointer:fine){.term-item:hover{background:color-mix(in srgb,var(--so-raised) 60%,transparent)}.term-back:hover{color:var(--so-ink)}}@media(max-width:760px){.term-tb{padding:0 var(--so-space-sm) 0 var(--so-space-xs);padding-top:env(safe-area-inset-top);min-height:calc(52px + env(safe-area-inset-top))}.term-tb .k-btn-primary{height:44px}.term-ctx{display:none}.term-tb h1{flex:1}.term-grid{grid-template-columns:minmax(0,1fr)}.term-side{border-right:0}.term-app--pane .term-side{display:none}.term-app:not(.term-app--pane) .term-main{display:none}.term-pane{padding:var(--so-space-sm) var(--so-space-sm) var(--so-space-sm);gap:var(--so-space-sm)}.term-screen{padding:var(--so-space-xs) 6px;border-radius:var(--so-radius-md)}.term-keys{display:flex}.term-form{padding:var(--so-phone-gutter)}}
2
2
  /*! Bundled license information:
3
3
 
4
4
  @xterm/xterm/css/xterm.css: